完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
我想要通过mlx采集一些数据并在lcd上面显示出来,之后并通过wifi传送到主机上,但是通过队列传送数据就会报错,lcd驱动没有错误,之前成功显示过。有无大佬指定一二,
以下是在monitor中的日志信息Code: Select all rst:0x8 (TG1WDT_SYS_RESET),boot:0x13 (SPI_FAST_FLASH_BOOT)configsip: 0, SPIWP:0xeeclk_drv:0x00,q_drv:0x00,d_drv:0x00,cs0_drv:0x00,hd_drv:0x00,wp_drv:0x00mode:DIO, clock div:2load:0x3fff0030,len:6952load:0x40078000,len:15500ho 0 tail 12 room 4load:0x40080400,len:3844entry 0x4008064c0x40080400: _init at ??:?I (58) boot: ESP-IDF HEAD-HASH-NOTFOUND 2nd stage bootloaderI (58) boot: compile time 12:40:52I (58) boot: chip revision: v3.0I (62) boot.esp32: SPI Speed : 40MHzI (67) boot.esp32: SPI Mode : DIOI (72) boot.esp32: SPI Flash Size : 16MBW (76) boot.esp32: PRO CPU has been reset by WDT.W (82) boot.esp32: WDT reset info: PRO CPU PC=0x4008598e0x4008598e: _xt_panic at E:/Software/Espressif/frameworks/esp-idf-v5.0.2/components/esp_system/port/arch/xtensa/panic_handler_asm.S:29W (88) boot.esp32: WDT reset info: APP CPU PC=0x400d1c820x400d1c82: panic_handler at E:/Software/Espressif/frameworks/esp-idf-v5.0.2/components/esp_system/port/panic_handler.c:140 (discriminator 1)I (94) boot: Enabling RNG early entropy source...I (99) boot: Partition Table:I (103) boot: ## Label Usage Type ST Offset LengthI (110) boot: 0 nvs WiFi data 01 02 00009000 00006000I (118) boot: 1 phy_init RF data 01 01 0000f000 00001000I (125) boot: 2 factory factory app 00 00 00010000 00100000I (133) boot: End of partition tableI (137) esp_image: segment 0: paddr=00010020 vaddr=3f400020 size=0c340h ( 49984) mapI (156) esp_image: segment 1: paddr=0001c368 vaddr=3ffb0000 size=0208ch ( 8332) loadI (158) esp_image: segment 2: paddr=0001e3fc vaddr=40080000 size=01c1ch ( 7196) loadI (164) esp_image: segment 3: paddr=00020020 vaddr=400d0020 size=1e8fch (125180) mapI (197) esp_image: segment 4: paddr=0003e924 vaddr=40081c1c size=0db0ch ( 56076) loadI (219) boot: Loaded app from partition at offset 0x10000I (219) boot: Disabling RNG early entropy source...I (230) cpu_start: Pro cpu up.I (231) cpu_start: Starting app cpu, entry point is 0x400813600x40081360: call_start_cpu1 at E:/Software/Espressif/frameworks/esp-idf-v5.0.2/components/esp_system/port/cpu_start.c:141I (0) cpu_start: App cpu up.I (247) cpu_start: Pro cpu start user codeI (247) cpu_start: cpu freq: 160000000 HzI (247) cpu_start: Application information:I (252) cpu_start: Project name: mainI (256) cpu_start: App version: 1I (261) cpu_start: Compile time: Jul 11 2023 12:39:14I (267) cpu_start: ELF file SHA256: 34dcd2376a882970...I (273) cpu_start: ESP-IDF: HEAD-HASH-NOTFOUNDI (279) cpu_start: Min chip rev: v0.0I (284) cpu_start: Max chip rev: v3.99 I (288) cpu_start: Chip rev: v3.0I (293) heap_init: Initializing. RAM available for dynamic allocation:I (300) heap_init: At 3FFAE6E0 len 00001920 (6 KiB): DRAMI (306) heap_init: At 3FFB5238 len 0002ADC8 (171 KiB): DRAMI (313) heap_init: At 3FFE0440 len 00003AE0 (14 KiB): D/IRAMI (319) heap_init: At 3FFE4350 len 0001BCB0 (111 KiB): D/IRAMI (325) heap_init: At 4008F728 len 000108D8 (66 KiB): IRAMI (333) spi_flash: detected chip: genericI (336) spi_flash: flash io: dioI (341) cpu_start: Starting scheduler on PRO CPU.I (0) cpu_start: Starting scheduler on APP CPU.I (352) MAIN: I2C config OK!I (352) gpio: GPIO[25]| InputEn: 0| OutputEn: 1| OpenDrain: 0| Pullup: 1| Pulldown: 0| Intr:0 I (362) gpio: GPIO[26]| InputEn: 0| OutputEn: 1| OpenDrain: 0| Pullup: 1| Pulldown: 0| Intr:0 I (372) gpio: GPIO[33]| InputEn: 0| OutputEn: 1| OpenDrain: 0| Pullup: 1| Pulldown: 0| Intr:0 ets Jul 29 2019 12:21:46 以下是我的主要程序代码,我把后面wifi发送功能注销了,依然会重启Code: Select all void i2c_init(){ // I2C配置,多个mlx90640共用一个 i2c_config_t config; config.mode = I2C_MODE_MASTER; config.scl_io_num = 18; config.scl_pullup_en = GPIO_PULLUP_ENABLE; config.sda_io_num = 19; config.sda_pullup_en = GPIO_PULLUP_ENABLE; config.master.clk_speed = 400000; config.clk_flags = I2C_SCLK_SRC_FLAG_FOR_NOMAL; i2c_param_config(I2C_NUM_0, &config); i2c_driver_install(I2C_NUM_0, I2C_MODE_MASTER, 0, 0, 0); //将配置写入寄存器}void mlx90640_task(void *mlx90640_config){ mlx90640_t *mlx90640 = (mlx90640_t *) mlx90640_config; uint8_t slaveAddr = mlx90640->address; uint8_t index = mlx90640->mlx_index; uint8_t i2c_num = mlx90640->i2c_num; uint16_t extraParam[832]={0}; uint16_t Frame[834]={0}; paramsMLX90640 Param={0}; float temperature; // 利用i2c传数据之前先上锁,用完之后再解锁 if(i2c_num) xSemaphoreTake(i2c_handle1,portMAX_DELAY); else xSemaphoreTake(i2c_handle0,portMAX_DELAY); MLX90640_SetRefreshRate(slaveAddr, REFRESH_RATE);//测量速率(0~7对应0.5,1,2,4,8,16,32,64Hz) MLX90640_DumpEE (slaveAddr, extraParam); if(i2c_num) xSemaphoreGive(i2c_handle1); else xSemaphoreGive(i2c_handle0); MLX90640_ExtractParameters(extraParam, &Param); while(1){ ESP_LOGI(TAG, "collect data at mlx_%d!",index); if(i2c_num) xSemaphoreTake(i2c_handle1,portMAX_DELAY); else xSemaphoreTake(i2c_handle0,portMAX_DELAY); MLX90640_GetFrameData(slaveAddr, Frame); if(i2c_num) xSemaphoreGive(i2c_handle1); else xSemaphoreGive(i2c_handle0); temperature = MLX90640_GetTa(Frame, &Param) - TA_SHIFT; MLX90640_CalculateTo(Frame, &Param, EMISSIVITY, temperature, tr_result[index]); printf("frame data ready at %d!n",index); // 等待所有mlx的数据收集完毕 ESP_LOGI(TAG, "wait for all data ready at mlx_%d!",index); xEventGroupSync(data_flow,1ULL<>(24-MLX_NUM),pdTRUE,pdTRUE,portMAX_DELAY); ESP_LOGI(TAG, "data ready!"); if (uxQueueSpacesAvailable(lcd_data_queue) > 0) { if (xQueueSend(lcd_data_queue, &tr_result, portMAX_DELAY) != pdPASS) { ESP_LOGI(TAG, "send data error!"); } } if (uxQueueSpacesAvailable(tcp_data_queue) > 0) { if (xQueueSend(tcp_data_queue, &tr_result, portMAX_DELAY) != pdPASS) { ESP_LOGI(TAG, "send data error!"); } } // 将数据采集标志位置高 xEventGroupSetBits(data_flow,1ULL<<23); ESP_LOGI(TAG, "Send data to queue done!"); }}void ST7798_task(){ float data[MLX_NUM][768]; while(1){ xQueueReceive(lcd_data_queue,&data,portMAX_DELAY); for(int i=0;i |
|
相关推荐
1个回答
|
|
根据您提供的信息,您的ESP32-WROOM-32E模块在尝试通过mlx采集数据并在LCD上显示,然后通过WiFi发送到主机时遇到了无限重启的问题。从您提供的日志信息来看,系统在TG1WDT_SYS_RESET(任务监视器系统重置)后进行了SPI_FAST_FLASH_BOOT(快速SPI Flash引导)。
以下是一些建议来解决这个问题: 1. **检查电源稳定性**:不稳定的电源可能导致模块不稳定,从而导致无限重启。确保您的电源供应稳定且符合模块的规格。 2. **检查代码逻辑**:确保您的代码逻辑没有问题,特别是在数据传输和队列管理方面。如果可能的话,尝试简化代码,逐步添加功能,以便找到导致问题的具体部分。 3. **检查队列管理**:您提到通过队列传送数据时会报错。请确保队列的使用是正确的,包括创建、发送和接收数据。检查是否有可能发生死锁或资源竞争。 4. **检查硬件连接**:确保所有硬件连接都是正确的,包括mlx传感器、LCD和WiFi模块。检查是否有任何松动或损坏的连接。 5. **检查SPI通信**:由于您的日志显示SPI_FAST_FLASH_BOOT,可能与SPI通信有关。确保您的SPI通信设置正确,包括时钟速率、数据模式和芯片选择。 6. **更新固件和库**:确保您的ESP32模块运行的是最新版本的固件,以及您使用的mlx和LCD库是最新和兼容的版本。 7. **调试和日志记录**:在代码中添加更多的调试信息和日志记录,以便更好地了解在出现问题之前系统的状态。这可以帮助您确定问题发生的具体位置。 8. **查看错误代码**:您的日志中可能包含错误代码或警告,这些可以帮助您确定问题的原因。请查阅ESP32的文档以了解这些代码的含义。 9. **社区和论坛**:如果您仍然无法解决问题,可以尝试在相关的技术社区和论坛上寻求帮助。那里可能有人遇到过类似的问题,并提供了解决方案。 10. **硬件故障**:如果以上方法都无法解决问题,可能需要考虑硬件故障的可能性。您可以尝试使用另一个ESP32模块来排除硬件问题。 通过逐步检查和排除这些问题,您应该能够找到导致ESP32-WROOM-32E无限重启的原因,并采取相应的措施来解决它。 |
|
|
|
只有小组成员才能发言,加入小组>>
1153 浏览 1 评论
582浏览 6评论
480浏览 5评论
有没有办法在不使用混杂模式的情况下实现Wifi驱动程序接收缓冲区访问中断呢?
465浏览 5评论
466浏览 4评论
441浏览 4评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-24 09:16 , Processed in 0.967894 second(s), Total 82, Slave 65 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号