你好,
同一电路板上两个SN65HVD230互相通信测试,
第一片 RS引脚通过10k连接到GND,它连接CAN1
第二片RS引脚通过10k连接到3.3V,它连接CAN2
CAN1通过第一片SN65HVD230发数,
CAN2接收,示波器可以看到有数据过来,但是CPU无法正常接收,估计是校验没法通过。
这时把第二片RS引脚接地,CPU的CAN2可以正确收到CAN1的数据。
第二种情况,把CAN线,再连接一个USB转CAN的工具,到PC,打开这个工具后,工具能正常收数,这时CAN2也能正确收数,注意此时RS是10k电阻接3.3V的。
下图是两根CAN信号线,无法正常接收情况:
下图是可以正常接收情况:
附加一份原理图:
希望得到帮助,谢谢!
Kailyn Chen:
Rs拉高时候,driver是off,receiver是activity,所以按理CAN1是看不到数据发送过来的。
至于当RS拉高时候,接上USB转CAN工具,能正常收发,对于从低功耗状态return到normal operation状态,datasheet中有这样一句描述: The host controller (MCU, DSP) returns the device to a transmitting mode (high speed or slope control) when it wants to transmit a message to the bus or if during standby mode it received bus traffic indicating the need to once again be ready to transmit.
Hongbo Dong:
回复 Kailyn Chen:
首先谢谢回答,但是没发解决疑问。
在数据手册第二页,description:
The circuit of the SN65HVD230 enters a low-current standby mode during which the driver is switched off andthe receiver remains active if a high logic level is applied to pin 8. The DSP controller reverses this low-currentstandby mode when a dominant state (bus differential voltage > 900 mV typical) occurs on the bus.
这句话的意思是,PIN8 = High,但是当CAN的两根线压差超过0.9V,会退出待机模式。 这个是它区别于SN65HVD231的地方。
我们做的是车载设备,而这个芯片能消耗8mA,比我们整个电路板都多,请帮忙认真分析下,谢谢!
Kailyn Chen:
那我想是不是可以做如下实验:
当CAN1 和CAN2 的Rs均为low时,收发均没问题。
当CNA1 RS为low,CAN2的Rs为高时,CAN1 发数据,CAN2接收错误,按照datasheet上描述,HVD230的driver off,但receiver还是activity的,那么此时能否用其他trancevier发送数据试试,CAN2是否能正常接收呢?
另外,两片CAN的Vref均接地的,建议接1/2 Vcc.波形更直观些。