什么是SPI。删除有关SPI的文件有什么后果

什么是SPI。删除有关SPI的文件有什么后果,第1张

SPI一、SPI是英文Software Process Improvement的缩写,中文意思是软件过程的改进。它是CMM(还有其他能力模型)中的一个重要概念,CMM模型的目的就是要改进一个组织的过程,提码兆高过程能力,所以叫做SPI-软件过程改进。二、SPI是英文Service Provider Interface的缩写。中文意思是服务提供商接口。满足某种服务标准的供应商提供的符合该标准的应用程序接口,SPI应该和该服务的API标准是兼容的,应用程序一般应该是基于API编写,除非是SPI中包含API中没有提供的功能而又必须使用。 三、SPI是芦顷英文Serial Peripheral Interface的缩写,中文意思是串行迟哗租外围设备接口,SPI是Motorola公司推出的一种同步串行通讯方式,是一种三线同步总线,因其硬件功能很强,与SPI有关的软件就相当简单,使CPU有更多的时间处理其他事务。引用: http://baike.baidu.com/view/245026.htm

如上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 中开启,如下图:

一、添加驱动

1、新增模拟SPI驱动文件(drv_soft_spi.c/h)

参考橡敏drv_spi.c/h,编写模拟SPI驱动

2、新增模拟SPI配置文件(soft_spi_config.h)

拷贝 \libraries\HAL_Drivers\config\f4\spi_config.h,重命令为soft_spi_config.h

#ifndef __SOFT_SPI_CONFIG_H__

#define __SOFT_SPI_CONFIG_H__

#include <rtthread.h>

#ifdef __cplusplus

extern "C" {

#endif

// CS(PG10) SCK(PG12) MISO(PF8) MOSI(PF9)

#ifdef BSP_USING_SOFT_SPI1

#ifndef SOFT_SPI1_BUS_CONFIG

#define SOFT_SPI1_BUS_CONFIG \

{\

.mosi_pin.GPIOx = GPIOF, \

.mosi_pin.GPIO_Pin = GPIO_PIN_9, \

.miso_pin.GPIOx = GPIOF, \

.miso_pin.GPIO_Pin = GPIO_PIN_8, \

.sclk_pin.GPIOx = GPIOG, \

.sclk_pin.GPIO_Pin = GPIO_PIN_12,\

.bus_name = "soft_spi1", \

}

#endif /* SOFT_SPI1_BUS_CONFIG */

#endif /* BSP_USING_SOFT_SPI1 */

#ifdef __cplusplus

}

#endif

#endif /*__SPI_CONFIG_H__ */

二、向工程添加文件

1、修改..\board\Kconfig

新增下内容

menu "Onboard Peripheral Drivers"

...

config BSP_USING_SPI_FLASH

bool "Enable SOFT-SPI FLASH (W25Q64)"

select BSP_USING_SOFT_SPI

select RT_USING_SFUD

select RT_SFUD_USING_SFDP

default n

...

menu "On-chip Peripheral Drivers"

...

menuconfig BSP_USING_SOFT_SPI

bool "Enable SOFT SPI BUS"

default n

select RT_USING_SOFT_SPI

if BSP_USING_SOFT_SPI

config BSP_USING_SOFT_SPI1

bool "Enable SOFT SPI1:CS(PG10) SCK(PG12) MISO(PF8) MOSI(PF9)"

default n

endif

...

2、修李数改\rt-thread\梁扰枝components\drivers\Kconfig

新增如下内容

config RT_USING_SPI

bool "Using SPI Bus/Device device drivers"

default n

if RT_USING_SPI

...

config RT_USING_SOFT_SPI //新增

bool "Enable SOFT SPI mode"

default n

...

3、修改..\libraries\HAL_Drivers\SConscript

新增如下内容

if GetDepend(['RT_USING_SOFT_SPI']):

src += ['drv_soft_spi.c']

4、修改..\libraries\HAL_Drivers\drv_config.h

新增如下内容

...

#include "f4/soft_spi_config.h"

...

三、使用驱动

1、ENV配置

开启模拟SPI

开启SFUD组件

2、设备初初始化

在spi_flash_init.c中添加如下内容,注册softspi1总线,注册softspi10设备并挂载到softspi1总线上;使能SFUD驱动W25Q64块

#include <rtthread.h>

#include "spi_flash.h"

#include "spi_flash_sfud.h"

#include "drv_soft_spi.h"

#if defined(BSP_USING_SPI_FLASH)

static int rt_hw_spi_flash_init(void)

{

__HAL_RCC_GPIOG_CLK_ENABLE()

rt_soft_spi_device_attach("softspi1", "softspi10", GPIOG, GPIO_PIN_10)

if (RT_NULL == rt_sfud_flash_probe("W25Q64", "softspi10"))

{

return -RT_ERROR

}

return RT_EOK

}

INIT_COMPONENT_EXPO


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

原文地址: http://outofmemory.cn/tougao/12199331.html

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

发表评论

登录后才能评论

评论列表(0条)

保存