1、简介
通常情况下完整的CAN总线通信拓扑一定含有CAN PHY这类物理层芯片,但是如果手头上没有CAN PHY怎么办,CAN的两根TTL信号线CAN_TX、CAN_RX可以直连吗?
由于CAN总线型性质,这种办法显然不可行。每个CAN通信节点处于数据发送状态时,通过TX引脚发送数据电平,如果RX引脚检测的数据电平与TX不一致,则立即停止数据发送模式,转为数据接收模式。
2、解决思路
当然,对于这个问题还是有解决办法的。应用思路是将CAN_TX、CAN_RX通过一限流电阻拉高至3.3V,每个CAN通信节点的CAN_TX引脚再加入一个二极管器件。
对以下电路进行分析:
假设当前是CAN2节点处于数据发送模式,CAN1节点等待数据接收。
高电平数据发送分析:
那么PB6 TXD发送高电平时,由二极管单向导通性知PB6二极管不导通,RXD总线保持高电平,高电平数据发送正常。
低电平数据发送分析:
TXD发送低电平时,PB6二极管导通后RXD总线由高电平转为低电平,实际二极管存在0.7V的导通压降,0.7V仍可判定为逻辑低电平。
可以发现该CAN通信拓扑是可以正常通信的,但这不能完全替代掉CAN PHY的作用。以上电路仅适用于实验验证,特别是缺少CAN物理收发器的场景下。
3、实际电路形式
底板连接
4、电路应用
参考以下的标准CAN通信连接图
使用二极管搭建的CAN通信电路取代上图的CAN_PHY模块
参考以下文章《车载CAN总线通信测试》,进行CAN通信测试
测试结果