Multi Source Translation Content

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

Multi Source Translation Content

Discussions

Sort by:
Software & Hardware Environment for Parking Sensor System 1 Table of Contents • Introduction • Required Software • Required Hardware • References • Conclusion 2 Introduction This article focuses on the software and hardware environment required to build, deploy, and monitor the parking sensor node. On the software side, it presents the MATLAB/Simulink workflow, NXP's Model-Based Design Toolbox (MBDT) for S32K1xx devices, FreeMASTER, and the supporting build environment. On the hardware side, it describes the S32K144-Q100 evaluation board, the MaxBotix MB1020 ultrasonic sensors, the wiring approach, and the communication/debug interfaces used in the setup. The goal is to provide a clear setup foundation before moving into the next article, where the internal model architecture, control flow, and application behavior will be described in more detail. 3 Required Software The parking sensor application is developed using a model-based workflow built around MATLAB, Simulink, Stateflow, and NXP's MBDT for S32K1xx devices. The Simulink model remains the main development artifact, while the supporting toolchain is used to generate code, build the application, download it to the target board, and monitor the running system. 3.1 MATLAB, Simulink and Stateflow MATLAB and Simulink provide the main environment for developing the parking sensor application model. Simulink and Stateflow are used to organize the application structure, configure the processing blocks, and prepare the model for deployment on the S32K144 target. Figure 1. PSS top-level model in Simulink 3.2 NXP Model-Based Design Toolbox for S32K1xx NXP's Model-Based Design Toolbox (MBDT) for S32K1xx acts as the bridge between the Simulink model and the S32K144 hardware. It provides dedicated blocks for configuring and using the microcontroller peripherals required by the parking sensor node. In this project, MBDT is used for Analog-to-Digital Converter (ADC) acquisition, General-Purpose Input/Output (GPIO) control, Local Interconnect Network (LIN) communication, and FreeMASTER for real-time data visualisation. This allows the model to interact directly with the target hardware without requiring the developer to manually implement low-level peripheral code. The key point for this article is that MBDT keeps the hardware configuration close to the model. The detailed usage of each block and how the blocks are arranged inside the application will be explained in the model architecture article. 3.3 Code Generation and Deployment Flow The application is prepared for embedded deployment through the code generation flow supported by Simulink, Embedded Coder, ARM Cortex-M support, and NXP MBDT. From the developer's perspective, the main workflow remains inside Simulink: the model is configured, generated, built, and deployed to the S32K144 board. NXP's toolchain environment integrated in MBDT provides the compiler and target support used by the build process. In this setup, it does not need to be treated as a separate development step. The generated application can be downloaded to the S32K144-Q100 evaluation board through the MBDT build/deploy workflow using the on-board JTAG debug interface. This keeps the setup straightforward: once MBDT is installed, the application can be built and programmed from the Simulink workflow. 3.4 FreeMASTER FreeMASTER is used as the runtime monitoring tool during development. It provides visibility into the embedded application while it is running on the S32K144 board. In the Parking Sensors System (PSS) setup, FreeMASTER is used to monitor live ADC samples from the ultrasonic sensors, processed distance values, and selected application variables. This helps during bring-up and validation because the developer can check the behavior of the generated application without adding custom debug code. Note: The FreeMASTER channel is separate from the LIN communication used by the parking node to exchange data with the zonal controller. 3.5 Toolchain Versions The following software components are used for this demo setup: Component Version / Variant MATLAB / Simulink / Stateflow R2024a or newer Embedded Coder Matching MATLAB release ARM Cortex-M support Matching MATLAB release NXP MBDT for S32K1xx 4.3.0 FreeMASTER 3.2 or newer These versions define the reference environment used to build and deploy the parking sensor application. 4 Required Hardware The hardware setup is centered on the S32K144-Q100 evaluation board, which acts as the local parking sensor node. Four MaxBotix MB1020 ultrasonic sensors are connected to the board through analog inputs and control lines. The board also connects to the zonal controller over LIN and to the development PC through the FreeMASTER interface. Figure 2. Parking Sensor Node Hardware Setup 4.1 NXP S32K144-Q100 Evaluation Board The S32K144-Q100 evaluation board is the target hardware used for the parking sensor node. It provides the microcontroller platform required to run the generated application and includes the peripherals needed by the demo: ADC channels for the ultrasonic sensor outputs, GPIO pins for sensor control, LIN support for communication with the zonal controller, and a debug interface for programming and monitoring. In this setup, the board performs the hardware-side interaction with the sensors and communication interfaces. Figure 3. S32K144-Q100 Evaluation Board Used for the Parking Sensor Node The board configuration used by the project is summarized below. Setting Value Device S32K144 Package 100-LQFP SRAM size 64 KB External crystal 8 MHz System clock 80 MHz Memory model FLASH Debug interface JTAG The exact configuration is provided by the MBDT configuration block in the Simulink model. 4.2 MaxBotix MB1020 Ultrasonic Sensors The demo uses four MaxBotix MB1020 sensors, also known as LV-MaxSonar-EZ ultrasonic sensors. Each sensor provides an analog voltage output that varies with the measured distance, which makes the device easy to connect to the S32K144 ADC inputs. The sensor also includes an RX pin that can be used as an enable or control input. 4.3 Sensor Wiring and Pin Mapping Each MB1020 sensor is connected to the S32K144-Q100 board using two main signal types. The analog output pin is connected to one ADC input channel, while the RX pin is connected to a GPIO output and can be used by the application to control the sensor. Power and ground are distributed from the evaluation board through the breadboard. The following pin mapping comes from the PSS model connection annotation. Sensor Analog pin to S32K144 RX enable pin to S32K144 SONAR1 — Left AN → PTB2, ADC0_SE6, J2.11 RX → PTA11, J1.2 SONAR2 — Center Left AN → PTB3, ADC0_SE7, J2.9 RX → PTA17, J1.4 SONAR3 — Right AN → PTA0, ADC0_SE9, J5.7 RX → PTD10, J1.6 SONAR4 — Center Right AN → PTA1, ADC0_SE15, J5.5 RX → PTD11, J1.8 Power and ground connections are defined as follows. Signal Connection GND Breadboard black rail → J13.4 on S32K144-Q100 VCC 5 V Breadboard red rail → J3.9 on S32K144-Q100 Figure 4. Sensor Wiring Between the S32K144-Q100 Board and MB1020 Sensors 4.4 ADC Configuration The MB1020 sensors provide analog voltage outputs, so the S32K144 ADC is used to convert these signals into digital values. In the project setup, ADC0 is configured for software-triggered acquisition and uses the channels assigned to the four ultrasonic sensors. Setting Value ADC instance ADC0 Resolution 12-bit Trigger source Software trigger Voltage reference 5 V / 0 V Used channels ADC0_SE6, ADC0_SE7, ADC0_SE9, ADC0_SE15 Averaging Enabled, 4 samples This section describes only the peripheral setup. The timing of the acquisitions and the conversion from ADC values to distance measurements will be covered in the next article. 4.5 LIN Interface to the Zonal Controller The parking node communicates with the zonal controller using LIN. In this setup, the parking node is configured as a LIN slave, while the zonal controller acts as the LIN master. Setting Value Peripheral LPUART2 in LIN mode Node function Slave Baud rate 19200 bit/s Checksum Enhanced LIN 2.x LIN TX pin PTD7 LIN RX pin PTD6 The physical connection between the parking node and the zonal controller uses LIN and ground lines. Signal Zonal board pin Parking S32K144-Q100 pin LIN J31.8 J11.1 GND J31.2 J11.4 4.6 FreeMASTER Debug Channel FreeMASTER uses a dedicated serial channel that allows the developer to monitor the application on the PC while the parking node continues to communicate with the zonal controller. Setting Value Interface LPUART1 Baud rate 115200 bit/s RX pin PTC6 TX pin PTC7 Usage Runtime monitoring and variable visualization 5 References Developing a Parking Sensor System with Model-Based Design Toolbox Model-Based Design Toolbox for S32K Community Model-Based Design Toolbox for S32K How To NXP Support Package for S32K1xx NXP Model-Based Design Toolbox for S32K1 Toolbox Download NXP S32K144 Reference Manual and S32K144-Q100 evaluation board user guide MaxBotix MB1020 / LV-MaxSonar-EZ1 datasheet MathWorks documentation: MATLAB, Simulink, Stateflow, Embedded Coder, ARM Cortex-M support FreeMASTER Run-Time Debugging Tool 6 Conclusion This article described the software and hardware environment required to build and run the Parking Sensor System. The software side is based on MATLAB, Simulink, Stateflow, NXP MBDT, code generation support, and FreeMASTER. The hardware side uses the S32K144-Q100 evaluation board, four MaxBotix MB1020 ultrasonic sensors, ADC input channels, GPIO control lines, LIN communication, and a dedicated FreeMASTER serial channel. With this environment in place, the PSS model can be built, downloaded to the S32K144 board, monitored in real time, and connected to the zonal demo setup. The next article will move inside the model and explain the application architecture, including the sensor acquisition flow, model structure, distance conversion, and LIN communication behavior.
View full article
Developing a Parking Sensor System with Model-Based Design Toolbox 1 Table of Contents • Introduction • Overview • Context • References • Conclusion   2 Introduction Parking assistance systems are a familiar feature in modern vehicles, helping drivers detect nearby obstacles and maneuver the vehicle more safely. In our Hello World with MBDT project, the parking sensor subsystem provides this capability by measuring the distance to nearby objects and supplying that information to the rest of the system. Figure 1 - Physical concept This article introduces the parking sensor system and leads into the next articles in the series, where we will examine how this part of the project is developed. The Parking Sensors System (PSS) focus is set on how Model‑Based Design (MBD) enables the subsystem to be designed, simulated, tested, and deployed rapidly using MATLAB/Simulink and the NXP Model-Based Design Toolbox (MBDT).   3 Overview The role of this subsystem within the overall project describes the main elements that make up the parking sensor application and explains its purpose and behavior at a conceptual level. The article outlines how NXP's MBDT supports the development of this component and how a single model is reused for both front and rear parking modules. It also clarifies how this component fits into the larger project and how it connects to the rest of the components. The importance of this subsystem lies not only in its functional role of acquiring and processing distance information but also in how it demonstrates the efficiency of model‑based workflows. Rather than relying on traditional hand‑written embedded code, the entire application — logic, algorithms, peripheral drivers, timing behavior — can be designed graphically in Simulink. This accelerates development in several ways: Behavior can be simulated on the PC, without flashing hardware. The same model drives both simulation and embedded implementation. Peripheral interactions like Analog‑to‑Digital Converter (ADC) and Local Interconnect Network (LIN) are handled through dedicated blocks, not hand‑written code. Parameter tuning and validation are simplified through FreeMASTER, providing real-time visualization of the embedded system parameters. This accelerates development and ensures that the final embedded behavior matches the tested model. Developing an embedded sensor node application typically involves writing extensive low‑level code, configuring peripherals manually, and iterating slowly through hardware tests. This slows down development, limits experimentation, and creates fragmentation between design and implementation. The parking sensor subsystem demonstrates how Model-Based Design in Simulink solves this problem by enabling the entire feature to be built directly in Simulink. Engineers can model ADC acquisition, LIN communication, filtering logic, and threshold detection using graphical blocks rather than manual code. They can simulate the behavior instantly, refine algorithms quickly, and deploy the design to the microcontroller through automatic code generation. The MBD approach significantly improves the efficiency and reliability of developing, testing, and refining the complete parking sensor application. This series is intended for: Engineers learning Model‑Based Design with MATLAB/Simulink Developers working with NXP automotive microcontrollers Teams building rapid prototypes of embedded measurement and control features Students and researchers studying vehicle architectures Anyone interested in a full, reproducible example of embedded system development using MBDT Readers will gain a clear, step‑by‑step understanding of how a complete embedded feature is designed and implemented using a unified model‑based workflow.   4 Context A key aspect of the design is that the same PSS application developed in Simulink is used for both front and rear parking. Two separate S32K144 boards run the identical autogenerated code — one at the front of the vehicle and one at the rear. This showcases one of the major advantages of MBD: a single validated model can be scaled, cloned, and reused across multiple hardware nodes with minimal parametrization. Figure 2 - Parking System Architecture The purpose of the parking sensor subsystem is to provide a clean, consistent, and rapidly developed interface that delivers accurate distance information to the rest of the system. In the implemented setup, each ultrasonic sensor outputs an analog voltage proportional to distance. This signal is sampled by the ADC (Analog‑to‑Digital Converter) of the S32K144 microcontroller. The embedded application running on the S32K144 performs the acquisition sequence, processes the ADC values to compute distance measurements, and formats the results into a communication frame. The prepared data is then transmitted over the LIN bus to the zonal controller, where it can be further used by higher‑level vehicle functions. All functional aspects — ADC acquisition configuration, signal processing, communication formatting, and diagnostic handling — are defined directly in the Simulink model, enabling rapid refinement and immediate validation through simulation. During development, FreeMASTER is used to monitor live ADC samples from the ultrasonic sensors, observe processed distance values, and validate the behavior of the embedded application before integrating the component into the full system. The parking sensor component (front and rear) is highlighted to show its position in the project setup: Figure 3 - Parking System highlighted within the project Related articles in the series Note: Additional articles in the series, including topics such as Software & Hardware Environment, Architecture & Model Description, Deploy & Validate on Hardware, Final Results and Challenges, will be added here as they become available. Each will explore individual technical details such as ADC acquisition, model structure, filtering logic, and communication behavior introduced in this overview. 5 References Software & Hardware Environment for Parking Sensor System MathWorks Model-Based Design Toolbox for S32K Community Model-Based Design Toolbox for S32K How To NXP Support Package for S32K1xx NXP Model-Based Design Toolbox for S32K1 Toolbox Download These resources provide deeper insight into the tools and methods used to build the subsystem. 6 Conclusion The parking sensor subsystem demonstrates how Model-Based Design accelerates the development of embedded automotive features. By modeling the sensing logic in Simulink, validating behavior through simulation, downloading it automatically using MBDT and monitoring it on hardware with FreeMASTER, the entire application can be developed and deployed from within a single environment. Rather than duplicating the parking sensors logic, the application is implemented as a parameterized Simulink model. Using MBDT, the same model instance can be configured for the front or rear module by adjusting parameters such as communication identifiers. This approach enables consistent behavior across parking modules while minimizing duplication and simplifying maintenance. This article introduced the component's behavior, purpose, and development workflow. The next articles in the series will expand on specific technical aspects, building a complete understanding of the subsystem from model to deployment.
View full article
RT1170用のMCUXpresso IDEを用いた外部フラッシュの設定 現在、MIMXRT1176CVM8Bを搭載したカスタムボードを使用しています。これに加えて、部品番号W25Q01NWの外部フラッシュも使用されています。 しかし、MCUXpresso IDEのコードをこの新しいフラッシュにフラッシュすることはできません。(エラー画面のスクリーンショットを添付します) evkbmimxrt1170_flexspi_nor_config.cにも変更を加えました。 変更されたパラメータは以下のとおりです。 .sflashA1Size = 128u * 1024u * 1024u, // 変更: 新しいフラッシュサイズは 128MB であるため。 他に変更する必要のある設定パラメータはありますか? 前もって感謝します Re: Configuring external flash using MCUXpresso IDE for RT1170 1.8Vの機器なので、あなたの回路図を教えてもらえますか?ところで、フラッシュメモリとSOC間のSPIクロック周波数はどうでしょうか? Re: Configuring external flash using MCUXpresso IDE for RT1170 こんにちは、 @brundasathish さん、 MIMXRT1160/1170ハードウェア開発ガイドの表11「ROMブートローダー周辺のPinMux」に記載されている推奨のFlexSPIまたはQSPIピンを使用しているか確認していただけますか?このドキュメントの確認を強くお勧めします。そこには、ボードレイアウトの推奨事項やデザインチェックリストに関する情報が記載されており、ファーストパスの成功を確保し、ボードのブロードアップ問題を避けるための情報が含まれています。 また、 Secure Provisioning Tool v26.6 の Boot Memory Configuration 機能でフラッシュ設定をテストしてもらえますか?これはFCBの設定を確認するためのものです。 BR ハビブ Re: Configuring external flash using MCUXpresso IDE for RT1170 こんにちは、 @Habib_MS さん。 ご返信ありがとうございます。FlexSPI2をフラッシュ用に構成しました。構成済みのピンは以下のとおりです。これはMCUXpresso IDEのピン構成のスナップショットです。 セキュアプロビジョニングツールを使用してフラッシュメモリの設定を試みました。そして、これが私たちが得た反応です。 前もって感謝いたします Re: Configuring external flash using MCUXpresso IDE for RT1170 こんにちは、 @db16122 さん。 電源電圧は1.8V、クロック周波数は133MHzに設定されています。 Re: Configuring external flash using MCUXpresso IDE for RT1170 こんにちは、 @brundasathish。 FlexSPI2セカンダリピングループから起動するには、RMの表10-1「ROMブートローダー周辺ピンマルチ」に記載されている対応するeFuseを設定する必要があります。以下の画像に示されています。 eFuseのプログラミングは元に戻せない操作であることをご留意ください。対応するヒューズがこの二次的なピン群に十分に焼かれていることを裏付けていただけますか?ヒューズが正しく焼かれているなら、 ブートメモリ構成でフラッシュ設定をもう一度テストしてもらえますか? さらに、このピン構成は低速読み取り操作のみをサポートしており、DQS信号経路を提供しません。したがって、サポートされる最大周波数は、SDRモードでは60MHz、DDRモードでは30MHzです。より詳しい説明が記載されていますので、以下のコミュニティ投稿をご参照ください。 BR ハビブ Re: Configuring external flash using MCUXpresso IDE for RT1170 こんにちは、 @Habib_MS さん。 ご返信ありがとうございます。 現在、MCUのセキュアプロビジョニングツール(シリアルダウンローダー)モードを使って外部フラッシュの設定とテストに取り組んでいます。 外部ブートスイッチのBOOT_CFG[11]ピンを使ってFLEXSPI_INSTANCE=1に設定しました(FLEXSPI2が使われている通りです) FLEXSPI_PIN_GROUP_SEL を有効にするにはどうすればいいですか?MCUのSecure ProvisioningツールのOTP設定を通じてですか??? また、上記のブートスイッチの変更(シリアルダウンローダーモードおよびBOOT_CFG[11] =1)およびMCUセキュアプロビジョニングツール内の以下のブートメモリ設定を取り付けることで、 フラッシュを初期化し、フラッシュの内容を読み取ることができます。 しかし、消去も書き込みもできません。 ブートメモリの設定画面のスクリーンショットを添付します。 ありがとうございます ブルンダ・サティシュ Re: Configuring external flash using MCUXpresso IDE for RT1170 AN12183「FLEXSPI NORフラッシュのデバッグを有効にする方法」の回路図を使用した133MHz設定に関する参考情報 Re: Configuring external flash using MCUXpresso IDE for RT1170 こんにちは、 @brundasathish さん、 はい、 OTP設定 でこれを実現できます。フラッシュメモリの設定が正しく動作していれば、「Convert to Complete FCB」ボタンを使ってFCBを作成し、特に15点からの手順をコミュニティ 投稿で確認できます。そのセクションでは、セキュアプロビジョニングツールがブートメモリ構成を生成する方法についてより詳細な説明を提供しており、ツールによって生成されるパラメータと出力の理解に役立つ可能性があります。 FlexSPI2のセカンダリピングループの最大サポートクロック周波数は、SDRモードで60 MHz、DDRモードで30 MHzであることを付け加えておきます。詳細については、こちらのコミュニティ投稿をご覧ください。 現在使用されている MCUXpressoセキュアプロビジョニングツール のバージョンを教えていただけますか? 最新リリースはv26.06で、このバージョンには以前のリリースと比較して最新の機能強化、バグ修正、および全体的な改善が含まれているため、このバージョンを使用することを強くお勧めします。 BR ハビブ
View full article
How to use S32 Design Studio MCP Integration How to use S32 Design Studio MCP Integration,Are there any relevant materials and documents? Re: How to use S32 Design Studio MCP Integration Hi,  unfortunately the documentation and usage examples are still in development. I hope it will be released soon for external use, but don't know the exact date. 
View full article
LX2160A: Pull down value on receiver for SerDes lanes not used Hello, Chip: LX2160A The application note AN5407 specifies pull down on SerDes lanes if not used:  If some SerDes lanes are a no-connect, pull down their receiver pins to GND. Could you tell me the pull down value please? Or should I connect the receiver pins directly to GND? Thanks. Re: LX2160A: Pull down value on receiver for SerDes lanes not used Hello, The AN5407 language "pull down their receiver pins to GND" is intentionally ambiguous about method — NXP's clarification is that a direct 0 Ω connection to GND is the correct and preferred approach. SerDes power-down Even with the RX pins tied to GND, if the SerDes block remains powered, AN5407 also recommends powering down unused lanes via firmware: configure the General Control 0 register during the PBI phase to power down unused SerDes lanes. If the entire SerDes block is already powered down, individual lane power-down is not needed Regards
View full article
ELE能否将密钥保留在主机无法访问的非易失性存储中? 您好, 我想咨询一下关于 EdgeLock 安全隔离区 (ELE) 的持久密钥存储的问题。 根据我对 KW47 网络安全参考手册的理解,ELE 用于加密操作的密钥可以使用密钥存储服务持久存储。我对典型流程的理解如下: 1. 为目标密钥创建密钥 Blob 并将其导出到主机。 2. 将导出的密钥 Blob 存储在非易失性存储器(例如闪存)中。 3. 当需要密钥进行加密操作时,导入密钥块并通过 ELE 使用该密钥。 在这种方法中,密钥块由 ELE 生成,因此主机无法读取实际的密钥材料。然而,由于密钥块本身由主机存储在闪存中,因此主机似乎仍然可以删除或覆盖密钥块。 我的问题是: 是否有一种方法可以将密钥(或其密钥块)存储在 ELE 可访问但主机不可访问的非易失性存储区域中,从而允许 ELE 执行加密操作,而无需在任何时候将密钥材料或密钥块暴露给主机? 换句话说,ELE 是否有可能完全在安全区域内拥有和管理持久密钥存储,从而使主机永远不会直接处理密钥或密钥块? 感谢您事先的指导。 Re: Can ELE Retain Keys in Host-Inaccessible Non-Volatile Storage? 嗨@t_hosomi ,希望你一切都好。 您对 NVM 流程中密钥生成和存储的理解是正确的。 然而,由于 ELE 没有非易失性存储器(如 SRM 的 10.3.1 节所述),因此唯一支持的路径是将导出的密钥 blob 存储在主机的 NVM 中。 请告诉我这些信息是否有帮助。 Re: Can ELE Retain Keys in Host-Inaccessible Non-Volatile Storage? 你好 RomanVR, 感谢您的回复。 我了解到 ELE 本身不提供非易失性存储器,因此持久密钥数据必须存储在主机的非易失性存储器中。 感谢您澄清这一点。
View full article
LPC54113 电源 API 我想了解如何使用“power”函数的API。通过 SDK,我发现这个函数可以直接用于某些函数。但是,与 IAP API 不同,它没有提供入口点或使用说明。 LPC541XX Re: LPC54113 Power API 嗨@jcxz 是的,你说得对。 您可以参考其他 SDK,其中包含有关 POWER API 的更详细说明。 BR 爱丽丝 Re: LPC54113 Power API 通过下载 54 系列其他芯片的 SDK,我找到了 POWER_Type 和 POWER_BASE。谢谢。 Re: LPC54113 Power API 对于我的 LPC54S018,我从 NXP 网站下载了 SDK。它包含了 PowerAPI、ClockAPI 等函数。 例如:POWER_SetVoltageForFreq(...)等。 它还描述了调用 API 函数的入口点和原型。 我认为LPC54113的情况也类似。
View full article
EB tresosのアクティベーションコードが失敗しました AUTOSARでEBtresosを使おうとしているのですが、アクティベートできませんでした。 アクティベーションコード: 7416-E905-5CC2-F20A ERROR: flxActAppActivationSend (50040,41147,10248) 指定された数量が許容最大数量 (0) を超えています。 FlexNet Operations Serverへの接続に失敗しました。 だからEBtresosを使うにはもう一つのアクティベートコードが必要です。 どうもありがとうございます。 Re: EB tresos activation code failed ご辛抱いただきありがとうございます。 社内チームがウェブページ上のアクティベーションコードを更新しました。 最新の認証コードを確認するには、以下のリンクをクリックしてください。 S32K3 標準ソフトウェア - > オートモーティブ SW - EB tresos Studio / AUTOSAR 設定ツール - > EB tresos Studio 29.0.0 Re: EB tresos activation code failed ハイ ご迷惑をおかけして申し訳ございません! この件については既に社内チームに報告済みです。返信があり次第、ご連絡いたします。   よろしくお願いいたします ロビン Re: EB tresos activation code failed こんにちは。NXPのウェブサイトで更新されたアクティベーションコードは、引き続き7416-E905-5CC2-F20Aです。今日アクティベートしようとしたのですが、やはり失敗しました。 ERROR: flxActAppActivationSend (50040,41147,10248) 指定された数量が許容最大数量 (0) を超えています。 FlexNet Operations Serverへの接続に失敗しました。 Re: EB tresos activation code failed 前回の返信をご覧ください。アクティベーションコードが更新されました。 EBTresosページのアクティベーションコードがまだ変更されていないバージョンを教えてください。内部チームに報告して更新を依頼します。
View full article
TJA1120A RGMIIモード - 遅延設定 これはTJA1120Aのデバイスツリーです - cpsw_port1、cpsw3g_phy0 &cpsw_port1 { status = "okay"; phy-mode = "rgmii-txid"; phy-handle = <&cpsw3g_phy0>; }; &cpsw_port2 { status = "okay"; phy-mode = "rgmii"; phy-handle = <&cpsw3g_phy1>; }; &cpsw3g_mdio { status = "okay"; pinctrl-names = "default"; pinctrl-0 = <&main_mdio1_pins_default>; cpsw3g_phy0: ethernet-phy@0 { compatible = "ethernet-phy-id001b.b031"; reg = <4>; }; cpsw3g_phy1: ethernet-phy@1 { compatible = "ethernet-phy-id0022.1620"; reg = <0>; txc-skew-ps = <900>; rxc-skew-ps = <900>; rxd0-skew-ps = <420>; rxd1-skew-ps = <420>; rxd2-skew-ps = <420>; rxd3-skew-ps = <420>; txd0-skew-ps = <420>; txd1-skew-ps = <420>; txd2-skew-ps = <420>; txd3-skew-ps = <420>; rxdv-skew-ps = <420>; txen-skew-ps = <420>; }; }; ここでは、TJA1120Aのphy-modeとして「rgmii-txid」を指定します。 しかし、レジスタRGMII_TXC_DELAY_CONFIGを読み取ると、 0x0014が読み取られ、これは遅延なし(15ビット目)を意味し、 RGMII_RXC_DELAY_CONFIGは0x8014を読み取り、これは遅延が設定されている(15ビット目)ことを意味します。 また、DTでphy-modeを「rgmii-rxid」に変更すると、 RGMII_RXC_DELAY_CONFIGは0x0014、 RGMII_TXC_DELAY_CONFIGは0x8014になります。 DTで「rgmii」を設定し、phytoolを使用してこれらのレジスタを設定してみましたが、完全に反映され、pingが開始され、その後RGMII_RXC_DELAY_CONFIGの15ビット目がHIGHに設定され、 RGMII_TXC_DELAY_CONFIGの15ビット目がLOWに設定されました。 物理モードのDT設定において、なぜこのような反転現象が発生するのかを理解したい。 私たちのAM62A7ベースのECUでは、PCBがRX_Clockの内部遅延を必要としているため、「rgmii-txid」が設定されました。問題なく動作しています。 また、DTSが処理してくれるのであれば、このPHYモードにおけるピンストラップの使用についても知りたいです。 Re: TJA1120A RGMII Mode- Delay Config こんにちは、 TJA1120Aドキュメントによると、RGMIIの遅延構成はレジスタ名とレジスタ内で記述された遅延が直接一致しないため、やや混乱を招くことがあります。 デバイスDS内のRGMII_RXC_DELAY_CONFIG/RGMII_TXC_DELAY_CONFIGレジスタのビット説明を参照してください。 0xAFCC RGMII_RXC_DELAY_CONFIG: ビット15 = 内部TXC遅延を有効にする 0xAFCD RGMII_TXC_DELAY_CONFIG: ビット15 = 内部RXC遅延を有効にする   したがって、設定を確認する際に重要なのは、実際のレジスタビットの記述と初期化後の最終レジスタ読み返し値です。 また、ピンストラップはリセット後のデフォルト設定のみを定義する点に注意してください。ソフトウェアドライバは後でMDIOでこれを上書きできるため、システム起動後にレジスタを読み返すことで有効な構成を検証する必要があります。 また、同じRGMIIクロック遅延がMAC側とPHY側の両方で有効化されていないかも、基板のタイミング設計で意図されていないことを確認してください。 BR、ペトル
View full article
Flash 配置混乱 RT1176 八路 DDR 您好,恩智浦 我在配置Macronix Octal DDR模式的闪存时遇到了一些问题。 我正在基于 NXP FMU-6XRT 参考设计的定制板上使用 PX4 代码栈。我使用的是 MX25UM51245G 而不是 MX25UM51345G,但这两个部件之间的差异很小。 我尝试在 Macronix 八进制 DDR 模式下运行它,并启用 DQS 外部采样,采样频率至少为 100MHz。参考设计运行频率为 200MHz。启动内存配置即使在 166MHz 的频率下也能成功测试所需配置的内存。 我尝试的配置是以下默认配置。第一个程序“g_flash_config”可以成功启动、写入、读取等,但对于软件来说并不理想。"g_flash_fast_config" 失败。 我尝试在“fast_config”的DTR模式下将频率降低到166MHz、133MHz、50MHz和30MHz,但都没有效果。 我尝试使用从启动内存配置生成的 FCB,但由于结构布局存在一些差异,因此很难将其应用于 PX4 代码。 我也尝试过 csHoldTime、csSetupTime 和 dataValidTime 的不同组合,但都没有结果。 我尝试在低频 DTR 八进制中使用 DQS 内部模式,但也没有成功。 接下来我还可以尝试什么? #include /**************************************************************************** * Public Data ****************************************************************************/ locate_data(".boot_hdr.conf") const struct flexspi_nor_config_s g_flash_config = { .memConfig = { #if !defined(CONFIG_BOARD_BOOTLOADER_INVALID_FCB) .tag = FLEXSPI_CFG_BLK_TAG, #else .tag = 0xffffffffL, #endif .version = FLEXSPI_CFG_BLK_VERSION, .readSampleClksrc=kFlexSPIReadSampleClk_LoopbackInternally, .csHoldTime = 1, .csSetupTime = 1, .deviceModeCfgEnable = 1, .deviceModeType = kDeviceConfigCmdType_Generic, .waitTimeCfgCommands = 1, .controllerMiscOption = (1u << kFlexSpiMiscOffset_SafeConfigFreqEnable), .deviceType = kFlexSpiDeviceType_SerialNOR, .sflashPadType = kSerialFlash_1Pad, .serialClkFreq = kFlexSpiSerialClk_100MHz, .sflashA1Size = 64ul * 1024u * 1024u, .dataValidTime = { [0] = {.time_100ps = 0}, }, .busyOffset = 0u, .busyBitPolarity = 0u, .lookupTable = { /* Read Dedicated 3Byte Address Read(0x03), 24bit address */ [0 + 0] = FLEXSPI_LUT_SEQ(CMD_SDR, FLEXSPI_1PAD, 0x03, RADDR_SDR, FLEXSPI_1PAD, 0x18), //0x871187ee, [0 + 1] = FLEXSPI_LUT_SEQ(READ_SDR, FLEXSPI_1PAD, 0x04, STOP_EXE, FLEXSPI_1PAD, 0),//0xb3048b20 }, }, .pageSize = 256u, .sectorSize = 4u * 1024u, .blockSize = 64u * 1024u, .isUniformBlockSize = false, .ipcmdSerialClkFreq = 1, .serialNorType = 2, .reserve2[0] = 0x7008200, }; const struct flexspi_nor_config_s g_flash_fast_config = { .memConfig = { .tag = FLEXSPI_CFG_BLK_TAG, .version = FLEXSPI_CFG_BLK_VERSION, .readSampleClksrc=kFlexSPIReadSampleClk_LoopbackInternally, .csHoldTime = 3, .csSetupTime = 3, .deviceModeCfgEnable = 1, .deviceModeType = kDeviceConfigCmdType_Spi2Xpi, .waitTimeCfgCommands = 1, .deviceModeSeq = { .seqNum = 1, .seqId = 6, /* See Lookup table for more details */ .reserved = 0, }, .deviceModeArg = 2, /* Enable OPI DDR mode */ .controllerMiscOption = (1u << kFlexSpiMiscOffset_SafeConfigFreqEnable) | (1u << kFlexSpiMiscOffset_DdrModeEnable), .deviceType = kFlexSpiDeviceType_SerialNOR, .sflashPadType = kSerialFlash_8Pads, .serialClkFreq = kFlexSpiSerialClk_133MHz, .sflashA1Size = 64ul * 1024u * 1024u, .dataValidTime = { [0] = {.time_100ps = 10}, }, .busyOffset = 0u, .busyBitPolarity = 0u, .lookupTable = { /* Read */// EEH+11H+32bit addr+20dummy cycles+ 4Bytes read data /* Macronix manual says 20 dummy cycles @ 200Mhz, FlexSPI peripheral Operand value needs to be 2N in DDR mode hence 0x28 */ [0 + 0] = FLEXSPI_LUT_SEQ(CMD_DDR, FLEXSPI_8PAD, 0xEE, CMD_DDR, FLEXSPI_8PAD, 0x11), //0x871187ee, [0 + 1] = FLEXSPI_LUT_SEQ(RADDR_DDR, FLEXSPI_8PAD, 0x20, DUMMY_DDR, FLEXSPI_8PAD, 0x28),//0xb3288b20, [0 + 2] = FLEXSPI_LUT_SEQ(READ_DDR, FLEXSPI_8PAD, 0x04, STOP_EXE, FLEXSPI_1PAD, 0x00), //0xa704, /* Read status */ [4 * 2 + 0] = FLEXSPI_LUT_SEQ(CMD_DDR, FLEXSPI_8PAD, 0x05, CMD_DDR, FLEXSPI_8PAD, 0xfa), [4 * 2 + 1] = FLEXSPI_LUT_SEQ(RADDR_DDR, FLEXSPI_8PAD, 0x20, DUMMY_DDR, FLEXSPI_8PAD, 0x04), [4 * 2 + 2] = FLEXSPI_LUT_SEQ(READ_DDR, FLEXSPI_8PAD, 0x04, STOP_EXE, FLEXSPI_1PAD, 0x00), /* Write enable SPI *///06h [4 * 3 + 0] = FLEXSPI_LUT_SEQ(CMD_SDR, FLEXSPI_1PAD, 0x06, STOP_EXE, FLEXSPI_1PAD, 0x00),//0x00000406, /* Write enable OPI SPI *///06h [4 * 4 + 0] = FLEXSPI_LUT_SEQ(CMD_DDR, FLEXSPI_8PAD, 0x06, CMD_DDR, FLEXSPI_8PAD, 0xF9), /* Erase sector */ [4 * 5 + 0] = FLEXSPI_LUT_SEQ(CMD_DDR, FLEXSPI_8PAD, 0x21, CMD_DDR, FLEXSPI_8PAD, 0xDE), [4 * 5 + 1] = FLEXSPI_LUT_SEQ(RADDR_DDR, FLEXSPI_8PAD, 0x20, STOP_EXE, FLEXSPI_1PAD, 0x00), /*Write Configuration Register 2 =01, Enable OPI DDR mode*/ //72H +32bit address + CR20x00000000 = 0x01 [4 * 6 + 0] = FLEXSPI_LUT_SEQ(CMD_SDR, FLEXSPI_1PAD, 0x72, CMD_SDR, FLEXSPI_1PAD, 0x00),//0x04000472, [4 * 6 + 1] = FLEXSPI_LUT_SEQ(CMD_SDR, FLEXSPI_1PAD, 0x00, CMD_SDR, FLEXSPI_1PAD, 0x00),//0x04000400, [4 * 6 + 2] = FLEXSPI_LUT_SEQ(CMD_SDR, FLEXSPI_1PAD, 0x00, WRITE_SDR, FLEXSPI_1PAD, 0x01),//0x20010400, /*Page program*/ [4 * 9 + 0] = FLEXSPI_LUT_SEQ(CMD_DDR, FLEXSPI_8PAD, 0x12, CMD_DDR, FLEXSPI_8PAD, 0xED),//0x87ed8712, [4 * 9 + 1] = FLEXSPI_LUT_SEQ(RADDR_DDR, FLEXSPI_8PAD, 0x20, WRITE_DDR, FLEXSPI_8PAD, 0x04),//0xa3048b20, }, }, .pageSize = 256u, .sectorSize = 4u * 1024u, .blockSize = 64u * 1024u, .isUniformBlockSize = false, .ipcmdSerialClkFreq = 1, .serialNorType = 2, .reserve2[0] = 0x7008200, }; Re: Flash configuration confusion RT1176 Octal DDR 你好@SimonHugr , 如果您计划使用 DDR 模式,请记住还必须考虑字节交换配置。本文提供了一些有用的信息,说明在使用 DDR 模式时,MX25UM51245GXDI00 的字节交换为何如此重要。 我强烈建议使用启动内存配置来生成 FCB,安全配置工具v26.6 提供了 MX25UM51245G 的模板,可以作为您配置的良好起点。另外,您可能也知道,这个工具可以帮助您测试配置。 此外,我建议查看这篇社区帖子,特别是从第 15 点开始的步骤。该部分更详细地解释了安全配置工具如何生成启动内存配置,并有助于阐明该工具生成的参数和输出。 最后,您可以使用 flexspi_nor_polling_transfer_cm7 示例来验证生成的 FCB,并在继续进行启动配置之前验证读取和写入操作是否正常工作。 BR 哈比卜 Re: Flash configuration confusion RT1176 Octal DDR 很遗憾,目前还没有结果。我仍然认为这与数据顺序互换有关,我可能漏掉了一些配置字节…… Re: Flash configuration confusion RT1176 Octal DDR 谢谢你,马斯米塞姆 事实上,我注意到例如数据应该互换一下。我将再次检查我的查找表。 Re: Flash configuration confusion RT1176 Octal DDR 参考此帖: https://community.nxp.com/t5/i-MX-RT-Crossover-MCUs/Internal-Boot-from-Flash-memory-not-starting-on-imxRT1176-custom/mp/1830699 我应该通过编辑 misc 选项来交换数据顺序,根据 Zephyr RTOS 的说明(https://github.com/zephyrproject-rtos/hal_nxp/blob/3a36ee1f8b9fc2168fc0bf80377ace8298292993/mcux/mcux-sdk-ng/devices/RT/RT1170/MIMXRT1176/drivers/romapi/fsl_romapi.h#L340-L355 ) 数据交换字节已经插入,但我感觉好像漏掉了什么。 .pageSize = 256u, .sectorSize = 4u * 1024u, .blockSize = 64u * 1024u, .isUniformBlockSize = false, .ipcmdSerialClkFreq = 1, .isDataOrderSwapped = true .serialNorType = 2, .reserve2[0] = 0x7008200, Re: Flash configuration confusion RT1176 Octal DDR 嘿@SimonHugr , 我首先要确认的是 MX25UM51245G 和 MX25UM51345G 之间的实际区别。虽然零件编号非常相似,但它们并不是完全相同的设备。根据 Macronix 的数据手册,MX25UM51345G 明确支持 DOPI(双倍传输速率 OPI)字节模式数据序列,而 MX25UM51245G 属于不同的产品型号。这会影响 FlexSPI 控制器使用的命令格式、字节顺序和 LUT 配置。 您还可以对比一下我的配置,我的配置适用于 MX25UM513 和 MX25UW6345G: https://github.com/Masmiseim36/Coremark_iMXRT/blob/master/XiP/flexspi_flash_OSPI_Macronix.c 雷加尔斯 Re: Flash configuration confusion RT1176 Octal DDR 你好,哈比卜 对于我们的固件,我无法使用安全配置工具生成 FCB,而是需要在固件启动时加载 FCB,因此我需要创建 mem_config 和 flash_config 结构并自行配置。 我发现 Zephyr 项目在 flash_nor_config 中引用了一个 isDataOrderSwapped 字节。 https://github.com/zephyrproject-rtos/hal_nxp/blob/3a36ee1f8b9fc2168fc0bf80377ace8298292993/mcux/mcux-sdk-ng/devices/RT/RT1170/MIMXRT1176/drivers/romapi/fsl_romapi.h#L347-L348 Claude 提到 controllerMiscOption 的第 5 位有一个 padSettingOverride 位,第 7 位有一个 dataSwap 位,但我不太确定 LLM 是否严重地臆造了这些信息。 使用安全配置工具生成 FCB 并使用此工具将其转换为 C 结构体时 https://community.nxp.com/t5/i-MX-RT-Crossover-MCUs-Knowledge/i-MX-RT-FLEXSPI-booting-guide/ta-p/1669262 我没有设置第 5 位或第 7 位,所以我认为 LLM 有问题,但是 isDataSwapped 已设置,并且在 FCB 中通常被引用为 reserved0[0]。 我在安全配置工具中找不到 MX25UM51245G 的模板,只有 MX25U51245G(四闪存)、MX25UM51345G 和 MX25UMxxx45G 的模板。 但我尝试过的所有八进制DDR配置都无法启动。 有趣的是,尽管 BT_FUSE_SEL = 1 且引脚 BOOTMODE0/1 = 0,MCU 在某些配置后通常会自动进入 ISP 模式。这种情况并不稳定,我不确定是什么配置导致了这个问题。 MCU在读取闪存失败后是否会进入ISP模式? 谢谢 BR Re: Flash configuration confusion RT1176 Octal DDR 你好@SimonHugr , 很抱歉,MX25UM51245G 没有模板,只有 MX25U51245G 和 MX25UM51345G 可用。 根据您的描述,使用您当前的启动内存配置设置,与闪存设备的通信似乎工作正常。单击“转换为完整 FCB”后,该工具会将配置编程到闪存中,然后使用您指定的参数将其读取回来,如下所述: 如果所选设置中有任何一项不被闪存设备支持,该工具应报告类似于以下内容的错误: 为了进一步验证社区帖子中提到的使用 FCB 变流器生成的 LUT 是否正常工作,请您在从内部 RAM 运行应用程序时,使用 flexspi_nor_polling_transfer_cm7 SDK 示例进行测试。如果您对示例有任何疑问,请随时联系我。 此外,您能否提供一些关于您尝试启动的应用程序的更多详细信息? -这是 SDK 示例还是您自己的应用程序? 你使用的是哪个集成开发环境(IDE)? -您的应用程序是执行 XIP 还是非 XIP? -除了启动过程之外,您是否在任何其他阶段访问过闪存? 关于进入 ISP 模式,请确保您的定制板上的启动引脚符合MIMXRT1160/1170 硬件开发指南第 5 章“启动、复位和其他”中提到的建议?这样做是为了避免与启动引脚相关的任何硬件问题。 回答您的问题,如果没有有效的镜像文件,您可以进入ISP模式,如图10-1所示的RM“启动流程”: BR 哈比卜
View full article
RT1010/RT1011 FLEXIO EDMA 我使用 iMX RT1011 Nano 套件 不错的板 我尝试从移位器 0 设置 8 位并行的 EDMA Flexio。 定时器 0 设置为 30MHz,EDMA 发送 512 字节(每个请求 1 字节) 代码: FLEXIO_DEV->SHIFTCTL[TX_SHIFTER] = FLEXIO_SHIFTCTL_TIMSEL(WR_TIMER) | FLEXIO_SHIFTCTL_TIMPOL(0U) | FLEXIO_SHIFTCTL_PINCFG(3U) /* 输出 */ | FLEXIO_SHIFTCTL_PINSEL(DATA_PIN_START) | FLEXIO_SHIFTCTL_PINPOL(0U) | FLEXIO_SHIFTCTL_SMOD(2U); /* 传输 */ /* 定时器0:写保护选通,每字节一个脉冲 * TIMCMP 低字节 = (flexio_clk / (2*wr_clk)) - 1 * TIMCMP[15:8] = (beats*2)-1 = 1,表示每次移位加载一个字节 */ timDiv = (flexioClk_Hz / (2U * wrClock_Hz)); 如果 (timDiv != 0U) { timDiv -= 1U; } timDiv &= 0xFFU; FLEXIO_DEV->TIMCMP[WR_TIMER] = (1U << 8U) | FLEXIO_DEV->TIMCMP[WR_TIMER] = (1U << 8U) |蒂姆迪夫; FLEXIO_DEV->TIMCFG[WR_TIMER] = FLEXIO_TIMCFG_TIMOUT(1U) | FLEXIO_TIMCFG_TIMDEC(0U) | FLEXIO_TIMCFG_TIMRST(0U) | FLEXIO_TIMCFG_TIMDIS(2U) /* 禁用比较 */ | FLEXIO_TIMCFG_TIMENA(2U) /* 高触发时启用 */ | FLEXIO_TIMCFG_TSTOP(0U) | FLEXIO_TIMCFG_TSTART(0U); FLEXIO_DEV->TIMCTL[WR_TIMER] = FLEXIO_TIMCTL_TRGSEL((4U * TX_SHIFTER) + 1U) /* Shifter0 标志 */ | FLEXIO_TIMCTL_TRGPOL(1U) /* 低电平有效 */ | FLEXIO_TIMCTL_TRGSRC(1U) /* 内部 */ | FLEXIO_TIMCTL_PINCFG(3U) /* 输出 */ | FLEXIO_TIMCTL_PINSEL(WR_PIN) | FLEXIO_TIMCTL_PINPOL(1U) /* WR 低电平有效 */ | FLEXIO_TIMCTL_TIMOD(1U); /* 双 8 位波特率/位 */ /* 启用来自 Shifter0 的 DMA 请求 */ FLEXIO_DEV->SHIFTSDEN |= (1U << TX_SHIFTER); /* 启用 FlexIO */ FLEXIO_DEV->CTRL |= FLEXIO_CTRL_FLEXEN_MASK; 我在逻辑分析仪上看到了信号。 看起来和我预期的一样,但我在某些 512 包中发现数据缺失。 我的意思是,比如先发送 200 字节,然后停止,之后再发送所有 512 个字节。 扎希 Re: RT1010/RT1011 FLEXIO EDMA 你好@TZAHI , 非常感谢您对我们产品的关注以及对我们社区的使用。 最有可能的检查方向是:在 30 MHz WR 时钟下,eDMA 能否足够快地持续填充 FlexIO SHIFTBUF。 在当前每次请求传输一个字节的配置下,DMA 请求速率可能会非常高。这对于 eDMA、总线仲裁和 FlexIO SHIFTBUF 重新填充时间来说可能非常紧张。 一个可能的症状是变速箱换挡器运转不畅。请在传输失败后立即检查 SHIFTERR,然后再重新初始化或清除 FlexIO: 如果可能的话,请尝试提高 CPU/总线时钟频率,或者将 WR 时钟频率降低到 30 MHz 以下,例如降低到 20 MHz 或 10 MHz。如果传输在较低的 WR 时钟频率下变得稳定,则强烈表明该问题与 DMA/FlexIO 的重新填充时序有关。 希望对你有帮助 顺祝商祺! 5月
View full article
晶振波形异常 你好,@ lukaszadrapa 我们公司在使用贵公司的FS32K144HFT0MLHT这款MCU, 使用晶振为AV08000009这款8MHz的无源晶振,波形异常。请问这样的晶振波形 贵公司的MCU可以接受吗 是否会影响MCU的正常使用吗 Re: 晶振波形异常 嗨@Kyp 示波器截图似乎没有显示实际的 8 MHz 晶体波形。显示的频率(~256 Hz)与预期的振荡器频率不一致,很可能是由于所选示波器时基和采样率引起的混叠所致。因此,仅凭这一测量结果无法评估晶振(晶体振荡器)的质量。应该使用速度快得多的时基来观察实际的振荡器波形。 此致, Lukas
View full article
LPC54113 Power API 「power」関数のAPIの使い方を知りたいです。SDKを通じて、この関数は特定の関数に直接使えることがわかりました。しかし、iap APIとは異なり、エントリーポイントや使用方法に関する説明は提供されていません。 LPC541XX Re: LPC54113 Power API こんにちは、 @jcxzさん はい、おっしゃる通りです。 POWER APIのより詳細な説明を含む他のSDKを参照することもできます。 BR アリス Re: LPC54113 Power API 54シリーズの他のチップのSDKsをダウンロードすることで、私はPOWER_TypeとPOWER_BASEを見つけることができました。ありがとうございます。 Re: LPC54113 Power API 私のLPC54S018はNXPのウェブサイトからSDKをダウンロードしました。PowerAPI、ClockAPIなどの機能が含まれています。 例えば、POWER_SetVoltageForFreq(...) など。 また、API関数を呼び出すためのエントリーポイントとプロトタイプについても説明しています。 LPC54113についても同様だと思います。
View full article
LX2160A:接收器上未使用的 SerDes 通道的下拉值 你好, 芯片: LX2160A 应用笔记 AN5407 规定,如果未使用 SerDes 通道,则应将其下拉: 如果某些 SerDes 通道未连接,请将其接收器引脚拉低至 GND。 请问下拉菜单的值是多少?或者我应该将接收器引脚直接连接到 GND? 谢谢。 Re: LX2160A: Pull down value on receiver for SerDes lanes not used 你好, AN5407 中的“将接收器引脚拉低至 GND”的说法故意含糊不清——NXP 的澄清是,直接将 0 Ω 连接到 GND 是正确且首选的方法。 SerDes 掉电 即使 RX 引脚连接到 GND,如果 SerDes 模块仍然通电,AN5407 还建议通过固件掉电未使用的通道:在 PBI 阶段配置通用控制 0 寄存器以掉电未使用的 SerDes 通道。如果整个 SerDes 模块已经掉电,则无需单独掉电各个通道。 此致
View full article
水晶発振器の波形異常 こんにちは、@lukaszadrapa 弊社では貴社製のFS32K144HFT0MLHTマイクロコントローラを使用しています。 8MHzの受動水晶発振器(AV08000009)を使用した場合、波形が異常になります。この波形は貴社製MCUにとって許容範囲内でしょうか? MCUの正常な動作に影響しますか? Re: 晶振波形异常 こんにちは、 @Kypさん オシロスコープのスクリーンショットには、実際の8MHz水晶発振器の波形が表示されていないようです。表示されている周波数(約256Hz)は、予想される発振器の周波数と一致しておらず、選択されたオシロスコープのタイムベースとサンプリングレートによるエイリアシングが原因である可能性が最も高い。したがって、この測定だけで結晶振動子の品質を評価することはできません。実際の発振器波形を観測するには、より高速な時間軸を使用する必要がある。 よろしくお願いいたします。 ルーカス
View full article
如何使用 S32 设计工作室 MCP 集成 如何使用S32 Design Studio MCP集成?是否有相关资料和文档? Re: How to use S32 Design Studio MCP Integration 你好, 遗憾的是,相关文档和使用示例仍在开发中。我希望它能尽快对外发布,但不知道具体日期。
View full article
フラッシュ構成の混乱 RT1176 オクタル DDR こんにちは、NXP Macronix Octal DDRモード用にフラッシュメモリを設定する際に、いくつか問題が発生しました。 NXP FMU-6XRTのリファレンスデザインをベースにしたカスタムボード上でPX4コードスタックを使っています。私はMX25UM51345Gの代わりにMX25UM51245Gを使用していますが、部品の違いはごくわずかです。 Macronix Octal DDRモードで、DQS外部サンプリングを少なくとも100MHzで実行しようとしています。リファレンスデザインでは200MHzで動作させています。ブートメモリ構成は、166MHzの場合でも、目的の構成でメモリを正常にテストします。 私が試した設定は、以下のデフォルト設定です。最初の「g_flash_config」は起動、書き込み、読み込みなどを成功させていますが、ソフトウェアには理想的ではありません。「g_flash_fast_config」が失敗します。 「fast_config」のDTRモードで、周波数を166MHz、133MHz、50MHz、30MHzに下げてみましたが、効果はありませんでした。 ブートメモリ構成から生成されたFCBを使用してみましたが、構造体のレイアウトにいくつかの違いがあり、PX4コードに適用するのが困難でした。 csHoldTime、csSetupTime、dataValidTimeのさまざまな組み合わせを試してみましたが、結果は得られませんでした。 低周波DTRオクタールでDQS内部を試してみましたが、うまくいきませんでした。 次に何を試せばいいでしょうか? #include /**************************************************************************** * Public Data ****************************************************************************/ locate_data(".boot_hdr.conf") const struct flexspi_nor_config_s g_flash_config = { .memConfig = { #if !defined(CONFIG_BOARD_BOOTLOADER_INVALID_FCB) .tag = FLEXSPI_CFG_BLK_TAG, #else .tag = 0xffffffffL, #endif .version = FLEXSPI_CFG_BLK_VERSION, .readSampleClksrc=kFlexSPIReadSampleClk_LoopbackInternally, .csHoldTime = 1, .csSetupTime = 1, .deviceModeCfgEnable = 1, .deviceModeType = kDeviceConfigCmdType_Generic, .waitTimeCfgCommands = 1, .controllerMiscOption = (1u << kFlexSpiMiscOffset_SafeConfigFreqEnable), .deviceType = kFlexSpiDeviceType_SerialNOR, .sflashPadType = kSerialFlash_1Pad, .serialClkFreq = kFlexSpiSerialClk_100MHz, .sflashA1Size = 64ul * 1024u * 1024u, .dataValidTime = { [0] = {.time_100ps = 0}, }, .busyOffset = 0u, .busyBitPolarity = 0u, .lookupTable = { /* Read Dedicated 3Byte Address Read(0x03), 24bit address */ [0 + 0] = FLEXSPI_LUT_SEQ(CMD_SDR, FLEXSPI_1PAD, 0x03, RADDR_SDR, FLEXSPI_1PAD, 0x18), //0x871187ee, [0 + 1] = FLEXSPI_LUT_SEQ(READ_SDR, FLEXSPI_1PAD, 0x04, STOP_EXE, FLEXSPI_1PAD, 0),//0xb3048b20 }, }, .pageSize = 256u, .sectorSize = 4u * 1024u, .blockSize = 64u * 1024u, .isUniformBlockSize = false, .ipcmdSerialClkFreq = 1, .serialNorType = 2, .reserve2[0] = 0x7008200, }; const struct flexspi_nor_config_s g_flash_fast_config = { .memConfig = { .tag = FLEXSPI_CFG_BLK_TAG, .version = FLEXSPI_CFG_BLK_VERSION, .readSampleClksrc=kFlexSPIReadSampleClk_LoopbackInternally, .csHoldTime = 3, .csSetupTime = 3, .deviceModeCfgEnable = 1, .deviceModeType = kDeviceConfigCmdType_Spi2Xpi, .waitTimeCfgCommands = 1, .deviceModeSeq = { .seqNum = 1, .seqId = 6, /* See Lookup table for more details */ .reserved = 0, }, .deviceModeArg = 2, /* Enable OPI DDR mode */ .controllerMiscOption = (1u << kFlexSpiMiscOffset_SafeConfigFreqEnable) | (1u << kFlexSpiMiscOffset_DdrModeEnable), .deviceType = kFlexSpiDeviceType_SerialNOR, .sflashPadType = kSerialFlash_8Pads, .serialClkFreq = kFlexSpiSerialClk_133MHz, .sflashA1Size = 64ul * 1024u * 1024u, .dataValidTime = { [0] = {.time_100ps = 10}, }, .busyOffset = 0u, .busyBitPolarity = 0u, .lookupTable = { /* Read */// EEH+11H+32bit addr+20dummy cycles+ 4Bytes read data /* Macronix manual says 20 dummy cycles @ 200Mhz, FlexSPI peripheral Operand value needs to be 2N in DDR mode hence 0x28 */ [0 + 0] = FLEXSPI_LUT_SEQ(CMD_DDR, FLEXSPI_8PAD, 0xEE, CMD_DDR, FLEXSPI_8PAD, 0x11), //0x871187ee, [0 + 1] = FLEXSPI_LUT_SEQ(RADDR_DDR, FLEXSPI_8PAD, 0x20, DUMMY_DDR, FLEXSPI_8PAD, 0x28),//0xb3288b20, [0 + 2] = FLEXSPI_LUT_SEQ(READ_DDR, FLEXSPI_8PAD, 0x04, STOP_EXE, FLEXSPI_1PAD, 0x00), //0xa704, /* Read status */ [4 * 2 + 0] = FLEXSPI_LUT_SEQ(CMD_DDR, FLEXSPI_8PAD, 0x05, CMD_DDR, FLEXSPI_8PAD, 0xfa), [4 * 2 + 1] = FLEXSPI_LUT_SEQ(RADDR_DDR, FLEXSPI_8PAD, 0x20, DUMMY_DDR, FLEXSPI_8PAD, 0x04), [4 * 2 + 2] = FLEXSPI_LUT_SEQ(READ_DDR, FLEXSPI_8PAD, 0x04, STOP_EXE, FLEXSPI_1PAD, 0x00), /* Write enable SPI *///06h [4 * 3 + 0] = FLEXSPI_LUT_SEQ(CMD_SDR, FLEXSPI_1PAD, 0x06, STOP_EXE, FLEXSPI_1PAD, 0x00),//0x00000406, /* Write enable OPI SPI *///06h [4 * 4 + 0] = FLEXSPI_LUT_SEQ(CMD_DDR, FLEXSPI_8PAD, 0x06, CMD_DDR, FLEXSPI_8PAD, 0xF9), /* Erase sector */ [4 * 5 + 0] = FLEXSPI_LUT_SEQ(CMD_DDR, FLEXSPI_8PAD, 0x21, CMD_DDR, FLEXSPI_8PAD, 0xDE), [4 * 5 + 1] = FLEXSPI_LUT_SEQ(RADDR_DDR, FLEXSPI_8PAD, 0x20, STOP_EXE, FLEXSPI_1PAD, 0x00), /*Write Configuration Register 2 =01, Enable OPI DDR mode*/ //72H +32bit address + CR20x00000000 = 0x01 [4 * 6 + 0] = FLEXSPI_LUT_SEQ(CMD_SDR, FLEXSPI_1PAD, 0x72, CMD_SDR, FLEXSPI_1PAD, 0x00),//0x04000472, [4 * 6 + 1] = FLEXSPI_LUT_SEQ(CMD_SDR, FLEXSPI_1PAD, 0x00, CMD_SDR, FLEXSPI_1PAD, 0x00),//0x04000400, [4 * 6 + 2] = FLEXSPI_LUT_SEQ(CMD_SDR, FLEXSPI_1PAD, 0x00, WRITE_SDR, FLEXSPI_1PAD, 0x01),//0x20010400, /*Page program*/ [4 * 9 + 0] = FLEXSPI_LUT_SEQ(CMD_DDR, FLEXSPI_8PAD, 0x12, CMD_DDR, FLEXSPI_8PAD, 0xED),//0x87ed8712, [4 * 9 + 1] = FLEXSPI_LUT_SEQ(RADDR_DDR, FLEXSPI_8PAD, 0x20, WRITE_DDR, FLEXSPI_8PAD, 0x04),//0xa3048b20, }, }, .pageSize = 256u, .sectorSize = 4u * 1024u, .blockSize = 64u * 1024u, .isUniformBlockSize = false, .ipcmdSerialClkFreq = 1, .serialNorType = 2, .reserve2[0] = 0x7008200, }; Re: Flash configuration confusion RT1176 Octal DDR こんにちは、 @SimonHugr さん。 DDRモードを使用する場合は、バイトスワッピングの設定も考慮する必要があることにご注意ください。この記事では、DDRモードを使用する際にMX25UM51245GXDI00のバイトスワッピングを考慮することがなぜ重要なのかについての役立つ情報を提供します。 FCBを生成するにはBoot Memory Configurationを使うことを強くお勧めします。 Secure Provisioning Tool v26.6はそのMX25UM51245Gのテンプレートを提供しており、構成の良い出発点として役立ちます。また、ご存知かもしれませんが、このツールを使用すると設定をテストできます。 さらに、このコミュニティ投稿、特に15番目の手順から始まる部分を参照することをお勧めします。そのセクションでは、セキュアプロビジョニングツールがブートメモリ構成を生成する方法についてより詳細な説明を提供しており、ツールによって生成されるパラメータと出力の理解に役立つ可能性があります。 最後に、flexspi_nor_polling_transfer_cm7例を使って生成されたFCBを検証し、読み書き操作が正しく動作しているか確認してから起動設定を進めることができます。 BR ハビブ Re: Flash configuration confusion RT1176 Octal DDR 残念ながらまだ結果は出ていません。やはり何らかのデータ順序の入れ替えが行われているか、どこかで設定バイトが不足しているのではないかと考えています。 Re: Flash configuration confusion RT1176 Octal DDR マスミセイムさん、ありがとうございます。 確かに、例えばデータを入れ替える必要があることに気づきました。もう一度LUTを確認してみます。 Re: Flash configuration confusion RT1176 Octal DDR このスレッドを参照して:https://community.nxp.com/t5/i-MX-RT-Crossover-MCUs/Internal-Boot-from-Flash-memory-not-starting-on-imxRT1176-custom/m-p/1830699 Zephyr RTOSの指示に従って、ミスオプションを編集してデータの順序を入れ替えるべき https://github.com/zephyrproject-rtos/hal_nxp/blob/3a36ee1f8b9fc2168fc0bf80377ace8298292993/mcux/mcux-sdk-ng/devices/RT/RT1170/MIMXRT1176/drivers/romapi/fsl_romapi.h#L340-L355 データスワップバイトは挿入されるのですが、何か見落としているような気がします。 .pageSize = 256u, .sectorSize = 4u * 1024u, .blockSize = 64u * 1024u, .isUniformBlockSize = false, .ipcmdSerialClkFreq = 1, .isDataOrderSwapped = true .serialNorType = 2, .reserve2[0] = 0x7008200, Re: Flash configuration confusion RT1176 Octal DDR やあ、 @SimonHugr 、 まず最初に確認したいのは、MX25UM51245GとMX25UM51345Gの実際の違いです。部品番号は非常によく似ていますが、それらは同一の機器ではありません。Macronixのデータシートによると、MX25UM51345GはDOPI(Double Transfer Rate OPI)バイトモードのデータシーケンスを明示的にサポートしていますが、MX25UM51245Gは別の製品バリアントに属しています。これにより、FlexSPIコントローラで使用されるコマンドフォーマット、バイト順序、LUT構成に影響を与えることがあります。 私の設定も比較できます。MX25UM513とMX25UW6345G: https://github.com/Masmiseim36/Coremark_iMXRT/blob/master/XiP/flexspi_flash_OSPI_Macronix.c よろしく Re: Flash configuration confusion RT1176 Octal DDR こんにちは、ハビブ 私たちのファームウェアでは、セキュアプロビジョニングツールを使用してFCBを生成することができないため、代わりにFCBをファームウェアの起動時にロードする必要があります。そのため、mem_configおよびflash_config構造体を作成し、自分で設定する必要があります。 Zephyrプロジェクトがそのflash_nor_configでisDataOrderSwappedのバイトを参照していることを見つけました https://github.com/zephyrproject-rtos/hal_nxp/blob/3a36ee1f8b9fc2168fc0bf80377ace8298292993/mcux/mcux-sdk-ng/devices/RT/RT1170/MIMXRT1176/drivers/romapi/fsl_romapi.h#L347-L348 また、Claude は controllerMiscOption のビット 5 に padSettingOverride ビット、ビット 7 に dataSwap ビットを参照していますが、LLM がこの情報をかなり誇張しているかどうかはわかりません。 Secure Provisioningツールを使用してFCBを生成し、このツールを使用してC構造体に変換する場合 https://community.nxp.com/t5/i-MX-RT-Crossover-MCUs-Knowledge/i-MX-RT-FLEXSPI-booting-guide/ta-p/1669262 ビット5や7は設定されていないのでLLMが間違っていると思いますが、isDataSwappedは設定されていて、通常FCBでreserved0[0]として参照されています。 セキュアプロビジョニングツールでMX25UM51245Gのテンプレートは見つかりませんが、MX25U51245G(クアッドフラッシュ)、MX25UM51345G、MX25UMxxx45Gだけです。 しかし、私が試したどのオクタルDDR構成も起動できませんでした。 興味深いことに、BT_FUSE_SEL=1でピンBOOTMODE0/1=0であっても、特定の設定後に自動的にISPモードに入ることがよくあります。これは一貫して発生しているわけではなく、どの設定が原因なのか分かりません。 フラッシュの読み取りに失敗した後、MCUはISPモードに入るのでしょうか? よろしくお願い申し上げます。 BR Re: Flash configuration confusion RT1176 Octal DDR こんにちは、 @SimonHugr さん。 申し訳ございませんが、MX25UM51245Gのテンプレートはございません。MX25U51245GとMX25UM51345Gのみご利用いただけます。 ご説明いただいた内容から判断すると、現在のブートメモリ構成設定では、フラッシュデバイスとの通信は正常に機能しているようです。「完全なFCBに変換」をクリックすると、ツールは構成をフラッシュメモリに書き込み、その後、以下に説明するように、指定したパラメータを使用してそれを読み戻します。 選択された設定のいずれかがフラッシュデバイスでサポートされていない場合、ツールは次のようなエラーを報告するはずです。 コミュニティ投稿でFCBコンバーターで生成されたLUTが正しく動作しているかさらに確認するために、flexspi_nor_polling_transfer_cm7 SDKの例で、内部RAMからアプリケーションを実行しながらテストしていただけますか?例について質問があれば教えてください。 さらに、起動しようとしているアプリケーションについてもう少し詳しく教えてもらえますか? -SDKの例ですか、それともご自身のアプリケーションですか? -どのIDEを使っていますか? -あなたのアプリケーションはXIPを実行していますか、それとも非XIPですか? -起動中以外でフラッシュにアクセスしていますか? ISPモードでの入りについてですが、カスタムボードのブートピンがハードウェア 開発MIMXRT1160ガイドの第5章「起動、リセット、その他」の推奨事項に従っているか確認していただけますか?これは、ブートピンに関するハードウェアの問題を回避するためです。 ご質問にお答えすると、有効なイメージが利用できない場合、ISPモードで入ることができます。図10-1のRMの「ブートフロー」に示されています。 BR ハビブ
View full article
ELEはホストがアクセスできない非揮発性ストレージに鍵を保持できますか? こんにちは、 EdgeLock セキュア・エンクレーブ(ELE)での永続キー保存についてお尋ねしたいです。 私の理解によると、ELEが暗号操作に使用する鍵は、キーストレージサービスを使って永続的に保存できます。私が理解している典型的な流れは以下のとおりです。 1. 対象キーのキーブロブを作成し、ホストにエクスポートします。 2. エクスポートしたキーブロブをフラッシュメモリなどの不揮発性メモリに保存します。 3. 暗号化操作に鍵が必要な場合は、キーブロブをインポートし、ELE を介して鍵を使用します。 この方法では、キーブロブはELEによって生成されるため、ホストは実際のキー素材を読み取ることができません。しかし、Flashではキーブロブ自体がホストに保存されているため、ホストはキーブロブを削除したり上書きしたりできるようです。 私の質問は次のとおりです。 ELEからはアクセス可能だがホストからはアクセスできない不揮発性ストレージ領域に鍵(またはそのキーブロブ)を保存する方法はありますか?これにより、鍵マテリアルやキーブロブがホストに一切公開されることなく、ELEが暗号化操作を実行できるようになります。 言い換えれば、ELEが永続的なキーストレージを完全にセキュアな領域内で所有および管理し、ホストがキーやキーブロブを直接扱うことがないようにすることは可能でしょうか? ご指導をよろしくお願いいたします。 Re: Can ELE Retain Keys in Host-Inaccessible Non-Volatile Storage? こんにちは、 @t_hosomi さん。お元気でお過ごしでしょうか。 NVMフローにおける鍵の生成と保存に関するあなたの理解は正しいです。 しかし、ELEには不揮発性メモリがないため(SRMのセクション10.3.1に記載されているとおり)、サポートされている唯一の方法は、エクスポートされたキーブロブをホストのNVMに保存することです。 この情報がお役に立てば幸いです。 Re: Can ELE Retain Keys in Host-Inaccessible Non-Volatile Storage? こんにちは、RomanVRさん。 ご回答ありがとうございます。 ELE自体は不揮発性ストレージを提供しないため、永続的なキーデータはホストの不揮発性メモリに保存する必要があることを理解しています。 この点を明確にしていただきありがとうございます。
View full article
Clarification on eMIOS DMA Request Mapping Hello Team, I am currently using eMIOS1_CH13 for the LiPS sensor in DMA mode. The configuration uses DMA Channel 0 and DMAMUX0. While reviewing the S32K3xx DMAMUX mapping Excel, I observed that for eMIOS1, only DMA requests 0, 1, 9, and 10 are listed under DMAMUX0. However, my application is configured to use eMIOS1_CH13. Could you please clarify the following: Which DMA request source should be used for eMIOS1_CH13? Does eMIOS1_CH13 support DMA triggering, or is DMA support limited to the eMIOS channels corresponding to DMA requests 0, 1, 9, and 10? Thank you for your support. Best regards, Jyothsna Sagili Re: Clarification on eMIOS DMA Request Mapping Hi, according to the S32K3 DMAMUX mapping, eMIOS provides DMA request sources only for channels 0, 1, 9, 10, 16, 17, 18, and 19. These are the only eMIOS channels that can generate DMA requests. Since eMIOS1_CH13 is not one of these channels, it does not have a dedicated DMA request source in DMAMUX and cannot directly trigger eDMA transfers. If DMA triggering is required, please use one of the eMIOS channels associated with the available DMA request sources (0, 1, 9, 10, 16, 17, 18, or 19). BR, Petr
View full article
关于 eMIOS DMA 请求映射的说明 各位同事好, 我目前在 DMA 模式下使用 eMIOS1_CH13 连接 LiPS 传感器。该配置使用 DMA 通道 0 和 DMAMUX0。 在查看 S32K3xx DMAMUX 映射 Excel 时,我发现对于 eMIOS1,DMAMUX0 下只列出了 DMA 请求 0、1、9 和 10。但是,我的应用程序配置为使用 eMIOS1_CH13。 请您澄清以下问题: eMIOS1_CH13 应该使用哪个 DMA 请求源? eMIOS1_CH13 是否支持 DMA 触发,还是 DMA 支持仅限于与 DMA 请求 0、1、9 和 10 对应的 eMIOS 通道? 感谢您的支持。 顺祝商祺! 乔斯纳·萨吉利 Re: Clarification on eMIOS DMA Request Mapping 您好, 根据 S32K3 DMAMUX 映射,eMIOS 仅为通道 0、1、9、10、16、17、18 和 19 提供 DMA 请求源。只有这些 eMIOS 通道才能生成 DMA 请求。 由于 eMIOS1_CH13 不是这些通道之一,因此它在 DMAMUX 中没有专用的 DMA 请求源,不能直接触发 eDMA 传输。如果需要 DMA 触发,请使用与可用 DMA 请求源(0、1、9、10、16、17、18 或 19)关联的 eMIOS 通道之一。 BR,彼得
View full article