IIC UART SPI通信协议介绍

UART

        通用一部收发器,是一种通用的串行、异步通信总线该总线有两条数据线,可以实现全双工的发送和接收,在嵌入式系统中常用于主机与辅助设备之间的通信

波特率

        波特率用于描述UART通信时的通信速度,单位为bps(bit per second)即每秒钟传送的bit的数量  他就是每秒钟传送的二进制位的个数

        如果我们发送01 或者0011 会发现他们是一样的,这得就需要波特率来确定发送了几位,接收方确定几个零或者几个1就是通过波特率

        注意:双方的波特率必须一样

UART帧格式(UART传送原理)

        串口发送的时候会先发送一个起始位 表示数据的开始,然后在发送数据位,数据位发完发送校验位,主要是检测发送数据的正确性,然后发送停止位表示这次数据已经发送结束了,上述位整个通信的过程,要想发送多个字节不断的重复这个过程

注意空闲位:串口线在不使用的时候要弄成高电平

           起始位:起始位的作用主要是告诉对方我要发送数据了区别于空闲位

           数据位:在串口协议里面规定先发低位再发高位

           校验位:主要用奇偶校验 他只能是检验是否产生错误 但是不能修改 可有可无 有的话通信速度会慢一些因为多了一位

                奇校验:数据位高电平个数总数位奇数

                偶校验:数据位高电平个数总数位偶数

           停止位:固定为高电平  表示通信的结束

UART:有两个数据线 是交叉连接 还有一根GND接地

RS232

        编程的时候没有任何区别只是在电器层面进行区分 纯硬件的东西

        RS232协议是在1970年由美国电子工业协会(EIA)联合贝尔系统、调制解调器厂家、计算机终端生产厂家共同制定的用于串行通讯的标准;

        该标准规定采用一个标准的连接器,标准中对连接器的每个引脚的作用加以规定,还对信号的电平加以规定

接口

        该标准规定采用一个25引脚的DB-25连接器,标准中对连接器的每个引脚的信号内容加以规定,还对各种信号的电平加以规定;后来IBM的PC机将RS232简化成了DB-9连接器,后来称为事实标准;现在工业控制的RS-232接口一般只能使用RXD、TXD、GND三条线;

信号

        该标准规定逻辑’1‘的电平为-5V到-15V,逻辑’0‘的电平为+5V到+15V,选用该电气标准的目的在于提高抗干扰能力,增大通信距离。其传输距离一般可以达到15m

电平转化

        虽然很多处理器中都会集成UART控制器,但处理器产生的信号一般都是TTL信号并不是符合RS232标准的信号,所以一般我们还需要在处理器外部去添加电路对信号的电平进行转换

        一般芯片发出来的是TTL电平,我们想要增加他的传输距离就要转成RS232电平  我们就把芯片的电平发送给电平转换芯片(max232)中 电平转换芯片把TTL信号转换成232信号

RS232存在的问题

1、接口的信号电平值较高,已损坏接口电路的芯片,又因为与TTL 不兼容,所以需要使用电平转换芯片才能与TTL电路连接

2、通信速度较低

3、易产生共模干扰,抗噪声干扰性弱

4、传输距离较短(15m)

RS485

        该标准由电信行业协会和电子工业联盟定义;使用该标准的通信网络能在远距离条件下以及电子噪声大的环境下有效传输信号该标准允许连接多个收发器,即具有多站能力,这样可以利用单一的RS285接口方便地建立起一个设备网络

        

信号

        RS485标准规定采用差分信号进行数据传输,两线间的电压差为+2V到+6V表示逻辑’1‘,两线间的电压插为-2V到-6V表示逻辑’0‘;使用差分信号能有效地减少噪声信号的干扰,延长通信距离,RS485的通信距离可以达到1500m;RS485接口信号的电平比RS232降低了,所以不易损坏接口电路的芯片,且该电平与TTL电平兼容,可方便地与TTL电路连接、

接口

        RS485采用两线制,这种接线方式为总线式拓扑结构,在同一总线上可以同时存在多个节点;

        因为采用两线制,数据的发送和接收都要使用这对差分信号线,发送和接收不能同时进行,所以只能采用半双工的方式工作编程时也需要加以处理

电平转换

        虽然很多处理器中都会集成UART控制器,但处理器产生的信号一般都是TTL信号并不是符合RS485标准信号,所以一般我们还需要在处理器外部去添加电路将TTL信号转换成差分信号;

注意:

        对于这种主从机制可以去参考IIC协议,IIC与485有什么区别。IIC一开始就规定好了主机和从机的职责,以及通信过程,但是485协议里面没有规定,你可以好几个器件都挂载到总线上,但是怎么通信485没有规定,这个得自己写程序来管理这件事,所以写程序可以参考IIC机制

RS485的优势

1.接口的信号电平值较低,不易损坏接口电路的芯片,且与TTL兼容,可方便地与TTL电路连接

2.通信速度快

3.抗噪声干扰性强

4.传输距离较远(1500m)

5.可实现多节点组网

232与485

        232与485是在串口的基础上再电器这个层次对信号的一个标准化,UART只是规定发送的时许,但是他没有规定高电平是几V低电平是几V,也没有规定接口是什么样 ,而232或者485就规定了我这个接口就长这样,有几根线,每根线是干嘛的

        UART是规定我发谁谁先发的问题,而232和485是你选择什么样的路线走

IIC总线

        IIC总线是Philips公司在八十年代初推出的一种串行、半双工 主要用于近距离、低俗的芯片之间的通信;IIC总线有两根双向的信号线 一根数据线SDA用于收发数据,一根时钟线SCL用于通信双方时钟的同步;IIC总线硬件结构简单,成本较低,因此在各个领域得到了广泛应用。

        主要是用于同一块板子上面两个IIC之间的通信 两个总线空闲时时高电平 发数据SCL低电平 收数据SCL高电平

        用的时候只需要把芯片的SCL接到总线的SCL 芯片的SDA接到总线的SDA  然后两个芯片就可以通过IIC来进行通信了

        IIC总线是一种多主机的总线,连接在IIC总线上的器件分为主机和从机,主机有权发起和结束一次通信,而从机只能被主机呼唤;(多主机就是指多个芯片都可以称为主机,是一个分时的,每一个时间段只有一个主机)

        当总线上有多个主机同时启动总线时,IIC也具备冲突检测和仲裁的功能来防止错误产生了每个连接到IIC总线上的器件都有一个唯一的地址(7bit)(地址的目的就是区分不同的主机从机),且每个器件都可以作为主机也可以作为从机(同一时刻只能有一个主机,那是因为同一个时间点只能有一个主机用一个总线),总线上的器件增加和删除不影响其他器件正常工作;

        IC总线在通信时总线上发送数据的器件为发送器,接收数据的器件为接收器

IIC总线的通信过程

1.主机发送起始信号启用总线

2.主机发送一个字节的数据指明从机地址和后续字节的传送方向

3.被寻址的从机发送应答信号回应主机

 4.发送器发送一个字节的数据

5.接收器发送应答信号回应发送器

6.   (循环步骤4、5)

n.通信完成后主机发送停止信号释放总线

举例:假设主机为单片机A 单片机B 后面的四个为从机,单片机于0x3的从机通信

1.单片机A发送一个起始信号表示一次通信的开始,其他主机也会收到这个信号,在这一段时间单片机B就不会启用总线,因为总线正在使用。其他从机也收到这个信号就知道有主机发起通信了。

2.然后单片机A往总线上发送了一个字节的数据,这个字节里面写了要通信从机的地址,地址写在高七位,最后一位确定是主机发给从机还是从机发送给主机 0 主-》从  1从-》主

3.应答信号的作用告诉主机我存在. 发送过程中不允许改变通信方向,就是在一开始发送方向就确定了

n.

IIC总线的取地方式

IIC总线上的传送数据是广义,既包括地址,又包括真正的数据

主机在发送起始信号后必须先发送一个字节的数据,该数据的高7位表示从机地址,最低位表示后去的传送方向,‘0’表示主机发送数据,‘1’表示主机接收数据;总线上所有的从机接收到该字节数据后都将这7位地址与自己的地址进行比较,如果相同,则认为自己被主机寻址然后再根据第8位将主机定为发送器或接收器

 SPI总线

        spi是串行外设接口的缩写,SPI是一种高速的、全双工、同步的串行通信总线;SPI采用主从问答的方式工作,一般有一个主设备和一个或者多个从设备;SPI需要至少4根线(多个从机时主机要超过四根线),分别是MISO(主设备输入从设备输出)、MOSI(主设备输出从设备输入)、SCL(时钟)、CS(chip select片选 可能会有多条当有多个从机的时候)SPI使用引脚较少且分布方便,所以越来越多的芯片集成了这种通信协议;

寻址方式

当主设备要和某个从设备进行通信时,主设备需要先向对应的从设备的片选线上发送使能信号(高低阿婆或者低电平,根据从机而定如果是CS上面加个‘-’那就是低电平使能,CS高电平使能)表示选中该从设备

通信过程

SPI总线再进行数据传送时,先传送高位,后传送低位;数据线为高电平表示逻辑‘1’,低电平表示逻辑‘0’;一个字节传输完成后无需应答即可开始下一个字节的传送;SPI总线采用同步方式工作,时钟线在上升沿或下降沿时大宋其像数据线上发送数据,在紧接着的下降沿或上升沿时接收器从数据线上读取数据,完成以为数据传送,八个时钟周期即可以完成一个字节数据的传送;

注意:SPI没有起始信号,停止信号 应答,只有数据

异步通信就是靠测时间来判断处于高位还是低位

同步通信是通过时钟线,当时钟线为低电平发送器去放一位数据 当时钟线为高电平,接收器去读这一位数据

一个时钟周期两个沿下降沿发数据 上升沿读数据

MSB 最高位 LSB最低为

极性和相位

 极性和相位

        SPI总线有四种不同的工作模式,取决于极性(CPOL)和相位(CPHL)这两个因素

        CPOL表示CSCLK空闲时的状态

                CPOL=0,空闲时SCLK为低电平

                CPOL=1,空闲时SCLK为高电平

        CPHA表示采样时刻  是上升沿采集还是下降沿采集

                CPHA=0,每个周期的第一个时钟沿采样

                CPHA=1,每个周期的第二个时钟沿采样

模式 CPOL CPHA 采样时刻 空闲时SCK电平

0 0 0 奇数 低

1 0 1 偶数 低

2 1 0 奇数 高

3 1 1 偶数 高

在SPI操作中,最重要的两项设置就是时钟极性(CPOL)和时钟相位(CPHA)这两项即是主从设备间数据采样的约定方式

        需要说明的是,对于一个特定的从设备来说,一般在出厂的时候就会将器设计为某种特定的工作模式;我们在使用该设备时就必须保证主设备的工作模式和从设备保持一致,否则是无法进行通信的;所以一般我们需要对主设备的CPOL和CPHA进行配置; 

IIC和SPI的异同

相同点

1.均采用串行、同步的方式

2.均采用TTL电平,传输距离和应用场景类似    主要是在板子内部进行通信

3.均采用主从方式工作

不同点

1.IIC为半双工,SPI为全双工

2.IIC有应答机制,SPI无应答机制

3.IIC通过向总线广播从机地址来寻址,SPI通过对应从机发送使能信号 IIC节省空间资源 SPI传输速度快

4.IIC的时钟极性和时钟相位固定,SPI的时钟极性和时钟相位可调

          

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值