问题
使用esp32-s3-wroom 遇到了下面的问题
Info : only one transport option; autoselect 'jtag'
Info : esp_usb_jtag: VID set to 0x303a and PID to 0x4001
Info : esp_usb_jtag: capabilities descriptor set to 0x2000
Warn : Transport "jtag" was already selected
Warn : Interface already configured, ignoring
Info : esp_usb_jtag: VID set to 0x303a and PID to 0x1001
Info : esp_usb_jtag: capabilities descriptor set to 0x2000
adapter speed: 40000 kHz
Info : Listening on port 6666 for tcl connections
Info : Listening on port 4444 for telnet connections
Error: libusb_open() failed with LIBUSB_ERROR_NOT_SUPPORTED
Info : esp_usb_jtag: serial (123456)
Error: esp_usb_jtag: error finding/claiming JTAG interface on device!
使用usb工具查看该usb的号是 4001, 303a
原因, 这个口可能被设定为了usb的otg的口了,具体的说明和解决方案如下
方法:
You likely have firmware in the S3 that uses the USB-OTG peripheral and you're seeing that rather than the USB-serial-JTAG. Suggest you turn on the S3 in download mode, i.e. hold 'boot', press and release 'reset' and release 'boot' and try again; you should be seeing the USB-serial-JTAG then. (Obviously, you also need to change your openocd config back.)
参考网址:
https://esp32.com/viewtopic.php?t=33623
问题
esp32 idf 的vscode的开发过程中, 发现有些定义编译能够通过的, 编写的时候有些定义显示为红色,显示为了undefined, 语法没有被自动的关联上, 现象如下图
并且设定的一些宏,在vscode 中显示的也不对,不太方便进行代码的开发和调试
方法
cmake的编译选项里面已经添加了
set(CMAKE_EXPORT_COMPILE_COMMANDS ON)
所以默认的定义在build 下面就会产生这个compile_commands.json 文件, 这个定义添加到.vscode/c_cpp_properties.json
里面既可以
{
"configurations": [
{
"name": "ESP-IDF",
"compileCommands": "${workspaceFolder}/build/compile_commands.json",
// other properties...
}
],
"version": 4
}
问题
ESP32用smart_config自动配网后收不到IP_EVENT_STA_GOT_IP和SC_EVENT_SEND_ACK_DONE
方法
wifi初始化顺序是
void wifi_init(void){
ESP_ERROR_CHECK(esp_netif_init()); // 初始化tcp/ip协议栈
ESP_ERROR_CHECK(esp_event_loop_create_default()); // 创建一个默认得事件循环
esp_netif_t *sta_netif = esp_netif_create_default_wifi_sta(); // 创建一个默认得station esp_netif_destroy 这个调用必须在上个后面。。。。不然不能获取ip IP_EVENT_STA_GOT_IP
assert(sta_netif);
s_wifi_event_group = xEventGroupCreate(); // 创建一个事件组句柄 / vEventGroupDelete
ESP_ERROR_CHECK(esp_event_handler_register(WIFI_EVENT, ESP_EVENT_ANY_ID, &event_handler, NULL)); // esp_event_handler_unregister 但是应该没有必要unregister把。
ESP_ERROR_CHECK(esp_event_handler_register(IP_EVENT, IP_EVENT_STA_GOT_IP, &event_handler, NULL));
ESP_ERROR_CHECK(esp_event_handler_register(SC_EVENT, ESP_EVENT_ANY_ID, &event_handler, NULL));
wifi_init_config_t cfg = WIFI_INIT_CONFIG_DEFAULT();
ESP_ERROR_CHECK(esp_wifi_init(&cfg)); // esp_wifi_deinit
ESP_ERROR_CHECK(esp_smartconfig_set_type(SC_TYPE_ESPTOUCH));
}
esp_netif_create_default_wifi_sta() 必须放在esp_event_loop_create_default()后面。