树莓派 i2c写E2prom

学习记录

在整理I2C的过程中花费了大量的时间,相比之下,i2c的编程却超级简单,比stm32和单片机要简单的多得多。

功能

读取0x50设备地址下的ox00寄存器地址,然后向该寄存器写入新的内容,并读取出来。

代码

/*************************************************************************
    > File Name: i2c_e2prom.c
    > Author: admin
    > Mail: 
    > Created Time: 2020年01月01日 星期三 17时31分35秒
    > Modified Time:2020年01月01日 星期三 18时00分23秒
 ************************************************************************/

#include <stdio.h>
#include <wiringPi.h>
#include <wiringPiI2C.h>
#include <stdlib.h>
 
 
int main()
{
     wiringPiSetup();
 
     int fd = wiringPiI2CSetup(0x50);
     int read1 = 0x00;
     int write1 = 0xab;
     int read2 = 0x00;
 
     if(-1 == fd)
     {
         printf("wrong!\n");
         exit(0);
     }
     
     read1 = wiringPiI2CReadReg8(fd, 0x00);
     printf("read1 = %d\n", read1);
     wiringPiI2CWriteReg8(fd, 0x00, write1);
     read2 = wiringPiI2CReadReg8(fd, 0x00);
     printf("read2 = %d\n", read2);                                                                                                       
 
     return 0;
}

现象

在这里插入图片描述
输出结果,可以看到0x50地址下的ox00原本是240(0xf0)的,经过程序修改为171(0xab)。

补充

有一个博客大佬xukai871105提出了双刃剑的理念。

wiringPi提供了一个很好的封装,但是也是一把双刃剑。对于初学而言可以很好的利用树莓派实现应用,绕开linux驱动方面的知识,但是慢慢熟悉之后还是要补充linux驱动方面的内容个,使用open、wirte和ioctl实现I2C设备的控制。
国外有很多博文指出,BCM2835的I2C存在问题,该问题发生在I2C Stop时序保持的时间太短导致I2C从设备无法正常体质。参考资料中的第1项包含对I2C硬件问题的讨论和解决方法,请各位参考。

微学课堂提供多种方法实现I2C通信。

通过一个简单的例程来讲解通过bcm2835,wiringPi,sysfs,python等方式来控制i2c总线

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
这是本实验室推出的一款树莓派扩展板,可对多种单片机、spi-flash、eeprom进行编程烧录。 特定如下: 1 支持SWD接口,配合开源调试器openocd,可对stm32、gd32、nrf51/52、k40/k60实现烧录调试。 2 支持JTAG接口,配合openocd可对全球范围内的多种平台实现调试,如如ARM Cortex-A系列、DSP、FPGA、MIPS等,因为SWD协议只是ARM自己定义的私有协议,而JTAG则是国际IEEE 1149标准。 3 支持ICSP接口,支持AVR系列的所有芯片编程调试,著名的创客开源丹巴ARDUINO系列即使用AVR系列芯片。 4 支持SPI接口,配合开源工具flashrom,可对spi-flash进行编程烧录。 5 支持I2C接口,配合eeprog,可对常见的EEPROM进行编程烧录。 6 引出按键、LED、蜂鸣器,方便用户自行进行二次开发,所有的软件均为开源软件,方便用户自行定制。 硬件软件均为开放开源,方便用户进行个性化的定制,典型使用场景如下: 1. 脱机烧录器、用于产品量产,烧录stm32、AVR、NRF等系列单片机。可使用充电宝为树莓派单独供电,方便的进行产品程序烧录,而且由于树莓派主频极高,烧录速度远超过当前市面上的其他脱机烧录器(其他脱机烧录器一般使用stm32实现,主频只有72MHz,然而树莓派主频则有1.2GHz。) 2. flash烧录器、产品中需要使用flash存储,需要烧录之后再上机进行贴片。 3. eeprom烧录器,一些简单的小电子产品中会使用eeprom,相比flash容量更小,价格也更便宜,可对eeprom进行烧录。 4.无线调试器,部分硬件调试场景需要脱离电脑,如调试电机、四旋翼、机器人等,可将树莓派和扩展板固定在目标上,令树莓派连接到wifi,然后从PC上远程ssh登录到后台使用openocd进行调试。 5. 硬件hack,用于硬件破解,可读出各类芯片中的固件或者数据文件,然后进行逆向分析,传统的工具需要先使用专用硬件和专用软件将数据读出,然后再放到linux使用binwalk之类的工具进行二进制分析,然而通过树莓派强大的Linux环境,完全可以可将固件破解和分析集成在同一套系统中。 更多内容,请查阅https://www.muselab-tech.com/geekgong-ju-ba-shu-me... 已经配置好环境的树莓派镜像,只需烧录到SD卡中,插入到树莓派后启动即可使用: 链接:https://pan.baidu.com/s/1uNPgvZJgs6zxXi0U9eFYbg 提取码:5z9u 已经集成的软件脚本,方便使用: git clonehttps://github.com/wuxx/RPI-HAT-Programmer

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值