Untitled
unknown
plain_text
a year ago
1.6 kB
11
Indexable
Master
#include <SPI.h>
#define CS_PIN 5 // Chip Select pin
void setup() {
Serial.begin(115200);
// Initialize SPI as master
SPI.begin();
// Configure CS pin
pinMode(CS_PIN, OUTPUT);
digitalWrite(CS_PIN, HIGH);
Serial.println("SPI Master Ready");
}
void loop() {
byte dataToSend = 0x55; // Test data to send
// Begin SPI transaction
digitalWrite(CS_PIN, LOW); // Select the slave
SPI.beginTransaction(SPISettings(1000000, MSBFIRST, SPI_MODE0)); // Match settings with slave
byte receivedData = SPI.transfer(dataToSend); // Send and receive one byte
SPI.endTransaction();
digitalWrite(CS_PIN, HIGH); // Deselect the slave
Serial.print("Sent: 0x");
Serial.print(dataToSend, HEX);
Serial.print(", Received: 0x");
Serial.println(receivedData, HEX);
delay(1000); // Send every second
}
Slave
#include <SPI.h>
#define MISO_PIN 19
#define MOSI_PIN 23
#define SCLK_PIN 18
#define CS_PIN 5
volatile byte receivedData = 0; // Store received byte
volatile byte dataToSend = 0xAA; // Data to send back to master
void setup() {
Serial.begin(115200);
// Initialize SPI as a slave
SPI.begin(MISO_PIN, SCLK_PIN, MOSI_PIN, CS_PIN);
Serial.println("SPI Slave Ready");
}
void loop() {
if (digitalRead(CS_PIN) == LOW) { // Check if CS is active
while (digitalRead(CS_PIN) == LOW) { // While CS is low
receivedData = SPI.transfer(dataToSend); // Exchange data with master
}
// Print received data after CS goes high
Serial.print("Received: 0x");
Serial.println(receivedData, HEX);
}
}
Editor is loading...
Leave a Comment