📄 sl811hst.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 + -