Dereck Hao 4b11341799 Feat: 新增 KL520 IP 自動驗證測試套件
- 實作 GPIO, SPI, I2C, PWM-ADC 功能驗證模組
- 新增互動式 Console 選單 (ip_test_all) 與 README 接線說明
2025-12-17 17:15:36 +08:00

4.5 KiB
Raw Blame History

KL520 IP Verification Auto-Test Suite

本專案提供了一套自動化測試流程,用於驗證 Kneron KL520 晶片上的主要周邊 IP (GPIO, SPI, I2C, PWM, ADC) 功能是否正常。測試程式透過 UART Console 介面進行互動。

1. 硬體準備與接線 (Hardware Setup)

在執行測試之前,請務必按照以下列表連接開發板上的腳位。錯誤的接線可能導致測試失敗。

1.1 GPIO Loopback (迴路測試)

請使用跳線帽 (Jumper) 或杜邦線連接以下腳位對:

  • P37 <--> P36
  • P34 <--> P32
  • P27 <--> P26
  • P35 <--> P38

1.2 SPI Loopback (SPI0)

測試 SPI0 的傳輸與接收功能:

  • 連接 SPI0_MOSI (LC_DATA_6) <--> SPI0_MISO (LC_DATA_7)

1.3 PWM-ADC Loopback

測試 PWM 輸出電壓是否能被 ADC 正確讀取。為了將 PWM 的數位訊號轉換為類比電壓供 ADC 讀取,建議在 PWM 輸出與 ADC 輸入之間加入一組 RC 低通濾波器 (RC Low-pass Filter)。

  • 接線圖 (Wiring Diagram):

       KL520 Board
      +-----------+
      |           |      R (e.g., 1k~10k)
      |  PWM Out  |-----/\/\/\-----+------- ADC Input
      | (P29)     |                |       (ADC Ch3)
      |           |               --- C (e.g., 1uF~10uF)
      |    GND    |---------------+------- GND
      +-----------+               |
                                 GND
    
  • 連接說明:

    1. 串聯電阻 (R) 於 PWM Output (P29) 與 ADC Input (ADC Ch3) 之間。
    2. 並聯電容 (C) 於 ADC Input 與 GND 之間。

1.4 I2C Sensor

測試 I2C 通訊功能:

  • 請確保 OV5647 Camera Module 已正確連接至開發板的 CSI/I2C 介面。

2. 軟體操作流程 (Operation)

  1. 編譯與燒錄

    • 編譯 solution_kdp2_test 專案。
    • 將韌體燒錄至 KL520 開發板。
  2. 啟動 Console

    • 使用終端機軟體 (如 MobaXterm, Tera Term) 連接開發板的 UART Debug Port。
    • Baud Rate: 115200
  3. 主選單 系統啟動後會自動執行一次完整測試,隨後進入主選單:

    --------------------------------
          IP Verification Menu
    --------------------------------
     [1] GPIO Test
     [2] SPI Test
     [3] I2C Test
     [4] PWM-ADC Test
     [5] Run All Auto-Test Again
    --------------------------------
    Select test:
    
  4. 執行測試

    • 輸入對應的數字 (1-5) 並按下 Enter (視 Console 設定而定,部分設定可直接輸入數字)。
    • 觀察螢幕輸出的 PASSFAIL 結果。

3. 測試項目說明 (Test Details)

[1] GPIO Test

  • 原理:將一組 GPIO 設定為 Output另一組設定為 Input。Output 輸出 High/Low 訊號,檢查 Input 是否讀取到正確數值。隨後交換角色再次測試。
  • 判定標準:所有定義的腳位對在 High 與 Low 狀態下讀值皆正確。

[2] SPI Test

  • 原理:使用 SPI0 Master 模式發送一組測試資料 (0xA0 ~ 0xAF)。由於 MOSI 與 MISO 短路,資料應原封不動地被接收回 FIFO。
  • 判定標準:接收到的資料 (RX) 與發送的資料 (TX) 完全一致。

[3] I2C Test

  • 原理
    1. 掃描 I2C Bus (0x01 - 0x7F) 尋找所有掛載的裝置。
    2. 針對位址 0x36 (OV5647) 讀取 Chip ID 暫存器。
    3. 執行軟體重置 (Software Reset) 並確認裝置是否存活。
  • 判定標準:成功讀取到 OV5647 的 Chip ID (0x5647)。

[4] PWM-ADC Test

  • 原理
    1. PWM 輸出不同佔空比 (Duty Cycle: 10%, 40%, 70%, 90%) 的訊號。
    2. 該訊號經由 RC 濾波 (若板上有) 或直接輸入至 ADC。
    3. ADC 讀取電壓值。
  • 判定標準ADC 讀取到的數值與預期的 PWM 電壓值誤差在容許範圍內 (Tolerance: 50)。

4. 常見問題排除 (Troubleshooting)

  • Console 無法輸入

    • 請檢查終端機軟體的換行設定 (New-line setting),嘗試設定為 CR+LF
    • 確認是否已套用 kmdw_console.c 的非阻塞 (Non-blocking) 修正。
  • SPI Test FAIL

    • 檢查 MOSI 與 MISO 的跳線是否鬆脫。
    • 確認 Pinmux 設定是否正確指向 SPI0 功能。
  • I2C Test FAIL

    • 確認 OV5647 模組排線 (FPC) 方向是否正確且已扣緊。
  • PWM-ADC Test FAIL

    • 確認 P29 與 ADC3 之間的連接。
    • 若使用三用電表量測 P29 電壓正常但 ADC 讀值錯誤,可能是 ADC 通道設定不匹配。