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

📄 sl811hst.h

📁 USBhost source
💻 H
字号:
/**
*	sl811.h
*	倀俽俛儂僗僩僠僢僾僪儔僀僶	僿僢僟
*	僒僀僾儗僗俽俴俉侾侾
*
*	Copyright (c)2004 Junichi Tomaru
*/
#include	"usrdef.h"

/* 傾僪儗僗掕媊 */
#define	SL811ADDR	(*((volatile unsigned char *)0xA0000))	/* 俽俴俉侾侾俫傾僪儗僗 */
#define	SL811DATA	(*((volatile unsigned char *)0xA0001))	/* 俽俴俉侾侾俫僨乕僞 */

/* 儗僕僗僞柤掕媊 */
#define	SL_HOSTCTRLA	0x00	/* 僠儍儞僱儖俙儂僗僩僐儞僩儘乕儖儗僕僗僞 */
#define	SL_BASEADDRA	0x01	/* 僠儍儞僱儖俙儂僗僩儀乕僗傾僪儗僗 */
#define	SL_BASELENA	0x02	/* 僠儍儞僱儖俙儂僗僩儀乕僗挿 */
#define	SL_PIDDEVEPA	0x03	/* 僠儍儞僱儖俙儂僗僩俹俬俢僨僶僀僗僄儞僪億僀儞僩(write) */
#define	SL_USBSTSA	0x03	/* 僠儍儞僱儖俙丂倀俽俛僗僥乕僞僗(read) */
#define	SL_DEVADDRA	0x04	/* 僠儍儞僱儖俙儂僗僩僨僶僀僗傾僪儗僗(write) */
#define	SL_TXCNTA	0x04	/* 僠儍儞僱儖俙揮憲僇僂儞僩(read) */
#define	SL_CTRLREG1	0x05	/* 僐儞僩儘乕儖儗僕僗僞侾 */
#define	SL_IER		0x06	/* 妱傝崬傒嫋壜儗僕僗僞 */
#define	SL_HOSTCTRLB	0x08	/* 僠儍儞僱儖俛儂僗僩僐儞僩儘乕儖儗僕僗僞 */
#define	SL_BASEADDRB	0x09	/* 僠儍儞僱儖俛儂僗僩儀乕僗傾僪儗僗 */
#define	SL_BASELENB	0x0a	/* 僠儍儞僱儖俛儂僗僩儀乕僗挿 */
#define	SL_PIDDEVEPB	0x0b	/* 僠儍儞僱儖俛儂僗僩俹俬俢僨僶僀僗僄儞僪億僀儞僩(write) */
#define	SL_USBSTSB	0x0b	/* 僠儍儞僱儖俛丂倀俽俛僗僥乕僞僗(read) */
#define	SL_DEVADDRB	0x0c	/* 僠儍儞僱儖俛儂僗僩僨僶僀僗傾僪儗僗(write) */
#define	SL_TXCNTB	0x0c	/* 僠儍儞僱儖俛揮憲僇僂儞僩(read) */
#define	SL_INTSTATUS	0x0d	/* 妱傝崬傒僗僥乕僞僗儗僕僗僞 1傪彂偒崬傓偲僋儕傾 */
#define	SL_SOFCNTLOW	0x0e	/* 俽俷俥僇僂儞僞壓埵(write) */
#define	SL_HWREV	0x0e	/* 俫乛倂儗價僕儑儞(read) */
#define	SL_SOFCNTHIGH	0x0f	/* 俽俷俥僇僂儞僞乛儅僗僞丒僗儗乕僽乛嬌惈愗傝懼偊(write) */
#define	SL_CTRLREG2	0x0f	/* 僐儞僩儘乕儖儗僕僗僞俀 */

/* 儂僗僩僐儞僩儘乕儖儗僕僗僞價僢僩掕媊 0H,08H */
#define	ARM		0x01	/* 揮憲嫋壜丅憲怣姰椆偱侽僋儕傾偝傟傞 */
#define	ENABLE		0x02	/* 揮憲嫋壜丅俙俼俵偲堦弿偵侾偵偡傞丅 */
#define	DIRECTION	0x04	/* 1:儂僗僩傊憲傞丂0:儂僗僩偐傜庴怣 */
#define	ISOEN		0x10	/* 傾僀僜僋儘僫僗揮憲嫋壜 */
#define	SOF		0x20	/* 僷働僢僩傪俽俷俥偺屻偵摨婜偟偰憲傞偐 */
#define	DATATGL		0x40	/* 僷働僢僩偺俹俬俢僙僢僩 */
#define	PREAMBLE	0x80	/* 僾儕傾儞僽儖(僴僽傪捠偟偰儘乕僗僺乕僪偵憲傞応崌僙僢僩) */

/* 儂僗僩俹俬俢丆僨僶僀僗僄儞僪億僀儞僩(彂偒崬傒) 03H,0BH */
/* 倀俽俛僗僥乕僞僗(撉傒崬傒) 03H,0BH */
#define	ACK		0x01	/* 揮憲俙俠俲 */
#define	ERROR		0x02	/* 揮憲偱僄儔乕専弌偟偨 */
#define	TIMEOUT		0x04	/* 僞僀儉傾僂僩敪惗 */
#define	SEQUENSE	0x08	/* 僔乕働儞僗價僢僩丅乮俹俬俢偺忬懺乯 */
#define	SETUP		0x10	/* 侾偺偲偒僙僢僩傾僢僾僷働僢僩 */
#define	OVERFLOW	0x20	/* 庴怣偺嵟戝傪挻偊偰庴怣偟偨 */
#define	NAK		0x40	/* 僗儗乕僽偐傜俶俙俲偑曉偭偰偒偨 */
#define	STALL		0x80	/* 僗儗乕僽偐傜俽俿俙俴俴偝傟偨 */

/* 僐儞僩儘乕儖儗僕僗僞價僢僩侾掕媊 05H */
#define	SOFEN		0x01	/* 俽俷俥偺帺摦敪惗惂屼 */
#define	USBRESET	0x08	/* 倀俽俛儕僙僢僩(僶僗儕僙僢僩) */
#define	JKSTATE		0x10	/* 俰丒俲僗僥乕僩惂屼(價僢僩俁偲嫟偵巊梡) */
#define	USBSPEED	0x20	/* 倀俽俛揮憲僗僺乕僪儌乕僪 */
#define	SUSPEND		0x40	/* 僒僗儁儞僪 */

/* 妱傝崬傒僐儞僩儘乕儖儗僕僗僞掕媊 06H */
/* 妱傝崬傒僗僥乕僞僗儗僕僗僞掕媊 0DH, 0x80偼僗僥乕僞僗偺傒 */
#define	INT_USBADONE	0x01	/* 僠儍儞僱儖俙憲怣姰椆 */
#define	INT_USBBDONE	0x02	/* 僠儍儞僱儖俛憲怣姰椆 */
#define	INT_SOFTIM	0x10	/* 俽俷俥僞僀儅 */
#define	INT_INSREM	0x20	/* 僨僶僀僗憓擖乛堷偒敳偒 */
#define	INT_DEVDET	0x40	/* 僨僶僀僗敪尒 */
#define	INT_DPLUS	0x80	/* 俢亄儔僀儞偺忬懺 */

/* 俹俬俢僞僀僾掕媊 03H,0BH */
#define	PID_SETUP	0xd0	/* 僙僢僩傾僢僾僷働僢僩 */
#define	PID_IN		0x90	/* 俬俶僷働僢僩 */
#define	PID_OUT		0x10	/* 俷倀俿僷働僢僩 */
#define	PID_SOF		0x50	/*  */
#define	PID_PREAMBLE	0xc0	/* 僾儕傾儞僽儖 */
#define	PID_NAK		0xa0	/*  */
#define	PID_STALL	0xe0	/*  */
#define	PID_DATA0	0x30	/*  */
#define	PID_DATA1	0xb0	/*  */

/* 俰亅俲僾儘僌儔儈儞僌僗僥乕僩掕媊 05H */
#define	NORMAL		0x00	/* 僲乕儅儖僆儁儗乕僥傿儞僌儌乕僪 */
#define	USBRST		0x08	/* 倀俽俛偺儕僙僢僩 */
#define	JSTATE		0x10	/* 俰僗僥乕僩 */
#define	KSTATE		0x18	/* 俲僗僥乕僩 */

/* 僗僺乕僪掕媊 */
#define	NOSPEED		0	/*  */
#define	LOWSPEED	1	/*  */
#define	FULLSPEED	2	/*  */

/* 倀俽俛僨僶僀僗忣曬 */
struct USBDEVINF{
	char	addr;
	char	txep;
	char	rxep;
	char	tgl;
};
typedef struct USBDEVINF	devinf_t;

/**/
struct USBDEVDESC{
	byte	length;		/* bLength 僨傿僗僋儕僾僞偺挿偝(捠忢侾俉僶僀僩) */
	byte	type;		/* bDescriptor 僨傿僗僋儕僾僞偺庬暿 */
	word	usbver;		/* bcdUSB 倀俽俛僶乕僕儑儞 */
	byte	class;		/* bDeviceClass 僨僶僀僗僋儔僗僐乕僪(0:僋儔僗側偟) */
	byte	subclass;	/* bDeviceSubClass 僨僶僀僗僒僽僋儔僗 */
	byte	protocol;	/* bDeviceProtocol 僾儘僩僐儖僐乕僪 */
	byte	maxsize;	/* bMaxPacketSize0 */
				/* 僐儞僩儘乕儖丒僄儞僪億僀儞僩偺嵟戝僷働僢僩僒僀僘(捠忢俉僶僀僩) */
};
typedef struct USBDEVDESC	devdesc_t;


/* 僾儘僩僞僀僾愰尵 */
extern	byte	sl_read( char addr );
extern	void	sl_write( char addr, byte data );
extern	void	sl_burstread( char addr, char *buf, int size );
extern	void	sl_burstwrite( char addr, char *buf, int size );
extern	void	sl_init( void );
extern	int	write_setup( char *data );
extern	void	close_sl811( void );
extern	int	write_sl811( char *data, int size );
extern	int	read_sl811( char *data, int size );
extern	void	set_usbdevaddr( char addr );
extern	bool	plugnplay( void );
extern	bool	checkdevice( void );


/* end of sl811h.h */

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -