Arm Keil MDK v6 Essential and Professional editions are now available to buy as monthly or annual subscriptions from our Developer Tools store. Visit the store to get access to the tools suite today!

  1. Boards
  2. LPCXpresso54114

LPCXpresso54114

NXP
LPCXpresso54114
VSCode with the Arm Keil Studio extension

Accelerate your application development with example projects

Import your chosen project to Keil Studio for VS Code or Keil Studio Cloud, or download for use in Keil uVision.

Learn more about Keil tools
  • i2s_interrupt_record_playback

    µVision AC6

    The I2S example project uses one I2S interface to continuously record input sound to a bufferand another I2S interface to playback the buffer to output - digital loopback.It requires NXP Mic/Audio/Oled Shield with WM8904 codec.It needs to have 1-2 connected on JP3.

    Download Pack
  • i2s_interrupt_transfer

    µVision AC6

    The I2S example project uses one I2S interface to continuously record input sound to a bufferand another I2S interface to playback the buffer to output - digital loopback.It requires NXP Mic/Audio/Oled Shield with WM8904 codec.It needs to have 1-2 connected on JP3.

    Download Pack
  • µVision AC6

    The IAP Flash project is a simple demonstration program of the SDK IAP driver. It erases and programs a portion of on-chip flash memory. A message a printed on the UART terminal as various operations on flash memory are performed.

    Download Pack
  • µVision AC6

    The log demo is used to demonstrate how to use log component. The main function of the demo is to prompt the LOG level string according to the user input log level command.

    Download Pack
  • low_power_cm0plus

    µVision AC6

    The multicore Low Power demo application demonstrates how to leverage the auxiliary core for periodicdata collection from sensors and passing the data to the primary core for further processing.The data from sensors is read with frequency of about 50Hz (every 20ms) by secondary core and storedinto a buffer. When the buffer contains 50 samples from sensors, the secondary core sends an interruptto the primary core to process the data. The primary core computes average values from temperature andpressure and then prints them with last values from other sensors to the console.The reading of data from sensors takes about 3ms, the rest of the time the cores are in deep sleepmode to reduce power consumption. In order to switch to deep sleep mode, the Power APIPOWER_EnterDeepSleep() is used and to wake it up the interrupt from uTick timer is used.When both cores can't go to the deep sleep mode (the primary core processes data or the secondary corereads data from the sensors), the core which has nothing to do goes to sleep mode by WFI. Also, whenthe primary core is switched to the sleep mode, the flash memory is powered down by Power APIPOWER_PowerDownFlash() and before waking up the primary core it is powered on by POWER_PowerUpFlash().The demo is based on:A. Fuks, "Sensor-hub sweet-spot analysis for ultra-low-power always-on operation," 2015 Symposium on VLSI Circuits (VLSI Circuits), Kyoto, 2015, pp. C154-C155.doi: 10.1109/VLSIC.2015.7231247URL: http://ieeexplore.ieee.org/stamp/stamp.jsp?tp=&arnumber=7231247&isnumber=7231231

    Download Pack
  • µVision AC6

    The multicore Low Power demo application demonstrates how to leverage the auxiliary core for periodicdata collection from sensors and passing the data to the primary core for further processing.The data from sensors is read with frequency of about 50Hz (every 20ms) by secondary core and storedinto a buffer. When the buffer contains 50 samples from sensors, the secondary core sends an interruptto the primary core to process the data. The primary core computes average values from temperature andpressure and then prints them with last values from other sensors to the console.The reading of data from sensors takes about 3ms, the rest of the time the cores are in deep sleepmode to reduce power consumption. In order to switch to deep sleep mode, the Power APIPOWER_EnterDeepSleep() is used and to wake it up the interrupt from uTick timer is used.When both cores can't go to the deep sleep mode (the primary core processes data or the secondary corereads data from the sensors), the core which has nothing to do goes to sleep mode by WFI. Also, whenthe primary core is switched to the sleep mode, the flash memory is powered down by Power APIPOWER_PowerDownFlash() and before waking up the primary core it is powered on by POWER_PowerUpFlash().The demo is based on:A. Fuks, "Sensor-hub sweet-spot analysis for ultra-low-power always-on operation," 2015 Symposium on VLSI Circuits (VLSI Circuits), Kyoto, 2015, pp. C154-C155.doi: 10.1109/VLSIC.2015.7231247URL: http://ieeexplore.ieee.org/stamp/stamp.jsp?tp=&arnumber=7231247&isnumber=7231231

    Download Pack
  • µVision AC6

    The lpc_adc_basic example shows how to use LPC ADC driver in the simplest way.In this example, the internal temperature sensor is used to created the input analog signal. When user type in any key from the keyboard, the software trigger API is called to start the conversion. Then it polls the conversion sequence A's flag till the conversion is completed. When the conversion is completed, just print the conversion result to terminal.Project Information1.what are ADC conversion sequences? A conversion sequence is a single pass through a series of A/D conversions performed on a selected set of A/D channels. Software can set-up two independent conversion sequences, either of which can be triggered by software or by a transition on one of the hardware triggers. Each sequence can be triggered by a different hardware trigger. One of these conversion sequences is referred to as the A sequence and the other as the B sequence. It is not necessary to employ both sequences. An optional single-step mode allows advancing through the channels of a sequence one at a time on each successive occurrence of a trigger. The user can select whether a trigger on the B sequence can interrupt an already-in-progress A sequence. The B sequence, however, can never be interrupted by an A trigger. 2. How to use software-triggered conversion? There are two ways that software can trigger a conversion sequence: 1. Start Bit: The first way to software-trigger an sequence is by setting the START bit in the corresponding SEQn_CTRL register. The response to this is identical to occurrence of a hardware trigger on that sequence. Specifically, one cycle of conversions through that conversion sequence will be immediately triggered except as indicated above. (In this example, we use this way.) 2. Burst Mode: The other way to initiate conversions is to set the BURST bit in the SEQn_CTRL register. As long as this bit is 1 the designated conversion sequence will be continuously and repetitively cycled through. Any new software or hardware trigger on this sequence will be ignored. Program Flow1.This example demonstrates how to configure the A sequences with polling, assigning one channel with software trigger, you can configure channel via "DEMO_ADC_SAMPLE_CHANNEL_NUMBER". 2.Before configuration of the ADC begins, the ADC is put through a self-calibration cycle. 3.After ADC channels are assigned to each of the sequences, the software trigger is chosen. Setting SEQA_CTRL_START to '1' will trigger sequence A. 4.After ADC channels are assigned to each of the sequences, if the user enters any key via terminal, software trigger will start. 5.Read the corresponding DATAVALID field with polling to judge whether the conversion completes and the result is ready. If the result is ready, the example will printf result information to terminal.

    Download Pack
  • µVision AC6

    The lpc_adc_burst example shows how to use LPC ADC driver with the burst mode.In this example, the internal temperature sensor is used to created the input analog signal.When user type in any key from the keyboard, the burst mode is enabled. Then the conversion sequence A would be started automatically, till the burst would be disabled in conversion completed ISR. Project Information1.what are ADC conversion sequences? A conversion sequence is a single pass through a series of A/D conversions performed on a selected set of A/D channels. Software can set-up two independent conversion sequences, either of which can be triggered by software or by a transition on one of the hardware triggers. Each sequence can be triggered by a different hardware trigger. One of these conversion sequences is referred to as the A sequence and the other as the B sequence. It is not necessary to employ both sequences. An optional single-step mode allows advancing through the channels of a sequence one at a time on each successive occurrence of a trigger. The user can select whether a trigger on the B sequence can interrupt an already-in-progress A sequence. The B sequence, however, can never be interrupted by an A trigger. 2. How to use software-triggered conversion? There are two ways that software can trigger a conversion sequence: 1. Start Bit: The first way to software-trigger an sequence is by setting the START bit in the corresponding SEQn_CTRL register. The response to this is identical to occurrence of a hardware trigger on that sequence. Specifically, one cycle of conversions through that conversion sequence will be immediately triggered except as indicated above. 2. Burst Mode: The other way to initiate conversions is to set the BURST bit in the SEQn_CTRL register. As long as this bit is 1 the designated conversion sequence will be continuously and repetitively cycled through. Any new software or hardware trigger on this sequence will be ignored. (In this example, we use this way.) 3. What kinds of interrupt do ADC have? There are four interrupts that can be generated by the ADC: • Conversion-Complete or Sequence-Complete interrupts for sequences A and B • Threshold-Compare Out-of-Range Interrupt • Data Overrun Interrupt Any of these interrupt requests may be individually enabled or disabled in the INTEN register. Program Flow1.This example demonstrates how to configure the A sequences with burst mode, you can configure channel via "DEMO_ADC_SAMPLE_CHANNEL_NUMBER". 2.Before configuration of the ADC begins, the ADC is put through a self-calibration cycle. 3.Enable the Conversion-Complete or Sequence-Complete interrupt for sequences A. 4.After ADC channels are assigned to each of the sequences, if the user enters any key via terminal, burst mode will start. 5.When the first conversion completes, the interrupt would be triggered. The ISR will stop the burst mode and print conversion result to terminal.

    Download Pack
  • µVision AC6

    The lpc_adc_dma example shows how to use LPC ADC driver with DMA.In this example, the internal temperature sensor is used to created the input analog signal. When user type in any key from the keyboard, the software trigger API is called to start the conversion. When the ADC conversion is completed, it would trigger the DMA to move the ADC conversion result from ADC conversion data register to user indicated memory. Then the main loop waits for the transfer to be done and print the result to terminal.Project Information1.what are ADC conversion sequences? A conversion sequence is a single pass through a series of A/D conversions performed on a selected set of A/D channels. Software can set-up two independent conversion sequences, either of which can be triggered by software or by a transition on one of the hardware triggers. Each sequence can be triggered by a different hardware trigger. One of these conversion sequences is referred to as the A sequence and the other as the B sequence. It is not necessary to employ both sequences. An optional single-step mode allows advancing through the channels of a sequence one at a time on each successive occurrence of a trigger. The user can select whether a trigger on the B sequence can interrupt an already-in-progress A sequence. The B sequence, however, can never be interrupted by an A trigger. 2. How to use software-triggered conversion? There are two ways that software can trigger a conversion sequence: 1. Start Bit: The first way to software-trigger an sequence is by setting the START bit in the corresponding SEQn_CTRL register. The response to this is identical to occurrence of a hardware trigger on that sequence. Specifically, one cycle of conversions through that conversion sequence will be immediately triggered except as indicated above. (In this example, we use this way.) 2. Burst Mode: The other way to initiate conversions is to set the BURST bit in the SEQn_CTRL register. As long as this bit is 1 the designated conversion sequence will be continuously and repetitively cycled through. Any new software or hardware trigger on this sequence will be ignored. 3. How to use DMA to work with ADC? The sequence-A or sequence-B conversion/sequence-complete interrupts may also be used to generate a DMA trigger. To trigger a DMA transfer, the same conditions must be met as the conditions for generating an interrupt. Remark: If the DMA is used, the ADC interrupt must be disabled in the NVIC. Program Flow1.This example demonstrates how to configure the A sequences with interrupt, assigning one channel with software trigger, you can configure channel via "DEMO_ADC_SAMPLE_CHANNEL_NUMBER". 2.Before configuration of the ADC begins, the ADC is put through a self-calibration cycle. 3.Configure the DMA and DMAMUX to work with ADC sequences.4.Enable the Conversion-Complete or Sequence-Complete DMA for sequences A. 5.After ADC channels are assigned to each of the sequences, if the user enters any key via terminal, software trigger will start. 6.When the conversion completes, the DMA would be requested.7.When the DMA transfer completes, DMA will trigger a interrupt. ISR would set the "bDmaTransferDone" to 'true'. Then main function will print conversion result to terminal.

    Download Pack
  • mailbox_interrupt_cm0plus

    µVision AC6

    The mailbox_interrupt example shows how to use mailbox to exchange message.In this example:The core 0(CM4) writes value to mailbox for Core 1(CM0+), it causes mailbox interrupton CM0+ side. CM0+ reads value from mailbox increments and writes it to mailbox registerfor CM4, it causes mailbox interrupt on CM4 side. CM4 reads value from mailbox incrementsand writes it to mailbox register for CM0 again.

    Download Pack