SCM MSP430G2553 컴퓨터 직렬 포트 전송 속도

사용자 설명서 링크

이 레지스터 :
그림 삽입 설명 여기

전송 속도 발생기 분배기 (프리스케일러 / 분배기) 의존 및 변조 (변조).

9600 보레이트, 분주 값을 설정, 시계 등 8MHZ SMCLK 소스들의 세트로부터 선택된다 :
= R C L K B a u d R a t e = 8 M H Z 9600 = 833.3333333333 ( d e c ) = 001101000001 ( b i n ) N = \ {FRAC BRCLK {B}의 AUD의 R 먹은} = \ {FRAC 8MHZ} {9600} = 833.3333333333 (DEC) = 001,101,000,001 (BIN)
UCA0BR1 높은 여덟 UCA0BR0의 하위 8.
833.3333333333 (DEC)는 소수의 이진 표현을 제공하기 위해 제거 직접 디바이더 UCA0BR0 UCA0BR1는 보레이트 구성을 완성하기 위해 결합.
N은 16과 동일보다 큰 경우, 전송 속도의 생성 모드를 오버 샘플링 세트 UCOS16하는데 사용될 수있다.
가능한 한 가깝게 소수 부분에 대한 변조기.
수동뿐만 아니라 복잡한 문제 및 솔루션의 다양한. 너무 멀게하고 디버깅 자신을 계산, 참조 구성 테이블, 큰 가치를 제공합니다.
그림 삽입 설명 여기

참조 구성 테이블 :

표 15-4.  일반적으로 보율, 설정, 오류를 사용, UCOS16 = 0
그림 삽입 설명 여기
그림 삽입 설명 여기

참조 코드 :

그림 삽입 설명 여기
그림 삽입 설명 여기

//                MSP430G2xx3
//             -----------------
//         /|\|              XIN|-
//          | |                 |
//          --|RST          XOUT|-
//            |                 |
//            |     P1.2/UCA0TXD|------------>
//            |                 | 9600 - 8N1
//            |     P1.1/UCA0RXD|<------------

#define CPU_F ( (double) 8000000)
#define delay_us( x )   __delay_cycles( (long) (CPU_F * (double) x / 1000000.0) )
#define delay_ms( x )   __delay_cycles( (long) (CPU_F * (double) x / 1000.0) )
/* 串口波特率计算,当BRCLK=CPU_F时用下面的公式可以计算,否则要根据设置加入分频系数 */
#define baud        9600                                          /* 设置波特率的大小 */
#define baud_setting    (uint) ( (ulong) CPU_F / ( (ulong) baud) )      /* 波特率计算公式 */
#define baud_h      (uchar) (baud_setting >> 8)                     /* 提取高位 */
#define baud_l      (uchar) (baud_setting)                          /* 低位 */

void initUSART(void)
{
    P1SEL = BIT1 + BIT2;                     // P1.1 = RXD, P1.2=TXD
    P1SEL2 = BIT1 + BIT2;                    // P1.1 = RXD, P1.2=TXD
    UCA0CTL1 |= UCSSEL_2;                     // SMCLK
    UCA0BR0 = baud_l;                            // 8MHz 9600
    UCA0BR1 = baud_h;                              // 8MHz 9600
    UCA0MCTL = UCBRS1;                        // Modulation UCBRSx   2=010= UCBRS2  UCBRS1  UCBRS0
    UCA0CTL1 &= ~UCSWRST;                   // **Initialize USCI state machine**
    IE2 |= UCA0RXIE;                          // Enable USCI_A0 RX interrupt
}
게시 된 105 개 원래 기사 · 원 찬양 8 ·은 10000 +를 볼

추천

출처blog.csdn.net/x1131230123/article/details/104534313