新聞中心

EEPW首頁 > 嵌入式系統(tǒng) > 設計應用 > MSP430F149的串口RS485接口

MSP430F149的串口RS485接口

作者: 時間:2016-11-27 來源:網(wǎng)絡 收藏
一、簡述

RS485通信基本原理和使用方法同RS232,不同點如下。

本文引用地址:http://www.2s4d.com/article/201611/322347.htm

RS232接口只能實現(xiàn)點對點的通信方式,但這種方式不能實現(xiàn)聯(lián)網(wǎng)功能,便出現(xiàn)了RS485解決了這個問題。RS485采用差分信號負邏輯,+2V~+6V表示“1”,- 6V~- 2V表示“0”。雙機通信時只需A-A,B-B連接。

硬件電路一般采用SN65176等RS485電平轉換芯片。與MCU相連時有三個引腳:DE(RE同DE連在一起),DI(接受引腳),RO(發(fā)送引腳)。MCU發(fā)送一幀信號時,要先使能DE=1;接收信號前要先使能DE=0(即RE=0)。

二、實例

2.1 發(fā)送字符8.N.1.2400

#define DRE_out P3DIR |= BIT3 //連接485芯片的DE,RE端口的IO設置為輸出狀態(tài)

#define DE P3OUT |= BIT3 //設置485芯片處于發(fā)送狀態(tài)

void Set_UART1(void)

{

P3SEL |= 0xC0; //將P3.6,P3.7選做UART1的通信端口

ME2 |= UTXE1 + URXE1; //使能USART1的TXD和RXD

UCTL1 |= CHAR; //選擇8-bit字符

UTCTL1 |= SSEL0; //驅動時鐘選擇ACLK

UBR01 = 0x0D; //波特率2400

UBR11 = 0x00;

UMCTL1 = 0x6B; //調整

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

}

main

{

DRE_out;

DE;

Set_UART1();

TXDATA = 0X30;

TXBUF1 = TXDATA; //這里可直接賦值傳送固定的數(shù)據(jù)

while(!(IFG2 & UTXIFG1)); //等待發(fā)送結束

……

}

2.2 中斷函數(shù)接收字符8.N.1.2400

void Set_UART1(void)

{

P3SEL |= 0xC0; //將P3.6,P3.7選做UART1的通信端口

ME2 |= UTXE1 + URXE1; //使能USART1的TXD和RXD

UCTL1 |= CHAR; //選擇8-bit字符

UTCTL1 |= SSEL0; //驅動時鐘選擇ACLK

UBR01 = 0x0D; //波特率2400

UBR11 = 0x00;

UMCTL1 = 0x6B; //調整

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

IE2 |= URXIE1; //使能UART1接收中斷

}

#pragma vector=UART1RX_VECTOR

__interrupt void UART1_RX (void)

{

Disp1Char(pX++,pY,RXBUF1);

if(pX == 16)

{

pX = 0;

pY ^= 1;

}

}



評論


技術專區(qū)

關閉