Linux SPI通过设备树文件添加设备

Linux SPI通过设备树文件添加设备,第1张

如上DTS文件片段,SPI Device 节点必须定义在 SPI Master 节点下,其中 compatible 属性和 reg 属性,以上 compatible 属性用于匹配对应的 Driver 程序,reg 属性用于指定使用的 SPI Master 的编号,SPI 相关设备树文件识别见下文讲解。

匹配设备树文件在SPI子系统中有两个地方:在 spi_register_master() 中匹配和在 device register 时通过内核的通知链(notifier_block)来调用设备树匹配相关程序。

在 device register 时,需配置 CONFIG_OF_DYNAMIC 宏以开启动态匹配才能够使用设备树添加设备,该宏在 menuconfig/Device Drivers/Device Tree and Open Firmware support 中开启,如下图:

内核版本2.6.30。编进内核的spi驱动,通过看代码我明白了,大致过程是这样:

1、先创建一个spi_board_info结构描述spi设备信息,调用spi_register_board_info将这个结构添加到board_list中。

2、然后调用spi_register_master注册spi控制器驱动,此时会调用scan_boardinfo扫描board_list,根据spi_board_info调用spi_new_device生成spi_device结构,用spi_add_device添加设备。

3、调用spi_register_driver注册spi_driver,通过与device匹配驱动设备。

硬件SPI的MOSI,MISO,SCK是可以复用的,SS是片选信号,每个设备要单独一个引脚,低电平时可以让设备激活,同时其他设备的SS信号保持高电平,要 *** 作那个设备,就让连接该设备的SS引脚变低即可。

同步串行外设接口总线(SPI)的简介

同步串行外设接口总线(SPI)是用于MCU(微控制器)与一个或多个外围设备进行短距离快速通讯的同步串行数据协议。它也可以用于两个微控制器之间的通信。 SPI的连接始终是由一个主设备(通常是一个微控制器)来控制外围设备来进行。通常在所有设备上都有三条线,

Master In Slave Out (MISO) -主设备数据输入,从设备数据输出,

Master Out Slave In (MOSI) -主设备数据输出,从设备数据输入,

Serial Clock(SCK)-串行时钟,数据传输的时钟基于主处理器产生的时钟脉冲,

Slave Select(SS) -从属选择,从设备的管脚控制信号线,由主设备进行使能控制。当从设备的SS引脚置为低电平时,它与主设备进行通信。当从设备的SS引脚置为高电平时,断开与主设备的通信。因此,SPI允许一个主设备和多个从设备进行通信,主设备通过不同的SS信号线选择不同的从设备进行通信。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/bake/7953725.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-11
下一篇 2023-04-11

发表评论

登录后才能评论

评论列表(0条)

保存