導航:首頁 > 操作系統 > 單片機中幀的用法

單片機中幀的用法

發布時間:2023-02-26 19:42:09

⑴ 51單片機的串列口有幾種工作方式它們的幀格式是如何規定的

串列口分四種工作方式,由SM0、SM1二位決定,其定義如下:
SM0、SM1 工作方式 功能描述 波特率
0 0 方式0 8位移位寄存器 Fosc/12
0 1 方式1 10位UART 可變
1 0 方式2 11位UART Fosc/64或fosc/32
1 1 方式3 11位UART 可變
(1)方式0:串列口的工作方式0為移位寄存器I/O方式,可外接移位寄存器,一擴展I/O口,也可外接同步I/O設備。
發送操作:當執行一條「MOV SBUF,A」指令時,啟動發送操作,由TXD輸出移位脈沖,由RXD串列SBUF中的數據。發送完8位數據後自動置TI=1.請求中斷。要繼續發送時,TI必須有指令清零。
接收操作:REN是串列口接收允許控制位。REN=0時禁止接收;REN=1時允許接收。當軟體將REN置「1」時,即開始從RXD埠以fosc/12波特率輸入數據,當接收到8位數據時,將中斷標志RI置「1」。再次接收數據之前,必須用軟體將RI清0。
(2)方式1:串列口位10位通用非同步介面。發送或接收一幀數據信息為10位,包括1位起始位「0」、8位數據位、1位停止位「1」。
發送數據:數據從TXD埠輸出,當數據寫入發送緩沖器SBUF時,就啟動發送器發送。發送完一幀數據後,置中斷標志TI=1,申請中斷,通知CPU可以發送下一個數據了。
接收數據:首先使REN=1(允許接收數據),串列口從RXD接收數據,當采樣到1至0跳變時,確認是起始位「0」,就開始接收一幀數據,當接收完一幀數據時,置中斷標志RI=1,申請中斷,通知CPU從SBUF取走接收到的數據
(3)方式2:串列口為11位非同步通信介面。發送或接收一幀信息包括1位起始位「0」、8位數據位、1位可編程位、1位停止位「1」。
發送數據:發送前,先根據通信協議由軟體設置TB8為「奇偶校驗位」或「數據標識位」,然後將要發送的數據寫入SBUF,即能啟動發送器。發送過程是由執行任何一條以SBUF為目的寄存器的指令而啟動的,把8位數據裝入SBUF,同時還把TB8裝到發送移位寄存器的第9位上,然後從TXD(P3.1)埠輸出一幀數據。
接收數據:先置REN=1,使串列口為允許接收狀態,同時還要將RI清「0」。然後再根據SM2的狀態和所接收到的RB8的狀態決定此串列口在信息到來後是否置R1=1,並申請中斷,通知CPU接收數據。當SM2=0時,不管RB8為「0」還是為「1」,都置RI=1,此串列口將接收發送來的信息。當SM2=1時,且RB8=1,表示在多機通信情況下,接收的信息為「地址幀」, 此時置RI=1, 串列口將接收發來的地址。當SM2=1時,且RB8=0,表示在多機通信情況下,接收的信息為「數據幀」, 但不是發給本從機的,此時RI不置為「1」,因而SBUF中接收的數據幀將丟失。
(4)方式3:為波特率可變的11位非同步通信方式,除了波特率有所區別之外,其餘方式都與方式2相同。

⑵ msp430單片機編程,如何解析幀,請詳細描述下。

據我了解TI公司有一個msp430和cc2420組合實現zigbee協議的解決方案,看問題的樣子應該是Zigbee協議吧,你的問題有點模糊,不過我就說下zigbee協議吧,請參照圖示

其中前導序列和幀首屆定符是用來解決通信同步的,用於物理層的幀檢測,不包含數據信息,由硬體完成,在你收到的數據中是不包含這兩部分的。

幀長度(PHY頭)計算的是MAC協議數據單元的總位元組數,包括幀控制域、數據序列號、地址信息、負載幀、幀檢查序列(即CRC檢測結果序列),PHY頭是真正接收到的第一個位元組的數據,用於接收端確定接收到的有效數據長度。

幀控制域含兩個位元組,包括幀類型,源地址模式和目的地址模式等等。

數據序列號就是標識當前數據幀的一個代號,用來保證通信質量的,比如如果接收到的數據序列號等於上一個幀的數據序列號,則認為是多餘的幀,應當刪除。

地址信息用來標識發送方和接收方的硬體地址,如果如果接收到的數據所標識的接收方的地址和當前接收數據的硬體地址不符則丟棄數據。這個地址有精簡地址和IEEE地址兩種,前者兩個位元組,後者8個位元組。

負載幀是真正的要傳達的數據

幀檢查序列一般在發送方經過CRC多項式計算並由硬體寫在幀的末尾兩個位元組,在接收方,由硬體計算接收數據的CRC並和接收到的CRC值對比,相同則任務數據在傳輸過程中是正常的,否則丟棄當前數據,這個工作一般也是由硬體完成所以反映在數據的最後兩個位元組的內容一般由接收信號強度平均值和鏈路質量LQI值所代替。

以上是對Zigbee物理層的一個簡單說明,TI公司的MSP430一般配合CC2420來完成Zigbee協議,在這個解決方案中只有CRC校驗值的插入與檢測是完全由硬體負責完成的,其他部分需要由軟體實現,因此也就提供了更大的自由空間,比如根據系統的復雜程度定義自己的協議內容,可以不完全遵照標准協議。

我看你提出的問題好像就不是標准協議,下面只是對你的協議的一個猜測,HEAD1和HEAD2可能是幀控制域信息,LEN的長度可能只計算數據內容長度,TYPE可能是用來標識幀類型,比如說命令幀,ACK確認幀,或者是數據幀,廣播幀等。CRC校驗值應該是RSSI和LQI即信號強度和鏈路質量。因為除了CRC校驗外都是由硬體實現的,所以完全可以定義出以上的協議。

一點拙見供參考

⑶ 什麼叫單片機輸出與接收時的以字元構成的幀

所謂幀就是一串特定格式的數據,而數據當然是由字元構成的。
你要知道,在實際通訊過程中,數據是會被干擾,被篡改的,並且可能是點對多點通訊,所以,為了應對這種情況,必須用一定的格式把有效數據保護起來,防止單片機的程序被非法數據沖亂。只有接收到格式合法的數據幀,單片機才會去處理,否則直接丟棄。
典型的幀格式包括:幀頭+站號+有效數據長+有效數據+校驗+幀尾。

⑷ 51單片機的串口接收一幀數據有幾位

發送的位數跟工作方式有關。51單片機的發送和接受,只有10位和11位兩種。

先說單片機串口的工作方式:
單片機串口的工作方式共4種,方式0--方式3.
方式0:用移位脈沖。RXD做輸入/輸出,TXD進行移位。收發的數據為八位。
方式1:傳送一幀信息為10位,即1位起始位(0),8位數據位(低位在先)和1位停止位(1)。數據位由TXD發送,由RXD接收
方式1:一幀信息也是10位;即 1位起始位,8位數據位(先低位),1位停止位。在起始位到達移位寄存器的最左位時,它使控制電路進行最後一次移位。
方式2和方式3:發送(通過TXD)和接收(通過RXD)一幀信息都是 11位: 1位起始位(0), 8位數據位(低位在先),1位可編程位(即第9位數據)和1位停止位(1)。
可見:不論單片機串口接收還是發送一幀數據是多少位,實際有效位數據位都是8位,其餘位是為了奇偶校驗、做起始位或終止位用的。
以前所述有誤,特修正。

閱讀全文

與單片機中幀的用法相關的資料

熱點內容
衣服壓縮袋手泵原理 瀏覽:712
通達信編程書籍 瀏覽:979
車用壓縮天然氣瓶閥 瀏覽:969
鞋的程序員 瀏覽:259
車的壓縮比是什麼意思 瀏覽:200
網站源碼怎麼傳到文件夾 瀏覽:912
海南壓縮機在哪裡 瀏覽:491
電腦文件夾清晰的文件結構 瀏覽:839
如何把蘋果手機的app轉到安卓 瀏覽:305
java同步並發 瀏覽:249
fw壓縮圖片 瀏覽:258
淘寶申請源碼靠譜嗎 瀏覽:874
androidupdater 瀏覽:635
c2d游戲源碼大全可復製版 瀏覽:771
電腦怎樣重置網關命令 瀏覽:411
winftplinux 瀏覽:335
推特app界面如何設置成中文 瀏覽:452
太空工程師轉子編程屬性 瀏覽:32
windowscmd關機命令 瀏覽:342
雲桌面只要伺服器裝一套軟體 瀏覽:247