概述
本文分析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组。
常用寄存器分析
MCR
Module Configuration register
全局的系统配置,如操作模式、冻结、RXFIFO使能及软件复位等。
CTRL1
指定模块与CAN bus有关的特征,如位数率、采样点、模式等。
CAN位时间相关的变量配置也可以在 CBT 寄存器中,如果CBT[BTF] 置位,此时CTRL1中这几个位域将变为只读的。
TIMER
Free Running Timer
16位*定时器,复位后从0x0 显性计数到0xFFFF,然后回绕。
读它将导致MB解锁。
RXMGMASK
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
RX14MASK
Rx 14 Mask register (RX14MASK)
RX15MASK
Rx 15 Mask register (RX15MASK)
ECR
Error Counter,
Transmit Error Counter
Receive Error Counter
Transmit Error Counter for fast bits
Receive Error Counter for fast bits
ESR1
Error and Status 1 register (ESR1)
报告接收、发送过程中监测到的各种错误条件,同样状态和中断源。
IMASK1
Interrupt Masks 1 register (IMASK1)
MB31 to MB0各自的中断使能。
IFLAG1
Interrupt Flags 1 register (IFLAG1)
MB31 to MB0各自的中断标志,RXFIFO中断标志。
CTRL2
Control 2 register (CTRL2)
ESR2
Error and Status 2 register (ESR2)
CRCR
CRC register (CRCR)
RXFGMASK
Rx FIFO Global Mask register (RXFGMASK)
CTRL2[RFFN]
RXFIR
Rx FIFO Information register (RXFIR)
RXFIR
CAN Bit Timing register (CBT)