新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > MSP430教程15:MSP430單片機串行通訊模塊

        MSP430教程15:MSP430單片機串行通訊模塊

        作者: 時間:2016-11-13 來源:網絡 收藏
        串行異步通訊模塊

        MSP430系列產品中,每一款型號都能實現串行通訊的功能,在MSP430F1X11系列中,可以用定時器A和軟件編程結合實現串行通訊功能。而在其它系列產品中都帶有硬件的串行通訊模塊USART;另外,MSP430F14X系列產品中還帶了兩個串行通訊模塊。而在MSP430F15X,F16X系列中USART0還可以實現IIC總線通訊。在UART模塊中帶有UART串行異步通訊和SPI同步通訊硬件資源。

        本文引用地址:http://www.104case.com/article/201611/316503.htm

        圖是USART模塊結構圖,從下圖可以看出USART模塊分別由波特率部分:波特率發生器,串行通訊接收/發送控制寄存器。

        接收部分,發送部分,端口IO部分。

        串行異步通訊的特點:

        1-異步通訊模式,包括線路空閑/地址位通信協議。

        2-有兩個單獨的移位寄存器,輸入/輸出移位寄存器(如下圖)。

        3-傳輸7位或8位數據,可采用奇偶或無校驗。

        4-可編程實現波特率調整。

        5-分別發,收單獨中斷。

        6-有效地檢測到起始位實現從低功耗喚醒。

        7-狀態標志檢測錯誤或者地址位。

        串行同步通訊(SPI)的特點:

        1-動持3線/4線的SPI通訊。

        2-支持主機模式與從機模式。

        3-收發有單獨的緩沖器,移位寄存器。

        4-收發有單獨的中斷。

        5-時鐘極性和相位可編程。

        6-主機模式的時鐘頻率可編程。

        7-7位/8位字符長度。

        有關USART的詳細應有原理,建議初學者參考清華大學出版社的<>。

        串行異步通訊應用例程

        //*******************************************

        //MSP430F149串口行實驗程序

        //P3.4為發送,P3.5為接收

        //晶體使32768HZ.

        //程序描述:利用串口調試軟件;向串口發送一個字符,MSP430單片機接收到后從低功耗中喚醒.并將收接緩沖區的字符再發送到//電腦上的調試軟件中.單片機發送完后又進入低功耗狀態.

        //*******************************************

        #include <msp430x14x.h>

        void main(void)

        {

        WDTCTL = WDTPW + WDTHOLD; // 停止WDT

        UCTL0 = CHAR; // 設串口控制寄存器,設為8位字符格式

        UTCTL0 = SSEL0; // 設串口控制寄存器所使用的時鐘,選擇UCLK = ACLK

        UBR00 = 0x0D; // 波特率設置32k/2400 - 13.65

        UBR10 = 0x00;

        UMCTL0 = 0x6D; // 波特率調整器設置

        ME1 |= UTXE0 + URXE0; // 模塊允許寄存器設置,使能USART0 TXD/RXD

        IE1 |= URXIE0; // 中斷允許寄存器設置,接收中斷允許

        P3SEL |= 0x30; // 將P3.4,5使用外圍模塊 = USART0 TXD/RXD

        P3DIR |= 0x10; // 將P3.4設為輸出(發),P3.5默認為輸入(收)

        _EINT(); // 全局中斷使能

        // Mainloop

        for (;;)

        {

        LPM3; // 進入LPM3模式,等待字符接收.

        while ((IFG1 & UTXIFG0) == 0); // USART0發送UTXIFG0=1,表示UTXBUF準備好發送一下字符

        TXBUF0 = RXBUF0; // 將收到緩沖區字符送發送區

        }

        }

        //串口接收中斷,退出LPM3模式.

        #pragma vector=USART0RX_VECTOR

        __interrupt void usart0_rx (void)

        {

        LPM3_EXIT;

        }

        //*****************************************

        //例程結束



        評論


        技術專區

        關閉
        主站蜘蛛池模板: 东丽区| 长宁区| 湖北省| 军事| 古浪县| 三明市| 密云县| 上杭县| 东平县| 岳池县| 循化| 靖江市| 龙川县| 电白县| 垫江县| 灵川县| 汤阴县| 阜阳市| 塘沽区| 武山县| 类乌齐县| 惠州市| 彰武县| 芷江| 南雄市| 成安县| 枣阳市| 伊通| 武穴市| 略阳县| 菏泽市| 延川县| 开鲁县| 东平县| 色达县| 水城县| 鲁甸县| 岢岚县| 通辽市| 正定县| 屏东县|