gpt4 book ai didi

c - I2C 通讯 B-L072Z-LRWAN(主) 与 Arduino(从) 错误

转载 作者:行者123 更新时间:2023-11-30 16:18:12 25 4
gpt4 key购买 nike

我正在尝试在 B-L072Z-LRWAN(Master) 和 Arduino(Slave) 之间进行 I2C 通信。

我使用以下代码成功将数据从主站发送到从站:

B-L072Z-LRWAN 代码:

#include "main.h"

I2C_HandleTypeDef hi2c1;
uint8_t i2cData[2];
uint8_t rec_data[1];

int main(void)
{
//I do not copy all the lines of code

if(HAL_I2C_IsDeviceReady(&hi2c1,0xD0,2,10) == HAL_OK)
{
HAL_GPIO_WritePin(GPIOB, GPIO_PIN_6, GPIO_PIN_SET);
}
i2cData[0] = 0x00;
i2cData[1] = 0x7F;
while (1)
{
HAL_I2C_Master_Transmit(&hi2c1, 0xD0, i2cData, 2, 10);
}

//I do not copy all the lines of code
}

Arduino 代码:

 #include <Wire.h>

uint8_t i = 1;
uint8_t data[2];

void setup()
{
Wire.begin(0b1101000); // join i2c bus with address #8
Wire.onReceive(receiveEvent); // register event
Wire.onRequest(requestEvent);
Serial.begin(9600); // start serial for output
}

void loop()
{
data[0] = i++;
delay(500);
}

// function that executes whenever data is received from master
// this function is registered as an event, see setup()

void receiveEvent(int howMany)
{
while (1 < Wire.available())
{
// loop through all but the last
int c = Wire.read(); // receive byte as a character
Serial.print(c, HEX); // print the character
}
int x = Wire.read(); // receive byte as an integer
Serial.println(x); // print the integer
}

void requestEvent()
{
Serial.println("request from master");
Wire.write(data[0]); // respond with message of 6 bytes
// as expected by master
}

所以我可以将数据发送到我的从站,然后我尝试将数据从我的从站发送到我的主站,所以我添加此行代码:

B-L072Z-LRWAN 代码:

  rec_data[0] = 0x04;
while (1)
{
//reception data
HAL_I2C_Master_Receive(&hi2c1, 0xD0, rec_data[0], 1, 10);
HAL_Delay(500);
}

我想接收arduino发送的i值的增量,但这不起作用,我继续从我的主机发送数据,但我无法从我的从机发送数据。

也许我没有出错,可以帮助我吗?谢谢。

亲切的问候,

最佳答案

最后我找到了解决方案,只需将 while“rec_data[0]”替换为“rec_data”即可:

 rec_data[0] = 0x04;

while (1)
{
//reception data
HAL_I2C_Master_Transmit(&hi2c1, 0xD0, i2cData, 1, 10);
HAL_Delay(500);
HAL_I2C_Master_Receive(&hi2c1, 0xD0, rec_data, 1, 10);
HAL_Delay(500);
}

再次感谢小伙子!! ;)

关于c - I2C 通讯 B-L072Z-LRWAN(主) 与 Arduino(从) 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56026771/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com