搜索
bottom↓
回复: 2

[求助]STM32F4 USB Mass storage例程虚拟2个以上磁盘问题求助.

[复制链接]

出0入0汤圆

发表于 2016-1-20 16:03:07 | 显示全部楼层 |阅读模式
最近在调试STM32F4的USB Mass storage例程.
以前只用到最多虚拟出2个磁盘.一直用着,没什么问题.
不过,这次由于项目需要,得虚拟出3个磁盘.结果就出问题了.

修改步骤:
1,修改STORAGE_LUN_NBR的值为3:
  1. #define STORAGE_LUN_NBR 3
复制代码



2,修改STORAGE_Inquirydata数组,添加3个磁盘的描述
如下:
  1. /* USB Mass storage Standard Inquiry Data */
  2. int8_t STORAGE_Inquirydata[] = { /* 36 */
  3. /* LUN 0 */
  4. 0x00,       
  5. 0x80,       
  6. 0x02,       
  7. 0x02,
  8. (STANDARD_INQUIRY_DATA_LEN - 5),
  9. 0x00,
  10. 0x00,       
  11. 0x00,
  12. 'S', 'T', 'M', ' ', ' ', ' ', ' ', ' ', /* Manufacturer: 8 bytes */
  13. 'P', 'r', 'o', 'd', 'u', 'c', 't', ' ', /* Product : 16 Bytes */
  14. ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ',
  15. '0', '.', '0','1', /* Version : 4 Bytes */
  16. /* LUN 1 */
  17. 0x00,       
  18. 0x80,       
  19. 0x02,       
  20. 0x02,
  21. (STANDARD_INQUIRY_DATA_LEN - 5),
  22. 0x00,
  23. 0x00,       
  24. 0x00,
  25. 'S', 'T', 'M', '3', '2', ' ', ' ', ' ', /* Manufacturer: 8 bytes */
  26. 'P', 'r', 'o', 'd', 'u', 'c', 't', ' ', /* Product : 16 Bytes */
  27. ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ',
  28. '0', '.', '0','1', /* Version : 4 Bytes */
  29. /* LUN 2 */
  30. 0x00,       
  31. 0x80,       
  32. 0x02,       
  33. 0x02,
  34. (STANDARD_INQUIRY_DATA_LEN - 5),
  35. 0x00,
  36. 0x00,       
  37. 0x00,
  38. 'S', 'T', 'M', '3', '2', ' ', ' ', ' ', /* Manufacturer: 8 bytes */
  39. 'P', 'r', 'o', 'd', 'u', 'c', 't', ' ', /* Product : 16 Bytes */
  40. ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ',
  41. '0', '.', '0','1', /* Version : 4 Bytes */
  42. };
复制代码


3,修改磁盘初始化/磁盘读取/磁盘写入等函数,增加对3个磁盘的操作.


修改完以后,下载.发现直接进入Suspend状态了.
而一旦将STORAGE_LUN_NBR的数值改为2或者1,就没有任何问题.可以正常识别2个或者1个磁盘出来.
只要改为3,就进入Suspend状态.


我试过使用STM32_USB-Host-Device_Lib_V2.2.0和stm32cubef4的例程,都测试过.同样都只支持最大2个磁盘,只要定义3个,立即进入Suspend状态.

然后,我试过103的USB例程,却是可以支持3个磁盘.所以,想请教下有没有搞过F407 USB MSC支持2个以上磁盘的? 希望能指导下. 谢谢.

阿莫论坛20周年了!感谢大家的支持与爱护!!

月入3000的是反美的。收入3万是亲美的。收入30万是移民美国的。收入300万是取得绿卡后回国,教唆那些3000来反美的!

出0入0汤圆

 楼主| 发表于 2016-1-21 15:23:30 | 显示全部楼层
自己解决了.
解决办法:
  1. static void  MSC_BOT_CBW_Decode (USB_OTG_CORE_HANDLE  *pdev)
  2. {

  3.   MSC_BOT_csw.dTag = MSC_BOT_cbw.dTag;
  4.   MSC_BOT_csw.dDataResidue = MSC_BOT_cbw.dDataLength;
  5.   
  6.   if ((USBD_GetRxCount (pdev ,MSC_OUT_EP) != BOT_CBW_LENGTH) ||
  7.       (MSC_BOT_cbw.dSignature != BOT_CBW_SIGNATURE)||
  8.         (MSC_BOT_cbw.bLUN > USBD_MSC_MaxLun) ||
  9.           (MSC_BOT_cbw.bCBLength < 1) ||
  10.             (MSC_BOT_cbw.bCBLength > 16))
  11.   {
  12.    
  13.     SCSI_SenseCode(MSC_BOT_cbw.bLUN,
  14.                    ILLEGAL_REQUEST,
  15.                    INVALID_CDB);
  16.      MSC_BOT_Status = BOT_STATE_ERROR;   
  17.     MSC_BOT_Abort(pdev);

  18.   }
复制代码


ST官方的USB代码,果然bug多多....

出0入0汤圆

发表于 2016-1-25 00:36:03 来自手机 | 显示全部楼层
“ST官方的USB代码,果然bug多多....”——深度同意
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-4-26 01:48

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

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