打印

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

[复制链接]
10172|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?怎么复位,我发现那个计数模块不能清零,错误中断无法消除!

使用特权

评论回复
5
IJK| | 2010-9-14 17:01 | 只看该作者
试试:
RCC_APB1PeriphResetCmd(RCC_APB1Periph_CAN1, ENABLE);
RCC_APB1PeriphResetCmd(RCC_APB1Periph_CAN1, DISABLE);

使用特权

评论回复
6
火箭球迷| | 2010-9-14 18:04 | 只看该作者
楼主可以试试,这个方案可行

使用特权

评论回复
7
zangjinlian| | 2013-5-16 09:59 | 只看该作者
IJK 发表于 2010-9-14 17:01
试试:
RCC_APB1PeriphResetCmd(RCC_APB1Periph_CAN1, ENABLE);
RCC_APB1PeriphResetCmd(RCC_APB1Periph_CA ...

这个怎么用,放到哪里???

使用特权

评论回复
8
huangxz| | 2013-5-16 22:34 | 只看该作者
是不是CAN总线过载了啊

使用特权

评论回复
9
zxm19820916| | 2013-5-17 13:59 | 只看该作者
我碰到过,can离线后不能自动恢复。我设置了ABOM位为1,不能自动恢复。
所以我设置位为0,先请求can进入初始化模式,然后再退出该模式,就可以恢复了。

使用特权

评论回复
10
hawksabre| | 2013-5-17 19:20 | 只看该作者
不是很了解   楼主   帮你顶一个   没帮上忙   对不住

使用特权

评论回复
11
huangxz| | 2013-5-17 19:56 | 只看该作者
zxm19820916 发表于 2013-5-17 13:59
我碰到过,can离线后不能自动恢复。我设置了ABOM位为1,不能自动恢复。
所以我设置位为0,先请求can进入初 ...

can总线不会那么轻易的离线,不过无法发送确实很奇怪,ECU发送那么大的数据量,也没出现发不出去的情况啊

使用特权

评论回复
12
zxm19820916| | 2013-5-20 15:01 | 只看该作者
huangxz 发表于 2013-5-17 19:56
can总线不会那么轻易的离线,不过无法发送确实很奇怪,ECU发送那么大的数据量,也没出现发不出去的情况啊 ...

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

使用特权

评论回复
13
gracewall| | 2014-6-17 09:21 | 只看该作者
zxm19820916 发表于 2013-5-20 15:01
如果是多个站点发送,一个站点接收,比较容易出现错误计数增加到255,从而导致离线。不过我不知道为什么 ...

您好:
    我这边也遇到一个问题,也是发送不出去,想知道一下,当tec满了之后,你重启CAN配置,然后可以恢复,这过程中数据不是会丢失么?你们是不做通信数据成功率的吗?

使用特权

评论回复
14
zxm19820916| | 2014-6-23 15:58 | 只看该作者
gracewall 发表于 2014-6-17 09:21
您好:
    我这边也遇到一个问题,也是发送不出去,想知道一下,当tec满了之后,你重启CAN配置,然后可 ...

没做。

使用特权

评论回复
15
liguang02| | 2014-8-29 00:15 | 只看该作者
zxm19820916 发表于 2013-5-17 13:59
我碰到过,can离线后不能自动恢复。我设置了ABOM位为1,不能自动恢复。
所以我设置位为0,先请求can进入初 ...

can离线还能接收数据么?能收不能发,说明应该没有离线吧

使用特权

评论回复
16
zxm19820916| | 2014-9-9 10:24 | 只看该作者
liguang02 发表于 2014-8-29 00:15
can离线还能接收数据么?能收不能发,说明应该没有离线吧

能收不能发,是处于哪种状态了?

使用特权

评论回复
17
liguang02| | 2014-9-9 13:39 | 只看该作者
zxm19820916 发表于 2014-9-9 10:24
能收不能发,是处于哪种状态了?

我也不知道,求

使用特权

评论回复
18
r207| | 2014-12-16 17:01 | 只看该作者
我也遇到了在通讯一段时间后能收不能发的问题了,  4个点大量数据互发,五六个小时后, 其中一个节点出现能收不能发的问题 , 说下后来是怎么解决的好么

使用特权

评论回复
19
hkdwcs| | 2015-1-5 16:23 | 只看该作者
你们问题解决没?我遇到同样问题了,使能自动离线恢复就可以了

使用特权

评论回复
20
hkdwcs| | 2015-1-5 16:24 | 只看该作者
否则就需要按照datasheet里面操作,软件解决问题

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

6

主题

16

帖子

0

粉丝