硬汉嵌入式论坛

 找回密码
 立即注册
查看: 6496|回复: 13
收起左侧

[有问必答] STM32F407 USB模拟U盘问题

[复制链接]

34

主题

83

回帖

185

积分

初级会员

积分
185
发表于 2016-9-14 21:53:18 | 显示全部楼层 |阅读模式
   我现在使用STM32F407的USB模拟了一个U盘,开发环境用的是IAR,优化级别设置低或中等时USB写入速度只有38K-41K每S,当我把优化级别设置为最高时发现USB写入速度立马提升到了750K-1M的写入速度,读也很快数据也都是正确的(因为我存的是9M的照片,照片打开正常),但是U盘无法格式化了,总提示格式化失败!当我把优化级别设置到低或中的时候U盘格式化就正常了,但是写入速度严重掉速!我想一定是USB库的哪些地方被优化掉了,想请教一下这种问题一般出在哪?因为我必须要设置优化级别为最高,不然USB写速度无法接受啊,麻烦大虾们指点一二。

1.jpg
2.jpg
3.jpg
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
117563
QQ
发表于 2016-9-15 10:01:22 | 显示全部楼层
应该是你移植的有问题吧,参考我这个看看,前几个月做FreeRTOS教程时,升级USB库到2.2.0版本了(去年年底发布的最新标准库版本)。曾经遇到过的一个小问题,看看能否帮到你。
https://forum.anfulai.cn/forum.php?mod=viewthread&tid=19755
回复

使用道具 举报

34

主题

83

回帖

185

积分

初级会员

积分
185
 楼主| 发表于 2016-9-15 11:13:15 | 显示全部楼层

回 eric2013 的帖子

eric2013:应该是你移植的有问题吧,参考我这个看看,前几个月做FreeRTOS教程时,升级USB库到2.2.0版本了(去年年底发布的最新标准库版本)。曾经遇到过的一个小问题,看看能否帮到你。
https://forum.anfulai.cn/forum.php?mod=viewthread&tid=19755
(2016-09-15 10:01)
移植了你上面的例程结果还是一样,优化级别低和中一切正常,就是写速度只有40K/S,优化级别高时读写都正常,写速度是700K-1M每/S

今天测试格式化时移植你的程序跟我自己的程序都是提示无法格式化,但实际磁盘被格式化了。昨天测试的时候提示无法格式化实际磁盘未被格式化。
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
117563
QQ
发表于 2016-9-15 11:16:23 | 显示全部楼层

回 shuaigew88 的帖子

shuaigew88:移植了你上面的例程结果还是一样,优化级别低和中一切正常,就是写速度只有40K/S,优化级别高时读写都正常,写速度是700K-1M每/S,但还是无法格式化。 (2016-09-15 11:13) 
你模拟的是SD卡么,换个卡试试,或者低级格式化一席,别的情况排查了再进一步排查软件问题。
回复

使用道具 举报

34

主题

83

回帖

185

积分

初级会员

积分
185
 楼主| 发表于 2016-9-15 11:17:51 | 显示全部楼层

回 eric2013 的帖子

eric2013:你模拟的是SD卡么,换个卡试试,或者低级格式化一席,别的情况排查了再进一步排查软件问题。 (2016-09-15 11:16) 
使用的是外部16MB串行flash
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
117563
QQ
发表于 2016-9-15 11:22:39 | 显示全部楼层

回 shuaigew88 的帖子

shuaigew88:使用的是外部16MB串行flash (2016-09-15 11:17)
估计你的SPI Flash底层接口函数有问题,我曾经遇到过无法格式化的情况,重新修改底层函数后,问题解决了。
不行就换一个片SPI Flash试试。
回复

使用道具 举报

34

主题

83

回帖

185

积分

初级会员

积分
185
 楼主| 发表于 2016-9-15 11:25:30 | 显示全部楼层

回 eric2013 的帖子

eric2013:估计你的SPI Flash底层接口函数有问题,我曾经遇到过无法格式化的情况,重新修改底层函数后,问题解决了。
不行就换一个片SPI Flash试试。

 (2016-09-15 11:22) 
     我的底层驱动在STM32F103模拟U盘时都是正常的,而且U盘的格式化跟U盘写的性质不是一样吗?U盘既然能正常读写,那么跟底层肯定是没有关系了。
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
117563
QQ
发表于 2016-9-15 11:30:26 | 显示全部楼层

回 shuaigew88 的帖子

shuaigew88:     我的底层驱动在STM32F103模拟U盘时都是正常的,而且U盘的格式化跟U盘写的性质不是一样吗?U盘既然能正常读写,那么跟底层肯定是没有关系了。 (2016-09-15 11:25)
这个好排查,用你现有的驱动,驱动下SD卡,看看模拟是否有问题,没有问题就是你的SPI Flash底层问题了。
F103上面没问题,不能表示你在F407上面就没有问题。
回复

使用道具 举报

34

主题

83

回帖

185

积分

初级会员

积分
185
 楼主| 发表于 2016-9-15 11:30:31 | 显示全部楼层

回 eric2013 的帖子

eric2013:估计你的SPI Flash底层接口函数有问题,我曾经遇到过无法格式化的情况,重新修改底层函数后,问题解决了。
不行就换一个片SPI Flash试试。

 (2016-09-15 11:22) 
还有我在FAT中配置的flash扇区大小正好是4096字节,跟flash的块尺寸一样,所以是一边写一边擦除块的。
回复

使用道具 举报

34

主题

83

回帖

185

积分

初级会员

积分
185
 楼主| 发表于 2016-9-15 11:36:11 | 显示全部楼层

回 eric2013 的帖子

eric2013:这个好排查,用你现有的驱动,驱动下SD卡,看看模拟是否有问题,没有问题就是你的SPI Flash底层问题了。
F103上面没问题,不能表示你在F407上面就没有问题。
 (2016-09-15 11:30) 
我手上暂时没有SD卡,不过我可以用NAND FLASH测试一下看看。
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
117563
QQ
发表于 2016-9-15 11:39:19 | 显示全部楼层

回 shuaigew88 的帖子

shuaigew88:我手上暂时没有SD卡,不过我可以用NAND FLASH测试一下看看。 (2016-09-15 11:36) 
用内部SRAM模拟更简单,你可以用一小块内部SRAM测试。
回复

使用道具 举报

34

主题

83

回帖

185

积分

初级会员

积分
185
 楼主| 发表于 2016-9-15 11:51:19 | 显示全部楼层

回 eric2013 的帖子

eric2013:用内部SRAM模拟更简单,你可以用一小块内部SRAM测试。 (2016-09-15 11:39) 
好的,那我就用SRAM先做个测试
回复

使用道具 举报

34

主题

83

回帖

185

积分

初级会员

积分
185
 楼主| 发表于 2016-9-15 12:11:59 | 显示全部楼层

回 eric2013 的帖子

eric2013:

用内部SRAM模拟更简单,你可以用一小块内部SRAM测试。
    的确用SRAM就没有问题,看来真的是SPI驱动有点问题!很奇怪的是U盘可以正常的读和写按理数应该没问题才对。
1.jpg
2.jpg
回复

使用道具 举报

34

主题

83

回帖

185

积分

初级会员

积分
185
 楼主| 发表于 2016-9-17 20:33:26 | 显示全部楼层

回 shuaigew88 的帖子

shuaigew88:    的确用SRAM就没有问题,看来真的是SPI驱动有点问题!很奇怪的是U盘可以正常的读和写按理数应该没问题才对。
 (2016-09-15 12:11) 
最终发现还是由于优化级别过高导致的。
回复

使用道具 举报

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

本版积分规则

QQ|小黑屋|Archiver|手机版|硬汉嵌入式论坛

GMT+8, 2025-8-14 16:16 , Processed in 0.051820 second(s), 27 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

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