README
======
This port is for the FRDM-K28F development board that features the
MK28FN2M0VMI15 MCU. The features of the FRDM-K28F board are:
o Kinetis MK28FN2M0VMI15 MCU (ARM Cortex-M4 at150 MHz, 1 MB SRAM, 2 MB flash,
HS and FS USB, 169 MAPBGA package).
o Kinetis K20 MCU (K20DX128VFM5) based OpenSDA circuit.
o Dual-role high-speed and full-speed USB interface with the micro-B USB
connector via the high-speed switch.
o One 256 Mbit (32 MB) on-board QuadSPI memory at 1.8 V.
o One 128 Mbit (16 MB) on-board mobile SDRAM memory at 3.3 V.
o Multiple independent voltage domains: VDD_CORE, VDD, VBAT, and VDDIO_E.
o FlexIO socket which enables you to connect an optional TFT Proto 5"
CAPACITIVE from MikroElektronika (5" display board with capacitive touch).
o Easy access to the MCU input/output through Arduino R3-compatible I/O
connectors to connect external add-on boards.
o Flexible power supply option—OpenSDA v2.2 USB, Kinetis K28 USB, or an
external source.
o FXOS8700CQ—6-axis sensor with accelerometer and magnetometer.
o RGB LED.
o Two mechanical push-buttons for user input and one for the reset.
o Programmable OpenSDA v2.2 debug circuit supporting the DAP-Link interface
software which provides:
- Mass-Storage Device (MSD) flash programming interface.
- CMSIS-DAP debug interface over a driverless USB HID connection providing
run-control debugging and compatibility with the IDE tools.
- Virtual serial port interface.
- Open-source CMSIS-DAP software project.
Contents
========
o STATUS
o Serial Console
o LEDs and Buttons
o Configurations
STATUS
======
2018-05-05: The basic NSH port appears to be fully functional. I do see
one anomaly: There is a significant, long start up delay. This delay
seems to be variable from immediate to several seconds. I have not
studied the cause, but there are the symptoms:
This debug on, I see this output after a reset:
__start: Reset status: 00:00
NuttShell (NSH) NuttX-7.24
nsh> help
help usage: help [-v] [<cmd>]
[ cmp false mkdir rm true
? dirname free mh rmdir uname
basename dd help mount set umount
break df hexdump mv source unset
cat echo kill mw sleep usleep
cd exec ls ps test xd
cp exit mb pwd time
Builtin Apps:
nsh>
The delay occurs between the reset and the __start debug output. __start
is the reset handler so this is very early in the logic. On a reset, it
vectors to __start. That particular debug message is output after most
low-level initialization has occurred. So the delay is something within
the initialization sequence at the beginning of __start. My suspicion is
the delays associated with the clock configuration.
Serial Console
==============
----- --------------- -------------------------------
GPIO LPUART FUNCTION BOARD CONFIGURATION
----- --------------- -------------------------------
PTA1 LPUART0_RX PTA1 GPIO0
PTA15 LPUART0_RX PTA15 FXIO0_D21
PTB14 LPUART0_RX PTB14
PTB16 LPUART0_RX PTB16 SDRAM_D17
PTC25 LPUART0_RX PTC25 LPUART0_RX_TGTMCU
PTD6 LPUART0_RX PTD6 Arduino_D17_ADC0_SE7b
PTA2 LPUART0_TX PTA2 INT
PTA14 LPUART0_TX PTA14 FXIO0_D20
PTB15 LPUART0_TX N/C
PTB17 LPUART0_TX PTB17 SDRAM_D16
PTC24 LPUART0_TX PTC24 LPUART0_TX_TGTMCU
PTD7 LPUART0_TX PTD7 SDRAM_CKE
PTA3 LPUART0_RTS PTA3
PTA17 LPUART0_RTS PTA17 FXIO0_D23
PTB2 LPUART0_RTS PTB2 Arduino_D19_ADC0_SE12/I2C0_SCL/SDRAM_WE
PTB12 LPUART0_RTS PTB12 Arduino_D5_FTM1_CH0/FTM0_CH4
PTC27 LPUART0_RTS PTC27 FXOS8700CQ_RESET
PTD4 LPUART0_RTS PTD4 SDRAM_A10
PTA0 LPUART0_CTS PTA0 K28F_SWD_CLK
PTA16 LPUART0_CTS PTA16 FXIO0_D22
PTB3 LPUART0_CTS PTB3 Arduino_D18_ADC0_SE13/I2C0_SDA/SDRAM_CS0
PTB13 LPUART0_CTS PTB13 Arduino_D6_FTM1_CH1/FTM0_CH5
PTC26 LPUART0_CTS PTC26 FXOS8700CQ_INT
PTD5 LPUART0_CTS PTD5 SDRAM_A9
----- --------------- -------------------------------
PTD8 LPUART1_RX PTD8 FXIO0_D24
PTC3 LPUART1_RX PTC3 CLKOUT
PTE1 LPUART1_RX PTE1 QSPIA0_SCLK
PTC4 LPUART1_TX PTC4 SDRAM_A19
PTD9 LPUART1_TX PTD9 FXIO0_D25
PTE0 LPUART1_TX PTE0 QSPIA0_DATA3
PTD10 LPUART1_RTS PTD10 FXIO0_D26
PTC1 LPUART1_RTS PTC1 SDRAM_A21
PTE3 LPUART1_RTS PTE3 QSPIA0_DATA2
PTC2 LPUART1_CTS PTC1 SDRAM_A21
PTD11 LPUART1_CTS PTD11 FXIO0_D27
PTE2 LPUART1_CTS PTE2 QSPIA0_DATA0
----- --------------- -------------------------------
PTA25 LPUART2_RX PTA25 SDHC0_D0/Arduino_D0_LPUART2_RX
PTD2 LPUART2_RX PTD2 SDRAM_A12
PTE13 LPUART2_RX N/C
PTE17 LPUART2_RX N/C
PTA24 LPUART2_TX PTA24 SDHC0_D1/Arduino_D1_LPUART2_TX
PTD3 LPUART2_TX PTD3 SDRAM_A11
PTE12 LPUART2_TX PTE12 I2S0_TX_BCLK
PTE16 LPUART2_TX N/C
PTD0 LPUART2_RTS PTD0 Button_LLWU_P12
PTA27 LPUART2_RTS PTA27 SDHC0_CMD
PTE19 LPUART2_RTS N/C
PTA26 LPUART2_CTS PTA26 SDHC0_DCLK
PTD1 LPUART2_CTS PTD1 Arduino_D16_ADC0_SE5b
PTE18 LPUART2_CTS N/C
----- --------------- -------------------------------
PTA29 LPUART3_RX PTA29 SDHC0_D2
PTB10 LPUART3_RX PTB10 SDRAM_D19
PTC16 LPUART3_RX PTC16 SDRAM_DQM2
PTE5 LPUART3_RX PTE5 QSPIA0_SS0/USB0_SOF_OUT
PTA28 LPUART3_TX PTA28 SDHC0_D3
PTB11 LPUART3_TX PTB11 SDRAM_D18
PTC17 LPUART3_TX PTC17 SDRAM_DQM3
PTE4 LPUART3_TX PTE4 QSPIA0_DATA1
PTB8 LPUART3_RTS PTB8 SDRAM_D21
PTA31 LPUART3_RTS PTA31
PTC18 LPUART3_RTS PTC18 Arduino_D7
PTE7 LPUART3_RTS PTE7 I2S0_RXD0/LEDRGB_GREEN
PTA30 LPUART3_CTS PTA30
PTB9 LPUART3_CTS PTB9 SDRAM_D20
PTC19 LPUART3_CTS PTC19 Arduino_D8
PTE6 LPUART3_CTS PTE6 I2S0_MCK/LEDRGB_RED
----- --------------- -------------------------------
PTA21 LPUART4_RX PTA21 TE/FXIO0_D9
PTC14 LPUART4_RX PTC14 SDRAM_D25
PTE21 LPUART4_RX N/C
PTA20 LPUART4_TX PTA20 RD/FXIO0_D8
PTC15 LPUART4_TX PTC15 SDRAM_D24
PTE20 LPUART4_TX N/C
PTA23 LPUART4_RTS PTA23 WR/FXIO0_D7
PTC12 LPUART4_RTS PTC12 SDRAM_D27
PTE23 LPUART4_RTS N/C
PTA22 LPUART4_CTS PTA22 CS/FXIO0_D6
PTC13 LPUART4_CTS PTC13 SDRAM_D26
PTE22 LPUART4_CTS N/C
----- --------------- -------------------------------
Arduino RS-232 Shield
---------------------
----- --------------- -------------------------------
GPIO LPUART FUNCTION BOARD CONFIGURATION
----- --------------- -------------------------------
PTA25 LPUART2_RX PTA25 SDHC0_D0/Arduino_D0_LPUART2_RX
PTA24 LPUART2_TX PTA24 SDHC0_D1/Arduino_D1_LPUART2_TX
----- --------------- -------------------------------
Note: PTA24 and PTA25 are shared between Micro SD Card circuit and
Arduino connectors. Remove R106 and R107 or R94 and R11 as necessary to
prevent contention.
Virtual serial port
-------------------
A serial port connection is available between the OpenSDA v2.2 MCU and
pins PTC24 and PTC25 of the K28 MCU:
----- --------------- -------------------------------
GPIO LPUART FUNCTION BOARD CONFIGURATION
----- --------------- -------------------------------
PTC25 LPUART0_RX PTC25 LPUART0_RX_TGTMCU
PTC24 LPUART0_TX PTC24 LPUART0_TX_TGTMCU
----- --------------- -------------------------------
Default Console
---------------
Unless otherwise noted, LPUART0 (the virtual serial port) is the console
used in all Freedom-K28F configurations.
RGB LED
-------
An RGB LED is connected through GPIO as shown below:
LED K28
------ -------------------------------------------------------
RED PTE6
GREEN PTE7
BLUE PTE8
If CONFIG_ARCH_LEDs is defined, then NuttX will control the LED on board
the Freedom K28. Usage of these LEDs is defined in include/board.h and
src/k28_leds.c. The following definitions describe how NuttX controls the
LEDs:
SYMBOL Meaning LED state
RED GREEN BLUE
------------------- ----------------------- -----------------
LED_STARTED NuttX has been started OFF OFF OFF
LED_HEAPALLOCATE Heap has been allocated OFF OFF ON
LED_IRQSENABLED Interrupts enabled OFF OFF ON
LED_STACKCREATED Idle stack created OFF ON OFF
LED_INIRQ In an interrupt (no change)
LED_SIGNAL In a signal handler (no change)
LED_ASSERTION An assertion failed (no change)
LED_PANIC The system has crashed FLASH OFF OFF
LED_IDLE K28 is in sleep mode (Optional, not used)
Buttons
-------
Two push button switches, SW2 and SW3, are available on the FRDM-K28F
board. SW2 is connected to PTA4 and SW3 is connected to PTD0.
Beside the general purpose IO function, both SW2 and SW3 can be used
as a low-leakage wakeup (LLWU) source.
Switch GPIO Function
--------- ---------------------------------------------------------------
SW2 PTA4/NMI_B
SW3 PTD0/LLWU_P12