RTX实时系统下RS-232串口通信程序设计

上传人:li45****605 文档编号:26333915 上传时间:2017-12-25 格式:PDF 页数:9 大小:487.76KB
返回 下载 相关 举报
RTX实时系统下RS-232串口通信程序设计_第1页
第1页 / 共9页
RTX实时系统下RS-232串口通信程序设计_第2页
第2页 / 共9页
RTX实时系统下RS-232串口通信程序设计_第3页
第3页 / 共9页
RTX实时系统下RS-232串口通信程序设计_第4页
第4页 / 共9页
RTX实时系统下RS-232串口通信程序设计_第5页
第5页 / 共9页
点击查看更多>>
资源描述

《RTX实时系统下RS-232串口通信程序设计》由会员分享,可在线阅读,更多相关《RTX实时系统下RS-232串口通信程序设计(9页珍藏版)》请在金锄头文库上搜索。

1、 实用第一 智慧密集 , RTX实时系统下RS-232串口通信程序设计 赵常寿 叶梦萦 张鹏 摘 要:讨论在RTX实时系统下,PC机的RS一232串口通信程序设计方法。使用VS2008编写 程序实例,在RTX812、Windows XP SP3下使用双机串口直连测试通过。 关键词:RTX实时系统;RS-232串口通信;共享内存;VS2008环境 1 引言 通用实时系统RTX是美国IntervalZero(前身为Ardence) 公司开发的Windows平台的硬实时系统,可以为用户提供优秀 的实时控制性能、高效的可扩展性及稳定性是迄今为止在 Windows平台上唯一基于软件的硬实时解决方案。RT

2、X提供了 对IRQ、IO、内存的精确控制,以确保实时任务执行时具有 100的可靠性。RTX与Windows系统无缝地结合在一起可 以利用Windows系统的各种优势,包括大量标准的API函数、 高效的内存管理机制以及各种Windows下的通用资源。利用 IPC信息共享与同步机制,可以实现RTX和Windows之间的 数据通信。RTX的时钟分辨率可以达到100纳秒,定时器周期 最低可以做到1000、500、200、100微秒。 在工业控制领域,设备与设备之间的通信一般有TTL、 RS232、GPIB、RJ45等。RS232是其中常见且使用广泛的一种 通信方式,冈其简单易用,在设备之间短距离通信时

3、,一般都 采用RS232 在下文中,将结合一个实例讨论在RTX实时系统下RS232 串口通信的程序设计方法,程序的开发运行环境为:Windows XP SP3、RTX812、VS2008、PC机串口及串口交叉线。 2 RS一232C串口通信 PC机一般使用8250或16550作为串行通信的控制器使 用9针或25针的接插件将串行口的信号送出。其信号定义如 表1所示,这些信号在通信过程中可能会被全部或部分使用, 最简单的通信仅需TXD、RXD和SG即可完成,其他的握手 信号可以做适当处理或直接悬空。 表1 RS一232C信号定义 DB一25 DB一9 信号名称 方向 含义 2 3 TXD 输m 数

4、据发送端 3 2 RXD 输人 数据接收端 4 7 RTS 输出 请求发送(计算机) 7 2 雹脑20鞴14程搜03爿硪 DB-25 DB一9 信号名称 方向 含义 5 8 CTS 输入 清除发送(MODEM) 6 6 DSR 输人 数据设备准备就绪(MODEM) 7 5 SG 信号地 8 l DCD 输入 数据载波检测 20 4 DTR 输 数据终端准备就绪(计算机) 22 9 Rl 输人 响铃指示 PC机支持14个串1:3,即COM1一COM4,其基地址在 BIOS数据区0000:04000000:0406中描述,对应地址分别为 3F8、2F8、3E8、2E8,COM1和COM3使用中断4

5、,COM2和 COM4使用中断3。串口通信控制器的控制寄存器定义如表2 所示。 表2 串口通信控制器8250(16550)的寄存器 地址 寄存器名称 备注 3F8H 发送保持寄存器(THR) 写DLAB=0 3F8H 接收缓冲寄存器(RBR) 凄DLAB=0 3F8H 波特率困子寄存器【低】(DLL) 读写DLAB=1 3F9H 波特率因子寄存器高(DLM) 读写DLAB=1 3F9H 中断允许寄存器(IER) 读写,DLAB=0 3FAH 中断识目0寄存器(IIR) 读 3FAH FI0控制器(FCR) 写 3FBH 线路控制寄存器(LCR) 读,写 3FCH Modem控制寄存器(MCR)

6、 读写 3FDH 线路状态寄存器(LSR) 读 3FEH Modem状态寄存器(MSR) 读 3FFH Scratch Register 读写 (1)接收缓冲寄存器(RBR)和发送保持寄存器(THR) RBR暂存从线路上接收到的有效字符,等待本地读取。 THR暂存等待发向线路的数据。它们共用同一I0地址,在半 双工工作环境下互不干扰。 C0MPUTER SECURITY AND MAINTENANCE -一- ,- (2)中断识别寄存器(IIR)、中断允许寄存器(IER)及 FIFO控制器(FCR) IIR为只读寄仔器,Bit6:7用来指示FIFO的状态,为00 时无FIFO此时为8250或1

7、6450芯片,为0l时有FIFO但不 可以使用,为11时FIFO有效并可以正常工作。Bit3用来指示 超时中断(1655016750)。Bit0用来指示是否有中断发生。 Bitl:2标识具体的中断类型这些中断具有不同的优先级别 其中LsR中断级别最高,其次是数据就绪中断,然后是发送 寄存器空中断,而MSR中断级别最低。 IER控制是否允许中断,Bit0为1时允许接收到数据时产 生中断Bitl为l时允许发送保持寄存器空时产生中断,Bit2 为l时在LSR变化时产生中断Bit3为1时在MSR变化时产 生中断。如表3所示。 表3中断识别寄存器(IIR)和中断允许寄存器(IER) IIR lER b

8、)2b 中断类型 中断原I 复位动作 中断允许 中断禁止 OI1 线路状态中断 线路状态变化 渎ISR b2=1 b2=0 01O 接收巾断 接收数据就绪 读RBR b0=1 b0=0 o01 发送中断 发送保持寄存器空 写1HR b1=1 b_=O oo0 Modem状态中断 Modem状态变化 读MSR b3=1 b3=0 FCR可写但不可以读,该寄存器用来控制16550或16750 的FIFO寄存器。Bit0置1时允许发送和接收FIFO工作。Bitl 和Bit2置1时分别用来清除接收和发送FIFO。清除接收和发 送FIFO并不影响移位寄存器 Bitl:2可自行复位,无需使用 软件对其清零

9、。Bit6:7设定产生中断的级别,发送接收中断将 在发送接收到对应字节数时产生。 (3)线路状态寄存器(LSR) LSR为只读寄存器,发生错误时Bit7为1发送保持和发 送移位寄存器均空时Bit6为1,发送保持寄存器空时Bit5为 1,线路状态为0时Bit4为1,帧格式错时Bit3为1,奇偶校 验错时Bit2为1,超越错时Bitl为1接收数据就绪时Bit0为 1。如表4所示。 表4线路状态寄存器(LSR) b7 b6 b5 b4 b3 b2 b1 b0 发送移位 发送保持 断点巾 帧格式 奇偶校验 超载错 接收数据就 0不用 寄存器卒 寄存器卒 断(BI) 错(FE) 错(PE) (OE) 绪

10、口J-接收 Hf发送 (4)线路控制寄存器(LCR) LCR用来设定通信所需的一些基本参数。Bit7为1时DLL 和DLM有效,为0时THR、RBR和IER有效 Bit6为1时将 发送端置为0,使接收端产生一个“间断”。Bit35设定是否 使用奇偶校验以及奇偶校验的类型,Bit3为l时使用校验, Bit4为0是奇校验,为1是偶校验Bit5强制校验为1或0, 并由Bit4决定具体为O或l。Bit2设定停止位的长度,为0使 用l位停止位,为1则根据数据长度的不同使用15或2位停 止位。Bit0:1设定数据长度。如表5所示。 表5线路控制寄存器(LCR) b7 b6 b b I b t 2 bI b

11、。 访问分频器开关 (DLAB位) 问断控制位 奇偶校骑 停止位宽 符位数 0xx:l位停 位x位字符 0:常态 0:禁止 xx0: 校验 1O0:15位停止位,5位字符 001:奇校验 10l:2化停止位,6位字符 1:访问DLLDLM 1:允许 011:偶校验 11O:2位停止位7位字符 I11:2位停止位8位字符 (5)波特率冈子寄存器(DLL,DLM) DLL与DLM组成一个16位寄存器,存放一个波特率冈了 (分频值),对振荡时钟进行分频,以得到用户需要的波特率。 如表6所示。计算方法: 波特率I天I予=振荡时钟f波特率16) 表6波特率与波特率因子 波特率(bs) DLM设置 DLI

12、 漫置 50 O9H ooH 300 O1H 80H 600 00H COH 2400 O0H 30H 4800 0011 l 8H 9600 00H 0CH 192oo 00H 06H 38400 00H O3H 5760O 00H 0211 1152()0 00H 0lH (6)Modem控制寄存器(MCR)和Modem状态寄存器 (MSR) MCR寄存器可渎可写,Bit4为1时进入环路测试模式。 Bit30用来控制对应的管脚。如表7所示。MSR寄存器的高4 位分别对应MODEM的状态线,低4位表示MODEM的状态线 是否发生r变化。 表7 modem控制寄存器(MCRl b7 b6 b5

13、 b4 b, j b b b0 内部输人输 短接构 辅助输m 2【辅助输卅1I清(R求TS发)送 数据终端准 恒为0 成环路测试模式 备好(DTR) 3程序设计 软件分为两个部分:用户界面部分和串口通信部分。用户 界面部分由Windows程序实现,串1通信部分由RTX程序实 现,Windows程序和RTX程序之间的通信通过共享内存实现。 软件使用方法:将两个程序放在同一个目录下,启动 Windows程序,在程序界面J 点击“启动串LI”按钮即可启动 RTX程序,点击“发送信息”按钮即可进行串口通信。软件结 麟螭 73 J 实用第一 一 智慧密集 , 【 J1 d , 构框架如罔l所示,软件运行

14、截圉如图2所示,双机串口直连 示意图如图3所示。 lx r系统 一 三互三 _ i 图1软件结构框架图 | 藤器|藤籀嘉a赫潼l菇 g * 一。 麓 图2软件运行截图 I,C2 ?1: 图3双机串口直连示意图 4代码实现 下面分别给出Windows用户界面程序和RTX串口通信程 序的实现代码。 41 Windows用户界面程序 Windows用户界面程序完成与用户的交互,通过共享内存 与RTX程序进行通信,设计步骤如下: 411创建项目 启动VS2008,新建一个基于MFC对话框程序的项目,项 目名称设为“ComWin”,不勾选“使用Unicode库”,其他设 置默认,单击“完成”按钮完成项目

15、创建。 412设置项目属性 添加对RTX API的支持,在附加包含目录中添加: “f:Program FileskintervatZeroRTXdnclude“ 在附加库目录中添加: ”f:PrOaram FileslntervalZeroRT) ib“ 413添加RTX头文件和导入库 在文件ComWinDlgcpp中,添加代码如下: 74ll每涵20硒1短4接03砖与壤自 RTX头文件 #includebExit=FALSE1 ( if(pSMbRecieved=TRUE1 dig一mEditRecieveSetSel(dig一mEditRecieve GetWindowTextLength

16、O dig一mEditRecieveGetWindowTextLengthO); dig一mEditRecieve ReplaceSel(pSM一 recievedBu钎er): pSM-bRecieved=FALSE; ) RtSleep(20); ) return O: 4。15初始化对话框 在文件ComWinDlgcpp中的对话框初始化函数里,添加用 户界面初始化,代码如下: BOOL CComWinDIg:OnlnitDialog() 一一 蕊篆 嚣 鬻 C0MPUTER SECURITYAND MAINTENANCE一 - u” CDialog:OnlnitDialog0; 将“关于”菜单项添加到系统菜单中。 IDM AB

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 学术论文 > 期刊/会议论文

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号