2026/5/31 11:58:56
网站建设
项目流程
网站建设首页怎么弄,网站开发宣传方法,网站域名已经被绑定,网站功能优化的意义1.1CAN通讯介绍
参考#xff1a;https://www.kvaser.cn/about-can/can-protocol-tutorial/
CAN#xff08;Controller Area Network 控制器局域网#xff0c;简称CAN或者CAN bus#xff09;是一种功能丰富的车用总线标准。被设计用于在不需要主机#xff08;Host#xff…1.1CAN通讯介绍参考https://www.kvaser.cn/about-can/can-protocol-tutorial/CANController Area Network 控制器局域网简称CAN或者CAN bus是一种功能丰富的车用总线标准。被设计用于在不需要主机Host的情况下允许网络上的单片机和仪器相互通信。它基于消息传递协议设计之初在车辆上复用通信线缆以降低铜线使用量后来也被其他行业所使用。CAN拥有了良好的弹性调整能力可以在现有网络中增加节点而不用在软、硬件上做出调整。除此之外消息的传递不基于特殊种类的节点增加了升级网络的便利性。1.2物理层CAN网络节点就是连接的设备一个CAN控制器一般MCU提供。STM32内部提供1个CAN控制器一个CAN收发器收发器一般需要专门芯片提供。我们开发使用的是PD1050S收发器芯片控制器和收发器之间通过CAN_Tx及CAN_Rx信号线相连收发器与CAN总线之间使用CAN_High及CAN_Low信号线相连CAN网络节点发数据当CAN节点需要发送数据时控制器把药发送的二进制编码通过CAN_Tx发送到收发器。收发器吧这个普通的逻辑电平信号转换为查分信号通过差分CAN_High和CAN_Low线输出到CAN总线网络 差分信号在high和log是相位相反的信号CAN网络节点收数据二通过收发器接受总线上的数据到控制器时则是相反的过程收发器吧总线上收到的CAN_High及CAN_Low信号转换成普通的逻辑电平信号通过CAN_Rx输出到控制器中。CAN总线网络当CAN线上接入多个设备时就构成了CAN总线网络。根据接法不同总线网络分2中闭环总线网络开环总线网络闭环总线网络如图遵循IS011898标准的高速短距离“闭环网络”最大传输距离40m通讯速度最高位1Mbps总线的两端要去有一个“120欧”的电阻 一个也行但是一个信号不好而且实现会更麻烦一些建议两个开环总线网络如图2.2k欧电阻可变经典值是2.2k遵循 ISO11519-2标准的低速远距离“开环网络”最大传输距离1km通讯速度最高位125kbps两根总线是独立的不形成闭环要去每根总线上各串联有一个“2.2k欧”的电阻2.2k是经典值可以变化推荐2.2k差分信号CAN_High及CHAN_Low中走的是一对查分信号 如图传统的单端信号传输一根信号线一根地线差分传输是一种信号传输的技术差分传输在这两根线上都传输信号这两个信号的振幅相同相位相反信号接收端比较这两个电压的差值来判断发送端发送的逻辑状态。在电路板上差分走线必须是等长等宽紧密靠近且在同一层面的两根线差分信号优缺点优点1.空感染能力强干扰噪声一般会等值同时的被加载到两根信号线上而其差值为0即噪声对信号的逻辑意义不产生影响2.能有效抑制电磁干扰EMI由于两根线靠的很近且信号幅值相等这两根线与底线直接的耦合电磁场的幅值也相等同时他们的信号极性相反其电磁场将相互抵消。因此。对外界的电磁干扰也小。缺点差分信号一定要走两根等长等宽紧密靠近且在同一层面的线。对电路板比较小走线比较紧张的情况下给不限带来挑战差分信号线居然这些有限在USB协议485协议以太网协议一次CAN协议的物理层中都使用了差分信号传输CAN中的差分信号以高速CAN协议为例逻辑1隐性电平CAN_High CAN_Low 2.5v电压差VH-VL 0V逻辑0显性电平CAN_High3.5vCAN_Low 1.5v电压差为VH-VL 2V1.3协议层CAN的帧报文种类CAN总线是广播类型的总线。这意味着所有节点都可以侦听到所有传输的报文。无法将报文单独发送给指定节点所有节点都将始终捕获所有报文。但是CAN硬件能够提供本地过滤功能让每个节点对报文有选择性地做出响应。CAN使用短报文 – 最大实用负载是94位。报文中没有任何明确的地址相反可以认为报文是通过内容寻址也就是说报文的内容隐式地确定其地址。CAN总线上有5种不同的报文类型或“帧”数据帧远程帧错误帧过载帧和帧间隔。1数据帧数据帧是最常见的报文类型用于发送单元向接收单元发送数据。2远程帧遥控帧远程帧用于接收单元向具有相同id的发送单元请求发送数据。3错误帧错误帧当检测出错误时向其他单元通知错误的帧。4过载帧过载帧并不常用因为当今的CAN控制器会非常智能化地避免使用过载帧。5帧间隔用于将数据帧及遥控帧与前面的帧分离开来的帧其中错误帧、过载帧、帧间隔都是由硬件自动完成的没有办法用软件来控制。对于一般使用者来说只需要掌握数据帧与遥控帧。数据帧和遥控帧有标准格式与扩展格式。标准格式有11位标识符扩展格式有29位标识符。数据帧介绍有两种数据帧标准帧 和扩展帧标准帧**帧起始Start Of Frame-SOF** 1bit显性信号逻辑0 表示数据帧或远程帧的开始。 只能在总线空闲的时候才可以发送帧起始 **仲裁段Arbitration Field** 包括两部分 标识符位 长度为11位11bitsID10~ID0.按照ID10~ID0的顺序进行传输。 是一个功能性的地址CAN寄售期通过标识符来过滤数据帧。 不同节点的标识符位是不能相同的。 远程发送请求位Remote Transfer Request-RTR 用于区分该帧是数据帧还是远程帧。 显性信号0代表数据帧Data Frame **控制段Control Field一共6位** IDE位Identifier Extension 1位。区分标准格式与扩展格式。 显性电平时表示标准格式 隐性电平时表示扩展格式 R0位 1位。保留位以后使用。 DLC位Data Length Code4位 表示本保温中的数据段含有多少个字节 用于DLC段表示的数字为0~8.**数据段DATA Field** 数据帧的核心内容它是节点要发送的原始信息 由0~8个字节组成 高位先行 **CRC段CRC Field 校验段** 包含2部分 CRC校验码 15bits用于校验传输是否正确 界定符 隐性位表示校验码的结束 **ACK段ACK Field** 包含2部分 ACK确认位 发送端的ACK确认位是隐性位 接收端收到正确的CRC校验位后把这一位置为显性位界定符 1位隐性位用于与后面的帧结束隔开 EOF段 帧结束帧结束段由发送节点发送的7个隐性位表示结束扩展帧扩展帧与标准帧的不同在于仲裁段和控制段其他完全一样。SSRSubstitute Remote Request Bit替代远程请求位RTR隐性信号IDE表示扩展帧还是标准帧 18位扩展IDRTR表示数据帧还是远程帧 R1R0保留位远程帧CAN总线仲裁CAN总线处于空闲状态的时候最先发送消息的单元获得发送权。多个单元同时开始发送时从仲裁段报文id的第一位开始进行仲裁。连续输出显性电平最多的单元可以继续发送即首先出现隐形电平的单元失去最总线的占有权变为接收。即报文id小的优先级高。竞争失败会自动检测总线空闲在第一时间再次尝试发送位时序位同步CAN中体操了位同步的方式来确保通讯时序一帧中包含了很多位CAN把每一位分成4段同步段SS:Synchronization Segment-SS段的大小固定位1Tq-弱通讯节点检测到总线上信号的跳变妍被包含在SS段的范围之内则表示节点与总线的时序是同步的传播时间段PTS:propagation Time Segment-CAN总线上数据的传输会收到各种物理延迟-比如发送单元的发送延长总线上信号的传播延迟接受单元的输入延迟等PTS段就是用来补偿这些因素产生的时间延迟-PTS段长度至少为1个Tq一般1-8个Tq相位缓冲段1PBS1Phase Buffer Segment 1-主要用来补偿边沿阶段的误差-它的时间长度在重新同步阶段的时候可以被自动加长-PBS1段的初始大小可以为1-8Tq相位缓冲段2PBS1Phase Buffer Segment 2-另一个相位缓冲段也是用来补偿编译阶段误差的-它的时间长度在重新同步阶段可以缩短-PBS2段的初始化大小可以为2-8Tq4段的总时间段构成了位时间bit Time就是传输一个位所需的总时间。位时间通测被分为若干等长的时间单元称为时间量化器Time QuantaTq一个Tq的长度可以根据传输速率的需要设置。在STM32的CAN外设中通过设置波特率分频器的值来确定Tq的大小采样点采样点位于PBS1和PBS2的交界处数据同步根据同步方式差异CAN的数据通报分为硬同步和再同步。 硬同步: 当一个节点检测到起始位时它会执行硬同步以便将其内部的时间基准与数据帧时间基准对齐 在硬通报过程中控制器的时间基准会立即调整为与检测到的边沿对齐。 在同步 在检查到总线上的时序与节点使用的时序有相位差时即总线上的跳变沿不在节点时序的SS段范围 通过延长PBS1D段或缩短PBS2段来获得同步所有同步都是有CAN控制器硬件自动完成的。CAN的波特率各个通讯节点越好1个Tq的时间长度已经每一位占据多少个Tq就可以确定CAN通讯的波特率假如上图的1Tq1us而每个数据位由20个Tq组成则传输一位数据需要时间为20us从而每秒可以传输的数据位个数为10六次方/20 50000这个每秒可传说的数据位的个数基围CAN通讯的波特率比如上面的波特率就是50kbps1.2STM32的CAN外设1.2.1CAN外设CAN控制器介绍STM32的芯片中具有bxCAN控制器Basic Extended CAN它支持CAN协议2.0A 和2.0B Active标准。CAN2.0A只能处理标准数据帧且扩展帧的内容会织别错误。而CAN2.0 B Active可以处理标准数据帧和扩展数据帧。CAN2.0 B Passive只能处理标准数据帧而扩展帧的内容会被忽略。该CAN控制器支持最高的通讯速率为1Mb/s可以自动地接收和发送CAN报文支持使用标准ID和扩展ID的报文外设中具有3个发送邮箱发送报文的优先级可以使用软件控制还可以记录发送的时间具有2个3级深度的接收FIFO可使用过滤功能只接收或不接收某些ID号的报文可配置成自动重发不支持使用DMA进行数据收发。1.2.2CAN控制器的3种工作模式CAN控制器有3种工作模式初始化模式正常模式睡眠模式。上电复位后CAN控制器默认会进入睡眠模式作用是降低功耗。当需要将进行初始的时候配置寄存器会进入初始化模式。当需要通讯的时候就进入正常模式。1.2.3CAN控制器的3种测试模式有3种测试模式静默模式、环回模式、环回静默模式。当控制器进入初始化模式的时候才可以配置测试模式。静默模式可以用于检测总线的数据流量。环回模式可以用于自检影响总线。环回静默也是用于自检不会影响到总线。1.2.4功能框图1.2.4.1主动内核含各种控制/状态/配置寄存器可以配置模式、波特率等。在STM32CubeMx中可以非常方便的配置。1.2.4.2发送邮箱用来缓存待发送的报文最多可以缓存3个报文。发送调度决定报文的发送顺序。1.2.4.3接收FIFO共有2个接收FIFO每个FIFO都可以存放3个完整的报文。它们完全由硬件来管理。从而节省了CPU的处理负荷简化了软件并保证了数据的一致性。应用程序只能通过读取FIFO输出邮箱来读取FIFO中最先收到的报文。1.2.4.4接收滤波器过滤器做用对接到的报文进行过滤。最后放入FIFO 0或FIFO 1。当总线上报文数据量很大时总线上的设备会频繁获取报文占用CPU。过滤器的存在选择性接收有效报文减轻系统负担。有2种过滤模式1标识符列表模式它把要接收报文的ID列成一个表要求报文ID与列表中的某一个标识符完全相同才可以接收可以理解为白名单管理。2掩码模式屏蔽位模式它把可接收报文ID的某几位作为列表这几位被称为掩码可以把它理解成关键字搜索只要掩码关键字相同就符合要求报文就会被保存到接收FIFO。如果使能了筛选器且报文的ID与所有筛选器的配置都不匹配CAN外设会丢弃该报文不存入接收FIFO。每个CAN提供了14个位宽可变的、可配置的过滤器组(13~0)。每个过滤器组x由2个32位寄存器CAN_FxR1和 CAN_FxR2组成。说明1当工作于32位屏蔽位模式时FR1保存标识符FR2保存屏蔽。FR2某位是1表示来的ID的这位必须和FR1中对应的位一致FR2某位是0表示ID的这位不关心。2当工作于32位标识符模式时。FR1和FR2分别保存两个标识符。这意味着将来只有两个ID会匹配成功。1.2.4.5STM32种CAN的位时序STM32 外设定义的位时序与我们前面解释的 CAN 标准时序有一点区别。标准时序STM32的位时序把传播时间段和相位缓冲段1做了合并。