DSP硬件实验报告_第1页
DSP硬件实验报告_第2页
DSP硬件实验报告_第3页
DSP硬件实验报告_第4页
DSP硬件实验报告_第5页
已阅读5页,还剩20页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

Exp1 File Name exp01 asm the program is compiled at no autoinitialization mode mmregs global main main stm 3000h sp 为 sp 堆栈指针寄存器赋予初值 ssbx xf 重新置位为 xf 灯 call delay 调用延迟函数 rsbx xf 重置 call delay 调用延迟函数 b main nop nop delay 5 second延迟函数 delay stm 270fh ar3 指定 ar3 寄存器地址 loop1 stm 0f9h ar4 指定矮人寄存器地址 loop2 banz loop2 ar4 条件转移 每次转移 ar4 地址减一 banz loop1 ar3 条件转移 每次转移 ar3 地址减一 ret nop nop stm 2 cycles banzwhen TRUE 4 cycles FALSE 2 cycles 0f9h 249d 270fh 9999d end EXP2 File Name exp02 asm get some knowledge of the cmd file the program is compiled at no autoinitialization mode mmregs global main main store data stm 1000h ar1 address of internal memory 指定内部寄存器 ar1 的地址为 1000h stm 5000h ar1 address of exterior memory 指定外部寄存器 ar1 的地址为 5000h rpt 07h 循环执行下一条指令 循环次数 07h st0aaaah ar1 将 ar1 所指的内存赋予 0aaaah 然后 ar1 所指地址加 1 read data then re store stm 7h ar3 指定 ar3 地址 7h stm 5000h ar1 address of exterior memory 指定外部存储地址为 5000h stm 5008h ar2 address of exterior memory 指定外部存储地址为 5008h stm1000h ar1 寻址找到要读取的数据地址 1000h 1008h stm 1008h ar2 loop ld ar1 t 循环读取 1000h 1008h stt ar2 赋予 5000h 5008h banzloop ar3 here b here end EXP3 File Name exp03 asm learn how to operate the I O ports get some knowledge of the rts lib file in the I O space 0 x0000 8 switches 0 x0001 8 LEDs mmregs global main text main stm3100h sp 将 3100h 赋予 sp stm1000h ar1 define the address portr00h ar1 将 0 x0000 的值赋予 ar1 即 8 个开关状态 nop nop portw ar1 01h 将 ar1 的值赋予 0 x0001 的值 即 8 个 led 的状态 nop nop b main nop nop end EXP4 include interrupt void timer extern void time extern void initial extern void porta extern void portb int flag 0 interrupt void timer 定时器中断函数 int 0 x300 int 0 x300 1 定时不断加 1 if int 0 x300 0 x3e8 当定时器数值达到 0 x3e8 开始定时器中断 int 0 x300 0 为定时器重新赋予初值 int 0 x302 int 0 x302 1 if flag 0 如果 flag 为 0 则将其变为 1 执行 porta flag 1 porta else 如果 flag 为 1 则将其变为 1 执行 portb flag 0 portb return main 主函数 initial 初始化 while 1 无限循环 INITIAL ASM mmregs global initial initial stm 300h ar1 initial 300h data address st 00h ar1 为内存 300h 的内容赋予 00h stm 302h ar1 initial 302h data address st 00h ar1 为内存 302h 的内容赋予 00h stm200h ar1 st 5555h ar1 为内存 200h 的内容赋予 5555h 0101010101010101 stm201h ar1 st 0aaaah ar1 为内存 201h 的内容赋予 0aaaah 1010101010101010 stm202h ar1 st 400h ar1 为内存 202h 的内容赋予 400h 0000010000000000 ssbx 1 11 set ST1 INTM 1 stop all interrrupt 停止所有的中断 stm 0ffffh ifr clear all interrupt indicate 清除所有中断的标志位 中断标志寄存器 IFR 用来指明各个中断的目前状态 stm 00h imr set imr 0 stop all interrrupt 停止所有的中断 中断屏蔽寄存器 IMR 在需要的时候独立地屏蔽特定的中断 stm 410h tcr stop timer 停止定时器 stm 4e1fh prd set prd 4e1fh 设置定时器 定时器周期计数器 stm 420h tcr start timer 打开定时器 定时器控制寄存器 stm 08h imr allow timer interrupt 允许定时器中断 rsbx 1 11 set ST1 INTM 0 start all interrrupt 打开所有中断 ret PORT ASM mmregs global porta global portb porta stm304h ar1 st5555h ar1 将内存 304h 的内容赋予 5555h 0101010101010101 portw ar1 01h 将内存 304h 的值写入 01h 端口 ret portb stm304h ar1 st0aaaah ar1 将内存 304h 的内容赋予 0aaaah 1010101010101010 portw ar1 01h 将内存 304h 的值写入 01 端口 ret VECTOR ASM 中断向量函数 sect vectors ref c int00 C entry point ref timer time interrupt point align 0 x80 must be aligned on page boundary RESET reset vector BD c int00 branch to C entry point STM 200 SP stack size of 200 nmi RETE enable interrupts and return from one NOP NOP NOP NMI software interrupts sint17 space 4 16 sint18 space 4 16 中断向量表 sint19 space 4 16 sint20 space 4 16 sint21 space 4 16 sint22 space 4 16 sint23 space 4 16 sint24 space 4 16 sint25 space 4 16 sint26 space 4 16 sint27 space 4 16 sint28 space 4 16 sint29 space 4 16 sint30 space 4 16 int0 RETE NOP NOP NOP int1 RETE NOP NOP NOP int2 RETE NOP NOP NOP tint b timer 启动定时器中断 NOP NOP rint0 RETE NOP NOP NOP xint0 RETE NOP NOP NOP rint1 RETE NOP NOP NOP xint1 RETE NOP NOP NOP int3 RETE NOP NOP NOP end EXP5 interrupt void int2c extern void initial extern voidporta extern void portb int flag 0 main initial 初始化 while 1 无限循环 interrupt void int2c 外部中断函数 asm nop 不采取任何函数 int 0 x300 int 0 x300 2 break here to show if interrupt happened 这是一 个记录外部中断的标志 通过记录 0 x300h 中的值来记录 if flag 0 flag 1 如果 flag 为 0 则将其变为 1 执行 porta porta else flag 0 如果 flag 为 1 则将其变为 1 执行 portb portb INITIAL ASM mmregs global initial text initial stm 300h ar3 initial data 300h st 00h ar3 为内存 300h 赋予 00h stm 302h ar4 st 00h ar4 为内存 302h 赋予 00h ssbx 1 11 set st1 intm 1 stop all interrupt 启动 st1 停止所有中断 stm 00h imr stop all interrupt 为 imr 寄存器赋予 00h 停止所有中断 stm 0ffffh ifr clear all interrupt sign 为 ifr 寄存器赋予 0ffffh 清除所有中断 stm 04h imr allow int2 interrupt 开启 int2 的外部中断 rsbx 1 11 allow all interrupt 打开所有中断总开关 ret end PORT ASM 端口函数 mmregs global porta global portb porta stm304h ar1 st5555h ar1 为内存 304h 赋予 5555h 0101010101010101 portw ar1 01h 将 5555h 赋予端口 01h ret portb stm304h ar1 st0aaaah ar1 为内存 304h 赋予 0aaaah 1010101010101010 portw ar1 01h 将 aaaah 赋予端口 01h ret VECTOR ASM 中断向量表 sect vectors ref c int00 C entry point ref int2c align 0 x80 must be aligned on page boundary RESET reset vector BD c int00 branch to C entry point STM 200 SP stack size of 200 nmi RETE enable interrupts and return from one NOP NOP NOP NMI software interrupts sint17 space 4 16 sint18 space 4 16 sint19 space 4 16 中断向量表 sint20 space 4 16 sint21 space 4 16 sint22 space 4 16 sint23 space 4 16 sint24 space 4 16 sint25 space 4 16 sint26 space 4 16 sint27 space 4 16 sint28 space 4 16 sint29 space 4 16 sint30 space 4 16 int0 RETE NOP NOP NOP int1 RETE NOP NOP NOP int2 启动 int2 外部中断 b int2c NOP NOP tint RETE NOP NOP NOP rint0 RETE NOP NOP NOP xint0 RETE NOP NOP NOP rint1 RETE NOP NOP NOP xint1 RETE NOP NOP NOP int3 RETE NOP NOP NOP EXP6 AD 采样实验 extern void InitC5402 void extern void OpenMcBSP void extern void CloseMcBSP void extern void READAD50 void Main Function Program void main void 主函数 InitC5402 initialize C5402 DSP 初始化 c5402 OpenMcBSP 打开 McBSP while 1 无限循环 READAD50 main loop 采样读取函数 End of File exp06 c global InitC5402 global OpenMcBSP global CloseMcBSP global READAD50 global WRITEAD50 include MMRegs h InitC5402 NOP LD 0 DP reset data page pointe STM 0 CLKMD software setting of DSP clock 软件设置 DSP 时钟 STM 0 CLKMD to divider mode before setting STM 0 x4007 CLKMD set C5402 DSP clock to 40MHz STM 0 x4007 CLKMD set C5402 DSP clock to 100MHz 设置时钟频率 based on DSK crystal at 20MHz Configure C5402 System Registers STM 0 x2000 SWWSR 2 wait cycle for IO space 0 wait cycle for data set wait states for bank switch 64k mem bank extra 0 cycle between bscr 外部总线块转换控制寄存器 consecutive prog data read STM 0 x1800 ST0 ST0 at default setting 设置状态寄存器 ST0 ST1 STM 0 x2900 ST1 ST1 at default setting note INTX 1 STM 0 x00A0 PMST MC mode stop on chip timer0 设置 timer0 为主要的时钟寄存器 STM 0 x0010 TCR1 stop on chip timer1 Timer0 is used as main loop timer STM 2499 PRD timer0 rate CPUCLK 1 PRD 1 定时器周期计数器 40M 2500 16KHz STM 6249 PRD if CPU at 100M 6250 16KHz Initialize McBSP2 Registers STM SPCR1 McBSP2 SPSA register subaddr of SPCR1 串口控制寄存器 1 置位 0000h STM 0000h McBSP2 SPSD McBSP2 recv left justify RINT generated by frame sync STM SPCR2 McBSP2 SPSA register subaddr for SPCR2 串口控制寄存器 2 置位 0000h XINT generated by frame sync STM 0000h McBSP2 SPSD McBSP2 Tx FREE clock stops to run after SW breakpoint STM RCR1 McBSP2 SPSA register subaddr of RCR1 接收控制寄存器 1 置位 0040h STM 0040h McBSP2 SPSD recv frame1 Dlength 16 bits STM RCR2 McBSP2 SPSA register subaddr of RCR2 接收控制寄存器 2 置位 0040h STM 0040h McBSP2 SPSD recv Phase 1 ret frame2 Dlength 16bits STM XCR1 McBSP2 SPSA register subaddr of XCR1 发送控制寄存器 1 置位 0040h STM 0040h McBSP2 SPSD set the same as recv STM XCR2 McBSP2 SPSA register subaddr of XCR2 发送控制寄存器 2 置位 0040h STM 0040h McBSP2 SPSD set the same as recv STM PCR McBSP2 SPSA register subaddress of PCR 引脚控制寄存器置位 000eh STM 000eh McBSP2 SPSD clk and frame from external slave FS at pulse mode 00 Finish DSP Initialization 完成初始化 dsp STM 0 x0000 IMR disable peripheral interrupts 禁止外部中断 STM 0 xFFFF IFR clear the intrupts flags 重置中断标志位 RET return to main 返回主函数 NOP NOP Waiting for McBSP0 RX Finished 等待 mcbsp0 接收采样数据完成 IfRxRDY1 NOP STM SPCR1 McBSP2 SPSA enable McBSP2 Rx 使能 MCBSP2 的接收 LDM McBSP2 SPSD A AND 0002h A mask RRDY bit 标明 RRDY 的接收器的准备状态 复位 BC IfRxRDY1 AEQ keep checking 如果 RRDY 为 1 接收器准备就绪 可以采 样接收数据 NOP NOP RET return NOP NOP Waiting for McBSP0 TX Finished 等待 MCDSP0 的 TX 完成 IfTxRDY1 NOP STM SPCR2 McBSP2 SPSA enable McBSP2 Tx 使能 MCBSP2 的发送 LDM McBSP2 SPSD A AND 0002h A mask TRDY bit 标明 TXDY 发送器的准备状态 BC IfTxRDY1 AEQ keep checking 如果 TXDY 为 1 发送器准备就绪 可以发 送 NOP NOP RET return NOP NOP OpenMcBSP rsbx xf 状态寄存器重置 call wait 转移到 wait NOP STM SPCR1 McBSP2 SPSA enable McBSP0 RX for ADC data in 使 McBSP0 RX 接收 AD 采样数据 LDM McBSP2 SPSD A OR 0 x0001 A 接收控制寄存器 准备就绪 STLM A McBSP2 SPSD STM SPCR2 McBSP2 SPSA enable McBSP0 TX for DTMF out 允许 McBSP0 发 送 DTMF 到 pc LDM McBSP2 SPSD A OR 0 x0001 A 发送控制寄存器 准备就绪 STLM A McBSP2 SPSD LD 0h DP load data page 0 rpt 23 循环下一条指令 23 次 NOP ssbx xf 状态寄存器置位 NOP NOP CALL IfTxRDY1 STM 0 x0101 McBSP2 DXR1 CALL IfTxRDY1 STM 0 x0208 McBSP2 DXR1 rsbx xf NOP NOP CALL IfTxRDY1 转移到 IfTxRDY1 STM 0 x0001 McBSP2 DXR1 request secondary communication 要求第二次通信 NOP CALL IfTxRDY1 STM 0100h McBSP2 DXR1 write 00h to register 1 将 00h 写入 mcbsp2 的寄存器 1 CALL IfTxRDY1 发送数据 STM 0000h McBSP2 DXR1 重置寄存器的数值 NOP NOP rpt 20h nop CALL IfTxRDY1 STM 0 x0001 McBSP2 DXR1 request secondary communication CALL IfTxRDY1 STM 0200h McBSP2 DXR1 write 00h to register 2 将 00h 写入寄存器 2 CALL IfTxRDY1 STM 0000h McBSP2 DXR1 重置寄存器的数值 CALL IfTxRDY1 STM 0 x0001 McBSP2 DXR1 request secondary communication CALL IfTxRDY1 STM 0300h McBSP2 DXR1 write 00h to register 3 将 00h 写入寄存器 3 CALL IfTxRDY1 STM 0000h McBSP2 DXR1 重置寄存器的数值 CALL IfTxRDY1 STM 0 x0001 McBSP2 DXR1 request secondary communication CALL IfTxRDY1 STM 0490h McBSP2 DXR1 write 00h to register 4 将 00h 写入寄存器 4 决定采样 频率 bypass internal DPLL and select the Sample Frequency CALL IfTxRDY1 STM 0000h McBSP2 DXR1 CALL IfTxRDY1 STM 0 x0001 McBSP2 DXR1 CALL IfTxRDY1 STM 0102h McBSP2 DXR1 enable digital loopback CALL IfTxRDY1 STM 0 x0001 McBSP2 DXR1 CALL IfTxRDY1 STM 0208h McBSP2 DXR1 enable analog loopback RET NOP NOP CloseMcBSP STM SPCR1 McBSP2 SPSA disable McBSP0 RX LDM McBSP2 SPSD A 把存储器映射寄存器值装入到累加器中 AND 0 xFFFE A STLM A McBSP2 SPSD 把累加器的低端存放到存储器中 即把 mcbsp2 SPSD 置 为 00000001 STM SPCR2 McBSP2 SPSA disable McBSP0 TX LDM McBSP2 SPSD A AND 0 xFFFE A STLM A McBSP2 SPSD RPT 5 循环执行下一条语句 循环次数为 5 次 RET NOP 不做任何操作 NOP READAD50 AD 采样数据 stm0 x00ff ar3 指定循环次数 即采样数据的长度 所存放的地址 stm0 x1000 ar2 指定所采样数据的存放地址 loopa CALL IfRxRDY1 ldm McBSP2 DRR1 b 将采样数据赋予 b stl b ar2 将 b 传送到 ar 中 ar 地址加一 banz loopa ar3 循环直到采样结束 nop nop ret nop nop WRITEAD50 写入数据 stm0 x037b ar3 指定循环次数 即采样数据的长度 所存放的地址 stm0 x38a3 ar2 指定所采样数据的存放地址 loopb CALL IfTxRDY1 判断是否可以与 pc 通信 ldu ar2 B 把 B 存储到累加器中 ar2 地址自动加 1 and 0fffeh b mask the LSB stlm B McBSP2 DXR1 把 B 存入存储器映射寄存器中 banzloopb ar3 ar3 中的地址 每循环一次减 1 不为 0 时 的转移到 loopb nop nop ret nop nop wait 等待延迟函数 stm 20h ar3 loop1 stm 020h ar4 loop2 banz loop2 ar4 banz loop1 ar3 ret nop nop nop nop end End of File InitC5402 asm EXP7 you must load the data file wave dat before your running the program extern void InitC5402 void extern void OpenMcBSP void extern void CloseMcBSP void extern void WRITEAD50 void Main Function Program void main void InitC5402 initialize C5402 DSP 初始化 C5402 OpenMcBSP 打开 McBSP while 1 无限循环 WRITEAD50 main loop DA 转换过程函数 End of File exp07 c global InitC5402 global OpenMcBSP global CloseMcBSP global READAD50 global WRITEAD50 include MMRegs h InitC5402 NOP LD 0 DP reset data page pointe STM 0 CLKMD software setting of DSP clock 软件设置 DSP 时钟 STM 0 CLKMD to divider mode before setting STM 0 x4007 CLKMD set C5402 DSP clock to 40MHz STM 0 x4007 CLKMD set C5402 DSP clock to 100MHz 设置时钟频率 based on DSK crystal at 20MHz Configure C5402 System Registers STM 0 x2000 SWWSR 2 wait cycle for IO space 0 wait cycle for data set wait states for bank switch 64k mem bank extra 0 cycle between bscr 外部总线块转换控制寄存器 consecutive prog data read STM 0 x1800 ST0 ST0 at default setting 设置状态寄存器 ST0 ST1 STM 0 x2900 ST1 ST1 at default setting note INTX 1 STM 0 x00A0 PMST MC mode stop on chip timer0 设置 timer0 为主要的时钟寄存器 STM 0 x0010 TCR1 stop on chip timer1 Timer0 is used as main loop timer STM 2499 PRD timer0 rate CPUCLK 1 PRD 1 定时器周期计数器 40M 2500 16KHz STM 6249 PRD if CPU at 100M 6250 16KHz Initialize McBSP2 Registers STM SPCR1 McBSP2 SPSA register subaddr of SPCR1 串口控制寄存器 1 置位 0000h STM 0000h McBSP2 SPSD McBSP2 recv left justify RINT generated by frame sync STM SPCR2 McBSP2 SPSA register subaddr for SPCR2 串口控制寄存器 2 置位 0000h XINT generated by frame sync STM 0000h McBSP2 SPSD McBSP2 Tx FREE clock stops to run after SW breakpoint STM RCR1 McBSP2 SPSA register subaddr of RCR1 接收控制寄存器 1 置位 0040h STM 0040h McBSP2 SPSD recv frame1 Dlength 16 bits STM RCR2 McBSP2 SPSA register subaddr of RCR2 接收控制寄存器 2 置位 0040h STM 0040h McBSP2 SPSD recv Phase 1 ret frame2 Dlength 16bits STM XCR1 McBSP2 SPSA register subaddr of XCR1 发送控制寄存器 1 置位 0040h STM 0040h McBSP2 SPSD set the same as recv STM XCR2 McBSP2 SPSA register subaddr of XCR2 发送控制寄存器 2 置位 0040h STM 0040h McBSP2 SPSD set the same as recv STM PCR McBSP2 SPSA register subaddress of PCR 引脚控制寄存器置位 000eh STM 000eh McBSP2 SPSD clk and frame from external slave FS at pulse mode 00 Finish DSP Initialization 完成初始化 dsp STM 0 x0000 IMR disable peripheral interrupts 禁止外部中断 STM 0 xFFFF IFR clear the intrupts flags 重置中断标志位 RET return to main 返回主函数 NOP NOP Waiting for McBSP0 RX Finished 等待 mcbsp0 接收采样数据完成 IfRxRDY1 NOP STM SPCR1 McBSP2 SPSA enable McBSP2 Rx 使能 MCBSP2 的接收 LDM McBSP2 SPSD A AND 0002h A mask RRDY bit 标明 RRDY 的接收器的准备状态 复位 BC IfRxRDY1 AEQ keep checking 如果 RRDY 为 1 接收器准备就绪 可以采 样接收数据 NOP NOP RET return NOP NOP Waiting for McBSP0 TX Finished 等待 MCDSP0 的 TX 完成 IfTxRDY1 NOP STM SPCR2 McBSP2 SPSA enable McBSP2 Tx 使能 MCBSP2 的发送 LDM McBSP2 SPSD A AND 0002h A mask TRDY bit 标明 TXDY 发送器的准备状态 BC IfTxRDY1 AEQ keep checking 如果 TXDY 为 1 发送器准备就绪 可以发 送 NOP NOP RET return NOP NOP OpenMcBSP rsbx xf 状态寄存器重置 call wait 转移到 wait NOP STM SPCR1 McBSP2 SPSA enable McBSP0 RX for ADC data in 使 McBSP0 RX 接收 AD 采样数据 LDM McBSP2 SPSD A OR 0 x0001 A 接收控制寄存器 准备就绪 STLM A McBSP2 SPSD STM SPCR2 McBSP2 SPSA enable McBSP0 TX for DTMF out 允许 McBSP0 发 送 DTMF 到 pc LDM McBSP2 SPSD A OR 0 x0001 A 发送控制寄存器 准备就绪 STLM A McBSP2 SPSD LD 0h DP load data page 0 rpt 23 循环下一条指令 23 次 NOP ssbx xf 状态寄存器置位 NOP NOP CALL IfTxRDY1 STM 0 x0101 McBSP2 DXR1 CALL IfTxRDY1 STM 0 x0208 McBSP2 DXR1 rsbx xf NOP NOP CALL IfTxRDY1 转移到 IfTxRDY1 STM 0 x0001 McBSP2 DXR1 request secondary communication 要求第二次通信 NOP CALL IfTxRDY1 STM 0100h McBSP2 DXR1 write 00h to register 1 将 00h 写入 mcbsp2 的寄存器 1 CALL IfTxRDY1 发送数据 STM 0000h McBSP2 DXR1 重置寄存器的数值 NOP NOP rpt 20h nop CALL IfTxRDY1 STM 0 x0001 McBSP2 DXR1 request secondary communication CALL IfTxRDY1 STM 0200h McBSP2 DXR1 write 00h to

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论