摘 要:介绍了基于S1C33L11芯片利用嵌入式操作系统的同步
关键词:USB双向通信;S1C33L11;嵌入式操作系统;循环队列
USB作为一种串行通信总线,在嵌入式系统与PC机通信中有着广泛的应用。由于USB 总线是
1嵌入式操作系统中USB双向通信系统整体层次结构
嵌入式操作系统中USB双向通信系统整体层次结构如图1所示。
2硬件系统
2.1S1C33L11及其USB BLOCK简介
S1C33L11是EPSON公司的32位高速,低功耗,低电压MCU。他是以C33 STD 32位RISC CPU为核
S1C33L11内建支持USB1.1协议的全速模式。支持控制、块、同步和中断4种传输方式,支持
2.2S1C33L11DMT01开发板简介
S1C33L11DMT01开发板采用S1C33L11F00A1芯片为核心,外接2 MB RAM,32 MB FLASH,还带
3USB双向通信的设计与实现
本文USB双向通信在基本传输方式上采用USB块传输[1]。他由USB初始化、USB中断
3.1USB双向通信固件程序的设计与实现
(1)循环队列
采用IN传输一个循环队列,OUT传输一个循环队列(以下简称队列),每队列动态分
(2)控制包
为实现双向通信,规定一种控制包格式,读控制包是在USB协议之外自定义的。
控制包固定为5字节。从左到右第一字节为状态字,剩下4字节传送要收发的数据字节数。当
(3)嵌入式操作系统端应用程序读写USB过程
读函数:void ReadUSB(unsigned char * ReadBuffer, DWORD size)函数:
参数说明:unsigned char*ReadBuffer存放数据的指针,DWORD size为要读
实现过程:首先判断循环队列是否为空,不为空则判断自身信号量是否可用,若可用,则从
写函数:void WriteUSB(unsigned char*Write Buffer,DWORD size)函数:
功能:嵌入式系统应用程序通过USB接口向上位机(PC)发送数据。
参数说明:unsigned char * WriteBuffer 存放数据的指针,DWORD size为要写入的数据的
实现过程:首先判断循环队列是否满,不为满则判断自身信号量是否可用,若可用,则向队
(4) USB块传输函数
USB块传输函数是直接和USB硬件打交道的函数,他们直接读取IN和OUT传输通道的FIFO。voi
void BulkOutDataGet(void)其功能是OUT传输过程,即从OUT FIFO中读出数据并向OUT循环
(5) 嵌入式操作系统USB 任务调用函数
void SystemInit(void):MCU初始化(微处理器各控制寄存器和状态初始化过程)
void USBInit(void):USB初始化(包括对循环队列分配内存等)
void USBThread(void):USB运行体(USB工作过程对USB中断进行处理主要包括USB块传输函
void FreeUSB(void):关闭USB和释放由malloc函数分配的循环队列所占内存
3.2上位机(PC)部分
USB函数层(USBD及HCD)由Windows98提供,负责管理USB设备驱动
unsigned char Read(void *pReadBuffer,DWORD Size):从下位机中读取数据
参数说明:void *pBuffer:存放读取数据的缓冲,DWORD Size:需读取数据的大小(字节
返回值:
0x10:驱动出错(指Windows USB 驱动程序出错)
0x20:内存空间不足
0x30:请求的数据大小为0 B
0x02:下位机发送软超时
0x08:读取成功
unsigned char Write(void *pWriteBuffer,DWORD Size):发送数据到下位机
返回值:
0x10:USB驱动出错(Windows USB 驱动程序出错)
0x20:内存空间不足
0x30:请求的数据大小为0 B
0x01:下位机读取数据软超时
0x04:发送成功
void RequestUSB(void *pRequestBuffer,DWORD Size=5):读取下位机返回的操作状态。
参数说明:void *pRequestBuffer:5 B控制包缓冲
其中每次Read或Write函数的调用被分为若干次读/写发送。具体处理是: 设待读写的数据
4结语
基于S1C33L11芯片在嵌入式操作系统基础上实现的USB双向通信严格遵循USB1.1协议,
参考文献
[1]Universal Serial Bus Specification Revision 1.1[S]1998,23:15-206.
[2][美]. Jan Axclson.USB开发大全[M].陈逸译.北京:中国电力出版社
[3]武安河,邰铭,于洪涛.Win2000/XP WDM设备驱动程序开发[M].北京:电


