TJA1145休眠唤醒调试

项目场景:

最近开发过程中,选择了这颗芯片,踩了很多坑,总算是把这个芯片的休眠唤醒功能pass了,在这里做一个技术总结,希望可以帮到有需要的人!由于时间紧只关注了用到的部分,如有错误还请指正。

TJA1145引脚图

TJA1145
INH:JTA1145 唤醒输出引脚,用于控制开关电源芯片使能
SDO,SDI,SCK,SCSN:通过SPI读写TJA1145寄存器
参考SPI基础知识了解更多SPI知识
WAKE:TJA1145唤醒输入引脚,可配置唤醒信号边沿(上升沿,下降沿)


问题描述

SPI链路验证

TJA1145是通过SPI通信来配置相关寄存器的,所以首先要保证MCU和TJA1145之间的通信正常,这个可以通过读取设备ID来验证,时钟极性和时钟相位为:CPOL = 0 CPHA = 1
时钟极性

CLK空闲时刻为低电平,数据在下降沿采样

Device ID

需要注意的是,读写数据时:地址字节的最低位:0为写,1为读。
写数据最低位为0
sendBuf[0] = (addr << 1U) | 0U;
sendBuf[1] = data;

读数据最低位为1
sendBuf[0] = (addr << 1U) | 1U;
sendBuf[1] = 0x00;

休眠唤醒

一般来说唤醒有KL15唤醒 和 CAN唤醒:
KL15唤醒:指钥匙点火(ACC)信号,输入高时给MCU供电
CAN唤醒:检测到唤醒报文时 INH引脚拉高,使能电源芯片给MCU供电

CAN唤醒即Normal模式和Sleep模式之间的切换,正常收发报文处于Normal模式,休眠时处于Sleep模式,由于INH引脚在Sleep模式时为低,所以在MCU属于休眠状态时TJA1145也需要在Sleep模式,以防止异常唤醒MCU

status
根据上图可以看出 Normal模式切换为Sleep模式需要满足三个条件:
1、MC = sleep
2、没有等待的唤醒事件
3、至少要有一个常规唤醒源
即 在切换到睡眠模式前,必须至少启用一个常规唤醒事件,并清除所有事件状态位
sleep

休眠唤醒配置

①CAN唤醒需要启用 Partial Networking
PN
②使能CAN选择性唤醒 成功配置部分网络寄存器
20
③设置数据速率为500k
3
④配置帧控制寄存器:识别格式为标准帧,不关注数据字段长度和内容
4
⑤使能CAN唤醒检测、使能唤醒pin脚上升沿检测
5
⑥清除所有事件状态位
6

唤醒报文配置

①唤醒ID设置
ID

TJA1145只能标准帧唤醒,所以用到地址0x29、0x2A

②设置唤醒ID为0x7A4
1

根据文档,0x29的bit7~bit2用来表示标准帧的bit5 ~bit0,
即0x29的bit7~bit2为100100,向0x29写入 100100 00(0x90)
2
根据文档,0x2A的bit4 ~bit0用来表示标准帧的bit10 ~bit6,
即0x2A的bit4~bit0为11110,向0x29写入 00011110(0x1E)
3
过滤

代码

uint8_t CanTrcv_119_TJA1145_ReadOneReg(uint8_t addr) {
   
	status_t stdRet;
	uint8_t sendBuf[2] = {
   0};
	uint8_t RxBuf[2] = {
   0};
 
	sendBuf[0] = (addr << 1U
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

诊断协议那些事儿

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值