CAN基础知识介绍
来源 |一口Linux、汽车ECU开发
知圈 | 进“滑板底盘群”请加微yanzhi6,备注底盘
1. CAN协议
1.1 CAN协议简介
CAN是控制器局域网络 (Controller Area Network) 的简称,它是由研发和生产汽车电子产品著称的德国BOSCH开发的,并最终成为国际标准(ISO11519以及ISO11898), 是国际上应用最广泛的现场总线之一禹州道教灵符网请符。差异点如下:
1.2 CAN物理层
CAN通讯不是以时钟信号来进行同步的,它是一种异步通讯,只具有 CAN_High和 CAN_Low两条信号线,共同构成一组差分信号线,以差分信号的形式进行通讯禹州道教灵符网请符。CAN 物理层的形式主要有两种:
遵循ISO11898标准的高速、短距离闭环网络禹州道教灵符网请符,总线最大长度为40m,通信速度最高为 1Mbps,总线的两端各要求有一个120欧的电阻
是遵循ISO115192标准的低速、远距离开环网络禹州道教灵符网请符,最大传输距离为1km,最高通讯速率为125kbps,两根总线是独立的、不形成闭环,要求每根总线上各串联有一个2.2千欧的电阻
以TJA1050芯片作为CAN收发器的电路原理图如下图示
差分信号又称差模信号禹州道教灵符网请符,差分信号传输时,需要两根信号线,这两个信号线的振幅相等,相位相反,通过两根信号线的电压差值来表示逻辑0和逻辑1,CAN中显性电平(差值为正)对应逻辑 0,隐性电平(差值小于或等于0)对应逻辑 1,显性电平比隐性电平更强
1.3 CAN协议层
CAN属于异步通讯禹州道教灵符网请符,没有时钟信号线,连接在同一个总线网络中的各个节点会像串口异步通讯那样,节点间使用约定好的波特率进行通讯,CAN使用位同步的方式来抗干扰、吸收误差,实现对总线电平信号进行正确的采样,确保通讯正常
⏩ 位时序分解:为了实现位同步,CAN协议把每一个数据位的时序分解成 SS段、 PTS段、 PBS1段、 PBS2段,这四段的长度加起来即为一个CAN数据位的长度禹州道教灵符网请符。分解后最小的时间单位是 Tq,一个完整的位由 8~25个Tq组成
⏩ 波特率:总线上的各个通讯节点只要约定好1个Tq的时间长度以及每一个数据位占据多少个Tq禹州道教灵符网请符,就可以确定CAN通讯的波特率
例如,假设上图中的 1Tq=1us,而每个数据位由 19 个 Tq 组成,则传输一位数据需要时间 T1bit=19us,从而每秒可以传输的数据位个数为:1x10次方/19 = 52631.6 (bps)禹州道教灵符网请符。这个每秒可传输的数据位的个数即为通讯中的波特率。
⏩ 同步过程:波特率只是约定了每个数据位的长度,数据同步还涉及到相位的细节,此时就要用到数据位内的SS、PTS、PBS1及PBS2段了禹州道教灵符网请符。根据对段的应用方式差异, CAN的数据同步分为硬同步和重新同步。其中硬同步只是当存在帧起始信号时起作用,无法确保后续一连串的位时序都是同步的,而重新同步方式可解决该问题
硬同步:CAN节点通过总线发送数据时,会发送一个帧起始信号禹州道教灵符网请符。而挂载到CAN总线上的节点在不发送数据时,会时刻检测总线上的信号。如下图,当总线出现帧起始信号时,节点检测到总线的帧起始信号不在节点内部时序的 SS 段范围,所以判断它自己的内部时序与总线不同步,因而这个状态的采样点采集得的数据是不正确的。所以节点以硬同步的方式调整,把自己的位时序中的 SS 段平移至总线出现下降沿的部分,获得同步,同步后采样点就可以采集得正确数据了
重新同步:前面的硬同步只是当存在帧起始信号时才起作用,如果在一帧很长的数据内,节点信号与总线信号相位有偏移时,这种同步方式就无能为力了禹州道教灵符网请符。因而引入重新同步方式,它利用普通数据位的高至低电平的跳变沿来同步。与硬同步方式相似的是它们都使用 SS 段来进行检测,同步的目的都是使节点内的 SS 段把跳变沿包含起来。重新同步分为超前和滞后两种情况,以总线跳变沿与 SS 段的相对位置进行区分。
相位超前:节点从总线的边沿跳变中禹州道教灵符网请符,检测到它内部的时序比总线的时序相对超前 2Tq,这时控制器在下一个位时序中的 PBS1 段增加 2Tq 的时间长度,使得节点与总线时序重新同步
相位滞后:节点从总线的边沿跳变中禹州道教灵符网请符,检测到它的时序比总线的时序相对滞后 2Tq,这时控制器在前一个位时序中的 PBS2 段减少 2Tq 的时间长度,获得同步
⏩ 报文种类及结构:对数据、操作命令 (如读/写) 以及同步信号进行打包,打包后的这些内容称为报文禹州道教灵符网请符。CAN一共规定了5种类型的帧
数据帧的结构:数据帧是在CAN通讯中最主要、最复杂的报文禹州道教灵符网请符,它的结构如下图
其禹州道教灵符网请符他报文结构
2. CAN控制器
STM32 的芯片中具有bxCAN控制器,支持CAN协议2.0A和2.0B标准禹州道教灵符网请符。该CAN控制器支持最高的通讯速率为1Mb/s;可以自动地接收和发送CAN报文,支持使用标准ID和扩展ID的报文;外设中有3个发送邮箱,发送报文的优先级可以使用软件控制,还可记录发送的时间;有2个3级深度的接收FIFO,可使用过滤功能只接收或不接收某些ID号的报文;可配置成自动重发;不支持使用DMA进行数据收发。框架示意图如下:
STM32有两组CAN控制器,其中CAN1是主设备,框图中的存储访问控制器是由CAN1控制的,CAN2无法直接访问存储区域,所以使用CAN2的时候必须使能CAN1外设的时钟禹州道教灵符网请符。框图中主要包含CAN控制内核、发送邮箱、接收FIFO以及验收筛选器,下面对框图中的各个部分进行介绍
2.1 CAN控制内核
⏩ 主控寄存器CAN_MCR:负责管理CAN的工作模式
INRQ位:用来控制初始化请求禹州道教灵符网请符,在CAN初始化时,先设置该位为1,进行初始化,之后再设置该位为0,让CAN进入正常工作模式
⏩ 位时序寄存器CAN_BTR:用于配置测试模式、波特率以及各种位内的段参数
CAN波特率的计算公式 :只需要知道BS1和BS2的设置,以及APB1的时钟频率,就可以方便的计算出波特率禹州道教灵符网请符。比如设置TS1=9、TS2=5和BRP=6,在APB1频率为45Mhz的条件下,即可得到CAN通信的波特率=45000/6/(5+9+1)=500Kbps
2.2 CAN发送邮箱
CAN 共有3个发送邮箱,即最多可以缓存3个待发送的报文禹州道教灵符网请符。每个发送邮箱中包含有标识符寄存器CAN_TIxR、数据长度控制寄存器CAN_TDTxR及2个数据寄存器CAN_TDLxR、CAN_TDHxR,如下图
当使用CAN外设发送报文时,需要把报文的各个段分解,按位置写入到这些寄存器中,并对标识符寄存器CAN_TIxR中的发送请求寄存器位TMIDxR_TXRQ置1,即可把数据发送出去禹州道教灵符网请符。其中标识符寄存器CAN_TIxR中的STDID寄存器位比较特别。我们知道CAN的标准标识符的总位数为11位,而扩展标识符的总位数为29位的。当报文使用扩展标识符的时候,标识符寄存器CAN_TIxR中的STDID[10:0]等效于EXTID[18:28]位,它与EXTID[17:0]共同组成完整的29位扩展标识符
⏩ 发送邮箱标识符寄存器CAN_TIxR
⏩ 发送邮箱数据长度和时间戳寄存器CAN_TDTxR
⏩ 发送邮箱低字节数据寄存器CAN_TDLxR
⏩ 发送邮箱高字节数据寄存器CAN_TDHxR
2.3 CAN接收FIFO
CAN 共有2个接收FIFO,每个FIFO中有3个邮箱,即最多可以缓存6个接收到的报文禹州道教灵符网请符。当接收到报文时,FIFO的报文计数器会自增,而STM32内部读取FIFO数据之后,报文计数器会自减,通过状态寄存器可获知报文计数器的值,而通过前面主控制寄存器的RFLM位,可设置锁定模式,锁定模式下FIFO溢出时会丢弃新报文,非锁定模式下FIFO溢出时新报文会覆盖旧报文。跟发送邮箱类似,每个接收FIFO中包含有标识符寄存器CAN_RIxR、数据长度控制寄存器CAN_RDTxR及2个数据寄存器CAN_RDLxR、CAN_RDHxR,它们的功能见下表
通过中断或状态寄存器知道接收FIFO有数据后禹州道教灵符网请符,我们再读取这些寄存器的值即可把接收到的报文加载到STM32的内存中
⏩ 接收FIFO邮箱标识符寄存器CAN_RIxR
⏩ 接收FIFO邮箱数据长度和时间戳寄存器CAN_RDTxR
⏩ 接收FIFO邮箱低字节数据寄存器CAN_RDLxR
⏩ 接收FIFO邮箱高字节数据寄存器CAN_RDHxR
2.4 CAN验收筛选器
AN 验收筛选器,共有28个筛选器组,每个筛选器组有2个寄存器,CAN1和CAN2 共用筛选器禹州道教灵符网请符。CAN协议中,消息的标识符与节点地址无关,但与消息内容有关。因此,发送节点将报文广播给所有接收器时,接收节点会根据报文标识符的值来确定软件是否需要该消息,为了简化软件的工作,STM32的CAN外设接收报文前会先使用验收筛选器检查,只接收需要的报文到FIFO中。筛选器工作的时候,可以调整筛选ID的长度及过滤模式。
根据筛选ID长度来分类有有以下两种:
检查 STDID[10:0]、EXTID[17:0]、IDE 和 RTR 位禹州道教灵符网请符,共 31 位
检查 STDID[10:0]、RTR、IDE 和 EXTID[17:15]禹州道教灵符网请符,共 16 位
根据过滤的方法分为以下两种模式:
标识符列表模式,它把要接收报文的 ID 列成一个表,要求报文 ID 与列表中的某一个标识符完全相同才可以接收,可以理解为白名单管理禹州道教灵符网请符。
掩码模式禹州道教灵符网请符,它把可接收报文 ID 的某几位作为列表,这几位被称为掩码,可以把它理解成关键字搜索,只要掩码 (关键字) 相同,就符合要求,报文就会被保存到接收 FIFO
通过配置筛选模式寄存器CAN_FM1R的FBMx位可以设置筛选器工作在哪个模式禹州道教灵符网请符。通过配置筛选尺度寄存器CAN_FS1R的FSCx位可以设置筛选器工作在哪个尺度。不同的尺度和不同的过滤方法可使筛选器工作在图 的 4 种状态
每组筛选器包含2个32位的寄存器禹州道教灵符网请符,分别为CAN_FxR1和CAN_FxR2,它们用来存储要筛选的ID或掩码,各个寄存器位代表的意义与图中两个寄存器下面“映射”的一栏一致,各个模式的说明见表
例如下面的表格所示禹州道教灵符网请符,在掩码模式时,第一个寄存器存储要筛选的ID,第二个寄存器存储掩码,掩码为1的部分表示该位必须与ID中的内容一致,筛选的结果为表中第三行的ID值,它是一组包含多个的ID值,其中 x表示该位可以为1可以为0
而工作在标识符模式时,2个寄存器存储的都是要筛选的ID,它只包含2个要筛选的ID值 (32位模式时)禹州道教灵符网请符。如果使能了筛选器,且报文的ID与所有筛选器的配置都不匹配,CAN外设会丢弃该报文,不存入接收FIFO
⏩ 过滤器模式寄存器CAN_FM1R
⏩ 过滤器尺度寄存器CAN_FS1R
⏩ 过滤器FIFO分配寄存器CAN_FFA1R
⏩ 过滤器激活寄存器CAN_FA1R
⏩ 过滤器组i的寄存器x CAN_FiRx
免费测八字 今年运势 请加师父微信
免费看八字运势 请加师父微信: sanqingge8
寻找符咒,灵符,符咒网,道教符咒网,灵符网站,灵符网官网,购买符咒请灵符,这里有各种手绘开光符咒:财运符,财运符咒,财运亨通符咒,五路财神符咒,太岁符咒,化太岁符咒,回心转意符咒,护身符咒,文昌符咒,学业灵符符,开运符咒,转运灵符,桃花符,月老姻缘符咒,偏财符,五鬼运财符咒,化小人符咒,事业符咒,升官符咒,去病符咒,去疾符咒,健康符咒,平安符咒,夫妻和合符,情感和合符咒。
咨询道教符咒 咨询师父微信: sanqingge8
符咒类型如下:
01.财运符-增财运补财库开运 02.太岁符-化解不利顺利度过 03. 回心符-挽回感情增缘复合 04. 护身符-辟邪镇宅转运护身 05. 学业符 -魁星点斗文昌帝君 06. 开运符-开运转运驱除霉运 07. 桃花符-桃花早到月老姻缘 08. 偏财符-五鬼运财偏财运势 09 .小人符-化解小人是非口舌 10 .事业符-事业有成无往不利 11. 去疾符-药王化疾祛病消愈 12. 健康符-身心健康得偿所愿 13. 平安符-诸事顺利健康平安 14 .和合符-夫妻情感姻缘和合 15.定制符-心有所想 专属定制
咨询道教法事 咨询师父微信:sanqingge8
01.化解太岁法事——解太岁、谢太岁 02.升官晋职法事 ——官运亨通提升政绩 03.文昌考试法事—— 开窍聪慧考试顺利 04.偿还阴债法事—— 生债阴宅逢凶化吉 05.开财门补财库—— 增加财运助旺事业 06.助种生基法事—— 病魔缠身增寿增运 07.催子受孕法事—— 生子布阵子女满堂 08.开运转运法事—— 改运天命一帆风顺 09.催财发财法事—— 偏财运势正财持久 10.化解童子法事—— 姻缘顺利仙灵护佑 11.化解小人法事—— 化解小人防人陷害 12.小儿平安法事—— 驱邪回魂活泼健康 13.超度亡灵法事—— 祭奠亲人早登极乐 14.超度宠物法事—— 人类朋友转生脱苦 15.超度婴灵法事—— 打胎坠胎消灾除难 16.祈福许愿法事—— 许愿还愿祈求祈福
本文链接:https://fuzhouwang.org/index.php/post/12253.html
转载声明:本站文章中有转载或采集其他网站内容, 如有转载的文章涉及到您的权益及版权,还麻烦及时联系我们,我们将及时删除,谢谢配合。