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

📄 new_download.lst

📁 TI公司的DSP TMS320VC5402开发板的全套资料
💻 LST
📖 第 1 页 / 共 2 页
字号:
C51 COMPILER V8.08   NEW_DOWNLOAD                                                          08/06/2008 15:58:38 PAGE 1   


C51 COMPILER V8.08, COMPILATION OF MODULE NEW_DOWNLOAD
OBJECT MODULE PLACED IN new_download.OBJ
COMPILER INVOKED BY: C:\Program Files\Keil\C51\BIN\C51.EXE new_download.c BROWSE DEBUG OBJECTEXTEND

line level    source

   1          #include  <Reg52.h>        
   2          #include  <absacc.h>
   3          #include  <stdio.h>
   4          #include  <intrins.h>
   5          
   6          //#define   DATA
   7          
   8          #include  "dsp_boot_code.h"
   9          #include  "dsp_code.h"
  10          
  11          #ifdef    DATA
              #include  "dsp_data.h"
              #endif
  14            
  15          /* 定义宏 */
  16          #define   uint16 unsigned short
  17          #define   uint8  unsigned char
  18          #define   int16  short
  19          #define   int8   char
  20          
  21          #define   VOL1     0x81
  22          #define   VOL2     0x82
  23          
  24          /* TLV320AIC23寄存器地址 */
  25          #define   L_LINE_VOLUME        0x00             // 左线输入通道音量控制寄存器   
  26          #define   R_LINE_VOLUME        0x01             // 右线输入通道音量控制寄存器 
  27          #define   L_HEADPHONE_VOLUME   0x02             // 左通道耳机音量控制寄存器 
  28          #define   R_HEADPHONE_VOLUME   0x03             // 右通道耳机音量控制寄存器 
  29          #define   A_AUDIO_PATH         0x04
  30          #define   D_AUDIO_PATH         0x05
  31          #define   POWER_CON            0x06
  32          #define   D_AUDIO_INTERFACE    0x07
  33          #define   SAMPLE_RATE          0x08
  34          #define   D_INTERFACE_ACT      0x09
  35          #define   RESET                0x0f
  36          
  37          /* 定义寄存器端口地址 
  38            ---------------------------------------------------------------
  39            A15     A14     A13     A12      A11          A10              A9           A8
  40            ---------------------------------------------------------------
  41            X       X       X      nHCS    HR/nW    HCNTL1   HCNTL0    HBIL
  42            ---------------------------------------------------------------*/
  43          #define   WR_HPICL      XBYTE[0xe000]
  44          #define   WR_HPICH      XBYTE[0xe100]
  45          #define   WR_HPID0L     XBYTE[0xe200]           // HCNTL0 = 0,HCNTL0 = 1,每写1次,HPIA事先增1 
  46          #define   WR_HPID0H     XBYTE[0xe300]
  47          #define   WR_HPIAL      XBYTE[0xe400]           // 只代表第一个字节,先高字节还是低字节由BOB位来决定 
  48          #define   WR_HPIAH      XBYTE[0xe500]
  49          #define   WR_HPID1L     XBYTE[0xe600]           // HCNTL0 = 1,HCNTL0 = 1,HPIA寄存器不受影响 
  50          #define   WR_HPID1H     XBYTE[0xe700]
  51          
  52          #define   RD_HPID0L     XBYTE[0xeA00]           // HCNTL0 = 0,HCNTL0 = 1,每读1次,HPIA事后增1 
  53          #define   RD_HPID0H     XBYTE[0xeB00]
  54          #define   RD_HPID1L     XBYTE[0xeE00]           // HCNTL0 = 1,HCNTL0 = 1,HPIA寄存器不受影响 
  55          #define   RD_HPID1H     XBYTE[0xeF00]
C51 COMPILER V8.08   NEW_DOWNLOAD                                                          08/06/2008 15:58:38 PAGE 2   

  56          
  57          #define   WR_CR         XBYTE[0x7100]
  58          #define   WR_PARA       XBYTE[0x7000]
  59          
  60          // Addresses used for hand-shaking flags
  61          #define DSP_READY               0x0300
  62          #define PROG_BUF_READY  DSP_READY + 1
  63          #define DATA_BUF_READY  DSP_READY + 2
  64          #define COPY_DONE       DSP_READY + 3
  65          #define PMST_VAL        DSP_READY + 4
  66          
  67          // Boot buffer address
  68          #define BOOT_BUF_START  0x0400
  69          
  70          #define APP_PROG                0
  71          #define APP_DATA                1
  72          
  73          sbit DSPRST  = P1^2;
  74          sbit NETRST  = P1^3;
  75          sbit USBRST      = P1^4;
  76          sbit LCDRST      = P1^5;
  77                  
  78          sbit CS    = P3^3;              // SPI
  79          sbit SDIN  = P3^4;
  80          sbit SCLK  = P3^5;
  81          
  82          bit ok,readT,key_down;
  83          unsigned char time,stoptime,ms,DSPorder;
  84          unsigned char volume;
  85          
  86          void wr_dsp_code(void);
  87          void delay(uint16 wu);
  88          void load_dsp_prog(void);
  89          void init_51(void);
  90          void init_aic23(void);
  91          void write_aic23(uint8 addr, uint16 dat);
  92          void dsp_rst(void);
  93          void usb_rst(void);
  94          void lcd_rst(void);
  95          void net_rst(void);
  96          unsigned char rd_hpi(uint16 addr);
  97          unsigned char getDSP();
  98          
  99          int main(void)
 100          {
 101   1              init_aic23();   
 102   1           
 103   1              delay(10000);
 104   1          net_rst();
 105   1          dsp_rst();
 106   1              lcd_rst();
 107   1              usb_rst();      
 108   1          load_dsp_prog();
 109   1          init_51();
 110   1        
 111   1          delay(30000);
 112   1          volume = 108;
 113   1          write_aic23(L_HEADPHONE_VOLUME, 0x0180+volume);   
 114   1           
 115   1          while(1);
 116   1      
 117   1              return 0;
C51 COMPILER V8.08   NEW_DOWNLOAD                                                          08/06/2008 15:58:38 PAGE 3   

 118   1      }
 119          
 120          void delay(uint16 wu)
 121          {
 122   1              for (wu; wu > 0; wu--);
 123   1      }
 124          
 125          void lcd_rst(void)
 126          {
 127   1              LCDRST = 0;
 128   1              delay(200);
 129   1              LCDRST = 1;
 130   1              delay(200);                     
 131   1      }
 132          
 133          void dsp_rst(void)
 134          {
 135   1          DSPRST = 0;
 136   1          delay(200);
 137   1          DSPRST = 1;
 138   1          delay(200);
 139   1      }
 140          
 141          void usb_rst(void)
 142          {
 143   1              USBRST = 0;
 144   1              delay(200);
 145   1              USBRST = 1;
 146   1              delay(200);     
 147   1      }
 148          
 149          void net_rst(void)
 150          {
 151   1          NETRST = 1;
 152   1          delay(200);
 153   1          NETRST = 0;
 154   1              delay(200);     
 155   1      }                     
 156          
 157          void load_dsp_prog(void)
 158          {
 159   1              wr_dsp_code();
 160   1      }
 161          /*
 162          unsigned char rd_hpi(uint16 addr)
 163          {
 164              int16 i;
 165              WR_HPIAL = addr / 256;
 166              WR_HPIAH = addr % 256;
 167              i = RD_HPID0L;
 168              i = (i << 8) | RD_HPID0H;
 169              return(i);
 170          }
 171          
 172          void wr_hpi(uint16 addr, uint16 dat)
 173          {
 174              WR_HPIAL = addr / 256;
 175              WR_HPIAH = addr % 256;
 176              WR_HPID1L = dat / 256;       
 177              WR_HPID1H = dat % 256;        
 178          }
 179          */ 
C51 COMPILER V8.08   NEW_DOWNLOAD                                                          08/06/2008 15:58:38 PAGE 4   

 180          void wr_dsp_code(void)
 181          {
 182   1          const uint16 *dspptr, *temp;
 183   1              uint16 len;
 184   1              uint16 addr;
 185   1              uint8 i, correct, app_stage;
 186   1              
 187   1              //console_init();
 188   1              //aic23_init();
 189   1              
 190   1              printf("HPI boot begins...\n");
 191   1                      
 192   1              WR_HPICL = 0x08;  // clear HPIint,least is first  BOB = 0,第1字节为高字节 
 193   1          WR_HPICH = 0x08;  // HPIC是16位寄存器,主机写HPIC,第一字节与第二字节内容必须相同 
 194   1          
 195   1              // 第一阶段 
 196   1              dspptr = dsp_boot_program;
 197   1          printf("The first stage:Load DSP boot program.\n");
 198   1          
 199   1          len = *dspptr++;
 200   1          
 201   1          while(len != 0)     // 第一个字节表示数据长度(字节数),第二、三字节表示起始地址,高位字节在前 
 202   1          {           
 203   2                      addr = *dspptr++;         
 204   2              temp = dspptr;  // dspptr已经指向了准备写入的len长度的数据的首字节,将该地址保存起来 
 205   2              
 206   2              addr--;         // HCNTL0 = 0,HCNTL0 = 1,每写1次,HPIA事先增1
 207   2              WR_HPIAL = addr / 256;          // 256 = 0x100,BOB = 0,第1字节为高字节,地址高8位 
 208   2              WR_HPIAH = addr % 256;          // 地址低8位
 209   2      
 210   2              for (i = 0; i < len; i++)
 211   2              {  
 212   3                      WR_HPID0L = *dspptr / 256;      // 第一字节,16位数据高8位        
 213   3                      WR_HPID0H = *dspptr % 256;      // 第二字节,16位数据低8位
 214   3                      
 215   3                      dspptr++;                      
 216   3              }
 217   2      
 218   2              dspptr = temp;          // 指针回到刚刚写完的len长度数据的首字节,以便读出进行校验 
 219   2      
 220   2              addr++;         // HCNTL0 = 0,HCNTL0 = 1,每读1次,HPIA事后增1
 221   2              WR_HPIAL = addr / 256;
 222   2              WR_HPIAH = addr % 256;
 223   2              
 224   2              for (i = 0; i < len; i++)
 225   2              {  
 226   3                      if (RD_HPID0L != *dspptr / 256) // 写入的数据不等于读出的数据 
 227   3                      {       
 228   4                              dspptr = temp - 2;      // 将dspptr指回到该len长度的首字节,以便重新写该len长度的数据 
 229   4                              printf("Error occurs!\n");
 230   4                              break;
 231   4                              }
 232   3                                               
 233   3                      if (RD_HPID0H != *dspptr % 256) 
 234   3                      {
 235   4                              dspptr = temp - 2;
 236   4                              printf("Error occurs!\n");

⌨️ 快捷键说明

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