68 lines
1.7 KiB
C
68 lines
1.7 KiB
C
#include "esp_log.h"
|
|
#include "esp_system.h"
|
|
#include "freertos/FreeRTOS.h"
|
|
#include "freertos/task.h"
|
|
#include "nvs_flash.h"
|
|
#include <stdio.h>
|
|
#include <string.h>
|
|
|
|
#include "ad5940.h"
|
|
#include "esp32s3_port.h"
|
|
#include "webserver.h"
|
|
|
|
#define TAG "main"
|
|
|
|
void app_main(void) {
|
|
// Initialize NVS
|
|
esp_err_t ret = nvs_flash_init();
|
|
if (ret == ESP_ERR_NVS_NO_FREE_PAGES ||
|
|
ret == ESP_ERR_NVS_NEW_VERSION_FOUND) {
|
|
ESP_ERROR_CHECK(nvs_flash_erase());
|
|
ret = nvs_flash_init();
|
|
}
|
|
ESP_ERROR_CHECK(ret);
|
|
|
|
// Initialize WiFi and Webserver
|
|
ESP_LOGI(TAG, "Initializing WiFi...");
|
|
wifi_init_sta();
|
|
// start_webserver() is now called from IP_EVENT_STA_GOT_IP handler
|
|
|
|
// Initialize AD5940 Platform (SPI + GPIOs)
|
|
ESP_LOGI(TAG, "Initializing AD5940 Platform...");
|
|
AD5940_MCUResourceInit(0);
|
|
|
|
// Hard-reset the AD5940
|
|
ESP_LOGI(TAG, "AD5940_HWReset...");
|
|
AD5940_HWReset();
|
|
AD5940_Delay10us(25000); // 250ms for LDOs
|
|
|
|
// Initialize AD5940 registers
|
|
ESP_LOGI(TAG, "AD5940_Initialize...");
|
|
AD5940_Initialize();
|
|
|
|
// Initial log
|
|
web_log("System Started.\nWaiting for commands...\n");
|
|
|
|
while (1) {
|
|
if (check_id_requested()) {
|
|
web_log("Executing Check ID...\n");
|
|
|
|
// Wakeup AFE (Pulse CS)
|
|
AD5940_CsClr();
|
|
AD5940_Delay10us(10); // 100us pulse
|
|
AD5940_CsSet();
|
|
AD5940_Delay10us(100); // Wait 1ms for wake
|
|
|
|
// Read Chip ID
|
|
// Using direct register read if possible, or driver function
|
|
// Assuming AD5940_ReadReg is available in ad5940.c
|
|
uint32_t chip_id = AD5940_ReadReg(REG_AFECON_CHIPID);
|
|
|
|
web_log("CHIP ID: 0x%04X\n", chip_id);
|
|
ESP_LOGI(TAG, "CHIP ID: 0x%04X", chip_id);
|
|
}
|
|
|
|
vTaskDelay(pdMS_TO_TICKS(100));
|
|
}
|
|
}
|