ソースを参照

add "MISO" to system's spi_config

Philippe G 3 年 前
コミット
5f5466fcb0

+ 4 - 1
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", "<n>", "Clock GPIO");
-	spiconfig_args.data = arg_int0("d","data", "<n>","Data GPIO");
+	spiconfig_args.data = arg_int0("d","data", "<n>","Data OUT GPIO");
+	spiconfig_args.miso = arg_int0("d","miso", "<n>","Data IN GPIO");
 	spiconfig_args.dc = arg_int0("c","dc", "<n>", "DC GPIO");
 	spiconfig_args.host= arg_int0("h", "host", "1|2", "SPI Host Number");
 	spiconfig_args.end = arg_end(4);

+ 4 - 2
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);