社区首页
技术讨论创新帖
全部新帖
资料区
社区活动
联系管理员
★ 社区积分制度
★ 新手必读
★ 申请版主★
请
登录
后使用快捷导航
没有帐号?
注册
首页
|
电子技术
|
嵌入式
模拟电子
单片机
电源管理
传感器
半导体
电子应用
|
工业控制
物联网
汽车电子
网络通信
医疗电子
手机便携
测试测量
安防电子
家用电子
机器人
新能源
电子头条
|
社区
|
论坛
测评
博客
大学堂
|
下载
|
下载中心
电路图
精品文集
电路图
|
参考设计
|
Datasheet
|
活动
|
直播
datasheet
datasheet
文章
搜索
登录
注册
论坛
切换旧版
电子工程世界-论坛
»
论坛
›
电子技术交流
›
嵌入式系统
›
如何对usb设备的多个端点进行读写
返回列表
发新帖
回复
阅
6901
|
回
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
只看该作者
好像没那么简单,呵呵.
此帖出自
嵌入式系统论坛
回复
举报
返回列表
发新帖
回复
您需要登录后才可以回帖
登录
|
注册
发表回复
回帖后跳转到最后一页
活动
更多>>
有奖直播报名中!抢占工业4.1先机,WT·世健科技日等你来!
罗姆有奖直播 | 重点解析双极型晶体管的实用选型方法和使用方法
STM32N6终于要发布了,ST首款带有NPU的MCU到底怎么样,欢迎小伙们来STM32全球线上峰会寻找答案!
免费下载 | 安森美电动汽车充电白皮书,看碳化硅如何缓解“里程焦虑”!
是德科技有奖直播 | 应对未来高速算力芯片的设计与测试挑战
TI 有奖直播 | 使用基于 Arm 的 AM6xA 处理器设计智能化楼宇
安世半导体理想二极管与负载开关,保障物联网应用的稳健高效运行
报名直播赢【双肩包、京东卡、水杯】| 高可靠性IGBT的新选择——安世半导体650V IGBT
开源项目
更多>>
LTC3562,具有 I2C 控制功能的高效四通道降压转换器
ADR366A 3.3V 低功耗、低噪声电压基准的典型应用,具有灌电流/拉电流能力
DER-218 - 100W制冷电源
VNQ7050AJ评估板
RD-497,将 FSCQ0765RT 电源开关用于辅助电源应用的参考设计
LT1086CM-3.6 高效率双电源典型应用
AD8604ARZ-REEL7放大器光电二极管电路典型应用
MC78M08ABDTRKG 8V 电流升压稳压器的典型应用
AD9787-EBZ,使用 AD9787 的评估板,14 位,采用 0.18 um CMOS 工艺制造,采用 1.8 V 至 3.3 V 单电源供电
#第六届立创电赛#PC性能监视器
随便看看
关于如何对usb多个端点进行读取
我现在在做一个驱动,使用了5个端点,端点1为in,其他2,3,4,5断点为out的,如何同时任意端点2,3,4,5进行写数据
Linux usb驱动 如何使用不同的端点进行读写数据
现在在写Linux下的USB驱动,如何实现使用不同的端点读写数据啊,如何使用控制端点啊?
打开BOSS一看,推一大堆深圳的职位
今晚闲着无事,无意间打开BOSS直聘看了一下。明明选了广州的,但是BOSS推荐的广州职位基本上都很鸡肋,反而推送了不少深圳地区的职位过来。难道说广州的电子产业已经快要消亡了?还是说单纯只是年末了,所以招人的公司少。但是,不管怎么说,想要跳槽而且想找 ...
delphi 多格式图像显示
两位595驱动8位共阴极数码管的程序问题
用什么方法可以检验配置的FSMC是否正确?
请问:如果某一个timer到时间而没有被关闭,将会有什么结果产生?
整了一天,USBmassstorage还是不行。
u-boot引导linux,在出现如下问题后就不动了……请求帮助!
请大家帮我分析一下我这个ULN2003为什么烧毁
查找数据手册?
搜索
EEWorld Datasheet 技术支持
热门标签
源代码
单片机
放大器
TI
ST
电源
分立器件
传感器
测试测量
模拟
AGV智能搬运机器人
直流无刷电动机
数字电容隔离器
地物光谱仪
磁盘驱动器
理想变压器
滑动变阻器
应用服务器
弱电箱
VGA接口
相关文章
更多>>
欧洲三大芯片巨头,重新审视供应链
在上周刚刚举办的Electronica 2024 CEO圆桌论坛上,英飞凌,恩智浦以及意法半导体三家芯片巨头CEO齐亮相,三家CEO集体表达了对中美关系的担忧,同时三位也有一个共识,即中国在全球半导
消息称铠侠最快明天获上市批准,市值有望达 7500 亿日元
11 月 21 日消息,路透社报道称,在贝恩资本的支持下,铠侠将于当地时间周五(11 月 22 日)获东京证券交易所上市批准。 根据其 IPO 指示价,铠侠的市值预计达到约 7500 亿日元(当前约
美国政府敲定对格芯 15 亿美元《CHIPS》法案补贴,支持后者提升在美产能
11 月 21 日消息,美国商务部当地时间昨日正式宣布将向格芯 GlobalFoundries 提供合计 15 亿美元(当前约 108.71 亿元人民币)的《CHIPS》法案直接资金,具体补贴发放将
SK 海力士宣布量产全球最高的 321 层 1Tb TLC 4D NAND 闪存,计划 2025 上半年对外出货
UWB上车新花样,无线BMS也能用它?
填补国内空白!中国移动、华为等联合发布首颗GSE DPU芯片
三星电子 NRD-K 半导体研发综合体进机,将导入 ASML High NA EUV 光刻设备
苹果揭秘自研芯片成功原因:竞争对手没法用最新尖端技术
芯片大混战将启:高通、联发科涉足笔记本,AMD 被曝入局手机
Exynos 2600 芯片成关键,消息称三星将打响 2nm 芯片反击战
新帖速递
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)
精选推荐
【2024 DigiKey创意大赛】 超声波感测矩阵 小结
CW32L010学习笔记
帮忙分析下EMI不过的原因
报名剩2天:30套RV1106 Linux开发板(带摄像头),邀您挑战边缘AI~
拯救电源EMI的铁三角:电感、磁珠、电容
开关电源上拉电阻和上拉电阻电路图解
启明云端&触觉智能与您相约2024年慕尼黑国际电子元器件博览会,不见不散!
深度学习框架的相关讨论
[STM32H7R/S]测评 ⑦制作一个NANO EDGE AI STUDIO采集数据使用的Data Logger
启明云端&触觉智能与您相约2024年慕尼黑国际电子元器件博览会,不见不散!
等待很久的STM32N6终于要发布了!
ST首款带有NPU的MCU到底怎么样,欢迎小伙们来STM32全球线上峰会寻找答案!报名峰会,还能赢【开发板、京东卡】呦~12月12日14:00不见不散!
查看 »
有奖直播报名| 高可靠性IGBT新选择 —— 安世半导体650V IGBT
【直播时间】12月19日(周四)下午15:00-16:30
【直播好礼】定制双肩商务包、30元京东卡、吸管玻璃杯
查看 »
安世半导体直播报名中
直播主题:安世半导体理想二极管与负载开关,保障物联网应用的稳健高效运行
直播时间:12月17日(周二)下午14:00
报名就有机会获得:定制双肩商务包、30元京东卡、吸管玻璃杯
查看 »
PI 电源小课堂 | 无 DC-DC 变换实现多路高精度输出反激电源
时间:即日起-12月15日
看视频学习电源干货,答题赢取京东卡!
查看 »
参会有好礼 | 2024 瑞萨电子MCU/MPU工业技术研讨会
深圳站:11月30日(周六)深圳湾万怡酒店
上海站:12月06日(周五)上海喜玛拉雅酒店
奖励设置:现金红包、螺丝刀套装或30元京东卡
查看 »
Littelfuse 新品赋能电子产品安全可靠并高效, 10+挑战等你探索!
Littelfuse 应用赋能星球,覆盖了诸多应用痛点及解决办法,邀请工程师一起探索,解锁更多设计力!
查看 »
下载资料赢好礼!看Vicor模块化电源解决方案如何推动创新
活动时间:即日起-2024年12月31日
如何参与:点击活动页内您想了解的模块,找到资料下载即可参与抽奖,活动结束后统一发奖!
查看 »
有奖活动|英飞凌高密度双相电源模块为高性能运算平台而生
活动时间:即日起-12月15日
活动奖励:蓝牙音箱、氮化镓充电器套装、黑色小背包
查看 »
本月精选下载推荐:
Vishay——选型-汽车级表面贴装和通孔超快整流器
查看 »
本周精选下载推荐:电源管理基础Dummies
本周小编给大家带来一本超简单、超干货的电子书——《电源管理基础Dummies》!内容深入浅出,排版舒服简洁,分分钟能get到电源管理最核心的知识内容。
查看 »
关闭
站长推荐
1
/10
电子工程世界版权所有
京B2-20211791
京ICP备10001474号-1
电信业务审批[2006]字第258号函
京公网安备 11010802033920号
Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved
快速回复
返回顶部
返回列表
论坛首页
版块列表
专业技术中心
TI技术论坛
ST传感器与低功耗无线技术论坛
ADI参考电路
DigiKey得捷技术专区
ADI · 世健工业技术
电子技术交流
嵌入式系统
单片机
国产芯片交流
电机驱动控制
FPGA/CPLD
模拟电子
电源技术
PCB技术
RF/无线
传感器
综合技术交流
下载中心专版
大学堂专版
测评中心专版
创意与实践
电子竞赛
DIY/开源硬件专区
淘e淘
创意市集
行业应用
汽车电子
移动便携
医疗电子
工控电子
安防电子
休息一下
聊聊、笑笑、闹闹
工作这点儿事
为我们提意见&公告
EEWorld颁奖专区
信息发布
最新帖子
最新帖子
最新回复
精华
消灭零回复
测评中心
活动中心
积分兑换
E金币兑换
芯积分
厂商专区
TI技术论坛
ST传感器与低功耗无线技术论坛