硬汉嵌入式论坛

 找回密码
 立即注册
查看: 1086|回复: 3
收起左侧

[有问必答] Fatfs挂载出现问题

[复制链接]

5

主题

6

回帖

21

积分

新手上路

积分
21
发表于 2024-8-26 19:07:21 | 显示全部楼层 |阅读模式
各位大佬好,使用的是stm32g070芯片,fatfs的版本是R0.12C。移植fatfs时,sd卡初始化可以成功 ,但是挂载出现问题。单步调试发现在disk_read里卡死,SPI收不到数据。该文件系统驱动驱动移植到stm32f103c8t6上,可以正常挂载,创建和读取文件。有大佬遇到过类似的问题吗?

新建文本文档.c

12.84 KB, 下载次数: 5

驱动文件

回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
117512
QQ
发表于 2024-8-27 09:12:31 | 显示全部楼层
这个有必要裸机,不使用fatfs测试下你的disk_read和disk_write函数实现是否正常。
回复

使用道具 举报

5

主题

6

回帖

21

积分

新手上路

积分
21
 楼主| 发表于 2024-8-27 09:28:52 | 显示全部楼层
eric2013 发表于 2024-8-27 09:12
这个有必要裸机,不使用fatfs测试下你的disk_read和disk_write函数实现是否正常。

谢谢硬汉哥回复,昨天晚上尝试使用内部晶振发现是可以成功的。然后再切换成外部晶振后,把这个函数
void SD_SPI_SpeedHigh(void)
{
     SPI2_SetSpeed(SPI_BAUDRATEPRESCALER_2);//设置到高速模式   
}
void SPI2_SetSpeed(uint8_t SPI_BaudRatePrescaler)
{
    assert_param(IS_SPI_BAUDRATE_PRESCALER(SPI_BaudRatePrescaler));//判断有效性
    __HAL_SPI_DISABLE(&hspi2);            //关闭SPI
    hspi2.Instance->CR1&=0XFFC7;          //位3-5清零,用来设置波特率
    hspi2.Instance->CR1|=SPI_BaudRatePrescaler;//设置SPI速度
    __HAL_SPI_ENABLE(&hspi2);             //使能SPI  
}
里的分频设置为SPI_BAUDRATEPRESCALER_32,发现也可以正常通信,虽然现在是可以正常工作了,但是不知道原因是什么。是SPI太快了吗,但是使用103系列的芯片这里使用2分频是没有问题的。
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
117512
QQ
发表于 2024-8-27 13:36:17 | 显示全部楼层
草莓 发表于 2024-8-27 09:28
谢谢硬汉哥回复,昨天晚上尝试使用内部晶振发现是可以成功的。然后再切换成外部晶振后,把这个函数
void ...

也有可能是通信不稳定,

使能SPI的内部上拉测试下,看看是不是有所改善。
回复

使用道具 举报

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

本版积分规则

QQ|小黑屋|Archiver|手机版|硬汉嵌入式论坛

GMT+8, 2025-8-12 06:31 , Processed in 0.047691 second(s), 28 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

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