基于 K32W061 Matter 外挂 Flash 驱动适配

  • 概述

在开发的过程中,由于 Matter 的 SDK 代码量比较大,所以 K32W061 需要外挂一颗 Flash 芯片用于存储数据。但是 SDK 中目前只适配了 MXIC 特定的两颗 Flash,如果客户进行硬件开发时需要根据自己选择的 Flash 型号添加对应代码。在本文中,将会介绍如何基于 K32W061 的 Matter SDK 修改相关代码,用于适配。

  • 修改流程

当我们没有修改 SDK 中的相关代码时,直接烧录到替换了 Flash 的硬件板子时,可以看到 log 显示直接卡在了前面,如下图所示:

在追踪代码时,最后只能追到 PDM_Init 这个函数,后续就找不到对应的源码。

在后面跟原厂沟通中得知该代码最后调用的是 K32W061 SDK 中 Eeprom_MX25R8035F.c 文件中的函数。在查看文件中的代码时,可以看到在进行 Flash 初始化的操作时,会去读取 Flash 的 ID,根据对应的型号判断进行下一步的操作,如下图所示:


对此,在理清了代码执行的逻辑情况之后,我们就可以对症下药了。在本文中我们选用的 Flash 是 Winbond 的 W25Q80 以及 W25Q16,对此,我们需要添加对应的 Flash 读取函数,以及后续对应 Flash ID 的代码,如下图所示:

由于 Winbond 中关于状态寄存器的读写 opcode ID 与 MXIC 的有所不同,所以添加了对应的操作 command。然后在读取到 Flash 的 ID 之后,需要再添加对应的操作函数:

如上图所示,由于这两款 Flash 都是可以支持 QSPI ,所以在确认 ID 之后就对状态寄存器进行操作使能 QSPI 的功能。在修改完上述的代码之后,编译烧录后可以看到代码能正常运行起来了。

  • 总结

通过上述的流程,总结起来就是 SDK 中会去读取 Flash 的 ID,然后使能对应的功能,由于不同型号中的 Flash 中 ID 的不同以及状态寄存器的不同需要修改驱动。

  • 参考资料

[1]《K32W0X1-MATTER-QSG》

[2]《SDK_2_6_8_K32W061DK6》

[3]《matter-1.0-branch-nxp》

★博文内容均由个人提供,与平台无关,如有违法或侵权,请与网站管理员联系。

★文明上网,请理性发言。内容一周内被举报5次,发文人进小黑屋喔~

评论