smbus使用 树莓派_Linux控制I2C/SMBus设备

本文介绍了在树莓派上使用SMBus控制I2C设备,如MPU6050。通过开启I2C功能、设置设备地址、读写操作,详细讲解了Linux环境下I2C应用开发。强调了参考Linux官方Documentation和man手册的重要性。
摘要由CSDN通过智能技术生成

平台:树莓派 bcm2835  Raspberry Pi 3 Model B Rev 1.2

I2C是Philips开发的一种两线通信协议,常用于一些对速度要求不高的小型器件上。SMBus是系统管理总线,基于I2C协议,大部分情况下二者兼容。

这次使用mpu6050作为I2C外设,学习Linux下I2C的应用开发。

树莓派默认I2C可能没有打开,需要配置重启,具体方法这里不赘述。最终会在/dev下生成i2c-1设备。

1、需要的头文件

2、打开I2C设备

打开设备文件与打开普通文件没有区别,使用open函数以读写的方式打开,返回值是该设备文件的文件描述符。

3、设置从设备的地址

每个I2C设备都有一个设备地址,使用ioctl函数设置这个地址。

4、读写设备

到这里就可以读写设备了,Linux提供两种方式。

a.使用write和read函数

b.使用smbus提供的函数

第一步的头文件就是给这里提供支持的。使用这种方式需要安装额外的库,网上说需要安装libi2c-dev,我没验证,请知道的指点一二。我这里安装了i2c-tools工具,并且下载了i2c-tools的源码并编译安装过,所以库和头文件都有了,现在也搞不清是哪一步操作安装的了。

Linux官方文档是推荐这种方式的,smbus提供了下面几个函数。

5、编译

使用smbus编译需要额外的参数-Llib和-li2c,否则提示找不到smbus提供的函数。我用了makefile方便编译,当然使用gcc直接编也可以。

其他:

i2c相关的头文件在/usr/include/linux下

smbus相关的头文件在/usr/local/include/i2c下

tips:学习如何使用Linux最好的资料应该是Documentation,至少从spi和i2c的应用开发角度看是这样,再结合man手册,很多问题都能解决。网上搜索的东西太乱太杂,作为辅助手段还行。

参考资料:Linux内核源码Documentation/i2c/dev-interface

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值