Another short time hack. This one is for test the behavior of the spi module. Probably an Oscilloscope is required to check the wave.
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モジュールの設定(周波数、ビット、モード、そして読み書きのループ回数を設定できます。)
Diff: main.cpp
- 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) ; }