Linux内核驱动之spi子系统spi协议

概况 SPI接口是摩托罗拉首先提出的全双工三线同步串行外围接口SCK,MOSI,MISO,采用主从模式(Master Slave)架构;支持多slave模式应用(此时使用四线模式进行通信,在原有三线模式下多出一根片选信号CS),一般一个Master最多支持4个Slave,此时Master控制器需要有4根CS片选信号,因为主从通信的属于独占式,在某一个Slave设备通信时候,其他设备只能等待。SPI总线时钟由Master控制,在同步时钟移位脉冲下,数据按位传输,高位在前,低位在后(MSB FIRST),四线工作模式的SPI接口有2根单向数据线MOSI和MISO,SCK时钟线,Slave设备的片选信号CS。看下图多Slave模式的主从连接图从上很明显看出各个Slave设备共享数据线和时钟线,各自的片选信号线不一样,三线模式更为简单,简单的说去掉片选信号线即可。下面是SPI总线的优缺点优点: 1) 支持全双工操作; 2) 操作简单; 3) 数据传输速率较高。缺点: 1) 需要占用主机较多的引脚线(每个从机都需要一根片选线),占用总线带宽; 2) 没有指定的流控制,没有应答机制确认是否接收到数据。 3) SPI总线并不是一个标准的协议,为了适应较多产品存在较多的模式,同时各家芯片的读写方法并不是完全一致二 SPI总线模式设置SPI协议中最重要的便是模式设置包括CPOL和CPHA。CPOL指的是SCK时钟空闲时的电平极性Polarity。CPHA指的是相位Phase.CPOL=0表示SCK时钟在空闲时候是低电平CPOL=1表示SCK时钟在空闲时候是高电平CPHA=0 表示片选信号有效后,SCK的第一个跳变沿采样(接收)数据(包括下降沿/上升沿取决于CPOL),第二个跳变沿发送数据CPHA=1表示片选信号有效后,SCK的第一个跳变沿发送数据,第二个跳变沿采样(接收)数据注意采样数据一般都是在数据线信号最稳定的时候采样-信号中间根据CPOL和CPHA的变化SPI设备存在四种工作模式Linux使用以下四个宏表示SPI_MODE_0,SPI_MODE_1,SPI_MODE_2,SPI_MODE_3为了保证主从设备的正常通信,主从设备需要保持一致的工作模式,对于一个给定的从设备是可以从其datasheet中间找到相应的工作模式,主设备按照datasheet进行设置即可。看下面的时序图即四种工作模式首先看图3,CPHA = 0:表示片选信号有效后,SCK的第一个跳变沿采样数据。此时正好是MOSI和MISO信号最稳定最中间的地方,正好采样数据,那究竟是在何时输出的BIT7(MSB)了,肯定早于SCK第一个跳变沿不然对方没法接收到数据。从图3也可以看出来,MOSI输出(Master输出数据)早SCK第一个跳变沿半个周期,MISO输出数据(Slave输出数据)就更早了,基本在片选信号有效后就立即输出数据了。到了SCK的第二个跳变沿,肯定继续输出数据第三个跳变沿接收数据 … …直到传输结束接着图4,CPHA = 1;:表示片选信号有效后,SCK的第二个跳变沿采样数据。这时候就更好理解了,第二个跳变沿采样数据,那第一个跳变沿自然就发送数据,看时序图也是:片选信号有效后第一个个跳变沿MOSI和MISO就各自发送数据了,第二个跳变沿来的时候,正好是MOSI和MISO信号最稳定最中间的地方,正好采样数据。第三个跳变沿就继续发送数据,第四个跳变沿接收数据 … …直到传输结束三 GSPI接口首先GSPI接口和普通SPI接口在电路连接上显然不一样,GSPI接口的数据线是连接成环路,即上一级芯片的输出SDOUT连接下一级芯片的输入SDIN.但是GSPI的接口时序和SPI接口时序是一样的也有四种工作模式需要注意的地方:我们芯片的的SPI Master只有三根CS片选信号,也就是说最多只能连接三个SPI Slave设备,由于系统需求我们必须连接四个SPI Slave所以使用一根GPIO来代替CS信号。此时出现了一个问题:我们根本不能去读写这四个SPI Slave设备后来查询原因是由于GSPI接口的事,由于电路是闭环的,SPI Master去读取某个SPI Slave设备时,会选通该SPI slave的CS信号(低电平),使得数据沿着闭环传输回SPI Master。然而我们最后一级SPI Slave是使用GPIO扩展的,始终输出的都是低电平,导致一个环路里边有两个SPI slave都是选通状态,这样肯定不能正常工作。解决方法是把GPIO电平变高使得该SPI slave始终都处于未选通状态,这样GSPI环路里边始终就只有一个SPI Slave选通了。

linux内核添加spi驱动,Linux内核驱动之spi子系统spi协议.docx相关推荐

  1. linux怎么添加中文服务器,linux不支持中文怎么办_网站服务器运行维护

    linux如何实现图形界面与命令行界面的切换_网站服务器运行维护 linux实现图形界面与命令行界面的切换的方法是:执行[init 3]命令可以切换到命令行模式,执行[init 5]命令可以切换到图形 ...

  2. linux路由添加和删除,linux 添加删除软路由

    Linux中增加软路由的两种方法 第一种: route add -net 172.16.6.0 netmask 255.255.255.0 gw 172.16.2.254 dev eth0 /* 增加 ...

  3. linux添加ssl信任根证书,linux系统添加根证书linux证书信任列表

    1.linux 访问 https 证书问题 [root@boss-test-dev001-jydx ~]# curl -v https://mobile.mycard520.com.tw * Abou ...

  4. Linux中添加pycharm源,linux下python+pycharm安装

    一.安装python3.5 默认情况下,linux下是默认使用2.x版本的,现在我们要安装3.x版本,具体操作如下 1.去官网下载安装包.(这里我下载的是.tgz版本) 2.用命令解压安装包 tar ...

  5. linux命令添加文件权限,linux 的常用命令及文件权限管理

    一些常规命令 # 切换目录 cd /www/app # 显示当前目录绝对路径 pwd # tab键可以自动补全路径,命令:及提示选择,自动补全.避免输入错误. tab # 创建文件夹 mkdir te ...

  6. Linux添加授信根证书,linux系统添加根证书 linux证书信任列表

    1.linux 访问 https 证书问题 [root@boss-test-dev001-jydx ~]# curl -v https://mobile.mycard520.com.tw * Abou ...

  7. linux ipv6添加路由器,使用Linux搭建IPV6路由器(CentOS版)

    Building a IPV6 Router with Linux(CentOS) Version 1.0.0 Date 2010-11-20 Author ipcpu Website http:// ...

  8. linux系统添加根证书 linux证书信任列表

    1.linux 访问 https 证书问题 [root@boss-test-dev001-jydx ~]# curl -v https://mobile.mycard520.com.tw * Abou ...

  9. linux系统添加外部磁盘阵列,Linux下添加磁盘阵列空间(vdisk盘),分区,格式化详解...

    sfdisk -l 确定/dev/sda是新识别到的存储vdisk盘. 1.创建分区 [root@yyxtdb1 init.d]#fdisk /dev/sda Command (m for help) ...

  10. linux服务器添加双路由,Linux服务器双网卡双IP刷路由

    Linux系统双网卡双IP配置分为两个部分, 一.访问服务器方向的路由. 二.服务器内部去访问其他网站的路由. 对于访问服务器方向的路由,通过在开机自启的脚本中写入下面内容,可以写在/etc/rc.d ...

最新文章

  1. SAP MM 特性设置问题导致PR审批策略不对之分析
  2. Atitit 常用sdk 模块 组织架构切分 规范与范例attilax总结
  3. java 反射应用_java反射(二)--反射应用案例
  4. GetLastError函数使用及返回代码对照
  5. jzoj5701-[gdoi2018day2]谈笑风生【莫比乌斯反演,二分,最短路】
  6. error: ‘CV_BGR2RGB’ was not declared in this scope
  7. 中国电信学院c语言题库,电脑题库试题精编版.doc
  8. @configuration注解_超级全面的 SpringBoot 注解介绍,每一个用途都应该清晰
  9. nginx介绍(一) 简介篇
  10. git push git pull 推送/拉取分支
  11. 算法导论 练习12.2
  12. vue实现密码的表单验证~(旧密码,新密码,重复新密码)
  13. linux----文件权限管理
  14. 列表嵌套type属性默认值
  15. 第三十章 被动语态
  16. android 官方ui库,腾讯出品的一个超棒的 Android UI 库
  17. iPhone设置手机铃声
  18. 关于 使用pyecharts进行数据可视化分析 的学习报告I
  19. 【OS学习笔记】二十五 保护模式七:任务和特权级保护对应的汇编源代码
  20. 复数和向量的函数运算

热门文章

  1. 如何将全国各省份人口数据绘制成地域分布图?Python 轻松解决
  2. Android 热修复 Tinker接入及源码浅析
  3. JSONObject转对象、集合、数组
  4. windows10删除英语(UK英国),英语(EU美国)键盘
  5. 去中心化身份(Decentralized ID, DID)介绍
  6. 不用找,你想要的车样机图片素材都在这里
  7. 少年之死的思考:AI能颠覆互联网招聘平台吗?
  8. 2020机械员-通用基础(机械员)模拟考试题及机械员-通用基础(机械员)作业考试题库
  9. Cannot GET / 错误解决
  10. 广州技能入户计算机证书,广州职称入户可以考哪些证书?推荐四种证书!