新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > MSP430F149的串口RS485接口

        MSP430F149的串口RS485接口

        作者: 時間:2016-11-27 來源:網絡 收藏
        一、簡述

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

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

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

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

        二、實例

        2.1 發送字符8.N.1.2400

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

        #define DE P3OUT |= BIT3 //設置485芯片處于發送狀態

        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狀態機

        }

        main

        {

        DRE_out;

        DE;

        Set_UART1();

        TXDATA = 0X30;

        TXBUF1 = TXDATA; //這里可直接賦值傳送固定的數據

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

        ……

        }

        2.2 中斷函數接收字符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狀態機

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

        }

        #pragma vector=UART1RX_VECTOR

        __interrupt void UART1_RX (void)

        {

        Disp1Char(pX++,pY,RXBUF1);

        if(pX == 16)

        {

        pX = 0;

        pY ^= 1;

        }

        }



        評論


        技術專區

        關閉
        主站蜘蛛池模板: 旬邑县| 年辖:市辖区| 尖扎县| 陆川县| 施秉县| 孝昌县| 庆城县| 吴桥县| 湖口县| 都江堰市| 海门市| 当涂县| 平昌县| 博兴县| 黄大仙区| 大安市| 太仆寺旗| 城市| 辛集市| 保定市| 江口县| 东台市| 高平市| 永平县| 云浮市| 海伦市| 通海县| 如东县| 达孜县| 固阳县| 汨罗市| 沿河| 乌兰浩特市| 吉林省| 屯昌县| 探索| 深泽县| 岢岚县| 天台县| 枞阳县| 萝北县|