ST的库中考虑到芯片的Bug吗?

[复制链接]
4006|11
 楼主| seawwh 发表于 2012-5-13 12:20 | 显示全部楼层 |阅读模式
最近在调试F4 USB的时候发现一个问题:
1,我用的F4 Discovery 的芯片版本为'A', 据手册说这个版本的USB存在一些Bug,那么ST提供的OTG Lib 2.1.0 中考虑到这些Bug了吗?毕竟使用USB库的时候往往不接触到底层代码。
2. 在 F4 Discovery 的测试中发现,ST提供的F4 Discovery Demo的代码是基于OTG Lib 2.0.0库的,我测试了作为HOST访问U盘的功能没有问题。
  但是将OTG Lib 2.1.0中的例子移植到 F4 Discovery 发现,访问U盘有些问题,对一个U盘可以,另一个U盘不行。但是这两个U盘的枚举过程都是完成了。
  请问版主,哪里可以下载到完整的OTG Lib 2.0.0库?F4 Discovery带的OTG Lib 2.0.0库不完整,没有Demo。
gaochy1126 发表于 2012-5-13 17:03 | 显示全部楼层
这个真没有注意到,希望楼主能够分享一下自己的心得
vigia 发表于 2012-5-14 17:00 | 显示全部楼层
我看了下F4的ERRATA SHEET,关于OTG_FS的LIMITATION有4个

1, 在RXFIFO中有数据时,不能同时禁止多个通道
2, 即使只接收数据,也要配置TX FIFO
3, 不能使能通道后立即又禁止通道
4, 不能配置了DCFG寄存器后,又立刻读回寄存器值

这4种都不是常规的操作,应该在例程代码中都不会涉及到。

你的意思是2.0.0的库可以正常读写U盘,2.1.0的库读写某些U盘究不成功了?
 楼主| seawwh 发表于 2012-5-14 17:52 | 显示全部楼层
Hi vigia
     我目前试验的结果就是这样,2.0.0的库可以正常读写各种U盘,2.1.0的库读写有2/3的U盘不成功了。
   2.1.0的库读写成功的往往是1G的老U盘。 我试验的端口为F4 Discovery 的FS口。
   对于不成功的U盘,枚举过程都是ok的,但全部都停在这条语句:
文件: usbh_msc_core.c
    ... ... ...
    case USBH_MSC_GET_MAX_LUN:
      /* Issue GetMaxLUN request */
      status = USBH_MSC_GETMaxLUN(pdev, phost);    // 老是返回Busy
      if(status == USBH_OK )
      {
        MSC_Machine.maxLun = *(MSC_Machine.buff)
    ... ... ...
JasonWangFAE 发表于 2012-12-20 18:58 | 显示全部楼层
我也遇到一樣的問題了,Have any solution ???
liaowei230509 发表于 2012-12-20 19:45 | 显示全部楼层
这个是固件库的BUG,之前也是很多U盘不能读写,修改之后就好了
JasonWangFAE 发表于 2012-12-21 10:03 | 显示全部楼层
可以分享如何修改的嗎??
Thanks.
wandersky 发表于 2013-1-10 16:09 | 显示全部楼层
这个论坛就这点不好,大家都能发现问题,只有几个人偷偷的解决问题了,在底下偷着乐呢???
wandersky 发表于 2013-1-10 16:18 | 显示全部楼层
seawwh 发表于 2012-5-14 17:52
Hi vigia
     我目前试验的结果就是这样,2.0.0的库可以正常读写各种U盘,2.1.0的库读写有2/3的U盘不成功了 ...

解决了吗??
我正在遇到这个问题
wandersky 发表于 2013-1-10 17:03 | 显示全部楼层
liaowei230509 发表于 2013-1-10 17:56 来自手机 | 显示全部楼层
下载u盘的协议,严格按照协议来做,能解决问题。ST不按照协议来做,造成很多u盘不能正确读写的
liaowei230509 发表于 2013-1-10 17:56 来自手机 | 显示全部楼层
下载u盘的协议,严格按照协议来做,能解决问题。ST不按照协议来做,造成很多u盘不能正确读写的
您需要登录后才可以回帖 登录 | 注册

本版积分规则

145

主题

368

帖子

1

粉丝
快速回复 在线客服 返回列表 返回顶部