STM32學習016_數(shù)據(jù)幀
在作通信工作時,我們常常會遇到“幀”這個概念,我迷惑的地方在于,一幀數(shù)據(jù)包含N個(1+8bit+1+1 起始位+8位數(shù)據(jù)+校驗位+停止位),還是(1+N*8bit+1+1),今天仔細深究了一下,現(xiàn)將收獲說一下,希望對讀者有幫助。
首先要弄清楚一些概念:
“1+8bit+1+1”是串行通訊一個字節(jié)的格式,屬于串行通信中最小數(shù)據(jù)格式的單位,1個起始位+8個數(shù)據(jù)位+1個校驗位+1個停止位(也有1+8+0+1等等),也就是要收發(fā)N個字節(jié),就會有N個(1+8bit+1+1)這樣的組合出現(xiàn)在TXD和RXD線路上,而不是1+nbit+1+1或者1+nx8bit+1+1。以上敘述中,
起始位和停止位:用于同步;
校驗位:用來保證通訊的正確性;
8個數(shù)據(jù)位:設備需要的真正的數(shù)據(jù);
起始位和停止位都是收發(fā)方適配器自身的硬件完成的,校驗位需要根據(jù)程序處理以及判斷以便知道信息是否正確,一般而言,在初始化設置完成后,寫程序者只要關注8個數(shù)據(jù)位和校驗位就可以了。
入正題,下面說一下“幀”,
串行通信中,幀一般是需要根據(jù)自己的約定而定的,其內(nèi)容一般由多個8位單字節(jié)數(shù)據(jù)構成的。比如說嗎,一個主機要采集外設的傳感器信號,(采集電流,電壓),這些信息需要10字節(jié),那么你一幀信息至少需要10字節(jié),也就是收發(fā)雙方都需要計數(shù),計數(shù)達到10才說明通訊完成,這是最簡單的。大多數(shù)應用中,規(guī)范的做法是,一幀信息包含幀頭標識符,幀長度,信息內(nèi)容,以及校驗信息。
對于多個傳感器,應給每一個分配唯一的地址,只有地址相符的傳感器才對主端的信息作出回應,地址信息可以包含到通訊協(xié)議中,比如:幀頭+幀長度+終端地址+信息內(nèi)容+校驗和,如果使用51單片機,可以使用串行通訊方式3。