一、程式說明:
本程式使用的MCU是Sonix SN8F27E65,本文主要說明如何使用GPIO PIN透過軟體來模擬SPI的介面
與STMicroelectronics的SPI Flash (M25P10-A)進行資料存取的溝通。
二、IC腳位的設定
三、SPI的介面設計流程:
3.1 - 先將SCK設為low及SEL設為low。
3.2 - 判斷傳送值的第七位元,並讓其值來設定MOSI的狀態值。
3.3 - 等待10us後,將SCK設為High。
3‧4 - 等待5us後,判斷MISO的狀態值,並將其值存在Carray Flag,並左旋傳送數據
(將第n-1個位元變成第n個位元),以便儲存接下來的狀態值。
3.5 - 等待5us後將SCK設為Low。
3.6 - 從3.2項開始重覆接收八個bits
3.7 - 將SEL設為High。
PS. 1 - 關於SEL的設定方式有下列二種不同的方式:
1-1、有些設備的SEL設定是一次High、Low的期間將全部資料傳送完畢,
1-2、有些設備的SEL設定是一次High、Low的期間只傳送一個Byte。
本範例連接的設備是採用第一項的方式。
2、上述所設定的時間可視連接的設備進行調整。(本範例的頻率約為50khz)
四、SPI Flash控制說明:
4-1、由於Flash在進行Page Program時,只能將1設為零,因此如果要重覆寫入資料時
則必須要先執行Sector Erase或Bulk Erase才能正確的將新的資料寫入。
4-2、在開始寫入前必須先執行Write Enable的命令,當執行此命令後Status Register的
WEL欄位將會被設為1才可以開始執行寫入的動作。
4-3、 當要執行第二次傳送資料的動作時,必須先確認Status Register的WIP欄位是否為1;若
其值為1則表示資料正在寫入中,不能進行下一次的讀寫。
五、執行畫面:
5.1 - Sector Erase Function
5.2 - Bulk Erase Function
5.3 - Read Identification Function
5.4 - Read Data Function
5.5 - Write Data Function
Download: Smpl_SPI.rar
留言列表