我一直MODBUS的总线,所以对CAN的不是很了解。不过刚才稍微看了下CAN4CTL0的定义,INTTRQ有一个功能,就是包括CAN0IDAR0在内的许多寄存器都要在其为1的情况下才可读写。这功能就好像是读写外部数据时先判断总线是否忙碌一样。
我觉的你应该从CAN的数据格式开始学,这样才能很清楚,CAN的收发、数据验证过程。其实我一直觉的所谓硬件实现现场总线,不过是用内部的硬件把数据按照总线的格式进行打包,从而发送出去,接收后在检验、解码。从根本上来说于用软件来处理数据格式,在通过串口发送接收是一样的,(就像软件的I2C总线、MODBUS一样)。只不过它用硬件的方式实现了软件的处理,节省了CPU开销罢了。晚上我再看看CAN的发送,不过不一定能给你一个肯定的答复。比较有过调S12的AD失败了N次的教训。 |