新聞中心

MSP430F149的串口RS232接口

作者: 時(shí)間:2016-11-27 來源:網(wǎng)絡(luò) 收藏
1、 概述

具有同步串口模式(SPI),異步通信模式(UART)。

本文引用地址:http://m.butianyuan.cn/article/201611/322346.htm

作異步通信時(shí),P3.4,P3.5,P3.6,P3.7第二功能分別是UTXD0, URXD0, UTXD1, UTXD2

2、 使用方法概述

2.1 程序架構(gòu)

配置寄存器設(shè)置工作模式

{

設(shè)置IO口為第二功能作為串口收發(fā)引腳;

使能串口收發(fā)功能;

選擇每幀數(shù)據(jù)位為7或8;

選擇波特率發(fā)生器時(shí)鐘源;

配置波特率(查表得出值再配置UxBR0, UxBR1,UxMCTL);

軟件清除串口復(fù)位位(SWRST);

若采用中斷方式則使能接受、發(fā)送中斷

}

編寫接受/發(fā)送程序,可采用查詢方式或中斷方式。同51單片機(jī)不同的是,UTXIFG,URXIF在發(fā)送下一個(gè)數(shù)據(jù)和讀取數(shù)據(jù)時(shí)被自動(dòng)清零了,無需軟件清除。

2.2 細(xì)節(jié)描述

配置波特率時(shí)用戶手冊(cè)上有速查表,如下

設(shè)置波特率時(shí)要選擇合適的時(shí)鐘源。對(duì)于較低的波特率(9600b/s及以下),可選ACLK,大于9600要選用SMCLK,因?yàn)?strong>串口波特率發(fā)生器分頻系數(shù)要求大于3。UxBR0(低)UxBR1(高)值的計(jì)算式為:選擇的時(shí)鐘源/波特率,再取整。為了精確,MSP430設(shè)置了小數(shù)分頻功能,通過UxMCTL來完成。

3、相關(guān)寄存器

1.ME1, Module Enable Register 1

UTXE0 Bit 7 USART0 transmit enable. This bit enables the transmitter for USART0.

0 Module not enabled

1 Module enabled

URXE0 Bit 6 USART0 receive enable. This bit enables the receiver for USART0.

0 Module not enabled

1 Module enabled

2.UxCTL(UCTLx), USART Control Register

CHAR Bit 4 Character length. Selects 7-bit or 8-bit character length.

0 7-bit data

1 8-bit data

SWRST Bit 0 Software reset enable

0 Disabled. USART reset released for operation

1 Enabled. USART logic held in reset state

3.UxTCTL(UTCTLx), USART Transmit Control Register

SSELx Bits

5-4

Source select. These bits select the BRCLK source clock.

00 UCLKI

01 ACLK

10 SMCLK

11 SMCLK

4.UxBR0, USART Baud Rate Control Register 0,低8位

UxBR1, USART Baud Rate Control Register 1,高8位

5. UxMCTL, USART Modulation Control Register

UxMCTLx Bits

7−0

Modulation bits. These bits select the modulation for BRCLK.

6.IFG1, Interrupt Flag Register 1

UTXIFG0 Bit 7 USART0 transmit interrupt flag. UTXIFG0 is set when U0TXBUF is empty.

0 No interrupt pending

1 Interrupt pending

URXIFG0 Bit 6 USART0 receive interrupt flag. URXIFG0 is set when U0RXBUF has received

a complete character.

0 No interrupt pending

1 Interrupt pending

7.IE1, Interrupt Enable Register 1

UTXIE0 Bit 7 USART0 transmit interrupt enable. This bit enables the UTXIFG0 interrupt.

0 Interrupt not enabled

1 Interrupt enabled

URXIE0 Bit 6 USART0 receive interrupt enable. This bit enables the URXIFG0 interrupt.

0 Interrupt not enabled

1 Interrupt enabled

4、實(shí)例

4.1 配置為N.8.1,9600,查詢方式收發(fā)數(shù)據(jù)

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

函數(shù)名稱:InitUART

功 能:初始化UART端口

參 數(shù):無

返回值 :無

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

void InitUART(void)

{

P3SEL |= 0x30; // P3.4,5 = USART0 TXD/RXD

ME1 |= URXE0 + UTXE0; // Enable USART0 T/RXD

UCTL0 |= CHAR; // 8-bit character

UTCTL0 |= SSEL0; // UCLK = ACLK

UBR00 = 0x03; // 32k/9600 - 3.41

UBR10 = 0x00; //

UMCTL0 = 0x4A; // Modulation

UCTL0 &= ~SWRST; // Initialize USART state machine

}

收數(shù)據(jù)

if(IFG1 & URXIFG0) Disp1Char(U0RXBUF); //如果收到字符

發(fā)數(shù)據(jù)

while (!(IFG1 & UTXIFG0)); TXBUF0 =Char;

4.2 配置接收數(shù)據(jù)中斷方式

P3SEL |= 0x30; // 選擇P3.4和P3.5做UART通信端口

ME1 |= UTXE0 + URXE0; // 使能USART0的發(fā)送和接受

UCTL0 |= CHAR; // 選擇8位字符

UTCTL0 |= SSEL0; // UCLK = ACLK

UBR00 = 0x03; // 波特率9600

UBR10 = 0x00; //

UMCTL0 = 0x4A; // Modulation

UCTL0 &= ~SWRST; // 初始化UART狀態(tài)機(jī)

IE1 |= URXIE0; // 使能USART0的接收中斷

_EINT();

中斷服務(wù)函數(shù)

#pragma vector = UART0RX_VECTOR

__interrupt void UART0_RXISR(void)

{ }



關(guān)鍵詞: MSP430F149串口RS232接

評(píng)論


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

關(guān)閉