close

 一、程式說明:

       本程式使用的MCU是Sonix SN8F27E65,本文主要說明如何使用GPIO PIN透過軟體來模擬SPI的介面

       與STMicroelectronics的SPI Flash (M25P10-A)進行資料存取的溝通。

 

二、IC腳位的設定

 

             SPI.jpg 

              SPI-Flash.jpg  

三、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

SPI_Erase.jpg  

5.2 -  Bulk Erase Function

SPI_BulkErase.jpg 

5.3 -  Read Identification Function

ReadID.jpg  

5.4 -  Read Data Function

SPI_PPTEST_READ.jpg  

5.5 - Write Data Function

SPI_PPTEST.jpg  

 

Download: Smpl_SPI.rar

arrow
arrow
    全站熱搜

    yunjuihuang 發表在 痞客邦 留言(0) 人氣()