学习SPI的一些疑惑
(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
總結
以上是生活随笔為你收集整理的学习SPI的一些疑惑的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 用中断的方式实现delay延时的一点注释
- 下一篇: VS1053