本文分析NXP S32K1 FlexCAN的寄存器,加深对其开发、故障定位的了解。
FlexCAN0 base address: 4002_4000h
FlexCAN1 base address: 4002_5000h
FlexCAN2 base address: 4002_B000h
偏置从 0x80 to 0x27F 分配给32个 128-bit message buffers (MBs)。
从上图可以看出,寄存器分为三组:常用组、Pretended Networking组、CAN FD组。
Module Configuration register
全局的系统配置,如操作模式、冻结、RXFIFO使能及软件复位等。
指定模块与CAN bus有关的特征,如位数率、采样点、模式等。
CAN位时间相关的变量配置也可以在 CBT 寄存器中,如果CBT[BTF] 置位,此时CTRL1中这几个位域将变为只读的。
Free Running Timer
16位自由定时器,复位后从0x0 显性计数到0xFFFF,然后回绕。
读它将导致MB解锁。
Rx Mailboxes Global Mask register (RXMGMASK)
MCR[IRMQ] = 0, RXMGMASK 有效。
RXMGMASK用于所有的MB接收过滤,除了MB14,MB15,这两个有自己的接收过滤寄存器。
0b - The corresponding bit in the filter is “don’t care.”
1b - The corresponding bit in the filter is checked
Rx 14 Mask register (RX14MASK)
Rx 15 Mask register (RX15MASK)
Error Counter,
Transmit Error Counter
Receive Error Counter
Transmit Error Counter for fast bits
Receive Error Counter for fast bits
Error and Status 1 register (ESR1)
报告接收、发送过程中监测到的各种错误条件,同样状态和中断源。
Interrupt Masks 1 register (IMASK1)
MB31 to MB0各自的中断使能。
Interrupt Flags 1 register (IFLAG1)
MB31 to MB0各自的中断标志,RXFIFO中断标志。
Control 2 register (CTRL2)
Error and Status 2 register (ESR2)
CRC register (CRCR)
Rx FIFO Global Mask register (RXFGMASK)
CTRL2[RFFN]
Rx FIFO Information register (RXFIR)
CAN Bit Timing register (CBT)