真实面经题目 · 原创解析
SPI 通信过程、四种模式和 DMA 使用如何回答?
这题考四线同步总线的通信过程、模式配置和大批量传输优化,回答要把线序、边沿采样、片选和 DMA 结合起来。
真实面经题目 · 原创解析
这题考四线同步总线的通信过程、模式配置和大批量传输优化,回答要把线序、边沿采样、片选和 DMA 结合起来。
可以先讲通信过程:主机拉低片选,输出时钟,主出从入和主入从出两条数据线在每个时钟周期同时移位,所以它通常是全双工同步通信。常见四根线是 SCLK、MOSI、MISO、CS。四种模式由 CPOL 和 CPHA 组合决定,CPOL 决定空闲时钟电平,CPHA 决定第几个边沿采样,主从必须按器件手册一致配置,否则会丢第一位、整体错位或读到不稳定数据。DMA 用在连续收发大量字节时,把外设数据寄存器和内存之间的搬运交给 DMA,减少 CPU 中断频率。使用时要注意 TX/RX 缓冲区、片选保持、cache 一致性、传输完成回调、错误处理,以及有些读操作需要发送 dummy 字节才能产生时钟。
主机选择从设备、产生时钟并决定一次传输的字节数。从设备不会主动产生时钟,因此读从设备也需要主机发送 dummy 数据来换取返回数据。
CPOL 描述空闲时时钟是高还是低,CPHA 描述数据在第一个还是第二个有效边沿被采样。只要主从对采样边沿理解不同,就可能出现位偏移或偶发错误。
很多器件用片选下降作为命令开始、上升作为命令结束。连续读写时如果中途释放片选,器件内部状态机可能复位;多个从设备共线时,片选还负责避免总线冲突。
短命令用轮询或中断即可;大块数据用 DMA 可以降低 CPU 占用。工程上要保证缓冲区生命周期、对齐、cache 同步、完成中断和错误恢复,不能只打开 DMA 就结束。
因为时钟由主机产生。主机必须写出占位数据来产生时钟,从设备才会在同一时钟下把数据移出。
取决于控制器和驱动。有的硬件自动控制,有的需要软件在整段传输前后控制;关键是片选必须覆盖器件要求的完整事务。
先用示波器或逻辑分析仪确认电平、时序、速率和帧格式,再对照驱动日志、错误码、重试次数和协议状态机,区分硬件连接、配置参数、总线仲裁和软件缓冲问题。