12实验十二 语音录放实验

上传人:jin****ng 文档编号:184610615 上传时间:2023-02-02 格式:DOCX 页数:7 大小:95.90KB
返回 下载 相关 举报
12实验十二 语音录放实验_第1页
第1页 / 共7页
12实验十二 语音录放实验_第2页
第2页 / 共7页
12实验十二 语音录放实验_第3页
第3页 / 共7页
点击查看更多>>
资源描述
模块名称地址(I/O空间)硬件中断交通灯模块0x5008h数码管显示模块OxBOOOh键盘模块扫描入口地址0xA008hINT2步进电机模块0x1008h直流电机模块0xB007h触发开关(红色按纽)1 NT-KEYINT0串行通信模块DSP地址线A4A5A6INT116C550地址线A0A1A2液晶显示模块片选10x600xh写数据0x6009h读状态0x600ah写命令0x6008h液晶显示模块片选20x700xh写数据0x7009h读状态0x700ah写命令0x7008h实验十二 语音录、放实验实验目的:了解音频信号的采集、处理方法实验要求:把采集的音频信号存储,然后回放实验说明:通过AD50采集音频信号,数据存放在DRAM里,被触发某一事件后回放, 在存储语音信号过程中可以考虑采用语音压缩。程序框图:中断服务程序*1* *1* *1* *1* *1* *1* *1* *1* vt*、t* 1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1*、t*、t*、t*、t*、t*、t*、t*、t*、t*、t*、t*、t*、t*、t* *1* *1* *1* *1* *1* rT* rT* rT*r* rT* rT* rT* rT* rTx* FileName: ex12.asm * Description: 语音录放实验*1* *1* *1* *1* *1* *1* *1* *1* vt*、t*、t*、t* 1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1*、t*、t*、t*、t*、t*、t*、t*、t*、t*、t*、t*、t*、t*、t* *1* *1* *1* *1* *1* rT* rT* rT* PROG PAGE 0DATA PAGE 1STACK PAGE 15000系列DSP汇编语言:.title ex12BSP.set1:当前使用多通道能缓冲串口 1 ( McBsp1):McBsp内存映射寄存器SPSA0.set038h;多通道能缓冲串口 0 ( McBspO)的子地址寄存器,地址 ;设置为数据空间第0页的38单元,缓冲串口的其它控制、 ;状态寄存器的地址必须通过子地址寄存器中的内容作为地址 ;去寻址。SPSD0.set039h;多通道能缓冲串口 0 ( McBspO)的控制、状态命令字(数 ;据)发送寄存器,向多通道能缓冲串口中的控制、状态寄存 ;器发送命令字(数据)时,该命令字必须通过SPSDx寄存 ;器发送。DRR10.set021h;多通道能缓冲串口 0的数据接收寄存器1,地址设置为21hDRR20.set020h;多通道能缓冲串口 0的数据接收寄存器2,地址设置为20hDXR10.set023h;多通道能缓冲串口 0的数据发送寄存器1,地址设置为23hDXR20.set022h;多通道能缓冲串口 0的数据发送寄存器2,地址设置为22hSPSA1.set048h;多通道能缓冲串口 1( McBspl)的子地址寄存器地址48hSPSD1.set049h;多通道能缓冲串口 1( McBsp1)的控制、状态命令字(数 ;据)发送寄存器,地址为 49hDRR11.set041h;多通道能缓冲串口 1的数据接收寄存器1,地址设置为41hDRR21.set040h;多通道能缓冲串口 1的数据接收寄存器2,地址设置为40hDXR11.set043h;多通道能缓冲串口 1的数据发送寄存器1,地址设置为43hDXR21.set042h;多通道能缓冲串口 1的数据发送寄存器2,地址设置为42h:McBsp Subaddressed Registers 以下为多通道能缓冲串口子地址映射寄存器(控制、状态) 的配置。SPCR1.set00h;多通道能缓冲串口控制寄存器1,子地址为00hSPCR2.set01h;多通道能缓冲串口控制寄存器2,子地址为01hRCR1.set02h;多通道能缓冲串口接收控制寄存器1,子地址为02hRCR2.set03h;多通道能缓冲串口接收控制寄存器2,子地址为03hXCR1.set04h;多通道能缓冲串口发送控制寄存器1,子地址为04hXCR2.set05h;多通道能缓冲串口发送控制寄存器2,子地址为05hSRGR1.set06h;采样率发生寄存器 1,子地址为 06hSRGR2.set07h;采样率发生寄存器 2,子地址为 07hMCR1.set08h;多通道寄存器1,子地址为08hVECS PAGE 0.vectors:MCR2.set 09h;多通道寄存器2,子地址为09hRCERA.set 0ah;接收通道使能寄存器A,子地址为0ahRCERB.set 0bh;接收通道使能寄存器B,子地址为0bhXCERA.set 0eh;发送通道使能寄存器A,子地址为0ehXCERB.set 0dh;发送通道使能寄存器B,子地址为0dhPCR.set 0eh;引脚控制寄存器,子地址为 0eh.if BSP = 0;以下两个if块用来设置是使用多通道缓冲串口 0还是使用多通;道缓冲串口 1, C5402有两个多通道缓冲串口(McBSP0和; MeBSP1) .SPSA.setSPSA0;如果使用多通道串口 0,则子地址寄存器用SPSA0SPSD.setSPSD0;命令字收发寄存器使用 SPSD0RDRR.setDRR10;数据接收寄存器使用 DRR10RDXR.setDXR10;数据发送寄存器使用 DXR10SPSA.setSPSA1;如果使用多通道串口 1,则子地址寄存器用SPSA1SPSD.setSPSD1;命令字收发寄存器使用 SPSD1RDRR.setDRR11;数据接收寄存器使用 DRR11RDXR.setDXR11;数据发送寄存器使用DXR11.endif.endif.if BSP = 1WR_SUB_REG.macro val,addr stm addr,SPSAnopstm val,SPSDnop.endmRD_SUB_REG.macro addr,acc stm #:addr:,SPSAnopldm SPSD,accWAITTRXnop nop nop .endm .macro;写 McBsp 控制寄存器的宏定义;对 McBSP 的控制寄存器进行写时必须 ;先将要写的寄存器的地址装入子地址寄存器 ;再将要写的数据装入命令字收发寄存器 ;这样即可完成控制或状态寄存器的写操作;读 McBsp 控制寄存器宏定义;对 McBSP 的状态寄存器进行读时必须 ;先将要读的寄存器的地址装入子地址寄存器 ;再将命令字收发寄存器中的内容装入累加器 ;这样累加器中的内容即为所要读的状态寄存器的值;等待串口中断宏定义WAITR?RD_SUB_REG SPCR1,A;读出多通道缓冲串口控制寄存器SPCR1中的值and #11, A;判断SPCR1中的第1位(倒数第2位)RRDY是否;为1,即数据接收是否准备好RRDY=1为接收准备好。 be WAITR?, AEQ ;若接收未准备好RRDY=O,则继续等待,否则返回宏;调用处往下执行。.endmPROGREG .maero progword;与AD50二次通讯的宏定义;二次通信是对通信终端设备的状态、控制寄存器进行读写waitRESETBRINT0BXINT0BRINT1BXINT1_c_int00stm #01h,RDXR ;设置求二次通信,因DA输入数据格式为15位,最低位; LSB 用来设置二次通信请求, LSB=1 为请求二次通信WAITTRX;判断二次通信申请是否成功stm #:progword:,RDXR ;向AD50写二次通信的数据,实现控制寄存器;的配置WAITTRX;等待到控制数据写成功后再返回。.endm.macro;设置等待时间(延时9个NOP时间)STM #0008h, AR0RPT *AR0NOP.endm.mmregs.global _c_int00.sect .vectorsbd _c_int00 ;将 2000h 装载 SP 后转系统位服务程序stm #2000h,SP.space 19*4*16b recv;设置缓冲串口接收中断0 (20号中断)nopnopb trans;设置缓冲串口发送中断 0 (21 号中断)nopnop.space 4*4*16b recv;设置缓冲串口接收中断1 (26 号中断)nopnopb trans;设置缓冲串口发送中断1 (27 号中断)nopnop.space 4*4*16.textld #0h,DP stm #2000h,SP ssbx INTM ssbx SXM;数据页指针0页;堆栈指针为 2000h ;关闭所有可屏蔽中断;允许符号位扩展st #2491h,SWWSR ; DSP在访问外部存储空间和I/O空间时等待2个机器周期 st #0ffe0h,PMST ;中断向量指针设置为FF80h, DSP工作于微处理器模式,;程序空间使用片上的DARAM,DSP访问内部空间时地址;位可见,数据空间使用4k的片外ROM,关闭DSP的输出;时钟。st #0f007h,CLKMD ; DSP的PLL时钟采用4分频方式 stm #4000h,AR1;初始化McBsp串口;CPL=1采用SP寻址方式stm #4000h,AR2mcbsp_initrsbx CPL nopnopld #0, DPssbx INTMssbx SXMnop;数据页指针 0 页 ;关闭所有可屏蔽中断 ;允许符号位扩展WR_SUB_REG #0000H,SPCR1WR_SUB_REG #0200H,SPCR2WR_SUB_REG #000CH,PCRWR_SUB_REG #0000H,SPCR1WR_SUB_REG #0000H,SPCR2WR_SUB_REG #0040H,RCR1WR_SUB_REG #0004H,RCR2WR_SUB_REG #0040H,XCR1WR_SUB_REG #0004H,XCR2;串口接收器复位;串口发送器复位,并使串口全速运行;配置成标准串口 (SPI)方式,帧同步各收发时 ;钟由外部时钟(AD50的帧同步和收发时钟) ;提供,发送和接收帧同步脉冲在上升沿触发, ;发送数据在CLKX的上升沿采样,接收数据在 ; CLKR 的下降沿采样 ;串口接收器复位 ;串口发送器复位;接收帧为每帧 1 个字,字长为 16 位 ;从第一个帧同步后接收帧忽略,连续模式 ;发送帧为每帧 1 个字,字长为 16 位 ;从第一个帧同步发出后发送帧忽略,连续模式ld 100,A waitandm #0ff3fh, 54h;set interrupts to come from serial ports not DMA;by clearing bits 6 and 7 in DMPRECstm #0,RDXRWR_SUB_REG #OOO1H,SPCR1;启动 McBsp 串口WR_SUB_REG #0201H,SPCR2ld 100,Awaitaic_initstm #0h,IMRorm #0c00h,IMRstm #0ffffh,IFRPROGREG 0000001100000001b;二次通讯初始化 AD50;向AD50的控制寄存器3中写入00000001b,延迟1个SCLK PROGREG 0000010000010000b;向 AD50 的控制寄存器 4 中写入 00010000b, SCLK=MCLK/(128*1);AD50控制寄存器1采用默认值000000b,控制寄存器2采用默认值000000b, ;AD50的工作状态为:模拟输入端为INP和INM,无增益,无数字回送,;无软件复位,AD转换的输出为15位数据;DA转换的输入为15bit;的数据,无模拟回送,延迟1个 SCLK ,SCLK=MCLK/(128*1) ld RDRR , A ld RDRR , A stlm A , RDXR stlm A , RDXRrsbx INTM ;开中断nop nop nopjs nop;等待中断请求;读取 ADC 采样数据;判断录音是否结束;未结束-录音;已结束-放音;录制数据放完,再从头放起;加载录制数据nop nopb jsrecv ldm RDRR , Ald #0d000h , b sub ar1 , b bc record , beq stl a , *ar1+ b play record ld #0d000h,bsub ar2,bbc load,bneqstm #4000h,ar2 load ld *ar2+,a play and #0fffeh,astlm A,RDXRretetrans rsbx XFrete.end
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 建筑环境 > 机械电气


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!