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

📄 new_download.lst

📁 TI公司的DSP TMS320VC5402开发板的全套资料
💻 LST
📖 第 1 页 / 共 2 页
字号:
 237   4                              break;
 238   4                              }
 239   3                              
 240   3                              dspptr++;                                   
 241   3              }
C51 COMPILER V8.08   NEW_DOWNLOAD                                                          08/06/2008 15:58:38 PAGE 5   

 242   2              
 243   2              len = *dspptr++;
 244   2          }
 245   1          
 246   1          WR_HPIAL = 0x00;    // 向地址0x007F写入pc指针加载地址  
 247   1              WR_HPIAH = 0x7F;
 248   1              WR_HPID1L = 0x01;       // THE START ADDRESS OF RUN
 249   1              WR_HPID1H = 0x00;
 250   1              
 251   1              addr = DSP_READY;
 252   1          
 253   1              WR_HPIAL = addr / 256;
 254   1              WR_HPIAH = addr % 256;
 255   1          
 256   1          while(RD_HPID1H != 0x01);   // 等待DSP准备好 
 257   1          
 258   1          // 第二阶段 
 259   1          for(i = 0; i < 5; i++)      // 初始化所有握手信号为0
 260   1          {
 261   2              addr = DSP_READY - 1;   // HCNTL0 = 0,HCNTL0 = 1,每写1次,HPIA事先增1
 262   2              
 263   2              WR_HPIAL = addr / 256;
 264   2                      WR_HPIAH = addr % 256;
 265   2                      
 266   2                      WR_HPID0L = 0x00;
 267   2                      WR_HPID0H = 0x00;
 268   2              }
 269   1              
 270   1              for(app_stage = APP_PROG; app_stage <=APP_DATA; app_stage++)
 271   1          {
 272   2              if(app_stage == APP_PROG)
 273   2              {       
 274   3                      dspptr = dsp_program;
 275   3                      printf("The second stage:Load DSP application program.\n");
 276   3              }
 277   2              else if(app_stage == APP_DATA)
 278   2              {
 279   3      #ifdef DATA
                              dspptr = dsp_data;
                              printf("The third stage:Load DSP application data.\n");
              #else
 283   3                              printf("There is no DSP application data to load.\n");
 284   3                              break;
 285   3      #endif
 286   3              }
 287   2          
 288   2              len = *dspptr;
 289   2          
 290   2              while(len != 0)
 291   2              {
 292   3                      printf("len = %d\n", len);
 293   3              
 294   3                      correct = 1;
 295   3                      temp = dspptr;
 296   3                      addr = BOOT_BUF_START - 1;
 297   3                      
 298   3                      WR_HPIAL = addr / 256;
 299   3                      WR_HPIAH = addr % 256;
 300   3          
 301   3                      for(i = 0; i < len+2; i++)
 302   3                      {       
 303   4                              WR_HPID0L = *dspptr / 256;
C51 COMPILER V8.08   NEW_DOWNLOAD                                                          08/06/2008 15:58:38 PAGE 6   

 304   4                              WR_HPID0H = *dspptr % 256;
 305   4                      
 306   4                              dspptr++;
 307   4                      }
 308   3              
 309   3                      dspptr = temp;          // 指针回到刚刚写完的len长度数据的首字节,以便读出进行校验 
 310   3      
 311   3                      addr++;         // HCNTL0 = 0,HCNTL0 = 1,每读1次,HPIA事后增1
 312   3                      WR_HPIAL = addr / 256;
 313   3                      WR_HPIAH = addr % 256;
 314   3              
 315   3                      for (i = 0; i < len+2; i++)
 316   3                      {  
 317   4                              if (RD_HPID0L != *dspptr / 256) // 写入的数据不等于读出的数据 
 318   4                              {       
 319   5                                      dspptr = temp;  // 将dspptr指回到该len长度的首字节,以便重新写该len长度的数据 
 320   5                                      correct = 0;
 321   5                                      printf("Error occurs!\n");
 322   5                                      break;
 323   5                                      }
 324   4                                               
 325   4                              if (RD_HPID0H != *dspptr % 256) 
 326   4                              {
 327   5                                      dspptr = temp;
 328   5                                      correct = 0;
 329   5                                      printf("Error occurs!\n");
 330   5                                      break;
 331   5                                      }
 332   4                              
 333   4                                      dspptr++;                                   
 334   4                      }
 335   3              
 336   3                      if(correct)
 337   3                      {
 338   4                              if(app_stage == APP_PROG)
 339   4                              {
 340   5                                      addr = PROG_BUF_READY;
 341   5                              }
 342   4                              else
 343   4                              {
 344   5                                      addr = DATA_BUF_READY;
 345   5                              }
 346   4              
 347   4                              WR_HPIAL = addr / 256;
 348   4                              WR_HPIAH = addr % 256;
 349   4                              
 350   4                              WR_HPID1L = 0x00;
 351   4                              WR_HPID1H = 0x01;       // 将标志位置1以通知DSP处理     
 352   4                      
 353   4                              printf("waiting...\n");
 354   4                              //while(RD_HPID1H == 0x01);     // 等待DSP完成数据的下载 
 355   4                              do
 356   4                              {
 357   5                                      delay(0xffff);
 358   5                              }while(RD_HPID1H == 0x01);
 359   4                      }
 360   3              
 361   3                      len = *dspptr;
 362   3              }
 363   2          }
 364   1          
 365   1          addr = COPY_DONE;
C51 COMPILER V8.08   NEW_DOWNLOAD                                                          08/06/2008 15:58:38 PAGE 7   

 366   1          
 367   1          WR_HPIAL = addr / 256;
 368   1          WR_HPIAH = addr % 256;
 369   1          
 370   1          WR_HPID1L = 0x00;
 371   1          WR_HPID1H = 0x01;
 372   1          
 373   1          printf("HPI boot ends.\n");    
 374   1      }     
 375          
 376          Timer0() interrupt 1
 377          {
 378   1              ok = 1;
 379   1              ms++;
 380   1      }
 381          
 382          void init_51(void)
 383          {
 384   1          TMOD = 0x21;
 385   1          SCON = 0x40;
 386   1          REN = 1;
 387   1          TH1 = 0xfd;
 388   1          TL1 = 0xfd;
 389   1          ET1 = 0;
 390   1          ES = 0;
 391   1          IT0 = 1;
 392   1          EX0 = 0;
 393   1          ET0 = 1;
 394   1          EA = 1;
 395   1          TR1 = 1;
 396   1          TR0 = 1;
 397   1      }
 398          /***************************************************************/
 399          
 400          /*
 401          unsigned char getDSP()
 402          {
 403                  WR_HPIL_A = 0;
 404                  WR_HPIH_A = 0x7d;
 405                  return(RD_HPIH0_D);
 406          }
 407          */  
 408          void init_aic23(void)
 409          { 
 410   1              write_aic23(RESET, 0);
 411   1              write_aic23(D_INTERFACE_ACT, 0x001);
 412   1              write_aic23(POWER_CON, 0);
 413   1              //write_aic23(SAMPLE_RATE, 0x022);  //44.1k
 414   1              //write_aic23(SAMPLE_RATE, 0x062);    //22.05k
 415   1              write_aic23(SAMPLE_RATE, 0x02e);    //8.021k
 416   1          
 417   1              write_aic23(L_LINE_VOLUME, 0x0117);
 418   1              write_aic23(L_LINE_VOLUME, 0x0117);
 419   1         
 420   1              volume = 100;
 421   1              write_aic23(L_HEADPHONE_VOLUME, 0x0180+volume); //0x1e4  
 422   1              write_aic23(R_HEADPHONE_VOLUME, 0x0180+volume);   
 423   1         
 424   1              //write_aic23(A_AUDIO_PATH, 0x009);   //bypass DAC OFF
 425   1              //write_aic23(A_AUDIO_PATH, 0x014);   //MIC ADC DAC ON  0DB
 426   1              //write_aic23(A_AUDIO_PATH, 0x1fc);   //bypass MIC ADC DAC ON 0DB sidetone 
 427   1          write_aic23(A_AUDIO_PATH, 0x07d);   //bypass MIC ADC DAC ON 20DB sidetone(-6db)
C51 COMPILER V8.08   NEW_DOWNLOAD                                                          08/06/2008 15:58:38 PAGE 8   

 428   1              //write_AIC23(A_AUDIO_PATH, 0x011);   //LINE ADC DAC ON
 429   1         
 430   1              write_aic23(D_AUDIO_PATH, 0x04);
 431   1         
 432   1              write_aic23(D_AUDIO_INTERFACE, 0x043);   //master  dsp mode
 433   1      }
 434          
 435          void write_aic23(uint8 addr, uint16 dat)
 436          {
 437   1          uint8 i;
 438   1          dat |= addr << 9;   // A[15..9]控制地址,A[8..0]控制数据 
 439   1          CS=0;
 440   1          for (i = 0; i < 16; i++)    // 模拟SPI时序发送 
 441   1          {
 442   2              SCLK = 0;
 443   2              if ((dat << i) & 0x8000)
 444   2                      SDIN = 1;
 445   2              else 
 446   2                      SDIN = 0;
 447   2              SCLK = 1;
 448   2          }
 449   1          SCLK = 0;
 450   1          CS = 1;
 451   1      }
 452          /*
 453          unsigned char getkey()
 454          {
 455              uint8 key;
 456              if(RI)
 457              {
 458                  RI = 0;
 459                  key = SBUF;
 460                  return(key);
 461              }
 462              return(255);
 463          }
 464          */


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =   1133    ----
   CONSTANT SIZE    =   2096    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =      5      13
   IDATA SIZE       =   ----    ----
   BIT SIZE         =      3    ----
END OF MODULE INFORMATION.


C51 COMPILATION COMPLETE.  0 WARNING(S),  0 ERROR(S)

⌨️ 快捷键说明

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