W801学习笔记十二:掌机进阶V3版本之驱动(PSRAM/SD卡)

本次升级添加了两个模块,现在要把他们驱动起来。

一:PSRAM

使用SDK自带的驱动,我们只需要写一个初始化函数,并在其中添加一些自检代码。

void psram_heap_init(){wm_psram_config(0);//实际使用的psram管脚选择0或者1,W861为2psram_init(PSRAM_QPI);char *psr = (char*) psram_heap_malloc(1024*1024*2);memset(psr,122, 64);for(u8 i=0;i<64;i++){if(psr[i] != 122){printf("init psram false.\n");return;}}printf("init psram success. add = %x\n", psr);psram_heap_free(psr);
}

我们可以看到默认的引脚使用:

		case 0://W800 or w801tls_io_cfg_set(WM_IO_PB_00, WM_IO_OPTION4);/*CK*/tls_io_cfg_set(WM_IO_PB_01, WM_IO_OPTION4);/*CS*/tls_io_cfg_set(WM_IO_PB_02, WM_IO_OPTION4);/*D0*/tls_io_cfg_set(WM_IO_PB_03, WM_IO_OPTION4);/*D1*/tls_io_cfg_set(WM_IO_PB_04, WM_IO_OPTION4);/*D2*/tls_io_cfg_set(WM_IO_PB_05, WM_IO_OPTION4);/*D3*/tls_open_peripheral_clock(TLS_PERIPHERAL_TYPE_PSRAM);			break;

二:SD卡

使用SDK自带的SDIO驱动,我们只需要写一个初始化函数,并在其中添加一些自检代码。


void fatfs_init(void){FRESULT res_sd;//文件操作结果BYTE work[FF_MAX_SS];wm_sdio_host_config(1);//挂载SD卡res_sd = f_mount(&fs, "0:", 1);//***********************格式化测试****************************if(res_sd == FR_NO_FILESYSTEM){while(1){printf("SD卡没有文件系统,即将进行格式化...\r\n");//格式化res_sd = f_mkfs("0:", 0, work, sizeof(work));if(res_sd == FR_OK){printf("SD卡成功格式化!\r\n");//格式化后先取消挂载res_sd = f_mount(NULL, "0:", 1);//再重新挂载res_sd = f_mount(&fs, "0:", 1);break;}else{printf("文件格式化失败!错误代码:%d; will try again...\r\n",res_sd);}}}else if(res_sd != FR_OK){printf("挂载文件系统失败!可能是因为文件初始化失败!错误代码:%d\r\n", res_sd);}else{printf("文件系统挂载成功, 可进行读写测试!\r\n");}
}

我们可以看到默认的引脚使用:

case 1: tls_io_cfg_set(WM_IO_PA_09, WM_IO_OPTION1);/*CK*/tls_io_cfg_set(WM_IO_PA_10, WM_IO_OPTION1);/*CMD*/tls_io_cfg_set(WM_IO_PA_11, WM_IO_OPTION1);/*D0*/tls_io_cfg_set(WM_IO_PA_12, WM_IO_OPTION1);/*D1*/tls_io_cfg_set(WM_IO_PA_13, WM_IO_OPTION1);/*D2*/tls_io_cfg_set(WM_IO_PA_14, WM_IO_OPTION1);/*D3*/tls_open_peripheral_clock(TLS_PERIPHERAL_TYPE_SDIO_MASTER);break;

提供完整代码下载,结合前面的硬件制作,可以完成掌机制作。

下一章开始,我们进行软件开发。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/660368.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Llama images - 记录我看到的那些羊驼

来自 &#xff1a; DREAM: Distributed RAG Experimentation Framework

关于远程桌面与3389端口的深度解析

当我们谈论远程桌面和3389端口时&#xff0c;我们实际上是在探讨Windows操作系统的一个核心功能&#xff0c;该功能允许用户通过网络从任何地点远程控制和管理计算机。而3389端口&#xff0c;正是这一功能所依赖的通信端口。 一、远程桌面的工作原理 远程桌面协议&#xff08;R…

安装ROS

前提必须是20.04版本。。。 一、首先&#xff0c;先设置安装源&#xff0c;我们选择国内中科大的安装源 sudo sh -c . /etc/lsb-release && echo "deb http://mirrors.ustc.edu.cn/ros/ubuntu/ lsb_release -cs main" > /etc/apt/sources.list.d/ros-lat…

React路由导航

1. 什么是路由导航 一个路由跳转到另一个路由&#xff0c;并且在跳转的同时有可能需要传递参数进行通信&#xff0c;比如列表页跳转到详情页携带参数 2. 声明式导航 声明式导航是指通过在模版中通过 <Link/> 组件描述出要跳转到哪里去&#xff0c;比如后台管理系统的…

找不到msvcr120.dll怎么办,msvcr120.dll丢失的5种修复方法分享

计算机系统在运行某应用程序时无法正常启动&#xff0c;具体表现为缺少了一个至关重要的动态链接库文件——msvcr120.dll。这个DLL文件是微软Visual C Redistributable Package的一部分&#xff0c;对于确保许多基于Windows平台的软件能够顺利运作起着不可或缺的作用。msvcr120…

远程桌面连接服务器怎样连接不上的六个常见原因

远程桌面连接服务器无法连接的问题可能由多种原因引起。以下是一些常见的问题及其解决方案&#xff1a; 1. 网络连接问题&#xff1a;远程桌面连接的基础是稳定的网络连接。如果网络连接不稳定或中断&#xff0c;那么你将无法连接到远程桌面。检查你的网络连接&#xff0c;确保…

跨平台桌面客户端开发框架

跨平台桌面客户端开发框架允许开发者创建能够在多个操作系统上运行的桌面应用程序。以下是一些流行的跨平台桌面客户端开发框架。这些框架各有优势&#xff0c;选择哪个框架取决于项目需求、团队的技术栈以及对特定特性的偏好。 1.Electron &#xff1a; 使用JavaScript, HTML…

【刷题篇】动态规划-完全背包问题(十一)

文章目录 1、完全背包2、零钱兑换3、零钱兑换 II4、完全平方数 1、完全背包 #include <iostream> #include<vector> using namespace std;int main() {int n,v;cin>>n>>v;vector<int> V(n1);vector<int> W(n1);for(int i1;i<n;i){cin&g…

OMG 一个方法的调用改动居然优化了一倍性能!!! ConcurrentHashMap.computeIfAbsent 学习

背景 前提&#xff1a;抖音小程序有qps的监控&#xff0c;如果说qps过低就会导致小程序被下架掉。 业务代码非常的简单 一个easy的查询 但是当并非达到 20就 会发现qps降低了10倍 业务需求实现大概这么一个链路 ok 那么此前我们在认识一下 computeIfAbsent 方法&#xff08;大…

Spring6 当中 Bean 的生命周期的详细解析:有五步,有七步,有十步

1. Spring6 当中 Bean 的生命周期的详细解析&#xff1a;有五步&#xff0c;有七步&#xff0c;有十步 文章目录 1. Spring6 当中 Bean 的生命周期的详细解析&#xff1a;有五步&#xff0c;有七步&#xff0c;有十步每博一文案1.1 什么是 Bean 的生命周期1.2 Bean 的生命周期 …

AWTK 集成 OGRE 3D 图形引擎

本项目演示了如何在 AWTK 中集成 OGRE3D。 0. 准备 先编译 AWTK, 并在 env.sh 中设置 awtk 的路径。需要安装 cmake 1. 生成资源 python scripts/update_res.py all2. 编译 设置环境变量 source env.sh source env_rt.sh编译 ogre 库 cd 3rd build_assimp.sh build_ogre.…

环形链表题

1.环形链表1 看题&#xff1a;. - 力扣&#xff08;LeetCode&#xff09; 思路1&#xff1a;哈希表 遍历所有节点&#xff0c;每次遍历一个节点时&#xff0c;判断该节点是否被访问过。 可以使用哈希表来存储所有已经访问过的节点。每次到达一个节点&#xff0c;如果该节点已…