理论教育 Proteus和IAREWARM上的4.4.2SPI数据传输

Proteus和IAREWARM上的4.4.2SPI数据传输

时间:2023-11-03 理论教育 版权反馈
【摘要】:图4-12所示为LPC2138硬件SPI接口4种不同数据传输格式的时序。表4-26 SPI数据和时钟的相位关系8位数据传输的起始和停止,依据器件是主机还是从机以及CPHA变量的设置。SPI数据传输过程中可能发生以下异常状况:①读溢出。SPIF位置位表示读缓冲区包含了有效数据。SSEL信号在SPI模块为主机时必须无效,不能用作GPIO。

Proteus和IAREWARM上的4.4.2SPI数据传输

图4-12所示为LPC2138硬件SPI接口4种不同数据传输格式的时序。该时序图描述的是8位数据传输,时序图分成了3个部分。第一部分描述SCK和SSEL信号;第二部分描述CPHA=0时的MOSI和MISO信号;第三部分描述CPHA=1时的MOSI和MISO信号。

在时序图的第一部分需要注意两点:第一,时序图包含了CPOL置为0和1的情况;第二,SSEL信号的激活和未激活,当SPI接口为从机时SSEL用作器件的片选信号。

978-7-111-44508-1-Chapter04-64.jpg

图4-12 SPI数据传输格式(CPHA=0和CPHA=1)

SPI数据和时钟的相位关系如表4-26所列。该表汇集了CPOL和CPHA的每一种设定。

表4-26 SPI数据和时钟的相位关系

978-7-111-44508-1-Chapter04-65.jpg(www.daowen.com)

8位数据传输的起始和停止,依据器件是主机还是从机以及CPHA变量的设置。当器件为主机时,传输的起始由准备发送1个字节数据的主机启动,此时,主机可激活时钟并开始传输。当传输的最后一个时钟周期结束时,传输结束。当器件为从机并且CPHA=0时,传输在SSEL信号激活时开始,并在SSEL变为高电平时结束;当器件为从机且CPHA=1时,如果该器件被选择,传输从第一个时钟沿开始,并在数据采样的最后一个时钟沿结束。

SPI数据传输过程中可能发生以下异常状况:

①读溢出。当SP模块内部读缓冲区包含没有读出的数据,而新的传输已经完成,就会发生读溢出。SPIF位置位表示读缓冲区包含了有效数据。当一次传输结束时,SPI模块需要将接收到的数据移到读缓冲区。如果SPIF位置位(读缓冲区已满),新接收到的数据将会丢失,同时状态寄存器的读溢出(ROVR)位将置位。

②写冲突。SPI总线接口与内部移位寄存器之间没有写缓冲区,因而在SPI数据传输过程当中,从传输启动时开始,直到SPIF置位时读取状态寄存器为止,不能向SPI数据寄存器写入数据。如果在这段时间内写SPI数据寄存器,写入的数据将会丢失,同时状态寄存器中的写冲突位(WCOL)将置位。

③模式错误。SSEL信号在SPI模块为主机时必须无效,不能用作GPIO。当SPI模块为主机时,如果SSEL信号被激活(将SSEL变为低电平),表示有另外一个主机将该器件选择为从机,这种状态称为模式错误。当检测到一个模式错误时,状态寄存器的模式错误位(MODF)位置位,SPI信号驱动器关闭,SPI转换为从模式。

④从机中止。如果SSEL信号在传输结束之前变为高电平,则从传输将被认为中止。此时,正在处理的发送或接收数据都将丢失,状态寄存器的从机中止(ABRT)位将置位。

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈