SPI 控制器驱动层
SPI 控制器驱动层负责最底层的数据收发,主要有以下功能:
- 申请必要的硬件资源,比如中断、DMA 通道、DMA 内存缓冲区等等
- 配置 SPI 控制器的工作模式和参数,使之可以和相应的设备进行正确的数据交换
- 向通用接口层提供接口,使得上层的协议驱动可以通过通用接口层访问控制器驱动
- 配合通用接口层,完成数据消息队列的排队和处理,直到消息队列变空为止
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
+关注
关注
17文章
1706浏览量
91524
发布评论请先 登录
相关推荐
步进电机驱动控制器介绍
01步进电机驱动控制器步进电机驱动器作为实验装置可控的部分,能够提供自动测量的方法。前面已经有两款步进电机驱动器:SH-20403AXIS12双轴蓝牙移动框架基于ESP8266WiFi
发表于 08-31 08:32
如何设计EEPROM应用的SPI主控制器设计与实现论文
,以外设EEPROM初始化外围部件互连总线PCI中的配置寄存器为例,介绍了集成在芯片中的SPI主控制器访问外设EEPROM的具体过程,给出了设计逻辑框图和各个模块的实现及电路综合情况。
发表于 12-13 17:28
•8次下载
基于SPI的EEPROM控制器设计与实现
应用实例描述了EEPROM读写操作的流程和时序。通过编写ARM处理器的驱动程序,对控制器进行操作,实现了对EEPROM的读与写的具体过程,同时验证了SP1总线接口设计的正确性。关键词:SPI
发表于 08-04 14:59
•20次下载
利用SPI控制器控制nRF24L01射频模块的驱动程序设计
电子发烧友网站提供《利用SPI控制器控制nRF24L01射频模块的驱动程序设计.pdf》资料免费下载
发表于 11-06 16:34
•1次下载
评论