Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
main.cpp@3:ec7a94b41102, 2016-06-01 (annotated)
- 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?
| User | Revision | Line number | New 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 | } |