能确定RxBuffer里面的内容吗?打印前往RxBuffer写几个固定值试试。
ESP32 IIC主机发送的都是固定值,就是我需要在STC这边分别打印一下RxBuffer的值吗? 乘风飞扬 发表于 2024-2-27 11:15
能确定RxBuffer里面的内容吗?打印前往RxBuffer写几个固定值试试。
打印RxBuffer里面的内容,结果是为0
运行结果如下:
HHJuan 发表于 2024-2-27 14:33
打印RxBuffer里面的内容,结果是为0
运行结果如下:
我指的是这样:
Rxbuffer = 0x11;
Rxbuffer = 0x22;
Rxbuffer = 0x33;
Rxbuffer = 0x44;
printf("Rxbuffer=%bd\r\n",Rxbuffer);
printf("Rxbuffer=%bd\r\n",Rxbuffer);
printf("Rxbuffer=%bd\r\n",Rxbuffer);
printf("Rxbuffer=%bd\r\n",Rxbuffer); 乘风飞扬 发表于 2024-2-27 15:13
我指的是这样:
Rxbuffer = 0x11;
Rxbuffer = 0x22;
我根据您提供的代码放在while(1)里面,加上了1000ms的延时,
通过查看打印的结果,其字符串输出的结果如下:
HHJuan 发表于 2024-2-27 15:51
我根据您提供的代码放在while(1)里面,加上了1000ms的延时,
字符串方式打印出来的值没问题,就是输入的值。
只不过输入固定值0x11,0x22,0x33,0x44是十六进制数据,打印出来的17,34,51,68是十进制数据。
把 %bd 改成 0x%bx 就能打印出 0x11,0x22,0x33,0x44 乘风飞扬 发表于 2024-2-27 17:03
字符串方式打印出来的值没问题,就是输入的值。
只不过输入固定值0x11,0x22,0x33,0x44是十六进制数据,打 ...
嗯嗯,明白,字符串打印没问题,能理解。
那您的意思是我在实现ESP32和STC8H8K64U之间的IIC通信,主机发过来的数据有问题?
我现在就是想解决输入的值出现的问题。 乘风飞扬 发表于 2024-2-27 17:03
字符串方式打印出来的值没问题,就是输入的值。
只不过输入固定值0x11,0x22,0x33,0x44是十六进制数据,打 ...
在ESP32上,我是直接通过IIC 发送一个固定值过去
ESP32端:
Wire.write(1); //传送数字字符串
最近记录最新进展:
所做的修改:
STC8H8K64U IIC从机:
if(DisplayFlag)
{
DisplayFlag = 0;
if(RxBuffer < 10)
{
Test_cnt = RxBuffer+(RxBuffer*10)+(RxBuffer*100)+(RxBuffer*1000);
printf("I2CRXD=%bd\r\n",I2CRXD);//尝试打印接收到的消息
}
ESP32 IIC主机的代码
Wire.write(num); //传送数字字符串
Serial.println(num);
不断发送自增的数字字符串
测试结果发现:STC8H8K64U接收到的消息是ESP32发送消息*2的内容,但当发送的数据是3位数后,STC接收到的数据是后2位数的结果
请问这是哪里有问题?应该如何修改?
为什么STC8H8K64U作为IIC从机做接收的时候,RxBuffer没有数据,打印出来的都是0?
页:
1
[2]