📄 fw.lst
字号:
209 =1
210 =1 typedef struct
211 =1 {
212 =1 BYTE length;
213 =1 BYTE type;
214 =1 }DSCR;
215 =1
216 =1 typedef struct // Device Descriptor
217 =1 {
218 =1 BYTE length; // Descriptor length ( = sizeof(DEVICEDSCR) )
219 =1 BYTE type; // Decriptor type (Device = 1)
220 =1 BYTE spec_ver_minor; // Specification Version (BCD) minor
221 =1 BYTE spec_ver_major; // Specification Version (BCD) major
222 =1 BYTE dev_class; // Device class
223 =1 BYTE sub_class; // Device sub-class
224 =1 BYTE protocol; // Device sub-sub-class
225 =1 BYTE max_packet; // Maximum packet size
226 =1 WORD vendor_id; // Vendor ID
227 =1 WORD product_id; // Product ID
228 =1 WORD version_id; // Product version ID
229 =1 BYTE mfg_str; // Manufacturer string index
230 =1 BYTE prod_str; // Product string index
231 =1 BYTE serialnum_str; // Serial number string index
232 =1 BYTE configs; // Number of configurations
233 =1 }DEVICEDSCR;
234 =1
235 =1 typedef struct // Device Qualifier Descriptor
236 =1 {
237 =1 BYTE length; // Descriptor length ( = sizeof(DEVICEQUALDSCR) )
C51 COMPILER V8.06 FW 11/12/2007 15:20:26 PAGE 5
238 =1 BYTE type; // Decriptor type (Device Qualifier = 6)
239 =1 BYTE spec_ver_minor; // Specification Version (BCD) minor
240 =1 BYTE spec_ver_major; // Specification Version (BCD) major
241 =1 BYTE dev_class; // Device class
242 =1 BYTE sub_class; // Device sub-class
243 =1 BYTE protocol; // Device sub-sub-class
244 =1 BYTE max_packet; // Maximum packet size
245 =1 BYTE configs; // Number of configurations
246 =1 BYTE reserved0;
247 =1 }DEVICEQUALDSCR;
248 =1
249 =1 typedef struct
250 =1 {
251 =1 BYTE length; // Configuration length ( = sizeof(CONFIGDSCR) )
252 =1 BYTE type; // Descriptor type (Configuration = 2)
253 =1 WORD config_len; // Configuration + End Points length
254 =1 BYTE interfaces; // Number of interfaces
255 =1 BYTE index; // Configuration number
256 =1 BYTE config_str; // Configuration string
257 =1 BYTE attrib; // Attributes (b7 - buspwr, b6 - selfpwr, b5 - rwu
258 =1 BYTE power; // Power requirement (div 2 ma)
259 =1 }CONFIGDSCR;
260 =1
261 =1 typedef struct
262 =1 {
263 =1 BYTE length; // Interface descriptor length ( - sizeof(INTRFCDSCR) )
264 =1 BYTE type; // Descriptor type (Interface = 4)
265 =1 BYTE index; // Zero-based index of this interface
266 =1 BYTE alt_setting; // Alternate setting
267 =1 BYTE ep_cnt; // Number of end points
268 =1 BYTE class; // Interface class
269 =1 BYTE sub_class; // Interface sub class
270 =1 BYTE protocol; // Interface sub sub class
271 =1 BYTE interface_str; // Interface descriptor string index
272 =1 }INTRFCDSCR;
273 =1
274 =1 typedef struct
275 =1 {
276 =1 BYTE length; // End point descriptor length ( = sizeof(ENDPNTDSCR) )
277 =1 BYTE type; // Descriptor type (End point = 5)
278 =1 BYTE addr; // End point address
279 =1 BYTE ep_type; // End point type
280 =1 BYTE mp_L; // Maximum packet size
281 =1 BYTE mp_H;
282 =1 BYTE interval; // Interrupt polling interval
283 =1 }ENDPNTDSCR;
284 =1
285 =1 typedef struct
286 =1 {
287 =1 BYTE length; // String descriptor length
288 =1 BYTE type; // Descriptor type
289 =1 }STRINGDSCR;
290 =1
291 =1 typedef struct
292 =1 {
293 =1 BYTE cntrl; // End point control register
294 =1 BYTE bytes; // End point buffer byte count
295 =1 }EPIOC;
296 =1
297 =1 typedef struct
298 =1 {
299 =1 BYTE length;
C51 COMPILER V8.06 FW 11/12/2007 15:20:26 PAGE 6
300 =1 BYTE *dat;
301 =1 BYTE count;
302 =1 BYTE status;
303 =1 }I2CPCKT;
304 =1
305 =1 //====================================================================
306 =1 // Globals
307 =1 //====================================================================
308 =1 extern code BYTE USB_AutoVector;
309 =1
310 =1 extern WORD pDeviceDscr;
311 =1 extern WORD pDeviceQualDscr;
312 =1 extern WORD pHighSpeedConfigDscr;
313 =1 extern WORD pFullSpeedConfigDscr;
314 =1 extern WORD pConfigDscr;
315 =1 extern WORD pOtherConfigDscr;
316 =1 extern WORD pStringDscr;
317 =1
318 =1 extern code DEVICEDSCR DeviceDscr;
319 =1 extern code DEVICEQUALDSCR DeviceQualDscr;
320 =1 extern code CONFIGDSCR HighSpeedConfigDscr;
321 =1 extern code CONFIGDSCR FullSpeedConfigDscr;
322 =1 extern code STRINGDSCR StringDscr;
323 =1 extern code DSCR UserDscr;
324 =1
325 =1 extern I2CPCKT I2CPckt;
326 =1
327 =1 //====================================================================
328 =1 // Function Prototypes
329 =1 //====================================================================
330 =1 // fx2bug #ifdef CHIPREV_B
331 =1 // fx2bug extern void EZUSB_IRQ_CLEAR(void);
332 =1 // fx2bug #endif
333 =1
334 =1 extern void EZUSB_Renum(void);
335 =1 extern void EZUSB_Discon(BOOL renum);
336 =1
337 =1 extern void EZUSB_Susp(void);
338 =1 extern void EZUSB_Resume(void);
339 =1
340 =1 extern void EZUSB_Delay1ms(void);
341 =1 extern void EZUSB_Delay(WORD ms);
342 =1
343 =1 extern CONFIGDSCR xdata* EZUSB_GetConfigDscr(BYTE ConfigIdx);
344 =1 extern INTRFCDSCR xdata* EZUSB_GetIntrfcDscr(BYTE ConfigIdx, BYTE IntrfcIdx, BYTE AltSetting);
345 =1 extern STRINGDSCR xdata* EZUSB_GetStringDscr(BYTE StrIdx);
346 =1 extern DSCR xdata* EZUSB_GetDscr(BYTE index, DSCR* dscr, BYTE type);
347 =1
348 =1 extern void EZUSB_InitI2C(void);
349 =1 extern BOOL EZUSB_WriteI2C_(BYTE addr, BYTE length, BYTE xdata *dat);
350 =1 extern BOOL EZUSB_ReadI2C_(BYTE addr, BYTE length, BYTE xdata *dat);
351 =1 extern BOOL EZUSB_WriteI2C(BYTE addr, BYTE length, BYTE xdata *dat);
352 =1 extern BOOL EZUSB_ReadI2C(BYTE addr, BYTE length, BYTE xdata *dat);
353 =1 extern void EZUSB_WaitForEEPROMWrite(BYTE addr);
354 =1 extern void modify_endpoint_stall(BYTE epid, BYTE stall);
355 =1
356 =1 #endif
5 #include "fx2regs.h"
1 =1 //-----------------------------------------------------------------------------
2 =1 // 文件: FX2regs.h
3 =1 // 内容: EZ-USB FX2 寄存器定义与位定义.
4 =1 //-----------------------------------------------------------------------------
C51 COMPILER V8.06 FW 11/12/2007 15:20:26 PAGE 7
5 =1
6 =1 #ifndef FX2REGS_H
7 =1 #define FX2REGS_H
8 =1
9 =1
10 =1 // The Ez-USB FX2 registers are defined here. We use FX2regs.h for register
11 =1 // address allocation by using "#define ALLOCATE_EXTERN".
12 =1 // When using "#define ALLOCATE_EXTERN", you get (for instance):
13 =1 // xdata volatile BYTE OUT7BUF[64] _at_ 0x7B40;
14 =1 // Such lines are created from FX2.h by using the preprocessor.
15 =1 // Incidently, these lines will not generate any space in the resulting hex
16 =1 // file; they just bind the symbols to the addresses for compilation.
17 =1 // You just need to put "#define ALLOCATE_EXTERN" in your main program file;
18 =1 // i.e. fw.c or a stand-alone C source file.
19 =1 // Without "#define ALLOCATE_EXTERN", you just get the external reference:
20 =1 // extern xdata volatile BYTE OUT7BUF[64] ;// 0x7B40;
21 =1 // This uses the concatenation operator "##" to insert a comment "//"
22 =1 // to cut off the end of the line, "_at_ 0x7B40;", which is not wanted.
23 =1
24 =1 #ifdef ALLOCATE_EXTERN
=1 #define EXTERN
=1 #define _AT_ _at_
=1 #else
28 =1 #define EXTERN extern
29 =1 #define _AT_ ;/ ## /
30 =1 #endif
31 =1
32 =1 EXTERN xdata volatile BYTE GPIF_WAVE_DATA _AT_ 0xE400;
33 =1 EXTERN xdata volatile BYTE RES_WAVEDATA_END _AT_ 0xE480;
34 =1
35 =1 //通用配置
36 =1 EXTERN xdata volatile BYTE CPUCS _AT_ 0xE600; // CPU控制和状态
37 =1 EXTERN xdata volatile BYTE IFCONFIG _AT_ 0xE601; // 接口配置(端口,GPIF,SLAVE FIFO)
38 =1 EXTERN xdata volatile BYTE PINFLAGSAB _AT_ 0xE602; // 从属FIFO FLAGA FLAGB引脚配置
39 =1 EXTERN xdata volatile BYTE PINFLAGSCD _AT_ 0xE603; // 从属FIFO FLAGA FLAGB引脚配置
40 =1 EXTERN xdata volatile BYTE FIFORESET _AT_ 0xE604; // FIFO复位
41 =1 EXTERN xdata volatile BYTE BREAKPT _AT_ 0xE605; // 断点
42 =1 EXTERN xdata volatile BYTE BPADDRH _AT_ 0xE606; // 断点高位地址
43 =1 EXTERN xdata volatile BYTE BPADDRL _AT_ 0xE607; // 断点低位地址
44 =1 EXTERN xdata volatile BYTE UART230 _AT_ 0xE608; // 设置230KB/S(T0,T1,T2)
45 =1 EXTERN xdata volatile BYTE FIFOPINPOLAR _AT_ 0xE609; // SLAVE FIFO 接口引脚极性
46 =1 EXTERN xdata volatile BYTE REVID _AT_ 0xE60A; // 修改ID
47 =1 EXTERN xdata volatile BYTE REVCTL _AT_ 0xE60B; // 芯片版本控制
48 =1
49 =1 //端点配置寄存器
50 =1
51 =1 EXTERN xdata volatile BYTE EP1OUTCFG _AT_ 0xE610; // 端点1 OUT配置
52 =1 EXTERN xdata volatile BYTE EP1INCFG _AT_ 0xE611; // 端点1 IN配置
53 =1 EXTERN xdata volatile BYTE EP2CFG _AT_ 0xE612; // 端点2配置
54 =1 EXTERN xdata volatile BYTE EP4CFG _AT_ 0xE613; // 端点4配置
55 =1 EXTERN xdata volatile BYTE EP6CFG _AT_ 0xE614; // 端点6配置
56 =1 EXTERN xdata volatile BYTE EP8CFG _AT_ 0xE615; // 端点8配置
57 =1 EXTERN xdata volatile BYTE EP2FIFOCFG _AT_ 0xE618; // 端点2/SLAVE FIFO配置
58 =1 EXTERN xdata volatile BYTE EP4FIFOCFG _AT_ 0xE619; // 端点4/SLAVE FIFO配置
59 =1 EXTERN xdata volatile BYTE EP6FIFOCFG _AT_ 0xE61A; // 端点6/SLAVE FIFO配置
60 =1 EXTERN xdata volatile BYTE EP8FIFOCFG _AT_ 0xE61B; // 端点8/SLAVE FIFO配置
61 =1 EXTERN xdata volatile BYTE EP2AUTOINLENH _AT_ 0xE620; // 端点2 AUTOIN包长度高位
62 =1 EXTERN xdata volatile BYTE EP2AUTOINLENL _AT_ 0xE621; // 端点2 AUTOIN包长度低位
63 =1 EXTERN xdata volatile BYTE EP4AUTOINLENH _AT_ 0xE622; // 端点4 AUTOIN包长度高位
64 =1 EXTERN xdata volatile BYTE EP4AUTOINLENL _AT_ 0xE623; // 端点4 AUTOIN包长度低位
65 =1 EXTERN xdata volatile BYTE EP6AUTOINLENH _AT_ 0xE624; // 端点6 AUTOIN包长度高位
66 =1 EXTERN xdata volatile BYTE EP6AUTOINLENL _AT_ 0xE625; // 端点6 AUTOIN包长度低位
C51 COMPILER V8.06 FW 11/12/2007 15:20:26 PAGE 8
67 =1 EXTERN xdata volatile BYTE EP8AUTOINLENH _AT_ 0xE626; // 端点8 AUTOIN包长度高位
68 =1 EXTERN xdata volatile BYTE EP8AUTOINLENL _AT_ 0xE627; // 端点8 AUTOIN包长度低位
69 =1 EXTERN xdata volatile BYTE EP2FIFOPFH _AT_ 0xE630; // 端点2/SLAVE FIFO 可编程成级标志的高位(高速
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -