文章目录
前言
上一篇文章介绍了TJA1445的一些功能,传送门:TJA1445学习笔记(一),本文接着介绍后面的部分,主要是故障,SPI通信及寄存器map
Failure handling
TJA1445集成了许多用于错误检测和处理的安全特性
TXD dominant timeout
引脚TXD上的低电平持续时间长于TXD释放总线到隐性状态,产生CAN故障中断(TXDDOM/TXD2DOM= 1),TXD主导状态可以通过can状态寄存器中的TXDDOMS/TXD2DOMS位读取.需要启用(TXDDOE /TXD2DOME = 1)
CAN transmitter enable/disable(TXEN_N) - TJA1445B only
在TJA1445B上,CAN transmitter 可以通过TXEN_N输入启用/禁用。GPIO引脚可以配置为附加的发送器启用/禁用信号
Bus dominant timeout
如果CAN总线上的主导状态持续时间长于to(dom)总线,则会产生CAN总线故障中断
(BUSDOM = 1),如果启用(BUSDOME = 1;表38).总线的状态可以通过can状态寄存器中的位BUSDOM读取(表21)。请注意,此功能仅在正常模式和仅监听模式下可用LPL = 0时的模式
VCC undervoltage
TJA1445监控引脚VCC上的电源电压。使能后,当VCC降至欠压检测阈值Vuvd(VCC)以下时间大于tdet(uv)时,产生VCC欠压中断(UVCC = 1)(需要启用UVCCE = 1)。VCC欠压状态可以通过系统状态寄存器中的位UVCCS读取
VIO undervoltage
TJA1445监控引脚VIO上的电源电压。当VIO低于欠压检测阈值Vuvd(VIO)的时间超过tdet(uv)时,通过将模式控制位MC设置为Sleep,器件切换到Sleep模式。清除挂起的唤醒中断,启用唤醒源(位CWE, WPRE和WPFE设置)。然后,TJA1445等待唤醒请求
VBAT undervoltage
TJA1445监控引脚VBAT上的电源电压。当VBAT低于欠压检测阈值Vuvd(VBAT)为tdet(uv)时,直接切换到关断模式,位PO被设置
Overtemperature
TJA1445仅在MC = Normal时监测温度。当结温超过Tj(sd)时,设备从Normal模式切换到ListenOnly模式,需要使能OTE = 1。当结温低于关机释放阈值Tj (sd) rel时,器件恢复并切换回正常模式。当设备处于Normal或ListenOnly模式时,可以通过系统状态寄存器中的位OTS读取过温状态
MCU reaction timeout
当TJA1445由于唤醒或从Check_SNM模式从休眠模式进入待机模式时,MCU反应超时定时器启动。如果在tto(MCU)内检测到有效的SPI帧,则MCU反应计时器将复位。如果在tto(MCU)内未检测到有效的SPI帧,则触发MCU反应超时,并通过将模式控制位MC设置为睡眠模式切换到睡眠模式。清除挂起的唤醒中断,启用唤醒源(位CWE, WPRE和WPFE设置)。然后,TJA1445等待唤醒请求。
SPI interface
串行外设接口(SPI)提供与微控制器的通信链路。SPI被配置为全双工数据传输,所以当新的控制数据被传输时返回状态信息
该接口还提供了只读访问选项,允许应用程序在不更改寄存器内容的情况下回读寄存器
SPI使用四种接口信号进行同步和数据传输:
•SCSN: SPI片选;active LOW
•SCK: SPI时钟
•SDI: SPI数据输入
•SDO: SPI数据输出
位采样在时钟的下降沿上进行,数据在上升沿上移进/移出,如图9所示。
TJA1445中的SPI数据存储在许多专用的8位寄存器中。每个寄存器被分配一个唯一的12位地址。对于单个寄存器读或写操作,必须向TJA1445传输至少3个字节(24bit)。需要6个字节(48bit)来传输最多4个数据字节(参见图10)
第一个字节包含地址的8位最高有效位;第二个字节包含地址的4个最低有效位,一个“只读”位,一个2位有效载荷大小(PLS)和一个奇偶校验位。只读位必须为0表示写操作,1表示读操作。PLS表示传输的数据字节数:
• 00 - 1 data byte
• 01 - 2 data bytes
• 10 - 3 data bytes
• 11 - 4 data bytes
奇偶校验位包括地址位、只读位和PLS位。
在SPI数据读写操作中,引脚SDI接收到的前15位通过引脚SDO返回;位16返回为这15位计算的奇偶校验。在SPI协议的data阶段,寻址寄存器的内容通过SDO引脚返回。
设备允许对不存在的寄存器进行写尝试。
SPI error handling
TJA1445可以检测多种SPI传输故障:
•收到错误的校验位
•时钟周期的数量小于24或不匹配基于期望值
•一个地址(> FFFh)检测收到了
•一个未定义的MC
•对锁定的寄存器写操作
•SPI消息未在超时时间内完成(SCSN HIGH),t to(SPI)
在所有情况下,一个SPI失败中断(提供SPIFE = 1)生成和整个消息将被忽略。
当睡眠模式转换的必要条件(没有唤醒源启用或等待唤醒中断)不满足时,设备将不会切换到睡眠模式,即使MC = 0001。在奇偶校验错误或时钟周期过多的情况下,引脚SDO将处于LOW状态,直到SCSN上的下一个上升沿。当SPI消息的持续时间超过t(to)(SPI)时,SDO引脚变为high-Z
SPI system reset
系统复位可以通过SPI强制,导致设备通过引导模式和设置位PO重新启动。为了触发系统复位,通过将锁控制寄存器中的LKRST设置为0,使SPI能够对系统复位寄存器进行写访问;然后在0x80之后连续写入0x01到系统复位寄存器中的SFR位(参见表35)。两个SPI访问系统复位寄存器都应该是24位的。任何偏离此顺序的操作都将导致系统复位失败
当重置启动时,在通用内存(表45)中的信息在重置序列完成后仍然可用
SPI register map
具体的寄存器描述可用参考手册
总结
基于NXP官方驱动开发1445还是很方便的,基本不需要怎么手写代码~