软件SPI同样分为3层,SPI层,W25Q64层,main()层
一、SPI层
SPI有四根通讯线:SCK串行时钟、MOSI主机输出、MISO主机接受、SS选择从机(给相应 的从机SS置0为选中)。(因为有时钟线所以为同步,因为输入输出各有一条线称为全双 工)。输出引脚为推挽输出,输入引脚为上拉或浮空输入。
工作原理为,循环一个字节输入输出。当主机输出时无视从机的输入即可。
起始条件:ss从高电平变为低电平,终止条件SS从低电平变为高电平。有四种工作模式按照SCK高低电平转换和移出移入数据在哪个沿发生所分,W25Q64支持模式0和3。
模式0:SCK空闲时为低电平,上升沿移入数据,下降沿移出数据。(想让第几位为1就在第几个上升沿之前置位1,接收数据与发送数据相反);写一个字节需要五个字节的输出:第一个字节发送写指令、二至四字节为地址,最后一个字节才是数据。读一个字节也相同的数据。
相应的代码部分为:
1、初始SPI,MySPI_Init() ,开启GPIO时钟,设置SS,SCK,MOSI为推挽输出。MISO为上拉输入
SS置为1准备使用SCK置为0.同时将SS、SCK、MOSI、MISO封装成方便置1置0的函数。
2.开始与结束函数是简单的将SS的变化