uart,iic,spi小结

同步/异步,并行/串行,差分/电平(USB和网络通信 就是 异步,串行,差分)


TTL/CMOS 电平为0-5V,高为1,低为0(芯片之间);RS232电平中-3V~-15V表示1;+3~+15V表示0。(15米,抗干扰能力强)


1.串口(UART,universal asynchronous reciver and transmitter)
1.1主要特性:异步,串行,电平,可实现全双工。


1.2通信特点:
  通信参数包括:波特率、数据位、奇偶校验位、停止位(串口通信中起始位定义是唯一的,所以一般不用选择)
  1)波特率(bandrate),串口通信的速率(串口通信时每秒钟可以传输多少个二进制位)。譬如每秒种可以传输9600个二进制位(传输一个二进制位需要的时间是1/9600秒,也就是104us),波特率就是9600.
  1)一个通信单元包含:起始位+数据位(6-9,一般为8)+奇偶校验位+停止位(1,1.5,2,一般为1)组成的。
  2)奇偶校验位:总和为奇数奇偶校验位就为1,总和为偶数奇偶校验位就为0。
  3)起始位:通信线上的电平变化来反映。


1.3硬件特点:
  1)一般串口包括3根通信线Tx、Rx、GND,除此外串口控制器包含transmitter(发送缓冲区,发送移位器)和receiver(接收缓冲区,接受移位器)两部分。
  2)DB9接口(标准),其余6根与流控相关(如今串口一般用作调试,禁用掉流控)。


1.4串口编程
  1)一般在串口通信中,发送方由于占据主导权可以不使用中断模式,但是接收方不得不使用。
  2)一般流程:设置通信参数,设置接受发送模式,设置波特率(时钟),发送接收数据。


2.IIC(inter-integrated circuit)
1.1主要特性:同步,串行,电平,半双工,低速率(一般几百KHz,通信距离短),主从方式。


1.2 硬件特点:
  1)SCL(时钟线)+SDA(通信线)
  2)iic控制器:时钟部分,I2C总线控制逻辑(产生时序),移位寄存器,地址寄存器+比较器(用作从设备)。




1.3 通信特点:
  1)为主从模式,谁是主设备、谁是从设备是由通信双方来定的(I2C协议并无规定),一般来说一个芯片可以只能做主设备、也可以只能做从设备、也可以既能当主设备又能当从设备(软件配置)。
  2)I2C通信可以一对一(1个主设备对1个从设备),也可以一对多(1个主设备对多个从设备)。主设备来负责调度总线,决定某一时间和哪个从设备通信。注意:同一时间内,I2C的总线上只能传输一对设备的通信信息,所以同一时间只能有一个从设备和主设备通信,其他从设备处于“冬眠”状态,不能出来捣乱,否则通信就乱套了。
  3)每一个I2C从设备在通信中都有一个I2C从设备地址,这个设备地址是从设备本身固有的属性,然后通信时主设备需要知道自己将要通信的那个从设备的地址,然后在通信中通过地址来甄别是不是自己要找的那个从设备。(这个地址是一个电路板上唯一的,不是全球唯一的)
  4)主要用途:SoC和周边外设之间的通信(典型的如EEPROM、电容触摸IC、各种sensor等)


1.4 传输特点
  1) I2C的总线空闲状态、起始位、结束位
   (1)I2C总线上有1个主设备,n(n>=1)个从设备。I2C总线上有2种状态;空闲态(所有从设备都未和主设备通信,此时总线空闲)和忙态(其中一个从设备在和主设备通信,此时总线被这一对占用,其他从设备必须歇着)。
   (2)整个通信分为一个周期一个周期的,两个相邻的通信周期是空闲态。每一个通信周期由一个起始位开始,一个结束位结束,中间是本周期的通信数据。
   (3)起始位并不是一个时间点,起始位是一个时间段,在这段时间内总线状态变化情况是:SCL线维持高电平,同时SDA线发生一个从高到低的下降沿。
   (4)与起始位相似,结束位也是一个时间段。在这段时间内总线状态变化情况是:SCL线维持高电平,同时SDA线发生一个从低到高的上升沿。


  2) I2C数据传输格式(数据位&ACK)
   (1)每一个通信周期的发起和结束都是由主设备来做的,从设备只有被动的响应主设备,没法自己自发的去做任何事情。
   (2)主设备在每个通信周期会先发8位的从设备地址(其实8位中只有7位是从设备地址,还有1位表示主设备下面要写入还是读出)到总线(主设备是以广播的形式发送的,只要是总线上的所有从设备其实都能收到这个信息)。然后总线上的每个从设备都能收到这个地址,并且收到地址后和自己的设备地址比较看是否相等。
   (3)发送方发送一段数据后,接收方需要回应一个ACK。这个响应本身只有1个bit位,不能携带有效信息,只能表示2个意思(要么表示收到数据,即有效响应;要么表示未收到数据,无效响应)
   (4)在某一个通信时刻,主设备和从设备只能有一个在发(占用总线,也就是向总线写),另一个在收(从总线读)。如果在某个时间主设备和从设备都试图向总线写,通信就乱套了。


  3) 数据在总线上的传输协议
   (1)I2C通信时的基本数据单位也是以字节为单位的,每次传输的有效数据都是1个字节(8位)。
   (2)起始位及其后的8个clk中都是主设备在发送(这设备掌控总线),此时从设备只能读取总线,通过读总线来得知主设备发给从设备的信息;然后到了第9周期,按照协议规定从设备需要发送ACK给主设备,所以此时主设备必须释放总线(主设备把总线置为高电平然后不要动,其实就类似于总线空闲状态),同时从设备试图拉低总线发出ACK。如果从设备拉低总线失败,或者从设备根本就没有拉低总线,则主设备看到的现象就是总线在第9周期仍然一直保持高,这对主设备来说,意味着我没收到ACK,主设备就认为刚才给从设备发送的8字节不对(接收失败)


3.SPI
1.1主要特性:同步,全双工,高速,主从方式。


1.2 硬件特点:
  1)SDI(主设备输入从设备输出)+SDO(主出从容)+SCLK(时钟)+CS(从设备使能,由主设备控制)
  2)iic控制器:时钟部分,I2C总线控制逻辑(产生时序),移位寄存器,地址寄存器+比较器(用作从设备)。







评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值