以前一直用stm32做can通信 用STM32板子上的can通信 一直很好用,最近接触at91sam9x35 它的can通信方式和STM32 不一样,一直can接受出现问题?请教几个问题。
1、at91sam9x35 和一个stm32进行can通信 一直没有问题,at91sam9x35 和12个stm32通信 问题就出来了 at91sam9x35的接受can信息有两种模式一种简单模式(接受到第一个can信息 就忽略后来的can信息)一种是覆盖模式(接受到新的信息直接将老信息覆盖掉),看到介绍 傻眼了! 怎么接收信息才能不丢失信息呢?
2、at91sam9x35 上面PDF 介绍说 运用多个邮箱进行轮换方式,置位邮箱控制寄存器(CAN-MCR)中的MTCR 来控制邮箱状态寄存器(CAN_MSR)的MRDY,来继续接受数据,我进行了设置3个邮箱,可不知道怎么设置 CAN-MCR中的MTCR,忙活了一周 也没有能控制好轮询接受。
3、一个can里面有8个邮箱,当中断来临时 判断can状态寄存器 MBx(x=0-7);是否有事件发生 有事件发生就进行can信息读取,用for循环将8个邮箱查找一遍,有信息就读取(1、先查看邮箱模式判断是接受还是发送邮箱,2、读取数据,我的问题主要出现在读取问题上),8个读取后应该置位CAN-MCR中的MTCR,可是不管我怎么置位 都不能连续读取数值了,命名12个从机 我开3个邮箱 或者8个邮箱,只能接受3个或者8个数据,剩下的从机信息就丢失了! 4、at91sam系列的can通信 怎么连续读取数据呢 请高人指点 |