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

    文章

    15526

    浏览量

    173453
  • 驱动
    +关注

    关注

    12

    文章

    1739

    浏览量

    84573
  • SPI
    SPI
    +关注

    关注

    17

    文章

    1628

    浏览量

    90107
收藏 人收藏

    评论

    相关推荐

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

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

    基于SPI芯片MAX3420的USB控制器接口设计

    ,MOSI可以为任意值。②当SCLK为静止态时,SS为低,MAX3420选中;将要写的数据的最高位送到MOSI输入。③SPI控制器打开输出驱动,首先的8个时钟脉冲将命令在SCLK上升沿由MOSI发送;8个
    发表于 11-20 11:13

    用于外部微控制器SPI连接

    BlueNRG-MS设备,用于天线或测量仪器的SMA连接以及用于外部微控制器SPI连接。该主板基于STM32L,作为驱动BlueNRG
    发表于 06-01 17:03

    请问一个SPI4.2到ASI控制器功能包括哪些?

    FPGA和结构化ASIC的优势是什么一个SPI4.2到ASI控制器功能包括哪些?
    发表于 04-08 06:26

    介绍一种整车控制策略

    一、整车控制策略结合整车控制器控制功能,就以下方面介绍整车控制策略。1、整车
    发表于 08-31 07:10

    步进电机驱动控制器介绍

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

    控制器MP2200产品特点及功能介绍

    具有高性能,可根据装置自由扩展的模块型控制器。追求工时的装置、需要高级多轴控制的大规模装置,实现0.5ms的高速运动控制周期,同系列较高端的运动控制器。安川
    发表于 09-02 08:53

    LVDS7:1驱动控制器参考设计

    本手册主要对 LVDS7:1 驱动控制器参考设计进行介绍。用户手册主要内容包括功能特点、端口描述、时序说明等。主要用于帮助用户快速了解高云半导体 LVDS7:1
    发表于 10-13 07:21

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

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

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

    ,以外设EEPROM初始化外围部件互连总线PCI中的配置寄存器为例,介绍了集成在芯片中的SPI控制器访问外设EEPROM的具体过程,给出了设计逻辑框图和各个模块的实现及电路综合情况。在modelsim中完成
    发表于 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 19次下载
    基于<b class='flag-5'>SPI</b>的EEPROM<b class='flag-5'>控制器</b>设计与实现

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

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

    SPI通用接口层介绍

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

    MindSDK应用基础—SPI模块样例简介

    MindSDK为MM32主流的微控制器,实现了一系列SPI驱动的样例工程。本文通过讲解 SPI 模块的样例工程,介绍
    的头像 发表于 08-10 17:14 842次阅读

    利用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>程序设计