在嵌入式產品的開發中少不了各種外圍設備的搭配使用。嵌入式開發中需要做到將加入系統的外設連接起來,并能夠完成所需要的功能開發。
在眾多的設備中,MCU與外設進行通信都是按照一定的協議進行的,都涉及到時序,只有按照約定好的協議才能進行通信。
比如,常見的 1-Write單總線、IIC總線、SMBus總線、SPI總線等等的協議,都是需要在約定的通信協議下才能完成通信。而通信協議的實現反饋到MCU的時候,就只是一種IO口電平的變化輸出,以及外設傳送數據到MCU也是一種電平的變化或者是電平的時間寬度變化。
筆者在項目開發中就遇到過和外設通信中需要測量波形的變化確認數據狀態的情況,遇到過一些小問題,隨即記錄下來分享一下調試心得,也做一個備忘。
情況是這樣,項目開發中,有一個外設需要加入到系統中,這個外設是由生產廠商規定好了通信協議的,收發數據都要按照協議的規定進行,MCU接收數據的規定如下:
在通信總線上的低電平期間,有20mA的電流變化時外設回復數據“1”,沒有電流變化為數據“0”。
電流的變化通過硬件電路轉換成電壓的變化,MCU通過AD檢測進行判斷,從而得知數據的變化狀態。按照我們思路,MUC在低電平期間檢測到電流的變化啟動AD檢測,根據AD值確認數據狀態。如下圖示:
偽代碼示意如下:
while( !GPIO_Check_Pin ) // 通過電平變化確定電流變化
{
uint_32 adValue = 0;
if( GPIO_Check_Pin )
{
adValue = getAdValue(); // 讀取AD值
if(adValue > x)
xxx;
}
}
一般到這里認為應該也就算是完成了,可是在實際測試中發現,獲取得到的AD值跟電路上實際的電壓是有很多的出入的,測量總是不準確。
苦思冥想,多次測量之后發現,原來跟時序的變化有關。原因到底什么呢?
原來,正常的想法都是波形變化之后進行測量,而沒有考慮過波形的變化在不同的處理器上差異,以及硬件本身的延遲,往往不會立即就能發生翻轉的,有一個變化的過程的。
比如,理想的時序波形變化是這樣的:
然而,實際的時序波形變化是這樣的:
所以,在波形發生變化的時候就進行測量,很多時候往往得不到正確的結果,可以測量的電位點都不對,測量發生在了電平變化的期間。
所以,要準確測量,合適的方法是等待一段時間,電平變化穩定之后再進行測量,結果就更加證實準確。如下:
所以,偽代碼示意如下:
while( !GPIO_Check_Pin ) // 通過電平變化確定電流變化
{
uint_32 adValue = 0;
if( GPIO_Check_Pin )
{
delay();
adValue = getAdValue(); // 讀取AD值
if(adValue > x)
xxx;
}
}
很多的嵌入式系統中,考慮到成本、工藝、實用性等的因素,很多的處理器都不會實用很強大的MCU,主頻可能都比較低,性能有限,很多的外設反應速度可能也不及MCU,所以延時等待在很多時候都很有必要。
聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。
舉報投訴
-
嵌入式
+關注
關注
5096文章
19199瀏覽量
308174 -
外設
+關注
關注
0文章
41瀏覽量
11740 -
系統
+關注
關注
1文章
1020瀏覽量
21444
發布評論請先 登錄
相關推薦
嵌入式NVM在應用中要注意什么?
工藝兼容、功耗及成本控制等新的問題。為此,本文以一款電力網控制芯片R36的物理設計為例,討論了嵌入式NVM在實際應用中需要注意的問題,并給出了解決方案。
發表于 11-04 06:55
嵌入式系統工程化設計要注意哪些方面
計算機設計,提高可靠性有那些方面工程化要求?設計要注意那些方面?下面按照兩個方面來介紹,一,把嵌入式計算機簡化到最簡化模型,看看需要注意那些方面。二,面對
發表于 11-08 06:51
PCB工程師需要注意的地方
PCB工程師需要注意的地方:PCB工程師需要注意的地方較多的PCB工程師,他們經常畫電腦主板,對Allegro等優秀的工具非常的熟練,但是,非常可惜的是,他們居然很少知道如何進行阻抗
發表于 09-13 10:45
?0次下載
設計嵌入式系統硬件電路時需要考慮哪些問題
設計以MCU為核心的嵌入式系統硬件電路需要根據需求分析進行綜合考慮,需要考慮的問題較多,這里給出幾個特別要注意的問題。
嵌入式硬件設計中需要注意的事項
我們知道,CPU是這個系統的靈魂,所有的外圍配置都與其相關聯,這也突出了嵌入式設計的一個特點硬件可剪裁。在做嵌入式硬件設計中,以下幾點需要關注。
發表于 06-19 11:30
?928次閱讀
嵌入式里有關時序波形的測量需要注意的地方
在嵌入式產品的開發中少不了各種外圍設備的搭配使用。嵌入式開發中需要做到將加入系統的外設連接起來,并能夠完成所需要的功能開發。
發表于 05-20 15:41
?873次閱讀
![<b class='flag-5'>嵌入式</b><b class='flag-5'>里</b><b class='flag-5'>有關</b><b class='flag-5'>時序</b><b class='flag-5'>波形</b>的<b class='flag-5'>測量</b><b class='flag-5'>需要注意</b>的<b class='flag-5'>地方</b>](https://file.elecfans.com/web2/M00/8F/B8/poYBAGPlsJyART0BAAAsdJ_dOd8537.jpg)
評論