ZYNQ7010 CAN的官方例程改为XCANPS_MODE_NORMAL模式,程序没跑通

项目场景:

项目需要用到CAN来进行数据传输:
采用官方例程,为XCANPS_MODE_LOOPBACK自环回模式,改为XCANPS_MODE_NORMAL普通模式,与外部进行收发测试。

问题描述:

原本的自环回模式数据发出接收不经过管脚,现改为普通模式,进行数据收发测试,使用原子哥的领航者开发板,CAN为PL端输出,勾选CAN0为EMIO
勾选CAN0为EMIO
模块设计如图:
模块设计如图
管脚约束:
管脚约束
与外部收发用的是CAN转USB,导入官方例程,把环回模式改为普通模式,循环1s向外发送数据,发现外部无法收到数据
如图


原因分析:

查看文档,采用的是TJA1050芯片,根据模块,约束电压没问题,bit流文件没问题,百思不得其解,用vivado查看两个管脚,有输出,难道是CAN转串口坏了?根据CAN转USB的自检发现,也没有问题,万用表测量H,L端电阻在58,也正常,开始难受,思来想去,觉得还有一种可能,就是频率不对,根据例程,24MHz下,频率为24M/(29+1)*(3+2+15) = 40K
根据例程,24MHz下,频率为24M/(29+1)*(3+2+15) = 40K
查看配置,时钟设为100M,害,原来是你
我的时钟给的是100M
需要重新计算,把TEST_BRPR_BAUD_PRESCALAR改为49,得到100K的波特率
打开CAN转USB,点击自动识别波特率,依旧失败,竟然还有锅?


解决方案:

开始陷入困境,后来想尝试强制让CAN转USB强制设置为100K,进入软件,测试成功,收发数据正常,被设备厂商小工具摆了一道,估计是自动识别频率有问题。

  • 13
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值