平台:树莓派 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

smbus使用 树莓派_Linux控制I2C/SMBus设备相关推荐

  1. iic获取salve设备地址_Linux下使用IIC总线读写EEPROM(读写i2c从设备通用程序)

    Linux 下使用IIC总线 读写 EEPROM by 韩大卫 @吉林师范大学 handawei@jusontech.com 转载请务必表明出处 ******************* ******* ...

  2. linux i2c smbus驱动

    目录 目录 数据收发流程 驱动层 收发接口 驱动层注册 smbus控制器 i2c控制器 协议接口使用 总体流程 数据收发关键数据结构 使用示例--eeprom的读写 使用示例--smbus的读写接口 ...

  3. 树莓派学习笔记——I2C设备载入和速率设置

    1.载入设备 方法1--临时载入设备 sudo modprobe -r i2c_bcm2708 #卸载设备 -r代表removesudo modprobe i2c_bcm2708 #重新载入设备 方法 ...

  4. python舵机控制程序_树莓派PWM控制舵机的两种方式

    PWM控制舵机简介 通常情况下,伺服电机(舵机)是由一个标准的直流系统和一个内部反馈控制装置(一个减速齿轮和电位计)来组成的.伺服电机(舵机)的主要作用是将齿轮轴旋转到一个预定义的方向上.伺服电机(舵 ...

  5. 同时使用两片I2C同型号设备时地址怎样设置 (如何更改器件地址)

    同时使用两片I2C同型号设备时地址怎样设置 有时候  可能 需要同时使用 多个同型号i2C的器件,这就需要 我们 更改 器件的物理地址. 同时使用两片pcf8591时地址怎样设置,也就是如何更改 器件 ...

  6. 树莓派学习笔记 ——I2C PCF8574 SysFs方式

    1.前言 树莓派的GPIO端口数量有限,可通过IO扩展芯片增加GPIO的数量,使得树莓派可以适应更多的应用.PCF8574为一款通过I2C总线扩展IO的芯片,单个PCF8574可扩展8个IO,一个I2 ...

  7. 树莓派cm3+的i2c使用总结

    本文主要介绍了树莓派cm3+的i2c的使用配置方法,包括芯片平台自带的两个i2c外设soc的使用,i2c0总线上面挂接多个i2c设备的设备地址探测以及配置软件模拟i2c的方法. 根据树莓派cm3+的d ...

  8. 树莓派3B控制28步进电机

    由于项目需要楼主需要利用步进电机来实现一个开关拉门的动作.由于,控制精度要求不高,所以只需要树莓派做控制器即可.网上树莓派控制步进电机的教程大多局限于如图所示的小功率步进电机,不符合项目需求.所以,楼 ...

  9. python语音控制手机_python 树莓派语音控制普通台灯教程-Python 实用宝典

    阅读这篇文章前,这两篇文章可能对你会有所帮助: 利用智能音箱语音控制电脑开关机 (必读,否则你可能不知道我在说什么) 先看看效果: 完成这项有趣的实验,你所需要的材料有: 1.电烙铁 2.一个8050 ...

最新文章

  1. 服务器创建和附加虚拟磁盘,Windows 7 虚拟硬盘中的新增功能
  2. java解数独_java解数独
  3. 英文版Windows XP操作系统的中文支持设置
  4. python程序间通信,python 实现 socket 进程间通信
  5. 诡异的防火墙故障,能PING通,但访问ORACLE不稳定
  6. 面向.NET开发人员的Dapr——参考应用程序
  7. 为什么MySQL将会是一个更好的NoSQL
  8. 这是小学数学的26个知识点,小孩hold不住,父母也易犯错
  9. 查看sqlserver 2008中性能低下的语句
  10. html特殊符号sm,以前搜集的一些资料—html中的特殊字符(2)
  11. 表或视图不存在 Hibernate Oracle
  12. HashMap为什么是线程不安全的
  13. 单片机类毕业设计题目汇总
  14. 动漫测试题软件,Flash动画考试试卷
  15. 少年:Scala 学一下
  16. 两个网卡做映射linux,linux多网卡的路由模式和桥接模式设置方法
  17. 那些烦人的VC++库、win10中的VC++库(全部)
  18. endnote导入bib
  19. 2018前端走向全栈,Nodejs快速入门视频教程
  20. 显著性检测——GR模型

热门文章

  1. 本人原创,如何应用firebug突破新浪ishare下载限制
  2. 关于IIS不能浏览ASP网页 和不能浏览后台(转)
  3. 中文 哈工大_第六届中文语法错误诊断大赛,哈工大讯飞联合实验室再获多项冠军...
  4. 5.22青海云南同震
  5. Audition生成扫频信号(四十)
  6. Ubuntu18.04之星际译王及辞典
  7. EasyConnect for Linux
  8. Webrtc 开源代码的简单介绍
  9. Android USB(type-c)耳机(十)
  10. Android7.1开机启动wifi adb