i2c的主站模式和从站模式实现,现在怎么才能把i2c数据打印出来

i2c的主站模式和从站模式实现,现在怎么才能把i2c数据打印出来
现写的直接操作寄存器代码是现在这样怎么补充下把i2c数据打印出来

img


想要打印这种图中数据

img


望各位帮忙指点,感谢了

iic采集到数据,然后按以上格式,发给串口,在pc机上用串口调试助手接收就好了!

不知道你这个问题是否已经解决, 如果还没有解决的话:
  • 你可以参考下这个问题的回答, 看看是否对你有帮助, 链接: https://ask.csdn.net/questions/7636563
  • 你也可以参考下这篇文章:【龙芯1c库】封装硬件I2C接口和使用示例
  • 除此之外, 这篇博客: 【51单片机快速入门指南】4: 软件 I2C中的 起始和停止信号 部分也许能够解决你的问题, 你可以仔细阅读以下内容或者直接跳转源博客中阅读:

           SCL 线为高电平期间,SDA 线由高电平向低电平的变化表示起始信号;SCL 线为高电平期间,SDA 线由低电平向高电平的变化表示终止信号。如下图:
    在这里插入图片描述
           起始和终止信号都是由主机发出的,在起始信号产生后,总线就处于被占用的状态;在终止信号产生后,总线就处于空闲状态。

  • 您还可以看一下 朱有鹏老师的I2C总线和触摸屏驱动移植实战-linux驱动开发第9部分课程中的 5.9.2.内核中的竞争状态和互斥1小节, 巩固相关知识点
  • 以下回答来自chatgpt:

    根据问题描述,可以确定需要实现i2c主从机模式,并将数据打印出来。具体实现步骤如下:

    1. 确定使用硬件I2C还是软件I2C。如果芯片上有相应的I2C外设,则使用硬件I2C效率更高。如果没有,则需要使用软件I2C。

    2. 根据需要实现主从机模式,需要对应编写不同的代码。主机模式需要发送起始信号后,发送从机的地址以及数据,最后发送停止信号。从机模式需要接收起始信号后,接收自己的地址和数据,然后发送应答信号或非应答信号,最后接收停止信号。

    3. 需要编写代码来打印i2c传输的数据。根据i2c的数据传输流程,主从机在传输数据时会发送应答信号或非应答信号,可以在对应的代码中加入打印语句。

    例如,如果使用硬件I2C实现主机模式,可以按如下步骤编写代码实现数据打印:

    // include the Wire library for I2C communication 
    #include <Wire.h>
    
    void setup() {
      // start serial communication
      Serial.begin(9600);
      // start I2C communication
      Wire.begin();
    }
    
    void loop() {
      // send a start signal and address of the slave device 
      Wire.beginTransmission(8);
      // send a byte of data to the slave device 
      Wire.write('X');
      // end the transmission
      Wire.endTransmission();
      // wait for a short time
      delay(100);
      // print out the data transmitted 
      Serial.println("Data transmitted: X");
    }
    

    在上述代码中,我们使用了Wire库对I2C进行通信。首先,我们在setup函数中启动了串口通信和I2C通信。然后在loop函数中,我们发送了一个起始信号和从机地址,并向从机发送一个字节的数据。最后,在发送完数据后,我们通过串口打印了数据的值。如果需要接收从机的数据,需要在代码中加入相应的接收逻辑。

    需要注意的是,具体的代码实现可能会根据芯片、硬件或软件情况而有所不同,但总体框架与上述步骤类似。


如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^