软件模拟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、在时钟的下降沿读出数据,所以,我红色标记的部分可以看得出来,是在时钟为低之后才去读取数据。