MSP430--UART模塊
1.異步通信的結構:
本文引用地址:http://dyxdggzs.com/article/201611/322052.htm2.UART數據格式(數據協(xié)議):
異步通信再不發(fā)送數據的時(shí)候,通信線(xiàn)路上總是呈現高電平狀態(tài),稱(chēng)為空閑狀態(tài)。當有數據發(fā)送是,信號線(xiàn)變成低電平,并持續一位的時(shí)間用于表示發(fā)送字符的開(kāi)始,該為稱(chēng)為起始位。起始位之后在信號線(xiàn)上依次出現發(fā)送的數據。
起始位,數據位由高到低7/8位,地址位 0/1位,奇偶校驗位 奇偶或無(wú),停止位1/2位。數據位位數、地址位、奇偶校驗位、停止位均可由單片機內部寄存器控制;這款單片機都有兩個(gè)USART模塊,有兩套獨立的寄存器組;以下寄存器命中出現x代表0或是1,0代表對應0模塊的寄存器,1代表對應1模塊的寄存器;其中,與串口模式設置相關(guān)的控制位都位于UxCTL寄存器,與接收相關(guān)的控制位都位于UxRCTL寄存器,與發(fā)送相關(guān)的控制位都位于UxTCTL寄存器;波特率設置用UxBR0、UxBR1、UxMCTL三個(gè)寄存器;接收與發(fā)送有獨立的緩存UxRXBUF、UxTXBUF,并具有獨立的移位寄存器和獨立的中斷;中斷允許控制位位于IE1/2寄存器,中斷標志位位于IFG1/2寄存器。
3.波特率設置:430的波特率設置用三個(gè)寄存器實(shí)現:
UxBR0:波特率發(fā)生器分頻系數低8位。
UxBR1:波特率發(fā)生器分頻系數高8位。
UxMCTL:波特率發(fā)生器分頻系數的小數部分實(shí)現。
設置波特率時(shí),首先要選擇合適的時(shí)鐘源:USART模塊可以設置的時(shí)鐘源有UCLK引腳、ACLK、SMCLK;對于較低的波特率(9600以下),可選ACLK作為時(shí)鐘源,這樣,在LPM3(低功耗3)模式下,串口仍能正常發(fā)送接收數據;另外,由于串口接收過(guò)程有一個(gè)三取二判決邏輯,這至少需要三個(gè)時(shí)鐘周期,因此分頻系數必須大于3;波特率高于9600時(shí),將不能使用ACLK作為時(shí)鐘源,要調為頻率較高的SMCLK作為時(shí)鐘源;另外還可以外部輸入UCLK時(shí)鐘。分頻系數計算公式如下:
小數分頻是MSP430單片機的串口特色之一,UxMCTL寄存器的作用就是控制小數的分頻,控制方法如下:對應位是1,則分頻系數加一,0則分頻系數減一;小數分頻器會(huì )自動(dòng)依次取出每一位來(lái)調整分頻系數。其計算方法:可以先計算小數部分一的個(gè)數,然后把1均勻的放入UxMCTL的8位中,這樣計算比較簡(jiǎn)單,分頻系數的小數部分乘以8即得到1的位數,查表得到對應的UxMCTL值;另外一種通過(guò)計算每一位的錯誤率,交互計算,直到得到最小錯誤率的UxMCTL值,這種方法比較復雜,但得到的小數分頻誤差更小。
4.UART的初始化及復位
(1)UxCTL寄存器的第0位SWRST置位;
(2)在SWRST置位的條件下,初始化所有的UART寄存器,包括UxCTL寄存器;
(3)通過(guò)置位模塊使能寄存器MEx的URXEx和UTXEx位使能UART的接受和發(fā)送使能模塊;
(4)通過(guò)軟件復位UxCTL寄存器的第0位SWRST;
(5)通過(guò)中斷使能寄存器IEx的URXIEx和UTXIEx來(lái)使能發(fā)送和接受中斷。
5.UART的中斷
(1)發(fā)送中斷:當發(fā)送緩沖寄存器UxTXBUF被寫(xiě)入需要發(fā)送的數據的時(shí)候,UTXIFGx的中斷標志位被置位;如果發(fā)送中斷被允許,并且總中斷被使能的話(huà),則會(huì )向CPU發(fā)出中斷請求。當響應中斷請求之后,中斷標志位被自動(dòng)置0,在中斷函數里邊不需要手動(dòng)清除標志位。
(2)接收中斷:當有數據被裝載到發(fā)送緩沖寄存器UxRXBUF時(shí),UTXIFGx的中斷標志位被置位;如果接受中斷被允許,并且總中斷被使能的話(huà),則會(huì )向CPU發(fā)出中斷請求。當響應中斷請求之后,中斷標志位被自動(dòng)置0,在中斷函數里邊不需要手動(dòng)清除標志位。
評論