完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
C5509A的DMA采用乒乓方式从MCBSP接收和发送数据,DMA设置为块中断,每次进入中断后,设置下一次的地址,最终的效果是,从AIC23的音频输入口输入声音信号,从输出口听到的声音不连续,感觉有停顿感。主要代码如下,麻烦请帮我看看是哪里的问题。
每次上电后先进DMA的发送中断,隔一个采样时钟周期(采用8KHz采样率,相隔125us)后进入DMA接收中断,接收中断中将程序状态转到信号处理函数Signal_Process();,其余时间都不调用信号处理函数,在信号处理函数中将接收到的数据分为左右通道,然后再将左右通道的数据组合后赋给发送数组。 MCBSP_Config Mcbsp1Config= [ MCBSP_SPCR1_RMK( MCBSP_SPCR1_DLB_OFF, /* DLB = 0,禁止自闭环方式 */ MCBSP_SPCR1_RJUST_LZF, /* RJUST = 2 left justify the data and zero fill LSBS */ MCBSP_SPCR1_CLKSTP_DISABLE, /* CLKSTP = 0 Clock stop mode disable */ MCBSP_SPCR1_DXENA_ON, /* DXENA = 1 DX delay enabler on */ MCBSP_SPCR1_ABIS_DISABLE, /* ABIS = 0 reserved always write 0*/ MCBSP_SPCR1_RINTM_RRDY, /* RINTM = 0 sends a receive INT request to CPU when the RRDY bit change from 0 to 1, indicating that receive data is ready to be read*/ 0, /* RSYNCER = 0 receive frame-sync error bit, no error*/ MCBSP_SPCR1_RRST_DISABLE /* RRST = 0 reset the receiver*/ ), MCBSP_SPCR2_RMK( MCBSP_SPCR2_FREE_NO, /* FREE = 0 free run bit, The McBSP transmit and receive clocks are affected as determined by the SOFT bit*/ MCBSP_SPCR2_SOFT_NO, /* SOFT = 0 Soft stop bit, Hard stop*/ MCBSP_SPCR2_FRST_FSG, /* FRST = 0 Frame-sync logic reset bit*/ MCBSP_SPCR2_GRST_CLKG, /* GRST = 0 Sample rate generator reset bit */ MCBSP_SPCR2_XINTM_XRDY, /* XINTM = 0 transmit interrupt mode bits XRDY bit changes from 0 to1 */ 0, /* XSYNCERR = N/A transmit frame-sync error bit, no error*/ MCBSP_SPCR2_XRST_DISABLE /* XRST = 0 transmit ready bit, not ready*/ //注意:开始一定要设置为disable,否则不能设置它的寄存器,全部为默认值,导致不能正常接收, //在程序调用C库函数mcbspstart时会在设为1,McBSP便退出reset状态开始工作 ), /*单数据相,接受数据长度为16位,每相2个数据*/ MCBSP_RCR1_RMK( MCBSP_RCR1_RFRLEN1_OF(1), /* RFRLEN1 = 1 Receive frame length 1 bits(1 to 128 words),Frame length=(RFRLEN1+1)words*/ MCBSP_RCR1_RWDLEN1_16BIT /* RWDLEN1 = 2 Receive word length 1 bits, 16bit*/ ), MCBSP_RCR2_RMK( MCBSP_RCR2_RPHASE_SINGLE, /* RPHASE = 0 Receive phase number bit, single-phase frame*/ MCBSP_RCR2_RFRLEN2_OF(0), /* RFRLEN2 = 0 */ MCBSP_RCR2_RWDLEN2_8BIT, /* RWDLEN2 = 0 */ MCBSP_RCR2_RCOMPAND_MSB, /* RCOMPAND = 0 receive companding mode bits, 0, no companding,MSB received first*/ MCBSP_RCR2_RFIG_YES, /* RFIG = 0 Receive frame-sync ignore bit, 1, frame-sync detect */ MCBSP_RCR2_RDATDLY_1BIT /* RDATDLY = 1 Receive data delay bits, 1-bit data delay*/ ), MCBSP_XCR1_RMK( MCBSP_XCR1_XFRLEN1_OF(1), /* XFRLEN1 = 1 Transmit frame length 1(1 to 128 words),Frame length=(XFRLEN1+1)words */ MCBSP_XCR1_XWDLEN1_16BIT /* XWDLEN1 = 2 Transmit word length 1.16bit*/ ), MCBSP_XCR2_RMK( MCBSP_XCR2_XPHASE_SINGLE, /* XPHASE = 0 Transmit phase number bit, single-phase frame*/ MCBSP_XCR2_XFRLEN2_OF(0), /* XFRLEN2 = 0 */ MCBSP_XCR2_XWDLEN2_8BIT, /* XWDLEN2 = 0 */ MCBSP_XCR2_XCOMPAND_MSB, /* XCOMPAND = 0 Transmit companding mode bits, 0, no companding,MSB received first*/ MCBSP_XCR2_XFIG_YES, /* XFIG = 0 Transmit frame-sync ignore bit, 1, frame-sync detect */ MCBSP_XCR2_XDATDLY_1BIT /* XDATDLY = 1 Transmit data delay bits, 1-bit data delay*/ ), MCBSP_SRGR1_DEFAULT, /*(0x0001u)FWID=0,CLKGDV=1 */ MCBSP_SRGR2_DEFAULT, /*(0x2000u)CLKSM=1,Sample rate generator input clock mode bit */ MCBSP_MCR1_DEFAULT, MCBSP_MCR2_DEFAULT, MCBSP_PCR_RMK( MCBSP_PCR_IDLEEN_RESET, /* IDLEEN = 0 The McBSP remains active when the PERIPH domain is idled */ MCBSP_PCR_XIOEN_SP, /* XIOEN = 0 Transmit I/O enable bit, CLKX,FSX,DX,CLKS pins are serial port pins*/ MCBSP_PCR_RIOEN_SP, /* RIOEN = 0 Receive I/O enable bit, CLKR,FSR,DR,CLKS pins are serial port pins*/ MCBSP_PCR_FSXM_EXTERNAL, /* FSXM = 0 Transmit frame-sync mode bit,0:transmit fram-sync is supplied by an external source via the FSX pin*/ MCBSP_PCR_FSRM_EXTERNAL, /* FSRM = 0 Receive frame-sync mode bit,0:transmit fram-sync is supplied by an external source via the FSR pin*/ 0, /* DXSTAT = N/A */ MCBSP_PCR_CLKXM_INPUT, /* CLKXM = 0 Transmit clock mode bit*/ MCBSP_PCR_CLKRM_INPUT, /* CLKRM = 0 Receive clock mode bit*/ MCBSP_PCR_SCLKME_NO, /* SCLKME = 0 Sample rate generator input clock mode bit,used with CLKSM to select the input clock*/ MCBSP_PCR_FSXP_ACTIVEHIGH, /* FSXP = 0 Transmit frame-sync polarity bit, 0,transmit frame-sync pulses are active high*/ MCBSP_PCR_FSRP_ACTIVEHIGH, /* FSRP = 1 Receive frame-sync polarity bit, 0,receive frame-sync pulses are active high*/ MCBSP_PCR_CLKXP_FALLING, /* CLKXP = 1 Transmit clock polarity bit,1,transmit data is driven on the rising edge of CLKX */ MCBSP_PCR_CLKRP_RISING /* CLKRP = 1 Receive clock polarity bit*/ ), MCBSP_RCERA_DEFAULT, MCBSP_RCERB_DEFAULT, MCBSP_RCERC_DEFAULT, MCBSP_RCERD_DEFAULT, MCBSP_RCERE_DEFAULT, MCBSP_RCERF_DEFAULT, MCBSP_RCERG_DEFAULT, MCBSP_RCERH_DEFAULT, MCBSP_XCERA_DEFAULT, MCBSP_XCERB_DEFAULT, MCBSP_XCERC_DEFAULT, MCBSP_XCERD_DEFAULT, MCBSP_XCERE_DEFAULT, MCBSP_XCERF_DEFAULT, MCBSP_XCERG_DEFAULT, MCBSP_XCERH_DEFAULT ]; /* Create DMA Receive Side Configuration */ DMA_Config dmaRcvConfig = [ DMA_DMACSDP_RMK( DMA_DMACSDP_DSTBEN_NOBURST, //Destination burst :-不使用突发 DMA_DMACSDP_DSTPACK_OFF, //Destination packing :-目标口禁止打包 DMA_DMACSDP_DST_DARAM, //Destination selection :-接收的目标口是DARAM DMA_DMACSDP_SRCBEN_NOBURST, //Source burst :-源突发禁止 DMA_DMACSDP_SRCPACK_OFF, //Source packing :-源口禁止打包 DMA_DMACSDP_SRC_PERIPH, //Source selection :-外设mcbsp DMA_DMACSDP_DATATYPE_16BIT //Data type :-设置数据类型16bit字长 ), /* DMACSDP 源与目标参数寄存器 */ DMA_DMACCR_RMK( DMA_DMACCR_DSTAMODE_POSTINC, //Destination address mode :-自动执行后增量(由于本程序中数据类型是16bit,所以+2) DMA_DMACCR_SRCAMODE_CONST, //Source address mode :-源地址为恒定地址 DMA_DMACCR_ENDPROG_ON, //End of programmation bit :- //DMA_DMACCR_REPEAT_ON, //Repeat condition :-不管编程配置结束位,结束传输自动初始化开始 DMA_DMACCR_REPEAT_OFF, DMA_DMACCR_AUTOINIT_ON, //Auto initialization bit :- DMA_DMACCR_EN_STOP, //Channel enable :-设置时先关闭通道 DMA_DMACCR_PRIO_LOW, //Channel priority :-设置为低优先级 DMA_DMACCR_FS_ELEMENT, //Frame/Element Sync :-单元事件同步 DMA_DMACCR_SYNC_REVT1 //Synchronization control :-McBSP1 Receive Event(REVT1) ), /* DMACCR 通道控制寄存器 */ DMA_DMACICR_RMK( DMA_DMACICR_BLOCKIE_ON, //Whole block interrupt enable :-块传输完成后中断使能 DMA_DMACICR_LASTIE_OFF, //Last frame interrupt enable :- DMA_DMACICR_FRAMEIE_OFF, //Whole frame interrupt enable :- DMA_DMACICR_FIRSTHALFIE_OFF, //Half frame interrupt enable :- DMA_DMACICR_DROPIE_OFF, //Sync. event drop interrupt enable :- DMA_DMACICR_TIMEOUTIE_OFF //Time out interrupt enable :- ), /* DMACICR 中断控制寄存器 */ (DMA_AdrPtr)(MCBSP_ADDR(DRR11)), /* DMACSSAL 源地址低位 */ 0, /* DMACSSAU 源地址高位*/ (DMA_AdrPtr)&pingrcv, /* DMACDSAL 目的地址低位*/ 0, /* DMACDSAU 目的地址高位*/ 2, /* DMACEN 1 帧内数据长度 16*2 两个数据一个帧*/ N/2, /* DMACFN 帧数大小 */ 0, /* DMACFI */ 0 /* DMACEI */ ]; /* Create DMA Transmit Side Configuration */ DMA_Config dmaXmtConfig = [ DMA_DMACSDP_RMK( DMA_DMACSDP_DSTBEN_NOBURST, //Destination burst :-不使用突发 DMA_DMACSDP_DSTPACK_OFF, //Destination packing :-目标口禁止打包 DMA_DMACSDP_DST_PERIPH, //Destination selection :-接收的目标口是外设mcbsp DMA_DMACSDP_SRCBEN_NOBURST, //Source burst :-源突发禁止 DMA_DMACSDP_SRCPACK_OFF, //Source packing :-源口禁止打包 DMA_DMACSDP_SRC_DARAM, //Source selection :源口为DARAM DMA_DMACSDP_DATATYPE_16BIT //Data type :-设置数据类型16bit字长 ), /* DMACSDP 源与目标参数寄存器 */ DMA_DMACCR_RMK( DMA_DMACCR_DSTAMODE_CONST, //Destination address mode :-目标口地址为恒定地址 DMA_DMACCR_SRCAMODE_POSTINC, //Source address mode :-自动执行后增量(由于本程序中数据类型是16bit,所以+2) DMA_DMACCR_ENDPROG_ON, //End of programmation bit :- //DMA_DMACCR_REPEAT_ON, //Repeat condition :-不管编程配置结束位,结束传输自动初始化开始 DMA_DMACCR_REPEAT_OFF, DMA_DMACCR_AUTOINIT_ON, //Auto initialization bit :- DMA_DMACCR_EN_STOP, //Channel enable :-设置时先关闭通道 DMA_DMACCR_PRIO_LOW, //Channel priority :-设置为低优先级 DMA_DMACCR_FS_ELEMENT, //Frame/Element Sync :-单元事件同步 DMA_DMACCR_SYNC_XEVT1 //Synchronization control :-McBSP1 Transmit Event(XEVT1) ), /* DMACCR 通道控制寄存器 */ DMA_DMACICR_RMK( DMA_DMACICR_BLOCKIE_ON, //Whole block interrupt enable :-块传输完成后中断使能 DMA_DMACICR_LASTIE_OFF, //Last frame interrupt enable :- DMA_DMACICR_FRAMEIE_OFF, //Whole frame interrupt enable :- DMA_DMACICR_FIRSTHALFIE_OFF, //Half frame interrupt enable :- DMA_DMACICR_DROPIE_OFF, //Sync. event drop interrupt enable :- DMA_DMACICR_TIMEOUTIE_OFF //Time out interrupt enable :- ), /* DMACICR 中断控制寄存器 */ (DMA_AdrPtr)&pingxmt[0], /* DMACSSAL 源地址低位*/ 0, /* DMACSSAU 源地址高位 */ (DMA_AdrPtr)(MCBSP_ADDR(DXR11)), /* DMACDSAL 目的地址低位*/ 0, /* DMACDSAU 目的地址高位*/ 2, /* DMACEN 1 帧内数据长度 16*2 两个数据一个帧*/ N/2, /* DMACFN 帧数大小 */ 0, /* DMACFI */ 0 /* DMACEI */ ]; void AIC23_DataTransfer_Init() [ Uint16 i; Uint16 srcAddrHi, srcAddrLo; Uint16 dstAddrHi, dstAddrLo; for(i=0;i pingrcv = 0; pongrcv = 0; pingxmt = 0; pongxmt = 0; ] /* By default, the TMS320C55xx compiler assigns all data symbols word */ /* addresses. The DMA however, expects all addresses to be byte */ /* addresses. Therefore, we must shift the address by 2 in order to */ /* change the word address to a byte address for the DMA transfer. */ srcAddrHi = (Uint16)(((Uint32)(MCBSP_ADDR(DRR11))) >> 15) & 0xFFFFu; srcAddrLo = (Uint16)(((Uint32)(MCBSP_ADDR(DRR11))) << 1) & 0xFFFFu; dstAddrHi = (Uint16)(((Uint32)(&pingrcv)) >> 15) & 0xFFFFu; dstAddrLo = (Uint16)(((Uint32)(&pingrcv)) << 1) & 0xFFFFu; dmaRcvConfig.dmacssal = (DMA_AdrPtr)srcAddrLo; dmaRcvConfig.dmacssau = srcAddrHi; dmaRcvConfig.dmacdsal = (DMA_AdrPtr)dstAddrLo; dmaRcvConfig.dmacdsau = dstAddrHi; srcAddrHi = (Uint16)(((Uint32)(&pingxmt[0])) >> 15) & 0xFFFFu; srcAddrLo = (Uint16)(((Uint32)(&pingxmt[0])) << 1) & 0xFFFFu; dstAddrHi = (Uint16)(((Uint32)(MCBSP_ADDR(DXR11))) >> 15) & 0xFFFFu; dstAddrLo = (Uint16)(((Uint32)(MCBSP_ADDR(DXR11))) << 1) & 0xFFFFu; dmaXmtConfig.dmacssal = (DMA_AdrPtr)srcAddrLo; dmaXmtConfig.dmacssau = srcAddrHi; dmaXmtConfig.dmacdsal = (DMA_AdrPtr)dstAddrLo; dmaXmtConfig.dmacdsau = dstAddrHi; /* Open MCBSP Port 1 and set registers to their power on defaults */ hMcbsp = MCBSP_open(MCBSP_PORT1, MCBSP_OPEN_RESET); /* Open DMA channels 4 & 5 and set regs to power on defaults */ hDmaRcv = DMA_open(DMA_CHA4,DMA_OPEN_RESET); hDmaXmt = DMA_open(DMA_CHA5,DMA_OPEN_RESET); /* Get interrupt event associated with DMA receive and transmit */ xmtEventId = DMA_getEventId(hDmaXmt); rcvEventId = DMA_getEventId(hDmaRcv); /* Temporarily disable interrupts and clear any pending */ /* interrupts for MCBSP transmit */ // old_intm = IRQ_globalDisable(); /* Clear any pending interrupts for DMA channels */ IRQ_clear(xmtEventId); IRQ_clear(rcvEventId); /* Enable DMA interrupt in IER register */ IRQ_enable(xmtEventId); IRQ_enable(rcvEventId); /* Set Start Of Interrupt Vector Table */ // IRQ_setVecs(0x10000); /* Place DMA interrupt service addresses at associate vector */ IRQ_plug(xmtEventId,&dmaXmtIsr); IRQ_plug(rcvEventId,&dmaRcvIsr); /* Write values from configuration structure to MCBSP control regs */ MCBSP_config(hMcbsp, &Mcbsp1Config); /* Write values from configuration structure to DMA control regs */ DMA_config(hDmaRcv,&dmaRcvConfig); DMA_config(hDmaXmt,&dmaXmtConfig); xfreebuf = xpongbuf; rfreebuf = rpongbuf; /* Enable all maskable interrupts */ IRQ_globalEnable(); /* Start Sample Rate Generator and Enable Frame Sync */ MCBSP_start(hMcbsp, MCBSP_SRGR_START | MCBSP_SRGR_FRAMESYNC, 0x300u); /* Enable DMA */ DMA_start(hDmaRcv); DMA_start(hDmaXmt); /* Take MCBSP transmit and receive out of reset */ MCBSP_start(hMcbsp, MCBSP_XMIT_START | MCBSP_RCV_START, 0u); while(DMA_FGETH(hDmaRcv, DMACCR, ENDPROG)); dstAddrHi = (Uint16)(((Uint32)(&pongrcv)) >> 15) & 0xFFFFu; dstAddrLo = (Uint16)(((Uint32)(&pongrcv)) << 1) & 0xFFFFu; dmaRcvConfig.dmacdsal = (DMA_AdrPtr)dstAddrLo; dmaRcvConfig.dmacdsau = dstAddrHi; srcAddrHi = (Uint16)(((Uint32)(&pongxmt[0])) >> 15) & 0xFFFFu; srcAddrLo = (Uint16)(((Uint32)(&pongxmt[0])) << 1) & 0xFFFFu; dmaXmtConfig.dmacssal = (DMA_AdrPtr)srcAddrLo; dmaXmtConfig.dmacssau = srcAddrHi; DMA_FSETH(hDmaRcv, DMACCR, ENDPROG,1); DMA_FSETH(hDmaXmt, DMACCR, ENDPROG,1); ] interrupt void dmaXmtIsr(void) [ static int * ptr; unsigned int ptraddrhi, ptraddrlow; DMA_FSETH(hDmaXmt,DMACSR,BLOCK,0); if(xfreebuf == xpingbuf) [ xfreebuf = xpongbuf; ptr = pongxmt; ] else [ xfreebuf = xpingbuf; ptr = pingxmt; ] while(DMA_FGETH(hDmaXmt, DMACCR, ENDPROG)); //修改DMA地址 ptraddrhi = (unsigned int)(((unsigned long)(ptr)) >> 15) & 0xFFFFu; //因为DMA都使用字节地址,所以必须左移一位 ptraddrlow= (unsigned int)(((unsigned long)(ptr)) << 1) & 0xFFFFu; dmaXmtConfig.dmacssal = (DMA_AdrPtr)ptraddrlow; dmaXmtConfig.dmacssau = ptraddrhi; DMA_FSETH(hDmaXmt, DMACCR, ENDPROG,1); ] interrupt void dmaRcvIsr(void) [ static int * ptr; unsigned int ptraddrhi, ptraddrlow; DMA_FSETH(hDmaRcv,DMACSR,BLOCK,0); if(rfreebuf == rpingbuf) [ rfreebuf = rpongbuf; ptr = pongrcv; ] else [ rfreebuf = rpingbuf; ptr = pingrcv; ] while(DMA_FGETH(hDmaRcv, DMACCR, ENDPROG)); //修改DMA地址 ptraddrhi = (unsigned int)(((unsigned long)(ptr)) >> 15) & 0xFFFFu; //因为DMA都使用字节地址,所以必须左移一位 ptraddrlow= (unsigned int)(((unsigned long)(ptr)) << 1) & 0xFFFFu; dmaRcvConfig.dmacdsal = (DMA_AdrPtr)ptraddrlow; dmaRcvConfig.dmacdsau = ptraddrhi; DMA_FSETH(hDmaRcv, DMACCR, ENDPROG,1); State_Work = State_Signal_Process; ] void Signal_Process() [ Uint16 i,j=0; if(rfreebuf == rpongbuf)//(PingPong == PING) [ for(i=0;i Leftchannel_Buffer[j] = pongrcv; Rightchannel_Buffer[j] = pongrcv[i+1]; j++; ] ] else [ for(i=0;i Leftchannel_Buffer[j] = pingrcv; Rightchannel_Buffer[j] = pingrcv[i+1]; j++; ] ] j = 0; if(xfreebuf == xpongbuf) [ for(i=0;i pongxmt = Leftchannel_Buffer[j]; pongxmt[i+1] = Rightchannel_Buffer[j]; j++; ] ] else [ for(i=0;i pingxmt = Leftchannel_Buffer[j]; pingxmt[i+1] = Rightchannel_Buffer[j]; j++; ] ] ] |
|
相关推荐
15 个讨论
|
|
lan teng ,你好,我在DM642的板子上使用AIC23B和MCASP做音频信号的回响测试和FIR滤波时出现很大的杂声,你能不能帮忙看看是什么原因: 问题描述: 1、将采集进来的数据不经任何处理直接发送出去,声音很清晰,且无杂声; 2、当测试简单的回响时,将回响信号x和原始信号y进行一个简单的算法,比如a=(x+3*y)/4,再把a通过XBUF播放出去,这是出现了很大的杂声,但是当算法设定为a=x+3*y或者a=x+y时,有没有杂声出现,可以很清晰的听到回响的效果 3、当测试FIR低通滤波时,将采集的音频信号和一个已知的低通滤波器系数相乘后发出时,就出现了很大的杂声;但是当我把滤波系数扩大10000倍,变成整数后,杂声就变得小些了,但还是存在 因为回响和FIR滤波在C6713上测试时是没杂声的,在C6713上的数据类型均是使用的float,一开始我以为是数据类型不对,所以将数据类型也修改为float,问题还是没有解决,后来有尝试了不同的数据类型,比如unsigned int等,问题同样没能解决。后来突然想到C6713是浮点DSP,而DM642是定点DSP,你觉得会是这个原因吗?网上也有人说,定点的DSP在做浮点运算是要通过Q格式的数据运算 不知道您或者您身边的同事有没有遇到过这样问题,遇到后你们是怎么解决的。或者你们觉得问题出在哪? |
|
|
|
|
|
麻烦了,由于是DSP新手,可能有很多不太懂的部分,请教一下:
1、’“ 每次上电后先进DMA的发送中断,隔一个采样时钟周期(采用8KHz采样率,相隔125us)后进入DMA接收中断,接收中断中将程序状态转到信号处理函数Signal_Process();” 请问一下,这里怎么进入信号处理函数Signal_Process()的呢? 我看了一下你的程序,使用的是“State_Work = State_Signal_Process;”,这是什么意思啊? 2、这个主程序是什么啊,也就是main()函数,是while(1)[]让DSP板子空循环么,还是什么? 希望能得到您的解答,谢谢。 |
|
|
|
|
|
K_Ming 发表于 2019-10-24 18:42 一种是用操作系统,通过信号量之类的来唤醒任务。 比如在ISR里SEM_POST()发信号量。 在Task里SEM_PEND等信号量ready 另一种就是上面这种主循环方式。 main() [..... while(1) if(State_Work ==State_Signal_Process) [ Signal_Process() State_Work = 0; ] .......... ] http://processors.wiki.ti.com/index.php/Main_Page Think Over Before Asking. http://www.catb.org/~esr/faqs/smart-questions.html#goal |
|
|
|
|
|
lifei639156 发表于 2019-10-24 19:21 再请教一下: 我这边的开发板,I2C作为AIC23的控制口,McBSP0作为AIC23的数据口,那么用AIC23做数据采集的时候,DMA是配置成: 源地址是McBSP0,目标地址是内存? 源地址是AIC23,目标地址是McBSP? 也就是说,AIC23用McBSP0做数据口,不用DMA的时候就直接MCBSP_read16(),要是用了DMA,那么这两者之间还要DMA来传输么? |
|
|
|
|
|
只有小组成员才能发言,加入小组>>
NA555DR VCC最低电压需要在5V供电,为什么用3.3V供电搭了个单稳态触发器也使用正常?
697 浏览 3 评论
MSP430F249TPMR出现高温存储后失效了的情况,怎么解决?
607 浏览 1 评论
对于多级放大电路板,在PCB布局中,电源摆放的位置应该注意什么?
1069 浏览 1 评论
763 浏览 0 评论
普中科技F28335开发板每次上电复位后数码管都会显示,如何熄灭它?
531 浏览 1 评论
请问下tpa3220实际测试引脚功能和官方资料不符,哪位大佬可以帮忙解答下
175浏览 20评论
请教下关于TAS5825PEVM评估模块原理图中不太明白的地方,寻求答疑
136浏览 14评论
在使用3254进行录音的时候出现一个奇怪的现象,右声道有吱吱声,请教一下,是否是什么寄存器设置存在问题?
130浏览 13评论
TLV320芯片内部自带数字滤波功能,请问linein进来的模拟信号是否是先经过ADC的超采样?
126浏览 12评论
GD32F303RCT6配置PA4 ADC引脚,将PA2代替key功能,PA2连接时无法实现预期功能,为什么?
72浏览 10评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-30 19:00 , Processed in 2.159461 second(s), Total 72, Slave 65 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号