1.简介
sfud 是一款开源的串行 spi flash 通用驱动库。由于现有市面的串行 flash 种类居多,各个 flash 的规格及命令存在差异, sfud 就是为了解决这些 flash 的差异现状而设计,让我们的产品能够支持不同品牌及规格的 flash,提高了涉及到 flash 功能的软件的可重用性及可扩展性,同时也可以规避 flash 缺货或停产给产品所带来的风险。 主要特点:支持 spi/qspi 接口、面向对象(同时支持多个 flash 对象)、可灵活裁剪、扩展性强、支持 4 字节地址。
2.sfud移植
2.1硬件接口
这里使用的是stm32f407的单片机,使用spi1接口与flash连接,flash型号为w25q16jv。电路图如下:
2.2 添加源码到工程中
首先下载sfud的源码,下载后可以看到,sfud文件夹中有三个子文件夹: inc—头文件 port—接口文件 src—源码文件 然后用stm32cubemx生成一个工程,初始化时钟、spi1和一个串口(用于打印信息)。spi通讯格式如下:
生成工程后,将sfud文件夹复制到工程目录,添加.c文件到工程中:
添加头文件的包含路径:
2.3编写底层函数
这里使用的是spi接口,需要自己编写的只有两个函数,读写和初始化:
static sfud_err spi_write_read(const sfud_spi *spi, const uint8_t *write_buf, size_t write_size, uint8_t *read_buf, size_t read_size) sfud_err sfud_spi_port_init(sfud_flash *flash) 如果使用的是qspi,则需要编写下面这个函数:static sfud_err qspi_read(const struct __sfud_spi *spi, uint32_t addr, sfud_qspi_read_cmd_format *qspi_read_cmd_format, uint8_t *read_buf, size_t read_size) 下载的源码中有个stm32f1xx的工程例程,使用的是标准库,这里改为hal库,具体代码就不贴了,可在文章开始下载完整工程。 需要注意的是,这里添加了几个函数:static void spi_lock(const sfud_spi *spi) {// __disable_irq();}static void spi_unlock(const sfud_spi *spi) {// __enable_irq();}static void retry_delay(void){ hal_delay(1);} 如果retry_delay使用了hal_delay做延时,那spi_lock就不能关闭中断,否则systick无法中断,hal_delay函数会卡死。如果使用纯软件延时就不存在这个问题。 接口文件修改好后,在sfud_cfg.h文件中添加flash型号的列表,列表中可以有多个器件型号,也就是说该驱动库支持同时读写多个器件。这里只有一个w25q16,列表如下:enum { sfud_w25q16_device_index = 0,};#define sfud_flash_device_table { [sfud_w25q16_device_index] = {.name = w25q16, .spi.name = spi1}, }最后将测试demo函数复制过来,在main函数中初始化芯片,并调用demo函数: if (sfud_init() == sfud_success) { sfud_demo(0, sizeof(sfud_demo_test_buf), sfud_demo_test_buf); } 在串口调试助手可以看到初始化以及读写的一些打印信息:
iphone9什么时候上市?iphone9最新消息:iPhone 9曝光,万年LCD屏幕的苹果将全线启用OLED
家用带功放音响怎么加装蓝牙模块
在AI技术发展的热潮下,生物识别技术和行业结合将成为经济增长新引擎
山西临汾公司:220千伏壶口站增容改造
誓保安全第一,英特尔公司CEO科再奇致科技行业领袖的公开信
开源的串行SPI Flash通用驱动库SFUD的应用
机器人控制器的制作教程
如何在Linux的文件和文件夹中搜索文本?
!销售AGILENT E5100A网络分析仪E5100A 小
MacBook Pro恶评如潮!苹果紧急公关
工信部与证监会联合召开工业互联网产融结合座谈会
冲压叠料检测方案:阿童木MDSC-8000S金属双张检测器助力安防门锁企业
你知道吗?2025年我国IPv6规模要达世界第一
smt贴片检验标准
如何排布LED灯可以实现三种基本色
全志R128平台SPI与DBI点屏性能大对比
思科将专注于垂直行业 提供管理服务和咨询服务
选择光纤线应该注意哪些问题-clan
华为2020年三季度收入6713亿元人民币同比增长9.9%
TrueTime工具箱模块内部结构及功能解析