最近在进行SPI学习,再次记录学习笔记。
四根信号线:
MOSI master output,slave input
MISO master input,slave output
SCLK clock from master
CS chip select
这种命名比那些SDI、SDO好理解多了。
1、上升沿发送,下降沿接收,高位先发送;
2、上升沿到来的时候,MOSI上的电平将被发送到从设备的寄存器中;
3、下降沿到来的时候,MISO上的电平将被接收到主设备的寄存器中;
4、SPI为全双工,主机和从机同时发送、同时接收;
5、假设下面的8位寄存器装的是待发送的数据10101010,上升沿发送、下降沿接收、高位先发送。
6、那么第一个上升沿来的时候数据将会是sdo=1;寄存器=0101010x。下降沿到来的时候,sdi上的电平将所存到寄存器中去,那么这时寄存器=0101010sdi,这样在8个时钟脉冲以后,两个寄存器的内容互相交换一次。这样就完成里一个spi时序。
7、
例子:
假设主机和从机初始化就绪:并且主机的sbuff=0xaa,从机的sbuff=0x55,下面将分步对spi的8个时钟周期的数据情况演示一遍:假设上升沿发送数据
如下表所示,x代表SBUFF寄存器中的空位,即:高位数据发送出去后,后面的位前移后空出的低位。
上升沿到来时,主机和从机SBUFF寄存器中的高位分别发送到MOSI和MISO上,在下降沿到来时,分别进入从机和主机SBUFF的低位。
网上的这个表格在后两列MISO和MOSI的上升沿和下降沿使用了两行,我认为不便于理解,我把表格合并为一行,即每到上升沿发送一次数据。
脉冲
|
主机SBUFF
|
从机SBUFF
|
MISO
< |