用I/O操作實現(xiàn)RS232口數(shù)字及模擬信號的采集
RS232端口幾乎是所有x86計算機(jī)必備的端口,它可以連接FAX/MODEM設(shè)備、串行鼠標(biāo)器、串行小鍵盤、采集模塊、PLC等,還可以連接RS232-RS485適配接頭,控制RS485網(wǎng)絡(luò)設(shè)備。RS232端口廣泛采用9芯D型接頭,具有接線簡單、傳輸速率高、傳數(shù)據(jù)可靠等優(yōu)點。除了Tx/Rx方式的高效數(shù)據(jù)傳輸外,RS232接口還具備直接I/O輸入輸出能力。本文介紹的是利用RS232接口直接完成4路數(shù)字量信號的輸入,可廣泛地應(yīng)用于機(jī)關(guān)開關(guān)式傳感器、臨近感應(yīng)式傳感器、霍爾效應(yīng)式傳感器、小型機(jī)械鍵盤、TTL信號的輸入。除此之外,利用簡單的I/O操作,還可實現(xiàn)RS232口的多路模擬信號采集。簡單的串口I/O操作,只是利用RS232口的MCR及MSR寄存器,無需串口初始化及波特率設(shè)置等煩瑣操作。
2.RS232的端口安排
計算機(jī)正常啟動后,RS232端口COM1、COM2、COM3、COM4的地址一般被安排在3F8、2F8、3E8、2E8,用于了解外部狀態(tài)的寄存器地址則被分別設(shè)置為3FE、2FE、3EE、2EE,用于控制外部設(shè)備的寄器地址則被設(shè)置3FC、2FC、3EC、2EC,。RS232接口的針腳安排如下:
D型25芯接頭 | D型9芯接頭 | ||
pin8....CD | pin1 | ||
pin3...RxD | pin2 | ||
pin2...TxD | pin3 | ||
pin20..DTR | pin4 | ||
pin7....SG | pin5 | ||
pin6...DSR | pin6 | ||
pin4...RTS | pin7 | ||
pin5...CTS | pin8 | ||
pin22...RI | pin9 | ||
信號名稱 | |||
TxD | Transmit Data | RxD | Receive data |
RTS | Request to send | CTS | Clear to Send |
DSR | Data Set Ready | DTR | Data terminal ready |
SG | Signal ground | RI | Ring indicator |
CD | Carrier Detect |
由于大多數(shù)x86計算機(jī)都使用9芯D型接頭。下面講述的寄存器安排,均指的是9芯D型接頭。
RS232口MCR寄存器安排:
地址 | BIT7 | BIT6 | BIT5 | BIT4 | BIT3 | BIT2 | BIT1 | BIT0 |
3FC | X | X | X | X | X | X | PIN7 | PIN4 |
2FC | X | X | X | X | X | X | PIN7 | PIN4 |
3EC | X | X | X | X | X | X | PIN7 | PIN4 |
2EC | X | X | X | X | X | X | PIN7 | PIN4 |
RS232口MSR寄存器安排
地址 | BIT7 | BIT6 | BIT5 | BIT4 | BIT3 | BIT2 | BIT1 | BIT0 |
3FE | PIN1 | PIN9 | PIN6 | PIN8 | X | X | X | X |
2FE | PIN1 | PIN9 | PIN6 | PIN8 | X | X | X | X |
3EE | PIN1 | PIN9 | PIN6 | PIN8 | X | X | X | X |
2EE | PIN1 | PIN9 | PIN6 | PIN8 | X | X | X | X |
上面的列表對RS232寄存器進(jìn)行了必要的簡化。MCR寄存器用于控制D型接頭的7腳和4腳,MSR用于讀取1、9、8、6腳的狀態(tài),5腳為地。標(biāo)有X的位用于其它用途,本文不作介紹。
3.RS232竊電技術(shù)
EIA-RS232標(biāo)準(zhǔn)中未定義電源輸出引腳,所以RS232接口中找不到電源輸出針腳,只能間接地從RS232的其它引腳中獲取電源。最直接的方法是利用PIN7和PIN4兩個針腳,它們足以驅(qū)動CD4093、LM324等MOS型IC芯片器件。除此之外,還可以用下述方法從Tx和Rx引腳中獲取電源。
評論