当前位置: 首页 > news >正文

通信协议感悟

        本文结合个人所学,简要讲述SPI,I2C,UART通信的特点,限制。

1.同步通信

        UART,SPI,I2C三种串行通讯方式,SPI功能引脚为CS,CLK,MOSI,MISO;I2C功能引脚为SCL,SDA,SCL就是时钟线。UART功能引脚为Tx,Rx。时钟线用于发送端和接收端时钟同步,所以SPI,I2C是同步通信,UART是异步通信。因为时钟线的存在,SPI,I2C通信双方的频率可以有一定的差别,如发送方时钟频率为32MHz,接收方频率为33MHz。UART因为没有时钟线,所以发送方和接收方必须保持一致的时钟频率,以降低误码率。

2.引脚设置

        I2C采用开漏输出,需要接上拉电阻,才能提供高电平,4700Ω是常见上拉电阻。SPI和UART引脚复用后,采用推挽模式。需要注意的是,接收引脚都采用输入模式。另外,在配置输出引脚电平时,要先配置电平,再配置方向。避免先配置方向,再配置电平,操作一结束就出现沿跳变(上升沿/下降沿)信号,给系统造成干扰。

f5984fabe90a4279874cc8f624046ce8.png

d1159ba117014c87b84779560b68ea50.png

8e56cf81cb444e43a1bfd042e5c75c2b.png

3.传输特点

        SPI通信速率高达几十Mbps,在PCB设计过程中,通常会加RC滤波电路,减少高频信号的干扰。I2C在标准模式下,通信熟虑为400kbps,高速模式下最高可达3.4MHz。UART常见波特率有9600,115200,但我最高用过2M的波特率(比特率=波特率∗log2N,二进制情况下,波特率与比特率相等)。为了减少丢包,我必须加上帧头帧尾数据长度,CRC冗余校验,并采用错误重传机制。

        三种协议的最大通讯速率关系为:SPI>I2C>UART。SPI通信速率最快,因为SPI软件协议最简单,没有数据应答的过程,SPI主机发送1bit,SPI从机接收1bit,无校验应答过程。I2C通信协议较为复杂,包括开始信号,应答型号,结束信号。UART协议没有时钟线,发送方,接收方,必须保持时钟一致,否则会出现误码。前两者多用于同一PCB板上元器件之间的通信,而UART的传输长度较远,可用于不同设备间通信。uart若采用RS232电平,UART传输距离可达30m(但通信速率不超过20kbit/s);若要超过30m,则需将TTL电平转为RS485差分信号。UART通信距离限制,主要是由于电压信号的衰减,当高电平信号(eg:3.3v)传出一定距离后,可能衰减为1.5V,这时,接收方有可能把高电平识别为低电平,接收数字信号可能由1变0。

       另外,协议使用过程中有些小技巧。以I2C通信为例,通信过程是开始信号-应答信号-数据信号-应答信号-结束信号。但实际通信过程可能是结束信号-开始信号-应答信号-数据信号-应答信号-结束信号。之所以要在通信开始前,发个结束信号,是为了避免上次通信对本次通信造成干扰。

 

 

 

http://www.lryc.cn/news/451147.html

相关文章:

  • IDEA几大常用AI插件
  • 51单片机学习第六课---B站UP主江协科技
  • sadTalker本地编译
  • 强化学习核心概念与公式总结
  • 基础算法--双指针【概念+图解+题解+解释】
  • 国产化系统/鸿蒙开发足浴店收银源码-收缩左侧———未来之窗行业应用跨平台架构
  • 如何从硬盘恢复丢失/删除的视频
  • 《Effective C++》第三版——设计与声明(1)
  • 数值计算的程序设计问题举例
  • Java之方法的使用
  • sudo 命令:掌握系统权限控制,实现安全高效管理
  • AndroidStudio导入so文件
  • Kuebernetes 群集基于 Docker 部署
  • 追随 HarmonyOS NEXT,Solon v3.0 将在10月8日发布
  • 服装时尚与动漫游戏的跨界联动:创新运营与策划策略研究
  • Redis中String类型的常用命令(append,getrenge,setrange等命令)
  • 深度拆解:如何在Facebook上做跨境电商?
  • 为啥数据需转换成tensor才能参与后续建模训练
  • leetcode:380. O(1) 时间插入、删除和获取随机元素
  • Linux集群部署RabbitMQ
  • 01DSP学习-了解DSP外设-以逆变器控制为例
  • 【ArcGIS Pro实操第三期】多模式道路网构建(Multi-model road network construction)原理及实操案例
  • 深度学习基础及技巧
  • Unity 外描边简单实现(Shader Graph)
  • text2sql方法:NatSQL和DIN-SQL
  • 【新闻转载】Storm-0501:勒索软件攻击扩展到混合云环境
  • RabbitMQ 队列之战:Classic 和 Quorum 的性能洞察
  • Spring Boot 集成 MySQL 的详细指南
  • python格式化输入输出
  • 音视频入门基础:FLV专题(10)——Script Tag实例分析