STM32---CAN

这篇具有很好参考价值的文章主要介绍了STM32---CAN。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

目录

一.CAN协议简介

二.CAN物理层

三.CAN的协议层

1.位时序

2.CAN的报文

四.CAN外设

1.主控制寄存器CAN_MCR

2.位时序寄存器CAN_BTR

3.CAN的发送邮箱 

4.CAN的接收FIFO

5.验收筛选器

五.CAN库函数相关结构体

1.初始化GPIO结构体:

2.初始化CAN结构体

3.发送及接收结构体

4.筛选器结构体

六.写代码

易出错点:


一.CAN协议简介

CAN是Controller Area Network的缩写。它具有高可靠性和错误检查能力,广泛应用在汽车计算机控制系统和环境恶劣,电磁辐射强及振动大的工业环境。

二.CAN物理层

CAN是异步通讯,半双工。有CAN_High和CAN_Low两条通讯信号线共同组成一组差分信号线。

CAN物理层的形式主要分为闭环总线和开环总线网络。

  1. 闭环总线网络:高速,短距离,两端串联120欧的电阻
  2. 开环总线网络:低速,远距离。两根总线独立,不形成闭环,每条线上串联2.2k欧电阻

stm32can,网络,stm32,单片机,嵌入式硬件stm32can,网络,stm32,单片机,嵌入式硬件

 什么是差分信号?差分信号又称差模信号。使用差分信号传输时,需要两根线,这两个信号的振幅相等,相位相反,通过两条线的电压差来表示逻辑0和逻辑1.

差分信号的抗干扰性强,共模噪声完全被抵消。它对外部的电磁干扰可以有效抑制。差分信号的时序定位精准。由于差分信号的这些优点,在USB协议,485协议,以太网协议以及CAN协议的物理层中都使用了差分信号传输。

CAN总线上可以挂载多个节点,节点之间的信号经过总线传输。CAN总线对数据内容进行编码,所以网络中的节点数量不受限制,只要总线的负载足够即可,可以通过中继器增强负载。

CAN_Tx和CAN_Rx使用普通的类似TTL的逻辑信号,而CAN_High和CAN_Low是差分信号。收发器起到两种信号相互转换的作用。

在高速CAN协议中,表示逻辑1(隐形电平),电压差为0;表示逻辑0(显性电平),电压差为2V。在CAN协议中,必须使它处于隐形电平或者显性电平。如果同一时间有一个节点是隐形电平(逻辑1),另一个节点是逻辑0(显性电平),类似I2C的线与特性将使它处于显性电平逻辑0的状态。

三.CAN的协议层

CAN没有时钟信号线,节点间使用配置好的波特率进行通讯,还会使用位同步方式来吸收误差。

1.位时序

为了实现位同步,CAN协议把每一个数据位的时序分解成SS,PTS,PBS1,PBS2四段。分解的最小时间单位为Tq。

stm32can,网络,stm32,单片机,嵌入式硬件

信号的采样点在PBS1和PBS2之间。

  •  SS:同步段。当检测到信号跳变沿在SS范围内,则表示节点与总线是同步的,采样点是有效的。SS段固定为1Tq.
  • PTS:这个时间段用来补偿网络的物理延时。
  • PBS1:用来补偿边沿阶段的误差,可以加长。
  • PBS2:用来补偿边沿阶段的误差,可以缩短。

举例说明PBS1和PBS2对于位同步的作用:

        当信号跳变的边沿不在SS段内,而是出现在SS段之前时,可以通过缩短PBS2,使得下一次边沿来临时,落在SS段内;当信号跳变边沿出现在SS段之后时,可以通过加长PBS1,使得下一次边沿来临时,落在SS段内。

2.CAN的报文

(1)有哪些种类?

  • 数据帧:向外发送数据
  • 遥控帧:请求数据
  • 错误帧:通知校验错误,请求重新发送上一个数据
  • 过载帧:通知远端节点本节点尚未做好接收准备
  • 帧间隔:将数据帧和遥控帧与前面的帧分离开来

(2)数据帧的结构?

stm32can,网络,stm32,单片机,嵌入式硬件

  •  帧起始:1个低电平,用于通知各个节点有数据传输,其他节点通过帧起始信号的电平跳变边沿进行硬同步。
  • 帧结束:7个连续的高电平。
  • 仲裁段:主要内容是ID信息。数据帧有标准格式和扩展格式,区别在于ID信息的长度。
  • 控制段
  1. RTR:远程传输请求位。为1,是遥控帧;为0,是数据帧。
  2. IDE:标识符扩展位。为1,是扩展格式;为0,是标准格式。
  3. SRR:用于代替标准格式的RTR,只用于扩展格式。
  4. r0,r1:默认低电平,是保留位。
  5. DLC:数据长度,表示报文中的数据段有多少个字节。 
  • 数据段:发送的数据,MSB先行。
  • CRC:校验码。当出现错误时,它会像发送节点反馈,利用错误帧请求重新发送。
  • ACK:接收节点发送0表示应答。

ID信息在CAN协议中的作用?

  • ID信息决定数据帧发送的优先级。由于线与特性,当总线上同时出现两个节点竞争主权时,ID信息中首先出现低电平的即为优先者。CAN协议不分配中断优先级或者地址,谁可以优先占有总线由信息的重要性决定,也就是ID信息。
  • ID信息决定其他节点是否会接收这个数据帧。因为在CAN总线上数据都是广播出去的,所以在总线上的所有节点都可以收到其他节点的信息。由于CAN控制器大多具有根据ID信息过滤报文的功能,它通过ID信息来分辨是否是自己要接收的报文。

四.CAN外设

1.主控制寄存器CAN_MCR

  • DBF调试冻结:处于程序调试模式才使用。可以设置CAN处于工作模式还是禁止收发状态,禁止收发时仍可以访问接受FIFO中的数据。
  • TTCM时间触发模式:设置CAN的时间触发通信模式。在此模式下,CAN使用它内部定时器产生时间戳,并把它保存在CAN_RDTxR,CAN_TDTxR寄存器中。可以利用它实现标准分时同步通信功能。
  • ABOM自动离线管理:当节点检测到他发送错误或者接受错误超过一定值时,会自动离线管理。离线状态下,不能接收或者发送。
  • AWUM自动唤醒:在使用软件进入睡眠后,如果使用自动唤醒,在检测到总线活动时,会自动唤醒。
  • NART自动重传:当报文发送失败会自动重传直到成功为止。
  • RFLM锁定模式:锁定接收FIFO。锁定之后,当接收FIFO溢出时,会丢弃下一个接收的报文。若不锁定,则会覆盖掉之前的报文。
  • TXFP报文发送优先级的判定方法:当邮箱中有多个报文需要发送时,控制它是根据报文的ID优先级还是报文存进邮箱的顺序来发送。

2.位时序寄存器CAN_BTR

  • SILM:为0,正常模式;为1,静默模式
  • LBKM:为1,允许回环模式;为0,禁止回环模式

CAN有四种工作模式。由位时序寄存器的SILM和LBKM组合控制。

stm32can,网络,stm32,单片机,嵌入式硬件

 静默模式可以用于分析总线上的流量,用于检测。

回环模式可以用于自检。

回环静默模式在热自检的时候使用(自我检查的时候,不会干扰总线)。

在STM32中的位时序:

SYNC_SEG,BS1,BS2三段,采样点位于BS1和BS2交界处。SYNC_SEG的固定长度是1Tq.BS1和BS2的长度SJW可以在位时序寄存器中配置。

波特率:

STM32的CAN1和CAN2挂载在APB1上。APB1总线的最大频率是36MHz。在使用CAN2时,必须打开CAN1的时钟。

stm32can,网络,stm32,单片机,嵌入式硬件

3.CAN的发送邮箱 

CAN外设有三个发送邮箱,即最多可以缓存3个待发送报文。 每个发送邮箱中包含有四个寄存器。

  • 标识符寄存器CAN_TIxR(存储待发送报文的ID,扩展ID,IDE位及RTR位),
  • 数据长度控制寄存器CAN_TDTxR(存储待发送报文的DLC段),
  • 低位数据寄存器CAN_TDLxR(存储数据段的低四个字节内容),
  • 高位数据寄存器CAN_TDHxR(存储高四字节的内容)

发送邮箱的工作过程:当需要发送报文时,把报文分解成各个段存储到不同的寄存器中,并对标识符寄存器的发送请求位置1,即可把数据发送出去。

4.CAN的接收FIFO

CAN外设有2个接收FIFO,每个FIFO中有3个邮箱,即最多可以缓存6个接收报文。当接收到报文时,FIFO报文计数器会自增,当报文被读取之后,计数器会自减。和发送邮箱类似,FIFO有四个寄存器。

  • 标识符寄存器CAN_RIxR(存储接收报文的ID,扩展ID,IDE位及RTR位),
  • 数据长度控制寄存器CAN_RDTxR(存储接收报文的DLC段),
  • 低位数据寄存器CAN_RDLxR(存储数据段的低四个字节内容),
  • 高位数据寄存器CAN_RDHxR(存储高四字节的内容)

5.验收筛选器

STM32F103的CAN外设有14个筛选器组,每组有两个寄存器。CAN1和CAN2共用筛选器。筛选器的作用下,节点只接受需要的报文到自己的FIFO中。筛选器可以调整筛选ID的长度和过滤模式

(1)根据筛选ID长度分类:

  • 32位:STDID[10:0],EXTID[17:0],IDE,RTR
  • 16位:STDID[10:0],EXTID[17:15],IDE,RTR

(2)根据过滤方式分为:

  • 标识符列表模式:要求报文与列表中的ID的每一个标识符相同才接收。
  • 掩码模式:只要报文ID中规定的某些位相同,就会被接收。

筛选尺度寄存器CAN_FS1R的FSCx位可以设置工作在32位还是16位;筛选模式寄存器CAN_FM1R的FBMx位可以设置工作在标识符列表模式还是掩码模式。每组筛选器有2个32位寄存器,分别为CAN_FxR1,CAN_FxR2,用来存储要筛选的ID或者掩码。

stm32can,网络,stm32,单片机,嵌入式硬件

五.CAN库函数相关结构体

1.初始化GPIO结构体:

因为需要使用引脚的复用功能,所以需要打开AFIO时钟使用GPIO_Remap函数对CAN1选择Remap1方案(参考数据手册表32).

stm32can,网络,stm32,单片机,嵌入式硬件

stm32can,网络,stm32,单片机,嵌入式硬件

 stm32can,网络,stm32,单片机,嵌入式硬件

为什么需要使用IO的复用功能?

看STM32的CAN电路原理图,Tx和Rx连接到PB8和PB9上,这两个引脚是在重映射条件下才能作为CAN接口使用的。在使用复用功能重映射的引脚配置时,需要打开AFIO的时钟。

2.初始化CAN结构体

3.发送及接收结构体

4.筛选器结构体

六.写代码

回环模式:用于自测。

stm32can,网络,stm32,单片机,嵌入式硬件

stm32can,网络,stm32,单片机,嵌入式硬件

 stm32can,网络,stm32,单片机,嵌入式硬件

 stm32can,网络,stm32,单片机,嵌入式硬件

 stm32can,网络,stm32,单片机,嵌入式硬件文章来源地址https://www.toymoban.com/news/detail-691417.html

易出错点:

  1. 引脚使用了重映射,需要打开AFIO的时钟,以及进行GPIO_Remap配置。
  2. CAN模式配置中需要使传输速率为1Mbps。注意BS1,BS2,SJW,分频因子的取值。
  3. 筛选器配置,特别是模式的配置,还有IDHigh,IDLow。
  4. 需要配置NVIC,设置中断优先级;打开CAN的接收中断。对应地,需要在it.c文件里写对应的中断服务函数。中断服务函数中需要对接收到的数据进行ID筛选,决定是否接收。

到了这里,关于STM32---CAN的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 单片机项目分享 stm32机器视觉的人脸识别系统 - 单片机 物联网 嵌入式

    🔥 这两年开始毕业设计和毕业答辩的要求和难度不断提升,传统的毕设题目缺少创新和亮点,往往达不到毕业答辩的要求,这两年不断有学弟学妹告诉学长自己做的项目系统达不到老师的要求。 为了大家能够顺利以及最少的精力通过毕设,学长分享优质毕业设计项目,今天

    2024年01月22日
    浏览(84)
  • stm32毕设分享 stm32智能运动计步系统 - 物联网 嵌入式 单片机

    🔥 这两年开始毕业设计和毕业答辩的要求和难度不断提升,传统的毕设题目缺少创新和亮点,往往达不到毕业答辩的要求,这两年不断有学弟学妹告诉学长自己做的项目系统达不到老师的要求。 为了大家能够顺利以及最少的精力通过毕设,学长分享优质毕业设计项目,今天

    2024年02月20日
    浏览(77)
  • 单片机项目分享 基于stm32的便携用电功率统计系统 -物联网 嵌入式 单片机

    🔥 这两年开始毕业设计和毕业答辩的要求和难度不断提升,传统的毕设题目缺少创新和亮点,往往达不到毕业答辩的要求,这两年不断有学弟学妹告诉学长自己做的项目系统达不到老师的要求。 为了大家能够顺利以及最少的精力通过毕设,学长分享优质毕业设计项目,今天

    2024年02月19日
    浏览(113)
  • 嵌入式STM32 单片机 GPIO 的工作原理详解

    STM32的 GPIO 介绍 GPIO 是通用输入/输出端口的简称,是 STM32 可控制的引脚。GPIO 的引脚与外部硬件设备连接,可实现与外部通讯、控制外部硬件或者采集外部硬件数据的功能。 以 STM32F103ZET6 芯片为例子,该芯片共有 144 脚芯片,包括7个通用目的的输入/输出口(GPIO)组,分别为

    2024年02月20日
    浏览(50)
  • stm32毕设分享 stm32单片机的远程WIFI密码锁 - 物联网 嵌入式

    🔥 这两年开始毕业设计和毕业答辩的要求和难度不断提升,传统的毕设题目缺少创新和亮点,往往达不到毕业答辩的要求,这两年不断有学弟学妹告诉学长自己做的项目系统达不到老师的要求。 为了大家能够顺利以及最少的精力通过毕设,学长分享优质毕业设计项目,今天

    2024年02月20日
    浏览(60)
  • stm32毕设分享 基于stm32的便携用电功率统计系统 -物联网 嵌入式 单片机

    🔥 这两年开始毕业设计和毕业答辩的要求和难度不断提升,传统的毕设题目缺少创新和亮点,往往达不到毕业答辩的要求,这两年不断有学弟学妹告诉学长自己做的项目系统达不到老师的要求。 为了大家能够顺利以及最少的精力通过毕设,学长分享优质毕业设计项目,今天

    2024年02月22日
    浏览(62)
  • 【单片机毕设选题】 stm32智能运动计步系统 - 物联网 嵌入式 单片机

    🔥 这两年开始毕业设计和毕业答辩的要求和难度不断提升,传统的毕设题目缺少创新和亮点,往往达不到毕业答辩的要求,这两年不断有学弟学妹告诉学长自己做的项目系统达不到老师的要求。 为了大家能够顺利以及最少的精力通过毕设,学长分享优质毕业设计项目,今天

    2024年02月20日
    浏览(67)
  • 单片机项目分享 stm32机器视觉的口罩佩戴检测系统 - 单片机 物联网 嵌入式

    🔥 这两年开始毕业设计和毕业答辩的要求和难度不断提升,传统的毕设题目缺少创新和亮点,往往达不到毕业答辩的要求,这两年不断有学弟学妹告诉学长自己做的项目系统达不到老师的要求。 为了大家能够顺利以及最少的精力通过毕设,学长分享优质毕业设计项目,今天

    2024年02月22日
    浏览(83)
  • 【单片机毕设选题】Stm32单片机的音乐播放器设计 - 物联网 嵌入式

    🔥 这两年开始毕业设计和毕业答辩的要求和难度不断提升,传统的毕设题目缺少创新和亮点,往往达不到毕业答辩的要求,这两年不断有学弟学妹告诉学长自己做的项目系统达不到老师的要求。 为了大家能够顺利以及最少的精力通过毕设,学长分享优质毕业设计项目,今天

    2024年02月20日
    浏览(52)
  • 单片机项目分享 单片机自动写字机器人设计与实现 - 物联网 嵌入式 stm32

    🔥 这两年开始毕业设计和毕业答辩的要求和难度不断提升,传统的毕设题目缺少创新和亮点,往往达不到毕业答辩的要求,这两年不断有学弟学妹告诉学长自己做的项目系统达不到老师的要求。 为了大家能够顺利以及最少的精力通过毕设,学长分享优质毕业设计项目,今天

    2024年02月21日
    浏览(93)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包