Lines Matching refs:SPI
1 # SPI chapter
7 SPI即串行外设接口(Serial Peripheral Interface),是一种高速的,全双工,同步的通信总线。SPI是由Motorola公司开发,用于在主设备和从设备之间进行通信。
11 在HDF框架中,SPI的接口适配模式采用独立服务模式(如图1所示),在这种模式下,每一个设备对象会独立发布一个设备服务来处理外部访问,设备管理器收到API的访问请求之后,通过提取该请求的参数,达到调…
19 **图 1** SPI独立服务模式结构图<a name="fig1"></a>
21 
23 SPI模块各分层作用:
25 - 接口层提供打开SPI设备、SPI写数据、SPI读数据、SPI传输、配置SPI设备属性、获取SPI设备属性、关闭SPI设备的接口。
27 - 核心层主要提供SPI控制器的添加、移除以及管理的能力,通过钩子函数与适配层交互。
31 SPI以主从方式工作,通常有一个主设备和一个或者多个从设备。主设备和从设备之间一般用4根线相连,它们分别是:
43 **图 2** SPI主从设备连接示意图<a name="fig2"></a>
45 
47 - SPI通信通常由主设备发起,通过以下步骤完成一次通信:
55 - 根据SCLK时钟信号的CPOL(Clock Polarity,时钟极性)和CPHA(Clock Phase,时钟相位)的不同组合,SPI有以下四种工作模式:
69 SPI通常用于与闪存、实时时钟、传感器以及模数/数模转换器等支持SPI协议的设备进行通信。当驱动开发者需要将SPI设备适配到OpenHarmony时,需要进行SPI驱动适配,下文将介绍如何进行SPI…
73 为了保证上层在调用SPI接口时能够正确的操作硬件,核心层在//drivers/hdf_core/framework/support/platform/include/spi/spi_core.h中定…
91 | Transfer | cntlr:结构体指针,核心层SPI控制器。<br/>msg:结构体指针,Spi消息。<br/>count:uint32_t类型,消息个数。 | HDF_STATUS相关状…
92 | SetCfg | cntlr:结构体指针,核心层SPI控制器。<br/>cfg:结构体指针,Spi属性。 | HDF_STATUS相关状态 | 设置控制器属性 |
93 | GetCfg | cntlr:结构体指针,核心层SPI控制器。<br/>cfg:结构体指针,Spi属性。 | HDF_STATUS相关状态 | 获取控制器属性 |
94 | Open | cntlr:结构体指针,核心层SPI控制器。 | HDF_STATUS相关状态 | 打开SPI |
95 | Close | cntlr:结构体指针,核心层SPI控制器。 | HDF_STATUS相关状态 | 关闭SPI |
100 SPI模块适配包含以下四个步骤:
114 3. 实例化SPI控制器对象
125 【可选】针对新增驱动程序,建议验证驱动基本功能,例如SPI控制状态,中断响应情况等。
137 SPI驱动入口参考:
143 .Bind = HdfSpiDeviceBind, // 挂接SPI模块Bind实例化
144 .Init = HdfSpiDeviceInit, // 挂接SPI模块Init实例化
145 .Release = HdfSpiDeviceRelease, // 挂接SPI模块Release实例化
152 …完成驱动入口注册之后,需要在device_info.hcs文件中添加deviceNode描述。deviceNode信息与驱动入口注册相关。 本例只有一个SPI控制器,如有多个器件信息,则需要在de…
160 | policy | 驱动服务发布的策略,SPI控制器具体配置为2,表示驱动对内核态和用户态都发布服务 |
161 | priority | 驱动启动优先级(0-200),值越大优先级越低。SPI控制器具体配置为60 |
162 | permission | 驱动创建设备节点权限,SPI控制器具体配置为0664 |
163 | moduleName | 驱动名称,SPI控制器固定为HDF_PLATFORM_SPI |
164 | serviceName | 驱动对外发布服务的名称,SPI控制器服务名设置为HDF_PLATFORM_SPI_X,X代表SPI控制器编号|
165 | deviceMatchAttr | 驱动私有数据匹配的关键字,SPI控制器设置为hisilicon_hi35xx_spi_X,X代表SPI控制器编号 |
176 device_spi :: device { // 为每一个SPI控制器配置一个HDF设备节点
190 …iceName = "HDF_PLATFORM_SPI_1"; // 驱动对外发布服务的名称,必须唯一,必须要按照HDF_PLATFORM_SPI_1的格式,X为SPI控制器编号。
193 ...... // 如果存在多个SPI设备时【必须】添加节点,否则不用
206 spi_config { // 每一个SPI控制器配置私有数据
214 mode = 19; // SPI 数据的输入输出模式
243 ...... // 如果存在多个SPI设备时【必须】添加节点,否则不用
257 3. 实例化SPI控制器对象
461 【可选】针对新增驱动程序,建议验证驱动基本功能,例如挂载后的信息反馈,SPI获取设备属性、SPI设置设备属性、SPI传输等。