国产精品久久久久影院,成人午夜福利视频,国产精品久久久久高潮,国产精品 欧美 亚洲 制服,国产精品白浆无码流出

歷史上的今天

今天是:2024年10月15日(星期二)

正在發(fā)生

2018年10月15日 | msp430f5419/38學(xué)習(xí)筆記之USCI:UART模式

發(fā)布者:FreeSpirit123 來源: eefocus關(guān)鍵字:msp430f5419  USCI  UART模式 手機(jī)看文章 掃描二維碼
隨時(shí)隨地手機(jī)看文章

msp430f5419/38學(xué)習(xí)筆記之USCI:UART模式

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

  USCI_Ax模塊支持:

  • UART模式;

  • IrDA通信的脈沖整形;

  • LIN通信的自動(dòng)波特率檢測(cè);

  • SPI模式;

  USCI_Bx模塊支持:

  • IIC模式;

  • SPI模式;

UART模式:

msp430f5419/38學(xué)習(xí)筆記之USCI:UART模式
    在異步模式下,USCI_Ax模塊通過兩個(gè)外部引腳UCAxRXD和UCAxTXD將芯片連接到外部系統(tǒng)。當(dāng)UCSYNC

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

msp430f5419/38學(xué)習(xí)筆記之USCI:UART模式

msp430f5419/38學(xué)習(xí)筆記之USCI: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ī)起始邊沿檢測(cè);

  • 波特率可編程控制,支持小數(shù)波特率調(diào)制;

  • 用于錯(cuò)誤檢測(cè)和抑制的狀態(tài)標(biāo)志;

  • 用于地址檢測(cè)的狀態(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)。
msp430f5419/38學(xué)習(xí)筆記之USCI:UART模式
msp430f5419/38學(xué)習(xí)筆記之USCI:UART模式

推薦使用以下過程,進(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 User's 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)。 

msp430f5419/38學(xué)習(xí)筆記之USCI:UART模式
msp430f5419/38學(xué)習(xí)筆記之USCI:UART模式

二、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ù)位。 

msp430f5419/38學(xué)習(xí)筆記之USCI:UART模式

msp430f5419/38學(xué)習(xí)筆記之USCI:UART模式

  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

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

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

 msp430f5419/38學(xué)習(xí)筆記之USCI:UART模式

   UCMODEx Bits2_1位:

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

    3.11 線路空閑多處理器模式(待續(xù))

    3.12 地址位多處理器模式(待續(xù))

    3.13 自動(dòng)波特率檢測(cè)(待續(xù))

  3.2

msp430f5419/38學(xué)習(xí)筆記之USCI:UART模式
msp430f5419/38學(xué)習(xí)筆記之USCI:UART模式
msp430f5419/38學(xué)習(xí)筆記之USCI:UART模式

    此寄存器主要是配置USCI,PUC后時(shí)鐘選擇外部時(shí)鐘,所以初始化時(shí)除了置位 UCSWRST 位外還需配置時(shí)鐘源。其它的默認(rèn)就行。

四、低功耗 UART模式下使用 USCI模塊

    USCI 模塊提供低功耗模式下的自動(dòng)時(shí)鐘激活功能。當(dāng) USCI 時(shí)鐘源由于設(shè)備處于低功耗模式不活動(dòng)時(shí),無論時(shí)鐘源的控制位如何設(shè)置,USCI 模塊會(huì)在需要時(shí)激活時(shí)鐘源,時(shí)鐘將保持活動(dòng)狀態(tài)直到 USCI模塊返回空閑狀態(tài)。USCI模塊返回到閑狀態(tài)后,將反轉(zhuǎn)時(shí)鐘源控制位的設(shè)置。

eg.
void InitUARTA1(void)
{
  UCA1CTL1 |= UCSWRST;// PUC后,UCSWRST位自動(dòng)置位,這使 USCI保持在復(fù)位狀態(tài)
  UCA1CTL0 = 0x00;                         
  UCA1CTL1 |= UCSSEL_2;                     // SMCLK
  UCA1BR0 = 216;                            // 24MHz 115200
  UCA1BR1 = 0;                              // 24MHz 115200
  UCA1MCTL = UCBRS_2 + UCBRF_0;             // 0x04+0x00
  P5SEL = 0xC0;                             // P5.6/7 = USCI_A0 TXD/RXD
  UCA1CTL1 &= ~UCSWRST;    // **Initialize USCI state machine**,。清除UCSWRST 將釋放 USCI,         UCA1IE |= UCRXIE;                          // Enable USCI_A1 RX interrupt
}
#pragma vector = USCI_A1_VECTOR
__interrupt void USCI_A1_ISR(void)
{
  switch (__even_in_range(UCA1IV,4))
  {
  case 0:break;                             
  case 2:
   g_uartBufA[g_bufALen] = UCA1RXBUF;
   if (g_uartBufA[g_bufALen]==0xFF)
   {
    }
   if (g_uartBufA[g_bufALen++]==0xFD) //判斷PC機(jī)發(fā)送的命令幀是否已完
   {
     g_bufALen=0;
     g_uartReceive = 1;// 置位
   }
  break;
  case 4:break;                             // Vector 4 - TXIFG
  default: break;
  }
}
void USciSend( )
{
  unsigned char i;
  for (i = 0; i < g_bufALen; i++)
  {
    while (!(UCA1IFG & UCTXIFG));
    UCA1TXBUF = g_uartBufA[uartBuf1];
  }
}// UCA1MCTL 是UCA1的調(diào)制控制寄存器

msp430f5419/38學(xué)習(xí)筆記之USCI:UART模式
msp430f5419/38學(xué)習(xí)筆記之USCI:UART模式
msp430f5419/38學(xué)習(xí)筆記之USCI:UART模式

  五、波特率的產(chǎn)生

    USCI 波特率發(fā)生器可以從非標(biāo)準(zhǔn)源頻率中產(chǎn)生標(biāo)準(zhǔn)的波特率,可以通過UCOS16位選擇系統(tǒng)提供的兩種操作模式。波特率可以通過使用BRCLK 產(chǎn)生,根據(jù) UCSSELx設(shè)置,BRCLK 可以作為外部時(shí)鐘 UCAxCLK或內(nèi)部時(shí)鐘ACLK 或SMCLK 的時(shí)鐘源。 

  5.1 低頻波特率

     當(dāng)UCOS16=0 時(shí)選擇低頻模式。該模式允許從低頻時(shí)鐘源產(chǎn)生波特率(例如從32768Hz 晶振產(chǎn)生9600波特)。通過使用較低的輸入頻率,可以降低模塊的功耗。在高頻和高分頻設(shè)置下使用這種模式,將會(huì)使多數(shù)表決在逐漸縮小的窗口中執(zhí)行,因此會(huì)降低多數(shù)表決法的優(yōu)勢(shì)(下面的例子都是這種模式)。

    在低頻模式下,波特率發(fā)生器使用1個(gè)預(yù)分頻器和1個(gè)調(diào)制器產(chǎn)生位時(shí)鐘時(shí)序。這種組合下,產(chǎn)生波特率時(shí)支持小數(shù)分頻;在這種模式下,最大的 USCI波特率是UART 源時(shí)鐘頻率 BRCLK的1/3 。

    每一位的時(shí)序如圖所示,對(duì)于接收的每一位,為了確定該位的值,采用多數(shù)表決法。這些采樣點(diǎn)發(fā)生在N/2-1/2,N/2 和N/2 + 1/2 個(gè)BRCLK 周期處,這里N 是每個(gè)BITCLK 時(shí)鐘中 BRCLKs 的數(shù)值。 

msp430f5419/38學(xué)習(xí)筆記之USCI:UART模式

    調(diào)制是建立在如表15-2 所示的 UCBRSx 設(shè)置基礎(chǔ)上的。表中1個(gè)1 表示m= 1,相應(yīng)的BITCLK 周期是一個(gè)BRCLK 周期,它比m=0 時(shí)的BITCLK 周期長(zhǎng)。調(diào)制在8位后進(jìn)行,但以新的開始位重新啟動(dòng)。

  5.2 過采樣波特率的產(chǎn)生

    當(dāng)UCOS16=1時(shí),選擇過采樣模式。該模式支持在較高輸入時(shí)鐘頻率下對(duì)UART 位流采樣。在多數(shù)表決方法的結(jié)果總是一個(gè)位時(shí)鐘周期的1/16位置。當(dāng)使能IrDA 編碼器和解碼器時(shí),這種模式也支持帶有3/16位時(shí)間的IrDA脈沖。 

    該模式使用一個(gè)預(yù)分頻器和調(diào)制器產(chǎn)生BITCLK16 時(shí)鐘,該時(shí)鐘比 BITCLK 快16倍。這種組合方式支持波特率產(chǎn)生時(shí) BITCLK16 和BITCLK 的小數(shù)分頻。在這種情況下,最大的USCI 波特率是 UART源時(shí)鐘頻率BRCLK的1/16。當(dāng)UCBRx 設(shè)置為0或1時(shí),將忽略第一級(jí)分頻器和調(diào)制器,BRCLK等于 BITCLK16—在這種情況下BITCLK16沒有調(diào)制,因此將忽略 UCBRFx位。 

    BITCLK16 調(diào)制是建立在如表15-3 所示的 UCBRFx 設(shè)置基礎(chǔ)上的。表中1個(gè)1 表示相應(yīng)的 BITCLK16 周期一個(gè)BRCLK周期,它比m=0 時(shí)的BITCLK16周期長(zhǎng)。以每一個(gè)新位時(shí)序開始調(diào)制;BITCLK調(diào)制是建立在如前所述的 UCBRSx設(shè)置(見表15-2)基礎(chǔ)上的。

  5.3 設(shè)置波特率

    430的波特率設(shè)置用三個(gè)寄存器實(shí)現(xiàn): 
    UxBR0:波特率發(fā)生器分頻系數(shù)低8位;
    UxBR1:波特率發(fā)生器分頻系數(shù)高8位;
    UxMCTL:波特率發(fā)生器分頻系數(shù)的小數(shù)部分實(shí)現(xiàn); 
    對(duì)于給定的BRCLK時(shí)鐘源,所使用的波特率將決定分頻因子 N: N = fBRCLK/波特率。分頻因子N 通常不是一個(gè)整數(shù)值,因此至少需要一個(gè)分頻器和一個(gè)調(diào)制器來盡可能接近分頻因子,如果N 值等于或大于16,可以通過置位UCOS16 選擇過采樣波特率產(chǎn)生模式。 

    在低頻模式下,分頻因子的整數(shù)部分通過預(yù)分頻器實(shí)現(xiàn) UCBRx = INT(N);
    小數(shù)部分由帶有下面nominal公式的調(diào)制器實(shí)現(xiàn): UCBRSx = round((N–INT(N))× 8),(round表示舍入)
UCBRSx計(jì)數(shù)值增1或減1,對(duì)任何給定的位給一個(gè)較小的最大比特誤差。為了檢測(cè)是不是這種情況,對(duì)于每個(gè)UCBRSx設(shè)置的每一位都必須經(jīng)過詳細(xì)的誤差計(jì)算;

   在過采樣模式下,預(yù)分頻器設(shè)置為:UCBRx = INT(N/16),第一階調(diào)制器設(shè)置為:UCBRFx = round(((N/16)– INT(N/16) ) × 16 ),當(dāng)需要更高精度時(shí),UCBRSx調(diào)制器可以實(shí)現(xiàn)從 0到7 的值。對(duì)于給定位,為了找到最低的最大誤碼率設(shè)置,對(duì)于帶有初始UCBRFx設(shè)置和增1 或減 1的 UCBRFx設(shè)置的 UCBRSx從0到7的所有設(shè)置,都必須經(jīng)過詳細(xì)的誤差計(jì)算。 
msp430f5419/38學(xué)習(xí)筆記之USCI:UART模式

下面詳解上例中的四條語(yǔ)句:

  UCA1CTL1 |= UCSSEL_2;                     // SMCLK
  UCA1BR0 = 216;                            // 24MHz 115200
  UCA1BR1 = 0;                              // 24MHz 115200
  UCA1MCTL = UCBRS_2 + UCBRF_0;             // 0x04+0x00

    這里 SMCLK 已在時(shí)鐘部分初始化,其時(shí)鐘源為: Fdcoclkdiv = (760+1)*32768 = 24.936448 MHZ;
分頻系數(shù) N = 24936448/115200 = 216.462222,UCA1BR0是分頻系統(tǒng)整數(shù)部分的低8位、UCA1BR1是高8位,所以..
UCA1MCTL 是波特率發(fā)生器分頻系數(shù)的小數(shù)部分,由于是低頻模式(UCOS16=0), UCA1MCTL 寄存器中的 UCBRFx 位忽略,而 UCBRSx = round((N–INT(N))× 8) 即 UCBRSx = 0.46×8 四舍五入取為 4。
   UCBRSx 的值也可以這么解釋: 0.46*8=3.68 四舍五入為 4個(gè)1,把這4個(gè)1分成8位均勻排開 01010101 (LSB在前),對(duì)照表15-2 查得 UCBRSx=0x04。


關(guān)鍵字:msp430f5419  USCI  UART模式 引用地址:msp430f5419/38學(xué)習(xí)筆記之USCI:UART模式

上一篇:msp430f5419/38學(xué)習(xí)筆記之時(shí)鐘系統(tǒng)
下一篇:MSP430F5529液晶SPI通信協(xié)議

推薦閱讀

日前,在紀(jì)念集成電路發(fā)明60周年學(xué)術(shù)會(huì)議上,清華大學(xué)副校長(zhǎng)王希勤教授出席并發(fā)表演講。王希勤教授首先回顧了清華微電子發(fā)展歷程,其表示,清華大學(xué)很早前(1980年)就成立了微電子研究所,之后又設(shè)立微納電子系以及微電子學(xué)院,之后設(shè)立微電子學(xué)院,可以說是國(guó)內(nèi)最早一批投身于微電子行業(yè)的高校。王希勤表示,走入新時(shí)代,清華大學(xué)又從深化改革入手,2014...
去年十一前夕 TI(德州儀器)取消了新曄的代理權(quán),時(shí)隔一年,今年十一期間 TI 再次提出將在 2020 年 12 月 31 日前終止安富利、文曄和大聯(lián)大子公司世平的代理權(quán)。至此,在 2021 年之后 TI 的代理商有可能只剩下了艾睿一家。 近日,兩家被 TI 拋棄的電子元器件分銷商大聯(lián)大及文曄在電子產(chǎn)業(yè)傳統(tǒng)旺季效應(yīng)的帶動(dòng)下,第三季度營(yíng)收雙雙走高。其中...
據(jù)外媒報(bào)道,日本跨國(guó)科技公司京瓷(Kyocera Corporation)研發(fā)了概念車II——Moeye,并在該車上展示了其獨(dú)特的技術(shù),通過整合人類的視覺、聽覺、觸覺和嗅覺來優(yōu)化駕駛體驗(yàn)。Moeye概念車(圖片來源:京瓷)Moeye概念車概覽考慮到自動(dòng)駕駛和出行服務(wù)(MaaS)在持續(xù)發(fā)展,京瓷重點(diǎn)關(guān)注了汽車內(nèi)部空間,研發(fā)了未來感座艙,在原創(chuàng)汽車設(shè)計(jì)中提供創(chuàng)新技術(shù)。通...
自動(dòng)駕駛汽車又雙叒叕撞了!近日,網(wǎng)絡(luò)人稱“萌劍客”的上善若水投資管理公司創(chuàng)始人、美一好品牌管理公司創(chuàng)始人林文欽駕駛的某品牌汽車,在“自動(dòng)駕駛”狀態(tài)下,在沈海高速發(fā)生交通事故,不幸去世。 人們?cè)趯?duì)英年早逝的遇難者表示遺憾和哀悼的同時(shí),免不了將質(zhì)疑的目光投向汽車廠商,以及這些年不知讓多少人趨之若鶩的自動(dòng)駕駛。 PS. 歡迎大家文末參與討...

史海拾趣

小廣播
設(shè)計(jì)資源 培訓(xùn) 開發(fā)板 精華推薦

最新單片機(jī)文章

 
EEWorld訂閱號(hào)

 
EEWorld服務(wù)號(hào)

 
汽車開發(fā)圈

 
機(jī)器人開發(fā)圈

電子工程世界版權(quán)所有 京ICP證060456號(hào) 京ICP備10001474號(hào)-1 電信業(yè)務(wù)審批[2006]字第258號(hào)函 京公網(wǎng)安備 11010802033920號(hào) Copyright ? 2005-2025 EEWORLD.com.cn, Inc. All rights reserved