1、TJA1145硬件介绍
一款带有特定帧唤醒功能的CAN收发器芯片。部分支持CAN FD,功能很强大。
具体芯片手册参考官网:TJA1145A.fm (nxp.com.cn)
2、TJA1145寄存器介绍
寄存器偏多,主要分为一下几类:主控寄存器、收发控制和局域网寄存器、唤醒控制和状态寄存器、事件捕捉寄存器、标识寄存器。
主控寄存器:
0x01:模式控制寄存器,控制TJA1145的状态,Normal、Standby、Sleep三种
0x03:主状态寄存器,监控超温警告标志的状态,并确定TJA1145是否已进入正常模式。位FSMS指示最近转换到睡眠模式是由低电压事件还是由SPI命令触发。
0x04:系统事件使能寄存器,负责使能捕捉过温、SPI故障事件。这个按理来说应该分成事件捕捉一类。
0x06-0x09:TJA1145内部的内存,用户可以写四个字节的用户数据。
0x0A:锁寄存器:负责保护寄存器不被更改。
收发控制和局域网寄存器:
负责控制CAN的收发器部分。
0x20:CAN控制:是否过滤CAN FD帧,局域网配置标志位,选择唤醒使能、收发器状态
0x22:收发器状态寄存器:收发器状态、局域网错误状态、局域网状态、总线静默状态、电源支持状态、CAN失败状态:TXD超时问题。
0x23:传输事件使能寄存器:使能获取传输事件。使能CAN总线静默检测、CAN失败检测、CAN唤醒检测。
0x26:波特率设置
0x27-0x2A:特定帧唤醒的CAN ID
0x2B-0x2E:特定帧唤醒的ID掩码
0x2F:CAN帧控制寄存器:选择标准帧扩展帧、配置数据长度
0x68-0x6F:CAN报文掩码。
Wake引脚:
本地唤醒引脚,检测上升沿、下降沿。
0x4B:代表wake引脚的电压是否Vth。
0x4C:Wake引脚检测上升沿还是下降沿。
全局事件捕捉寄存器:
尤为重要,负责获取各种事件。
0x60:事件捕捉寄存器,判断并获取当前TJA1145的三种事件,分别是本地唤醒事件、传输事件、系统事件。
0x61:系统事件状态寄存器:主要包含过温警告事件、SPI故障事件
0x63:传输事件状态寄存器:包含局域网帧错误事件、CAN BUS事件、CAN故障事件、CAN唤醒事件
0x64:唤醒事件状态寄存器:上升沿唤醒、下降沿唤醒。
0x7E:标识寄存器,获取硬件的ID。
3、TJA1145配置
要想配置TJA1145,需要了解硬件连接部分,即TJA1145和主芯片的连接。
下图是官方给的一个例程,需要耐住性子慢慢看一下,很简单。
首先BAT是12V电源,给TJA1145供电,连接3V、5V的电压转换器,又连接着Wake引脚。Wake引脚通过开关触发上升沿、下降沿来唤醒TJA1145,1145一旦被唤醒,INH输出引脚就会输出12V的电压,此信号会导通3V、5V的电压转换器,右边微控制器MCU的VCC就会上电工作。MCU工作后根据代码,通过SPI发送指令,配置相关寄存器,可以实现特定帧唤醒功能。配置成功后,通过SPI发送休眠指令让1145休眠。休眠后,INH这个引脚就会拉低,导致3V电压转换器断开,MCU掉电休眠。注意:此时BAT电不能断。休眠后,1145就会检测总线上的报文,符合特定帧的话,1145就会被唤醒,INH拉高,导通3V转换器,MCU上电工作。周而复始。
3.1 SPI指令发送
SPI发送指令格式:7bit_address+1bit_cmd+8bit_data。
7个bit的寄存器地址,代表要操作的寄存器。1个bit的操作指令,0代表读,1代表写。8个bit数据代表写进去的值,或者读出来的数据。
3.2 配置流程
初始化部分:
1、解锁寄存器,获取硬件ID号。
2、配置全局事件使能寄存器,按照需求分别使能系统事件、wake引脚事件、传输事件。
3、配置CAN收发寄存器;包括唤醒CANID、帧类型、数据长度等。
4、配置CAN控制寄存器,使能CAN选择唤醒功能、设置局域网配置OK标示位。
5、配置主控制寄存器,进入Normal状态;上锁寄存器。
6、读取寄存器,判断寄存器数据是否符合配置。
轮询部分:
1、事件处理,如果有一些错误、非预期的状态出现,就要处理相关寄存器。或者简单粗暴,重新初始化。
2、状态处理,根据上层指令,切换当前1145的状态机。