找回密码
 立即注册
楼主: HHJ***

STC8H8K64U与ESP32进行IIC通讯,数据错误问题

[复制链接]
  • TA的每日心情
    开心
    2024-3-2 15:38
  • 签到天数: 6 天

    [LV.2]偶尔看看I

    2

    主题

    22

    回帖

    86

    积分

    注册会员

    积分
    86
     楼主| 发表于 2024-2-27 13:25:00 | 显示全部楼层
    乘风飞扬 发表于 2024-2-27 11:15
    能确定RxBuffer里面的内容吗?打印前往RxBuffer写几个固定值试试。

    ESP32 IIC主机发送的都是固定值,就是我需要在STC这边分别打印一下RxBuffer的值吗?
    回复 支持 反对 送花

    使用道具 举报

  • TA的每日心情
    开心
    2024-3-2 15:38
  • 签到天数: 6 天

    [LV.2]偶尔看看I

    2

    主题

    22

    回帖

    86

    积分

    注册会员

    积分
    86
     楼主| 发表于 2024-2-27 14:33:09 | 显示全部楼层
    乘风飞扬 发表于 2024-2-27 11:15
    能确定RxBuffer里面的内容吗?打印前往RxBuffer写几个固定值试试。

    截图202402271432217017.jpg

    打印RxBuffer里面的内容,结果是为0
    运行结果如下:
    截图202402271432528749.jpg

    回复 支持 反对 送花

    使用道具 举报

  • TA的每日心情
    奋斗
    昨天 08:54
  • 签到天数: 277 天

    [LV.8]以坛为家I

    30

    主题

    1754

    回帖

    5738

    积分

    论坛元老

    积分
    5738
    发表于 2024-2-27 15:13:49 | 显示全部楼层
    HHJuan 发表于 2024-2-27 14:33
    打印RxBuffer里面的内容,结果是为0
    运行结果如下:

    我指的是这样:
    Rxbuffer[0] = 0x11;
    Rxbuffer[1] = 0x22;
    Rxbuffer[2] = 0x33;
    Rxbuffer[3] = 0x44;
    printf("Rxbuffer[0]=%bd\r\n",Rxbuffer[0]);
    printf("Rxbuffer[1]=%bd\r\n",Rxbuffer[1]);
    printf("Rxbuffer[2]=%bd\r\n",Rxbuffer[2]);
    printf("Rxbuffer[3]=%bd\r\n",Rxbuffer[3]);
    回复 支持 反对 送花

    使用道具 举报

  • TA的每日心情
    开心
    2024-3-2 15:38
  • 签到天数: 6 天

    [LV.2]偶尔看看I

    2

    主题

    22

    回帖

    86

    积分

    注册会员

    积分
    86
     楼主| 发表于 2024-2-27 15:51:57 | 显示全部楼层
    乘风飞扬 发表于 2024-2-27 15:13
    我指的是这样:
    Rxbuffer[0] = 0x11;
    Rxbuffer[1] = 0x22;

    我根据您提供的代码放在while(1)里面,加上了1000ms的延时,
    截图202402271551304066.jpg


    通过查看打印的结果,其字符串输出的结果如下:

    截图202402271551524571.jpg

    截图202402271541345749.jpg
    截图202402271542072499.jpg
    回复 支持 反对 送花

    使用道具 举报

  • TA的每日心情
    奋斗
    昨天 08:54
  • 签到天数: 277 天

    [LV.8]以坛为家I

    30

    主题

    1754

    回帖

    5738

    积分

    论坛元老

    积分
    5738
    发表于 2024-2-27 17:03:30 | 显示全部楼层
    HHJuan 发表于 2024-2-27 15:51
    我根据您提供的代码放在while(1)里面,加上了1000ms的延时,

    字符串方式打印出来的值没问题,就是输入的值。
    只不过输入固定值0x11,0x22,0x33,0x44是十六进制数据,打印出来的17,34,51,68是十进制数据。
    把 %bd 改成 0x%bx 就能打印出 0x11,0x22,0x33,0x44
    回复 支持 反对 送花

    使用道具 举报

  • TA的每日心情
    开心
    2024-3-2 15:38
  • 签到天数: 6 天

    [LV.2]偶尔看看I

    2

    主题

    22

    回帖

    86

    积分

    注册会员

    积分
    86
     楼主| 发表于 2024-2-27 18:44:19 | 显示全部楼层
    乘风飞扬 发表于 2024-2-27 17:03
    字符串方式打印出来的值没问题,就是输入的值。
    只不过输入固定值0x11,0x22,0x33,0x44是十六进制数据,打 ...

    嗯嗯,明白,字符串打印没问题,能理解。
    那您的意思是我在实现ESP32和STC8H8K64U之间的IIC通信,主机发过来的数据有问题?
    我现在就是想解决输入的值出现的问题。
    回复 支持 反对 送花

    使用道具 举报

  • TA的每日心情
    开心
    2024-3-2 15:38
  • 签到天数: 6 天

    [LV.2]偶尔看看I

    2

    主题

    22

    回帖

    86

    积分

    注册会员

    积分
    86
     楼主| 发表于 2024-2-27 18:47:18 | 显示全部楼层
    乘风飞扬 发表于 2024-2-27 17:03
    字符串方式打印出来的值没问题,就是输入的值。
    只不过输入固定值0x11,0x22,0x33,0x44是十六进制数据,打 ...

    在ESP32上,我是直接通过IIC 发送一个固定值过去
    ESP32端:
    Wire.write(1);    //传送数字字符串
    回复 支持 反对 送花

    使用道具 举报

  • TA的每日心情
    开心
    2024-3-2 15:38
  • 签到天数: 6 天

    [LV.2]偶尔看看I

    2

    主题

    22

    回帖

    86

    积分

    注册会员

    积分
    86
     楼主| 发表于 2024-2-29 15:57:12 | 显示全部楼层
    最近记录最新进展:
    所做的修改:

    STC8H8K64U IIC从机:

                            if(DisplayFlag)
                            {
                                    DisplayFlag = 0;
                                    if(RxBuffer[0] < 10)
                                    {
                                            Test_cnt = RxBuffer[3]+(RxBuffer[2]*10)+(RxBuffer[1]*100)+(RxBuffer[0]*1000);
                                                    printf("I2CRXD=%bd\r\n",I2CRXD);  //尝试打印接收到的消息
                                    }


    ESP32 IIC主机的代码

      Wire.write(num);    //传送数字字符串
      Serial.println(num);
    不断发送自增的数字字符串
    截图202402291550365878.jpg

    测试结果发现:STC8H8K64U接收到的消息是ESP32发送消息*2的内容,但当发送的数据是3位数后,STC接收到的数据是后2位数的结果
    请问这是哪里有问题?应该如何修改?


    回复 支持 反对 送花

    使用道具 举报

  • TA的每日心情
    开心
    2024-3-2 15:38
  • 签到天数: 6 天

    [LV.2]偶尔看看I

    2

    主题

    22

    回帖

    86

    积分

    注册会员

    积分
    86
     楼主| 发表于 2024-2-29 17:23:44 | 显示全部楼层
    为什么STC8H8K64U作为IIC从机做接收的时候,RxBuffer没有数据,打印出来的都是0?

    回复 支持 反对 送花

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    QQ|手机版|深圳国芯人工智能有限公司 ( 粤ICP备2022108929号-2 )

    GMT+8, 2024-11-1 07:30 , Processed in 0.096694 second(s), 67 queries .

    Powered by Discuz! X3.5

    © 2001-2024 Discuz! Team.

    快速回复 返回顶部 返回列表