基于MSP430系列微控制器串口通信時的波特率自動檢測的實現(xiàn)
通常微控制器通過串行接口與其它終端進(jìn)行通信時,兩個終端需要通訊波特率一致才能達(dá)到準(zhǔn)確與可靠的通訊效果,串行波特率的自動檢測(ABR)可以解決通信終端的波特率自動匹配問題,從而實現(xiàn)微控制器與PC或其它主機(jī)的串行通信。本文主要介紹MSP430系列微控制器實現(xiàn)串口通信時的波特率自動檢測。
1.概述
當(dāng)MCU需要同時與幾個不同波特率值的系統(tǒng)進(jìn)行通信時,ABR檢測功能則顯得很重要。ABR檢測在檢測波特率值的同時可以自動調(diào)整波特率值。在執(zhí)行ARB檢測算法時,當(dāng)主機(jī)波特率在115200~74400之間時,MCU必須從主機(jī)接收到一個預(yù)先設(shè)置的特定字符,如
2.系統(tǒng)硬件結(jié)構(gòu)框圖
本文開發(fā)板包含MSP430F1232微控制器、32kHz晶振、UART接口芯片和其它外設(shè)電路。PC機(jī)作為串行通信的主機(jī),通過RS-232接口與開發(fā)板上的MSP430F1232進(jìn)行通信,如下圖所示,該通信方法適用含有USART模塊的任意MSP430系列微控制器。
3.軟件設(shè)計
3.1軟件簡介
軟件設(shè)計源程序采用C與匯編語言結(jié)合完成,如上表所示。其中,main.c程序用C語言完成,可以調(diào)用C或匯編語言的波特率算法,C和匯編語言的波特率算法具有相同的功能,可隨意選擇其中一個即可。
3.2USART設(shè)置
文中將USART模塊設(shè)置為UART模式,8個數(shù)據(jù)位、一個停止位,無奇偶校驗位,系統(tǒng)SMCLK時鐘作為USART時鐘源,配置為1MHz頻率,允許UART的最高通訊波特率達(dá)到230400。本文分析的標(biāo)準(zhǔn)波特率值范圍1200~115k之間。UART模塊初始化波特率設(shè)置為115200波特率。
3.3ABR原理
這部分主要講述如何通過從主機(jī)接收到的一個或兩個特定字符判斷串行主機(jī)的通行波特率并且自動調(diào)整波特率。本文采用檢測單個回車字符
3.4115200~14400波特率檢測原理
本節(jié)主要講述當(dāng)主機(jī)通信在115200。14400之間時ABR的檢測算法。MSP430微控制器初始化UART波特率為一個較高數(shù)值,如115200。因為一般串口通訊波特率從高到低存在一種比例關(guān)系的,如:115200=2×57600=3×384000當(dāng)接收到主機(jī)波率在115200~14400之間時,發(fā)送一個預(yù)先確定的回車字符,如果從機(jī)波特率不匹配,則從機(jī)接收的實際字符會根據(jù)從機(jī)波特率大小有所不同,如下圖所示。當(dāng)在相位中接收到0字符時,則判斷主機(jī)波特率低于14400,即可確定主機(jī)通信波特率不在5200~14400檢測范圍之內(nèi)。
3.59600~1200波特率檢測原理
當(dāng)主機(jī)通信在9600~1200之間時ABR的檢測算法與115200~14400之間原理一樣,檢測該段范圍之內(nèi)的波特率須先確定主機(jī)通信波特率低于14400,主機(jī)發(fā)送
3.6自動檢測源代碼
自動波特率檢測源代碼如下所示:
4.結(jié)語
本文主要描述了利用MSP430微控制器實現(xiàn)自動波特率檢測技術(shù),通過發(fā)送一個或兩個特定的字符來確定主機(jī)通信波特率,在接收過程中如果波特率不正確字符將會丟失。盡管ABR檢測應(yīng)用在起始源代碼中,同樣也可以擴(kuò)展運用到主機(jī)與從機(jī)通訊的任一時間段。