树莓派学习-I2c通信

树莓派学习-I2c通信前言由于之前参加了学校的飞兆杯的比赛,题目是循迹小车,由于缺乏对于ldc1314芯片使用知识以及个人的能力原因,项目并没有做出来,但是还是学习了很多东西的。其中以树莓派的I2C通信为最。一、I2C简介I2C(Inter-IntegratedCircuit)总线是由PHILIPS公司开发的两线式串行总线,用于连接微控制器及其外围设备。是微电子通信控制领域广泛采用的一种总线标准。它是同步通信的一种特殊

大家好,又见面了,我是你们的朋友全栈君。

前言

由于之前参加了学校的飞兆杯的比赛,题目是循迹小车,由于缺乏对于ldc1314芯片使用知识以及个人的能力原因,项目并没有做出来,但是还是学习了很多东西的。

其中以树莓派的I2C通信为最。

一、I2C简介

I2C(Inter-Integrated Circuit)总线是由PHILIPS公司开发的两线式串行总线,用于连接微控制器及其外围设备。是微电子通信控制领域广泛采用的一种总线标准。它是同步通信的一种特殊形式,具有接口线少,控制方式简单,器件封装形式小,通信速率较高等优点。 I2C 总线支持任何IC 生产工艺(CMOS、双极型)。通过串行数据(SDA)线和串行时钟 (SCL)线在连接到总线的器件间传递信息。每个器件都有一个唯一的地址识别(无论是微控制器——MCU、LCD 驱动器、存储器或键盘接口),而且都可以作为一个发送器或接收器(由器件的功能决定)。LCD 驱动器只能作为接收器,而存储器则既可以接收又可以发送数据。除了发送器和接收器外,器件在执行数据传输时也可以被看作是主机或从机(见表1)。主机是初始化总线的数据传输并产生允许传输的时钟信号的器件。此时,任何被寻址的器件都被认为是从机。

详见 百度百科-I2C总线

二、配置I2C接口,读取i2c设备的地址

1、可以通过raspi-config配置工具配置使能I2C,或者通过编辑/boot/config.txt文件,加入一下一行内容:

dtparam=i2c1=on
dtparam=i2c_arm=on

2、安装I2C库和工具

$sudo apt-get install i2c-tools

3、当连接上I2C设备后,可以通过以下命令查看

$sudo i2cdetect -y -a 1

树莓派学习-I2c通信

其中2a就是我们的ldc1314模块的i2c通信地址

三、对i2c设备寄存器的读写

1、设备所有数据的读出

sudo i2cdump -y 1 0x2a

-y 代表取消用户交互过程,直接执行命令

1 代表I2C设备号

0x2a 代表I2C设备地址

该命令会到处0x00到0xFF地址范围内的所有数据,如图所示
树莓派学习-I2c通信

2、数据的写入

使用
sudo i2cset -y 1 0x2a 0x1a 0x55
即可向设备地址为0x2a的0x1a寄存器地址写入0x55

-y 代表取消用户交互过程,直接执行命令

1 代表I2C设备号

0x2a 代表I2C设备地址

0x1a 代表寄存器地址

0x55 代表向寄存器写入的数据

3、寄存器数据读出

sudo i2cget -y 1 0x2a 0x1a

即可读出总线地址为0x2a设备的0x1a寄存器地址的数据

-y 代表取消用户交互过程,直接执行命令

1 代表I2C设备号

0x2a 代表I2C设备地址

0x1a 代表寄存器地址

4、对16位数据的读

在基本的命令后加上 w 即可实现

树莓派学习-I2c通信

四、I2C编程

因为使用树莓派我一直使用的语言是Python,故i2c编程只学到了Python

首先需要安装smbus库

sudo apt-get install python-smbus

示例代码如下

import smbus
import time
bus = smbus.SMBus(1)

addr=0x2a
recount_th0=0x1a
# 对8位数据的读写
data=bus.read_byte_data(address,recount_th0) 
print data

bus.write_byte_data(address,recount_th0,0x99)

#对16位数据的读写
data=bus.read_word_data(address,recount_th0) 
print data

bus.write_word_data(address,recount_th0,0x01d6)

注:bus = smbus.SMBus(1) 在树莓派版本2中,I2C设备位于/dev/I2C-1,所以此处的编号为1

python封装SMBUS操作函数具体代码请查看:https://github.com/bivab/smbus-cffi

五、速率相关

1、查看I2C设备的速率

sudo cat /sys/module/i2c_bcm2708/parameters/baudrate 

默认的I2C速度为100KHz,对于多数I2C设备而言100KHz并不算快,但是对于个别的I2C设备而言100KZH还是太快了,那么也可以修改I2C的速率使得通信更稳定。

2、修改速率 ##

进入/etc/modprobe.d 目录,并在该目录下新建一个costom.conf文件,在该文件中插入options i2c_bcm2708 baudrate=32000,32000便为新的I2C速率,最后请重启系统。

cd  /etc/modprobe.d           #进入/etc/modprobe.d 目录  
sudo nano custom.conf         #在该目录新建一个名为custom.conf文件,并插入以下内容  
                              #options i2c_bcm2708 baudrate=32000  
sudo reboot                   #重启系统  

六、参考资料

树莓派入门教程——I2C Tools的安装和使用

树莓派与i2c设备的通信

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

树莓派系列教程11:I2C编程

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/143104.html原文链接:https://javaforall.net

赞 (0)
全栈程序员-站长的头像全栈程序员-站长

相关推荐

  • SpringMVC 拦截器的使用「建议收藏」

    SpringMVC 拦截器的使用「建议收藏」SpringMVC拦截器的使用1.拦截器作用2.单个拦截器3.多个拦截器参考资料:https://spring-mvc.linesh.tw/1.拦截器作用SpringMVC框架中的拦截器用于对处理器进行预处理和后处理的技术。可以定义拦截器链,连接器链就是将拦截器按着顺序结成一条链,在访问被拦截的方法时,拦截器链中的拦截器会按着定义的顺序执行。拦截器和过滤器的功能比较类似,有以下区别:过滤器是Servlet规范的一部分,任何框架都可以使用过滤器技术;拦截器是SpringM

    2022年11月3日
  • linux配置vscode python_vscode 配置 python

    linux配置vscode python_vscode 配置 python1.安装python2.安装vscode3.vscode安装所需插件1)、插件名称:python;这个是vscode提供的python官方插件,提供了python代码的调试,自动补全,代码格式化等功能。选择一个Python解释器选择一个Python解释器,在VSCode中,通过打开命令选项板(Ctrl+Shift+P)选择Python3解释器,开始键入…

    2022年11月3日
  • PHP设计模式-工厂模式[通俗易懂]

    PHP设计模式-工厂模式[通俗易懂]PHP设计模式-工厂模式一、工厂模式概念工厂模式,顾名思义,像工厂的流水线,固定的规格,固定的材料,做固定的事情。工厂模式分为三种:简单工厂、工厂方法、抽象工厂,三种工厂的区别是,抽象工厂由多条产品线,而工厂方法只有一条产品线,是抽象工厂的简化。而工厂方法和简单工厂相对,大家初看起来好像工厂方法增加了许多代码但是实现的功能和简单工厂一样。但本质是,简单工厂并未严格遵循设计模式的开闭原则,当需要增加新产品时也需要修改工厂代码。但是工厂方法则严格遵守开闭原则,模式只负责抽象工厂接口,具体工厂交给客.

    2022年7月25日
  • jedis 集群_iis配置api

    jedis 集群_iis配置api项目中会常用到redis,但JedisCluster的使用api还是比较多,经常可能会记不太清楚,故这里将大部分JedisCluster的api贴出来,供大家参考。一、redis在工作是一个常见的工具,这里对redis和springboot形成集群的使用。(1)引入对应redis集群所需要maven文件<dependency><groupId&g…

    2022年10月14日
  • idea2021年最新永久激活码【在线注册码/序列号/破解码】

    idea2021年最新永久激活码【在线注册码/序列号/破解码】,https://javaforall.net/100143.html。详细ieda激活码不妨到全栈程序员必看教程网一起来了解一下吧!

    2022年3月19日
  • 2021idea最新激活码【注册码】

    2021idea最新激活码【注册码】,https://javaforall.net/100143.html。详细ieda激活码不妨到全栈程序员必看教程网一起来了解一下吧!

    2022年3月19日

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号