Young87

SmartCat's Blog

So happy to code my life!

游戏开发交流QQ群号60398951

当前位置:首页 >跨站数据测试

嵌入式系统架构浅谈:硬件的选型(三) -------通讯接口

1. 嵌入式的通讯接口

嵌入式系统中,我们熟知的通讯接口有串口,SPI,IIC,CAN,USB。网络等。都是用于数据的交互,串口在工业上使用的是RS232,RS485,RS422,而TTL一般只用于调试或硬件内部的通讯。

这篇文章着重于上面的接口作一个对比。

1.1 RS232,RS485,RS422总线

 RS232RS485RS422
信道全双工半双工全双工
物理协议单端传输差分传输差分传输
引脚Tx Rx两条数据线A、B两条数据线Tx(Y、Z) Rx(A、B)四条数据线
距离实际使用15米左右(使用光电隔离或光纤可以距离更远)理论最高可达到千米(远比RS232距离长)与RS485差不多
速率传输速率较低,在异步传输时,比特率为20Kbps最高传输速率为10Mbps最高传输速率为10Mbps
稳定性抗噪声干扰性弱抗噪声干扰性好抗噪声干扰性好
负载数量只允许一对一通信多达128个收发器(允许一个发送,多个接收)多达128个收发器(允许一个发送,多个接收)

串口标准传送速率有50b/s、75b/s、110b/s、150b/s、300b/s、600b/s、1200b/s、2400b/s、4800b/s、9600b/s、19200b/s、115200b/s,在使用RS232中,一般不选择115200的波特率。

RS232一般只用于点对点,与上位机或两个设备之间通讯使用。而RS485和RS422是一条总线,常用于工业上的多机采集数据上。

另外提到一点是对于RS232,RS485还是RS422,需要的是设备共地,否则获取的数据可能不正确,而RS485和RS422这种差分传输的方式还需要考虑终端电阻(作用是为了减弱在通信电缆中的信号反射)的问题。终端电阻只有在长距离或高频信号传输上才需要使用,短距离和低频信号不使用终端电阻。终端电阻接入在最近端和最远端,处于中间部分的节点则不能接入终端电阻,否则将导致通讯出错。

1.2 SPI总线

SPI是串行外设接口(Serial Peripheral Interface)的缩写。是 Motorola 公司推出的一种同步串行接口技术,是一种高速的,全双工,同步的通信总线。这里不提SPI传输的协议和工作机制,但是需要各位另外去学习。

 SPI
信道全双工
物理协议单端传输
引脚CLK、MOSI、MISO及 CS(片选)
距离若无额外辅助(例如串反射电阻),则只能到达1米左右,距离越远,速率只能降低
速率最大时钟频率为系统时钟频率的1/2(一般在10Mbps)
稳定性抗噪声干扰性弱
负载数量允许接多个负载,但传输时需要CS引脚选择通讯的收发器

SPI总线一般使用在片内通讯上,较常用的模块如SPI Flash和W5500模块等,主控芯片做主机,主动去控制从设备,这也说明了作为从设备无法主动传输数据,在设计通讯的时候需要考虑到。SPI接口有一个缺点:没有指定的流控制,没有应答机制确认是否接收到数据。所以在软件上可能需要确保是否接受到数据上花费时间。一般上来说

1.3 IIC总线

IIC(Inter-Integrated Circuit)其实是IICBus简称,所以中文应该叫集成电路总线,它是一种串行通信总线。I2C总线在各种总线中使用信号线最少,并具有自动寻址、多主机时钟同步和仲裁等功能的总线。

 IIC
信道半双工
物理协议单端传输
引脚SCL(时钟线),SDA(数据线)
距离若无额外辅助(例如串反射电阻),则只能到达1米左右,距离越远,速率只能降低
速率

标准模式(100Kbit/s)

快速模式(400Kbit/s)

高速模式(3.4 Mbps)

稳定性抗噪声干扰性弱
负载数量它支持多主控(multimastering), 其中任何能够进行发送和接收的设备都可以成为主总线。一个主控能够控制信号的传输和时钟频率。当然,在任何时间点上只能有一个主控。

IIC和SPI相似,都是用于片内通讯比较多,常用于A/D及D/A转换器,例如触摸屏,温度传感器。IIC总线最主要的优点是其简单性和有效性。下面拿IIC和SPI做对比,能更好的知道两种的优缺点。

  1. 总线拓扑结构/信号路由/硬件资源耗费:IIC 只需两根信号线,而标准SPI至少四根信号,如果有多个从设备,信号需要更多。一些SPI变种虽然只使用三根线——SCLK,SS和双向的MISO/MOSI,但SS线还是要和从设备一对一根。另外,如果SPI要实现多主设备结构,总线系统需额外的逻辑和线路。用IIC 构建系统总线唯一的问题是有限的7位地址空间,但这个问题新标准已经解决——使用10位地址。从第一点上看,IIC是明显的大赢家。
  2. 传输速度:如果应用中必须使用高速数据传输,那么SPI是必然的选择。因为SPI是全双工,IIC 的不是。SPI没有定义速度限制,一般的实现通常能达到甚至超过10 Mbps。IIC 最高的速度也就快速+模式(1 Mbps)和高速模式(3.4 Mbps),后面的模式还需要额外的I/O缓冲区,还并不是总是容易实现的。
  3. 扩展性:IIC的优点是用很轻盈的架构实现了多主设备仲裁和设备路由。SPI的优点在于它的结构相当的直观简单,容易实现,并且有很好扩展性。

无论是SPI还是IIC,都是多用于硬件内部通讯上,若需要长距离的通信,尽量不选择使用者两种接口。

1.4 CAN总线

CAN是控制器域网 (Controller Area Network, CAN) 的简称,我们知道最多的就是用于车载设备。CAN总线是具有通信速率高、容易实现、且性价比高等诸多特点的一种已形成国际标准的现场总线。

 CAN
信道半双工
物理协议差分传输
引脚CANH,CANL
距离通信距离最远可达10KM
速率

40m以内时最高速率1Mbit/s

40~100m时最高500kbit/s

100~500m时最高125kbit/s

500~1000m时最高50kbit/s

稳定性抗噪声干扰性好
负载数量可以点对点,一对多及广播集中方式传送和接受数据

CAN相比以上的总线存在诸多的优点,但相比其他总线,也存在速率无法过高,协议复杂等缺点。一下列出CAN接口的一些优点:

  1. 可靠的错误处理和检错机制。
  2. 发送的信息遭到破坏后,可自动重发。
  3. 采用双线串行通信方式,检错能力强,可在高噪声干扰环境中工作。
  4. 每帧数据都有CRC校验及其他检错措施,保证了数据传输的高可靠性,适于在高干扰环境下使用。
  5. 节点在错误严重的情况下,具有自动关闭总线的功能,切断它与总线的联系,以使总线上其他操作不受影响。

我们也需要考虑到CAN接口的一些局限性,CAN接口的标准帧数据一个数据包只能发送8个字节,而扩展数据帧也能有16个字节,若需要发送大文件(例如多媒体等)时,会造成通讯时间过长的问题。

 

 

 

除特别声明,本站所有文章均为原创,如需转载请以超级链接形式注明出处:SmartCat's Blog

上一篇: 2020年中国新基建人工智能产业链全景图深度分析汇总(附完整企业名单)

下一篇: 【数据结构与算法】详解什么是集合,并用代码手动实现一个集合结构

精华推荐