平台:树莓派 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手册,很多问题都能解决。网上搜索的东西太乱太杂,作为辅助手段还行。
如何预防区块链中的日蚀攻击和DDos攻击
8K超清的5G电视推出对于连接器制造厂商有何影响
工业机器人主要涉及到哪些技术
Razer雷蛇版机箱评测 外部充满了雷蛇产品的气息之余用料和做工也十分考究
小米6Plus最新消息:小米6十秒售罄,小米6Plus被取消,下半年只剩小米Note3
Linux控制I2C/SMBus设备
虹科光纤传感器应用领域介绍
地平线推出征程和旭日两款嵌入式人工智能视觉芯片
数据分析的80%的时间都用在了哪里?
Wi-Fi6+与Wi-Fi6E两者关系及区别分析
光纤熔接机的基本工作原理
石墨类碳负极材料的分类及其优缺点
海尔智家承办吸油烟机国家标准会议
UIoT RT-Thread软件包实现了IoT设备与UCloud UIoT Core物联网通信云平台连接
江西旭昇电子有限公司PCB项目正紧张推进中
iOS10.3最新消息汇总:iOS10.3.3正式版值得更新吗?修复bug提高安全性为主,修复稳定性更高
海思芯片方案介绍
一款实用的水产养殖物联网应用方案
学会分析ffmpeg中YUYV转RGB ARM的使用流程
小型激光切割机在创意雨伞架中的应用