关于串口通信的一点个人总结

  在嵌入式软件行业中,串口通信是使用非常常见的一种通信手段,几乎每个嵌入式系统里面都有串口,对于嵌入式工程师来讲这也是必须掌握的一项技能,串口通信非常简单,但要把它做好做稳定,还是需要一定功力,很多时候不是你在串口助手里面试一两次数据收发正常就可以万事大吉了的,最近接手一个同事的项目,在他的基础上做开发,发现了不少问题,也使我对串口通信有了更深的认识,下面谈谈具体情况。

  我所说的串口通信其实并不在物理层层面,因为无论是下位机还是上位机物理层基本都非常成熟可靠的接口,可以拿来就用。主要问题在于链路层方面,在链路层我们可能碰到很多不同的通信方式,比如RS232/RS485/RS422等,这似乎也太寻常了,可能每个做嵌入式的都用过,对于他们的区别也都知道,但要真正理解他们却并不容易,之前有一个项目一直是用RS232,由于模块不断增多,上位机端口也有限,后来改用了RS485总线,原本觉得好像差不多,软件上也不需要做多少改动,就基本套用了以前的操作模式,乍一看,貌似也能用,但随着后来的深入,一系列问题相继出现,要么就是数据不对、要么就是通信中断,总之就是不稳定,开始以为是硬件哪里出了问题,查找了半天,却依然如故,回想232通信时完全没有这些问题,觉得代码也肯定没问题,后来回顾了一下这两种通信的定义才恍然大悟,感觉还是自己经验不够,平时学得太浅,根本好好领悟其中的真谛!

  RS232是一种全双工通信方式,收发都有各自的通道,互补干扰;但RS485是一种半双工通信方式,收发共用一个通信信道,这个时候就必须要做好管理,必须保证总线上任一时刻都只有一个节点在发送数据,这也就是RS485为什么是主从式通信,只能由一个主节点发起通信,其他一对一的应答主节点的数据,而不能擅自主动向总线发送数据,否则总线数据肯定会出现错乱。这在总线定义中就已经说得清清楚楚了,而我却视而不见,导致浪费不少时间。

  把握住了各个总线的定义,再来看之前出现的那些问题,就都好解决了,之前是用的232,系统中各个模块有很多异步事件,比开关机按键,急停按键、外部触摸等,都是事件发生了再向上位机通报信息,现在改用485,就不能这么处理,必须实时查询,各个子节点不能主动上报。另外原来用232做的在线升级,也需要做改动,必须保证同一时刻只能有一个节点在发送数据。

  RS485不同于CAN总线,没有总线冲突检测机制,把握住一个中心原则:半双工通信。

转载于:https://www.cnblogs.com/beyonne/p/8574214.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
UART串口通信的可靠性主要取决于以下几个方面: 1. 帧同步:UART通信使用起始位、数据位、校验位和停止位来构成数据帧。在接收端,通过检测起始位来确定数据帧的开始。因此,确保发送端和接收端的波特率设置一致,并且在每个数据帧之间有足够的停止位来确保帧同步。 2. 奇偶校验:奇偶校验位可以在数据帧中添加一个位,用于检测传输过程中的错误。发送端根据数据位中的1的数量,设置奇偶校验位为使总位数为奇数或偶数。接收端通过比较接收到的数据位和奇偶校验位的数量来检测错误。 3. 错误检测和纠正:UART通信中,可以使用一些错误检测和纠正机制来提高可靠性。例如,使用循环冗余校验(CRC)来对数据进行校验,以检测传输过程中的错误,并且可以使用前向纠错(FEC)技术来自动纠正某些错误。 4. 缓冲区管理:UART通信中,发送端和接收端都需要使用缓冲区来存储数据。在设计中,需要合理设置缓冲区的大小,以避免数据丢失或溢出。同时,需要合理地管理缓冲区,确保数据的及时处理和传输。 5. 电气特性:UART串口通信还受到电气特性的影响。例如,信号的电平、噪声、干扰等都可能对通信的可靠性产生影响。因此,在设计和布线时,需要考虑这些因素,并采取相应的措施来降低干扰和提高信号的质量。 总的来说,UART串口通信的可靠性取决于正确的配置和使用,并且在设计和实现过程中需要考虑各种可能的干扰因素。通过合理设置参数、使用校验和纠错机制、管理缓冲区和注意电气特性,可以提高UART串口通信的可靠性。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值