新聞中心

        EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計應(yīng)用 > 【UART】USCI:UART模式

        【UART】USCI:UART模式

        作者: 時間:2016-11-25 來源:網(wǎng)絡(luò) 收藏


        msp430f541x、msp430f543x多達(dá)4個通用串行通信接口(USCI)模塊,支持多種串行通信模式,不同的 USCI 模塊支持不同的模式。

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

        USCI_Ax模塊支持:

        • UART模式;
        • IrDA通信的脈沖整形;
        • LIN通信的自動波特率檢測;
        • SPI模式;

        USCI_Bx模塊支持:

        • IIC模式;
        • SPI模式;

        UART模式:


        在異步模式下,USCI_Ax模塊通過兩個外部引腳UCAxRXD和UCAxTXD將芯片連接到外部系統(tǒng)。當(dāng)UCSYNC

        位清零時,選擇UART模式。




        UART模塊特征包括:

        • 帶奇校驗、偶校驗或非奇偶校驗的7或8位數(shù)據(jù);
        • 獨立的發(fā)送和接收移位寄存器;
        • 獨立的發(fā)送和接受緩沖寄存器;
        • 發(fā)送和接收的獨立中斷能力;
        • 最低位優(yōu)先或最高位優(yōu)先的數(shù)據(jù)發(fā)送和接收;
        • 多處理器系統(tǒng)的內(nèi)置空閑線路和地址位通信協(xié)議;
        • 用于自動從LPMx模式喚醒的接收機(jī)起始邊沿檢測;
        • 波特率可編程控制,支持小數(shù)波特率調(diào)制;
        • 用于錯誤檢測和抑制的狀態(tài)標(biāo)志;
        • 用于地址檢測的狀態(tài)標(biāo)志;

        一、USCI初始化和復(fù)位

        PUC或置位UCSWRST,可以使USCI復(fù)位。PUC后,UCSWRST位自動置位,這使 USCI保持在復(fù)位狀態(tài)。UCSWRST位置位,將使UCRXIE,UCTXIE,UCRXIFG,UCRXERR,UCBRK,UCPE,UCOE,UCFE,UCSTOE 和 UCBTOE 位復(fù)位,UCTXIFG 位置位。清除 UCSWRST 將釋放 USCI,使其進(jìn)入操作狀態(tài)。



        推薦使用以下過程,進(jìn)行初始化或重新配置:

        1.置位UCSWRST (BIS.B #UCSWRST,&UCAxCTL1);

        2.2設(shè)置UCSWRST=1,初始化所有的USCI寄存器(包括UCAxCTL1);

        3.配置端口;

        4.軟件清除UCSWRST(BIC.B #UCSWRST,&UCAxCTL1);

        5.通過UCRXIE和/或UCTXIE使能中斷(可選);

        例:串口助手發(fā)什么就返回什么.

        #include "msp430x54x.h"

        // ACLK = REFO = 32768Hz, MCLK = SMCLK = default DCO/2 = 1048576Hz

        // P3.4,5——USCI_A0 TXD/RXD;P9.4,5——USCI_A2 TXD/RXD;P10.4,5——USCI_A3 TXD/RXD;

        void main(void)
        {
        WDTCTL = WDTPW + WDTHOLD; // Stop WDT

        P5SEL = 0xc0; // P5.6,7 = USCI_A1 TXD/RXD
        UCA1CTL1 |= UCSWRST; // **Put state machine in reset**
        UCA1CTL1 |= UCSSEL_2; // SMCLK
        UCA1BR0 = 9; // 1MHz 115200 (see Users Guide)
        UCA1BR1 = 0; // 1MHz 115200
        UCA1MCTL |= UCBRS_1 + UCBRF_0; // Modulation UCBRSx=1, UCBRFx=0
        UCA1CTL1 &= ~UCSWRST; // **Initialize USCI state machine**
        UCA1IE |= UCRXIE; // Enable USCI_A1 RX interrupt

        __bis_SR_register(LPM0_bits + GIE); // Enter LPM0, interrupts enabled
        }

        // Echo back RXed character, confirm TX buffer is ready first,發(fā)送數(shù)據(jù)之前確定發(fā)送緩存準(zhǔn)備好

        #pragma vector=USCI_A1_VECTOR
        __interrupt void USCI_A1_ISR(void)
        {
        switch(__even_in_range(UCA1IV,4))
        {
        case 0:break; // Vector 0 - no interrupt
        case 2: // Vector 2 - RXIFG
        while (!(UCA1IFG&UCTXIFG)); // USCI_A1 TX buffer ready?
        UCA1TXBUF = UCA1RXBUF; // TX -> RXed character
        break;
        case 4:break; // Vector 4 - TXIFG
        default: break;
        }
        }

        //UCTXIFG=0x02,UCA1IFG&UCTXIFG,當(dāng)UCA1IFG的UCTXIFG位為1時,說明UCA1TXBUF為空,跳出while循環(huán)循環(huán);當(dāng)UCTXIFG位為0時UCA1TXBUF不為空,停在循環(huán)。


        二、USCI中斷

        USCI只有一個發(fā)送和接收共用的中斷向量,USCI_Ax和USC_Bx不共用中斷向量。

        2.1 USCI 發(fā)送中斷操作

        發(fā)射機(jī)置位 UCTXIFG 中斷標(biāo)志,這表明 UCAxTXBUF 已經(jīng)準(zhǔn)備好接收另一個字符(即UCAxTXBUF 為空)如果UCTXIE 和GIE 也置位的話,將產(chǎn)生中斷請求。如果將字符寫入,UCAxTXBUF、UCTXIFG將自動復(fù)位而無需軟件復(fù)位。PUC之后或UCSWRST = 1時,UCTXIFG 置位、UCTXIE 復(fù)位。

        2.2 USCI 接收中斷操作

        每接收到1個字符并將其載入到 UCAxRXBUF 時,UCRXIFG 中斷標(biāo)志置位,如果 UCTXIE 和 GIE 也置位的話,將產(chǎn)生中斷請求。UCRXIFG 和UCRXIE 可以通過系統(tǒng)復(fù)位PUC信號或 UCSWRST = 1復(fù)位。當(dāng)讀取UCAxRXBUF時,UCRXIFG 自動復(fù)位。

        2.3 UCAxIV,中斷向量發(fā)生器

        USCI 中斷標(biāo)志具有一定的優(yōu)先次序,組合使用一個中斷向量。中斷向量寄存器 UCAxIV 用于確定產(chǎn)生中斷的標(biāo)志。使能的具有最高優(yōu)先級的中斷在 UCAxIV寄存器內(nèi)產(chǎn)生一個數(shù)值,該數(shù)值可以加到程序計數(shù)器上,從而自動跳轉(zhuǎn)到相應(yīng)的軟件子程序處。禁止中斷不會影響 UCAxIV的值。

        對UCAxIV寄存器的任何訪問,讀或?qū)?,將會自動?fù)位掛起的優(yōu)先級最高的中斷標(biāo)志。如果另一個中斷標(biāo)志置位,在響應(yīng)完第一個中斷后,立即產(chǎn)生另一個中斷。

        三、寄存器

        3.1




        此寄存器主要是定義數(shù)據(jù)通信的字符格式,UART 的字符格式包括一個起始位,7 或 8 位數(shù)據(jù)位,一個奇/偶/非奇偶校驗位,地址位(地址位模式),以及1或2個停止位,UCMSB位控制傳送方向,選擇低位或高位優(yōu)先,UART 通訊的典型選擇是低位優(yōu)先。

        PUC之后全為0,即 字符長度8、1個停止位、無奇偶校驗、低位優(yōu)先,UART模式。

        UCMODEx Bits2_1位:

        兩個芯片進(jìn)行異步通信時,對協(xié)議來說,不需要多處理器格式。當(dāng)3 個或更多個芯片通信時,USCI 支
        持線路空閑和地址位多處理器通信格式。


        上一頁 1 2 下一頁

        關(guān)鍵詞: UARTUSCIUART模

        評論


        技術(shù)專區(qū)

        關(guān)閉
        主站蜘蛛池模板: 安宁市| 临沧市| 乃东县| 霍州市| 宁强县| 保德县| 方城县| 洞头县| 栖霞市| 夹江县| 江源县| 双鸭山市| 永州市| 固原市| 叶城县| 武川县| 忻州市| 保德县| 鄂伦春自治旗| 九龙县| 雷山县| 东至县| 德惠市| 尉犁县| 安塞县| 梁平县| 临泉县| 泽普县| 吉安县| 山阴县| 津市市| 宁城县| 广昌县| 芦山县| 股票| 永定县| 南澳县| 读书| 邢台市| 依兰县| 明水县|