diff --git a/components/platform_console/cmd_i2ctools.c b/components/platform_console/cmd_i2ctools.c index fd73b41a..7537a03a 100644 --- a/components/platform_console/cmd_i2ctools.c +++ b/components/platform_console/cmd_i2ctools.c @@ -76,6 +76,7 @@ static struct { static struct { struct arg_int *data; + struct arg_int *miso; struct arg_int *clk; struct arg_int *dc; struct arg_int *host; @@ -453,6 +454,7 @@ static int do_spiconfig_cmd(int argc, char **argv){ /* Check "--clk" option */ nerrors+=is_output_gpio(spiconfig_args.clk, f, &spi_config.sclk_io_num, true); nerrors+=is_output_gpio(spiconfig_args.data, f, &spi_config.mosi_io_num, true); + nerrors+=is_output_gpio(spiconfig_args.miso, f, &spi_config.miso_io_num, true); nerrors+=is_output_gpio(spiconfig_args.dc, f, &dc, true); nerrors+=is_output_gpio(spiconfig_args.host, f, &host, true); @@ -1030,7 +1032,8 @@ static void register_spiconfig(void) { spiconfig_args.clear = arg_lit0(NULL, "clear", "Clear configuration"); spiconfig_args.clk = arg_int0("k", "clk", "", "Clock GPIO"); - spiconfig_args.data = arg_int0("d","data", "","Data GPIO"); + spiconfig_args.data = arg_int0("d","data", "","Data OUT GPIO"); + spiconfig_args.miso = arg_int0("d","miso", "","Data IN GPIO"); spiconfig_args.dc = arg_int0("c","dc", "", "DC GPIO"); spiconfig_args.host= arg_int0("h", "host", "1|2", "SPI Host Number"); spiconfig_args.end = arg_end(4); diff --git a/components/services/accessors.c b/components/services/accessors.c index 63cbad8a..0601312b 100644 --- a/components/services/accessors.c +++ b/components/services/accessors.c @@ -391,7 +391,7 @@ esp_err_t config_spi_set(const spi_bus_config_t * config, int host, int dc){ esp_err_t err = ESP_OK; char * config_buffer=calloc(buffer_size,1); if(config_buffer) { - snprintf(config_buffer,buffer_size,"data=%u,clk=%u,dc=%u,host=%u",config->mosi_io_num,config->sclk_io_num,dc,host); + snprintf(config_buffer,buffer_size,"data=%u,clk=%u,dc=%u,host=%u,miso=%d",config->mosi_io_num,config->sclk_io_num,dc,host,config->miso_io_num); log_send_messaging(MESSAGING_INFO,"Updating SPI configuration to %s",config_buffer); err = config_set_value(NVS_TYPE_STR, "spi_config", config_buffer); if(err!=ESP_OK){ @@ -561,7 +561,7 @@ const set_GPIO_struct_t * get_gpio_struct(){ */ const spi_bus_config_t * config_spi_get(spi_host_device_t * spi_host) { char *nvs_item, *p; - static spi_bus_config_t spi = { + static EXT_RAM_ATTR spi_bus_config_t spi = { .mosi_io_num = -1, .sclk_io_num = -1, .miso_io_num = -1, @@ -572,6 +572,8 @@ const spi_bus_config_t * config_spi_get(spi_host_device_t * spi_host) { nvs_item = config_alloc_get_str("spi_config", CONFIG_SPI_CONFIG, NULL); if (nvs_item) { if ((p = strcasestr(nvs_item, "data")) != NULL) spi.mosi_io_num = atoi(strchr(p, '=') + 1); + if ((p = strcasestr(nvs_item, "mosi")) != NULL) spi.mosi_io_num = atoi(strchr(p, '=') + 1); + if ((p = strcasestr(nvs_item, "miso")) != NULL) spi.miso_io_num = atoi(strchr(p, '=') + 1); if ((p = strcasestr(nvs_item, "clk")) != NULL) spi.sclk_io_num = atoi(strchr(p, '=') + 1); if ((p = strcasestr(nvs_item, "dc")) != NULL) spi_system_dc_gpio = atoi(strchr(p, '=') + 1); if ((p = strcasestr(nvs_item, "host")) != NULL) spi_system_host = atoi(strchr(p, '=') + 1);