中国汽车工程师之家--聚集了汽车行业80%专业人士 

论坛口号:知无不言,言无不尽!QQ:542334618 

本站手机访问:直接在浏览器中输入本站域名即可 

  • 776查看
  • 0回复

[模块网络] CAN通讯系列补充篇- 详解三款CAN收发器6

[复制链接]


该用户从未签到

发表于 3-12-2023 07:30:08 | 显示全部楼层 |阅读模式

汽车零部件采购、销售通信录       填写你的培训需求,我们帮你找      招募汽车专业培训老师


本文经CSDN博主- 嵌软小白呗允许转发,感谢支持!作者对TJA三款收发器做了深入比较,非常有助于大家更深入了解CAN收发器的通讯和休眠唤醒功能。本文将在原文基础上稍作修改,也欢迎关注作者其他文章。原文链接:Autosar CAN开发12(基于CAN收发器的休眠唤醒、CAN收发器模式讲解。详细讲解TJA1059(TJA1049)、TJA1043、TJA1145。)-CSDN博客
目录1 关于我对CAN收发器理解的历程2 什么是CAN收发器3 基础版CAN收发器:TJA1059(TJA1049)收发器    3.1 TJA1049 引脚图    3.2 TJA1049 收发器模式及各模式切换方法    3.3 TJA1049 CAN通讯功能    3.4 TJA1049 休眠唤醒功能4 升级版CAN收发器:TJA1043收发器    4.1 TJA1043 引脚图    4.2 TJA1043 收发器模式及各模式切换方法    4.3 关于Wakeflag    4.4 TJA1043 CAN通讯功能    4.5 TJA1043 休眠唤醒功能


        MCU通过判断收发器的INH脚进入休眠唤醒检测情况1:MCU处于断电状态(MCU电源被切断的状态)时进行唤醒源检测。唤醒检测情况2:MCU处于有电状态(MCU此时一般处于预休眠状态)时进行唤醒源检测。


5 加强版CAN收发器:TJA1145收发器6 结束语

1 关于我对CAN收发器理解的历程
想起2年前刚毕业在公司搞CAN通讯开发,由于公司项目的平台都是做的非常的完善,所以我主要做CAN应用层内容,很少有机会从最底层的CAN收发器往上一步步开发。当直接看CAN收发器手册,什么ERR_N脚用来检测什么错误、什么温度过高过低、什么WakeUpFlag等等功能,非常疑惑到底怎么用?搞了一年半载都没明白CAN收发器到底是干啥的。
后来真正弄过CAN收发器才明白,其实没那么难,一般哪有用到手册里面写的那么多功能,平时用到的就两个功能,即:
    MCU的CAN通讯(即CAN报文收发)MCU的休眠唤醒(即通过报文唤醒MCU,无报文时MCU进入休眠)
首先是MCU的CAN通讯。MCU要CAN通讯了,就把收发器切换至正常通讯模式(Normal);MCU不要CAN通讯了,就把收发器切换至其它模式。而所谓的各种收发器模式有什么用,其实简单理解就是正常通讯模式收发器能收能发,其它模式收发器不能收不能发(当然,有能收不能发,即Listen-only,但这种模式一般也用不上)。然后是MCU的休眠唤醒(即报文唤醒)。为什么休眠唤醒需要用到CAN收发器呢?一般来说,我们的MCU进入休眠后,MCU唤醒有两种情况:主动唤醒和被动唤醒。MCU的被动唤醒就需要用到CAN收发器,MCU休眠时,CAN收发器检测到CAN总线出现报文,此时MCU可通过检测CAN收发器(可能是直接读收发器的引脚电平读取是否被报文唤醒、也可能是通过SPI去读取是否被报文唤醒情况),得知是否自己需要被动唤醒。由于用收发器实现MCU的休眠唤醒比较复杂,本文简单讲一下,详细MCU休眠唤醒可看下一篇文章。接下来我将从MCU工作时需要用到CAN收发器什么功能,进而去讲CAN收发器的功能和使用方法。我觉得从这个角度会更容易理解CAN收发器,因为知道了需求,自然就知道我们的产品是什么了。
2 什么是CAN收发器
所谓“CAN收发器”,通俗来讲,就是把CAN H和CAN L两根线的(电压)差分数据转换成如0、1、0、1这样的逻辑数据。更专业一点的大家自行百度,本文主要讲一下CAN收发器怎么使用。仅从CAN数据收发来看,接线是这样的:
CAN通讯系列补充篇- 详解三款CAN收发器6w1.jpg
接下来具体讲一下收发器模式如何切换、休眠唤醒如何实现。
3 基础版CAN收发器:TJA1059(TJA1049)
3.1TJA1049 引脚图先看TJA1059和TJA1049的引脚定义,如下所示:
CAN通讯系列补充篇- 详解三款CAN收发器6w2.jpg

明显可见,TJA1059其实就是两个TJA1049合在了一块,其实在TJA1059的数据手册也有明确说明,所以下面我们就看TJA1049。3.2 TJA1049 收发器模式及各模式切换方法根据TJA1049芯片手册可知有两种运行模式:Normal模式和Standby模式,如下:
CAN通讯系列补充篇- 详解三款CAN收发器6w3.jpg
    Normal模式:
      功能:只有该模式CAN报文能收能发。模式切换方法:把收发器的STB脚拉低就能切换到。
    Standby模式:
      功能:该模式下报文不能收不能发,但该模式下可通过检测RXD引脚得知CAN总线是否出现报文,进而用于实现MCU的报文唤醒检测。模式切换方法:把收发器的STB脚拉高就切换到该模式。


3.3 TJA1049 CAN通讯功能
开启通信时就把收发器切到Normal模式,关闭通信时就把收发器切到Standby模式。
3.4 TJA1049 休眠唤醒功能
由于TJA1049只有Normal和Standby两种模式,所以TJA1049只能用来做唤醒检测,无法用于作为MCU进入休眠低功耗检测的条件。
当TJA1049处于Standby模式时,TJA1049若检测到CAN总线有报文(任意报文)后,TJA1049的RXD引脚会从高电平拉低至低电平,MCU可通过检测TJA1049的RXD引脚低电平作为报文唤醒信号。
TJA1049处于Standby模式检测到CAN总线有报文后,RXD引脚拉低不会一直保持为低电平(如CAN总线只有一帧报文,RXD引脚拉低后会立即又变回高),因此MCU不能采用轮询检测的方式读取低电平作为唤醒信号,必须使用中断捕获RXD引脚下降沿才能确保MCU能立即捕获到唤醒信号。
4 升级版CAN收发器:TJA1043收发器

4.1 TJA1043 引脚图

CAN通讯系列补充篇- 详解三款CAN收发器6w4.jpg

4.2 TJA1043 收发器模式及各模式切换方法
TJA1043收发器有5个运行模式,分别是Standby、Normal、Listen-Only、Go-To-Sleep、Sleep,收发器模式切换状态机如下所示:
CAN通讯系列补充篇- 详解三款CAN收发器6w5.jpg
收发器模式切换方法手册说明如下:
CAN通讯系列补充篇- 详解三款CAN收发器6w6.jpg

    Normal模式:
      功能:只有该模式报文能收能发,即要正常收发报文必须切换到该模式。模式切换方法:STB拉高和EN拉高。
    Standby模式:
      功能:该模式下报文不能收不能发,但该模式下可通过检测ERR或RXD引脚得知CAN总线是否出现报文,进而用于实现MCU的报文唤醒检测,如下所示:
      CAN通讯系列补充篇- 详解三款CAN收发器6w7.jpg
      ?模式切换方法:STB拉低和EN拉低。


?
    Listen-Only模式:
不管,一般不使用该模式。
    Go-To-Sleep模式和Sleep模式:
      功能:该模式下CAN报文不能收不能发,但该模式下可通过判断INH引脚进行下电休眠条件检测,也可通过检测ERR或RXD引脚得知CAN总线是否出现报文,进而用于实现MCU的报文唤醒检测,如下所示:

      ?模式切换方法:把Go-To-Sleep模式和Sleep模式写一块的原因,是因为Sleep模式是没法直接通过控制STB和EN电平的方法进入的,而是通过控制STB和EN电平使收发器进入Go-To-Sleep模式后,等待20us-50us后收发器自行进入Sleep模式,如下图所示:


?

CAN通讯系列补充篇- 详解三款CAN收发器6w9.jpg

4.3 关于Wakeflag
在最初我以为1043收发器的休眠唤醒机制是通过WAKE引脚来实现,因为手册有说WAKE引脚能实现唤醒功能,导致我总想把WAKE引脚和报文唤醒扯一起,最后才发现他俩是分开的两个功能,两者没关系。如下所示:
CAN通讯系列补充篇- 详解三款CAN收发器6w10.jpg
也就是说Wake引脚可以接一根唤醒信号线实现唤醒功能,当收发器在Standby或Sleep时,Wake脚检测到电平变化时,然后RXD和ERR会拉低。但是一般情况下我们用不上这个功能,我们用的是CAN H和CAN L检测到CAN报文时,RXD和ERR会拉低这个功能。而所谓的Wakeflag,它的意思是RXD和ERR拉低表示置起了Wakeflag;然后进入Normal状态后,会把RXD和ERR拉回高,即清掉了Wakeflag。
4.4 TJA1043 CAN通讯功能
开启通信时就把收发器切到Normal模式;关闭通信时就把收发器切到Standby模式。4.5 TJA1043 休眠唤醒功能MCU通过判断收发器的INH引脚进入休眠:由于TJA1043的INH引脚只有在Sleep模式时为浮空,其它模式都为高电平,因此若硬件给INH引脚设为下拉模式,则只有当收发器为Sleep模式时,INH引脚才为低电平,如下所示:
CAN通讯系列补充篇- 详解三款CAN收发器6w11.jpg

因此硬件或SBC可通过检测INH引脚为高电平时才给MCU供电,INH引脚为低电平时则切断MCU的供电,即可实现MCU的休眠。即MCU控制收发器的模式切换为Sleep模式进而使得MCU进入休眠模式。需要注意的是:

    收发器要进入Sleep模式,是通过控制收发器STB为低电平,EN为高电平使收发器进入Go-to-Sleep模式,然后等待20-50us后收发器会自行进入Sleep模式。
    收发器在Standby模式或Sleep模式,若检测到CAN总线有报文,ERR会拉低,且INH会保持高电平无法拉低。(因此这种情况MCU读取到ERR拉低后,需要进行唤醒操作并把收发器切为Normal。否则,收发器处于Sleep模式,但INH拉高。然后MCU又不做任何操作,会导致无法休眠,又无法唤醒,这就出问题了。)
休眠流程如下图所示:
CAN通讯系列补充篇- 详解三款CAN收发器6w12.jpg

唤醒检测情况1:MCU处于断电状态(MCU电源被切断的状态)时进行唤醒源检测。此时TJA1043处于Sleep模式(注意,此时MCU断电,但CAN收发器是有电的,因为收发器要一直检测CAN总线)。此时TJA1043检测到总线有CAN报文(任意报文)后,TJA1043的ERR及RXD引脚会从高电平拉低至低电平,并且保持为低电平(直到收发器模式切换为Normal模式),MCU可通过检测TJA1043的ERR或RXD引脚低电平作为报文唤醒信号。值得说明的是,与上面说的TJA1049收发器不同,TJA1043在Standby模式或Sleep模式检测到总线有报文后,ERR和RXD会一直保持为低电平,直到收发器模式切换为Normal模式。因此MCU通过检测TJA1043的ERR或RXD引脚读取是否被报文唤醒时不能通过中断读取引脚电平边沿变化,而是必须通过轮询方式读取引脚电平为低时判断为有报文唤醒。基于TJA1043的唤醒流程为:当MCU休眠时,CAN总线出现报文,此时CAN收发器会检测到报文并把ERR和RXD拉低,同时把CAN收发器的INH引脚拉高,硬件检测到INH引脚为高后将会给MCU供电,MCU上电后此时CAN收发器的ERR和RXD早已拉低,已经不会出现边沿跳变,因此无法通过中断捕获编译跳变信号,所以MCU必须通过轮询检测的方式读取CAN收发器的ERR引脚或RXD引脚为低电平进行唤醒源检测。唤醒流程如下:
CAN通讯系列补充篇- 详解三款CAN收发器6w13.jpg

唤醒检测情况2:MCU处于有电状态(MCU此时一般处于预休眠状态)时进行唤醒源检测。这种情况与上面的“唤醒检测情况1”不同的地方为:MCU有电且正在运行、TJA1043处于Standby模式。其它地方与上面的“唤醒检测情况1”是一样的。唤醒流程如下图所示:
CAN通讯系列补充篇- 详解三款CAN收发器6w14.jpg

5 加强版CAN收发器:TJA1145收发器
TJA1145其实就是TJA1043的升级版,相同的功能就不再赘述,下面只说有差异的地方。可以这么理解,TJA1145只不过是在TJA1043的基础上增加了所谓的Partial Networking功能,这个功能是用来做唤醒检测的。简单来说就是TJA1145收发器在Standby或Sleep模式的时候不但能监控CAN总线是否出现报文,还能监控CAN报文的ID和DLC,如果CAN报文ID或DLC与配置的不匹配,那就认为没检测到唤醒报文。先看下TJA1145的引脚图:
CAN通讯系列补充篇- 详解三款CAN收发器6w15.jpg
可见,与TJA1043不同,TJA1145提供了SPI接口。
CAN通讯系列补充篇- 详解三款CAN收发器6w16.jpg
也就是说,TJA1145的模式切换不再是像TJA1143那样通过改变EN和STB两个引脚电平取控制,而是直接通过SPI发一串数据到收发器,收发器就把模式切换了。唤醒检测也不像TJA1043那样通过读取ERR或RXD引脚的电平去检测唤醒信号了,而是直接通过SPI发一串数据到收发器,收发器也通过SPI告诉你是否检测到唤醒报文。因此,TJA1145要使用好的关键,其实就是MCU和SPI的通路要打通。关于SPI和TJA1145的SPI开发,我后续会专门另外再写文章仔细讲。6 结束语朋友们,我觉得我用会了这几个CAN收发器,以后其它CAN收发器应该也是大差不差的用法。对于休眠唤醒这一块,对于刚接触的人来说,我觉得还是有点复杂的,因为我刚接触的时候也很头疼,因为涉及到的模块还是很多的。本文只是讲休眠唤醒与收发器关联的部分,后面文章我会专门整体、系统讲一下MCU的休眠唤醒方案的。我会尽力用最简洁的语言给大家讲这些开发知识的,让没搞过这些东西的小白朋友们都能听到我在讲什么,让自己下次忘记之后回来看也一下能回忆起来。朋友们,加油!!!


该用户从未签到

 楼主| 发表于 17-3-2025 17:38:00 | 显示全部楼层
关于您提到的CAN通讯系列补充篇中关于三款CAN收发器的详解,这是一个非常重要的主题。作为一名汽车工程师,深知CAN收发器在汽车通信系统中的作用及其重要性。在此,我对CSDN博主嵌软小白呗对三款CAN收发器的深入分析和比较表示由衷的感谢,这样的文章非常有助于行业同仁更好地理解和应用CAN收发器。尤其是针对三款型号(TJA系列)的分析对于掌握其性能差异具有实际意义。关于即将发布的文章,我期待了解CAN收发器的通讯机制、休眠唤醒功能等关键技术特点。对于涉及到的技术细节,我相信作者会给出专业的解读。同时,我也将关注并转发此篇文章,以推动相关技术的学习和交流。最后,我也非常欢迎各位同行关注作者的其他文章,共同探讨汽车行业的最新技术和动态。
回复 支持 反对

使用道具 举报



该用户从未签到

发表于 17-3-2025 17:38:00 | 显示全部楼层
针对您提供的帖子内容,作为一名汽车工程师,我深感文中所述内容的专业性和实用性。对于CSDN博主嵌软小白呗关于三款CAN收发器的深入分析,我对文中的核心内容表示赞同并予以高度评价。文中对TJA系列收发器的详细解析,有助于读者深入了解CAN收发器的通讯机制及休眠唤醒功能。对于原文的转发和修改,我会保持尊重原创的态度,同时关注作者其他文章以获取更多专业见解。对于原文链接中提到的关于CAN收发器的理解历程、定义以及TJA系列收发器的详细讲解等内容,期待更多人关注和探讨,共同推动汽车工程领域的技术进步。关于原文内容,若有任何疑问或需要深入探讨的地方,欢迎随时与我交流。
回复 支持 反对

使用道具 举报



该用户从未签到

发表于 17-3-2025 17:38:00 | 显示全部楼层
针对您提供的帖子内容,以下是我作为汽车工程师的回复:

关于所提及的CAN通讯系列补充篇,关于三款CAN收发器的详解非常有价值。对于工程师而言,了解不同型号的CAN收发器及其特性是日常工作的重要部分。TJA系列收发器在汽车行业应用广泛,其中涉及的休眠唤醒功能和通讯模式对于提高系统效率和可靠性至关重要。在原文基础上稍作修改和补充后,该文章将更有助于工程师们深入了解和应用这些收发器。同时,感谢嵌软小白呗的允许转发,其深入比较和详细讲解对于推动行业知识共享非常有意义。期待更多相关领域的专业人士关注并共同探讨。原文链接提供的Autosar CAN开发相关内容,也是汽车行业关注的热点,值得一读。
回复 支持 反对

使用道具 举报



该用户从未签到

发表于 17-3-2025 17:38:00 | 显示全部楼层
回复帖子:

关于CAN通讯系列补充篇中关于三款CAN收发器的详解,非常感谢您的分享。作为一名汽车工程师,深知CAN收发器在汽车通讯中的重要性,您的文章对TJA的三款收发器做了深入的比较,有助于大家更全面地了解它们的特性和功能。尤其是关于休眠唤醒功能和收发器模式的讲解,对汽车行业从业人员具有很高的参考价值。您的专业分享是我们学习和进步的宝贵资源,期待继续看到您关于CAN通讯及汽车技术的更多精彩文章。原文链接所提供的CSDN博客内容十分详细,也期待有更多详细的讲解和技术讨论。

对于汽车CAN系统来说,深入研究并理解不同的CAN收发器是非常必要的。关于您提到的三款收发器TJA1059(TJA1049)、TJA1043和TJA1145,我相信很多同行都对它们在实际应用中的表现十分关注。感谢您的分享和付出,为汽车行业的技术进步添砖加瓦。期待后续的分享和学习交流。
回复 支持 反对

使用道具 举报



该用户从未签到

发表于 17-3-2025 17:38:00 | 显示全部楼层
关于您提到的三款CAN收发器:TJA系列(TJA1059、TJA1049以及TJA1043和TJA1145)的详解。以下是对此内容的简短专业回复:

经过深入研究与实践,我对CAN收发器的理解逐渐加深。CAN收发器是汽车CAN通信系统中的关键部件,负责实现信号的接收与发送。

关于三款收发器的介绍:

一、TJA系列的基础款CAN收发器TJA1059(TJA1049),具备优异的休眠唤醒功能,适用于多种汽车通信系统。
二、TJA1043收发器在通信效率上有所提升,适合高速通信需求。
三、TJA1145收发器具备更高的集成度和性能,适用于复杂的汽车通信系统。

文章作者对于这三款收发器的详细讲解为我们提供了宝贵的参考,有助于更深入地理解其通讯和休眠唤醒功能。建议进一步关注作者的其他文章以获取更多有价值的信息。如有更多技术疑问或需求,欢迎进一步探讨。以上内容仅供参考,如需了解更多技术细节,请查阅相关官方文档或技术规范。
回复 支持 反对

使用道具 举报

快速发帖

您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|手机版|小黑屋|Archiver|汽车工程师之家 ( 渝ICP备18012993号-1 )

GMT+8, 16-7-2025 08:10 , Processed in 0.412165 second(s), 39 queries .

Powered by Discuz! X3.5

© 2001-2013 Comsenz Inc.