0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看威廉希尔官方网站 视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

SPI控制器驱动层功能介绍

麦辣鸡腿堡 来源:嵌入式Linux系统开发 作者:嵌入式Linux系统开 2023-07-25 10:58 次阅读

SPI 控制器驱动层

SPI 控制器驱动层负责最底层的数据收发,主要有以下功能:

  1. 申请必要的硬件资源,比如中断、DMA 通道、DMA 内存缓冲区等等
  2. 配置 SPI 控制器的工作模式和参数,使之可以和相应的设备进行正确的数据交换
  3. 向通用接口层提供接口,使得上层的协议驱动可以通过通用接口层访问控制器驱动
  4. 配合通用接口层,完成数据消息队列的排队和处理,直到消息队列变空为止

SPI 主机驱动就是 SOC 的 SPI 控制器驱动。Linux 内核使用 spi_master/spi_controller 表示 SPI 主机驱动,spi_master 是个结构体,定义在 include/linux/spi/spi.h 文件中。

SPI 主机驱动的核心就是申请 spi_master,然后初始化 spi_master,最后向 Linux 内核注册 spi_master。

API 如下:

spi_alloc_master 函数:申请 spi_master。
spi_master_put 函数:释放 spi_master。

spi_register_master函数:注册 spi_master。
spi_unregister_master 函数:注销 spi_master。

spi_bitbang_start函数:注册 spi_master。
spi_bitbang_stop 函数:注销 spi_master。

SPI 主机驱动的加载

以 MTK 为例,源码来自于小米开源项目

https://github.com/MiCode/Xiaomi_Kernel_OpenSource

小米每做一个项目,都会把 kernel 部分开源,因为需要遵循 Linux GPL 开源协议。

【设备】声明在设备树中

kernel-4.14/arch/arm64/boot/dts/mediatek/mt6885.dts

图片

【驱动】

kernel-4.14/drivers/spi/spi-mt65xx.c

图片

图片

匹配以后,probe 函数执行,申请 spi_master,初始化 spi_master,最后向 Linux 内核注册 spi_master。

图片

图片

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 控制器
    +关注

    关注

    112

    文章

    16339

    浏览量

    177859
  • 驱动
    +关注

    关注

    12

    文章

    1839

    浏览量

    85269
  • SPI
    SPI
    +关注

    关注

    17

    文章

    1706

    浏览量

    91524
收藏 人收藏

    评论

    相关推荐

    深度解析Linux SPI总线和设备驱动架构

    SPI控制器不用关心设备的具体功能,它只负责把上层协议驱动准备好的数据按SPI总线的时序要求发送给SPI
    的头像 发表于 02-07 08:16 8080次阅读
    深度解析Linux <b class='flag-5'>SPI</b>总线和设备<b class='flag-5'>驱动</b>架构

    步进电机驱动控制器介绍

    01步进电机驱动控制器步进电机驱动器作为实验装置可控的部分,能够提供自动测量的方法。前面已经有两款步进电机驱动器:SH-20403AXIS12双轴蓝牙移动框架基于ESP8266WiFi
    发表于 08-31 08:32

    控制器功能

    本视频主要介绍控制器功能,分别有数据缓冲、差错控制、数据交换、状态说明、接收和识别命令、地址识别,其次介绍了DMA
    的头像 发表于 11-24 10:38 7.8w次阅读

    关于SPI继电器控制驱动器设计要领的分析和应用

    通过上一篇SPI继电器控制驱动器原理、特性及其模式的讲解,我们对SPI继电器控制驱动器有了初步的
    的头像 发表于 09-23 10:02 3056次阅读
    关于<b class='flag-5'>SPI</b>继电器<b class='flag-5'>控制</b><b class='flag-5'>驱动器</b>设计要领的分析和应用

    关于SPI继电器驱动控制器的现状和发展应用分析

    作为一个以SPI通讯为主要控制方式的驱动器,如果微控制器驱动器之间的SPI通信损坏,意味着发送
    的头像 发表于 09-23 10:07 3833次阅读
    关于<b class='flag-5'>SPI</b>继电器<b class='flag-5'>驱动</b><b class='flag-5'>控制器</b>的现状和发展应用分析

    如何设计EEPROM应用的SPI控制器设计与实现论文

    ,以外设EEPROM初始化外围部件互连总线PCI中的配置寄存为例,介绍了集成在芯片中的SPI控制器访问外设EEPROM的具体过程,给出了设计逻辑框图和各个模块的实现及电路综合情况。
    发表于 12-13 17:28 8次下载
    如何设计EEPROM应用的<b class='flag-5'>SPI</b>主<b class='flag-5'>控制器</b>设计与实现论文

    基于SPI的EEPROM控制器设计与实现

    应用实例描述了EEPROM读写操作的流程和时序。通过编写ARM处理驱动程序,对控制器进行操作,实现了对EEPROM的读与写的具体过程,同时验证了SP1总线接口设计的正确性。关键词:SPI
    发表于 08-04 14:59 20次下载
    基于<b class='flag-5'>SPI</b>的EEPROM<b class='flag-5'>控制器</b>设计与实现

    linux spi应用驱动以及回环测试代码

    linux spi应用驱动以及回环测试代码
    发表于 10-22 15:47 2次下载

    STM32微控制器上的Octo-SPI接口

    STM32微控制器上的Octo-SPI接口
    发表于 11-21 08:11 4次下载
    STM32微<b class='flag-5'>控制器</b>上的Octo-<b class='flag-5'>SPI</b>接口

    车身控制器的各个功能规范介绍

    之前有段时间写过几篇几个车载控制器功能介绍,其中有一篇就是车身控制器功能介绍(回看戳:谈谈车
    的头像 发表于 01-15 09:20 3160次阅读

    MAX6951/MAX6950 LED显示驱动器与MAXQ2000微控制器的通信

    MAX6951/MAX6950 SPI LED驱动器简单易用的共阴极显示驱动器,通过SPI串行接口连接微
    的头像 发表于 06-16 15:34 923次阅读
    MAX6951/MAX6950 LED显示<b class='flag-5'>驱动器</b>与MAXQ2000微<b class='flag-5'>控制器</b>的通信

    基于FPGA的SPI Flash控制器的设计方案

    核能够进行移植和复用,作为SOC芯片的功能模块。SPI Flash控制器采用VHDL语言进行编写,在Mode
    的头像 发表于 07-15 16:55 1994次阅读
    基于FPGA的<b class='flag-5'>SPI</b> Flash<b class='flag-5'>控制器</b>的设计方案

    SPI驱动源文件目录在哪

    SPI 的主要数据结构和函数 spi 控制器驱动,IC 厂商提供,不同厂商命名不同 kernel - 4 . 14 /drivers/spi
    的头像 发表于 07-25 10:49 781次阅读
    <b class='flag-5'>SPI</b><b class='flag-5'>驱动</b>源文件目录在哪

    SPI通用接口介绍

    SPI 通用接口 SPI 通用接口把具体的 SPI 设备的协议驱动
    的头像 发表于 07-25 10:52 753次阅读

    利用SPI控制器控制nRF24L01射频模块的驱动程序设计

    电子发烧友网站提供《利用SPI控制器控制nRF24L01射频模块的驱动程序设计.pdf》资料免费下载
    发表于 11-06 16:34 1次下载
    利用<b class='flag-5'>SPI</b><b class='flag-5'>控制器</b><b class='flag-5'>控制</b>nRF24L01射频模块的<b class='flag-5'>驱动</b>程序设计