mirror of
				https://github.com/espressif/esp-idf.git
				synced 2025-10-31 04:59:55 +00:00 
			
		
		
		
	 07291fdd27
			
		
	
	07291fdd27
	
	
	
		
			
			This commit adds handling for FIFO overruns and adds workarounds for HW errats on the ESP32. Closes https://github.com/espressif/esp-idf/issues/2519 Closes https://github.com/espressif/esp-idf/issues/4276
		
			
				
	
	
		
			174 lines
		
	
	
		
			8.0 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
			
		
		
	
	
			174 lines
		
	
	
		
			8.0 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
| menu "Driver configurations"
 | |
| 
 | |
|     menu "ADC configuration"
 | |
| 
 | |
|         config ADC_FORCE_XPD_FSM
 | |
|             bool "Use the FSM to control ADC power"
 | |
|             default n
 | |
|             help
 | |
|                 ADC power can be controlled by the FSM instead of software. This allows the ADC to
 | |
|                 be shut off when it is not working leading to lower power consumption. However
 | |
|                 using the FSM control ADC power will increase the noise of ADC.
 | |
| 
 | |
|         config ADC_DISABLE_DAC
 | |
|             bool "Disable DAC when ADC2 is used on GPIO 25 and 26"
 | |
|             default y
 | |
|             help
 | |
|                 If this is set, the ADC2 driver will disable the output of the DAC corresponding to the specified
 | |
|                 channel. This is the default value.
 | |
| 
 | |
|                 For testing, disable this option so that we can measure the output of DAC by internal ADC.
 | |
| 
 | |
|     endmenu  # ADC Configuration
 | |
| 
 | |
|     menu "SPI configuration"
 | |
| 
 | |
|         config SPI_MASTER_IN_IRAM
 | |
|             bool "Place transmitting functions of SPI master into IRAM"
 | |
|             default n
 | |
|             select SPI_MASTER_ISR_IN_IRAM
 | |
|             help
 | |
|                 Normally only the ISR of SPI master is placed in the IRAM, so that it
 | |
|                 can work without the flash when interrupt is triggered.
 | |
|                 For other functions, there's some possibility that the flash cache
 | |
|                 miss when running inside and out of SPI functions, which may increase
 | |
|                 the interval of SPI transactions.
 | |
|                 Enable this to put ``queue_trans``, ``get_trans_result`` and
 | |
|                 ``transmit`` functions into the IRAM to avoid possible cache miss.
 | |
| 
 | |
|                 During unit test, this is enabled to measure the ideal case of api.
 | |
| 
 | |
|         config SPI_MASTER_ISR_IN_IRAM
 | |
|             bool "Place SPI master ISR function into IRAM"
 | |
|             default y
 | |
|             help
 | |
|                 Place the SPI master ISR in to IRAM to avoid possible cache miss.
 | |
| 
 | |
|                 Also you can forbid the ISR being disabled during flash writing
 | |
|                 access, by add ESP_INTR_FLAG_IRAM when initializing the driver.
 | |
| 
 | |
|         config SPI_SLAVE_IN_IRAM
 | |
|             bool "Place transmitting functions of SPI slave into IRAM"
 | |
|             default n
 | |
|             select SPI_SLAVE_ISR_IN_IRAM
 | |
|             help
 | |
|                 Normally only the ISR of SPI slave is placed in the IRAM, so that it
 | |
|                 can work without the flash when interrupt is triggered.
 | |
|                 For other functions, there's some possibility that the flash cache
 | |
|                 miss when running inside and out of SPI functions, which may increase
 | |
|                 the interval of SPI transactions.
 | |
|                 Enable this to put ``queue_trans``, ``get_trans_result`` and
 | |
|                 ``transmit`` functions into the IRAM to avoid possible cache miss.
 | |
| 
 | |
|         config SPI_SLAVE_ISR_IN_IRAM
 | |
|             bool "Place SPI slave ISR function into IRAM"
 | |
|             default y
 | |
|             help
 | |
|                 Place the SPI slave ISR in to IRAM to avoid possible cache miss.
 | |
| 
 | |
|                 Also you can forbid the ISR being disabled during flash writing
 | |
|                 access, by add ESP_INTR_FLAG_IRAM when initializing the driver.
 | |
| 
 | |
|     endmenu # SPI Configuration
 | |
| 
 | |
|     menu "TWAI configuration"
 | |
| 
 | |
|         config TWAI_ISR_IN_IRAM
 | |
|             bool "Place TWAI ISR function into IRAM"
 | |
|             default n
 | |
|             help
 | |
|                 Place the TWAI ISR in to IRAM. This will allow the ISR to avoid
 | |
|                 cache misses, and also be able to run whilst the cache is disabled
 | |
|                 (such as when writing to SPI Flash).
 | |
|                 Note that if this option is enabled:
 | |
|                 - Users should also set the ESP_INTR_FLAG_IRAM in the driver
 | |
|                 configuration structure when installing the driver (see docs for
 | |
|                 specifics).
 | |
|                 - Alert logging (i.e., setting of the TWAI_ALERT_AND_LOG flag)
 | |
|                 will have no effect.
 | |
| 
 | |
|         config TWAI_ERRATA_FIX_BUS_OFF_REC
 | |
|             bool "Add SW workaround for REC change during bus-off"
 | |
|             depends on IDF_TARGET_ESP32
 | |
|             default n
 | |
|             help
 | |
|                 When the bus-off condition is reached, the REC should be reset to 0 and frozen (via LOM) by the
 | |
|                 driver's ISR. However on the ESP32, there is an edge case where the REC will increase before the
 | |
|                 driver's ISR can respond in time (e.g., due to the rapid occurrence of bus errors), thus causing the
 | |
|                 REC to be non-zero after bus-off. A non-zero REC can prevent bus-off recovery as the bus-off recovery
 | |
|                 condition is that both TEC and REC become 0. Enabling this option will add a workaround in the driver
 | |
|                 to forcibly reset REC to zero on reaching bus-off.
 | |
| 
 | |
|         config TWAI_ERRATA_FIX_TX_INTR_LOST
 | |
|             bool "Add SW workaround for TX interrupt lost errata"
 | |
|             depends on IDF_TARGET_ESP32
 | |
|             default n
 | |
|             help
 | |
|                 On the ESP32, when a transmit interrupt occurs, and interrupt register is read on the same APB clock
 | |
|                 cycle, the transmit interrupt could be lost. Enabling this option will add a workaround that checks the
 | |
|                 transmit buffer status bit to recover any lost transmit interrupt.
 | |
| 
 | |
|         config TWAI_ERRATA_FIX_RX_FRAME_INVALID
 | |
|             bool "Add SW workaround for invalid RX frame errata"
 | |
|             depends on IDF_TARGET_ESP32
 | |
|             default n
 | |
|             help
 | |
|                 On the ESP32, when receiving a data or remote frame, if a bus error occurs in the data or CRC field,
 | |
|                 the data of the next received frame could be invalid. Enabling this option will add a workaround that
 | |
|                 will reset the peripheral on detection of this errata condition. Note that if a frame is transmitted on
 | |
|                 the bus whilst the reset is ongoing, the message will not be receive by the peripheral sent on the bus
 | |
|                 during the reset, the message will be lost.
 | |
| 
 | |
|         config TWAI_ERRATA_FIX_RX_FIFO_CORRUPT
 | |
|             bool "Add SW workaround for RX FIFO corruption errata"
 | |
|             depends on IDF_TARGET_ESP32
 | |
|             default n
 | |
|             help
 | |
|                 On the ESP32, when the RX FIFO overruns and the RX message counter maxes out at 64 messages, the entire
 | |
|                 RX FIFO is no longer recoverable. Enabling this option will add a workaround that resets the peripheral
 | |
|                 on detection of this errata condition. Note that if a frame is being sent on the bus during the reset
 | |
|                 bus during the reset, the message will be lost.
 | |
| 
 | |
|     endmenu # TWAI Configuration
 | |
| 
 | |
|     menu "UART configuration"
 | |
| 
 | |
|         config UART_ISR_IN_IRAM
 | |
|             bool "Place UART ISR function into IRAM"
 | |
|             default n
 | |
|             help
 | |
|                 If this option is not selected, UART interrupt will be disabled for a long time and
 | |
|                 may cause data lost when doing spi flash operation.
 | |
| 
 | |
|     endmenu # UART Configuration
 | |
| 
 | |
|     menu "RTCIO configuration"
 | |
|         visible if IDF_TARGET_ESP32
 | |
| 
 | |
|         config RTCIO_SUPPORT_RTC_GPIO_DESC
 | |
|             bool "Support array `rtc_gpio_desc` for ESP32"
 | |
|             depends on IDF_TARGET_ESP32
 | |
|             default n
 | |
|             help
 | |
|                 The the array `rtc_gpio_desc` will don't compile by default.
 | |
|                 If this option is selected, the array `rtc_gpio_desc` can be compile.
 | |
|                 If user use this array, please enable this configuration.
 | |
| 
 | |
|     endmenu # RTCIO Configuration
 | |
| 
 | |
|     menu "GPIO Configuration"
 | |
|         visible if IDF_TARGET_ESP32
 | |
| 
 | |
|         config GPIO_ESP32_SUPPORT_SWITCH_SLP_PULL
 | |
|             bool "Support light sleep GPIO pullup/pulldown configuration for ESP32"
 | |
|             depends on IDF_TARGET_ESP32
 | |
|             help
 | |
|                 This option is intended to fix the bug that ESP32 is not able to switch to configured
 | |
|                 pullup/pulldown mode in sleep.
 | |
|                 If this option is selected, chip will automatically emulate the behaviour of switching,
 | |
|                 and about 450B of source codes would be placed into IRAM.
 | |
| 
 | |
|     endmenu # GPIO Configuration
 | |
| 
 | |
| endmenu  # Driver configurations
 |