博主可否总结过在2812中配置CAN的过程中,具体对哪些寄存器的位操作需要使用影子寄存器?在TI的《eCAN参考指南》中只是说明了“控制和状态寄存器只允许32位访问”,我根据经验和例程大概圈了下,主控制寄存器(CANMC)、TX I/O控制寄存器(CANTIOC)、RX I/O控制寄存器(CANRIOC)、超时控制寄存器(CANTOC)、位-时序配置寄存器(CANBTC)、错误和状态寄存器(CANES)对位操作的时候需要使用影子寄存器,还有几个不是很确定:写覆盖保护控制寄存器(CANOPC)、消息控制寄存器(MSGCTRL或MCF)、超时状态寄存器(CANTOS)等对位操作的时候是否需要使用影子寄存器?烦请博主指点!
在DSP2812 TI公司给的ecan模块的例程中多处使用到ECanaShadow,是因为DSP2812的一些寄存器(如控制寄存器)需要32位访问,不能对位进行操作,如果想向一个单独位进行写操作,编译器可能会使其进入16位访问。所以要引入一个影子寄存器(ECanaShadow)迫使其进行32位访问,把整个寄存器读入一个影子寄存器ECanaShadow (它是一个变量,不是寄存器),然后对相应的位进行位操作,然后再把ECanaShadow 的值整体赋值(复制)回eCAN寄存器。
原文地址:DSP2812 ECan总线中ECanaShadow的理解作者:俊俊