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里边写下来执行就行了代码如下“

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

importwiringpi2 as wpi

ds=wpi.wiringPiI2CSetup(0x68)whileTrue:

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进制输出:

importwiringpi2 as wpidefb2s(bcd):return (bcd>>4)*10+(bcd&0xf) #高4位*10加上低四位

ds=wpi.wiringPiI2CSetup(0x68)whileTrue:

sec=wpi.wiringPiI2CReadReg8(ds,0)print(b2s(sec),end=‘ ‘,flush=True)

wpi.delay(1000)

呼呼终于正常了。

原文:http://www.cnblogs.com/yafengabc/p/5107768.html

树莓派python gpio 模仿iic_树莓派高级GPIO库,wiringpi2 for python使用笔记(五)i2c读取测试...相关推荐

  1. 树莓派python gpio 模仿iic_树莓派-用GPIO虚拟I2C

    前言: 非常不幸,树莓派没用多久,I2C接口无法detect. 抱着试一试的心理,到群里问了问,结果被人喷曰:"现在钱多人傻的人真多,什么都不懂,还玩树莓派". 我心想,难道树莓派 ...

  2. python和verilog对接_用这个库居然可以使用Python进行FPGA逻辑开发

    未经私信同意禁止转载! 不好意思,又标题党了,为了骗阅读量没办法... 前言 今天为大家介绍一下python的MyHDL 库.MyHDL项目的目标是通过python语言的优雅和简洁性来增强硬件设计者的 ...

  3. python编程常用类型_Python 高级编程系列__03:python 中常见的内置类型

    python 中,对象有三个特征:身份.特征.值. 身份:可以理解为对象在内存中的地址.可以用 id 来查看对象的地址. >>> a=3 >>> id(a) 432 ...

  4. python如何封装成可调用的库_在python中如何以异步的方式调用第三方库提供的同步API...

    在关于asyncio的基本用法中提到,asyncio并不是多线程.在协程中调用同步(阻塞函数),都占用同一线程的CPU时间,即当前线程会被阻塞(即协程只会在等待一个协程时可能出让CPU,如果是普通函数 ...

  5. python视频处理教程_Python视频编辑库:MoviePy|python爬虫|python入门|python教程

    https://www.xin3721.com/eschool/pythonxin3721/ MoviePy MoviePy是一个关于视频编辑的python库,主要包括:剪辑,嵌入拼接,标题插入,视频 ...

  6. python难学吗-我没有基础,能否学会Python?Python难吗?

    原标题:我没有基础,能否学会Python?Python难吗? 我没学过编程,能否学会Python? 肯定的回答您:完全能学会 其实,很多个程序员都是从不会到会,每种知识也是从基础到复杂,大家都是从零基 ...

  7. Python第一天:你必须要知道的Python擅长领域以及各种重点学习框架(包含Python在世界上...

    [toc] 今天开始将会发布系列型的Python学习, 今天讲述的框架相对来说比较多,只能一一例举出来, 无法进行准确的 Python5大擅长领域 很多学Python的小伙伴, 转行, 或者兴趣还有就 ...

  8. Python第一天:你必须要知道的Python擅长领域以及各种重点学习框架(包含Python在世界上的应用)

    文章目录 Python5大擅长领域 WEB开发 网络编程 科学运算 GUI图形开发 运维自动化 Python在世界上的知名应用 国外 谷歌 CIA NASA YouTube Dropbox Insta ...

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

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

最新文章

  1. 瑞尔森大学的计算机科学专业,瑞尔森大学有哪些专业处于世界顶尖水平?
  2. plsql误删除数据,提交事务后如何找回?
  3. 太赞!639页《深度学习:Deep Learning》硬核课程PPT下载
  4. Difference Between HashMap and IdentityHashMap--转
  5. cd返回上一 git_PHP项目中应用CI/CD的碎碎恋!
  6. [Android]Space控件的应用场景
  7. c语言删增,C语言中初始、增加和删除进程信号的操作方法简介
  8. 小腿训练三部曲(一)
  9. 异步asynctask
  10. spring+springMvc+mybatis 调用oracle 存储过程
  11. Could not find result map
  12. Java关于日志,及日志的error和warn的选择
  13. float及float浮动坍塌问题
  14. 什么是《现代 JavaScript 教程》?
  15. CSS一篇文章搞懂系列6:超全的字体篇与背景设置内容,花里胡哨起来
  16. mysql之第n高的薪水
  17. IDEA如何设置热启动
  18. 使用JS解析JSON数组
  19. LCN分布式事务学习0-分布式事务理论基础
  20. 阻塞、非阻塞,同步、异步

热门文章

  1. Python3 openpyxl库
  2. 中国连接系统市场趋势报告、技术动态创新及市场预测
  3. 电力电容器行业调研报告 - 市场现状分析与发展前景预测(2021-2027年)
  4. 把斯坦福大学土地租出去?特曼坦言:目的就是赚钱
  5. 机器人也开始怕疼了?科学家开发无需人工干预即可自愈的机器人
  6. CSDN 发布开源代码托管平台 GitCode
  7. 拼多多公布新iPhone SE补贴后价格:2899元起;BOSS直聘回应“App崩了”;Chrome 新测试版发布|极客头条...
  8. 腾讯位置服务+微信小程序,一文告诉你程序员为什么不会坐过站!
  9. 多种方式创建 Entity Framework Core 上下文
  10. PHP 是生还是死?