早期的微控制器都具有固定的I/O,雖然可以將一個內部周邊連接到I/O接腳,但這些接腳受到限制,也不可能調節這些輸出。而一些現代的微控制器不僅能夠將周邊路由到任何I/O接腳,還可以對輸出進行配置和客製化以滿足特定需求。本文將討論如何在PSoC上利用這種功能來簡化設計專案的測試。

筆者曾經撰寫過幾篇文章,談到關於我測試自己設計之產品的方法;我也嘗試在一款新產品中構建這些概念(參考圖1),可以看到有不少I/O連結,所用的嵌入式微控制器是PSoC5LP。關於這款元件我已經寫過不少,現在要再來一次!

我認為解決這個問題的最佳方法,是使用內建測試來啟動輸出以響應某些輸入,這將使測試治具更加簡單,因為它只需要硬體而不需要對外部元件進行額外程式設計。

20190315_ReConfigurability_TA31P1

圖1:一款以PSoC5LP為基礎的控制器,其中大多數零組件安裝在底部。圖中貼膠帶的地方是用以保護隱私。
(來源:Aubrey Kagan)

一個讓我困擾的問題是,該款產品有一個串列埠,其RS-485介面(半雙工)使用常見的MAX485。如果沒有某種形式的外部UART,要如何進行測試?也許可以使用示波器來檢查接收,但是反向資料怎麼辦?在以前有摩托羅拉(Motorola)的UART轉頻元件(MC14469),但該元件已經停產,所以這個方法行不通。

我理智地想了一下,我不是要檢查UART是否正常,而是要看支援硬體是否正常。因此我要做的就是在第一次測試中激發微控制器輸出,並在第二次測試中激發微控制器輸入並讀取。我本來可以使用UART的中斷(break)功能──如果它有這個功能的話,並且要是採用PSoC5LP元件的案例;儘管它涉及額外的中斷。老實說,我是開始寫這篇文章時才冒出這個想法。

20190315_ReConfigurability_TA31P2

圖2:微控制器上典型的嵌入式UART,帶有半專用I/O接腳。
(來源:Aubrey Kagan / PSoC Creator)

在一顆典型的微控制器上,UART連結被導出至一組或多組I/O接腳,然後透過配置暫存器(register)來啟用,如圖2所示。在某些可重配置微控制器上,特別是PSoC5LP,可以添加暫存器,並設置UART接腳與微控制器實體I/O接腳之間的元件,如圖3所示。

20190315_ReConfigurability_TA31P3

圖3:硬體設定允許為測試重配置輸出。
(來源:Aubrey Kagan /PSoC Creator)

UART的輸出接腳透過多工器(multiplexer)連接到I/O接腳;控制暫存器(Control Reg)選擇多工器埠,以便微控制器可以直接控制輸出接腳,從而完全排除UART。Rx輸入饋送到與UART Rx輸入平行的數位輸入暫存器。

當控制暫存器的第2位元在低位準時,UART輸出連接到實體輸出接腳,UART就正常運作。TX接腳透過外部接線連接到PCB上MAX485的DI接腳。TxEN接腳用於控制資料流的方向(!RE和DE在MAX485上短接)。MAX485的RO接腳驅動Rx輸入接腳。

當控制暫存器的第2位元設置為高位準時(在測試軟體中),另外兩個控制暫存器位元連接到實體輸出接腳,然後微控制器可以設置這些接腳產生硬體訊號,以便視覺化地檢查輸出。當通過TxEN輸出改變MAX485的方向時,可以在狀態暫存器(Status Reg)中讀取輸入。

這不僅允許在元件內部進行重新配置,我也不需要更改PCB設計,只需設計一個小型接線板,具備另一顆MAX485和一顆LED燈以指示輸出狀態,還有兩個開關,一個改變通訊方向,另一個可以被待測元件讀取。

誰會不喜歡可配置性!

本文同步刊登於電子工程專輯雜誌2019年3月刊

(原文出自EE Times姊妹刊,ASPENCORE旗下Planet Analog網站;參考連結:The Beauty of Re-Configurability,by Aubrey Kagan)