OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 7202|回复: 1

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

[复制链接]

98

主题

124

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
437
金钱
437
注册时间
2017-2-27
在线时间
53 小时
发表于 2021-2-19 14:54:33 | 显示全部楼层 |阅读模式
总线驱动开发及实现之I2C         
疯壳 出品

  • I2C接口说明

鸿蒙OS中关于i2c接口的定义在源码目录:
        \drivers\hdf\frameworks\include\platform\
\drivers\hdf\frameworks\support\platform\src
下的 i2c_if.h和 i2c_if.c文件中。
1.打开I2C控制器接口
该接口用于获取i2c控制器的句柄,其中返回值为获取到的句柄,其类型在源码目录:
\drivers\hdf\frameworks\include\platform
下面的hdf_platform.h文件中定义如下:
Number为对应i2c的id,这里我们使用i2c2,其id为2。

关闭I2C控制器接口
需要关闭I2C控制器时,调用该接口,传参需要关闭的控制器句柄即可。
I2C数据传输接口
该接口用于传输自定义的I2C数据。msgs 为自定义的消息结构体,其类型在i2c_if.h文件中定义如下:
如上图所示,addr为i2c从机地址,buf为指向需要传送的消息的指针,len为消息的长度,flags在h头文件下定义如下:
大家请根据自己的从机特点进行flags设置,本次课程我们设置flags为0,即写数据操作。


  • 驱动代码

下面我们来看一下本次课程驱动代码以及app代码,主要改动在驱动文件,下述内容为主要改动,后续会将会将文件上传,大家可直接下载替换即可。
本次课程使用I2C2,其中SDA管脚为GPIO6_2,SCL管脚为GPIO6_3。这两个管脚在海思的文档中有如下说明:
关于GPIO初始化部分的代码和HDF框架的代码本次课程不再做介绍。
对于I2C,驱动修改如下:
运行结果如下:
因为我这边没有接从机设备,因此I2C控制器在发送从机设备地址后没有收到应答则报错退出了。
在逻辑分析中抓波也可发现I2C控制器只发送了从机设备地址。

正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

0

主题

14

帖子

0

精华

高级会员

Rank: 4

积分
975
金钱
975
注册时间
2014-11-10
在线时间
106 小时
发表于 2021-8-3 08:51:58 | 显示全部楼层
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2024-11-22 15:24

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表