在 linux 中使用spi发现,传输过程中,会引发linux命令行卡顿。
查看中断计数发现,传输一次1600字节数据(1MHz),cpu 居然收到了1680多次中断。然后在驱动中,每个中断类型中加一个计数,传输前清零,传输完成后打印,发现 1600字节数据,RX_RDY 中断触发了1570多次,其余两个中断正常:TC 1次, TX_READY 约为 1600 / TX_TRIG_LEVEL 次。
最后我直接使用 devmem 手动写寄存器进行测试,发现 RX_RDY 中断始终在 RF_CNT >= 1 就触发,已配置 RX_TRIG_LEVEL = 0x30。
手动测试流程:
写 Bus Clock Gating Register 0、Bus Software Reset Register 0 打开时钟、解复位。
配置 SPI FIFO Control Register 中 RF_TEST、RX_TRIG_LEVEL
清除中断 SPI Interrupt Status Register
手动写 SPI RX Data Register,1字节数据
查看中断状态 SPI Interrupt Status Register,发现 RF_CNT 被触发,读 SPI FIFO Status Register 能看到 RF_CNT 为1。
最近编辑记录 dancells (今天 09:52:06)
离线