SPI 数据传输可以有两种方式:同步方式和异步方式。
同步方式:数据传输的发起者必须等待本次传输的结束,期间不能做其它事情,用代码来解释就是,调用传输的函数后,直到数据传输完成,函数才会返回。
异步方式:数据传输的发起者无需等待传输的结束,数据传输期间还可以做其它事情,用代码来解释就是,调用传输的函数后,函数会立刻返回而不用等待数据传输完成,我们只需设置一个回调函数,传输完成后,该回调函数会被调用以通知发起者数据传送已经完成。
同步方式简单易用,很适合处理那些少量数据的单次传输。但是对于数据量大、次数多的传输来说,异步方式就显得更加合适。
对于 SPI 控制器来说,要支持异步方式必须要考虑以下两种状况:
对于同一个数据传输的发起者,既然异步方式无需等待数据传输完成即可返回,返回后,该发起者可以立刻又发起一个
message,而这时上一个message还没有处理完。
对于另外一个不同的发起者来说,也有可能同时发起一次message传输请求。
队列化正是为了为了解决以上的问题,所谓队列化,是指把等待传输的 message 放入一个等待队列中,发起一个传输操作,其实就是把对应的 message
按先后顺序放入一个等待队列中,系统会在不断检测队列中是否有等待传输的 message,如果有就不停地调度数据传输内核线程,逐个取出队列中的 message
进行处理,直到队列变空为止。SPI 通用接口层为我们实现了队列化的基本框架。
spi_message 就是一次 SPI 数据交换的原子操作,不可打断。
-
数据传输
+关注
关注
9文章
1869浏览量
64527 -
SPI
+关注
关注
17文章
1704浏览量
91460 -
同步
+关注
关注
0文章
89浏览量
19163
发布评论请先 登录
相关推荐
评论