中职扩展资源包资料:树莓派系列教程11:I2C编程_第1页
中职扩展资源包资料:树莓派系列教程11:I2C编程_第2页
中职扩展资源包资料:树莓派系列教程11:I2C编程_第3页
已阅读5页,还剩10页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、例程是通过i2c控制pcf8574 10,使Pioneer 600 扩展板的LED2闪烁bcm283501 #in elude <bcm2835.h>0203 int main (i nt argc, char *argv)04 05 char buf1;0607if (!bcm2835_i nit()return 1;08 bcm2835_i2c_beg in();09 bcm2835_i2c_setSlaveAddress(0x20);i2c address10 bcm2835_i2c_set_baudrate(10000);1M baudrate111213141516171

2、819202122while(1)bufO = OxEF; LED ON bcm2835_i2c_write(buf,1);bcm2835_delay(500);buf0 = 0xFF;LED OFF bcm2835_i2c_write(buf,1) bcm2835_delay(500);bcm2835_i2c_e nd();bcm2835_close();23 return 0;24v/bcm2835.h>编译并执行,扩展板上的 LED2灯开始闪烁了, Ctrl +C结束程序1 gcc -Wall pcf8574-o pfc8574 Tbcm28352 sudo ./pcf8574注:

3、(1)bcm28352c_begin();启动i2c操作,设置I2C相关引脚为复用功能(2) bcm28352c_setSlaveAddress(0x20);设置 I2C 从机设备的地址,此处为0x20。即PCF8574的地址。(3) bcm2835_i2c_write(buf,1); 传输字节到 i2c 从设备,buf为要传输的数据,1表示传输一个字节更多bcm2835 库i2c操作函数请查看:二、wiringPi01 #in clude <wiri ngpi.h>02 #in elude <wiri ngpii2c.h>0304 int main (void)05

4、06 int fd;07 wiri ngPiSetup();08 fd = wiri ngPil2CSetup(0x20);0910 while (1)11 LED ONLED OFF12 wiri ngPil2CWrite(fd,0xEF);13 delay(500);14 wiri ngPil2CWrite(fd,0xFF);15 delay(500);16 17 return 0;18 </wiri ngpii2c.h></wiri ngpi.h>编译并执行,扩展板上的LED2灯开始闪烁了, Ctrl +C结束程序1 gcc -Wall pcf8574-o pfc

5、8574 Tbcm28352 sudo ./pcf8574注:(1)fd = wiringPil2CSetup(0x20); 初始化 I2C 设备,0x20 为 PCF8574 的 I2C 地址,返 回值是标准的Linux文件句柄,如果错误则返回-1.由此可知,wiringPi底层也是通过sysfs方式 操作 I2C 设备 /dev/i2c-1wiringPi还有pcf8574的扩展库,也可以调用 pcf8574的库操作IO.01 #include <wiringpi.h #include="" <pcf8574.h="">0203 #

6、defi ne EXTEND_BASE 6404 #defi ne LED EXTEND_BASE + 405 int main (void)06 07 wiri ngPiSetup();08 pcf8574Setup(EXTEND_BASE,0x20);09 pi nM ode(LED,OUTPUT);10 while (1)11 12 digitalWrite(LED ,L OW);LED ON13 delay(500);14 digitalWrite(LED,HIGH); LED OFF15 delay(500);17 return 0;v/wiri ngpi.h18>编译并执行-

7、wiri ngPi1 gcc -Wall pcf8574.c-o pcf84742 sudo ./pcf8574更多bcm2835 库i2c操作函数请查看:三、python首先执行如下命令安装 smbus库1 sudo apt-get in stall pytho n-smbus编辑程序01 #!/usr/bi n/pyth on02 # -*- codi ng:utf-8 -*-03 import smbus04 import time0506 address = 0x200708 bus = smbus.SMBus(1)09 while True:10 bus.write_byte(add

8、ress,OxEF)11 time.sleep(0.5)12 bus.write_byte(address,0xFF)13 time.sleep(0.5)执行程序:1 sudo pytho n pcf8574.py注:(i) import smbus 导入 smbus 模块(2)bus = smbus.SMBus(l)在树莓派版本2中,I2C设备位于/dev/l2C-1 ,所以此处的编号为1python圭寸装SMBUS操作函数具体代码请查看:四、sysfs从上面编程,我们可以发现,wiring,python 程序都是通过读写i2c 设备文件/dev/I2C-1 操作i2c设备。故我们也可以用c

9、语言读写文件的 形式操作i2c设备。01 #i nclude <li nux i2c-dev.h="">02 #in clude verrno .h>03 #defi ne I2C_ADDR 0x2004 #defi ne LED_ON0xEF05 #defi ne LED_OFF 0xFF06070809101112131415161718int main (void) int value;int fd;fd = ope n("/dev/i2c-1", O_RDWR);if (fd < 0) printf("Error

10、 opening file: %sn", strerror(errno); return 1;if (ioctl(fd, I2C_SLAVE, I2C_ADDR) < 0) prin tf("ioctl error: %sn", strerror(err no); return 1;19 while20 21 if(value = LED_ON)value = LED_OFF;22 else value = LED_ON;23 if( write( fd , &value, 1 ) != 1) 24 prin tf("Error writ ing file: %sn", strerror(err no);25 26 usleep(1000000);27 28 return 0;29 </err no .h></li nux>编译并执行1 gcc -Wall pcf8574.c pcf85742 sudo ./pcf8574注:(1 )fd = open("/dev/i2c-1", O_RDWR);打开设备,树莓

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论