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