主题中讨论的其他器件:SN65HVD232、 TM4C123
工具/软件:Code Composer Studio
我一直致力于获取外设库中包含的 simple_tx 和 simple_Rx 的示例代码并使其正常运行、并遇到了阻碍。 毫无疑问,我做了一些错误的事情,但我不能为我的生活弄清楚它是什么。
硬件:
2个 TM4C123GXL LaunchPad
- 2个 SN65HVD232具有120 Ω 终端电阻器的 CAN 收发器。
代码:
在外设库中提供的 simple_tx 和 simple_Rx。
IDE 是 Code Composer Studio V7.4、使用 TI v16.9.8.LTS 编译器
最初、我运行代码块库而不进行任何修改、保存了将 TX/Rx 更新为 PE4和 PE5、并动态分配中断。 这导致同一消息的持续传输。 中断将持续触发、与程序顶部指示的行为不同、"消息数据"和"总计数"将异步递增。
*讯息传输在第一个结束后立即开始。
我找到了一种解决方法。 在 中断结束时插入 CANMessageClear (CAN0_BASE、1);命令。 这可防止在 主 while 循环中再次调用 CANMessageSet 之前重新发送消息。 我必须修改供应商示例代码以使其工作、而不仅仅是为硬件配置端口、这似乎很奇怪。 我在这里缺少什么吗?
PRObelm 2、我没有找到解决方法。
simple_Rx、此代码触发消息对象中断、因此它确认已收到消息。 但是,它打印出来的消息 ID 始终与装载到 msgid 的消息对象中的内容完全相同。
IE:如果我将 msgid 设置为0,以便它接收任何消息,它将在收到消息时始终打印 ID 0。 如果我加载0x0002 (但将掩码保留为0)、那么它始终打印 ID 0x00000002、而不管它应该接收到的消息 ID 是什么。
无论我如何配置 ID 和消息数据、它始终返回0作为消息长度和数据。


