大家好、
以下是客户可能需要您帮助的一些问题:
问题背景:将项目从 280049迁移到280039、使用 MCAN 实现 DCAN 功能、 位域程序方式。
该函数在使用 driverLib 时可以工作、但在使用 位字段时会出现异常。
具体 现象:
由于 地址桥的原因、使用位字段方法读取和写入寄存器数据是错误的。 客户尝试用 BP-16/32替换 MCAN 头文件的 uint16/32。 编译失败。
2.例如,如果使用
HW_RD_FIELD32(baseAddr + MCAN_MCANSS_STAT,MCAN_MCANSS_STAT_MEM_INIT_DONE);,结果为1;但使用位字段方式时,结果为0。
仿真期间寄存器视图的数据不是寄存器的实际数量。 例如、例程读取的寄存器实际值为6、但视图显示8。 客户看到有一个文档提到地址桥引入了地址不对齐。 但他不知道如何正常使用 MCAN 的头文件来实现 MCAN 操作。 他还尝试了32位单片读取和写入、都失败了。
他发现 CAN 的结构在 280049和280039之间是不同的、如下所示:


客户检查了这些信息、发现这将影响编译器解析地址的方式。
问题:
MCAN 是否也使用 CAN 这样的地址桥?
是否还需要专门定义寄存器文件结构?
您能否提供一些使用寄存器实现 MCAN 的例程?
谢谢、此致
耶鲁李