SPI驱动介绍
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
文档编号:
SPI驱动使用介绍
文档状态:[ ] 草稿[√] 正式发布[ ] 正在修改
版本0.01 校对版本日期2013-12-18 审核编制孙忠刚批准
版本变更记录
版本日期修改人变更理由/变更内容
孙忠刚初始版本
0.01 2013-12-18
1. SPI驱动提供的通讯方式
Spi提供两种通讯方式,对应的驱动接口分别为SyncTransmit和AsynTransmit。
a)同步通讯方式
当驱动接口Spi_SyncTransmit执行完毕,即完成SPI通讯。当SPI总线传输数据时,CPU处于轮询等待状态,直至SPI通讯结束CPU方继续向下执行。
b)异步通讯方式
当驱动接口Spi_AsynTransmit执行完毕,但SPI通讯不一定完成。CPU将待发送的数据写入SPI数据发送缓冲区,触发SPI通讯,CPU继续向下执行,而不等待
SPI通讯结束。
2. SPI驱动使用方法
a)基础知识介绍
在AutoSar标准中,与SPI通讯相关的三个术语:Channel、Job和Sequence。
1个Channel对应1个发送缓冲区和1接收缓冲区;
1个Job对应着1次SPI通讯发送的内容(既SPI 一次片选过程所传输的内容)。
1个Sequence 对应着1个SPI通讯序列(job序列)。多个Job可以分配给一个Sequence。
关于每个术语的详细解释,参考AutoSar标准。
SPI通讯是基于Sequence触发的,即使发送1个Job也要将该Job分配给1个队列,然后通过触发Sequence来实现Job的传输。
b)两种使用方法
方法1:对应1个SPI外设芯片,分配1个Job、1个Sequence。使用此种方法,触发一次Sequence,只能传输一个Job,当对外设发送多个Job时,需要多次触发Sequence,且在下一次触发Sequence时,必须确保上一次Sequence已经传输完毕,否则下一次Sequence传输会因为上一次Sequence传输占用SPI总线而失败。
方法2:对应1个SPI外设芯片,结合对外设芯片的控制方法,分配多个Job和多个Sequence,有目的分配Job到相应的Sequence中。在不同控制逻辑中,触发不同的Sequence,传输不同个数的Job序列。当对1个Sequence分配多Job时,触发此Sequence就可以完成多个Job的传输,SPI 驱动本身来保证Job序列的传输,不会产生下一个Job传输因为上一个Job占用SPI总线而失败的情况。
对外设传输多个Job时,使用方法2可以降低CPU使用率。