wiringpi2显然也把i2c驱动带给了Python,手头上正巧有一个DS3231的模块,上边带了一个DS3231 RTC(实时时钟),与一片24C32,两个芯片均为iic总线设备,与树莓派接线如下:

也就是VCC GND SDA SCL四个脚分别接到树莓派的1(3.3v)、9(0v)、3(SDA.1)、5(SCL.1)上,因为树莓派的I2C接口默认是关闭的,需要先编辑一下/boot/config.txt,去掉 device_tree_param=i2c_arm=on上的注释(ArchlinuxARM RasperryPi2),然后重启(注:Raspbian可以用raspi-config打开)

然后重启,重启完成后,运行

modprobe i2c-dev

若想这个模块自动装载,请把它写到   /etc/modules-load.d/raspberrypi.conf

安装i2c-tools,Archlinux下为:

pacman –S i2c-tools

安装后,运行i2cdetect –y 1结果如下:

嗯,发现了57,68两个设备,哪个是DS3231,哪个又是24C32呢,我们把里边的数据dump出来看看:

可以看到0x57设备里边是空的,应该就是24C32了,0x68里边读出来20个字节,就是DS3231了。

我先解释下这几个命令:

i2cdetect顾名思义就是搜索i2c总线的设备,树莓派有2条i2c总线,咱们接的SDA.1,SCL.1,当然就是搜索1这条总线了(另外一条是SDA.0 SCL.0)

-y参数没啥意义,就是自己帮你按下y(yes).

i2cdump也很容易理解,就是dump出指定总线,指定设备的数据这里是1总线0x57 0x68两个设备。-y参数跟上个命令是一样的。

这样,我们的i2c设备就都通讯上了,下边就是用wiringpi2库读写之。

wringpi中操作i2c设备的函数主要有一下几个:

wiringPiI2CSetup() #这个函数的作用是初始化i2c设备,并返回一个设备对象(句柄),接下来,就是使用

wiringPiI2CRead()

wiringPiI2CReadReg16()  

wiringPiI2CReadReg8() 

wiringPiI2CWrite()

wiringPiI2CWriteReg16()

wiringPiI2CWriteReg8()

等函数来操作I2C总线设备了。

经过查阅DS3231的手册,DS3231的第一个寄存器值,读出的是秒,我们就读一下这个地址,代码比较简单,就直接在python shell里边写下来执行就行了代码如下“

可以看到,我们读出来了秒,我们把程序写进文件,一秒钟读一次:

import wiringpi2 as wpi

ds=wpi.wiringPiI2CSetup(0x68)
while True:
sec=wpi.wiringPiI2CReadReg8(ds,0)
print(sec,end=' ',flush=True)
wpi.delay(1000)

结果……

原来,这个RTC时钟读出来的是BCD码,比如9以后就是16,16的二进制为0001(1) 0000(0),4位一组,就是10,我编写了个小函数,把BCD码转换成10进制输出:

import wiringpi2 as wpi

def b2s(bcd):
return (bcd>>4)*10+(bcd&0xf) #高4位*10加上低四位 ds=wpi.wiringPiI2CSetup(0x68)
while True:
sec=wpi.wiringPiI2CReadReg8(ds,0)
print(b2s(sec),end=' ',flush=True)
wpi.delay(1000)

呼呼终于正常了。

树莓派高级GPIO库,wiringpi2 for python使用笔记(五)i2c读取测试的更多相关文章

  1. 树莓派高级GPIO库,wiringpi2 for python使用笔记(一)安装

    网上的教程,一般Python用RPi.GPIO来控制树莓派的GPIO,而C/C++一般用wringpi库来操作GPIO,RPi.GPIO过于简单,很多高级功能不支持,比如i2c/SPI库等,也缺乏高精 ...

  2. 树莓派高级GPIO库,wiringpi2 for python使用笔记(三)GPIO操作

    GPIO库的核心功能,当然就是操作GPIO了,GPIO就是"通用输入/输出"接口,比如点亮一个LED.继电器等,或者通过iic spi 1-wire等协议,读取.写入数据,这都是G ...

  3. 树莓派高级GPIO库,wiringpi2 for python使用笔记(四)实战DHT11解码

    DHT11是一款有已校准数字信号输出的温湿度传感器. 精度湿度+-5%RH, 温度+-2℃,量程湿度20-90%RH, 温度0~50℃. 我买的封装好的模块,上边自带了上拉电阻,直接查到树莓派上即可灰 ...

  4. 树莓派高级GPIO库,wiringpi2 for python使用笔记(二)高精度计时、延时函数

    学过单片机的同学应该清楚,我们在编写传感器驱动时,需要用到高精度的定时器.延时等功能,wiringpi提供了一组函数来实现这些功能,这些函数分别是: micros() #返回当前的微秒数,这个数在调用 ...

  5. Python课程笔记 (五)

    今天主要学习图形用户界面,更多的还是要我们自己去实际操作,课仿佛上了一半就完了,分享一下课程(这里在SixthClass)的源码: https://gitee.com/wang_ming_er/pyt ...

  6. [Python学习笔记]文件的读取写入

    文件与文件路径 路径合成 os.path.join() 在Windows上,路径中以倒斜杠作为文件夹之间的分隔符,Linux或OS X中则是正斜杠.如果想要程序正确运行于所有操作系统上,就必须要处理这 ...

  7. PYTHON 爬虫笔记五:BeautifulSoup库基础用法

    知识点一:BeautifulSoup库详解及其基本使用方法 什么是BeautifulSoup 灵活又方便的网页解析库,处理高效,支持多种解析器.利用它不用编写正则表达式即可方便实现网页信息的提取库. ...

  8. python学习笔记五 模块上(基础篇)

    模块学习 模块,用一砣代码实现了某个功能的代码集合. 类似于函数式编程和面向过程编程,函数式编程则完成一个功能,其他代码用来调用即可,提供了代码的重用性和代码间的耦合.而对于一个复杂的功能来,可能需要 ...

  9. Python学习笔记(五)函数和代码复用

    函数能提高应用的模块性,和代码的重复利用率.在很多高级语言中,都可以使用函数实现多种功能.在之前的学习中,相信你已经知道Python提供了许多内建函数,比如print().同样,你也可以自己创建函数, ...

随机推荐

  1. nade.js(一)进程管理

    简介 process是一个全局内置对象,可以在代码中的任何位置访问此对象,这个对象代表我们的node.js代码宿主的操作系统进程对象. 使用process对象可以截获进程的异常.退出等事件,也可以获取 ...

  2. centos防火墙端口配置

    增加防火墙配置,允许8080端口: # vi /etc/sysconfig/iptables 在允许ssh的下面增加一条: -A INPUT -m state --state NEW -m tcp - ...

  3. webview的配置

    WebSettings的常用方法介绍 WebSettings 通过webview获得WebSettings 调用WebSettings 的方法,配置webview WebSettings webSet ...

  4. Spring-----Spring整合Struts2实例

    转载自:http://blog.csdn.net/hekewangzi/article/details/51713058

  5. C#获得命令提示符输出

    原文:http://blog.csdn.net/abrahu/article/details/6611504 C#获得命令提示符输出 分类: c#应用程序2011-07-16 23:34 600人阅读 ...

  6. [STL源码剖析]RB-tree的插入操作

    RB-tree的性质 对于RB-tree,首先做一个了解,先看一张维基百科的RB-tree: 再看RB-tree的性质: 性质1. 节点是红色或黑色. 性质2. 根是黑色,所有叶子都是黑色(叶子节点指 ...

  7. Silverlight并行下载与串行下载

    思路清晰后仅仅只需百来行代码便可轻松编写出一套完整的资源动态下载组件- SerialDownloader和ParallelDownloader,它们共用一个完成资源表,且串行下载集成了优先机制(Dow ...

  8. RedMine 版本管理工具

    一.介绍: Redmine 是一个开源的.基于Web的项目管理和缺陷跟踪工具.它用日历和甘特图辅助项目及进度可视化显示.同时它又支持多项目管理.Redmine是一个自由开放 源码软件解决方案,它提供集 ...

  9. 解密电子书之四:MCU(freescale)

    谈完国产的君正,让我们再看看呛了君正财路的freescale iMX51. 这是freescale近期的主打产品,用的是ARM Cortex A8架构,主频在消费电子领域最高可达800MHz,在工业领 ...

  10. 使用百度语音识别REST API,做全平台语音识别

    百度语音开发介绍文档: http://yuyin.baidu.com/docs/asr# 使用语音识别,需要在百度申请一个应用,然后拿到API Key和Secret Key,然后才可以使用语音识别 p ...