STM32 CAN通讯的基本知识及硬件设计


原标题:STM32 CAN通讯的基本知识及硬件设计
一、STM32 CAN通讯的基本知识
1. CAN通讯概述
CAN(Controller Area Network,控制器局域网络)是一种国际标准的串行通信协议,由德国BOSCH公司开发,并最终成为国际标准(ISO11519以及ISO11898)。它是国际上应用最广泛的现场总线之一,具有高可靠性和多主控制等特点,广泛应用于汽车电子、工业自动化等领域。
2. CAN协议帧类型
CAN协议定义了多种类型的帧,其中数据帧是最常用且复杂的帧类型。数据帧一般由7个段构成,包括帧起始、仲裁段、控制段、数据段、CRC段、应答段和帧结束。具体说明如下:
* **帧起始(SOF)**:1bit,显性信号,表示数据帧(或远程帧)的开始。 * **仲裁段**:包括标识符位(Identifier field-ID)和远程发送请求位(Remote TransferRequest,RTR)。标准帧的ID位是11位,范围是0x000~0x7FF;而扩展帧的ID是29位。ID决定报文的优先级高低,也决定拓扑结构的节点是否接收此ID的帧数据。远程发送请求位用于区分该帧是数据帧还是远程帧,显性信号(0)代表数据帧,隐性信号(1)代表远程帧。 * **控制段**:标准帧中由扩展标识符位(Identifier Extension bit-IDE,1bit)、保留位0(Reseved bit0-r0,1bit)、数据长度编码位(Data Length Code-DLC,4bits)组成;扩展帧由两个保留位(Reseved bit,2bit)、数据长度编码位(Data Length Code-DLC,4bits)组成。 * **数据段**:发送数据的内容,最多8个字节(64bit),实际长度会写到前面的数据长度编码位DLC里。 * **循环校验段(CRC Field)**:包括循环校验序列和界定符。循环校验序列用于校验传输是否正确。 * **确认段(ACK Field)**:包括确认位和界定符。确认位在节点收到正确的CRC序列时,发送端的ACK位被置位。 * **帧结束(End of Frame-EOF)**:7位长度,隐性信号,表示帧的结束。
3. CAN通讯物理层
CAN总线物理层主要有两种形式:
* 一种是遵循ISO11898标准的高速、短距离“闭环网络”,总线最大长度为40m,通信速度最高为1Mbps,总线的两端各要求有一个“120欧”的电阻。 * 另一种是遵循ISO11519-2标准的低速、远距离“开环网络”,最大传输距离为1km,最高通讯速率为125kbps,两根总线是独立的、不形成闭环,要求每根总线上各串联有一个“2.2千欧”的电阻。
4. CAN通讯节点组成
CAN通讯节点由一个CAN控制器及CAN收发器组成。控制器与收发器之间通过CAN_Tx及CAN_Rx信号线相连,收发器与CAN总线之间使用CAN_High及CAN_Low信号线相连。这种差分信号传输方式具有抗干扰能力强、能有效抑制电磁干扰、时序定位精确等优点。
5. STM32 CAN控制器简介
STM32系列微控制器内置了CAN控制器,支持CAN 2.0A和CAN 2.0B Active版本协议。其中,CAN 2.0A只能处理标准数据帧,扩展帧的内容会识别为错误;CAN 2.0B Active则可以处理标准数据帧和扩展数据帧。STM32的CAN控制器通过硬件自动处理帧格式、错误检测、自动重传等功能,降低了CPU处理CAN通信的开销。
二、STM32 CAN通讯的硬件设计
1. 硬件电路设计
在进行STM32 CAN通讯的硬件设计时,需要考虑CAN控制器的引脚配置、时钟开启等前置工作。此外,还需要根据应用需求选择合适的CAN收发器,并将其与STM32的CAN控制器正确连接。同时,在CAN总线的两端需要接入120欧的终端电阻,以匹配总线阻抗,减少回波反射,提高数据通信的抗干扰能力以及可靠性。
2. 波特率配置
波特率是指每秒传输的位数,是CAN通讯中的一个重要参数。在STM32中,可以通过设置位时序参数(如同步段、传播段、相位缓冲段等)来确定合适的波特率。这些参数的设置会影响到CAN通讯的可靠性和实时性,因此需要根据具体的应用需求进行配置。
3. 过滤器配置
STM32的CAN控制器提供了多个可配置的过滤器组,用于筛选接收到的报文。通过配置过滤器的模式、位宽、标识符等参数,可以确定哪些报文可以被接收,哪些报文需要被忽略。这有助于减少CPU处理CAN通信的开销,并提高系统的实时性。
4. 发送和接收流程
在STM32中进行CAN通讯时,发送和接收流程是关键的部分。发送流程包括选择一个空置的邮箱、设置报文的ID、数据长度以及要发送的数据、请求发送等步骤。接收流程则包括配置过滤器、等待接收中断或轮询接收FIFO的状态、读取接收到的报文等步骤。
综上所述,STM32 CAN通讯的基本知识及硬件设计涉及多个方面,包括CAN协议帧类型、物理层特性、通讯节点组成、STM32 CAN控制器简介以及硬件电路设计、波特率配置、过滤器配置和发送接收流程等。在实际应用中,需要根据具体的需求和场景进行选择和配置。
责任编辑:David
【免责声明】
1、本文内容、数据、图表等来源于网络引用或其他公开资料,版权归属原作者、原发表出处。若版权所有方对本文的引用持有异议,请联系拍明芯城(marketing@iczoom.com),本方将及时处理。
2、本文的引用仅供读者交流学习使用,不涉及商业目的。
3、本文内容仅代表作者观点,拍明芯城不对内容的准确性、可靠性或完整性提供明示或暗示的保证。读者阅读本文后做出的决定或行为,是基于自主意愿和独立判断做出的,请读者明确相关结果。
4、如需转载本方拥有版权的文章,请联系拍明芯城(marketing@iczoom.com)注明“转载原因”。未经允许私自转载拍明芯城将保留追究其法律责任的权利。
拍明芯城拥有对此声明的最终解释权。