NXP linux SPI多字节时钟连续没有间隔问题

项目场景:

硬件平台:NXP Cortex-A9 双核
linux内核版本:4.19.35


问题描述:

使用SPI通讯时,当传输数据小于32字节时发现SPI时序单个字节与单个字节之间时钟是连在一起的,没有间隔。大于32字节时,时序是分开的,由于SPI另一端接的是单片机,速度慢,需要把时序分开。

问题时序
在这里插入图片描述
正常时序
在这里插入图片描述

原因分析:

查看NXP SPI底层驱动发现当传输字节小于32字节时,系统会使用IO方式传输,反之这会使用DMA传输。

解决方案:

根据原因修改驱动的判断条件,由于我们不想使用IO方式,并且传输数据都会大于10个字节,所以我这里把判断条件改到了10。

需要修改的文件为:drivers/spi/spi-imx.c

需要修改的部分截图:
在这里插入图片描述

Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐