打印
[牛人杂谈]

MCU通信技术:SPI UART TWI I2C三种串行总线协议

[复制链接]
1343|3
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
侣行天下|  楼主 | 2015-12-10 21:08 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
管脚:SS/SCK/MOSI(SDO)/MISO(SDI)
结构:一个始终发生器、两个移位寄存器(主从各一个);


使用:初始化(完成对两器件器件SPI使能、主从设置、SCK设置、IO方向、采样沿);
      编写数据读/写函数(只要发生一次数据传送,两器件的SPIF位就会置位,从而读写);
       必要时加入中断程序;
注意:两个寄存器是互通的,其工作过程见网硬盘,从百度文库搜集。因此主机读从机数据必须发送两个字节,第一个是命令字节,告诉从机要准备数据于从机SPDR中,第二个是任意字节,这样发送了后就会把从机SPDR中的字节交换过来,从而实现数据交换。
扩展:


(2) I2C(INTER ICBUS)
   管脚: SDA/SCL
   结构:
沙发
侣行天下|  楼主 | 2015-12-10 21:09 | 只看该作者
UART(UniversalAsynchronous ReceiverTransmitter:通用异步收发器)
RXD/TXD/GND;
(1) 特点
  Master mode and slavemode
  Bi-directionalmode
Slaveselect output
  Modefault error flag with CPU interruptcapability
  Double-buffereddata register
Serialclock with programmable polarity and phase
  Controlof SPI operation during wait mode

SPI 有两种模式,Normal Mode and BidirectionalMode,包括以下几根线:


SS     Slave Select
SCK   Serial Clock
MOSI Master Output, Slave Input
MISO Master Input, Slave Output


MOMI Master Output, Master Input
SISO   SlaveInput, Slave Output

使用特权

评论回复
板凳
侣行天下|  楼主 | 2015-12-10 21:11 | 只看该作者
其中前四根线用于NormalMode ,常用的也是4根线的Normal Mode 。

MOSI
This pin is used to transmit data out of the SPI module when itis configured as a Master and receive data
when it is configured as Slave.
MISO
This pin is used to transmit data out of the SPI module when itis configured as a Slave and receive data
when it is configured as Master.
SS
This pin is used to output the select signal from the SPImodule to another peripheral with which a data
transfer is to take place when its configured as a Masterandits used as an input to receive the slave select
signal when the SPI is configured as Slave.
SCK
This pin is used to output the clock with respect to which theSPI transfers data or receive clock in case of
Slave.

SPI 是一种允许一个主设备启动一个与从设备的同步通讯的协议,从而完成数据的交换。也就是SPI是一种规定好的通讯方式。这种通信方式的优点是占用端口较少,一般4根就够基本通讯了。同时传输速度也很高。一般来说要求主设备要有SPI控制器(但可用模拟方式),就可以与基于SPI的芯片通讯了。
   SPI 的通信原理很简单,它需要至少4根线,事实上3根也可以。也是所有基于SPI的设备共有的,它们是SDI(数据输入),SDO(数据输出),SCK(时 钟),CS(片选)。其中CS是控制芯片是否被选中的,也就是说只有片选信号为预先规定的使能信号时(高电位或低电位),对此芯片的操作才有效。这就允许在同一总线上连接多个SPI设备成为可能。

使用特权

评论回复
地板
侣行天下|  楼主 | 2015-12-10 21:12 | 只看该作者
接下来就负责通讯的3根线了。通讯是通过数据交换完成的,这里先要知道SPI是串行通讯协议,也就是说数据是一位一位的传输的。这就是SCK时钟线存在的原 因,由SCK提供时钟脉冲,SDI,SDO则基于此脉冲完成数据传输。数据输出通过SDO线,数据在时钟上沿或下沿时改变,在紧接着的下沿或上沿被读取。 完成一位数据传输,输入也使用同样原理。这样,在至少8次时钟信号的改变(上沿和下沿为一次),就可以完成8位数据的传输。
    要注意的是,SCK信号线只由主设备控制,从设备不能控制信号线。同样,在一个基于SPI的设备中,至少有一个主控设备。
    这样传输的特点:这样的传输方式有一个优点,与普通的串行通讯不同,普通的串行通讯一次连续传送至少8位数据,而SPI允许数据一位一位的传送,甚至允许暂停,因为SCK时钟线由主控设备控制,当没有时钟跳变时,从设备不采集或传送数据。也就是说,主设备通过对SCK时钟线的控制可以完成对通讯的控制。
    SPI还是一个数据交换协议:因为SPI的数据输入和输出线独立,所以允许同时完成数据的输入和输出。
    不同的SPI设备的实现方式不尽相同,主要是数据改变和采集的时间不同,在时钟信号上沿或下沿采集有不同定义,具体请参考相关器件的文档。

I2C

   只要求两条总线线路:一条串行数据线SDA一条串行时钟线SCL
   每个连接到总线的器件都可以通过唯一的地址和一直存在的简单的主机从机关系软件设定地址主机可以作为主机发送器或主机接收器
   它是一个真正的多主机总线如果两个或更多主机同时初始化数据传输可以通过冲突检测和仲裁,防止数据被破坏
   串行的8位双向数据传输位速率在标准模式下可达100kbit/s快速模式下可达400kbit/s高速模式下可达3.4Mbit/s
   片上的滤波器可以滤去总线数据线上的毛刺波保证数据完整
   连接到相同总线的IC数量只受到总线的最大电容400pF限制

UART

UART总线是异步串口,因此一般比前两种同步串口的结构要复杂很多,一般由波特率产生器(产生的波特率等于传输波特率的16倍)、UART接收器、UART发送器组成,硬件上由两根线,一根用于发送,一根用于接收。
    显然,如果用通用IO口模拟UART总线,则需一个输入口,一个输出口。
UART常用于控制计算机与串行设备的芯片。有一点要注意的是,它提供了RS-232C数据终端设备接口,这样计算机就可以和调制解调器或其它使用RS-232C接口的串行设备通信了。
明显可以看出,SPI和UART可以实现全双工,但I2C不行

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

30

主题

265

帖子

0

粉丝