ht8 mcu spi 應用須知 - holtek · 2020. 8. 5. · ht8 mcu spi應用須知 an0488tc v1.10 2 / 13...

13
HT8 MCU SPI 應用須知 AN0488TC V1.10 1 / 13 July 31, 2020 HT8 MCU SPI 應用須知 文件編碼:AN0488TC 簡介 Holtek 8-bit Flash MCU 包含 SPI 通訊介面,SPI 通訊介面包含在介面模組(SIM)中,介面模組 (SIM)支援 SPI I 2 C 兩種功能,特定 MCU 內部還支援 UART 功能,三種通訊模組包含在 USIM 中。本文以 Motorola 所制定之標準 SPI 通信協議,分別由功能說明、主從機通信時序 及使用注意事項等介紹 HT8 MCU SPI 應用方法,並且補充說明 SPI 通訊三線模式使用方式, 希望能給用戶帶來幫助。 功能說明 SPI 介面及特點 介面說明 SPI (Serial Peripheral Interface) 是一個為主從式同步串列資料傳輸介面,使用四線式方式傳輸, 分別為 SDISDOSCK SCS SDI SDO 是資料輸入和輸出線,SCK 是串列時鐘線, SCS 是從機的選擇線(如下圖 1 所示)SPI 的介面引腳與普通 I/O 口和 I 2 C 的功能腳共用,需 通過設定 SIM[2:0]以使能 SPI 介面。SPI 可以通過 SIMC0 暫存器中的 SIMEN 位元來除能或 使能。介面以主/從模式進行通信,且主機需完成所有的資料格式設置,並控制時鐘信號。 SCK SPI Master SDO SDI SCK SPI Slave SDI SDO SCS SCS VDD 1. SPI 主從機連接方式 特點介紹 SPI 功能具有以下特點: 1. 採主從模式控制方式。 2. 採同步傳輸數據。 3. 可決定最低有效位元(LSB)先傳或最高有效位元(MSB)先傳的資料傳輸模式。 4. 傳輸完成旗標位元。 5. 時鐘源上升緣或下降緣有效。

Upload: others

Post on 29-Jan-2021

4 views

Category:

Documents


0 download

TRANSCRIPT

  • HT8 MCU SPI 應用須知

    AN0488TC V1.10 1 / 13 July 31, 2020

    HT8 MCU SPI 應用須知

    文件編碼:AN0488TC

    簡介

    Holtek 8-bit Flash MCU 包含 SPI 通訊介面,SPI 通訊介面包含在介面模組(SIM)中,介面模組

    (SIM)支援 SPI 和 I2C 兩種功能,特定 MCU 內部還支援 UART 功能,三種通訊模組包含在

    USIM 中。本文以 Motorola 所制定之標準 SPI 通信協議,分別由功能說明、主從機通信時序

    及使用注意事項等介紹 HT8 MCU SPI 應用方法,並且補充說明 SPI 通訊三線模式使用方式,

    希望能給用戶帶來幫助。

    功能說明

    SPI 介面及特點

    介面說明

    SPI (Serial Peripheral Interface) 是一個為主從式同步串列資料傳輸介面,使用四線式方式傳輸,

    分別為 SDI、SDO、SCK 及 SCS�����,SDI 和 SDO 是資料輸入和輸出線,SCK 是串列時鐘線,

    SCS�����是從機的選擇線(如下圖 1 所示)。SPI 的介面引腳與普通 I/O 口和 I2C 的功能腳共用,需

    通過設定 SIM[2:0]以使能 SPI 介面。SPI 可以通過 SIMC0 暫存器中的 SIMEN 位元來除能或

    使能。介面以主/從模式進行通信,且主機需完成所有的資料格式設置,並控制時鐘信號。

    SCK

    SPI Master

    SDO

    SDI

    SCK

    SPI Slave

    SDI

    SDO

    SCS SCS

    VDD

    圖 1. SPI 主從機連接方式

    特點介紹

    SPI 功能具有以下特點:

    1. 採主從模式控制方式。 2. 採同步傳輸數據。 3. 可決定最低有效位元(LSB)先傳或最高有效位元(MSB)先傳的資料傳輸模式。 4. 傳輸完成旗標位元。 5. 時鐘源上升緣或下降緣有效。

  • HT8 MCU SPI 應用須知

    AN0488TC V1.10 2 / 13 July 31, 2020

    方塊圖

    以下方塊圖以 HT66FV140 為例:

    SIMD

    TX/RX Shift RegisterSDI Pin

    Clock Edge/Polarity

    Control

    CKEG

    CKPOLB

    ClockSourceSelect

    fSYSfSUB

    CTM0 CCRP match frequency/2

    SCK Pin

    CSEN

    Busy Status

    SDO Pin

    SCS Pin

    Data Bus

    WCOLTRFSIMICF

    圖 2. SPI 方塊圖

    如上圖 2 所示,時鐘信號輸入與輸出方式由 CKEG 和 CKPOLB 選擇,SCS�����引腳功能以 CSEN

    控制是否致能,SPI 當前數據狀態可由 WCOL 和 TRF 得知,例如寫數據是否衝突,發送或

    接收數據是否完成。即將發送或剛接收到的資料會存放於 SIMD。以下介紹 SPI 暫存器功能。

    暫存器介紹

    SPI 暫存器一共有 3 個。分別為 SIMD、SIMC0 及 SIMC2。

    SIMD 暫存器

    SIMD 暫存器用來儲存立即要傳送或者剛接收到的資料。

    Bit 7 6 5 4 3 2 1 0

    Name D7 D6 D5 D4 D3 D2 D1 D0

    R/W R/W R/W R/W R/W R/W R/W R/W R/W

    POR × × × × × × × ×

    "×" unknown

    SIMC0 暫存器

    SIMC0 暫存器用來打開或者關閉串列總線功能,設置 SIM 模式。

    Bit 7 6 5 4 3 2 1 0

    Name SIM2 SIM1 SIM0 — — — SIMEN SIMICF

    R/W R/W R/W R/W — — — R/W R/W

    POR 1 1 1 — — — 0 0

    SIM2~SIM0:SIM 操作模式控制位元。 000:SPI 主機模式;SPI 時鐘為 fSYS/4

    001:SPI 主機模式;SPI 時鐘為 fSYS/16

    010:SPI 主機模式;SPI 時鐘為 fSYS/64

    011:SPI 主機模式;SPI 時鐘為 fSUB

    100:SPI 主機模式;SPI 時鐘為 CTM0 CCRP 匹配頻率/2

    101:SPI 從機模式

    111:非 SIM 功能

    SIMEN:SIM 模塊使能位元。0=關閉 SIM 模塊,1=啟動 SIM 模塊。

    SIMICF : SPI 傳輸發生錯誤旗標。

  • HT8 MCU SPI 應用須知

    AN0488TC V1.10 3 / 13 July 31, 2020

    SIMC2 暫存器

    Bit 7 6 5 4 3 2 1 0

    Name D7 D6 CKPOLB CKEG MLS CSEN WCOL TRF

    R/W R/W R/W R/W R/W R/W R/W R/W R/W

    POR 0 0 0 0 0 0 0 0

    TRF:傳送/接收完成旗標位元,當傳送或者接收完成後,它將自動被置為 1,需要軟體清除。

    WCOL:資料寫入衝突旗標位元,1 表示數據發生衝突,此時寫入數據被忽略。0 表示數據無衝突,該位可被軟體清除。

    CSEN:SCS�����引腳控制位元。CSEN=0,SCS�����引腳處於浮空狀態;CSEN=1,SCS�����使能並做為選擇腳。

    MLS:MSB 或 LSB 選擇位元。為 0 低位元優先,為 1 高位元優先。

    CKEG 和 CKPOLB:資料傳輸前必須先設置這兩個位元。CKPOLB 位元決定時鐘線的起始狀態,當為高時,時鐘線在不活動的狀態下為低,反之為高。CKEG 位元決定時鐘線

    有效時的時鐘緣類型,它將依賴於 CKPOL 的值,下面是這 2 位元組合起來的情況(可參

    考 SPI 通信時序)。

    SPI 通信時序

    當 SPI 使能(SIMEN=1)後,分別對主機模式或從機模式進行工作說明,MCU 為主機模式時,

    資料寫入到暫存器 SIMD 的同時,傳輸/接收開始進行。資料傳輸完成時,TRF 位將自動被

    置位,但只能通過軟體清除;MCU 為從機模式時,收到主機發來的信號之後,會傳輸 SIMD

    中的資料,而且在 SDI 引腳上的資料也會被移位到 SIMD 暫存器中。

    主機應在輸出時鐘信號之前先輸出一個SCS�����信號以使能從機,從機的資料傳輸功能也應在與

    SCK 信號相關的適當時候準備就緒,這由 CKPOLB 和 CKEG 位元決定。所附下列時序圖明

    瞭在 CKPOLB 和 CKEG 位元各種設置情況下,從機資料與 SCK 信號的關係。

    註:在 MCU 處於空閒模式(IDLE1),SPI 功能仍將繼續執行。

    SCK (CKPOLB=1, CKEG=0)

    SCK (CKPOLB=0, CKEG=0)

    SCK (CKPOLB=1, CKEG=1)

    SCK (CKPOLB=0, CKEG=1)

    SCS

    SDO (CKEG=0)

    SDO (CKEG=1)

    SDI Data CaptureWrite to SIMD

    SIMEN, CSEN=1SIMEN=1, CSEN=0 (External Pull-high)

    D7/D0 D6/D1 D5/D2 D4/D3 D3/D4 D2/D5 D1/D6 D0/D7

    D7/D0 D6/D1 D5/D2 D4/D3 D3/D4 D2/D5 D1/D6 D0/D7

    圖 3. SPI 主機模式時序(資料存取格式)

  • HT8 MCU SPI 應用須知

    AN0488TC V1.10 4 / 13 July 31, 2020

    SCK (CKPOLB=1)

    SCK (CKPOLB=0)

    SCS

    SDO

    SDI Data Capture

    Write to SIMD(SDO does not change until first SCK edge)

    D7/D0 D6/D1 D5/D2 D4/D3 D3/D4 D2/D5 D1/D6 D0/D7

    圖 4. SPI 從機模式時序 - CKEG=0 (有效時鐘邊緣)

    SCK (CKPOLB=1)

    SCK (CKPOLB=0)

    SCS

    SDO

    SDI Data Capture

    D7/D0 D6/D1 D5/D2 D4/D3 D3/D4 D2/D5 D1/D6 D0/D7

    Write to SIMD(SDO changes as soon as writing occurs; SDO is floating if SCS=1)

    圖 5. SPI 從機模式時序 - CKEG=1 (有效時鐘邊緣)

    SPI 傳輸控制流程圖

    Clear WCOL Write Data into SIMD

    WCOL=1?

    Transmission completed?(TRF=1?)

    Read Data from SIMD

    Clear TRF

    END

    Transfer finished?

    ASPI Transfer

    Master or Slave?

    SIMEN=1

    Configure CKPOLB, CKEG, CSEN and MLS

    A

    SIM[2:0]=000, 001, 010, 011 or 100 SIM[2:0]=101

    Master Slave

    Y

    Y

    N

    N

    N

    Y

    圖 6. SPI 傳輸控制流程圖

  • HT8 MCU SPI 應用須知

    AN0488TC V1.10 5 / 13 July 31, 2020

    SPI 傳輸控制步驟說明

    主機模式

    步驟 1:設定 SIM[2:0]決定主機模式和傳輸速率。

    步驟 2:設定 CSEN 並利用 MLS 來選擇資料從高位或低位元開始,主/從機須設置一致。

    步驟 3:設定 SIMEN 以打開 SPI 功能。

    步驟 4:將欲傳出資料寫入 SIMD 暫存器,檢查 WCOL:WCOL=1 → 發生衝突錯誤,並跳至步驟 4。WCOL=0 → 跳至步驟 5。

    步驟 5:SPI H/W 自行將資料存入 TXRX 緩衝後並開始傳輸資料。

    步驟 6:檢查 TRF。

    步驟 7:從 SIMD 暫存器讀取資料。

    步驟 8:清除 TRF。

    步驟 9:傳輸完成,如需再傳輸則返回步驟 4。

    從機模式

    步驟 1:設定 SIM[2:0]決定從機模式。

    步驟 2:設定 CSEN 並利用 MLS 來選擇資料從高位或低位元開始,主/從機須設置一致。

    步驟 3:設置 SIMEN 以打開 SPI 功能。

    步驟 4:將欲寫入資料寫入 SIMD 暫存器,檢查 WCOL:WCOL=1 → 發生衝突錯誤,並跳至步驟 4。WCOL=0 → 跳至步驟 5。

    步驟 5:SPI H/W 自行將資料存入 TXRX 緩衝後並開始傳輸資料。

    步驟 6:檢查 TRF。

    步驟 7:從 SIMD 暫存器讀取資料。

    步驟 8:清除 TRF。

    步驟 9:傳輸完成,如需再傳輸則返回步驟 4。

    使用注意事項

    1. fSYS、fSUB 及 CTM0 可決定 SPI 輸出及輸入移位暫存器的傳輸速率,藉由 SIM[2:0]位元來選

    擇適合速率進行傳輸。主機控制的時鐘頻率要考慮從機接收的最快速率,例如:讀 SPI

    介面的 Flash 時,要根據 Flash 的最快速率來設置主機的時鐘。

    SIM2~SIM0:SIM 操作模式控制位元。

    000:SPI 主機模式;SPI 時鐘為 fSYS/4

    001:SPI 主機模式;SPI 時鐘為 fSYS /16

    010:SPI 主機模式;SPI 時鐘為 fSYS /64

    011:SPI 主機模式;SPI 時鐘為 fSUB

    100:SPI 主機模式;SPI 時鐘為 CTM0 CCRP 匹配頻率/2

    101:SPI 從機模式

    註:若選擇的是作為 SPI 從機,則其時鐘源從外部主機控制。

    2. SPI 通信模式為全雙工模式,且能以主/從模式的工作方式進行通信,MCU 既可以做為主

    機,也可以做為從機。雖然 SPI 介面理論上允許一個主機控制多個從機,但此處的 SPI 中

    只有一個選信號引腳SCS�����。若主機需要控制多個從機,可使用輸入/輸出引腳選擇從機。

  • HT8 MCU SPI 應用須知

    AN0488TC V1.10 6 / 13 July 31, 2020

    SIMC2 暫存器之 Bit 2 用於控制SCS�����腳的使能和除能,如下說明:

    Bit 2 CSEN:SPI SCS�����引腳控制位元 0:除能

    1:使能

    VDDIO PIN 使用說明

    為了適應不同的週邊器件介面電壓需要,部分 HT8 MCU 對 SPI 模組增加了 VDDIO 管腳,

    可進行電壓轉換(Level Shift)。例如:HT66FV140 Enhanced Voice 8-Bit Flash MCU 需要工作在

    5V 時,但外接 SPI Flash 工作電壓卻為 3.3V。此時 VDD 可接 5V,VDDIO 可接 3.3V。這樣

    就解決了 MCU 工作電壓與週邊電壓匹配問題。可通過 PBS0 暫存器之 Bit 1~0 來配置 VDDIO

    管腳功能。如下:

    PBS01~PBS00:PB0 功能選擇

    00/01/10 :PB0

    11 :VDDIO

    該引腳作為 VDDIO 時,相應的 I/O 功能及其上拉電阻都將除能,Port C 的電源將由 VDDIO

    引腳提供。

    註:詳細請參考 HT66FV140 Enhanced Voice 8-Bit Flash MCU 規格書。

    硬體電路圖

    圖 7. HT8 SPI 通訊電路圖

    +5V

    C1

    104

    1234

    OCDS(ICP)

    JP-M

    +5V

    OCDS-CK-MOCDS-DA-M

    KEY

    1234

    OCDS(ICP)

    JP-S

    +5V

    OCDS-CK-SOCDS-DA-S

    +5V

    C2

    104

    VDD24

    VSS25

    SCS 7

    SCK 5

    SDI 6

    SDO 2

    PA0/OCDSDA14PA2/OCDSCK13

    PA11

    MASTER

    HT66FV140-28

    VDD 24

    VSS 25

    SCS7

    SCK5

    SDI6

    SDO2

    PA0/OCDSDA14PA2/OCDSCK13

    SLAVE

    HT66FV140-28

    OCDS-CK-M

    OCDS-DA-MOCDS-CK-S

    OCDS-DA-S

  • HT8 MCU SPI 應用須知

    AN0488TC V1.10 7 / 13 July 31, 2020

    硬體電路說明

    在主從機同時上電後,按下按鍵 KEY,則主機向從機開始發送資料。

    在主從機連接時要注意,主機的 SDI 接從機的 SDO,主機的 SDO 接從機的 SDI,主機的 SCK

    接從機的 SCK,主機的SCS�����接從機的 SCS�����。

    OCDS 介面,可用來模擬調試或燒錄 IC 用。

    SPI 通訊三線模式使用說明

    因應部分 HT8 MCU 使用需求不同,沒有將SCS�����引腳拉出,故衍生出三線 SPI 傳輸方式,SCS�����

    引腳主要用於選擇從機裝置,主機將引腳拉低準位告知從機準備傳輸資料,當傳輸發生移

    位時,也可利用此引腳重新同步,當傳輸尚未完成時,主機將引腳拉高準位,則從機的 SIMICF

    及 TRF 旗標會被設置為 1,進而進行同步,當無SCS�����引腳使用時,可以使用主從機資料回傳

    進行比對或是隔幾筆資料中加入驗證碼來確立傳輸過程無發生錯誤,但當發生資料錯誤或

    移位情形時,無法進行重新同步,因此提供兩種方式來解決無SCS�����引腳的問題。

    1. CSEN 禁能:如將 CSEN 使能,而從機的SCS�����引腳外部呈現空接,將導致從機容易發生引

    腳誤判情形,且無法重新同步,後續傳輸將產生一連串錯誤,故將 CSEN 禁能,讓從機

    隨時保持準備接收值的狀態,且不受SCS�����引腳干擾。

    2. 外部引腳控制:使用一般 I/O 引腳替代SCS�����引腳功能,主機可以一次與多個從機連接,再

    透過不同引腳進行選擇傳輸對象,從機則可以判斷此腳位準位進行重啟 SPI 功能。

    註:1. 當 CSEN 禁能時,將對應之腳位設定為 I/O 功能,可以防止空接所帶來的耗電問題。

    2. 主機將引腳拉高準位後,需等待從機一段時間確保從機來得及重啟 SPI 功能。

    SIMC0 暫存器之 Bit 0 在 SPI 傳輸數據完全完成之前,外部主機將SCS�����拉高時,旗標將跳起。

    軟體說明

    軟體設計說明

    SPI 通訊輪詢模式

    主機設計

    在通訊輪詢模式中,主機是通過檢查 TRF 旗標來判斷檢查 SPI 通訊是否結束。在主機和

    從機 Power On 工作後,主機和從機的寫到 SPI 之 SIMD 暫存器中的初始資料分別為 0x55

    及 0xAA,在主機第一次按下鍵發送資料時,將 0x55 發送出去,同時收到從機發送的資

    料也為 0xAA。用 RAM 監視器將此資料顯示出來。

    當主機發送完第一筆資料後,再每按一次鍵主機都會將發送資料加"1"後發送給從機。從

    機會將接收到的資料取反後發送給主機。主機端可利用 HT-IDE3000 的資料,除錯介面的

    RAM 監視器來顯示傳送和接收的資料。利用 RAM 監視器查看資料時,發送資料在 Tx_Buf

    RAM 中,接收資料在 Rx_Buf RAM 中,可以將 Tx_Buf 定義在 80H,Rx_Buf 定義在 81H。

  • HT8 MCU SPI 應用須知

    AN0488TC V1.10 8 / 13 July 31, 2020

    圖 8. 主機 RAM 監視器

    組合語言的定義方法如下:

    data .section at 80H 'data'

    Tx_Buf DB ? ;80H....

    Rx_Buf DB ? ;81H....

    C 語言的定義方法如下:

    data .section at 80H 'data'

    static volatile u8 Tx_Buf_attribute_((at(0x80)));

    static volatile u8 Rx_Buf_attribute_((at(0x81)));

    從機設計

    在通訊輪詢模式中,從機也是通過檢查 TRF 旗標來判斷檢查 SPI 通訊是否結束。

    當 TRF 為"1"時,表明從機收到一組主機傳來的資料,從機在上電後,發送給主機的資料初

    值為 0xAA,同時將此資料寫到 Tx_Buf 中,之後每收到一個主機發來的資料,將其取反後

    存入 Tx_Buf 中回送給主機。當然也可以在從機端用 RAM 監視器進行通訊資料監視。

    利用 RAM 監視器查看資料時,發送資料在 Tx_Buf RAM 中,接收資料在 Rx_Buf RAM 中,

    可以將 Tx_Buf 定義在 80H,Rx_Buf 定義在 81H。定義方法與上面相同。

    圖 9. 從機 RAM 監視器

  • HT8 MCU SPI 應用須知

    AN0488TC V1.10 9 / 13 July 31, 2020

    SPI 通訊中斷模式

    主機設計

    主機在中斷模式中,SPI 傳輸完成一組資料後,則會產生中斷,在中斷服務程式中,主機

    先讀取從機發來的數據,再將要傳輸的資料寫到 SIMD 暫存器中,使能 CSEN 信號,進行

    下一次傳輸。

    在中斷模式中,主機發送的資料初值亦為 0x55,每發送一個資料後,將數據加"1"作為下一

    個要發送的數據。發送的資料和接收的資料都是通過 RAM 監視器來顯示。

    從機設計

    從機在中斷模式中,SPI 傳輸完成一組資料後,則會產生中斷,在中斷服務程式中,從機

    先讀取主機發來的數據,再將要傳輸的資料寫到 SIMD 暫存器中,進行下一次傳輸。

    在中斷模式中,從機發送的資料初值亦為 0xAA,每發送一個資料後,將下一個接收到的

    資料取反後傳回主機。發送的資料和接收的資料都是通過 RAM 監視器來顯示。

    在中斷方式中,發送資料在 Tx_Buf RAM 中,接收資料在 Rx_Buf RAM 中,RAM 定義為:

    Tx_Buf 定義在 80H,Rx_Buf 定義在 81H。與 polling 方式相同。

    S/W Flowchart

    主機開始發送數據同時讀取從機數據

    I/O口初始化SPI初始化

    變量初始化Tx_buf=0x55

    開始

    是否有鍵按下?

    發送數據+1

    利用RAM監視器顯示傳送和接收的數據,判斷SPI通訊是否正確

    Y

    N

    圖 10. 主機工作流程圖

  • HT8 MCU SPI 應用須知

    AN0488TC V1.10 10 / 13 July 31, 2020

    將接收到的數據取反後傳給主機

    I/O口初始化SPI初始化

    變量初始化Tx_buf=0xaa

    開始

    SPI是收到數據?

    利用RAM監視器顯示傳送和接收的數據,判斷SPI通訊是否正確

    Y

    N

    圖 11. 從機工作流程圖

    SPI 通訊三線模式

    主機設計

    主機在三線模式中,將 CSEN 禁能並將外部引腳維持低準位,當 SPI 完成一組資料傳輸後,

    則會產生中斷,在中斷副程式中讀取從機發送回來的數據,並將數據與前一筆資料作比對,

    若比對不相符,則代表傳輸發生錯誤或移位情形,此時將外部引腳拉高一段時間後再拉回

    低準位,以告知從機進行重新同步動作,回到主程式後再將要傳輸的資料寫到 SIMD 暫存

    器中,以進行下一次傳輸。

    在三線模式中,主機發送的資料初值為 0x00,每發送一個資料後,將數據加"1"作為下一個

    要發送的數據。發送的資料和接收的資料都是通過 RAM 監視器來顯示。

    從機設計

    從機在三線模式中,將 CSEN 禁能並將外部引腳設置為輸入模式,當接收到高準位的訊號

    時,先將 SIMEN 禁能並清除相關旗標,然後重新致能使 SPI 功能重置。開啟 SPI 中斷功

    能,當 SPI 傳輸完成一組資料後,則會產生中斷,在中斷副程式中,從機先讀取主機發來

    的數據,再將要傳輸的資料寫到 SIMD 暫存器中,進行下一次傳輸。

    在三線模式中,從機發送的資料初值為 0x00,每發送一個資料後,將下一個接收到的資料

    取下後傳回主機。發送的資料和接收的資料都是通過 RAM 監視器來顯示。

    在三線模式中,發送資料在 Tx_Buf RAM 中,接收資料在 Rx_Buf RAM 中,RAM 定義為:

    Tx_Buf 定義在 80H,Rx_Buf 定義在 81H。與上述方式相同。

  • HT8 MCU SPI 應用須知

    AN0488TC V1.10 11 / 13 July 31, 2020

    三線模式 S/W Flowchart

    開始

    I/O口初始化SPI初始化

    變量初始化Tx_Buf=0x00

    外部引腳是否為高準位

    利用RAM監視器顯示傳送和接收的數據,判斷SPI通訊是否正確

    SPI是否收到數據

    N

    將接收到的數據取下後回傳給主機

    N

    除能並重新致能SIMEN並清除SPI相關旗標

    Y

    Y

    圖 12. 從機工作流程圖

    開始

    I/O口初始化SPI初始化

    變量初始化Tx_Buf=0x00

    是否壓下按鍵?

    主機開始發送數據同時讀取從機數據

    發送數據+1

    判斷Rx_Buf的值與前筆傳送的值是否相符

    利用RAM監視器顯示傳送和接收的數據,判斷SPI通訊是否正確

    N

    Y

    將外部引腳拉高一段時間再拉回低準位

    N

    Y

    圖 13. 主機工作流程圖

  • HT8 MCU SPI 應用須知

    AN0488TC V1.10 12 / 13 July 31, 2020

    程式範例

    本範例程式採用母體為 HT66FV140。COD_SPI_USER_MANUAL-V01.zip 附件中包含中斷

    (Interrupt Mode)、輪詢(Polling Mode)、三線模式(Three Pin Mode),並提供用戶依照需求及習慣

    挑選組合語言或 C 語言來使用。

    結論

    本文講解了 HOLTEK 8-bit Flash MCU 的 SPI 全雙工通訊的相關的操作,提供了查詢法及中

    斷法讀取通訊資料的方法,同時介紹了 RAM 監視器的用法,可通過 RAM 監視器來查看通

    訊資料,用戶可以在自己的程式中直接插入此 IP,亦可根據自己的需要按照上面程式說明

    自行修改。

    參考資料

    參考文件 HT66F0175/0185、HT66FV140 Datasheet。

    程式範例 COD_SPI_USER_MANUAL-V01.zip。

    如需進一步瞭解,敬請瀏覽 Holtek 官方網站 www.holtek.com。

    版本及修改資訊

    版本資訊

    日期 作者 發行

    2020.6.30 蔡俊男 V1.10

    2018.4.30 王贊臣 V1.00

    修改資訊

    V1.10:增加 SPI 通訊三線模式應用注意事項。

  • HT8 MCU SPI 應用須知

    AN0488TC V1.10 13 / 13 July 31, 2020

    免責聲明

    本網頁所載的所有資料、商標、圖片、連結及其他資料等 (以下簡稱「資料」),只供參考之

    用,盛群半導體股份有限公司及其關聯企業 (以下簡稱「本公司」) 將會隨時更改資料,並

    由本公司決定而不作另行通知。雖然本公司已盡力確保本網頁的資料準確性,但本公司並

    不保證該等資料均為準確無誤。本公司不會對任何錯誤或遺漏承擔責任。

    本公司不會對任何人士使用本網頁而引致任何損害 (包括但不限於電腦病毒、系統故障、資

    料損失) 承擔任何賠償。本網頁可能會連結至其他機構所提供的網頁,但這些網頁並不是由

    本公司所控制。本公司不對這些網頁所顯示的內容作出任何保證或承擔任何責任。

    責任限制

    在任何情况下,本公司並不須就任何人由於直接或間接進入或使用本網站,並就此內容上

    或任何産品、資訊或服務,而招致的任何損失或損害負任何責任。

    管轄法律

    本免責聲明受中華民國法律約束,並接受中華民國法院的管轄。

    免責聲明更新

    本公司保留隨時更新本免責聲明的權利,任何更改於本網站發布時,立即生效。

    簡介功能說明SPI介面及特點暫存器介紹SPI通信時序SPI傳輸控制流程圖SPI傳輸控制步驟說明

    使用注意事項VDDIO PIN使用說明硬體電路圖硬體電路說明

    SPI通訊三線模式使用說明軟體說明軟體設計說明S/W Flowchart三線模式S/W Flowchart

    程式範例結論參考資料版本及修改資訊版本資訊修改資訊

    免責聲明責任限制管轄法律免責聲明更新

    /ColorImageDict > /JPEG2000ColorACSImageDict > /JPEG2000ColorImageDict > /AntiAliasGrayImages false /CropGrayImages true /GrayImageMinResolution 300 /GrayImageMinResolutionPolicy /OK /DownsampleGrayImages true /GrayImageDownsampleType /Bicubic /GrayImageResolution 300 /GrayImageDepth -1 /GrayImageMinDownsampleDepth 2 /GrayImageDownsampleThreshold 1.50000 /EncodeGrayImages true /GrayImageFilter /DCTEncode /AutoFilterGrayImages true /GrayImageAutoFilterStrategy /JPEG /GrayACSImageDict > /GrayImageDict > /JPEG2000GrayACSImageDict > /JPEG2000GrayImageDict > /AntiAliasMonoImages false /CropMonoImages true /MonoImageMinResolution 1200 /MonoImageMinResolutionPolicy /OK /DownsampleMonoImages true /MonoImageDownsampleType /Bicubic /MonoImageResolution 1200 /MonoImageDepth -1 /MonoImageDownsampleThreshold 1.50000 /EncodeMonoImages true /MonoImageFilter /CCITTFaxEncode /MonoImageDict > /AllowPSXObjects false /CheckCompliance [ /None ] /PDFX1aCheck false /PDFX3Check false /PDFXCompliantPDFOnly false /PDFXNoTrimBoxError true /PDFXTrimBoxToMediaBoxOffset [ 0.00000 0.00000 0.00000 0.00000 ] /PDFXSetBleedBoxToMediaBox true /PDFXBleedBoxToTrimBoxOffset [ 0.00000 0.00000 0.00000 0.00000 ] /PDFXOutputIntentProfile () /PDFXOutputConditionIdentifier () /PDFXOutputCondition () /PDFXRegistryName () /PDFXTrapped /False

    /CreateJDFFile false /Description > /Namespace [ (Adobe) (Common) (1.0) ] /OtherNamespaces [ > /FormElements false /GenerateStructure false /IncludeBookmarks false /IncludeHyperlinks false /IncludeInteractive false /IncludeLayers false /IncludeProfiles false /MultimediaHandling /UseObjectSettings /Namespace [ (Adobe) (CreativeSuite) (2.0) ] /PDFXOutputIntentProfileSelector /DocumentCMYK /PreserveEditing true /UntaggedCMYKHandling /LeaveUntagged /UntaggedRGBHandling /UseDocumentProfile /UseDocumentBleed false >> ]>> setdistillerparams> setpagedevice