基于μC/OS-II和TCP/IP協(xié)議的多串口服務(wù)器
圖3描述了串口接收模塊的工作流程。當SC28L198中的某個(gè)接口通道接收到串口設備的一幀數據時(shí),這些數據將被送往數據隊列,同時(shí)保存相應的串口通道號。當打包時(shí)間到了規定的時(shí)間或者打包的串口數據已經(jīng)達到規定的最大長(cháng)度(200字節)時(shí),該數據包將被發(fā)往以太網(wǎng)。圖4描述了串口發(fā)送模塊的工作流程。當該系統通過(guò)以太網(wǎng)接收到主機發(fā)來(lái)的一幀數據或命令時(shí),ARM處理器將去掉以太網(wǎng)幀頭、IP頭和UDP頭,提取出串口通道號,將分離出的串口數據幀發(fā)送到對應的串口通道。

圖3 串口數據接收流程

圖4 串口數據發(fā)送流程
3.4初始化程序
在整個(gè)系統開(kāi)始工作之前,程序必須對SC28L198中的每個(gè)通道進(jìn)行初始化。ARM處理器LM8962通過(guò)向SC28L198的寄存器寫(xiě)入命令來(lái)完成整個(gè)初始化過(guò)程。為了保證LM8962與串口設備之間傳輸的數據準確無(wú)誤,串口服務(wù)器需要規定每個(gè)通道的通信格式。該格式包括發(fā)送數據波特率和接收數據波特率、數據長(cháng)度、停止位和校驗位等。整個(gè)初始化過(guò)程的程序如下:
void UART_Init( void) {
uchar channel;
UART_WR ( GCCR,0 x06) ; /* 全局配置* /
UART_WR ( CR( 0), 0xF8) ; /* 重啟芯片* /
UART_WR ( ICR, 0x00) ; /* 設置中斷水平* /
UART_WR ( IVR,0x00) ; /* 設置中斷仲裁門(mén)檻* /
for( channel = 0; channel 8; channel + + ) {
UART_WR ( MR0( channel) ,0xC0) ; /* 無(wú)流量控制* /
UART_WR( MR1( channel) ,0x77) ; /* 設置數據格式* /
UART_WR( MR2( channel) ,0x00) ; /* 普通模式* /
UART_WR( RXCSR( channel) ,0x0E) ; /* 設置接收波特率* /
UART_WR( TXCSR( channel) ,0x0E) ; /* 設置發(fā)送波特率* /
UART_WR( CR( channel) ,0x28) ; /* 鎖住收發(fā)器* /
UART_WR( IMR( channel) ,0x03) ; /* 開(kāi)啟
Tx 和Rx* /
}
}
4 結論
系統采用μC/OS-II操作系統和TCP/IP協(xié)議實(shí)現了實(shí)時(shí)、高效的數據傳輸,為RS232/422/485設備提供了方便快捷的以太網(wǎng)連接。該系統能夠為串口設備提供網(wǎng)絡(luò )化監控、管理,以及遠距離數據服務(wù)。
tcp/ip相關(guān)文章:tcp/ip是什么
評論