串口通信(顾玮洁)

上传人:gmk****56 文档编号:240730208 上传时间:2024-05-03 格式:PPT 页数:29 大小:565.50KB
返回 下载 相关 举报
串口通信(顾玮洁)_第1页
第1页 / 共29页
串口通信(顾玮洁)_第2页
第2页 / 共29页
串口通信(顾玮洁)_第3页
第3页 / 共29页
点击查看更多>>
资源描述
基于DSP5402的异步串口通信模块设计 主要内容主要内容 v1、串口通信原理和异步串口芯片介绍v2、系统硬件方案设计v3、软件设计1、串口通信原理 串口通信是按位(bit)将数据一位一位地依次传输,他可以在使用一根线发送数据的同时用另一根线接收数据。串行通信可以分为同步通信和异步通信。v(1)同步通信)同步通信 同步通信是一种连续串行传送数据的通信方式,要求发收双方具有同频同相的同步时钟信号,只需在传送报文的最前面附加特定的同步字符,使发收双方建立同步,此后便在同步时钟的控制下逐位发送/接收。v(2)异步通信)异步通信 异步通信是一种很常用的通信方式。通常数据以字符或者字节为单位组成字符帧传送。字符帧由发送端逐帧发送,通过传输线被接收设备逐帧接收。发送端和接收端可以由各自的时钟来控制数据的发送和接收,这两个时钟源彼此独立,互不同步。异步串口通信最重要的参数是波特率、数据位、停止位和奇偶校验。对于两个进行通行的端口,这些参数必须匹配。(1)TL16C550的特点:v供电电压为5 V33 V;v时钟频率高达16 MHz。通信时波特率最高可达1 M可编程设定波特率发生器;v具有标准的异步通信位,可选择5、6、7、8位串行数据位,可设置奇偶校验或无校验模式,停止位长度1、1.5、2;v独立控制发送、接收、线状态以及中断设置;v软件设定的FIFO,减少CPU中断。异步串行通信芯片TL16C550(2).TL16C550的引脚功能:图 1引脚号名称功能说明1、12、23、34NC悬空29D0D7数据总线10RCLK接收器时钟11SIN串行数据输入13SOUT串行数据输出14CS0片选0(高电平有效)15CS1片选1(高电平有效)16/CS2片选2(低电平有效)17/BAUDOUT波特率输出表 118、19XIN、XOUT外部时钟20/WR1写信号输入1(低电平效)21WR2写信号输入2(高电平效)22VSS电源地24/RD1读信号输入1(低电平效)25RD2读信号输入2(高电平效)26DDIS屏蔽驱动器27/TXRDY串口发送就绪输出28/ADS地址选通号31、30、29A0、A1、A2寄存器选择32/RXRDY串口接收就绪输出33INRPT中断输出35/OUT2输出236/RTS发送请求(Modem中常用)37/DTR数据终端就绪信号38/OUT1输出139MR主机重启40/CTS发送清除(Modem中常用)41/DSR数据设置就绪42/DCD数据载波检测43/RI振铃44VCC电源正极(4).内部结构图 2 (4).TL16C550内部寄存器 TL16C550C内部共有11个寄存器,这些寄存器的访问是通过3个地址线控制,LCR控制寄存器的D7位DLAB参与辅助定义。寄存器DLABA2A1A0地址操作接收缓冲器RBR000000H只读发送缓冲器THR000000H只写中断始能寄存器IER000101H读/写中断标志寄存器IIRX01002H只读 FIFO控制寄存器X01002H只读线路控制寄存器LCRX01103H读/写MODEM控制寄存器MCRX10004H读/写线路状态寄存器LSRX10105H读/写MODEM状态寄存器MSRX11006H读/写暂存寄存器SCR100007H读/写低位除数寄存器DLL100100H读/写低位除数寄存器DLM100101H读/写表2线路控制寄存器(LCR)位名称描 述D0,D1WLS0,WLS1设置数据长度:00:5位。01:6位。10:7位。11:8位。D2DTB停止位个数:0:一个停止位个数1:1.5个停止位(5位数据长度时),2个停止位(6,7,8位数据长度时)D3PEN奇偶校验无效:0:奇偶校验无效。1:奇偶校验有效。D4EPS奇偶校验选择:0:奇校验。1:偶校验。D5SPB强制校验位,与位4和位3一起决定了校验位的取值。111:强制为0。101:强制为1。D6BREAK隔离控制:1:字符发送必须有间隔。0:字符发送不强制有间隔。D7DLAB寄存器访问选择:0:访问其余寄存器。1:访问除数和功能切换寄存器。线路状态寄存器(LSR)位控制位描 述D0DR接收数据准备好标志:0:接收数据缓冲器空。1:接收数据缓冲器中有数据。D1OE溢出错误标志:0:无溢出。1:有溢出。D2PE奇偶校验错误标志:0:无奇偶校验错误 1:有奇偶校验错误D3FE帧错误标志:0:无帧错误。1:有帧错误。D4B1接收中出现间隔被置起。D5THRT发送保持寄存器空标志:0:非空。1:空。D6TEMT发送器空标志:0:发送保持寄存器和发送移位寄存器非空。1:发送保持寄存器和发送移位寄存器都空。D7FERR接收FIFO出错,使用FIFO时,当发生校验出错、帧出错时位。中断使能寄存器(IER)位名称描述D0ERDAI接收中断使能:0:接收中断禁止。1:接收中断使能。D1ETHREI发送中断使能:0:发送中断禁止。1:发送中断使能。D2ELSI接收错误中断使能:0:接收错误中断禁止。1:接收错误中断使能。D3EMSIMODEM中断禁止:0:MODEM中断禁止。1:MODEM中断使能。D40保留D50保留D60保留D70保留波特率除数寄存器波特率除数寄存器 波特率除数寄存器为16位,由高8位(DLM)和低8位(DLL)组成,用来设置TL16C550C串行数据传输的波特率。除数寄存器的值可由TL16C550C的工作时钟和波特率共同确定,计算公式为:除数=时钟频率/(期望的波特率16)。例如在本例设计中TL16C550C的输入频率是10MHz,若采用波特率为38400时,通过计算公式可得高位除数寄存器(DLM)的值为00H,低位除数寄存器(DLL)的值为10H。同理,可以计算出表中各个波特率对应的DLM、DLL值。波特率高位除数寄存器(DLM)低位除数寄存器(DLL)120002H08H240001H04H480000H82H960000H41H1920000H20H3840000H10H2、系统方案设计 TL16C550C与TMS320VC54x都为TI公司生产的芯片,在电气特性和时序匹配上兼容。要实现TMS320VC54x与TL16C550C之间的通信接口,我们采用可编程逻辑器件(CPLD)实现,即需要用TMS320VC54x的信号通过一定的逻辑电路产生TL16C550C需要的控制信号。TMS320VC54x和TL16C550的接口电路示意图如图3所示。图图3 基于基于TL16C550C的串口通信接口电路示意图的串口通信接口电路示意图 在本实例中TMS320VC54x的数据线D0D7、地址线A0A分别与TL16C550C的数据线D0D7、地址线A0A2连接。使用TMS320VC54x的I/O空间选择信号/IS和地址线A10A15通过CPLD中的译码逻辑电路产生TL16C550C的片选信号/CS2,并将I/O地址空间的0 x00000 x03FF这段地址分配给TL16C550C,从而避免了与外部其他I/O设备发生冲突;使用TMS320VC54x的读写复用信号R/W和I/O选通信号/ISOTRB通过CPLD产生TL16C550C的读写控制信号/RD和/W;TL16C550C的中断输出INTRPT通过CPLD译码逻辑电路产生TMS320VC54x的外部中断控制信号/INT3,由于本实例中数据传输方式采用查询的方式,所以数据传输的中断方式只做预留方案使用。在实例中采用CPLD可以较好的实现接口逻辑较为复杂的电路设计,从而提高了硬件设计的灵活性,本模块中CPLD主要完成异步串口模块的I/O地址分配、中断分配和读写控制等功能。1)异步串口模块的)异步串口模块的I/O地址分配地址分配 使用TMS320VC54x的地址线A15A10和I/O空间选择信号/IS通过CPLD内部逻辑译码产生异步串口模块的片选信号UART_CS(低电平有效),并将异步串口模块映射到I/O地址空间的0 x00000 x03FF段内,图 4输入输出ISA15A10UARTKEYOELCDUSBADNETKEYCS0CS1CS2CS31X111111111110001111111111011011111111102110111111110311101111111041111011111105111110111110611111101111071111111011108111111110110911111111101010111111111100其他11111111111 图1为I/O地址分配波形仿真结果图,如图所示当I/O空间选择信号/IS和TMS320VC54x地址线A15.10均为低电平时,异步串口模块的片选信号UART_CS为低电平,即说明片选信号有效,2)异步串口芯片中断的分配)异步串口芯片中断的分配 在异步串口通信中传输数据时我们采用的是查询方式,而数据传输的中断方式作为预留方案,中断方式是将TMS320VC5402的外部INT3分配给异步串口模块,由拨码开关SW15中的SIN3和异步串口芯片TL16C550C的中断输出引脚INTRPT(UART_INT)通过CPLD译码产生TMS320VC54x的外部中断控制信号/INT3(BINT3),其逻辑电路设计的真值表如下表,内部接口逻辑如图6所示。将输入输出SIN3UART_INTBINT30X1111100图7为中断分配的波形仿真结果图,如图所示在SIN3为高电平,UART_INT为低电平时BINT3为高电平,则说明中断信号有效。图 6图 73)异步串口芯片的读写控制 我们使用TMS320VC54x的读写复用信号R/W和I/O选通信号/ISOTRB通过CPLD内的逻辑电路产生TL16C550C的读写控制信号/RD和/WR,逻辑电路设计的真值表如下表,内部接口逻辑如图8所示 输入输出R/W/ISOTRB/RD/WR0010011110011111图 8 图为波形仿真结果图,当R/W=1,/IOSTRB=0时,RD=0,WR=1,TL16C550C进行读操作;当R/W=0,/IOSTRB=0,RD=1,WR=0,TL16C550C时进行写操作;波形仿真结果如图所示。软件算法流程图如下所示,首先要完成对DSP和TL16C550C的初始化,在TL16C550C的初始化中要禁止FIFO的接收和发送;使能访问接收缓冲寄存器(RBR)和发送保持寄存器(THR);设置数据位、停止位和奇偶校验位;设置数据传输波特率为38400,然后设置一个whlie(1)循环程序,在此循环程序中异步串口芯片TL16C550C完成从PC机中重复接收和发送数据的过程。(1)TL16C550C初始化初始化过程如下:UART_FCR=0 x00;/清除接收和发送FIFO;UART_LCR=UART_LCR&0 xff7f;/清零位7(DLAB)访问接收器缓冲器、THR或TER;UART_IER=0 x00;/禁止接收和发送中断;UART_LSR=0 x00;/线路状态寄存器清0;UART_LCR=0 x03;/发送或接收8位串行字符,无校验位,1位停止位;UART_MCR=0 x00;/设置/CTS控制输入和输出;UART_LCR=UART_LCR|0 x0080;/位7置1,访问除数锁存器,以设波特率UART_DLL=0 x10;/本例中设置波特率为38400UART_DLM=0 x0;UART_LCR=UART_LCR&0 xff7f;/位7重新清零关键代码分析关键代码分析(2)接收)接收函数函数unsigned int Uart_rx(void)volatile unsigned long ii=0L;while(!(UART_LSR&0 x01)if(ii+2000000)return(0 xffff);return(UART_RBR);TL16C550C完成数据的接收过程为,首先查询线路寄存器(LSR)的第0位,如果等于1则说明TL16C550C已经将从PC机中接收的数据缓存在TL16C550C的接收缓冲寄存器(RBR)中,然后将此数据发送给 TMS320VC54x同时也将此数据赋值给定义好的数组data将其作为发送过程中的数据。(3)发送)发送函数函数unsigned int Uart_tx(unsigned int data)volatile unsigned long ii=0L;while(!(UART_LSR&0 x20)if(ii+1000000)return(0 xffff);UART_THR=data;return(0);TL16C550C完成数据的接收过程为,首先查询线路寄存器(LSR)的第6位,如果等于1则说明TL16C550C的发送保持寄存器(THR)为空,此时TMS320VC54x可将数组data中的数值写给发送保持寄存器(THR),然后TL16C550C再将数据传输给PC机完成发送过程。结果验证,实验结果如图所示
展开阅读全文
相关资源
相关搜索

最新文档


当前位置:首页 > 图纸专区 > 中学资料


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!