Multi Source Translation Content

キャンセル
次の結果を表示 
表示  限定  | 次の代わりに検索 
もしかして: 

Multi Source Translation Content

ディスカッション

ソート順:
S32K388 と MC33771B SPI BMS: MBDT、コード生成、AI 展開 NXPコミュニティの皆様、こんにちは。 実際のリチウムイオン電池パックをターゲットに、SPI通信を介してS32K388-Q289とFRDM-MC33771B-SPI-EVBを使用した統合BMSを開発しています。調査を進めるうちに、S32K3 シリーズに使用できる BMS 固有のサンプル プロジェクトとリファレンス実装が比較的少ないことに気付きました。そのため、このタイプのアプリケーションに推奨されるワークフローとサポートされているツールチェーンを確認するのは困難でした。 私の目標は、以下の内容を含む完全な組み込み BMS スタックを MCU に実装することです。 セル電圧/温度モニタリング(BCC経由) セルバランス制御 SOC / SOH推定アルゴリズム(ディープラーニングベースのアプローチを含む) MCU上でのリアルタイム操作 可能な場合はモデルベース デザインのワークフロー (そうでない場合は S32DS C プロジェクト) 最初に MATLAB/Simulink Model-Based Design Toolbox (MBDT) を使用する予定ですが、セットアップで完全なサポートが利用できない場合は、S32 Design Studio (S32DS) に進みます。 以下の質問についてご指導いただければ幸いです。 1) S32K3 BMSアプリケーション用のMBDTサポートおよびトレーニング・マテリアル BMS関連の開発(SPIベースのBCC通信、サンプリング/プロセッシング、保護ロジック、リアルタイム監視など)に特化したS32K3シリーズでMBDTを使用するための公式ドキュメント、ユーザーガイド、トレーニングコース、またはアプリケーションノートはありますか? 2) MBDTモデルとディープラーニングモデルの統合とコード生成 Simulink (MBDT) で BMS ロジックを開発し、Deep Learning Toolbox を使用して構築された SOC/SOH モデルを追加すると、次のようになります。 - これらを 1 つの統合 Simulink モデルに組み合わせることはできますか? - はいの場合、Embedded Coder を使用して統合モデルを C コード (またはその他のサポートされている組み込みコード) に自動的に生成し、S32K388 に展開できますか? 3) S32K388におけるリアルタイム推論の実現可能性 (2)のコード生成が実行可能であれば: - 展開されたモデルは、MCU 上のライブ バッテリー データ (電圧/電流/温度) を使用してリアルタイム推論 (SOC/SOH 推定) を実行できますか? - S32K388 には、推奨される制約やベスト プラクティス (固定小数点と浮動小数点、サポートされるレイヤーの種類、モデル サイズの制限、推論のタイミングに関する考慮事項など) はありますか? 4) MBDTにおけるセーフティ制約/保護ロジック セーフティのために、次のような保護ロジックを実装する必要があります。 - 過電圧/低電圧しきい値 - 過熱/低温しきい値 - 障害処理と安全状態の動作 これらの制限と保護ロジックを MBDT/Simulink に直接実装し、生成された組み込みコードに含めることは可能ですか? S32K ターゲットの参考例(BMS またはセーフティロジック)があれば、共有してください。 5) S32K388とFRDM-MC33771B-SPI-EVBおよび代替品との互換性 S32K388-Q289 は、BMS アプリケーション用に SPI 経由で MC33771B と連携するために正式にサポート/推奨されていますか? この組み合わせが推奨されない場合は、S32K3 ベースの BMS 開発用に公式にサポートされている BCC + リファレンス プラットフォーム (SPI または TPL) を提案していただけますか? 6) デバイス上でのトレーニング(オンライン学習)と推論のみのワークフロー 組み込み AI の観点から: - オンデバイス トレーニング (リアルタイムのバッテリー データを使用したオンライン学習) は S32K3 MCU でサポートまたは推奨されていますか? - または、PC でのオフライン トレーニング + MCU での推論のみというアプローチが推奨されますか? オフライントレーニングが推奨される場合、推奨されるワークフローを説明する公式リファレンスはありますか? 7) S32K388におけるAI推論のパフォーマンス/メモリガイダンス S32K3 (特に S32K388) 上で AI 推論を実行するためのベンチマークやガイドラインはありますか? - フラッシュ/RAM使用量の予想 - 典型的な推論レイテンシの範囲 - 最適化アプローチ(固定小数点、量子化、軽量アーキテクチャ) 😎 MBDT + DL 統合が推奨されない場合の推奨代替ワークフロー 完全な統合と自動コード生成が推奨/サポートされていない場合、S32K3 に AI モデルを展開するための推奨ワークフローは何ですか?例えば: - モデルを軽量なC推論コードに手動で変換する - CMSIS-NNのようなアプローチを使用する(該当する場合) - NXPミドルウェア/推奨ライブラリ/サンプル(例:eIQ)の使用 サポートありがとうございます。ドキュメントのリンク、トレーニング リファレンス、SDKs の例、ベスト プラクティスの推奨事項などがあれば、非常に役立ちます。 よろしくお願いいたします。 Re: S32K388 with MC33771B SPI BMS: MBDT, code generation, and AI deployment こんにちは@SonHyunTaek 、 プロジェクトに関する詳細な質問をコミュニティ フォーラムに投稿していただきありがとうございます。以下の回答は MBDT ソフトウェアの観点から提供されていることに注意してください。ハードウェアの観点からは、コンポーネントの組み合わせに関してより良いアプローチがある可能性があります。また、BMS の目標電圧とパック電流検知が必要かどうかを知っておくことも役立ちます。SPI 経由でコネクテッドされた単一の AFE を使用する予定なので、最大 48V の BMS システムをターゲットにしているものと想定します。 ご提案いただいたデバイスの組み合わせに関してですが、ハードウェア レベルでは、S32K3 は MC33771B と完全に互換性があります。しかし、ソフトウェアの観点から見ると、状況はより複雑になります。S32K3 用の MBDT は、MCAL レイヤーの NXP リアルタイム・ドライバ (RTD) 上にコードを生成するように構築されていますが、BMS 用の MBDT は、RTD と互換性のある BMS SDK 上にコードを生成します。BMS SDK には、Simulink からアクセスできるピン、クロック、ペリフェラルの外部構成ツールと、すぐに実行できるサンプルが含まれています。 ご注意ください: - MBDT for BMS 1.2.0 は、S32K388 をサポートしていない MBDT for S32K3 1.4.0 でのみ動作します。 - BMS SDKはRTD 3.0.0とのみ互換性があります。S32K3 1.4.0 の MBDT によって使用されます。当時、S32K388 は入手できませんでした。 - BMS 用 MBDT および S32K3 用 MBDT は、バッテリー ジャンクション ボックス機能を備えたハードウェアデザインで通常使用される MC33774、MC33775、MC33664、MC33665、MC33772C などの新しい AFE 部品のみをサポートします。 これらの制限はソフトウェア パッケージ (RTD および BMS SDK) に起因します。使用する予定の MC33771B には C SDK ドライバーが含まれていますが、S32K3 と MC33771B を接続するためのすぐに実行可能な互換性のある C ドライバーがないため、カスタム コードを使用して手動で MBDT に統合する必要があります。つまり、組み込み SW: MC33771B/MC33772B 用のバッテリー・セルコントローラ ソフトウェア ドライバでは、手動の C コーディングと MBDT への統合が必要です。これを実行する方法 (S32K1 用の MBDT に基づく) を説明した記事は、こちらにあります。 以下であなたの質問に答え、最後にいくつかの解決策を提案します。 1. MBDTのサポートとトレーニング 私たちが提供する最高のリソースは、 MBDT コミュニティページで入手できます。右側には、S32K3 用の MBDT を使用して基本的なタスクを実行する方法を説明した、モデルベース デザイン ツールボックスの初心者向けガイドがあります。さらに、バッテリー・マネジメントシステムについての洞察を提供する BMS ウェビナーもあります。 MathWorks と共同で作成した BMS に関する最新のウェビナーへのリンクは次のとおりです。 NXP S32 デバイス向けバッテリー システム開発の合理化。 2. ディープラーニングモデルの統合 MathWorks とのこれまでのコラボレーションでは、ディープラーニング ベースの充電状態 (SOC) 推定アルゴリズムを Simulink から直接展開し、PIL モードでテストすることに成功しました。はい、Embedded Coder は Simulink モデルから直接ニューラル ネットワークを生成でき、MBDT と組み合わせて S32K3 に展開できます。 関連するウェビナーへのリンクは次のとおりです。 NXP S32K3マイクロコントローラへのディープラーニングベースのSOC推定アルゴリズムの導入 3. S32K388におけるリアルタイム推論の実現可能性 はい、リアルタイム推論は実現可能です。以前の研究では、セル電圧、電流、温度を入力として使用しました。これらの値は実行時に AFE によって測定され、ニューラル ネットワークに提供されます。ベストプラクティスとして、PIL モードでの集中的なテストはパフォーマンスの評価に役立ちます。最適化手法を試して、最適な構成を特定することもできます。 4. セーフティ上の制約 セーフティ要件のロジックを Simulink に実装し、対応するコードを自動的に生成できます。MathWorks は、S32K3 で使用および展開した例を提供しています。 リチウムイオンバッテリー・マネジメントアルゴリズムの設計とテスト 5. S32K388とFRDM-MC33771B-SPI-EVBの互換性および代替品 Simulink からニューラル ネットワーク アプリケーションを直接テストするには、最新バージョンの S32K3 用 MBDT を使用します。これにより、展開の実現可能性を確認し、現時点で利用可能なすべての MCU に対してベンチマーク テストを実行できます。 ハードウェアの観点からは、いくつかのオプションがあります。 a. 提案されたソリューション(S32K358 + MC33771C)を続行する MC33771B ではなく、より新しく、SPI をサポートし、電流測定機能を備えている MC33771C から始めてください。カスタム コードを使用して MC33771C ドライバを Simulink に直接統合し、BMS 1.8.0 用の MBDT を使用できます。 b. サポートされているMCUを使用してSimulinkでBMS用のMBDTを使用する たとえば、セル監視用の MC33774/MC33775 と電流測定用の MC33772C を搭載した S32K358 (すべて SPI 経由)。このセットアップは、MBDT for BMS および MBDT for S32K3 1.4.0 で動作します。ただし、最初にニューラル ネットワークが S32K358 で実行されることをテストします。 c. AFE部品を搭載したS32K3または最新のBMA7318を使用する 注意: このCASE、BMS 用の MBDT を使用して Simulink からコードを展開することは直接サポートされていません。Simulink でアプリケーション ロジックとニューラル ネットワーク C コードを生成し、S32 Design Studio を使用して AFE と手動で統合することもできます。 6. デバイス上でのトレーニングと推論のみのワークフロー これはアプリケーションの要件によって異なります。これまでのアプローチは推論のみで、MATLAB でネットワークをトレーニングし、それを MCU に展開していました。推奨リソース: ディープラーニングを使用したバッテリー状態の推定。続いて、上記のポイント 2 で説明したウェビナーが開催されます。 7. S32K388におけるAI推論のパフォーマンスとメモリに関するガイダンス パフォーマンスはアプリケーションによって異なります。ニューラル ネットワークがすでにトレーニングされている場合は、生成されたコードを S32K3 ファミリの PIL モードでテストし、実行をプロファイルして、S32K388 がニーズを満たしているかどうかを判断します。参考までに、前述の SOC アルゴリズムは、S32K344 および S32K358 で正常にテストされました。 要約すると、Embedded Coder を使用すると、ニューラル ネットワークからコードを生成し、PIL モードでパフォーマンスをテストできます。検証後、生成されたコードを S32 Design Studio にインポートし、必要に応じて S32K388 に展開します。 お役に立てば幸いです。 マリウス
記事全体を表示
S32K314 LPSPI - 在 DMA 下出现异常 CS toogle 你好@DanNguyenDuy 如下图所示,在 LPSPI DMA 模式下发生了意外的 CS 切换。 帧大小为 8 位,默认配置下 DMA 传输大小为一个字节。SPI 波特率为 10 Mbps。 绿色信号代表 CS,在使用 " Keep " 选项时,CS 应在传输过程中保持钳位状态。然而,它却意外地发生了切换。在中断模式下,CS 保持钳位状态。此外,使用基于 GPIO 的 CS 而不是 PCS,在不切换的情况下也能正常工作。 这种现象在波特率较高时比在波特率较低时出现得更频繁,这表明原因可能是 SPI 端 TX 欠运行。 我试着启用散点采集模式和调整 SPI 时序,但都没有解决问题。 我认为,默认 DMA 配置可能不具备处理高速 LPSPI 传输的能力。 请问如何解决 CS 意外切换的问题? 谢谢。 BRs, Alex Yang RTD Re: S32K314 LPSPI - Unexpected CS toogle under DMA @DanNguyenDuy 我共享 Mobis 的 arxml 文件。 热电阻版本为 4.0.0_HF04(适用于HKMC) Re: S32K314 LPSPI - Unexpected CS toogle under DMA @DanNguyenDuy 我分享 Mobis 的 LPSPI DMA 配置屏幕截图。在捕获的图像上,使用的频道名称是 Vsp。 Re: S32K314 LPSPI - Unexpected CS toogle under DMA 你好@alexyang、 你使用了哪个软件包版本? 能否将您的示例或配置文件(.xdm 或 .arxml文件)? 顺祝商祺! 丹 Re: S32K314 LPSPI - Unexpected CS toogle under DMA 你好@alexyang、 1.我查看了配置,没有发现任何问题。 2.因为我没有 S32K314,所以我在 S32K344 上检查了这个问题,我这边没有发现这个问题(传输过程中 PCS 保持低电平)。 3.能否检查调用前后 LPSPI2_TCR 寄存器的值 Spi_AsyncTransmit() 函数? 如果在发送过程中的任何时候 TCR[CONT] = 0,则 PCS 引脚将被置为高电平。 否则,当 LPSPI 从 TX FIFO 空数据移位时,可能会出现此问题,因为在 FIFO 空之前,DMA 没有将数据传输到 TX FIFO。这种情况将触发信号 PCS,因为 LPSPI 会检测到终端传输信号,这看起来像是设计限制。 顺祝商祺! 丹 Re: S32K314 LPSPI - Unexpected CS toogle under DMA 你好@DanNguyenDuy CS 切换的原因似乎是 TX FIFO 空了,因为 TX 水印降低了 CS 切换率。 不过,这一改动并没有完全解决 CS 切换问题。在 TX 水印的基础上,您还有什么其他建议可以完全防止 CS 切换? 此外,如果TX watermark = 0 是 Lpspi_ErrataHandle() 函数之后的意外动作,您是否有计划进行修正?Autoever 希望得到 NXP 对 TX 水印处理的确认,并在需要修正时得到 NXP 的补丁计划。 谢谢。 BRs, Alex Yang Re: S32K314 LPSPI - Unexpected CS toogle under DMA 你好@alexyang..、 在联系 RTD 团队之前,我希望他们尝试两种测试方案: 情况 1:在 Lpspi_ErrataHandle() 函数之后设置 Dma 优先级中断为最高,且 TX watermark = RX watermark = 3。 场景 2:场景 1 + 禁用 RX DMA 并通过轮询方法接收数据。 顺祝商祺! 丹 Re: S32K314 LPSPI - Unexpected CS toogle under DMA @DanNguyenDuy TCR[CONT] 已设置,因此这不是 CS 意外切换的原因。 我对 LPSPI 的 TX 水印有疑虑,据我估计,这可能是 TX FIFO 空的原因。 在 Lpspi_Ip_Init 中将 TX 水印设置为 2,如下所示。 但是,ERR_IPV_LPSPIV2_0001 的 Lpspi_ErrataHandle(Base,State)将其设置为 0,据我估计,这是意料之外的操作。 因此,在我的审查中,ERR_IPV_LPSPIV2_0001 解决方法意外地使 TX 水印为 0。另一位客户 Autoever 也报告了这一情况。 在 Autoever 报告中,发生了 SPI TX 欠运行,Autoever 发现 Lpspi_TransmitTxInit 清除了 TX 水印。因此,Autoever 通过添加"Base->FCR = LPSPI_FCR_TXWATER((uint32)LPSPI_IP_FIFO_SIZE_U8-(uint32)2u);" ,将 TX 水印返回到 2,从而减少了 TX 欠运行。 您如何看待 TX 水印?TX 水印为 0 是否会导致 DMA 意外切换 CS? Re: S32K314 LPSPI - Unexpected CS toogle under DMA 你好@alexyang、 在我看来,TX 水印等于 0 会导致此问题。我建议你在测试时提高 Dma 中断的优先级,并在 Lpspi_ErrataHandle() 函数 后添加一条语句,将 TX 水印修改为 3(最大值) 。 顺祝商祺! 丹
記事全体を表示
Drivers configuration for the S32K3XX Hello, I would like to ask, S32K3XX series chip new construction projects, in the use of drivers, each driver (1 corresponding to the position of each driver type) corresponding to the configuration interface in each configuration (3 shown in the position), there is no documentation or tutorials to explain? In the actual engineering application, I can rely on what information to configure, I set up each time is to look at the name of the setup item to guess its function, and decided to be configured into what, I feel the lack of official basis, so I feel that each of my settings is very no certainty and basis. Re: S32K3XX的drivers配置 Hi@Aaron_LL The following sections of AN13435 have some descriptions of the components And you can find a lot of training tutorials for configuring these peripherals in the official website. https://www.nxp.com/products/S32K3
記事全体を表示
S32K3xx、FLSアレイ整合性チェック こんにちは、チームの皆さん 3.0.0などの古いRTDバージョンのFLSドライバでArrayIntegrityCheckを使用する例や検証テストプロジェクトはありますか?お客様と共有できるものはありますか? 新しいRTDリリース(例:6.0.0)のユーザーマニュアルには、そのような例が含まれていますが、古い FLS バージョンでは同様のものは見つかりませんでした。 ありがとうございました。 BR、ダニエル RTD Re: S32K3xx, FLS ArrayIntegrityCheck こんにちは@danielmartynek 、 RTD 3.0.0に基づくC40_Ip_ArrayIntegrityCheckの例を添付しました。P07バージョン。 よろしくお願いいたします。 ダン Re: S32K3xx, FLS ArrayIntegrityCheck こんにちは@DanNguyenDuy 、 例をありがとうございます。 現在、外出中なので、まだテストできていません。 ただし、お客様は命令バス障害例外が発生したと報告しています。 明確に言うと、私の理解では、テスト中はフラッシュ アレイが使用できなくなるため、アレイ整合性チェックに関係する C40_Ip API は SRAM から実行する必要があるということです。 これは正しいですか? ドライバのテスト/検証中に、どの特定のドライバ API が SRAM から実行されたかを確認できますか? ありがとうございました。 BR、ダニエル Re: S32K3xx, FLS ArrayIntegrityCheck こんにちは@danielmartynek 、 1. これは正しいですか? => はい、その通りです。 2. ドライバのテスト/検証中に、どの特定のドライバ API が SRAM から実行されたかを確認できますか? => 今のところ、SRAM 上で C40_Ip_ArrayIntegrityCheck を実行することをサポートする特定のドライバはありません。 よろしくお願いいたします。 ダン Re: S32K3xx, FLS ArrayIntegrityCheck こんにちは@DanNguyenDuy 、 ご返信ありがとうございます。 C40_Ip_ArrayIntegrityCheck()とC40_Ip_CheckUserTestStatus() をSRAM に配置する必要があることは理解しています。 SRAM に配置する必要がある追加の機能はありますか? C40_Ip ドライバの機能はテスト済みであるはずですよね? SO、テストのセットアップについて詳細を教えていただけますか?ドライバ所有者が検証の実行方法についてコメントしていただければ助かります。 BR、ダニエル Re: S32K3xx, FLS ArrayIntegrityCheck こんにちは@danielmartynek 、 RTD チームは、linker_flash の代わりに linker_ram を使用してこの機能をテストしました。 この例では、ユーザーはmakefile内の変数を変更できます: LOAD_TO=ram はlinker_ramを使用します。 よろしくお願いいたします。 ダン
記事全体を表示
SW32K3_IPCF_4.2.0_D2412はS32K328チップをサポートしていますか? S32DS 3.6.3 ベースSW32K3_IPCF_4.2.0_D2412 パッケージを使用して、S32K328 チップ上で IPCF を構成するときに、上記のような問題が発生しました。コア タイプとコア インデックスを構成できません。何が原因なのか説明していただけますか?#S32K328チップをサポートする他のIPCFソフトウェアパッケージはありますか? Re: Does the SW32K3_IPCF_4.2.0_D2412 support the S32K328 chip こんにちは、 リリースノートを見ると、S32K328 を直接サポートしていないようです。 しかし、代わりに S32K358 を使用しても問題はないと思います。 IPCF_S32K3_4.2.0_ReleaseNotes_Updated_D2502.pdf も確認しましたが、結果は同じです。唯一の違いはロックステップなので、代わりに S32K358 を使用しても問題はないと思います。 S32K328 が IPCF リリースで直接サポートされない理由については情報がありません。 よろしくお願いいたします。 ピーター Re: Does the SW32K3_IPCF_4.2.0_D2412 support the S32K328 chip S32K328 をサポートする IPCF ソフトウェア パッケージのバージョンはありますか?そうでない場合、プロジェクトが S32K324 用に完全に構成されている場合、S32K328 ベースのプロジェクトで実行できますか? Re: Does the SW32K3_IPCF_4.2.0_D2412 support the S32K328 chip こんにちは、 互換性を保つために、S32K328 の代わりに S32K358 の直接導関数を使用します。 よろしくお願いいたします。 ピーター
記事全体を表示
S32K364:使用 EMIOS、BCTU 和 DMA 进行 ADC 转换 您好, 我正在尝试将 EMIOS0 ch 8 配置为触发扫描 ADC3 和 DMA 的 8 个通道的 BCTU,将转换结果移动到名为 ADC_3_RAW [] 的变量中。 转换似乎已经开始: 但该值不会通过 DMA 传输,也不会刷新 我正在使用这个 SDK: 每次使用 ConfigTool 生成代码时,我都需要修改以下代码: #define ADC_SAR_IP_PRESAMPLING_AVAILABLE ((1U)) 至 #define ADC_SAR_IP_PRESAMPLING_AVAILABLE ((0U)) 这正常吗? 项目附在这里。 敬请期待,弗朗切斯科。 Re: S32K364: ADC conversions using EMIOS, BCTU and DMA 你好@francescovico 我检查了你的代码,你的配置和用法都不正确。 1。DMA 的触发信号来源是什么?我没有看到您在配置中配置了"Rm" 模块。 2。既然你在使用 BCTU 来产生 ADC 的触发信号,为什么不使用它提供的 FIFO?这与 DMA 的功能完全一致。 https://community.nxp.com/t5/S32K-Knowledge-Base/RTD400-LLD-K344-Center-Aligned-PWM-Trigger-ADC-BCTU/ta-p/2034211 3.此外,BCTU 驱动程序已经支持 DMA。 https://community.nxp.com/t5/S32K-Knowledge-Base/Example-S32K344-PIT-BTCU-parallel-ADC-FIFO-DMA-DS3-5-RTD300/ta-p/1732444 Re: S32K364: ADC conversions using EMIOS, BCTU and DMA 你好@Senlent、 我同意你的看法,我已经忘记了 Rm 模块,现在它出现了。 我很难理解 S32K364 的配置(只有 ADC3、ADC4、ADC5、ADC6 和 BCTU1),类似的配置使用 S32K324 在我的办公桌上也能正常工作 我想: - 触发信号 BCTU1 使用 EMIOS0 CH 8 扫描 ADC3 频道 - 触发信号 BCTU1 使用 EMIOS0 CH 9 扫描 ADC4 频道 而使用 DMA 会在变量 ADC_X_Raw[] 中产生结果。 我的配置工具设置是 EMIOS: RM: BCTU (红色字段不清楚): ADC: 附上项目。 敬请期待,弗朗切斯科。 Re: S32K364: ADC conversions using EMIOS, BCTU and DMA 你好@francescovico 我很难理解 S32K364 的配置(只有 ADC3、ADC4、ADC5、ADC6 和 BCTU1),类似的配置使用 S32K324 在我的办公桌上也能正常工作 也请分享您在 S32K324 上的项目,我会抽时间帮您检查。 我们的团队目前工作过度繁忙,我需要更多时间来处理您的问题。请耐心等待。 Re: S32K364: ADC conversions using EMIOS, BCTU and DMA 你好@Senlent、 非常感谢您的帮助! 您可以在附件中找到使用 S32K324 的项目(运行正常)。 使用 trgmux 的 PIT 计时器触发信号扫描 ADC0 和 ADC1 通道的 BCTU。 变量ADC_0_Raw[] 和 ADC_1_Raw[] 的DMA 传输转换结果。 敬请期待,弗朗切斯科。 Re: S32K364: ADC conversions using EMIOS, BCTU and DMA 你好@francescovico 我们没有 S32K36x 评估版,因此无法直接测试您的代码。 不过,我也发现了一些问题: 这里,关于 Adc 目标掩码: 对于 ADC0,应将其设置为 0b001。 对于 ADC1,应将其设置为 0b010。 如果你需要同时触发信号 ADC0 和 ADC1,那么你应该将其设置为 0b011,依此类推。 在您的项目中,您使用的是 ADC3 和 ADC4,因此相应值应设置为 0b0100 和 0b1000。 Re: S32K364: ADC conversions using EMIOS, BCTU and DMA 你好@francescovico 此外,"Adc index" 也是错误的。 Re: S32K364: ADC conversions using EMIOS, BCTU and DMA 你好@Senlent、 我已经解决了这个问题。 随函附上使用ADC3、ADC4和ADC5转换27个模拟通道的项目。   问题在于,要初始化 ADC3,必须在实例中使用 0 调用 init 函数:   /* 启动 ADC3*/ Adc_Sar_Ip_Init(0,&AdcHwUnit_0);   在 ConfigTool 中,要初始化 BCTU 以触发信号 ADC3,必须设置 Adc 目标掩码,如下所示: ADC4 和 ADC5 也是如此。 关于 ADC6,ConfigTool 没有生成初始化结构,手动输入该结构后,ADC6 仍然无法工作... 幸运的是,在我的应用中无法使用 ADC6... 敬请期待,弗朗切斯科。 Re: S32K364: ADC conversions using EMIOS, BCTU and DMA 你好@Senlent、 好 感谢您的帮助! 敬请期待,弗朗切斯科。 Re: S32K364: ADC conversions using EMIOS, BCTU and DMA 你好@francescovico 这是完全错误的! 在您之前提供的示例程序"ADC_S32K324.rar" 中、使用 ADC0 和 ADC1,BCTU 的"Adc Target Mask" 分别设置为"1" 和"2" 即0b0 和 0b10,分别对应 ADC0 和 ADC1。 您的初始化代码也对应于 ADC0 和 ADC1。 Adc_Sar_Ip_Init(ADCHWUNIT_0_BOARD_INITPERIPHERALS_INSTANCE,&AdcHwUnit_0_BOARD_InitPeripherals); Adc_Sar_Ip_Init(ADCHWUNIT_1_BOARD_INITPERIPHERALS_INSTANCE,&AdcHwUnit_1_BOARD_InitPeripherals);   adchwunit_0_board_initperipherals_instance = 0; adchwunit_1_board_initperipherals_instance = 1; ” 问题在于,要初始化 ADC3,必须在实例中使用 0 调用 init 函数:   /* 启动 ADC3*/ Adc_Sar_Ip_Init(0,&AdcHwUnit_0);   ” 这完全是错误的,我之前的回答是正确的。 应设置"Adc 目标掩码" = 0b100,即 adc3,然后调用"Adc_Sar_Ip_Init(3,&AdcHwUnit_0);" Re: S32K364: ADC conversions using EMIOS, BCTU and DMA 你好@Senlent、 我同意你的看法,我的解决方案虽然不明确,但很有效。 我提醒你,微控制器是 S32K364,只有下面的红色: 附上两份记录,一份是我的解决方案,一份是您的建议。 我的建议是它可以工作(矢量 ADC_3_Raw[]...ADC_5_Raw[] 的值是正确的)。 根据您的建议,执行将在HardFault_Handler中进行。 敬请期待,弗朗切斯科。 Re: S32K364: ADC conversions using EMIOS, BCTU and DMA 你好@francescovico 你的解决方案是正确的。 这是我的误解;我不知道 S32K36x 采用了不同的架构。
記事全体を表示
TPMS 位定时 大家好, 我正在尝试使用 FXTH87E 传感器匹配 OEM TPMS 传感器的位定时。 我修改了入门项目 FXTH87_E_FW_Periodic_RF_Tx。 我所遇到的问题是,我正试图使发送的数据达到 ~25us 位定时,但有些位是 ~50us 位,有些位是 ~25us 位。 我曾尝试通过 RFCR0 将数据传输速率提高一倍,达到 ~40 kbits,这样就解决了前导码问题,但最终得到的比特数却只有 ~13us。 我使用的也是曼彻斯特编码。 我似乎无法找到正确的设置,让所有比特都以相同的数据速率传输。 我附上了我的 main.c 和两个逻辑分析仪捕获,一个是 OEM TPMS 传感器,另一个是我的。我正在尝试复制 ~5ms 的数据包长度和 ~25us 的位定时。 目前,我得到的数据包长度约为 7ms,可变位定时约为 50us 和 25us。 如有任何建议,我们将不胜感激。 致以最诚挚的问候 Re: TPMS bit timing 你好,克雷格、 从主设备中的代码来看,以 19200 bps 的数据传输速率(RFCR0 配置)传输 136 比特。因此传输时间为 136/19200 = 7 毫秒。因此,从代码来看,完全可以预期帧的持续时间是 7 毫秒,而不是 5 毫秒。 数据传输速率为 19200 bps,一个比特持续约 50 秒。在射频配置中,曼彻斯特编码被选择为 434 MHz。而在曼彻斯特,在位的中间(约 25 秒后)有一个高到低或低到高的转换。这意味着低电平或高电平状态可以持续 25 us 或 50 us。 我将手册(UM11227)中显示曼彻斯特编码的摘录复制如下。 因此,捕获的波形与 main.c 中的配置相匹配,没有什么不正常的。 BRs, Tomas Re: TPMS bit timing 你好,托马斯、 感谢您的详细答复。 同样使用 FXTH87E 的 OEM 传感器一定没有使用标准的数据发送方式? 下面的逻辑分析器捕获没有像 UM11227 中显示的那样有过渡效果。据我所知,连续的 0 和 1 并没有产生转换,它只是在两个周期内保持相同的值,即 ~50us。 解码后的捕获为: 010101010101010101010010110010101010101 他们是否可能以某种方式修改了发送的数据,以创建上述数据,使连续比特的比特时序加倍,而不发生转换? 我尝试过使用不同的 CODE[1:0] 设置,还将位定时提高到 40 kbit 以获得 ~25us 位定时,但并没有消除过渡。 对不起,我的问题很简单,这是我第一次尝试复制数据包。 如能提供进一步指导,将不胜感激。 致以最诚挚的问候 克雷格 Re: TPMS bit timing 经过几个小时的实验,我相信我已经取得了进展。 我知道数据是曼彻斯特编码的。 了解到这一点后,我使用了 NRZ,这样就能实现单个比特 25us 和两个连续比特 50us 的一致比特定时。 然后我继续使用曼彻斯特编码对数据字节进行编码。经过反复试验,我终于能够复制 OEM 数据包,并通过接收器成功解码。 在我努力工作的过程中,感谢您的指导。 请将此问题视为已解决。 致以最诚挚的问候 克雷格
記事全体を表示
I²C Hardware Debugging I²C is used as a serial interface between chips. It is so commonplace that it is used in so many systems that no problems arise. However, sometimes even small things can get you hooked. Here we will introduce some common I²C problems and some easy debugging methods. 0. Table of Contents table of contents Anyway it doesn't work! (--; The target doesn't respond (꒪⌓꒪) Repeat start was necessary/unavailable Controllers that do not support clock stretching Multi-Controller The clock frequency is lowered Long distance routing. Noise and crosstalk can cause communication problems. Measuring Bus Capacitance SDA Line Stuck and Bus Clear Who is giving the signal? Reference materials 1. It just doesn't work! (--;   I forgot to put on the pull-up orz This is a common problem when using an I²C device for the first time. When you obtain a sample chip and try it out on a breadboard or universal board, you connect it to a microcontroller while checking the I²C signal names. At this point, it's easy to forget to attach a pull-up resistor . I²C signals have an output called " open drain ." A high-level voltage cannot be obtained unless an external pull-up resistor is attached. When trying to easily check operation using a breadboard, it is easy to forget about this resistor. Don't forget to use pull-up resistors on the SDA and SCL signals! How do you determine the pull-up resistor value? How is the value of a pull-up resistor determined? Generally, values such as 2.2 kΩ or 4.7 kΩ are used. I think many people use these values without much consideration. But what happens if a smaller or larger value is used ? A pull-up with a small resistance value can cause the problem of "not being able to pull the signal low enough." When a device outputs a low signal, current flows through the pull-up resistor. If the resistance is small, the current flowing here will be large, and this current will flow into the device that is outputting a low signal. The transistor that pulls the signal low inside the device has a resistance component, and this resistance and current create a voltage. For this reason, if the current becomes large, a higher-than-expected voltage will be generated, and a sufficiently low low-level voltage will not be obtained. Conversely, pull-up resistors with large resistance values can cause problems such as insufficient communication speeds. When a signal transitions from LOW to HIGH, the capacitance of the signal line is charged via the pull-up resistor, causing the voltage to rise. If a large resistance value is used for the pull-up, the current at this time becomes smaller, and it takes longer for the signal to rise (voltage to rise). There is a method for calculating the value of the pull-up resistor. Details are provided in Section 7 of the I²C Specification [English version (rev7)] [Japanese version (rev5)] . Generally, when using I²C fast mode (400kHz) with a pull-up voltage of 3.3V, a pull-up resistance of around 1kΩ to 8kΩ can be used without any problems [Figure 1]. Figure 1: Pull-up resistor values for I²C signal lines 2. The target doesn't respond (꒪⌓꒪)   No ACK returned!😭 I connected the microcontroller to the target, added a pull-up resistor, and checked the signal's HIGH level with an oscilloscope, but the target still did not respond . "Target not responding" means that no ACK is returned after the target address is sent. This is common in the early stages of evaluation. Many targets allow you to change the target address depending on their settings (for example, by connecting the address setting pin to power or GND), so you need to double-check which address is set. Also, even if you think you've set the address correctly, you need to check whether the address written in hexadecimal on the datasheet is a 7-bit representation (right-justified) or an 8-bit representation (left-justified). Furthermore, the microcontroller development tool (SDK) you're using may specify hexadecimal addresses in 7-bit representation (such as MicroPython) or 8-bit representation (such as Arm Mbed).💦 The I²C specification does not use either representation, and addresses are standardized to binary representation, so there is no such misunderstanding, but you should be careful when specifying them in hexadecimal.   How to check How can you specify the target address? Check this in the device specifications and development tools. Then double-check that the device address is set as intended. When checking on an actual device, for example in MicroPython the I2C class has a scan() method which displays a list of devices connected to the bus that are returning ACKs. One technique is to use this kind of function to quickly see what the settings are [Figure 2]. If the SDK you are using does not have a function like I2C::scan(), try sending addresses in order and checking for ACK/NACK. Figure 2: Testing I2C.scan() 3. Repeat starts were necessary/unavailable   Even if I communicate according to the target device specifications, I can't read the data? The I²C specification defines the signal levels and protocols in detail. Writes and reads can be performed in a defined manner on any target device. However , the method for accessing the registers and data buffers within that target is determined by the specifications of each device. For target devices with multiple internal registers, it is generally possible to specify and read/write registers using communications such as those shown in Figure 3. However, even if communications are performed in this manner, there are cases where the expected data is not read.   Repeat Start Condition When executing a write transaction to specify a register address and a read transaction to read the register consecutively, a repeated start condition is often used to start the second transaction. The repeated start condition is used to avoid the bus-free state that occurs after a stop condition before generating the next start condition. From the target device's perspective, using a repeated start condition is usually equivalent to using a stop and start condition. However, there are devices that do not do this, and for such devices you must use one of the two methods to read the registers. Some microcontroller SDKs provide an API for reading registers on I²C targets, which automatically handles access with a repeated start condition, but some microcontrollers do not support inserting a stop condition. In such cases, the API cannot be used as is, and it becomes necessary to handle the protocol at a lower level. It is important to be careful as devices and microcontroller SDKs can have "specification pitfalls" like this that you only notice later. Figure 3: Typical register access 4. Controllers that do not support clock stretching   The behavior is strange! I²C has an optional function called " clock stretching ." Even nowadays, there are rare devices that have this function. The general I²C controllers installed in many microcontrollers support this clock stretching function, so you don't have to worry about it too much, but if you are implementing your own controller, you need to be aware of this optional function.   What is clock stretching? I²C transmits and receives data according to the timing of the clock output by the controller. However, clock stretching is an option that allows the target side to make the controller wait [Figure 4]. The controller also outputs the clock via open drain. The controller monitors its own clock output and checks whether the signal is HIGH when it outputs HIGH. If the target side wants to make the controller wait, it holds this clock signal LOW. The controller knows it is being made to wait when the clock, which should be HIGH, turns LOW. If the controller ignores this target behavior, it may cause communication problems such as fewer clocks being output. Figure 4: Clock stretching 5. Multi-Controller   Also for debugging a running target device Multi-controller is also an optional feature of I²C. Multiple controllers can control communication on the same bus without affecting each other's communication.   There aren't many applications that use it There are not many cases where multiple controllers are used, except for a few applications. However, the I²C controllers built into many microcontrollers have this function. Using this function, for example, if there is a problem with a running system, you can connect another microcontroller to the I²C bus and read or overwrite the contents of each target's register settings to verify them [Figure 5]. Normal debugging involves checking the code you have written, so you probably won't have an opportunity to do this, but it may be useful when verifying an unknown system for which the source code is unavailable. Figure 5: Multi-master debugging 6. Clock frequency is lower   I thought I had set it to a 100kHz clock. There aren't many cases where the I²C bandwidth is used to its full potential. However, what if you find that communication is occurring at a clock frequency that is significantly different from the speed you intended? Clock stretching, which was introduced in the previous section, is related to frequency reduction . Below is an example at 100kHz, but the higher the frequency used, the greater this effect (rate of frequency reduction).   Check the waveform and adjust the frequency Clock stretching is a function that makes the controller wait. However, it does not only affect the target. As the signal line length increases and the number of connected devices increases, the capacitance of the bus increases. In this case, if a large resistor is used for pull-up, the rise of the signal will be slowed down. A slow signal rise time increases the time it takes for the clock to go high. After the clock goes high, the controller operates to ensure the set high hold time, resulting in a longer low-to-high transition time, which extends the low period. This causes a drop in the clock frequency [Figure 6]. Depending on the controller, you may be able to set the clock frequency in detail, or the LOW and HIGH periods of the clock. If you are concerned about the frequency, check the waveform and adjust the clock settings. 7. Long-distance routing. Noise and crosstalk can cause communication problems.   Data errors caused by waveform distortion I²C is an easy-to-use two-wire serial bus. Because it is a slow signal, it will operate stably even if the signal line is extended to a distance of a few tens of centimeters (although this depends on the environment). However, if you are not careful and consider the characteristics of I²C, you may experience unexpected behavior. High impedance, two wires Because I²C is an open-drain signal, when a HIGH level is output, the impedance of the signal line is high. With a push-pull signal, if the device outputting the signal is LOW it is close to short-circuiting to GND, and if it is HIGH it is close to short-circuiting to the power supply, but with I²C it is connected to the power supply via a pull-up resistor. If noise is picked up on the signal line here, the noise current will escape to the power supply via the resistor. In addition, the currents of each I²C signal line also affect each other, which causes crosstalk. To reduce noise and crosstalk, careful wiring is required. For example, GND or power supply wiring should be placed between the data and clock signals [Figure 7]. Alternatively, using a bus buffer is effective when transmitting over long distances via cable. However, because I²C is a bidirectional open-drain signal, standard logic buffers cannot be used as is. Various buffers are available for I²C, including those with signal voltage conversion functions and those that convert single-ended I²C to differential signals. By combining these, it is possible to create a stable and reliable system even when signal lines are run long distances. Figure 7: Crosstalk and noise 8. Measuring Bus Capacitance   Bus capacity limit... But how do you measure it? Up to 400kHz, I²C can communicate with a bus capacitance of up to 400pF. For 1MHz, I²C can communicate with a bus capacitance of up to 550pF. But how can we know this bus capacitance?   Calculate backward from the signal waveform This blog post introduces several topics related to bus capacitance, all of which point out that the rise time of signals increases. Bus capacitance can be determined from this rise time. [Figure 8] shows an example waveform. For an I²C signal pulled up to a 5V power supply with 2.2kΩ, the rise time (T) from the LOW reference voltage V OL = 1.5V to the HIGH reference voltage V OH = 3.5V is 154ns. The formula in section 7.1 of the I²C specification [English version (rev7)] [Japanese version (rev5)] is "T = 0.8473 x RC," so if we apply "C = T / (0.8473 x R)," we get approximately 82pF. Subtracting the capacitance of the probe used for measurement (15pF), we get approximately 67pF. Figure 8: Calculating bus capacitance 9. SDA Line Stuck and Bus Clear   SDA stuck at LOW and stopped working The controller and target communicate with each other based on a clock. If the number of clocks becomes inconsistent due to noise or other reasons, not only will the communication be bit-shifted, but the situation will become known as "bus stuck." Figure 9-a shows an example in which the controller thinks it has sent nine clock pulses and finished communication, but the target is still returning an ACK as the last bit.   Getting out of a stuck bus situation There are two ways to get out of this state. One is to reset the target. The other is to clear the bus. Bus clearing is described in the I²C specification [English version (rev7)] [Japanese version (rev5)] (Section 3.1.16). If SDA is stuck LOW, you can return the target state to normal by generating nine clock pulses. [Figure 9-b] shows an example where an ACK was issued at the end of a read transfer due to a programming error on the microcontroller side. The MSB of the next data to be read happened to be 0, so SDA was fixed LOW. To get out of this situation, we issue a clock nine times and clear the bus, after which we can see that the target has returned to normal. In addition, the System Management Bus (SMBus), which uses I²C as its specification, has a timeout function on top of the normal I²C specification, and is specified to automatically return to normal operation after a maximum of 35 ms has elapsed on the target device. The I²C specification does not have such a timeout provision, so once a stuck state occurs, it cannot be recovered from without resetting or clearing the bus. Figure 9-a: Example of a bus stuck Figure 9-b: Bus Clear   10. Who is sending the signal? Series resistor   Who is keeping the signal low? When looking at the bus status of the bus stack mentioned above or a multi-controller system, you may want to know which device is sending the signal. The voltage when a LOW signal is output varies depending on the drive capacity of each device, and this can tell you which device is sending the signal.   Add a series resistor and check the voltage [Figure 10] is an example of a multi-controller waveform. This waveform shows two controllers attempting to start communication at the same time, with clock synchronization and arbitration taking place. One controller (microcontroller 1) is attempting to start communication at 400 kHz, and the other controller (microcontroller 0) is attempting to start communication at 100 kHz, each driving the SCL signal. Looking at the clock waveform, we can see that the terminal of the 100kHz controller is connected to the bus via a 100Ω resistor, so when microcontroller 0 outputs a LOW, this series resistor limits its ability to draw current, causing the LOW voltage to rise slightly. By using this mechanism, we can determine which device output a LOW. Figure 10: Who is signaling?   11. Reference materials I2C Bus Specification and User Manual (Rev5.0 Japanese version) I2C Bus Specification and User Manual (Rev7.0 English version) Interface March 2024 issue (CQ Publishing) : Special feature "Serial communication from scratch [UART/I2C/SPI with Pico]" Transistor Technology Special No.161 "Measure, Measure, Measure Circuit & Technique Collection" Appendix: "Detailed Explanation of 2-wire Serial Interface I²C" - The above magazine article is an excerpt from this article. NXP Community Blog: An Overview of the I²C Bus [Originally published in Interface, March 2024 issue (CQ Publishing), " UART, I²C, SPI, CAN... Problems that can occur with various standards " pp. 101-115. The I²C-related section has been excerpted and revised for this blog post .] Change history: 2025-02-04: First Edition 2025-08-14: Corrected a typographical error in the section "3. Repeat Start was necessary/unavailable." Added a line break to the text of the section "7. Long-distance routing. Communication becomes erratic due to noise and crosstalk." 2026-01-02: Added an introductory section before the table of contents / Added a YouTube video link to the section about MicroPython. 2026-04-14: Fixed broken links. Improved readability.     ========================= We are currently unable to respond to comments in the "Comment" section of this post. We apologize for the inconvenience, but when making inquiries, please refer to `` Technical Questions to NXP - How to Contact Us( Japanese Blog) ''. (If you are already an NXP distributor or have a relationship with NXP, you may ask the person in charge directly.) I²C is used as a serial interface between chips. It is so commonplace that it is used in so many systems that no problems arise. However, sometimes even small things can get you hooked. Here we will introduce some common I²C problems and some easy debugging methods. Interface Japanese blog
記事全体を表示
蓝牙测距车辆准入系统 Blue Ravens(蓝牙测距车辆准入系统)是恩智浦开发的一套系统解决方案,旨在帮助客户使用恩智浦产品设计基于BLE的专属汽车准入解决方案。其设计目的是通过模块化方案支持各种汽车准入用例。主要目的(但不限于)是介绍信道探测技术和恩智浦BLE切换在汽车用例中的所有功能和优势。 信道探测是新型低功耗蓝牙(BLE)标准(BLE 6.0)的组成部分,可作为高精度距离测量解决方案,且适用于恩智浦KW47芯片。 BLE切换是恩智浦开发的一项专有功能,可在不断开连接的情况下,使用带外信道(例如:CAN)将BLE连接从一台设备无缝传输到另一台设备。这一传输操作不会影响对等设备,因此可保证互操作性。该功能还可用于启用BLE连接RSSI嗅探,以提高基于RSSI的系统网络安全性。(KW45和KW47) 由于其模块化特性,该系统可用于多种用例,从简单的 BLE 连接系统到完整的 BLE 信道探测定位系统。请注意,信道探测仅在 KW47 芯片上受支持。KW45 只能用于简单的 BLE 系统。默认情况下,KW47 系统支持基本的信道探测(Channel Sounding),用于测量一个远程设备(数字钥匙)与多个不同固定设备(Car Anchor)之间的距离。在任何时刻,只有一个锚点连接到数字密钥。其他锚点(未连接)可设置为连接 RSSI 嗅探模式(基于切换)。这种模式通过访问连接的 RSSI 值而不是广播包来提升系统网络安全。这些 RSSI 值可用于估算哪个锚点可用于轮询,或用于保留车辆周围的最佳 BLE 链路。     该系统由多块KW4x板组成,每块板各自承担特定的角色。一块开发板可用作数字密钥,由用户随身携带;另一块板则代表汽车子系统。在此汽车子系统上,所有板都通过CAN总线相互连接。CAN总线为所有板提供12V电源,并支持板间通信: 控制单元(KW4x EVK板) 车载锚点(KW4x LOC板) 数字密钥(KW4x LOC板) 角色: 中央决策节点 功能: - 协调BLE锚点。 - 根据接收到的数据触发操作   角色: 通过 CAN 总线连接到控制单元的 BLE 设备 功能: - 广播BLE存在信号。 - 等待数字钥匙连接。 - 在会话期间充当CS启动器。 角色: 充当远程BLE设备 功能: - 扫描BLE锚点。 -启动与 Car Anchor 的连接。 - 连接后,表现为 CS 反射器。     桌面应用可用于监测系统状态和测量结果: 通过连续测量每个锚点,汽车子系统能够估算数字密钥的位置(免责声明:此解决方案在动态环境中的准确性有待提升)   特性   BLE 连接 目前仅支持1个连接(多对等计划) BLE信道探测(仅限KW47) 是 RSSI监听 是的——所有未连接的锚点 自动排除次优锚点 是 包含CS上下文的BLE 切换(无CS重复) 是 三边测量算法 是 测量过滤(实时) 是 触发操作的检测区域(例如:欢迎区) 是 车载锚点CAN同步(无线电核心同步) 否(计划于下一版本发布) 信道探测嗅探 否(正在进行可行性研究)   关键绩效指标(KPI)   锚点数量 从2到8 数字密钥数量 1 BLE 连接间隔 7.5ms – 4s(默认 = 30ms) BLE切换连接传输时间(+CS上下文传输) <60毫秒(CI=30毫秒) <50毫秒(CI=10毫秒) CS 启动延迟 (2+7)*CI CS测量和数据传输(实时) <70毫秒(CI=30毫秒) CS 算法 <30ms 全周期时间(CS + 切换) [交接完成后,算法会在锚点上异步运行] 390毫秒(CI=30毫秒) 190毫秒(CI=10毫秒) 视距CS测量范围 最长100米(在10dBm时) Back Pocket CS 测量范围 10米(在10dB时)   该解决方案正在开发中,后续版本会不断优化。 该系统还可以通过超宽带支持进行增强。 视频 此视频正在处理中。请在几分钟后重试。 (在 “我的视频” 中查看) 如需获取访问权限,请联系[email protected]
記事全体を表示
ADC startup time for S32K3 I'm using S32K3 ADC, and my test found that it takes about 30ms from powering up to initialize the ADC, performing calibration, turning on conversion, and completing the acquisition for the first time, is this normal? How to shorten this time? Re: S32K3的ADC启动时间 Hi RTD Quality packages的ProfileReport.xlsx列了各个APIs的执行时间。 (比如...\SW32K3_S32M27x_RTD_R21-11_5.0.0 _D2410_QualityPackage\ADC\RTD_ADC_ProfileReport.xlsx) 建议检查一下具体是哪个函数的执行时间过长导致的。 另外请问Adc_Calibrate的返回结果是什么?如果超时了的话,建议修改超时设置: Best Regards, Robin ------------------------------------------------------------------------------- Note: - If this post answers your question, please click the "ACCEPT AS SOLUTION" button. Thank you! - We are following threads for 7 weeks after the last post, later replies are ignored Please open a new thread and refer to the closed one, if you have a related question at a later point in time. -------------------------------------------------------------------------------
記事全体を表示
SBC FS26 R21-11 5.0.0 の MBDT への統合 こんにちは、 私は NXP Web サイト (MBDT 上の SBC FS26 R21-11 5.0.0) でこれらのドライバを見つけましたが、これを MBDT に統合できるかどうか、またできる場合はその方法を知りたいと思いました。 これらのドライバを含むフォルダーをコピーして RTD パスに貼り付けようとしましたが、S32CT を開いてもドライバを追加できないSO、正しい方法ではないと思います... ありがとうございます サイモン Re: Integration of SBC FS26 R21-11 5.0.0 on MBDT SBC_FS26とMBDTを統合するための解決策は見つかりましたか?現在この件に取り組んでおり、何かアドバイスやご意見をいただければ大変ありがたいです。 Re: Integration of SBC FS26 R21-11 5.0.0 on MBDT プライベートメッセージをご覧ください Re: Integration of SBC FS26 R21-11 5.0.0 on MBDT この問題の解決策は見つかりましたか? 解決策はありますか?あるいは、何か試せるアイデアがあれば教えてください。 MBDT FS26 Re: Integration of SBC FS26 R21-11 5.0.0 on MBDT こんにちは、残念ながら全く違います
記事全体を表示
使用 “tk (密码块链接(CBC) (aes))” 进行文件系统加密时出现 imx8mm CAAM 错误 使用CAAM写入文件系统时使用`t k (密码块链接(aes)) `进行文件系统加密时出现以下错误。 caam_jr 30902000.jr:4000141c:DECO: desc idx 20:DECO看门狗定时器超时错误 这种情况只是偶尔发生,但在启用所有内核运行时似乎更为普遍。 Re: iMX8MM CAAM errors when using 'tk(cbc(aes))' for filesystem encryption 很抱歉延迟回复。 我们使用的是 Phytec 公司的 `linux-imx_5.15.71_2.2.2-phy5`,并打上了https://github.com/Freescale/linux-fslc/tree/5.15-2.2.x-imx至 5.15.183 的补丁。 不幸的是,这个问题只是偶尔出现(在跨多个单元的 CI 测试中,每 500 小时左右才会出现不到 1 个实例),而且我还无法创建一个简单的重现器。 最初尝试启用 “CONFIG_CRYPTO_DEV_FSL_CAAM_DEBUG” 会阻止我们的设备启动,因为我们正在使用 CAAM 加密根文件系统和各种数据分区,这会生成过多的日志记录。 我正在考虑将日志信息添加到循环缓冲区中,并在错误发生时发出。 由于这只会导致最后 1000 条左右的记录被发出,我想知道是否有任何设置信息是我们应该始终记录的,以支持分析。 谢谢! 丹尼尔 Re: iMX8MM CAAM errors when using 'tk(cbc(aes))' for filesystem encryption 你能否分享一下你正在使用的电路板支持包 版本以及出现问题时的步骤和日志? 此致 哈维 Re: iMX8MM CAAM errors when using 'tk(cbc(aes))' for filesystem encryption 不幸的是,我无法使用其他工具进行重现 😞 我已经添加了最后 2048 条 CAAM 故障日志信息的记录,现在我们正在等待故障在 CI 中再次发生。 我收到日志后会尽快发送给您。 Re: iMX8MM CAAM errors when using 'tk(cbc(aes))' for filesystem encryption 看门狗超时错误是由 DECO 暂停时触发信号的,但是有多种情况可以让 DECO 暂停,例如输入/输出缓冲区地址、长度等。 你能用 "dd" 或 "fio" 工具进行压力测试来重现这个错误吗? 如果问题能够稳定重现,就能帮助我们找到根本原因。 此致 哈维 Re: iMX8MM CAAM errors when using 'tk(cbc(aes))' for filesystem encryption 最后,记录失败。 这应包括 CAAM 子系统的最后 2048 条日志记录。 与标准日志记录的唯一区别是不包括 `src` 和 `dst` 缓冲区数据。 Re: iMX8MM CAAM errors when using 'tk(cbc(aes))' for filesystem encryption 请注意,出于省电的考虑,我们降低了 CPU 和 DDR 的运行速度,这可能会对结果产生影响。 Re: iMX8MM CAAM errors when using 'tk(cbc(aes))' for filesystem encryption 不,我无法用 dd 或 fio 进行重现。 在我捕获之前的日志的系统上,它只会偶尔发生(到目前为止每 2 个月一次)。 在另一个代码略有不同的系统上,这种情况每天至少发生一次。 我们认为这是在启动过程中加载大量共享库时造成的(在我获取日志的系统中并没有使用这些共享库)。 遗憾的是,我们无法轻易收集该版本的日志,但我们可以相对快速地测试补丁,看看问题是否得到解决。 以前的日志是否包含足够的调查信息? 如果没有,还需要什么? Re: iMX8MM CAAM errors when using 'tk(cbc(aes))' for filesystem encryption 简单查看我的日志后发现,在故障发生时,8 个队列请求中的第 8 个请求是产生 DECO 看门狗超时错误的原因。 在日志的早期部分,即使在处理其他偏移量序列时,似乎也很少有排队等待的请求(有时可能只有一个? 这是线索吗? 在此之前排队的 7 个请求似乎都能正确完成,因此可能是以下原因之一... 队列实际上只支持 7 个条目--在这种情况下,减少队列条目的数量可能会有帮助(在哪里可以更改?) DECO 看门狗超时从条目添加到队列时开始,由于处理 8 个条目所需的时间过长,超时也就结束了--在这种情况下,延长超时时间可能会有帮助(同样,如果可能的话,在哪里可以更改?) 这个具体请求实际上有问题,但在我看来,它与之前的 7 个请求等同,因此似乎不太可能出现这种情况 谢谢! 丹尼尔 Re: iMX8MM CAAM errors when using 'tk(cbc(aes))' for filesystem encryption 拿到日志后,我决定亲自深入研究。 当系统处于高内存负载但 DDR 仍以 400MT/s 的速度运行时(在我们的情况下有时为 100MT/s),CAAM 有时会产生看门狗错误。 eMMC 驱动程序会强制 DDR 达到 3000MT/s 的速度,但对于写入而言,这并不一定要等到加密完成后才会发生。 我们已经为我们的用例修复了这个问题,在 `caam_jr_enqueue () `中请求` BUS_FREQ_HIGH `,然后通过计划工作从 `caam_jr_dequeue () `再次将其释放。 这解决了文件系统访问问题,但在从网络堆栈调用时(例如通过 xfrm)会产生问题,因为 `request_bus_freq()` 最终会在原子上下文中被调用(从更高的网络堆栈调用),而且 `request_bus_freq()` 和 `clk_xxx()` 调用都使用了 mutex 我们已经解决了这个问题,在除文件系统之外的所有系统中禁用了 CAAM,但如果向上游推广,还需要更好的解决方案。
記事全体を表示
S32DS3.6.1 インストール S32K5 RTD0.4.4 P02 こんにちは、チーム S32k5 RTD0.4.4 P02 リリースノートによると、モジュール構成は S32DS 3.6.1 です。 S32DS 3.6.1 に S32k5 RTD0.4.4 P02 をインストールすると、次のエラーが発生します。   インストール方法を教えていただけますか? よろしくお願いします! BR、 双 RTD S32DS Re: S32DS3.6.1 install S32K5 RTD0.4.4 P02 こんにちは、 サポートありがとうございます。 はい、 S32K5 RTDをインストールする前にS32K5開発パッケージをインストールしました。問題はFlorinさんが以前おっしゃった通りで、S32DesignStudioを削除するとK5 RTD P02は正常にインストールできます。 BR、 双 Re: S32DS3.6.1 install S32K5 RTD0.4.4 P02 こんにちは、フロリンさん。 サポートありがとうございます。 はい、あなたの回避策は私のコンピューターではCANます。画面はお客様のものではなく、私のS32DSの画面です。切り捨てられていないことを確認しました。次の画面は私の S32DS ソフトウェア サイトです。(K5 RTDをインストールした後、S32DesignStudioサイトを再追加しました) NXPについてネットワークにコネクテッドしていますが、インターネットの速度がわかりません。 BR、 双 Re: S32DS3.6.1 install S32K5 RTD0.4.4 P02 こんにちは、 お客様のスクリーンショットは切り捨てられていると思われます。依存関係が欠落している場合は、インストールを続行CAN。フルスクリーン ショットは次のようになります。 エラーから判断すると、ネットワークの問題が発生し、プラットフォームの更新が正しくダウンロードされなかったようです。これを社内で検証したところ、問題なく動作しました。 回避策としては、3.6.2は実際には必要ないのでアップグレードするには、「拡張機能と更新」->「サイトの管理」に移動し、次の行を見つけます。 S32デザインスタジオ - https://www.nxp.com/lgfiles/updates/Eclipse/S32DS_3.6 削除をクリックして再試行してください。 インストール後は、手動で追加するか、「デフォルトに戻す」をクリックすることでいつでも元に戻すことができます。これにより、追加したカスタム更新サイトが削除され、初期のデフォルト サイトが復元されます。 これは解決策ではなく、むしろ回避策です。理想的には、このフローでそれが役割を果たしているかどうかを判断できるように、接続とインターネット速度に関する詳細な情報が必要になります。 また、S32Design Studio 3.6.2もご用意しております。3.6.x のすべてのバージョンと下位互換性のあるインストーラ以前のリリース。 敬具、 フローリン Re: S32DS3.6.1 install S32K5 RTD0.4.4 P02 こんにちは、シュアンさん S32K5 RTD をインストールする前に、必ず S32K5 開発パッケージをインストールしてください。K5 開発パッケージがアカウントに存在しない場合は、are.NXP.com カタログに追加できます。
記事全体を表示
AN4581 的最新版本 您好, 从 2020 年起有 AN4581(在支持 HABv4 的设备上进行 i.MX 安全启动)修订版 4: https://de.scribd.com/document/811030804/AN4581 然而,如果我搜索贵公司的网站或互联网,我只能找到 2012 年或 2018 年的过时版本。 能否告诉我在哪里可以找到AN4581 的最新修订版? 谢谢! Re: Latest version of AN4581 感谢您的支持。 我可以在这里下载 2020 年版本: https://www.readkong.com/page/an4581-i-mx-secure-boot-on-habv4-supported-devices-2622907 旧版本可在此处获取,无需 NDA : https://community.nxp.com/pwmxy87654/attachments/pwmxy87654/imx-processors/225997/1/AN4581.pdf(2012) https://community.nxp.com/pwmxy87654/attachments/pwmxy87654/imx-processors/194321/1/AN4581_2018.pdf(2018) Re: Latest version of AN4581 这个用于安全启动的AN是机密的,您需要与恩智浦签署保密协议。 最好从https://support.nxp.com/s/?language=en_US创建内部票据
記事全体を表示
HSEステータス登録簿の不正 参考までに以下の画像 S32K312 を使用しており、 HSE ファームウェアで問題が発生しています。 1.HSE ステータス レジスタ値が破損しているようです (0x4038C107)。 2.このステータス破損のため、HSE API にアクセスできません。 3.HSE ファームウェアの消去または再フラッシュの試みが失敗しました。 4.MU0_TR1 レジスタまたはメモリに書き込んで消去/リセット コマンドをトリガーすることはできません。 5. デバッガーがコネクテッドされているときに、単一の外部リセット中に複数のソフトウェア リセットが観察されました。 リクエスト: 1.S32K312 の HSE ファームウェアを消去して再フラッシュするための正しい手順を教えてください。 2. 現在の破損状態のために HSE ファームウェアの再フラッシュが不可能な場合、HSE を回復したり、ステータス レジスタの破損を解決したりするには、どのような手順を実行すればよいですか。 3. デバッガーを接続した状態でハードリセットを実行すると、複数のリセットが発生することが知られていますが、これに関する既知の問題や回避策はありますか? 4.破損した HSE ステータス レジスタの問題を解決し、HSE API へのアクセスを回復するにはどうすればよいですか? HSE ファームウェアのフラッシュ中に従う手順: ステップ 1: 提供された PINK ファイルを、IVT なしで、デモ アプリケーションおよびセキュア ブート アプリケーションの ELF ファイルとともにフラッシュしました。 ステップ2: リセット完了 ステップ3: HSE位置0x 005d4000とDCMレジスタに「??」マークが観測される ステップ4: アドレス0x 00400000のブートローダーとアドレス0x 00442000のアプリケーションを再フラッシュしました。 ステップ5: デバッガをコネクテッドした状態でハードリセットを実行すると、外部リセットコマンドを1つだけ発行したにもかかわらず、ソフトウェア側から複数のリセットがトリガーされることが観察されました。
記事全体を表示
[S32K3 tool part]:How to use IAR compiler or IAR project to compile S32K3 MCAL project [S32K3 tool part]:How to use IAR compiler or IAR project to compile MCAL project 1.    Abstract      Through regular observation, it has been found that there are still many customers using platforms such as MCAL+IAR, including those using IAR compilers and those directly using IAR IDEs. In fact, when I was working on industrial MCUs in the past, I also particularly liked IAR IDE for its fast compilation speed, high compilation efficiency, and small code generation. However, when I came to auto MCU, I found that its popularity was not very high, and I also noticed that some customers encountered various problems when importing MCAL into IAR. Therefore, I will directly write a tool article on how to use IAR compiler or IAR IDE project to compile NXP S32K MCAL in combination with EB tresos MCAL. This article uses S32K344 combined with RTD600 to illustrate the compilation of MCAL projects using IAR compiler and the direct import of MCAL into IAR IDE projects 2. IAR Complier with S32K3 RTD MCAL project 2.1 S32K3 HW and SW SW32K3_S32M27x_RTD_R21-11_6.0.0 S32K3X4-EVB Based on Dio_TS_T40D34M60I0R0 IAR:IAR EW for Arm 9.70.1 EB tresos29.0.0 2.2 Compile MCAL project steps using IAR compiler CMD method 2.2.1 Copy one RTD MCAL new project Open path C:\NXP\SW32K3_S32M27x_RTD_R21-11_6.0.0\eclipse\plugins Copy Dio_TS_T40D34M60I0R0 , rename it as Dio_TS_T40D34M60I0R0_IAR Fig 1 2.2.2 Complie EB tresos project Use EB tresos tool open the following EB tresos project : C:\NXP\SW32K3_S32M27x_RTD_R21-11_6.0.0\eclipse\plugins\Dio_TS_T40D34M60I0R0_IAR\examples\EBT\S32K3XX\Dio_Example_S32K344\TresosProject Generate code: Fig 2 2.2.3 Vscode open Dio_TS_T40D34M60I0R0_IAR project Use VS code open the following path folder: C:\NXP\SW32K3_S32M27x_RTD_R21-11_6.0.0\eclipse\plugins\Dio_TS_T40D34M60I0R0_IAR\examples\EBT\S32K3XX\Dio_Example_S32K344 Of course, you can also directly open this folder path using the command line, as long as you ensure that it is in the same layer path as the. mk and makefile scr Fig 3 2.2.4   Project_parameters.mk modification Mainly modify the following points: TOOLCHAIN = iar IAR_DIR = C:/IAR/ewarm-9.70.1 TRESOS_DIR = C:/EB/tresos_29_0_0 PLUGINS_DIR = C:/NXP/SW32K3_S32M27x_RTD_R21-11_6.0.0/eclipse/plugins The path of IAR must be consistent with the version of IAR software used to ensure that the corresponding IAR compiler can be found. Fig 4 2.2.5   Check_build_params.mk modification Add the following content to check_build_params.mk: else ifeq ($(TOOLCHAIN),iar) ifeq ("$(wildcard $(IAR_DIR)/arm/bin/iccarm.exe)","") $(error Invalid path set to the IAR compiler. \ The provided path: from project_parameters.mk IAR_DIR=$(IAR_DIR) is invalid!) Endif Fig 5 2.2.6        Makefile modification   Makefile need the following 5 points modification: (1)Compilier change ifeq (${TOOLCHAIN},iar) CC := $(IAR_DIR)/arm/bin/iccarm.exe LD := $(IAR_DIR)/arm/bin/ilinkarm.exe AS := $(IAR_DIR)/arm/bin/iasmarm.exe # Intel Hexadecimal Flash image tool GENHEX := $(IAR_DIR)/arm/bin/ielftool.exe HEX_OPTS := --ihex OUT_OPTS := -o endif Fig 6 (2) SRC_DIRS  add TOOLCHAIN SRC_DIRS += $(foreach mod,$(MCAL_MODULE_LIST),$(PLUGINS_DIR)/$(mod)_$(AR_PKG_NAME)/src) \ $(foreach mod,$(MCAL_MODULE_LIST_ADDON),$(PLUGINS_DIR_ADDON)/$(mod)_$(AR_PKG_NAME_ADDON)/src) \ $(PLUGINS_DIR)/Platform_$(AR_PKG_NAME)/startup/src \ $(PLUGINS_DIR)/Platform_$(AR_PKG_NAME)/startup/src/m7 \ $(PLUGINS_DIR)/Platform_$(AR_PKG_NAME)/startup/src/m7/$(TOOLCHAIN) Fig 7 (3) Linker file  modification ifeq ($(LOAD_TO),flash) ifeq (${TOOLCHAIN},iar) LINKER_DEF:= $(PLUGINS_DIR)/Platform_$(AR_PKG_NAME)/build_files/${TOOLCHAIN}/linker_flash_$(DERIVATIVE_LOWER).icf else LINKER_DEF:= $(PLUGINS_DIR)/Platform_$(AR_PKG_NAME)/build_files/$(TOOLCHAIN)/linker_flash_$(DERIVATIVE_LOWER).ld endif else ifeq (${TOOLCHAIN},iar) LINKER_DEF:= $(PLUGINS_DIR)/Platform_$(AR_PKG_NAME)/build_files/$(TOOLCHAIN)/linker_ram_$(DERIVATIVE_LOWER).icf else LINKER_DEF:= $(PLUGINS_DIR)/Platform_$(AR_PKG_NAME)/build_files/$(TOOLCHAIN)/linker_ram_$(DERIVATIVE_LOWER).ld endif endif Fig 8 (4) Complier options change ifeq (${TOOLCHAIN},iar) ################################################################################ # iar Compiler options ################################################################################     clib        := $(IAR_DIR)/arm/lib     CCOPT           +=  --cpu=Cortex-M7 \                         -DAUTOSAR_OS_NOT_USED \                         -DUSE_MCAL_DRIVERS \                         --fpu=FPv5-SP \                         --cpu_mode=thumb \                         --endian=little \                         -e \                         -Ohz \                         --debug \                         --no_clustering \                         --no_mem_idioms \                         --do_explicit_zero_opt_in_named_sections \                         --require_prototypes \                         --no_wrap_diagnostics \                         --diag_suppress=Pa050 \                         $(MISRA) \                         -D$(PLATFORM) \                         -D$(DERIVATIVE) \                         -DIAR \                         -DUSE_SW_VECTOR_MODE  \                         -DENABLE_FPU \                         -DD_CACHE_ENABLE \                         -DI_CACHE_ENABLE                             LDOPT           :=  --entry _start \                         --enable_stack_usage \                         --skip_dynamic_initialization \                         --no_wrap_diagnostics \                         --cpu=Cortex-M7 \                         --fpu=FPv5-SP                             ASOPT           :=  $(ASOPT) \                         --cpu Cortex-M7 \                         --cpu_mode thumb \                         -g \                         -r \                         -DMULTIPLE_CORE endif Fig 9 Fig  10 So how did these IAR compilation options come about? You can refer to the release note of RTD600, which contains corresponding descriptions Fig 11 (5) Elf related change ifeq (${TOOLCHAIN},iar) %.elf: %.o $(LINKER_DEF)               @echo "Linking $@"               @$(LD) $(ODIR)/*.o $(LDOPT) --config $(LINKER_DEF) --map $(ODIR)/ -o $(ODIR)/$@@               @$(GENHEX) $(HEX_OPTS) "$(ODIR)/$(ELFNAME).elf" "$(ODIR)/$(ELFNAME).hex" else %.elf: %.o $(LINKER_DEF)               @echo "Linking $@"               @$(LD) -Wl,-Map,"$(MAPFILE)" $(LDOPT) -T $(LINKER_DEF) $(ODIR)/*.o -o $(ODIR)/$@@               @$(GENHEX) $(HEX_OPTS) "$(ODIR)/$(ELFNAME).elf" $(OUT_OPTS) "$(ODIR)/$(ELFNAME).hex" endif Fig 12 2.2.7   Build to generate elf Commander: make clean make build to generate the elf files: Fig 13 After generation, the elf can be burned onto the S32K344 EVB board for testing. The test results show that the onboard red light is flashing, indicating that the IAR compiler can work in command-line mode. 3. Import RTD MCAL to IAR IDE project This chapter explains how to create an IAR IDE project and import MCAL drivers to implement S32K3 MCAL combined with EB tresos for running. 3.1 MCAL IAR IDE project 2 methods Difference between two methods and how to import MCAL drivers: (1) Directly copy the RTD MCAL driver to the IAR IDE project directory (2) Connect the IAR IDE project driver to the original RTD driver path Fig 14 3.2 MCAL IAR IDE project import steps 3.2.1 create the new RTD MCAL IAR project folder    Create a new folder, named as:S32K344_DIO_MCAL_RTD600_IAR 3.2.2 create the sub folder for IAR project       Generate:EB tresos project code       Include:app related include file       Mcal: mcal driver copy from RTD       src: project main file       Tresos_Project:EB tresos project Fig 15 3.2.3 create EB tresos project (1) Create the EB tresos project in the followign path:  S32K344_DIO_MCAL_RTD600_IAR\Tresos_Project\Mcal_Dio_S32K344_RTD600_IAR (2)Add modules: BaseNXP, Dem, Dio, EcuC, Mcu, Platform, Port, Resource (3)Copy RTD xdm files in the following path: C:\NXP\SW32K3_S32M27x_RTD_R21-11_6.0.0\eclipse\plugins\Dio_TS_T40D34M60I0R0\examples\EBT\S32K3XX\Dio_Example_S32K344\TresosProject\Dio_Example_S32K344\config to: S32K344_DIO_MCAL_RTD600_IAR\Tresos_Project\Mcal_Dio_S32K344_RTD600_IAR\config (4)EB tresos Generate project EB tresos code will be generated to folder: S32K344_DIO_MCAL_RTD600_IAR\Generate Fig 16 3.2.4 Copy RTD related drivers to IAR project folder (1) BaseNXP: header, include, src (2)Det:  include, src (3)Dio:  include, src (4)Mcu:  include, src (5)Platform: build_files, include, src, startup (6)Port: include, src (7)Rte: include, src Copy RTD folder to IAR project is one method, if don’t want to copy the file, also can use the linker to add the RTD install path drivers directly. Fig 17 3.2.5 IAR IDE create IAR project   (1) Project->Create new project   (2) In the IAR project, add group   The related folder in project can be structured like the fig 18, which contains:   Generate: Include and src->EB tresos project generate code   Mcal:  Base, Det, Dio, Mcu, Platform, Port, Rte->Mcal driver   Src: Main.c->project main code    (3) Add RTD mcal related drivers to IAR project The RTD MCAL related driver files can be directly downloaded from the RTD installation path or copied to a folder in the IAR project, and both methods yield the same result. Fig 18 (4)IAR project platform folder added result: Fig 19 (5)main code add Main.c can copy from path: C:\NXP\SW32K3_S32M27x_RTD_R21-11_6.0.0\eclipse\plugins\Dio_TS_T40D34M60I0R0\examples\EBT\S32K3XX\Dio_Example_S32K344\src to S32K344_DIO_MCAL_RTD600_IAR\src Comment:  //#include "check_example.h"  // Exit_Example(TRUE); 3.2.6 IAR project options configuration (1)General options->Target->Device->NXP S32K344 (2)C/C++ Complier->Preprocessor Addional include directories: Use IAR project folder drivers which copied from RTD install path, the directories are: $PROJ_DIR$\Generate\include $PROJ_DIR$\mcal\BaseNXP_TS_T40D34M60I0R0\header $PROJ_DIR$\mcal\BaseNXP_TS_T40D34M60I0R0\include $PROJ_DIR$\mcal\Mcu_TS_T40D34M60I0R0\include $PROJ_DIR$\mcal\Platform_TS_T40D34M60I0R0\include $PROJ_DIR$\mcal\Rte_TS_T40D34M60I0R0\include $PROJ_DIR$\mcal\Platform_TS_T40D34M60I0R0\startup\include $PROJ_DIR$\mcal\Det_TS_T40D34M60I0R0\include $PROJ_DIR$\mcal\Dio_TS_T40D34M60I0R0\include $PROJ_DIR$\mcal\Port_TS_T40D34M60I0R0\include $PROJ_DIR$\include If use the RTD install path drivers, use the following directories: $PROJ_DIR$\Generate\include C:\NXP\SW32K3_S32M27x_RTD_R21-11_6.0.0\eclipse\plugins\BaseNXP_TS_T40D34M60I0R0\header C:\NXP\SW32K3_S32M27x_RTD_R21-11_6.0.0\eclipse\plugins\BaseNXP_TS_T40D34M60I0R0\include C:\NXP\SW32K3_S32M27x_RTD_R21-11_6.0.0\eclipse\plugins\Mcu_TS_T40D34M60I0R0\include C:\NXP\SW32K3_S32M27x_RTD_R21-11_6.0.0\eclipse\plugins\Platform_TS_T40D34M60I0R0\include C:\NXP\SW32K3_S32M27x_RTD_R21-11_6.0.0\eclipse\plugins\Rte_TS_T40D34M60I0R0\include C:\NXP\SW32K3_S32M27x_RTD_R21-11_6.0.0\eclipse\plugins\Platform_TS_T40D34M60I0R0\startup\include C:\NXP\SW32K3_S32M27x_RTD_R21-11_6.0.0\eclipse\plugins\Dio_TS_T40D34M60I0R0\include C:\NXP\SW32K3_S32M27x_RTD_R21-11_6.0.0\eclipse\plugins\Port_TS_T40D34M60I0R0\include C:\NXP\SW32K3_S32M27x_RTD_R21-11_6.0.0\eclipse\plugins\Det_TS_T40D34M60I0R0\include $PROJ_DIR$\include Defined symbols: S32K3XX S32K344 IAR USE_SW_VECTOR_MODE D_CACHE_ENABLE I_CACHE_ENABLE ENABLE_FPU Extra options: --no_clustering --no_mem_idioms --do_explicit_zero_opt_in_named_sections --require_prototypes --no_wrap_diagnostics Languate 1:   Check Require prototypes Diagnostics Suppress these disgnostics: Pa050 Fig 20 (3)Linker: Two points need to be added: $PROJ_DIR$\mcal\Platform_TS_T40D34M60I0R0\build_files\iar\linker_flash_s32k344.icf Library->Entry symbols: _start Fig 21 (4)Debugger Setup: PE micro, run to main Extra Options: Use command line options: --drv_vector_table_base=__ENTRY_VTABLE Fig 22 3.2.7  Build IAR project Project->Rebuild All Fig 23 3.2.8  Test result Download and debug result: Fig 24 After downloading and running, the red led is blinking on the board, indicating that the IAR IDE MCAL import method project has been successfully run.
記事全体を表示
Linux Embedded Challengeプロジェクト - 2014 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 1.歩行者用スポットライト機能付きアダプティブダイナミックヘッドライト-eVisionによる チームメンバー: バラバン・ヴァレリウ - マスター、アドバンスト・マイクロエレクトロニクス、エレクトロニクス、UPB Voicu Tudor Alexandru - 学士、応用電子工学、電子工学、UPB Stanescu Sebastian - 学士、テレコムネットワーキングおよびソフトウェア、UPB 簡単な説明: 夜間の事故と夜間の事故の間の死亡率が高いため、技術開発のために多くの研究が行われています。 夜間にドライバーの視界を広げ、これが避けられなかった場合の事故による損傷を減らすため。ザ アダプティブヘッドライト機能は、暗い場所、特に曲がり角でさらに見るのに役立ちます:コーナリングライト ヘッドライトを進行方向に回転させ、CPUによって計算された回転角度で、できるだけ多くの道路を照らします 可能な限りの面積 興味深い解決策は、潜在的な危険を具体的に照らすLEDビームであるスポットライト照明機能です。 近赤外線カメラが道端の鹿や道路上の歩行者を検出した場合、それらを短時間照らすことができます メインビームで覆われた通常の領域を超えて、スポットライトによってドライバーに危険の可能性に注意を向けます。 プレゼンテーション: eVisionPresentation.pdfご相談ください。 ドキュメンテーション: eVisionDoc.pdfご相談ください。 コードソース https://github.com/izzi/app-evision https://github.com/izzi/meta-evision 2. DriverVehicleインタラクションのための音声コマンドインターフェース - by She# チームメンバー: ユリア・ネアゴエ - コンピュータサイエンスと軍事情報システム、軍事技術アカデミー Mihaela-Anca Sorostinean - コンピュータサイエンスと軍事情報システム、軍事技術アカデミー 簡単な説明:     自動車および通信領域における継続的な技術進歩の文脈では、ドライバー 責任は、単に車を制御することから、によって提供される多数のガジェットとの相互作用に変わりました。 生産者。このプロジェクトの目的は、ドライバーが制御する可能性を提供するインターフェイスを設計することです ドライバーが彼の注意を集中することを可能にするために、音声コマンドによる車の非重要な機能の一部 道路上では、車との快適なコミュニケーション手段も備えています。     私たちは、ラジオ、窓、気候、電話などのいくつかの基本的な機能の音声認識システムを開発しました それをワンドボードに実装しました。また、認識されたグラフィカルインターフェイスをユーザーに提供します 彼の車両との相互作用を強化するためのコマンド。 プレゼンテーション: ShePresentation.pdfご相談ください。 ドキュメンテーション: SheDoc.pdfご相談ください。 コードソース She#_Project_Source.zipをご覧ください 。 3. 運転制御ソフトウェア - by FreeSoftwares チームメンバー: Petrosanu Adrian-Sabin - コンピュータサイエンス、UPB Birsan Nicoleta Cosmina - コンピュータサイエンス、UPB Radoi Ioana Gabriela - コンピュータサイエンス、UPB 簡単な説明: 「ドライビングコントロールソフトウェア」は、オートマチックギアボックスを制御するためのソフトウェアです。このプロジェクトは、動作のシミュレーションで構成されています ワンドボードのオートマチックギアボックスの。オートマチックギアボックスは、自動車のトランスミッションの一種です。 車両の動きに合わせてギア比を自動的に変更します。 プレゼンテーション: FreeSoftwaresPresentation.pdfご相談ください。 ドキュメンテーション: FreeSoftwaresDoc.pdfご相談ください。 コードソース Freesoftwares_Project_Source.zipをご覧ください 。 4. 自動駐車場 - ATM利用 チームメンバー: Mihai Coca - コンピュータサイエンスと軍事情報システム、軍事技術アカデミー グルジアのアンドレイ - コンピュータサイエンスと軍事情報システム、軍事技術アカデミー Hiji Iulian - コンピュータサイエンスと軍事情報システム、軍事技術アカデミー Shortの説明: 多くの企業が、 その分野での作業を 特定の使用例:駐車場。この目的 プロジェクトは、ドロップオフできるコンセプトカーを設計することです その所有者によって縁石で 、スポットパークに入るために独自のデバイスに残されました。このプロセスを逆にすることさえできます 所有者が行く準備ができているとき、車はスポット公園を離れて、そのを満たすために自分自身で 縁石に再びキーホルダー。 ドキュメンテーション: ATMにご相談くださいDoc.pdf コードソース ATM_Project_Source.zipをご覧ください 。 5.衝突検出-Beer2.0による チームメンバー: Nitu Adrian - コンピュータサイエンス、UPB 簡単な説明: 私たちのプロジェクトの目的は、車に前方の道路の感覚を提供し、予防策を講じることができるようにすることです 衝突;このようにして、道路での事故を減らしたいと考えています。さまざまなハードウェアから信号と情報を収集します ドライバーに警告するか、ドライバーを保護するために重要な操作を行うために車を即座に制御します 生命を脅かす出来事から。 フリースケールのカップカーには、ワンドボードと2台のUSBカメラが装備され、環境を追跡できます。初期処理後 オブジェクトトラッキングは、リモートコントロールによるヒューマンインタラクションを組み込みます。このプロジェクトでは、単純な警告システムを信じています および/またはブレーキングは、概念の証明として十分です。 プレゼンテーション: ご相談くださいBeer20Presentation.pdf ドキュメンテーション: ご相談くださいBeer20Doc.pdf コードソース https://bitbucket.org/adriannitu92/freechallenge 6.サブバンド正規化filtered-X LMSアルゴリズムを使用したフィードフォワード適応型ノイズキャンセリング - Brainiacsによる チームメンバー: Cristian Monea - 電気通信および情報技術、エレクトロニクス、UPB Madalin Zaharia - 電気通信および情報技術、エレクトロニクス、UPB 簡単な説明 このプロジェクトでは、サブバンド正規化フィルタリングX LMS(NFXLMS)に基づくフィードフォワード適応型ノイズキャンセレーション(ANC)アルゴリズムを提案します。 適応アルゴリズムの使用には、固定FIRやIIRフィルターなどの単純なフィルタリングアルゴリズムよりも利点があります。また、ノイズは 車の環境は、スペクトル分布、平均、分散など、その特性の一部を保持するため、静止していると見なすことができます。 車の騒音キャンセリングアプリケーションで適応フィルターを使用できるようにします。 フィードフォワードシステムは、フィードバックシステムよりも効率的である必要があります。この場合、コヒーレントなリファレンスノイズ入力がその前に検出されます キャンセルスピーカーを通過して伝播します。 したがって、アルゴリズムは2つのセンサー(マイク)をシミュレートします:キャンセルされる一次ノイズを測定する基準センサー。 とエラーセンサー。 プレゼンテーション: ご相談くださいBrainiacsPresentation.pdf ドキュメンテーション: ご相談くださいBrainiacsDoc.pdf Linux Embedded Challenge 2014 (英語)
記事全体を表示
机器视觉课程#2:CNN概述 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 单层感知器 在介绍硬件具体细节之前,本课程将介绍一些有关 CNN 如何工作以及其用途的信息。CNN 广泛应用于图像和视频识别应用,因此它们无疑引起了汽车界的兴趣。CNN 与神经网络类似,由具有可学习权重和偏差的神经元组成。每个神经元接收几个输入,对它们进行加权和,将其传递给激活函数并以输出做出响应。 神经网络的基本结构是感知器。感知器如下图所示: 感知器由权重(包括称为偏差的特殊权重)、求和处理器和激活函数组成 还有一个额外的输入节点,称为偏差,它有点像 所有输入都单独加权,相加并传递到激活函数。 每个激活函数(或非线性函数)都采用单个数字并对其执行某种固定的数学运算。实际中会遇到几种激活函数: Sigmoid:接受实值输入并将其压缩到 0 到 1 之间的范围内 σ(x)= 1 /(1 + exp(−x)) tanh:接受实值输入并将其压缩到 [-1, 1] 范围内 tanh(x) = 2σ(2x) − 1 ReLU:ReLU 代表整流线性单元。它采用实值输入并将其阈值设为零(用零替换负值) f(x)= 最大值(0,x) Bias 的主要功能是为每个节点提供一个可训练的常数值(除了节点接收的正常输入之外)。 多层感知器 多层感知器 (MLP) 包含一个或多个隐藏层(除了一个输入层和一个输出层)。单层感知器只能学习线性函数,而多层感知器还可以学习非线性函数。     所有连接都有与之相关的权重,每一层都有自己的偏差。多层感知器学习的过程称为反向传播算法。最初,所有边权重都是随机分配的。对于训练数据集中的每个输入,神经网络都会被激活并观察其输出。将此输出与我们已经知道的期望输出进行比较,并将错误“传播”回上一层。我们会注意到这个错误,并相应地“调整”权重。重复此过程,直到输出误差低于预定阈值。“调整”权重的过程利用梯度下降算法来最小化误差函数,我们不会对此进行详细介绍。 卷积神经网络 热修复
記事全体を表示
实践研讨会:使用全新 LPC54114 节能 MCU 为 Always-On 市场设计嵌入式解决方案 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 本次会议将以 LPC54000 低功耗系列的最新版本 LPC54114 MCU 为特色,演示如何在始终在线的应用中利用双核架构。通过本次实践课程优化产品设计以延长电池寿命并快速将其推向市场。主题涵盖系统架构、软件设计和调试、功率优化、声音检测和语音触发。 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 本次会议将以 LPC54000 低功耗系列的最新版本 LPC54114 MCU 为特色,演示如何在始终在线的应用中利用双核架构。通过本次实践课程优化产品设计以延长电池寿命并快速将其推向市场。主题涵盖系统架构、软件设计和调试、功率优化、声音检测和语音触发。
記事全体を表示
AUT-N1791 动手实践研讨会:使用 CNN 和其他分类算法识别交通标志 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 该练习旨在进行实践,包括使用视觉处理器在各种图片上运行 CNN 来识别交通信号(停止、转弯、让行等)。首先,我们将介绍机器学习中所使用的算法的基本概念。课程结束后,我们将使用视觉处理器运行 CNN 来识别交通标志和无交通标志。 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 该练习旨在进行实践,包括使用视觉处理器在各种图片上运行 CNN 来识别交通信号(停止、转弯、让行等)。首先,我们将介绍机器学习中所使用的算法的基本概念。课程结束后,我们将使用视觉处理器运行 CNN 来识别交通标志和无交通标志。 安全互联汽车和自动化汽车
記事全体を表示