打印
[APM32F0]

串口2实现单线TX+RX收发

[复制链接]
1014|0
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
问题背景
  • 客户使用APM32F030C8T6,产品需求通过软件控制,实现串口“单线TX+RX收发”。
    • TX发送使用DMA,RX接收使用接收中断
    • 电路结构如下图

   


实现方案
可参考《F030_串口单线控制TX_RX》例程
  • 在适当的地方调用“开RX关TX”、“开TX关RX”
    • 默认串口是处于“仅接收模式”,需要发送时再开启“仅发送模式”

   
  • 在串口TX DMA发送前,先开启“仅发送模式”

   

    • 在DMA 搬运完成中断里,重新开启“仅接收模式”
      • 注意:DMA搬运完成,不代表串口TX发送也已经完成了——如果在DMA完成中断里,直接开启“仅接收模式”,那么MCU会误触发RX完成中断(RX重新开启得太早了!),不符合客户需求。

   

    • 需要等待串口TXC置位后,保证TX发送是真实完成了,再开始“仅接收模式”

   
  • 实测,从进入DMA搬运完成事件,到串口TXC完成——
    • 如果是115200bps,耗时170us左右,还是很快的。
    • 如果是9600bps,要耗时2ms
      • 考虑到客户需要9600bps的波特率,不宜在DMA完成中断里死等2ms这么长的事件。
      • 建议方案——在主循环里同时判断这2个条件:①判断TXC置位的操作 ②新定义软件标志位DMA_Flag(代表DMA搬运完成)。如果都满足,再调用OpenRX_CloseTx()

   
   


F030_串口单线控制TX_RX.rar

1.53 MB

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

认证:极海半导体
简介:珠海极海半导体有限公司是一家致力于开发工业级/车规级微控制器、模拟与混合信号IC及系统级芯片的集成电路设计型企业。极海团队拥有20年集成电路设计经验和嵌入式系统开发能力,可为客户提供核心可靠的芯片产品及方案,实现准确感应、安全传输和实时控制,助力客户在智慧家居、高端消费电子、工业控制、汽车电子、智慧能源以及通信设施等领域的拓展创新。

17

主题

103

帖子

3

粉丝