版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
DSP实验设计报告名称:RS232串行接口实验教师:李遥姓名:朱清亮班级:08电子信息工程(2)学号:0805070161日期:2011-11-28一、实验目的1.进一步掌握同步缓冲口M出BSP的结构及工作原理;2.学习DSP实现RS232串口通信的程序设计;3.学习MAX3111与DSP的接口设计。二、实验设备计算机;DSP硬件仿真器;SZ-DSPF教学开发平台;串行线一根三、实验硬件设置做实验之前,需要接通该实验所需的硬件电路,本实验为:现将实验箱上的电源开关“MS2”、“MS3”和“MS4”按下,将串口线一端连接到计算机的串口,另一头连接到SZ-5416D开发教学平台的主控模块中的“RS232”端口,在将机箱右侧的船型开关往“I”方向打开电源;SZ-541D主控模块上的J7,J9、J4、J16短接;在“设置模块”中将“A”和“C”设置为“1”。然后开始做实验,注意在做DSP实验时开始按了SZ-5416D主控模块上的K1硬件复位后,程序运行中不要再按复位键,以免实验由于DSP复位而失败。四、实验原理1.MAX3111功能特点MAX3111通用同步收发器是MAXIM公司专门为小型微处理系统进行最优化设计的UART,它包括一个振荡器和一个可编程波特率发生器;具有一个可屏蔽的中断源;另具有一个8字节的接受FIFO(先入先出)缓冲器。它应用SPI/MICROWIRE接口技术直接与主控制器进行通信,线路简单、体积小,通信率可达230kbit/s。另外其内部除具有UART之外,还包括两个RS-232电平转换器,这样无需再接入普通的MAX232进行电平转换,即可应用一个芯片实现微控制器(具有SPI/MICROWIRE接口)与PC机或其它设备之间的异步数据传输。2.MAX3111的操作 MAX3111通过SPI接口与主设备进行16位数据的全双工同步通信,即主设备传送16位数据给MAX3111的同时,也可接收到MAX3111发送的16位数据。主设备在MOSI线上向MAX3111发送的16位串行数据序列中包括传输格式控制字,如波特率设备、中断屏蔽、奇偶校验位等,同时还有发送的数据字。MAX3111在MISO线上向主设备发送的16位数据序列中除了接收到的数据外,还包括中断标志等状态位。所以通过16位的实时数据传输,主设备可获得MAX3111工作状态信息,同时对其具有完全控制权利。这样,两个设备的控制、状态、数据信息的实时通信就保证了数据传输的可靠性和稳定性。3.DSP与MAX3111的接口设计DPS的McBSP串行接口工作于SPI模式时可直接与MAX3111进行连接,从而实现与RS-232设备进行异步数据传输。此时DSP作为SPI协议中的主设备,其接口电路如图3所示。DSP的发送时钟信号(BCLKK)作为MAX3111的串行时钟输入,发送帧同步脉冲信号(BGSX)作为MAX3111的片选信号(CS)。BDX与DIN连接作为发送数据线,BDR与DOUT连接作为接收数据线。MAX3111的TX与T1IN连接,RX与R1OUT连接,以便利用其片内的转换器实现UARY到RS-232电平的转换。MAX3111的中断信号(IRQ)与DSP的外部中断连接。在SPI协议中,主设备提供时钟信号并控制数据传输过程。由MAX3111接口电路时序(图4)可知,必须设置DSP的McBSP于适当的方式才能保证与MAX3111的时序相匹配。MAX3111要求在数据传输过程中CS信号必须为低电平,在传输完毕后必须为高电平。此信号由McBSP的BFSX引脚提供,因此必须正确设置DSP的真脉冲发生器,使之在每个数据包传送期间产生帧同步脉冲,即在数据包传送的第一位变为有效状态,然后保持此状态直到数据包传送结束。McBSP的采样频率发生器产生适当频率的时钟信号,由BCLKX引脚输出,保证主从设备间的同步数据传输。因此必须正确设置DSP的采样频率发生器时钟源(CLKSM)和时钟降频因子(CLKGDV)。根据SPI传输协议,必须正确设置数据发送延迟时间(XDATDLY)。由图4可知MAX3111要求在SCLK变高之前的半个周期开始传输数据。所以必须为McBSP选择合适的时钟方案,即设置McBSP的时钟停止模式。在本应用中采用McBSP的时钟停止模式2(CLKSTP=11b,CLKXP=0),这样即可保证与MAX3111的时序相配合。本系统采用同步串行通信器件MAX3111,MAX3111详细资料请查阅随机光盘中的MAX3111.PDF文档。DSP采用其同步缓冲口1(BFSX1,BCLKX1,BDR1,BDX1)来通信,具体方法请参阅RS232标准。其硬件原理请参考1.1.6通信模块的RS232通讯。4.DSP的异步通信软件的设计考虑到应用系统的可移植性和可阅读性,数据传输软件采用C语言进行编写,这样可以利用DSP开发软件CCS2.0所提供的DSP/BIOS中的芯片支持数据库(CSL)。CSL提供C语言可调用的DSP外围接口函数,其中包括DMA模块、McBSP模块、TIMER模块等。应用这些库函数可大大提高程序可读性,缩短软件开发周期。在本文所提到的应用中,主要调用MCBSP模块。数据传输软件主要包括以下几个部分。McBSP串口初始化如上所述,在本应用中应将TMS320C5416DSP的McBSP串行口配置位SI模式,以DSP作为主设备。表1给出了相应设备的寄存器或寄存器位的值,未涉及到的寄存器保持其默认值即可。根据表1,调用CSL的McBSP配置库函数即可完成McBSP的初始化。(2)MAX3111工作模式及波特率设置在进行通信之前,DSP必须首先根据命令格式序列向MAX3111写入配置命令字,之后才能进行正确的数据传输,如8位数据、一位停止位、奇偶校验位、波特率为115200、使能接收和发送中断的异步数据传输。DSP对MAX3111进行配置的简要过程为:在进行中断方式传输数据时,需要注意的是:虽然DSP的McBSP有自身的发送和接收中断,但由于McBSP与MAX3111之间的同步串行数据传输速率高于MAX3111将数据以一定波特率(最高230kbps/s)异步发送的速率,因此如果应用McBSP的发送中断,将造成发送数据的丢失。同时,在SPI协议中,数据的传输是由SPI主设备发起的,所以在SPI方式下的McBSP并不能产生接收中断。因此,本方案应用的关键之一是将MAX3111的IRQ中断信号连接至DSP的另一外部中断,以实现中断方式下可靠、正确的数据传输。其硬件原理图请参考“2.5高速232通信模块”的说明,逻辑关系请参考第二章逻辑分析5416部分。DSP程序可参考随机光盘中的\h7rs232例程。5.调试串口工具使用说明打开调试串口工具,其界面如下图所示:各部分功能说明如下:eq\o\ac(○,1)选中表示发送数据为十六进制格式(注:发送十六进制数据时,要求输入时两个十六进制数为一组,如FF6FF6...中间用空格分开,并且不要求加前缀(0x或ox)与后缀(h或H));eq\o\ac(○,2)选中后表示将发送窗口中的数据每隔0.5秒发送一个字节的数据到下位机;eq\o\ac(○,3)发送按钮,单击一次将把“发送窗口”中的数据发送到下位机,当选众“连续发送(0.55)”时此按钮无效;eq\o\ac(○,4)端口设置用于设置串口相关参数,单击后弹出窗口如下:eq\o\ac(○,5)选中后“接收窗口”显示的接收数据将为十六进制格式数据;eq\o\ac(○,6)停止按钮单击后将停止接收数据;eq\o\ac(○,7)清除“接收窗口”中的数据;eq\o\ac(○,8)清除“发送窗口”中的数据;五、实验程序框图六、实验步骤1.正确连接好实验仪器、仿真器,上电;2.运行CCS,装入程序RS232_simple,运行,按相应键发送和接收数据,观看并记录结果。修改不同的波特率,再次进行发送、接收数据,查看结果,分析并讨论。附:实验参考源程序#include<string.h>#pragmaCODE_SECTION(vect,"vect")unsignedint*pmem=0;#define IMR *(pmem+0x0000)#define IFR *(pmem+0x0001)#define PMST *(pmem+0x001d)#define SWCR *(pmem+0x002b)#define SWWSR *(pmem+0x0028)#define CLKMD *(pmem+0x0058)#define PRD0 *(pmem+0x0025) //timer0periodregister#define TCR0 *(pmem+0x0026) //timer0controlregister/*mcbsp1*/#defineSPSA1*(pmem+0x0048)//子地址寄存器#defineSPSD1*(pmem+0x0049)//#defineDRR11*(pmem+0x0041)//接收数据寄存器1#defineDRR21*(pmem+0x0040)//接收数据寄存器2#defineDXR11*(pmem+0x0043)//发送数据寄存器1#defineDXR21*(pmem+0x0042)//发送数据寄存器2/*mcbsp1subadress*/#defineSPCR110x0000//串行口控制寄存器1#defineSPCR210x0001//串行口控制寄存器2#defineRCR110x0002//接收控制寄存器1#defineRCR210x0003//接收控制寄存器2#defineXCR110x0004//发送控制寄存器1#defineXCR210x0005//发送控制寄存器2#defineSRGR10x0006//采样率发生寄存器1#defineSRGR20x0007//采样率发生寄存器1#definePCR10x000e//引脚控制寄存器ioportunsignedportc000; //数码管地址ioportunsignedportc001; //键盘地址ioportunsignedportc002; //发光二极管地址intnum=0;intn=0;staticintTmcounter;staticconstchartable[10]={"1234567890"};staticintweima[8]={0x0100/*1*/,0x0200/*2*/,0x0400/*3*/,0x0800/*4*/,0x1000/*5*/,0x2000/*6*/,0x4000/*7*/,0x8000/*8*/};staticintduanma[16]={0x003f/*0*/,0x0006/*1*/,0x005b/*2*/,0x004f/*3*/,0x0066/*4*/,0x006d/*5*/,0x007d/*6*/,0x0007/*7*/,0x007f/*8*/,0x006f/*9*/,0x0077/*a*/,0x007c/*b*/,0x0039/*c*/,0x005e/*d*/,0x0079/*e*/,0x0071/*f*/};voiddelay() //WAIT{ asm("STM#0008h,AR0"); asm("RPT*AR0"); asm("NOP");}voiddelay10ms(){ inti,j,k; for(i=0;i<2;i++) for(j=0;j<2;j++) for(k=0;k<2;k++);}voiddelay100ms(){ inti,j,k; for(i=0;i<14;i++) for(j=0;j<12;j++) for(k=0;k<20;k++);}voidcpu_init() //初始化DSP{ asm("ssbxintm"); asm("ssbxxf"); PMST=0xe8; SWWSR=0x7fff; SWCR=0x0000; CLKMD=0x1000; TCR0=0x0a59; PRD0=0xf9f; IMR=0x0c0c; //开放mcbsp1发送中断、mcbsp1接收中断、外部中断2、定时器0中断 IFR=0xffff; asm("rsbxintm"); asm("rsbxxf");}voidmcbsp_init(){ SPSA1=SPCR11; //SerialPortControlRegister1 SPSD1=0x1800; //1800 SPSA1=SPCR21; //SerialPortControlRegister2 SPSD1=0x0000; //0000 SPSA1=RCR11; //ReceiveControlRegister1 SPSD1=0X40; //0040 SPSA1=RCR21; //ReceiveControlRegister2 SPSD1=0x01; //0001 SPSA1=XCR11; //TransmitControlRegister1 SPSD1=0x40; //0040 SPSA1=XCR21; //TransmitControlRegister2 SPSD1=0x01; //01 SPSA1=SRGR1; //SampleRateGeneratorRegister1 SPSD1=0x0000; //0000 SPSA1=SRGR2; //SampleRateGeneratorRegister2 SPSD1=0x2000; //2000 SPSA1=PCR1; //PinControlRegister SPSD1=0x0a08; DXR11=0x000; SPSA1=SPCR11; //SerialPortControlRegister1 SPSD1=0x1801; //1800 SPSA1=SPCR21; //SerialPortControlRegister2 SPSD1=0x0041; //0000}voidaic_init(){ DXR11=0xcc0b; //9600enablereceiveddatainterrupt //低四位决定波特率}voidmain(void){ cpu_init(); mcbsp_init(); aic_init(); Tmcounter=0; for(;;) {}}interruptvoidrs232(){ intrxdata; intvalue; DXR11=0x00; //向MAX3111写入0x00,即最高两位为00,表示DSP要从MAX3111读数据 rxdata=DRR11; //从数据接收寄存器DRR读出数据 if(rxdata&0x8000) //若读到的数据最高位R为1,则表示数据信息可被读取 { value=rxdata&0x00ff; //传送的数据存放在16位数的低八位 if(value>15) value=15; portc000=weima[n]|duanma[value]; n++; if(n>7) n=0; } }interruptvoidtint0(){ intrxdata,txdata,value; if(Tmcounter==250) { Tmcounter=0; DXR11=0x00; rxdata=DRR11; if(rxdata&0x4000) //若读到的数据?,则表示?,已准备好接收数据 { value=table[num]; txdata=value&0x00ff; DXR11=0x8000|txdata; num++; if(num==10) { num=0x0; DXR11=0xc40b; //写控制字,且TM为0,表示禁止MAX3111发送缓冲器的空中断 } } } Tmcounter++; }interruptvoidKeyDown(){ inta; a=portc001; a=a&0xff00; if(a!=0xff00) { delay10ms(); a=portc001; a=a&0xff00; if(a==0xfe00) //当按键1按下时,开始定时,关mcbsp1接收中断 { IMR=0x080c; TCR0=0x0a69; } elseif(a==0xfd00) //按键2按下时,停止定时,开mcbsp1接收中断 { TCR0=0x0a59; IMR=0x0c0c; } else ; }} voidvect(){asm(".ref_c_int00");asm(".ref_rs232");asm(".ref_tint0");asm("b_c_int00");/*reset*/asm("nop");asm("nop");asm("nop"); asm("rete"); //nmiasm("nop");asm("nop");asm("nop");asm("rete");//asm("nop");asm("nop");asm("nop");asm("rete");asm("nop");asm("nop");asm("nop");asm("rete");asm("nop");asm("nop");asm("nop");asm("rete");asm("nop");asm("nop");asm("nop");asm("rete");asm("nop");asm("nop");asm("nop");asm("rete");asm("nop");asm("nop");asm("nop");asm("rete");asm("nop");asm("nop");asm("nop");asm("rete");asm("nop");asm("nop");asm("nop");asm("rete");asm("nop");asm("nop");asm("nop");asm("rete");asm("nop");asm("nop");asm("nop");asm("rete");asm("nop");asm("nop");asm("nop");asm("rete");asm("nop");asm("nop");asm("nop");asm("rete");asm("nop");asm("nop");asm("nop");asm("rete");asm("nop");asm("nop");asm("nop");asm("rete");/*int0*/asm("nop");asm("nop");asm("nop");asm("rete");/*int1*/asm("nop");asm("nop");asm("nop");asm("b_KeyDown");/*int2*/asm("nop");asm("nop");asm("b_tint0");asm("nop");/*tint0*/asm("nop");asm("nop");asm("rete");/*brint0*/asm("nop");asm("nop");asm("nop");asm("rete");/*bxint0*/asm("nop");asm("nop");asm("nop");asm("rete");/*dmac2*/asm("nop");asm("nop");asm("nop");asm("rete");/*tint1*/asm("
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2024年办公复印机买卖协议详细范本
- 2024年白字黑字无中介借款协议样例
- GF2024年工程设计服务协议
- 2024年初级水产批发销售协议样本
- 2024员工加入协议详细规定
- 2024年架子工承包协议
- 二手摩托车交易协议范本2024
- DB11∕T 1668-2019 轻钢现浇轻质内隔墙技术规程
- 2024年医疗器械试验协议模板
- 2024年企业股权奖励实施细则协议
- GB/T 6974.3-2024起重机术语第3部分:塔式起重机
- 绵阳市高中2022级(2025届)高三第一次诊断性考试(一诊)数学试卷(含答案逐题解析)
- 绵阳市高中2022级(2025届)高三第一次诊断性考试(一诊)化学试卷
- 人教版八年级上册生物全册教案(完整版)教学设计含教学反思
- 棋牌室消防应急预案
- 福建省泉州市2023-2024学年高一上学期期末考试地理试题(解析版)
- 2024年学校中层干部考核细则样本(六篇)
- 2024年协商一致解除劳动合同范例(四篇)
- 医美机构转让合同模板
- 大学数学《概率论与数理统计》说课稿
- 2024年度2024行政复议法培训
评论
0/150
提交评论