问答

汇集网友智慧,解决技术难题

21ic问答首页 - 单片机同时使用两个串口进行数据收发怎么才能不丢数据?

单片机同时使用两个串口进行数据收发怎么才能不丢数据?

晶晶hc2021-07-19
回答 +关注 24
13547人浏览 13人回答问题 分享 举报
13 个回答
  • 重点检查一下程序,首先接收数据是否完整, 另外发送也可以使用DMA的, 或者 中断+FIFO
    晶晶hc 2021-7-19 17:21 回复TA
    @ayb_ice :单方面的发送是没有问题的,串口1接收->串口2发送没有问题,串口2接收->串口1发送没有问题。两者同时进行,就有问题。两者发送速度过快的话还会产生ORE错误 
    ayb_ice 2021-7-19 16:38 回复TA
    @晶晶hc :发送都丢失数据那只能说你的代码太差了,发送是你自己主动操作的,接收是被动的,丢数据还可以理解 
    晶晶hc 2021-7-19 16:16 回复TA
    发送我也试过DMA,丢的更严重。因为我两个串口接收都是用的DMA,发送再用DMA不知道会不会有冲突,单片机只有1个DMA,4个通道。中断+FIFO 的话还没试过,只使用发送中断试过效果好一点。FIFO的话估计不行,单片机资源没了,接收数据开了两个1k的FIFO,ram一共8k,其他的用了差不多了,用不起FIFO了 
  • 直接中断+FIFO
    晶晶hc 2021-7-19 16:18 回复TA
    嗯嗯,可以试一下 
  • 串口是有线通信,没遇到过丢数据。如果你的程序员丢数据,情仔细检查程序逻辑。
    晶晶hc 2021-7-19 16:17 回复TA
    应该是程序问题,串口一般不会丢数据。就是不知道怎么处理这种机制 
  • 没遇到过丢数据的情况,若是互相通信,可加入校验、应答、重发等机制。
    晶晶hc 2021-7-19 16:19 回复TA
    目前不使用在协议通信上哈,仅仅只是大量数据的透传,两个串口同时收发数据 
12

您需要登录后才可以回复 登录 | 注册