社区首页
技术讨论创新帖
全部新帖
资料区
社区活动
联系管理员
★ 社区积分制度
★ 新手必读
★ 申请版主★
请
登录
后使用快捷导航
没有帐号?
注册
首页
|
电子技术
|
嵌入式
模拟电子
单片机
电源管理
传感器
半导体
电子应用
|
工业控制
物联网
汽车电子
网络通信
医疗电子
手机便携
测试测量
安防电子
家用电子
机器人
新能源
电子头条
|
社区
|
论坛
测评
博客
大学堂
|
下载
|
下载中心
电路图
精品文集
电路图
|
参考设计
|
Datasheet
|
活动
|
直播
datasheet
datasheet
文章
搜索
登录
注册
中文
En
论坛
切换旧版
电子工程世界-论坛
»
论坛
›
电子技术交流
›
嵌入式系统
›
如何对usb设备的多个端点进行读写
返回列表
发新帖
回复
阅
6993
|
回
6
menglin
当前离线
一粒金砂(初级)
最后登录
2007-10-28
在线时间
0 小时
威望
0分
芯积分
0分
(兑换)
E金币
0枚
(兑换)
(兑换)
好友
0
menglin
75
帖子
0
TA的资源
一粒金砂(初级)
+ 好友
私信
楼主
发表于2008-2-1 17:27
只看该作者
如何对usb设备的多个端点进行读写
[复制链接]
我现在在做一个驱动,使用了5个端点,端点1为in,其他2,3,4,5断点为out的,我有一个1k的数据包,如何利用2,3,4,5端点,对设备进行高速写入,最后可以把usb跑到800-900k每秒
设备
,
数据包
,
如何
,
断点
此帖出自
嵌入式系统论坛
最新回复
mingboal
好像没那么简单,呵呵.
详情
回复
发表于 2008-5-1 04:20
点赞
关注
(0)
嵌入式论坛
嵌入式开发
嵌入式技术
嵌入式教程
回复
分享
扫一扫,分享给好友
复制链接分享
链接复制成功,分享给好友
举报
提升卡
变色卡
千斤顶
Sappy
Sappy
当前离线
一粒金砂(初级)
最后登录
2017-7-8
在线时间
2 小时
威望
4分
芯积分
0分
(兑换)
E金币
0枚
(兑换)
(兑换)
好友
0
68
帖子
0
TA的资源
一粒金砂(初级)
+ 好友
私信
沙发
发表于2008-2-27 17:12
只看该作者
学习
此帖出自
嵌入式系统论坛
嵌入式培训
嵌入式系统
嵌入式学习
回复
举报
zx8227112
zx8227112
当前离线
一粒金砂(初级)
最后登录
2018-8-14
在线时间
1 小时
威望
0分
芯积分
0分
(兑换)
E金币
0枚
(兑换)
(兑换)
好友
0
70
帖子
0
TA的资源
一粒金砂(初级)
+ 好友
私信
板凳
发表于2008-2-28 13:43
只看该作者
[转贴] 通用串行总线(USB)是一种串行接口,具有自动配置能力和良好的兼容性,从而简化了计算机与外设的连接,被计算机外设硬件制造商广泛采纳。USB总线标准由1.1版升级到2.0版后,传输率由12Mbps增加到了480Mbps,更适宜于高速数据传输。USB设备支持打印机、扫描仪、数码相机等外设时,由于这些外设与主机间传输的数据量大,要求驱动程序采用Bulk模式进行高速数据传输。
USB应用程序接口主要功能是对USB驱动器进行软硬件初始化、打开端口、关闭端口、读端口、写端口和端口控制操作。当设备驱动器装入系统设备表时,I/O系统就调用该应用程序接口。
USB应用程序接口的一个例程所包含的函数:
?USB_init( ) -- USB端口驱动函数的安装和初始化、硬件配置。
?USB_open( ) -- 打开USB端口。
?USB_close( ) -- 关闭USB端口。
?USB_read( ) -- 对USB端口进行读操作。
?USB_write( ) -- 对USB端口进行写操作。
?USB_ioctl( ) -- 对USB设备进行I/O控制操作。
USB设备驱动函数
1、USB_init()-- 初始化USB端口
USB_init函数初始化特定USB端口驱动器,进行软硬件配置。
初始化步骤如下:
(1) 将USB设备驱动器安装到I/O系统设备表中。
(2) 获取USB控制器使用的中断号。
(3) 获取各端口所需的系统资源,包括内存、信号量和消息队列。
(4) 初始化USB驱动器数据结构与USB端口状态寄存器。
(5) 启动USB标准事件处理程序。
(6) 启用控制端口0和USB中断最小支持集。
2、USB_open()-- 打开USB端口
USB_open函数允许应用程序打开一个USB端口,选择DMA数据传输方式。
执行打开调用的典型步骤如下:
(1) 如果不是默认的控制端口0,要检查端口状态是否为"CONFIGURED"。
(2) 如果不允许多次打开,要确认端口还没有打开。
(3) 确认端口对当前选择的接口有效。
(4) 选择DMA传输,设置DMA控制器使用该端口的FIFO作为目的地址。
(5) 设置端口为打开状态。
3、USB_close()-- 关闭USB端口
USB_close函数允许USB应用程序关闭一个端口,并关闭DMA通道。
执行关闭调用的典型步骤为:
(1) 关闭DMA通道,放弃端口对DMA控制器的使用。
(2) 设置端口为关闭状态。
4、USB_read()-- 对USB端口进行读操作
USB_read函数允许USB应用程序从输出端口或控制端口读取数据。
调用读函数的典型步骤为:
(1) 设置端口号、类型和方向。
(2) 确认端口处于打开状态。
(3) 设置端口信号量,避免多次调用。
(4) 调用readDMA( ) 进行DMA写操作。函数内执行步骤为:
(a) 启动DMA从端口接收FIFO的读操作,将数据从端口传送到内存。
(b) 等待DMA完成中断。(DMA中断向端口消息队列发送一条消息表示数据传输完成。)
(c) 重复进行(a)~(c)步骤直至接收到全部数据或USB主机结束传输。如果USB控制器检测到短包中断或零字节包,或者出现等待超时,则停止DMA传送,并转(d)步骤执行。
(d) 向USB主机发送一个零字节包,完成控制状态步骤。
(5) 释放端口信号量。
(6) 返回接收到的字节数或错误信息。
5、USB_write()-- 对USB端口进行写操作
USB_write函数允许USB应用程序写数据到输入端口或控制端口。
执行写调用的典型步骤为:
(1) 确认端口号、类型和方向。
(2) 确认端口处于打开状态。
(3) 获取端口信号量,避免多次调用。
(4) 调用writeDMA( )进行DMA写操作。函数内执行步骤为:
(a) DMA将内存数据传送到目标端口的FIFO,并等待DMA完成中断。
(b) 若从接收FIFO接收到USB主机的一个零字节包,或者出现等待超时,则退出并返回传输的字节数。
(c) 重复执行(a)~(c)步骤直至全部数据传输完毕时,转(d)步骤执行。
(d) 强制向USB主机发送最后的零字节包或短包用来结束传输过程。
(5) 如果是控制端口,等待来自USB主机的零字节包,完成控制状态步骤。
(6) 释放端口信号量。
(7) 返回传输的字节数或错误信息。
6、USB_ioctl()-- 对USB设备进行I/O控制操作
USB_ioctl函数设置端口状态寄存器并执行I/O端口控制功能。
USB应用程序根据控制对象不同分别调用提供应用程序控制USB接口的能力的controlIoctl()和epIoctl()函数。controlIoctl()函数执行USB控制器整体I/O出控制功能。epIoctl()函数执行个别USB端口的I/O控制功能。。
1) controlIoctl( ) -- 控制器控制函数
controlIoctl()函数对USB控制器进行控制操作。执行I/O功能之前获取USB控制器信号量,避免多次调用影响正在传输数据的端口。完成I/O操作后释放信号量。
USB控制器应支持的控制功能包括:
?支持远程唤醒功能。
?设置USB端口进入/退出挂起状态。
?复位USB端口。
?设置USB控制器消息队列等待超时。
?为DMA选择端口FIFO。
?允许/禁止可选中断。
?读取帧时间戳起始位。
?进行枚举测试。
?返回接口、备用接口和当前USB端口配置状态。
2) epIoctl() -- 端口控制函数
epIoctl()函数对端口进行控制操作。执行I/O功能之前获取USB控制器信号量,避免多次调用影响正在传输数据的端口。完成I/O操作后释放信号量。
端口应支持的控制功能包括:
(1) 获得USB端口状态。
(2) 设置USB端口进入/退出阻塞状态。
(3) 设置USB端口消息队列等待超时。
USB中断服务程序
USB控制器产生单一中断,多个端口共享。每个端口产生ACK、NACK/ERROR中断。输出端口产生接收零字节包或短包中断。控制端口0接收设置包时产生中断。USB控制器产生USB事件中断,如帧起始(SOF)、挂起、恢复和复位。
USB中断服务程序执行下列步骤:
(1) 识别发生了USB中断的类型。
(2) 清除中断产生的条件。
(3) 读USB状态寄存器,获取当前配置、接口或帧起始时间戳状态信息。
(4) 向USB控制器消息队列或回调函数的接收消息队列发送一条消息。
USB标准事件处理程序
USB驱动器初始化后,启动USB标准事件处理程序负责处理枚举过程和异步USB事件。
事件处理程序使用控制端口0,直到完成枚举过程。当USB应用程序处于非活动状态时,除控制端口0以外端口均不可访问。事件处理程序在端口0上执行控制操作,响应USB标准请求,并负责通知USB应用程序枚举完成和接口活动状态,USB事件通过回调接口传递到USB外设应用程序。当对USB端口枚举操作完成,USB应用程序就可打开并使用USB端口。
处理一个USB任务的执行过程为:
(1) 读取USB控制器消息队列。
(2) 如果接收到设置包,则调用标准请求处理函数。
(3) 如果接收到事件,则调用USB事件处理函数。
(4) 确定当前状态和有效配置/接口。
(5) 更新USB控制器和端口数据结构。
(6) 重复(1)~(5)步骤。
USB回调接口程序
回调应用程序接口是向应用程序提供反馈信息的一种接口,包括向应用程序通知USB事件的消息,如复位、配置改变、接口改变、挂起、恢复和帧起始。使用USB的应用程序要以下列方式回应这些消息:
(1) 复位 关闭端口,等待枚举测试。
(2) 配置改变 关闭端口,按新配置打开端口。
(3) 接口改变 关闭端口,从新接口打开端口。
(4) 挂起 进入低功耗模式。
(5) 恢复 退出低功耗模式。
(6) 帧起始 执行应用程序规定的处理。
总结
本文提供了进行USB端口Bulk模式驱动程序设计的过程,实现在USB接口设备与Host主机之间进行高速数据传输,对于嵌入式环境以及windows多线程环境下的USB设备的高速数据传输同样适用。
此帖出自
嵌入式系统论坛
回复
举报
howard_lewes
howard_lewes
当前离线
一粒金砂(初级)
最后登录
2007-11-26
在线时间
0 小时
威望
0分
芯积分
0分
(兑换)
E金币
0枚
(兑换)
(兑换)
好友
0
87
帖子
0
TA的资源
一粒金砂(初级)
+ 好友
私信
4
楼
发表于2008-3-7 16:56
只看该作者
不知道楼上的说的是什么系统的,不懂!我只弄WindowsNT的
我的想法是要想速度快,就用两个EP,1和2
345停用
此帖出自
嵌入式系统论坛
回复
举报
jie3303
jie3303
当前离线
一粒金砂(初级)
最后登录
2017-6-18
在线时间
1 小时
威望
0分
芯积分
0分
(兑换)
E金币
0枚
(兑换)
(兑换)
好友
0
79
帖子
0
TA的资源
一粒金砂(初级)
+ 好友
私信
5
楼
发表于2008-3-8 22:14
只看该作者
这样会提速吗?我比较怀疑 还是一个bulk in bulk out的好
此帖出自
嵌入式系统论坛
回复
举报
chenjinmei
chenjinmei
当前离线
一粒金砂(初级)
最后登录
2015-12-19
在线时间
0 小时
威望
2分
芯积分
0分
(兑换)
E金币
0枚
(兑换)
(兑换)
好友
0
74
帖子
0
TA的资源
一粒金砂(初级)
+ 好友
私信
6
楼
发表于2008-5-1 02:02
只看该作者
好像没那么简单,呵呵.
此帖出自
嵌入式系统论坛
回复
举报
mingboal
mingboal
当前离线
一粒金砂(初级)
最后登录
2007-11-26
在线时间
0 小时
威望
0分
芯积分
0分
(兑换)
E金币
0枚
(兑换)
(兑换)
好友
0
89
帖子
0
TA的资源
一粒金砂(初级)
+ 好友
私信
7
楼
发表于2008-5-1 04:20
只看该作者
好像没那么简单,呵呵.
此帖出自
嵌入式系统论坛
回复
举报
返回列表
发新帖
回复
您需要登录后才可以回帖
登录
|
注册
发表回复
回帖后跳转到最后一页
活动
更多>>
走近 AI 重磅新品 STM32N6,解锁在 MCU 部署高性能、节能型边缘 AI!答题有好礼~还有开发板等你拿!
Microchip 直播|多相降压电源控制技术的发展与探讨 报名中!
安世半导体智能工业应用探索站,闯关赢好礼!
PI 电源小课堂:集成式半桥驱动IC BridgeSwitch 2, 助力高效永磁同步电机逆变器的设计
Microchip喊你探索dsPIC33A 芯片,70份好礼等你赢!
【瓜分2500元红包】票选2024 DigiKey “感知万物,乐享生活”创意大赛人气作品TOP3!
DigiKey应用探索站重磅上线!潮流应用,硬核技术探秘,N多干货,一站get!
验证并选择心仪MOSFET,探寻选型奥秘!注册、体验双重好礼等你拿~
开源项目
更多>>
使用基于 LTC4162EUFD-L42 USB PD(C 电缆)的电池充电器和电源路径的典型应用
用于汽车照明的 4-LED 大功率 LED 驱动器
基于51单片机5050七彩灯
100W离线开关稳压器应用电路
LTC1261LIMS8 -4V 发生器的典型应用电路,具有电源有效开关电容器稳压逆变器
LR645N3-G 大电流调节的典型应用
【嵌入式】逐梦壹号-基于STC32的智能小车设计
使用 ON Semiconductor 的 KA7805E 的参考设计
EP53A7LQI 1A同步降压稳压器典型应用电路
OM13031: Hitex LPC4350评估板
随便看看
开发基于碳化硅的25 kW快速直流充电桩:方案概述
我们将回顾可能的拓扑结构,探讨其优点和权衡,并了解系统的骨干,包括一个半桥SiCMOSFET模块。正如我们所了解的,电动车快速充电器通常含一个三相有源整流前端处理来自电网的AC-DC转换并应用功率因数校正(PFC),后接一个DC-DC级提供隔离并使输出电压适应电动 ...
新年积分兑换专场兑换的零食礼包到了,有图片。
汉芯源CW32L021小评
什么是IoT编程工具?
wsprintf()函数的使用,类型转换类型转换类型转换类型转换
帮朋友画的LED灯驱动器原理图及PCB图
ARM入门与学习方案
怎样才能把.c源程序存为ICCAVR的库文件
查找数据手册?
搜索
EEWorld Datasheet 技术支持
热门标签
源代码
单片机
放大器
TI
ST
电源
分立器件
传感器
测试测量
模拟
交直流耐压测试仪
自动增益控制
正交相移键控
限幅放大器
线性调频
电气过载
自动驾驶
PCB电路板
有源逆变
Embedix
相关文章
更多>>
台积电 CFO:2024 年四季度已获首笔 15 亿美元美国《CHIPS》法案资金
1 月 21 日消息,台积电财务长(CFO)黄仁昭在接受美媒 CNBC 采访时表示,该企业已于 2024 年四季度获得了 15 亿美元(IT之家备注:当前约 109.52 亿元人民币)的首笔美国《C
Rapidus 与 IBM 合作在美制造 2nm GAA 原型晶圆亮相,在日试产 4 月启动
1 月 21 日消息,据日媒 EE Times Japan 报道,日本先进半导体制造商 Rapidus 在 2024 年 12 月 11~13 日举行的 SEMICON Japen 2024 上,展
断供先进芯片非本意!黄仁勋:英伟达不能没有中国
1月21日消息,英伟达CEO黄仁勋没有去参加美国当选总统特朗普的就职典礼,现身北京参加公司年会。 期间黄仁勋也是接受媒体的采访,其公开表示,英伟达不能没有中国。 “我们有很多合作伙伴在中国,我们在这
苹果M4 Mac mini曝出USB-C接口问题!随机间歇性断开连接
消息称 SK 海力士有望 2 月启动业界最先进 1c nm 制程 DRAM 内存量产
未经同意出售用户数据,通用汽车遭美国 FTC 处罚
日本三井住友银行推出半导体设备抵押贷款,铠侠已率先获益
联想宣布收购Infinidat,扩充高端企业存储业务
台积电董事长:我们不是美积电 最先进制程不会搬到美国
曝台积电拒绝代工三星Exynos处理器:理由是怕泄密
新帖速递
STM32和无源蜂鸣器播放声音的问题
车规级AECQ200介绍,混合铝电解电容器的选择
嵌入式教程_DSP技术_DSP实验箱操作教程:2-28 搭建轻量级WEB服务器实验
OPA847IDBVR运放器国产替代
AG32VF407测试UART
【得捷电子Follow Me第二期】第一章 收到货物的分享
请问这个红外接收头是什么型号?能用哪个型号代替?谢谢
出售全新未拆封ZYNQ 7Z020 FPGA核心板
用在锂电池供电的水表设置上的LORA模块,当有100块水表集中安装在一个楼道内时,节能
请问一下,当某个端口被设置为 RX0后,这个端口的输入输出方向还有必要设置吗
今年怎么这么难,比疫情时还难,三十了面临失业好迷茫
请教稳压管测试问题
【小华HC32F448测评】关于小华半导体的UART中断发送和PRINTF构造和重定向
【BIGTREETECH PI开发板】 HDMI输出测试
【BIGTREETECH PI开发板】+08.音频测试(zmj)
开发板申请:拥有 AI 加持的 STM32N6570-DK 免费试用 !
申请时间:即日起-3月2日
查看 »
安世半导体智能工业应用探索站,闯关赢好礼!
点击页面内“开始探索”按钮,填写并提交表单;
请根据序号依次完成3个安世半导体智能工业应用的探索,并根据给出的资料完成共计9题(每个应用3题),答对5题以上的玩家即可获得抽奖资格;
每人仅有一次参与答题的机会,请慎重作答,活动结束后,我们将抽取30位玩家赠送礼品。
查看 »
Microchip 直播|多相降压电源控制技术的发展与探讨 报名中!
直播主题:多相降压电源控制技术的发展与探讨
直播时间:2025年2月25日(星期二)上午10:30-11:30
快来报名!
查看 »
回帖赢好礼 | 关于无线技术的那些事儿
【活动时间】即日起—2025年1月31日
【活动好礼】50元京东卡
查看 »
答题赢好礼,PI电源小课堂第3期来啦!
本期内容:集成式半桥驱动IC BridgeSwitch 2, 助力高效永磁同步电机逆变器的设计
活动时间:即日起-2月28日
看视频答题即可赢取京东卡!
查看 »
Microchip喊你探索 dsPIC33A 芯片,70份好礼等你赢!
活动时间:即日起-1月26日
活动奖励:随身Wi-Fi、家用多功能电烤箱、20000mAh充电宝、50元京东卡
查看 »
DigiKey应用探索站重磅上线!潮流应用,硬核技术探秘,N多干货,一站get!
当月好物、热门技术资源、潮流应用技术、特色活动、DigiKey在线实用工具,干货多多~
查看 »
本周精选下载推荐:电源管理基础Dummies
本周小编给大家带来一本超简单、超干货的电子书——《电源管理基础Dummies》!内容深入浅出,排版舒服简洁,分分钟能get到电源管理最核心的知识内容。
查看 »
下载资料赢好礼!看Vicor模块化电源解决方案如何推动创新
活动时间:即日起-2024年12月31日
如何参与:点击活动页内您想了解的模块,找到资料下载即可参与抽奖,活动结束后统一发奖!
查看 »
关闭
站长推荐
1
/9
电子工程世界版权所有
京B2-20211791
京ICP备10001474号-1
电信业务审批[2006]字第258号函
京公网安备 11010802033920号
Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复
返回顶部
返回列表
论坛首页
版块列表
专业技术中心
TI技术论坛
ST传感器与低功耗无线技术论坛
ADI参考电路
DigiKey得捷技术专区
ADI · 世健工业技术
电子技术交流
嵌入式系统
单片机
国产芯片交流
电机驱动控制
FPGA/CPLD
模拟电子
电源技术
PCB技术
RF/无线
传感器
综合技术交流
下载中心专版
大学堂专版
测评中心专版
创意与实践
电子竞赛
DIY/开源硬件专区
淘e淘
创意市集
行业应用
汽车电子
移动便携
医疗电子
工控电子
安防电子
休息一下
聊聊、笑笑、闹闹
工作这点儿事
为我们提意见&公告
EEWorld颁奖专区
信息发布
最新帖子
最新帖子
最新回复
精华
消灭零回复
测评中心
活动中心
积分兑换
E金币兑换
芯积分
厂商专区
TI技术论坛
ST传感器与低功耗无线技术论坛