看完了主模式,现在来说从模式,SPICTL.2=0,数据从SPISOMI引脚输出,从SPISIMO引脚读入,从外部网络获取的SPICLK信号被用作串行移位时钟信号。传输速率由时钟信号控制,该时钟信号不能超过LSPCLK/4。
说完了数据部分,我们现在来看看中断部分。
主要有五个控制器位用来初始化中断:
SPI INT ENA bit (SPICTL.0)—中断使能位;
SPI INT FLAG bit (SPISTS.6)—中断标志位;
OVERRUN INT ENA bit (SPICTL.4)—超限中断使能位;
RECEIVER OVERRUN FLAG(SPISTS.7)—接收器超限中断标志位;
SPI PRIORITY(SPIPRI.6)—中断优先级选择位;
看完了中断,我们再来看下时钟。
SPI有四种时钟模式,模式选择由CLOCK POLARITY bit (SPICCR.6) 和 CLOCK PHASE bit (SPICTL.3)控制。其中CLOCK POLARITY bit选择有效的时钟跳变沿,时钟上升沿或者下降沿;CLOCK PHASE bit控制时延半个时钟周期。直接给大家上一幅图,大家就明白了:
看完例子,来看四线最后一个内容:SPI FIFO
FIFO很好理解,就是first in,first out 先进先出。那主要有什么特点呢?
最后一点,可编程中断级别,来看看中断
到这里四线就讲完了,现在来看看三线模式。
四线和三线主要的变化就是那两个输入缓存寄存器变成一个了。但同时也有一个问题,就是发送和接收相当于连接在一起了,在进行数据的读写时,都要非常小心。
在三线模式中,TALK bit (SPICTL.1)这一位很重要,这位在传输数据时必须置1,在读数据的时候之前必须清零。在主模式中,为了启动读数据,在TALK位清零读数据之前,必须先写一个假数据到SPIDAT or SPIRXBUF寄存器。
三线控制如下: