OpenEdv-开源电子网

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

stm32f429 做U盘遇到的问题

[复制链接]

3

主题

9

帖子

0

精华

新手上路

积分
31
金钱
31
注册时间
2021-4-3
在线时间
7 小时
发表于 2021-5-27 09:26:55 | 显示全部楼层 |阅读模式
1金钱
正点原子的usb从机存储设备代码支持3种存储介质,我删掉spiflash和nandflash后,插到电脑无法识别usb。

#include "usbd_msc_mem.h"
#include "usb_conf.h"                 
#include "sdio_sdcard.h"         
         

#define STORAGE_LUN_NBR                      1
#define STORAGE_BLK_NBR                  0x10000
#define STORAGE_BLK_SIZ                  0x200

const int8_t  STORAGE_Inquirydata[] = {                

  /* LUN 0 */
  0x00,
  0x80,
  0x02,
  0x02,
  (USBD_STD_INQUIRY_LENGTH - 5),
  0x00,
  0x00,       
  0x00,
  'S', 'T', 'M', ' ', ' ', ' ', ' ', ' ', /* Manufacturer : 8 bytes */
  'P', 'r', 'o', 'd', 'u', 'c', 't', ' ', /* Product      : 16 Bytes */
  ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ',
  '0', '.', '0' ,'1'                      /* Version      : 4 Bytes */

};

int8_t STORAGE_Init (uint8_t lun);
int8_t STORAGE_GetCapacity (uint8_t lun,uint32_t *block_num,uint32_t *block_size);
int8_t  STORAGE_IsReady (uint8_t lun);
int8_t  STORAGE_IsWriteProtected (uint8_t lun);
int8_t STORAGE_Read (uint8_t lun,uint8_t *buf,uint32_t blk_addr,uint16_t blk_len);
int8_t STORAGE_Write (uint8_t lun,uint8_t *buf,uint32_t blk_addr,uint16_t blk_len);
int8_t STORAGE_GetMaxLun (void);


USBD_STORAGE_cb_TypeDef USBD_MICRO_SDIO_fops =
{
        STORAGE_Init,
        STORAGE_GetCapacity,
        STORAGE_IsReady,
        STORAGE_IsWriteProtected,
        STORAGE_Read,
        STORAGE_Write,
        STORAGE_GetMaxLun,
        (int8_t *)STORAGE_Inquirydata,
};
USBD_STORAGE_cb_TypeDef  *USBD_STORAGE_fops=&USBD_MICRO_SDIO_fops;//Ö¸ÏòUSBD_MICRO_SDIO_fops½á11ìå.


int8_t STORAGE_Init (uint8_t lun)
{
        u8 res=0;
        res=SD_Init();
        return res;
}


int8_t STORAGE_GetCapacity (uint8_t lun, uint32_t *block_num, uint32_t *block_size)
{     
        *block_size=512;  
        *block_num=SDCardInfo.CardCapacity/512;
        return 0;
}


int8_t  STORAGE_IsReady (uint8_t lun)
{
        USB_STATUS_REG|=0X10;//±ê¼ÇÂÖÑˉ
        return 0;
}


int8_t  STORAGE_IsWriteProtected (uint8_t lun)
{
        return  0;
}


int8_t STORAGE_Read (uint8_t lun,uint8_t *buf,uint32_t blk_addr,uint16_t blk_len)
{
        int8_t res=0;
        USB_STATUS_REG|=0X02;//±ê¼ÇÕyÔú¶áêy¾Y
        res=SD_ReadDisk(buf,blk_addr,blk_len);
        if(res)
        {
                USB_STATUS_REG|=0X08;//¶á′íÎó!
        }
        return res;
}

int8_t STORAGE_Write (uint8_t lun,uint8_t *buf,uint32_t blk_addr,uint16_t blk_len)
{
        int8_t res=0;
        USB_STATUS_REG|=0X01;//±ê¼ÇÕyÔúD′êy¾Y
        res=SD_WriteDisk(buf,blk_addr,blk_len);
        if(res)
        {
                USB_STATUS_REG|=0X04;//D′′íÎó!         
        }
        return res;
}

int8_t STORAGE_GetMaxLun (void)
{
    return (STORAGE_LUN_NBR-1);
}


这是我的代码,哪里有问题

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

使用道具 举报

3

主题

9

帖子

0

精华

新手上路

积分
31
金钱
31
注册时间
2021-4-3
在线时间
7 小时
 楼主| 发表于 2021-5-27 10:45:08 | 显示全部楼层
测试发现,只有一个存储介质的情况下必须用spiflash,不知为何
回复

使用道具 举报

7

主题

480

帖子

0

精华

高级会员

Rank: 4

积分
773
金钱
773
注册时间
2021-4-15
在线时间
304 小时
发表于 2021-5-27 10:59:56 | 显示全部楼层
帮顶  
回复

使用道具 举报

109

主题

5564

帖子

0

精华

资深版主

Rank: 8Rank: 8

积分
10561
金钱
10561
注册时间
2017-2-18
在线时间
1912 小时
发表于 2021-5-27 13:45:01 | 显示全部楼层
看原子哥发过的这个帖子可以参考不
http://www.openedv.com/forum.php ... &extra=page%3D2
回复

使用道具 举报

28

主题

360

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1028
金钱
1028
注册时间
2021-2-4
在线时间
146 小时
发表于 2021-5-27 14:28:54 | 显示全部楼层
热心水贴
回复

使用道具 举报

3

主题

9

帖子

0

精华

新手上路

积分
31
金钱
31
注册时间
2021-4-3
在线时间
7 小时
 楼主| 发表于 2021-5-27 14:44:45 | 显示全部楼层
peng1554 发表于 2021-5-27 13:45
看原子哥发过的这个帖子可以参考不
http://www.openedv.com/forum.php?mod=viewthread&tid=99154&extra=pa ...

不行,和我自己改的是一样的,sd卡不能作为第一个存储介质,放在spiflash后面就行,放在spiflash前面就不行,单独作为唯一介质也不行。
回复

使用道具 举报

109

主题

5564

帖子

0

精华

资深版主

Rank: 8Rank: 8

积分
10561
金钱
10561
注册时间
2017-2-18
在线时间
1912 小时
发表于 2021-5-27 14:48:10 | 显示全部楼层
liurui 发表于 2021-5-27 14:44
不行,和我自己改的是一样的,sd卡不能作为第一个存储介质,放在spiflash后面就行,放在spiflash前面就不 ...

好吧~~
回复

使用道具 举报

1

主题

11

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
317
金钱
317
注册时间
2018-7-27
在线时间
119 小时
发表于 2021-5-27 17:02:36 | 显示全部楼层
我也是只带一个U盘啊   一切正常
回复

使用道具 举报

3

主题

9

帖子

0

精华

新手上路

积分
31
金钱
31
注册时间
2021-4-3
在线时间
7 小时
 楼主| 发表于 2021-5-28 08:06:36 | 显示全部楼层
张可 发表于 2021-5-27 17:02
我也是只带一个U盘啊   一切正常

你用的是spiflash或者nandflash作为存储介质吧,你单独用sd卡试试
回复

使用道具 举报

20

主题

99

帖子

0

精华

初级会员

Rank: 2

积分
177
金钱
177
注册时间
2020-6-21
在线时间
70 小时
发表于 2021-5-28 09:27:07 | 显示全部楼层
你的sd卡初始化成功过了吗?
回复

使用道具 举报

3

主题

9

帖子

0

精华

新手上路

积分
31
金钱
31
注册时间
2021-4-3
在线时间
7 小时
 楼主| 发表于 2021-6-1 15:35:20 | 显示全部楼层
顶起来,别沉了
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-2-27 17:09

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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