mirror of
https://github.com/meshcore-dev/MeshCore.git
synced 2026-04-20 22:13:47 +00:00
Update variants/heltec_v4/LoRaFEMControl.cpp init function
Co-authored-by: Wessel <wessel@weebl.me>
This commit is contained in:
parent
f0d37e552d
commit
70d3b96768
1 changed files with 19 additions and 15 deletions
|
|
@ -5,35 +5,39 @@
|
|||
|
||||
void LoRaFEMControl::init(void)
|
||||
{
|
||||
setLnaCanControl(false);// Default is uncontrollable
|
||||
// Power on FEM LDO — set registers before releasing RTC hold for
|
||||
// atomic transition (no glitch on deep sleep wake).
|
||||
pinMode(P_LORA_PA_POWER, OUTPUT);
|
||||
digitalWrite(P_LORA_PA_POWER, HIGH);
|
||||
rtc_gpio_hold_dis((gpio_num_t)P_LORA_PA_POWER);
|
||||
rtc_gpio_hold_dis((gpio_num_t)P_LORA_GC1109_PA_EN);
|
||||
rtc_gpio_hold_dis((gpio_num_t)P_LORA_GC1109_PA_TX_EN);
|
||||
rtc_gpio_hold_dis((gpio_num_t)P_LORA_KCT8103L_PA_CSD);
|
||||
rtc_gpio_hold_dis((gpio_num_t)P_LORA_KCT8103L_PA_CTX);
|
||||
|
||||
pinMode(P_LORA_PA_POWER,OUTPUT);
|
||||
digitalWrite(P_LORA_PA_POWER,HIGH);
|
||||
delay(1);
|
||||
pinMode(P_LORA_KCT8103L_PA_CSD,INPUT); // detect which FEM is used
|
||||
esp_reset_reason_t reason = esp_reset_reason();
|
||||
if (reason != ESP_RST_DEEPSLEEP) {
|
||||
delay(1); // FEM startup time after cold power-on
|
||||
}
|
||||
|
||||
// Auto-detect FEM type via shared GPIO2 default pull level.
|
||||
// GC1109 CSD: internal pull-down → reads LOW
|
||||
// KCT8103L CSD: internal pull-up → reads HIGH
|
||||
rtc_gpio_hold_dis((gpio_num_t)P_LORA_KCT8103L_PA_CSD);
|
||||
pinMode(P_LORA_KCT8103L_PA_CSD, INPUT);
|
||||
delay(1);
|
||||
if(digitalRead(P_LORA_KCT8103L_PA_CSD)==HIGH) {
|
||||
// FEM is KCT8103L
|
||||
// FEM is KCT8103L (V4.3)
|
||||
fem_type= KCT8103L_PA;
|
||||
pinMode(P_LORA_KCT8103L_PA_CSD, OUTPUT);
|
||||
digitalWrite(P_LORA_KCT8103L_PA_CSD, HIGH);
|
||||
rtc_gpio_hold_dis((gpio_num_t)P_LORA_KCT8103L_PA_CTX);
|
||||
pinMode(P_LORA_KCT8103L_PA_CTX, OUTPUT);
|
||||
digitalWrite(P_LORA_KCT8103L_PA_CTX, HIGH);
|
||||
digitalWrite(P_LORA_KCT8103L_PA_CTX, lna_enabled ? LOW : HIGH);
|
||||
setLnaCanControl(true);
|
||||
} else if(digitalRead(P_LORA_KCT8103L_PA_CSD)==LOW) {
|
||||
// FEM is GC1109
|
||||
} else {
|
||||
// FEM is GC1109 (V4.2)
|
||||
fem_type= GC1109_PA;
|
||||
pinMode(P_LORA_GC1109_PA_EN, OUTPUT);
|
||||
digitalWrite(P_LORA_GC1109_PA_EN, HIGH);
|
||||
pinMode(P_LORA_GC1109_PA_TX_EN, OUTPUT);
|
||||
digitalWrite(P_LORA_GC1109_PA_TX_EN, LOW);
|
||||
} else {
|
||||
fem_type= OTHER_FEM_TYPES;
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue