@@ -59,8 +59,8 @@ async fn interrupt_driven_task(spi: esp_hal::spi::master::SpiDma<'static, Blocki
5959#[ cfg( not( any( esp32, esp32s2, esp32s3) ) ) ]
6060#[ embassy_executor:: task]
6161async fn interrupt_driven_task ( i2s_tx : esp_hal:: i2s:: master:: I2s < ' static , Blocking > ) {
62- use esp_hal:: dma:: DmaTxStreamBuf ;
63- let ( _, _, tx_buffer, tx_descriptors) = dma_buffers ! ( 128 ) ;
62+ use esp_hal:: { dma:: DmaTxStreamBuf , dma_buffers_chunk_size } ;
63+ let ( _, _, tx_buffer, tx_descriptors) = dma_buffers_chunk_size ! ( 128 , 128 , 128 / 3 ) ;
6464
6565 let i2s_tx = i2s_tx. into_async ( ) . i2s_tx . build ( ) ;
6666 let mut transfer = i2s_tx
@@ -71,7 +71,9 @@ async fn interrupt_driven_task(i2s_tx: esp_hal::i2s::master::I2s<'static, Blocki
7171 let mut buffer: [ u8 ; 8 ] = [ 0 ; 8 ] ;
7272
7373 INTERRUPT_TASK_WORKING . store ( true , portable_atomic:: Ordering :: Relaxed ) ;
74- transfer. wait_for_available ( ) . await . unwrap ( ) ;
74+ while transfer. available_bytes ( ) == 0 {
75+ transfer. wait_for_available ( ) . await . unwrap ( ) ;
76+ }
7577 transfer. push ( & mut buffer) ;
7678 INTERRUPT_TASK_WORKING . store ( false , portable_atomic:: Ordering :: Relaxed ) ;
7779
0 commit comments