TJA1145配置休眠唤醒

汽车电子嵌入式 2025-02-24 07:29

开发中用到TJA1145模块的休眠唤醒功能,由于时间紧只关注了用到的部分,如有错误还请指正

一、基础知识:

1、CAN总线通常采用双绞线来传输差分信号

        双绞线:是一种由两根导线以螺旋方式绞合在一起的电缆结构

        差分信号:用两根信号线之间的电压差来表示信息

2、CAN收发器的作用:

        将CAN总线上的差分信号转换为高电平(逻辑1)和低电平(逻辑0)的数字信号

3、为什么要用差分信号传输:

        差分信号抗干扰能力强,其通过信号线之间的电压差表示信息,面对电磁干扰时两根信号线同时受影响,以信号线间的电压差为参考影响较小

二、相关说明

1、TJA1145引脚图

 INH:JTA1145 唤醒输出引脚,用于控制开关电源芯片使能

SDO,SDI,SCK,SCSN:通过SPI读写TJA1145寄存器

WAKE:TJA1145唤醒输入引脚,可配置唤醒信号边沿(上升沿,下降沿)

2、SPI链路验证

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

CPOL = 0     CPHA = 1

需要注意的是,读写数据时 地址字节的最低位:0为写  1为读

3、休眠唤醒说明

一般来说唤醒有KL15唤醒 和 CAN唤醒:

KL15唤醒:指钥匙点火(ACC)信号,输入高时给MCU供电

CAN唤醒:检测到唤醒报文时 INH引脚拉高,使能电源芯片给MCU供电

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

根据上图可以看出 Normal模式切换为Sleep模式需要满足三个条件:

1、MC = sleep

2、没有等待的唤醒事件

3、至少要有一个常规唤醒源

即 在切换到睡眠模式前,必须至少启用一个常规唤醒事件,并清除所有事件状态位        

下面是一些相关的寄存器:

模式寄存器

使能CAN唤醒

设置唤醒边沿检测

事件状态及捕获寄存器

注意:

由于TJA1145设计为 只支持特定CAN报文唤醒而不支持CANFD唤醒,以防止仅在CAN通信时产生总线错误,即CANFD报文不会被识别为有效的唤醒帧

4、休眠唤醒配置

1)CAN唤醒需要启用 Partial Networking

2)使能CAN选择性唤醒   成功配置部分网络寄存器

3)设置数据速率为500k

4)配置帧控制寄存器:识别格式为标准帧,不关注数据字段长度和内容

5)使能CAN唤醒检测、使能唤醒pin脚上升沿检测

6)清除所有事件状态位

三、唤醒报文设置

1)唤醒ID设置

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


2)示例:设置唤醒ID为0x7A4


根据文档,0x29的bit7~bit2用来表示标准帧的bit5~bit0,

即0x29的bit7~bit2为100100,向0x29写入 100100 00(0x90)


根据文档,0x2A的bit4~bit0用来表示标准帧的bit10~bit6,

即0x2A的bit4~bit0为11110,向0x29写入 00011110(0x1E)


最终表示结果0x7A4


四、实现代码

读函数

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) | 1U;	sendBuf[1] = 0x00;	while(LPSPI_DRV_MasterGetTransferStatus(LPSPICOM0, NULL) != STATUS_SUCCESS);	stdRet = LPSPI_DRV_MasterTransfer(LPSPICOM0, sendBuf, RxBuf, 2U);    return stdRet;}


写函数

uint8_t CanTrcv_119_TJA1145_WriteOneReg(uint8_t addr, uint8_t data) {	status_t stdRet;	uint8_t sendBuf[2] = {0};	sendBuf[0] = (addr << 1U) | 0U;	sendBuf[1] = data;	while(LPSPI_DRV_MasterGetTransferStatus(LPSPICOM0, NULL) != STATUS_SUCCESS);    stdRet = LPSPI_DRV_MasterTransfer(LPSPICOM0, sendBuf, NULL2U);	return stdRet;}


初始化函数

void CanTrcv_Init(void){	//baud rate 500k	CanTrcv_119_TJA1145_WriteOneReg( CANTRCV_119_TJA1145_REGADDR_DATA_RATE, CANTRCV_119_TJA1145_COMM_RATE);	//Filter standard frames	CanTrcv_119_TJA1145_WriteOneReg( CANTRCV_119_TJA1145_REGADDR_FRAME_CONTROL, CANTRCV_119_TJA1145_FILTER_STANDARD_FRAME);	//wakeup id 0x7A4	CanTrcv_119_TJA1145_WriteOneReg( 0x29, 0x90);	CanTrcv_119_TJA1145_WriteOneReg( 0x2A, 0x1E);	//set single filter id	CanTrcv_119_TJA1145_WriteOneReg( 0x2D, 0);	CanTrcv_119_TJA1145_WriteOneReg( 0x2E, 0);	//set mode control : normal	CanTrcv_119_TJA1145_WriteOneReg( CANTRCV_119_TJA1145_REGADDR_MODECTRL, CANTRCV_119_TJA1145_MC_NORMAL);	//set CAN control:为CFDC = 1, PNCOK = 1, CPNC = 1, CMC = 10	CanTrcv_119_TJA1145_WriteOneReg( CANTRCV_119_TJA1145_REGADDR_CANCTRL, CANTRCV_119_TJA1145_REGVALUE_CANCTRL);}


休眠函数

void CanTrcv_Sleep(void){    uint8_t ret = -1;        tja1145_reg_config sleep_reg_config[] =    {        //clear all event status        {TJA1145_REG_Event_capture_status, 0xff},        {TJA1145_REG_System_event_status, 0xff},        {TJA1145_REG_Transceiver_event_status, 0xff},        {TJA1145_REG_WAKE_pin_event_status, 0xff},        //enable/disable wake-up event        {TJA1145_REG_System_event_enable, 0x00},        {TJA1145_REG_Transceiver_event_enable, 0x01}, //CAN wake-up enable        {TJA1145_REG_WAKE_pin_enable, 0x02},    };        uint8_t i = 0;        for(i = 0; i < sizeof(sleep_reg_config)/sizeof(sleep_reg_config[0]); i++){        ret = CanTrcv_119_TJA1145_WriteOneReg(sleep_reg_config[i].reg_addr, sleep_reg_config[i].reg_val);        if(ret != 0){            break;        }    }	//set mode control : sleep	CanTrcv_119_TJA1145_WriteOneReg(CANTRCV_119_TJA1145_REGADDR_MODECTRL,CANTRCV_119_TJA1145_MC_SLEEP);}


 头文件

/* * tja1145.h *        */ #ifndef DRIVER_TJA1145_TJA1145_H_#define DRIVER_TJA1145_TJA1145_H_#define CANTRCV_119_TJA1145_REGADDR_MODECTRL 		  (0x01U)#define CANTRCV_119_TJA1145_REGADDR_CANCTRL  		  (0x20U)#define CANTRCV_119_TJA1145_REGADDR_WAKEUP_EN   	  (0x23U)#define CANTRCV_119_TJA1145_REGADDR_DATA_RATE      	  (0x26U)#define CANTRCV_119_TJA1145_REGADDR_FRAME_CONTROL     (0x2fU)#define CANTRCV_119_TJA1145_REGADDR_EVENTSTATUS    	  (0x60U)#define CANTRCV_119_TJA1145_REGADDR_WAKEUP_EDGE    	  (0x4CU)#define CANTRCV_119_TJA1145_COMM_RATE  				  (0x05)#define CANTRCV_119_TJA1145_FILTER_STANDARD_FRAME	  (0x00)#define CANTRCV_119_TJA1145_STATUS_VAL_CLEAR  		  (0x0U)#define CANTRCV_119_TJA1145_CAN_WAKE_UP   			  (0x01U)#define CANTRCV_119_TJA1145_MC_NORMAL        		  (0x7U)#define CANTRCV_119_TJA1145_MC_SLEEP 		   		  (0x1U)#define CANTRCV_119_TJA1145_REGVALUE_CANCTRL   		  (0x72U)//0x41U#define CANTRCV_119_TJA1145_WAKEUP_RISE       		  (0x2U)
typedef enum{    TJA1145_REG_Mode_control = 0x01,    TJA1145_REG_Main_status = 0x03,    TJA1145_REG_System_event_enable = 0x04,    TJA1145_REG_Memory_0 = 0x06,    TJA1145_REG_Memory_1 = 0x07,    TJA1145_REG_Memory_2 = 0x08,    TJA1145_REG_Memory_3 = 0x09,    TJA1145_REG_Lock_control = 0x0A,    TJA1145_REG_CAN_control = 0x20,    TJA1145_REG_Transceiver_status = 0x22,    TJA1145_REG_Transceiver_event_enable = 0x23,    TJA1145_REG_Data_rate = 0x26,    TJA1145_REG_Identifier_0 = 0x27,    TJA1145_REG_Identifier_1 = 0x28,    TJA1145_REG_Identifier_2 = 0x29,    TJA1145_REG_Identifier_3 = 0x2A,    TJA1145_REG_Mask_0 = 0x2B,    TJA1145_REG_Mask_1 = 0x2C,    TJA1145_REG_Mask_2 = 0x2D,    TJA1145_REG_Mask_3 = 0x2E,    TJA1145_REG_Frame_control = 0x2F,    TJA1145_REG_Data_mask_0 = 0x68,    TJA1145_REG_Data_mask_1 = 0x69,    TJA1145_REG_Data_mask_2 = 0x6A,    TJA1145_REG_Data_mask_3 = 0x6B,    TJA1145_REG_Data_mask_4 = 0x6C,    TJA1145_REG_Data_mask_5 = 0x6D,    TJA1145_REG_Data_mask_6 = 0x6E,    TJA1145_REG_Data_mask_7 = 0x6F,    TJA1145_REG_WAKE_pin_status = 0x4B,    TJA1145_REG_WAKE_pin_enable = 0x4C,    TJA1145_REG_Event_capture_status = 0x60,    TJA1145_REG_System_event_status = 0x61,    TJA1145_REG_Transceiver_event_status = 0x63,    TJA1145_REG_WAKE_pin_event_status  = 0x64,    TJA1145_REG_Identification  = 0x7E,}tja1145_regs;
typedef struct{    tja1145_regs reg_addr;    unsigned char reg_val;}tja1145_reg_config;
void CanTrcv_Init(void);void CanTrcv_Sleep(void);uint8_t  CanTrcv_119_TJA1145_WriteOneReg(uint8_t addr, uint8_t data);uint8_t CanTrcv_119_TJA1145_ReadOneReg(uint8_t addr);
#endif /* DRIVER_TJA1145_TJA1145_H_ */


版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。

原文链接:https://blog.csdn.net/floenrce/article/details/135084378

评论 (0)
  • 在智能终端设备开发中,语音芯片与功放电路的配合直接影响音质表现。广州唯创电子的WTN6、WT588F等系列芯片虽功能强大,但若硬件设计不当,可能导致输出声音模糊、杂音明显。本文将以WTN6与WT588F系列为例,解析音质劣化的常见原因及解决方法,帮助开发者实现清晰纯净的语音输出。一、声音不清晰的典型表现与核心原因当语音芯片输出的音频信号存在以下问题时,需针对性排查:背景杂音:持续的“沙沙”声或高频啸叫,通常由信号干扰或滤波不足导致。语音失真:声音断断续续或含混不清,可能与信号幅度不匹配或功放参数
    广州唯创电子 2025-03-25 09:32 66浏览
  •       知识产权保护对工程师的双向影响      正向的激励,保护了工程师的创新成果与权益,给企业带来了知识产权方面的收益,企业的创新和发明大都是工程师的劳动成果,他们的职务发明应当受到奖励和保护,是企业发展的重要源泉。专利同时也成了工程师职称评定的指标之一,专利体现了工程师的创新能力,在求职、竞聘技术岗位或参与重大项目时,专利证书能显著增强个人竞争力。专利将工程师的创意转化为受法律保护的“无形资产”,避免技术成果被他人抄袭或无偿使
    广州铁金刚 2025-03-25 11:48 125浏览
  • 核心板简介创龙科技 SOM-TL3562 是一款基于瑞芯微 RK3562J/RK3562 处理器设计的四核 ARM C ortex-A53 + 单核 ARM Cortex-M0 全国产工业核心板,主频高达 2.0GHz。核心板 CPU、R OM、RAM、电源、晶振等所有元器件均采用国产工业级方案,国产化率 100%。核心板通过 LCC 邮票孔 + LGA 封装连接方式引出 MAC、GMAC、PCIe 2.1、USB3.0、 CAN、UART、SPI、MIPI CSI、MIPI
    Tronlong 2025-03-24 09:59 184浏览
  • 在嵌入式语音系统的开发过程中,广州唯创电子推出的WT588系列语音芯片凭借其优异的音质表现和灵活的编程特性,广泛应用于智能终端、工业控制、消费电子等领域。作为该系列芯片的关键状态指示信号,BUSY引脚的设计处理直接影响着系统交互的可靠性和功能拓展性。本文将从电路原理、应用场景、设计策略三个维度,深入解析BUSY引脚的技术特性及其工程实践要点。一、BUSY引脚工作原理与信号特性1.1 电气参数电平标准:输出3.3V TTL电平(与VDD同源)驱动能力:典型值±8mA(可直接驱动LED)响应延迟:语
    广州唯创电子 2025-03-26 09:26 73浏览
  • 在智能终端设备快速普及的当下,语音交互已成为提升用户体验的关键功能。广州唯创电子推出的WT3000T8语音合成芯片,凭借其卓越的语音处理能力、灵活的控制模式及超低功耗设计,成为工业控制、商业终端、公共服务等领域的理想选择。本文将从技术特性、场景适配及成本优势三方面,解析其如何助力行业智能化转型。一、核心技术优势:精准、稳定、易集成1. 高品质语音输出,适配复杂环境音频性能:支持8kbps~320kbps宽范围比特率,兼容MP3/WAV格式,音质清晰自然,无机械感。大容量存储:内置Flash最大支
    广州唯创电子 2025-03-24 09:08 192浏览
  •        当今社会已经步入了知识经济的时代,信息大爆炸,新鲜事物层出不穷,科技发展更是一日千里。知识经济时代以知识为核心生产要素,通过创新驱动和人力资本的高效运转推动社会经济发展。知识产权(IP)应运而生,成为了知识经济时代竞争的核心要素,知识产权(Intellectual Property,IP)是指法律赋予人们对‌智力创造成果和商业标识等无形财产‌所享有的专有权利。其核心目的是通过保护创新和创意,激励技术进步、文化繁荣和公平竞争,同时平衡公共利益与
    广州铁金刚 2025-03-24 10:46 75浏览
  • 无论你是刚步入职场的新人,还是已经有几年经验的职场老手,培养领导力都是职业发展中一个至关重要的环节。拥有良好的领导能力不仅能让你从人群中脱颖而出,也能让你在团队中成为一个值得信赖、富有影响力的核心成员。什么是领导力?领导力并不仅仅意味着“当老板”或者“发号施令”。它更多地是一种能够影响他人、激发团队潜能,并带领大家实现目标的能力。一位优秀的领导者需要具备清晰的沟通能力、解决问题的能力,以及对人心的深刻理解。他们知道如何激励人心,如何在压力下保持冷静,并能在关键时刻做出正确的决策。如何培养领导力?
    优思学院 2025-03-23 12:24 94浏览
  • 人形机器人产业节奏预估:2024年原型机元年,2025年小规模量产元年。当宇树科技H1人形机器人以灵动的手部动作在春晚舞台上演创意融合舞蹈《秧Bot》,舞出"中国智造"时,电视机前十几亿观众第一次深刻意识到:那个需要仰望波士顿动力的时代正在落幕。*图源:宇树科技短短数周后,宇树G1机器人又用一段丝滑的街舞在网络收割亿级播放量,钢铁之躯跳出赛博朋克的浪漫。2月11日,宇树科技在其京东官方旗舰店上架了两款人形机器人产品,型号分别为Unitree H1和G1。2月12日,9.9万元的G1人形机器人首批
    艾迈斯欧司朗 2025-03-22 21:05 137浏览
  • WT588F02B是广州唯创电子推出的一款高性能语音芯片,广泛应用于智能家电、安防设备、玩具等领域。然而,在实际开发中,用户可能会遇到烧录失败的问题,导致项目进度受阻。本文将从下载连线、文件容量、线路长度三大核心因素出发,深入分析烧录失败的原因并提供系统化的解决方案。一、检查下载器与芯片的物理连接问题表现烧录时提示"连接超时"或"设备未响应",或烧录进度条卡顿后报错。原因解析接口错位:WT588F02B采用SPI/UART双模通信,若下载器引脚定义与芯片引脚未严格对应(如TXD/RXD交叉错误)
    广州唯创电子 2025-03-26 09:05 77浏览
  • 在智慧城市领域中,当一个智慧路灯项目因信号盲区而被迫增设数百个网关时,当一个传感器网络因入网设备数量爆增而导致系统通信失效时,当一个智慧交通系统因基站故障而导致交通瘫痪时,星型网络拓扑与蜂窝网络拓扑在构建广覆盖与高节点数物联网网络时的局限性便愈发凸显,行业内亟需一种更高效、可靠与稳定的组网技术以满足构建智慧城市海量IoT网络节点的需求。星型网络的无线信号覆盖范围高度依赖网关的部署密度,同时单一网关的承载设备数量有限,难以支撑海量IoT网络节点的城市物联系统;而蜂窝网络的无线信号覆盖范围同样高度依
    华普微HOPERF 2025-03-24 17:00 177浏览
  • 文/Leon编辑/cc孙聪颖‍“无AI,不家电”的浪潮,正在席卷整个家电行业。中国家电及消费电子博览会(AWE2025)期间,几乎所有的企业,都展出了搭载最新AI大模型的产品,从电视、洗衣机、冰箱等黑白电,到扫地机器人、双足机器人,AI渗透率之高令人惊喜。此番景象,不仅让人思考:AI对于家电的真正意义是什么,具体体现在哪些方面?作为全球家电巨头,海信给出了颇有大智慧的答案:AI化繁为简,将复杂留给技术、把简单还给生活,是海信对于AI 家电的终极答案。在AWE上,海信发布了一系列世俱杯新品,发力家
    华尔街科技眼 2025-03-23 20:46 75浏览
  • 文/Leon编辑/cc孙聪颖‍去年,百度公关部副总裁璩静的争议言论闹得沸沸扬扬,最终以道歉离职收场。时隔一年,百度的高管又出事了。近日,“百度副总裁谢广军女儿开盒孕妇”事件登上热搜,持续发酵,引起网友对百度数据安全性的怀疑。3月19日晚间,百度正式发布声明,表示坚决谴责窃取和公开他人隐私的网络暴力行为,同时强调,百度内部实施匿名化、假名化处理,经查验,泄露数据并非来自百度,而是海外的社工库,“当事人承认家长给她数据库”为不实信息,针对相关谣言百度已经向公安机关报案。然而,并非所有网友都对这份声明
    华尔街科技眼 2025-03-21 21:21 107浏览
  • 在人工智能与物联网技术蓬勃发展的今天,语音交互已成为智能设备的重要功能。广州唯创电子推出的WT3000T8语音合成芯片凭借其高性能、低功耗和灵活的控制方式,广泛应用于智能家居、工业设备、公共服务终端等领域。本文将从功能特点、调用方法及实际应用场景入手,深入解析这款芯片的核心技术。一、WT3000T8芯片的核心功能WT3000T8是一款基于UART通信的语音合成芯片,支持中文、英文及多语种混合文本的实时合成。其核心优势包括:高兼容性:支持GB2312/GBK/BIG5/UNICODE编码,适应不同
    广州唯创电子 2025-03-24 08:42 158浏览
  • 今年全国两会期间,“体重管理”和“育儿”整体配套政策引发了持久广泛关注。从“吃”到“养”,都围绕着国人最为关心的话题:健康。大家常说“病从口入”,在吃这件事上,过去大家可能更多是为了填饱肚子,如今,消费者从挑选食材到厨电都贯彻着健康的宗旨,吃得少了更要吃得好了。这也意味着在新消费趋势下,谁能抓住众人的心头好,就能带起众人的购买欲望,才能在新一轮竞争中脱颖而出。作为家电行业的风向标,在2025年中国家电及消费电子博览会(AWE)上,这两个话题也被媒体和公众频繁提及。深耕中国厨房三十余年的苏泊尔再次
    华尔街科技眼 2025-03-22 11:42 83浏览
我要评论
0
1
点击右上角,分享到朋友圈 我知道啦
请使用浏览器分享功能 我知道啦