0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

STM32入门学习笔记之CAN通信实验2

jf_78858299 来源:滑小稽笔记 作者:电子技术园地 2023-02-16 14:37 次阅读

18.2 相关寄存器

18.2.1 CAN主控制器:CAN_MCR

31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16
- DBF
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
RESET - TTCM ABOM AWUM NART RFLM TXFP SLEEP INRQ

Bit 16:DBF:调试冻结

0:在调试时,CAN照常工作

1:在调试时,冻结CAN的接收/发送。仍然可以正常地读写和控制接收FIFO

Bit 15:bxCAN软件复位

0:本外设正常工作

1:对bxCAN进行强行复位,复位后bxCAN进入睡眠模式。此后硬件自动对该位清0

Bit 7:时间触发通信模式

0:禁止时间触发通信模式

1:允许时间触发通信模式

Bit 6:自动离线管理

0:离线状态的退出过程是,软件对INRQ位进行置1随后清0后,一旦硬件检测到128次11位连续的隐性位,则退出离线状态

1:一旦硬件检测到128次11位连续的隐性位,则自动退出离线状态

Bit 5:自动唤醒模式

0:睡眠模式通过清除CAN_MCR寄存器的SLEEP位,由软件唤醒

1:睡眠模式通过检测CAN报文,由硬件自动唤醒。唤醒的同时,硬件自动对SLEEP和SLAK位清0

Bit 4:禁止报文自动重传

0:按照CAN标准,CAN硬件在发送报文失败时会一直自动重传直到发送成功

1:CAN报文只被发送1次,不管发送的结果如何

Bit 3:接收FIFO锁定模式

0:在接收溢出时FIFO未被锁定,当接收FIFO的报文未被读出,下一个收到的报文会覆盖原有的报文

1:在接收溢出时FIFO被锁定,当接收FIFO的报文未被读出,下一个收到的报文会被丢弃

Bit 2:发送FIFO优先级

0:优先级由报文的标识符来决定

1:优先级由发送请求的顺序来决定

Bit 1:睡眠模式请求(在复位后该位被置1)

1:可以请求CAN进入睡眠模式,一旦当前的CAN活动结束,CAN就进入睡眠

0:使CAN退出睡眠模式

Bit 0:初始化请求

0:当CAN在接收引脚检测到连续的11个隐性位后,CAN就达到同步,并为接收和发送数据作好准备了。为此,硬件相应地对INAK位清0

1:一旦当前的CAN活动结束,CAN就进入初始化模式。相应地,硬件对INAK位置1

18.2.2 CAN主状态寄存器:CAN_MSR

15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
- RX SAMP RXM TXM - SLAKI WKUI ERRI SLAK INAK

Bit 11:CAN接收电平,该位反映CAN接收引脚的实际电平

Bit 10:上次采样值,CAN接收引脚的上次采样值(对应于当前接收位的值)

Bit 9:接收模式,该位为1表示CAN当前为接收器

Bit 8:发送模式,该位为1表示CAN当前为发送器

Bit 4:睡眠确认中断,当SLKIE=1,一旦CAN进入睡眠模式硬件就对该位置1,紧接着相应的中断被触发软件可对该位清0,当SLAK位被清0时硬件也对该位清0

Bit 3:唤醒中断挂号,当CAN处于睡眠状态,一旦检测到帧起始位,硬件就置该位为1

Bit 2:出错中断挂号,当检测到错误时,CAN_ESR寄存器的某位被置1,如果CAN_IER寄存器的相应中断使能位也被置1时,则硬件对该位置1

Bit 1:睡眠模式确认

0:CAN退出睡眠模式

1:CAN模块正处于睡眠模式

Bit 0:初始化确认

0:CAN退出初始化模式时

1:CAN模块正处于初始化模式

18.2.3 CAN位时序寄存器:CAN_BTR

31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16
SILM LBKM - SJW[1:0] - TS2[2:0] TS1[3:0]
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
- BRP[9:0]

Bit 31:静默模式(用于调试)

0:正常状态

1:静默模式

Bit 30:环回模式(用于调试)

0:禁止环回模式

1:允许环回模式

Bit 25~Bit 24:重新同步跳跃宽度,该位域定义了CAN硬件在每位中可以延长或缩短多少个时间单元的上限,t RJW =t CAN ×(SJW[1:0]+1)

Bit 22~Bit 20:时间段2,该位域定义了时间段2占用了多少个时间单元,t BS2 =t CAN ×(TS2[2:0]+1)

Bit 19~Bit 16:时间段1,该位域定义了时间段1占用了多少个时间单元,t BS1 =t CAN ×(TS1[3:0]+1)

Bit 9Bit 0:波特率分频器,该位域定义了时间单元tq的时间长度,t q =(BRP[9:0]+1)×tPCLK~

18.2.4 CAN发送状态寄存器:CAN_TSR

31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16
LOW2 LOW1 LOW0 TME2 TME1 TME0 CODE[1:0] ABRQ2 - TERR2 ALST2 TXOK2 RQCP2
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
ABRQ1 - TERR1 ALST1 TXOK1 RQCP1 ABRQ0 - TERR0 ALST0 TXOK0 RQCP0

Bit 31,Bit30,Bit 29:邮箱x最低优先级标志

当多个邮箱在等待发送报文,且邮箱x的优先级最低时,硬件对该位置1

Bit 28,Bit 27,Bit 26:发送邮箱x空

Bit 25~Bit 24:邮箱号

当有至少1个发送邮箱为空时,表示下一个空的发送邮箱号。

当所有的发送邮箱都为空时,表示优先级最低的那个发送邮箱号

Bit 23,Bit 15,Bit 7:邮箱x终止发送

Bit 19,Bit 11,Bit 3:邮箱x发送失败

Bit 18,Bit 10,Bit 2:邮箱x仲裁丢失

Bit 17,Bit 9,Bit 1:邮箱x发送成功

Bit 16,Bit 8,Bit 0:邮箱x请求完成

18.2.5 CAN接收FIFOx寄存器:CAN_RFxR

15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
- ROFM FOVR FULL - FMP[1:0]

Bit 5:释放接收FIFO,输出邮箱软件通过对该位置1来释放接收FIFO的输出邮箱。如果接收FIFO为空,那么对该位置1没有任何效果,即只有当FIFO中有报文时对该位置1才有意义。如果FIFO中有2个以上的报文,由于FIFO的特点,软件需要释放输出邮箱才能访问第2个报文,当输出邮箱被释放时,硬件对该位清0

Bit 4:FIFO溢出,当FIFO0已满,又收到新的报文且报文符合过滤条件,硬件对该位置1,该位由软件清0

Bit 3:FIFO满,当FIFO0中有3个报文时,硬件对该位置1,该位由软件清0

Bit 1~Bit 0:FIFO报文数目,表示当前接收FIFO0中存放的报文数目

每当1个新的报文被存入接收FIFO0,硬件就对FMP0加1

每当软件对RFOM位写1来释放输出邮箱,FMP就被减1,直到其为0

18.2.6 CAN过滤器主控寄存器:CAN_FMR

15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
- FINIT

Bit 0:过滤器初始化模式

0:过滤器组工作在正常模式

1:过滤器组工作在初始化模式

18.2.7 CAN过滤器模式寄存器:CAN_FM1R

31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16
- FBM[27:16]
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
FBM[15:0]

Bit 29~Bit 0:过滤器模式

0:过滤器组x的2个32位寄存器工作在标识符屏蔽位模式

1:过滤器组x的2个32位寄存器工作在标识符列表模式

18.2.8 CAN过滤器位宽寄存器:CAN_FS1R

31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16
- FSC[27:16]
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
FSC[15:0]

Bit 29~Bit 0:过滤器位宽设置

0:过滤器位宽为2个16位

1:过滤器位宽为单个32位

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 通信协议
    +关注

    关注

    28

    文章

    814

    浏览量

    40145
  • 数据传输
    +关注

    关注

    9

    文章

    1709

    浏览量

    64239
  • CAN
    CAN
    +关注

    关注

    57

    文章

    2669

    浏览量

    462576
收藏 人收藏

    评论

    相关推荐

    介绍一下stm32F103C8T6的can总线通信实验

    本篇文章介绍一下stm32F103C8T6的can总线通信实验需要两块stm32F103C8T6板子can
    发表于 08-19 06:29

    串口通信实验分享

    实验四、串口通信实验​ 自律学习坚强 ,拒绝迷茫。作者:行走的皮卡丘时间:2021/4/4喜欢就去追,这个红灯等不到,说不定下一个红灯等到了,嘻嘻!!!!!!!文章目录实验四、串口
    发表于 01-14 09:08

    如何在F103环境下进行UART通信实验和RS232通信实验

    stm32串口通信实验UART通信实验(通用异步收发器)UART串口通信原理:UART的通信过程实验
    发表于 02-17 07:17

    CAN通信实验报文对象的FIFO缓冲器应用

    关键词 CAN报文对象的FIFO模式应用摘 要 CAN通信实验
    发表于 11-07 14:18 33次下载

    ALIENTEK_MINISTM32_实验19_无线通信实验

    ALIENTEK MINISTM32 实验19 无线通信实验,很好的资料,快来下载吧
    发表于 02-19 11:40 12次下载

    CAN通信实验

    CAN通信实验
    发表于 03-30 16:48 0次下载

    STM32学习笔记--CAN

    目录:一、CAN通信原理1.CAN通信简介2.CAN通信优点3.
    发表于 11-19 12:21 86次下载
    <b class='flag-5'>STM32</b><b class='flag-5'>学习</b><b class='flag-5'>笔记</b>--<b class='flag-5'>CAN</b>

    STM32CubMX自学笔记(七)—CAN通信实验

    STM32CubMX自学笔记(七)—CAN通信实验主要介绍由于项目需求要用到CAN通信协议,因此
    发表于 12-04 18:21 11次下载
    <b class='flag-5'>STM32</b>CubMX自学<b class='flag-5'>笔记</b>(七)—<b class='flag-5'>CAN</b><b class='flag-5'>通信实验</b>

    Can通信接口学习笔记

    Can通信接口学习笔记
    发表于 12-08 16:36 26次下载
    <b class='flag-5'>Can</b><b class='flag-5'>通信</b>接口<b class='flag-5'>学习</b><b class='flag-5'>笔记</b>

    STM32 串口通信实验

    stm32串口通信实验UART通信实验(通用异步收发器)UART串口通信原理:UART的通信过程实验
    发表于 12-20 19:26 15次下载
    <b class='flag-5'>STM32</b> 串口<b class='flag-5'>通信实验</b>

    实验四、串口通信实验

    实验四、串口通信实验​ 自律 学习
    发表于 01-14 10:09 2次下载
    <b class='flag-5'>实验</b>四、串口<b class='flag-5'>通信实验</b>

    STM32入门学习笔记485通信实验

    485是属于OSI模型物理层的电气标准,属于2线制,半双工,多点通信标准,485总线采用两根线路的电压差来传递信号,485两根线路名称为A和B,当线路A与线路B的电压差为+
    的头像 发表于 02-16 14:30 3960次阅读
    <b class='flag-5'>STM32</b><b class='flag-5'>入门</b><b class='flag-5'>学习</b><b class='flag-5'>笔记</b><b class='flag-5'>之</b>485<b class='flag-5'>通信实验</b>

    STM32入门学习笔记CAN通信实验1

    CAN是Controller Area Network的缩写,最初是专门用于汽车网络的通信协议,与485协议相似,CAN也是一种2线制,采用两根线的电压差进行数据传输的协议,随着
    的头像 发表于 02-16 14:37 1611次阅读
    <b class='flag-5'>STM32</b><b class='flag-5'>入门</b><b class='flag-5'>学习</b><b class='flag-5'>笔记</b><b class='flag-5'>之</b><b class='flag-5'>CAN</b><b class='flag-5'>通信实验</b>1

    STM32入门学习笔记CAN通信实验3

    CAN是Controller Area Network的缩写,最初是专门用于汽车网络的通信协议,与485协议相似,CAN也是一种2线制,采用两根线的电压差进行数据传输的协议,随着
    的头像 发表于 02-16 14:37 888次阅读

    STM32入门学习笔记CAN通信实验4

    CAN是Controller Area Network的缩写,最初是专门用于汽车网络的通信协议,与485协议相似,CAN也是一种2线制,采用两根线的电压差进行数据传输的协议,随着
    的头像 发表于 02-16 14:37 1000次阅读