第1节 SPI的基本工作原理
10.1.1 SPI概述
串行外设接口(SPI,Serial Peripheral Interfac)是Freescale公司推出的一种同步串行通信接口,用于微处理器和外围扩展芯片之间的串行连接,现已发展成为一种工业标准。
目前,各半导体公司推出了大量的带有SPI接口的具有各种各样功能的芯片,如RAM、EEPROM、Flash ROM、A/D转换器、D/A 转换器、LED/LCD显示驱动器、I/O 接口芯片、实时时钟、UART收发器等,为用户的外围扩展提供了极其灵活而价廉的选择。
Freescale 08系列MCU中含有串行外设接口模块,它是MCU与外界联系的重要方式之一。
SPI特性描述如下:
①全双工。
②主、从工作方式。
③发送和接收的数据寄存器相互独立从而实现双缓存操作。
④主机可以设定4种工作频率(最大可达总线频率的二分之一)。
⑤从机最大工作频率等于总线频率。
⑥发送结束、接收结束、工作方式错误和溢出错误四种中断标志。
⑦一个主控MCU和几个从控MCU相互连接。
⑧几个MCU相互连接构成一个多主机系统。
⑨一个主控MCU和一个或多个从属外设相互连接。
SPI系统最常见的应用是一个主控MCU做主机,主机发起并控制数据的传送和流向,只有在主机发出通知后,从设备才能从主机读取数据或向主机发送数据。
10.1.2 SPI的数据传输
利用SPI进行MCU之间的数据传输时,有个主机(master)和从机(slave)的概念,主机的程序控制着数据传输,从机的程序必须配合主机工作,完成传输过程。在MCU扩展外设结构中,仍使用主机-从机(master-slave)概念,那么MCU必须工作于主机方式,外设处于从机方式。
图10-1是SPI的主-从连接示意图,参与数据传输的有三个引脚,它们是:时钟引脚SPSCK、主入从出引脚MISO、主出从入引脚MOSI。下面一节将对它们作详细的说明,这里仅说明其数据传输过程:图中的移位寄存器为8位,所以每一工作过程相互传送8位数据,工作从主机CPU发出启动传输信号开始,此时要传送的数据装入8位移位寄存器,同时产生8个时钟信号从SPSCK引脚依次送出,在SPSCK信号的控制下,主机中8位移位寄存器中的数据依次从MOSI引脚送出,到从机的MOSI引脚送入它的8位移位寄存器,在此过程中,从机的数据也通过MISO引脚到主机中。所以,我们称之为全双工主-从连接(Full-Duplex Master-Slave Connections)。其数据的传输格式是高位(MSB)在前,低位(LSB)在后。
图10-1是一个主MCU和一个从MCU的连接,也可以一个主MCU与多个从MCU进行连接形成一个主机多个从机的系统;还可以多个MCU互联构成多主机系统;另外也可以一个MCU挂接多个从属外设。但是,SPI系统最常见的应用是利用一个MCU作为主机,其它处于从机地位,这样,主机的程序启动并控制数据的传送和流向,在主机的控制下,从属设备从主机读取数据或向主机发送数据。
10.1.3 SPI模块的时序
SPI是在同步信号SPSCK的控制下完成数据的传输,根据控制位CPHA和CPOL的不同,数据线和时钟线产生4种可能的时序。图10-2、图10-3、图10-4和图10-5给出了数据线与SPSCK之间的关系。从时序图上可以看出,CPOL为1或0时,时钟信号SPSCK的出现正好是反相关系,CPHA用来选择两种不同的定时协议中的一种,以对允许SPI系统与各种同步外设通信。主机和从机必须使用同样的时序模式,才能正常通信。
从图10-2可以看出,当CPHA=0,CPOL=0时,MISO引脚上的数据在第一个SPSCK沿跳变之前已经上线了,而为了保证正确传输,MOSI引脚的MSB位必须与SPSCK的第一个边沿同步,在SPI传输过程中,首先将数据上线,然后在同步时钟信号的上升沿时,SPI的接收方捕捉位信号,在时钟信号的一个周期结束时(下降沿),下一位数据信号上线,再重复上述过程,直到一个字节的8位信号传输结束。
图10-3是当CPHA=0,CPOL=1时的数据线和时钟线的时序,与图10-2唯一不同之处只是在同步时钟信号的下降沿时捕捉位信号,上升沿时下一位数据上线。
从图10-4可以看出,在CPHA=1,CPOL=0时,MISO引脚和MOSI引脚上的数据的MSB位必须与SPSCK的第一个边沿同步,在SPI传输过程中,在同步时钟信号周期开始时(上升沿)数据上线,然后在同步时钟信号的下降沿时,SPI的接收方捕捉位信号,在时钟信号的一个周期结束时(上升沿),下一位数据信号上线,再重复上述过程,直到一个字节的8位信号传输结束。
图10-5是当CPHA=1,CPOL=1时的数据线和时钟线的时序,与图10-4唯一不同之处只是在同步时钟信号的上升沿时捕捉位信号,下降沿时下一位数据上线。
串行外设接口(SPI,Serial Peripheral Interfac)是Freescale公司推出的一种同步串行通信接口,用于微处理器和外围扩展芯片之间的串行连接,现已发展成为一种工业标准。
目前,各半导体公司推出了大量的带有SPI接口的具有各种各样功能的芯片,如RAM、EEPROM、Flash ROM、A/D转换器、D/A 转换器、LED/LCD显示驱动器、I/O 接口芯片、实时时钟、UART收发器等,为用户的外围扩展提供了极其灵活而价廉的选择。
Freescale 08系列MCU中含有串行外设接口模块,它是MCU与外界联系的重要方式之一。
SPI特性描述如下:
①全双工。
②主、从工作方式。
③发送和接收的数据寄存器相互独立从而实现双缓存操作。
④主机可以设定4种工作频率(最大可达总线频率的二分之一)。
⑤从机最大工作频率等于总线频率。
⑥发送结束、接收结束、工作方式错误和溢出错误四种中断标志。
⑦一个主控MCU和几个从控MCU相互连接。
⑧几个MCU相互连接构成一个多主机系统。
⑨一个主控MCU和一个或多个从属外设相互连接。
SPI系统最常见的应用是一个主控MCU做主机,主机发起并控制数据的传送和流向,只有在主机发出通知后,从设备才能从主机读取数据或向主机发送数据。
10.1.2 SPI的数据传输
利用SPI进行MCU之间的数据传输时,有个主机(master)和从机(slave)的概念,主机的程序控制着数据传输,从机的程序必须配合主机工作,完成传输过程。在MCU扩展外设结构中,仍使用主机-从机(master-slave)概念,那么MCU必须工作于主机方式,外设处于从机方式。
图10-1是SPI的主-从连接示意图,参与数据传输的有三个引脚,它们是:时钟引脚SPSCK、主入从出引脚MISO、主出从入引脚MOSI。下面一节将对它们作详细的说明,这里仅说明其数据传输过程:图中的移位寄存器为8位,所以每一工作过程相互传送8位数据,工作从主机CPU发出启动传输信号开始,此时要传送的数据装入8位移位寄存器,同时产生8个时钟信号从SPSCK引脚依次送出,在SPSCK信号的控制下,主机中8位移位寄存器中的数据依次从MOSI引脚送出,到从机的MOSI引脚送入它的8位移位寄存器,在此过程中,从机的数据也通过MISO引脚到主机中。所以,我们称之为全双工主-从连接(Full-Duplex Master-Slave Connections)。其数据的传输格式是高位(MSB)在前,低位(LSB)在后。
图10-1是一个主MCU和一个从MCU的连接,也可以一个主MCU与多个从MCU进行连接形成一个主机多个从机的系统;还可以多个MCU互联构成多主机系统;另外也可以一个MCU挂接多个从属外设。但是,SPI系统最常见的应用是利用一个MCU作为主机,其它处于从机地位,这样,主机的程序启动并控制数据的传送和流向,在主机的控制下,从属设备从主机读取数据或向主机发送数据。

10.1.3 SPI模块的时序
SPI是在同步信号SPSCK的控制下完成数据的传输,根据控制位CPHA和CPOL的不同,数据线和时钟线产生4种可能的时序。图10-2、图10-3、图10-4和图10-5给出了数据线与SPSCK之间的关系。从时序图上可以看出,CPOL为1或0时,时钟信号SPSCK的出现正好是反相关系,CPHA用来选择两种不同的定时协议中的一种,以对允许SPI系统与各种同步外设通信。主机和从机必须使用同样的时序模式,才能正常通信。
从图10-2可以看出,当CPHA=0,CPOL=0时,MISO引脚上的数据在第一个SPSCK沿跳变之前已经上线了,而为了保证正确传输,MOSI引脚的MSB位必须与SPSCK的第一个边沿同步,在SPI传输过程中,首先将数据上线,然后在同步时钟信号的上升沿时,SPI的接收方捕捉位信号,在时钟信号的一个周期结束时(下降沿),下一位数据信号上线,再重复上述过程,直到一个字节的8位信号传输结束。
图10-3是当CPHA=0,CPOL=1时的数据线和时钟线的时序,与图10-2唯一不同之处只是在同步时钟信号的下降沿时捕捉位信号,上升沿时下一位数据上线。

从图10-4可以看出,在CPHA=1,CPOL=0时,MISO引脚和MOSI引脚上的数据的MSB位必须与SPSCK的第一个边沿同步,在SPI传输过程中,在同步时钟信号周期开始时(上升沿)数据上线,然后在同步时钟信号的下降沿时,SPI的接收方捕捉位信号,在时钟信号的一个周期结束时(上升沿),下一位数据信号上线,再重复上述过程,直到一个字节的8位信号传输结束。
图10-5是当CPHA=1,CPOL=1时的数据线和时钟线的时序,与图10-4唯一不同之处只是在同步时钟信号的上升沿时捕捉位信号,下降沿时下一位数据上线。



