怎样用STM32CAN总线接口发送和接收数据

阅读: 评论:0

怎样⽤STM32CAN总线接⼝发送和接收数据
CAN协议基础知识
I2C.SPI总线多⽤于短距离传输,协议简单,数据量少,主要⽤于IC之间的通讯,⽽ CAN 总线则不同,CAN(Controller Area Network) 总线定义了更为优秀的物理层、数据链路层,并且拥有种类丰富、简繁不⼀的上层协议。与I2C、SPI有时钟信号的同步通讯⽅式不同,CAN通讯并不是以时钟信号来进⾏同步的,它是⼀种异步通讯,只具有CAN_High和CAN_Low两条信号线,共同构成⼀组差分信号线,以差分信号的形式进⾏通讯。
CAN物理层的形式主要分为闭环总线及开环总线⽹络两种,⼀个适合于⾼速通讯,⼀个适合于远距离通讯。CAN闭环通讯⽹络是⼀种遵循ISO11898标准的⾼速、短距离⽹络,它的总线最⼤长度为40m,通信速度最⾼为1Mbps,总线的两端各要求有⼀个
“120欧”的电阻。来做阻抗匹配,以减少回波反射。
闭环总线⽹络
CAN开环总线⽹络是遵循ISO11519-2标准的低速、远距离⽹络,它的最⼤传输距离为1km,最⾼通讯速率为125kbps,两根总线是独⽴的、不形成闭环,要求每根总线上各串联有⼀个“2.2千欧”的电阻
开环总线⽹络
食用菌生产与加工技术CAN总线上可以挂载多个通讯节点,节点之间的信号经过总线传输,实现节点间通讯。由于CAN通讯协议不对节点进⾏地址编码,⽽是对数据内容进⾏编码,所以⽹络中的节点个数理论上不受限制,只要总线的负载⾜够即可,可以通过中继器增强负载。
CAN通讯节点由⼀个CAN控制器及CAN收发器组成,控制器与收发器之间通过CAN_Tx及CAN_Rx信号线相连,收发器与CAN总线之间使⽤CAN_High及CAN_Low信号线相连。其中CAN_Tx及CAN_Rx
使⽤普通的类似TTL逻辑信号,⽽CAN_High及CAN_Low是⼀对差分信号线,使⽤⽐较特别的差分信号。当CAN节点需要发送数据时,控制器把要发送的⼆进制编码通过CAN_Tx线发送到收发器,然后由收发器把这个普通的逻辑电平信号转化成差分信号,通过差分线CAN_High和CAN_Low线输出到CAN总线⽹络。⽽通过收发器接收总线上的数据到控制器时,则是相反的过程,收发器把总线上收到的CAN_High及CAN_Low信号转化成普通的逻辑电平信号,通过CAN_Rx输出到控制器中。
差分信号
差分信号⼜称差模信号,与传统使⽤单根信号线电压表⽰逻辑的⽅式有区别,使⽤差分信号传输时,需要两根信号线,这两个信号线的振幅相等,相位相反,通过两根信号线的电压差值来表⽰逻辑0和逻辑1。相对于单信号线传输的⽅式,使⽤差分信号传输具有如下优点:
· 抗⼲扰能⼒强,当外界存在噪声⼲扰时,⼏乎会同时耦合到两条信号线上,⽽
接收端只关⼼两个信号的差值,所以外界的共模噪声可以被完全抵消。
· 能有效抑制它对外部的电磁⼲扰,同样的道理,由于两根信号的极性相反,他
防水栓们对外辐射的电磁场可以相互抵消,耦合的越紧密,泄放到外界的电磁能量越
少。
· 时序定位精确,由于差分信号的开关变化是位于两个信号的交点,⽽不像普通
单端信号依靠⾼低两个阈值电压判断,因⽽受⼯艺,温度的影响⼩,能降低时
序上的误差,同时也更适合于低幅度信号的电路。
· 由于差分信号线具有这些优点,所以在USB协议、485协议、以太⽹协议及CAN协议的物理层中,都使⽤了差分信号传输。
CAN协议中的差分信号
CAN协议中对它使⽤的CAN_High及CAN_Low表⽰的差分信号做了规定。以⾼速CAN协议为例,当表⽰逻辑1时(隐性电平),CAN_High 和CAN_Low线上的电压均为2.5v,即它们的电压差V H -V L =0V;⽽表⽰逻辑0时(显性电平),CAN_High的电平为3.5V,CAN_Low线的电平为1.5V,即它们的电压差为V H -V L =2V。
CAN 总线的特点
  CAN 总线⽹络是⼀种真正的多主机⽹络,在总线处于空闲状态时,任何⼀个节点单元都可以申请成为主机,向总线发送消息。其原则是:最先访问总线的节点单元可以获得总线的控制权;多个节点单元同时尝试获取总线的控制权时,将发⽣仲裁事件,具有⾼优先级的节点单元将获得总线控制权。
  CAN 协议中,所有的消息都以固定的数据格式打包发送。两个以上的节点单元同时发送信息时,根据节点标识符(常称为 ID,亦打包在固定的数据格式中)决定各⾃优先级关系,所以 ID 并⾮表⽰数据发送的⽬的地址,⽽是代表着各个节点访问总线的优先级。如此看
入口雨棚
来,CAN 总线并⽆类似其他总线“地址”的概念,在总线上增加节点单元时,连接在总线的其他节点单元的软硬件都不需要改变。
  CAN 总线的通信速率和总线长度有关,在总线长度⼩于 40m 的场合中,数据传输速率可以达到 1Mbps,⽽即便总线长度上升⾄1000m,数据的传输速率仍可达到 50Kbps,⽆论在速率还是传输距离都明显优于常见的 RS232、RS485 和 I2C 总线。
  对于总线错误,CAN 总线有错误检测功能、错误通知功能、错误恢复功能三种应对措施,分别应对于下⾯三点表述:所有的单元节点都可以⾃动检测总线上的错误;检测出错误的节点单元会⽴刻将错误通知给其他节点单元;若正在发送消息的单元检测到当前总线发⽣错误,则⽴刻强制取消当前发送,并不断反复发送此消息⾄成功为⽌。
  CAN 总线上的每个节点都可以通过判断得出,当前总线上的错误时暂时的错误(如瞬间的强⼲扰)还是持续的错误(如总线断裂)。当总线上发⽣持续错误时,引起故障的节点单元会⾃动脱离总线。
  CAN 总线上的节点数量在理论上没有上限,但在实际上收到总线上的时间延时及电⽓负载的限制。降低最⼤通信速率,可以增加节点单元的连接数;反之,减少节点单元的连接数,则最⼤通信速率可以提⾼。
CAN总线的数据通信是以数据帧的格式进⾏的,⽽数据帧⼜是由位场组成的,其中每⼀个位⼜被划分为四段.即SS(SYNC SEG),PTS(PROP SEG--传播时间段),PBS1(PHASE SEG1--相位缓冲段1),PBS2(PHASE SEG1--相位缓冲段2).
帧类型
⽤途
美发镜台数据帧⽤于发送单元向接收单元传送数据的帧
遥控帧⽤于接收单元向具有相同 ID 的发送单元请求数据的帧
错误帧⽤于当检测出错误时向其它单元通知错误的帧
过载帧⽤于接收单元通知其尚未做好接收准备的帧
间隔帧⽤于将数据帧及遥控帧与前⾯的帧分离开来的帧
数据帧的结构图:
图中D表⽰显性电平,R表⽰隐形电平.
ID:⾼位在前,低位在后。
基本ID,禁⽌⾼7位都为隐性,即不能:ID=1111111XXXX。
RTR,远程请求位。0,数据帧;1, 远程帧;
SRR,替代远程请求位。设置为1(隐性电平);
IDE,标识符选择位。0,标准标识符;1,扩展标识符;
盾构机过站电缆架空支架r0,r1:保留位。必须以显现电平发送,但是接收可以是隐性电平。
DLC:数据长度码。0~8,表⽰发送/接收的数据长度(字节)。
IDE,标识符选择位。0,标准标识符;1,扩展标识符;
位时序分解
为了实现位同步,CAN协议把每⼀个数据位的时序分解成SS段、PTS段、PBS1段、PBS2段,这四段的长度加起来即为⼀个CAN数据位的长度。分解后最⼩的时间单位是Tq,⽽⼀个完整的位由8~25个Tq组成。
STM32中的CAN接⼝
STM32的芯⽚中具有bxCAN控制器 (Basic Extended CAN),它⽀持CAN协议2.0A和2.0B标准。该CAN控制器⽀持最⾼的通讯速率为1Mb/s;可以⾃动地接收和发送CAN报⽂,⽀持使⽤标准ID和扩展ID的报⽂;外设中具有3个发送邮箱,发送报⽂的优先级可以使⽤软件控制,还可以记录发送的时间;具有2个3级深度的接收FIFO,可使⽤过滤功能只接收或不接收某些ID号的报⽂;可
配置成⾃动重发;不⽀持使⽤DMA进⾏数据收发。
1. CAN控制内核
2.CAN发送邮箱
3.CAN接收FIFO
4.验收筛选器
STM32的有两组CAN控制器,其中CAN1是主设备,框图中的“存储访问控制器”是由CAN1控制的,CAN2⽆法直接访问存储区域,所以使⽤CAN2的时候必须使能CAN1外设的时钟。
STM32⾄少配备⼀个bxCAN(basic extend can )控制器,⽀持2.0A和2.0B协议,最⾼数据传输速率可达1M bps,⽀持11位标准帧格式和29位扩展帧格式的接收和发送,具备三个发送邮箱和两个接收FIFO,此wa此外还有三级可编程滤波器,STM32的bxCAN⾮常适应CAN总线⽹络y⽹络应⽤发展需求,其主要主要特征如下 :
⽀持CAN协议2.0A和2.0B主动模式
波特率最⾼可达1Mbps
⽀持时间触发通讯功能
数据发送特性:具备三个发送邮箱;发送报⽂的优先级可以通过软件配置,可记录发送时间的时间戳
数据接收特性:具备三级深度和两个接收FIFO;具备可变的过滤器组,具备可编程标识符列表,可配置FIFO溢出处理⽅式,记录接收时间的时间戳
报⽂管理:中断可屏蔽;邮箱单独占有⼀块地址空间,便于提⾼软件效率.
本⽂的实验设计将利⽤STM32 的bxCAN控制器的环回⼯作模式,实现bxCAN控制器的⾃收发过程,并使⽤串⼝设备跟踪监视数据收发情况.
程序流程如下图

本文发布于:2023-07-29 15:48:27,感谢您对本站的认可!

本文链接:https://patent.en369.cn/patent/4/197375.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:总线   发送   节点   信号   单元
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2022 Comsenz Inc.Powered by © 369专利查询检索平台 豫ICP备2021025688号-20 网站地图