This thread has been locked.
If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.
从280049移植到280039,需要用MCAN实现以前Dcan的内容,采用寄存器方式实现。
用库函数测试发现功能正常,变换成寄存器模式通信异常。
发现039和049关于can结构体定义不一样,如下图,
查询资料发现,这个会影响编译对地址的解析方式。
请问下,mcan和can一样也用了地址桥吗? 是否也需要特殊定义寄存器文件结构体,请问能提供用寄存器实现macn的例程吗?
1、因为地址桥的原因,使用位域方式读写寄存器数据是错误的,我尝试将mcan头文件的uint16 /32 ,全部换成bp-16/32,cmd提示编译失败。
2、比如用例程的的HW_RD_FIELD32(baseAddr + MCAN_MCANSS_STAT,MCAN_MCANSS_STAT_MEM_INIT_DONE)得到的结果是1;而用位域获取结果是0;
3、仿真时寄存器view的数据也不是寄存器实际的数字,比如例程读取寄存器实际值是6,view却显示8;我有看到文档提到地址桥引入了地址错位相关介绍,但不知道怎么正常使用man的头文件来实现macn操作,也尝试过32位整体读写,均失败了。
1、SPRUIW9A
这个是介绍can的ram。
2、e2e.ti.com/.../tms320f280039c-mcan-message-ram-usage
这个是mcan的解释,
3、目前好像只能通过例程的方式实现macn操作,既然280039macn.h中提供了位域定义,按道理应该可以使用?当时我各种尝试都失败了.
发现039和049关于can结构体定义不一样,如下图,
为 CAN 和 CAN-FD(分别为 DCAN 和 MCAN)提供的模块是不同的模块。 f28004x 和 f28003x 的寄存器结构完全不同,不能期望完全匹配。
比如例程读取寄存器实际值是6,view却显示8;
您能否提供更多相关信息以帮助诊断问题? 什么寄存器? 使用什么程序来读取寄存器?
而用位域获取结果是0;
使用了什么命令读取位?