传统的串口通信会丢失数据,不可靠,故采用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 =