【使用C++开发MCU】06-FlexCAN寄存器分析

概述

本文分析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)。

【使用C++开发MCU】06-FlexCAN寄存器分析
从上图可以看出,寄存器分为三组:常用组、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)

上一篇:码神之路之Mybatis教程


下一篇:django集成Apscheduler