收藏 分销(赏)

一种8路串口转换PCI总线的设计方案.doc

上传人:精**** 文档编号:1149725 上传时间:2024-04-16 格式:DOC 页数:6 大小:141.50KB 下载积分:6 金币
下载 相关 举报
一种8路串口转换PCI总线的设计方案.doc_第1页
第1页 / 共6页
一种8路串口转换PCI总线的设计方案.doc_第2页
第2页 / 共6页


点击查看更多>>
资源描述
一种8路串口转换PCI总线的设计方案 Design of Multi-serial Port Communication Adapter Based on PCI Bus Abstract:This paper provides a design of octal serial port to PCI bus. The multi-serial port interfaced to PCI bus is realized by using the dedicated chip XR17D158 and UART serial level transitions chip MAX3238.The configuration of the chip XR17D158’ register sets the process of the chip interfacing with octal UART and development of driver software is emphatically introduced.The adapter is PCI Rev.2.3 compliant and the maximum baud rate can reach 921.6 kbpsand it can widely be applied in such fields as POSBank Terminal SystemHome AutomationShop Automationetc. Keywords:multi-serial portPCI busUARTFIFO 摘要:提供了一种8路串口转换PCI总线的设计方案运用专用芯片XR17D158和UART串口电平转换芯片MAX3238实现多路串口和PCI总线接口转换,并着重介绍了XR17D158芯片的寄存器配置和8路UART接口工作过程以及驱动程序的开发该适配卡符合PCI2.3规范,最高波特率可达921.6kbps,可广泛应用于POS机、银行终端系统、家庭自动化、工厂自动化等领域 关键词:多路串口 PCI总线 UART FIFO 1 引言 随着Internet的发展,越来越多的计算机或设备通过串口通信方式接入网络,实现信息共享和设备的集中控制和管理多端口扩展已成为通信设备接入的重要环节利用串口进行通信具有结构简单,线路成本低的优点,广泛应用于各个领域而PCI总线,即外围器件互连总线,是目前应用最广泛、最流行的一种高速同步总线由于大部分I/O设备是没有PCI总线功能的,开发多端口通用串口和PCI总线的接口卡也就成为技术发展的必然要求本系统采用专用芯片XR17D158开发了基于PCI总线的8路RS-232高速串行通讯卡为通信设备提供额外的高性能串行接口,适用于连接各类串行设备 2系统硬件设计 系统硬件电路如图1所示,主要包括主芯片XR17D158、8路UART接口和串行配置寄存器EEPROM2.1 XR17D158模块介绍 在很多通信系统中,对信号传输的带宽和速度有很很高的要求,而PCI总线非常适合将高速信号经接口芯片和主机桥接在一起本文采用Exar公司推出的一种兼容3.3V和5V的PCI总线UART芯片XR17D158 它具有PCI接口和UART结构,满足PCI2.3规范,工作频率为33MHz,32位的数据总线可以充分利用CPU带宽,传送/接收更多数据,支持8个通道UART转换PCI,减少系统开销、节约了电路板空间为下载CPU的处理信息,每一个通道都拥有带可编程触发电平的64字节发送/接收缓冲FIFO,可分别以高达921.6kbps的速率对波特率进行编程 500)this.style.width=500;" border=0> 2.2 XR17D158寄存器配置 XR17D158具有三组不同的寄存器 (1)PCI局部总线配置空间寄存器 PCI插卡插入系统后,系统BIOS将根据读到的插卡信息并结合系统情况为插卡分配存储地址、端口地址和中断等信息,实现即插即用的自动配置,从而免除了人工操作,这些信息都保存在外接的EEPROM中,在上电时XR17D158会检测EEPROM是否有效,系统以此来标识PCI卡; (2)设备配置寄存器 提供从PCI数据总线向每一UART通道的接收/发送数据FIFO缓冲存储器的传输方式,它提供了对UART传输和各种功能状态的监控寄存器占用4k PCI总线存储器地址空间这些地址由基址加上偏移量得到,偏移量保存在PCI局部总线配置寄存器的BAR寄存器0x10[31:12]这些寄存器控制或监控所有8通道UART的功能状态信息,包括中断控制和状态,16位通用定时器控制和状态,多用途输入/输出控制和状态,休眠模式控制,软复位控制以及设备标识和版本号信息等等; (3)UART[7:0]配置寄存器 每路UART通道都有内部UART配置寄存器作为串行数据传输控制和状态信息指示,所有8组通道寄存器嵌入设备配置寄存器空间,其寄存器配置偏移地址为:UART[M]=0x00N00,其中M表示通道序号,N=2×M XR17D158有8路UART[7:0],每路通道都有深度为64的发送/接收缓冲FIFO,符合16550规范的控制/状态寄存器以及为每路UART通道提供发送/接收时钟的波特率发生器 每路通道都有单独的具有预分频的可编程波特率发生器(BRG),用以获得16X或8X的串口数据接收/发送的采样时钟预分频系数可由软件在MCR寄存器中设置,MCR[7]=0,预分频系数为1;MCR[7]=1,预分频系数为4经过预分频得到的时钟还要经过内置的分频器分频,以获得所需要的发送/接收时钟信号,其中分频器的分频系数由每路UART通道的DLM和DLL寄存器编程得到,波特率由下面公式计算得到: 500)this.style.width=500;" border=0> 假设外部输入时钟为14.7456MHz,通过相应的寄存器设置,使RS-232通道得到最大波特率921.1kps编程过程如下: (1)使能DLM,DLL寄存器 写入0x80到相应UART通道的LCR寄存器; (2)分频系数确定 设置DLM=00,DLL=01; (3)设定预分频系数相关寄存器MCR a.使能MCR[7:5] 设置UART通道EFR寄存器EFR[4]=1; b.预分频系数的设定 设置MCR[7]=0; c.锁存MCR寄存器设置 设置EFR[4]=0; 2.3 8路UART和XR17D158接口设计 由于RS-232的TTL电平与芯片的CMOS电平不兼容,所以两者之间需要加电平转换电路本系统采用TI公司的MAX3238芯片实现电平转换及串口通信功能;兼容5V逻辑输入,内含3路接收、5路发送串行通信接口,最大数据传输速率可达250Kbps具有低功耗、高数据速率、增强型ESD保护等特性 XR17D158的UART接口就像一个8位的输入和输出端口,它可以从发送缓冲FIFO或者接收缓冲FIFO中读写数据当主机有数据要发送时,它只需将数据按字节格式(8位宽)发送到UART即可当UART接收到来自外部串行设备的数据时,会把数据缓存在其FIFO中(同样是8位宽),然后通过一个内部寄存器位或硬件中断信号向主机指示该数据已可以使用另外,XR17D158的UART接口还具有完整的调制解调控制功能,包括:容许发送(CTS);请求发送(RTS);数据设备准备好(DSR);数据终端准备好(DTR);振铃指示(RI);载波检测(DCD)MAX3238和XR17D158的硬件连接如图2所示,本文只给出了一路UART和主芯片接口,其他几路类似 500)this.style.width=500;" border=0> 2.4 UART接口工作过程 发送数据过程 有效数据(64位)由主机写入接口中的输入缓冲FIFO寄存器,当发送保持寄存器(THR)清空标志位ISR[1]=1,表示发送缓冲FIFO中的数据减少到满足设定的触发中断条件而引起中断,在输出移位寄存器(TSR)中,由发送控制逻辑在待发送数据加上起始位、奇偶校验位和停止位,并按设定的时钟频率逐位移出数据 接收数据过程 接收移位寄存器(RSR)使用16×或8×时钟作为定时器,当检测到起始位下降沿时,将计数器清零,并开始采用时钟计数,当计数器计到8或4时,表示已到达起始位的中间位置,此时采样值仍为0,说明是真正的起始位,余下的数据位和停止位随后也被采样如果停止位采样正确(采样值为1),则字符被接收,并装入接收保持寄存器(RHR),如果接收到的数据未达到设定的FIFO触发条件,RHR产生以接收数据准备好中断(ISR[2]=1),同时流向控制信号RTS# / DTR#继续保持有效,允许UART接口继续接收外部串行数据 PCI总线接收/发送数据 XR17D158支持在映射的存储器地址进行PCI突发模式读/写,接收缓冲FIFO和发送缓冲FIFO可以对这些独立的存储器进行读/写,这些存储器地址可以通过计算得到:M=2N+1,其中N为UART通道序号 主机利用PCI总线从XR17D158的接收缓冲FIFO读取数据一般有两种方式:查询方式和中断方式无论采取哪种方式,在读取缓冲FIFO数据之前必须先读取设备的配置寄存器中设备ID寄存器(DVID),得到确认之后带有状态的FIFO寄存器中的数据才能被读取如果在这过程中,还有其他UART通道寄存器数据需要被读取,必须重复读取设备ID寄存器(DVID),确认UART通道类型,再进行其他操作这两种实现方式编程步骤如下: (1)查询方式 a.读取线路状态寄存器(LSR) b.读取设备号(DVID) c.读取带有状态信息的FIFO数据 (2)中断实现方式 a.读取全局中断寄存器INT0(地址0x080) b.读取INT1INT2INT3寄存器用以确定中断通道(地址0x081-0x083) c.读取设备号(DVID) d.读取带有状态信息的接收FIFO数据 特别注意的是,当主机读取接收到的带有线路状态寄存器(LSR)信息的数据时,主机必须以16位或32字节的形式读取数据,这样做的目的是为了保证带有差错标记的数据的完整性 3 驱动程序设计 基于Windows NT串口通信驱动程序设计中,应用较广泛的有:利用MSCOMM控件进行编程;利用Windows API函数进行设计串口通信Microsoft Communications Control(简称为MSComm)是Microsoft公司提供的简化Windows下串行通信编程的ActiveX控件,它为应用程序提供了通过串行接口收发数据的简便方法MSComm控件通过串行端口传输和接收数据,为应用程序提供串行通讯功能而用Windows API通信较为复杂,其中要涉及到对Windows内核机制的理解,但Windows API函数用于串口操作流程可以扩展到其他硬件的操作上本设计选用Windows API函数来实现串口操作 非标准串行驱动在I/0管理器中被注册,以COM5COM6COM7……COM12来命名,对应于XR17D158的CH0CH1CH3……CH7一般不采用COM1COM2COM3COM4,因为这些端口有可能被其他串口通信设备占用根据WINDOWS NT DDK,我们可以发现,通信口在COM9以上命名的,必须以“\\\\.\\COM10”来定义,我们在写串口驱动程序时,首先要调用windows API函数CreateFile打开相应的串行口下一步使用文件句柄访问硬件设备,通信完成时用CloseHandle关闭串行口以下是两个关键成员函数,一个是打开串口函数,另外一个是简单串口读/写函数 (1)打开串口函数 PortHandle=NULL;//初始化端口 If(cPortNo<=9) ComName.Format(“COM%d”cPortNo); Else ComNamel.Format(“\\\\.\\COM%d”cPortNo); //如果串口序号大于9则以“\\\\.\\COM10”来定义 If((PortHandle=CreateFile(ComNameGENERIC_READ|GENERIC_WRITE00OPEN_EXISTINGFILE_FILE_FLAGE_OVERLAPPED0))= =INVALD_HANDLE_VALUE //非重叠读/写端口 { DWORD err=GetLastError(); Return(NULL); //端口建立失败 } Else { //端口建立成功,初始化端口,对端口进行操作 } (2)串口读/写函数 //读数据到缓冲区 ReadFile(PortHandle(LPVOID)IpReadBuffdwFileSize&dwBytesRead&osRead); //写操作 Int bResult=WriteFile(PortHandle(LPVOID)IpWriteBuffdwBytesToWrite&dwBytesWritten&osWrite) //重叠IO写操作 函数中各参数定义如下:PortHandle为待操作串口,(LPVOID)IpReadBuff数据读缓冲区,dwFileSize待读字节数,&dwBytesRead读取字节数,&osRead溢出缓冲区;(LPVOID)IpWriteBuff数据写缓冲区,dwBytesToWrite待写字节数,&dwBytesWritten已经写入字节数,&osWrite溢出缓冲区 4 结论 本文提供了一种8口UART串口转换PCI总线的方法,介绍了硬件的实现和驱动程序的实现经测试该适配卡工作稳定,性能可靠,波特率最高可达921.6kb/s,吞吐量达700kb/s,达到了预期设计目标,可广泛应用于POS机,系统监控,便携式通讯等系统 本文作者创新点:利用XR17D158芯片实现PCI总线和 8路串口之间的通信,该适配卡结构紧凑,通信距离可达15米,实现了PnP(即插即用)功能,驱动程序可在Windows /98/2000/ME/XP使用,最多可支持接8个设备的通讯,解决了大部分I/O设备没有PCI总线接口的问题 2010年读书节活动方案 一、     活动目的: 书是人类的朋友,书是人类进步的阶梯!为了拓宽学生的知识面,通过开展“和书交朋友,遨游知识大海洋”系列读书活动,激发学生读书的兴趣,让每一个学生都想读书、爱读书、会读书,从小养成热爱书籍,博览群书的好习惯,并在读书实践活动中陶冶情操,获取真知,树立理想! 二、活动目标: 1、通过活动,建立起以学校班级、个人为主的班级图书角和个人小书库。 2、通过活动,在校园内形成热爱读书的良好风气。 3、通过活动,使学生养成博览群书的好习惯。 4、通过活动,促进学生知识更新、思维活跃、综合实践能力的提高。 三、活动实施的计划 1、 做好读书登记簿 (1) 每个学生结合个人实际,准备一本读书登记簿,具体格式可让学生根据自己喜好来设计、装饰,使其生动活泼、各具特色,其中要有读书的内容、容量、实现时间、好词佳句集锦、心得体会等栏目,高年级可适当作读书笔记。 (2) 每个班级结合学生的计划和班级实际情况,也制定出相应的班级读书目标和读书成长规划书,其中要有措施、有保障、有效果、有考评,简洁明了,易于操作。 (3)中队会组织一次“读书交流会”展示同学们的读书登记簿并做出相应评价。 2、 举办读书展览: 各班级定期举办“读书博览会”,以“名人名言”、格言、谚语、经典名句、“书海拾贝”、“我最喜欢的___”、“好书推荐”等形式,向同学们介绍看过的新书、好书、及书中的部分内容交流自己在读书活动中的心得体会,在班级中形成良好的读书氛围。 3、 出读书小报:
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传

当前位置:首页 > 包罗万象 > 大杂烩

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2026 宁波自信网络信息技术有限公司  版权所有

客服电话:0574-28810668  投诉电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服