学院(系):机电工程班级:自动化1101姓名:钟金学号:201140210基于DSP2407异步串口的多机通信系统设计与实现西南科技大学城市学院2摘要本次设计的主要工作就是基于在TMS320LF2407ADSP芯片的SCI(异步串行通信)口上的串口通信的设计与实现。TMS320LF240x器件包括串行通信接口SCI模块。SCI模块支持CPU与其他使用标准格式的异步外设之间的数字通信。SCI接收器和发送器是双缓冲的,每一个都有它自己单独的使能和中断标志位。两者都可以独立工作,或者在全双工的方式下同时工作。DSP内部包含了异步串行通信控制模块,所以在板上只需加上驱动电路部分即可。驱动电路主要完成将SCI输出的0-3.3V电平转换成异步串口电平的工作。转换电平的工作由MAX232芯片完成。关键字:DSP;TMS320LF2407A;西南科技大学城市学院3目录:一实验目的及要求………………………………………4二实验设备………………………………………………4三实验原理………………………………………………4四TMS320LF2407DSP及其异步串行口的特点…………6六实验步骤………………………………………………7五主函数程序流程………………………………………7七实验程序及结果………………………………………8八总结……………………………………………………14西南科技大学城市学院4一实验目的及要求1、了解TMS320LF2407ADSP片内串行通信接口(SCI)的特点;2、学会设置SCI接口进行通信;3、学习设计异步通信程序。设计要求:利用DSP2407的异步串口完成一个到多个(至少2个)的通信,要求设计通信的数据协议。要求具有数据接收反馈数据。处理器1往其他处理器发送数据时,必须指定发送地址。处理器2接收数据,必须先检查地址是和自己的地址相符,地址相符才能接收数据,接收到数据后给与发送端数据反馈,并把收到数据在PC机上显示。串行通信接口模块有两个多处理器通信协议,空闲线多处理器模式和地址多处理器模式。这些通信协议保证多处理器间进行有效的数据传送。串行通信接口模块提供了许多通用异步接收/发送(UART)通信外设的接口,如异步通信使用3条线连接,诸如采用RS-232格式的终端和打印机等众多标准器件。多处理器通信模式使得一个处理器能够有效地在同条串行连接线上将数据传送到其他的处理器。一条串行线上一次只能进行一次传送。二实验设备DSP实验开发板、XDS510仿真器、计算机三实验原理1、TMS320LF2407ADSP串行通信接口模块TMS320LF240x器件包括串行通信接口SCI模块。SCI模块支持西南科技大学城市学院5CPU与其他使用标准格式的异步外设之间的数字通信。SCI接收器和发送器是双缓冲的,每一个都有它自己单独的使能和中断标志位。两者都可以独立工作,或者在全双工的方式下同时工作。2、实验板异步串口设计由于DSP内部包含了异步串行通信控制模块,所以在板上只需加上驱动电路部分即可。驱动电路主要完成将SCI输出的0-3.3V电平转换成异步串口电平的工作。转换电平的工作由MAX232芯片完成。3、串行通信接口设置CPU进行串行通信时可以采用两种方式,一种是轮询方式,即CPU不断查询串口状态进行接收和发送,缺点是占用CPU时间太多;另一种是中断方式,SCI的接收和发送都可以产生中断信号,这样CPU可以在完成其他一些工作的同时进行串行通信。串行通信接口波特率计算:内部生成的串行时钟由系统时钟SYSCLK频率和波特率选择寄存器决定。串行通信接口使用16位波特率选择寄存器,数据传输的速度可以被编程为65000多种不同的方式。不同通信模式下的串行通信接口异步波特率由下列方法决定:-BRR=1—65535时的串行通信接口异步波特率:SCI异步波特率=SYSCLK/[(BRR+1)*8],其中BRR=SYSCLK/(SCI异步波特率*8)-1;-BRR=0时的串行通信接口异步波特率:SCI异步波特率=SYSCLK/16西南科技大学城市学院6这里BRR等于波特率选择寄存器的16位值。四TMS320LF2407DSP及其异步串行口的特点TMS320LF2407A和TMS320LC2407A是基于TMS320C2000TM技术平台的定点DSP器件,是TMS320C24xA系列中的新成员.2407A使用了增强型TMS320TM结构的C2xx核心处理器,具有低成本、低功耗、高性能的优点.它还集成了多种专为数字电机和运动控制系统设计的外设,使之成为一款真正的单片数字信号处理控制器.在与以前C24xTM系列指令兼容的同时,2407A具有更高的运算速度(40MIPS)和更高的外设集成度.2407A包括两个事件管理模块,这两个模块已经针对电机控制和电源转换进行了优化,包括12路对称或非对称的PWM发生器以及可编程的死区控制功能.双事件管理模块使得单个2407ADSP控制器可以同时控制两台电机.2407A具有16个高性能的10位A/D转换器,最小转换时间为375ns,其自动排序功能使多达16次转换可以在一个转换过程内完成而且不会给CPU增加额外的开销.2407A还提供16位同步串行接口(SPI)和符合2.0B标准的CAN模块.TMS320LF2407A提供了串行通讯接口SCI模块,支持CPU与其他使用标准格式的异步外设之间的数字通信.SCI接收器和发送器是双缓冲的,每一个都有它自己单独的使能和中断标志位,两者都可独立工作,或者在全双工的方式下同时工作.SCI模块通过SCIRXD引脚接收数据,通过SCITXD引脚发送数据,在不使用SCI模块的时候,这两个引脚西南科技大学城市学院7可以被配置为通用I/O口.为确保数据的完整,SCI对接受到的数据进行间断检测、奇偶校验、超时和帧出错校验.通过一个16位的波特率选择寄存器,数据传输的速度可以被编程为65535种不同的方式,在40MHz的CPU时钟方式下,波特率范围从76bps到1875kbps.无论接收还是发送,SCI接口模块的数据都采用NRZ(非返回零)格式.NRZ数据格式包括一个起始位,(1~8)位可编程选择的数据位,可选择的奇/偶/无校验位,(1~2)个停止位.在地址位多处理器模式下还包括一个地址/数据位.五主函数程序流程六实验步骤1、用DB9直通电缆把DSP的串口和PC机的串口连接起来。打开PC机串口调试软件,默认设置为COM1,9600,N,8,1,选择按16进制发送和接收;2、将SCI目录COPY到CCS开发环境中的myproject目录下;3、CCS中用projectOpen命令,加载SCI目录下的SCI.pjt;4、浏览程序,打开工程目录下的main.c文件,并理解每条语句系统初始化定时器初始化接收服务程序发送服务程序,定义一段需要发送的字符串串行通信接口初始化西南科技大学城市学院8的含义;5、编译工程。单击Project菜单,Rebuildall项,编译工程中的文件,生成*.out文件;6、下载程序。在CCS中用FileLoadProgram命令,加载SCI目录中Debug目录下的*.out文件;7、运行程序观察结果。调试程序过程中在合适位置设置断点,利用WATCH窗口观察DSP接收到的PC机数据;利用串口调试软件观察DSP发送到PC机的数据;七实验程序及结果1、实验程序#includeglobal.cvoidSystemInit();voidTimer1Init();voidKickDog();voidSCI_Init();voidSCI_Send();intnumled0=200;unsignedintt0=0;unsignedintSCI_RXDATA;main(){西南科技大学城市学院9SystemInit();//系统初始化MCRC=MCRC&0xFF00;//IOPE0-7设为IO口模式PEDATDIR=0xFF00;//所有LED=0,所有led灯灭SCI_Init();Timer1Init();/*定时器初始化*/asm(CLRCINTM);while(1);/*进入死循环*/}voidSystemInit(){asm(SETCINTM);/*关闭总中断*/asm(CLRCSXM);/*禁止符号位扩展*/asm(CLRCCNF);/*B0块映射为on-chipDARAM*/asm(CLRCOVM);/*累加器结果正常溢出*/SCSR1=0x83FE;/*系统时钟CLKOUT=20*2=40M*//*打开ADC,EVA,EVB,CAN和SCI的时钟*/WDCR=0x006F;/*禁止看门狗,看门狗时钟64分频*/西南科技大学城市学院10KickDog();/*初始化看门狗*/IFR=0xFFFF;/*清除中断标志*/IMR=0x0003;/*打开中断2P44*/}voidTimer1Init(){EVAIMRA=0x0080;//定时器1周期中断使能EVAIFRA=0xFFFF;GPTCONA=0x0000;//清除中断标志T1PR=2500;//定时器1初值,定时0.4us*2500=1msT1CNT=0;T1CON=0x144E;//增模式,TPS系数40M/16=2.5M,T1使能}voidSCI_Init(){MCRA=MCRA|0x0003;//IOPA0,IOPA1为串口西南科技大学城市学院11SCICCR=0x0007;//空闲多处理器模式,8位数据位,1位停止位,无奇偶校验位SCICTL1=0x0003;//接收,发送,内部时钟使能,SLEEP=1SCICTL2=0x0002;//接收中断使能SCIPRI=0x0000;//高中断优先级SCIHBAUD=0x0002;//40M,波特率设置为9600SCILBAUD=0x0008;SCICTL1=0x0023;//串口初始化完成}voidSCI_Send()//发送0x80-0x87,共8个字节数据{SCITXBUF=0x57;while((SCICTL2&0x0080)==0);/*p301*/}voidc_int1(){西南科技大学城市学院12if(PIVR!=0x06)//高优先级的SCI接收中断{asm(CLRCINTM);return;}SCI_RXDATA=(SCIRXBUF)&0x00FF;//串口接收的数据保存IFR=0xFFFF;asm(CLRCINTM);}voidc_int2()/*定时器1中断服务程序*/{if(PIVR!=0x27){asm(CLRCINTM);return;}T1CNT=0;t0++;numled0--;if(numled0==0){西南科技大学城市学院13numled0=200;if((PEDATDIR&0x0002)==0x0002)PEDATDIR=PEDATDIR&0xFFFD;//IOPE1=0;LED灭elsePEDATDIR=PEDATDIR|0x0002;//IOPE1=1;LED亮}if((t0%100)==0)//定时循环100msSCI发送{SCI_Send();}EVAIFRA=0x80;asm(CLRCINTM);}voidKickDog(){WDKEY=0x5555;WDKEY=0xAAAA;}2、实验结果西南科技大学城市学院14八总结TMS320LF2407A有极高的主频,在具有复杂的算法、要求实时控制的场合能充分显示出其优越性。通过DSP实验开发板、XDS510仿真器、计算机,验证了TMS320LF2407ADSP片内串行通信的优缺点。随着工业的发展,人们对工业控制的要求越来越高。DSP芯片处理数据的速度在不断的提高,能满足工业控制中实时处理数据的要求,而且其价格在不断的下降。因此,DSP的普及指日可待,其应用前景十分看好。