STM32F373控制板之自我測試

        這次為了某個控制器的案子,製作 120片STM32F373控制板,如圖一所示。從 PCB 製版到打件的過程,最終製作好的板子可能會出現不良,可能是元件不良,可能是打件不良,可能是 PCB 銅線斷了....等等。這些不良品如果要單靠手工一步一步挑出來,花費的時間將會很長,所以最好能靠板子本身的一些功能,設計一套自我測試的方法。

圖一:STM32F373控制板

        STM32F373控制板上有 Flash 晶片、各有13組 DI / DO、兩組 AI 和一組 AO、包含 RS-232 和  RS485,如圖三右半圖所示。自我測試的概念,可參考圖三的方塊圖。要達到自我測試的功能,我先設計一塊測試電路板 (如圖二所示),這塊板子上面將 13組 DI 和 DO 對應自環起來 (loopback),再把 AI / AO 也自環。而 RS-232 和 RS-485 也可以對接,只要將 TX接對方的 RX,RX 接對方的 TX。剩下一個 AI,則設計一個可變電阻來測試它。

        除了設計測試板之外,STM32上面也要寫一套自我測試的韌體。DI / DO 的跑馬燈,韌體先對第一個 DO 輸出,當第一個 DI 偵測到後,韌體再對第二個 DO 輸出。以此類推,DI / DO 就會如跑馬燈一樣一路往下走。假設有 DO 元件壞了,那麼 DI 就偵測不到變化,跑馬燈就跑不下去了,同理 DI 線路有問題的話,跑馬燈也會停止。

        AI / AO 的自我測試,韌體會對 AO 輸出固定數值,每隔一段時間便增加數值,直到最大值。再從最大值往下遞減,直到最低值,以此反覆。因為 AO 的輸出,我們可以從 AI 偵測到數值的變化,藉這個方式驗證 AI / AO 元件與線路是否正常。如果 AO 元件有問題,AI 將偵測不到數值的變化,同理 AI 元件有問題,則數值將無法穩定遞增或遞減。

        RS-232 / RS-485 的自我測試,韌體對 RS-232 送出一組字串,再檢查 RS-485 這邊有沒有收到。同樣地,RS-485 送出另一組字串,再觀察 RS-232 這邊有沒有收到。如果相關元件壞掉或者電路斷線的話,我們就能很快挑出有問題的板子。

圖二:測試電路板與待測的控制板

圖三:測試方塊圖

     
影片:操作測試的過程

這個網誌中的熱門文章

Android APP 藍芽範例說明 -- BluetoothChat

Android APP BLE範例程式 -- BluetoothLeGatt

三軸重力加速計 Accelerometer