在全志H616核桃派开发板上配置I2C引脚并读取温度数据

配置引脚

找到板子上的i2c引脚

为了方便查找,我们加入了一个显示功能引脚位置的功能,运行以下命令,查看板子的40pin引脚上有几个可用i2c

gpio pin i2c

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

启用i2c

我们使用set-device指令来使能/关闭指定设备的底层驱动,使能后,引脚就会由gpio模式切换为对应的引脚复用功能。(配置后要重启才能生效)

首先查看各设备的状态

set-device status

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

运行指令启用i2c1,注意要重启后才能生效

sudo set-device enable i2c1

重启后查看引脚状态,可以看到3和5都处于alt5了 外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

并且存在/dev/i2c-1这个文件,因为后续我们需要通过操作这个文件来控制i2c通讯

i2c读写程序

linux下一切皆是文件。而i2c1也被抽象为/dev/i2c-1这个文件。通过open打开它,用ioctl触发读写,close关闭文件。

1. 打开文件

linux下一切皆是文件,先使用open函数打开我们要操作的设备对应文件,获取文件描述符。

需要这些头文件

#include<sys/types.h>
#include<sys/stat.h>
#include<fcntl.h>
#include<unistd.h>

open设备节点

int fd =open("/dev/i2c-1", O_RDWR);
if(fd <0)
{
   
   
perror("Fail to Open\n");
return-1;
}

2. i2c_msg

linux下操作i2c不是使用write和read函数,而是使用一个i2c_msg结构体来配置从i2c从起始到停止之间要做的内容。

  • addr: 目标地址
  • flags: 读还是写
  • buf : buf的地址,根据flags是读还是写,会在地址帧发送后,将其内容发送出去,或是读取总线内容存放进来。
  • len : buf的大小

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

3. 向i2c总线写

从德州仪器那下载的i2c时序图↓ 外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

加入我现在想往地址是0x3c的设备上,把寄存器0x01赋值为0x55,那msg结构体的设置就该如下。addrflags共同决定第一帧地址帧的内容。因为flags是写,所以在地址帧发送完后,会将buf的内容依次发送出去。

首先,需要这些头文件

#include<sys/ioctl.h>
#include<linux/i2c.h>
#include
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值