[Linux] SPI 设备驱动模型(SPI 协议基础)

来源:互联网 发布:淘宝网谁开发的 编辑:程序博客网 时间:2024/05/16 13:43

本文唯一地址: http://blog.csdn.net/dearsq/article/details/51832227
欢迎转载,转载请著名,谢谢~

SPI 总线概念及特点

概念

SPI(Serial Peripheral Interface)穿行外围设备接口,全双工三线同步串行通信接口。
在点对点的通信中,SPI 不需要进行寻址操作。
当有多个从设备时,可以增加一条设备选择线(低电平有效的 CS)。

特点

  • 单主多从
  • 时钟由 Master 控制,在时钟移位脉冲下,数据按位传输,高位在前,低位在后(MSB first)。
  • 全双工(可以同时发出和接收串行数据),速率达 12Mbps
  • 提供频率可编程时钟; 发送结束 中断标志 ; 写冲突保护 ; 总线竞争保护
    缺点是 无法校验

总线结构

GPIO 模拟

如果用 GPIO 模拟 SPI 总线,需要一个输出口(SDO)、一个输入口(SDI)。
如果实现主从设备,需要 SDO 和 SDI; 如果只实现主设备,需要实现 SDO; 如果只实现从设备,需要实现 SDI。

接口定义

标准 SPI 有 4 根线(片选 CS、时钟 SCLK、输出 MOSI、输入 MISO)

MOSI – 主器件数据输出,从器件数据输入
MISO – 主器件数据输入,从器件数据输出
SCLK – 时钟信号,由主器件 Master 产生
/CS – 从器件使能信号,由主器件控制

## 内部逻辑结构
Master 和 Slave 内部分别有两个 8bit 移位寄存器。

其实这就相当于一个 环形的总线结构。
在 SCLK 的控制下,两个 8bit shift register 进行数据交换。
example:主机 buffer = 0xAA,从机 buffer = 0x55,假设上升沿发送数据(SPI 有四种发送数据的模式,下一节再讲解)

如上图,完成了两个8bit寄存器的数据交换。

工作模式

有四种工作模式。
由 时钟极性和时钟相位 (CPOL & CPHA) 决定。
CPOL = Clock Polarity CPHA =Clock Phase

CPOL 设置时钟空闲时的电平
CPOL = 0 :串行同步时钟的空闲状态为低电平
CPOL =1 :串行同步时钟的空闲状态为高电平

CPHA 设置读取数据和发送数据的时钟沿
CPHA =0 :串行同步时钟第一个跳变沿(上升或下降)数据采样
CPHA =1 :串行同步时钟第二个跳变沿(上升或下降)数据采样

第一个跳变沿进行采样:

第二个跳变沿进行采样:

最后:分析 SPI 的四种传输协议可以发现,根据一种协议,只要对串行同步时钟进行转换,就能得到其余的三种协议。
为了简化设计规定,如果要连续传输多个数据,在两个数据传输之间插入一个串行时钟的空闲等待,这样状态机只需两种状态(空闲和工作)就能正确工作。

本文唯一地址: http://blog.csdn.net/dearsq/article/details/51832227
欢迎转载,转载请著名,谢谢~

0 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 游戏压缩出现未知错误或损坏怎么办 百度云里的压缩包解压后损坏怎么办 联创打印时显示压缩文件失败怎么办 电脑的软件打开出现未知格式怎么办 图片只突出人物边上全黑怎么办 合金机兵存档密码忘了怎么办 手机网页验证码无法加载插件怎么办 绝地求生次激战场机型不支持怎么办 木茷生存中文版安装包损坏了怎么办 手机下载软件显示安装包损坏怎么办 不小心把qq图片删了怎么办 奶水不足宝宝不好好吸奶怎么办 膀胱切除前列腺切除阴茎不硬怎么办 小孩的睾丸睾丸碰肿了怎么办 怎么判断小孩子的睾丸没下来怎么办 怀孕39周腰酸屁股酸疼该怎么办 我儿子18岁睾丸筋鼓起来怎么办 去医院检查说精子跑的慢怎么办 多囊卵巢综合症引起屁股增大怎么办 蚊子咬了肿了挠破了流水怎么办 血糖高引发的睾丸一直烂怎么办? 被洪水淹过的猪后期怎么办 做睾丸阴囊彩超阴茎突然勃起怎么办 阴茎冠状沟皮肤感染总不愈合怎么办 不小心咬到孩子破皮了怎么办 小孩子不小心碰到脸黑了一块怎么办 眼睛不小心碰到了里面红了怎么办 八个月宝宝睾丸还沒掉下来怎么办 孩子背部皮肤有一块皮肤很脏怎么办 洗浴种心搓背老板不给发工资怎么办 半个月小鸡屁骨下垂眼睛紧闭怎么办 在学校走廊把老师撞倒了怎么办 裤衩给孩子买的有点肥怎么办 到交警队立案后医疗费没了怎么办 交警扣车车里的贵重东西没了怎么办 睾丸内囊肿割了又长怎么办 我把别人的卵子踢碎了怎么办 两岁宝宝不小心被猫抓出血怎么办 两岁宝宝小蛋蛋肿了怎么办 吃大胺片过敏蛋皮又痛又痒怎么办 刚出生二十天宝宝蛋蛋有疝气怎么办