SPI形式答应一起、同步发送和接纳 8位数据。支撑 SPI的一切四种形式。一般用以下三个引脚来完结通讯:
• 串行数据输出 (SDO)
• 串行数据输入 (SDI)
• 串行时钟 (SCK)
当作业在从动形式时,或许还需求第 4个引脚:
• 从动挑选 (SS)
结构框图:
SSP模块由一个发送/接纳移位寄存器(SSPSR)和一个缓冲寄存器(SSPBUF)组成。SSPSR用于器材输入和输出数据的移位,高位在前。在新的数据接纳结束前,SSPBUF保存前次写入SSPSR的数据。一旦8位新数据接纳结束,该字节被送入SSPBUF寄存器。一起缓冲区满标志位BF(SSPSTAT <0>)和中止标志位 SSPIF置1。这种两层缓冲接纳办法,答应接纳数据被读走之前,开端接纳下一个数据。在数据发送/接纳期间,任何企图写SSPBUF寄存器的操作都无
效,却会将写抵触检测位WCOL(SSPCON<7>)置1。此刻用户有必要用软件将WCOL位清零,以判别下一次对SSPBUF的写操作是否成功完结。为保证使用软件有用地接纳数据,应该在新数据写入SSPBUF之前,将SSPBUF中的数据读走。
缓冲区满标志位BF(SSPSTAT<0>)用于表明SSPBUF是否现已载入了接纳的数据(发送完结)。当SSPBUF中的数据被读取后,BF位即被清零。假如SPI只是作为一个发送器,则不用理睬这一位。一般可用SSP中止来判别发送或接纳是否完结。假如需求接纳数据,可从SSPBUF中读取。SSP中止一般用来确认发送/接纳何时完结。有必要对SSPBUF进行读和/写。假如不计划运用中止办法,用软件查询办法相同可保证不会产生写抵触。
主控形式的操作
由于主操控器操控着SCK信号,所以它能够在任何时候发动数据传输,一起主操控器经过软件协议来决议从操控器何时发送数据。在主控形式下,数据一旦写入SSPBUF就开端发送或接纳。假如SPI仅作为接纳器,则SDO输出能够制止(将其设置为输进口 )。SSPSR寄存器按编程设置的时钟速率,对SDI引脚上的信号进行接连地移位输入,每接纳完一个字节,都把其送入 SSPBUF,就象一般的接纳字节相同(相应的中止和状况方位1)。这在作为“在线自动监控”办法的接纳器使用中是很有用的。时钟极性可经过对SSPCON寄存器的CKP位(SSPCON<4>)进行恰当的编程来设定。在主控形式下,SPI 时钟速率(位速率)可由用户编程设定为下面几种办法之一 :
•FOSC/4 (或 TCY)
•FOSC/16 (或 4 • TCY)
•FOSC/64 (或 16 • TCY)
• 定时器2 输出 /2
这儿答应的最大数据速率是8.25 Mbps(当晶振为 20 MHz时 )。图 17-6 给出了主控形式的时序图。当CKE方位1时,SDO数据在SCK的第一个时钟边缘前就有用。图中所示输入采样的改变则由SMP位的状况决议。图中一起给出了何时将接纳到的数据写入SSPBUF。
典型使用