用SAM9260外扩SJA1000实现CAN总线通讯,SJA1000是地址数据复用的总线,所以在中间加上CPLD实现逻辑变换,现在CPLD模拟SJA1000的读写时序基本正确,但是在向SJA1000第4或第5寄存器(可读写)写数据后,再读取出来,以检查读写是否正确。这过程中发现8位数据总线的第0位和第4位始终是0,排队这两位被强制拉低。根据示波器看,这两位在接收到写的1数据后,返回还是0,其他位,示波器都可以看出写1,读取返回1这一过程。请问这是什么原因?我的理解是8位并行总线,要读取和采样总线数据应该是同步的,在SJA1000收到数据正确的时候,为什么返回数据有的位不对?
帮忙看看,什么原因。谢谢! |