介绍Linux 内核中SPI 子系统的接口及使用方法,为SPI设备驱动的开发提供参考。适用于基于Linux 3.4内核的全志R16硬件平台。

2. 2. 模块介绍
2.1.  模块功能介绍
Linux 中 SPI 体系结构图 2.1 所示,图中用分割线分成了三个层次:
1. 用户空间,包括所有使用 SPI 设备的应用程序;
2. 内核,也就是驱动部分;
3. 硬件,指实际物理设备,包括了 SPI 控制器和 SPI 外设。

其中,Linux 内核中的 SPI 驱动程序仅支持主设备,逻辑上又可以分为 3 个部分:
1. SPI 核心(SPI Core):实现对 SPI 总线驱动及 SPI 设备驱动的管理;
2. SPI 总线驱动(SPI Master Driver):针对不同类型的 SPI 控制器,实现对 SPI 总线访问的具体方法;
3. SPI 设备驱动(SPI Device Driver):针对特定的 SPI 设备,实现具体的功能,包括 read,write 以及 ioctl 等对用户层操作的接口。

SPI总线驱动主要实现了适用于特定SPI控制器的总线读写方法,并注册到Linux内核的SPI架构,SPI外设就可以通过SPI架构完成设备和总线的适配。但是总线驱动本身并不会进行任何的通讯,它只是提供通讯的实现,等待设备驱动来调用其函数。

SPI Core的管理正好屏蔽了SPI总线驱动的差异,使得SPI设备驱动可以忽略各种总线控制器的不同,不用考虑其如何与硬件设备通讯的细节。

2.2. 相关术语介绍
Sunxi 指Allwinner 的一系列 SOC 硬件平台
SPI:Serial Peripheral Interface,同步串行外设接口
SPI Master:SPI 主设备
SPI Device:指 SPI 外部设备

2.3. 模块配置介绍
2.3.1 sys_config.fex sys_config.fex 配置说明
在不同的 Sunxi 硬件平台中,SPI 控制器的数目也不同,但对于每一个 SPI 控制器来说,
在 sys_config.fex 中配置参数相似,如下:
[spi0]
spi_used = 1
spi_cs_bitmap = 1
spi_cs0 = port:PC27<3><1><default><default>
spi_sclk = port:PC02<3><default><default><default>
spi_mosi = port:PC00<3><default><default><default>
spi_miso = port:PC01<3><default><default><default>

其中:
1. spi_used 置为 1 表示使能,0 表示不使能;
2. spi_cs_bitmap,由于 SPI 控制器支持多个 CS,这一个参数表示 CS 的掩码;
3. spi_cs0、spi_sclk、spi_mosi 和 spi_miso 用于配置相应的 GPIO。
对于 SPI 设备,还需要通过以下参数配置 SPI board info,这些信息会通过 SPI 子系统的接口 spi_register_board_info()在 SPI 总线驱动初始化前就注册到内核中。

[spi_devices]
spi_dev_num = 1
[spi_board0]
modalias = "m25p32"
max_speed_hz = 33000000
bus_num = 0
chip_select = 0
mode = 0

其中:
1. spi_dev_num 表示 SPI 设备的数目,决定了下面有几个[spi_boardx];
2. modalias,SPI 设备的名字,在做总线适配时会用到;
3. max_speed_hz,最大传输速度,单位是 Hz;
4. bus_num,SPI 控制器的序号,从 0 开始编号;
5. chip_select,理论上可以选 0,1,2,3,取决于硬件的 CS 连线
6. mode,即 spi_board_info 结构中的 mode 成员,其定义同 spi_device 中的 mode

全志R16_SPI总线驱动的使用文档,全志R16开发资料相关推荐

  1. Spring 2.5 jar 所有开发包及完整文档及项目开发实例

    Spring 2.5 jar 所有开发包及完整文档及项目开发实例 spring jar 包详解spring.jar是包含有完整发布的单个jar包,spring.jar中包含除了 spring-mock ...

  2. FPGA[视频+文档+例程]170G相关资料放送(持续更新)

    [资料放送][FPGA]<视频+文档+例程>170G资料放送 包括: 视频+文档+例程:<黑金开发板资料>18G 链接:链接:https://pan.baidu.com/s/1 ...

  3. 基于 next.js + mdx 搭建组件库文档项目(一) -- 开发环境搭建

    说明 之前使用过 Docz 来作为组件库文档搭建工具,它基于 gatsby , 提供了高度的定制化能力,但是截止 2021-06-22, Docz 停留在 v2.3.1(2020-04-05) 已经一 ...

  4. documents4j:Java文档格式转换开发库

    为什么80%的码农都做不了架构师?>>>    http://hao.jobbole.com/documents4j/ documents4j:Java文档格式转换开发库 docum ...

  5. 在.NET Core中使用MongoDB明细教程(1):驱动基础及文档插入

    MongoDB,被归类为NoSQL数据库(其实我更觉得MongoDb是介于关系型数据库和非关系型数据库之间,此外,在我看来在很多场景中MongoDb都可以取代关系型数据库.),是一个以类JSON格式存 ...

  6. ULN2003步进电机 5V/12V步进电机 28BYJ-48步进电机 13003驱动板开发者文档

    13003步进电机驱动板介绍 我们设计的13003驱动板在核心电路上做了优化,如果驱动板电源不小心接反了一下,不会击穿单片机. 可以驱动5v 28BYJ-48步进电机 12v28BYJ-48步进电机. ...

  7. 测试驱动需求分析--需求文档评审实例

    相关文章链接如下: 微软过桥问题与测试人员素养 等价类分法 新解 测试用例设计中的NP难题 C/C++代码检视实例 90%程序员写不出无BUG的二分查找程序?                  需求文 ...

  8. 【ABAP】在线预览文档对象的开发实现

    应用场景:有些定制化开发(报表/功能增强等)完成之后,客户需要将其操作手册或者相关文档放在某个报表的初始画面,供实际操作者在线查阅,当然这个功能也同样类似于模板的下载,这里就以在线预览(直接打开)为例 ...

  9. 网友提问:当我要使用一个陌生的标准BAPI,我可以去哪里找到比较详尽的文档指导一类的资料

    提问: 您好,我是一名初级ABAP开发,想请教一下,当我要使用一个陌生的标准BAPI,我可以去哪里找到比较详尽的文档指导一类的?(有SAP账号)目前的做法是参考别人的代码,遇到报错百度谷歌七拼八凑了解 ...

最新文章

  1. 初识FPGA(二)(FPGA与ASIC及CPLD的对比)
  2. RBF网络——核心思想:把向量从低维m映射到高维P,低维线性不可分的情况到高维就线性可分了...
  3. 错误 2 error C2059: 语法错误:“::”
  4. 是什么管脚分配_FPGA是什么?里面有什么?能做什么?
  5. 【企业管理】企业创造的要素
  6. 如何将因果干预用于提升模型公平性?
  7. boost::to_address用法实例
  8. python json模块详解_Python的标准模块包json详解
  9. wxpython按钮形状如何修改_Python图形化界面入门教程 - 使用wxPython自定义表
  10. php 安装zip,php zip拓展安装
  11. windows命令大全
  12. unity多人联机插件_Unity网络系统插件,打通游戏联网任督二脉
  13. 计算机公式算乘法,excel表格乘法计算公式的用法
  14. java if 分号_if语句后面一定不能写分号吗?
  15. ubuntu nvidia驱动更新
  16. Effective java 读书笔记
  17. 接口与继承系列教材 (十)- Java 内部类详解
  18. 《暗时间》----读书笔记
  19. 2023年网络安全HW攻防技术总结(珍藏版)
  20. git 创建关联远程分支报错Did you intend to checkout ‘origin/branchName‘ which can not be resolved as commit?

热门文章

  1. 企业微信群机器人快速接入
  2. 先别急着质疑新世相,这里或许有内容付费的真相
  3. 使用Chrome开发者工具调用REST接口(附图)
  4. matplotlib plot python rgb2gry 显示灰度图像
  5. JAVA 基础 day-27 练习 线程与线程安全
  6. VL171与VL170的区别
  7. 数学----常见函数求导过程
  8. 快速记忆数学知识的六个方法
  9. 专访快准车服CIO牛小虎:全面信息化支持,让车爱上快准
  10. 高新技术企业的申报流程是怎样的?