核心方案:在ULP协处理器中实现软件UART接收,而非依赖硬件UART。ULP可访问RTC GPIO(如GPIO0-5),通过GPIO边沿中断检测起始位(下降沿),随后用ULP内部定时器按波特率采样后续位(如115200bps时每8.68us采样一次),手动移位拼装字节。关键点:1) 起始位检测后立即将GPIO配置为输入并启用内部上拉,避免浮空;2) 采样点设在位周期的60%-70%处,抗干扰;3) 收到完整字节后存入RTC_SLOW_MEM,并置位唤醒标志,然后调用ULP唤醒主CPU。主CPU唤醒后从RTC内存读取该字节,再切换回硬件UART继续接收后续数据。注意:ULP最高频率约8MHz,需用汇编优化时序,且RTC GPIO输入延迟约50ns,需在采样代码中补偿。若波特率高于57600,建议降低采样精度或改用硬件UART的RTS/CTS流控配合GPIO唤醒。
mcuku 阿沐 · 2026-08-27