ST意法半导体
直播中

甘满盛

7年用户 1291经验值
擅长:386660
私信 关注
[问答]

为什么FlexCAN0在禁用环回模式后其CAN_TX引脚上的数据都消失了呢

我正在研究 SPC560P 探索板。
我已经为 FlexCAN 测试导入了测试应用程序“SPC560Pxx RLACAN Test Application for Discovery”。在这个 FlexCAN0 中使用了环回模式并且它正在工作。
但是在禁用环回模式后,我看不到带有范围的 CAN_TX 引脚上的任何数据。
我配置了:
  • b[0] 作为 CAN0TXD 输出,b[1] 作为  pinmap 向导中的CAN0RXD输入
  • 禁用环回 模式
  • 启用FlexCAN0 使用外部时钟
  • 设置:PressDive =3,PropSeg=2,PSEG1=4,PSEG2=7
在我启动应用程序后,程序卡在传输 while 循环中:
  • while (can_lld_transmit(&CAND1,txmailbox, &txmsg)==CAN_MSG_WAIT){
  • }‍‍‍‍‍‍
似乎can_lld_is_tx_empty 函数返回 FALSE 并且它破坏了 can_lld_transmit函数。
邮箱是否需要任何额外的配置或者我错误地配置了 CAN 时钟?
感谢您的帮助,很抱歉提出了很多问题,但我是 32 位控制器编程的新手。


回帖(1)

徐振方

2022-12-13 11:27:12
在附件中你可以找到一个为 Pictus Discovery 开发的 CAN 项目,其中板上的 CAN 收发器与 CAN 分析器连接(它是基于另一个 SPC5 平台的模块,带有 CAN 收发器,能够捕获 CAN 流并发送它通过串行端口连接到主机 PC,以便在主机上分析 CAN 流)。请在这个项目中检查 CAN 引脚是如何配置的以及 CAN 驱动程序是如何配置的(尤其是波特率)。我可以向您保证这个项目已经在硬件上进行了测试,我们能够在主机上准确捕捉到预期的 CAN 流。
举报

更多回帖

发帖
×
20
完善资料,
赚取积分