📄 usb51s.txt
字号:
usb51s.lib V0.4 2002-07-09
1)端点1的读写由4byte改为16byte。
2)使得固件速度更快了。在87C52x2(6clock),24MHz中传输速度可以达到160K Byte/S左右。
3)增加了D12_COMMAND和D12_DATA,用于设置D12的命令和数据地址。这样D12的控制地址由原来的0xff03和0xff02变为可以用户设定。当用户同时使用了D12和外部RAM时,D12的片选信号可以由高8位来决定,但在高8位的地址不能与外部RAM有重复。D12_COMMAND和D12_DATA必须在开中断前赋值。
使用V0.4的库的时候请使用keil C V6.14以上版本的编译器和连接器。
4)增加D12接收缓冲区监视位。
bEPPflags.bits.ep1buf_full:端点1输出缓冲区全满标志
bEPPflags.bits.ep2buf_full:端点2输出缓冲区全满标志
当缓冲区全满标志为1时,表示D12对应的接收缓冲区已经接收满了,用户程序可以再调用readendpoint的命令把数据读取。
定义说明:
USB事件标志
typedef union _epp_flags
{
struct _flags
{
unsigned char timer : 1; //时间溢出
unsigned char bus_reset : 1; //总线复位标志
unsigned char suspend : 1; //挂起改变标志
unsigned char setup_packet : 1; //收到setup包
unsigned char remote_wakeup : 1; //远程唤醒标志(未使用)
unsigned char in_isr : 1; //USB中断服务标志
unsigned char control_state : 2; //控制端点处理状态
//0:IDEL 空闲状态
//1:TRANSMIT 数据发送状态
//2:RECEIVE 数据接收状态
unsigned char configuration : 1; //配置标志(0:未配置;1:已经配置)
unsigned char command : 1; //未使用
unsigned char ep1_rxdone : 1; //端点1收到数据标志
unsigned char ep2_rxdone : 1; //端点2收到数据标志
unsigned char ep1buf_full : 1; //端点1输出双缓冲区满标志
unsigned char ep2buf_full : 1; //端点2输出双缓冲区满标志
} bits;
unsigned short value;
} EPPFLAGS;
USB设备请求寄存器
typedef struct _device_request
{
unsigned char bmRequestType; //请求类型(数据传输方向、类型、接收器)
unsigned char bRequest; //USB请求
unsigned short wValue; //USB请求值
unsigned short wIndex; //USB请求索引
unsigned short wLength; //计数长度
} DEVICE_REQUEST;
Setup包数据缓冲区
typedef struct _control_xfer
{
DEVICE_REQUEST DeviceRequest; //USB设备请求结构体,8个字节
unsigned short wLength; //传输数据的总字节数
unsigned short wCount; //传输字节数统计
unsigned char * pData; //传输数据的指针
unsigned char dataBuffer[MAX_CONTROLDATA_SIZE]; //请求的数据
} CONTROL_XFER;
usb51s.lib V0.3 2002-05-22
内部测试用。
usb51s.lib V0.2 2002-04-08
修改了V0.1中的总线连接配置,加大的连接的可靠性,减少了错误包的发生。
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -