tangdoudou_1 发表于 2023-12-8 11:54:50

stm32F103在对闪迪、川宇、朗科等SD卡进行读写的时候都可以,但实现虚拟U盘,只有闪迪的可以,为啥

stm32F103在对闪迪、川宇、朗科等16G的SD卡进行读写操作的时候都可以,但实现虚拟U盘,电脑上只有闪迪的可以正常出现U盘,川宇、朗科在电脑商有盘符,但是不能打不开,识别不了,我看了下,进入虚拟U盘,驱动就四个函数,SD_Init()这个函数,目前STM32F103对SD卡的读写一直可以成功,后面三个函数都是对USB进行操作的,我看有的人说中断设置,要把SDIO的优先级要高于USB的中断优先级,但是我试着改了改,好像没有用,在电脑上能出现一个U盘符,但是不能打开,没有SD卡的具体信息,比如说容量什么的。
//初始化SD卡
SD_Init();               
//设置USB时钟为48M
Set_USBClock();
//配置USB中断(包括sDIO中断)
USB_Interrupts_Config();
//USB初始化
USB Init();




void Set_USBClock(void)
{

RCC_USBCLKConfig(RCC_USBCLKSource_PLLCLK_1Div5);
/* Enable the USB clock */
RCC_APB1PeriphClockCmd(RCC_APB1Periph_USB, ENABLE);

}


void USB_Interrupts_Config(void)
{
NVIC_InitTypeDef NVIC_InitStructure;
NVIC_InitStructure.NVIC_IRQChannel = USB_LP_CAN1_RX0_IRQn;
NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority =0;
NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
NVIC_Init(&NVIC_InitStructure);
NVIC_InitStructure.NVIC_IRQChannel = USB_HP_CAN1_TX_IRQn;
NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 1;
NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
NVIC_Init(&NVIC_InitStructure);


}



void USB_Init(void)
{
pInformation = &Device_Info;
pInformation->ControlState = 2;
pProperty = &Device_Property;
pUser_Standard_Requests = &User_Standard_Requests;
/* Initialize devices one by one */
pProperty->Init();
}

tangdoudou_1 发表于 2023-12-8 11:57:00

目前正在用的驱动版本是下面这个:
模块名称:SDIO卡底层驱动
文件名称 :bsp_sdio_sd.c
版      本:v1.1      
说 明 :根据sT的资料整合并改编。
原始文件为:stm3210e_eval_sdio_sd.c
修改记录:
版本号:V1.0      
日期:2015-08-02      
作者:      armfly      
正式发布:      
V1.1      2015-08-06 armfly
说明:      修改数据超时的循环次数。没有卡插入时,可以快速返回      
//#define SD DATATIMEOUT((uint32 t)0xFFFFFFFF)
#define SD DATATIMEOUT      ((uint32 t)0x000FFFFF)      
Copyright (C),2015-2016,安富莱电子www.armfly.com

eric2013 发表于 2023-12-8 12:09:10

tangdoudou_1 发表于 2023-12-8 11:57
目前正在用的驱动版本是下面这个:
模块名称:SDIO卡底层驱动
文件名称 :bsp_sdio_sd.c

ST这个版本驱动太老了,建议使用HAL库的新版SD卡驱动,修改了之前的一些bug。

这个帖子是H7系列做的SD卡系统测评。

系统的谈下STM32H7的SD卡驱动兼容性问题,现在兼容性很强,主流厂家16GB以上容量全部通过(2022-03-15)
https://www.armbbs.cn/forum.php? ... d=107689&fromuid=58
(出处: 硬汉嵌入式论坛)

tangdoudou_1 发表于 2023-12-8 14:17:17

好的,多谢多谢,那我先下载一下新的驱动

tangdoudou_1 发表于 2023-12-8 15:03:18

多谢多谢,我们先看看您提供的链接里面的例程,看看SD卡当作虚拟优盘使用的时候有什么区别,至于更换驱动,我们可能先不换了,因为以前我们是从HAL换到这个老的驱动这块,因为HAL里面有很多驱动在F103上面不能用。

tangdoudou_1 发表于 2023-12-8 15:30:34

您好,我看了一下这个HAL驱动,有两部分驱动和虚拟U盘相关,一部分是USB操作部分,一部分是对SD卡操作部分,这个SD卡兼容,是不是应该更改bsp_sdio_sd.c这部分的驱动程序?
页: [1]
查看完整版本: stm32F103在对闪迪、川宇、朗科等SD卡进行读写的时候都可以,但实现虚拟U盘,只有闪迪的可以,为啥