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 PCLK~q =(BRP[9:0]+1)×t
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文章
881浏览量
40300 -
数据传输
+关注
关注
9文章
1882浏览量
64565 -
CAN
+关注
关注
57文章
2744浏览量
463630
发布评论请先 登录
相关推荐
评论