spi、iic、can高速传输速度与选择

uart:

    无限制,常用9600、115200bps等保证双方通信速度相同。

iic:

    通讯速率400Kbps

can:

    一般为1Mbps

SPI:

  通信速率 fosc/4其传输速度可达几Mb/s

缺点:抗干扰能力差。SPI采用的是单端非平衡的传输方式,即传输的数据位的电压电平是以公共地作为参考的。在这种传输方式中对于已进入信号中的干扰是无法消除和减弱的。而信号在传输过程中总会受到干扰,而且距离越长干扰越严重,以致于信号传输产生错误。在这种条件下,信号传输就变得毫无意义了。另外,由于单端非平衡传输方式以公共地作为参考点,地线作为信号回流线,因此也存在信号电流。当传输线两端的系统之间存在交流电位差时,这个电位差将直接窜到信号中,形成噪声干扰。所以,为了解决抗干扰问题,通常采用平衡传输(balanced transmission)方式,这里采用比较常见的RS-422。

应用:读写flash(存有字库,图片等等)芯片,与触摸屏控制器通信,还有就是读写sd卡了,你手机里的sd卡就是通过spi和处理器传数据的,目前高速都用SDIO了。    

SDIO:

    10M及已上

SDRAM:(非总线)

16位,的100m频率就是1.6Gbit读写

PCI:(网卡)

    传输速率高最大数据传输率为132MB/s(工作在33MHz 频率之下),当数据宽度升级到64位,数据传输率可达264MB/s。这是其他总线难以比拟的。它大大缓解了数据I/O瓶颈,使高性能CPU的功能得以充分发挥,适应高速设备数据传输的需要。

PCI Express 2.0 :

  理论值 10Gbps,实际大于100MB

USB2.0  一般30~40MB

Ethenet 一般70~80MB

 

### 嵌入式系统中的通信协议概述 #### IIC (Inter-Integrated Circuit) 协议 IIC 是一种同步、半双工的两线制总线协议,通常由一根时钟线(SCL)和一根数据线(SDA)组成。它支持多主机和多从机架构,适合短距离低速率的数据传输场景。由于其硬件开销较小,常用于连接传感器、EEPROM 和其他外设到微控制器上[^1]。 以下是 IIC 的主要特性: - **速度范围**:标准模式下为 100 kbps,快速模式可达 400 kbps,高速模式可达到 3.4 Mbps。 - **优点**:仅需两条信号线即可实现多设备互联;占用较少的 GPIO 资源。 - **缺点**:不适合高带宽需求的应用场合,且随着挂载设备数量增加可能影响性能。 #### SPI (Serial Peripheral Interface) 协议 SPI 利用四条线路完成全双工通讯功能——分别是 MOSI(Master Out Slave In)、MISO(Master In Slave Out)、SCLK(Serial Clock)以及 SS/CS(Slave Select)。相比起 IIC 来说更加高效灵活,在某些情况下甚至可以省去部分控制信号来简化电路结构[^2]。 关于 SPI 的具体属性如下所示: - **工作频率**:理论上能够支持更高的比特率,实际应用中常见几十兆赫兹级别以上的操作。 - **优势所在**:提供更快的数据吞吐能力,并允许更复杂的帧格式定义满足特定用途的需求。 - **局限之处**:不具备自动寻址机制,因此当存在多个外围组件时需要额外管理片选信号(SS),这会消耗较多端口资源并使布板变得复杂起来。 #### CAN(Controller Area Network) 总线技术 CAN 属于一个多主节点仲裁型串行通信网络体系,广泛应用于汽车工业领域以及其他分布式控制系统之中。通过差分驱动方式提高抗干扰水平的同时还能保障较长物理链路下的稳定运行效果。 下面列举了一些有关 CAN 的重要参数及其优劣势分析: - **波特率区间**:经典版本最高至 1Mbps 左右,而新一代 FD 扩展版则进一步提升了最大理论极限值。 - **突出亮点**:具备错误检测纠正机能,即使在网络负载较重的情况下也能维持较高的可靠性指标;另外还拥有优先级判断逻辑以便紧急消息得以及时传达出去。 - **潜在不足**:相对而言成本较高一些,而且对于非常简单的点对点联系来说可能会显得有些大材小用了。 ```python # 示例代码展示如何初始化不同类型的通信接口(伪代码) def init_iic(): configure_sda_and_scl_pins() set_up_iic_clock_frequency() def init_spi(): setup_mosi_miso_sclk_ss_lines() define_spi_mode_and_baudrate() def init_can(): initialize_can_transceiver() specify_bit_timing_parameters() ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值