dsp实验报告

  • 格式:doc
  • 大小:148.55 KB
  • 文档页数:22

《DSP原理与开发》实验报告 姓名:_______杨文雪_________ 学号:____2013142214______ 《DSP技术与实验》实验报告

1 / 实验名:UART串口通信 一、实验目的 1、熟悉McBSP的配制方法; 2、掌握通过I/O口配置UART串口的过程; 3、掌握串口调试过程。 二、实验设备 1、一台装有CCS4的计算机; 2、HX-5509开发板; 3、XDS100 USB V1仿真器。 三、实验原理 MCBSP是TI公司生产的数字信号处理芯片的多通道缓冲串口,在标准串行接口的标准之上对功能进行扩展,因此,具有与标准串行接口相同的基本功能。它可以和其他DSP器件、编码器等其他串口通信。 它具有普通串口的以下特点: 1、全双工通信; 2、拥有两级缓冲发送和三级缓冲接收数据寄存器,允许连续数据流传输; 3、为数据发送和接收提供独立的帧同步脉冲和时钟信号; 4、能够与工业标准的解码器、模拟接口芯片和其他串行A/D和D/A设备直接连接; 5、支持外部移位时钟或内部频率可编程移位时钟; 6、128个通道用于接收传送; 《DSP技术与实验》实验报告 2 / 7、支持A-BIS; 8、接口直接连接工业标准的多媒体数字信号的编解码器,A/D,D/A和模拟芯片。 5509A有三个多通道缓冲串口MCBSP,有七个管脚分布在DSP的外围针脚上,有一个发送端,一个接收端,还有接收和发送的时钟信号,帧同步信号,这两个信号可用于发送和接收的时钟和真同步信号。 MSBSP由引脚、时钟及帧同步信号产生、接收发送部分、多通道选择、CPU中断信号、DMA同步信号等组成。 MCBSP由多个工作模式,分别是多通道缓冲模式、SPI模式、数字回环模式、GPIO模式和省电模式。通过MCBSP配置串口有两种方式:一是MCBSP in Serial Port Mode;二是MCBSP in GPIO Mode,通过配置GPIO实现串口通信,这种模式不需要时钟同步和帧同步信号。本次实验使用GPIO模式实现UART串口,这样占用的引脚少,节约硬件资源。GPIO模式只需要配置PCR和SPCR。 通过软件模拟串口,需要做两件事:一是串口初始化,二是UART协议的模拟。PC机与5509A串行通信必须遵循起止式异步协议,它的特点是一个字符一个字符传输,并且传送一个字符总是以起始比特开始,以停止位结束,字符之间没有固定的时间间隔要求。起始比特位始终为低电平,1比特字符可以选择4-8比特,奇偶校验位可以为无、奇、偶、空格、标志;停止位为1、1.5、2比特,理论上,发送过程和接收过程可以选择不同的数据格式进行通信,但通常我们为了开发程序的简化和通信方面都采用统一的数据格式。还有一个重要参数是《DSP技术与实验》实验报告 3 / 波特率:UART的通信时钟由使用的通信波特率决定,本次试验设为19200. 所有的都设置好后,在主程序中需要不断地查询发送状态。 四、实验步骤 1、打开CCS4,把UART工程设为活动工程; 2、进入调试界面; 3、下载程序,点击运行; 4、打开串口调试助手,设置波特率为19200,无校验位,数据位为8,停止位为1,在发送字符数据处任意输入数字等字符,点击手动发送,然后会看到接收区会收到发送的字符,说明模拟串口调试成功。 五、实验结果及分析 《DSP技术与实验》实验报告

4 / 六、参考文献 孙水发,唐庭龙.CCS4与DSP程序设计[M].湖北:三峡大学计算机与信息学院,2013.10. 附件:程序及说明 #include #include #include #include #include #include //设置McBSP的PCR寄存器指针,用于读写其I/O端口 ioport unsigned int *PCR_1=(unsigned int *)0x2c12; #define REG_PCR1 (*PCR_1) /*锁相环的设置*/ PLL_Config myConfig = { 0, //IAI: the PLL locks using the same process that was underway //before the idle mode was entered 1, //IOB: If the PLL indicates a break in the phase lock, //it switches to its bypass mode and restarts the PLL phase-locking //sequence 《DSP技术与实验》实验报告 5 / 12, //PLL multiply value; multiply 12 times 0 //Divide by 1 PLL divide value; it can be either PLL divide value //(when PLL is enabled), or Bypass-mode divide value //(PLL in bypass mode, if PLL multiply value is set to 1) }; /****************************设置Timer********************************/ /* 参考: TMS320VC5509 DSP Timers Reference Guide TMS320C55x Chip Support Library API Reference Guide (Rev. J) HX-5509A 开发板使用手册 */ //---------Global data definition---------// #define TIMER_CTRL TIMER_TCR_RMK(\ TIMER_TCR_IDLEEN_DEFAULT, /* IDLEEN == 0 */ \ TIMER_TCR_FUNC_OF(0), /* FUNC == 0 */ \ TIMER_TCR_TLB_RESET, /* TLB 《DSP技术与实验》实验报告 6 / == 1 */ \ TIMER_TCR_SOFT_BRKPTNOW, /* SOFT == 0 */ \ TIMER_TCR_FREE_WITHSOFT, /* FREE == 0 */ \ TIMER_TCR_PWID_OF(0), /* PWID == 0 */ \ TIMER_TCR_ARB_RESET, /* ARB == 1 */ \ TIMER_TCR_TSS_START, /* TSS == 0 */ \ TIMER_TCR_CP_PULSE, /* CP == 0 */ \ TIMER_TCR_POLAR_LOW, /* POLAR == 0 */ \ TIMER_TCR_DATOUT_0 /* DATOUT == 0 */ \ ) /* Create a TIMER configuration structure that can be passed */ /* to TIMER_config CSL function for initialization of Timer */ /* control registers. 《DSP技术与实验》实验报告 7 / */ //产生1ms中断 TIMER_Config timCfg0 = { TIMER_CTRL, /* TCR0 */ 749, /* PRD0 */ 0x0000 /* PRSC */

}; /* Create a TIMER_Handle object for use with TIMER_open */ TIMER_Handle mhTimer0; Uint16 eventId0; Uint16 timer0_cnt = 0; int old_intm; Uint16 tim_val; //--------Function prototypes--------- /* Reference start of interrupt vector table */ /* This symbol is defined in file, vectors_timer1.s55 */ extern void VECSTART(void); /* Function/ISR prototypes */ interrupt void timer0Isr(void); /***********************************************************************/ 《DSP技术与实验》实验报告 8 / /**************************McBSP1设置成GPIO*****************************/ /* 参考: TMS320C55x DSP Multichannel Buffered Serial Port (McBSP) Reference Guide HX-5509A 开发板使用手册 TMS320C55x Chip Support Library API Reference Guide (Rev. J) */ MCBSP_Config Mcbsptest; MCBSP_Config Mcbsp1Config = { MCBSP_SPCR1_RMK( MCBSP_SPCR1_DLB_OFF, /* DLB = 0,禁止自闭环方式 */ MCBSP_SPCR1_RJUST_LZF, /* RJUST = 2 */ MCBSP_SPCR1_CLKSTP_DISABLE, /* CLKSTP = 0 */ MCBSP_SPCR1_DXENA_ON, /* DXENA = 1 */ 0, /* ABIS = 0 */ MCBSP_SPCR1_RINTM_RRDY, /* RINTM = 0 */ 0, /* RSYNCER = 0 */ MCBSP_SPCR1_RRST_DISABLE /* RRST = 0 */ ), MCBSP_SPCR2_RMK( MCBSP_SPCR2_FREE_NO, /* FREE = 0 */