From 9e91df209a4fc8b3a234f299b0da8ea000d2d5a7 Mon Sep 17 00:00:00 2001 From: Adema Date: Mon, 17 Feb 2025 06:25:24 +0100 Subject: [PATCH] Upload files to "/" --- i2c_256_master_t4.ino | 27 +++++++++++++++++++++++++++ i2c_256_slave_t4.ino | 26 ++++++++++++++++++++++++++ i2c_master.ino | 27 +++++++++++++++++++++++++++ i2c_slave.ino | 34 ++++++++++++++++++++++++++++++++++ 4 files changed, 114 insertions(+) create mode 100644 i2c_256_master_t4.ino create mode 100644 i2c_256_slave_t4.ino create mode 100644 i2c_master.ino create mode 100644 i2c_slave.ino diff --git a/i2c_256_master_t4.ino b/i2c_256_master_t4.ino new file mode 100644 index 0000000..406cf77 --- /dev/null +++ b/i2c_256_master_t4.ino @@ -0,0 +1,27 @@ +#include +#include + +#define SLAVE_ADDR 0x08 +#define BUFFER_SIZE 256 + +i2c_device i2c = i2c_device(Wire, SLAVE_ADDR); // Use default Wire (I2C1) + +uint8_t dataBuffer[BUFFER_SIZE]; + +void setup() { + Wire.begin(); + Wire.setClock(1000000); // Set I2C clock speed to 1 MHz + + // Fill buffer with test data + for (int i = 0; i < BUFFER_SIZE; i++) { + dataBuffer[i] = i; + } + + delay(1000); // Allow slave to initialize +} + +void loop() { + i2c.write(dataBuffer, BUFFER_SIZE); // Send full 256 bytes in one transaction + + delay(10); // Small delay before next transmission +} diff --git a/i2c_256_slave_t4.ino b/i2c_256_slave_t4.ino new file mode 100644 index 0000000..a41a47e --- /dev/null +++ b/i2c_256_slave_t4.ino @@ -0,0 +1,26 @@ +#include + +#define SLAVE_ADDR 0x08 +#define BUFFER_SIZE 256 + +uint8_t receivedData[BUFFER_SIZE]; + +void receiveEvent(size_t count) { + I2C.read(receivedData, count); +} + +void setup() { + I2C.begin(SLAVE_ADDR); + I2C.onReceive(receiveEvent); + Serial.begin(115200); +} + +void loop() { + delay(500); + Serial.print("Received Data: "); + for (int i = 0; i < BUFFER_SIZE; i++) { + Serial.print(receivedData[i], HEX); + Serial.print(" "); + } + Serial.println(); +} diff --git a/i2c_master.ino b/i2c_master.ino new file mode 100644 index 0000000..3f9df65 --- /dev/null +++ b/i2c_master.ino @@ -0,0 +1,27 @@ +#include +#define SLAVE_ADDRESS 0x20 + +void setup() +{ + Wire.setClock(1000000); + Serial.begin(9600); + Wire.begin(); +} + +void loop() +{ + Wire.beginTransmission(SLAVE_ADDRESS); + Wire.write(0x09); + byte busStatus = Wire.endTransmission(); + if(busStatus !=0) + { + Serial.println("I2C Bus error!"); + while(true); + } + Serial.println("Data Transmission is ok!"); + //-------------------------------------- + Wire.requestFrom(SLAVE_ADDRESS, 1); + byte m = Wire.read(); + Serial.println(m, HEX); //should show: 7 + delay(1000); +} diff --git a/i2c_slave.ino b/i2c_slave.ino new file mode 100644 index 0000000..5597e2b --- /dev/null +++ b/i2c_slave.ino @@ -0,0 +1,34 @@ +#include +#define SLAVE_ADDRESS 0x20 +byte reTxData; +volatile bool flag = false; + +void setup() +{ + Wire.setClock(1000000); + Serial.begin(9600); + Wire.onReceive(receiveEvent); + Wire.onRequest(sendEvent); + Wire.begin(SLAVE_ADDRESS); +} + +void loop() +{ + if (flag == true) + { + Serial.print("Data received from Master: "); + Serial.println(reTxData); + flag = false; + } +} + +void receiveEvent(int numBytes) +{ + reTxData = Wire.read(); + flag = true; +} + +void sendEvent() +{ + Wire.write(reTxData); +}