📄 sl811.h
字号:
#ifndef __SL811_h__
#define __SL811_h__
#include "..\inc\DataType.h"
#include "..\INC\led.h"
//*****************************************************************************************
// Address Defines
//*****************************************************************************************
#define SL811H_ADDR *(volatile U8 *)(0x8000000)
#define SL811H_DATA *(volatile U8 *)(0x800000f)
//------------------------------------------------------------------------
// EP0 use for configuration and Vendor Specific command interface
//------------------------------------------------------------------------
#define EP0_Buf 0x40 // define start of EP0 64-byte buffer
#define EP1_Buf 0x80 // define start of EP1 64-byte buffer
#define TIMEOUT_RETRY 0x36 // Maximum no. of timeout retry during USB xfer
/*-------------------------------------------------------------------------
* SL811H Register Control memory map
* --Note:
* --SL11H only has one control register set from 0x00-0x04
* --SL811H has two control register set from 0x00-0x04 and 0x08-0x0c
*------------------------------------------------------------------------*/
#define EP0Control 0x00
#define EP0Address 0x01
#define EP0XferLen 0x02
#define EP0Status 0x03
#define EP0Counter 0x04
#define EP1Control 0x08
#define EP1Address 0x09
#define EP1XferLen 0x0a
#define EP1Status 0x0b
#define EP1Counter 0x0c
#define CtrlReg 0x05
#define IntEna 0x06
// 0x07 is reserved
#define IntStatus 0x0d
#define cDATASet 0x0e
#define cSOFcnt 0x0f // Master=1 Slave=0, D+/D-Pol Swap=1 0=not [0-5] SOF Count
// 0xAE = 1100 1110
// 0xEE = 1110 1110
#define IntMask 0x57 /* Reset|DMA|EP0|EP2|EP1 for IntEna */
#define HostMask 0x47 /* Host request command for IntStatus */
#define ReadMask 0xd7 /* Read mask interrupt for IntStatus */
//Interrupt Status Mask
#define USB_A_DONE 0x01
#define USB_B_DONE 0x02
#define BABBLE_DETECT 0x04
#define INT_RESERVE 0x08
#define SOF_TIMER 0x10
#define INSERT_REMOVE 0x20
#define USB_RESET 0x40
#define USB_DPLUS 0x80
#define INT_CLEAR 0xFF
//EP0 Status Mask
#define EP0_ACK 0x01 // EPxStatus bits mask during a read
#define EP0_ERROR 0x02
#define EP0_TIMEOUT 0x04
#define EP0_SEQUENCE 0x08
#define EP0_SETUP 0x10
#define EP0_OVERFLOW 0x20
#define EP0_NAK 0x40
#define EP0_STALL 0x80
/*-------------------------------------------------------------------------
* Standard Chapter 9 definition
*-------------------------------------------------------------------------
*/
#define GET_STATUS 0x00
#define CLEAR_FEATURE 0x01
#define SET_FEATURE 0x03
#define SET_ADDRESS 0x05
#define GET_DESCRIPTOR 0x06
#define SET_DESCRIPTOR 0x07
#define GET_CONFIG 0x08
#define SET_CONFIG 0x09
#define GET_INTERFACE 0x0a
#define SET_INTERFACE 0x0b
#define SYNCH_FRAME 0x0c
#define DEVICE 0x01
#define CONFIGURATION 0x02
#define STRING 0x03
#define INTERFACE 0x04
#define ENDPOINT 0x05
#define STDCLASS 0x00
/*-------------------------------------------------------------------------
* SL11H/SL811H definition
*-------------------------------------------------------------------------
*/
#define DATA0_WR 0x07
#define sDATA0_WR 0x07
#define DATA0_RD 0x03
#define sDATA0_RD 0x23
#define PID_SETUP 0xD0
#define PID_IN 0x90
#define PID_OUT 0x10
//////////////////////////////////////////////////////////////////////////////////////
#define MAX_READ_LENGTH 65534
#define MAX_WRITE_LENGTH 65534
#define INOUTBUF_LENGTH 65536
////////////////////////////////////////////
U8 SL811Read(unsigned char a);
void SL811Write(unsigned char a, unsigned char d);
U8 SL811_GetRev(void);
U16 WordSwap(U16 input);
U16 MakeU16(U8 d1,U8 d0);
U32 MakeU32(U8 d3,U8 d2,U8 d1,U8 d0);
U32 SwapINT32(U32 dData);
U16 SwapINT16(U16 dData);
void USBReset(void);
U8 check_usbdevice(void);
U8 usbXfer(void);
U8 ep0Xfer(void);
U8 epBulkSend(U8 *pBuffer,U16 len);
U8 epBulkRcv(U8 *pBuffer,U16 len);
U8 SetAddress(U8 addr);
U8 Set_Configuration(void);
U8 GetDesc(void);
U8 EnumUsbDev(U8 usbaddr);
void SL811_Init(void);
U8 usbXfer(void);
U8 ep0Xfer(void);
#endif /*__SL811_h__*/
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -