| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 嵌入式 -> 调试又踩了个坑,SPI从机没反应 -> 正文阅读 |
|
[嵌入式]调试又踩了个坑,SPI从机没反应 |
摘要 本篇笔记主要记录在调试Allegro microsystem 公司生产的A1333 高速,低延迟,带有诊断和ASIL D 认证的无接触式的0~360°的角度位置传感器IC时遇到的一些问题。 A1333简介A1333可以无接触测量0~360°角度,符合ISO262的功能安全认证ASIL D等级。带有自诊断功能,是一种霍尔效应的SoC,包含三部分,CVH(Circular Vertical Hall) ?前端,数字信号处理部分,和电机换向和编码器输出,而且片上还有EEPROM,可以用来存储参数,因为符合ASIL D等级认证,所以是汽车应用的理想选择,广泛用于,电动转向,油门控制等系统,有24脚eTSSOP 封装的和14脚封装的,24脚的是双轨的,14脚封装的是单轨的。 系统框图从系统框图也可以看出,总体包含我们前面说的由三部分组成,CVH前端,数字信号处理和电机换向输出UVW,/编码器输出。 典型应用框图一般我们都是用一个单片机来配合控制A1333, A1333有SPI 接口和ABI接口,这次我们以SPI接口为例子。 理论上任何一款带SPI的单片机都可以完成和A1333的通信,但如果是汽车应用,要选用带有ASIL 认证的单片机。我们以MPC5744p 这款带有ASIL D认证的单片机为例子。采用4线SPI 接口和 A1333通信,使用SPI 的模式3 ?CPHA, CPOL 为1,1 配置。 引脚介绍因为我们这次是以SPI通信来和A1333交换数据,所以SPI 通信的一些参数要注意下 输入输出时序图SPI通信帧格式A1333有三种SPI通信格式,有三种分别是16位,17位,和20位, 其实我们的驱动软件就是要支持几种格式,完成通信,而读写逻辑也在书册中给出了。 写逻辑总结起来就是,写的时候包含一位低,一位读写控制位,写为高,读 为低,6位寄存器地址位,8位数据,如果是16位帧格式就完了, 如果是20位帧格式,末尾还需加上4位CRC校验。要实现一个16位数据的写操作,需要发送两次写逻辑来完成。 至于代码的实现,可以采用SPI查询模式,也可以采用中断或者DMA方式,这个都可以,一定要注意写一个16位的数据要通过两次写操作才能完成, 读逻辑读操作总结起来就是一句话,按照格式同样的内容发两遍这样第二遍才能获取结果。 代码实现上也是这样操作,包含一位低,一位读写控制位,写为高,读 为低,6位寄存器地址位,8位数据。按照书册要求,结合SDK可以很容易的完成驱动的开发和使用,重点在调试。 驱动开发本次我们使用SDK,结合上位机初始化配置工具完成驱动的生成。其中SPI的配置如下 在根据自己的实际应用硬件配置相应管脚就可以生成代码了,生成的工程是空的,我们需要调用生成的驱动函数来完成对A1333的驱动,其实就是完成读写函数,然后在主程序中通过状态机去调用实现不同地址,不同寄存器的操作,包含角度的读取,零点的校准,等操作。 测试按照手册要求完成了驱动开发,可是通讯的时候,A1333没有反应,用示波器测到的波形如下 发送的数据和时钟波形都是正确的,可是A1333从机没有反应,读取到的值全是0, 是有问题的,应检查软件代码和硬件排查问题。 软件上首先排查驱动有没有问题,经过多次手册阅读和软件排查发现配置和驱动都没有问题,最后就排查硬件,因为是从硬件工程师手里拿到的板子,一开始没有排查硬件,后来和硬件工程师一块排查,发现TEST脚没有接地,而是被拉到了电源柜VCC上,这样导致A1333工作不正常,TEST脚是厂家测试用的,一般正式用要拉地。后将TEST脚拉地,A1333有了数据回应。 经过排查是因为Test 管脚没有接地,直接接到了Vcc上, Test 应该接地按照手册要求,经硬件工程师更改电路,将Test飞线接地,工作正常 EEPROM解锁A1333含有EEPROM可以用来存储参数,但是在操作前需要解锁,而解锁是需要特殊密码指令的, 就是连续发送这5条写指令,然后读取0x3C寄存器,按照解锁指令和时序发送完指令后,可以读取0x3C地址,如果 寄存器的最低位 bit0 如果返回为1,表明解锁成功。?驱动测试波形如下 解锁成功后,就可以进行EEPROM的操作,更改参数,例如零点的校准角度,等等,这里就不在赘述。 |
|
嵌入式 最新文章 |
基于高精度单片机开发红外测温仪方案 |
89C51单片机与DAC0832 |
基于51单片机宠物自动投料喂食器控制系统仿 |
《痞子衡嵌入式半月刊》 第 68 期 |
多思计组实验实验七 简单模型机实验 |
CSC7720 |
启明智显分享| ESP32学习笔记参考--PWM(脉冲 |
STM32初探 |
STM32 总结 |
【STM32】CubeMX例程四---定时器中断(附工 |
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年12日历 | -2024/12/28 17:39:42- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |
数据统计 |