使用 SPI 驱动 st7789v 屏幕, 按照 i2s Demo 写了一个链式 DMA 发送 SPI 数据的 Demo, 实测传一会 SPI 就停止了. 看 DMA 的传输字节数寄存器, 大概只传了 2042 个字节 SPI 通道寄存器的 bit0 就清零了. 想请教一下有人知道什么原因吗?
查看更多
DMA 的链表模式使用可以看下这个简单说明. http: //ask. winnermicro. com/article/194. html其实 SPI 只有 20M 的时钟, 驱屏速度不够快, 驱屏可以参考这个 SDK 里面的 spi 使用, 用的是 SDIO master 的 spi 模式. https: //gitee. com/beewu123/w80x-sdk-lcd
发布 问题
分享 好友
手机 浏览
回到 顶部
好的, 谢谢! 我参考一下.
貌似是 SPI 收发一次最多只支持 65535 个 clock 的原因, 一次传输的总 clock 超过通道寄存器 CH_CFG[18: 3]的值就停止了, 需要链表 DMA 每次中断的时候再重新配置 SPI 发送才行. 这样看好像 SPI 对超过 65535/8≈8KB 的数据不能实现 DMA 一次连续传输, 需要分多次传输才行, 不知道这样理解对不对.
@hanks 是的, 单次最多 65535 个 clock.