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

📄 sl811.h

📁 可以实现44B0的底层所有通信
💻 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 + -