Hôm nay mình hướng dẫn cách test hoạt động I2C
Đầu tiên I2C mặc định STM32 PB6:SCL,PB7:SDA
SDA: PB7 or PB9, PB11.
SCL: PB6 or PB8, PB10.
Các bạn mua bất cứ Board I2C nào và scan I2C và Test
#include <Wire.h> void setup() { Wire.begin(); Serial.begin(9600); Serial.println(“\nI2C Scanner”); } void loop() { byte error, address; int nDevices; Serial.println(“Scanning…”); nDevices = 0; for(address = 1; address < 127; address++ ) { // The i2c_scanner uses the return value of // the Write.endTransmisstion to see if // a device did acknowledge to the address. Wire.beginTransmission(address); error = Wire.endTransmission(); if (error == 0) { Serial.print(“I2C device found at address 0x”); if (address<16) Serial.print(“0″); Serial.print(address,HEX); Serial.println(” !”); nDevices++; } else if (error==4) { Serial.print(“Unknow error at address 0x”); if (address<16) Serial.print(“0″); Serial.println(address,HEX); } } if (nDevices == 0) Serial.println(“No I2C devices found\n”); else Serial.println(“done\n”); delay(5000); // wait 5 seconds for next scan }
CODE I2C Dùng I2C2
#include <Wire.h> // SDA SCL TwoWire Wire2(PB3, PB10); void setup() { Wire2.begin(); } void loop() { Wire2.beginTransmission(0x71); Wire2.write('v'); Wire2.endTransmission(); delay(1000); }
Muốn thay đổi chân I2C
void setSCL(uint32_t scl)
void setSDA(uint32_t sda)
void setSCL(PinName scl)
void setSDA(PinName sda)
Wire.setSDA(PC_4); // using pin name PY_n Wire.setSCL(PC2); // using pin number PYn Wire.begin();
https://github.com/stm32duino/wiki/wiki/API#hardwareserial