STM32——CAN

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

一、CAN外设简介

1、两个 CAN 与 2.0A 和 B (主动)规范兼容,比特率最高达 1 Mbit/s。

2、它们可接收和发送包含11 位标识符的标准帧和包含 29 位标识符的扩展帧。

3、每个 CAN 有三个发送邮箱,发送报文的优先级可以使用软件控制,还可以记录发送的时间;

4、具有两个3级深度的接收FIFO,28 个共享的可调整筛选器组用于过滤某些ID报文,即可控制只接收或不接收某些ID的报文 (即使只使用一个 CAN,也可使用所有这些)。

5、每个 CAN 都分配有 256 字节的 SRAM。

6、不支持使用DMA进行数据收发。

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

        其中CAN1是主设备,框图中的“存储访问控制器”是由CAN1控制的CAN2无法直接使用访问存储区域,所以使用CAN2的时候必须使能CAN1外设的时钟

二、CAN控制内核

        CAN控制内核包含了控制和状态寄存器以及筛选器寄存器:

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

1、主控制寄存器(CAN_MCR)

主控制寄存器 CAN_MCR 负责管理 CAN 的工作模式,它使用以下寄存器位实现控制:

(1) DBF :调试冻结 (Debug freeze)   
0:调试期间 CAN 处于工作状态。
1:调试期间 CAN 处于接收/发送冻结状态。禁止收发时仍可正常访问/控制接收 FIFO中的数据。

        这两种状态是当 STM32芯片处于程序调试模式时才使用的,平时使用并不影响,我们一般调试时也是需要CAN处于工作状态的,因此这里配置为 0 .

(2)TTCM:时间触发通信模式 (Time triggered communication mode)
0:禁止时间触发通信模式。
1:使能时间触发通信模式。                                                                                                                  它用于配置 CAN 的时间触发通信模式,CAN外设内部有个自己的定时器,在使能此模式下,CAN会使用它内部的定时器产生时间戳,并把它保存在CAN_RDTxR、CAN_TDTxR 寄存器中。利用它可以实现 ISO 11898-4 CAN 标准的分时同步通信功能。

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

        CAN外设内部的定时器是16位的,发送时其定时器值存储 CAN_TDTxR 寄存器中 TIME[15:0] 中。在发送帧时,会在进行 SOF(帧起始) 发送时对此字段进行捕获,然后将捕获到的 16 位定时器值作为发送时间戳。

        只有硬件处于时间触发通信模式(CAN_MCR 寄存器的 TTCM 位置 1)时,TGT 位才会被激活。 该位激活就代表着:在发送帧中包含的数据时,会将 8 个字节数据的最后两个数据字节替换为发送时间戳 TIME[15:0] 的值。即数据字节 7 替换为TIME[7:0],数据字节 6 替换为TIME[15:8]。注意:DLC 必须编程为 8,才能通过 CAN 总线发送这两个字节。

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

在接收时,CAN_RDTxR寄存器中的 TIME[15:0] 存储着定时器的值,在检测 SOF(帧起始)时就会捕获此字段的值将其作为接收时间戳。

(3)ABOM :自动的总线关闭管理 (Automatic bus-off management)

        当节点检测到它发送错误或接收错误超过一定值时,会自动进入离线状态,在离线状态中,CAN不能接收或发送报文。处于离线状态的时候,可以软件控制恢复或者直接使用这个自动离线管理功能。

        置 0 时,需要软件先发出一个请求后,一旦监测到 128 次连续 11 个隐性位,并且软件将 CAN_MCR 寄存器的 INRQ 位先置 1 再清零,即退出离线状态。                                                              置 1 时,一旦监测到 128 次连续 11 个隐性位,即通过硬件自动退出离线状态。

(4)AWUM : 自动唤醒模式 (Automatic wakeup mode)
        此位控制 CAN 硬件在睡眠模式下接收到消息时的行为。
0:通过软件将 CAN_MCR 寄存器的 SLEEP 位清零后,退出睡眠模式。
1:一旦监测到 CAN 消息,即通过硬件自动退出睡眠模式。

(5)NART : 禁止自动重发送 (No automatic retransmission)
0:CAN 硬件将自动重发送消息,直到根据 CAN 标准消息发送成功。
1:无论发送结果如何(成功、错误或仲裁丢失),消息均只发送一次。

(6)RFLM : 接收 FIFO 锁定模式 (Receive FIFO locked mode)
0:接收 FIFO 上溢后不锁定。接收 FIFO 装满后,下一条传入消息将覆盖前一条消息。
1:接收 FIFO 上溢后锁定。接收 FIFO 装满后,下一条传入消息将被丢弃。

(7)TXFP : 发送 FIFO 优先级 (Transmit FIFO priority)
        此位用于控制在几个邮箱同时挂起时的发送顺序。
0:优先级由消息标识符确定
1:优先级由请求顺序(时间顺序)确定

二、位时序与波特率

1、位时序

STM32外设定义的位时序与我们前面解释的 CAN 标准时序有一点区别:

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

STM32的 CAN外设位时序中只包含 3段,分别是同步段 SYNC_SEG、位段 BS1 及位段 BS2:

同步段 (SYNC_SEG):位变化应该在此时间段内发生。它只有一个时间片的固定长度(1 x tq)。

位段 1 (BS1):定义采样点的位置。它包括 CAN 标准的 PROP_SEG 和 PHASE_SEG1。其持续长度可以在 1 到 16 个时间片之间调整,但也可以自动加长,以补偿不同网络节点的频率差异所导致的正相位漂移。

位段 2 (BS2):定义发送点的位置。它代表 CAN 标准的 PHASE_SEG2。其持续长度可以在 1 到 8 个时间片之间调整,但也可以自动缩短,以补偿负相位漂移。

再同步跳转宽度 (SJW): 定义位段加长或缩短的上限。它可以在 1 到 4 个时间片之间调整。

2、波特率

单个时间片的长度 Tq与 CAN外设的所挂载的时钟总线及分频器配置有关,CAN1和 CAN2 外设都是挂载在 APB1总线上的,而位时序寄存器 CAN_BTR中的 BRP[9:0]寄存器位可以设置 CAN外设时钟的分频值 ,所以:Tq = (BRP[9:0]+1) x T PCLK ;其中的 PCLK指 APB1时钟。

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

三、CAN发送邮箱

        CAN外设一共有三个发送邮箱,即最多可以缓存3个待发送的报文。每个发送邮箱中包含有标识符寄存器 (CAN_TIxR)、数据长度控制和时间戳寄存器 (CAN_TDTxR)、数据低位寄存器 (CAN_TDLxR) 、邮箱数据高位寄存器 (CAN_TDHxR)。

四、CAN接收FIFO

        CAN外设一共有2个接收FIFO,每个FIFO中有3个接收邮箱,即最多可以缓存6个接收到的报文。当接收到报文后时,FIFO的报文计数器会自增,而STM32内部读取FIFO数据之后,报文计数器会自减,通过状态寄存器可获知报文计数器的值,而通过前面主控制寄存器的

        文章来源地址https://www.toymoban.com/news/detail-606500.html

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

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

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

相关文章

  • 【单片机毕设选题】stm32实现车牌识别系统 -物联网 嵌入式 单片机

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

    2024年02月20日
    浏览(55)
  • 单片机项目分享 stm32机器视觉的人脸识别系统 - 单片机 物联网 嵌入式

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    2024年02月20日
    浏览(48)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包