前阵子一直忙着复习考试,都没没有时间学习USB,还好,现在考完了,终于有时间了.好好学习我USB了.预计是先把固件程序用控制传输发送数据调试成功.然后在Linux下编写相应的USB驱动,先点亮LED灯.下面说说USB的固件程序是怎样设计的.
编程环境是:Keil51.板子是用CY7C68013A做的USB最小系统.下载软件是:CYconsole.
首 先说程序框架:在主函数中定义自己的设备请求号,在请求号中有相应的设备请求处理函数,在设备请求处理函数中可以对端点,进行设置.USB端点是最基本 的,端点的集合就是接口,而接口的集合就是配置.设备请求在固件程序中是被放在一个叫做SETUPDAT的八字节数组中的第2位, 即:SETUPDAT[1]中.驱动程序通过给该结构中发送设备请求来控制响应的USB设备.在USB固件程序的框架中通常是通过switch-case 语句来处理USB设备请求的.以下是一个定义一个数据发送和接收的设备请求,通过端点0以及使用控制传输方式通信:
#define SendData 0xB1
#define ReceiveData 0xB2
switch(SETUPDAT[1])
case SendData:
DR_Send();
case ReceiveData:
DR_Receive();
/*******************两个函数具体实现如下********************/
BOOL DR_Send(void)
{
EP0BUF[0]=0XB1; /*使用端点0来处理0xB1请求*/
EP0BCH=0;
EP0BCL=2; /*数据长度*/
EZUSB_Delay(100); /*延时,等待处理*/
USB固件程序设计初步
最新推荐文章于 2018-11-04 19:09:00 发布
![](https://img-home.csdnimg.cn/images/20240711042549.png)