mirror of
				https://github.com/esphome/esphome.git
				synced 2025-10-31 07:03:55 +00:00 
			
		
		
		
	[uart] Make rx pin respect pullup and pulldown settings (#9248)
This commit is contained in:
		
				
					committed by
					
						 Jesse Hills
						Jesse Hills
					
				
			
			
				
	
			
			
			
						parent
						
							de2f475dbd
						
					
				
				
					commit
					febee437d6
				
			| @@ -56,6 +56,13 @@ uint32_t ESP8266UartComponent::get_config() { | |||||||
| } | } | ||||||
|  |  | ||||||
| void ESP8266UartComponent::setup() { | void ESP8266UartComponent::setup() { | ||||||
|  |   if (this->rx_pin_) { | ||||||
|  |     this->rx_pin_->setup(); | ||||||
|  |   } | ||||||
|  |   if (this->tx_pin_ && this->rx_pin_ != this->tx_pin_) { | ||||||
|  |     this->tx_pin_->setup(); | ||||||
|  |   } | ||||||
|  |  | ||||||
|   // Use Arduino HardwareSerial UARTs if all used pins match the ones |   // Use Arduino HardwareSerial UARTs if all used pins match the ones | ||||||
|   // preconfigured by the platform. For example if RX disabled but TX pin |   // preconfigured by the platform. For example if RX disabled but TX pin | ||||||
|   // is 1 we still want to use Serial. |   // is 1 we still want to use Serial. | ||||||
|   | |||||||
| @@ -6,6 +6,9 @@ | |||||||
| #include "esphome/core/defines.h" | #include "esphome/core/defines.h" | ||||||
| #include "esphome/core/helpers.h" | #include "esphome/core/helpers.h" | ||||||
| #include "esphome/core/log.h" | #include "esphome/core/log.h" | ||||||
|  | #include "esphome/core/gpio.h" | ||||||
|  | #include "driver/gpio.h" | ||||||
|  | #include "soc/gpio_num.h" | ||||||
|  |  | ||||||
| #ifdef USE_LOGGER | #ifdef USE_LOGGER | ||||||
| #include "esphome/components/logger/logger.h" | #include "esphome/components/logger/logger.h" | ||||||
| @@ -104,6 +107,13 @@ void IDFUARTComponent::load_settings(bool dump_config) { | |||||||
|     return; |     return; | ||||||
|   } |   } | ||||||
|  |  | ||||||
|  |   if (this->rx_pin_) { | ||||||
|  |     this->rx_pin_->setup(); | ||||||
|  |   } | ||||||
|  |   if (this->tx_pin_ && this->rx_pin_ != this->tx_pin_) { | ||||||
|  |     this->tx_pin_->setup(); | ||||||
|  |   } | ||||||
|  |  | ||||||
|   int8_t tx = this->tx_pin_ != nullptr ? this->tx_pin_->get_pin() : -1; |   int8_t tx = this->tx_pin_ != nullptr ? this->tx_pin_->get_pin() : -1; | ||||||
|   int8_t rx = this->rx_pin_ != nullptr ? this->rx_pin_->get_pin() : -1; |   int8_t rx = this->rx_pin_ != nullptr ? this->rx_pin_->get_pin() : -1; | ||||||
|   int8_t flow_control = this->flow_control_pin_ != nullptr ? this->flow_control_pin_->get_pin() : -1; |   int8_t flow_control = this->flow_control_pin_ != nullptr ? this->flow_control_pin_->get_pin() : -1; | ||||||
|   | |||||||
| @@ -46,6 +46,13 @@ uint16_t LibreTinyUARTComponent::get_config() { | |||||||
| } | } | ||||||
|  |  | ||||||
| void LibreTinyUARTComponent::setup() { | void LibreTinyUARTComponent::setup() { | ||||||
|  |   if (this->rx_pin_) { | ||||||
|  |     this->rx_pin_->setup(); | ||||||
|  |   } | ||||||
|  |   if (this->tx_pin_ && this->rx_pin_ != this->tx_pin_) { | ||||||
|  |     this->tx_pin_->setup(); | ||||||
|  |   } | ||||||
|  |  | ||||||
|   int8_t tx_pin = tx_pin_ == nullptr ? -1 : tx_pin_->get_pin(); |   int8_t tx_pin = tx_pin_ == nullptr ? -1 : tx_pin_->get_pin(); | ||||||
|   int8_t rx_pin = rx_pin_ == nullptr ? -1 : rx_pin_->get_pin(); |   int8_t rx_pin = rx_pin_ == nullptr ? -1 : rx_pin_->get_pin(); | ||||||
|   bool tx_inverted = tx_pin_ != nullptr && tx_pin_->is_inverted(); |   bool tx_inverted = tx_pin_ != nullptr && tx_pin_->is_inverted(); | ||||||
|   | |||||||
| @@ -52,6 +52,13 @@ uint16_t RP2040UartComponent::get_config() { | |||||||
| } | } | ||||||
|  |  | ||||||
| void RP2040UartComponent::setup() { | void RP2040UartComponent::setup() { | ||||||
|  |   if (this->rx_pin_) { | ||||||
|  |     this->rx_pin_->setup(); | ||||||
|  |   } | ||||||
|  |   if (this->tx_pin_ && this->rx_pin_ != this->tx_pin_) { | ||||||
|  |     this->tx_pin_->setup(); | ||||||
|  |   } | ||||||
|  |  | ||||||
|   uint16_t config = get_config(); |   uint16_t config = get_config(); | ||||||
|  |  | ||||||
|   constexpr uint32_t valid_tx_uart_0 = __bitset({0, 12, 16, 28}); |   constexpr uint32_t valid_tx_uart_0 = __bitset({0, 12, 16, 28}); | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user