RT-Thread Studio 下使用 HPM6750EVK 挂载 SPI FLASH 作为文件系统

一、配置RT-Thread Studio

        本章使用野火的HPM6750IVM2作为测试开发板。
        第一步需要将FAL、DFS 、Fatfs组件打开,因为需要FAL的帮助来划分分区和提供访问SPI FLASH的接口以及文件系统的接口。 

二、挂载文件系统

        首先在已经创建好的项目下的 board 文件夹下找到 fal_cfg.h 文件,在 FAL_PART_TABLE 宏定义下划分一个新的区域。文章中定义为 filesystem 。

#define FAL_PART_TABLE                                                               \
{                                                                                    \
    {FAL_PART_MAGIC_WORD,       "app", NOR_FLASH_DEV_NAME,         0,           4*1024*1024,    0}, \
    {FAL_PART_MAGIC_WORD, "easyflash", NOR_FLASH_DEV_NAME,         4*1024*1024, 3*1024*1024,    0}, \
    {FAL_PART_MAGIC_WORD,  
### 如何在RT-Thread Studio中配置并使用SPIHPM6750进行通信 #### 1. 创建RT-Thread项目 为了开始开发基于RT-Thread的应用程序,首先需要通过RT-Thread Studio创建一个新的RT-Thread项目。这一步骤可以通过图形界面完成,选择目标芯片型号(如HPM6750),并设置项目的初始参数[^1]。 #### 2. SPI驱动支持的启用 在RT-Thread环境中,SPI功能通常作为组件存在。要使能SPI外设的支持,在`menuconfig`工具中导航至 `Component -> Device Drivers` 并选中 `Enable SPI bus driver support` 和具体的硬件平台对应的SPI控制器选项。对于HPM6750系列处理器,确保其特定的SPI接口被正确识别和初始化。 #### 3. 配置SPI设备节点 一旦基础环境搭建完毕,就需要定义实际使用SPI总线以及连接到该总线上各个从属器件的具体参数。这些信息一般存储于KConfig或者board.c文件里。例如: ```c #include <rtthread.h> #include <rthw.h> /* 定义spi_bus_name, cs_pin等 */ static struct rt_spi_device spi_device; void board_spi_init(void){ /* 初始化指定名称的spi总线对象*/ struct rt_spi_bus *bus = rt_spi_bus_attach_device(&spi_device,"spibus",NULL); /* 设置工作模式、数据位宽及时钟频率 */ struct rt_spi_configuration cfg={ .data_width=8, .mode=RT_SPI_MODE_0|RT_SPI_MSB, .max_hz=1000000//1MHz }; rt_spi_configure(bus,&cfg); } INIT_BOARD_EXPORT(board_spi_init); ``` 上述代码片段展示了如何在一个典型的嵌入式板级初始化函数中附加一个名为“spibus”的SPI总线实例,并对其进行基本配置。 #### 4. 编写测试应用以验证通讯 下面给出一段简单的例子来展示怎样利用已经建立好的框架向外部设备发送命令字节序列并通过接收缓冲区读取响应消息: ```c #include "drv_spi.h" int main(){ int ret; uint8_t send_buf[]="test"; uint8_t recv_buf[sizeof(send_buf)]; /* 获取之前注册过的spi device句柄 */ struct rt_spi_device* dev = (struct rt_spi_device*)rt_device_find("spidev"); if(!dev)return -1; /* 执行传输操作 */ ret=rt_spi_sendrecv(dev,(uint8_t *)send_buf,(uint8_t *)recv_buf,sizeof(send_buf)); if(ret>0){ printf("Received:%s\n",recv_buf); } return 0; } ``` 此部分实现了最基本的全双工交换过程演示。 #### 注意事项 如果遇到无法正常挂载的情况,请确认是否遗漏了必要的磁盘分区格式化步骤。比如当尝试加载fatfs或其他类型的文件系统失败时,可以考虑执行如下msh指令先行准备介质状态:`mkfs -t elm filesystem`[^2]。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值