Wireless Connectivity Knowledge Base

cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 

Wireless Connectivity Knowledge Base

Discussions

Sort by:
See the necessary steps to enable additional SDK components for a project when using GitHub SDK and Kconfig/CMake.
View full article
The MCX W71 Wireless Microcontroller features a 96 MHz Arm® Cortex®-M33 core coupled with a multiprotocol radio subsystem supporting Matter™, Thread®, Zigbee® and Bluetooth® Low Energy. The independent radio subsystem, with a dedicated core and memory, offloads the main CPU, preserving it for the primary application and allowing firmware updates to support future wireless standards. The MCX W71x also offers advanced security with an integrated EdgeLock® Secure Enclave Core Profile and will be supported by NXP's EdgeLock 2GO cloud services for credential sharing. The MCX W71x family supports industrial and IoT devices as a single chip solution or by acting as a coprocessor in a hosted architecture.   MCX W71 Block Diagram   Documents MCX W71 Reference Manual MCX W71 Data Sheet Errata Secure Reference manual** Certifications   Evaluation boards FRDM-MCXW71 Page FRDM-MCXW71 Schematic FRDM-MCXW71 Design Files FRDM-MCXW71 User Manual FRDM-MCXW71 Getting Started   Application Notes   Software, Hardware and Peripherals: AN14398: How to use RTC on FRDM-MCXW71 This application note describes how to configure and use the RTC peripheral in a BLE demo. AN14416: Enabling Watchdog Timer Module on FRDM-MCXW71 Bluetooth Low Energy Connectivity Stack This application note describes the process to implement the WDOG timer in a Connectivity Stack demo.  AN14396: MCX W71 Integrating the OTAP Client Service into a Bluetooth LE Peripheral Device This Application note provides the steps and process for integrating the Over the Air Programming Client Service into a BLE peripheral device. AN14394: Creating Firmware Update Image for MCX W71 using OTAP tool This application note provides the steps to create and upgrade the image on the MCX W71 board via OTAP.  AN14645: How to use Random Static Device Address for Bluetooth Application This document introduces how to enable Random Static Device Address for a Bluetooth Low Energy application. The default device address type in the SDK is Public Device Address. Power Management: AN14391: MCX W71 Loadpull Report This application note describes measurement methodology and associated results on the load-pull characteristics. AN14389: MCXW71 Bluetooth LE Power Consumption Analysis This application note provides information about the power consumption of MCXW71 wireless MCXs, the hardware design and optimized for low power operation.  AN14387: MCXW71 Power Management Hardware This application note describes the usage of the different modules dedicated to power management in the MCXW71 MCU. RF: AN14399: MCXW71 Connectivity test for 802.15.4 Application This application note describes how to use the connectivity test tool to perform MCXW71 802.15.4 RF performance. AN14374: FRDM-MCXW71 RF System Evaluation Report for Bluetooth LE and IEEE 802.15.4 Applications This application note provides the radio frequency evaluation test results of the FRDM-MCXW71 board for BLE (2FSK modulation) and for IEEE 802.15.4 (OQPSK modulation) applications. Also describes the setup and tools that can be used to perform the tests.  AN14514: MCX W71 RF System Evaluation for IEEE 802.15.4 Applications with Interferer Coexistence The document describes test setup and provides steps to perform the RF system evaluation test of NXP MCX W71 MCU for IEEE 802.15.4 applications with coexistence of these interferers: noise, sinewave, Bluetooth audio, and Wi-Fi. AN14515: FRDM-MCXW71 RF System Evaluation Report for Bluetooth Low Energy Applications with interferer Coexistence The document describes test setup and provides steps to perform the RF system evaluation test of FRDM-MCXW71 for Bluetooth LE applications (2FSK modulation) with coexistence of the following interferers: noise, Sinewave, Bluetooth audio, and Wi-Fi. AN2731: Compact Planar Antennas for 2.4 GHz Communication This document is not an exhaustive inquiry into antenna design. It is instead focused on helping the customers understand enough board layout and antenna basics to select a correct antenna type for their application, as well as avoiding typical layout mistakes that cause performance issues that lead to delays. Also, several popular antennas are presented as possible solutions for some of the IEEE 802.15.4 and Bluetooth low energy applications AN14476: NXP Dual PAN Feature and Performance Results This document provides a comprehensive exploration of the Dual Personal Area Network (Dual-PAN) feature on NXP Wireless Connectivity products implementing IEEE 802.15.4 low rate wireless protocol area network standard   Security: AN14427: MCXW71 In-System Programming Utility This application note provides steps to boot MCXW71 MCU in ISP mode and establish various serial connections to communicate with the MCU. AN14397: Programming the MCXW71 Flash for Application and Radio Firmware via Serial Wire Debug during mass production This application note describes the steps to write, burn and programming all the necessary settings via SWD in mass production.  AN14370: MCXW71 Flash Encryption using NPX This application note uses the Secure Provisioning SDK (SPSDK) which is a unified, reliable, and easy to use Python SDK library working across the NXP MCU portfolio providing a strong foundation from quick customer prototyping up to production deployment. AN14371: MCXW71 Secure Boot using SEC Tool This application note describes how to configure an image for secure boot and updates using the Secure Provisioning GUI Tool. AN14373: Secure Boot for MCXW71 Secure boot guarantees that unauthorized code cannot be executed on a given product AN14568: Debug Authentication on MCXW71 This application note describes the steps for debug authentication using the Secure Provisioning SDK tool. AN14379: Managing Lifecycles on MCXW71 The purpose of this application note is to describe the lifecycle stages that are available to the user, how to access them, the limitations of the lifecycles, and how to transition to the next lifecycle AN14544: EdgeLock 2GO Services for MPU and MCU This application note introduces various methods that the EdgeLock 2GO service can be used with MCU and MPU devices and the features available for each method. AN14624: EdgeLock 2GO Provisioning via Secure Provisioning Tool (SEC) for MCUs EdgeLock 2GO is a fully managed cloud platform operated by NXP that provides secure provisioning services for easy deployment and maintenance of IoT devices that integrate NXP MCU, MPU, and EdgeLock SE05x secure elements. AN14670: EdgeLock 2GO Provisioning via SPSDK for MCUs EdgeLock 2GO is a fully managed cloud platform operated by NXP that provides secure provisioning services for easy deployment and maintenance of IoT devices that integrate NXP MCU, MPU, and EdgeLock SE05x secure elements.   Zigbee Protocol Zigbee 3.0 Getting Started: This Application Note provides guidance towards the best starting point for the development of your own Zigbee 3.0 device firmware. Zigbee 3.0 Base Device Template: This Application Note provides example applications to demonstrate the features and operation of the Base Device in a Zigbee 3.0 network that employs the NXP DK006 Zigbee 3.0 microcontrollers. Zigbee 3.0 Developing Devices: This Application Note describes how to develop a Zigbee 3.0 On/Off Sensor using the Base Device Template End Device application as a starting point. The On/Off Sensor described in this Application Note is based on Zigbee device types from the Zigbee Lighting and Occupancy (ZLO) Device Specification Zigbee 3.0 Light Bulbs: This Application Note provides example applications for light bulbs in a Zigbee 3.0 network that employs the NXP DK006 wireless microcontrollers. Zigbee 3.0 IoT Control Bridge: This guide provides information to allow users to connect to the Control Bridge using a Graphical User Interface (GUI), which simulates a host, to operate the Zigbee network. It also describes the serial protocol used to interface with the Control Bridge, as well as the payloads of all relevant commands and responses. Zigbee 3.0 Green Power Devices: This Application Note provides guidance towards the best starting point for the development of your own Zigbee 3.0 device firmware. Zigbee 3.0 Sensors: This Application Note provides example applications for sensors in a Zigbee 3.0 network that employs the NXP DK006 Zigbee 3.0 wireless microcontrollers. Zigbee 3.0 Controller and Switch: his Application Note provides example applications for a controller and a switch in a Zigbee 3.0 network that employs the NXP DK006 wireless microcontrollers. The Application Note also includes an example of a typical Zigbee Green Power (GP) Energy Harvesting switch in a Zigbee 3.0 network. Zigbee 3.0Developing Clusters: This Application Note describes how to develop a Zigbee 3.0 Window Covering Device using the Base Device Template Router Device application as a starting point. This Application Note can be used in two ways: As a starting point for creating a Window Covering device using the functional example created in the final step. As a guide to creating devices and clusters not included in the NXP ZCL implementation including manufacturer-specific devices and cluster. Support If you have questions regarding MCX W71, please leave your question in our Wireless MCU Community! here   Useful Links Clock Measuring using the Signal Frequency Analyzer (SFA) module for KW45/KW47/MCXW71/MCXW72 - NXP Community : this community provides the steps on how to use the Signal Frequency Analyzer  The best way to build a PCB first time right with KW45 (Automotive) or K32W1/MCXW71 (IoT/Industrial) - NXP Community : In this community provides the important link to build a PCB using a KW45 or K32W148 and MCXW71 and all concerning the radio performances, low power and radio certification (CE/FCC/ICC) How to use the HCI_bb on Kinetis family products and get access to the DTM mode:  This article is presenting two parts: How to flash the HCI_bb binary into the Kinetis product. Perform RF measurement using the R&S CMW270 BLE HCI Application to set transmitter/receiver test commands: This article provides the steps to show how user could send serial commands to the device. Bluetooth LE HCI Black Box Quick Start Guide : This article describes a simple process for enabling the user controls the radio through serial commands.   Training MCX W71 Training, Secure MCUs for Matter, Zigbee, BLE MCX W Series Training - NXP Community   Equipment Wireless Equipment: This article provides the links to the Equipment that helps to the project development  Development Tools  NXP MCUXpresso: MCUXpresso IDE offers advanced editing, compiling and debugging features with the addition of MCU-Specific debugging. Supports connections with all general-purpose Arm Cortex-M.  VSCode: MCUXpresso for Visual Studio Code (VS Code) provides an optimized embedded developer experience for code editing and development. Zephyr RTOs  NXP Application Code Hub: Application Code Hub (ACH) repository enables engineers to easily find microcontroller software examples, code snippets, application software packs and demos developed by our in-house experts. This space provides a quick, easy and consistent way to find microcontroller applications. NXP SPSDK: Is a unified, reliable, and easy to use Python SDK library working across the NXP MCU portfolio providing a strong foundation from quick customer prototyping up to production deployment. NXP SEC Tool: The MCUXpresso Secure Provisioning Tool us a GUI-based application provided to simplify generation and provisioning of bootable executables on NCP MCU devices. NXP OTAP Tool: Is an application that helps the user to perform an over the air firmware update of an NXP development board.   **For secure files is necessary to request additional access. 
View full article
The wireless examples feature many common Bluetooth, zigbee and thread configurations. This article describes each SDK example.  MCUs: KW45 K32W1 KW47 MXCW71/72 Category SDK Example Name Description comments BLE Controller hci_bb the HCI black box demo gives access to the BLE controller via serial interface using commands and events.    Bluetooth adv_ext_central the adv_ext_central implements a custom GATT based temperature Profile. After pairing with the peripheral, it configures notifications and displays temperature values on a terminal.  Board to Board Bluetooth adv_ext_peripheral the adv_ext_peripheral implements a custom GATT based temperature Profile. it begins with a general discoverable mode and waits for the central node to connect and configure notifications for the temperature value.  Board to Board Bluetooth ancs_c the demo acts as a peripheral that advertises a service solicitation for custom ANCS service. Also, can acts as a client once connected to the device offering the ANCS service. The application displays information about ANCS notifications received from the mobile. this service is available on iOS mobile devices.   Bluetooth beacon the demo has non-connectable advertising packets that are sent on the three advertising channels. From the info sent by the beacon we can see: company identifier.  beacon identifier.  UUID, by default this value is a random value based on the UI of the board.  some beacon application data  RSSI IoT toolbox app Bluetooth ble_fscibb implements a custom GATT based wireless UART profile. it can be possible to interact with the device through a serial terminal.    Serial Terminal  Bluetooth ble_shell implements a console application that allows the user to interact with a full feature BLE stack library. implements GAP roles and both client and server, to enabling these roles can be done using some commands. this demo allows the user to add, erase or modify services.  Serial Terminal Bluetooth eatt_central the application behaves as a GAP central node. It scans for an EATT peripheral to connect to. Once connected it performs service discovery, initiates an EATT connection and configures indications on the peripheral for services A and B.  The central reports the received service data and steps taken during the setup on a serial terminal.  Board to Board Bluetooth eatt_peripheral the application behaves as a GAP peripheral node. it works a as general discoverable mode and waits for a GAP central node to connect. This application implements two services, Service A and Service B. After the EATT connection in completed, the peer must enable indications for the two services to periodically receive profile data over EATT.   Board to Board Bluetooth hid_device (Mouse) the demo moves the cursor in a square pattern between a min and max axis. this demo behaves as a GAP peripheral node with a general discoverable mode that waits for a GAP central node to connect.    Bluetooth hid_host the application behaves as a GAP central node. it works as a GAP limited discovery Procedure and searches for HID devices to connect to. After connecting with the peripheral node, it configures notifications and displays the received HID reports on a serial terminal.  Serial Terminal Bluetooth loc_reader the application behaves as a GAP peripheral node. This application has the RASP profile implemented; it advertises for compatible devices, once it connected begins to send ranging data to the central device.  Board to Board Bluetooth loc_user_device the application behaves as a GAP central node. it scans for compatible devices, once it connected begins to send ranging commands to the peripheral device and calculates the distance estimation based on the information received.  Board to Board Bluetooth otac_att the over the air programming client is a GAP peripheral which advertising the BLE OTAP service and waits for a connection from an OTAP server. After an OTAP server connects, the OTAP client waits for it to write the OTAP control point CCCD and then starts sending commands via ATT indications.  over the air programming tool //IoT toolbox app Bluetooth otac_I2cap (different transfer method) The over the air programming client is a GAP peripheral which advertising the BLE OTAP service and waits for a connection from an OTAP server. After an OTAP server connects, the OTAP client waits for it to write the OTAP control point CCCD and then starts sending commands via ATT indications.  over the air programming tool // IoT toolbox app Bluetooth otas the Over the air programming server application is a GAP central which scans for devices advertising the BLE OTAP service. After it finds one, it connects to it and configures the OTAP control point CCC descriptor to receive ATT indications from the device then it waits fir OTAP commands from the device.  over the air programming tool // IoT toolbox app Bluetooth temp_coll the application behaves as a GAP central node, it enters GAP limited discovery procedure and searches for sensor devices to pair with. After pairing with the peripheral, it configures notifications and displays temperature values on a serial terminal.  Board to Board Bluetooth temp_sens the application behaves as a GAP peripheral node. it enters GAP general discoverable mode and waits for a GAP central node to connect and configure notifications for the temperature value.  Board to Board Bluetooth w_uart implements a custom GATT based wireless UART profile. it can be possible to interact with the device through a serial terminal.  IoT toolbox app Bluetooth wireless_ranging Is used to perform secure and highly accurate distance estimation between two BLE device.  the application is made of two parts: The embedded firmware, that can be controlled manually via serial connection. the host application (python) running on a PC and controlling the firmware using serial link. Wireless Ranging application allows to: Configure most of the parameters required for measurement. Select what type of measurement to be performed.  Trigger CS measurements using range or test command. Log system debug information but also raw IQ data information in MatLab. Board to Board  genfsk connectivity_test   Board to Board ieee_802.15.4 connectivity_test   Board to Board reference design bluetooth this application is based on a GATT temperature Service and demonstrates power consumption optimization in BLE. The power consumption is optimized during advertising, connected and no activity states.   
View full article
Hello, Starting with SDK version 24.12.00, documentation is available online at: https://mcuxpresso.nxp.com/mcuxsdk/latest/html/index.html  To view documentation for previous releases, replace latest in the URL with the specific version number: - example: https://mcuxpresso.nxp.com/mcuxsdk/25.03.00/html/index.html    Bluetooth LE Documentation For Bluetooth LE-related resources, refer to the following sections:  Bluetooth LE Host Documentation (change log and guides): https://mcuxpresso.nxp.com/mcuxsdk/latest/html/middleware/wireless/bluetooth/index.html    Connectivity Framework Documentation(change log and guides):  https://mcuxpresso.nxp.com/mcuxsdk/latest/html/middleware/wireless/framework/index.html   Release Notes by platform To view what's new for each platform, refer to the "What is new" section in the respective release notes: KW45 - EVK:  https://mcuxpresso.nxp.com/mcuxsdk/latest/html/boards/Wireless/kw45b41zevk/releaseNotes/rnindex.html   KW47-EVK:  https://mcuxpresso.nxp.com/mcuxsdk/latest/html/boards/Wireless/kw47evk/releaseNotes/rnindex.html FRDM-MCXW23:  https://mcuxpresso.nxp.com/mcuxsdk/latest/html/boards/MCX/frdmmcxw23/releaseNotes/rnindex.html  Regards, Ovidiu    
View full article
Hello,  Here are some helpful steps to follow when working with the NXP GitHub SDK. Step1: Ensure the necessary toolchains are installed:  https://mcuxpresso.nxp.com/mcuxsdk/latest/html/gsd/repo.html  Additional notes and links: VS code: https://code.visualstudio.com/ MCUXpresso plugin: https://www.nxp.com/design/design-center/software/development-software/mcuxpresso-software-and-tools-/mcuxpresso-for-visual-studio-code:MCUXPRESSO-VSC Getting started with MCUXpresso for VS Code: https://www.nxp.com/design/design-center/training/TIP-GETTING-STARTED-WITH-MCUXPRESSO-FOR-VS-CODE   Step 2: Download and Install the SDK: GUI Method: - Open VS Code, navigate to Import Repository and select the Remote option as shown below: - Upon successful import, the repository will show up in the Imported Repositories window:    Command Line Method: - west commands: # Initialize west with the manifest repository west init -m https://github.com/nxp-mcuxpresso/mcuxsdk-manifests/ mcuxpresso-sdk # Update the west projects cd mcuxpresso-sdk west update More details:  https://mcuxpresso.nxp.com/mcuxsdk/latest/html/gsd/installation.html#get-mcuxpresso-sdk-repo  - import the local repository to VS code: Open VS Code, navigate to Import Repository and select the Local option and Browse.. to your local repo:   Step3: Run a Bluetooth LE Example Step3a: Run a Bluetooth LE Example using MCUXpresso for VS code - click Import Example from Repository from the QuickStart Panel - From the open dialog, select the MCUXpresso SDK, the Arm GNU toolchain, your target board, desired template, and application type, and proceed by clicking Import:   For the application type, you’ll typically see two options:  - Repository application  - Freestanding application. The key difference lies in where the project is imported. Repository applications are placed within the MCUXpresso SDK directory, while Freestanding applications can be imported to a custom location defined by the user. - Next, VS Code will prompt you to verify trust for the imported files—click Yes. Navigate to the PROJECTS view. - Identify your project, right click and select the Prestine Build icon to begin building:  - details of the build are into the terminal window: - using Debug button will allow you to download and debug the software:   (useful link: https://mcuxpresso.nxp.com/mcuxsdk/latest/html/gsd/run_a_demo_using_mcuxvsc.html ) Step3b: Run a Bluetooth LE Example using IAR Embedded Workbench for ARM: - use the west list_projects command to list the supported example for boards and the corresponding toolchain: Example to list Bluetooth examples:  west list_project -p .\examples\wireless_examples\bluetooth\ or if you know the platform or/and the project you can use: west list_project -b kw45b41zevk -p .\examples\wireless_examples\bluetooth\w_uart  west list_project -b frdmmcxw23 -p .\examples\wireless_examples\bluetooth\w_uart   Once you've confirmed that the project is available for the IAR toolchain, run the appropriate command to build it: west build -p always examples/wireless_examples/bluetooth/w_uart/freertos --toolchain iar --config debug -b kw45b41zevk The build folder will contain the generated output:   To work with IDE add  -t guiproject in the west command: west build -p always examples/wireless_examples/bluetooth/w_uart/freertos --toolchain iar --config debug -b kw45b41zevk -t guiproject --pristine --build-dir=build/w_uart_freertos_kw45    The result of the build will indicate the path to the *.eww/*.ewp:   (additional details: https://mcuxpresso.nxp.com/mcuxsdk/latest/html/gsd/run_project.html )   Step4: Create a standalone example With the freestanding project approach, only the application code is included in the export folder. Other essential files remain linked to the repository. To generate a complete standalone project, the recommended method is using West by adding -t standalone_project option. Example of command for kw45b41zevk, IAR toolchain: west build -b kw45b41zevk ./examples/wireless_examples/bluetooth/w_uart/freertos -p always --toolchain iar --config debug -t standalone_project -d c:\work\w_uart_kw45  The result of the build will indicate the path to the *.eww/*.ewp:   Example of command for kw45b41zevk, armgcc toolchain: west build -b kw45b41zevk ./examples/wireless_examples/bluetooth/w_uart/freertos -p always --toolchain armgcc --config debug -t standalone_project -d c:\work\w_uart_KW45_armgcc The result of the build will indicate the path to the project that need to be imported in VsCode: Regards, Ovidiu  
View full article
Useful Links: Bluetooth Ranging Access Vehicle Enablement System - NXP Community
View full article
As documented in the MCX W23 [ERRATA] for WLCSP packaged devices, Tx modulation quality can potentially be violated on 2 data channels
View full article
This article introduces the Wi-Fi automatic recovery feature as well as how to enable and verify it on RW61x SDK. 1. Introduction Wi-Fi automatic recovery is a NXP proprietary feature that monitors Wi-Fi running status and recovers Wi-Fi out of exception state when running into one of the following cases: Driver fails to wakeup Wi-Fi MCU for commands/Tx Driver fails to receive command response from Wi-Fi MCU Driver detects Wi-Fi firmware is in abnormal state Once Wi-Fi automatic recovery is triggered, Wi-Fi middleware and driver will clean up the running states, reset Wi-Fi MCU power, reload Wi-Fi firmware and restart Wi-Fi initialization. It will not impact the ongoing Bluetooth LE/802.15.4 activities. Figure 1 is the Wi-Fi software architecture. Figure 1: Wi-Fi Software Architecture Figure 2 shows the work flow of Wi-Fi automatic recovery: Figure 2: Wi-Fi Automatic Recovery Work Flow Wi-Fi driver detects command timeout/wakeup card timeout/FW exception   Wi-Fi driver triggers WLAN reset to Stop Wi-Fi activities and de-initialize Wi-Fi Reset Wi-Fi power Reload the Wi-Fi only firmware and wait for the firmware to be active Send an event to notify the application before resetting it   2. SDK Configuration The Wi-Fi automatic recovery feature is not enabled by default in RW61x SDK. It needs to be enabled explicitly: Add below line in <example>/source/wifi_config.h to enable the feature  #define CONFIG_WIFI_RECOVERY 1 Besides, please also make sure the "CONFIG_WIFI_RESET" macro is defined as "1" in the SDK.   3. Automatic Recovery Verification This section introduces how to verify the Wi-Fi automatic recovery feature on RW61x SDK. wifi_cli application is used as example here together with the RW612 RD board. Refer to UM11799: NXP Wi-Fi and Bluetooth Demo Applications for RW61x for steps to flash and run Wi-Fi applications. Below are the steps to verify the Wi-Fi automatic recovery feature: Step 1: Define CONFIG_WIFI_RECOVERY in wifi_cli/source/wifi_config.h     #define CONFIG_WIFI_RECOVERY 1 Step 2: Build and flash the wifi_cli application onto RW612 RD board Step 3: Connect RW612 RD board to a serial terminal Step 4: Reset the power of RW612 RD board Step 5: Trigger Wi-Fi MCU into hung-up state with the following command to mimic a command timeout     # wlan-recovery-test Step 6: Wi-Fi recovery background task detects Wi-Fi FW hang and starts recovery process [wifi] Warn: Command response timed out. command 0x8b, len 12, seqno 0x1c timeout happends. # app_cb: WLAN: FW hang Event: 14 --- Disable WiFi --- [wifi] Warn: Recovery in progress. command 0x10 skipped [wifi] Warn: Recovery in progress. command 0x10 skipped [wifi] Warn: Recovery in progress. command 0xaa skipped [dhcp] Warn: server not dhcpd_running. --- Enable WiFi --- Initialize WLAN Driver [wifi] Warn: WiFi recovery mode done! Wi-Fi cau temperature : 31 STA MAC Address: C0:95:DA:01:1D:A6 board_type: 2, board_type mapping: 0----QFN 1----CSP 2----BGA app_cb: WLAN initialized ======================================== WLAN CLIs are initialized ======================================== ENHANCED WLAN CLIs are initialized ======================================== HOST SLEEP CLIs are initialized ======================================== CLIs Available: ======================================== help clear wlan-version wlan-mac wlan-thread-info wlan-net-stats wlan-set-mac <MAC_Address> wlan-scan wlan-scan-opt ssid <ssid> bssid ... wlan-add <profile_name> ssid <ssid> bssid... wlan-remove <profile_name> wlan-list wlan-connect <profile_name> wlan-connect-opt <profile_name> ... wlan-reassociate wlan-start-network <profile_name> wlan-stop-network wlan-disconnect wlan-stat wlan-info wlan-address wlan-uap-disconnect-sta <mac address> wlan-get-uap-channel wlan-get-uap-sta-list wlan-ieee-ps <0/1> wlan-set-ps-cfg <null_pkt_interval> wlan-deep-sleep-ps <0/1> wlan-get-beacon-interval wlan-get-ps-cfg wlan-set-max-clients-count <max clients count> wlan-get-max-clients-count wlan-rts <sta/uap> <rts threshold> wlan-frag <sta/uap> <fragment threshold> wlan-host-11k-enable <0/1> wlan-host-11k-neighbor-req [ssid <ssid>] wlan-host-11v-bss-trans-query <0..16> wlan-mbo-enable <0/1> wlan-mbo-nonprefer-ch <ch0> <Preference0: 0/1/255> <ch1> <Preference1: 0/1/255> wlan-get-log <sta/uap> <ext> wlan-roaming <0/1> <rssi_threshold> wlan-multi-mef <ping/arp/multicast/del> [<action>] wlan-wakeup-condition <mef/wowlan wake_up_conds> wlan-auto-host-sleep <enable> <mode> <rtc_timer> <periodic> wlan-send-hostcmd wlan-ext-coex-uwb wlan-set-uap-hidden-ssid <0/1/2> wlan-eu-crypto-rc4 <EncDec> wlan-eu-crypto-aes-wrap <EncDec> wlan-eu-crypto-aes-ecb <EncDec> wlan-eu-crypto-ccmp-128 <EncDec> wlan-eu-crypto-ccmp-256 <EncDec> wlan-eu-crypto-gcmp-128 <EncDec> wlan-eu-crypto-gcmp-256 <EncDec> wlan-set-antcfg <ant_mode> <evaluate_time> <evaluate_mode> wlan-get-antcfg wlan-scan-channel-gap <channel_gap_value> wlan-wmm-stat <bss_type> wlan-reset wlan-set-regioncode <region-code> wlan-get-regioncode wlan-11d-enable <sta/uap> <0/1> wlan-uap-set-ecsa-cfg <block_tx> <oper_class> <new_channel> <switch_count> <bandwidth> wlan-csi-cfg wlan-set-csi-param-header <sta/uap> <csi_enable> <head_id> <tail_id> <chip_id> <band_config> <channel> <csi_monitor_enable> <ra4us> wlan-set-csi-filter <opt> <macaddr> <pkt_type> <type> <flag> wlan-txrx-histogram <action> <enable> wlan-subscribe-event <action> <type> <value> <freq> wlan-reg-access <type> <offset> [value] wlan-uapsd-enable <uapsd_enable> wlan-uapsd-qosinfo <qos_info> wlan-uapsd-sleep-period <sleep_period> wlan-tx-ampdu-prot-mode <mode> wlan-rssi-low-threshold <threshold_value> wlan-rx-abort-cfg wlan-set-rx-abort-cfg-ext enable <enable> margin <margin> ceil <ceil_thresh> floor <floor_thresh> wlan-get-rx-abort-cfg-ext wlan-cck-desense-cfg wlan-net-monitor-cfg wlan-set-monitor-filter <opt> <macaddr> wlan-set-monitor-param <action> <monitor_activity> <filter_flags> <radio_type> <chan_number> wlan-set-tsp-cfg <enable> <backoff> <highThreshold> <lowThreshold> <dutycycstep> <dutycycmin> <highthrtemp> <lowthrtemp> wlan-get-tsp-cfg wlan-get-signal wlan-set-bandcfg wlan-get-bandcfg wlan-set-ips <option> wlan-enable-disable-htc <option> wlan-set-su <0/1> wlan-set-forceRTS <0/1> wlan-set-mmsf <enable> <Density> <MMSF> wlan-get-mmsf wlan-set-multiple-dtim <value> wlan-set-country <country_code_str> wlan-set-country-ie-ignore <0/1> wlan-single-ant-duty-cycle <enable/disable> [<Ieee154Duration> <TotalDuration>] wlan-dual-ant-duty-cycle <enable/disable> [<Ieee154Duration> <TotalDuration> <Ieee154FarRangeDuration>] wlan-external-coex-pta enable <PTA/WCI-2/WCI-2 GPIO> ExtWifiBtArb <enable/disable> PolGrantPin <high/low> PriPtaInt <enable/disable> StateFromPta <state pin/ priority pin/ state input disable> SampTiming <Sample timing> InfoSampTiming <Sample timing> TrafficPrio <enable/disable> CoexHwIntWic <enable/disable> wlan-sta-inactivityto <n> <m> <l> [k] [j] wlan-get-temperature wlan-auto-null-tx <sta/uap> <start/stop> wlan-detect-ant <detect_mode> <ant_port_count> channel <channel> ... wlan-recovery-test wlan-get-channel-load <set/get> <duration> wlan-get-txpwrlimit <subband> wlan-set-chanlist wlan-get-chanlist wlan-set-txratecfg <sta/uap> <format> <index> <nss> <rate_setting> <autoTx_set> wlan-get-txratecfg <sta/uap> wlan-get-data-rate <sta/uap> wlan-get-pmfcfg wlan-uap-get-pmfcfg wlan-set-ed-mac-mode <interface> <ed_ctrl_2g> <ed_offset_2g> <ed_ctrl_5g> <ed_offset_5g> wlan-get-ed-mac-mode <interface> wlan-set-tx-omi <interface> <tx-omi> <tx-option> <num_data_pkts> wlan-set-toltime <value> wlan-set-rutxpwrlimit wlan-11ax-cfg <11ax_cfg> wlan-11ax-bcast-twt <dump/set/done> [<param_id> <param_data>] wlan-11ax-twt-setup <dump/set/done> [<param_id> <param_data>] wlan-11ax-twt-teardown <dump/set/done> [<param_id> <param_data>] wlan-11ax-twt-report wlan-get-tsfinfo <format-type> wlan-set-clocksync <mode> <role> <gpio_pin> <gpio_level> <pulse width> wlan-suspend <power mode> ping [-s <packet_size>] [-c <packet_count>] [-W <timeout in sec>] <ipv4/ipv6 address> iperf [-s|-c <host>|-a|-h] [options] dhcp-stat ======================================== --- Done --- Step 7: Run other Wi-Fi shell commands to confirm Wi-Fi resumes to normal state  
View full article
Introduction: Bluetooth Low Energy offers the ability to broadcast data in format of non-connectable advertising packets while not being in a connection. This GAP Advertisement is widely known as a beacon.   In this post we will explore some of the features of the beacon_freertos example included in the SDK package of the KW45B41Z Evaluation Kit for MCUXpresso, for updating a counter every 5 seconds and broadcasting its value with the beacon, so the user can see it using the IoT Toolbox application.    Setup: 1 – SDK installation Download the latest version of the KW45B41Z-EVK SDK package from MCUXpresso SDK Builder Drag and drop the SDK zip file into the Installed SDKs window:   2 – Importing the project In the QuickStart Panel, click on Import SDK example From wireless_examples, select beacon_freertos. It is recommended to select UART for Debug Console when using BLE projects.  Click on finish   App Customization  1 – app_preinclude.h file: Set the following definitions to "0" in order to disable Extended Advertising and Low Power functionality.   2 – app_advertiser.h file: Add these aux prototypes that will allow to get and set the value of some flags.   /*Functions for data exchanging with beacon application*/ bool_t GetBleAppStarted(void); bool_t GetmAdvertisingOn(void); void SetmAdvertisingOn(bool_t value);   3 – app_advertiser.c file: Include fsl_component_timer_manager.h Add the macro UPDATE_BEACON_TIMER (5) to set the update timer to 5 seconds Create a timer ID by using TIMER_MANAGER_HANDLE_DEFINE Declare the callback for the timer Declare and define the "flag" BleAppStarted Include extern variable gAppAdvertisingData   Define the aux functions that will allow to get and set the value of BleAppStarted and mAdvertisingOn flags.   Define the timer callback, which will add the value of the counter into "A" field of the Beacon packet. #include "fsl_component_timer_manager.h" #define UPDATE_BEACON_TIMER (5) //in seconds /*Create timer ID*/ static TIMER_MANAGER_HANDLE_DEFINE(BeaconUpdateDataTimerID); /*Callback prototype*/ static void UpdateBeaconTimerCallback(void * pParam); /*Define the variables*/ static bool_t BleAppStarted = FALSE; static bool_t mAdvertisingOn = FALSE; /*Declare variable as external*/ extern gapAdvertisingData_t gAppAdvertisingData; /*Define functions for data echange*/ bool_t GetBleAppStarted(void) { return BleAppStarted; } bool_t GetmAdvertisingOn(void) { return mAdvertisingOn; } void SetmAdvertisingOn(bool_t value) { mAdvertisingOn = value; } /*define the timer callback*/ static void UpdateBeaconTimerCallback(void * pParam) { /*Value that will be advertised*/ static int32_t count = 1; /* Stop ADV and handle the update on the callbacks*/ Gap_StopAdvertising(); mAdvertisingOn = !mAdvertisingOn; /* On ADV data 0-1 = company ID, 2 = Beacon ID, 3 -18 = UUID, /* 19-20: A Data, 21-22: B Data, 23-24: C Data */ gAppAdvertisingData.aAdStructures[1].aData[19] = (uint8_t)((count >> 8) & 0xFF); gAppAdvertisingData.aAdStructures[1].aData[20] = (uint8_t)(count & 0xFF); count++; }   Inside App_AdvertiserHandler function, gAdvertisingParametersSetupComplete_c event is triggered when the advertising parameters setup is complete. Here, Advertising Data is set, and we are going to use this event to start the timer. Once the Advertising Data Setup is complete, we are going to use gAdvertisingDataSetupComplete_c event in App_AdvertiserHandler function to start advertising and update the timer. Every time the Data Setup is complete, the timer will start again.  case gAdvertisingParametersSetupComplete_c: { (void)Gap_SetAdvertisingData(mpAdvParams->pGapAdvData, mpAdvParams->pScanResponseData); if (!BleAppStarted) { BleAppStarted = TRUE; /*Allocate timer*/ (void) TM_Open(BeaconUpdateDataTimerID); /* Start data update timer */ (void) TM_InstallCallback((timer_handle_t) BeaconUpdateDataTimerID, UpdateBeaconTimerCallback, NULL); (void) TM_Start((timer_handle_t) BeaconUpdateDataTimerID, (uint8_t) kTimerModeSingleShot | (uint8_t) kTimerModeLowPowerTimer, TmSecondsToMilliseconds(UPDATE_BEACON_TIMER)); } } break; case gAdvertisingDataSetupComplete_c: { (void) Gap_StartAdvertising(App_AdvertisingCallback, App_ConnectionCallback); /* Start data update timer */ (void) TM_InstallCallback((timer_handle_t) BeaconUpdateDataTimerID, UpdateBeaconTimerCallback, NULL); (void) TM_Start((timer_handle_t) BeaconUpdateDataTimerID, (uint8_t) kTimerModeSingleShot | (uint8_t) kTimerModeLowPowerTimer, TmSecondsToMilliseconds(UPDATE_BEACON_TIMER)); } break;   4 – beacon.c file:  Wrap the mAppExtAdvParams structure inside gBeaconAE_c definition macro to avoid problems with the declaration of the extended advertising parameters  #if defined(gBeaconAE_c) && (gBeaconAE_c) static appExtAdvertisingParams_t mAppExtAdvParams = { &gExtAdvParams, &gAppExtAdvertisingData, NULL, mBeaconExtHandleId_c, gBleExtAdvNoDuration_c, gBleExtAdvNoMaxEvents_c }; #endif /*gBeaconAE_c */   BleApp_AdvertisingCallback handles BLE Advertising callback from the host stack. Every time advertising state changes, we are going to update Advertising Data when the device is not advertising and BleApp has already started. Replace the existing content of gAdvertisingStateChanged_c event.  case gAdvertisingStateChanged_c: { /* update ADV data when is disabled */ if((!GetmAdvertisingOn()) && GetBleAppStarted()) { Gap_SetAdvertisingData(&gAppAdvertisingData, NULL); SetmAdvertisingOn(true); } if(GetmAdvertisingOn()) { Led1On(); } else { Led1Off(); #if defined(gBeaconAE_c) && (gBeaconAE_c) if(mAppTargetState == mAppState_ExtAdv_c) { if (gBleSuccess_c != BluetoothLEHost_StartExtAdvertising(&mAppExtAdvParams, BleApp_AdvertisingCallback, NULL)) { panic(0, 0, 0, 0); } } #endif } } break;   Testing the application: The IoT Toolbox is an all-in-one application that demonstrates NXP’s BLE functionalities, the implementation of BLE and custom profiles and the compatibility with different smartphones. This mobile application can be downloaded from the App Store and Google Play Store.  Please, refer to the IoT Toolbox Mobile Application User Manual for more information on features, requirements and how to install the application.  Select Beacons  Press scan Press the USERINTERFACE Button (carrier board) to start advertising  In the IoT Toolbox app, you should be able to see the counter increasing its value every 5 seconds in the field "A"
View full article
The customer wanted to update the FW of the PN7462 to an NFC cockpit. In general, we recommend that customers use MASS STORAGE MODE to update two files (including Flash and EEPROM) into memory. But there will always be customers who don’t know or how to successfully access MASS STORAGE MODE. They cannot succeed in doing so. Therefore, it is recommended to use the GUI FLASH tool to upgrade the FW to the NFC cabin. In order to clearly indicate the user how to use the GUI FLASH tool, this document describes this step by step.
View full article
The customer submitted a case through DFAE to seek support from NXP. They designed the product using PN5180, and according to feedback, about 10% of the boards could not read the card. The specific manifestation of the problem is: after the host issues the RF_ON command, RF field seems cannot be turned on and then fails to detect the card. Therefore, it can be seen that the problem should be on TX, not RX. The customer's device does not enable DPC and LPCD.
View full article
Matter support in Visual Studio Code (VS Code) is now open to all developers. MCUXpresso extension for VS Code v24.12.71 integrates the Matter toolchain for development on Windows, macOS and Linux.  It can be installed by visiting Microsoft’s Marketplace for VS Code. The following steps will set up your Windows system to develop Matter on NXP devices. This Getting Started process takes ~1 hour.  This is similar time it takes with flawless CLI setup. Import Matter repo takes ~30 minutes (Clone Matter repo; run bootstrap setup script)  Import first project for a board takes @~10 minutes (SDK repo download - 1st time every board) Additional projects can then be quickly imported/built. 1. Install Pigweed Project Automation Tool Pigweed is used for easier automation of building, testing, and linting GN and CMake projects.  Matter uses GN, so Pigweed is used by the maintainers of the project.  Complete the following to allow the Matter Bootstrap to properly modify/install the repository. Launch a Terminal in Administrator mode to allow operations to complete successfully. Ensure that Developer Mode is enabled. This can also be done by running the following command as an administrator: REG ADD HKLM\Software\Microsoft\Windows\CurrentVersion\AppModelUnlock /t REG_DWORD /v AllowDevelopmentWithoutDevLicense /d 1 /f\"" Enable long file paths. This can be done using  regedit  or by running the following command as an administrator: REG ADD HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\FileSystem /v LongPathsEnabled /t REG_DWORD /d 1 /f  Enable Git symlinks: git config --global core.symlinks true For more information on these settings visit Get started with Pigweed - Pigweed  2. Install Visual Studio Code (VS Code) Microsoft allows users to quickly install VS Code from https://code.visualstudio.com/download. The link allows the user to select the appropriate download for their OS.  The following instructions are for a Windows installation.  However, most of the following steps also apply to Mac and Linux users. It can be helpful for new users to directly install VS Code and the NXP extension.  This can be done by sharing one of two links:  vscode:extension/NXPSemiconductors.mcuxpresso https://marketplace.visualstudio.com/items?itemName=NXPSemiconductors.mcuxpresso  If VS Code exists on the system, the user will be taken to the NXP MCUXpresso for VS Code extension in the Microsoft Marketplace.  If VS Code is NOT installed on the system the user will be guided through the install of VS Code.  At this point the VS Code application should be installed on the laptop. 3. Install MCUXpresso for VS Code Extension The user can install or update the MCUXpresso for VS Code extension from within VS Code.  The following steps outline how.  A short clip is included to show the steps. Open VS Code.  Launch program from desktop. Open the Extensions Marketplace.  Click on Icon of 4 blocks in left navigation  or use Ctrl-Shft-X. Search "NXP" or "Mcuxpresso" in the Extension search window at the top left. MCUXpresso for VS Code extension will be displayed.  Click on listing. Click on blue Install button in the Extension Overview that is opened in the editor. The Extension is properly installed when the following NXP icon is shown in left navigation.  At this point the VS Code application now includes the NXP MCUXpresso extension. 4. Run MCUXpresso Installer for Tool Dependencies It is now necessary to install other tool dependencies to properly use VS Code for MCUXpresso, Zephyr and/or Matter. NXP provides the MCUXpresso Installer utility to simplify properly meeting these tool dependencies.  The following steps list how to use the installer for a Matter system.  A short clip is included to show the steps. Click on "Open MCUXpresso Installer" found under Quickstart Panel in upper left. The MCUXpresso Installer will launch if already installed.  NOTE: If the Installer is not found, the user should select the blue "Download" button in the bottom right notification. Select the following from the MCUXpresso Installer list of available tools: Matter Developer Arm GNU Toolchain Standalone Toolchain Add-ons LinkServer Click the blue "Install" button and wait until installation progress shows complete Restart VS Code so that new settings are active At this point the VS Code application now includes the NXP MCUXpresso extension, and the laptop has any other tools required to begin Matter installation. 5. Import NXP Matter Repository The MCUXpresso for VS Code extension simplifies how the user can add Matter to their workspace.  The repository import wizard automates most of the steps required for a user to get started with Matter. The following steps show how to add Matter Repository.  2 short clips are included to show the steps. Click on "Import Repository" found under Quickstart Panel in upper left. Click Repository found in the wizard's Remote tab. Select "NXP Matter".  This automatically targets the NXP/Matter repo found on GitHub. Enter a desired location to clone/store the NXP Matter repository.  Closer to C:/ is better. Select "release/v1.4.0" listed as an available version under Revision: Click Import The import process can take ~30 minutes depending on network bandwidth and IT software. NOTE: This is similar amount of time when using CLI in a terminal.   After the repo is cloned, the Matter Bootstrap script is used to setup matter environment. At this point the user laptop has a valid Matter workspace.  The workspace is now capable of importing and building Matter projects. 6. Import First Matter Project The MCUXpresso for VS Code extension includes an Import Example wizard that simplifies adding Matter projects to a workspace.  The following instructions show how to import a project from the NXP Matter repository.   A short clip is included to show the steps. Click "Import Example from Repository" from the Quickstart Panel in the upper left. Select the Matter Repository from the drop-down options for Repository. Select the desired Toolchain from the drop-down options for Toolchain.  A GNU Toolchain should be available from previous MCUXpresso Installer steps. Select the target board from the drop-down options for Board.  The listed boards are supported in the NXP Matter repo. Select the desired project from the Template drop-down options.  Currently there are "contact-sensor-app" and "lighting-app". Click Create blue button. At this point there is a Matter project in the workspace.  The project can be explored with the provided project properties and file explorer views. 7. Build Matter Project Building the project is the final step for Getting Started with a Matter project in VS Code.  The extension has properly setup the project toolchain and will build successfully.  The NXP extension reduces the setup time by not importing the SDK for all supported boards.  The board SDK is automatically imported/cloned when it is not located on the 1st build for a board.  Successive projects for the same board will not require this additional step/delay. The following steps show how to build a matter project in the workspace.  A short clip is included to show the steps.  Select the Matter project listed under the Projects pane located in the primary left sidebar.  When selected, project control icons are revealed to the left of the project name. Click on the Build icon.   Verify the build was successful by viewing the binary files with File Explorer.  Click the File Explorer icon to the right of project name or in the upper left of the side bar navigation.  The binary is found under the project's \out\debug folder. This exercise on "Getting Started with Matter" is completed.  At this point the Matter project imported to the workspace was successfully built. 
View full article
Wireless Equipment: Ellisys:  Ellisys is a leading worldwide supplier of advanced protocol test solutions for Bluetooth®, Wi-Fi, WPAN, USB 2.0, SuperSpeed USB 3.1, USB Power Delivery, USB Type-C, DisplayPort and Thunderbolt technologies.  USB, Bluetooth and WiFi Protocol Test Solutions  Bluetooth Vanguard - Advanced Bluetooth Analysis System Bluetooth Qualifier - Bluetooth Qualification System   RFcreations:     RFcreations is a core team of highly skilled and knowledgeable, professional engineers with decades of experience across the design and development of both RF and digital hardware, embedded, protocol stacks and UI software mini-moreph morephCS   Teledyne Lecroy:    offers an extensive range of test solutions to help with design, development, and deployment of devices and systems frontline-x240 Wireless Protocol Analyzer  frontline-x500e Wireless Protocol Analyzer  Rohde&Schwarz:        is a global technology group striving for a safer and connected world. Offers Test & Measurement, Technology Systems and Networks & Cybersecurity Divisions R&S CMW270 wireless connectivity tester Useful links:  Top Online Bluetooth LE learning Resource Ellisys Bluetooth Video Series RFcreations Bluetooth Sniffers and Test Tools Learn Bluetooth Low Energy in a single weekend
View full article
Aiming to increase the reach of card and mobile payment, Europay, Mastercard and Visa (EMV) point of sale (POS) terminals are getting more lightweight, replacing hardware security with software and back-end security. Off-the-shelf mobile devices, like your smart phone, can become an acceptance point for payment cards, a so-called SoftPOS.
View full article
MIFARE DESFire EV1 supports the APDU message structure according to ISO/IEC 7816-4 for an optional wrapping of the native MIFARE DESFire EV1 APDU format and for the additionally implemented 7816-4 commands from a practical point of view.
View full article
 Introduction The KW45-EVK & FRDM-MCX W71 include an RSIM (Radio System Integration Module) module with an external 32 MHz crystal oscillator and 32kHz external oscillator. 32MHz clock source reference is mainly intended to supply the Bluetooth LE Radio peripheral, but it can be used as the main clock source of the MCU as well. This oscillator includes a set of programmable capacitors to support crystals with different load capacitance needs. Changing the value of these capacitors can modify the frequency the oscillator provides, that way, the central frequency can be tuned to meet the wireless protocol standards. This configurable capacitance range is from C: 3.74pF to C: 10.67pF and it is configured through the RFMC Register XO_Test field at the CDAC. The KW45 comes preprogrammed with a default load capacitance value (0x1Eh). However, since there is variance in devices due to tolerances and parasite effects, the correct load capacitance should be checked by verifying that the optimal central frequency is attained.  You will need a spectrum analyzer to measure the central frequency. To find the most accurate value for the load capacitance, it is recommended to use the Connectivity Test demo application. 32kHz clock source reference is mainly intended to run in low power when the 32MHz clock is switched off. This 32kHz clock enable to leave the low power mode and enter in Bluetooth LE events. Adjusting 32MHz Frequency Example   Program the KW45 /MCX W71 Connectivity Test software on the device. This example can be found in SDK_2_15_000_KW45B41Z-EVK_MR5\boards\kw45b41zevk\wireless_examples\genfsk\connectivity_test folder from your SDK package. Baremetal and FreeRTOS versions are available. In case that KW45-EVK board is being used to perform the test, you should move the 15pF capacitor populated in C3 to C4, to direct the RF signal on the SMA connector.                                   3. Connect the board to a serial terminal software. When you start the application,              you will be greeted by the NXP logo screen: Press the enter key to start the test. Then press "1" to select "Continuous tests":          5. Finally, select "6" to start a continuous unmodulated RF test. At this point, you should be able to measure the signal in the spectrum analyzer. You can change the RF channel from 0 to 127 ("q" Ch+ and "w" Ch- keys), which represents the bandwidth from 2.360GHz to 2.487GHz, stepping of 1MHz between two consecutive channels. To demonstrate the trimming procedure, this document will make use of channel 42 (2.402GHz) which corresponds to the Bluetooth LE channel 37. In this case, with the default capacitance value, our oscillator is not exactly placed at the center of the 2.402GHz, instead, it is slightly deflected to 2.40200155 GHz, as depicted in the following figure:         6. The capacitance can be adjusted with the "d" XtalTrim+ and "f" XtalTrim- keys. Increasing the capacitance bank means a lower frequency. In our case, we need to increase the capacitance to decrease the frequency. The nearest frequency of 2.402 GHz was 2.40199940 GHz        7. Once the appropriate XTAL trim value has been found, it can be programmed as default in any Bluetooth LE example, changing the BOARD_32MHZ_XTAL_CDAC_VALUE constant located in the board_platform.h file:   Adjusting 32kHz Frequency Example   You could adjust the capacitor bank on the 32kHz oscillator. You need to observe the 32kHz frequency at pin 45 (PTC7) using an spectrum analyzer or a frequency meter. Inserting this below code in the main(void) in your application: Hello_world application in this example. 32kHz frequency is not active by default on pin45(PTC7). You need to configure the OSC32K_RDY at 1 in the CCM32K register Status Register (STATUS) field to observe the 32kHz frequency at pin 45 (PTC7). Configure the CAP_SEL, XTAL_CAP_SEL and EXTAL_CAP_SEL field available in the CCM32K register 32kHz Oscillator Control Register (OSC32K_CTRL).       XTAL_CAP_SEL and EXTAL_CAP_SEL values are from 0pF (0x00h) to 30pF (0x0Fh). You could configure those 2 registers in the clock_config.c file. Default values are 8pF for both registers.        
View full article
Some users want to use SDIO signals on M.2 connector for WiFi card. In default linux bsp, there is no problem using imx8mp-evk-usdhc1-m2.dts, usdch1 driver can normally loaded, and detect WiFi module, But default android bsp doesn't support it, even if using corresponding device tree, usdch1 driver can NOT be loaded correctly, Because default android bsp doesn't load pwrseq_simple.ko, which is used by usdhc1 node. Detailed steps on enabling usdhc1 in the attached document, hope it can help users who wants to use M.2 SDIO WiFi card. [Note] For other android bsp version, users can also refer to the steps in attached document.   Thanks! Regards, Weidong Sun
View full article
On the KW45 product, there is a way to enable the 32kHz clock without using a crystal externally. Indeed, a FRO32K can be used instead. this article proposes to show you at a glance how to activate it and which performances to expect in comparison to a 32kHz crystal.  This Crystal-Less mode allows to reduce the cost of the system, without compromising the 32 kHz clock accuracy thanks to a software calibration mechanism called SFC standing for Smart Frequency Calibration. One other advantage of the FRO32K is the shorter start up time, including the calibration. The FRO32K clock is calibrated against the 32 MHz RF oscillator through the Signal Frequency Analyzer (SFA) module of KW45. Software enablement: The Crystal-less feature is available since the SDK version 2.12.7 (MR4) , all measurements in this document are done with softwares based on this version of SDK. To enable the Crystal-Less mode, simply define the compilation flag gBoardUseFro32k_d to 1 in board_platform.h or in app_preinclude.h. In this mode, the SFC module measures and recalibrates the FRO32K output frequency when necessary. This typically happens at a Power On Reset, or when the temperature changes, or periodically when the NBU is running. By using this mode, higher power consumption is expected. The FRO32K consumes more power than the XTAL32K in low power mode (around 350nA), and the NBU wakes up earlier while FRO32K is used, which also entails a higher power consumption.   FRO32K vs Xtal32K performances: For these measurements, we used an early FRO32K delivered feature but, even if it is still in experimental phase, the results below will already give you some information.    Clock accuracy at room temperature:    In steady state, the output frequency of the FRO32K is even more stable than that of the XTAL32K thanks to the SFC module. The clock frequency accuracy of the XTAL32K is a bit better than the FRO32K, however, both are within the permitted accuracy range and are compliant with the Bluetooth Low Energy specification. Clock accuracy after recalibration (triggered by a temperature variation):   This test proved that the FRO32K provided a source clock that is within the target accuracy range even during a temperature variation. Throughput test at room temperature: Throughput measurements are performed using two different clock sources to verify if there is any connection lost due to the potential clock drift entailed by using the FRO32K as a clock source. The BLE_Shell demo application is used for the throughput measurement. (refer to KW45-EVK Software Development Kit). The DUT is programmed with software using either the XTAL32K or the FRO32K as the source clock. After the communication establishment, the bit rate measurement is triggered manually, and the result is displayed on the prompt window.  Results: Two clock configurations show identical performance, which proves that the 32 kHz crystal-less mode presents no disconnection and no performance degradation. Throughput test over a temperature variation: it is the same test set up as above but within a 60 °C temperature variation. The results are identical to previous ones. No disconnection or performance degradation is detected. Conclusion Various tests and measurements proved that the FRO32K can be used as the 32 kHz clock source instead of the XTAL32K, with the help of the SFC module. It is capable of providing an accurate and stable 32 kHz clock source that satisfies the requirements of connectivity standards. However, please note that this feature is still in experimental phase, tests are still ongoing to ensure that the feature is robust in any circumstances. Customers who want to enable this feature in production must validate this solution according to their own use cases. For more detailed information, a draft version of the application note is attached to this article but an updated version will be available on NXP.com website when a new SDK is released.
View full article
Generality on the Oscillation Margin Outline It is a margin to the oscillation stop and the most important item in the oscillation circuit. This margin is indicated by ratio based on the resistance of crystal, and it shows how amplification oscillation capability the circuit has. The oscillation circuit can theoretically operate if the oscillation margin is 1 or more. However, if oscillation margin is close to 1, the risk of operation failure will increase on module due to a too long oscillation start up time and so on. Such problems will be able to be solved by a larger oscillation margin. It is recommended to keep 3 times or more as oscillation margin during the startup of the oscillation. Factor of 10 is commonly requested for Automotive at startup and 5 for IoT market. However, some providers accept to have 3 times as oscillation margin for steady state. Here below is an oscillation example to explain better the phenomenon: At start up, the configuration is set internally by the hardware in order to be sure to start the oscillation, the load capacitor is 0pF. After this time, it is the steady state and the load capacitor from the internal capabank is taken into account.     If load capacitor is not set correctly with the right oscillator gain, the oscillation will not be maintained after the start up.   The oscillator gain value will also depend on the resisting path on the crystal track.  A good way to evaluate it is to add a resistor on the crystal path and try to launch the oscillation. In the SDK, the gain and the load capacitor can set directly in the application code.   Calculation The oscillation margin is able to be calculated as follows: The oscillation margin calculation is based on the motional resistor Rm by formula below :               Example: for the EVK board’s 32kHz crystal (NX2012SE) ESR   80000,0 ohm Rm1   79978,2 ohm Lm1    3900 H Cm1   6,00E-15 F C0      1,70E-12 F CL      1,25E-08 F fr        32901,2 Hz fosc    32771 Hz Series Resistor Rsmax      7,50E+05 Ohm Oscillation Margin   10,3   Measurement Requirements for measurement PCB Crystal unit (with equivalent circuit constants data) Resistors (SMD) Measurement equipment (Oscilloscope, Frequency counter or others capable to observe oscillation) Add a resistor to the resonator in serial and check if the oscillation circuit works or not. If the oscillation is confirmed by 2), change the resistor to larger. If there is no oscillation, change the resistor to smaller. Find out the maximum resistor (=Rs_max) which is the resistor just before the oscillation stop. Measure the oscillating frequency with Rs_max. Calculate the oscillation margin based on the Rs_max.   Notes The Oscillation margin is affected not only by crystal characteristics but also parts that compose the oscillation circuit (MCU, capacitor and resistor). Therefore, it is recommended to check the oscillation margin after the MCU functionality is checked on your module. The series resistor is only for the evaluation. Please do not use this resistor in actual usage. It is recommended to check the functionality of your module also. It is possible that the module does not work correctly due to a frequency shift on oscillation circuit and so on. Jig and socket could be used in measurement, but stray of them will give influence for oscillation margin.   KW45/K32W1 product oscillation margin overview 32MHz crystal NXP recommends to use the quartz NDK NX1612SA (EXS00A-CS14160) or NDK NX2016SA (EXS00A-CS14161) to be compliant with the +/-50ppm required in Bluetooth LE. Using the current SDK, NXP guarantees an oscillation margin of 10 for startup commonly used by Automotive customers and 3 for steady state. Higher oscillation margin can be reached by using higher ISEL and CDAC parameters with some drawback respectively on the power consumption and the clock accuracy. ( the load capacitance bank (CDAC) and the oscillator amplifier current (ISEL)) NDK recommended / target values for oscillation margin is informed case by case. On general basis requested oscillation margin has to be between recommended value and 3 times this value. "NDK quartz provider (FR) explains this oscillation margin specification is only mandatory at the start-up phase, not at the steady state. Starting the oscillation is the phase that needs more energy. That's why the gain of the oscillator gain is at the maximum value which means not optimal consumption. When the oscillation stability is reached, the gain could be reduced to save power. The oscillation will not be affected.  Keep in mind a quartz oscillates by mechanical effect. So, when the oscillation is starting you need the highest energy to emulate it. By its own inertial, you need less energy to maintain the mechanical oscillation. NDK provides a good picture of this. Starting up a crystal into oscillation is like a train what you would like to start moving. At the beginning the train is stopped and you need a lot of energy to start running. When the train is running at its nominal speed, you need less effort to maintain that movement and a very big effort to stop it completely."   Example: for the oscillation margin 10 (Series Resistor Rsmax = 560W) The CDAC/ISEL area where the oscillation starts and propagates in the internal blocks is defined (‘oscill’) in the table below.     32kHz crystal NXP recommends to use the quartz NDK NX2012SE (EXS00A-MU01517) or NDK NX2012SA (EXS00A-MU00801) to be compliant with the +/-500ppm required in Bluetooth LE. using the current SDK, the oscillation margin with this quartz is 10 with some limitation on the Crystal load capacitance selection (Cap_Sel) and the Oscillator coarse gain amplifier (ESR_Range) values, with some drawback respectively on the power consumption and the clock accuracy. For an oscillation margin at 10 for instance, the Capacitor value from the databank (CapSel) is limited (green area) as shown in the graph below: Example:  for an oscillation margin at 6.4, if the load cap is set at 14pF and the ESR_Range to 3, the 32kHz frequency accuracy will be around 91ppm. From this point, the oscillation margin can be enlarged to 10.3 by decreasing the load cap to 10pF but the accuracy will be degraded (183ppm). For an Oscillation margin at 10, the graph below is showing the ESR_Range versus the load cap. The possible load cap variation range (in green) is larger when the ESR_Range increases:   Example: at oscillation margin 10.3, the clock accuracy can be improved from 213ppm to 183ppm by setting the ESR_range 2 to an ESR_Range 3 but the current consumption will be increased to 169.5nA. An other important point is that for a given ESR_Range value, getting higher the load cap is much more increasing the current than in the example above.   Remark: Under a high oscillation margin condition, the crystal voltage will be smaller.   Other possible ways to improve the oscillation margin exist: - Use external capacitor instead of internal capacitor banks. Oscillation margin goes up to 10. - Use the internal 32kFRO is supported for BLE (target:+/-500ppm)
View full article