Another short time hack. This one is for test the behavior of the spi module. Probably an Oscilloscope is required to check the wave.

Dependencies:   mbed

/media/uploads/Rhyme/test_spi.jpg

Another short time hack of mine. To check Mr. J's problem, I needed a way to control SPI in a short time. This is an aid for testing SPI module with an Oscilloscope.

You can specify, frequency, bits, mode and number of loops to let the spi write or read.

For FRDM-KL25Z MOSI: PTD2 MISO: PTD3 SCLK:PTD1

Please set "local echo on" in your terminal program.

某JさんのSPIトラブルの様子を確認するのに、作った簡単なSPIテストプログラムです。 オシロスコープでSPIの挙動を見るためのユティリティです。

FRDM-KL25Zの場合、MOSI(PTD2), MISO(PTD3), SCLK(PTD1) で使っています。

ターミナルプログラムのローカルエコーを有効にしてご使用ください。

SPIモジュールの設定(周波数、ビット、モード、そして読み書きのループ回数を設定できます。)

Revision:
2:3d2009b507f5
Parent:
1:6fdc687abb43
Child:
3:ec7a94b41102
--- a/main.cpp	Wed Dec 24 12:05:06 2014 +0000
+++ b/main.cpp	Mon May 16 06:28:42 2016 +0000
@@ -10,6 +10,7 @@
 #define PIN_SCLK        PTD1 
 #define PIN_CS_TSC      PTA13
 #define PIN_TSC_INTR    PTC9
+#define PIN_MSS_CS      PTD0
 
 int freq = 1000000 ;
 int bits = 8 ;
@@ -17,6 +18,7 @@
 int loop = 10 ;
 
 SPI mySpi(PIN_MOSI, PIN_MISO, PIN_SCLK) ;
+DigitalOut cs(PIN_MSS_CS, 1) ;
 
 typedef void (*func_ptr)(void) ;
 
@@ -130,11 +132,13 @@
 void doWrite(void) 
 {
     int value, i ;
-    scanf("%d", &value) ;
-    printf("writing value %d\n\r",value) ;
+    scanf("%X", &value) ;
+    printf("writing value 0x%X (%d) \n\r",value, value) ;
+    cs = 0 ;
     for (i = 0 ; i < loop ; i++ ) {
         mySpi.write(value) ;
     }
+    cs = 1 ;
 }
 
 void doRead(void) 
@@ -142,9 +146,11 @@
     int dummy = 0 ;
     int i ;
     int value = 0 ;
+    cs = 0 ;
     for (i = 0 ; i < loop ; i++ ) {
         value = mySpi.write(dummy) ;
     }
+    cs = 1 ;
     printf("%d\n", value) ;
 }