前言:spi时钟信号完整性测试
数据寄存器 SPIDR图10. 数据寄存器 SPIDRSPIDR作为SPI收发两用的寄存器,数据在写入SPIDR后进入待传输队列,队列中的数据字节在前面数据传输结束后立即进行传输。状态寄存器SPISR的SPTEF位表示数据寄存器可以接收新数据。数据寄存器接收数据完毕后将SPIF置为1。 如果SPIF已经置为1,但服务并未运行(not serviced),则下一个(第二个)接收的数据字节将暂存在移位寄存器中直到下次传输。数据寄存器中的数据字节不变。如果SPIF已经置为1,并且移位寄存器中已经暂存数据(即第二个数据字节),并且SPIF服务在第三个数据字节传输前完成,则移位寄存器中的数据(即第二个数据字节)正常写入数据寄存器,SPIF仍保持置位状态(高),如图11所示;图11. SPIF服务及时完成如果SPIF已经置为1,并且移位寄存器中已经暂存数据(即第二个数据字节),并且SPIF服务在第三个数据字节传输后完成,则移位寄存器中的数据(即第二个数据字节)遭破坏,不能正常写入到数据寄存器,SPIF仍保持置位状态(高),如图12所示。图12. SPIF服务未及时完成SPI传输模式通过设置控制寄存器SPICR1中的CPOL和CPHA位,将SPI可以分成四种传输模式。CPOL,即Clock Polarity,决定时钟空闲时的电平为高或低。对于SPI数据传输格式没有显著影响。 1 = 时钟低电平时有效,空闲时为高 0 = 时钟高电平时有效,空闲时为低CPHA,即Clock Phase,定义SPI数据传输的两种基本模式。 1 = 数据采样发生在时钟(SCK)偶数(2,4,6,…,16)边沿(包括上下边沿) 0 = 数据采样发生在时钟(SCK)奇数(1,3,5,…,15)边沿(包括上下边沿)四种模式如下图13所示。先看列两张图(CPHA = 0),采样发生在个时钟跳变沿,即数据采样发生在SCK奇数边沿;再看第二列(CPHA =1),采样发生在第二个时钟跳变沿,即数据采样发生在SCK偶数边沿。行两张图(CPOL = 0),SCK空闲状态为低电平,第二行两张图(CPOL = 1),SCK空闲状态为高电平。主从设备进行SPI通讯时,要确保它们的传输模式设置相同。对于某些场合,可能需要调整CPOL/CPHA设置以满足设备特定要求。企业新闻