UART 空闲线中断配合 DMA 接收不定长帧时有哪些竞态?
空闲线只能表示一段时间没有新字节,不天然等于协议帧结束。处理时要稳定读取 DMA 剩余计数、处理环形回绕和半传输事件,并保证 DMA 仍写入的区域不被解析器覆盖。
Question Bank
按知识、方向与难度筛选;每道题都有分层回答和工程追问。
空闲线只能表示一段时间没有新字节,不天然等于协议帧结束。处理时要稳定读取 DMA 剩余计数、处理环形回绕和半传输事件,并保证 DMA 仍写入的区域不被解析器覆盖。
控制传输用于配置和命令且所有设备都有 EP0;批量传输追求可靠吞吐但不保证延迟;中断传输按周期获得服务机会,适合小而及时的数据;等时传输保留带宽和时延,但通常不重传。
主机检测连接和速度后复位总线,通过默认地址的端点 0 获取描述符,分配设备地址,再读取完整设备、配置、接口和端点描述符并选择配置。任何描述符长度、总长或控制传输状态阶段错误都可能枚举失败。
MAC 处理帧收发、地址、DMA 等链路层逻辑;PHY 完成线路编码、模拟收发和链路协商;RMII/MII 是 MAC 与 PHY 的数据接口;MDIO/MDC 用于管理 PHY 寄存器。Bring-up 要先确认供电、复位、参考时钟和 Strap。
启动应有超时而不是无限等待,失败时切回内部时钟并记录故障,限制依赖精确频率的功能。硬件侧检查负载电容、增益裕量、布局、污染和温度;具备 Clock Security System 时可处理运行中失效。
正交 A/B 相位关系决定方向,定时器可在一个或两个通道边沿计数。读取位置时要处理计数器回绕,速度估计需结合采样周期;输入数字滤波能抑制短毛刺但会限制最高边沿频率。
RC 和施密特输入能抑制很窄的毛刺并保护中断入口,软件再按产品交互定义确认稳定状态。RC 过大会拖慢边沿或违反输入转换时间,软件窗口过长则增加响应延迟。
悬空输入电位不确定,噪声和漏电可让输入门在阈值附近反复翻转,产生错误中断和直通电流。应依据外部驱动、默认安全状态和功耗选择上拉、下拉或模拟模式。