搜索
bottom↓
回复: 26

如何做两个串口透传?

[复制链接]

出0入0汤圆

发表于 2017-3-22 08:33:20 | 显示全部楼层 |阅读模式
想做两个串口互相透传,遇到的问题是怎么判断每个串口一帧数据什么时候结束,在这里请教下方法,如果有程序就更好了

出0入0汤圆

发表于 2017-3-22 08:49:07 | 显示全部楼层
没明白你想做什么?两个串口之间本身就是透传的。你是说协议帧?那要你自己定协议判断帧的起始结束,简单点就定长帧:收到帧起始就开始计数,来一个字节就加一,收购判断帧结束符,校验。

出0入0汤圆

发表于 2017-3-22 08:53:56 | 显示全部楼层
两个串口透传什么?

出0入0汤圆

 楼主| 发表于 2017-3-22 09:49:42 | 显示全部楼层
belongfs 发表于 2017-3-22 08:53
两个串口透传什么?

任意的数据帧

出0入0汤圆

发表于 2017-3-22 09:53:12 | 显示全部楼层
用DMA吧.其他RTT中这么用过

出0入0汤圆

 楼主| 发表于 2017-3-22 09:56:40 | 显示全部楼层
yangsen 发表于 2017-3-22 08:49
没明白你想做什么?两个串口之间本身就是透传的。你是说协议帧?那要你自己定协议判断帧的起始结束,简单点 ...

透传任意的数据帧,没有固定格式

出0入0汤圆

 楼主| 发表于 2017-3-22 09:58:34 | 显示全部楼层
brightchl 发表于 2017-3-22 09:53
用DMA吧.其他RTT中这么用过


DMA貌似 不支持 外设到外设 ,支持内存和外设之间的互传,如果先把一个串口数据DMA一个存储区,然后再转发到另外一个串口,那怎么判断任意数据帧是否结束呢,我是用32来做的

出0入0汤圆

发表于 2017-3-22 10:31:59 | 显示全部楼层
为什么要判断?直接来一个,转一个不就得了?

出0入0汤圆

发表于 2017-3-22 10:34:04 | 显示全部楼层
串口一接收中断里直接用串口二发送串口一接收到的数据,就可以。

出0入0汤圆

发表于 2017-3-22 10:34:08 | 显示全部楼层
接收中断,来一个就转发一个,完全透传

出0入0汤圆

发表于 2017-3-22 10:44:01 | 显示全部楼层
就是,既然是透传,来一个数就转发一个数据就行了,具体协议由另一端解析。

出0入8汤圆

发表于 2017-3-22 10:46:50 | 显示全部楼层
哈,如果是全双工转全双工就简单的双向转发就行了。如果是有半双工就要麻烦些了。

出0入0汤圆

发表于 2017-3-22 10:47:42 | 显示全部楼层
直接来一个传一个,但如何确认速率呢,看需求,是否速度是一个已知且不变的值?反过来想五上,如果这样的话,为什么要经过MCU,直接用线连接起来不是更好吗?

出0入0汤圆

发表于 2017-3-22 10:59:11 | 显示全部楼层
参考Modbus-RTU协议

出10入61汤圆

发表于 2017-3-22 11:51:06 | 显示全部楼层
如果出的速度比进的速度慢, 要做存储转发,  如果你的帧不是很长,可以设置一个定时,超过一段时间没收到数据就认为传完了就可以转发了. 如果是数据流,则边收边发. 我现在做的打印机数据截取转发就是这样的, 有串口/并口/USB接口的

出0入34汤圆

发表于 2017-3-22 12:01:44 | 显示全部楼层
modbus 发表于 2017-3-22 10:59
参考Modbus-RTU协议

这 Modbus 非楼主需求的...〔任意的数据帧,没有固定格式〕!
这个议题在逻辑上是蛮有趣的,要能判断每个串口一帧数据什么时候结束,且又是任意的数据帧,没有固定格式。
照这状况数据可以会是以 Bit 呈现,因为所需条件仍不清楚,所以可以是天马行空的任人发挥想像力了!~

出0入0汤圆

 楼主| 发表于 2017-3-22 12:02:30 | 显示全部楼层
ghostxdy 发表于 2017-3-22 10:47
直接来一个传一个,但如何确认速率呢,看需求,是否速度是一个已知且不变的值?反过来想五上,如果这样的话 ...

够狠 哈哈哈

出0入0汤圆

 楼主| 发表于 2017-3-22 12:02:52 | 显示全部楼层
modbus 发表于 2017-3-22 10:59
参考Modbus-RTU协议

   

出0入0汤圆

发表于 2017-3-22 14:20:44 | 显示全部楼层
怎么感觉是个跳线的功能。

出0入0汤圆

发表于 2017-3-22 15:46:14 | 显示全部楼层
还是没看懂楼主的意思

出0入8汤圆

发表于 2017-3-22 16:47:04 | 显示全部楼层
串口中断+两个FIFO应该就可以了……既然是透传了,你管数据的开始结束做甚。。。

出0入0汤圆

发表于 2017-3-22 17:26:25 | 显示全部楼层
透传肯定不需要考虑协议帧格式的阿,只管转发就好了。如果有控制,哪也叫透传么。

出0入0汤圆

发表于 2017-3-22 18:00:50 | 显示全部楼层
误码如何处理。。。。。
不定协议,只能接一个收一个。
发的快,就完蛋了。

出0入0汤圆

发表于 2017-3-24 22:45:04 | 显示全部楼层
只要知道间隔最大为多少,用个定时器去读间隔就行了。

出0入0汤圆

发表于 2017-3-25 00:19:41 来自手机 | 显示全部楼层
直接把线接过去。。

出0入0汤圆

发表于 2017-3-25 13:30:24 来自手机 | 显示全部楼层
没有任何参数 那只能说两个接收中断中发送

出0入0汤圆

发表于 2017-3-25 14:01:47 来自手机 | 显示全部楼层
直接跳线过去不行吗?实在不行加个电子开关
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-5-5 06:26

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

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