赛灵思
直播中

王燕

7年用户 161经验值
私信 关注
[问答]

ZC702上的CAN控制器编程不正确该怎么办?

大家好,
我正在使用ZC702(XC7Z020-1CLG484C)评估板并在ZYNQ的CAN控制器上进行工作,但它不能正常工作。当我测试硬件时我可能做错了并不是不可能的但重点是
,我用“xcanps_polled_example.c”(canps v1_01_a),然后是“xcan_polled_example.c”(驱动程序示例应用程序can_v2_00_a - 检查CAN总线通信 - 两个驱动程序都失败了(总线上没有生命迹象) - 当我
试图在XCan_EnterMode函数中将模式改为XCAN_MODE_LOOPBACK到XCAN_MODE_NORMAL。似乎是ZYNQ CAN控制器处于非活动模式或者编程不正确,因为我检查了TXS104E - TJA1040链条工作正常。我已经仔细检查了MIO_PIN_46(slcr)MIO_PIN_47
(slcr),CAN_CLK_CTRL(slcr)初始化期间BSP文件中的寄存器值,ZC702原理图,Xilinx Platform Studio中的引脚分配一切正常..也许驱动程序的示例仅在环回模式下工作?我有
在Xilinxs的文档,论坛中寻找有关此问题的信息 - 无处不在。
有没有人对这个问题有所了解?
想法?
提前致谢。
任何信息都会有帮助。
问候。

回帖(9)

童霏

2019-9-16 13:19:02
大家好,
我已经解决了这个问题。
重点是TJA1040 CAN收发器处于StandBy模式并切换到NORMAL模式,STB引脚需要设置为低电平。
为此,我将连接STB引脚的PS_MIO9的低电平设置为低电平。
在原帖中查看解决方案
举报

陈龙

2019-9-16 13:33:18
不确定我是否可以提供帮助。
我确实移植了can_v2_00_a代码tp u-boot,我可以成功运行selftest代码。
selftest是一个内部环回。
对于外部环回,我使用轮询代码作为基础。
硬件似乎确实有效。
举报

童霏

2019-9-16 13:43:40
感谢您的回复!
但是你是怎么检查它的。
如果您通过说外部环回来表示相同的LOOPBACK模式 - 一切都可以。
在正常模式下,我在总线上没有信号。
我用来测试另一个正常工作的CAN控制器。在ZC702上,只需每隔1秒将CAN帧发送到其他控制器。
要检查ZC702 CAN控制器的内部状态,调用XCan_GetBusErrorStatus函数,它会返回“位错误”。
Normaly即使ZC702也看不到其他CAN控制器 - 上面提到的功能会返回 - ACK错误。
我开始认为ZC702硬件有问题,但要完全检查我手头没有诊断工具。
举报

陈龙

2019-9-16 13:54:49
自从我使用ZC702板以来已经过了几个月。
记错。
我想我的外部环回代码是基于xcan_selftest.c中的内部环回代码。
我将代码参数化为在指定的一个端口实例上发送并在另一个指定的端口实例上接收。
内部环回首先在一个端口上设置XCAN_MODE_LOOPBACK,并将该端口用于发送和接收。
外部环回在两个端口上使用XCAN_MODE_NORMAL,并使用一个端口进行发送,另一个端口用于接收。
然后反转发送和接收端口。
我将两个端***叉连接在一起。
消息从一个端口到达端口。
拉线导致失败。
对我来说,我只需要验证CANBus引脚的连接性。
也许。
SW堆栈不足以与“真正的”CANBus设备通信。
我依稀记得CANBus网络需要一些非常严格的时序考虑因素。
举报

更多回帖

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