This program implements a slave SPI in software for testing the SPI interface of protocoltool.

Dependencies:   mbed

Fork of 8255_emulator by Jacques Pelletier

Committer:
jpelletier
Date:
Mon Sep 07 05:31:33 2015 +0000
Revision:
5:c79a6e66ed00
Parent:
4:241cd0193031
Child:
6:dccae7a269f9
Test the hardware SPI slave on p5-p8

Who changed what in which revision?

UserRevisionLine numberNew contents of line
jpelletier 5:c79a6e66ed00 1 /* Implement the SPI slave 8-bit in hardware */
jpelletier 0:a5957f25b150 2 #include "mbed.h"
jpelletier 0:a5957f25b150 3
jpelletier 0:a5957f25b150 4 //#include <stdarg.h>
jpelletier 0:a5957f25b150 5 #include <stdio.h>
jpelletier 0:a5957f25b150 6 #include <stdlib.h>
jpelletier 0:a5957f25b150 7 #include <string.h>
jpelletier 0:a5957f25b150 8
jpelletier 5:c79a6e66ed00 9 #include <SPISlave.h>
jpelletier 5:c79a6e66ed00 10
jpelletier 1:51bc46468482 11 /*
jpelletier 0:a5957f25b150 12 Instructions for use: connect the mbed to a parallel port using these connexions.
jpelletier 1:51bc46468482 13 use a terminal program to connect via USB to the mbed side. */
jpelletier 0:a5957f25b150 14
jpelletier 2:0cc974f03339 15 /* This is for testing since it uses the serial port at 9600 bauds to connect to a PC */
jpelletier 2:0cc974f03339 16
jpelletier 1:51bc46468482 17 /*
jpelletier 5:c79a6e66ed00 18 Doesn't use the Mbed-parallel port PCB
jpelletier 0:a5957f25b150 19
jpelletier 5:c79a6e66ed00 20 SPI Parallel Pin Bit
jpelletier 5:c79a6e66ed00 21 MISO p6 -> BUSY 11 7
jpelletier 5:c79a6e66ed00 22 SCK p7 <- /AutoFeed 14
jpelletier 5:c79a6e66ed00 23 /SS p8 <-> D0 2
jpelletier 5:c79a6e66ed00 24 MOSI p5 <- /STB 1 0
jpelletier 0:a5957f25b150 25 */
jpelletier 0:a5957f25b150 26
jpelletier 0:a5957f25b150 27 Serial pc(USBTX, USBRX); // tx, rx
jpelletier 0:a5957f25b150 28
jpelletier 3:422d80770413 29 unsigned char rx_data, tx_data;
jpelletier 1:51bc46468482 30
jpelletier 5:c79a6e66ed00 31 SPISlave device(p5, p6, p7, p8); // mosi, miso, sclk, ssel
jpelletier 1:51bc46468482 32
jpelletier 1:51bc46468482 33 int main()
jpelletier 1:51bc46468482 34 {
jpelletier 5:c79a6e66ed00 35 char key;
jpelletier 5:c79a6e66ed00 36 int i = 0;
jpelletier 3:422d80770413 37
jpelletier 5:c79a6e66ed00 38 /* 9600 baud serial port */
jpelletier 5:c79a6e66ed00 39 pc.printf("SPI slave test on mbed\r\n\n");
jpelletier 5:c79a6e66ed00 40
jpelletier 3:422d80770413 41 pc.printf("Configure\r\n\n");
jpelletier 5:c79a6e66ed00 42 pc.printf("Mode: 0-3\r\n\n");
jpelletier 3:422d80770413 43
jpelletier 5:c79a6e66ed00 44 key = pc.getc();
jpelletier 3:422d80770413 45
jpelletier 5:c79a6e66ed00 46 switch (key)
jpelletier 5:c79a6e66ed00 47 {
jpelletier 5:c79a6e66ed00 48 case '0':
jpelletier 5:c79a6e66ed00 49 case '1':
jpelletier 5:c79a6e66ed00 50 case '2':
jpelletier 5:c79a6e66ed00 51 case '3':
jpelletier 5:c79a6e66ed00 52 i = key & 0x03;
jpelletier 5:c79a6e66ed00 53 break;
jpelletier 3:422d80770413 54
jpelletier 5:c79a6e66ed00 55 default:
jpelletier 5:c79a6e66ed00 56 ;
jpelletier 5:c79a6e66ed00 57 }
jpelletier 5:c79a6e66ed00 58
jpelletier 5:c79a6e66ed00 59 pc.printf("Configure end, mode: %d, begin test\r\n\n",i);
jpelletier 5:c79a6e66ed00 60 device.format(8,i);
jpelletier 5:c79a6e66ed00 61 device.frequency(8000000); //8MHz
jpelletier 3:422d80770413 62
jpelletier 5:c79a6e66ed00 63 i = 0;
jpelletier 5:c79a6e66ed00 64 device.reply(0); // Prime SPI with first reply
jpelletier 5:c79a6e66ed00 65
jpelletier 5:c79a6e66ed00 66 while(1) {
jpelletier 5:c79a6e66ed00 67 if(device.receive()) {
jpelletier 5:c79a6e66ed00 68 int v = device.read(); // Read byte from master
jpelletier 5:c79a6e66ed00 69 device.reply(v); // Make this the next reply
jpelletier 1:51bc46468482 70 }
jpelletier 0:a5957f25b150 71 }
jpelletier 0:a5957f25b150 72 }