Multi Source Translation Content

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

Multi Source Translation Content

Discussions

Sort by:
Introducing a new host utility: RAPID BLHOST (RBLHOST) What is Rapid Blhost (RBLHOST)? RBLHOST is a command-line utility provides MCU bootloader library used on host computer/processor for issuing commands to NXP MCUs via UART and I2C.  Its command-line interface is compatible with the original blhost tool for image programming. It is designed to deliver high performance for time-critical applications and enables seamless integration into systems developed in Python, C, or Rust—the core language used for this project.  More information about RBLHOST can be found below: Rapid Blhost (RBLHOST) 0.1.0: GitHub: https://github.com/nxp-mcuxpresso/rblhost Documentation: https://crates.io/crates/rblhost announcement
View full article
推出一款新的主机实用工具:RAPID BLHOST (RBLHOST) 什么是 Rapid Blhost(RBLHOST)? RBLHOST 是一个命令行实用程序,提供 MCU 引导加载程序库,用于在主机计算机/处理器上通过 UART 和 I2C 向 NXP 微控制器发出命令。它的命令行界面与原始 blhost 工具兼容,用于图像编程。 它旨在为时间关键型应用提供高性能,并能够无缝集成到用 Python、C 或 Rust(本项目使用的核心语言)开发的系统中。有关 RBLHOST 的更多信息如下: Rapid Blhost (RBLHOST) 0.1.0: GitHub: https://github.com/nxp-mcuxpresso/rblhost 文档: https://crates.io/crates/rblhost 公告
View full article
MCUXpressoセキュア・プロビジョニング・ツール(SEC) v25.09の提供を開始 SEC v25.09の新機能は何ですか? 新しいプロセッサのサポート: - MCX Aプロセッサ:MCXA175、MCXA176、MCXA255、MCXA256、MCXA265、MCXA266、MCXA345、MCXA346、MCXA365、MCXA366 - MCX Lプロセッサ:MCXL253、MCXL254、MCXL255(非セキュアブートタイプのみ) - i.MX RT1186プロセッサ MCX E24プロセッサ向けのセキュアブートサポートを追加 KW47およびRW61xプロセッサ向けの新しいEdgeLock 2GOフローをサポート 詳細はこちら 既知の問題と制限事項 トラブルシューティング ダウンロード インストーラをダウンロードするには、次のリンクからダウンロード・サイトにログインしてください。 https://nxp.com/mcuxpresso/secure 役立つリンク: リリース・ノート:MCUXpressoセキュア・プロビジョニング・ツール(SEC)リリース・ノート ファクト・シート:MCUXpressoセキュア・プロビジョニング・ツール・ファクト・シート 発表
View full article
S32K39-37-36 – eMIOS/BTCU/SAR-ADC/DMA – [RTD600] Abstract This example presents an use case for analogue data capturing using eMIOS, BCTU, SAR-ADC and DMA modules on S32K39-37-36 series based on the RTD low level API to support diverse application needs. Connections: S32K396-BGA-DC1 -> Pin -> Signal -> Label J62-1 -> PTC30 -> siul2_gpio_xx -> GPIO1_GPT (D0) J58-1 -> PTE14 -> emios_0_ch_19_z -> PWM1 J58-2 -> PTG9 -> siul2_gpio_xx -> GPIO2_eMIOS_Trigger J62-2 -> PTC31 -> siul2_gpio_xx -> GPIO3_BTCU_Trigger J62-4 -> PTD6 -> siul2_gpio_xx -> GPIO4_BTCU_Watermark J62-24 -> PTB14 -> adc1_s21 -> ADC1 *To use the potentiometer of S32X-MB connect: J62-24 (in S32K396-BGA-DC1) to P26-1 (in S32X-MB) Note: Following line should be added in project/generate/src/Bctu_Ip_PBcfg.c every time the code is updated in Config Tools: #define DMA_LOGIC_CH_0 ((uint8)0U) Detailed Description: The Compare Value of GPT eMIOS_0_ch_0 generates a time-out period. Once time-out is reached its Emios Notification toggles GPIO1. This allows us to observe in scope 2 events, which describe the start and the end of the signal sequence. The eMIOS_0_ch_23 channel is configured as global counter bus A. In this setup, it can act as the time base for other eMIOS_0 channels, enabling synchronization between other them—there is just one PWM in this case. This synchronization ensures that channels share the same time base, thereby defining a common period for their operation. The emios_0_ch_19_g channel is configured as OPWMT mode, which offer more flexibility for triggering. An interrupt is requested on every flag event, during which GPIO2 is toggled—happens at half the time high in this case. This flag event, can be configured using Trigger parameter. For more details about eMIOS, please refer to S32M27x/S32K3 – eMIOS Usage, considering differences for porting from S32K3 to S32K39-37-36 in AN14301. The BCTU implements a list for parallel conversions using ADC0 and ADC1. Which is triggered by the eMIOS channel, and the resulting data is stored in FIFO1, as follows: ADC0: VREFH_ChanNum51 -> BANDGAP_ChanNum48 ADC1: VREFL_ChanNum50 -> S21_ChanNum45 For debugging purposed the GPIO3 is toggled every BCTU Trigger Notification. Additionally, the GPIO4 is toggled in BCTU Watermark Notification, which happens every time the number of active entries in FIFO exceeds the watermark level, and therefore the data is available for reading. See full signal sequence in Figure 1: Figure 1. Signals of example project When you suspend debug session, in Expressions tab (Figure 2) you can observe results: g_fifo1Result, which corresponds to the BCTU list measurements, meanwhile g_fifo1Volts corresponds to the conversion in volts. Figure 2. Expressions tab of example project   References S32 Design Studio for S32 Platform Real-Time Drivers (RTD) S32K39, S32K37 and S32K36 Data Sheet [S32K39-S32K37-DS] S32K39, S32K37, and S32K36 Reference Manual [S32K396RM] S32K344 to S32K39/S32K37 Migration Guide [AN14301] S32K39/37/36 Electrification Microcontrollers Evaluation Board [S32K396-BGA-DC1] S32X-MB I/O Extension Evaluation Board for Real-Time Domain Control and Actuation [S32X-MB] S32M27x/S32K3 – eMIOS Usage [S32M Knowledge Base] S32M27x/S32K3 – eMIOS/BTCU/ADC/DMA – [RTD600] [S32M Knowledge Base] S32K39-37-36 – eFlexPWM/TRGMUX/BCTU/SAR-ADC/DMA – [RTD600] [S32M Knowledge Base] Application Software: - S32K396_RTD600_eMIOS_BCTU_SARADC_DMA_Ip_example Example was built and tested using the following IDE and Driver versions: - S32 Design Studio for S32 Platform Version 3.6.3 - S32K3_S32M27x Real-Time Drivers ASR R21-11 Version 6.0.0
View full article
How to create P2P connection with 2 IW612 modules This article shares 2 step by step methods to create P2P connections between 2 IW612 modules. One is not setting pin code, another is setting pin code. And also shares local test results and printed logs for your reference. The basic environment: Hardware: 2 IW612 modules(Murata LBES5PL2EL) + I.MX93-EVK Software: Linux 6.12.20 Wi-Fi Driver and FW version = SDIW612---w9177o-V1, SDIO, FP99, 18.99.3.p25.7-MM6X18537.p9-GPL-(FP92) As a reference, you can also test on other NXP's Wi-Fi products based on Linux OS. Best regards, Christine.
View full article
GUI GuiderでZephyrとMCUXpresso for VS Codeを使用する例 NXPのユーザー・フレンドリーなグラフィカル・ユーザー・インターフェース開発ツールGUI Guiderなら、オープンソースのLVGLグラフィックス・ライブラリにより高品質のディスプレイを迅速に開発することが可能です。 GUI GuiderではZephyrを使用してプロジェクトをエクスポートすることもできます。GUI Guiderにインストールされているドキュメント GUIGuider_User_ManualにはZephyrを使用する作業のセクションがあり、コマンドラインインターフェース(CLI)を使用する手順が記載されています。この記事では、NXPによるVS CodeのMCUXpresso拡張機能を使用して、生成したプロジェクトをインポートし、ビルドし、ボードへダウンロードする例を示します。 要件 この記事にある手順は次の要件に基づいています。 ソフトウェア: GUI Guider v1.10.0-GA Zephyr v4.0.0 - GUI Guiderのリリースノートには、「Zephyr v4.0 support for LVGL v8.3.10」のサポートに基づいていると記載されています。 Zephyr SDK v0.17.0 - Zephyr v4.0.0でテストされているZephyr SDKバージョン VS Code v25.9.49のMCUXpresso拡張機能 ハードウェア: MIMXRT595-EVK評価ボード(i.MX RT500向け) G1120B0MIPIディスプレイシールド Zephyrの前提条件 このGUI Guiderリリースの要件は、Zephyrの古いバージョンv4.0.0です。ZephyrリポジトリがすでにVS Codeにインポートされている場合、必要とされるバージョンをMCUXpresso拡張機能でチェックアウトします。 MCUXpresso拡張機能をクリックし、更新するZephyrリポジトリを右クリックして「Update Repository or Index(リポジトリまたはインデックスを更新)」をクリックします。 ポップアップが右下隅に表示されます。「カスタム」ボタンをクリックしてリリースタグを選択してください。 プルダウンが中央上に表示されます。v4.0.0リリースタグを選択します。拡張機能で、このバージョンをチェックアウトし、「west update」を実行し、すべてのモジュールリポジトリを同期するまでは、時間がかかります。 Zephyrリポジトリを初めてインポートする場合は、v4.0.0バージョンが選択できます。拡張機能のQuickstart Panelを使用して「Import Repository(リポジトリをインポート)」します。MCUXpresso拡張機能の使用方法とZephyrのインポートに関する詳細なヘルプについては、NXP Zephyr Knowledge Hubを参照してください。 リポジトリ: Zephyr リビジョン: v4.0.0を選択 GUI Guiderプロジェクトを作成/エクスポートする GUI Guiderを開いて新しいプロジェクトを始めてください。 LVGL8.3.10を選択してください。GUI Guiderのリリースノートには、これがZephyr v4.0.0でサポートされるLVGLのバージョンであると書かれているからです。 ボードMIMXRT595-EVKを選択してください SmartWatchアプリケーションを選択します。 プロジェクトを作成します。 プロジェクトのCコードを生成します。 Zephyrのコードをエクスポートします。 プロジェクトをZephyrリポジトリにエクスポートすることは、そのプロジェクトをVS Codeにインポートする最も簡単な方法です。 この例では、ZephyrワークスペースがC:\z\zephyrprojectに設定されています。 エクスポートするプロジェクトフォルダの名前はgui_guider_demoで、サンプルフォルダに配置します。 すなわち、エクスポートしたプロジェクトのフルパスはC:\z\zephyrproject\zephyr\samples\gui_guider_demoです。 GUI GuiderプロジェクトをVS Codeにインポートする VS CodeのMCUXpresso拡張機能に戻って、リポジトリを更新し、新しく生成されたサンプルプロジェクトがあるのを確認します。 Quickstart Panelで「Import Example from Repository(リポジトリからサンプルをインポート)」して、次の設定を選択します。 リポジトリ: 自分のZephyr v4.0.0ワークスペース ボード: mimxrt595_evk//cm33 テンプレート: 「gui」を検索し、エクスポートしたgui_guider_demoを選択 アプリの種類: リポジトリアプリケーション Zephyr SDK: これはZephyrの古いリリースであるため、Zephyr SDKの古いバージョンv0.17.0を使用しないと、アプリはビルドされない インポートしたら、ディスプレイシールドもプロジェクトに追加する必要があります。これはCmake変数を追加することによって行います。詳細については、MCUXpresso Cmake wikiを参照してください。gui_guider_demoプロジェクトで、デバッグビルド設定の「Edit(編集)」ボタンをクリックします。 次の行を使用してシールド名をCMake Extra引数に追加し、「Save(保存)」ボタンをクリックします。 SHIELD="g1120b0mipi"  GUIガイダーパッチを適用する GUI Guiderでエクスポートしたプロジェクトには、gitパッチが含まれています。GUIGuider_User_Manualには、これらのパッチをZephyrリポジトリとLVGLリポジトリに適用する手順を掲載しています。これらのパッチを適用するにはCLIを使用しますが、この記事ではMCUXpresso拡張機能のCLI機能を使用します。 gui_guider_demoプロジェクトを右クリックし、「Open in Integrated Terminal(統合ターミナルで開く)」を選択します。これでプロジェクトフォルダのCLIターミナルが開き、Python仮想環境がアクティブになります。 次のCLIコマンドを入力してパッチを適用します。 cd ../.. git apply samples\gui_guider_demo\patches\0001-zephyr-Add-build-support-for-new-lvgl-widgets-develo.patch cd ..\modules\lib\gui\lvgl git apply ..\..\..\..\zephyr\samples\gui_guider_demo\patches\0001-lvgl-Add-new-widgets-developed-by-NXP.patch Kconfig設定を更新する エクスポートしたプロジェクトのKconfig設定の一部は、このボードとアプリケーションでは機能しません。サイズを大きくする必要があります。ここで採用するサイズは、Zephyrリポジトリのファイル/modules/lvgl/demos/prj.confにあるLVGL demoによるものです。Kconfigの概要については、NXPのZephyr Lab MCXN947 Kconfigを参照してください。 エクスポートしたgui_guider_demoプロジェクトで、プロジェクトファイルprj.confを開きます。 Kconfig設定の冒頭にある2つを次のサイズに更新します。 CONFIG_LV_Z_MEM_POOL_SIZE=49152 CONFIG_MAIN_STACK_SIZE=4096 プロジェクトをビルドしてフラッシュする プロジェクトをビルドする準備が整いました。プロジェクトを右クリックしてPristine Buildを実行します。 ビルドが完了したら、デバッグアイコンをクリックしてイメージをフラッシュするようにプログラムします。アプリは非常に大きなイメージで、プログラムには少し時間がかかります。 これで、GUI Guiderによって生成されたLVGLアプリケーションがターゲットボード上で実行されます。 Zephyr Knowledge Hubに戻る
View full article
Config Tools for i.MX v25.09が利用可能になりました Config Tools for i.MX v25.09が利用可能になったことをお知らせいたします。 ダウンロード & リンク すべてのプラットフォーム用インストーラーをダウンロードするには、次の方法でダウンロードサイトにログインしてください。 https://www.nxp.com/design/designs/config-tools-for-i-mx-applications-processors:CONFIG-TOOLS-IMX インストールガイドとクイックスタートガイドについては  ドキュメントを参照してください。 DDRの設定と検証の詳細については、この  ブログ記事をご覧ください。 リリース・ノート リリースの詳細(機能、既知の問題など) • リリースノートの形式をプレーンテキストからmarkdownに更新しました。 • 新しく生成されたコンフィギュレーションには、NXPのデフォルトの著作権表示が含まれ、 BSD-3-Clause licenseの下でライセンスされます。 • DDRツール – i.MX 943およびi.MX 95上のLP4/LP5向けODTおよびドライバ強度を更新しました。 – i.MX 9xデバイス向けのDRAMコンフィギュレーションを改善しました。 – i.MX 943およびi.MX 95上のDDRテストでマルチコアサポートを有効化しました。 – DDRツールに対するLinuxサポートを追加しました。 – GUIで[Vref DQ Setting(Vref DQ設定)]が利用可能になりました。 – i.MX 943およびi.MX 95向けのボード非依存SMサポートを追加しました。 – GUIでDDR部品番号の入力をサポートしました。 – ターゲットアプリケーションからのログを強化しました。 – ストレステストの繰り返しオプションを有効化しました。 – i.MX 943およびi.MX 95上のODT shmooシナリオ値を更新しました。 – i.MX 943およびi.MX 95上のSNPS FWおよびPHY Init 2024.09 SP2をサポートしました。 – i.MX 943およびi.MX 95のCES部品向けにBSPと整合させるため、AHAB imageを更新しました。 – i.MX 943上の15x15に対する新しいコンフィギュレーションサポートを追加しました。 – シングルチャネル構成向けのバスコンフィギュレーションを改善しました。 – i.MX 943およびi.MX 95向けに、GUIでLP4/LP5 CS信号コンフィギュレーションを公開しました。 • クロック – 入力周波数設定をサポートしました。 • システムマネージャ – ツールの初期バージョンです。
View full article
BluetoothクラシックRF仕様 - セッション1トランスミッタ このドキュメントは、BluetoothクラシックRFパラメータを要約し、NXP WiFi&Bluetooth製品のBluetooth RFテストと結果分析の例を提供します。 このドキュメントには以下が含まれています:  はじめに BT主要パラメータ テスト手順と結果分析
View full article
KW43 Knowledge Hub KW43 / KW43L are new product development. Iterating on KW45 and KW47, KW43 / KW43L are leveraging multi core architecture benefits with a twin Arm Core M33 implementation: multiple interfaces and latest security features intended to be supported. Focus is on best-in-class Real Time with one instance of Arm Core used for System Application while other is maximizing Radio/Wireless Activities. NXP remains committed to most secure, cost effective and advanced wireless solutions with all latest to anticipate future challenges.   Pin-to-pin compatibility with KW47/KW45: Please refer to the sildes attached below for the pin-to-pin compatibility, thanks.   KW43 Block Diagram   Documents Reference Manual Datasheet Errata Secure Reference manual** Certifications SESIP Cert SESIP ST PSA Certification RED Certification EUROPEAN UNION DECLARATION OF CONFORMITY (EVK) EUROPEAN UNION DECLARATION OF CONFORMITY (LOC) Japan MIC KW45-LOC _TELEC-20250221 see attached below Bluetooth Specifications Bluetooth_5.0_Feature_Overview  Bluetooth_5.1_Feature_Overview  Bluetooth_5.2_Feature_Overview Bluetooth_5.3_Feature_Overview Bluetooth_5.4_Feature_Overview Bluetooth_6_Feature_Overview Bluetooth_6.1_Feature_Overview Bluetooth_6.2_Feature_Overview Evaluation boards KW43 KW43-EVK KW43-EVK Schematic KW43-EVK Design Files KW43-EVK User manual KW43-LOC User manual KW43-EVK Getting Started Application Notes Software, Hardware and Peripherals: AN14122 : How to use RTC on KW45 This application note describes how to configure and use the RTC peripheral in a BLE demo AN14141 : Enabling Watchdog Timer Module on KW45 Bluetooth Low Energy Connectivity Stack This application note describes the process to implement the WDOG timer in a Connectivity Stack demo. AN13855 : KW45/K32W1 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. AN13584 : Kinetis KW45 and K32W1 Loadpull Report This application note describes measurement methodology and associated results on the load-pull characteristics. AN13860 : Creating Firmware Update Image for KW45/K32W1 using OTAP tool This application note provides the steps to create and upgrade the image on the KW45 board via OTAP. AN14077 : Steps to migrating KW45 (1MB) to KW45 (512kB) This application note describes the initial steps require to migrate from 1MB flash to 512kB flash. Power Management: AN13230: Kinetis KW45 and K32W1 Bluetooth LE Power Consumption Analysis This application note provides information about the power consumption of KW45 wireless MCUs, the hardware design and optimized for low power operation. AN13831: KW45/K32W1 Power Management Hardware This application note describes the usage of the different modules dedicated to power management in the KW45/K32W1 MCU. RF: AN13687 : K32W1 Connectivity test for 802.15.4 Application This application note describes how to use the connectivity test tool to perform K32W1 802.15.4 RF performance. AN13728 : KW45 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 KW45 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.  AN14098: KW45-LOC RF Test Report This application note provides basic RF test result of the KW45B41Z localization board.  AN13228 : KW45-EVK RF System Evaluation Report for BLE Applications This application note provides the RF evaluation test result of the KW45B41Z-EVK for BLE application using two frequency Shift Keying modulation. AN13229 : KW45-EVK Co-existence with RF System Evaluation Report for BLE application This application note provides the RF evaluation test results of the KW45B41Z-EVK for BLE application (2FSK modulation) AN13512 : Kinetis Wireless Family Products BLE Coexistence with Wi-Fi Application This application note provides the K32W1/4X low energy family products immunity on Wi-Fi signals and methods to improve coexistence with Wi-Fi  Security: AN13859 : KW45/K32W1 In-System Programming Utility This application note provides steps to boot KW45/K32W1 MCU in ISP mode and establish various serial connections to communicate with the MCU. AN14003 : Programming the KW45 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.  AN13883 : Updating KW45 Radio Firmware Via ISP Using SPSDK This application note provides steps to boot KW45/K32W1 MCU in ISP mode and update the radio firmware with secure binary. AN14109 : KW45 and K32W148 Secure  Boot Using the SEC Tool This application note provides steps to do secure boot KW45/K32W1 MCU using signed images and secure binaries on the SEC GUI tool. AN13838 :  KW45 and K32W148 Secure  Boot Using the SPSDK Command line Tool This application note provides steps to do secure boot KW45/K32W1 MCU using signed images and secure binaries on the SPSDK command line tool. AN13931 : Managing Lifecycles on KW45 and K32W148 This application note provides steps to do transition lifecycles KW45/K32W1 MCU using the SEC GUI and SPSDK command line tools.  AN14158: Debug Authentication on KW45/ K32W148 This application note describes how to do debug authentication to securely debug an application in the field.  AN14544 : EdgeLock 2GO Services for MPU and MCU This application note introduces the EL2GO services for NXP devices. This allows trust provisioning of the device in an untrusted environment.  AN14174: KW45/K32W1 Flash Encryption using NPXThis application note provides steps to do enable on-the-fly encryption on KW45/K32W1 MCU. AN14158: debug authentication on KW45/K32W148 This application note describes the steps for debug authentication using the Secure Provisioning SDK tool (SPSDK). Support KW43 is in development, any question please contact pascal.bernard@nxp.com   Useful Links Offline Installation · nxp-mcuxpresso/vscode-for-mcux Wiki · GitHub If a machine is not connected to the internet, preventing access to the online files, an option exists to create an offline image and manually copy and use it on the offline machine [MCUXSDK] How to use GitHub SDK for KW4x, MCXW7x, MCXW2x - NXP Community this community post provides step by step how to use GitHub SDK [MCUXSDK] GitHub SDK - Documentation for Bluetooth LE platforms - NXP Community this community post provides the documentation for BLE platforms.  Clock Measuring using the Signal Frequency Analyzer (SFA) module for KW45/KW47/MCXW71/MCXW72 - NXP C... : 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)... 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. Kinetis (K32/38/KW45 & K32W1/MCXW71) Power Profile Tools:  This page is dedicated to the Kinetis (KW35/KW38/KW45) and MCX W7x (MCX W71) Power Profile Tools. It will help you to estimate the power consumption in your application (Automotive or IoT) and evaluate the battery lifetime of your solution. KW45/K32W1 32MHz & 32kHz Oscillation margins: this article provides the properly configuration for the Oscillation margins for the circuit.   Reference Designs Bluetooth Ranging Access Vehicle Enablement System - NXP Community Blue Ravens (Bluetooth Ranging Access Vehicle Enablement System) is a system solution developed by NXP to assist customers in designing their own BLE-based car access solutions using NXP products. Demo (video) KW45 Based CS 1 to Many Demo NXP - Channel Sounding   Training BLE Introduction  RF Switch Comparison Absorptive/Reflective Standards Comparison ETSI / FCC / ARIB requirements BLE Channel Sounding  - Overview BLE Channel Sounding - RF Hardware BLE Channel Sounding - ANSYS Modeling Tools  BLE Channel Sounding - Antenna Prototypes Validation Measurements     Equipment Wireless Equipment: This article provides the links to the Equipment that helps to the project development  Development Tools  SDK builder: The MCUXpresso SDK brings open-source drivers, middleware, and reference example application to speed your software development. SDK GitHub: SDK open-source Drivers, middleware and reference examples in Github 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.  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. Config Tool: MCUXpresso Config Tools, an integrated suite of configuration tools, these configuration tools allow developers to quickly build a custom SDK and leverage pins, clocks and peripheral to generate initialization C code or register values for custom board support. SDK Examples for Wireless MCUs: The wireless examples feature many common Bluetooth configurations. **For secure files is necessary to request additional access.   
View full article
MCX N947:Ethernetとカメラ機能の同時実装 概要 NXPのFRDM-MCXN947ボードは、MCXN947デバイスをベースとした低コストの評価用ボードです。NXPはMCXN947デバイス向けに、ハードウェア評価ボード、ソフトウェア開発IDE、サンプルアプリケーション、ドライバなどのツールとソフトウェアサポートを提供しています。本ボードはEthernet PHYを搭載し、カメラモジュールおよびNXPの低コストLCDモジュールPAR-LCD-S035にも対応しています。 この記事では、MCXN947ボード上のカメラを使用して、イーサネット接続伝送と画像取得を同時に実装する方法を探ります。 ハードウェア環境 開発ボード: FRDM-MCXN947 ディスプレイ: 3.5インチTFT LCD (P/N PAR-LCD-S035) カメラ:OV7670 ネットワークケーブル: RJ45 ソフトウェア環境 IDE: MCUXpresso IDE v11.9.0 SDK: MCUXpresso SDK Builder(nxp.com) ピン構成および多重化 回路設計時には、ピン競合の回避、つまり同一ピンが異なるタイミングで競合する機能に設定されないよう注意する必要があります。ピン機能を設定する際には、電圧範囲、電流駆動能力といった電気的特性が周辺機器の要件を満たすかどうかも考慮する必要があります。ソフトウェア開発時には、MCUファームウェアやライブラリのバージョンごとのピン多重化サポートを確認し、ソフトウェアの互換性と安定性を確保する必要があります。 「 lwip_examples 」→「 lwip_ping_bm 」プロジェクトをFDRM-MCXN947 SDKからインポートし、 board -> pin_mux.c ファイルを開くと、以下の表のとおりEthernet接続に使用されるピン設定を確認できます。 ピン名 Pinmux割り当て P1_4 ALT9 - ENET0_TX_CLK P1_5 ALT9 - ENET0_TXEN P1_6 ALT9 - ENET0_TXD0 P1_7 ALT9 - ENET0_TXD1 P1_8 ALT9 - ENET0_TXD2 P1_9 ALT9 - ENET0_TXD3 P1_13 ALT9 - ENET0_RXDV P1_14 ALT9 - ENET0_RXD0 P1_15 ALT9 - ENET0_RXD1 P1_20 ALT9 - ENET0_MDC P1_21 ALT9 - ENET0_MDIO   NXP公式サイトからMCXN947ボードの回路図をダウンロードし、カメラおよびFlexIO LCDに対応するモジュールを確認すると、下図のようになります。 FlexIOはNXPが開発した柔軟な入出力(I/O)技術で、マイクロコントローラ(MCU)と外部デバイス間で高速かつプログラマブルな通信を実現します。FlexIOモジュールを設定することで、さまざまな通信プロトコルを模倣したり、カスタムプロトコルを実装したりできます。 注意:このLCDは3V I/O電圧にのみ対応しているため、このコネクタ上のすべてのピンを設定する際は、必ず3V3動作モードに設定する必要があります。 以下の図はSDKサンプルの動作原理を示したもので、カメラが画像を取得し、LCDに転送して表示します。 LCDモジュールは、Ethernetやカメラ機能に必要なピンとの競合がない一方、カメラモジュールの設定に必要なピンはEthernetと重複していることが分かります。ピンの再利用状況は、NXP公式サイトで提供されているデータシート内の次の表に示されています。 ピン名 Pinmux割り当て P0_4 ALT0 - P0_4 P0_5 ALT0 - P0_5 P1_4 ALT7 - SmartDMA_PIO0 P1_5 ALT7 - SmartDMA_PIO1 P1_6 ALT7 - SmartDMA_PIO2 P1_7 ALT7 - SmartDMA_PIO3 P1_10 ALT7 - SmartDMA_PIO6 P1_11 ALT7 - SmartDMA_PIO7 P1_18 デフォルト-PIO-ロー P1_19 Default-PIO-High P2_2 ALT1 - CLKOUT P3_2 ALT2 - FC7_P0 P3_3 ALT2 - FC7_P1 P3_4 ALT7 - SmartDMA_PIO4 P3_5 ALT7 - SmartDMA_PIO5 上記のとおり、P1_4、P1_5、P1_6、およびP1_7はEthernetピンと直接競合します。EthernetピンはRJ45 PHYに固定されているため、カメラインターフェースは代替ピンへ再割り当てする必要があります。 データシートによると、P3_0、P3_1、P3_2、およびP3_3が代替ピンとして使用可能です。しかし、P3_2とP3_3はすでにI²C用に使用されているため、これらはそれぞれP3_8およびP3_7へ再割り当てされています(kPORT_MuxAlt3を使用)。 更新後のピンマッピングは以下のとおりです。 前のピン 現在のピン Pinmux割り当て P1_4 P3_0 ALT7 - SmartDMA_PIO0 P1_5 P3_1 ALT7 - SmartDMA_PIO1 P1_6 P3_2 ALT7 - SmartDMA_PIO2 P1_7 P3_3 ALT7 - SmartDMA_PIO3 P3_2 P3_8 ALT3 - FC7_P0 P3_3 P3_7 ALT3 - FC7_P1   実装 再割り当てされたP3_0、P3_1、P3_7、P3_8はボードのヘッダには出ていませんが、回路図によるとテストパッドTP12、TP31、TP18、TP16に接続されています。カメラはこれらのパッドに直接配線することで接続できます。   ピン名 はんだパッド P3_0 TP12 P3_1 TP31 P3_7 TP18 P3_8 TP16   display_examples の smartdma_camera_flexio_mculcd サンプルを lwip_ping_bm プロジェクトに統合します。 board 、 drivers 、 component 、 source フォルダにある .c および .h ファイルをマージし、これらのフォルダを Project -> Properties -> C/C++ Build -> Settings -> Includes 配下のインクルードパスに追加します。 統合後、プロジェクトをコンパイルしてボードへ書き込みます。出力結果は以下の画像のとおりです。 まとめ MCX N947ボードでは、EthernetとCamera機能を同時に実装できます。 lwip_ping_bm デモは、lwIP TCP/IPスタックを使用したICMPベースのPing機能を示すもので、PCへICMP Echoリクエストを定期的に送信し、その応答を処理します。 smartdma_camera_flexio_mculcd デモでは、SmartDMAを使用してOV7670カメラからフレーム単位で画像データを取得し、FlexIO経由でST7796S LCDパネルへ表示する方法を紹介しています。 ピンの再設定とマルチプレクシングにより、MCX N947でEthernetとカメラを同時に使用することが可能になります。
View full article
FRDM-MCXW23 Hands-On: Wireless UART IoT ToolBox Hands On  Goal of this lab is to show the SDK example implementing the wireless UART profile and we will move forward in making some meaningful modifications to the example itself with the goal to show where in the code the end user should enter the relevant application software for the application.    Hardware Requirements  Personal Computer  FRDM-MCXW23 Board   Type C USB Cable    Smartphone    Software Requirements  IDE: Visual Studio Code 1.91.1  SDK: SDK v2.16.100 for FRDM-MCXW23  SPSDK Tool  Windows OS (It was used Windows 10 for this hands-on)  NXP IoT Toolbox (For Android or iOS device)  Terminal program, like PuTTY or Tera Term  Note:  In order to make downloads in NXP website, it is necessary to have an account. Please, register and log-in for moving forward.  MCUXpresso for Visual Studio Code  MCUXpresso for Visual Studio Code (VS Code) provides an optimized embedded developer experience for code editing and development. The extension enables NXP developers to use one of the most popular embedded editor tools and provides an easy and fast way to create, build and debug applications based on MCUXpresso SDK or Zephyr projects.   Install it following the next steps:  Download Visual Studio Code from Microsoft Store or visual studio code web page Download Visual Studio Code - Mac, Linux, Windows  Access to vscode for MCUX wiki and download MCUXpresso Installer  Dependency Installation · nxp-mcuxpresso/vscode-for-mcux Wiki · GitHub  Run MCUXpresso Installer and for this Hands On install at least  MCUXpresso SDK Developer  Arm GNU Toolchain   PEmicro  Installing the FRDM-MCXW23 SDK v25.06.00.  Each MCU has its own SDK that includes driver, examples, middleware, docs and other components. To get and build the demo, let’s install the SDK into VS Code:   Once MCUXpresso for Visual Studio Code is installed open VS Code.  Go to MCUXpresso for VS Code extension that is on the tools column at the left.  Look for INSTALLED REPOSITORIES option and press ‘+’. Detail steps are described in                                     -Use the steps for import a remote Git repository                                   -wiki page.               4.Search for FRDM-MCXW23 v 25.06.00 SDK and complete installation.  Section 1. Wireless of simply less wires?  Open VS code   Go to MCUXpresso for VS Code extension that is on the tools column at the left.  Go to PROJECTS section and select “Import Example Application from and Installed Repository”          4.Select “frdmmcxw23_wireless_uart_bm” project as in the next image and create the project  5. Now you should have the “frdmmcxw23_wireless_uart_bm” in your workspace. Build the projects clicking “Build Selected” icon to make sure the build process succeeds with zero errors and warnings.    6. To make sure your board becomes “unique” we need to change the name of it as it appears in the BLE scanning process. To do this we need to modify a line of code in the app_config.c . In some SDK this file is only referenced from the SDK project. To avoid problems with the future projects we need to have selected the Freestanding option when importing the project.   In project explorer go to your project “frdmmcxw23_wireless_uart_bm” and open this explorer to find the “app_config.c” file.  Once opened, browse to line 76 and make the following modification  From  .aData = (uint8_t*)"NXP_WU" to  .aData = (uint8_t*) "Custom_string" IMPORTANT: Custom_string can be any string that is supposed to be unique in the class (your initials, name of your dog, anything meaningful to you only) Please note the string needs to be 7 characters maximum to avoid any other modifications in the code. In this Lab guide we will modify the string using “NXP_DT”  We will then do the following modification  .aData = (uint8_t*)"NXP_DT" 7. Verify that the modification succeeded by Building the project again and making sure you don’t get any error or warning.   8. Let us, at this point, get familiar with the board and the switches that we need to use to have the application running in the correct way.  The application makes use of two switches, the ROLESW-SW5 (Role Switch) and the SCANSW-SW2 (scan Switch), the establishment of a BLE connection is shown by the CONNLED (connection LED), please refer to the picture below to see where the switches and the LEDs are located on the FRDM-MCXW71 board.    9. Open a Serial terminal on PC for the serial device with these settings on the two boards:   115200 baud rate   No parity   One stop bit  No flow control   To identify the appropriate COM, open the Device Manager and look for MCU-Link VCom Port  10. We are now ready to start evaluating the example, Select “frdmmcxw23_wireless_uart_bm” and click on debug to flash the code into one board  11.Click on “Continue” button or press “F5” key on your keyboard to continue running the downloaded program on device.   You will immediately start noticing two things, the RGB LED (showing white color) and the BLUE LED on the board will start blinking at the same rate and you will see the “Wireless UART Starting as GAP Central” on the terminal.  12. The microcontroller is acting at this stage with the role that your smartphone is supposed to take in the example, to change the role click now the ROLESW=SW4 on the board to change the role to peripheral, the “switched role to GAP Peripheral” message on the terminal should be shown     13. It is now time to make the board visible to a Bluetooth scan, to do this press once the SCANSW=SW2 switch, you should notice now the RBG LED on the board stops blinking and only the CONNLED will continue. The “Advertising…” message should be now prompted on the terminal   14. It is time now to access the IoT Toolbox app on your smartphone and select Wireless UART    15. Once you click on “Wireless_UART” you should see a list of Wireless UART compatible devices advertising in that moment in the region around you (only the one under use at this stage in the picture below identified by NXP_DT)    16. If everything went correctly the BLE communication is in place, and you will observe the following three conditions: A. The BLUE LED on the board becomes solid blue  B.The terminal will report the communication is in place by prompting “Connected to device 0 as peripheral”  C. The screen on your app will look like the following, please note the DICONNECT button at the top right of the screens that shows your smartphone is connected to the FRDM board   17. Type any character(s) into the text box on the IoT toolbox and press the Send button to wirelessly transmit character between the App and the MCXW71 device. Every character you will send from the app will be prompted on the console. At this point we have verified the basic way of working of the Wireless UART app that comes as part of the device’ s SDK.   Congratulations you have reached the end of the first part of the lab, you can now close the IoT Toolbox app on your smartphone and click on Terminate to stop debugging the application on the MCXW23 board.  18. It is now time to make some modifications on out of the box example to add additional interactions between the app and the board at hardware level, the goal is to become more familiar with the software stack in use and the available hardware resources.   As first step, we need to identify the right file where we will incorporate the modifications, the file we need to work on is called wireless_uart.c, same as with app_config.c this file is in the SDK folder so to avoid modifications on the SDK source we have to had imported the example as a freestanding application as show in the first parb of the lab. In window explorer go to your project “frdmmcxw23_wireless_uart_bm” and open the explorer to find the “wireless_uart.c” & “wireless_uart.h” files.    19. In the wireless_uart.c file we need to add the declarations, variables and includes to configure the LEDs commands. Let us start with the variables declarations, somewhere around line 267 (doesn’t really matter the exact number of the line you add the declaration on) add the following lines:  uint8_t command_uart; uint8_t command_lenght; 20. We now need a more complex function to be declared to handle the LED’s behavior as well as the initialization of the ports and pins used, we will command the RGB LED located on the FRDM-MCXW23 board. In the Public functions section of the file (around line 271) place the following commandLed() function (use the copy_and_paste.txt file provided for this lab to avoid any formatting issues)    static void command_led(void) {     if( (command_uart >= '0' && command_uart <= '4') && (command_lenght <= 2))     {         switch(command_uart)         {             case '0':                     GPIO_PortClear(GPIO, 0U, 1<<0); //Turn on Green LED                     GPIO_PortClear(GPIO, 0U, 1<<1); //Turn on Red LED                     GPIO_PortClear(GPIO, 0U, 1<<4); //Turn on Blue LED                 break;             case '1':                     GPIO_PortSet(GPIO, 0U, 1<<0); //Turn off Green LED                     GPIO_PortClear(GPIO, 0U, 1<<1); //Turn on Red LED                     GPIO_PortSet(GPIO, 0U, 1<<4); //Turn off Blue LED                 break;             case '2':                     GPIO_PortClear(GPIO, 0U, 1<<0); //Turn on Green LED                     GPIO_PortSet(GPIO, 0U, 1<<1); //Turn off Red LED                     GPIO_PortSet(GPIO, 0U, 1<<4); //Turn off Blue LED                 break;             case '3':                     GPIO_PortSet(GPIO, 0U, 1<<0); //Turn off Green LED                     GPIO_PortSet(GPIO, 0U, 1<<1); //Turn off Red LED                     GPIO_PortClear(GPIO, 0U, 1<<4); //Turn on Blue LED                 break;             case '4':                     GPIO_PortSet(GPIO, 0U, 1<<0); //Turn off Green LED                     GPIO_PortSet(GPIO, 0U, 1<<1); //Turn off Red LED                     GPIO_PortSet(GPIO, 0U, 1<<4); //Turn off Blue LED                 break;             default:             break;         }     } } 21. To make use of the instructions that manipulate the GPIOs in the wireless_uart.c file we need to make sure they are reachable from the file itself, we ensure this with the following include statement which needs to be added in the include file section of the wireless_uart.c file (around line 30)  #include "fsl_gpio.h" 22. It is now necessary to call the above defined commandLed function in the whole BLE software flow, and, in particular it needs to be called in the BleApp_ReceivedUartStream function defined in the wireless_uart.c files somewhere around line 1440. Include then the commandLed() function just after the following line(s) of code (highlighted in yellow the function to be added and the position)   #if (defined(SERIAL_MANAGER_NON_BLOCKING_MODE) && (SERIAL_MANAGER_NON_BLOCKING_MODE > 0U)) serial_manager_status_t status = SerialManager_InstallTxCallback((serial_write_handle_t)s_writeHandle, Uart_TxCallBack, pBuffer); (void)status; assert(kStatus_SerialManager_Success == status); (void)SerialManager_WriteNonBlocking((serial_write_handle_t)s_writeHandle, pBuffer, streamLength); #endif /*SERIAL_MANAGER_NON_BLOCKING_MODE > 0U*/ } command_led(); /* update the previous device ID */ previousDeviceId = peerDeviceId; } 23. As last modification we need to ensure the commands sent by the user through the IoT toolkit App are correctly captured in the application. Locate the BleApp_GattServerCallback function in the wireless_uart.c file and add the two lines highlighted in yellow below considering the exact position in the code      static void BleApp_GattServerCallback ( deviceId_t deviceId, gattServerEvent_t *pServerEvent ) { uint16_t tempMtu = 0; switch (pServerEvent->eventType) { case gEvtAttributeWrittenWithoutResponse_c: { if (pServerEvent->eventData.attributeWrittenEvent.handle == (uint16_t)value_uart_stream) { command_uart=*pServerEvent->eventData.attributeWrittenEvent.aValue; command_lenght = pServerEvent->eventData.attributeWrittenEvent.cValueLength; BleApp_ReceivedUartStream(deviceId, pServerEvent->eventData.attributeWrittenEvent.aValue, pServerEvent->eventData.attributeWrittenEvent.cValueLength); } break; } case gEvtMtuChanged_c: { /* update stream length with minimum of new MTU */ (void)Gatt_GetMtu(deviceId, &tempMtu); tempMtu = gAttMaxWriteDataSize_d(tempMtu); mAppUartBufferSize = mAppUartBufferSize <= tempMtu ? mAppUartBufferSize : tempMtu; } break; default: { ; /* No action required */ } break; } } 24. We are now done with the code modifications, let us repeat the steps we need to build, Debug and connect through the IoT Toolkit Wireless UART option to see if the modifications are working as expected. Once you are connected to the FRDM-MCXW23 board through the App you can enter, as done before, any character and it will be prompted back through the terminal, now, entering 1 will turn the RBG RED LED on, 2 will turn the RGB BLUE LED on, 3 will turn the RGB GREEN on, 0 will turn the RBG LED white and 4 will turn the RBG LED off.     NOTE: you can see from the code, in the commandLed() function that we are setting up and configuring the GPIOs every time the UART receives the characters, 1, 2, 3 or 0.     BONUS: Change the code and use/add other trigger commands. Change the LED colors you can showcase. Send messages though UART once a special character (or a combination of them) is received.   Congratulations, you have reached the end of the Wireless or simply less wires.  (view in My Videos) FRDM-Training Hands-On Training MCU Wireless
View full article
使用 iWave 的 i.MX8M Mini 开发套件进行 eIQ ML 人脸检测 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> iWave Systems 的 AI/ML 演示展示了在 NXP i.MX 8M Mini 开发套件上异构运行 eIQ 的低功耗智能门。该演示应用程序是围绕在板上运行的 Django 框架构建的。除了人脸识别之外,MPU 还能够运行 Django 服务器来管理用户数据库、运行 QT5 应用程序作为图形界面,并在边缘进行训练。 概述
View full article
eIQ ML face detection using iWave’s i.MX8M Mini Development kit iWave Systems, AI/ML demo shows a low power smart door running eIQ heterogeneously on NXP i.MX 8M Mini Development kit. The demo application is built around the Django framework running on the board. In addition to face recognition, the MPUs are able to run a Django server to manage the user’s database, a QT5 application for the graphical interface, and perform training on the edge. General
View full article
i.MX 8 - Next-Generation of Applications Processors for High Performance, Smart Design and Advanced Multimedia Get immersed in enriched user interfaces with audio, video, voice and vision. Sense how the i.MX 8 portfolio delivers performance, versatility and connectivity to applications as media streaming, voice assistance, edge computing, machine learning/vision and Industrial IoT. Get immersed in enriched user interfaces with audio, video, voice and vision. Sense how the i.MX 8 portfolio delivers performance, versatility and connectivity to applications as media streaming, voice assistance, edge computing, machine learning/vision and Industrial IoT.
View full article
i.MX 8 - 高性能、スマートデザイン、高度なマルチメディアを実現する次世代アプリケーションプロセッサ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> オーディオ、ビデオ、音声、視覚を備えた充実したユーザーインターフェースに没頭してください。i.MX 8ポートフォリオが、メディアストリーミング、音声アシスタンス、エッジコンピューティング、機械学習/ビジョン、インダストリアルIoTなどのアプリケーションにパフォーマンス、汎用性、接続性をどのように提供するかをご覧ください。 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> オーディオ、ビデオ、音声、視覚を備えた充実したユーザーインターフェースに没頭してください。i.MX 8ポートフォリオが、メディアストリーミング、音声アシスタンス、エッジコンピューティング、機械学習/ビジョン、インダストリアルIoTなどのアプリケーションにパフォーマンス、汎用性、接続性をどのように提供するかをご覧ください。
View full article
BLDC six-step control speed scaling using S12ZVM Abstract The paper describes basic scaling procedure of a six-step BLDC motor control application with focus on S12ZVM MCU devices.  Abstract Introduction BLDC six-step control Speed scaling Timing Commutation periods Speed calculation Application note links Calculation accuracy Real applications Resources Introduction Based on the various questions regarding the BLDC speed calculation, I've decided to write this document to make the scale calculation clear. Please use it for your reference and comment in case there is something to be explained in more details. BLDC six-step control This document is linked with the six-step control of BLDC motors, known for the trapezoidal back-EMF shaped voltage. The key is to create a torque using DC current in two phases while the third phase is not connected. As the rotor is moving, the phases are switched (commutated) to keep the stator flux ahead the rotor flux. The principles are well described in many application notes, such as AN4718 or AN4704. The instant of the commutations can be driven by Hall sensors or by the back-EMF signal monitoring (so-called "sensorless"). For field-oriented control, please refer to the PMSM control discussed in AN5135 or AN5327. Speed scaling It's more benefitial to describe in details the sensorless algorithm over the hall-sensor-based control. However, the approach is almost the same. Timing The motor speed is calculated based on the zero-cross detection of BEMF voltage on a non-active phase. These zero-cross events times are measured by capturing a timer (TIM0CNT) register at the time the ADC routine detects a zero-cross (or when the Hall sensor commutation event occurs). That means, the time is scaled by the timer TIM0 settings. There is no general guidance how to set up the timer. However, the timer should be set to cover some reasonable number of ticks between two commutations (which is linked to the speed precission at high speeds) and should be able to cover two commutations "far away" from each other at very low speeds, without the timer overflow. A good practice would be: at least 100 timer ticks between two commutations maximum 16bit = 65535 ticks between two commutations The same aproach can be followed using the Hall-sensor events. Commutation periods In the application, zero-cross (or hall-sensor) periods are captured with periodZC_F_PhA, periodZC_R_PhA, etc. or periodZC[6], defined as tU16 (16 bit unsigned). The periods are captured using a timer, as mentioned above. In electric motor theory, we recognize "electrical" and "mechanical" speed. The "electrical" speed is linked with the rotational field. The mechanical speed is connected directly with the rotor speed. The relation between these two speeds is determined by number of poles or pole-pairs: (1)   mechanical speed = electrical speed / number of pole-pairs = electrical speed / ( number of poles / 2 ) In the following text, 3-phase BLDC motor is discussed. Speed calculation To calculate one "electrical" revolution of a motor = 6 commutations (or 6 zero-crosses), all the 6 commutation time periods shall be summed. For that case, the resulting "period6ZC" is defined, formated as tU32 (or unsigned long) to prevent an overflow if all six 16-bit zero-cross periods are summed. If you sum all the 6 zero-cross periods, you'll get the number of timer ticks per single "electric" revolution. That means, if the motor is 2-pole motor ( = 1 pole-pair motor), it would be the time per single "mechanical" revolution of the rotor. In thsi case: (2)   mechanical speed = electrical speed; You can easily get the time per mechanical revolution for higher-pole motor simply by multipling it by number of pole-pairs. (3)   time per mechanical revolution = period6ZC * number of pole-pairs  The period per 6 zero-crosses "period6ZC" is calculated within the control loop, usually in the 1 ms timer interrupt routine. Since the speed (rotor frequency) is just an inverted time period, we can use following code line to calculate the actualSpeed: (4) actualSpeed = SPEED_CALC_NUMERATOR / period6ZC; Now, how to read it's scale and what is the SPEED_CALC_NUMERATOR? Let's assume the "actualSpeed" is tFrac32 (1.31 formated signed 32bit number). It would mean the maximal fraction number is 1.0, which is represented by its integer value 2^31 = 2,147,483,648. Why to use 32-bit number over 16-bit is obvious - since the period6ZC is 32-bit value, the result should be of the same resolution or width. The task is to find the right SPEED_CALC_NUMERATOR. Let's consider the S12ZVM device and the timer TIM0 used to capture the zero-cross events times. The prescaler is set to 16 (TIM0TSCR2_PR = 4) and the bus clock is 12.5MHz, the timer tick is 12.5MHz / 16 = 781.25 kHz, in time scale it is 1.28us. Let's assume the maximum mechanical speed of the motor is 10,000 RPM and the motor has 6-pole-pairs. That would give us (5)   (10,000 RPM) / (60 seconds) = 166.67 revolutions per second, (6)   166.67*(6 pole-pairs) = 1000 electrical revolutions per second, so (7)   1000 * (6 commutations) = 6000 commutations/zero-crosses per second. (8)   That would make 1/6000 = 166.67us per one commutation. (9)   Ticks per one period at max speed = 166.67 us / 1.28us = 130.28 With our 1.28us timer, we can catch upto 130 periods at maximal speed. For maximal speed of the motor 10,000 RPM, we can simply rearrange the "actualSpeed" calulation shown in (4) into (13) and (14), assuming that: (10)   actualSpeed = FRAC32(1.0) = 2,147,483,648 (11)   period6ZC = 6 periods * 130 = 780 (rounded down, since the value is still an integer) In case of S12ZVM device, it is more convenient to use 16-bit (tFrac16) calculations than 32-bit. Hence, we can do a trick with the scaling to use 32-bit actualSpeed to prevent an overflow use the same 32-bit number as 16-bit number just by scaling it correctly benefit from the 16bit calculation, which is good enough and fast enough at the same time The trick is hidden in the casting of the actualSpeed from Frac32 to Frac16: (12)   speedErr = requiredSpeed - (tFrac16) actualSpeed; That means, only the lower 15 bits are considered the speed (assuming the actualSpeed will never exceed 32767 so the 16th "sign" bit will always be zero). For maximum speed and the SPEED_CALC_NUMERATOR determination, the "actualSpeed" should be 32767 (which is the range of signed tFrac16). Equation (4) can be used to calculate the SPEED_CALC_NUMERATOR as follows: (13)   32767 = SPEED_CALC_NUMERATOR / 780 (14)   SPEED_CALC_NUMERATOR  = 780 * 32,767 = 25,558,260 Thus  #define SPEED_CALC_NUMERATOR 25558260 Using the equation (4), the speed for the minimum period6ZC would be: (15)   actualSpeed = SPEED_CALC_NUMERATOR / period6ZC = 25,558,260 / 780 = 32,767; Masking that value by lower 15 bits and casting it to tFrac16 would give us 1.0. Since the speed scale has been determined by the maximum speed of the motor 10,000 RPM, we can calculate the real speed simply by: (16)   RealScaleSpeedRPM = (tFrac16)actualSpeed / 32,767 * MAX_SPEED = (tFrac16)actualSpeed / 32,767 * 10,000. Application note links In the application note AN4704, there are several macro constants used to control the application. These constants should be calculated using following definitions, with a little help of the SPEED_SCALE - floating point representation of the real scale of the speed. #define SPEED_SCALE 10000.0  // Used for correct calculation of the following: #define REQUIRED_RUN_SPEED FRAC16(2000.0/SPEED_SCALE) // 2000 rpm #define MIN_SPEED FRAC16(500.0/SPEED_SCALE) // 500 rpm minimal speed for Down button control (should be min 10% of nominal motor speed) #define MAX_SPEED FRAC16(5000.0/SPEED_SCALE) // 5 krpm maximum speed for Up button control #define SPEED_STEP FRAC16(100.0/SPEED_SCALE) // 100 rpm, Up/Down step for button controls   If the application uses FreeMASTER to display or control, the scales shall be updated in the FreeMASTER project as well. The new FM scales for AN4704 are: Variable name Variable watch settings requiredSpeed Real type transformation: Linear: a = SPEED_SCALE = 10,000; b = 0 actualSpeed Signed int, Size = 4 Show as: REAL Bit fields maks with: word (0xffff) Real type transformation: Linear: a = SPEED_SCALE / 32767.0 = 0.3051851; b = 0  Calculation accuracy Now, let's have a look on the speed resolution (or accuracy): At the full speed, if one period changes by 1 tick, then you'll get the period6ZC from 780 to 781 at max speed, which makes 12.8041 RPM difference. The higher the SPEED_SCALE is, the higher the error is. If the assumption would be a change in all of the 6 periods (thus the period6ZC would change from 780 to 786), the resulting change to the speed would be 76.336 RPM. That makes the speed error 10,000 RPM +- 76, which is 0.76%. In terms of accuracy, it makes sense to set the maximum speed (or the SPEED_SCALE) to the maximal speed of the application instead of copying some high number from the datasheet of the motor. Well, the max speed of the application should not exceed the max speed of the motor, but it doesn't help if the speed scale is unnecessarily high. Real applications In real applications, the calculated speed (actualSpeed) reflects all the deviations and changes of the period6ZC. Therefore, it is a good practice to do some kind of filtering of the period6ZC, either by averaging or using a low-pass filter. In case of one or more zero-crosses are lost, there should a mechanism to process and detect if the motor is stalled (mechanical speed loses lock with the commutation) or if it is just a disturbance to the signal. The stall detection or the Hall-signal fault/damage detection is one of the challenges towards high quality application. Resources S12ZVM MCU - NXP main S12ZVM page AutoMCDevKits - NXP Automotive Motor Control Development Solutions AN4718 - 3-Phase BLDC Hall Sensor Application Using S12ZVM AN4704 - 3-phase Sensorless BLDC Motor Control Kit with the S12 MagniV MC9S12ZVM AN5201 - Integrating the LIN driver with BLDC sensorless motor controller In the S12ZVM128 device AN5330 - Migration Guide for S12ZVM Devices General Re: BLDC six-step control speed scaling using S12ZVM It's very clear. I think the SPEED_CALC_NUMERATOR was a "Magic number" before I read the paper. 
View full article
NXP Technology Days - Westford - September 18, 2018 Automotive S32K Complete Portfolio Update  Artificial Intelligence, Enabling Technologies, Security & Solutions A Vision for Machine Learning (ML) and Artificial Intelligence (AI) in Low-cost Edge-computing Nodes  Achieving End-to-end Security Starting with Secure Boot  Boot in Less Than One Second? Learn How  Computing at the Edge - When, Why and How  Enabling Your i.MX Design with the Yocto Project™  Hands-On Workshop: Learn to Get Up and Running Fast with MCUXpresso Software and Tools  AMF-ENT-T3024 - Lab 2 - Getting Started with MCUXpresso.pdf  Emerging Trends & Innovation Secure Tamper-Resistant Authentication  Smart Machinery & Industrial Automation Hands-On Workshop: Get Your Motor Spinning with Kinetis Motor Suite and DC Motor Control Solutions from NXP  AMF-IND-T3033 - 2018 KMS Custom Hardware LAB Guide 1.pdf  Securing My Connected Device - Where are the Threats and What Solutions Does NXP Offer You?  Smart Networks & Computing Deterministic Processing and Ethernet for Industry 4.0  Overcoming DDR Challenges in High-Performance Designs  Smarter World Solutions & Multimode Connectivity Addressing Challenges in IoT – Supporting Multiple IoT Protocols in a Single Product  Amazon Alexa Voice Services Get Started with LPC54018 Based IoT Module to Develop a Cloud-Connected End Node  i.MX 8 - Next-Generation of Applications Processors for High Performance, Smart Design and Advanced Multimedia  i.MX RT Overview and Demo  Introduction of NXP Wireless Charging  NTAG® SmartSensor  NXP BLE Low-Power Solutions for Consumer, Medical, Industrial IoT and Automotive Markets  Rapid IoT Prototyping Kit Type-C End-to-End Solution 
View full article
i.MX 8 - 新一代高性能、智能设计和先进多媒体应用处理器 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 沉浸在具有音频、视频、语音和视觉的丰富用户界面中。了解 i.MX 8 产品组合如何为媒体流、语音辅助、边缘计算、机器学习/视觉和工业物联网等应用提供性能、多功能性和连接性。 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 沉浸在具有音频、视频、语音和视觉的丰富用户界面中。了解 i.MX 8 产品组合如何为媒体流、语音辅助、边缘计算、机器学习/视觉和工业物联网等应用提供性能、多功能性和连接性。
View full article
i.MX RT1050 CMSIS-DAP drag-and-drop programming The MIMXRT1050-EVK includes a CMSIS-DAP/DAP-Link interface that includes MSD drag and drop functionality for the HyperFlash on the board. The drag and drop programming functionality can be used to program applications compiled to execute-in-place (XIP) from the HyperFlash memory. In the early SDK versions for RT1050, the projects did not include the flash configuration block and IVT required to make a bootable image across all toolchains. Starting with the SDK 2.3.1 release, projects include XIP files that add this information to the project. This allows for programming a bootable application to the external flash memory directly from the debugger, so many customers might not even need to use the drag-and-drop programming feature any more. Because of the SDK changes, the DAP-Link application has also had changes: Early versions of the DAPLink firmware were setup to work with a raw application binary like those generated by the SDK 2.3.0 for toolchains other than the MCUXpresso IDE. These versions will take the raw application binary and prepend the flash configuration block for the HyperFlash/QSPI and an IVT to make a bootable image. Newer version of the DAPLink firmware are setup to work with a complete bootable binary like those generated by SDK 2.3.1 and later. These versions will not attempt to prepend a flash configuration block and IVT to the application, because these are assumed to already be present. The following table describes the versions of the DAPLink application that have been released. NOTE: the firmware can be updated on the board, so the version on a given board might not match what was originally programmed at manufacture time. The latest version of firmware can be downloaded from www.nxp.com/opensda Board Rev DAPLink MCU GIT SHA from details.txt file NOTE EVK_A2 MK20 34182e2cce4ca99073443ef29fbcfaab9e18caec DAPLink will add FCB and IVT EVK_A3-EVK-A5 MK20 853df431d81359e822f49363891f877f17d31efb DAPLink will add FCB and IVT EVKB_A MK20 853df431d81359e822f49363891f877f17d31efb DAPLink will add FCB and IVT EVKB_A1 MK20 853df431d81359e822f49363891f877f17d31efb DAPLink will add FCB and IVT EVKB_A1 MK20 b3435dbed0ba4f09680e49d2fcfdaab32c7a4c71 DAPLink will NOT add FCB and IVT To use the drag and drop programming: 1. Configure the board for serial downloader mode by setting SW7 to OFF-ON-OFF-ON.  2. Press SW3 to reset the processor. 3. Drag the application binary to the RT1050-EVK drive.  4. Put the board back in internal boot mode by setting SW7 to OFF-ON-ON-OFF. 5. Press SW3 to reset the processor and your application should boot.  There are some limitations to the drag and drop programming to keep in mind: - Only works for Hyperflash/QSPI XIP applications. Doesn't support copying the code from HyperFlash to another memory (like ITCM) for execution - Application initial stack pointer must be located in DTCM - Doesn't support DCD files The flashloader and ROM tools offer a second external memory programming method where the limitations above do not apply: https://www.nxp.com/downloads/en/initialization-boot-device-driver-code-generation/Flashloader_i.MXRT1050_1.0_GA.zip  Refer to AN12107 for more information: https://www.nxp.com/docs/en/application-note/AN12107.pdf?fsrch=1&sr=2&pageNum=1  i.MXRT 105x Re: i.MX RT1050 CMSIS-DAP drag-and-drop programming Hi Kent, This is a known issue with the latest version of the QSPI DAPLink application. We are working to get an update posted that fixes the problem. In the meantime, I recommend sticking with programming through the IAR IDE. Regards, Melissa Re: i.MX RT1050 CMSIS-DAP drag-and-drop programming Hi Melissa, I use the DAPLink firmware "k20dx_mimxrt1050_evk_qspi_if_crc.bin". and the DAPLink Git SHA: b3435dbed0ba4f09680e49d2fcfdaab32c7a4c71. The SDA version is 2.4.0 I have followed the AN12183 to rework my board for QSPI flash and it can be programmed by the IAR IDE successfully. But I cannot drag-and-drop programming for QSPI. I got the error message as below. Best Regards, Kent Re: i.MX RT1050 CMSIS-DAP drag-and-drop programming Hi Kent, Can you let me know what version of the DAPLink firmware you are using (the git sha number from details.txt)? Assuming you are using our SDK, what version are you using?  Also, have you reworked your board for QSPI instead of Hyperflash? Did you make sure to use the DAPLink firmware for the memory you are using? Both versions are posted on the openSDA site. Regards, Melissa Re: i.MX RT1050 CMSIS-DAP drag-and-drop programming Hi Mellissa, I can't drag-and-drop programming for QSPI flash but I can program the QSPI flash via IAR IDE with the latest QSPI DAPLink firmware. Could you advise? Thanks a lot. Best regards, Kent Re: i.MX RT1050 CMSIS-DAP drag-and-drop programming Hi Kent, We don't keep the old firmware revisions posted. You should be able to use the latest and greatest version of the DAPLink firmware on your board. Regards, Melissa Re: i.MX RT1050 CMSIS-DAP drag-and-drop programming Hi Melissa, I have only the old version EVK_A3-EVK-A5. Where can I download the old DAPLink firmware? Thanks a lot. Best Regards, Kent Re: i.MX RT1050 CMSIS-DAP drag-and-drop programming Hi, I think you're running into a mismatch between the SDK you are using and the DAPLink firmware revision. If you refer to the table revision table above, you'll see that the default EVKB revA DAPLink application wants to add and FCB and DCD to the application, but the SDK2.4.0 project you are using already includes them by default. Try upgrading your DAPLink application to the latest version. The latest DAPLink won't try to add the FCB and DCD, so it should work with the SDK2.4.0 hello_world output. Regards, Melissa Re: i.MX RT1050 CMSIS-DAP drag-and-drop programming I am using iMXRT1050 EVKB Rev-A and trying to validate hello_world example using drag & drop feature by following steps mentioned in the above post but my board is not working after flashing the binary file of hello_world example. Setup: IDE: IAR-8.22.2 Build configuration: flexspi_nor_debug SDK: v2.4.0 Example: hello_world Re: i.MX RT1050 CMSIS-DAP drag-and-drop programming This post has directions on how to generate a binary from MCUXpresso: https://community.nxp.com/thread/448048  Regards, Melissa Re: i.MX RT1050 CMSIS-DAP drag-and-drop programming The drag and drop is working only with bin file, so how to produce correct bin file from MCUXpresso ?
View full article
QorIQ Layerscape 平台上的 EdgeScale 解决方案 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> EdgeScale 解决方案为开发人员提供了一种安全的机制,使他们能够利用云计算框架开发应用程序,帮助用户轻松连接物联网设备、管理设备并部署基于容器的应用程序。请参阅云计算系统中的以下 Layerscape 产品。用户可以通过https://portal.edgescale.org访问云服务。EdgeScale 客户端是一组在设备端运行的软件代理,用于连接到云服务。 本文档介绍了 EdgeScale 支持的主要功能,如注册用户帐户、安全设备注册、配置/连接 EdgeSacle 终端设备、在 LSDK 中生成 EdgeScale 客户端映像、OTA 固件更新(LS1043 或 LS1046)、运行 EdgeScale 演示应用程序以及基于容器的应用程序的动态部署。 QorIQ LS1设备
View full article