Motoo Tanaka / Mbed 2 deprecated test_spi

Dependencies:   mbed

Committer:
Rhyme
Date:
Wed Jun 01 07:42:55 2016 +0000
Revision:
3:ec7a94b41102
Parent:
2:3d2009b507f5
MSS supported platforms added. Tested with FRDM-K64F with mbed lib 119

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