RoadTest: NXP LPCXpresso54S018M + Display
Author: neerajrd82
Creation date:
Evaluation Type: Development Boards & Tools
Did you receive all parts the manufacturer stated would be included in the package?: True
What other parts do you consider comparable to this product?: ST->STM32F479xx; TI->TM4C129XNCZAD; Renesas->R7FA6M3AH3CFP; Silicon labs->EFM32GG11B820F2048GL192; Nuvoton->M487KMCAN; Infineon->XMC4800
What were the biggest problems encountered?: Spirit demo stopped working after running spifi test. CMSIS-DAPLINK debugger was unstable. Before performing Erase & program,Extensive fine tuning of memory address mapped for internal & external flash in Programming Algo.
Detailed Review:
First Impression: LPCXpresso54S018M board arrived preloaded with a “Spirit Level” application and on-board diagnostic software. To run just the Spirit Level demo, i connected the board to my computer using usb connector J1 at the top left of the board. The user LEDs (LED1, LED2 and LED3) glows it indicated if the board is level along the horizontal axis of the board. When i tilted the board towards me only LED1 was glowing. When i tilted the board away from me only LED3 was glowing. This proves that Spirit Level demo loaded inside the chip is working correctly as shown in video:Spirit-level-demo.mp4.
Now, referring to Page no:15 of UM11192 (user manual of this board) , spirit level demo comes with number of internal tests, so i decided to perform those tests as given below:
1. rtc: Performs a test of the RTC crystal. Enter a time for the test to run (in seconds. After the timeout period the test will display a message to confirm the RTC worked correctly. File: rtc.jpg contains the log generated by Docklight when i performed this test.
2. sdram: test on-board sdram. JP14 and JP15 must be set to SDRAM (SD) position for this test to run correctly.File: sdram.jpg contains the log generated by Docklight when i performed this test.
3. ether: Checks for presence of an Ethernet host connection then transmits 20 packets. File: ethernet.jpg contains the log generated by Docklight when i performed this test.
4. led: Tests the ISP buttons and LEDs. Holding down ISP0 will cause light LED3 to blink, ISP1 for LED2 and ISP0 for LED0. File: led-button.jpg contains the log generated by Docklight when i performed this test.
5. spifi: Tests the flash of the LPC54S018J4M.File: spifi.jpg contains the log generated by Docklight when i performed this test.
After performing spifi test, spirit level demo preloaded in target micro-controller, stopped working due to which i was not able to perform all the other remaining tests. Meanwhile,I m figuring out the reason why this demo stopped working altogether. I was also testing the stability of debugger.
This debugger comes with two options, you can program it as CMSIS-DAPLINK debugger or Jlink LPCExpresso debugger
I have downloaded latest version of LPCScrypt & LPCScrypt user manual.
Now referring to LPCScrypt user manual.
i followed this path: drive:\LPCScrypt directory\scripts\
Now, here i found two windows scripts: program_CMSIS.cmd & program_JLINK.cmd.
When i put the debugger in DFU mode by shorting the JP5 & power cycle the board, LED D10 stops blinking & keeps glowing
program_CMSIS.cmd configures debugger hardware as CMSIS-DAPLINK debugger
program_JLINK.cmd configures debugger hardware as Jlink LPCExpresso debugger
It was found on testing the board using power cycling, Jlink LPCExpresso debugger is more stable than CMSIS-DAPLINK debugger.
Reason: CMSIS-DAPLINK debugger was loading USB Human interface device drivers inside windows kernel, which i think it is not required.
Only basic minimum requirement to make CMSIS-DAPLINK stable should be: Basic windows driver of CMSIS-DAPLINK & Virtual COM port , i mean that it should visible in USB devices as CMSIS-DAPLINK & Generic Virtual COM port in COM & LPT section of device manager in Windows. This will make it lighter, stable & faster in response.
Now, i m shifting my focus to Spirit level demo, what went wrong? I m searching for source code of this demo, i will try to re-flash it without any change in source code & cross-examine the same demo again.
After long search , i was unable to find the source code of same.
Important note: I m using Keil-MDK-ARM for compiling the examples. i have followed the path in keil: flash->configure flash tools -> Debug tab->selected Jlink / J-Trace Cortex as debugger -> Utilities tab -> Use debug driver setting -> flash download -> Add Programming Algo "LPC540xxxx W25Q32JvWJx" . Just below Start : 0x00000000 & Size: 0x00400000.The fine tuning of start & size will change as per needs of each example. In some cases, Debugger may not give errors but example will not run still correctly.
Now, I have downloaded various SDK_2.8.2_LPCXpresso54S018M from MCUXpresso SDK website. Again you have look for options you want to explore inside SDK.
My choice is resides in the path: \SDK_2.8.2_LPCXpresso54S018M\boards\lpcxpresso54s018m\driver_examples\.
Here you will find standalone examples of various computer peripherals.
I choose example to run: \SDK_2.8.2_LPCXpresso54S018M\boards\lpcxpresso54s018m\driver_examples\gpio\led_output
I tried to downloaded program in target chip after compilation using both ways CMSIS-DAPLINK & Jlink LPCExpresso.
I was able to see the example working but no led blinking. This was astonishing.
File: gpio_led_output.jpg shows the log received on docklight on running this example.
Today, i choose to run the LCD examples given in the SDK which can be found on below path:
\SDK_2.8.2_LPCXpresso54S018M\boards\lpcxpresso54s018m\driver_examples\lcdc
both example working: lcdc_cursor: File: lcd-cursor-output.jpg shows output generated by this example. You will see moving hand in all directions over red background containing BLACK SQUARE. lcdc_tft : lcd-tft-output.jpg shows output generated by this example. You will see moving rectangle in all directions over black background changing colors: RGB in cyclical fashion.
Emwin examples for LCD: SDK_2.8.2_LPCXpresso54S018M\boards\lpcxpresso54s018m\emwin_examples
working example: emwin_temperature_control
Not working example: emwin_serial_terminal & emwin_slide_show
File: emwin-temperature-control.jpg shows that output of "emwin_temperature_control" example
Further, i was able to find one example of LED blinking on below path:
\SDK_2.8.2_LPCXpresso54S018M\boards\lpcxpresso54s018m\demo_apps\led_blinky. In this example, you will see onboard LED3 blinking. file: led-blinking.mp4 shows the output of this example.
Now, i was able to find one simple example of USART on below path:
\SDK_2.8.2_LPCXpresso54S018M\boards\lpcxpresso54s018m\driver_examples\usart\polling . In this example, you will see simple loopback of USART. file: usart.jpg shows the output of this example.
Another example i was able to run given on below path:
\SDK_2.8.2_LPCXpresso54S018M\boards\lpcxpresso54s018m\demo_apps\touch_cursor. You will see moving hand following the touch screen coordinates over red background squares with black boundaries. Second video: lcd cursor touch screen shows the output of this example.
Now, refering to page no:4 & 7 of LPC54018M-EVK-SCH.pdf (schematics of this board), we found that touch screen interface of LCD is connected with P3_24-FC2_SCLX & P3_23-FC2_SDAX -> this is an I2C interface of target chip. Since touch screen controller is working correctly. Therefore, this proves that I2C is working correctly.
Now, i chosen one ethernet example, which i found on below path:
\SDK_2.8.2_LPCXpresso54S018M\boards\lpcxpresso54s018m\driver_examples\enet\txrx_rxpoll. You will see debugging output of physical layer transmit & receive on Virtual comport created by board on PC. File: enet-output.jpg shows the output of this example.
Now, i chosen one pwm example, which i found on below path:
\SDK_2.8.2_LPCXpresso54S018M\boards\lpcxpresso54s018m\driver_examples\sctimer\pwm_with_dutycyle_change. You will see LED1 on board blinking on FADING UP/DOWN mode. Third video: sctimer pwm with duty cycle change shows the output of this example.
Further, i was putting my focus on SDIO interace fitted on-board but i do not have SD card to check this interface. Currently, i do not have SPI based device & oscilloscope to test SPI interface.
Now, referring to page no: 10 of LPC54018JxM-LPC54S018JxM.pdf (datasheet of target chip) brings us to block diagram of target chip. I noted some unique features:
1. Up to 4 MB of on-chip Quad SPI Serial Flash (connected on SPIFI interface).
2. General-purpose One-Time Programmable (OTP) memory for user application.
3. Secure Boot features on LPC54S018JxM devices.
4. DMIC subsystem includes a dual-channel PDM microphone interface.
BSP: It seems like easy to use but if some special requirement regarding input & final output gets emerged , then programmer may require to reverse engineer some part of BSP. For example: referring to LED blinking example found here: \SDK_2.8.2_LPCXpresso54S018M\boards\lpcxpresso54s018m\demo_apps\led_blinky.
when i sneaked into source code, it was found that:GPIO_PortInit & BOARD_InitPins functions is called first before BOARD_InitBootClocks. I sincerely think that BOARD_InitBootClocks should be called first before calling GPIO_PortInit & BOARD_InitPins. Therefore, NXP is not following basic rules of micro-controller initialization but no denying fact they know this chip better than me.
But this BSP should be easy to customize for those who have spend more than 10 years in Micro-controller field.
Cost: Target chip cost around 3 US$. Fairly much cheapest alternative to any other counter part mentioned above.
Pros:It is pretty good that it is offering Jlink for debugging. This board will be far much cheaper as compared to any other board in this category.
Cons: Board is not designed for beginners. Ease of use is another problem. Preconfigured CMSIS-DAPLINK was unstable. Therefore, to make stable, i need to configure debugger as Jlink->But this should only one time activity for a micro-controller expert. Tactile switch mounted over the board are too small to operate from fingers & LCD will need careful handling while mounting on-board since it is not mounted. Therefore, one should be very careful while operating this board to avoid electrical damage.
SHORT SUMMARY OF WHOLE EXERCISE:
1. SPIRIT LEVEL DEMO: RTC: WORKING
SDRAM :WORKING
ETHERNET :WORKING
LED : WORKING
SPIFI: WORKING -> AFTER this point board stopped working
USB: NOT WORKING
LCD:NOT WORKING
SDCARD: NOT AVAILABLE FOR TESTING
AUDIO: NOT WORKING
2. SDK_2.8.2_LPCXpresso54S018M\SDK_2.8.2_LPCXpresso54S018M\boards\lpcxpresso54s018m\driver_examples\gpio\led_output : Dumping log on Docklight. But No LED Blinking seen.
3. SDK_2.8.2_LPCXpresso54S018M\SDK_2.8.2_LPCXpresso54S018M\boards\lpcxpresso54s018m\driver_examples\lcdc\lcdc_cursor: WORKING
4. SDK_2.8.2_LPCXpresso54S018M\SDK_2.8.2_LPCXpresso54S018M\boards\lpcxpresso54s018m\driver_examples\lcdc\lcdc_tft : WORKING
5. CMSIS-DAPLINK : WORKING BUT UNSTABLE
6. JLINK LPCExpresso: WORKING BETTER THAN CMSIS-DAPLINK
7. SDK_2.8.2_LPCXpresso54S018M\boards\lpcxpresso54s018m\emwin_examples\emwin_serial_terminal : NOT WORKING
8. SDK_2.8.2_LPCXpresso54S018M\boards\lpcxpresso54s018m\emwin_examples\emwin_slide_show : NOT WORKING
9. SDK_2.8.2_LPCXpresso54S018M\boards\lpcxpresso54s018m\emwin_examples\emwin_temperature_control : WORKING
10. SDK_2.8.2_LPCXpresso54S018M\boards\lpcxpresso54s018m\demo_apps\led_blinky: WORKING
11. SDK_2.8.2_LPCXpresso54S018M\boards\lpcxpresso54s018m\driver_examples\usart\polling : WORKING
12. SDK_2.8.2_LPCXpresso54S018M\boards\lpcxpresso54s018m\demo_apps\touch_cursor : WORKING --> LCD INTERFACE & TOUCH SCREEN CONTROLLER INTERFACE (I2C) WORKING CORRECTLY
13. SDK_2.8.2_LPCXpresso54S018M\boards\lpcxpresso54s018m\driver_examples\enet\txrx_rxpoll : WORKING
14. SDK_2.8.2_LPCXpresso54S018M\boards\lpcxpresso54s018m\driver_examples\sctimer\pwm_with_dutycyle_change: WORKING
Note: Some other examples may be working correctly but resources are not available to test but i m trying my best to get those resources.
Last but not the least. Hereby i m concluding my review.
I am thankful for NXP Team for sponsoring this board.
MY WARM REGARDS FOR NXP TEAM
NEERAJ GUPTA
Top Comments
Dear Shabaz,
I haven't received recognitions/rewards/financial benefit of solutions which i have build so far for organizations be it (govt/private/startup) in last 15 years. I saved a lot of money by…
Hi Neeraj,
You have been very thorough, trying so many of the software examples, with different combinations of debugger tools. It is a lot of useful information.
I don't know how I can help, but if you…