UiMpTest.c
上传用户:hjhsjcl
上传日期:2020-09-25
资源大小:11378k
文件大小:6k
源码类别:

压缩解压

开发平台:

C++ Builder

  1. /*==========================================================================
  2. Copyright (c) 2004 ALi Corporation. All Rights Reserved
  3. File: UiCommon.c
  4. content: user interface for usb module
  5. History: Created by TNE 2004/8/17
  6. ==========================================================================*/
  7. #define _UI_USB_H_
  8. #include <DP8051XP.H>
  9. #include "TypeDef.h"
  10. #include "Const.h"
  11. #include "Reg5661.h"
  12. #include "Common.h"
  13. #include "UiCommon.h"
  14. #include "UiSysStr.h"
  15. #include "Usb.h"
  16. #include "OledString.h"
  17. #include "DDM.h"
  18. #include "NandFlash.h"
  19. #include "TestFunc.h"
  20. //#include "FmChip.h" //Walace060126#2
  21. #include "FmChipDrv.h" //Walace060126#2
  22. //#include "OLED.h"050923 del
  23. void UiFlashDisk(void);
  24. bit GetUsbConfig(void); //041208
  25. extern void SD_POWER_OFF(void);
  26. /*--------------------------------------------------------------------------
  27. Description:
  28. Main program for TARGET UsbFlashDisk
  29. Arguments:
  30. Global arguments:
  31. Returns: 
  32. --------------------------------------------------------------------------*/
  33. main(void)
  34. {
  35. #if(SETTING_FOR_ISP_START)
  36.   CKCON &= 0xF8;
  37. CKCON |= 0x07; // STRECH = 111
  38. obREADYENL=SM_EN|USB_EN|SD_EN;
  39. obREADYENH=(SRAMRA_EN|RA_EN|SYSREG_EN)|0xF0;
  40. //CKCON &= 0xF9; // STRECH = 001 //David 050406
  41. CKCON &= 0xF8; // STRECH = 000
  42. IE = 0;
  43. EA = 1;
  44. IP = 0;
  45. PX0 = 1;
  46. TMOD = 0x10;
  47. TCON = 0;
  48. T2CON= 0;
  49. TA=0xAA;
  50. TA=0x55;
  51. WDCON =0;
  52. // Context_Switch from BR.
  53. // 1. MCUCLK from USB, (120/4)
  54. // 2. SRAMCLK from USB, (120/4)
  55. // 3. SMCLK Disable, but from DCV
  56. // 4. DCVCLK disable
  57. // 5. Do not Reset Pipe
  58. obCLKLCDCTRL|=0x20; //Div2 Enable
  59. obDCVARRD = 0x04; //DCV clock
  60. obDCVWRDATA = 0xe1; //147 MHz
  61. obCLKSMCTRL=0xA0; //48Mhz
  62. obCLKSMDIVF=0x00;
  63. obSMREADCYC = 0x02;
  64. obSMWRITECYC = 0x02;
  65. obSMHOLDTIME = 0x00;
  66. obDCVARRD=0x04;
  67. obDCVWRDATA=0xf1; //disable dcv clock
  68. //gfExtendPowerOn=TRUE;
  69. gfNandInit=FALSE;
  70. NandGpioInit();
  71. NandInit();
  72. gxbMaxLUN =1;
  73. gbDescriptorSource = ROM; // Initial config Descriptor from ROM 
  74. UsbDeviceInit(); //041208
  75. gxbDrawUsbUi = 0x00; //041213
  76. #else
  77. #if(SETTING_FOR_ICE_START)
  78. SettingForIceStart();
  79. #endif
  80. //obDCVARRD=0x0C; //DCV Addr 0x0C
  81. //obDCVWRDATA=0x46; //PWM Duty Cycle limited for un-know issue
  82. SetDCVPWMCycle(PWM_USB_CYCLE); //Walace060607#4
  83. obDCVARRD=0x0D; //DCV Addr 0x0d
  84. obDCVWRDATA=0xf9; //Set 0xf9
  85. IE = 0;
  86. EA = 1;
  87. //041216 start
  88. //SM Clock
  89. obCLKSMCTRL=0xD0;
  90. gfNandInit=FALSE;
  91. /* obCLKSMDIVF=0x03;
  92. obCLKSMCTRL=0xb8; //73(67)/5=14.6(13.4)*/
  93. //041216 end
  94. UsbDeviceInit();
  95. if(GetUsbConfig()) //041208 //v03210#1 make function
  96. gxbDrawUsbUi = 0x80;
  97. else
  98. gxbDrawUsbUi = 0x00;
  99. ClkSmDis();
  100. #endif
  101. // OledDispMaskInitial();050923 del
  102. #if(_PM_MPTEST_)
  103. obSYSSOFTRSTCTRL|=DSP_RST_DIS;//DSP RST DIS
  104. obPMSIZE|=0x04;//MCU USE ALL
  105. obDMXSIZE&=0xF8;
  106. obDMYSIZE&=0xF8;
  107. obGPIOBDIR |= 0x01;
  108. obGPIOBDAT&=~0x01; //clear on-board power down function
  109. obGPIOEDAT &= ~0x40;
  110. obGPIOEDIR |=0x40; //clear FM power down
  111. gxwFmFreq = 1007;
  112. FmInit();
  113. /* {
  114. obGPIOCDIR |= 0x01;
  115. for(gxwFmFreq=0xffff;gxwFmFreq>0;gxwFmFreq--)
  116. {
  117. obGPIOCDAT |= 0x01;
  118. }
  119. obGPIOCDIR &= ~0x01;
  120. }
  121. FmPLLRegTest(&MpCmdOld, &MpRet);
  122. */
  123. gxbLcdContrast=LCD_DEFAULT_CONTRAST;
  124. MpCmdOld.PENDING = 0;
  125. MpRet.STATUS = 0;
  126. MpRet.RESULT_1 = 0;
  127. #endif
  128. obUSBOTGSPEED |= USB_ON;
  129. while(1)
  130. {
  131. //041214: set bit 0
  132. // obDCVARRD=0x14;  //Power Control
  133. // obDCVWRDATA=(obDCVRDDATA&0xFD); //VREG_BAT use VDDA
  134. obDCVARRD=0x14;  //Power Control
  135. obDCVWRDATA=(obDCVRDDATA|0x01); //VREG_BAT use VDDA
  136. //041214
  137. //if(!VbusCheck())//if disconnect //Walace060901#2
  138. if(VbusCheck(CHECK_VBUS_OFF)) //if disconnect //Walace060901#2
  139. {
  140. obUSBOTGSPEED &= USB_OFFJ;
  141. EX0=0;
  142. /*
  143. obCLKLCDCTRL|=0x20; //Div2 Enable
  144. obDCVARRD=0x04; //DCV clock
  145. obDCVWRDATA=0xe1; //147 MHz
  146. //Mcu Clock
  147. obCLKMCUDIVF=0x03;
  148. obCLKMCUCTRL=0xb8; //73(67)/5=14.6(13.4)
  149. //Ra Clock
  150. obCLKSRAMDIVF=0x03;
  151. obCLKSRAMCTRL=0xb8; //73(67)/5=14.6(13.4)
  152. //SM Clock
  153. obCLKSMDIVF=0x03;
  154. obCLKSMCTRL=0xb8; //73(67)/5=14.6(13.4)
  155. SD_POWER_OFF();
  156. obCLKCODECCTRL=0x50;
  157. obCLKSDCTRL=0x50;
  158. obUSBOTGCTRL |= 0x02; //DPLL power down
  159. obMODSEL3 &= 0xBF; //USB  Disable
  160. obSYSSOFTRSTCTRL &= 0x7F;   //Usb Reset
  161. obSYSSOFTRSTCTRL=SM_RST_DIS|RA_RST_DIS; //reset all, but not SM, RA
  162. obSYSSOFTRSTCTRL2=0x00;
  163. obMODSEL1=0x08;
  164. obMODSEL3=0x08;
  165. LoadProgram(PM_INIT,NORMAL_CODE);
  166. */
  167. }
  168. UsbDevice();
  169. }
  170. }
  171. bit GetUsbConfig(void) //041208 050822
  172. {
  173. if(NandReadPhySec(gxwAddrPMI,1,SRAM_USB_DESC_ADDR)) //read PMI
  174. {
  175. *((BYTE *)&gwRomIdx+1) = gxbConfig[PM_CONFIG]; //get config address
  176. *((BYTE *)&gwRomIdx) = gxbConfig[PM_CONFIG+1];
  177. gwRomIdx++; //Allen050308
  178. gxwUsbDescIndex=gwRomIdx;
  179. if(NandReadPhySec(gwRomIdx,1,SRAM_USB_DESC_ADDR)) //read config data
  180. {
  181. if((gxbConfig[0]==0x61)&&(gxbConfig[1]==0x56)&&(gxbConfig[2]==0xAA)&&(gxbConfig[3]==0x55)&&(gxbConfig[510]==0x55)&&(gxbConfig[511]==0xAA))
  182. {
  183. *((BYTE *)&gwRomIdx+1) = gxbConfig[INDEX_OF_MODE_SELECT];
  184. *((BYTE *)&gwRomIdx) = gxbConfig[INDEX_OF_MODE_SELECT+1];
  185. gxbMaxLUN = gxbConfig[gwRomIdx+1];
  186. gbDescriptorSource =SRAM;
  187. return TRUE;
  188. }
  189. }
  190. }
  191. gxbMaxLUN =1;
  192. gbDescriptorSource = ROM; // Initial config Descriptor from ROM
  193. return FALSE;
  194. }
  195. //vicky050624
  196. /*--------------------------------------------------------------------------
  197. Desciption:
  198. Handle USB suspend & resume
  199. Arguments:
  200. Returns: 
  201. void
  202. --------------------------------------------------------------------------*/
  203. API void USB_Suspend(void) large
  204. {
  205. }