大家好,我使用stm32can初始化时是,正常模式,发送不成功就重新发送。
当其他节点的发送数据量较小时,系统工作正常。
但是其他节点数据量大,stm32就发送不出去了,debug发现,发送邮箱3个都是满的,邮箱0出现CAN_TSR的TERR0被置位。同时CAN的Error Counter中TEC=0xff,但是LEC中却显示 No Error,在这个过程中,stm32居然能正常接收数据?却一直不能正常发送数据,即便是总线空闲。
真是奇怪,看了下,BOFF,EPVF,EWGF都被置位了。
我是否需要将这些被置位的清零,同时将TEC计数清零,来恢复can节点。
这个如何办那
我需要系统在出现tec计数超值的情况下,仍然继续发送数据,要不然会导致其他节点工作不正常
APB?怎么复位,我发现那个计数模块不能清零,错误中断无法消除!
试试:
RCC_APB1PeriphResetCmd(RCC_APB1Periph_CAN1, ENABLE);
RCC_APB1PeriphResetCmd(RCC_APB1Periph_CAN1, DISABLE);