How to communicate with Android through USB interface on nRF52820 / nRF52833 / nRF52840

This blog is to describe how to use the nRF52 Series USB interface to communicate with Android host. In the nRF52 Series, nRF52840, nRF52833 and nRF52820 have supported the full speed USB 2.0. Instead of using the Bluetooth Low Energy, they can communicate the date between android host through USB interface. In this blog, I … Continue reading How to communicate with Android through USB interface on nRF52820 / nRF52833 / nRF52840

PDM Microphone on nRF5 Series

This blog is to describe how to add the PDM Microphone on Nordic nRF52 Series. The PDM is started to support on the nRF52832. The pulse density modulation (PDM) module enables input of pulse density modulated signals from external audio frontends, for example, digital microphones. The PDM module generates the PDM clock and supports single-channel … Continue reading PDM Microphone on nRF5 Series

USB Audio Class

This blog is to give some background knowledge on the USB Audio Class. I will try to collect some information from internet about the USB Audio Class 1 and USB Audio Class 2 and then give the description on this blog. Introduction Universal Serial Bus (USB) is a serial bus standard to interface devices. USB … Continue reading USB Audio Class

Advanced Pulse Width Modulation (PWM) on Nordic nRF52 Series

In this blog, I would like to describe more details how to use the PWM module on Nordic nRF52 Series MCU. Basically, nRF52 has started to support hardware PWM modules. If someone would like to generate some complicated duty cycle or waveform, it is better to know how to use the PWM module inside nRF52. … Continue reading Advanced Pulse Width Modulation (PWM) on Nordic nRF52 Series

Using External Flash to Store bonding info on nRF52 Series

This blog is to show how to use the external flash for storing the bonding information instead of using the internal flash. I would base on the Nordic SDK 16.0 and use the nRF52840 DK as the baseline to show how it works. By using the external flash for bonding storage, it can save at … Continue reading Using External Flash to Store bonding info on nRF52 Series

High Speed UART on Nordic nRF52 Series

This blog is to show how to run the high speed UART on Nordic NRF52 Series MCU. I would introduce new advance UART library (libuarte) on the SDK 16.0 which is ready on the production release. Following up the post ( https://jimmywongiot.com/2019/04/17/overview-uart-driver-handling-at-nrf52/), I would like to show another approach how to configure UART on nRF52 … Continue reading High Speed UART on Nordic nRF52 Series

QSPI Flash Read / Write / Erase on nRF52840

Goal This blog is to describe how to use the QSPI flash as the external flash storage. I would introduce some idea how to configure the QSPI flash on the nRF52840 DK board and provide the example code with description on usage. QSPI Driver The Quad Serial Peripheral Interface (QSPI) driver includes two layers: the … Continue reading QSPI Flash Read / Write / Erase on nRF52840

How to store/read the IMAGE files on the nRF52840 DK QSPI flash

This blog is to teach how to store the PNG image (converted to RGB 565) file into the external QSPI flash. Assume all the PNG are 240x320 resolution, I target to use the Adafruit 1947 (ILI9341) board with nRF52840 DK in this demo. The python script can be found at https://github.com/jimmywong2003/PNG-to-RGB565. Convert the PNG Image … Continue reading How to store/read the IMAGE files on the nRF52840 DK QSPI flash

nRF52 TWI EasyDMA with ArrayList

This blog is to introduce how to use the EasyDMA on TWI with Arraylist in order to reduce the MCU wake up and interrupt latency. There are quite a lot of discussion on the devzone past few years. https://devzone.nordicsemi.com/f/nordic-q-a/48198/spi-communication-via-dma-in-background-using-ppi-and-a-timer/https://devzone.nordicsemi.com/f/nordic-q-a/51889/nrf52832-dma-half-transfer-interrupt-and-easydma-arraylisthttps://devzone.nordicsemi.com/f/nordic-q-a/18919/how-to-use-spim-easydma-with-nrf52 EasyDMA EasyDMA is a module implemented by some peripherals to gain direct access to Data RAM. … Continue reading nRF52 TWI EasyDMA with ArrayList

How to use the RTC timer as the Stop Watch at Nordic nRF5 SDK

This blog is to introduce how to use the RTC as the stop watch to measure the timing. On nRF52 Series MCU, it has difference number of timers, RTC as below. nRF5281xnRF52832nRF52833nRF528403x32 bit 16MHz Timer5x32 bit16MHz Timer 5x32 bit16MHz Timer 5x32 bit16MHz Timer 2x32.768kHz RTC 3x32.768kHz RTC 3x32.768kHz RTC 3x32.768kHz RTC Watchdog timer (32.768kHz) Watchdog … Continue reading How to use the RTC timer as the Stop Watch at Nordic nRF5 SDK

LCD Demo 320×240 RGB(565) on nRF52840

This blog is to provide a video demo how fast the Nordic nRF52840 works with LCD display. The idea is to regular poll the touch sensor data and then load the image from QSPI flashto update the LCD screen through high speed SPIM3. I used the Adafruit 1947 board ( ARDUINO / SHIELDS / TFTS & DISPLAYS / 2.8" TFT TOUCH … Continue reading LCD Demo 320×240 RGB(565) on nRF52840

How to count GPIO pin (Raising/Falling) with Timer Counter through PPI

In this blog, I would like to show an example how to count the number of raising / falling edge on particular GPIO pin without running the MCU. For example, we need to count how many pulse from the MCU through GPIO. By using the GPIOTE and Timer Counter Mode through PPI, it can count … Continue reading How to count GPIO pin (Raising/Falling) with Timer Counter through PPI

Power Failure Protection on FDS (Flash Data Storage)

Flash Data Storage moduled has been introduced since SDK 11.0 or later. Comparing to the Pstorge module, it brings some benefits. Using the FILE ID instead of the flash addressReduce the number of flash erase time (by marking the erase page first and then do the garbage collection if need). In this blog, I would … Continue reading Power Failure Protection on FDS (Flash Data Storage)

How to Measure the Battery through SAADC module for Current Optimization

This blog is to mention how to add the battery service and read the VDD through SAADC module. Also, the most important is to optimize the current consumption. SAADC (Successive approximation analog-to-digital converter) The SAADC is a differential successive approximation register (SAR) analog-to-digital converter. It supports up to eight external analog input channels, depending on … Continue reading How to Measure the Battery through SAADC module for Current Optimization