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

I2C接口说明


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

       \drivers\hdf\frameworks\include\platform\

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

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

1.打开I2C控制器接口

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

该接口用于获取i2c控制器的句柄,其中返回值为获取到的句柄,其类型在源码目录:

\drivers\hdf\frameworks\include\platform

下面的hdf_platform.h文件中定义如下:

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

Number为对应i2c的id,这里我们使用i2c2,其id为2。

关闭I2C控制器接口

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

需要关闭I2C控制器时,调用该接口,传参需要关闭的控制器句柄即可。

I2C数据传输接口

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

该接口用于传输自定义的I2C数据。msgs 为自定义的消息结构体,其类型在i2c_if.h文件中定义如下:

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

如上图所示,addr为i2c从机地址,buf为指向需要传送的消息的指针,len为消息的长度,flags在h头文件下定义如下:

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

大家请根据自己的从机特点进行flags设置,本次课程我们设置flags为0,即写数据操作。

驱动代码


下面我们来看一下本次课程驱动代码以及app代码,主要改动在驱动文件,下述内容为主要改动,后续会将会将文件上传,大家可直接下载替换即可。

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


本次课程使用I2C2,其中SDA管脚为GPIO6_2,SCL管脚为GPIO6_3。这两个管脚在海思的文档中有如下说明:


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

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

对于I2C,驱动修改如下:

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

运行结果如下:

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


因为我这边没有接从机设备,因此I2C控制器在发送从机设备地址后没有收到应答则报错退出了。


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


在逻辑分析中抓波也可发现I2C控制器只发送了从机设备地址。

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

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