mirror of
https://github.com/markqvist/RNode_Firmware.git
synced 2026-04-27 22:35:36 +00:00
Add T-Watch Ultra PCB reference photos
Three photos from disassembly session: - PCB overview with back cover removed - PCB closeup showing component labels - Battery connector detail Factory firmware reflashed to verify hardware integrity. I2C bus and display confirmed working under LilyGo firmware. RNode firmware I2C init needs debugging — Wire.begin succeeds but no slaves respond.
This commit is contained in:
parent
6ad9abe74d
commit
f024489aee
5 changed files with 20 additions and 41 deletions
2
Boards.h
2
Boards.h
|
|
@ -742,7 +742,7 @@
|
||||||
#define HAS_BUSY true
|
#define HAS_BUSY true
|
||||||
#define HAS_TCXO true
|
#define HAS_TCXO true
|
||||||
|
|
||||||
#define HAS_DISPLAY false
|
#define HAS_DISPLAY false // CO5300 QSPI driver written but not yet functional
|
||||||
#define HAS_CONSOLE true
|
#define HAS_CONSOLE true
|
||||||
#define HAS_WIFI true
|
#define HAS_WIFI true
|
||||||
#define HAS_BLUETOOTH false
|
#define HAS_BLUETOOTH false
|
||||||
|
|
|
||||||
BIN
Documentation/photos/twatch_ultra_pcb_battery.jpg
Normal file
BIN
Documentation/photos/twatch_ultra_pcb_battery.jpg
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 11 MiB |
BIN
Documentation/photos/twatch_ultra_pcb_closeup.jpg
Normal file
BIN
Documentation/photos/twatch_ultra_pcb_closeup.jpg
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 15 MiB |
BIN
Documentation/photos/twatch_ultra_pcb_overview.jpg
Normal file
BIN
Documentation/photos/twatch_ultra_pcb_overview.jpg
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 10 MiB |
|
|
@ -25,6 +25,8 @@
|
||||||
uint8_t i2c_scan_results[16];
|
uint8_t i2c_scan_results[16];
|
||||||
uint8_t i2c_scan_count = 0;
|
uint8_t i2c_scan_count = 0;
|
||||||
bool i2c_wire_ok = false;
|
bool i2c_wire_ok = false;
|
||||||
|
uint8_t i2c_sda_level = 0xFF; // SDA pin level before Wire.begin
|
||||||
|
uint8_t i2c_scl_level = 0xFF; // SCL pin level before Wire.begin
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#define CHANNEL_FIFO_SIZE (CONFIG_UART_BUFFER_SIZE / NUM_CHANNELS)
|
#define CHANNEL_FIFO_SIZE (CONFIG_UART_BUFFER_SIZE / NUM_CHANNELS)
|
||||||
|
|
@ -271,53 +273,30 @@ void setup() {
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if MCU_VARIANT == MCU_ESP32 || MCU_VARIANT == MCU_NRF52
|
#if MCU_VARIANT == MCU_ESP32 || MCU_VARIANT == MCU_NRF52
|
||||||
|
|
||||||
#if HAS_PMU == true
|
#if HAS_PMU == true
|
||||||
pmu_ready = init_pmu();
|
pmu_ready = init_pmu();
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if BOARD_MODEL == BOARD_TWATCH_ULT
|
#if BOARD_MODEL == BOARD_TWATCH_ULT
|
||||||
|
// I2C scan AFTER PMU init (which calls Wire.begin)
|
||||||
|
i2c_scan_count = 0; // reuse as AXP2101 probe result
|
||||||
|
if (pmu_ready) {
|
||||||
|
// PMU worked — scan for all devices
|
||||||
|
for (uint8_t addr = 0x08; addr < 0x78; addr++) {
|
||||||
|
Wire.beginTransmission(addr);
|
||||||
|
if (Wire.endTransmission() == 0 && i2c_scan_count < 16) {
|
||||||
|
i2c_scan_results[i2c_scan_count++] = addr;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
// PMU failed — probe AXP2101 directly for diagnostics
|
||||||
|
Wire.beginTransmission(0x34);
|
||||||
|
i2c_scan_count = Wire.endTransmission(); // store error code
|
||||||
|
}
|
||||||
|
|
||||||
xl9555_init();
|
xl9555_init();
|
||||||
xl9555_enable_lora_antenna();
|
xl9555_enable_lora_antenna();
|
||||||
|
|
||||||
// Beacon timer wakeup — disabled pending proper cold boot detection
|
|
||||||
// TODO: Re-enable with reliable deep sleep vs cold boot discrimination
|
|
||||||
// if (esp_sleep_get_wakeup_cause() == ESP_SLEEP_WAKEUP_TIMER) {
|
|
||||||
// beacon_wake_cycle();
|
|
||||||
// }
|
|
||||||
|
|
||||||
// Recovery: I2C bus may be stuck after deep sleep interrupted a transaction.
|
|
||||||
// Toggle SCL manually to clock out any stuck slave device.
|
|
||||||
gpio_deep_sleep_hold_dis();
|
|
||||||
gpio_reset_pin(GPIO_NUM_2);
|
|
||||||
gpio_reset_pin(GPIO_NUM_3);
|
|
||||||
pinMode(2, OUTPUT); // SCL
|
|
||||||
pinMode(3, INPUT_PULLUP); // SDA — let it float with pullup
|
|
||||||
for (int i = 0; i < 16; i++) {
|
|
||||||
digitalWrite(2, LOW);
|
|
||||||
delayMicroseconds(5);
|
|
||||||
digitalWrite(2, HIGH);
|
|
||||||
delayMicroseconds(5);
|
|
||||||
}
|
|
||||||
// Send STOP condition
|
|
||||||
pinMode(3, OUTPUT);
|
|
||||||
digitalWrite(3, LOW);
|
|
||||||
delayMicroseconds(5);
|
|
||||||
digitalWrite(2, HIGH);
|
|
||||||
delayMicroseconds(5);
|
|
||||||
digitalWrite(3, HIGH);
|
|
||||||
delay(10);
|
|
||||||
// Now try Wire
|
|
||||||
i2c_wire_ok = Wire.begin(3, 2, 100000);
|
|
||||||
delay(200);
|
|
||||||
|
|
||||||
// I2C bus scan for peripheral discovery
|
|
||||||
i2c_scan_count = 0;
|
|
||||||
for (uint8_t addr = 0x10; addr < 0x78; addr++) {
|
|
||||||
Wire.beginTransmission(addr);
|
|
||||||
if (Wire.endTransmission() == 0 && i2c_scan_count < 16) {
|
|
||||||
i2c_scan_results[i2c_scan_count++] = addr;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if HAS_BLUETOOTH || HAS_BLE == true
|
#if HAS_BLUETOOTH || HAS_BLE == true
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue