我们来看I2C协议中的数据传输时序图,如图1.3所示:
 图 1.3    i2c数据传输时序图
  SCL是时钟,SDA承载的是数据。当SDA从1变动到0,而SCL还是1时,表示开始数据传输。接下来的7位,就是设备的地址。紧接着的是读写标志,其为1时是读取,为0则是写。如果I2C总线上存在着和请求的地址相对应的设备,则从设备会发送一个ACK信号通知主设备,可以发送数据了。接到ACK信号后,主设备则发送一个8位的数据。当传输完毕之后,SCL保持为1,SDA从0变换到1时,标明传输结束。
  从这个时序图中可以看到,SCL很重要,并且哪个时钟沿是干嘛的,都是确定好的。比如,前面7个必定是地址,第8个是读写标志,数据传输必须是8位,必须接个ACK信号等等。
前面的时序图并没有标明数据传输的方向,我们现在看看写操作的数据流向:如图1.4所示:
 
图 1.4    i2c读操作数据流向
这时候,从设备除了发送ACK以外,紧跟着的还有数据。
(2)    SPI协议
SPI总线在物理上由4条信号线和一条地线构成。4条信号线分别是:数据输出MOSI、数据输入MISO、串行同步时钟SCLK和从设备使能线SS(片选)。处理器与外设之间使用SPI总线连接。SPI总线接口如图1.5所示:
 图 1.5    spi总线接口
当通信发起时,首先会将SS使能(低电平有效),然后进行数据通信。因此当SPI总线上出现一主多从的连接情况时,主设备通过使能不同的SS信号来区分与之通信的从设备。
SPI总线以字节作为基本单位进行串行传输,每个时钟周期在MISO/MOSI上可以传输一位数据。在数据传输过程中,按照高位(MSB)在前、低位(LSB)在后顺序进行传输。与I2C总线不同,SPI总线在当某个字节数据传送完成后不需要ACK信号实现数据同步。
SPI协议中规定,可以根据外设的工作要求配置输出串行同步时钟(SCLK)的极性和相位。时钟极性(CPOL)对传输协议没有重大影响,只是规定了串行同步时钟在空闲时的状态:如果CPOL=0,串行同步时钟的空闲状态为低电平;如果CPOL=1,串行同步时钟空闲状态为高电平。时钟相位(CPHA)用于规定数据采样时使用的时钟沿:如果CPHA=0,数据在串行同步时钟的第一个跳变沿(上升或下降,由CPOL决定)被采样;如果CPHA=1,数据在串行同步时钟的第二个跳变沿被采样。
用一般I/O口线模拟SPI操作,如图1.6所示:
 
图 1.6    spi i/o口模拟spi操作
P1.0模拟MCU的数据输出端(MOSI),
P1.1模拟SPI的SCK输出端,
P1.2模拟SPI的从机选择端,
P1.3模拟SPI的数据输入端(MISO)。
SPI模块为了和外设进行数据交换,根据外设工作要求,其输出串行同步时钟极性和相位可以进行配置,时钟极性(CPOL)对传输协议没有重大的影响。如果CPOL=0,串行同步时钟的空闲状态为低电平;如果CPOL=1,串行同步时钟的空闲状态为高电平。时钟相位(CPHA)能够配置用于选择两种不同的传输协议之一进行数据传输。如果CPHA=0,在串行同步时钟的第一个跳变沿(上升或下降)数据被采样;如果CPHA=1,在串行同步时钟的第二个跳变沿(上升或下降)数据被采样。SPI主模块和与之通信的外设音时钟相位和极性应该一致。SPI接口时序如图1.7、1.8所示。
 
图 1.7 spi CPHA=0时总线数据传输时序
 
图 1.8 spi CPHA=1时总线数据传输时序
SPI是一个环形总线结构,由ss(cs)、sck、sdi、sdo构成,其时序其实很简单,主要是在sck的控制下,两个双向移位寄存器进行数据交换。
(3)    8051单片机
上一篇:聚合反应过程控制系统设计+梯形图程序
下一篇:51单片机交通数据采集器设计

基于Kinect手势识别的遥操...

基于51单片机自动门智能控制系统设计

STC89C52单片机智能温度监测系统设计

STC89C52单片机盲人用时钟的设计+电路图+程序

粉料称重装置的单片机控...

基于TI-DSP平台的电力电子测控平台设计

基于传感器网络的分布式集员滤波问题的研究

PCI+PID算法直流力矩电机速...

《水浒传》中血腥暴力研...

大规模MIMO系统的发展研究现状

遥感土地用变化监测国内外研究现状

提高小學语文課堂朗读教...

浅析施工企业保理融资成...

MNL模型历史城区居民活动...

高效课堂教师问卷调查表

从企业eHR建设谈管理信息...

小型通用机器人控制系统设计任务书