This program implements a slave SPI in software for testing the SPI interface of protocoltool.
Fork of 8255_emulator by
main.cpp@5:c79a6e66ed00, 2015-09-07 (annotated)
- 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?
User | Revision | Line number | New 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 | } |