From 7aec98c57df5a04e482c2e1909c52f83e74513f1 Mon Sep 17 00:00:00 2001 From: PeterKietzmann <peter.kietzmann@haw-hamburg.de> Date: Fri, 17 Oct 2014 10:09:25 +0200 Subject: [PATCH] Added a function for the slave to print received data. --- tests/periph_spi/main.c | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/tests/periph_spi/main.c b/tests/periph_spi/main.c index 65c2edda4a..ce59d0263a 100644 --- a/tests/periph_spi/main.c +++ b/tests/periph_spi/main.c @@ -44,6 +44,8 @@ static int spi_speed = -1; static int spi_master = -1; /* 0 for slave, 1 for master, -1 for not initialized */ static char buffer[256]; /* temporary buffer */ +static char rx_buffer[256]; /* global receive buffer */ +static int rx_counter = 0; static volatile int state; static char* mem = "Hello Master! abcdefghijklmnopqrstuvwxyz 0123456789 ABCDEFGHIJKLMNOPQRSTUVWXYZ"; @@ -140,6 +142,12 @@ void slave_on_cs(void *arg) char slave_on_data(char data) { + rx_buffer[rx_counter] = data; + rx_counter++; + if (rx_counter >= 256) { + rx_counter = 0; + } + switch (rw) { case READ: return mem[state++]; @@ -239,6 +247,19 @@ void cmd_transfer(int argc, char **argv) } } +void cmd_print(int argc, char **argv) +{ + if (spi_master != 0) { + puts("error: node is not initialized as slave"); + } + else { + printf("Received %i bytes:\n", rx_counter); + print_bytes("MOSI", rx_buffer, rx_counter); + } + rx_counter = 0; + memset(&rx_buffer, 0, 256); +} + int shell_getchar(void) { return (int)getchar(); @@ -253,6 +274,7 @@ static const shell_command_t shell_commands[] = { { "init_master", "Initialize node as SPI master", cmd_init_master }, { "init_slave", "Initialize node as SPI slave", cmd_init_slave }, { "send", "Transfer string to slave (only in master mode)", cmd_transfer }, + { "print_rx", "Print the received string (only in slave mode)", cmd_print }, { NULL, NULL, NULL } }; -- GitLab