软件模拟spi的注意事项

前几天遇到了软件模拟spi的时候,读和写不一致的现象,后来仔细研究了一下,其实是时序性问题不对。

spi的有四种时序,硬件实现的时候,很简单,初始化后直接调用api即可。但是软件模拟就比较麻烦。

 

举例如下:

读时序如下:

 

 

 写时序如下:

 

 

 这两个结合起来就是下面四种spi模式的第四种

也就是模式2,如下所示:

值得注意的是:

按照上面的时序图,单片机应该是在上升沿输出数据(即写数据),

但是,读数据,看时序图好像是也上上升沿,其实是错误的,应该是下降沿读数据,即单片机在下降沿的时候采样丛集的数据。

网络参考:https://blog.csdn.net/ybhuangfugui/article/details/52068759

 

2.模拟SPI初始化

 

 

3.模拟SPI写函数(时序)

 

 

这种时序的写法在学习过51的朋友来看再熟悉不过了。

 

注意:

 

1、高字节在前,说以上面红色标记的的部分就是将高位先输出,依次移位输出。

 

2、在时钟的上升沿将数据输出,所以在“时钟-高”之前将数据输出。

4.模拟SPI读函数(时序) 

 

 

 

读时序和写时序原理类似,但还是存在差异。

 

注意:

 

1、高位先输出来(从机输出),所以,需要将读取的数据依次移向高位。

 

2、在时钟的下降沿读出数据,所以,我红色标记的部分可以看得出来,是在时钟为低之后才去读取数据。

 

posted @ 2020-02-28 17:18  wdliming  阅读(2896)  评论(0编辑  收藏  举报