OpenEdv-开源电子网

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

usb读卡器的实验里面有个问题

[复制链接]

115

主题

548

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2104
金钱
2104
注册时间
2013-11-27
在线时间
518 小时
发表于 2015-8-14 00:14:19 | 显示全部楼层 |阅读模式
5金钱
端点1和2都定义的是批量传输方式;

USB低优先级中断(通道20):可由所有USB事件触发(正确传输,USB复位等)。固件在处
理中断前应当首先确定中断源。
─  USB高优先级中断(通道19):仅能由同步和双缓冲批量传输的正确传输事件触发,目的是
保证最大的传输速率。
─  USB唤醒中断(通道42):由USB挂起模式的唤醒事件触发。

这是数据手册里面的原话,批量传输方式应该是高优先级中断,可是为什么在程序里面根本就没有用到高优先级中断呢?从头到位都是低优先级中断呢?

正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2015-8-16 22:25:56 | 显示全部楼层
回复

使用道具 举报

4

主题

106

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
302
金钱
302
注册时间
2015-7-16
在线时间
29 小时
发表于 2015-8-24 16:03:23 | 显示全部楼层
你可能没看到双缓冲三个字
[mw_shl_code=c,true]/* Initialize Endpoint 1 */ SetEPType(ENDP1, EP_BULK); SetEPTxAddr(ENDP1, ENDP1_TXADDR); SetEPTxStatus(ENDP1, EP_TX_NAK); SetEPRxStatus(ENDP1, EP_RX_DIS); /* Initialize Endpoint 2 */ SetEPType(ENDP2, EP_BULK); SetEPDoubleBuff(ENDP2); SetEPDblBuffAddr(ENDP2, ENDP2_RXADDR0, ENDP2_RXADDR1); SetEPDblBuffCount(ENDP2, EP_DBUF_OUT, Device_Property.MaxPacketSize); ClearDTOG_RX(ENDP2); ClearDTOG_TX(ENDP2); ToggleDTOG_TX(ENDP2); SetEPRxStatus(ENDP2, EP_RX_VALID); SetEPTxStatus(ENDP2, EP_TX_DIS); [/mw_shl_code]
以上代码端点一配置为单缓冲批量传输,端点二配置为双缓冲批量传输,这么说楼主懂了么
回复

使用道具 举报

115

主题

548

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2104
金钱
2104
注册时间
2013-11-27
在线时间
518 小时
 楼主| 发表于 2015-8-24 19:36:31 | 显示全部楼层
回复【3楼】兜兜里缺钱:
---------------------------------
我看到了,我配置了双缓冲 也没进入那个中断。难道你的进入了?
回复

使用道具 举报

4

主题

106

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
302
金钱
302
注册时间
2015-7-16
在线时间
29 小时
发表于 2015-8-24 20:19:11 | 显示全部楼层
回复【4楼】wmh19910511:
---------------------------------
当然进了啊,你配置双缓冲后在usb_bot.c usb_sil.c和usb_conf.h中有没有修改呀,有没有配置高优先级中断呀,这些并不是配置了双缓冲就行了,得全面修改
回复

使用道具 举报

115

主题

548

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2104
金钱
2104
注册时间
2013-11-27
在线时间
518 小时
 楼主| 发表于 2015-8-24 21:45:43 | 显示全部楼层
回复【5楼】兜兜里缺钱:
---------------------------------
sil里面我改了,改成双缓冲的判断撒。
conf添加地址
bot?这个里面要改什么?这个是SCSI。大容量的才会用上,需要改什么?

确实 我也是想把原子的大容量改成双缓冲的,看能不能增加速度,可是进不了那个 中断,一直在低优先级中。

你怎么弄的?
回复

使用道具 举报

4

主题

106

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
302
金钱
302
注册时间
2015-7-16
在线时间
29 小时
发表于 2015-8-25 08:01:57 | 显示全部楼层
回复【6楼】wmh19910511:
---------------------------------
usb_bot.c中非常重要的两个callback啊,Mass_Storage_Out和In。
回复

使用道具 举报

4

主题

106

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
302
金钱
302
注册时间
2015-7-16
在线时间
29 小时
发表于 2015-8-25 08:08:54 | 显示全部楼层
回复【6楼】wmh19910511:
---------------------------------
SCSI等协议的的部分不要改,我目前也没怎么看,想要改成双缓冲主要就是usb_prop中的端点配置,usb_conf.h中的缓冲区配置,usb_sil.c和usb_bot.c中的程序修改(如果在usb_bot中直接调用usb_sil中的USB_SIL_READ函数的话,则不用修改,我是为了减少传参时间直接动刀usb_bot.c中的函数),还有就是配置usb高优先级中断,在hw_config.c中配置,和另两个中断放一起。然后在stm32f10x_it.c中添加高优先级中断服务函数(大部分都是已经有的,但我记得原子哥好像给删除了,只留了唤醒和低优先级?不记得了)。
回复

使用道具 举报

4

主题

106

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
302
金钱
302
注册时间
2015-7-16
在线时间
29 小时
发表于 2015-8-25 08:12:27 | 显示全部楼层
还有就是不建议发送区双缓冲,这部分网上的代码全部有问题(比接收双缓冲难多了),只修改接收区双缓冲就好了,反正接收比发送慢好多,还有就是即使做了双缓冲,速度也没提升多少,大概20k到30k/s吧
回复

使用道具 举报

115

主题

548

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2104
金钱
2104
注册时间
2013-11-27
在线时间
518 小时
 楼主| 发表于 2015-8-25 11:21:32 | 显示全部楼层
回复【9楼】兜兜里缺钱:
---------------------------------
网上说可以提高到700啊
我加进去了,反正没见到提升,和你说的差不多。。。
回复

使用道具 举报

115

主题

548

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2104
金钱
2104
注册时间
2013-11-27
在线时间
518 小时
 楼主| 发表于 2015-8-25 11:24:19 | 显示全部楼层
回复【9楼】兜兜里缺钱:
---------------------------------
你速度提高了吗?我的一点提高也没有。
回复

使用道具 举报

4

主题

106

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
302
金钱
302
注册时间
2015-7-16
在线时间
29 小时
发表于 2015-8-25 11:56:25 | 显示全部楼层
回复【10楼】wmh19910511:
---------------------------------
你可以在USB_SIL_READ函数中加入打印(会非常影响速度,只是看是否进入乒乓缓冲),说一点速度没提升是不可能的,多少还是有点提升的,网上说的是仅仅把USB枚举成串口,没有写入SD卡这一块。
回复

使用道具 举报

115

主题

548

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2104
金钱
2104
注册时间
2013-11-27
在线时间
518 小时
 楼主| 发表于 2015-8-25 19:10:52 | 显示全部楼层
回复【12楼】兜兜里缺钱:
---------------------------------
我是没有发现速度的提升,进入了双缓冲,我硬件仿真了的。
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-7-22 03:08

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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