树莓派学习笔记——Linux I2C驱动说明
1.前言
通常情况下,I2C设备由内核驱动控制,但是某些情况下I2C设备也可由用户空间控制。如果在用户空间控制I2C设备,需要访问/dev目录中所提供的接口,在使用I2C设备之前必须要载入i2c-dev设备。
2.C语言的例子
int file;int adapter_nr = 1; /* I2C适配器编号 */char filename[20];snprintf(filename, 19, "/dev/i2c-%d", adapter_nr);file = open(filename, O_RDWR);if (file < 0) {/* 打开失败 */exit(1);}
int addr = 0x40; /* I2C 从机地址 */if (ioctl(file, I2C_SLAVE, addr) < 0) {/* 打开失败 */exit(1);}
__u8 register = 0x10; /* I2C从机 寄存器地址 */__s32 res;char buf[10];/* 使用SMBus函数 */res = i2c_smbus_read_word_data(file, register);if (res < 0) {/* 错误 */} else {/* 成功读取到一个字 */}/* 使用I2C Write, 等价于i2c_smbus_write_word_data(file, register, 0x6543) */buf[0] = register;buf[1] = 0x43;buf[2] = 0x65;if (write(file, buf, 3) ! =3) {/* 错误*/}/* 使用I2C Read, 等价于 i2c_smbus_read_byte(file) */if (read(file, buf, 1) != 1) {/* 错误 */} else {/* buf[0]为读取到的字节 */}
3.SMBUS详细说明
标记符
|
长度
|
说明
|
S
|
1 bit
|
I2C启动
|
P
|
1 bit
|
I2C停止
|
Rd/Wr
|
1 bit
|
控制字中的读写标志位,读操作为1,写操作为0
|
A, NA
|
1 bit
|
应答标志
|
Addr
|
7 bits
|
7位I2C地址
|
Data
|
8 bit
|
字节数据 |
Comm
|
8 bits
|
命令字节,可理解为I2C设备寄存器地址
|
[..]
|
N char
|
I2C设备返回的数据
|
4.参考资料
树莓派学习笔记——Linux I2C驱动说明相关推荐
- 树莓派学习笔记——wiringPi I2C设备使用详解
1.前言 最近认真学习了树莓派,从浅到深认真分析了wiringPi实现代码,借助树莓派学习linux收获颇丰.深入学习linux一段时间后发现它非常有魅力,一个简单的IO口输出操作尽有那么多的&quo ...
- 树莓派学习笔记——I2C设备载入和速率设置
1.载入设备 方法1--临时载入设备 sudo modprobe -r i2c_bcm2708 #卸载设备 -r代表removesudo modprobe i2c_bcm2708 #重新载入设备 方法 ...
- linux I2C 驱动
原文地址: http://hello2mao.github.io/2015/12/02/Linux_I2C_driver.html 目录 一.LinuxI2C驱动--概述 1.1 写在前面 1.2 I ...
- 树莓派学习笔记 ——I2C PCF8574 SysFs方式
1.前言 树莓派的GPIO端口数量有限,可通过IO扩展芯片增加GPIO的数量,使得树莓派可以适应更多的应用.PCF8574为一款通过I2C总线扩展IO的芯片,单个PCF8574可扩展8个IO,一个I2 ...
- 【树莓派学习笔记】树莓派4B上运行uboot并从网络启动linux内核(上)
[树莓派学习笔记]树莓派4B上运行uboot并从网络启动linux内核(上) 文章目录 [树莓派学习笔记]树莓派4B上运行uboot并从网络启动linux内核(上) 前言 1. 硬件需求与软件版本汇总 ...
- 《linux设备驱动开发详解》笔记——15 linux i2c驱动
<linux设备驱动开发详解>笔记--15 linux i2c驱动 15.1 总体结构 如下图,i2c驱动分为如下几个重要模块 核心层core,完成i2c总线.设备.驱动模型,对用户提供s ...
- 树莓派可以移动linux,树莓派学习笔记 篇三:树莓派4B 与移动存储设备的那些事儿...
树莓派学习笔记 篇三:树莓派4B 与移动存储设备的那些事儿 2019-11-24 23:03:55 39点赞 286收藏 14评论 本文是「树莓派学习笔记」系列的第三篇,将学习下 Linux 系统分区 ...
- 树莓派学习笔记——GPIO功能学习
0.前言 树莓派现在越来越火,网上树莓派的资料也越来越多.树莓派源自英国,国外嵌入式开源领域具有良好的分享精神,树莓派各种集成库也层出不穷,下面推荐几个. [ python GPIO ] [开发语言] ...
- 树莓派学习笔记——Wifi AP热点模式 使用RT5370
0.前言 本文详细说明为树莓派增加Wifi AP热点功能的具体步骤.配置完成之后,树莓派将增加一个Wifi热点功能,使用笔记本或手机便可连接树莓派,树莓派具有了AP热点功能,可更一步扩展树莓派相关的W ...
最新文章
- Jeff Doyle
- java keytool生成证书_使用JDK自带的工具keytool生成证书
- linux oracle手动启动两个实例
- cocos编译java时改变使用的javac的版本
- 验证手机号码归属地_excel函数爬取网页手机号码归属地,1.1%的人还不会!
- Auto CAD 2020 2019 2018 2017 2016 2015 2014 2013 2012 2011 2010 全版本 附带安装教程+入门到精通视频教程
- java获取文本文件的编码格式
- 数学建模之传染病SIR模型(新冠真实数据)
- 对多频外差的改进-校正伽马误差
- 类型多样的终结者游戏成套模型素材,速来收藏
- Threejs围墙动画
- Unity3D灯光详解
- STM32L051 低功耗模式和踩坑随笔(自用)
- Matlab实现二维Goldstein分支切割相位展开算法
- 平均数,中位数,众数这三个概念的区别和联系分别是什么?
- 通过图新地球将GPS信息写入照片
- Qt开源版 vs 商业版
- TI CC1101学习笔记:工作原理简单入门
- 盗号者:我就想欺负你们这些不懂盗号原理的小白
- html5七夕情人节送花动画告白特效