建议同时阅读本专栏的:
Autosar CAN开发03(从实际应用认识CAN总线的物理层)
Autosar CAN开发04(从实际应用认识CAN报文)
Autosar CAN开发05(从实际应用认识CAN波特率)
前言
当知道了CAN的物理链路,了解了什么是CAN报文。
于是,你兴致勃勃的按照上面的接线方法,接好板子、接上CAN线,接好CAN线、还有终端电阻,再CAN盒接上电脑。
然后安装好电脑的CAN上位机并打开,然后发现。
嗯?怎么要选波特率,仲裁域波特率是啥玩意啊?
没办法,我们不知道是多少,只能问别人,于是,人家告诉你这这个板子的波特率是这么选。然后点击确认,报文就开始出来。
反正报文出来了就行,这个板子的波特率就这么选,记住就好了嘛。
...
相信,大部分的朋友都是这么操作的对吧。
但是,我们可是CAN开发工程师啊,可不能说连个波特率为啥要怎么选都不知道啊。
CAN波特率类型
首先,我们要知道仲裁域波特率是指哪个位置的波特率,数据域波特率又是指哪个位置的波特率。
如下面两张图所示:
数据域波特率
仲裁域波特率
注意,仲裁域波特率并不是单指仲裁域,而是除去数据域的其它地方的波特率:
另外,CAN格式的报文,数据域和仲裁域都是一样的波特率。所以,只要选一个仲裁域的就好了。
对于CANFD格式的报文,数据域和仲裁域是不同的波特率。所以,数据域和仲裁域的波特率都要选。
至于到底要选择波特率多少呢?
这就要根据代码里配置的波特率是多少了,而代码配置为多少,又是根据需求来的了。
深入理解CAN波特率
另外关于波特率我们理解深入一点:
实际上,波特率我是这样理解的:如波特率500k,即1秒/500k=2微秒,也就是说,最小2微秒可以进行一次电平变化,1秒最多可以电平变化500k次。(这个最小2us的一次变化的电平,这个叫做位时间)
再看回这张图(标准CAN格式的报文结构):
可见,标准CAN格式报文的长度(物理层次)为:1+11+1+1+1+4+0(64)+15+1+1+1+7=44~108位。
我们上面还说了,500K波特率的话,位时间是2us。
所以,对于500K波特率的标准CAN格式报文,数据域长度为64bit时,我们在示波器可以看到是这样的:
即,一帧报文的时间长度是:108bit * 2us = 116us。
好了,关于仲裁域波特率和数据域波特率的认识就到这里了。
结束
到这里为止,我们从CAN总线物理层需要的东西,到CAN报文是什么,再到CAN报文在CAN总线上的传输、到CAN波特率都大致了解了一遍。
现在,再看回之前认识CAN总线的那两张图片:
这回是不是就明白了,我们从CAN上位机看到的CAN报文,究竟是怎么来的了。
这篇文章的目的是为了能迅速认识什么是CAN总线和CAN报文,很多关于CAN通讯平时用不上的深入细节都省略了,等到最后这个CAN通讯开发系列快结束的时候,在写CAN驱动时再深入讲解,这样就更容易理解了。
实际上,对CAN入门来说,只要知道CAN的物理链路要怎么去接线,CAN报文是什么东西,这样就能进行CAN通讯开发了,比如CAN应用报文开发、网管报文开发、报文超时故障开发、CAN诊断开发等等。
好了,接下来就可以步入CAN开发了。但是,要开发总得有需求吧?总不能一上来啥需求也不知道,咔咔咔一顿开发,都不知道开发了啥。
下一篇文章,我们会看看CAN通讯开发的需求都是些什么。
建议同时阅读本专栏的:
Autosar CAN开发03(从实际应用认识CAN总线的物理层)
Autosar CAN开发04(从实际应用认识CAN报文)
Autosar CAN开发05(从实际应用认识CAN波特率)
发表日期:2023.12.25
朋友们,关注下我呀,我以我过来人,再用小白的角度认真写的知识总结一定让你的脑子饿肚子进来,扶墙出去...
返回目录:
Autosar BSW 开发笔记(目录)-CSDN博客