From 5306115c62fa3ebcfa30b6927ee3c70c6c92dfa2 Mon Sep 17 00:00:00 2001 From: lucascukla Date: Tue, 7 Nov 2023 11:50:21 -0300 Subject: [PATCH] prueba con una sola tarea ok --- main/main.c | 273 ++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 273 insertions(+) diff --git a/main/main.c b/main/main.c index aa2f679..24a7f60 100644 --- a/main/main.c +++ b/main/main.c @@ -52,9 +52,260 @@ spi_device_handle_t *spi_handle; spi_bus_config_t *bus_cfg_SPI; spi_device_interface_config_t *mcp3561_cfg_SPI; +spi_transaction_t trans_read_ADC; + +uint32_t data_ADC; +uint8_t* dir_data_ADC; + +bool flag_IRQ = false; + +uint8_t data_read_ADC[4] = {0}; + // Declaración de la cola de semáforo SemaphoreHandle_t xSemaphore; +// funciones SPI +esp_err_t SPI_begin(spi_device_handle_t* _spi_handle, spi_bus_config_t *_bus_cfg){ + // trabajo con el handle + if(_spi_handle == NULL){ + _spi_handle = malloc(sizeof(spi_device_handle_t)); + } + + // trabajo con la configuracion + spi_bus_config_t bus_cfg = { // genero la configuracion + .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, + .max_transfer_sz = 1024*8, + }; + + if(_bus_cfg == NULL){ + _bus_cfg = malloc(sizeof(spi_bus_config_t)); + } + + memcpy(_bus_cfg, &bus_cfg, sizeof(spi_bus_config_t)); + + esp_err_t _err; + _err = spi_bus_initialize(HSPI_HOST, &bus_cfg, 1); + // spi_bus_add_device(HSPI_HOST, &dev_cfg, &spi_handle); + + return(_err); +} + + + +esp_err_t mcp3561_begin(spi_device_handle_t* _spi_handle, spi_bus_config_t *_bus_cfg, gpio_num_t _cs, spi_device_interface_config_t *_dev_cfg){ + + if(_spi_handle == NULL){ + return(ESP_FAIL); + } + + spi_device_interface_config_t dev_cfg = { + .command_bits = 0, + .address_bits = 0, + .dummy_bits = 0, + .clock_speed_hz = 20000000, // Velocidad en Hz + .duty_cycle_pos = 128, + .mode = 0, // Modo SPI + .spics_io_num = _cs, + .queue_size = 7, + }; + + if(_dev_cfg == NULL){ + _dev_cfg = malloc(sizeof(spi_device_interface_config_t)); + } + + memcpy(_dev_cfg, &dev_cfg, sizeof(spi_device_interface_config_t)); + + esp_err_t _err; + + // spi_bus_initialize(HSPI_HOST, &bus_cfg, 1); + _err = spi_bus_add_device(HSPI_HOST, &dev_cfg, _spi_handle); + + if(_err == ESP_OK){ + register_map[0] |= (0x1 << 6); // dirección del dispositivo + register_map[0] |= (0x1 << 2); // dirección en la que arranca a leer + register_map[0] |= INCREMENTAL_READ; + + uint8_t rx_data[LEN_MAP_bytes] = {0}; + spi_transaction_t trans_desc; + + memset(&trans_desc, 0, sizeof(trans_desc)); + trans_desc.length = 8 * LEN_MAP_bytes; + trans_desc.tx_buffer = register_map; + trans_desc.rx_buffer = rx_data; // Configuración para recibir datos + + _err = spi_device_polling_transmit(*_spi_handle, &trans_desc); + if (_err != ESP_OK) { + printf("Error al enviar la trama SPI. Código de error: 0x%x\n", _err); + } else { + printf("Trama SPI enviada con éxito.\n"); + // Ahora, rx_data contiene los datos recibidos + printf("Datos recibidos: %02x %02x %02x %02x %02x %02x %02x %02x %02x %02x %02x %02x %02x %02x %02x %02x %02x %02x %02x %02x %02x %02x %02x %02x\n", rx_data[0], rx_data[1], rx_data[2], rx_data[3], rx_data[4], rx_data[5], rx_data[6], rx_data[7], rx_data[8], rx_data[9], rx_data[10], rx_data[11], rx_data[12], rx_data[13], rx_data[14], rx_data[15], rx_data[16], rx_data[17], rx_data[18], rx_data[19], rx_data[20], rx_data[21], rx_data[22], rx_data[23]); + + for(int i=1; i