TT12-MCU/applications/w25q.c
CSSC-WORK\murmur 851c1c2352 添加初始化时建立sd目录避免sd卡挂载失败的问题
自检功能测试ok
tools.c 添加部分基本函数
func.c 解析逻辑部分初步完成
2023-07-18 19:23:48 +08:00

91 lines
2.4 KiB
C
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

/*
* Copyright (c) 2006-2021, RT-Thread Development Team
*
* SPDX-License-Identifier: Apache-2.0
*
* Change Logs:
* Date Author Notes
* 2023-04-14 murmur the first version
*/
#include <rtthread.h>
//#define LOG_TAG "flash"
//#define LOG_LVL LOG_LVL_DBG
//#include <ulog.h>
#define DBG_TAG "w25q"
#define DBG_LVL DBG_LOG
#include <rtdbg.h>
#include "board.h"
#include <rtdevice.h>
#include "cfg.h"
int rt_hw_spi_flash_init(void)
{
// rt_kprintf("SW Version: %s\n","1.4(temp)");
__HAL_RCC_GPIOB_CLK_ENABLE();
// __HAL_RCC_GPIOD_CLK_ENABLE();
// rt_kprintf("sfud success.\n");
// rt_tick_t t= rt_tick_get_millisecond();
rt_hw_spi_device_attach("spi2", "spi10", GPIOB, GPIO_PIN_12);
// rt_kprintf("sfud success.\n");
if (RT_NULL == rt_sfud_flash_probe("W25Q128", "spi10"))
{
rt_kprintf("sfud error.\n");
return -RT_ERROR;
};
// rt_kprintf("sfud success.\n");
return RT_EOK;
}
/* 导出到自动初始化 */
INIT_COMPONENT_EXPORT(rt_hw_spi_flash_init);
void w25q128_mount(void)
{
// dfs_mkfs("elm", "W25Q128");
rt_device_t dev;
dev = rt_device_find("W25Q128");
if(dev != RT_NULL) {
if(dfs_mount("W25Q128", "/", "elm", 0, 0) == 0){
// rt_kprintf("spi_flash mount to spi!\n");
mkdir("sd",0);
} else {
rt_kprintf("spi_flash mount to spi failed!\n");
}
}
}
/* 导出到自动初始化 */
INIT_COMPONENT_EXPORT(w25q128_mount);
//1.41版本之前挂载并未出现问题。
//1.41版出现flash能挂载而sd卡正确识别后却不能挂载的问题
//后发现是SD卡的挂载目录"sd"丢失,原因未知。
void sdmnt_init(void)
{
rt_thread_mdelay(100);//这段延时必须加上系统上电过程中存在延时否则会出现先挂载后注册块设备sd0的情况
// mkfs("elm","sd0");//挂在前需格式化
if(dfs_mount("sd0","/sd","elm",0,0)==0) //挂载文件系统参数块设备名称、挂载目录、文件系统类型、读写标志、私有数据0
{
// rt_kprintf("dfs mount success\r\n");
}
else
{
rt_kprintf("dfs mount failed\r\n");
}
}
/* 导出到自动初始化 */
INIT_COMPONENT_EXPORT(sdmnt_init);
void bootinfo()
{
rt_kprintf("%d ms since boot.\n", rt_tick_get_millisecond());
add_val("bootCnt");
}
/* 导出到自动初始化 */
INIT_COMPONENT_EXPORT(bootinfo);