SPI是由美国摩托罗拉公司推出的一种同步串行传输标准,常作为单片机外设芯片串行扩展接口。SPI有4个引脚:SS(从器材挑选线)、SDO(串行数据输出线)、SDI(串行数据输入线)和SCK(同步串行时钟线)。SPI能够用全双工通讯方法一起发送和接纳8(16)位数据,进程如下:主机发动发送进程,送出时钟脉冲信号,主移位寄存器的数据经过SDO移入到从移位寄存器,一起从移位寄存器中的数据经过SDI移人到主移位寄存器中。8(16)个时钟脉冲往后,时钟中止,主移位寄存器中的8(16)位数据悉数移人到从移位寄存器中,随即又被主动装入从接纳缓冲器中,从机接纳缓冲器满标志位(BF)和中止标志位(SSPIF)置“1”。同理,从移位寄存器中的8位数据悉数移入到主寄存器中,随即又被主动装入到主接纳缓冲器中.主接纳缓冲器满标志位(BF)和中止标志位(SSPIF)置“1”。主CPU检测到主接纳缓冲器的满标志位或许中止标志方位1后,就能够读取接纳缓冲器中的数据。相同,从CPU检测到从接纳缓冲器满标志位或中止标志方位1后,就能够读取接纳缓冲器中的数据,这样就完结了一次彼此通讯进程。这儿设置dsPIC30F6014为主操控器,ISD4002为从器材,经过SPI口完结通讯操控的进程。
SPI总线协议
脉冲 | 主机sbuff | 从机sbuff | sdi | sdo |
0 | 10101010 | 01010101 | 0 | 0 |
1上 | 0101010x | 1010101x | 0 | 1 |
1下 | 01010100 | 10101011 | 0 | 1 |
2上 | 1010100x | 0101011x | 1 | 0 |
2下 | 10101001 | 01010110 | 1 | 0 |
3上 | 0101001x | 1010110x | 0 | 1 |
3下 | 01010010 | 10101101 | 0 | 1 |
4上 | 1010010x | 0101101x | 1 | 0 |
4下 | 10100101 | 01011010 | 1 | 0 |
5上 | 0100101x | 1011010x | 0 | 1 |
5下 | 01001010 | 10110101 | 0 | 1 |
6上 | 1001010x | 0110101x | 1 | 0 |
6下 | 10010101 | 01101010 | 1 | 0 |
7上 | 0010101x | 1101010x | 0 | 1 |
7下 | 00101010 | 11010101 | 0 | 1 |
8上 | 0101010x | 1010101x | 1 | 0 |
8下 | 01010101 | 10101010 | 1 | 0 |
这样就完结了两个寄存器8位的交流,上面的上表明上升沿、下表明下降沿,sdi、sdo相对于主机而言的。其间ss引脚作为主机的时分,从机能够把它拉底被迫选为从机,作为从机的是时分,能够作为片选脚用。依据以上剖析,一个完好的传送周期是16位,即两个字节,由于,首要主机要发送指令曩昔,然后从机依据主机的名预备数据,主机鄙人一个8位时钟周期才把数据读回来
SPI 总线是Motorola公司推出的三线同步接口,同步串行3线方法进行通讯:一条时钟线SCK,一条数据输入线MOSI,一条数据输出线MISO;用于 CPU与各种外围器材进行全双工、同步串行通讯。SPI主要特点有:能够一起发出和接纳串行数据;能够当作主机或从机作业;供给频率可编程时钟;发送完毕中止标志;写抵触维护;总线竞赛维护等。图3示出SPI总线作业的四种方法,其间运用的最为广泛的是SPI0和SPI3方法(实线表明):
图2
SPI总线接口及时序
SPI功用模块的规划
依据功用界说及SPI的作业原理,将整个IP Core分为8个子模块:uC接口模块、时钟分频模块、发送数据FIFO模块、接纳数据FIFO模块、状况机模块、发送数据逻辑模块、接纳数据逻辑模块以及中止方式模块。
深入剖析SPI的四种传输协议能够发现,依据一种协议,只要对串行同步时钟进行转化,就能得到其他的三种协议。为了简化规划规则,假如要接连传输多个数据,在两个数据传输之间刺进一个串行时钟的闲暇等候,这样状况机只需两种状况(闲暇和作业)就能正确作业。