запустить плату в бутлоадере idf.py fullclean idf.py build сделать аттач busid прошить, без монитора нажать RESET на плате сделать аттач busid в WSL запустить монитор Сделать програмный ресет = получить логи
idf.py --version . ~/esp/esp-idf/export.sh idf.py fullclean idf.py build
espflash erase-flash --port /dev/ttyACM0 --chip esp32s3 espflash flash --port /dev/ttyACM0 --chip esp32s3 target/xtensa-esp32s3-espidf/release/face espflash monitor --port /dev/ttyACM0 --chip esp32s3 --monitor-baud 115200 --log-format serial | tee logs.txt
```rust
let config = Config::default().baudrate(Hertz(115200));
let uart = UartDriver::new(
peripherals.uart1,
peripherals.pins.gpio43, // TX
peripherals.pins.gpio44, // RX
// peripherals.pins.gpio17, // TX
// peripherals.pins.gpio18, // RX
Option::<gpio::AnyIOPin>::None, // CTS
Option::<gpio::AnyIOPin>::None, // RTS
&config,
)?;
```
1600 х 1200 YUV(422/420)/YCbCr422, RGB565/555, 8-битные сжатые данные, 8/10-битные необработанные данные RGB
fn generate_dummy_frame() -> Vec<u8> {
let width = 160;
let height = 120;
let mut img = GrayImage::new(width, height);
for y in 50..70 {
for x in 10..140 {
if (x + y) % 10 < 5 {
img.put_pixel(x, y, Luma([200])); // светло-серый текст на черном фоне
}
}
}
// Кодируем в JPEG
let mut buf = Vec::new();
let mut encoder = JpegEncoder::new(&mut buf);
encoder.encode_image(&img).unwrap();
buf
}```