新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > 用I/O操作實現RS232口數字及模擬信號的采集

        用I/O操作實現RS232口數字及模擬信號的采集

        作者: 時間:2016-12-16 來源:網絡 收藏
        1.前言
        RS232端口幾乎是所有x86計算機必備的端口,它可以連接FAX/MODEM設備、串行鼠標器、串行小鍵盤、采集模塊、PLC等,還可以連接RS232-RS485適配接頭,控制RS485網絡設備。RS232端口廣泛采用9芯D型接頭,具有接線簡單、傳輸速率高、傳數據可靠等優點。除了Tx/Rx方式的高效數據傳輸外,RS232接口還具備直接I/O輸入輸出能力。本文介紹的是利用RS232接口直接完成4路數字量信號的輸入,可廣泛地應用于機關開關式傳感器、臨近感應式傳感器、霍爾效應式傳感器、小型機械鍵盤、TTL信號的輸入。除此之外,利用簡單的I/O操作,還可實現RS232口的多路模擬信號采集。簡單的串口I/O操作,只是利用RS232口的MCR及MSR寄存器,無需串口初始化及波特率設置等煩瑣操作。
        2.RS232的端口安排
        計算機正常啟動后,RS232端口COM1、COM2、COM3、COM4的地址一般被安排在3F8、2F8、3E8、2E8,用于了解外部狀態的寄存器地址則被分別設置為3FE、2FE、3EE、2EE,用于控制外部設備的寄器地址則被設置3FC、2FC、3EC、2EC,。RS232接口的針腳安排如下:

        D型25芯接頭D型9芯接頭
        pin8....CDpin1
        pin3...RxDpin2
        pin2...TxDpin3
        pin20..DTRpin4
        pin7....SGpin5
        pin6...DSRpin6
        pin4...RTSpin7
        pin5...CTSpin8
        pin22...RIpin9
        信號名稱
        TxDTransmit DataRxDReceive data
        RTSRequest to sendCTSClear to Send
        DSRData Set ReadyDTRData terminal ready
        SGSignal groundRIRing indicator
        CDCarrier Detect



        由于大多數x86計算機都使用9芯D型接頭。下面講述的寄存器安排,均指的是9芯D型接頭。

        RS232口MCR寄存器安排:

        地址BIT7BIT6BIT5BIT4BIT3BIT2BIT1BIT0
        3FCXXXXXXPIN7PIN4
        2FCXXXXXXPIN7PIN4
        3ECXXXXXXPIN7PIN4
        2ECXXXXXXPIN7PIN4


        RS232口MSR寄存器安排


        地址BIT7BIT6BIT5BIT4BIT3BIT2BIT1BIT0
        3FEPIN1PIN9PIN6PIN8XXXX
        2FEPIN1PIN9PIN6PIN8XXXX
        3EEPIN1PIN9PIN6PIN8XXXX
        2EEPIN1PIN9PIN6PIN8XXXX


        上面的列表對RS232寄存器進行了必要的簡化。MCR寄存器用于控制D型接頭的7腳和4腳,MSR用于讀取1、9、8、6腳的狀態,5腳為地。標有X的位用于其它用途,本文不作介紹。

        3.RS232竊電技術
        EIA-RS232標準中未定義電源輸出引腳,所以RS232接口中找不到電源輸出針腳,只能間接地從RS232的其它引腳中獲取電源。最直接的方法是利用PIN7和PIN4兩個針腳,它們足以驅動CD4093、LM324等MOS型IC芯片器件。除此之外,還可以用下述方法從Tx和Rx引腳中獲取電源。




        評論


        技術專區

        關閉
        主站蜘蛛池模板: 宁夏| 贺兰县| 陆河县| 楚雄市| 峡江县| 手机| 池州市| 凌云县| 开鲁县| 梅河口市| 新乡市| 建始县| 大方县| 宾阳县| 五指山市| 合江县| 许昌县| 宜黄县| 无为县| 丰城市| 喀喇沁旗| 隆德县| 郯城县| 新绛县| 三穗县| 杭州市| 永和县| 个旧市| 葫芦岛市| 甘德县| 新干县| 洛隆县| 灌南县| 平武县| 玛多县| 航空| 五台县| 巴林右旗| 荣成市| 博兴县| 郴州市|