乐鑫技术交流
直播中

感谢相遇

9年用户 974经验值
擅长:嵌入式技术 制造/封装 控制/MCU
私信 关注
[问答]

BLE gatt_server和OLED例程都可以正常运行,两个放一起就不正常了,为什么?

大家好:
      本人IDF开发时,遇到个很奇怪的问题,琢磨很久不知道如何解决。板子是ESP32-S3-DevKitC-1,使用OLED I2C显示功能正常。使用GATT_SERVER工程,设置BLE模式,也可以正常使用手机连接BLE。但是当我把OLED I2C和GATT_SERVER工程代码同时集成到一个工程中时,就不行了。测试时发现,当我使用:
    oled_show_str(0,0,  "HX ESP32 I2C", &Font_7x10, 1);
这条语句时,我的gatt_server就起不来,手机无法扫描到ESP32的蓝牙服务。使用串口助手时,提示SCL和SDA用了同样的端口。目前不清楚为啥会有这样的报错,请大神帮分析下。
              

回帖(1)

李艳

2024-6-20 17:21:52
1. 确保I2C总线的SCL和SDA引脚没有被其他组件占用。您可以在代码中检查是否有其他组件使用了相同的引脚。

2. 在初始化I2C总线和OLED显示时,确保使用了不同的I2C端口。例如,您可以使用I2C_NUM_0和I2C_NUM_1。

3. 在调用oled_show_str函数之前,确保BLE GATT_SERVER已经初始化并运行。您可以尝试在BLE GATT_SERVER初始化完成后再调用OLED显示函数。

4. 检查您的代码中是否有任何可能导致死锁或资源竞争的部分。例如,确保在调用OLED显示函数时,没有阻塞BLE GATT_SERVER的运行。

5. 如果问题仍然存在,您可以尝试使用ESP-IDF的日志系统来记录BLE GATT_SERVER和OLED显示的运行状态,以便更好地了解问题所在。

6. 另外,您还可以尝试降低OLED显示的刷新频率,以减少对I2C总线的占用。


举报

更多回帖

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