Skip to content

Commit 1d2c590

Browse files
fix(audio): increase VS1053b init timing margins for early-batch chips (#7239)
Co-authored-by: raphaelcoeffic <1050031+raphaelcoeffic@users.noreply.github.com>
1 parent 50ce1a1 commit 1d2c590

1 file changed

Lines changed: 6 additions & 2 deletions

File tree

radio/src/targets/common/arm/stm32/vs1053b.cpp

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -175,6 +175,9 @@ static void _wait_ms(uint32_t delay_ms)
175175

176176
static uint8_t vs1053b_write_cmd(uint8_t address, uint16_t data)
177177
{
178+
// ensure chip is ready before sending command
179+
vs1053b_wait_dreq(100);
180+
178181
stm32_spi_set_max_baudrate(_instance->spi, SPI_LOW_SPEED);
179182
XDCS_HIGH();
180183

@@ -203,7 +206,8 @@ static void vs1053b_hard_reset()
203206
_reset_high();
204207

205208
// datasheet says 1.8ms at default clock speed
206-
vs1053b_wait_dreq(3000);
209+
vs1053b_wait_dreq(5000);
210+
_wait_ms(20);
207211
}
208212

209213
static uint32_t vs1053b_send_data(const uint8_t * buffer, uint32_t size)
@@ -324,7 +328,7 @@ void vs1053b_init(const vs1053b_t* dev)
324328
vs1053b_update_volume();
325329

326330
vs1053b_write_cmd(SPI_CLOCKF, 0x9800);
327-
vs1053b_wait_dreq(1000);
331+
vs1053b_wait_dreq(5000);
328332

329333
stm32_spi_set_max_baudrate(_instance->spi, SPI_HIGH_SPEED);
330334
vs1053b_send_riff_header();

0 commit comments

Comments
 (0)