(1)MISO引脚连接的设备做主机的时候是输入,做从机的时候是输出。MOSI引脚连接的设备做主机的时候是输出,做从机的时候是输入。
(2)SPI总线的空字节是0xFF吗?为什么呢?
1,维持MOSI为高.
2,产生时钟.
这个时候,你MOSI上面的数据,其实应该是不会被SPI从器件接受的.(当然,不排除某些SPI器件,必须要求MOSI一直是固定电平.)
而且看下图:
所以写0xff从机是不认的。
(3)在写入W25Q64之前,要先判断这个位置是否是0Xff,如果不是那么先把整个4k扇区的数据写入开启一个数组BUFFER(缓存区)里,然后去擦除整个扇区为0Xff,再然后将要写的数据的位置在BUFFER中找到并在BUFFER中改变其数值,最后将整个BUFFER更新到扇区中。
(1)SPI实验疑惑1 代码如下
没有第i个指针这个说法,这里的指针只有一个pbuffer(无符号字符型,unsigned char),指向首地址,pbuffer【i】指的是指针的偏移量。
跟数组的使用方式类似,所以,指针和数组在一定程度上可以混用。*(pBuffer+i) 基本等效于 pBuffer[i],因为地址相同。
void SPI_Flash_Read(u8* pBuffer,u32 ReadAddr,u16 NumByteToRead)
{
u16 i;
SPI_FLASH_CS=0; //使能器件
SPI1_ReadWriteByte(W25X_ReadData); //发送读取命令
SPI1_ReadWriteByte((u8)((ReadAddr)>>16)); //发送24bit地址
SPI1_ReadWriteByte((u8)((ReadAddr)>>8));
SPI1_ReadWriteByte((u8)ReadAddr);
for(i=0;i