uart、rs232、rs485、usb的关系及使用模型

资料

名称 链接 备注
uart与usb对比分析 http://www.elecfans.com/emb/jiekou/20171206595422_a.html usb、uart区别
UART与USB为什么速度差那么多 https://bbs.csdn.net/topics/360155810 usb、uart区别
UART\RS232与RS485的关系 https://www.cnblogs.com/kekeoutlook/p/9834307.html 串口间的区别
UART和RS232/RS485的关系是什么? https://blog.csdn.net/u013178472/article/details/81226780 串口间区别
串口、COM口、UART口, TTL、RS-232、RS-485区别详解 https://blog.csdn.net/zhuyongxin_6688/article/details/78001767 多中通信方式的区别

总结

  • usb、uart的对比
  1. 两种不同的连接标准,根据需求,决策技术选择,usb通用性更高
  2. 都需要硬件支持,都是一个端点,具体通信方式,需要子协议规定。如usb的hid等,uart的rs232、rs485等
  • uart、rs485、rs232的关系
  1. uart类似交通的站点,对接交通线,rs485、rs232是不同的交通线,类似公路或高速路
  2. rs485、rs232是uart的外围电路实现,进行信号转换,使通信更符合要求,如稳定性、准确性等。

使用模型

参考资料:https://code.google.com/archive/p/android-serialport-api/wikis/android_to_rs232_guideline.wiki

以rs232、usb为例
方案

uart、rs232、rs485、usb的关系及使用模型_第1张图片

方案对比
方案 优点 缺点 API
1 不需要封装api,使用Android sdk的BluetoothSocket即可
不需要硬件修改(前提支持bluetooth)
支持硬件流程控制
Bluetooth耗电高
高延迟
低带宽
Android SDK
2 usb转rs232适配器偏移且容易找到
无硬件修改需求
无额外耗电增加
低延时
高带宽
Android设备端需要支持usb host
Android设备可能需要root:修改/dev/ttyUSB0的权限,加载kernel驱动
android-serialport-api
3 最便宜的解决方案 硬件适配器必须被支持
很少的Android设备兼容该方案
硬件流控制不被支持:仅支持RX/TX,没有RTS、CTS信号
android-serialport-api
4 兼容性强,99%的android设备都支持
不需要root设备
低延时
高带宽
需要一个单片机的一些GPIO https://github.com/ytai/ioio/wiki/UART

RS485、RS232通信

典型的串口通信标准有 RS232 和 RS485,RS232 是全双工点对点的通信,而RS485 是半双工通信(2 线制),可以一点对多点进行组网,而且 RS485 是用缆线两端的电压差值来表示传递信号,这与 RS232 电气特性大不一样。RS485 仅仅规定了接收端和发送端的电气特性,并没有规定或推荐任何数据协议,因此RS485 的协议层可以和 RS232 一样。

RS485uart、rs232、rs485、usb的关系及使用模型_第2张图片

实际开发中,一般会用一个gpio口控制485的收发结合通用串口通信驱动,就可以使用串口api通过485通讯了。至于为什么这么设计,而不设计为自动切换,请看下面链接的文章和讨论:
为何会需要用GPIO来控制485收发: http://www.lwfree.cn/daima/17034.html
uart、rs232、rs485、usb的关系及使用模型_第3张图片
为何会出现这种变态的485设计? https://bbs.csdn.net/topics/370159910

总结为什么这么设计:

  1. 设计为自动切换,得不偿失,可能会有一系列问题
  2. 手动切换简单稳定且能满足需求
RS232
rs232串口接线,RS232串口通信基本接线方法 http://www.elecfans.com/emb/jiekou/20171101573731.html
RS-232详解 https://blog.csdn.net/sternlycore/article/details/86412267
RS485通信原理图及程序实例详解 https://baijiahao.baidu.com/s?id=1616760192444998311&wfr=spider&for=pc

RS232是全双工通信,不需要单独的gpio进行输入输出切换控制。接线方式有多种,最基础的是3线连接:接地、输入、输出。

你可能感兴趣的:(通用kernel资料)