TMC32_QJB/USB/USB.h
2026-04-30 16:23:12 +08:00

120 lines
3.2 KiB
C

/********************************************************************************
* Copyright (c) 2012, Beijing Tongfang Microelectroics Co., Ltd.
* All rights reserved.
* Module: USB.h
* Author: Yang Song
* Version: V1.0
* History:
* 2012-09-24 Original version
********************************************************************************/
#ifndef __USB_H__
#define __USB_H__
#include "global.h"
// Standard Request Codes (bRequest)
#define GET_STATUS 0
#define CLEAR_FEATURE 1
#define USBSTDREQRFU1 2
#define SET_FEATURE 3
#define USBSTDREQRFU2 4
#define SET_ADDRESS 5
#define GET_DESCRIPTOR 6
#define SET_DESCRIPTOR 7
#define GET_CONFIGURATION 8
#define SET_CONFIGURATION 9
#define GET_INTERFACE 10
#define SET_INTERFACE 11
#define SYNCH_FRAME 12
// Descriptor Type
#define DEVICE 1
#define CONFIGURATION 2
#define STRING 3
#define INTERFACE 4
#define ENDPOINT 5
// Define pkt size
#define EP0PKTSIZE 0x40
// Define type of status
#define ACK 0x00
#define NAK 0x01
#define IN 0x00
#define OUT 0x01
// Enable or disable Dynamic FIFO,related configuration
#define DYNAMICFIFO 1
// Variables and functions defined in USB_ep.c
typedef struct {
u8 bmRequestType;
u8 bRequest;
u16 wValue;
u16 wIndex;
u16 wLength;
u8 bStdRqstFlag; // To indicate standard request is received
u8 bClsRqstFlag; // To indicate class request is received
u8 bVdrRqstFlag; // To indicate vendor request is received
}USB_DEVICE_REQUEST;
extern u8 *g_abUsbEp0Buf;
extern u16 g_sUsbEp0TxLen; // Length of Ep0 data to be transmitted
extern u8 g_bUsbEp0RcvDataFlag;
extern volatile u8 g_bUsbEp0TxIntFlag;
extern u8 g_bUsbEp1RcvDataFlag;
extern u16 g_sUsbEp2TxLen;
extern u8 *g_abUsbEp1Buf;
extern u8 *g_abUsbEp2Buf;
extern u8 *g_abUsbEp3Buf;
//extern volatile u8 USB_Time;
#if !DYNAMICFIFO
extern u8 *g_abUsbBuf;
#endif
#define USBbuf g_abUsbEp0Buf
extern u8 g_bCcidReader;
extern USB_DEVICE_REQUEST st_usbDeviceRequest;
extern u8 g_bUsbDevType;
extern void usbStdReqGetDeviceDescriptor(void);
extern void usbStdReqGetConfigDescriptor(void);
extern void usbStdReqGetStringDescriptor(void);
extern void usbStdReqGetDescriptor(void);
extern void usbStdReqGetStatus(void);
extern void usbStdReqRfu1(void);
extern void usbStdReqClearFeature(void);
extern void usbStdReqRfu2(void);
extern void usbStdReqSetFeature(void);
extern void usbStdReqSetAddress(void);
extern void usbStdReqSetDescriptor(void);
extern void usbStdReqGetConfiguration(void);
extern void usbStdReqSetConfiguration(void);
extern void usbStdReqGetInterface(void);
extern void usbStdReqSetInterface(void);
extern void usbStdReqSynchFrame(void);
extern const voidfunc usbStdReq[0x0D];
extern void usbmain(void);
extern void usbReqHandle(void);
extern void usbEpInit(void);
extern void USBInit(void);
extern void USBClkInit(void);
extern void usbEp0RxTx(void);
extern void usbEp0RxAll(u8 * buf,u16 len);
extern void usbEpnTx(u8 ep, u8 * buf,u8 len);
extern void usbEpnTxAll(u8 ep,u8 * buf,u16 len);
extern u8 usbEpnRxFirstPacket(u8 ep,u8 * buf);
extern u16 usbEpnRxLastAllData(u8 ep,u8 * buf,u16 len);
extern void AppUSBSendData(u8* buf, u32 len);
extern u32 AppUSBReceiveData(u8 *buf, u32 bufSize);
#endif //__USB_H__