如何实现树莓派上iic口的自动打开

如何实现树莓派上iic口的自动打开,第1张

如果和Arduino连接的串口,必须宴漏始终处于打开的状态巧者。如果关闭重新打开,那么,Arduino就会重启,这是Arduino的Bootload里设置的功能。如果你有足够的能力,可以尝试修改你对应的Arduino板子的Bootload,使其不会重启,当然孝祥薯这比较麻烦。当然,你也可以修改你在派上的程序,使其保持对端口的打开后的占用,不要用完了就关闭,这样也可以。不过,看你说是用PHP调用的C程序,估计调用完了串口就会自动关闭,你需要重新设计你的调用了。

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

片,单个PCF8574可扩展8个IO,一个I2C总线最多可挂载8个PCF8574,所以树莓派最多可扩展64个IO。

树莓派扩展功能的开发方法有很多,例如wiringPi和bcm2835 C library都提供I2C

API函数。如果使用python+SMBUS库开发的话,你会发现Linux应用开发原来如此简单。(注意SMBUS和I2C存在区别与联系,在本文中

两者是相等的概念)

2.相关博文

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

【树莓派学习笔记——I2C Tools 学习笔记】

【树莓派学习笔记——I2C PCF8574 BCM2835 Library】使用BCM2835

Library实现本文相同的内容

【树莓派学习笔记——I2C PCF8574 SysFs方式】使用SysFS方式实现本文相同的内容

3.PCF8574使用简述

PCF8574的采用7位I2C地址,7位I2C地址中的低3位从高到低分别为A2

A1和A0,该3位为地址选择位,若地址选择全部接GND,那么PCF8574的I2C从机地址为0x20。图1为PCF8574的基本信息,左侧为芯片

内部结构示意图,其中A2

A1和A0决定从机地址而从机地址直接影响I2C总线控制器,右侧上部为PCF8574引脚图,右侧下部为I2C从机地址组成示意图,从机地址的高4位为

0100,该4位数字固定不变。

图1 PCF8574基本信息

注意I2C 7位从机地址和I2C

读控制字或i2C写控制器存在联系与区别,对于7位从机地址为0x20的PCF8574而言,读控制字为0x41,写控制字为0x40。若使用GPIO通

过软源岁件法模拟I2C时序时,通常把写控制字0x40定义为I2C从机地址告橘,软件模拟时的I2C地址(0x40)和I2C

7位从机地址(0x41)存在区别。

PCF8574内部含有8个准双向IO,对PCF8574进行一次写 *** 作可修改IO口的输出状态,对PCF8574进行一次读 *** 作可获取IO口的输入状态。I2C总线的 *** 作较为复杂,各芯片之间的差异较大,例如BH1750、AT24C04和ADXL345虽然均使用I2C接口,但是细节之处存在差异较大。

图2 PCF8574读写时序

4.代码实现——python

【安装python smbus】

sudo apt-get install python-smbus

新建一个名为pcf8574.py的文件

[python] view plain copy

#!/usr/bin/env python

# -*- coding: utf-8 -*-

import smbus

import time

# 打开 /dev/i2c-1

bus = smbus.SMBus(1)

while True:

for i in range(0,4):

# 向PCF8574写入一个字节

bus.write_byte( 0x20 , (1<<i) )

# 延时100ms

time.sleep(0.1)

【代码详解】

【1】#!/usr/bin/env python

定义python解析脚本的绝对路径。

【2】# -*- coding: utf-8 -*-

py文件为utf-8格式,否则无法写入中文注释。

【3】import smbus

导入smbus模块。

【4】bus = smbus.SMBus(1)

在树莓派版本2中,I2C设备位于I2C-1,所以此处的编号为1

【5】bus.write_byte( 0x20 , (1<<i) )

向PCF8574写入一个字节,注意PCF8574和其他I2C芯片不同,该芯片没有寄存器,发送写控制字之后可直接设置IO口输出状态。

【执行程序】

进入pcf8574.py所在目录,输入以下指令

sudo python pcf8574.py

【运行结果雹友睁】

图3 运行结果

5.参考资料

【python SMBUS GitHub】python封装SMBUS *** 作函数具体代码,值得阅读。

树莓派又称卡片式电脑,外形只有xyk大小,却具有电脑的所有基本功能,这就是Raspberry Pi电脑板,中文译名"树莓派"!这一基金会以提升学校计算机科学及相关学科的教育,让计算机变得有趣为宗旨。

安装树莓派:

1.先将安装好系统的SD卡插入树莓派

2.再将usb接口的键盘和鼠标接上树莓派3.接上HDMI线

4.接上电源线,并打开电源

键盘输入"startx"启动图形界面,到此为止你的树莓派就正常启动。

1.NOOBS (New Out Of Box Software) 是树莓派一个全新的安装系困汪统,允许用户更轻松的在树莓派设备上体验不同的 Linux 系统。该软件安装到一个 4GB 或者更大的 SD 卡,首次启动时提供 *** 作系统的安装选择。所选择的 *** 作系统已经存在卡中,因此 NOOBS 无需联网下载 OS 映像。当前版本包含 Raspbian, Pidora 和两个版本的 XBMC 媒体中戚尺野心软件。一旦选择,NOOBS 将安装高喊所选系统到卡中剩余空间然后重启开始全新安装。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/12277819.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-24
下一篇 2023-05-24

发表评论

登录后才能评论

评论列表(0条)

保存