完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
我正在尝试使用 HSPI 与外部设备进行通信。为此,我使用 eor-spi-master 库。
这些是下载驱动程序的链接:https://github.com/kanflo/eor-spi 问题是,当我发送/接收超过 8 个字节时,字节之间的时间会增长到 1,5 秒的事务之间的延迟。 我尝试在 nonos 中做同样的事情,而且一切都很好,所以我想问题源于 RTOS。 |
|
相关推荐
1个回答
|
|
要使用 HSPI 与外部设备进行通信,您需要遵循以下步骤。在这个过程中,我们将使用 eor-spi-master 库,并尝试解决您提到的延迟问题。
1. 首先,确保您已经正确安装了 eor-spi-master 库。从您提供的链接克隆或下载库,并将其添加到您的项目中。 2. 在您的代码中,包含所需的头文件: ```cpp #include ``` 3. 初始化 HSPI。在您的程序中,找到合适的位置(例如在 `app_main()` 函数中)来初始化 HSPI。使用以下代码: ```cpp eor_spi_init(VSPI_HOST, 8, 1, 0, 0, 16); ``` 这里,`VSPI_HOST` 是 HSPI 端口的名称,`8` 是数据位宽,`1` 是极性,`0` 是相位,`0` 是空闲状态,`16` 是最大时钟频率。 4. 发送和接收数据。使用 `eor_spi_transfer()` 函数来发送和接收数据。例如: ```cpp uint8_t data_to_send[10] = {0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0A}; uint8_t data_received[10]; eor_spi_transfer(VSPI_HOST, data_to_send, data_received, sizeof(data_to_send)); ``` 5. 检查延迟问题。您提到的延迟问题可能与 RTOS 调度或任务优先级有关。尝试以下方法来解决这个问题: a. 确保您的 HSPI 通信任务具有适当的优先级。在 FreeRTOS 中,您可以使用 `xTaskCreate()` 或 `xTaskCreatePinnedToCore()` 函数创建任务,并设置优先级。 b. 检查您的代码中是否有任何可能导致阻塞或延迟的长时间运行的任务。如果有,请考虑将它们拆分成更小的任务或使用异步操作。 c. 使用 FreeRTOS 提供的调试工具,如 `xTaskGetSchedulerState()` 和 `vTaskList()`,来检查任务的状态和优先级。这将帮助您找到可能导致延迟的问题。 6. 如果问题仍然存在,您可以尝试在非 RTOS 环境中测试您的代码,以排除硬件或驱动程序问题。 通过遵循这些步骤,您应该能够使用 HSPI 与外部设备进行通信,并解决您遇到的延迟问题。 |
|
|
|
只有小组成员才能发言,加入小组>>
429浏览 6评论
362浏览 5评论
有没有办法在不使用混杂模式的情况下实现Wifi驱动程序接收缓冲区访问中断呢?
343浏览 5评论
349浏览 4评论
327浏览 4评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-9-1 17:28 , Processed in 0.812022 second(s), Total 78, Slave 61 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191