Motoo Tanaka / Mbed 2 deprecated test_spi

Dependencies:   mbed

Committer:
Rhyme
Date:
Mon May 16 06:28:42 2016 +0000
Revision:
2:3d2009b507f5
Parent:
1:6fdc687abb43
Child:
3:ec7a94b41102
Chip select (D10) added

Who changed what in which revision?

UserRevisionLine numberNew contents of line
Rhyme 1:6fdc687abb43 1 /** Test Spi a quick and dirty spi test program
Rhyme 1:6fdc687abb43 2 */
Rhyme 1:6fdc687abb43 3
Rhyme 0:5fbf51aca95c 4 #include "mbed.h"
Rhyme 0:5fbf51aca95c 5 #include <string.h>
Rhyme 0:5fbf51aca95c 6 #include <stdio.h>
Rhyme 0:5fbf51aca95c 7
Rhyme 0:5fbf51aca95c 8 #define PIN_MOSI PTD2
Rhyme 0:5fbf51aca95c 9 #define PIN_MISO PTD3
Rhyme 0:5fbf51aca95c 10 #define PIN_SCLK PTD1
Rhyme 0:5fbf51aca95c 11 #define PIN_CS_TSC PTA13
Rhyme 0:5fbf51aca95c 12 #define PIN_TSC_INTR PTC9
Rhyme 2:3d2009b507f5 13 #define PIN_MSS_CS PTD0
Rhyme 0:5fbf51aca95c 14
Rhyme 0:5fbf51aca95c 15 int freq = 1000000 ;
Rhyme 0:5fbf51aca95c 16 int bits = 8 ;
Rhyme 0:5fbf51aca95c 17 int mode = 0 ;
Rhyme 0:5fbf51aca95c 18 int loop = 10 ;
Rhyme 0:5fbf51aca95c 19
Rhyme 0:5fbf51aca95c 20 SPI mySpi(PIN_MOSI, PIN_MISO, PIN_SCLK) ;
Rhyme 2:3d2009b507f5 21 DigitalOut cs(PIN_MSS_CS, 1) ;
Rhyme 0:5fbf51aca95c 22
Rhyme 0:5fbf51aca95c 23 typedef void (*func_ptr)(void) ;
Rhyme 0:5fbf51aca95c 24
Rhyme 0:5fbf51aca95c 25 void doHelp(void) ;
Rhyme 0:5fbf51aca95c 26 void doStatus(void) ;
Rhyme 0:5fbf51aca95c 27 void doFreq(void) ;
Rhyme 0:5fbf51aca95c 28 void doMode(void) ;
Rhyme 0:5fbf51aca95c 29 void doBit(void) ;
Rhyme 0:5fbf51aca95c 30 void doWrite(void) ;
Rhyme 0:5fbf51aca95c 31 void doRead(void) ;
Rhyme 0:5fbf51aca95c 32 void doLoop(void) ;
Rhyme 0:5fbf51aca95c 33
Rhyme 0:5fbf51aca95c 34 typedef struct _cmd_func {
Rhyme 0:5fbf51aca95c 35 char *name ;
Rhyme 0:5fbf51aca95c 36 func_ptr func ;
Rhyme 0:5fbf51aca95c 37 } cmd_func_type ;
Rhyme 0:5fbf51aca95c 38
Rhyme 0:5fbf51aca95c 39 cmd_func_type cmd_list[] = {
Rhyme 0:5fbf51aca95c 40 {"help", doHelp},
Rhyme 0:5fbf51aca95c 41 {"status", doStatus},
Rhyme 0:5fbf51aca95c 42 {"freq", doFreq},
Rhyme 0:5fbf51aca95c 43 {"mode", doMode},
Rhyme 0:5fbf51aca95c 44 {"bit", doBit},
Rhyme 0:5fbf51aca95c 45 {"write", doWrite},
Rhyme 0:5fbf51aca95c 46 {"read", doRead},
Rhyme 0:5fbf51aca95c 47 {"loop", doLoop},
Rhyme 0:5fbf51aca95c 48 { 0, 0 }
Rhyme 0:5fbf51aca95c 49 } ;
Rhyme 0:5fbf51aca95c 50
Rhyme 0:5fbf51aca95c 51 func_ptr getFunc(char *cmd)
Rhyme 0:5fbf51aca95c 52 {
Rhyme 0:5fbf51aca95c 53 int i = 0 ;
Rhyme 0:5fbf51aca95c 54 while(cmd_list[i].name != 0) {
Rhyme 0:5fbf51aca95c 55 if (strcmp(cmd, cmd_list[i].name) == 0) {
Rhyme 0:5fbf51aca95c 56 return(cmd_list[i].func) ; ;
Rhyme 0:5fbf51aca95c 57 }
Rhyme 0:5fbf51aca95c 58 i++ ;
Rhyme 0:5fbf51aca95c 59 }
Rhyme 0:5fbf51aca95c 60 return(0) ;
Rhyme 0:5fbf51aca95c 61 }
Rhyme 0:5fbf51aca95c 62
Rhyme 0:5fbf51aca95c 63 void doHello()
Rhyme 0:5fbf51aca95c 64 {
Rhyme 0:5fbf51aca95c 65 printf("=== spi test program ===\n\r") ;
Rhyme 0:5fbf51aca95c 66 printf("please set your terminal program\n\r") ;
Rhyme 0:5fbf51aca95c 67 printf("local echo on\n\r") ;
Rhyme 0:5fbf51aca95c 68 printf("\n\r") ;
Rhyme 0:5fbf51aca95c 69 }
Rhyme 0:5fbf51aca95c 70
Rhyme 0:5fbf51aca95c 71 int main() {
Rhyme 0:5fbf51aca95c 72 char cmd[32] ;
Rhyme 0:5fbf51aca95c 73 func_ptr func ;
Rhyme 0:5fbf51aca95c 74 doHello() ;
Rhyme 0:5fbf51aca95c 75 while(1) {
Rhyme 0:5fbf51aca95c 76 printf("> ") ;
Rhyme 0:5fbf51aca95c 77 scanf("%s", cmd) ;
Rhyme 0:5fbf51aca95c 78 if ((func = getFunc(cmd)) != 0) {
Rhyme 0:5fbf51aca95c 79 (*func)() ;
Rhyme 0:5fbf51aca95c 80 } else {
Rhyme 0:5fbf51aca95c 81 doHelp() ;
Rhyme 0:5fbf51aca95c 82 }
Rhyme 0:5fbf51aca95c 83 printf("\n\r") ;
Rhyme 0:5fbf51aca95c 84 }
Rhyme 0:5fbf51aca95c 85 }
Rhyme 0:5fbf51aca95c 86
Rhyme 0:5fbf51aca95c 87 void doHelp(void)
Rhyme 0:5fbf51aca95c 88 {
Rhyme 0:5fbf51aca95c 89 printf("=== spi test ===\n\r") ;
Rhyme 0:5fbf51aca95c 90 printf("commands available\n\r") ;
Rhyme 0:5fbf51aca95c 91 printf("help\n\r") ;
Rhyme 0:5fbf51aca95c 92 printf("status\n\r") ;
Rhyme 0:5fbf51aca95c 93 printf("freq freq_in_hz\n\r") ;
Rhyme 0:5fbf51aca95c 94 printf("mode (0 | 1 | 2 | 3)\n\r") ;
Rhyme 0:5fbf51aca95c 95 printf("bit (4 - 16)\n\r") ;
Rhyme 0:5fbf51aca95c 96 printf("write value\n\r") ;
Rhyme 0:5fbf51aca95c 97 printf("read\n\r") ;
Rhyme 0:5fbf51aca95c 98 printf("loop number (set repeat number for read/write)\n\r") ;
Rhyme 0:5fbf51aca95c 99 }
Rhyme 0:5fbf51aca95c 100
Rhyme 0:5fbf51aca95c 101 void doStatus(void)
Rhyme 0:5fbf51aca95c 102 {
Rhyme 0:5fbf51aca95c 103 printf("=== Status Report ===\n\r") ;
Rhyme 0:5fbf51aca95c 104 printf("bits: %d\n\r", bits) ;
Rhyme 0:5fbf51aca95c 105 printf("mode: %d\n\r", mode) ;
Rhyme 0:5fbf51aca95c 106 printf("freq: %d Hz\n\r", freq) ;
Rhyme 0:5fbf51aca95c 107 printf("loop: %d\n\r", loop) ;
Rhyme 0:5fbf51aca95c 108 }
Rhyme 0:5fbf51aca95c 109
Rhyme 0:5fbf51aca95c 110 void doFreq(void)
Rhyme 0:5fbf51aca95c 111 {
Rhyme 0:5fbf51aca95c 112 int freq = 0 ;
Rhyme 0:5fbf51aca95c 113 scanf("%d", &freq) ;
Rhyme 0:5fbf51aca95c 114 printf("setting frequency to %d\n\r", freq) ;
Rhyme 0:5fbf51aca95c 115 mySpi.frequency(freq) ;
Rhyme 0:5fbf51aca95c 116 }
Rhyme 0:5fbf51aca95c 117
Rhyme 0:5fbf51aca95c 118 void doMode(void)
Rhyme 0:5fbf51aca95c 119 {
Rhyme 0:5fbf51aca95c 120 scanf("%d", &mode) ;
Rhyme 0:5fbf51aca95c 121 printf("setting format(%d, %d)\n\r",bits, mode) ;
Rhyme 0:5fbf51aca95c 122 mySpi.format(bits, mode) ;
Rhyme 0:5fbf51aca95c 123 }
Rhyme 0:5fbf51aca95c 124
Rhyme 0:5fbf51aca95c 125 void doBit(void)
Rhyme 0:5fbf51aca95c 126 {
Rhyme 0:5fbf51aca95c 127 scanf("%d", &bits) ;
Rhyme 0:5fbf51aca95c 128 printf("setting format(%d, %d)\n\r",bits, mode) ;
Rhyme 0:5fbf51aca95c 129 mySpi.format(bits, mode) ;
Rhyme 0:5fbf51aca95c 130 }
Rhyme 0:5fbf51aca95c 131
Rhyme 0:5fbf51aca95c 132 void doWrite(void)
Rhyme 0:5fbf51aca95c 133 {
Rhyme 0:5fbf51aca95c 134 int value, i ;
Rhyme 2:3d2009b507f5 135 scanf("%X", &value) ;
Rhyme 2:3d2009b507f5 136 printf("writing value 0x%X (%d) \n\r",value, value) ;
Rhyme 2:3d2009b507f5 137 cs = 0 ;
Rhyme 0:5fbf51aca95c 138 for (i = 0 ; i < loop ; i++ ) {
Rhyme 0:5fbf51aca95c 139 mySpi.write(value) ;
Rhyme 0:5fbf51aca95c 140 }
Rhyme 2:3d2009b507f5 141 cs = 1 ;
Rhyme 0:5fbf51aca95c 142 }
Rhyme 0:5fbf51aca95c 143
Rhyme 0:5fbf51aca95c 144 void doRead(void)
Rhyme 0:5fbf51aca95c 145 {
Rhyme 0:5fbf51aca95c 146 int dummy = 0 ;
Rhyme 0:5fbf51aca95c 147 int i ;
Rhyme 0:5fbf51aca95c 148 int value = 0 ;
Rhyme 2:3d2009b507f5 149 cs = 0 ;
Rhyme 0:5fbf51aca95c 150 for (i = 0 ; i < loop ; i++ ) {
Rhyme 0:5fbf51aca95c 151 value = mySpi.write(dummy) ;
Rhyme 0:5fbf51aca95c 152 }
Rhyme 2:3d2009b507f5 153 cs = 1 ;
Rhyme 0:5fbf51aca95c 154 printf("%d\n", value) ;
Rhyme 0:5fbf51aca95c 155 }
Rhyme 0:5fbf51aca95c 156
Rhyme 0:5fbf51aca95c 157 void doLoop(void)
Rhyme 0:5fbf51aca95c 158 {
Rhyme 0:5fbf51aca95c 159 scanf("%d", &loop) ;
Rhyme 0:5fbf51aca95c 160 printf("repeat number has been set to %d\n\r", loop) ;
Rhyme 0:5fbf51aca95c 161 }