Get Started with the NXP i.MX RT1010 Development Kit

Page 1

> LED and LCDs > ADC > I2C > SPI > PWM > UART > Motor Control > Audio and Digital Audio Processing (DSP)

About the Author Prof Dr Dogan Ibrahim has a BSc degree in electronic engineering, an MSc degree in automatic control engineering, and a PhD degree in digital signal processing. Dogan has worked in many industrial organizations before he returned to academic life. Prof Ibrahim is the author of over 60 technical books and over 200 technical articles on microcontrollers, microprocessors, and related fields. He is a Chartered electrical engineer and a Fellow of the Institution of Engineering Technology.

Get Started with the NXP i.MX RT1010 Development Kit

Conveniently, several on-board debug probes are supplied with the kit allowing you to debug your programs by talking directly to the MCU. Helped by the debugger, you can single-step through a program, insert breakpoints, view and modify variables, and so on. Using the MCUXpresso IDE and the SDK, many working and tested projects are developed in the book based on parts, modules, and technologies, including:

H0W2

At the heart of NXP Semiconductors‘ MIMXRT1010 Development Kit is the i.MX RT1010 Crossover MCU sporting an Arm Cortex-M7 core truly capable of running power- and memory hungry DSP applications. The popular MCUXpresso IDE is key to creating software for the development kit, while a powerful SDK is provided to reduce program development time and effort. The dev kit offers great connectivity through its audio CODECs, 4-way headphone jack, external speaker connection, microphone, and Arduino interface.

H0W2

Volume 3

Get Started with the NXP i.MX RT1010 Development Kit Develop Arm® Cortex®-M7 powered Audio, DSP and Motor Control Projects

Dogan Ibrahim

Dogan Ibrahim

Elektor International Media www.elektor.com

3 Cover HOW2 - Getting Started With NXP iMX Development Board.indd 3

knows how

26-10-2023 10:14


● This is an Elektor Publication. Elektor is the media brand of Elektor International Media B.V.

PO Box 11, NL-6114-ZG Susteren, The Netherlands Phone: +31 46 4389444

● All rights reserved. No part of this book may be reproduced in any material form, including photocopying, or

storing in any medium by electronic means and whether or not transiently or incidentally to some other use of this publication, without the written permission of the copyright holder except in accordance with the provisions of the Copyright Designs and Patents Act 1988 or under the terms of a licence issued by the Copyright Licencing Agency Ltd., 90 Tottenham Court Road, London, England W1P 9HE. Applications for the copyright holder's permission to reproduce any part of the publication should be addressed to the publishers.

● Declaration The author, editor, and publisher have used their best efforts in ensuring the correctness of the information contained in this book. They do not assume, and hereby disclaim, any liability to any party for any loss or damage caused by errors or omissions in this book, whether such errors or omissions result from negligence, accident or any other cause. All the programs given in the book are Copyright of the Author and Elektor International Media. These programs may only be used for educational purposes. Written permission from the Author or Elektor must be obtained before any of these programs can be used for commercial purposes.

● British Library Cataloguing in Publication Data

A catalogue record for this book is available from the British Library

● ISBN 978-3-89576-582-7 Print ISBN 978-3-89576-583-4

eBook

● © Copyright 2023: Elektor International Media B.V. Editor: Clemens Valens

Prepress Production: D-Vision, Julian van den Berg Print: Ipskamp Printing, Enschede (NL)

Elektor is the world's leading source of essential technical information and electronics products for pro engineers, electronics designers, and the companies seeking to engage them. Each day, our international team develops and delivers high-quality content - via a variety of media channels (including magazines, video, digital media, and social media) in several languages - relating to electronics design and DIY electronics. www.elektormagazine.com

●4

Getting Started with NXP i.MX Development Board - UK.indd 4

26-10-2023 09:34


Contents

Contents Preface . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9 Chapter 1 • The MIMXRT1010 Evaluation Kit (EVK) . . . . . . . . . . . . . . . . . . . . . . . . 10 1.1 Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10 1.2 The MIMXRT1010 Evaluation Kit hardware . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10 1.2.1 The i.MX RT1010 processor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11 1.2.2 ON/OFF button . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12 1.2.3 Reset button . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12 1.2.4 User button . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13 1.2.5 LED indicators . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13 1.2.6 JTAG connector . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13 1.2.7 Audio input/output connector . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13 1.2.8 Power supply . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13 1.2.9 Digital and analog modules . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14 1.3 Getting started . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15 Chapter 2 • Installing the Mcuxpresso Software . . . . . . . . . . . . . . . . . . . . . . . . . . 16 2.1 Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16 2.2 Installing the MCUXpresso SDK and IDE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16 2.3 Testing the installation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17 2.4 Creating a project from scratch . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23 2.6 Importing an exported project . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27 2.7 MCUXpresso for Visual Studio Code . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28 Chapter 3 • Simple Program Examples and Debugging . . . . . . . . . . . . . . . . . . . . . 30 3.1 Software only programs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30 3.2 Example 1 – Sum of integer numbers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30 3.3 Example 2 – Table of squares . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33 3.4 Example 3 – Centigrade to Fahrenheit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34 3.5 Example 4 – Times table . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36 3.6 Example 5 – Table of trigonometric sine . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38 3.7 Example 6 – Table of trigonometric sine, cosine and tangent . . . . . . . . . . . . . . . . 40 3.8 Example 7 – Integer calculator . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42

●5

Getting Started with NXP i.MX Development Board - UK.indd 5

26-10-2023 09:34


Get Started with the NXP i.MX RT1010 Development Kit 3.9 Example 8 – Solution of a quadratic equation . . . . . . . . . . . . . . . . . . . . . . . . . . . 44 3.10 Example 9 – Squares and cubes of numbers . . . . . . . . . . . . . . . . . . . . . . . . . . 46 3.11 Example 10 – Factorial of a number . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48 3.12 Debugging a project . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50 3.12.1 Example debug session . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52 Chapter 4 • LED Projects . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56 4.1 Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56 4.2 Project 1 – Flashing an external LED . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 58 4.3 Project 2 – LED flashing as Morse SOS signal . . . . . . . . . . . . . . . . . . . . . . . . . . . 64 4.4 Project 3 – Alternately flashing two LEDs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 66 4.5 Project 4 – Chasing LEDs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 70 4.5.1 More efficient program . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75 4.5.2 Using PortClear and PortSet functions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 77 4.6 Project 5 – Binary counting LEDs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 80 4.7 Project 6 – Random flashing LEDs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 83 4.8 Project 7 – Lucky day of the week . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 86 4.9 Project 8 – Binary up/down counter with LEDs . . . . . . . . . . . . . . . . . . . . . . . . . . 90 4.10 Project 9 – Binary event counter with LEDs . . . . . . . . . . . . . . . . . . . . . . . . . . . 93 Chapter 5 • 7-Segment LED Displays . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 96 5.1 Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 96 5.2 7-Segment LED display structure . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 96 5.3 Project 1 – 7-Segment 1-digit LED counter . . . . . . . . . . . . . . . . . . . . . . . . . . . . 98 5.4 Project 2 – 7-Segment 4-digit multiplexed LED display . . . . . . . . . . . . . . . . . . . 102 5.5 Project 3 – 7-Segment 4-digit multiplexed LED display counter – timer interrupts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 109 5.6 Project 4 – 7-Segment 4-digit multiplexed LED display counter – blanking leading zeroes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 113 Chapter 6 • Using Serial Communication . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 117 6.1 Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 117 6.2 Project 1 – Serial communication between the MIMXRT1010-EVK Development Kit and an Arduino UNO . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 119 Chapter 7 • I²C Bus Interface . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 124 7.1 Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 124

●6

Getting Started with NXP i.MX Development Board - UK.indd 6

26-10-2023 09:34


Contents 7.2 The I²C Bus . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 124 7.3 Project 1 – Port expander . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 125 7.4 Project 2 – TMP102 temperature sensor chip . . . . . . . . . . . . . . . . . . . . . . . . . . 135 Chapter 8 • SPI Bus Interface . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 145 8.1 Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 145 8.2 Project 1 – Port expander . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 146 Chapter 9 • Using LCDs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 156 9.1 Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 156 9.2 The HD44780 LCD module . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 156 9.3 Project 1 – Displaying text on LCD . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 158 9.4 Project 2 – Using LCDs – simple up counter . . . . . . . . . . . . . . . . . . . . . . . . . . . 167 9.5 Including the LCD codes in a program . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 174 9.6 Project 3 – Using LCDs – simple up counter – including LCD header file . . . . . . . 180 9.7 Project 4 – LCD-based conveyor belt goods counter . . . . . . . . . . . . . . . . . . . . . 182 9.8 Project 5 – Event counter – using external interrupts . . . . . . . . . . . . . . . . . . . . 187 Chapter 10 • Analog-To-Digital Converter (ADC) . . . . . . . . . . . . . . . . . . . . . . . . . 191 10.1 Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 191 10.2 Project 1 – Voltmeter . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 191 10.3 Project 2 – Analog temperature sensor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 196 10.4 Project 3 – ON/OFF temperature controller . . . . . . . . . . . . . . . . . . . . . . . . . . 201 10.5 Project 4 – ON/OFF temperature controller – using LCD . . . . . . . . . . . . . . . . . . 206 10.6 Project 5 – Measuring the ambient light intensity . . . . . . . . . . . . . . . . . . . . . . 211 10.7 Project 6 – Ohmmeter . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 214 Chapter 11 • Using Pulse Width Modulation (PWM) . . . . . . . . . . . . . . . . . . . . . . . 220 11.1 Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 220 11.2 Basic theory of the pulse width modulation . . . . . . . . . . . . . . . . . . . . . . . . . . 220 11.3 Features of the i.MXRT1010 processor PWM . . . . . . . . . . . . . . . . . . . . . . . . . . 222 11.4 Operation of the PWM . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 222 11.5 Project 1 – Mosquito repeller . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 225 Chapter 12 • Electric Motors . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 232 12.1 Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 232 12.2 Project 1 – Two-speed motor speed control . . . . . . . . . . . . . . . . . . . . . . . . . . 232

●7

Getting Started with NXP i.MX Development Board - UK.indd 7

26-10-2023 09:34


Get Started with the NXP i.MX RT1010 Development Kit 12.3 Project 2 – Varying the motor speed . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 238 12.4 Project 3 – Changing the speed and motor direction . . . . . . . . . . . . . . . . . . . . 244 Chapter 13 • Using the CMSIS-DSP Library. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 254 13.1 Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 254 13.2 Project 1 – Matrix addition, multiplication, and transpose . . . . . . . . . . . . . . . . 255 Chapter 14 • Sound and Audio Signal Processing (DSP) . . . . . . . . . . . . . . . . . . . 262 14.1 Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 262 14.2 Analog and digital audio sound . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 262 14.3 Digital audio sound file formats . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 263 14.3.1 Uncompressed audio file formats . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 263 14.3.2 Audio files with lossy compressions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 264 14.3.3 Audio files with lossless compressions . . . . . . . . . . . . . . . . . . . . . . . . . . . . 264 14.3.4 Which audio file format to choose? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 265 14.3.5 High-quality digital audio sound . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 265 14.4 Audio digital signal processing (Audio DSP) . . . . . . . . . . . . . . . . . . . . . . . . . . 265 14.4.1 The SAI module . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 266 14.4.2 The I2S bus . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 266 14.4.3 The SAI bus . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 269 14.5 MIMXRT1010-EVK development kit audio demo project files . . . . . . . . . . . . . . 269 Chapter 15 • References . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 273 Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 274

●8

Getting Started with NXP i.MX Development Board - UK.indd 8

26-10-2023 09:34


Preface It is becoming important for microcontroller users to adapt to new technologies quickly and learn the architecture and use of high-performance 32-bit microcontrollers. Several manufacturers offer 32-bit microcontrollers as general-purpose processors in embedded applications. For example, companies like NXP Semiconductors, STMicroelectronics and several others offer Arm-based processors for high-speed professional applications. Arm offers 32-bit and 64-bit processors, mainly for embedded applications. Nowadays, the majority of mobile devices such as mobile phones, tablets, and GPS receivers are based on Arm processors. The low cost, low-power consumption, and high performance of Arm processors make them ideal candidates for use in complex communication and mixed-signal applications. This book is about the use of the MIMXRT1010-EVK development kit developed by NXP Semiconductors. This is a two-layer low-cost through-hole USB-powered PCB. At its heart lies the i.MX RT1010 crossover MCU in an 80LQFP package, featuring NXP's advanced implementation of the Arm Cortex-M7 core. This core operates at speeds of up to 500 MHz to provide high CPU performance and best real-time response. It is supported by Zephyr OS for developing the Internet of Things with a free, open-source embedded operating system. The popular MCUXpresso IDE can be used for the development of software for the development kit. Additionally, a powerful SDK is provided which simplifies program development greatly. The kit is shipped with the MIMXRT1011DAE5A MCU, providing 128-Mbit QSPI flash memory, 64 KB ROM, 128 KB RAM, audio codec, 4-way headphone jack, external speaker connection, microphone, ADC, UART, SPI, I2C and additional peripheral support. The board also supports Arduino UNO form factor header pins, making it compatible with many Arduino shields, though NXP also provides dedicated shields for brushless DC and PMSM motor control and LED matrix driver applications. Conveniently, several on-board debug probes are supplied with the kit allowing you to debug your programs by talking directly to the MCU. Helped by the debugger, you can single step through a program, insert breakpoints, view and modify variables and so on. Many working and tested projects have been developed in the book using the popular MCUXpresso IDE and the SDK with various sensors and actuators. The project descriptions, block diagrams, circuit diagrams, complete program listings, and detailed descriptions of all the developed programs are given in the book for all the projects. Use of the popular CMSIS-DSP library is also explained with several matrix operations. The author hopes that readers use the MIMXRT1010-EVK development kit in their future projects. The projects provided in the book can be used without modifications in many applications. Alternatively, readers can base their projects on the ones provided in the book during the development of their projects. Hope you enjoy reading the book. Dr. Dogan Ibrahim London, 2023

●9

Getting Started with NXP i.MX Development Board - UK.indd 9

26-10-2023 09:34


Get Started with the NXP i.MX RT1010 Development Kit

Chapter 1 • The MIMXRT1010 Evaluation Kit (EVK) 1.1 Overview The MIMXRT1010 Evaluation Kit (EVK) is an entry-level board, based on the NXP Semiconductor i.MX RT1010 Processor that is fully supported by NXP Semiconductor. This book provides detailed information and various projects on using this evaluation kit. In this chapter you will get to know the most commonly used features of the MIMXRT1010 Evaluation Kit.

1.2 The MIMXRT1010 Evaluation Kit hardware Figure 1.1 shows the MIMXRT1010 evaluation kit. The board features are shown in Table 1.1. The board includes the i.MX RT1010 500 MHz ARM Cortex-M7 Core processor, a large amount of memory, audio (SPDIF and I2S), debug, and USB connectors, Arduino compatible interface, user button, user LED, and a motion sensor.

Table 1.1 MIMXRT1010 board features

● 10

Getting Started with NXP i.MX Development Board - UK.indd 10

26-10-2023 09:34


Chapter 1 • The MIMXRT1010 Evaluation Kit (EVK)

Figure 1.1 The MIMXRT Evaluation Kit. Figure 1.2 shows the block diagram of the Evaluation Kit.

Figure 1.2 Block diagram of the Evaluation Kit.

1.2.1 The i.MX RT1010 processor At the heart of the evaluation kit is the ARM Cortex-M7 Core i.MX RT1010 processor. This is a fast 500 MHz processor with the following features (see Figure 1.3): • Full-featured Floating-Point Unit (FPU) • 128 KB on-chip RAM • 64 KB boot ROM • External memory interface

● 11

Getting Started with NXP i.MX Development Board - UK.indd 11

26-10-2023 09:34


Get Started with the NXP i.MX RT1010 Development Kit

• Two General Programmable Timers (GPT), 4-channel 32-bit resolution each • 4× Watchdogs • 4× Periodic Interrupt Timer (PIT) • FlexPWM • SPDIF audio input and output • 2× I2S, AC97, TDM and Codec/DSP audio interfaces • MQS medium quality audio interface (via GPIO ports) • 2× I2C and 2 x SPI interfaces • 4× UART interfaces • 1× 15-channel Analog-to-Digital Converter (ADC) • 44× GPIO with interrupt capability and FlexIO • Temperature sensor with programmable trim points • Arm® Cortex®-M7 CoreSight debug and trace architecture • Trace Port Interface Unit (TPIU) to support off-chip real-time trace • Support for 5-pin JTAG and SWD debug interfaces • AES-128, SHA-1, SHA-256 and CRC-32 • True random number generation (TRNG) • Real-time clock (RTC) • Secure JTAG controller • Power management controller

Figure 1.3 Features of the i.MXRT 1010 MCU.

1.2.2 ON/OFF button A short pressing of the ON/OFF button turns ON power to the board. A short pressing while in the ON mode generates an interrupt. To turn OFF power, keep the button pressed for approximately 5 seconds.

1.2.3 Reset button There are two Reset buttons. SW9 is the Power Reset button. Pressing the SW9 in the Power ON state will force resetting the system power except for the SNVS domain. The processor will be immediately turned OFF and reinitiate a boot cycle from the Processor Power OFF state. SW3 is the standard POR Reset button.

● 12

Getting Started with NXP i.MX Development Board - UK.indd 12

26-10-2023 09:34


Chapter 1 • The MIMXRT1010 Evaluation Kit (EVK)

1.2.4 User button SW4 is the user button (see Figure 1.1) (GPIO_SD_05 by default) to be used by the developers. Pressing this button changes the state of the port from logic HIGH to LOW.

1.2.5 LED indicators The following LEDs are mounted on the board: • User LED at D25 (turned ON when logic HIGH is applied to GPIO_11) • Main power LED at D27 • Reset LED at D7 • OpenSDA LED at D5

1.2.6 JTAG connector J55 is a standard 10-pin/1.27 mm boxheader Connector for JTAG. The pin definitions are shown in Figure 1.4, support SWD by default.

Figure 1.4 JTAG pin definitions.

1.2.7 Audio input/output connector The audio CODEC used on the MIMXRT1010 EVK Board is Wolfson's Low Power, high-quality Stereo Codec, WM8960. The MIMXRT1010 EVK Board includes one headphone interface (J11), one on-board MIC (P1), two speaker interfaces (J12, J13), and the SPDIF interface (top of the board, J52 & J53, DNP). J11 is a 3.5 mm audio stereo headphone jack, which supports jack detect.

1.2.8 Power supply J41 and J9 (see Figure 1.1) can be used to power the EVK Board. A 5 VDC external power supply can also be used to power the EVK Board by connecting two pins in J1. Different power supplies need different jumper settings of J1. Table 1.2 shows the details.

Table 1.2 Power selection.

● 13

Getting Started with NXP i.MX Development Board - UK.indd 13

26-10-2023 09:34


Get Started with the NXP i.MX RT1010 Development Kit

1.2.9 Digital and analog modules The i.MX RT1010 processors contain various digital and analog modules. A list of all the modules is detailed in the following NXP document: i.MX RT1010 Crossover Processors Data Sheet for Industrial Products, Document Number: IMXRT1010IEC Rev. 0, 09/2019 Some modules are described below. ADC1: The ADC is a 12-bit general-purpose analog to digital converter. DAP: The DAP provides real-time access for the debugger without halting the core to: System memory and peripheral registers and all debug configuration registers. The DAP also provides debugger access to JTAG scan chains. The DAP module is internal to the Cortex-M7 Core Platform. FlexIO1: The FlexIO is capable of supporting a wide range of protocols including, but not limited to: UART, I2C, SPI, I2S, camera interface, display interface, PWM waveform generation, etc. The module can remain functional when the chip is in a low-power mode, provided the clock it is using remains active. FlexPWM1: The pulse-width modulator (PWM) contains four PWM submodules, each of which is set up to control a single half-bridge power stage. Fault channel support is provided. The PWM module can generate various switching patterns, including highly sophisticated waveforms. FlexSPI: FlexSPI acts as an interface to one or two external serial flash devices, each with up to four bidirectional data lines. GPIO1 GPIO2 GPIO5: Used for general purpose input/output to external ICs. Each GPIO module supports up to 32 bits of I/O. GPT1 GPT2: Each GPT is a 32-bit 'free running' or 'set and forget' mode timer with programmable prescaler and compare and capture register. A timer counter value can be captured using an external event and can be configured to trigger a capture event on either the leading or trailing edges of an input pulse. When the timer is configured to operate in 'set and forget' mode, it is capable of providing precise interrupts at regular intervals with minimal processor intervention. The counter has output compare logic to provide the status and interrupt at comparison. This timer can be configured to run either on an external clock or on an internal clock. KPP: The KPP is a 16-bit peripheral that can be used as a keypad matrix interface or as general-purpose input/output (I/O). It supports an 8 × 8 external keypad matrix. The main features are: Multiple-key detection, long key-press detection, Standby key-press detection. Supports a 2-point and 3-point contact key matrix.

● 14

Getting Started with NXP i.MX Development Board - UK.indd 14

26-10-2023 09:34


Chapter 1 • The MIMXRT1010 Evaluation Kit (EVK)

LPI2C1 LPI2C2: The LPI2C is a low power Inter-Integrated Circuit (I²C) module that supports an efficient interface to an I²C bus as a master. The I²C provides a method of communication between a number of external devices. LPUART1 LPUART2 LPUART3 LPUART4: Each of the UART modules support the following serial data transmit/receive protocols and configurations: 7- bit or 8-bit data words, 1 or 2 stop bits, programmable parity (even, odd or none) and programmable baud rates up to 5 Mbps. PIT: The PIT features a 32-bit counter timer, programmable count modules, clock division, interrupt generation, and a slave mode to synchronize count enable for multiple PITs. SAI1 SAI3: The SAI module provides a synchronous audio interface (SAI) that supports full duplex serial interfaces with frame synchronization, such as I2S, AC97, TDM, and codec/ DSP interfaces. SA-TRNG: The SA-TRNG is a hardware accelerator that generates a 512-bit entropy as needed by an entropy consuming module or by other post-processing functions. Temp Monitor: The temperature sensor implements a temperature sensor/conversion function based on a temperature-dependent voltage to time conversion. WDOG1 WDOG2 WDOG3: The Watch Dog Timer supports two comparison points during each counting period. Each of the comparison points is configurable to evoke an interrupt to the Arm core, and a second point evokes an external event on the WDOG line.

1.3 Getting started The board is supplied with a Micro-B USB cable. A demo program is preloaded to the demo kit. Connect the board to a PC using the supplied cable. The demo program flashes the on-board LED. Figure 1.5 shows connecting the board to a PC. The green user LED at the central part of the board should start to flash.

Figure 1.5 Connecting the board to a PC.

● 15

Getting Started with NXP i.MX Development Board - UK.indd 15

26-10-2023 09:34


Get Started with the NXP i.MX RT1010 Development Kit

Chapter 2 • I nstalling the MCUXpresso Software Development Kit (SDK) 2.1 Overview In this book, we will be using the MCUXpresso SDK and the IDE for developing projects using the development board. MCUXpresso IDE is an Eclipse-based development environment for NXP MCUs using Cortex-M cores. It supports the i.MX RT, LPC and Kinetis devices, from Cortex-M0+ to up to Cortex-M7. The SDK and the IDE must be installed before they can be used.

2.2 Installing the MCUXpresso SDK and IDE The steps to install the MCUXpresso SDK and IDE are given below: • Go to following website: https://www.nxp.com/design/software/development-software/mcuxpressosoftware-and-tools-/mcuxpresso-integrated-development-environmentide:MCUXpresso-IDE?tid=vanMCUXPRESSO/IDE • Click on DOWNLOADS (Figure 2.1)

Figure 2.1 Click on DOWNLOADS • Click on DOWNLOAD to download the IDE (Figure 2.2)

Figure 2.2 Click to download the IDE • Select your operating system as shown in Figure 2.3 and click to download the IDE

Figure 2.3 Select your operating system

● 16

Getting Started with NXP i.MX Development Board - UK.indd 16

26-10-2023 09:34


Chapter 2 • Installing the MCUXpresso Software Development Kit (SDK)

• Save the file in a folder, unzip it, and click to install it • Run the program by double-clicking on it • Click Download and Install SDKs (Figure 2.4)

Figure 2.4 Click to install SDK • Select the development board as shown in Figure 2.5

Figure 2.5 Select the development board • Click Import SDK Examples • Select examples from the list and click Finish • Download the driver from the following site. At the time of writing this book, it was called: mbedWinSerial_16466.exe. Click to install it: https://www.nxp.com/document/guide/getting-started-with-i-mx-rt1010evaluation-kit:GS-MIMXRT1010-EVK This completes the installation of the MCUXpresso and the IDE.

2.3 Testing the installation Now that the installation is complete, you should check the installation by compiling and running one of the demo programs supplied. Here, you will compile and run the demo example called iled_blinky which flashes the on-board LED. The steps are as follows: • Start the IDE • Select Workspace evkmimxrt1010_iled_blinky (Figure 2.6)

● 17

Getting Started with NXP i.MX Development Board - UK.indd 17

26-10-2023 09:34


Get Started with the NXP i.MX RT1010 Development Kit

Figure 2.6 Select the iled_blinky workspace • Click IDE to load the source file (Figure 2.7)

Figure 2.7 Click IDE • You should see the File Explorer in the left window, the program code in the middle window, the header filenames and functions used in the right-hand window, and the console terminal, etc. at the bottom of the window (Figure 2.8). Do not worry if you do not understand how the program works at this stage.

Figure 2.8 The IDE window • The default program is set to flash the on-board LED every second. Let's change the flashing rate to 250 ms. Scroll down and locate the second 'while' statement in the main program. Change 1000U to 250U as shown in Figure 2.9

● 18

Getting Started with NXP i.MX Development Board - UK.indd 18

26-10-2023 09:34


Chapter 2 • Installing the MCUXpresso Software Development Kit (SDK)

Figure 2.9 Change the delay to 250 ms • The program can be uploaded to the development kit and run either in Debug mode or in Release mode. To compile and upload in Release mode, click Project → Build Configurations → Set Active → Release • Click Project → Build Project to build the project. You should see a successful compilation message at the bottom of the screen (Figure 2.10). Make sure the bottom part of the screen is set to Console mode.

Figure 2.10 Project built successfully message • You now have to upload the code to the processor on the development kit. Click Release to expand the folder. Connect USB connector J41 of the development board to your PC. You should see a new drive with the name RT1010-EVK(E:) appear in your devices (The drive letter E: may be different in your computer). • Copy file evkmimxrt1010_iled_blinky.axf and paste it to the new drive RT1010EVK(E:). Initially, nothing seems to happen. Then, press the reset button and after a few seconds, you should see the red LED flashing on the development board during the program loading process. Note, if you have difficulty copying the .axf file to the board, you may have to reinstall the WinUSB driver and remove and reinstall the mbed serial port driver (see https://github.com/ ARMmbed/DAPLink/issues/487). • The .axf file contains both the debug code and running binary code. Alternatively, you can convert the .axf file into a smaller binary file and upload it to the development kit. To achieve this, right-click on the .axf file and select Binary Utilities, followed by Create binary. Copy the .bin file and paste it onto the drive RT1010-EVK (E:).

● 19

Getting Started with NXP i.MX Development Board - UK.indd 19

26-10-2023 09:34


Get Started with the NXP i.MX RT1010 Development Kit

• Press the Reset button at the bottom right of the development board. You should now see the on-board LED flashing every 250 ms. • Alternatively, to run the program in Debug mode, click the Debug button under MCUXpresso IDE – Quickstart Panel at the bottom left-hand corner (pull up the Quickstart Panel if you can't see the debug button). When the debugger is ready, click Run followed by Resume to run the program in debug mode. Click Run followed by Terminate to stop the program. Some information on the program The program generates interrupts at every 250 ms and then the state of the LED is changed. Notice that at the beginning of the program the following header files are included: #include "pin_mux.h" #include "clock_config.h" #include "board.h"

You can right-click on the filenames the right-hand side of the window and display the contents of these files if you wish. File pin_mux.h stores the I/O direction definitions. File clock_config.h stores the clock definitions. File board.h stores the board name, debug and UART configurations, on-board accelerator configurations, user LED configurations, user Button configuration and other configurations. Here we are interested in the user LED configurations, which are defined as follows: /*! @brief The USER_LED used for board */ #define LOGIC_LED_ON (0U) #define LOGIC_LED_OFF (1U) #define BOARD_USER_LED_GPIO GPIO1 #define BOARD_USER_LED_GPIO_PIN (11U)

Logic HIGH and LOW are defined as 0U and 1U, respectively. The on-board user LED GPIO is defined as GPIO1, with the pin number defined as 11 (GPIO_11). Some other on-board LED based definitions are: #define USER_LED_INIT(output) GPIO_PinWrite(BOARD_USER_LED_GPIO, BOARD_USER_LED_ GPIO_PIN, output); BOARD_USER_LED_GPIO->GDIR |= (1U << BOARD_USER_LED_GPIO_PIN)

#define USER_LED_OFF() GPIO_PortClear(BOARD_USER_LED_GPIO, 1U << BOARD_USER_LED_GPIO_PIN)

#define USER_LED_ON() GPIO_PortSet(BOARD_USER_LED_GPIO, 1U << BOARD_USER_LED_GPIO_PIN)

● 20

Getting Started with NXP i.MX Development Board - UK.indd 20

26-10-2023 09:34


Chapter 2 • Installing the MCUXpresso Software Development Kit (SDK)

#define USER_LED_TOGGLE()

GPIO_PinWrite(BOARD_USER_LED_GPIO,

BOARD_USER_LED_GPIO_PIN, 0x1 ^ GPIO_PinRead(BOARD_USER_LED_GPIO,BOARD_USER_LED_GPIO_PIN))

The function GPIO_PinWrite() sets the output state of a port pin to logic LOW or HIGH. Delay is introduced using function SysTick_DelayTicks(). This function waits until the value specified in its argument becomes zero. This value is the required delay in milliseconds. Function SysTick_Handler() is called every millisecond, and it decrements variable g_systickCounter by one every time it is called. i.e. every millisecond. Function SysTick_ Config() initializes the system timer and its interrupt, and starts the system tick number. The Counter is in free-running mode and generates periodic interrupts. Its only argument is the number of ticks between two interrupts. Here, it is set to 1 ms. In this program, we could have used the following GPIO SDK function GPIO_PortToggle() to toggle the LED pin. This simplified program is shown in Figure 2.11 /* * Copyright 2019 NXP * All rights reserved. * * SPDX-License-Identifier: BSD-3-Clause */ #include "pin_mux.h" #include "clock_config.h" #include "board.h" /******************************************************************************* * Definitions ******************************************************************************/ #define LED_PIN 11 /******************************************************************************* * Prototypes ******************************************************************************/ /******************************************************************************* * Variables ******************************************************************************/ volatile uint32_t g_systickCounter; /******************************************************************************* * Code ******************************************************************************/ void SysTick_Handler(void)

● 21

Getting Started with NXP i.MX Development Board - UK.indd 21

26-10-2023 09:34


Get Started with the NXP i.MX RT1010 Development Kit

{ if (g_systickCounter != 0U) { g_systickCounter--; } } void SysTick_DelayTicks(uint32_t n) { g_systickCounter = n; while (g_systickCounter != 0U) { } } /*! * @brief Main function */ int main(void) { /* Board pin init */ BOARD_ConfigMPU(); BOARD_InitBootPins(); BOARD_InitBootClocks(); BOARD_InitDebugConsole(); /* Set systick reload value to generate 1 ms interrupt */ if (SysTick_Config(SystemCoreClock / 1000U)) { while (1) { } } while (1) { /* Delay 250 ms */ SysTick_DelayTicks(250U); GPIO_PortToggle(GPIO1, 1u << LED_PIN); } }

Figure 2.11 Program using the GPIO_PortToggle() function

● 22

Getting Started with NXP i.MX Development Board - UK.indd 22

26-10-2023 09:34


Chapter 2 • Installing the MCUXpresso Software Development Kit (SDK)

The GPIO ports must be configured before they can be used (e.g. the input or output mode, default state, analog or digital, etc.). This is normally done in files pin_mux.c and pi_mux.h in folder board. This configuration is already done for the on-board LED. You will learn in the next chapter how to configure the GPIO ports using the ConfigTools menu option of MCUXpresso IDE. Some other GPIO-related functions supported by the SDK are (see web link: https://mcuxpresso.nxp.com/api_doc/dev/1393/a00123.html): Initialize a GPIO pin used by the board: GPIO_PinInit() Set the output level of the multiple GPIO pins to logic 1 or 0: GPIO_PinWrite() Set the output level of the multiple GPIO pins to logic 1: GPIO_PortSet() Set the output level of the multiple GPIO pins to logic 0: GPIO_Port_Clear() Reverse the current output logic of the multiple GPIO pins: GPIO_PortToggle() Read the current input value of the GPIO port: GPIO_PinRead() MCUXpresso IDE is a powerful IDE supporting many features. Interested readers can download the 293-page user guide: MCUXpresso IDE User Guide, Rev. 11.7.1 – 28 March 2023 from the NXP website.

2.4 Creating a project from scratch In this section, you will learn how to create a project from scratch. This is an elementary example project where the message Hello From the MIMXRT1010-EVK is displayed on the Console. The aim of this example is to show how a program can be created, uploaded to the development kit, and then be executed. The steps are: • Start the MCUXpresso IDE and enter a workspace name, e.g. SIMPLE, and click Launch • Click IDE • Click Create a new C/C++ project under the Quickstart Panel • Select MIMXRT1010 as shown in Figure 2.12. Click Next

● 23

Getting Started with NXP i.MX Development Board - UK.indd 23

26-10-2023 09:34


Get Started with the NXP i.MX RT1010 Development Kit

Figure 2.12 Select MIMXRT1010 • Enter a project name. e.g. MySimple as shown in Figure 2.13. Note that you can select various drivers at this stage if your program needs them. Here, we have left the default drivers. • Select the Semihost for the SDK Debug Console so that PRINTF displays on the Console. Click Finish.

Figure 2.13 Enter a project name • You will be presented with the screen as shown in Figure 2.14.

● 24

Getting Started with NXP i.MX Development Board - UK.indd 24

26-10-2023 09:34


Chapter 2 • Installing the MCUXpresso Software Development Kit (SDK)

Figure 2.14 MCUXpresso screen (part of the screen is shown) • At the left-hand side, you have the Project Explorer listing all the required project files. The source code is displayed in the middle part of the screen by default. Global variables and header files are displayed at the top right. The bottom part of the screen displays the installed SDKs, Properties, Problems, Console, Terminal, etc. Click to select the Console. • Modify the provided source code as shown in Figure 2.15. /* * Copyright 2016-2023 NXP * All rights reserved. * * SPDX-License-Identifier: BSD-3-Clause */ /** * @file

MySimple.c

* @brief

Application entry point.

*/ #include <stdio.h> #include "board.h" #include "peripherals.h" #include "pin_mux.h" #include "clock_config.h" #include "MIMXRT1011.h" #include "fsl_debug_console.h" /* TODO: insert other include files here. */ /* TODO: insert other definitions and declarations here. */ /*

● 25

Getting Started with NXP i.MX Development Board - UK.indd 25

26-10-2023 09:34


Get Started with the NXP i.MX RT1010 Development Kit

* @brief

Application entry point.

*/ int main(void) { /* Init board hardware. */ BOARD_ConfigMPU(); BOARD_InitBootPins(); BOARD_InitBootClocks(); BOARD_InitBootPeripherals(); #ifndef BOARD_INIT_DEBUG_CONSOLE_PERIPHERAL /* Init FSL debug console. */ BOARD_InitDebugConsole(); #endif PRINTF("Hello From the MIMXRT1010-EVK\r\n"); while(1); }

Figure 2.15 Modified source code • You are now ready to compile and run the program in debug mode. Connect your development kit to your PC. Click Debug at the Quickstart Panel and follow the instructions. Select the default debug probe. Wait until the debugger is ready. By default, the program will highlight the first instruction in main() in green and stop there. • Click Run followed by Resume to run the program. • The program will display the message Hello From the MIMXRT1010-EVK on the console as shown in Figure 2.16.

Figure 2.16 Message displayed on the Console • Click Run followed by Terminate to terminate the debug session

● 26

Getting Started with NXP i.MX Development Board - UK.indd 26

26-10-2023 09:34


Chapter 2 • Installing the MCUXpresso Software Development Kit (SDK)

Exporting a project You can save your project by clicking File, followed by Export. Select Archive under General and click Next. Click Select All and give a name to your project. Select to save as .zip (Figure 2.17). Click Finish.

Figure 2.17 Export your project

2.6 Importing an exported project All the projects in this book are available as exported projects in the form of .zip files. The steps to import them are as follows: • Start the MCUXpresso IDE by specifying a new workspace name (e.g. test) and click Launch • Click IDE • In Quickstart Panel, click Import project(s) from file system • Click Browse in the top Archive field • Select the required project folder and click Next • Click Finish When accessing the projects in the book, you are recommended to use the workspace name to be the same name as the project name. For example, to import project folder LM35, set the workspace name to LM35. This way, the project programs will be available in your default workspace. The same project files can then easily be started by entering the same workspace name (e.g. LM35).

● 27

Getting Started with NXP i.MX Development Board - UK.indd 27

26-10-2023 09:34


Get Started with the NXP i.MX RT1010 Development Kit

2.7 MCUXpresso for Visual Studio Code The new software development tool MCUXpresso for Visual Studio Code (VS Code) provides an optimized embedded developer experience for code editing and development. MCUXpresso for VS Code supports NXP MCUs based on Arm Cortex-M cores including MCX, LPC, Kinetis and i.MX RT. MCUXpresso for VS Code allows developers the flexibility to work on projects from Zephyr or MCUXpresso SDK with Open-CMSIS-Packs. A QuickStart panel provides access to the most popular actions. Auto-format and autocomplete features are provided. The debug view provides access to breakpoints, variable/ register views, call stack and thread awareness while using normal debug controls to step through the code. MCUXpresso for VS Code supports various debug probes from NXP, PEmicro and SEGGER. Some features of the MCUXpresso for Visual Code are: • Built on Microsoft Visual Studio Code platform, customize using marketplace extensions • Advanced editing: multi-cursor, auto-format, syntax highlighting, code snippets • Code smarter with Intellisense: completions for variables, methods and imported modules • Flexible use of MCUXpresso SDK using GitHub, with optional Open-CMSIS-Packs • Full support for Zephyr-based project development • Industry-standard GNU tool chain with a choice of libraries: optimized C library or the standard GNU Newlib / Nano library • Easy SDK example importing with MCUXpresso Configuration tools, including pins, clocks, peripheral and trusted execution tools • Source Control Management / Git integration • Project management view displays application information on target architecture, components, build configurations and software repository • Advanced debug capabilities including support for SEGGER J-Link, MCULink or LPC-Link2 probes. Support for FreeRTOS, Azure RTOS ThreadX and Zephyr RTOS. Additionally, improved view capabilities for peripheral registers, global variables, textual/graphical live variables, and integrated GUI Flash programming tool. Figure 2.18 shows the structure of the MCUXpresso for Visual Studio Code.

● 28

Getting Started with NXP i.MX Development Board - UK.indd 28

26-10-2023 09:34


Chapter 2 • Installing the MCUXpresso Software Development Kit (SDK)

Figure 2.18 MCUXpresso for Visual Studio Code The download link for the MCUXpresso for Visual Studio Code is: https://marketplace.visualstudio.com/items?itemName=NXPSemiconductors.mcuxpresso Interested readers can get further information on MCUXpresso for Visual Studio Code from the following websites: https://www.nxp.com/products/processors-and-microcontrollers/mcuxpresso-for-visualstudio-code:MCUXPRESSO-VSC?tid=vanMCUXPRESSO-VSC https://community.nxp.com/t5/MCUXpresso-for-VSCode/bd-p/mcuxpresso-vscode https://github.com/nxp-mcuxpresso/vscode-for-mcux/wiki https://www.nxp.com/products/processors-and-microcontrollers/mcuxpresso-for-visualstudio-code:MCUXPRESSO-VSC?tid=vanMCUXPRESSO-VSC Tutorial and training are available for the MCUXpresso for Studio Code at the following link: https://www.nxp.com/design/training/getting-started-with-mcuxpresso-for-visual-studiocode:TIP-GETTING-STARTED-WITH-MCUXPRESSO-FOR-VS-CODE

● 29

Getting Started with NXP i.MX Development Board - UK.indd 29

26-10-2023 09:34


Get Started with the NXP i.MX RT1010 Development Kit

Index A ACK ADC AIFF Audio bandwidth Audio file formats Audio sound

125 191 264 263 263 262

B BC337 Binary down counter Binary up counter Bit clock Breakpoint

234 90 90 267 51

C Center aligned Common anode Common cathode ConfigTools Continuous conversion Conveyor belt CPHA CPOL

223 97 97 60 136 182 146 146

D DAP Deadtime insertion logic Debugging Degradation of quality DSP Duty cycle

14 224 30 263 262 220

E Edge aligned Event counter Export Extended mode External interrupt

223 93 27 136 187

F FPU

11

G GPT1 GPT2

14 14

H H-bridge H-bridge module HD44780

245 247 156

I Import IRFZ44

27 234

J JTAG connector

13

K KPP

14

L LDR LED indicators Light intensity LMD18200 LM35 197 LPUART

183 13 211 249 27 15

M Matrix operations Motor speed and direction control Motor speed control MP3 Multiplexed LED MQS

255 244 232 264 102 12

O Ohmmeter One-shot conversion

214 136

P PCM Periodic interrupt timer Pin_mux.c

264 12 23

● 274

Getting Started with NXP i.MX Development Board - UK.indd 274

26-10-2023 09:35


Index

Pointer register PortClear Port expander PortSet Pow Power supply PWM

136 77 125, 147 77 78 13 220

Q Quickstart Panel

50

R Random number Resume RS232

83 26 118

S SAI bus SCL SDA Serial communication Signal to noise ratio SPDIF SPI bus SysTick

269 124 124 117 263 12 145 21

T Temperatue controller Temperature sensor Terminate Thermostat mode Timer interrupt TMP102 TRNG

201 196 26 136 109 135 12

U Update code User button

61 13

V Visual studio

28

W WAV WMA Word select

264 264 267

● 275

Getting Started with NXP i.MX Development Board - UK.indd 275

26-10-2023 09:35


> LED and LCDs > ADC > I2C > SPI > PWM > UART > Motor Control > Audio and Digital Audio Processing (DSP)

About the Author Prof Dr Dogan Ibrahim has a BSc degree in electronic engineering, an MSc degree in automatic control engineering, and a PhD degree in digital signal processing. Dogan has worked in many industrial organizations before he returned to academic life. Prof Ibrahim is the author of over 60 technical books and over 200 technical articles on microcontrollers, microprocessors, and related fields. He is a Chartered electrical engineer and a Fellow of the Institution of Engineering Technology.

Get Started with the NXP i.MX RT1010 Development Kit

Conveniently, several on-board debug probes are supplied with the kit allowing you to debug your programs by talking directly to the MCU. Helped by the debugger, you can single-step through a program, insert breakpoints, view and modify variables, and so on. Using the MCUXpresso IDE and the SDK, many working and tested projects are developed in the book based on parts, modules, and technologies, including:

H0W2

At the heart of NXP Semiconductors‘ MIMXRT1010 Development Kit is the i.MX RT1010 Crossover MCU sporting an Arm Cortex-M7 core truly capable of running power- and memory hungry DSP applications. The popular MCUXpresso IDE is key to creating software for the development kit, while a powerful SDK is provided to reduce program development time and effort. The dev kit offers great connectivity through its audio CODECs, 4-way headphone jack, external speaker connection, microphone, and Arduino interface.

H0W2

Volume 3

Get Started with the NXP i.MX RT1010 Development Kit Develop Arm® Cortex®-M7 powered Audio, DSP and Motor Control Projects

Dogan Ibrahim

Dogan Ibrahim

Elektor International Media www.elektor.com

3 Cover HOW2 - Getting Started With NXP iMX Development Board.indd 3

knows how

26-10-2023 10:14


Issuu converts static files into: digital portfolios, online yearbooks, online catalogs, digital photo albums and more. Sign up and create your flipbook.