疯壳-鸿蒙OS-总线驱动开发及实现之SPI
头像 Tiechui.Wang 2021-03-15 11:11:00    发布
3668 浏览 17 点赞 10 收藏

SPI接口说明

鸿蒙OS中关于spi接口的定义在源码目录:

       \drivers\hdf\frameworks\include\platform\

\drivers\hdf\frameworks\support\platform\src

下的 spi_if.h和spi_if.c文件中。

1.打开SPI设备

疯壳-鸿蒙OS-总线驱动开发及实现之SPI-鸿蒙开发者社区

其中info为指向SPI设备信息的指针,其类型在h头文件中有如下定义:

疯壳-鸿蒙OS-总线驱动开发及实现之SPI-鸿蒙开发者社区

busNum 和 cdNum 分别为SPI设备号和片选号,本次课程中我们使用spi2。

2.关闭SPI设备

需要关闭spi设备时,调用该接口,传参需要关闭的spi设备句柄即可。

3.SPI写数据接口

疯壳-鸿蒙OS-总线驱动开发及实现之SPI-鸿蒙开发者社区

该接口用于实现spi写数据操作,其中buf为指向要写入数据的指针,len为写入数据的长度。

4.SPI读数据接口

该接口用于实现spi读数据操作,其中buf为指向存储读取数据的指针,len为读取的数据的长度。

5.自定义SPI传输

疯壳-鸿蒙OS-总线驱动开发及实现之SPI-鸿蒙开发者社区

msgs为自定义传输消息结构体,count为消息长度,msgs的类型在头文件中有如下描述:

疯壳-鸿蒙OS-总线驱动开发及实现之SPI-鸿蒙开发者社区

wbuf为指向写入数据的指针,rbuf为指向存储读取数据的buf的指针,len为读取和写入数据的长度,读写长度一致,speed为数据传输速度,delayUs为数据传输间隔,csChange指定是否在进行下一次传输前关闭片选。

6.SPI设备配置接口

SpiCfg为当前SPI设备配置信息结构体,在头文件中定义如下:

疯壳-鸿蒙OS-总线驱动开发及实现之SPI-鸿蒙开发者社区

macSpwwdHz为最大SPI通信时钟频率,mode为输入输出通信模式,用预设值时钟极性等信息,transferMode为数据传输模式,在头文件中有定义如下:

疯壳-鸿蒙OS-总线驱动开发及实现之SPI-鸿蒙开发者社区

bitsPerWord用于设置数据传输位宽。

驱动代码

疯壳-鸿蒙OS-总线驱动开发及实现之SPI-鸿蒙开发者社区疯壳-鸿蒙OS-总线驱动开发及实现之SPI-鸿蒙开发者社区


本次使用SPI1,其中MOSI管脚为GPIO1_7,SCLK管脚为GPIO1_5,MISO管脚为GPIO1_6,这三个管脚在海思的文档中有如下说明:

疯壳-鸿蒙OS-总线驱动开发及实现之SPI-鸿蒙开发者社区疯壳-鸿蒙OS-总线驱动开发及实现之SPI-鸿蒙开发者社区疯壳-鸿蒙OS-总线驱动开发及实现之SPI-鸿蒙开发者社区

关于GPIO初始化部分的代码和HDF框架的代码本次课程不再做介绍。

对于SPI,驱动修改如下:

疯壳-鸿蒙OS-总线驱动开发及实现之SPI-鸿蒙开发者社区

运行结果:

疯壳-鸿蒙OS-总线驱动开发及实现之SPI-鸿蒙开发者社区

通过逻辑分析仪抓波。

————————————————
版权声明:本文为CSDN博主「fengkesz」的原创文章

©本站发布的所有内容,包括但不限于文字、图片、音频、视频、图表、标志、标识、广告、商标、商号、域名、软件、程序等,除特别标明外,均来源于网络或用户投稿,版权归原作者或原出处所有。我们致力于保护原作者版权,若涉及版权问题,请及时联系我们进行处理。
分类
其它
地址:北京市朝阳区北三环东路三元桥曙光西里甲1号第三置业A座1508室 商务内容合作QQ:2291221 电话:13391790444或(010)62178877
版权所有:电脑商情信息服务集团 北京赢邦策略咨询有限责任公司
声明:本媒体部分图片、文章来源于网络,版权归原作者所有,我司致力于保护作者版权,如有侵权,请与我司联系删除
京ICP备:2022009079号-2
京公网安备:11010502051901号
ICP证:京B2-20230255