CAN的MSR寄存器的INAK位无法跳转到0

2019-07-21 04:14发布

    /* Request leave initialisation */
    CANx->MCR &= ~(uint32_t)CAN_MCR_INRQ;

   /* Wait the acknowledge */
   wait_ack = 0;

   while (((CANx->MSR & CAN_MSR_INAK) == CAN_MSR_INAK) && (wait_ack != INAK_TIMEOUT))
   {
     wait_ack++;
   }


在这一步的时候wait_ack总是超时,然后无法跳转。
手册上说:“硬件需要在CAN的RX引脚上检测到连续的11 位隐性位。”然后硬件自己跳转。
很奇怪这11位隐性位是收发器(我用的是AU5790)发送的还是我接收端那边负责发送呢?
或者存在什么其他的问题?
拜托各位!
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
4条回答
异曲
1楼-- · 2019-07-21 08:57
 精彩回答 2  元偷偷看……
正点原子
2楼-- · 2019-07-21 08:57
帮顶.....
费翔
3楼-- · 2019-07-21 14:49
我遇到了同样的问题,我的接收引脚没有被拉高为什么还是wait_ack超时
stm32F042
4楼-- · 2019-07-21 19:12
我也遇到了同样的问题,请教一下怎么解决的,我弄了两三天啊,不知道错哪了

一周热门 更多>