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