Untitled
unknown
plain_text
10 months ago
1.6 kB
9
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