1. 柒:SPI匯流排,實現外部FLASH(W25Q128)讀寫
1:SPI是一種高速,全雙工的,同步的通信匯流排;
2:四線連接,MISO-主設備數據輸入,從設備數據輸出;MOSI-主設備數據輸出,從設備數據輸入;SCLK-時鍾信號,由主設備產生;CS-從設備片選信號,由主設備控制。
3:主機和從機各有一個串列移位寄存器,兩個寄存器中的數據在同一時刻被交換,如果只進行寫操作,主機只需要忽略接收到的位元組;如果主機要讀取從機中的位元組,就必須發送一個空位元組來引發從機的傳輸。
4:SPI可以設置輸出串列時鍾的極性和相位,時鍾極性與串列同步時鍾的空閑狀態的電平有關,CPOL=0,串列同步時鍾空閑狀態為低電平,反之為高;CPHA可以設置選擇兩種不同的傳輸協議,CPHA=0,串列同步時鍾的第一個跳邊沿數據被采樣,反之,在串列同步時鍾的第二個跳邊沿數據被采樣;
5:為了防止MISO匯流排沖突,同一時間只允許一個從設備與主設備通訊;
6:SPI主機和從機的時鍾極性和相位應該一致;
7:在數據傳輸(數據交換)的過程中,每次接收到的數據必須在下一次數據傳輸之前被采樣.如果之前接收到的數據沒有被讀取,那麼這些已經接收完成的數據將有可能會被丟棄,導致SPI物理模塊最終失效。因此,在程序中一般都會在SPI傳輸完數據後,去讀取SPI設備里的數據,即使這些數據(DummyData)在我們的程序里是無用的。
1:概述
2:時序
1:配置相關引腳復用為SPI,使能SPI時鍾;
2:設置SPI工作模式,包括主機或者從機、數據格式(高位在前還是低位在前)、設置串列時鍾的極性和相位(采樣方式)、SPI時鍾頻率(SPI的傳輸速度);
3:使能SPI;
spi.c-SPI驅動
flash.c-w25q128驅動