STM32&x2B;特别组织+;SDIO&x2B;立方厘米

STM32&x2B;特别组织+;SDIO&x2B;立方厘米,stm32,fatfs,cubemx,Stm32,Fatfs,Cubemx,我试图通过FatFS+SDIO接口以1bit模式将SD卡连接到Stm32l4。 代码由CubeMX 5.0自动生成。在多维数据集中启用并配置DMA。 当我调用FatFS func,比如f_mount()或f_open(),我会得到FR_DISK_ERR return语句。低级别读取通过DMA_超时返回。请帮帮我。因此,首先,您可能应该看看ST的文档,了解如何使用SD卡准确地移动流程树。我知道使用USB,您必须调用主机进程并等待主机状态处于活动状态,然后才能进行任何FATFS调用。确保你正在埋伏,

我试图通过FatFS+SDIO接口以1bit模式将SD卡连接到Stm32l4。 代码由CubeMX 5.0自动生成。在多维数据集中启用并配置DMA。
当我调用FatFS func,比如f_mount()或f_open(),我会得到FR_DISK_ERR return语句。低级别读取通过DMA_超时返回。请帮帮我。

因此,首先,您可能应该看看ST的文档,了解如何使用SD卡准确地移动流程树。我知道使用USB,您必须调用主机进程并等待主机状态处于活动状态,然后才能进行任何FATFS调用。确保你正在埋伏,等待硬件中断触发出现

与的效果类似,只要确保在SD未安装的情况下有一个超时参数

//stateOfHost将根据多维数据集生成的代码而更改,但它应该位于SD卡代码中的某个位置
外部应用程序类型定义状态主机;
//将默认状态设置为空闲
ApplicationTypeDef stateOfHost=应用程序空闲;
而(1)
{
//启动USB主机进程
MX_USB_主机_进程();
if(stateOfHost==主机\用户\类\活动)
{
//现在可以称为FATF
}
}
如果此后所有操作都失败,这听起来可能有点奇怪,但请尝试增加默认堆栈大小。DMA超时正在出现,因为没有调用磁盘的回调。没有需要填写的数据。试图通过FATFS的这种实现进行调试是一场噩梦

如果堆栈大小没有增加到超过默认设置0x400,USB OTG和SD卡FATFS第三方中间件就会出现问题

在文件startup_stm32l4(xx)xx.s(括号中的两个x代表L4的变体)的内部,将堆栈大小更改为合适的大小。首先,请尝试0x1000

我也遇到过类似的问题,需要将堆栈大小增加到0x3000,以使我的USB正常工作

如果SD被识别,请确保使用变量跟踪所有FATF调用,以确保整个过程成功

要通过FATF进行阅读,您必须: 1.装载工作区(f_装载) 2.打开一个文件(f_Open) 3.读取打开的文件(f_Read)

写操作完全相同,只是与读调用交换

希望这能有所帮助