Matter - NXP K32W061 SDK 中 GPIO 的修改

      不管在开发什么应用,在原厂的 EVK 板子上运行测试 SDK Demo 后,需要将对应的程序移植到自己的板子上时,由于板子硬件的变动,避免不了的就是需要修改 IO 口的配置,例如按键 IO 的变动、LED IO 的变动、UART、I2C、SPI 等等都有可能跟原厂的 EVK 不同,今天的内容主要就是以在开发 NXP K32W061 Matter lighting app 为例,来修改按键和 LED 的 IO 脚位。

  1. K32W061DK6

      K32W061DK6 板子分为三个部分,底板、拓展板和 K32W061 的Module 板,所以在对照硬件原理图的时候大家可以分别参考三块板子的原理图。在 K32W061 的 Matter 例程中,大部分 UI 交互是在拓展板进行的,使用到拓展板上的按键和 LED。

         

  1. 管脚定义

      那么在软件中需要修改按键或者 LED 的管脚,首先就需要找到这些管脚的定义和初始化的地方, 那么熟悉 SDK 的朋友应该都知道,这些管脚的初始化通常都跟 board.c 有关系,那么就可以从找 board.c 来下手找。但是找了一圈可以发现在 Matter 工程中并没有 K32W061 的 board.c 。其实可以从另一个地方着手,不知道大家还记不记得在编译工程过程中执行过一个 gn gen 命令,这个命令会生成一些后续编译过程中需要的编译器配置、连接选项等。

        

  1. k32w0_sdk.gni

      gn gen 命令需要 BUILD.gn 文件作为输入,lighting app 的根目录下可以找到这个文件,在 BUILD.gn 中 import 了一个 k32w0_sdk.gni 文件,文件在 matter/third_party/nxp/k32w0_sdk 目录下可以找到。

         

      打开这个 gni 文件就会看到里面包含了很多源文件的路径。

        

      这些路径都在 ${k32w0_sdk_root} 下,也就是在编译前配置的环境变量,他指向的是本地的 K32W061DK6 的 SDK 包。因此在 k32w0_sdk.gni 中可以找到管脚初始化的 board.c 的位置,就是 SDK_2_6_12_K32W061DK6/boards/k32w061dk6/wireless_examples/openthread/reed/bm/board.c。



        

      找到 K32W061DK6 的 SDK 包中对应目录下的文件就可以找到按键或 LED 相关的内容。

        

      继续往后追就可以在 gpio_pins.h 中看到具体的管脚定义,相信接下来大家已经知道怎么修改了。

         

  1. 常见问题

      第一个需要注意的问题是宏的配置,在上面内容的截图中可以看到会有很多相关的预编译宏,这些宏的配置都在 k32w0_sdk.gni 中可以找到,可以通过 gn gen 后面的参数进行配置,例如默认的 gn gen 语句,配置了 chip_with_OM15082=1 ,表示使用了拓展板。

        

      在 k32w0_sdk.gni 中可以看到 chip_with_OM15082 影响的宏是 "OM15082=1",  "gKeyBoardSupported_d=1","gKBD_KeysCount_c=4",所以在修改的过程中需要对照清楚,免得修改的位置压根就不进行编译导致修改无效。

        

      第二个容易遇到的问题是管脚悬空,从原厂的 K32W061DK6 板子转移到自己板子上, 在配置按键的时候,修改不完全,默认工程中按键是采用中断方式,有一些被配置为按键的管脚没有稳定的外部状态,导致中断一直被触发,影响到正确的按键按下时无法被响应,如果出现相应的问题大家可以往这个方向检查。以上就是文章的全部内容,如果文章有遗漏或错误欢迎大家在评论区指出,相互讨论学习。

参考文档

K32W0X1-MATTER-QSG.pdf   ---NXP

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

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

评论