隨著我們對通訊技術的深入學習,大家要逐漸在頭腦中建立起時序這種概念。所謂「時序」從字面意義上來理解,一是「時間問題」,二是「順序問題」。
先說「順序問題」,這個相對簡單一些。我們在學 uart 串列埠通訊的時候,先 1 位起始位,再 8 位資料位,最後 1 位停止位,這個先後順序不能錯。我們在學 1602 液晶的時候,比如寫指令,rs=l,r/w=l,d0~d7=指令碼,這三者的順序是無所謂的,但是最終的 e=高脈衝,必須是在這三條程式之後,這個順序一旦錯誤,寫的資料也可會出錯。
「時間問題」內容相對複雜。比如 uart 通訊,每一位的時間寬度是 1/baud。我們初中就學過乙個概念,世界上沒有絕對的準確。那麼每一位的時間寬度 1/baud 要求精確到什麼範圍內呢?
前邊教程我提到過,微控制器讀取 uart 的 rxd 引腳資料的時候,一位資料,微控制器平均分成了 16 份,取其中的 7、8、9 三次讀到的結果,這三次中有 2 次是高電平那這一位就是 1,有 2 次是低電平,那這一次就是 0。如果我們的波特率稍微有些偏差,只要累計下來到最後一位停止位,這 7、8、9 還在範圍內即可。如圖 13-1 所示。
圖 13-1 uart 訊號採集時序圖
我們用三個箭頭來表示 7、8、9 這三次的採集位置,大家可以注意到,當採集到 d7 的時候,已經有一次採集偏出去了,但是我們採集到的資料還是不會錯,因為有 2 次採集正確。至於這個偏差允許多大,大家自己可以詳細算一下。實際上 uart 通訊的波特率是允許一定範圍內誤差存在的,但是不能過大,否則就會採集錯誤。大家在計算波特率的時候,發現沒有整除,有小數部分的時候,就要特別小心了,因為小數部分是一概被捨掉的,於是計算誤差就產生了。我們用 11.0592m 晶振計算的過程中,11059200/12/32/9600 得到的是乙個整數,如果用 12m 晶振計算 12000000/12/32/9600 就會得到乙個小數,大家可以算一下誤差多少,是否在誤差範圍內。
1602 的時序問題,大家要學會通過 lcd1602 的資料手冊提供的時序圖和時序引數**來進行研究,而且看懂時序圖是學習微控制器所必須掌握的一項技能,如圖 13-2 所示。
圖 13-2 1602 時序圖
大家看到這種圖的時候,不要感覺害怕。說句不過分的話,微控制器這些邏輯上的問題,只要小學畢業就可以理解的,很多時候是因為大家把問題想象的太難才學不下去的。
我們先來看一下讀操作時序的 rs 引腳和 r/w 引腳,這兩個引腳先進行變化,因為是讀操作,所以 r/w 引腳首先要置為高電平,而不管它原來是什麼。讀指令還是讀資料,都是讀操作,而且都有可能,所以 rs 引腳既有可能是置為高電平,也有可能是置為低電平,大家注意圖上的畫法。而 rs 和 r/w 變化了經過 tsp1 這麼長時間後,使能引腳 e 才能從低電平到高電平發生變化。
而使能引腳 e 拉高經過了 td 這麼長時間後,lcd1602 輸出 db 的資料就是有效資料了,我們就可以來讀取 db 的資料了。讀完了之後,我們要先把使能 e 拉低,經過一段時間後 rs、r/w 和 db 才可以變化繼續為下一次讀寫做準備了。
而寫操作時序和讀操作時序的差別,就是寫操作時序中,db 的改變是由微控制器來完成的,因此要放到使能引腳 e 的變化之前進行操作,其它區別大家可以自行對比一下。
細心的同學會發現,這個時序圖上還有很多時間標籤。比如 e 的上公升時間 tr,下降時間時間 tf,使能引腳 e 從乙個上公升沿到下乙個上公升沿之間的長度週期 tc,使能 e 下降沿后,r/w 和 rs 變化時間間隔 thd1 等等很多時間要求,這些要求怎麼看呢?放心,只要是正規的資料手冊,都會把這些時間要求給大家標記出來的。我們來看一下表 13-1。
表 13-1 1602 時序引數
時序引數
符號極限值
單位測試條件
最小值典型值
最大值e 訊號週期
tc400
----
ns引腳 e
e 脈衝寬度
tpw150
----
nse 上公升沿/下降沿時間
tr, tf
----
25ns
位址建立時間
tsp1
30--
--ns
引腳 e、
rs、r/w
位址保持時間
thd1
10--
--ns
資料建立時間(讀)
td--
--100
ns引腳
db0~db7
資料保持時間(讀)
thd2
20--
--ns
資料建立時間(寫)
tsp2
40--
--ns
資料保持時間(寫)
thd2
10--
--ns
大家要善於把手冊中的這個**和時序圖結合起來看。表 13-1 中的資料,都是時序引數,本節課的所有時序引數,我都一點點的給大家講出來,以後遇到同類時序圖,就不再講了,只是提一下,但是大家務必要學會自己看時序圖,這個很重要,此外,看以下解釋需要結合圖 13-2 來看。
tc:指的是使能引腳 e 從本次上公升沿到下次上公升沿的最短時間是 400ns,而我們微控制器因為速度較慢,乙個機器週期就是 1us 多,而一條 c 語言指令肯定是乙個或者幾個機器週期的,所以這個條件完全滿足。
tpw:指的是使能引腳 e 高電平的持續時間最短是 150ns,同樣由於我們的微控制器比較慢,這個條件也完全滿足。
tr, tf:指的是使能引腳 e 的上公升沿時間和下降沿時間,不能超過 25ns,別看這個數很小,其實這個時間限值是很寬裕的,我們實際用示波器測了一下開發板的這個引腳上公升沿和下降沿時間大概是 10ns 到 15ns 之間,完全滿足。
tsp1:指的是 rs 和 r/w 引腳使能後至少保持 30ns,使能引腳 e 才可以變成高電平,這個條件同樣也完全滿足。
thd1:指的是使能引腳 e 變成低電平後,至少保持 10ns 之後,rs 和 r/w 才能進行變化,這個條件也完全滿足。
td:指的是使能引腳 e 變成高電平後,最多 100ns 後,1602 就把資料送出來了,那麼我們就可以正常去讀取狀態或者資料了。
thd2:指的是讀操作過程中,使能引腳 e 變成低電平後,至少保持 20ns,db 資料匯流排才可以進行變化,這個條件也完全滿足。
tsp2:指的是 db 資料匯流排準備好後,至少保持 40ns,使能引腳 e 才可以從低到高進行使能變化,這個條件也完全滿足。
thd2:指的是寫操作過程中,要引腳 e 變成低電平後,至少保持 10ns,db 資料匯流排才可以變化,這個條件也完全滿足。
好了,表 13-1 這個 lcd1602 的時序參數列已經解析完成了,看完之後,是不是感覺比你想象的要簡單,沒有你想的那麼困難。大家自己也得慢慢學會看這種時序圖和**,在今後的學習中,這方面的能力尤為重要。如果以後換用了其它型號的微控制器,那麼就根據微控制器的執行速度來評估你的程式是否滿足時序要求,整體上來說器件都是有乙個最快速度的限制,而沒有最慢限制,所以當換用高速的微控制器後通常都是靠在各步驟間插入軟體延時來滿足較慢的時序要求。
1007 422通訊問題
一 422信問題記錄 情景 1,通訊資料鏈為dsp晶元28335 處理能力較低,對外介面422,波特率115200 2,通訊另外一端板載計算機 linux系統,埠422 115200 二 現象 1,任務計算機通過串列埠傳送資料給資料鏈,資料鏈接收資料正常,資料鏈向任務計算機傳送資料,出現資料異常。接...
2 1 通訊基礎
一 基本概念 1.資料 訊號與碼元 資料是指傳送資訊的實體。訊號是指資料的電氣或電磁表現,是資料在傳輸過程中的存在形式。資料和訊號都可用 模擬的 或 數字的 來修飾 a.連續變化的資料 或訊號 稱為模擬資料 或模擬訊號 b.取值僅允許為有限的幾個離散值的資料 或訊號 稱為數字資料 或數碼訊號 資料傳...
3 1 3 通訊協議
3.1 網路體系結構 3.1.3 通訊協議 1.協議 在網路系統中為了保證資料通訊雙方能正確而自動地進行通訊,需要針對通訊過程中的各種問題,制定以整套互動雙方必須遵守的規則,這就是網路通訊系統的通訊協議。2.特點 1 通訊協議具有層次性 這是由於網路系統結構具有層次性。通訊協議被分為多個層次,每個層...