0

如标题所述,我在数据表中找不到相关信息。

我在使用 UART 时遇到了一些问题。我有两个芯片,主芯片发送包到RS485总线,从芯片接收然后发送响应(UART1),同时定时器每秒通过TTL(UART2)发送调试信息到pc,它们应该是相互独立的,但是当UART2工作时,UART1不工作,并且数据仍然从主芯片传输到RS485总线,所以当从芯片使用UART2时,部分数据将不会被从芯片接收,之后有一段时间,从芯片上的整个系统变得很奇怪(定时器仍在工作),我猜是 FIFO 溢出。所以我要求知道fifo大小的功能或方法。

谢谢。

4

1 回答 1

0

正如 Codo 评论的那样,该芯片没有带有 USART 的 FIFO。

一段时间后,从芯片上的整个系统变得很奇怪

所以你的问题不是由于缺乏 FIFO 造成的。

除了使用 DMA 进行传输外,您还可以使用中断抢占在传输时接收。

uart2_rcv_isr() {
  receive_from_uart2();
}

timer_isr() {
  mark_flag_for_uart1_transfer();
}

main() {
   if(flag_for_uart2) {
      reply_with_uart2();
      unflag_uart2_task();
   }

   if(flag_for_timing_task) {
      transfer_with_uart1();
      clear_timing_task_flag();
   }
}
于 2020-08-25T12:40:53.443 回答