打印

sn65hvd230待机模式下无法接收问题

[复制链接]
2082|4
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
BitFu|  楼主 | 2018-1-21 13:53 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
一个CAN通信项目由于需要低功耗就选了有待机功能的接口芯片sn65hvd230,但做出来后CAN网络当所有节点都处于待机模式时其中一个节点发送数据其余节点均接收不到,但在网络中有一个节点处于工作模式(高速或斜率)时其它待机的节点就能收到数据,起初我想用一个固定“引子”节点(常处于工作模式的特殊节点)来解决问题,可是当节点数量增加时这种方法也不太管用了,时常出现有的节点收不到数据,能否帮助分析一下原因,谢谢!

下面是TI社区上的TI员工回复
(“待机模式的话,driver  switch Off,receiver 保持active,所以如果网络中所有节点都处于待机状态是没法发送数据的。一种一个节点处于正常工作模式的话,driver  active,其他处于待机模式的节点receiver 仍保持active,所以能接收到数据。”)

早知如此就用485了。哎。

相关帖子

沙发
BitFu|  楼主 | 2018-1-21 13:59 | 只看该作者
又发现当总线上多挂一个230使其处于工作状态,但这个230不接CAN控制器的话也一样所有节点都不能接收数据包,说明这个和CAN协议有关,有没有解决办法呢。

使用特权

评论回复
板凳
leihen0525| | 2018-1-22 17:07 | 只看该作者
你这很明显没有用过CAN,CAN收发器有一个睡眠引脚,当系统有睡眠需求,软件控制MCU中的CAN控制器进入睡眠模式,然后在IO口控制CAN收发器进入睡眠模式,CAN唤醒是电平跳动的,当总线有数据的时候,CAN收发器会立刻反馈这个跳动,然后MCU中的CAN控制器会被唤醒,这个时候CAN控制器工作,然后要立刻通过IO唤醒CAN收发器,这个时候就进入正常模式了

使用特权

评论回复
地板
BitFu|  楼主 | 2018-1-23 11:10 | 只看该作者
leihen0525 发表于 2018-1-22 17:07
你这很明显没有用过CAN,CAN收发器有一个睡眠引脚,当系统有睡眠需求,软件控制MCU中的CAN控制器进入睡眠模 ...

谢谢,的确不懂CAN,当初只想当485用,后来预算有限,也没能深入研究,您这里提到的对我非常有价值,但仍然有一个问题,我的系统是总线供电、每个节点要控制在5MA电流以内,同一时刻只能允许一个节点处于发送状态,230发送状态时节点大概30MA电流,假如在所有节点都处于待机时发送一个数据,每个节点都同时转到发送状态的话供电方面就会出问题。不知道您对此有没有一个好的解决办法,再次感谢!

使用特权

评论回复
5
leihen0525| | 2018-1-31 14:30 | 只看该作者
BitFu 发表于 2018-1-23 11:10
谢谢,的确不懂CAN,当初只想当485用,后来预算有限,也没能深入研究,您这里提到的对我非常有价值 ...

正常情况下我们在整车中是这样应用的,在点火IGN OFF 后 通过网络管理协调所有整车CAN节点睡眠 然后所有ECU模块进入低功耗 电流限制在3MA以内 只有当某一个节点被唤醒后 如果有需求对CAN网络发送数据 那么 网络管理会协调所有节点进入唤醒状态 然后 通讯  在这个案例中 有几个注意的问题 第一 当某一个节点 醒来使用CAN网络 那么这个节点CAN收发器和MCU的CAN控制器必须要工作 电流起码消耗几十MA 在发送的这段时间 第二 因为CAN网络是广播的方式 CAN总线上 任何配置 使能报文唤醒的节点 收到CAN报文都会被唤醒 每个被唤醒的 节点都会消耗几十MA 你可以加一下 一个报文 会使电源总线电流消耗 还是很大的 所以 不是你说的 那种 只要网络上 有一个报文存在 那么其他节点 都不会休眠 都会消耗几十MA 除非 其他节点 关闭 报文使能唤醒 如果关了 你发送报文出去 又有谁收呢

使用特权

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

本版积分规则

194

主题

1053

帖子

3

粉丝