stm32 can发送错误计数TEC=0xff?

[复制链接]
11743|19
 楼主| lpy_ren 发表于 2010-9-13 18:25 | 显示全部楼层 |阅读模式
大家好,我使用stm32can初始化时是,正常模式,发送不成功就重新发送。
当其他节点的发送数据量较小时,系统工作正常。
但是其他节点数据量大,stm32就发送不出去了,debug发现,发送邮箱3个都是满的,邮箱0出现CAN_TSR的TERR0被置位。同时CAN的Error Counter中TEC=0xff,但是LEC中却显示 No Error,在这个过程中,stm32居然能正常接收数据?却一直不能正常发送数据,即便是总线空闲。

真是奇怪,看了下,BOFF,EPVF,EWGF都被置位了。
我是否需要将这些被置位的清零,同时将TEC计数清零,来恢复can节点。
这个如何办那
 楼主| lpy_ren 发表于 2010-9-13 18:28 | 显示全部楼层
我需要系统在出现tec计数超值的情况下,仍然继续发送数据,要不然会导致其他节点工作不正常
IJK 发表于 2010-9-14 14:25 | 显示全部楼层
可以尝试着通过APB来复位CAN 模块
 楼主| lpy_ren 发表于 2010-9-14 15:35 | 显示全部楼层
APB?怎么复位,我发现那个计数模块不能清零,错误中断无法消除!
IJK 发表于 2010-9-14 17:01 | 显示全部楼层
试试:
RCC_APB1PeriphResetCmd(RCC_APB1Periph_CAN1, ENABLE);
RCC_APB1PeriphResetCmd(RCC_APB1Periph_CAN1, DISABLE);
火箭球迷 发表于 2010-9-14 18:04 | 显示全部楼层
楼主可以试试,这个方案可行
zangjinlian 发表于 2013-5-16 09:59 | 显示全部楼层
IJK 发表于 2010-9-14 17:01
试试:
RCC_APB1PeriphResetCmd(RCC_APB1Periph_CAN1, ENABLE);
RCC_APB1PeriphResetCmd(RCC_APB1Periph_CA ...

这个怎么用,放到哪里???
huangxz 发表于 2013-5-16 22:34 | 显示全部楼层
是不是CAN总线过载了啊
zxm19820916 发表于 2013-5-17 13:59 | 显示全部楼层
我碰到过,can离线后不能自动恢复。我设置了ABOM位为1,不能自动恢复。
所以我设置位为0,先请求can进入初始化模式,然后再退出该模式,就可以恢复了。
hawksabre 发表于 2013-5-17 19:20 | 显示全部楼层
不是很了解   楼主   帮你顶一个   没帮上忙   对不住
huangxz 发表于 2013-5-17 19:56 | 显示全部楼层
zxm19820916 发表于 2013-5-17 13:59
我碰到过,can离线后不能自动恢复。我设置了ABOM位为1,不能自动恢复。
所以我设置位为0,先请求can进入初 ...

can总线不会那么轻易的离线,不过无法发送确实很奇怪,ECU发送那么大的数据量,也没出现发不出去的情况啊
zxm19820916 发表于 2013-5-20 15:01 | 显示全部楼层
huangxz 发表于 2013-5-17 19:56
can总线不会那么轻易的离线,不过无法发送确实很奇怪,ECU发送那么大的数据量,也没出现发不出去的情况啊 ...

如果是多个站点发送,一个站点接收,比较容易出现错误计数增加到255,从而导致离线。不过我不知道为什么设置了离线自动恢复,而它没有能够自动恢复,得调用初始化函数,才能正常恢复。
我的操作是,在接收或者发送函数中,检查BOF位和EPV位,如果其中一个位置位了,则调用CAN的初始化配置函数,return。如果只检查BOF位,还是会出现不能恢复通信的情况。所以再检查了EPV位,目前我们的电动汽车控制板CAN通信没有再出现问题。EWG位我没有检查。
具体原因我不是很清楚,希望有人能详细解释。
gracewall 发表于 2014-6-17 09:21 | 显示全部楼层
zxm19820916 发表于 2013-5-20 15:01
如果是多个站点发送,一个站点接收,比较容易出现错误计数增加到255,从而导致离线。不过我不知道为什么 ...

您好:
    我这边也遇到一个问题,也是发送不出去,想知道一下,当tec满了之后,你重启CAN配置,然后可以恢复,这过程中数据不是会丢失么?你们是不做通信数据成功率的吗?
zxm19820916 发表于 2014-6-23 15:58 | 显示全部楼层
gracewall 发表于 2014-6-17 09:21
您好:
    我这边也遇到一个问题,也是发送不出去,想知道一下,当tec满了之后,你重启CAN配置,然后可 ...

没做。
liguang02 发表于 2014-8-29 00:15 | 显示全部楼层
zxm19820916 发表于 2013-5-17 13:59
我碰到过,can离线后不能自动恢复。我设置了ABOM位为1,不能自动恢复。
所以我设置位为0,先请求can进入初 ...

can离线还能接收数据么?能收不能发,说明应该没有离线吧
zxm19820916 发表于 2014-9-9 10:24 | 显示全部楼层
liguang02 发表于 2014-8-29 00:15
can离线还能接收数据么?能收不能发,说明应该没有离线吧

能收不能发,是处于哪种状态了?
liguang02 发表于 2014-9-9 13:39 | 显示全部楼层
zxm19820916 发表于 2014-9-9 10:24
能收不能发,是处于哪种状态了?

我也不知道,求
r207 发表于 2014-12-16 17:01 | 显示全部楼层
我也遇到了在通讯一段时间后能收不能发的问题了,  4个点大量数据互发,五六个小时后, 其中一个节点出现能收不能发的问题 , 说下后来是怎么解决的好么
hkdwcs 发表于 2015-1-5 16:23 | 显示全部楼层
你们问题解决没?我遇到同样问题了,使能自动离线恢复就可以了
hkdwcs 发表于 2015-1-5 16:24 | 显示全部楼层
否则就需要按照datasheet里面操作,软件解决问题
您需要登录后才可以回帖 登录 | 注册

本版积分规则

6

主题

16

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部