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

📄 main.lst

📁 DSP通过双口RAM和ISP1581实现下位机的USB固件程序
💻 LST
📖 第 1 页 / 共 2 页
字号:
 237   3                              LowerIRQL();
C51 COMPILER V7.06   MAIN                                                                  09/09/2005 13:57:30 PAGE 5   

 238   3                      } /* if setup_packet for DeviceRequest*/
 239   2                      if (bZBoardFlags.bits.setup_dma == 1 && (bZBoardFlags.bits.dma_state == DMA_IDLE))
 240   2                      {
 241   3                              RaiseIRQL();
 242   3                              bZBoardFlags.bits.setup_dma = 0;
 243   3      //                      UARTSEND(0X55);
 244   3                      //      setup_dma();   //7.25
 245   3                              LowerIRQL();
 246   3                      } // if setup_dma
 247   2                      if (bZBoardFlags.bits.DCP_state == USBFSM4DCP_CONTROLOUTDONE)
 248   2                      {
 249   3                              Chap9_ControlWriteHandshake();
 250   3                      }
 251   2                      
 252   2                      if (bZBoardFlags.bits.ISO_CONFIG)
 253   2                      {
 254   3                              bZBoardFlags.bits.ISO_CONFIG = 0;
 255   3                      //      ISO_CONFIG();
 256   3                      }
 257   2      
 258   2              } // Main Loop
 259   1      
 260   1      }
 261          
 262          
 263          /////////////////////////////////////////////////
 264          
 265          void ISP1581_Initiate(void)
 266          {
 267   1              //adress reg: 0x00
 268   1              ISP1581_SetAddressEnable(0x0, 0x01); // set address to 0 and enable it.
 269   1              ISP1581_SetTestMode(0); // clear test mode
 270   1              
 271   1              ISP1581_SetMode(/* mode_clkaon*/mode_glintena|mode_softct);
 272   1      //                                      |mode_wkupcs
 273   1      //                                      |mode_pwroff
 274   1      //                                      |mode_softct
 275   1      //                                      |mode_clkaon
 276   1      //                                      );
 277   1              ISP1581_SetIntConfig(0x0
 278   1                                      |intcfg_cdbgmod_as      // control interrupt on ack and stall
 279   1                                      |intcfg_ddbgmodin_a     // IN data interrupt on ack only
 280   1                                      |intcfg_ddbgmodout_asy  // OUT data on ack and stall and nyet intertupt
 281   1                                      //|intcfg_polh);   // level interrupt and active high
 282   1      //                              |intcfg_edgetrig
 283   1                                              );
 284   1              ISP1581_SetIntEnableLow(int_busreset|int_susp|int_resume
 285   1                                      |int_hs_stat|int_dma|int_ep0set
 286   1                                      |int_ep0rx|int_ep0tx
 287   1                                      |int_ep1rx|int_ep1tx
 288   1                                      |int_ep2rx|int_ep2tx);
 289   1              ISP1581_SetIntEnableHigh(int_ep3rx|int_ep3tx
 290   1                                      |int_ep4rx|int_ep4tx
 291   1                                      |int_ep5rx|int_ep5tx
 292   1                                      |int_ep6rx|int_ep6tx
 293   1                                      |int_ep7rx|int_ep7tx);
 294   1              ISP1581_ConfigEndpoint();               // default config as a full speed device
 295   1              //-------------xxg-----------------
 296   1              // dma config: 0x38
 297   1              ISP1581_SetDMAConfig(dmacfg_width16|dmacfg_modediorw/*|dmacfg_modediorack*/|dmacfg_burst0);
 298   1              // dma hardware:0x3c
 299   1              ISP1581_SetDMAHDCfg(dmahd_dreqpolh/*|dmahd_dackpolh*/|dmahd_eotpolh/*|dmahd_readpolh|dmahd_writepolh*/);
C51 COMPILER V7.06   MAIN                                                                  09/09/2005 13:57:30 PAGE 6   

 300   1              
 301   1      }
 302          
 303          
 304          void ISP1581_ConfigEndpoint(void)
 305          {
 306   1              
 307   1              // disable all endpoint firsr;
 308   1              ISP1581_SetEndpointConfig(EPINDEX4EP01OUT, 0);
 309   1              ISP1581_SetEndpointConfig(EPINDEX4EP01IN, 0);
 310   1              ISP1581_SetEndpointConfig(EPINDEX4EP02OUT, 0);
 311   1              ISP1581_SetEndpointConfig(EPINDEX4EP02IN, 0);
 312   1              ISP1581_SetEndpointConfig(EPINDEX4EP03OUT, 0);
 313   1              ISP1581_SetEndpointConfig(EPINDEX4EP03IN, 0);
 314   1              ISP1581_SetEndpointConfig(EPINDEX4EP04OUT, 0);
 315   1              ISP1581_SetEndpointConfig(EPINDEX4EP04IN, 0);
 316   1              ISP1581_SetEndpointConfig(EPINDEX4EP05OUT, 0);
 317   1              ISP1581_SetEndpointConfig(EPINDEX4EP05IN, 0);
 318   1              ISP1581_SetEndpointConfig(EPINDEX4EP06OUT, 0);
 319   1              ISP1581_SetEndpointConfig(EPINDEX4EP06IN, 0);
 320   1              ISP1581_SetEndpointConfig(EPINDEX4EP07OUT, 0);
 321   1              ISP1581_SetEndpointConfig(EPINDEX4EP07IN, 0);
 322   1      
 323   1              switch(bZBoardFlags.bits.ConnectSpeed)
 324   1              {
 325   2                      case FullSpeed:
 326   2                      {
 327   3                              ISP1581_SetEPMAXSize(EPINDEX4EP01OUT, EP1_PACKET_SIZE);
 328   3                              ISP1581_SetEPMAXSize(EPINDEX4EP01IN, EP1_PACKET_SIZE);
 329   3                              globe_variable.maxepsize_bulk = maxepsize_FS;
 330   3                              ISP1581_SetEPMAXSize(EPINDEX4EP02OUT, globe_variable.maxepsize_bulk);
 331   3                              ISP1581_SetEPMAXSize(EPINDEX4EP02IN, globe_variable.maxepsize_bulk);
 332   3                              //ISP1581_SetEPMAXSize(EPINDEX4EP03OUT, maxepsize_256);
 333   3                              //ISP1581_SetEPMAXSize(EPINDEX4EP03IN, maxepsize_256);
 334   3                              ISP1581_SetEPMAXSize(EPINDEX4EP04OUT, maxepsize_16);
 335   3                              ISP1581_SetEPMAXSize(EPINDEX4EP04IN, maxepsize_16);
 336   3                              break;
 337   3                      }
 338   2                      case HighSpeed:
 339   2                      {
 340   3                              ISP1581_SetEPMAXSize(EPINDEX4EP01OUT, maxepsize_512);
 341   3                              ISP1581_SetEPMAXSize(EPINDEX4EP01IN, maxepsize_512);
 342   3                              globe_variable.maxepsize_bulk = maxepsize_HS;
 343   3                              ISP1581_SetEPMAXSize(EPINDEX4EP02OUT, globe_variable.maxepsize_bulk);
 344   3                              ISP1581_SetEPMAXSize(EPINDEX4EP02IN, globe_variable.maxepsize_bulk);
 345   3                              //ISP1581_SetEPMAXSize(EPINDEX4EP03OUT, maxepsize_256);
 346   3                              //ISP1581_SetEPMAXSize(EPINDEX4EP03IN, maxepsize_256);
 347   3                              ISP1581_SetEPMAXSize(EPINDEX4EP04OUT, maxepsize_512);
 348   3                              ISP1581_SetEPMAXSize(EPINDEX4EP04IN, maxepsize_16);
 349   3                              break;
 350   3                      }
 351   2                      default:
 352   2                      {
 353   3                              globe_variable.maxepsize_bulk = maxepsize_FS;
 354   3                              break;
 355   3                      }
 356   2              }
 357   1              
 358   1              ISP1581_SetEPMAXSize(EPINDEX4EP03OUT, maxepsize_0);
 359   1              ISP1581_SetEPMAXSize(EPINDEX4EP03IN, maxepsize_0);
 360   1              ISP1581_SetEPMAXSize(EPINDEX4EP05OUT, maxepsize_0);
 361   1              ISP1581_SetEPMAXSize(EPINDEX4EP05IN, maxepsize_0);
C51 COMPILER V7.06   MAIN                                                                  09/09/2005 13:57:30 PAGE 7   

 362   1              ISP1581_SetEPMAXSize(EPINDEX4EP06OUT, maxepsize_0);
 363   1              ISP1581_SetEPMAXSize(EPINDEX4EP06IN, maxepsize_0);
 364   1              ISP1581_SetEPMAXSize(EPINDEX4EP07OUT, maxepsize_0);
 365   1              ISP1581_SetEPMAXSize(EPINDEX4EP07IN, maxepsize_0);
 366   1      
 367   1              ISP1581_SetEndpointConfig(EPINDEX4EP01OUT, eptype_bulk|eptype_enable);
 368   1              ISP1581_SetEndpointConfig(EPINDEX4EP01IN, eptype_bulk|eptype_enable);//|eptype_doublebuf);//|eptype_noemp
             -kt);
 369   1              ISP1581_SetEndpointConfig(EPINDEX4EP02OUT, eptype_bulk|eptype_enable|eptype_doublebuf);
 370   1              ISP1581_SetEndpointConfig(EPINDEX4EP02IN, eptype_bulk|eptype_enable|eptype_doublebuf|eptype_noempkt);
 371   1              ISP1581_SetEndpointConfig(EPINDEX4EP03OUT, 0);
 372   1              ISP1581_SetEndpointConfig(EPINDEX4EP03IN, 0);
 373   1              ISP1581_SetEndpointConfig(EPINDEX4EP04OUT, eptype_bulk|eptype_enable);
 374   1              ISP1581_SetEndpointConfig(EPINDEX4EP04IN, eptype_int|eptype_enable);
 375   1              ISP1581_SetEndpointConfig(EPINDEX4EP05OUT, 0);
 376   1              ISP1581_SetEndpointConfig(EPINDEX4EP05IN, 0);
 377   1              ISP1581_SetEndpointConfig(EPINDEX4EP06OUT, 0);
 378   1              ISP1581_SetEndpointConfig(EPINDEX4EP06IN, 0);
 379   1              ISP1581_SetEndpointConfig(EPINDEX4EP07OUT, 0);
 380   1              ISP1581_SetEndpointConfig(EPINDEX4EP07IN, 0);
 381   1              ISP1581_ClearBuffer(EPINDEX4EP01OUT);
 382   1              ISP1581_ClearBuffer(EPINDEX4EP01IN);
 383   1              ISP1581_ClearBuffer(EPINDEX4EP02OUT);
 384   1              ISP1581_ClearBuffer(EPINDEX4EP02IN);
 385   1              ISP1581_ClearBuffer(EPINDEX4EP03OUT);
 386   1              ISP1581_ClearBuffer(EPINDEX4EP03IN);
 387   1              ISP1581_ClearBuffer(EPINDEX4EP04OUT);
 388   1              ISP1581_ClearBuffer(EPINDEX4EP04IN);
 389   1              
 390   1      }
 391          
 392          void Isr_BusReset(void)
 393          {
 394   1              bZBoardFlags.bits.DCP_state = USBFSM4DCP_IDLE;
 395   1              bZBoardFlags.bits.dma_state = DMA_IDLE;
 396   1              ioRequest.bAddressH = 0;
 397   1              ioRequest.uAddressL = 0;
 398   1              ioRequest.uSize = 0;
 399   1              globe_variable.ioINSize = 0;
 400   1              globe_variable.ioINCount = 0;
 401   1              globe_variable.ioOUTSize = 0;
 402   1              globe_variable.ioOUTCount = 0;
 403   1              bZBoardFlags.bits.CONTROL_HANDLE_DONE = 0;
 404   1              bZBoardFlags.bits.ISO_CONFIG = 0;
 405   1              ISP1581_SetDMAInt(0xffff);//c);
 406   1              ISP1581_IntClearl(0xffff);
 407   1              ISP1581_IntClearh(0xffff);
 408   1              ISP1581_Initiate();
 409   1      }
 410          
 411          void Device_Initiate(void)
 412          {
 413   1              unsigned long clk_cnt;
 414   1              
 415   1              MCU_LED0 = 0;
 416   1              MCU_LED1 = 0;
 417   1              
 418   1              disconnect_USB();
 419   1              
 420   1              ENABLE_INTERRUPTS;
 421   1              clk_cnt = lClockTicks;
 422   1              while(lClockTicks < clk_cnt + 20);
C51 COMPILER V7.06   MAIN                                                                  09/09/2005 13:57:30 PAGE 8   

 423   1              DISABLE_INTERRUPTS;
 424   1              
 425   1              bZBoardFlags.bits.DCP_state = USBFSM4DCP_IDLE;
 426   1              bZBoardFlags.bits.ConnectSpeed = FullSpeed;
 427   1              bZBoardFlags.bits.dma_state = DMA_IDLE;
 428   1              bZBoardFlags.bits.CONTROL_HANDLE_DONE = 0;
 429   1              bZBoardFlags.bits.ISO_CONFIG = 0;
 430   1              ISP1581_SetDMAInt(0xffff);//c);
 431   1              ISP1581_IntClearl(0xffff);
 432   1              ISP1581_IntClearh(0xffff);
 433   1              ioRequest.bAddressH = 0;
 434   1              ioRequest.uAddressL = 0;
 435   1              ioRequest.uSize = 0;
 436   1              globe_variable.ioINSize = 0;
 437   1              globe_variable.ioINCount = 0;
 438   1              globe_variable.ioOUTSize = 0;
 439   1              globe_variable.ioOUTCount = 0;
 440   1              
 441   1              globe_variable.isoINSize = 0;
 442   1              globe_variable.isoINCount = 0;
 443   1              globe_variable.isoOUTSize = 0;
 444   1              globe_variable.isoOUTCount = 0;
 445   1              
 446   1              MCU_LED0 = 1;
 447   1              MCU_LED1 = 1;
 448   1              
 449   1              connect_USB();
 450   1              return;
 451   1      }
 452          void disconnect_USB(void)
 453          {
 454   1              ISP1581_SetTestMode(testmode_forcefs);
 455   1              //You may need some delay here if MPU is very fast.
 456   1              ISP1581_SetMode(/* mode_clkaon*/mode_glintena); 
 457   1      //                                      |mode_wkupcs);
 458   1      //                                      |mode_softct);
 459   1      
 460   1      }
 461          void connect_USB(void)
 462          {
 463   1              bZBoardFlags.bits.DCP_state = USBFSM4DCP_IDLE;
 464   1              ISP1581_Initiate();
 465   1      }
 466          
 467          


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =   1000    ----
   CONSTANT SIZE    =   ----    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =     27       6
   IDATA SIZE       =      6    ----
   BIT SIZE         =      1    ----
END OF MODULE INFORMATION.


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

⌨️ 快捷键说明

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