電子產品開發細節之 MCU I O 埠處理

2021-10-06 07:21:27 字數 1300 閱讀 7942

i/o 埠,是微控制器學習者首先接觸的基本外圍功能,用於輸出控制訊號、或者輸入外部狀態訊號。儘管功能簡單、易用,在實際的電子產品開發中,仍有值得注意的細節,甚至這些細節的處理關乎產品的質量。作為示例,本文介紹2點需要關注的內容。

1、埠的方向設定

對於雙向i/o埠,具體應用中根據實際需要,設定為輸入埠或者輸出埠,這個功能的實現,通常是在初始化程式中,通過設定i/o埠的方向暫存器來完成的。

如下例所示:

以上的程式,從邏輯上看,沒有任何問題。但是,在產品的實際工作過程中,方向暫存器中的設定值,存在被意外改寫的風險。例如,強雜訊環境中執行的電子產品。

那麼,如何盡可能地降低這種風險帶來的負面影響呢?

常用的方法,是每隔一段時間,重複設定方向暫存器,以減少方向暫存器被意外改寫所帶來執行故障。如下所示。

2、位操作指令的使用

有的微控制器提供了位操作指令(例如:seb命令,clb命令),用於對某一輸出埠執行置位(埠輸出高電平)或復位(埠輸出低電平)操作。但是,使用位操作時如果不慎,也可能會給產品的執行帶來意外的故障。為什麼呢?

通常,微控制器的cpu訪問內建ram(含sfr)時,是以位元組為單位訪問的。對於某一埠的位操作,實際執行的操作是:讀入位元組 => 修改目標位 => 以位元組寫回暫存器。

例:8bit 的埠p1,其中p10設定為輸出埠,p11-p17設定為輸入埠。執行 seb p10 命令使p10輸出高電平。其執行過程,如下圖所示。

可以看到,執行位操作指令(seb p10)後,目標埠p10的輸出高電平,符合預期。但是,p10-p17的輸出緩衝器(output latch)也發生了變化,而這個變化並非是執行該位操作指令的初衷。如果實際的產品方案中,埠p10-p17 由於工作需要,存在方向切換的可能(某一條件下,用作輸入,另外條件下,用作輸出),那麼,預想外的輸出緩器(output latch)資料,會產生意外的結果、甚至損壞系統硬體。

實際的產品開發中,如何避免埠從輸入切換為輸出時,由於輸出緩衝器中的意外資料帶來的負面影響呢?

推薦方法:

通過方向暫存器將輸入埠切換為輸出埠之前,根據需要,首先設定輸出緩衝的初始值。

方法非常簡單,但在開發實踐中,經常被忽略。因此,細節關乎品質。## 標題

電子產品解決方案

電子產品解決方案 移動電源 行車記錄儀 路燈控制器 bl6810系列單燈控制器是是路燈控制系統及商業照明系統的重要組成部分,核心晶元是採用自主研發的plc載波通訊模組,產品具有功能強大,易實施,免佈線,工作可靠,易於維護等特點,專門用於路燈控制及商業照明而研發的節能產品。智慧型電表 機頂盒完整的電源...

關於電子產品質量

1.當下做電子產品的公司很多,不過擁有自己研發隊伍的不多。這就有了很多專業做電子產品開發的公司。2.當生產和開發分開來,有兩家公司分開做。這種方式是利大於弊還是弊大於利,一句話難以說清楚。3.分開做,上公升到社會分工這個說法,有點大。這個方向看,是利大於弊。4.電子產品質量分為,機構設計質量,電路板...

電子產品的防水等級JIS IPX

電子測量儀器的防水級別同時也反映了儀器防潮和防塵的能力,特別是對於戶外活動中,兔不了處於高濕或多塵沙的惡劣環境中,儀器的密封和防水能力對於保證儀器的安全運轉 和壽命就至關重要。為此,國際上制訂iec529標準。為了與此相適應,日本工業標準中將電子儀器的防水保護分為10個等級,分別以ipx1 ipx2...