寄存器
基地址
对于 MCMCAN 模块,所有寄存器的前缀为 CAN0_、CAN1_ 或 CAN2_,特定产品变体可能存在相应的模块。 寄存器分为三个不同的部分:
- General Configuration Registers
- User Interface Registers
- Registers within M_CAN
CAN Clock Control Register(CLC)
时钟控制寄存器 CLC 允许程序员根据应用要求调整模块的功能和功耗。 下面的描述显示了在模块的标准接口中实现的时钟控制寄存器功能。 当模块内核连接到 CLC 时钟控制接口时,CLC 控制模块的 f(SYN) 和 f(ASYN) 模块时钟信号、睡眠模式和快速关闭模式。
Module Control Register(MCR)
模块控制寄存器 MCR 包含确定 MCMCAN 模块操作的基本设置。 当且仅当在写访问期间已设置 MCR.CCCE 和 MCR.CI 时,对 MCR 寄存器的最低字节的写访问才有效。 要打开或关闭时钟,必须随后复位 MCR.CCCE 和 MCR.CI 的位。 在这个序列没有发生之前,不能对相应的节点进行写访问。 为了能够更改时钟设置,需要满足以下编程顺序:
uwTemp = CANn_MCR.U;
uwTemp |= (0xC0000000 | CLKSELx);
CANn_MCR.U = uwTemp;
uwTemp &= ~0xC0000000;
CANn_MCR.U = uwTemp;
CANn_MCR |= 0xC0000000;
CANn_MCR &= ~0xC0000000;
CC Control Register i( CCCRi (i=0-3) )
CCCRi 寄存器启用和禁用 CAN 总线参与和基本协议功能。 由于时钟域之间的同步机制,在对 CCCRi 进行写操作后,应回读寄存器,直到将设置值写入寄存器。 请记住,该寄存器还包括受硬件影响的位。
在 MCR 寄存器中启用 CAN 时钟后,应用软件必须等待 10 个主机时钟周期才能访问内核寄存器。 LDMST 或 SWAPMSK.W 指令只能在为该寄存器中的 rwh 位启用位掩码的情况下使用
|