⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 mainfilter.asm

📁 音频数据采集与IIR处理例程
💻 ASM
📖 第 1 页 / 共 5 页
字号:
	.line	3
;----------------------------------------------------------------------
; 137 | hMcbsp0=MCBSP_open(MCBSP_DEV0,MCBSP_OPEN_RESET);                       
; 138 | MCBSP_config(hMcbsp0,&mcbspCfg0);                                      
; 139 | MCBSP_start(hMcbsp0,MCBSP_XMIT_START|MCBSP_RCV_START|                  
; 140 |             MCBSP_SRGR_START|MCBSP_SRGR_FRAMESYNC,220);                
; 142 | void iis1_init(void)                                                   
; 144 | hMcbsp1=MCBSP_open(MCBSP_DEV1,MCBSP_OPEN_RESET);                       
; 145 | MCBSP_config(hMcbsp1,&mcbspCfg1);                                      
; 146 | MCBSP_start(hMcbsp1,MCBSP_XMIT_START|MCBSP_RCV_START|                  
; 147 |             MCBSP_SRGR_START|MCBSP_SRGR_FRAMESYNC,220);
;     |                                                                        
; 149 | void set_interrupts_edma(void)                                         
; 151 | IRQ_reset(IRQ_EVT_EDMAINT);                                            
; 152 | IRQ_disable(IRQ_EVT_EDMAINT);                                          
; 153 | EDMA_intDisable(12);         /* ch 12 for McBSP transmit event XEVT0 */
; 154 | EDMA_intDisable(13);         /* ch 13 for McBSP receive event REVT0 */ 
; 155 | IRQ_clear(IRQ_EVT_EDMAINT);                                            
; 156 | EDMA_intClear(12);                                                     
; 157 | EDMA_intClear(13);                                                     
; 158 | IRQ_enable(IRQ_EVT_EDMAINT);                                           
; 159 | EDMA_intEnable(12);                                                    
; 160 | EDMA_intEnable(13);                                                    
; 162 | void init_edma(void)                                                   
; 164 | TI_EDMA_CFG();                                                         
; 165 | set_interrupts_edma();                                                 
; 166 |   *(unsigned volatile int *)McBSP0_DXR=SendMcbspDat;                   
; 167 |   *(unsigned volatile int *)McBSP1_DXR=SendMcbspDat;                   
; 168 |   RecvMcbspDat=*(unsigned volatile int *)McBSP0_DRR;                   
; 171 | interrupt void xint0()                                                 
; 173 |  if(SendCnt>10000)                                                     
; 174 |   {SendCnt=0;}                                                         
; 175 |  else                                                                  
; 176 |   {SendCnt++;}                                                         
; 177 |  SendMcbspDat=RecvMcbspDat;                                            
; 179 | interrupt void rint0()                                                 
; 181 | RecvMcbspDat=*(unsigned volatile int *)McBSP0_DRR;                     
; 182 | *(unsigned volatile int *)McBSP0_DXR=SendMcbspDat;                     
; 184 | interrupt void timer0_isr()                                            
; 186 | static unsigned int i=0,j=0;                                           
; 187 | if(i>100)                                                              
; 189 |     i=0;                                                               
; 190 |     j++;                                                               
; 192 | else                                                                   
; 193 |   {i++;}                                                               
; 194 |  if(j>200)                                                             
; 196 |    j=0;                                                                
; 198 |  if(j>0&&j<100)                                                        
; 200 |      GPIO_pinWrite(hGpio,GPIO_PIN13,1);                                
; 201 |      GPIO_pinWrite(hGpio,GPIO_PIN15,0);                                
; 203 |  else                                                                  
; 206 |      GPIO_pinWrite(hGpio,GPIO_PIN13,0);                                
; 207 |      GPIO_pinWrite(hGpio,GPIO_PIN15,1);                                
; 210 | interrupt void ext_int4(void)                                          
; 212 | static Uint32 ExtIntCnt=0;                                             
; 213 | if(ExtIntCnt<0xffff)                                                   
; 214 |   {ExtIntCnt++;}                                                       
; 215 | else                                                                   
; 216 |   {ExtIntCnt=0;}                                                       
; 218 | interrupt void c_int08(void)  /* vecs.asm hooks this up to IRQ 08 */   
; 220 | if (EDMA_intTest(12))                                                  
; 222 | xmit0_done = TRUE;                                                     
; 223 | EDMA_intClear(12); /* clear CIPR bit so future interrupts can be recogn
;     | ized */                                                                
; 226 | else if (EDMA_intTest(13))                                             
; 228 | recv0_done = TRUE;                                                     
; 229 | EDMA_intClear(13); /* clear CIPR bit so future interrupts can be recogn
;     | ized */                                                                
; 231 | return;                                                                
; 233 | void initrecsendbuf(void)                                              
; 235 | Uint32 i;                                                              
; 236 | for(i=0;i<256;i++)                                                     
; 237 | { gBufferRcvPing[i]=0x0;                                               
; 238 |   gBufferRcvPong[i]=0x0;                                               
; 239 |   gBufferXmtPing[i]=i+0xaaaa5555;                                      
; 240 |   gBufferXmtPong[i]=i+0xaaaa5555;                                      
; 242 | for(i=0;i<1000;i++)                                                    
; 244 |   inbuf[i]=0x5432+i;                                                   
; 245 |   outbuf[i]=0x1000+i;                                                  
; 249 | Uint16 bypass_bit=0;                                                   
; 250 | void ProcessBlock(short pingpong)                                      
; 252 | Uint16 i=0;                                                            
; 253 | if(pingpong==PING)                        //Ping module                
; 255 |      for(i=0;i<512;i++)                                                
; 257 |         Buffer_iir_l[i]=(float)(gBufferRcvPing[i*2]);                  
; 258 |         Buffer_iir_r[i]=(float)(gBufferRcvPing[i*2+1]);                
; 260 |      if(bypass_bit==1)                                                 
; 262 |                      DSPF_sp_biquad(Buffer_iir_l,b0,a0,dlyl_0,mid_iir,5
;     | 12);                                                                   
; 263 |                      DSPF_sp_biquad(mid_iir,b1,a1,dlyl_1,Buffer_iir_l,5
;     | 12);                                                                   
; 265 |                      DSPF_sp_biquad(Buffer_iir_r,b0,a0,dlyr_0,mid_iir,5
;     | 12);                                                                   
; 266 |                      DSPF_sp_biquad(mid_iir,b1,a1,dlyr_1,Buffer_iir_r,5
;     | 12);                                                                   
; 268 |      for(i=0;i<512;i++)                                                
; 270 |         gBufferXmtPing[i*2]=(int)(Buffer_iir_l[i]);                    
; 271 |         gBufferXmtPing[i*2+1]=(int)(Buffer_iir_r[i]);                  
; 275 | if(pingpong==PONG)                         //Pong module               
; 277 |      for(i=0;i<512;i++)                                                
; 279 |         Buffer_iir_l[i]=(float)gBufferRcvPong[i*2];                    
;----------------------------------------------------------------------
           MVKL    .S1     _MCBSP_open,A0    ; |137| 
           MVKH    .S1     _MCBSP_open,A0    ; |137| 
           CALL    .S2X    A0                ; |137| 
           ZERO    .D1     A4                ; |137| 
           NOP             1
           MVKL    .S2     RL10,B3           ; |137| 
           MVK     .S2     0x1,B4            ; |137| 
           MVKH    .S2     RL10,B3           ; |137| 
RL10:      ; CALL OCCURS                     ; |137| 
           STW     .D2T1   A4,*+DP(_hMcbsp0) ; |137| 
;----------------------------------------------------------------------
; 280 | Buffer_iir_r[i]=(float)gBufferRcvPong[i*2+1];                          
; 282 | if(bypass_bit==1)                                                      
; 284 |              DSPF_sp_biquad(Buffer_iir_l,b0,a0,dlyl_0,mid_iir,512);    
; 285 |              DSPF_sp_biquad(mid_iir,b1,a1,dlyl_1,Buffer_iir_l,512);    
; 286 |              DSPF_sp_biquad(Buffer_iir_r,b0,a0,dlyr_0,mid_iir,512);    
;----------------------------------------------------------------------
           LDW     .D1T1   *+A4(12),A0       ; |280| 
           MVC     .S2     CSR,B4            ; |270| 
           AND     .S2     1,B4,B4           ; |270| 
           MVC     .S2     CSR,B5            ; |271| 
           AND     .S2     -2,B5,B5          ; |271| 
           MVC     .S2     B5,CSR            ; |271| 
;----------------------------------------------------------------------
; 287 | DSPF_sp_biquad(mid_iir,b1,a1,dlyr_1,Buffer_iir_r,512);                 
;----------------------------------------------------------------------
           LDW     .D2T2   *+DP(_mcbspCfg0),B0 ; |287| 
           LDW     .D2T1   *+DP(_mcbspCfg0+4),A5 ; |288| 
;----------------------------------------------------------------------
; 289 | for(i=0;i<512;i++)                                                     
;----------------------------------------------------------------------
           LDW     .D2T1   *+DP(_mcbspCfg0+8),A3 ; |289| 
           LDW     .D2T2   *+DP(_mcbspCfg0+12),B7 ; |290| 
;----------------------------------------------------------------------
; 291 | gBufferXmtPong[i*2]=(int)Buffer_iir_l[i];                              
;----------------------------------------------------------------------
           LDW     .D2T2   *+DP(_mcbspCfg0+16),B8 ; |291| 
;----------------------------------------------------------------------
; 292 | gBufferXmtPong[i*2+1]=(int)Buffer_iir_r[i];                            
;----------------------------------------------------------------------
           LDW     .D2T2   *+DP(_mcbspCfg0+20),B9 ; |292| 
           LDW     .D2T2   *+DP(_mcbspCfg0+24),B6 ; |293| 
           LDW     .D2T2   *+DP(_mcbspCfg0+28),B5 ; |294| 
           ZERO    .D1     A6                ; |296| 
           STW     .D1T1   A6,*+A0(8)        ; |296| 
;----------------------------------------------------------------------
; 297 | int main()                                                             
;----------------------------------------------------------------------
           STW     .D1T1   A5,*+A0(12)       ; |297| 
           STW     .D1T1   A3,*+A0(16)       ; |298| 
           STW     .D1T2   B7,*+A0(20)       ; |299| 
;----------------------------------------------------------------------
; 300 | IRQ_globalDisable();                 /* Disable all interrupts        *
;     | /                                                                      
;----------------------------------------------------------------------
           STW     .D1T2   B8,*+A0(24)       ; |300| 
;----------------------------------------------------------------------
; 301 | IER=1;                               /* Disable all interrupts except N
;     | MI   */                                                                
;----------------------------------------------------------------------
           STW     .D1T2   B9,*+A0(28)       ; |301| 
;----------------------------------------------------------------------
; 302 | IRQ_setVecs((void *)0x800);                      /* point to the IRQ ve
;     | ctor table */                                                          
;----------------------------------------------------------------------
           STW     .D1T2   B6,*+A0(32)       ; |302| 
;----------------------------------------------------------------------
; 303 | PLLInit();                                                             
;----------------------------------------------------------------------
           STW     .D1T2   B5,*+A0(36)       ; |303| 
           STW     .D1T2   B0,*+A0(8)        ; |304| 
           MVC     .S2     CSR,B5            ; |276| 

           AND     .S2     -2,B5,B5          ; |276| 
||         AND     .L2     1,B4,B4           ; |276| 

           OR      .S2     B4,B5,B4          ; |276| 
           MVC     .S2     B4,CSR            ; |276| 
	.line	5
           MVKL    .S1     _MCBSP_start,A0   ; |139| 
           MVKH    .S1     _MCBSP_start,A0   ; |139| 
           CALL    .S2X    A0                ; |139| 
           MVKL    .S2     RL11,B3           ; |139| 
           MVKH    .S2     RL11,B3           ; |139| 
           MVK     .S2     0xf,B4            ; |139| 
           MVK     .S1     0xdc,A6           ; |139| 
           NOP             1
RL11:      ; CALL OCCURS                     ; |139| 
	.line	7
           LDW     .D2T2   *++SP(8),B3       ; |141| 
           NOP             4
           RET     .S2     B3                ; |141| 
           NOP             5
           ; BRANCH OCCURS                   ; |141| 
	.endfunc	141,000080000h,8



	.sect	".text"
	.global	_iis1_init
	.sym	_iis1_init,_iis1_init, 32, 2, 0
	.func	142
;----------------------------------------------------------------------
; 142 | void iis1_init(void)                                                   
;----------------------------------------------------------------------

;******************************************************************************
;* FUNCTION NAME: _iis1_init                                                  *
;*                                                                            *
;*   Regs Modified     : A0,A1,A2,A3,A4,A5,A6,A7,A8,A9,B0,B1,B2,B3,B4,B5,B6,  *
;*                           B7,B8,B9,SP                                      *
;*   Regs Used         : A0,A1,A2,A3,A4,A5,A6,A7,A8,A9,B0,B1,B2,B3,B4,B5,B6,  *
;*                           B7,B8,B9,DP,SP                                   *
;*   Local Frame Size  : 0 Args + 0 Auto + 4 Save = 4 byte                    *
;******************************************************************************

;******************************************************************************
;*                                                                            *
;* Using -g (debug) with optimization (-o3) may disable key optimizations!    *
;*                                                                            *
;******************************************************************************
_iis1_init:
;** --------------------------------------------------------------------------*
	.line	2
	.sym	_gie,20, 14, 4, 32
	.sym	_base,0, 30, 4, 32
	.sym	_x0,16, 4, 4, 32
	.sym	_x1,5, 4, 4, 32
	.sym	_x2,3, 4, 4, 32
	.sym	_x3,23, 4, 4, 32
	.sym	_x4,24, 4, 4, 32
	.sym	_x5,25, 4, 4, 32
	.sym	_x6,22, 4, 4, 32
	.sym	_x7,21, 4, 4, 32
           STW     .D2T2   B3,*SP--(8)       ; |143| 
	.line	3
;----------------------------------------------------------------------
; 144 | hMcbsp1=MCBSP_open(MCBSP_DEV1,MCBSP_OPEN_RESET);                       
; 145 | MCBSP_config(hMcbsp1,&mcbspCfg1);                                      
; 146 | MCBSP_start(hMcbsp1,MCBSP_XMIT_START|MCBSP_RCV_START|                  
; 147 |             MCBSP_SRGR_START|MCBSP_SRGR_FRAMESYNC,220);
;     |                                                                        
; 149 | void set_interrupts_edma(void)                                         
; 151 | IRQ_reset(IRQ_EVT_EDMAINT);                                            
; 152 | IRQ_disable(IRQ_EVT_EDMAINT);                                          
; 153 | EDMA_intDisable(12);         /* ch 12 for McBSP transmit event XEVT0 */
; 154 | EDMA_intDisable(13);         /* ch 13 for McBSP receive event REVT0 */ 
; 155 | IRQ_clear(IRQ_EVT_EDMAINT);                                            
; 156 | EDMA_intClear(12);                                                     
; 157 | EDMA_intClear(13);                                                     
; 158 | IRQ_enable(IRQ_EVT_EDMAINT);                                           
; 159 | EDMA_intEnable(12);                                                    
; 160 | EDMA_intEnable(13);                                                    
; 162 | void init_edma(void)                                                   
; 164 | TI_EDMA_CFG();                                                         
; 165 | set_interrupts_edma();                                                 
; 166 |   *(unsigned volatile int *)McBSP0_DXR=SendMcbspDat;                   
; 167 |   *(unsigned volatile int *)McBSP1_DXR=SendMcbspDat;                   
; 168 |   RecvMcbspDat=*(unsigned volatile int *)McBS

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -