首页 > 其他分享 >MPR121 Breakout 更改 I2C 地址

MPR121 Breakout 更改 I2C 地址

时间:2024-03-05 14:36:55浏览次数:39  
标签:ADDR add Breakout address println Serial I2C MPR121

MPR121 Breakout 是一个 接近 电容式 触摸传感器,连接到arduino、esp32等单片机,可以用来做一些 触摸 感应的小玩意。

他有12个触摸点,使用 i2c 协议来操控,非常方便。

      

默认情况下,Add 引脚 接地了,板子的i2c地址是 0x5A,如果你要同时连接多个 板子,那么 i2c 地址就冲突了。你只能使用i2c复用板来解决了。

但是,但是。。。。。板子的设计师考虑的很周到,可以短接引脚获取不同的地址,点赞!

1 The MPR121 ADDR pin is pulled to ground and has a default I2C address of 0x5A
2 You can adjust the I2C address by connecting ADDR to other pins:
3 
4 ADDR not connected: 0x5A
5 ADDR tied to 3V: 0x5B
6 ADDR tied to SDA: 0x5C
7 ADDR tied to SCL: 0x5D

简单说,add连到3v3后地址是0x5b,add连到sda后地址是0x5c,add连到scl后地址是0x5d

具体怎么操作呢,看下图,箭头处就是add引脚跳线的地方。

将下图箭头所指横线切断,可以用小刀、美工刀,动作慢点,切割后用万用表测试一下,两端不通电即可。

 然后将add的右侧,焊接一个飞线连接到3v3、sda、scl 三个中的一个即可。 

 不焊接也行,直接在add引脚插一个杜邦线,另外一端插到3v3、sda、scl 三个中的一个即可。

下面是arduino获取2个板子i2c地址的测试代码:

#include <Wire.h>

void setup() {
  Wire.begin();
  Serial.begin(9600);
  Serial.println("\nI2C Scanner");


  Serial.println("Scanning...");
  delay(2000);


}

void loop() {
  int nDevices;
  nDevices = 0;
  byte error, address;
  for (address = 1; address < 127; address++ ) {
    Wire.beginTransmission(address);
    error = Wire.endTransmission();
    if (error == 0) {
      Serial.print("I2C device found at address 0x");
      if (address < 16) {
        Serial.print("0");
      }
      Serial.println(address, HEX);
      nDevices++;
    }
    else if (error == 4) {
      Serial.print("Unknown error at address 0x");
      if (address < 16) {
        Serial.print("0");
      }
      Serial.println(address, HEX);
    }
  }
  if (nDevices == 0) {
    Serial.println("No I2C devices found\n");
  }
  else {
    Serial.println("done\n");
  }

  Serial.print("i2c devices found:");
  Serial.println(nDevices);

  delay(5000);
} 

运行结果:

 

 

完美!最多可接4个板子,够了够了!

 

标签:ADDR,add,Breakout,address,println,Serial,I2C,MPR121
From: https://www.cnblogs.com/longware/p/18053975

相关文章

  • 17_I2C通信外设
    I2C通信外设I2C外设简介固定多主机:固定多个主机和多个从机可变多主机:没用固定的主机和从机,任何从机都可以变成主机,通信完成后变回从机10位地址模式:使用第一二个字节当地址,第一个字节是11110开头就是10位地址模式(除了11110之后的2位+第二个字节的8位)I2C框图I2C基......
  • 靶机Matrix-Breakout 2 Morpheus
    Matrix-Breakout2Morpheus笔记拿到靶机先扔VMware信息收集没其他东西了,于是先在nmap收集信息nmap-sn192.168.0.0/24-snPing扫描-禁用端口扫描发现靶机地址为192.168.0.104,继续收集信息,先给一套组合拳nmap-T4-sV-p--A192.168.0.104-sV:此选项启用版本检测。......
  • 全国产T3+FPGA的SPI与I2C通信方案分享
    近年来,随着中国新基建、中国制造2025规划的持续推进,单ARM处理器越来越难胜任工业现场的功能要求,特别是如今能源电力、工业控制、智慧医疗等行业,往往更需要ARM+FPGA架构的处理器平台来实现例如多路/高速AD采集、多路网口、多路串口、多路/高速并行DI/DO、高速数据并行处理等特定......
  • Arduino - ESP8266和ESP32的I2C接口使用(超全)
    简介深入讲解I2C通信协议,以及,Arduino和ESP8266微控制器通过I2C连接设备需要哪些引脚、该通信协议的优缺点以及如何使用I2C多路复用器详解Arduino/ESP8266与其他设备通信,例如OLED显示器、气压传感器等,可以使用I2C通信协议。也可以使用两外两个通信协议:SPI和UARTI2C全称是Inte......
  • Verdi信号平移+研发管理体系+malloc和calloc函数区别+使用__FILE__只打印文件名+使用i
    Verdi信号平移信号左移是将光标移动在双引号以内的信号名左边,然后先输入数字,可以带上单位,如[ns|n]、[ps|p],然后按<<-按键。https://blog.csdn.net/qq_40268672/article/details/132915499信号右移信号右移是数字在右边,信号在左边,用右移符号,其它不变。研发管理体系https://......
  • i2c私有数据保存
    相信在i2c驱动中,会经常看到有i2c_set_clientdatai2c_get_clientdata这两个经常碰到,知道就是保存是有数据,但是一直没有跟下去,今天得空跟了一下,一目了然不同的版本内核会有区别,我这个是基于kernel-4.19 首先看下原函数staticinlinevoidi2c_set_clientdata(structi2c_......
  • STM32CubeMX教程19 I2C - MPU6050驱动
    1、准备材料正点原子stm32f407探索者开发板V2.4STM32CubeMX软件(Version6.10.0)野火DAP仿真器keilµVision5IDE(MDK-Arm)ST-LINK/V2驱动XCOMV2.6串口助手逻辑分析仪nanoDLA2、实验目标使用STM32CubeMX软件配置STM32F407开发板的I2C1与MPU6050芯片通信,读取MPU6050的三轴加......
  • 【驱动】I2C驱动分析(二)-驱动框架
    I2C驱动框架简介I2C驱动属于总线-设备-驱动模型的,与I2C总线设备驱动模型相比,大体框架是一样,系统的整体框架如下所示。最上层是应用层,在应用层用户可以直接用openreadwrite对设备进行操作,往下是设备驱动层,这个就是外围的比如一些用I2C总线连接到SOC的传感器或者EEPROM的驱......
  • 【驱动】I2C驱动分析(三)-关键数据类型
    I2Cbusi2c_bus_type用于表示I2C总线类型。bus_type是Linux内核中用于表示总线类型的结构体,用于管理该类型总线上的设备。structbus_typei2c_bus_type={ .name ="i2c", .match =i2c_device_match, .probe =i2c_device_probe, .remove =i2c_device_remove,......
  • 【驱动】I2C驱动分析(五)-模拟I2C驱动
    在drivers/i2c/busses下包含各种I2C总线驱动,使用GPIO模拟I2C总线的驱动i2c-gpio.c,这里只分析i2c-gpio.c。i2c-gpio.c它是gpio模拟I2C总线的驱动,总线也是个设备,在这里将总线当作平台设备处理,那驱动当然是平台设备驱动,看它的驱动注册和注销函数。i2c_gpio_initi2c_gpio_init调用......