Skip to content

Commit 8d3d0ae

Browse files
committed
Fix the serial monitor when using 26MHz ESP32-C2
1 parent af641cc commit 8d3d0ae

File tree

3 files changed

+45
-4
lines changed

3 files changed

+45
-4
lines changed

cargo-espflash/src/main.rs

Lines changed: 15 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -215,11 +215,25 @@ fn flash(args: FlashArgs, config: &Config) -> Result<()> {
215215

216216
if args.flash_args.monitor {
217217
let pid = flasher.get_usb_pid()?;
218+
219+
let chip = flasher.chip();
220+
let target = chip.into_target();
221+
222+
// The 26MHz ESP32-C2's need to be treated as a special case.
223+
let default_baud = if chip == Chip::Esp32c2
224+
&& !args.connect_args.use_stub
225+
&& target.crystal_freq(&mut flasher.connection())? == 26
226+
{
227+
74_880
228+
} else {
229+
115_200
230+
};
231+
218232
monitor(
219233
flasher.into_interface(),
220234
Some(&elf_data),
221235
pid,
222-
args.flash_args.monitor_baud.unwrap_or(115_200),
236+
args.flash_args.monitor_baud.unwrap_or(default_baud),
223237
)
224238
.into_diagnostic()?;
225239
}

espflash/src/bin/espflash.rs

Lines changed: 15 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@ use espflash::{
1515
},
1616
image_format::ImageFormatKind,
1717
logging::initialize_logger,
18+
targets::Chip,
1819
update::check_for_update,
1920
};
2021
use log::{debug, LevelFilter};
@@ -154,11 +155,24 @@ fn flash(args: FlashArgs, config: &Config) -> Result<()> {
154155
if args.flash_args.monitor {
155156
let pid = flasher.get_usb_pid()?;
156157

158+
let chip = flasher.chip();
159+
let target = chip.into_target();
160+
161+
// The 26MHz ESP32-C2's need to be treated as a special case.
162+
let default_baud = if chip == Chip::Esp32c2
163+
&& !args.connect_args.use_stub
164+
&& target.crystal_freq(&mut flasher.connection())? == 26
165+
{
166+
74_880
167+
} else {
168+
115_200
169+
};
170+
157171
monitor(
158172
flasher.into_interface(),
159173
Some(&elf_data),
160174
pid,
161-
args.flash_args.monitor_baud.unwrap_or(115_200),
175+
args.flash_args.monitor_baud.unwrap_or(default_baud),
162176
)
163177
.into_diagnostic()?;
164178
}

espflash/src/cli/mod.rs

Lines changed: 15 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -285,7 +285,7 @@ pub fn board_info(args: ConnectArgs, config: &Config) -> Result<()> {
285285

286286
/// Open a serial monitor
287287
pub fn serial_monitor(args: MonitorArgs, config: &Config) -> Result<()> {
288-
let flasher = connect(&args.connect_args, config)?;
288+
let mut flasher = connect(&args.connect_args, config)?;
289289
let pid = flasher.get_usb_pid()?;
290290

291291
let elf = if let Some(elf_path) = args.elf {
@@ -297,11 +297,24 @@ pub fn serial_monitor(args: MonitorArgs, config: &Config) -> Result<()> {
297297
None
298298
};
299299

300+
let chip = flasher.chip();
301+
let target = chip.into_target();
302+
303+
// The 26MHz ESP32-C2's need to be treated as a special case.
304+
let default_baud = if chip == Chip::Esp32c2
305+
&& !args.connect_args.use_stub
306+
&& target.crystal_freq(&mut flasher.connection())? == 26
307+
{
308+
74_880
309+
} else {
310+
115_200
311+
};
312+
300313
monitor(
301314
flasher.into_interface(),
302315
elf.as_deref(),
303316
pid,
304-
args.connect_args.baud.unwrap_or(115_200),
317+
args.connect_args.baud.unwrap_or(default_baud),
305318
)
306319
.into_diagnostic()?;
307320

0 commit comments

Comments
 (0)