您的位置 首页 IC

Linux SPI总线和设备驱动架构之一:体系概述

SPI是"SerialPeripheralInterface"的缩写,是一种四线制的同步串行通信接口,用来连接微控制器、传感器、存储设备,SPI设备分为主设备和从设备两种,用于

  SPI是"Serial Peripheral Interface" 的缩写,是一种四线制的同步串行通讯接口,用来衔接微操控器、传感器、存储设备,SPI设备分为主设备和从设备两种,用于通讯和操控的四根线分别是:

  CS 片选信号

  SCK 时钟信号

  MISO 主设备的数据输入、从设备的数据输出脚

  MOSI 主设备的数据输出、从设备的数据输入脚

  由于在大多数状况下,CPU或SOC一侧一般都是作业在主设备形式,所以,现在的Linux内核版别中,只完结了主形式的驱动结构。

  /*****************************************************************************************************/

  声明:本博内容均由http://blog.csdn.net/droidphone原创,转载请注明出处,谢谢!

  /*****************************************************************************************************/

  硬件结构

  一般,担任宣布时钟信号的设备咱们称之为主设备,另一方则作为从设备,下图是一个SPI体系的硬件衔接示例:

  图1.1 SPI硬件结构图

  如上图所示,主设备对应SOC芯片中的SPI操控器,一般,一个SOC中或许存在多个SPI操控器,像上面的比如所示,SOC芯片中有3个SPI操控器。每个操控器下能够衔接多个SPI从设备,每个从设备有各自独立的CS引脚。每个从设备同享别的3个信号引脚:SCK、MISO、MOSI。任何时刻,只需一个CS引脚处于有用状况,与该有用CS引脚衔接的设备此刻能够与主设备(SPI操控器)通讯,其它的从设备处于等候状况,而且它们的3个引脚有必要处于高阻状况。

  作业时序

  依照时钟信号和数据信号之间的相位联系,SPI有4种作业时序形式:

  咱们用CPOL表明时钟信号的初始电平的状况,CPOL为0表明时钟信号初始状况为低电平,为1表明时钟信号的初始电平是高电平。别的,咱们用CPHA来表明在那个时钟沿采样数据,CPHA为0表明在首个时钟改变沿采样数据,而CPHA为1则表明要在第二个时钟改变沿来采样数据。内核用CPOL和CPHA的组合来表明当时SPI需求的作业形式:

  CPOL=0,CPHA=1 形式0

  CPOL=0,CPHA=1 形式1

  CPOL=1,CPHA=0 形式2

  CPOL=1,CPHA=1 形式3

  软件架构

  在内核的SPI驱动的软件架构中,进行了合理的分层和笼统,如下图所示:

  图2.1 SPI驱动的软件架构

  SPI操控器驱动程序

  SPI操控器不必关怀设备的详细功用,它只担任把上层协议驱动预备好的数据按SPI总线的时序要求发送给SPI设备,一起把从设备收到的数据回来给上层的协议驱动,因而,内核把SPI操控器的驱动程序独立出来。SPI操控器驱动担任操控详细的操控器硬件,比如DMA和中止操作等等,由于多个上层的协议驱动或许会经过操控器恳求数据传输操作,所以,SPI操控器驱动一起也要担任对这些恳求进行行列办理,确保先进先出的准则。

  SPI通用接口封装层

  为了简化SPI驱动程序的编程作业,一起也为了下降协议驱动程序和操控器驱动程序的耦合程度,内核把操控器驱动和协议驱动的一些通用操作封装成规范的接口,加上一些通用的逻辑处理操作,组成了SPI通用接口封装层。这样的优点是,关于操控器驱动程序,只需完结规范的接口回调API,并把它注册到通用接口层即可,无需直接和协议层驱动程序进行交互。而关于协议层驱动来说,只需经过通用接口层供给的API即可完结设备和驱动的注册,并经过通用接口层的API完结数据的传输,无需重视SPI操控器驱动的完结细节。

  SPI协议驱动程序

  上面咱们说到,操控器驱动程序并不清楚和重视设备的详细功用,SPI设备的详细功用是由SPI协议驱动程序完结的,SPI协议驱动程序了解设备的功用和通讯数据的协议格局。向下,协议驱动经过通用接口层和操控器交流数据,向上,协议驱动一般会依据设备详细的功用和内核的其它子体系进行交互,例如,和MTD层交互以便把SPI接口的存储设备完结为某个文件体系,和TTY子体系交互把SPI设备完结为一个TTY设备,和网络子体系交互以便把一个SPI设备完结为一个网络设备,等等。当然,如果是一个专有的SPI设备,咱们也能够按设备的协议要求,完结自己的专有协议驱动。

  SPI通用设备驱动程序

  有时候,考虑到衔接在SPI操控器上的设备的可变性,在内核没有装备相应的协议驱动程序,关于这种状况,内核为咱们预备了通用的SPI设备驱动程序,该通用设备驱动程序向用户空间供给了操控SPI操控的操控接口,详细的协议操控和数据传输作业交由用户空间依据详细的设备来完结,在这种方法中,只能选用同步的方法和SPI设备进行通讯,所以一般用于一些数据量较少的简略SPI设备。

声明:本文内容来自网络转载或用户投稿,文章版权归原作者和原出处所有。文中观点,不代表本站立场。若有侵权请联系本站删除(kf@86ic.com)https://www.86ic.net/bandaoti/221687.html

为您推荐

联系我们

联系我们

在线咨询: QQ交谈

邮箱: kf@86ic.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

返回顶部