Motoo Tanaka / Mbed 2 deprecated test_spi

Dependencies:   mbed

Committer:
Rhyme
Date:
Wed Dec 24 11:56:34 2014 +0000
Revision:
0:5fbf51aca95c
Child:
1:6fdc687abb43
First anyway working version;

Who changed what in which revision?

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