树莓派i2c通信C语言,基于I2C的STM32与树莓派通信

传统的串口通信会丢失数据,不可靠,故采用I2C(同步串行总线)通信。

树莓派上使用python脚本,后期将使用c或java重写,目前没有需求。

树莓派作主机(Master),stm32作从机(Slave)。特别需要注意的是,I2C的通信虽然只需要两根线就能通信,但是需要第三根线接地GND(提供判断低电位的能力),否则不能正常识别stm32从机

使用Arduino IDE编程

以下是STM32的代码:

#include

#define SLAVE_ADDRESS 0x04 //i2c地址

int data;

void setup() {

Serial.begin(9600); // start serial for output

// initialize i2c as slave

Wire.begin(SLAVE_ADDRESS);

// define callbacks for i2c communication

Wire.onReceive(receiveData);//从机 接收 主机 发来的数据

Wire.onRequest(sendData); //从机 请求 主机 发送数据

Serial.println("Ready");

}

void loop() {

delay(100);

}

// callback for received data

void receiveData(int byteCount){

while(Wire.available()) {

data = Wire.read();

Serial.print("data received: ");

Serial.println(data);

你可能感兴趣的:(树莓派i2c通信C语言)