搜索
bottom↓
回复: 26

最近尝试用CAN接口芯片82c250直接与单片机uart连接进行通讯

[复制链接]

出0入0汤圆

发表于 2020-9-18 15:18:46 | 显示全部楼层 |阅读模式
本来是打算用485芯片与MCU的uart连接作为485总线使用的,但是使用过程中因为485是半双工,总感觉不太流畅。因此就想起CAN总线,反正都是两条线,而且CAN总线全双工,速度更快,所以就直接用82c250代替485做了两块实验板。
发现确实可以通讯,而且不用控制收发,刚开始惊喜了一番。不过后来发现有个问题,就是MCU从TX发出去的数据到82c250后,不但向外传输出去了,还通过RX又立马返回了MCU。结果就是只要MCU发数据,除了对方收到,MCU自己也
收到了。请问各位,如果想这样使用的话,有什么办法吗?MCU没有内部的CAN控制器,就是不想换MCU,所以如果换一个带CAN的MCU当然是没问题了。

出590入992汤圆

发表于 2020-9-18 16:32:25 | 显示全部楼层
1:82c250是CAN收发器:不应该说:TX数据发出去后从RX返回,而是TX的数据与总线耦合后的数据从RX返回。这样拥有CAN控制器的接口会判断数据。
2:你用串口直接发,两块板子都是串口,那么信号不是CAN信号,只是做了一个转换,因为的CRC,NRZ应该都没有实现吧?
3:如果这样使用,可以发送的时候:关闭接收。不发送的时候,再打开。

经过以上步骤:还是用485吧。

出0入0汤圆

发表于 2020-9-18 17:10:55 | 显示全部楼层
听谁说CAN总线是全双工的

出0入54汤圆

发表于 2020-9-18 17:55:26 | 显示全部楼层
CAN是半双工啊,跟USB2.0类似的2根差分数据线传输。

出0入42汤圆

发表于 2020-9-18 18:14:51 来自手机 | 显示全部楼层
这么用感觉还是485的方式,没有仲裁啊

出0入0汤圆

 楼主| 发表于 2020-9-18 18:40:38 | 显示全部楼层
我这样做的一个目的是不用像485那样控制收发,而像想RS232那样收发全开,不用管。试验过,确实可以这样,但是就是多收了一份自己发出去的数据,有点头疼。

出0入0汤圆

发表于 2020-9-18 19:54:04 | 显示全部楼层
CAN总线肯定是半双工,发的时候是不能收的,这时候收的就是自己发出去的数据。

出0入16汤圆

发表于 2020-9-18 20:11:41 来自手机 | 显示全部楼层
发送的同时关闭接收

出0入131汤圆

发表于 2020-9-18 20:15:21 来自手机 | 显示全部楼层
收回来方便你判断发出的数据对不对啊,如果收发不一致,那么可能对方也正在发数据

出0入475汤圆

发表于 2020-9-18 20:25:37 来自手机 | 显示全部楼层
那我想问下楼主,当你发的时候别人也在发,那么这个时候你总线上是什么心情?你的RX脚是什么心情:)

出5入0汤圆

发表于 2020-9-18 22:46:22 | 显示全部楼层
1a2b3c 发表于 2020-9-18 20:25
那我想问下楼主,当你发的时候别人也在发,那么这个时候你总线上是什么心情?你的RX脚是什么心情:) ...

茫然中带有一点点焦虑,,,

出0入0汤圆

发表于 2020-9-18 23:37:44 | 显示全部楼层
现在的can收发器都有最低速率限制的,一般是20K。不清楚82c250是不是有,传串口数据小心掉坑里。

出0入0汤圆

发表于 2020-9-19 01:40:04 | 显示全部楼层
ap4115 发表于 2020-9-18 18:40
我这样做的一个目的是不用像485那样控制收发,而像想RS232那样收发全开,不用管。试验过,确实可以这样,但 ...

使用TX信号来控制收发使能呢,这就不需要额外控制了,是否可行

出0入0汤圆

发表于 2020-9-19 05:59:55 来自手机 | 显示全部楼层
为什么不用422呢

出0入0汤圆

发表于 2020-9-19 06:17:06 | 显示全部楼层
工控行业培训是这么说的,大家同时发,也把总线上的信息读回来,如果跟自己发的不一样就不发了

出0入0汤圆

发表于 2020-9-19 21:59:55 来自手机 | 显示全部楼层
你这是自己骗自己
can为毛要设计成自己收自己发的?因为它是单线总线(差分电平)  要做碰撞冲突检测的  人家有硬件机制处理,可以硬件实时检测冲突并且可重发,串口类似功能的叫lin总线,或者k总线,也是自发自收。  看起来全双工,那是协议做了分层,底层协议是硬件做的,帮你屏蔽了物流特性。这跟py写代码一样。
你借用phy电平硬件,却不支持相应底层协议,是自讨苦吃,老实用主从协议简单,usb也是主从协议。你也可以协议分层,底层实现硬件特性。

出0入0汤圆

发表于 2020-9-19 22:11:39 来自手机 | 显示全部楼层
别看到两根线就以为全双工(何况人家还可以没地线)   物理特性决定了的。。。
家里上网光纤看起来是你独占,其实也是很多邻居时分共用的哦。前兆网消回音同时收发是黑科技,而且因为超大批量实现廉价的黑科技。消回音也是一对一双工做不了总线,再说你串口也用不了千兆网phy.   

出0入0汤圆

发表于 2020-9-19 22:14:11 来自手机 | 显示全部楼层
网线全双工,那是有个中心节点交换机,所有电脑挂到交换机再跟别的电脑连接。类似有个开关矩阵,随时给你切线路一对一或一对多,禁止多对一。

出0入0汤圆

发表于 2020-9-19 22:27:05 来自手机 | 显示全部楼层
你可以试试自己做碰撞检测消耗资源评估。
uart每个字节都有高低电平出现,正好不用额外编码。
第一字节作为本机地址,对第一字节回读检测,有冲突延时随机长度再重发。
检测到总线出现下降沿则在忙,红灯一段时间才允许自己发。

出0入0汤圆

发表于 2020-9-19 22:29:52 来自手机 | 显示全部楼层
单片机串口支持lin应该可以直接用,人家硬件检测冲突。lin是开漏好像速度不高。

出0入14汤圆

发表于 2020-9-19 23:47:42 | 显示全部楼层
只感觉楼主脑洞新奇

出0入0汤圆

发表于 2020-9-20 13:54:48 | 显示全部楼层
用硬件屏蔽掉接受数据,可以实现,已经有成品卖了。82C250的距离远,但是速率低,10KM/2400bps.

出0入0汤圆

 楼主| 发表于 2020-9-23 22:57:24 | 显示全部楼层
zxd0225 发表于 2020-9-19 05:59
为什么不用422呢

422需要4条线呀

出0入0汤圆

 楼主| 发表于 2020-9-23 22:57:58 | 显示全部楼层
jqfsjt 发表于 2020-9-20 13:54
用硬件屏蔽掉接受数据,可以实现,已经有成品卖了。82C250的距离远,但是速率低,10KM/2400bps. ...

硬件屏蔽是怎么做的啊?

出0入0汤圆

 楼主| 发表于 2020-9-23 22:59:48 | 显示全部楼层
SUPER_CRJ 发表于 2020-9-18 16:32
1:82c250是CAN收发器:不应该说:TX数据发出去后从RX返回,而是TX的数据与总线耦合后的数据从RX返回。这样 ...

是的,这么一搞,那直接485了

出0入0汤圆

 楼主| 发表于 2020-9-23 23:01:38 | 显示全部楼层
1a2b3c 发表于 2020-9-18 20:25
那我想问下楼主,当你发的时候别人也在发,那么这个时候你总线上是什么心情?你的RX脚是什么心情:) ...

没什么心情,两边同时开收发,两边都能收到对方的数据,只是还收到了自己的数据而已

出0入0汤圆

 楼主| 发表于 2020-9-23 23:04:48 | 显示全部楼层
modbus 发表于 2020-9-18 17:10
听谁说CAN总线是全双工的

确实搞错了,CAN是半双工的,只是如果有CAN控制器可以不用自己控制收发而已,可以像232那样随意收发。
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-4-19 22:21

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表