你好,
我们希望在 Zephyr 应用中使用 FRDM-MCXW71 上的两个 LPSPI 端口。
但是当我在 Zephyr 4.4.0 中检查时,在下面
zephyrproject/zephyr/boards/nxp/frdm_mcxw71
我找到了以下文件:
是否有关于如何使用 lpspi0 的示例?
除了常规的 Zephyr 项目文件(.overlay 和 prj.conf)之外,还需要修改哪些文件?
谢谢。
我注意到 zephyrproject/zephyr/drivers/spi/spi_nxp_lpspi 中有一个特定的驱动程序。
不过我不确定如何利用这个方法来同时处理两个 lpspi 端口。
你好,希望你一切都好。
lpspi0 和 lpspi1 都已在 zephyr/dts/arm/nxp/mcx/nxp_mcxw7x_common.dtsi 中以 SoC 级别声明,并具有所有必需的硬件属性(寄存器、中断、时钟、FIFO 大小),但默认情况下状态设置为“已禁用”。板文件 frdm_mcxw71.dts 仅启用 lpspi1,但可以通过应用程序覆盖文件以相同的方式启用 lpspi0。
您可以参考现有的 lpspi1 配置。基本叠加层看起来大概是这样的,然后你可以用自定义的设备实现对其进行扩展:
&pinctrl {
pinmux_lpspi0: pinmux_lpspi0 {
group0 {
pinmux = ,
,
,
;
slew-rate = "fast";
drive-strength = "low";
};
};
};
&lpspi0 {
status = "okay";
pinctrl-0 = <&pinmux_lpspi0>;
pinctrl-names = "default";
};
此致,
索菲亚。
你好,索菲亚,
我按照建议创建了一个包含叠加层功能的最小应用程序。
应用程序已编译,但绑定 SPI 设备仍然失败。
只有在覆膜部分添加标签,装订才能生效。
在叠加层中:
&lpspi0 {
...
label = "LPSPI_0";
}
&lpspi1 {
...
label = "LPSPI_1";
}在 main.c 中:
const struct device *lpspi0_dev;
lpspi0_dev = device_get_binding("LPSPI_0");
printk("%p\n,lpspi0_dev);现在对 lpspi0 和 lpspi1 都这样做似乎可以正常工作了。
是否需要为每个应用程序创建这些标签?
谢谢。
吉尔特