ImageVerifierCode 换一换
格式:DOCX , 页数:17 ,大小:414.20KB ,
资源ID:17360594      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/17360594.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(基于DSP实验系统的串口通信文档格式.docx)为本站会员(b****5)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

基于DSP实验系统的串口通信文档格式.docx

1、32K*16bitSDRAM:4M*16bitFLASH:8Mbit寄存器组LCD液晶LED灯UARTCPLD 2.主要部分硬件设计:串口模块:TL16C550 是一个标准的串口接口芯片,它的控制寄存器基地址为0x400200,寄存器占用TMS320VC5509 的8 个地址单元。串口中断与TMS320VC5509 的INT0 连接。用户可以使用TMS320VC5509 的中断0 响应串口中断。TL16C550 有11 个寄存器,这11 个寄存器是通过TMS320VC5509 的3 个地址线(A3A1)和线路控制寄存器中的DLAB 位对它们进行寻址的。板上加上16C550、Max232 和驱动

2、电路。驱动电路主要完成将输出的0-3.3V电平转换成异步串口的工作电平,转换电平的工作由MAX232 芯片完成,但由于它是5V 器件,所以它同DSP 间的信号线必须有电平转换,此板采用的是74LVC245。实验箱上的液晶模块采用的型号是TJDM12864MTJDM12864M 是一款带中文字库的图形点阵模块,由动态驱动方式驱动 12864 点阵显示。低功耗,供应电电压范围宽。内含多功能的指令集,操作简易。采用 COB 工艺制作,结构稳固,使用寿命长。特性: 1.提供 8 位,4 位及串行接口可选 2.6416 位字符显示 RAM(DDRAM 最多 16 字符4 行,LCD 显示范围 162 行

3、) 3.2M 位中文字型 ROM(CGROM) ,总共提供 8192 个中文字型(1616 点阵) 4.16K 位半宽字型 ROM(HCGROM),总共提供 126 个西文字型(168 点阵) 5.6416 位字符产生 RAM(CGRAM) 6.1516 位总共 240 点的 ICON RAM(ICONRAM) 7.自动复位(RESET)功能 8.绘图及文字画面混合显示功能 9.提供多功能指令:画面清除(display clear) 游标归位(return home) 显示开/关(display on/off) 游标显示/隐藏(cursor on/off) 字符闪烁(display chara

4、cter blink) 游标移位(cursor shift) 显示移位(display shift) 垂直画面旋转(vertical line scoll) 反白显示(By-line reverse display) 睡眠模式(sleep mode)DSP与LCD的连接:3.软件设计流程:1 4.在试验箱上模拟实现用随实验箱附带的串口线(两端均为9 孔“D”形插头)连接计算机com1 或com2 插座和ICETEKVC5509-A 板上标准RS-232 插座,编译、下载、运行。然后在电脑上使用串口调试助手对DSP进行数据的发送,在DSP上可以看到LED的点亮方式及个数,而且在LCD上也显示发送

5、来的数据。具体代码见附录。三课程设计总结1.问题与思考 1.1串口使用中用到的波特率该怎么算? BRR=165535 时的串行通信接口异步波特率:串行通信接口异步波特率=SYSCLK/( BRR+1)*8其中,BRR=SYSCLK/(SCI 异步波特率*8)-1; BRR=0 时的串行通信接口异步串行通信接口异步波特率=SYSCLK/16这里BRR 等于波特率选择寄存器的16位值。波特率一般用9600HZ,或者115200HZ就行。有一个方便的计算。 1.2串口发送接收数据的方式是怎样的? 串口发送数据为一位位的发送,例如发14,就是先发1,再发4,一位一位的对数据放入发送接收的缓存区,接收的

6、时候也是一位一位的接收,一位一位都接收缓存区的里东西,知道这样才可以对收到数据进行读值解码。. 1.3 LCD12864及LED的介绍 LCD12864带中文字库的图形点阵模块,128可以直接写入数据所对应的阿斯特码值进行显示,还有自己的中文字库,功能强大。开发板上的LED为四位的共阳极的发光二级管,只要对对应的引脚进行低电平控制就可以让LED灯亮起来。1.4在编译调试过程中出现的.cmd文件出错?理解cmd文件中的内容。.cmd文件类型及作用: .cmd是链接器命令文件,用于存储器配置。.cmd文件结构: .cmd由两条链接伪指令来描述:MEMORY 和SECTIONS,其中: MEMORY

7、定义用户目标系统存储器的配置; SECTIONS控制段的构建和存储器的分配。sections是COFF文件中最重要的概念,它至少包含以下三个段:.text 段:包含可执行代码;.data 段:包含初始化数据; .bss 段:为未初始化变量保留存储空间。 .cinit段:包含初始化变量表和常数,C/C+ 的全局变量;段的分类:可分为已初始化段和未初始化段。已初始化段:包含数据或程序代码。例如:.text段, .data段和用.sect汇编命令建立的自定义段。当汇编器遇到.text或.data或.sect命令时,将停止对当前段的汇编,然后将紧接着的程序代码或数据汇编到指定的段中,直到再遇见另一条命

8、令为止。 未初始化段:是C54x存储器中的保留空间,通常定义在RAM区。包含:.bss 段和.usect段。当汇编器遇到.bss 或.usect命令时,并不停止对当前段的汇编,只是暂时从当前段脱离出来,并对新的段进行汇编。个别有地址分配不足的可以根据手册进行地址长度修改或改变存储地址。2.心得体会本次课程设计我基本掌握了DSP基本的原理结构、TMS320C5509片上串口通信、外扩LCD和LED的编程使用。通过对CCS集成开发工具的学习,给整个课程设计带来了极大的便利。学会了CCS使用后,整个程序的设计、编辑、载入都可在一个集成环境下完成。在学习串口的过程中学到了很多东西,串口是个非常实用的工

9、具,调试软件的时候都会经常用到,还有串口本身还有一种接收中断,发送中断的方式,十分好用,但是由于本次课设使用的课本没有介绍,我也自己看看,他涉及中断,关及中断向量表的问题,还要对中断向量表进行配置,还要看进行汇编语言的设置中断向量表,我不会汇编语言,于是没有能用上接收中断,就觉得非常可惜,不然程序运行的会更好。经过我不断的修改,最终程序调试完成,也基本达到了实验要求。但由于时间的原因,这还有一些不尽如人意的地方,都可以继续改进。说到中断不禁想起DSP的编程方式,真是大开眼界了,自己写着底层的库,老师说这是在锻炼我们,不仅仅学习软件方面的东西,还学习了DSP的硬件系统,知道每个寄存器的地址。其实

10、也有集成好的库,我也看过,要说的是,他自带的库用的是汇编语言写的,我们一般都看不懂,但是调用的时候竟然是c语言的调用,如果有时间好好看,应该也能用。还有就是这种从底层写程序的方式虽然效率很低,不会的问题会很多,不通汇编语言的人学会很吃力,但是就像老师说的,得到了很好的锻炼,对DSP硬件软件都有了个很好的了解。对以后的学习很有帮助。总而言之,通过DSP课程设计,提高了自己的理论与实践编程能力,使得对DSP有了更为深刻的理解,在今后的学习中,我会更多的学习DSP的相关内容,不断努力提高设计与创新能力。最后,非常感谢老师的指导与帮助,没有老师的指导我们将很难完成任务。附录:部分相关代码:#inclu

11、de myapp.h5509.h#define UART_BASE_ADDR 0x400400#define RBR *(int *)(UART_BASE_ADDR+0)#define THR *(int *)(UART_BASE_ADDR+0) #define IER *(int *)(UART_BASE_ADDR+1)#define IIR *(int *)(UART_BASE_ADDR+2) #define FCR *(int *)(UART_BASE_ADDR+2) #define LCR *(int *)(UART_BASE_ADDR+3)#define MCR *(int *)(U

12、ART_BASE_ADDR+4)#define LSR *(int *)(UART_BASE_ADDR+5)#define MSR *(int *)(UART_BASE_ADDR+6)#define SCR *(int *)(UART_BASE_ADDR+7)#define DLL *(int *)(UART_BASE_ADDR+0)#define DLM *(int *)(UART_BASE_ADDR+1)/ 定义指示灯控制寄存器地址和寄存器类型#define LBDS (*(unsigned int *)0x400001)/ 定义拨码开关控制寄存器地址和寄存器类型#define DIPS

13、(*(unsigned int *)0x400002)void TMCR_reset( void );void EMIF_init(void);void wait(int nWait);char cString17=HelloPC!,Over| ,cReceive,cBuffer17,cAnswer10=you say;char cShu11= 0123456789 ,a17=0;int flagReceive=0,nLen=0;unsigned int aBuffer17,b17=0;unsigned int rece=0;int k=0,dipadd=0;/主程序main() unsign

14、ed int uWork; int i; /flagReceive=0; TMCR_reset(); PLL_Init(12); EMIF_init(); SDRAM_init(); / 初始化EMIF接口 InitCTR(); clrram(); Smenu(); LCR = 0x80; /分频 DLL = 0x18; /分频低8 DLM = 0x00; /分频高8 LCR = 0x03; /8比特 FCR = 0x01; /fifo模式 MCR = 0x00; / MSR = 0x00; IER = 0x00; for(;) if ( flagReceive=0 ) if(dipadd=0

15、&dipadd=9) wr_lcd (0,0x98); / 第四行 wr_lcd( 1,cShudipadd); wr_lcd( 1, ); else if(dipadd16) wr_lcd( 1,cShu1); wr_lcd( 1,(cShudipadd%10); else flagReceive=0; for ( i=0;i7;i+ ) do uWork=LSR; /线路状态,接收数据 while ( uWork&0x040 != 0x040 );/接收到,退出 THR=cAnsweri; /发送 you say wait(128);nLen; THR=aBufferi; /发送接收到的数

16、 if(b1=. wr_lcd (0,0x90); / 第二行 wr_lcd( 1,(b0); LBDS=b0; else if(b2= wr_lcd( 1,(b1); LBDS=(b0+b1+9); k=0; flagReceive=0; while ( 1 ) /接收发送到的,并计算字符表长度k uWork=LSR; if(uWork&1)=1) cReceive=RBR; /接收到的数据 aBufferk=cReceive&0x0ff; ak= aBufferk; bk= aBufferk; if ( cReceive= ) aBufferk+1=0 nLen=k+1; flagRece

17、ive=1; break; k+; k%=16; Else/扫描拨码开关 dipadd=DIPS&0x000f; break; void EMIF_init(void) ioport unsigned int *ce21 =(unsigned int *)0x809; *ce21 = 0x1fff;void TMCR_reset( void ) ioport unsigned int *TMCR_MGS3=(unsigned int *)0x07FE; ioport unsigned int *TMCR_MM =(unsigned int *)0x07FF; *TMCR_MGS3 =0x510

18、; *TMCR_MM =0x000;void wait(int nWait) int i,j,k=0; for ( i=0;nWait; for ( j=0;j64;j+ )/*-写LCD-*/void wr_lcd(unsigned char dat_comm, unsigned int content) if(dat_comm) CTRGR=0x01; TRLCDCR=0x03; CTRLCDLCR=content; CTRLCDCR=0x0b; Delay(10); CTRLCDCR=0x03; CTRGR=0x02; else CTRLCDCR=0x01; CTRLCDCR=0x09;

19、/LCD初始化void InitCTR() / CTRGR=0x80; CTRGR=0;CTRLCDCR=0x00;Delay(10);CTRLCDCR=0x01;wr_lcd (comm,0x30); /*30-基本指令动作*/ wr_lcd (comm,0x01); /*清屏,地址指针指向00H*/ wr_lcd (comm,0x06); /*光标的移动方向*/ wr_lcd (comm,0x0c); /*开显示,关游标*/ /*-清DDRAM-*/void clrram (void) wr_lcd (comm,0x30); wr_lcd (comm,0x01);/*函数名称: LCD12864_datstr功 能: 向12864液晶写入一个字符串参 数: ptString-字符串指针返回值 : 无*/void LCD12864_datstr(char *ptString)while(*ptString)!=) /字符串未结束一直写wr_lcd(dat, *ptString+);

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1