本帖最后由 弄丢的猪 于 2022-10-21 15:08 编辑
最近在调CAN模块,遇到一些让我难以理解甚至很奇葩的问题,请赐教。(抱歉我暂发不了图片)
1.FIFO接收时的ID筛选表
看手册要仔细 仔细 仔细呀。在过滤格式A中:RXIDA是从bit1开始的,bit0是空着的。开始总从bit0填充RXID,浪费了不少时间
2.从FIFO中读CAN帧数据问题
FIFO共6级深度队列,新数据是从队尾位置存入的(依次往队首移),读数据始终在队首。 这样会导致设备上电后读取到的前5帧数据全是0,而FIFO中始终有5帧数据读取不到。
3.即便没开回环模式,发送的数据也会被送入接收邮箱,并触发中断
这里用到官方demo:flexcan_interrupt_transfer,把原本的接收ID改为发送ID就能测试。需要两个开发板,或者一个额外的CAN设备。
改这两个地方: FLEXCAN_SetRxMbGlobalMask(EXAMPLE_CAN, FLEXCAN_RX_MB_STD_MASK(txIdentifier, 0, 0));//rxIdentifier
mbConfig.id = FLEXCAN_ID_STD(txIdentifier);//rxIdentifier
|