MSP430教程15:MSP430單片機串行通訊模塊
在MSP430系列產品中,每一款型號都能實現(xiàn)串行通訊的功能,在MSP
圖是USART模塊結構圖,從下圖可以看出USART模塊分別由波特率部分:波特率發(fā)生器,串行通訊接收/發(fā)送控制寄存器。
接收部分,發(fā)送部分,端口IO部分。
串行異步通訊的特點:
1-異步通訊模式,包括線路空閑/地址位通信協(xié)議。
2-有兩個單獨的移位寄存器,輸入/輸出移位寄存器(如下圖)。
3-傳輸7位或8位數據,可采用奇偶或無校驗。
4-可編程實現(xiàn)波特率調整。
5-分別發(fā),收單獨中斷。
6-有效地檢測到起始位實現(xiàn)從低功耗喚醒。
7-狀態(tài)標志檢測錯誤或者地址位。
串行同步通訊(SPI)的特點:
1-動持3線/4線的SPI通訊。
2-支持主機模式與從機模式。
3-收發(fā)有單獨的緩沖器,移位寄存器。
4-收發(fā)有單獨的中斷。
5-時鐘極性和相位可編程。
6-主機模式的時鐘頻率可編程。
7-7位/8位字符長度。
有關USART的詳細應有原理,建議初學者參考清華大學出版社的<
串行異步通訊應用例程
//*******************************************
//MSP
//P3.4為發(fā)送,P3.5為接收
//晶體使32768HZ.
//程序描述:利用串口調試軟件;向串口發(fā)送一個字符,MSP430單片機接收到后從低功耗中喚醒.并將收接緩沖區(qū)的字符再發(fā)送到//電腦上的調試軟件中.單片機發(fā)送完后又進入低功耗狀態(tài).
//*******************************************
#include <msp430x14x.h>
void main(void)
{
WDTCTL = WDTPW + WDTHOLD; // 停止WDT
UCTL0 = CHAR; // 設串口控制寄存器,設為8位字符格式
UTCTL0 = SSEL0; // 設串口控制寄存器所使用的時鐘,選擇UCLK = ACLK
UBR00 = 0x0D; // 波特率設置32k/2400 - 13.65
UBR10 = 0x00;
UMCTL0 = 0x6D; // 波特率調整器設置
ME1 |= UTXE0 + URXE0; // 模塊允許寄存器設置,使能USART0 TXD/RXD
IE1 |= URXIE0; // 中斷允許寄存器設置,接收中斷允許
P3SEL |= 0x30; // 將P3.4,5使用外圍模塊 = USART0 TXD/RXD
P3DIR |= 0x10; // 將P3.4設為輸出(發(fā)),P3.5默認為輸入(收)
_EINT(); // 全局中斷使能
// Mainloop
for (;;)
{
LPM3; // 進入LPM3模式,等待字符接收.
while ((IFG1 & UTXIFG0) == 0); // USART0發(fā)送UTXIFG0=1,表示UTXBUF準備好發(fā)送一下字符
TXBUF0 = RXBUF0; // 將收到緩沖區(qū)字符送發(fā)送區(qū)
}
}
//串口接收中斷,退出LPM3模式.
#pragma vector=USART0RX_VECTOR
__interrupt void usart0_rx (void)
{
LPM3_EXIT;
}
//*****************************************
//例程結束
評論