SPI总线串行扩展
串行外设接口(Serial Periperal Interface,SPI)是Motorola公司推出的一种同步串行外设 接口,它允许单片机与多厂家的带
有标准SPI接口的外围设备直接连接。单片机串行口的方式0,就是一个同步串行口。所谓同步,就是串行口每发送、接收一位
数据都有一个同步时钟脉冲来控制。
SPI外围串行扩展结构如图10—4所示。
SPI使用4条线:串行时钟SCK、主器件输入/从器件输出数据线MISO、主器件输出/从器件输入数据线MOSI和从器件选择线CS。
典型的SPI系统是单主器件系统,从器件通常是外围接口器件,如存储器、I/O接口、A/D、D/A、键盘、日历/时钟和显示驱动等。单片机扩展多个外围器件时,SPI无法通过数据线译码选择,故外围器件都有片选端CS。在扩展单个SPI器件时,外围器件的片选端CS可以接地或通过I/O口控制;在扩展多个SPI器件时,单片机应分别通过I/O口线来分时选通外围器件。在SPI串行扩展系统中,如果某一从器件只作输入(如键盘)或只作输出(如显示器)时,可省去一条数据输出(MISO)线或一条数据输入(MOSI)线,从而构成双线系统(CS接地)。
SPI系统中,单片机对从器件的选通需控制其CS端,由于省去了地址字节,数据传送软件十分简单。但在扩展器件较多时,需要控制较多的从器件CS端,因此连线较多。在SPI 串行扩展系统中,作为主器件的单片机在启动一次传送时,便产生8个时钟,传送给接口芯片作为同步时钟,以控制数据的输入和输出。SPI 数据的传送格式是高位(MSB)在前,低位(LSB)在后,如图10—5所示。数据线上输出数据的变化和输入数据时的采样,都取决于SCK。但对于不同的外围芯片,有的可能是SCK的上升沿起作用,有的可能是SCK的下降沿起作用。SPI有较高的数据传输速度,最高可达1.05Mbit/s。