@@ -115,8 +115,9 @@ static void IRAM_ATTR _uart_isr(void *arg)
115
115
while (uart -> dev -> status .rxfifo_cnt || (uart -> dev -> mem_rx_status .wr_addr != uart -> dev -> mem_rx_status .rd_addr )) {
116
116
c = uart -> dev -> fifo .rw_byte ;
117
117
#else
118
+ uint32_t fifo_reg = UART_FIFO_AHB_REG (i );
118
119
while (uart -> dev -> status .rxfifo_cnt ) {
119
- c = READ_PERI_REG ( UART_FIFO_AHB_REG ( i ) );
120
+ c = ESP_REG ( fifo_reg );
120
121
#endif
121
122
if (uart -> queue != NULL ) {
122
123
xQueueSendFromISR (uart -> queue , & c , & xHigherPriorityTaskWoken );
@@ -343,8 +344,9 @@ void uartRxFifoToQueue(uart_t* uart)
343
344
while (uart -> dev -> status .rxfifo_cnt || (uart -> dev -> mem_rx_status .wr_addr != uart -> dev -> mem_rx_status .rd_addr )) {
344
345
c = uart -> dev -> fifo .rw_byte ;
345
346
#else
347
+ uint32_t fifo_reg = UART_FIFO_AHB_REG (uart -> num );
346
348
while (uart -> dev -> status .rxfifo_cnt ) {
347
- c = uart -> dev -> ahb_fifo . rw_byte ;
349
+ c = ESP_REG ( fifo_reg ) ;
348
350
#endif
349
351
xQueueSend (uart -> queue , & c , 0 );
350
352
}
@@ -398,7 +400,7 @@ void uartWrite(uart_t* uart, uint8_t c)
398
400
#if CONFIG_IDF_TARGET_ESP32
399
401
uart -> dev -> fifo .rw_byte = c ;
400
402
#else
401
- uart -> dev -> ahb_fifo . rw_byte = c ;
403
+ ESP_REG ( UART_FIFO_AHB_REG ( uart -> num )) = c ;
402
404
#endif
403
405
UART_MUTEX_UNLOCK ();
404
406
}
@@ -409,12 +411,15 @@ void uartWriteBuf(uart_t* uart, const uint8_t * data, size_t len)
409
411
return ;
410
412
}
411
413
UART_MUTEX_LOCK ();
414
+ #ifndef CONFIG_IDF_TARGET_ESP32
415
+ uint32_t fifo_reg = UART_FIFO_AHB_REG (uart -> num );
416
+ #endif
412
417
while (len ) {
413
418
while (uart -> dev -> status .txfifo_cnt == 0x7F );
414
419
#if CONFIG_IDF_TARGET_ESP32
415
420
uart -> dev -> fifo .rw_byte = * data ++ ;
416
421
#else
417
- uart -> dev -> ahb_fifo . rw_byte = * data ++ ;
422
+ ESP_REG ( fifo_reg ) = * data ++ ;
418
423
#endif
419
424
len -- ;
420
425
}
@@ -483,8 +488,9 @@ static void uart_on_apb_change(void * arg, apb_change_ev_t ev_type, uint32_t old
483
488
while (uart -> dev -> status .rxfifo_cnt != 0 || (uart -> dev -> mem_rx_status .wr_addr != uart -> dev -> mem_rx_status .rd_addr )) {
484
489
c = uart -> dev -> fifo .rw_byte ;
485
490
#else
491
+ uint32_t fifo_reg = UART_FIFO_AHB_REG (uart -> num );
486
492
while (uart -> dev -> status .rxfifo_cnt != 0 ) {
487
- c = uart -> dev -> ahb_fifo . rw_byte ;
493
+ c = ESP_REG ( fifo_reg ) ;
488
494
#endif
489
495
if (uart -> queue != NULL ) {
490
496
xQueueSend (uart -> queue , & c , 1 ); //&xHigherPriorityTaskWoken);
@@ -537,7 +543,7 @@ static void IRAM_ATTR uart0_write_char(char c)
537
543
ESP_REG (DR_REG_UART_BASE ) = c ;
538
544
#else
539
545
while (UART0 .status .txfifo_cnt == 0x7F );
540
- UART0 . ahb_fifo . rw_byte = c ;
546
+ WRITE_PERI_REG ( UART_FIFO_AHB_REG ( 0 ), c ) ;
541
547
#endif
542
548
}
543
549
@@ -548,7 +554,7 @@ static void IRAM_ATTR uart1_write_char(char c)
548
554
ESP_REG (DR_REG_UART1_BASE ) = c ;
549
555
#else
550
556
while (UART1 .status .txfifo_cnt == 0x7F );
551
- UART1 . ahb_fifo . rw_byte = c ;
557
+ WRITE_PERI_REG ( UART_FIFO_AHB_REG ( 1 ), c ) ;
552
558
#endif
553
559
}
554
560
0 commit comments