【lvgl移植esp32】报错spi_bus_initialize(756): SPI bus already initialized如何解决

在将lvgl移植到ESP32的过程中遇到 spi_bus_initialize 错误,提示SPI总线已初始化。问题源于HSPI总线已被屏幕占用。解决方法是将默认总线更改为VSPI。参考相关文章,具体修改路径为D:softEspressifframeworksesp-idf-v4.4.2componentsdriverincludedriversdspi_host.h,将sdspihost设置为VSPI_HOST,修改后运行恢复正常。
摘要由CSDN通过智能技术生成

初次接触lvgl和esp32,使用例程移植的时候,编译正常,但是烧录的时候发现报错总线初始化失败,报错如下:

spi_bus_initialize(756): SPI bus already initialized

通过搜索发现,默认总线是HSPI,已经被屏幕占用,把默认总线改为VSPI即可,关于SPI的相关知识,可以参考这篇链接:

https://www.bilibili.com/read/cv15092415/

关于具体修改,参考了这篇链接

https://blog.csdn.net/weixin_43326110/article/details/126361624

但是本人搭建的环境,具体文件名称及目录和上述链接中不一致,具体修改的文件及目录如下:
D:\soft\Espressif\frameworks\esp-idf-v4.4.2\components\driver\include\driver\sdspi_host.h

即为espidf的安装目录下的driver目录下的这个文件sdspi_host.h

把默认的sdspihost改为VSPI_HOST即可 

之后运行即可正常。

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
ESP32-C3 上,`spi_bus_free()` 函数用于释放 SPI 总线的资源,并将总线设置为未使用状态。该函数的参数为 SPI 总线的编号,可以是 `0` 或 `1`。 例如,如果你使用 `spi_bus_initialize()` 函数初始化了 SPI 总线,并使用 `spi_bus_add_device()` 函数添加了一个设备,当你不再需要使用该设备时,可以先使用 `spi_bus_free()` 函数释放该总线的资源,然后再使用 `spi_bus_initialize()` 函数重新初始化该总线并添加其他设备。 以下是一个示例代码,演示了如何使用 `spi_bus_free()` 函数释放 SPI 总线的资源: ```c #include "driver/spi_master.h" #define PIN_NUM_MOSI 23 #define PIN_NUM_MISO 19 #define PIN_NUM_CLK 18 #define PIN_NUM_CS 5 void app_main() { spi_bus_config_t bus_cfg = { .mosi_io_num = PIN_NUM_MOSI, .miso_io_num = PIN_NUM_MISO, .sclk_io_num = PIN_NUM_CLK, .quadwp_io_num = -1, .quadhd_io_num = -1, }; spi_device_interface_config_t dev_cfg = { .clock_speed_hz = 10 * 1000 * 1000, .mode = 0, .spics_io_num = PIN_NUM_CS, .queue_size = 1, }; spi_device_handle_t spi_handle; spi_bus_initialize(1, &bus_cfg, 0); spi_bus_add_device(1, &dev_cfg, &spi_handle); // 使用 SPI 总线传输数据 // 释放 SPI 总线的资源 spi_bus_free(1); // 在此处重新初始化 SPI 总线并添加其他设备 } ``` 在这个示例中,我们使用 `spi_bus_initialize()` 函数初始化了 SPI 总线,并使用 `spi_bus_add_device()` 函数添加了一个设备。我们在注释的位置使用了 SPI 总线传输数据。 然后,我们使用 `spi_bus_free()` 函数释放 SPI 总线的资源。在此之后,我们可以使用 `spi_bus_initialize()` 函数重新初始化 SPI 总线并添加其他设备。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值