TI中文支持网
TI专业的中文技术问题搜集分享网站

280049C 寄存器CanbRegs.CAN_IF1MCTL.bit.DLC 值会变

在仿真中,右边的图是我赋值后的CanbRegs.CAN_IF1MCTL寄存器的值,表示数据长度为4,但是经过发送数据后发现值变成0,如左图。请问什么情况下这个寄存器的值会变(没有写入的情况),上面怎么解决。

发送程序,用的是C2000的例程里面的函数如下;

void CAN_sendMessage(uint32_t base, uint32_t objID, uint16_t msgLen,
const uint16_t *msgData)

仿真发现在上面的函数的如下语句:

msgCtrl = HWREGH(base + CAN_O_IF1MCTL);

//
// Check provided DLC size with actual Message DLC size
//
ASSERT((msgCtrl & CAN_IF1MCTL_DLC_M) == msgLen);

执行是会出错,错误原因是不相等。但是我并没有对CanbRegs.CAN_IF1MCTL.bit.DLC进行其他的操作(只在初始时进行赋值为4),怎么会这样,谢谢

Susan Yang:

从您发布的内容很难推断。您能否分享更多详细信息:

1)您能描述一下您的板子/硬件设置吗?例如,哪个设备或DK(第三方/ Tiva / Stellaris DevKit)正在发送CAN数据,而哪个设备正在接收?还请提供您正在使用的CAN端口。

2)若是可以的话,请您上传一下工程代码

user5234251:

回复 Susan Yang:

你好,是由于我对CAN_IF1MCD进行了一个Bit的操作,它必须要16位一起写入,对于IF1和IF2所有寄存器都得这样操作吗?

user5234251:

回复 Susan Yang:

好的,谢谢解答

Susan Yang:

回复 user5234251:

很高兴能帮到您!

赞(0)
未经允许不得转载:TI中文支持网 » 280049C 寄存器CanbRegs.CAN_IF1MCTL.bit.DLC 值会变
分享到: 更多 (0)