OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 214012|回复: 288

USB倾情奉献(注释版)

  [复制链接]
头像被屏蔽

27

主题

61

帖子

2

精华

禁止发言

积分
518
金钱
518
注册时间
2011-1-10
在线时间
4 小时
发表于 2011-7-22 16:11:29 | 显示全部楼层 |阅读模式

 花了一个多月,终于学会了USB,呵呵,感觉还是蛮头疼的,希望新手能够耐心的看,时间长了,自然就懂了,

1、STM32里面,USB设备是怎么接受USB主机发送的各种请求?接受以后存放在哪里??
答:根据地址和端点来接收请求,接收后一般存放在缓冲区,STM32芯片就有一个USB和CAN共享的专用缓冲区。即缓冲区描述表在USB_core.c下的u8 Setup0_Process(void)函数里面可以看到,刚开始的时候,看到了也不懂,现在懂了^_^
2、(*(volatile unsigned long *)
答:不懂的看这个http://www.openedv.com/posts/list/918.htm

3、USB的IO口需不需要复用,如果要复用,怎么设置呢?没发现手册上有讲啊,而且那2个口,PA11,PA12默认是IO口啊!怎么设置呢
答:在此部分代码用于实现我们在硬件设计部分提到的功能,USB的配置通过三个函数完成:USB_Interrupts_Config()、Set_USBClock()和USB_Init(),第一个函数用于设置USB唤醒中断和USB低优先级数据处理中断,Set_USBClock函数用于 配置USB时钟,也就是从72M的主频得到48M的USB时钟(1.5分频)。最后USB_Init()函数用于初始化USB,最主要的就是调用了Joystick_init函数,开启了USB部分的电源等。这里需要特别说明的是,USB配置并没有对PA11和PA12这两个IO口进行设置,是因为,一旦开启了USB电源(USB_CNTR的PDWN位清零)PA11和PA12将不再作为其他功能使用,仅供USB使用,所以在开启了USB电源之后不论您怎么配置这两个IO口,都是无效的。要在此获取这两个IO口的配置权,则需要关闭USB电源,也就是置位USB_CNTR的PDWN位。 
有什么问题,大家自己多思考下,这是我学习时候的问题,

http://www.openedv.com/posts/list/411.htm
这个帖子好像没人去看过。其实这个帖子对刚接触USB的新手有很大的帮助啊!
很多人都在学习USB,不妨大家拿出些心得,帮帮忙我们这些菜鸟吧!!

签名被屏蔽
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

3

主题

16

帖子

0

精华

初级会员

Rank: 2

积分
68
金钱
68
注册时间
2011-1-4
在线时间
4 小时
发表于 2011-12-29 11:21:12 | 显示全部楼层
回复 支持 1 反对 0

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165516
金钱
165516
注册时间
2010-12-1
在线时间
2116 小时
发表于 2011-7-22 16:27:35 | 显示全部楼层
非常好.
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

头像被屏蔽

27

主题

61

帖子

2

精华

禁止发言

积分
518
金钱
518
注册时间
2011-1-10
在线时间
4 小时
 楼主| 发表于 2011-7-22 16:48:34 | 显示全部楼层

一连接,USB设备接受复位信号,发生USB复位时,USB模块进入前面章节中描述过的系统复位状态:所有端点的通信都被禁止(USB模块不会响应任何分组)。在USB复位后,USB模块被使能,同时地址为0的默认控制端点(端点0)也需要被使能。这可以通过配置USB_DADDR寄存器的EF位,EP0R寄存器和相关的分组缓冲区来实现。在USB设备的枚举阶段,主机将分配给设备一个唯一的地址,这个地址必须写入USB_DADDR寄存器的ADD[6:0]位中,同时配置其他所需的端点。
当复位中断产生时,应用程序必需在中断产生后的10ms之内使能端点0的传输。(端点0是控制传输)
控制传输由3个阶段组成,首先是主机发送SETUP分组的SETUP阶段,然后是主机发送零个或多个数据的数据阶段,最后是状态阶段,由与数据阶段方向相反的数据分组构成。SETUP传输只发生在控制端点,它非常类似于OUT分组的传输过程。使能SETUP传输除了需要分别初始化DTOG_TX位为’1’,DTOG_RX位为’0’外,还需要设置STAT_TX位和STAT_RX位为10(NAK),由应用程序根据SETUP分组的相应字段决定后面的传输是IN还是OUT。控制端点在每次发生CTR_RX中断时,都必须检查USB_EpnR寄存器的SETUP位,以识别是普通的OUT分组还是SETUP分组。USB设备应该能够通过SETUP分组中的相应数据决定数据阶段传输的字节数和方向,并且能在发生错误的情况下发送STALL分组,拒绝数据的传输。因此在数据阶段,未被使用到的方向都应该被设置成STALL,并且在开始传输数据阶段的最后一个数据分组时,其反方向的传输仍设成NAK状态,这样,即使主机立刻改变了传输方向(进入状态阶段),仍然可以保持为等待控制传输结束的状态。在控制传输成功结束后,应用程序可以把NAK变为VALD,如果控制传输出错,就改为STALL。此时,如果状态分组是由主机发送给设备的,那么STATUS_OUT位(USB_EPnR寄存器中的EP_KIND)应该被置位,只有这样,在状态传输过程中收到了非零长度的数据分组,才会产生传输错误。在完成状态传输阶段后,应用程序应该清除STATUS_OUT位,并且将STAT_RX设为VALID表示已准备好接收一个新的命令请求,STAT_TX则设为NAK,表示在下一个SETUP分组传输完成前,不接受数据传输的请求。
USB规范定义SETUP分组不能以非ACK握手分组来响应,如果SETUP分组传输失败,则会引发下一个SETUP分组。因此,以NAK或STALL分组响应主机的SETUP分组是被禁止的。
当STAT_RX位被设置为’01’(STALL)或’10’(NAK)时,如果收到SETUP分组,USB模块会接收分组,开始分组所要求的数据传输,并回送ACK握手分组。如果应用程序在处理前一个CTR_RX事件时USB模块又收到了SETUP分组(即CTR_RX仍然保持置位),USB模块会丢掉收到的SETUP分组,并且不回答任何握手分组,以此来模拟一个接收错误,迫使主机再次发送SETUP分组。这样做是为了避免丢失紧随一次CTR_RX中断之后的又一个SETUP分组传输。
(控制传输的程序,可以在usb_core.c中看到,)
我想,这样的话,大家应该基本懂USB了,USB协议的第九章,如果你想弄懂USB,必看,
程序里面对应的in或者out 都是对应USB主机来说的,in:设备传输数据给主机,out:主机输出给设备,
对USB枚举有疑问的,可以买本圈圈 的书看看,或者,看下面的USB硬件设计(个人感觉这个对USB学习蛮有帮助的)
如果还有疑问,提出来吧,对于基础的,我可以回答,太深奥了就无能为了,

签名被屏蔽
回复 支持 反对

使用道具 举报

头像被屏蔽

27

主题

61

帖子

2

精华

禁止发言

积分
518
金钱
518
注册时间
2011-1-10
在线时间
4 小时
 楼主| 发表于 2011-7-22 17:00:04 | 显示全部楼层
大家要记得回帖,好满足一下兄弟我小小的虚荣心^_^,希望大家能有更多的源码上传,独乐乐不如众乐乐,祝原子的论坛越做越好,
签名被屏蔽
回复 支持 反对

使用道具 举报

13

主题

32

帖子

0

精华

初级会员

Rank: 2

积分
122
金钱
122
注册时间
2011-1-20
在线时间
5 小时
发表于 2011-7-22 17:00:06 | 显示全部楼层
谢谢哈~~ 俺想玩玩USB采集卡,可惜实力不够,学习了~~
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165516
金钱
165516
注册时间
2010-12-1
在线时间
2116 小时
发表于 2011-7-22 17:12:56 | 显示全部楼层
粉猪好久没来了,呵呵.
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

5

主题

96

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
235
金钱
235
注册时间
2010-12-16
在线时间
28 小时
发表于 2011-7-22 17:42:29 | 显示全部楼层
一直在关注呢!!!
回复 支持 反对

使用道具 举报

头像被屏蔽

95

主题

159

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
442
金钱
442
注册时间
2011-3-22
在线时间
6 小时
发表于 2011-7-22 19:57:20 | 显示全部楼层
关注中,虽然小弟现在不太理解,总有天,我能懂的,呵呵
回复 支持 反对

使用道具 举报

6

主题

34

帖子

0

精华

初级会员

Rank: 2

积分
87
金钱
87
注册时间
2011-3-22
在线时间
3 小时
发表于 2011-7-23 12:17:53 | 显示全部楼层
感谢楼主。
回复 支持 反对

使用道具 举报

38

主题

248

帖子

0

精华

版主

Rank: 7Rank: 7Rank: 7

积分
463
金钱
463
注册时间
2011-2-11
在线时间
12 小时
发表于 2011-7-23 15:22:15 | 显示全部楼层
楼主我最近要学习usb,你能给点指引吗?怎么学习好一些?
Openedv大力支持的开源RTOS  --Trochili RTOS(飞鸟)
回复 支持 反对

使用道具 举报

21

主题

135

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
238
金钱
238
注册时间
2011-4-12
在线时间
0 小时
发表于 2011-7-24 01:05:29 | 显示全部楼层
都说USB很难。还没涉足。先收藏了。谢谢楼主
自信人生一百年
回复 支持 反对

使用道具 举报

42

主题

568

帖子

0

精华

高级会员

Rank: 4

积分
784
金钱
784
注册时间
2010-12-19
在线时间
5 小时
发表于 2011-7-24 11:10:32 | 显示全部楼层
哇!谢谢LZ了.刚好公司给我的任务需要USB.太爽了!
一个上蹿下跳的猴子~~~
回复 支持 反对

使用道具 举报

15

主题

64

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
272
金钱
272
注册时间
2011-3-21
在线时间
38 小时
发表于 2011-7-24 11:50:00 | 显示全部楼层
谢谢楼主分享资料,
eagle?
回复 支持 反对

使用道具 举报

5

主题

15

帖子

0

精华

初级会员

Rank: 2

积分
125
金钱
125
注册时间
2011-7-7
在线时间
23 小时
发表于 2011-7-24 15:11:49 | 显示全部楼层
mark,学习了,太强大了
回复 支持 反对

使用道具 举报

头像被屏蔽

27

主题

61

帖子

2

精华

禁止发言

积分
518
金钱
518
注册时间
2011-1-10
在线时间
4 小时
 楼主| 发表于 2011-7-25 08:35:36 | 显示全部楼层
呵呵,对大家有帮助就好,希望大家也能分享自己的经验,多多帮助别人,祝原子的论坛越办越好!
签名被屏蔽
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165516
金钱
165516
注册时间
2010-12-1
在线时间
2116 小时
发表于 2011-7-25 08:53:25 | 显示全部楼层
谢谢
回复 支持 反对

使用道具 举报

0

主题

1

帖子

0

精华

新手入门

积分
21
金钱
21
注册时间
2011-7-21
在线时间
0 小时
发表于 2011-7-29 16:54:00 | 显示全部楼层
感谢楼主
回复 支持 反对

使用道具 举报

0

主题

1

帖子

0

精华

新手入门

积分
21
金钱
21
注册时间
2011-7-30
在线时间
0 小时
发表于 2011-7-30 01:47:43 | 显示全部楼层

谢谢b~~想玩玩USB采集卡,学习了~~

回复 支持 反对

使用道具 举报

0

主题

1

帖子

0

精华

新手入门

积分
21
金钱
21
注册时间
2011-8-3
在线时间
0 小时
发表于 2011-8-3 21:27:43 | 显示全部楼层
正在找USB,,谢谢
回复 支持 反对

使用道具 举报

1

主题

15

帖子

0

精华

初级会员

Rank: 2

积分
88
金钱
88
注册时间
2011-7-22
在线时间
11 小时
发表于 2011-8-10 07:59:36 | 显示全部楼层
好东西好东西,正在研究这个呢呵呵,一定要回。
人外人天外天,学习无止境!
回复 支持 反对

使用道具 举报

0

主题

6

帖子

0

精华

新手上路

积分
36
金钱
36
注册时间
2011-7-21
在线时间
1 小时
发表于 2011-8-14 15:16:48 | 显示全部楼层
好贴,要顶
回复 支持 反对

使用道具 举报

7

主题

30

帖子

0

精华

初级会员

Rank: 2

积分
146
金钱
146
注册时间
2011-8-2
在线时间
33 小时
发表于 2011-8-18 09:26:03 | 显示全部楼层
谢谢分享了,最近也在搞这个
我只希望我一直能保持着满腔的热情去玩!!!!
回复 支持 反对

使用道具 举报

1

主题

17

帖子

0

精华

新手上路

积分
41
金钱
41
注册时间
2011-5-13
在线时间
0 小时
发表于 2011-8-18 10:43:20 | 显示全部楼层
先收藏了,谢谢楼主
桥流水不流
回复 支持 反对

使用道具 举报

13

主题

104

帖子

0

精华

初级会员

Rank: 2

积分
179
金钱
179
注册时间
2011-8-2
在线时间
0 小时
发表于 2011-8-18 20:00:04 | 显示全部楼层
等不久也来玩usb
回复 支持 反对

使用道具 举报

6

主题

37

帖子

0

精华

初级会员

Rank: 2

积分
83
金钱
83
注册时间
2011-3-25
在线时间
0 小时
发表于 2011-8-19 08:55:21 | 显示全部楼层
谢谢分享
回复 支持 反对

使用道具 举报

0

主题

8

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1648
金钱
1648
注册时间
2011-8-22
在线时间
146 小时
发表于 2011-8-22 12:17:13 | 显示全部楼层
谢谢分享
回复 支持 反对

使用道具 举报

0

主题

0

帖子

0

精华

新手入门

积分
9
金钱
9
注册时间
2018-12-29
在线时间
3 小时
发表于 2011-8-23 10:45:36 | 显示全部楼层
usb 以后的趋势 肯定是要去学的
回复 支持 反对

使用道具 举报

9

主题

42

帖子

0

精华

初级会员

Rank: 2

积分
102
金钱
102
注册时间
2011-8-11
在线时间
1 小时
发表于 2011-8-28 08:30:08 | 显示全部楼层
帮顶,目前正在搞USB
回复 支持 反对

使用道具 举报

19

主题

156

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
291
金钱
291
注册时间
2011-3-23
在线时间
5 小时
发表于 2011-8-29 08:18:43 | 显示全部楼层
回复 支持 反对

使用道具 举报

3

主题

5

帖子

0

精华

新手上路

积分
29
金钱
29
注册时间
2011-8-24
在线时间
1 小时
发表于 2011-9-2 15:57:01 | 显示全部楼层
谢谢楼主
回复 支持 反对

使用道具 举报

3

主题

5

帖子

0

精华

新手上路

积分
45
金钱
45
注册时间
2011-9-6
在线时间
3 小时
发表于 2011-9-6 11:49:02 | 显示全部楼层
激动了,我也去买个板子玩·········
回复 支持 反对

使用道具 举报

6

主题

114

帖子

0

精华

初级会员

Rank: 2

积分
180
金钱
180
注册时间
2011-2-28
在线时间
8 小时
发表于 2011-9-28 11:58:34 | 显示全部楼层
学习了。
回复 支持 反对

使用道具 举报

6

主题

57

帖子

0

精华

初级会员

Rank: 2

积分
144
金钱
144
注册时间
2011-11-13
在线时间
13 小时
发表于 2011-11-13 20:24:24 | 显示全部楼层
正好想玩玩32收下 谢谢!
回复 支持 反对

使用道具 举报

2

主题

3

帖子

0

精华

新手上路

积分
38
金钱
38
注册时间
2011-11-14
在线时间
3 小时
发表于 2011-11-14 10:18:14 | 显示全部楼层
楼主相当的不错,谢谢。
回复 支持 反对

使用道具 举报

4

主题

11

帖子

0

精华

新手上路

积分
47
金钱
47
注册时间
2011-7-27
在线时间
0 小时
发表于 2011-11-25 10:48:47 | 显示全部楼层
好多人学习USB。。。正准备学,收下了,多谢楼主
回复 支持 反对

使用道具 举报

14

主题

101

帖子

2

精华

中级会员

Rank: 3Rank: 3

积分
493
金钱
493
注册时间
2011-9-6
在线时间
3 小时
发表于 2011-11-25 11:49:21 | 显示全部楼层
USB学习是下一步计划,收藏了,多谢楼主分享!
事无巨细 循序渐进
回复 支持 反对

使用道具 举报

46

主题

1579

帖子

1

精华

金牌会员

Rank: 6Rank: 6

积分
1970
金钱
1970
注册时间
2011-7-17
在线时间
4 小时
发表于 2011-11-25 23:20:59 | 显示全部楼层
顶一下,刚想弄一下USB
Time?And?Relative?Dimension?In?Space.
回复 支持 反对

使用道具 举报

46

主题

1579

帖子

1

精华

金牌会员

Rank: 6Rank: 6

积分
1970
金钱
1970
注册时间
2011-7-17
在线时间
4 小时
发表于 2011-11-25 23:34:04 | 显示全部楼层
好东西,USB库。
Time?And?Relative?Dimension?In?Space.
回复 支持 反对

使用道具 举报

5

主题

43

帖子

0

精华

初级会员

Rank: 2

积分
83
金钱
83
注册时间
2011-12-2
在线时间
0 小时
发表于 2011-12-2 22:53:34 | 显示全部楼层
能下的都下了,虽然现在啥都不懂.多谢楼主分享
回复 支持 反对

使用道具 举报

1

主题

4

帖子

0

精华

新手上路

积分
37
金钱
37
注册时间
2011-12-3
在线时间
2 小时
发表于 2011-12-3 21:25:18 | 显示全部楼层
我现在想用STM32做个掌上示波器!
回复 支持 反对

使用道具 举报

19

主题

68

帖子

0

精华

初级会员

Rank: 2

积分
190
金钱
190
注册时间
2011-9-19
在线时间
8 小时
发表于 2011-12-6 09:08:55 | 显示全部楼层
好东东,好好研究下,呵呵
回复 支持 反对

使用道具 举报

0

主题

9

帖子

0

精华

新手上路

积分
35
金钱
35
注册时间
2011-11-2
在线时间
2 小时
发表于 2011-12-12 13:35:58 | 显示全部楼层
USB  正在学习
时间很短,努力很长
回复 支持 反对

使用道具 举报

0

主题

1

帖子

0

精华

新手入门

积分
21
金钱
21
注册时间
2011-12-13
在线时间
0 小时
发表于 2011-12-13 23:07:03 | 显示全部楼层
感谢楼主,好东西,先了解下,后边再学
回复 支持 反对

使用道具 举报

14

主题

173

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
256
金钱
256
注册时间
2011-10-14
在线时间
2 小时
发表于 2011-12-18 16:04:04 | 显示全部楼层
感谢楼主分享
回复 支持 反对

使用道具 举报

7

主题

18

帖子

0

精华

初级会员

Rank: 2

积分
88
金钱
88
注册时间
2010-12-14
在线时间
8 小时
发表于 2011-12-29 19:58:54 | 显示全部楼层
学习下,谢谢分享
回复 支持 反对

使用道具 举报

10

主题

29

帖子

0

精华

初级会员

Rank: 2

积分
89
金钱
89
注册时间
2010-12-15
在线时间
0 小时
发表于 2011-12-30 09:04:46 | 显示全部楼层
谢谢分享
回复 支持 反对

使用道具 举报

3

主题

19

帖子

0

精华

初级会员

Rank: 2

积分
71
金钱
71
注册时间
2011-12-23
在线时间
5 小时
发表于 2011-12-31 09:19:56 | 显示全部楼层
谢谢楼主分享!
回复 支持 反对

使用道具 举报

1

主题

3

帖子

0

精华

新手入门

积分
27
金钱
27
注册时间
2011-8-28
在线时间
0 小时
发表于 2012-1-4 14:44:32 | 显示全部楼层
谢谢楼主分享
回复 支持 反对

使用道具 举报

12

主题

216

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
313
金钱
313
注册时间
2011-4-7
在线时间
3 小时
发表于 2012-1-4 21:17:57 | 显示全部楼层
mark!
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-5-23 23:45

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表