# 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)**: ```text 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. **主選單**: 系統啟動後會自動執行一次完整測試,隨後進入主選單: ```text -------------------------------- 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 設定而定,部分設定可直接輸入數字)。 * 觀察螢幕輸出的 `PASS` 或 `FAIL` 結果。 --- ## 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 通道設定不匹配。