嵌入式串口同步幀數方法解析,怎樣學好嵌入式技術?
發布時間:2017-06-20 責任編輯:susan
【導讀】本文給出逐次比較、基於FIFO隊列和基於狀態機的3種幀同步方法。通過測試、fenxihebijiaodechu,jiyuyouxianzhuangtaijidefangfashiqianrushixitongchuankoutongxinzhonghenyouxiaodezhentongbufangfa,tongshiyeshiyizhonghenbucuodechuankoutongxinchengxushejijiegou。
嵌入式串口同步幀數方法解析
串口通信是日前單片機和DSP等嵌入式係統之間,以及嵌入式係統與PC機或無線模塊之間的一種非常重要且普遍使用的通信方式。在嵌入式係統的硬件結構中,通常隻有一個8位或16位的CPU,不僅要完成主流程的工作,同時還要處理隨時發生的各種中斷,因而嵌入式係統中的串口通信程序設計與PC機有很大的不同。若嵌入式係統中.中zhong斷duan服fu務wu子zi程cheng序xu在zai係xi統tong運yun行xing過guo程cheng中zhong占zhan用yong了le較jiao多duo的de時shi間jian,就jiu有you可ke能neng在zai中zhong斷duan眼yan務wu子zi程cheng序xu正zheng運yun行xing時shi,又you產chan生sheng一yi個ge同tong類lei型xing或huo其qi他ta類lei型xing的de中zhong斷duan,從cong而er造zao成cheng主zhu程cheng序xu得de不bu到dao執zhi行xing或huo後hou續xu中zhong斷duan數shu據ju丟diu失shi。所suo以yi,嵌qian入ru式shi係xi統tong中zhong的de串chuan口kou通tong信xin雖sui然ran看kan似si簡jian單dan,但dan其qi中zhong仍reng有you許xu多duo問wen題ti值zhi得de研yan究jiu,例li如ru串chuan口kou通tong信xin過guo程cheng中zhong的de幀zhen同tong步bu問wen題ti。本ben文wen針zhen對dui該gai問wen題ti給gei出chu了le逐zhu次ci比bi較jiao、基於FIFO隊列和基於狀態機的3種幀同步方法。通過測試、fenxihebijiaodechu,jiyuyouxianzhuangtaijidefangfashiqianrushixitongchuankoutongxinzhonghenyouxiaodezhentongbufangfa,tongshiyeshiyizhonghenbucuodechuankoutongxinchengxushejijiegou。

1.串口通信的數據幀結構
xiandaigongyekongzhi,wangwangxuyaoyouduogedulidekongzhimokuailaigongtongwancheng。tamenzhijiantongguochuankoutongxinwanchengfuzadekongzhiguocheng,bixuzaitongxinguochengzhongjiarubiyaodetongxinxieyi,yitigaoxitongdekekaoxinghewendingxing;eryaowanchengtedingdetongxinxieyi,jiudeyouyidingdetongbujizhi。xiamianjieshaoyixiajianhuadechuankoutongxinshujuzhenjiegou,yibianfenxishuomingqianrushixitongchuankoutongxinguochengzhongdezhentongbufangfa。
假定串口發送的數據幀結構為:

其中:包頭用於同步,一般是一個或多個ASCII字符,本文中假定數據幀同步頭有2字節(0xAA、0x55);包長表示數據包中除去包頭和包長的字節數,一般用約定好的幾個字節表示;類型為通信協議裏規定的命令類型;數據為應發送的主要信息;校驗通常采用單字節“異或”的方法。
2.串口通信中的幀同步方法
2.1 逐次比較的幀同步方法
首先等待串口數據,將接收到的第1個字節數據與約定好的包頭信息的第1個字節進行比較。如果不正確,則等待新字節,直到接收的數據與包頭信息的第1個字節相同。第1個字節比較正確以後,將收到的第2個字節與包頭信息的第2個字節進行比較。如果仍然正確,則說明串口接收已經同步,可以開始接收數據幀中的數據部分;否則,重新開始同步過程。其程序流程如圖1所示。

此種方法代碼量小,編程簡單,一般用於在主程序中以非中斷方式接收串口數據、實時性很差、shujuzhenjiaoduandechanghe。danshi,zaichuankousuduguokuaiqiebaotouzijieshubijiaoduodeqingkuangxia,chuankoushixiantongbuhuafeideshijianhenchanghuohennanshixiantongbu。liru,chuankoujieshoudaoxulieOx0O OxAA0xAA 0x55…,當遇到第一個“0xAA”時,該方法認為第1個字節正確開始比較第2個同步頭。第2個字節仍是“0xAA”而不是“0x55”,所以必須等待新的字節重新開始比較第1個同步頭。而緊隨其後的是“0x55”,因而,此時包頭的第1個字節也沒有同步上。事實上,“0x00 OxAA”是幹擾字節,“0xAA 0x55”才是通信協議中的同步頭。
怎樣學好嵌入式技術?
隨著現代社會信息化進程的加快,嵌入式係統被廣泛的地應用於軍事、家用、工業、商業、辦公、醫療等社會各個方麵,表現出很強的投資價值。從國際範圍來看,作為數字化電子信息產品核心的嵌入式係統目前其硬件和軟件開發工具市場已經突破2000yimeiyuan,qianrushixitongdailaidequanqiugongyenianchanzhigengshidadaoleyiwanyimeiyuan,suizhequanqiujingjidechixuzengchangyijixinxihuadejiasufazhan,qianrushixitongshichangbijiangjinyibuzengchang。
根據中國物聯網校企聯盟的建議,學習嵌入式係統的必備條件與學習方法如下:

1、C開發經驗
條件:Linux
方法:主要是掌握ANSI C編程(不包括gtk,qt等圖形可視化開發)
2、網絡、操作係統、體係結構
條件:Linux,各種書,算法、例程。
方法:通過C編程實現簡單的網絡等知識的算法和過程。
3、嵌入式係統概念
條件:各個嵌入式網站,討論組,書籍
方法:少提問,多留給自己思考的空間。
4、嵌入式開發實踐
條件:各種嵌入式係統開發工具的demo版,包括編譯器,仿真器。
方法:一個是基於MCU/MDSP的嵌入式係統開發,另一個是像Palm OS,WinCE,uC/OS II等RTOS下的應用軟件開發。第一個是針對硬件開發而言的,而第二個則是針對軟件開發而言的。

5、硬件開發
條件:各種嵌入式芯片、存儲器等電路器件,protel99等電路設計軟件,電路板製作。
方法:這時候該有開發條件了,最起碼是51係列,這個比較方便。電路的設計內容較多,不過看起來嚇人,實際上比軟件要簡單的多。隻要下功夫,實踐會告訴你一切。
特別推薦
- 噪聲中提取真值!瑞盟科技推出MSA2240電流檢測芯片賦能多元高端測量場景
- 10MHz高頻運行!氮矽科技發布集成驅動GaN芯片,助力電源能效再攀新高
- 失真度僅0.002%!力芯微推出超低內阻、超低失真4PST模擬開關
- 一“芯”雙電!聖邦微電子發布雙輸出電源芯片,簡化AFE與音頻設計
- 一機適配萬端:金升陽推出1200W可編程電源,賦能高端裝備製造
技術文章更多>>
- 三星上演罕見對峙:工會集會討薪,股東隔街抗議
- 摩爾線程實現DeepSeek-V4“Day-0”支持,國產GPU適配再提速
- 築牢安全防線:智能駕駛邁向規模化應用的關鍵挑戰與破局之道
- GPT-Image 2:99%文字準確率,AI生圖告別“鬼畫符”
- 機器人馬拉鬆的勝負手:藏在主板角落裏的“時鍾戰爭”
技術白皮書下載更多>>
- 車規與基於V2X的車輛協同主動避撞技術展望
- 數字隔離助力新能源汽車安全隔離的新挑戰
- 汽車模塊拋負載的解決方案
- 車用連接器的安全創新應用
- Melexis Actuators Business Unit
- Position / Current Sensors - Triaxis Hall
熱門搜索
NFC
NFC芯片
NOR
ntc熱敏電阻
OGS
OLED
OLED麵板
OmniVision
Omron
OnSemi
PI
PLC
Premier Farnell
Recom
RF
RF/微波IC
RFID
rfid
RF連接器
RF模塊
RS
Rubycon
SATA連接器
SD連接器
SII
SIM卡連接器
SMT設備
SMU
SOC
SPANSION

