摘要
本篇笔记主要记录在调试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的操作,更改参数,例如零点的校准角度,等等,这里就不在赘述。
全部0条评论
快来发表一下你的评论吧 !