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モジュールの設定(周波数、ビット、モード、そして読み書きのループ回数を設定できます。)

Files at this revision

API Documentation at this revision

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

Changed in this revision

MSS.h Show annotated file Show diff for this revision Revisions of this file
main.cpp Show annotated file Show diff for this revision Revisions of this file
mbed.bld Show annotated file Show diff for this revision Revisions of this file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/MSS.h	Wed Jun 01 07:42:55 2016 +0000
@@ -0,0 +1,230 @@
+#ifndef _MSS_H_
+#define _MSS_H_
+
+#if defined (TARGET_KL25Z)
+/* I2C */
+#define PIN_SCL  PTE1
+#define PIN_SDA  PTE0
+/* SPI */
+#define PIN_SCK  PTD1
+#define PIN_MISO PTD3
+#define PIN_MOSI PTD2
+#define PIN_CS0  PTD0
+/* Interrupt */
+#define PIN_INT0 PTD5
+#define PIN_INT1 PTA13
+#define PIN_INT2 PTC9  /* This pin does not support interrupt */
+#define PIN_INT3 PTC8  /* This pin does not support interrupt */
+#define PIN_INT4 PTA5
+#define PIN_INT5 PTA4
+/* Analog Input */
+#define PIN_AN0  PTB0
+#define PIN_AN1  PTB1
+#define PIN_AN2  PTB2
+#define PIN_AN3  PTB3
+#define PIN_AN4  PTC2
+#define PIN_AN5  PTC1
+#define BOARD_NAME "FRDM-KL25Z"
+
+#elif defined (TARGET_KL46Z)
+/* I2C */
+#define PIN_SCL  PTE1
+#define PIN_SDA  PTE0
+/* SPI */
+#define PIN_SCK  PTD5
+#define PIN_MISO PTD7
+#define PIN_MOSI PTD6
+#define PIN_CS0  PTD4
+/* Interrupt */
+#define PIN_INT0 PTD2
+#define PIN_INT1 PTA13
+#define PIN_INT2 PTC9  /* This pin does not support interrupt */
+#define PIN_INT3 PTC8  /* This pin does not support interrupt */
+#define PIN_INT4 PTA5
+#define PIN_INT5 PTA4
+/* Analog Input */
+#define PIN_AN0  PTB0
+#define PIN_AN1  PTB1
+#define PIN_AN2  PTB2
+#define PIN_AN3  PTB3
+#define PIN_AN4  PTC2
+#define PIN_AN5  PTC1
+#define BOARD_NAME "FRDM-KL46Z"
+
+#elif defined (TARGET_K64F)
+/* I2C */
+#define PIN_SCL  PTE24
+#define PIN_SDA  PTE25
+/* SPI */
+#define PIN_SCK  PTD1
+#define PIN_MISO PTD3
+#define PIN_MOSI PTD2
+#define PIN_CS0  PTD0
+/* Interrupt */
+#define PIN_INT0 PTC4
+#define PIN_INT1 PTA0
+#define PIN_INT2 PTC3
+#define PIN_INT3 PTC2
+#define PIN_INT4 PTA2
+#define PIN_INT5 PTB23
+/* Analog Input */
+#define PIN_AN0  PTB2
+#define PIN_AN1  PTB3
+#define PIN_AN2  PTB10
+#define PIN_AN3  PTB11
+#define PIN_AN4  PTC11
+#define PIN_AN5  PTC10
+#define BOARD_NAME "FRDM-K64Z"
+
+/**
+ * NOTE: On FRDM-K22F
+ * Both I2C and UART are assigned to 
+ * the same pins PTE1/PTE0.
+ * So MSS does not work as is.
+ */
+#elif defined (TARGET_K22F) 
+/* I2C */
+#define PIN_SCL  PTE1
+#define PIN_SDA  PTE0
+/* SPI */
+#define PIN_SCK  PTD5
+#define PIN_MISO PTD7
+#define PIN_MOSI PTD6
+#define PIN_CS0  PTD4
+/* Interrupt */
+#define PIN_INT0 PTA1
+#define PIN_INT1 PTB19
+#define PIN_INT2 PTC6
+#define PIN_INT3 PTC3
+#define PIN_INT4 PTB18
+#define PIN_INT5 PTA4
+/* Analog Input */
+#define PIN_AN0  PTB0
+#define PIN_AN1  PTB1
+#define PIN_AN2  PTC1
+#define PIN_AN3  PTC2
+#define PIN_AN4  PTB3
+#define PIN_AN5  PTB2
+#define BOARD_NAME "FRDM-K22F"
+
+#elif defined (TARGET_KL05Z)
+/* I2C */
+#define PIN_SCL  PTB3
+#define PIN_SDA  PTB4
+/* SPI */
+#define PIN_SCK  PTB0
+#define PIN_MISO PTA6
+#define PIN_MOSI PTA7
+#define PIN_CS0  PTA5
+/* Interrupt */
+#define PIN_INT0 PTB11
+#define PIN_INT1 PTB10
+#define PIN_INT2 PTB7
+#define PIN_INT3 PTB6
+#define PIN_INT4 PTA12
+#define PIN_INT5 PTA10
+/* Analog Input */
+#define PIN_AN0  PTB8
+#define PIN_AN1  PTB9
+#define PIN_AN2  PTA8
+#define PIN_AN3  PTA0
+#define PIN_AN4  PTA9
+#define PIN_AN5  PTB13
+#define BOARD_NAME "FRDM-KL05Z"
+
+#elif defined (TARGET_F411RE)
+/* I2C */
+#define PIN_SCL  PB_8
+#define PIN_SDA  PB_9
+/* SPI */
+#define PIN_SCK  PA_5
+#define PIN_MISO PA_6
+#define PIN_MOSI PA_7
+#define PIN_CS0  PB_6
+/* Interrupt */
+#define PIN_INT0 PC_7
+#define PIN_INT1 PA_9
+#define PIN_INT2 PA_8
+#define PIN_INT3 PB_10
+#define PIN_INT4 PB_4
+#define PIN_INT5 PB_5
+/* Analog In */
+#define PIN_AN0  PA_0
+#define PIN_AN1  PA_1
+#define PIN_AN2  PA_4
+#define PIN_AN3  PB_0
+#define PIN_AN4  PC_1
+#define PIN_AN5  PC_0
+#define BOARD_NAME "NUCLEO-F411RE"
+
+#elif defined (TARGET_LPC812)
+/* I2C */
+#define PIN_SCL  P0_11
+#define PIN_SDA  P0_10
+/* SPI */
+#define PIN_SCK  P0_12
+#define PIN_MISO P0_15
+#define PIN_MOSI P0_14
+#define PIN_CS0  P0_13
+/* Interrupt */
+#define PIN_INT0 P0_16
+#define PIN_INT1 P0_17
+#define PIN_INT2 P0_7
+#define PIN_INT3 XP_4
+#define PIN_INT4 XP_5
+#define PIN_INT5 P0_9
+/* Analog In */
+#define PIN_AN0  A0
+#define PIN_AN1  A1
+#define PIN_AN2  A2
+#define PIN_AN3  A3
+#define PIN_AN4  A4
+#define PIN_AN5  A5
+/* MSS on board LEDs */
+#define LED_D1   P0_12
+#define LED_D2   P0_15
+#define LED_D3   P0_14
+#define LED_D4   P0_13
+#define LED_D5   P0_8
+#define LED_D6   P0_6
+#define LED_D7   P0_4
+#define LED_D8   P0_0
+#define BOARD_NAME "NXP_LPC800MAX"
+
+#else
+ #error TARGET NOT DEFINED
+/* I2C */
+#define PIN_SCL  D15
+#define PIN_SDA  D14
+/* SPI */
+#define PIN_SCK  D13
+#define PIN_MISO D12
+#define PIN_MOSI D11
+#define PIN_CS0  D10
+/* Interrupt */
+#define PIN_INT0 D9
+#define PIN_INT1 D8
+#define PIN_INT2 D7
+#define PIN_INT3 D6
+#define PIN_INT4 D5
+#define PIN_INT5 D4
+/* Analog In */
+#define PIN_AN0  A0
+#define PIN_AN1  A1
+#define PIN_AN2  A2
+#define PIN_AN3  A3
+#define PIN_AN4  A4
+#define PIN_AN5  A5
+/* MSS on board LEDs */
+#define LED_D1   D13
+#define LED_D2   D12
+#define LED_D3   D11
+#define LED_D4   D10
+#define LED_D5   D3
+#define LED_D6   D2
+#define LED_D7   D1
+#define LED_D8   D0
+
+#endif
+
+#endif /* _MSS_H_ */
\ No newline at end of file
--- a/main.cpp	Mon May 16 06:28:42 2016 +0000
+++ b/main.cpp	Wed Jun 01 07:42:55 2016 +0000
@@ -4,21 +4,24 @@
 #include "mbed.h"
 #include <string.h>
 #include <stdio.h>
+#include "MSS.h"
 
+#if 0
 #define PIN_MOSI        PTD2
 #define PIN_MISO        PTD3 
 #define PIN_SCLK        PTD1 
 #define PIN_CS_TSC      PTA13
 #define PIN_TSC_INTR    PTC9
 #define PIN_MSS_CS      PTD0
+#endif 
 
 int freq = 1000000 ;
 int bits = 8 ;
 int mode = 0 ;
 int loop = 10 ;
 
-SPI mySpi(PIN_MOSI, PIN_MISO, PIN_SCLK) ;
-DigitalOut cs(PIN_MSS_CS, 1) ;
+SPI mySpi(PIN_MOSI, PIN_MISO, PIN_SCK) ;
+DigitalOut cs(PIN_INT0, 1) ;
 
 typedef void (*func_ptr)(void) ;
 
--- a/mbed.bld	Mon May 16 06:28:42 2016 +0000
+++ b/mbed.bld	Wed Jun 01 07:42:55 2016 +0000
@@ -1,1 +1,1 @@
-http://mbed.org/users/mbed_official/code/mbed/builds/7c328cabac7e
\ No newline at end of file
+http://mbed.org/users/mbed_official/code/mbed/builds/aae6fcc7d9bb
\ No newline at end of file