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

charlesc
发布于 2021-3-12 09:28
浏览
1收藏

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设备疯壳-鸿蒙OS-总线驱动开发及实现之SPI-鸿蒙开发者社区

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

 

3.SPI写数据接口

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

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

 

4.SPI读数据接口疯壳-鸿蒙OS-总线驱动开发及实现之SPI-鸿蒙开发者社区

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

 

5.自定义SPI传输

疯壳-鸿蒙OS-总线驱动开发及实现之SPI-鸿蒙开发者社区msgs为自定义传输消息结构体,count为消息长度,msgs的类型在头文件中有如下描述:

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

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

 

6.SPI设备配置接口

 

 

疯壳-鸿蒙OS-总线驱动开发及实现之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」的原创文章

分类
已于2021-3-12 09:28:40修改
1
收藏 1
回复
举报
1条回复
按时间正序
/
按时间倒序
txwtech
txwtech

请问是在hi3861板子编译的吗?

回复
2021-11-8 19:39:33
回复
    相关推荐