单片机/MCU论坛
直播中

梅利号

8年用户 1494经验值
擅长:可编程逻辑
私信 关注

如何在Zephyr OS中使用cyhal?

我一直在使用Zephyr和 CY8CPROTO-063-BLE 模块,我需要实现一个高速SPI驱动器。 不幸的是,Zephyr 驱动程序的开销使每次传输的每次 SPI 传输都有大约 25 秒的额外延迟,这对我们的应用程序来说太过分了。
我认为使用HAL会更快,但我 CAN找不到任何如何从英飞凌设备中提取HAL的示例。 我在我的 prf.conf 中设置了标志 `config_spi_infineon_cat1=y`然后使用了 `#include cyhal.h` < >还有 `#include i.h`,但是链接失败并显示诸如 “对 cyhal_spi_transfer 的未定义引用” 之类的消息。

回帖(2)

温益浪

2024-1-29 15:42:12
 更新:我已经设法加入了 HAL。 在我的用例中,我所需要的只是 SPI。 以下是我必须执行的步骤才能使其正常运行:
我的项目是一个 Zephyr 工作空间应用程序。
在 prj.conf 中:
CONFIG_SOC_SERIES_PSOC_63=yCONFIG_ABSTRACTION_RTOS_COMPONENT_ZEPHYR=yCONFIG_GPIO=yCONFIG_GPIO_INFINEON_CAT1=yCONFIG_PINCTRL_INFINEON_CAT1=yCONFIG_SPI=yCONFIG_SPI_INFINEON_CAT1=y
。/boards/cy8cpro to_063_ble.overlay:
然后,我需要为 SPI SCB 外围设备实现一个虚拟设备树结构,以强制 Zephyr 引入 HAL 库。 确保你在 devicetree 中实现的 scb 不是你需要使用的 SPI,否则你会出现 cyhal 错误...为此,我只是从 Zeph yr 的主存储库测试中复制粘贴了 spi 示例的 dts 作为我的主板。
在我的应用程序代码中,我包含了 cy hal.h就像在 moduStoolBox 中一样,我还释放了虚拟 devicetree 外围设备,因为它未使用。 然后我可以在更低(而且足够快)的级别上使用SPI驱动程序来满足我的用例!
                                                                                                                                  
举报

手托初梦

2024-1-29 17:20:43
要在Zephyr OS中使用cyhal,以下是一些步骤:

1. 确保你的Zephyr版本和cyhal版本兼容。检查Zephyr文档以获取兼容性信息。

2. 配置Zephyr build system以启用cyhal。在Zephyr项目的`prj.conf`文件中添加以下行:
   ```
   CONFIG_HAL_INFINEON_CAT1=y
   ```

3. 引入必要的头文件。在你的代码中,包括以下头文件:
   ```c
   #include
   #include
   ```

4. 进行cybsp初始化。在你的代码中插入如下语句进行cybsp初始化:
   ```c
   cybsp_init();
   ```

5. 使用cyhal函数进行SPI传输。例如,使用`cyhal_spi_transfer()`进行SPI传输:
   ```c
   cyhal_spi_t spi;
   cyhal_spi_init(&spi, );
   cyhal_spi_transfer(&spi, <发送缓冲区>, <接收缓冲区>, <传输长度>);
   cyhal_spi_free(&spi);
   ```

请注意,具体的SPI配置参数以及缓冲区和传输长度等取决于你的应用需求,应根据需要进行适当的设置。

以上是大致的步骤,要使用cyhal进行高速SPI传输,你可能还需要根据自己的需求调整其他配置和参数。另外,确保你已经查阅了相关文档和示例代码来更好地了解如何正确地使用cyhal库。
举报

更多回帖

发帖
×
20
完善资料,
赚取积分