SPI子系统分析

Spi子系统

spi协议简介

SPI是串行外设接口(Serial Peripheral Interface)的缩写,是美国摩托罗拉公司(Motorola)最先推出的一种同步串行传输规范,是一种高速、全双工、同步通信总线,所以可以在同一时间发送和接收数据,SPI没有定义速度限制,因此一般的存储设备(flash、sd卡)也使用spi通信。

SPI有主、从两种模式,通常由一个主模块和一个或多个从模块组成(SPI不支持多主机),主模块选择一个从模块进行同步通信,从而完成数据的交换。提供时钟的为主设备(Master),接收时钟的设备为从设备(Slave),SPI接口的读写操作,都是由主设备发起,当存在多个从设备时,通过各自的片选信号进行管理。

SPI通信原理很简单,需要至少4根线,单向传输时3根线,它们是MISO(主设备数据输入)、MOSI(主设备数据输出)、SCLK(时钟)和CS/SS(片选):

MISO( Master Input Slave Output):主设备数据输入,从设备数据输出;

MOSI(Master Output Slave Input):主设备数据输出,从设备数据输入;

SCLK(Serial Clock):时钟信号,由主设备产生;

CS/SS(Chip Select/Slave Select):从设备使能信号,由主设备控制,一主多从时,CS/SS是从芯片是否被主芯片选中的控制信号,只有片选信号为预先规定的使能信号时(高电位或低电位),主芯片对此从芯片的操作才有效。但是在某些点对点的通信中,可能不需要片选信号。

根据SPI的时钟极性和时钟相位特性可以设置4种不同的SPI通信操作模式,其中模式0和模式3最常用。

Mode0:CKP=0,CKE =0:当空闲态时,SCK处于低电平,数据采样是在第1个边沿,也就是SCK由低电平到高电平的跳变,所以数据采样是在上升沿(准备数据),(发送数据)数据发送是在下降沿。

Mode1:CKP=0,CKE=1:当空闲态时,SCK处于低电平,数据发送是在第2个边沿,也就是SCK由低电平到高电平的跳变,所以数据采样是在下降沿,数据发送是在上升沿。

Mode2:CKP=1,CKE=0:当空闲态时,SCK处于高电平,数据采集是在第1个边沿,也就是SCK由高电平到低电平的跳变,所以数据采集是在下降沿,数据发送是在上升沿。

Mode3:CKP=1,CKE=1:当空闲态时,SCK处于高电平,数据发送是在第2个边沿,也就是SCK由高电平到低电平的跳变,所以数据采集是在上升沿,数据发送是在下降沿。

 

Spi总线没有规定传输速率,只要通信时钟不超过设备datsheet上支持的时钟范围即可,spi也没有规定是lsb还是msb,一般主设备两种都支持,可配置,但是从设备一般只支持其中一种,因此需要根据从设备支持的模式去配置主设备。

关于spi全双工通信的理解

Spi通信并非一问一答的方式,因此数据的交换可以同时发生。如果通信双方是一问一答(查询的方式),则主机先发送查询的信息,然后再发起一次读操作产生时钟,此时从机的数据从数据寄存器移位到数据线上向从机发送数据。

如何根据示波器判断信号质量的好坏

Spi对数据的采样发生在跳变沿(根据上升沿或者下降沿),因此要在时钟的跳变沿,数据线上的电平必须是稳定的电平状态(不能处于一个上升或者下降的状态)。

关于spi从设备不能产生时钟,如何与主设备通信的理解。

时钟线时钟由之设备控制,对于从设备来说,时钟线就是一个输入,而spi的数据交换依赖于时钟,因此只有主设备必须发起一个读写操作,从设备的数据才能发送出去。

spi子系统与设备树

 

 

2.1 设备树中各个属性的含义

compatible:设备兼容属性,用于与设备绑定;

reg:表明spi控制器的基地址以及地址长度;

interrupt:表明控制器使用的中断资源;

pinctrl-name:定义设备的状态(休眠、唤醒等);

pinctrl-0/1/2:使用一组pin对应pinctrl-name定义的状态;

clock:使用的时钟源;

dma:表明控制器使用的dma控制器资源;

status:控制器状态

ambvin:子节点,表明挂载在这个总线下的设备。

cs-gpios:表明使用的cs-pin

2.2设备树与驱动

simple-bus下面的子节点会被解析成一个platform-device然后注册到platform-bus中,控制器驱动会被当成一个platform-driver注册到platform-bus中,然后通过compatible属性匹配上了之后,进入到对应的probe函数中,实现控制器的初始化。在spi控制器的子节点也会被解析成一个device注册到spi-bus中,等待对应的drive匹配。

Linux的spi子系统框架分析

 

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值