<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          【UART】USCI:UART模式

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


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

          本文引用地址:http://www.ex-cimer.com/article/201611/321230.htm

          USCI_Ax模塊支持:

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

          USCI_Bx模塊支持:

          • IIC模式;
          • SPI模式;

          UART模式:


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

          位清零時(shí),選擇UART模式。




          UART模塊特征包括:

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

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

          PUC或置位UCSWRST,可以使USCI復(fù)位。PUC后,UCSWRST位自動(dòng)置位,這使 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時(shí),說明UCA1TXBUF為空,跳出while循環(huán)循環(huán);當(dāng)UCTXIFG位為0時(shí)UCA1TXBUF不為空,停在循環(huán)。


          二、USCI中斷

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

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

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

          2.2 USCI 接收中斷操作

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

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

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

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

          三、寄存器

          3.1




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

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

          UCMODEx Bits2_1位:

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


          上一頁 1 2 下一頁

          關(guān)鍵詞: UARTUSCIUART模

          評(píng)論


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

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();