嵌入式操作系统中USB双向通信的实现
1 嵌入式操作系统中USB双向通信系统整体层次结构
嵌入式操作系统中USB双向通信系统整体层次结构如图1所示。
2.1 S1C33L11及其USB BLOCK简介
S1C33L11是EPSON公司的32位高速,低功耗,低电压MCU。他是以C33 STD 32位RISC CPU为核心,功能强大,除一般外围设备外有LCD控制器,Camera接口,JPEG编码,USB1.1功能控制器,MAC(SPI模式)接口,SmartMedia接口,还包括3个振荡电路和2个锁相环(PLL),内置16kB RAM ,无ROM。
S1C33L11内建支持USB1.1协议的全速模式。支持控制、块、同步和中断4种传输方式,支持4个通用通道(Epr(r=a,b,c,d))和一个控制通道(endpoint0),并为每个通道(endpoint)提供1 kB的FIFO。
2.2 S1C33L11DMT01开发板简介
S1C33L11DMT01开发板采用S1C33L11F00A1芯片为核心,外接2 MB RAM,32 MB FLASH,还带有STN TFT 双屏彩色LCD等,此硬件环境适用于各种嵌入式操作系统的运行及多媒体手机、PDA等产品的开发。
3 USB双向通信的设计与实现
本文USB双向通信在基本传输方式上采用USB块传输[1]。他由USB初始化、USB中断处理、控制传输和块传输几部分组成[2]。在实现双向通信上,具体通信机制是:嵌入式应用程序通过读写循环队列和信号量状态与USB 硬件模块中的OUT 和IN FIFO相互通信,而USB下位机与上位机(PC)的读写通信则通过上位机对控制包的读写来实现,最后通过循环队列、信号量、控制包3者结合达到USB双向通信的目的。
3.1 USB双向通信固件程序的设计与实现
(1)循环队列
采用IN传输一个循环队列,OUT传输一个循环队列(以下简称队列),每队列动态分配32 kB。OUT队列做为OUT传输时的二级缓冲,即OUT传输时的FIFO的数据必须先放入OUT队列才能由嵌入式操作系统读写;IN队列做为IN传输时的二级缓冲,即IN传输时的FIFO数据必须来自IN队列;嵌入式操作系统只对二级缓冲进行读写,操作系统对队列的管理是采用信号量通知机制来实现。
(2)控制包
为实现双向通信,规定一种控制包格式,读控制包是在USB协议之外自定义的。
数字通信相关文章:数字通信原理
通信相关文章:通信原理
评论