Part Number:SN65HVD230
1.实测:230处在仅监听模式时,STM32 MCU在收到Rx引脚信号后,必须第一时间把Rs引脚拉低才能收到正确的总线数据。
2.数据表中的这段话改如何理解呢?
3.如果我的节点在低功耗模式,只需要接收总线的指令,不需要发送数据,那么理想状态是让VP230一直处在仅监听模式,能否实现呢?
Amy Luo:
您好,
今天是周末,周一我将处理您的问题
,
Amy Luo:
您好,
这段话的意思是:在仅监听模式下,驱动电路被关闭,接收电路继续监测总线活动,当总线上出现显性位(总线差分电压>900 mV典型值)时,接收器将此信息传递给其DSP/CAN控制器,该控制器可以反过来激活处于待机状态的电路,即将设备的Rs引脚置逻辑低以激活驱动电路。因此,让SN65HVD230一直处在仅监听模式应该是可以的,我再确认下为什么需要拉低RS才能接收正确的总线数据
,
kang lv:
感谢回复,按照逻辑来说,应该是可以跟半双工的RS485类似,拉高Rs引脚之后处在接收模式,拉低Rs引脚之后进入发送模式(此时也可以接收数据)
,
Amy Luo:
您是使用的SN65HVD230吗?还是其他的器件?正常CAN协议要求接收设备发送ACK
,
kang lv:
1.是的,我使用的正是SN65HVD230。
2.经我们测试,SN65HVD230在休眠状态下能够接收到总线上的显性位,这时候MCU拉低Rs引脚唤醒SN65HVD230,能够正常接收总线数据。
3.基于功耗的考虑,当主机轮询节点时,我想要实现SN65HVD230在休眠状态下完整接收总线数据,这样只有被轮询的节点发送响应就可以了,从而大幅降低系统功耗。
4.实际测试发现SN65HVD230在休眠状态下无法完整接收总线数据,在数据表中也没有明确说明,所以想请教下您,希望能得到肯定的答案,谢谢!
,
Amy Luo:
在仅监听模式下,不需要拉低RS引脚,SN65HVD230是可以只接收数据的。拉低RS,设备就处于高速模式了,肯定能正确接收数据,这是意料之中的。
您是否可以详细描述您看到的异常情况?另外,您可以附上您的原理图吗?
,
kang lv:
1.以下是原理图:
2.以下是我查找的其它CAN收发器的说明,它这里有明确说收到显性位之后需要将收发器切换回高速模式。不知道SN65HVD230是否也是同样的设计逻辑?
3.我的异常:主机发送数据,总线上显性位之后会在中断里边把收发器切换到高速模式(CAN_Transceiver_Work函数),总线上数据能正确接收。
如果总线上显性位之后会不把收发器切换到高速模式(注释掉CAN_Transceiver_Work函数),那么我的节点就接收不到任何数据了。
,
Amy Luo:
SN65HVD230在拉高RS引脚后,即(Listen Only 模式下,是可以正常接收总线数据的。在您的程序里,是否设置了接收总线数据的条件?或者说只有在进入高速模式后才能去接收总线数据?
,
kang lv:
3.我的异常:主机发送数据,总线上显性位之后会在中断里边把收发器切换到高速模式(CAN_Transceiver_Work函数),总线上数据能正确接收。
如果总线上显性位之后会不把收发器切换到高速模式(注释掉CAN_Transceiver_Work函数),那么我的节点就接收不到任何数据了。
区别就是一句代码:拉低Rs或者不拉低Rs
,
Amy Luo:
好的,我正在确认SN65HVD230是不是在接收数据的时候需要发应答ACK才可以,通过您的情况,好像是需要发ACK位,这样对方才知道这边已经接收数据了
,
Amy Luo:
因为只有将RS拉低,SN65HVD230的驱动电路才能激活,才能发生ACK位
,
kang lv:
好的,谢谢您!