Multi Source Translation Content

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

Multi Source Translation Content

Discussions

Sort by:
S32K3の低電力ウェイクアップ問題 最近、S32K314の低消費電力ウェイクアップ機能をデバッグしていたところ、外部ウェイクアップ方法を使用してもスリープモードから復帰できないことがわかりました。 通常の状況下では、DIは外部刺激に反応するが、休眠状態に入ると全く反応しなくなる。 添付ファイルにコードが含まれています。この問題の原因は何でしょうか?また、どのように解決すればよいでしょうか? Re: S32K3 低功耗唤醒问题 こんにちは、ジュリアン あなたの提案に従ってみたところ、目が覚めるようになりました。これは、私が本当にスタンバイモードに入ったということでしょうか? もう一つ質問したいのですが、スタンバイモードに入った後、I/Oポートの状態は以前と同じままなのでしょうか? もう一つの疑問は、回路設計において、MCUから定期的にデータ供給を受ける必要があるハードウェアウォッチドッグが存在することです。これを低消費電力でどのように実現できるでしょうか? ありがとう、 Joker_Y Re: S32K3 低功耗唤醒问题 こんにちは、 @Joker_Y さん。 あなたが共有してくれたプロジェクトはかなり大規模なようですね。すべてを確認したわけではありませんが、あなたが対応するウェイクアップソースを有効にしていないのはわかります。以下の行がコメントアウトされています。 Wkpu_Ip_EnableInterrupt(0,Wkpu_Ip_ChannelConfig_PB[0].hwChannel); また、スタンバイモードに入る前に、Clock_Ip_Init() APIを使用してメインクロックをFIRCに変更してください。 低出力の例を参照できます;クロック設定の変更方法やWKPUチャネルの有効化方法が示されています。 S32K3の低消費電力管理ANとデモ [RTD600 MCAL & IP]S32K3 低消費パワーマネージメントANとデモ よろしくお願いします、 ジュリアン Re: S32K3 低功耗唤醒问题 こんにちは、 @Joker_Y さん。 1.スタンバイ中かどうかはMC_MEを見て確認できます。MODE_STAT[PREV_MODE]。これは、前回のモードがリセット(任意のリセット)だったか、スタンバイだったかを示します。 また、MCUの現在の消費電力を測定することもできます。典型的なスタンバイ値は、S32K3XXのデータシート第 6 章.7(供給電流)に記載されています。 2. すべてのピンは、スタンバイモード中も、実行モードで最後に設定された状態を保持します。ただし、リセットイベント後はすべてのピンがデフォルト状態に戻されます。パッドキーピングを有効にすると、ピンがウェイクアップから状態を保ち、ユーザーが再度初期化するまで保つことができます。 S32K3XXのリファレンスマニュアル にある 41.12パッドの記録 を参照してください。 3. これはデザインやアプリケーションによると思います。私の意見では、ウォッチドッグが対応している場合にしてスリープに設定するか、RTCやその他のウェイクアップでS32K3を継続的に起動させ、ウォッチドッグをサービスし、低消費電力に戻す方法があります。 よろしくお願いします、 ジュリアン
View full article
LX2080 LX2080プロセッサが高温環境で一定時間動作した後、搭載の温度センサーは86°Cを示します。電源を入れ直すと「Fixed DDR on board」というメッセージで印刷がフリーズし、シリアルポートが反応しなくなります。 Re: LX2080 お返事ありがとうございます。このロットの基板のうち、この問題が発生したのは1枚だけです。この問題は全くの再起動後に再現するが、カーネル経由での再起動では発生しない。高温環境では検証ツールを実行できませんが、基板は室温では正常に動作します。@ June_Lu Re: LX2080 DDRが正常に動作することを確認するため、QCVS DDRを使用して高温環境下でのDDRの検証を行ってください。 よろしくお願いします。
View full article
LS2160A Serdes クロッキング 私はLX2160A SerDes1とRCW SerDesプロトコル2を使用しています。 E~Hレーン:SGMII レーンA~D:PCIe.2 x4(Gen2のみ) リファレンスマニュアルによると、すべてのレーンがPLLSを使用しているため、SGMIIとPCIeは同じリファレンスクロックを共有しているはずです。当初は、高速/低速のクロック入力を別々に使用して、SGMIIを125MHz、PCIeを100MHzで動作させたいと考えていましたが、この特定のプロトコルオプションでは両方のプロトコルがPLLSのみを使用するため、同一の基準周波数を共有する必要があります。そのため、現在はSD1のPLLS入力に100MHzのクロックを1つ供給し、PLLFは使用しないことにしました。 RCW以外のSerDes設定を追加することなく、SGMIIとPCIe Gen1/Gen2の両方で単一の100MHz PLLSリファレンスを使用してプロトコル2を実行することは可能ですか? SGMIIとPCIeが同じPLLSを共有する場合、プロトコル固有の問題(ジッター、SSCなど)は発生しますか? 私のSGMIIリンクパートナーは、独自のローカル125MHzリファレンスを使用するLAN9645です。SGMIIはCDRを使用するため、片側が100MHz、もう片側が125MHzから生成される場合でも、両方とも正しい1.25Gbaudの回線速度を生成する限り、それは正常な動作なのでしょうか? プロトコル2はPLLFを使わないので、SD1の高速参照クロック入力は接続せずに放置してもよいのでしょうか、それとも駆動し続けるべきでしょうか?
View full article
LS1043AXN8QQB DVFS 親愛なるサポートへ、 お客様はLS1043AXN8QQBプラットフォームを使用し、CPUの動的周波数調整を1.6GHzから800MHz、500MHzに設定しました。CPUが500MHzで動作しているときに、RCUの停止とPCIE通信の異常が発生することが判明した。 RMおよびチップのデータシートによると、LS1043は1GHzから1.6GHzをサポートしています。公式文書には、動的周波数調整でサポートされる最小周波数については記載されていない。500MHzに対応しているかどうかは不明です。 CPU LS1043A正常に稼働しているときに動的周波数調整に対応していますか? Re: LS1043AXN8QQB DVFS CPUクロック分周器/cpufreqパスによって500MHzのCPUランタイム動作が実現される場合にサポートされ、CGA PLL自体を1GHz未満に下げることによって実現される場合にはサポートされません。 PCIeの異常について:周波数変更が通常のCPU DFSパスを介して行われる場合、NXPの証拠によれば、CPU周波数のみが影響を受け、AHB/APBは変更されないとのことです。したがって、PCIeはCPU DFSのみによって影響を受けるべきではない。PCIeが異常になった場合、実装がプラットフォーム/SYSCLK/PLL比率も変更していないか確認してください。なぜなら、データシートではプラットフォームクロック設定が有効範囲内に収まることを要求し、適切なPCIe動作のためのPCIeプラットフォームクロック要件が明記されているからです。 LS1043A実行時CPU周波数の500 MHzへのスケーリングをサポートしていますが、CGA PLLは≥1 GHzに保たれ、PCIe/プラットフォームクロックを乱してはいけません。
View full article
MIMXRT1052CVL5B 内部RAM到底有多大? 是不是内部最多只有512K的RAM? ITCM/DTCM/SRAM 总共是512K? 还是说是512K的SRAM + 512K的TCM? Re: MIMXRT1052CVL5B 内部RAM到底有多大? Hi @SDFDSFSF , 感谢您的提问! MIMXRT1052CVL5B 不是“512KB SRAM + 512KB TCM”。它的片内 SRAM 总量应按 512KB 理解;这 512KB 是 FlexRAM,可在 ITCM、DTCM、OCRAM 之间重新分配。 您可以在AN12077中,找到详细的说明。 Best regards, Gavin Re: MIMXRT1052CVL5B 内部RAM到底有多大? 我现在有一款IMXRT1050-EVKB的板子, SCH-29538 REV A4,现在官网没有对应的原理图了吗? Re: MIMXRT1052CVL5B 内部RAM到底有多大? 我现在有一款IMXRT1050-EVKB额板子, SCH-29538 REV A,现在官网没有对应的原理图了吗?
View full article
LS2160A Serdes Clocking I'm using LX2160A SerDes1 with RCW SerDes Protocol 2: Lanes E–H: SGMII Lanes A–D: PCIe.2 x4 (Gen2 only) From the Reference Manual, it appears all lanes use PLLS, so both SGMII and PCIe must share the same reference clock. I originally wanted to run SGMII at 125 MHz and PCIe at 100 MHz using separate fast/slow clock inputs, but since this specific protocol option puts both protocols on PLLS only, they must share one identical reference frequencyso now I plan to provide a single 100 MHz clock to the SD1 PLLS input and leave PLLF unused. Is it possible to run Protocol 2 with a single 100 MHz PLLS reference for both SGMII and PCIe Gen1/Gen2, with no additional SerDes configuration beyond the RCW? Are there any protocol-specific issues (jitter, SSC, etc.) when SGMII and PCIe share the same PLLS? My SGMII link partner is a LAN9645 using its own local 125 MHz reference. Since SGMII uses CDR, is it normal for one side to be derived from 100 MHz and the other from 125 MHz, as long as both generate the correct 1.25 Gbaud line rate? Since Protocol 2 doesn't use PLLF, can the SD1 fast reference clock input be left unconnected, or should it still be driven?
View full article
S32K328 – マルチコアが有効な場合、FIRCクロック分周器(DIV16)は適用されません NXPテクニカルサポートチームの皆様、こんにちは。 S32K328のFIRCクロック設定について質問があります。 STM2モジュールのFIRCクロックソースを3MHz(DIV 16)にシングルコアセットアップで設定しました。シングルコア構成では、FIRCクロックソースが正しく3MHzで出力されていることを確認しました。 しかし、マルチコアを有効にすると、分周器が16に設定されているにもかかわらず、FIRCクロックソースの出力が3MHzではなく48MHzになります。 現在のアーキテクチャでは、MCUの開始モードとセットモードはCore 0上でしか実行できません。私の質問は、Core 1からMCUクロックにもアクセス(または再設定)できるのか、そしてこれが問題の原因になるのかということです。 私の環境設定に関する補足情報: 私はAUTOSAR環境で作業しており、マルチコアサポートのためにRM(Resource Manager)モジュールを追加しました。 Domain0 マスター: コア 0、Domain1 マスター: コア 1。各ドメインに対してすべてのメモリおよびペリフェラルアクセス権限が付与されています。 ツール環境: MCAL RTD 3.0.0 EB Tresos 27.1.0 私自身の分析からの発見: 実行時にCONFIG_REG_GPRレジスタのFIRC_DIV_SELフィールドを読み取ると、値は3となり、これはドライバーコードに基づき48MHzに対応します(DividerValueマッピング:48MHz→3、24MHz→1、3MHz→2)。また、クロックドライバーのディバイダー書き込みパスにはAPP_CORE_ACC権限チェックと、Secure BAF(CORE2)がWFIに入るまでの待ち時間(ポーリングPRTN0_CORE2_STAT)が含まれていることに気づきました。マルチコア構成では、除算器への書き込みがスキップされる可能性があると推測されます。 以下の点についてアドバイスいただけますか: マルチコアが有効になっている場合、FIRC分周器の設定(DIV 16)が適用されず、3MHzではなく48MHzの出力になるのはなぜですか? このシナリオでは、Core 1からのMCUクロックへのアクセスや再設定がサポートされているか、または必須かは不明です。 マルチコア構成におけるAPP_CORE_ACC権限チェックやSecure BAF WFIタイムアウトによって、ディバイダー書き込みをスキップできるかどうか、そしてディバイダーが正しく適用されているかを確実にする方法についてです。 サポートありがとうございます。ご回答をお待ちしております。 よろしくお願いします、 AWSライブラリS32K3 Re: S32K328 – FIRC Clock Divider (DIV16) Not Applied When Multicore Is Enabled こんにちは、 根本原因 は 自分の側にある。 該当するドライバー機能は 以下の(Clock_Ip_SetFircDivSelHSEb in \Mcu_TS_T40D34M30I0R0\src\Clock_Ip_IntOsc.c をご覧ください😞 c /* Application can write this divider */ if ( ((IP_CONFIGURATION_GPR->CONFIG_REG_GPR & CONFIGURATION_GPR_CONFIG_REG_GPR_APP_CORE_ACC_MASK) >> CONFIGURATION_GPR_CONFIG_REG_GPR_APP_CORE_ACC_SHIFT) == CLOCK_IP_APP_CAN_WRITE) { ... /* FIRC_DIV_SEL write happens here */ } else { /* HSE firmware doesn't allow to write FIRC post divider. */ Clock_Ip_ReportClockErrors(CLOCK_IP_REPORT_WRITE_PROTECTION_ERROR, Config->Name); } 問題は 、 私のマルチコア構成では 、 フルスピードで動作しているときにコードが(APP_CORE_ACC == CLOCK_IP_APP_CAN_WRITE)ブロックに入らないことです。 ブロック 内に while(1)を入れて確認 しました が、その時間は一度も到達しません 。その結果、 FIRC_DIV_SEL書き込みがスキップされ、 レジスタは設定された2(3MHz)ではなくリセット値3(48MHz) のままになります 。これにより、私のSTMティックは意図した16倍速く動作 します。 しかし、デバッグモード(ステップ実行/ブレークポイント設定)で実行すると、同じブロックが正しく実行され、FIRC_DIV_SELも適切に2(3MHz)に設定されます。このフルスピード実行とデバッグ実行の違いが、問題の重要な症状です。 So the APP_CORE_ACC bit in CONFIG_REG_GPR is not set to CLOCK_IP_APP_CAN_WRITE at the moment Mcu_InitClock reads it during a full-speed multicore boot, but it does become writable when I slow execution down with the debugger. 私の環境設定に関する補足情報: Mcu_InitClockとMcu_SetModeはコア0でのみ呼び出されます。Core 1(CM7_1)はMCUクロックAPIを呼び出しません。 コア1は、 MC_ME (PRTN0_CORE1_*) を介してコア0から起動されます 。 HSEアプリケーションのファームウェア は 一切読み込んで いません。 同じ構成 は シングルコア(FIRC_DIV_SEL = 2 / 3MHz)でも正しく 動作します。 ツール環境:MCAL RTD 3.0.0、EB Tresos 27.1.0。 以下の点を理解する手助け をしてもらえます か? CONFIG_REG_GPRのAPP_CORE_ACCビット を制御するものは何 でしょうか?SBAFはどのような条件下で アプリケーションコアの書き込みアクセス をFIRC_DIV_SELに付与 しますか? なぜこのビットはシングルコアでは正しく設定されるのに、マルチコア構成では(フルスピードで)設定されないのでしょうか?CM7_1を起動したりマルチコアブートフローを追加したりすると、SBAFがこのアクセスを許可するタイミングや変更は変わりますか? ブロックは デバッガ下では正しく 実行 されますが、フルスピードではないため、 SBAFが 書き込みアクセスを許可し、Core 0 がMcu_InitClockを呼び出す場合のタイミングや順序の問題 が強く示 唆 されます。 Core 0がクロック 初期化を行う 前に SBAFがAPP_CORE_ACC = APP_CAN_WRITEを付与していることを確認する 推奨方法は 何でしょうか? マルチコア環境 で アプリケーションコアが このアクセス権を付与 される かどうかを決定する 特定の ブート構成(IVT、 ライフサイクル、またはSBAF関連 の設定)はありますか? Thank you for your サポート. I look forward to your guidance. よろしくお願いします、 Re: S32K328 – FIRC Clock Divider (DIV16) Not Applied When Multicore Is Enabled こんにちは、 そちら側でのテストと 詳細なご回答、 ありがとうございました 。 私の実装に関する ご質問にお答えします 。 1. FIRC_DIV_SELの設定方法: 私のClock_Ip_IrcoscConfigurations_0 構造 では 、FIRCクロック は IRCOSCの範囲をCLOCK_IP_SUPPORTS_3MHZ_FREQUENCYに設定 しています 。つまり 、意図された構成は3MHzで、 あなたのテストと同じです。 2. 2番目のコアの初期化方法 / もう一方のコアでクロック初期化を呼び出すかどうか: Mcu_InitClock とMcu_SetModeはどちらも Core 0でのみ呼び出されます。 Core 1では、MCU クロック関連のAPI は一切呼び出していません 。 とはいえ、 コア1で意図しない クロック再構成が発生していないことを 確認するため、私の側でさらにデバッグを 行い 、この動作を再確認します 。 その他の観察事項: シングルコアでは、FIRC_DIV_SEL 2 (3MHz)として読み取られ、正しく動作します。 マルチコアでは、FIRC_DIV_SELが3(48MHz)と読み取られ、STMティックは予想の16倍速くなります。 ご指摘いただいたとおり、最新のRTDリリース への移行についても検討いたします 。 デバッグ結果 はまた お知らせ します。その間に、 クロック初期化がCore 0の3MHz 構成 でのみ行われ ているにもかかわらず、 FIRC_DIV_SELが3( 48MHz)になる原因について何か アドバイス をいた だけるとありがたいです。 よろしくお願いします、 Re: S32K328 – FIRC Clock Divider (DIV16) Not Applied When Multicore Is Enabled こんにちは、 @dpsdprtmvl まず、使われているソフトウェアのバージョンは現在のバージョンより数リリース遅れているので、最新のソフトウェアリリースへの移行をお勧めします。 FIRC_DIV_SELに関して、S32K3 IPCF v4.3.0のIPCF_Example_S32K358を使用して、S32K3X8EVB-Q289ボード上で簡単なテストを実施しました。このテストでは、IRCOSC構成構造(Clock_Ip_IrcoscConfigurations_0)を変更し、IRCOSCの範囲をCLOCK_IP_SUPPORTS_48MHZ_FREQUENCYからCLOCK_IP_SUPPORTS_3MHZ_FREQUENCYに変更しました。 アプリケーションを実行し、コア間のピンポン通信が完了するのを確認した後、CONFIG_REG_GPR[FIRC_DIV_SEL]が下の画像のように期待値(10b)に正しく設定されていることを確認しました。 実装についてもう少し詳しく教えていただけますか?FIRC_DIV_SELはどのように設定していますか?2つ目のコアはどのように初期化していますか?他のコアでもクロック初期化を呼び出していますか? BR、VaneB
View full article
MIMXRT1052CVL5Bには、実際にはどれくらいの内蔵RAMが搭載されているのでしょうか? 内蔵RAMは最大でも512KBしかないというのは本当ですか?合計RAM容量(ITCM/DTCM/SRAM)は512KBですか? それとも、512K SRAM + 512K TCMでしょうか? Re: MIMXRT1052CVL5B 内部RAM到底有多大? こんにちは、 @SDFDSFSF さん、 ご質問ありがとうございます! MIMXRT1052CVL5Bは「512KB SRAM + 512KB TCM」ではありません。オンチップSRAMの合計容量は512KBと理解してください。この512KBはFlexRAMであり、ITCM、DTCM、OCRAM間で再割り当て可能です。 詳細な手順については、 AN12077をご覧ください。 よろしくお願いします、 ギャビン Re: MIMXRT1052CVL5B 内部RAM到底有多大? 私はIMXRT1050-EVKBボード(SCH-29538 REV A4)を持っていますが、対応する回路図は公式サイトで入手できなくなっているのでしょうか? Re: MIMXRT1052CVL5B 内部RAM到底有多大? 私はIMXRT1050-EVKBボード(SCH-29538 REV A)を持っていますが、対応する回路図は公式サイトで入手できなくなっているのでしょうか?
View full article
TJA1050, CAN loss Hello, We have a product used TJA1050 used TJA1050, the schematic is as below. We found there is a high-frequency CAN loss during the test. Lost one or two frames in operation. The busload is around 16%. I attached the HW schematic and CAN loss data below. Question 1. What's the possibly root cause of the CAN loss? 2. Is there any issue about the HW schematic? 3. What action I can do in the next step I can try more test or provide more information if necessary. Thank you for your support.  Re: TJA1050, CAN loss 1:If this board of yours is not at the end of the bus, it is recommended to disconnect DR6/DR7 first or change it to an optional jumper 2: For test purpose please remove DR8/DR9/DD1/DD2 3:Whether the data rate and propagation delay of the isolator SI8421 satisfy the CAN bit timing margin
View full article
S32K358 EVK board CAN not working Hello,  I am trying to run the code to use the CAN0 or CAN1 of S32K3x8EV8 board but I am not able to do so. But CAN is not working at all, I am trying read the can messages via Waveshare USB-CAN-A. Pasted the code as well,  Add screenshot of CAN Config /* * Copyright 2019 NXP * * All rights reserved. * * THIS SOFTWARE IS PROVIDED BY NXP "AS IS" AND ANY EXPRESSED OR * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. * IN NO EVENT SHALL NXP OR ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF * THE POSSIBILITY OF SUCH DAMAGE. */ /* ################################################################### ******************************************************************************** * File: main.c * Owner: Petr Stancik * Version: 1.0 * Date: Oct-22-2024 * Classification: General Business Information * Brief: FlexCAN TX/RX ISR test * ******************************************************************************** ******************************************************************************** The purpose of this demo application is to show you the usage of the FlexCAN module configured to use CAN FD using the S32 RTD API. - This demo application requires two boards, or single board connected with CAN tool. - CAN FD is enabled with bitrate 500/2000 kbps - It configures FlexCAN0 module and its transceiver (TJA1153). - MB0 is used to transmit CANFD std. ID - MB1 is configured to receive any std. ID - Callback function is used as well to handle TX and RX process in MBs. Received ID is echoed back. - setupCanXCVR function is called to Init TJA1153 connected to FlexCAN0 on the board. It expects transceiver in Vanilla state and set TPL to pass all std and ext ID and do not block any message coming from bus. Finally leaving configuration mode without writing to non-volatile memory nor locking the transceiver. * * ------------------------------------------------------------------------------ * Test HW: S32K3X8EVB-Q289 rev B2 * MCU: P32K358HVS 0P14E * Compiler: S32DS.ARM.3.5 * SDK release: S32K3_RTD_4.0.0_D2311 * Debugger: Lauterbach * Target: internal_FLASH * ******************************************************************************** Revision History: 1.0 Oct-22-2024 Petr Stancik Initial Version based on RTD FlexCAN_Ip_example *******************************************************************************/ /* Including necessary configuration files. */ #include "Mcal.h" #include "Clock_Ip.h" #include "FlexCAN_Ip.h" #include "IntCtrl_Ip.h" #include "Siul2_Port_Ip_Cfg.h" #include "Siul2_Dio_Ip_Cfg.h" #include "Siul2_Dio_Ip.h" #include "Siul2_Port_Ip.h" #include "OsIf.h" #define MSG_ID 20u #define RX_MB_IDX 1U #define TX_MB_IDX 0U volatile int exit_code = 0; /* User includes */ Flexcan_Ip_DataInfoType tx_info = { .msg_id_type = FLEXCAN_MSG_ID_STD, .data_length = 1u, .fd_enable = FALSE, .fd_padding = FALSE, .enable_brs = FALSE, .is_polling = FALSE, .is_remote = FALSE }; Flexcan_Ip_DataInfoType rx_info = { .msg_id_type = FLEXCAN_MSG_ID_STD, .data_length = 1u, .fd_enable = FALSE, .fd_padding = FALSE, .enable_brs = FALSE, .is_polling = FALSE, .is_remote = FALSE }; Flexcan_Ip_MsgBuffType rxData; uint8 dummyData[8]; volatile uint32 g_canErrorStatus = 0; /* live ESR1 snapshot for debugger watch */ volatile Flexcan_Ip_StatusType g_tja1153Status[3]; /* [0]=auto-baud, [1]=FEC whitelist, [2]=exit config */ /*! \brief The main function for the project. \details The startup initialization sequence is the following: * - startup asm routine * - main() */ extern void CAN0_ORED_0_31_MB_IRQHandler(void); void setupCanXCVR_TJA1153(void); static void CAN_DelayMs(uint32 ms) { uint32 ticks = OsIf_MicrosToTicks(ms * 1000U, FLEXCAN_IP_SERVICE_TIMEOUT_TYPE); uint32 start = OsIf_GetCounter(FLEXCAN_IP_SERVICE_TIMEOUT_TYPE); uint32 elapsed = 0U; while (elapsed < ticks) { elapsed += OsIf_GetElapsed(&start, FLEXCAN_IP_SERVICE_TIMEOUT_TYPE); } } void flexcan0_Callback(uint8 instance, Flexcan_Ip_EventType eventType, uint32 buffIdx, const Flexcan_Ip_StateType *flexcanState) { (void)flexcanState; (void)instance; switch(eventType) { case FLEXCAN_EVENT_RX_COMPLETE: dummyData[0]++; if(buffIdx==1) // MB1 received { FlexCAN_Ip_Send(INST_FLEXCAN_0, TX_MB_IDX, &tx_info, rxData.msgId, (uint8 *)&dummyData); FlexCAN_Ip_Receive(INST_FLEXCAN_0, RX_MB_IDX, &rxData, false); } break; case FLEXCAN_EVENT_RXFIFO_COMPLETE: break; case FLEXCAN_EVENT_TX_COMPLETE: break; case FLEXCAN_EVENT_ENHANCED_RXFIFO_COMPLETE: break; case FLEXCAN_EVENT_ENHANCED_RXFIFO_WATERMARK: break; default: break; } } void setupCanXCVR_TJA1153(void) { /** * The TJA1153 transceiver does not come ready to use as most CAN transceivers * It enters configuration mode initially if it has not been configured before, * in this initial state, it is ready for receiving additional security * setups such as an TPL/BBL for example. * * In this example, it set TPL to pass all std and ext ID and do not block any message * coming from bus. Finally leaving configuration mode without writing to non-volatile * memory nor locking the transceiver. * * Refer to the NXP's TJA1153 data sheet for further detail. * */ #define TJA1153_START_ID (uint32_t)(0x555u) #define TJA1153_CONFIG_ID (uint32_t)(0x18DA00F1u) uint8 sendData[8]={0,0,0,0,0,0,0,0}; uint32_t errors; /* Allow configuration from local host via TXD pin for CAN0 transceiver, STB = 0 (PTC20) */ Siul2_Dio_Ip_WritePin(PTC_H_HALF, 4, 0U); CAN_DelayMs(1000); /* Auto bit rate detection initial CAN Classic frame with ID 0x555 for CAN0 */ tx_info.is_polling = TRUE; tx_info.msg_id_type = FLEXCAN_MSG_ID_STD; tx_info.data_length=8; g_tja1153Status[0] = FlexCAN_Ip_SendBlocking(INST_FLEXCAN_0, TX_MB_IDX, &tx_info, TJA1153_START_ID, sendData, 1000); /* Filter Element Configuration (FEC) frame for setting up the transmission whitelist. * NOTE: ID_TX is the NXP reference example's placeholder (0xC0FFEE), not MSG_ID - * this whitelists that single extended ID only. Confirm this baseline works first, * then adjust ID_TX/Extended_Filter_Config per the TJA1153 datasheet for your real ID(s). */ { uint32_t ID_Stinger = TJA1153_CONFIG_ID; uint32_t PAYLOAD_FEC[2]; uint8_t COMMAND_BYTE_FEC = 0x10; uint8_t Filter_Element_Index_0 = 0; uint8_t Filter_Element_Type = 1; uint8_t Extended_Filter_Config = 3; /* Both TWL and BBL */ uint32_t ID_TX = 0xC0FFEE; uint32_t Filter_Element_Contents = (Extended_Filter_Config << 29) | ID_TX; PAYLOAD_FEC[0] = (COMMAND_BYTE_FEC << 24) | (Filter_Element_Index_0 << 16) | (Filter_Element_Type << 15) | (Filter_Element_Contents >> 16); PAYLOAD_FEC[1] = (Filter_Element_Contents & 0xFFFF) << 16; sendData[0] = (uint8)((PAYLOAD_FEC[0] >> 24) & 0xFFU); sendData[1] = (uint8)((PAYLOAD_FEC[0] >> 16) & 0xFFU); sendData[2] = (uint8)((PAYLOAD_FEC[0] >> 8) & 0xFFU); sendData[3] = (uint8)(PAYLOAD_FEC[0] & 0xFFU); sendData[4] = (uint8)((PAYLOAD_FEC[1] >> 24) & 0xFFU); sendData[5] = (uint8)((PAYLOAD_FEC[1] >> 16) & 0xFFU); tx_info.msg_id_type = FLEXCAN_MSG_ID_EXT; tx_info.data_length = 6; g_tja1153Status[1] = FlexCAN_Ip_SendBlocking(INST_FLEXCAN_0, TX_MB_IDX, &tx_info, ID_Stinger, sendData, 1000); CAN_DelayMs(5); } /* Last command frame for exiting configuration mode without writing to non-volatile memory nor * locking the transceiver, i.e. Development mode */ sendData[0]= 0x71; // command byte sendData[1]= 0x2; sendData[2]= 0x3; sendData[3]= 0x4; sendData[4]= 0x5; sendData[5]= 0x6; sendData[6]= 0x7; sendData[7]= 0x8; tx_info.msg_id_type = FLEXCAN_MSG_ID_EXT; tx_info.data_length=8; g_tja1153Status[2] = FlexCAN_Ip_SendBlocking(INST_FLEXCAN_0, TX_MB_IDX, &tx_info, TJA1153_CONFIG_ID, sendData, 1000); /* After the last frame, the transceiver exits configuration mode and goes to standby mode, exit * to normal operation mode is done by setting the STB pin of CAN0 transceiver to HIGH (pin is negated) */ Siul2_Dio_Ip_WritePin(PTC_H_HALF, 4, 1U); CAN_DelayMs(1000); errors = FlexCAN_Ip_GetErrorStatus(INST_FLEXCAN_0); FlexCAN_Ip_ClearErrorStatus(INST_FLEXCAN_0,errors); } int main(void) { /* Write your code here */ Clock_Ip_Init(&Clock_Ip_aClockConfig[0]); Siul2_Port_Ip_Init(NUM_OF_CONFIGURED_PINS0, g_pin_mux_InitConfigArr0); IntCtrl_Ip_EnableIrq(FlexCAN0_1_IRQn); IntCtrl_Ip_InstallHandler(FlexCAN0_1_IRQn, CAN0_ORED_0_31_MB_IRQHandler, NULL_PTR); FlexCAN_Ip_Init(INST_FLEXCAN_0, &FlexCAN_State0, &FlexCAN_Config0); FlexCAN_Ip_SetRxMaskType_Privileged(INST_FLEXCAN_0,FLEXCAN_RX_MASK_INDIVIDUAL); FlexCAN_Ip_SetRxIndividualMask_Privileged(INST_FLEXCAN_0,RX_MB_IDX,0x0<<18); // clear mask register to allow receiving all std IDs FlexCAN_Ip_SetStartMode(INST_FLEXCAN_0); setupCanXCVR_TJA1153(); tx_info.is_polling = FALSE; tx_info.msg_id_type = FLEXCAN_MSG_ID_STD; tx_info.data_length=8; tx_info.fd_enable = false; tx_info.enable_brs = false; FlexCAN_Ip_ConfigRxMb(INST_FLEXCAN_0, RX_MB_IDX, &rx_info, MSG_ID); FlexCAN_Ip_Receive(INST_FLEXCAN_0, RX_MB_IDX, &rxData, false); FlexCAN_Ip_Send(INST_FLEXCAN_0, TX_MB_IDX, &tx_info, MSG_ID, (uint8 *)&dummyData); while(1) { g_canErrorStatus = FlexCAN_Ip_GetErrorStatus(INST_FLEXCAN_0); } return 0; } /* END main */ /*! ** @} */ Re: S32K358 EVK board CAN not working Hi@Yash2530 The attached file contains tests I conducted on RTD version 3.0.0 P07, which you can refer to. Re: S32K358 EVK board CAN not working Hi Senlent,  The Can transmission TX is working I am able to receive the data from NXP to Waveshare USB CAN device but RX does not seem to be working.  I am sending 0x001 as id and 01 01 01 01 01 01 01 01 as data.  Is there something that I am missing or the code you provided is only for TX. 
View full article
S32K3X4EVB-Q257 开发板上的 K26 固件缺失。 我的 S32K3X4EVB-Q257 开发板上的 OpenSDA 无法工作。我已经安装了 PEmicro 驱动程序,但是我的电脑设备管理器中仍然无法识别 OpenSDA。我确信这是因为缺少 K26 固件。请问您能提供给我那个固件吗? Re: The K26 firmware on the S32K3X4EVB-Q257 development board is missing. 如果更换包含 D+ 和 D- 信号的 USB 电缆后问题仍然存在,我建议联系 PEMicro 技术支持。https://www.pemicro.com/support/index.cfm Re: The K26 firmware on the S32K3X4EVB-Q257 development board is missing. 我的开发板采用 K26 芯片,但 PEFirmwareConfig.exe 无法识别板载调试器。K26的OpenSDA固件肯定缺失。 Re: The K26 firmware on the S32K3X4EVB-Q257 development board is missing. HI 首先,检查 U63 上的 K26 是否焊接牢固。由于 K26 芯片短缺,有一批开发板上没有焊接 K26 芯片,因此必须使用外部调试器。 第二步,下载 USB 多链路资源安装 来自多链路调试探针。不使用 USB 集线器,将 USB 连接到 S32K3X4EVB-Q257 的 J55; PEFirmwareConfig.exe能否识别板载调试器? 此致敬礼, Robin
View full article
The K26 firmware on the S32K3X4EVB-Q257 development board is missing. The OpenSDA on my S32K3X4EVB-Q257 development board is not working. I have already installed the PEmicro driver, but OpenSDA is still not recognized in my computer's Device Manager. I am sure it is because the K26 firmware is missing. Could you please provide me with that firmware? Re: The K26 firmware on the S32K3X4EVB-Q257 development board is missing. If the problem persists after replacing the USB cable with one that includes D+ and D- signals, I recommend contacting PEMicro technical support. https://www.pemicro.com/support/index.cfm Re: The K26 firmware on the S32K3X4EVB-Q257 development board is missing. My development board has a K26 chip, and PEFirmwareConfig.exe cannot recognize the onboard debugger. The K26's OpenSDA firmware is definitely missing. Re: The K26 firmware on the S32K3X4EVB-Q257 development board is missing. Hi First, check if the K26 on the U63 is soldered. There was a batch of development boards that did not have the K26 soldered on them because of a shortage of K26, so an external debugger had to be used. Second, download the  USB Multilink Resources Install  from the Multilink Debug Probes. Without using a USB hub, connect the USB to the J55 of S32K3X4EVB-Q257; can the onboard debugger be recognized in PEFirmwareConfig.exe? Best Regards, Robin
View full article
S32K344 FreeRTOS 示例链接失败 你好; 我刚开始使用 S32K344 EVK(S32K344MINI-EVB),目前使用的是 IDE 3.6.5 和 FreeRTOS 7.0.0。(D2511)包含在软件包管理器创建的 FRDM 汽车软件包中。 我正在尝试通过“S32DS 项目示例”构建一个为 344 提供的示例应用程序,即 FreeRTOS_Toggle_Led_Example_S32K344。 我使用 ConfigTools 更新了代码,但到目前为止,这是我对代码所做的唯一修改。 但这段代码直接运行在链接阶段就失败了: c:/nxp/s32ds.3.6.5/s32ds/build_tools/gcc_v10.2/gcc-10.2-arm32-eabi/bin/../lib/gcc/arm-none-eabi/10.2.0/../../../../arm-none-eabi/bin/real-ld.exe:./FreeRTOS/Source/portable/GCC/ARM_CM7/r0p1/port.o:在函数“vPortStoreTaskMPUSettings”中: C:\Workspaces-35\FreeRTOS_Toggle_Led_Example_S32K344\Debug_FLASH/../FreeRTOS/Source/portable/GCC/ARM_CM7/r0p1/port.c:1890: 未定义的引用“__FreeRTOS_code_data_start__” c:/nxp/s32ds.3.6.5/s32ds/build_tools/gcc_v10.2/gcc-10.2-arm32-eabi/bin/../lib/gcc/arm-none-eabi/10.2.0/../../../../arm-none-eabi/bin/real-ld.exe:C:\Workspaces-35\FreeRTOS_Toggle_Led_Example_S32K344\Debug_FLASH/../FreeRTOS/Source/portable/GCC/ARM_CM7/r0p1/port.c:1890: 未定义的引用“__FreeRTOS_code_data_end__” c:/nxp/s32ds.3.6.5/s32ds/build_tools/gcc_v10.2/gcc-10.2-arm32-eabi/bin/../lib/gcc/arm-none-eabi/10.2.0/../../../../arm-none-eabi/bin/real-ld.exe:./FreeRTOS/Source/portable/GCC/ARM_CM7/r0p1/port.o:在函数“prvSetupMPU”中: C:\Workspaces-35\FreeRTOS_Toggle_Led_Example_S32K344\Debug_FLASH/../FreeRTOS/Source/portable/GCC/ARM_CM7/r0p1/port.c:1723: 未定义的引用“__FreeRTOS_code_data_end__” c:/nxp/s32ds.3.6.5/s32ds/build_tools/gcc_v10.2/gcc-10.2-arm32-eabi/bin/../lib/gcc/arm-none-eabi/10.2.0/../../../../arm-none-eabi/bin/real-ld.exe:C:\Workspaces-35\FreeRTOS_Toggle_Led_Example_S32K344\Debug_FLASH/../FreeRTOS/Source/portable/GCC/ARM_CM7/r0p1/port.c:1723: 未定义的引用“__FreeRTOS_code_data_start__” 我推测这些是链接器部分,但它们似乎在示例代码、软件包内的 FreeRTOS 文件夹或其他地方都没有定义。 “S32DS 项目示例”是否已过时?或者这个问题有我没注意到的简单解决方法吗? 提前致谢, 乔·希德尔 Re: S32K344 FreeRTOS example fails to link 你好,乔·希德尔, 给您带来的不便,我们深表歉意! 我重现了示例由于 Ld 错误而无法正确构建的问题,他们的解决方案是正确的: 根本原因:S32CT 中默认启用了 MPU。这会导致代码生成器生成支持 MPU 的代码(包括对 FreeRTOS MPU 链接器符号的引用)。但是Toggle_Led_Example_S32K344的链接器脚本 (linker_flash_s32k344.ld) 并未定义这些 MPU 内存区域或其边界符号——这些仅存在于 MPU 特定示例中(例如 FreeRTOS_MPU_Example_S32K389/linker_flash_s32k389.ld)。生成的代码需要 MPU 符号,而链接器脚本则不需要 MPU 符号,这导致了未定义引用错误。 禁用“use mpu”选项后,示例程序可以正确编译: 副作用说明:默认情况下禁用 MPU 意味着需要 MPU 的用户必须在 S32CT 中显式启用它并配置内存区域。 此致敬礼, Robin
View full article
LPC1778 checksum in vector table invalid need recover 你好,我在调试LPC1778的FLM时,调用FLM向0x0-0x400写入数据之后发现数据不正确。现在我的调试器无法连接芯片,我查阅了资料,认为是vector table写入的数据出错了,和我想要写入的数据不一致,导致checksum不合法。资料显示checksum不合法会导致芯片进入ISP模式等待下载程序。 1.我想知道这个状态要怎么恢复? 2.为什么FLM写0x0-0x400会引发问题,我尝试了写0x400-0x7FFFF都是正常的。翻看FLM源码,其中有个SET_VALID_CODE的参数会自动修改校验和,是不是这部分有什么问题? Re: LPC1778 checksum in vector table invalid need recover Hi @BianHaopeng1  0x0000–0x0400 不只是普通 flash 数据区,它包含启动向量表、0x1C 的 valid-code checksum,以及 0x2FC 的 CRP 配置字 。checksum 错会让 ROM bootloader 判定 user code invalid 并进入 ISP;如果 0x2FC 被误写成 CRP pattern,还会导致 JTAG/SWD 访问受限甚至不可恢复到普通调试状态。 您可以优先按 ISP 恢复 处理: 拉低 P2[10],然后复位芯片 ,bootloader 接管并进入 ISP mode。 通过 UART0:P0[2] / P0[3] 连接 FlashMagic 或等价 ISP 工具,执行全片擦除或重新下载一个有效镜像。 如果只是 checksum 不合法 ,进入 ISP 后应能擦除并恢复;如果误写了 CRP1/CRP2 ,JTAG 会被禁用,但 ISP 仍有受限恢复路径;如果误写成 CRP3 ,文档说明它会完全禁止 JTAG 和 ISP,这种情况下基本不能再通过常规 ISP/JTAG 恢复。 BR Harry
View full article
S32K358 EVK 板 CAN 总线无法工作 你好, 我尝试运行代码来使用 S32K3x8EV8 板的 CAN0 或 CAN1,但我无法做到。但是 CAN 完全不起作用,我正在尝试通过 Waveshare USB-CAN-A 读取 CAN 消息。 代码也粘贴好了,附上CAN配置截图 /* * 版权所有 2019 NXP * * ALL RIGHTS RESERVED. * * 本软件由 NXP“按原样”提供,且不提供任何明示或暗示的保证。 * 默示担保,包括但不限于默示担保 * 不保证其适销性和适用于特定用途。 * 在任何情况下,NXP 或其贡献者均不对任何直接、 * 间接的、附带的、特殊的、惩罚性的或后果性的损害赔偿 *(包括但不限于采购替代商品或 * 服务;使用损失、数据丢失或利润损失;或业务中断) 无论何种原因造成,也无论基于何种责任理论,无论是合同责任, * 严格责任或侵权行为(包括过失或其他) 即使已被告知,也不得以任何方式退出本软件的使用。 * 发生此类损害的可能性。 */ /* ################################################################### ******************************************************************************** 文件:main.c * 所有者:彼得·斯坦西克 * 版本:1.0 * 日期: 2024年10月22日 * 分类:一般商业信息 * 简介:FlexCAN TX/RX ISR 测试 * ******************************************************************************** ******************************************************************************** 此演示应用程序的目的是向您展示 FlexCAN 模块的用法。 配置为使用 S32 RTD API 的 CAN FD。 - 此演示应用程序需要两块板,或者使用 CAN 工具连接一块板。 - CAN FD 已启用,比特率为500/2000 kbps - 它配置 FlexCAN0 模块及其收发器 (TJA1153)。 - MB0 用于传输 CANFD STD. ID - MB1 配置为接收任何 STD ID - 回调函数也用于处理 MB 中的 TX 和 RX 过程。收到的 ID 为 回声响起。 - 调用 setupCanXCVR 函数初始化连接到板上 FlexCAN0 的 TJA1153。 它期望收发器处于 Vanilla 状态,并将 TPL 设置为传递所有STD和扩展ID。 不要屏蔽来自总线的任何消息。最后退出配置模式 无需写入非易失性存储器,也无需锁定收发器。 * * ------------------------------------------------------------------------------ * 测试硬件:S32K3X8EVB-Q289 rev B2 * MCU:P32K358HVS 0P14E * 编译器:S32DS.ARM.3.5 * SDK 版本:S32K3_RTD_4.0.0_D2311 * 调试器: Lauterbach * 目标:内部闪存 * ******************************************************************************** 修订记录: 1.0 2024年10月22日Petr Stancik初始版本,基于 RTD FlexCAN_Ip_example *******************************************************************************/ /* 包括必要的配置文件。*/ #include "Mcal.h" #include "Clock_Ip.h" #include "FlexCAN_Ip.h" #include "IntCtrl_Ip.h" #include "Siul2_Port_Ip_Cfg.h" #include "Siul2_Dio_Ip_Cfg.h" #include "Siul2_Dio_Ip.h" #include "Siul2_Port_Ip.h" #include "OsIf.h" #define MSG_ID 20u #define RX_MB_IDX 1U #define TX_MB_IDX 0U volatile int exit_code = 0 ; /* 用户包含 */ Flexcan_Ip_DataInfoType tx_info = { .msg_id_type = FLEXCAN_MSG_ID_STD ,​ . data_length = 1u ,​ .fd_enable = FALSE ,​ .fd_padding = FALSE ,​ .enable_brs = FALSE ,​ is_polling = FALSE ,​ is_remote = FALSE​ } ; Flexcan_Ip_DataInfoType rx_info = { .msg_id_type = FLEXCAN_MSG_ID_STD ,​ . data_length = 1u ,​ .fd_enable = FALSE ,​ .fd_padding = FALSE ,​ .enable_brs = FALSE ,​ is_polling = FALSE ,​ is_remote = FALSE​ } ; Flexcan_Ip_MsgBuffType rxData ; uint8 dummyData [ 8 ] ; volatile uint32 g_canErrorStatus = 0 ; /* 用于调试器监视的实时 ESR1 快照 */ volatile Flexcan_Ip_StatusType g_tja1153Status [ 3 ] ; /* [0]=自动波特率,[1]=FEC白名单,[2]=退出配置*/ /*! \brief 项目的主要功能。 详细信息:启动初始化顺序如下: * - 启动汇编例程 * - 主要的() */ extern void CAN0_ORED_0_31_MB_IRQHandler ( void ) ; void setupCanXCVR_TJA1153 ( void ) ; static void CAN_DelayMs ( uint32 ms ) { uint32 ticks = OsIf_MicrosToTicks ( ms * 1000 U , FLEXCAN_IP_SERVICE_TIMEOUT_TYPE ) ; uint32 start = OsIf_GetCounter ( FLEXCAN_IP_SERVICE_TIMEOUT_TYPE ) ; uint32 elapsed = 0 U ; 当(经过时间<刻度) { elapsed += OsIf_GetElapsed ( & start , FLEXCAN_IP_SERVICE_TIMEOUT_TYPE ) ; } } void flexcan0_Callback ( uint8 instance , Flexcan_Ip_EventType eventType , uint32 buffIdx , const Flexcan_Ip_StateType * flexcanState ) { ( void ) flexcanState ; ( void )实例; 切换(事件类型) { case FLEXCAN_EVENT_RX_COMPLETE : dummyData [ 0 ] ++; 如果( buffIdx == 1 ) // 已接收 MB1 { FlexCAN_Ip_Send ( INST_FLEXCAN_0 , TX_MB_IDX , & tx_info , rxData . msgId ,( uint8 * ) & dummyData ) ; FlexCAN_Ip_Receive ( INST_FLEXCAN_0 , RX_MB_IDX , & rxData , false ) ; } 休息; case FLEXCAN_EVENT_RXFIFO_COMPLETE : 休息; case FLEXCAN_EVENT_TX_COMPLETE : 休息; case FLEXCAN_EVENT_ENHANCED_RXFIFO_COMPLETE : 休息; case FLEXCAN_EVENT_ENHANCED_RXFIFO_WATERMARK : 休息; 默认: 休息; } } void setupCanXCVR_TJA1153 ( void ) { /** * 与大多数 CAN 收发器不同,TJA1153 收发器并非即插即用。 如果之前没有配置过,则初始时进入配置模式。 * 在此初始状态下,它已准备好接收额外的网络安全 例如 TPL/BBL 之类的装置。 * * 在此示例中,它将 TPL 设置为传递所有标准和扩展ID,并且不阻止任何消息。 * 下总线。最后退出配置模式,未写入非易失性数据。 * 既不锁定收发器,也不存储内存。 * * 有关更多详细信息,请参阅 NXP 的 TJA1153 数据手册。 * */ #define TJA1153_START_ID (uint32_t)(0x555u) #define TJA1153_CONFIG_ID (uint32_t)(0x18DA00F1u) uint8 sendData [ 8 ] = { 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 } ; uint32_t错误; /* 允许通过 TXD 引脚从本地主机配置 CAN0 收发器,STB = 0 (PTC20) */ Siul2_Dio_Ip_WritePin ( PTC_H_HALF , 4 , 0 U ) ; CAN_DelayMs ( 1000 ) ; /* 自动比特率检测初始 CAN Classic 帧,ID 为 0x555,适用于 CAN0 */ tx_info.is_polling = TRUE ;​​ tx_info.msg_id_type = FLEXCAN_MSG_ID_STD ;​​ tx_info.data_length = 8 ;​​ g_tja1153Status [ 0 ] = FlexCAN_Ip_SendBlocking ( INST_FLEXCAN_0 , TX_MB_IDX , & tx_info , TJA1153_START_ID , sendData , 1000 ) ; /* 用于设置传输白名单的滤波器元件配置 (FEC) 帧。 * 注意:ID_TX 是 NXP 参考示例的占位符 (0xC0FFEE),而不是 MSG_ID - * 此操作仅将该单个扩展 ID列入白名单。请先确认此基本方法有效。 然后根据 TJA1153数据手册,根据您的实际 ID 调整 ID_TX/Extended_Filter_Config。 { uint32_t ID_Stinger = TJA1153_CONFIG_ID ; uint32_t PAYLOAD_FEC [ 2 ] ; uint8_t COMMAND_BYTE_FEC = 0x10 ; uint8_t Filter_Element_Index_0 = 0 ; uint8_t Filter_Element_Type = 1 ; uint8_t Extended_Filter_Config = 3 ; /* TWL 和 BBL 都适用 */ uint32_t ID_TX = 0xC0FFEE ; uint32_t Filter_Element_Contents = ( Extended_Filter_Config << 29 ) | ID_TX ; PAYLOAD_FEC [ 0 ] = ( COMMAND_BYTE_FEC << 24 ) | ( Filter_Element_Index_0 << 16 ) | (筛选元素类型<< 15 ) | (筛选元素内容>> 16 ) PAYLOAD_FEC [ 1 ] = ( Filter_Element_Contents & 0xFFFF ) << 16 ; sendData [ 0 ] = ( uint8 )( ( PAYLOAD_FEC [ 0 ] >> 24 ) & 0xFFU ) ; sendData [ 1 ] = ( uint8 )( ( PAYLOAD_FEC [ 0 ] >> 16 ) & 0xFFU ) ; sendData [ 2 ] = ( uint8 )(( PAYLOAD_FEC [ 0 ] >> 8 ) & 0xFF U ) ; sendData [ 3 ] = ( uint8 ) ( PAYLOAD_FEC [ 0 ] & 0xFFU ) ; sendData [ 4 ] = ( uint8 )( ( PAYLOAD_FEC [ 1 ] >> 24 ) & 0xFFU ) ; sendData [ 5 ] = ( uint8 )(( PAYLOAD_FEC [ 1 ] >> 16 ) & 0xFF U ) ; tx_info.msg_id_type = FLEXCAN_MSG_ID_EXT ;​​ tx_info.data_length = 6 ;​​ g_tja1153Status [ 1 ] = FlexCAN_Ip_SendBlocking ( INST_FLEXCAN_0 , TX_MB_IDX , & tx_info , ID_Stinger , sendData , 1000 ) ; CAN_DelayMs ( 5 ) ; } /* 退出配置模式的最后一个命令帧,无需写入非易失性存储器或非 * 锁定收发器,即开发模式*/ sendData [ 0 ] = 0x71 ; // 命令字节 sendData [ 1 ] = 0x2 ; sendData [ 2 ] = 0x3 ; sendData [ 3 ] = 0x4 ; sendData [ 4 ] = 0x5 ; sendData [ 5 ] = 0x6 ; sendData [ 6 ] = 0x7 ; sendData [ 7 ] = 0x8 ; tx_info.msg_id_type = FLEXCAN_MSG_ID_EXT ;​​ tx_info.data_length = 8 ;​​ g_tja1153Status [ 2 ] = FlexCAN_Ip_SendBlocking ( INST_FLEXCAN_0 , TX_MB_IDX , & tx_info , TJA1153_CONFIG_ID , sendData , 1000 ) ; /* 最后一帧结束后,收发器退出配置模式并进入待机模式,退出 * 将 CAN0 收发器的 STB 引脚设置为高电平(引脚反接)即可切换到正常工作模式 */ Siul2_Dio_Ip_WritePin ( PTC_H_HALF , 4 , 1 U ) ; CAN_DelayMs ( 1000 ) ; errors = FlexCAN_Ip_GetErrorStatus ( INST_FLEXCAN_0 ) ; FlexCAN_Ip_ClearErrorStatus ( INST_FLEXCAN_0 , errors ) ; } int main ( void ) { /* 在这里编写你的代码 */ Clock_Ip_Init ( & Clock_Ip_aClockConfig [ 0 ]) ; Siul2_Port_Ip_Init ( NUM_OF_CONFIGURED_PINS0 , g_pin_mux_InitConfigArr0 ) ; IntCtrl_Ip_EnableIrq ( FlexCAN0_1_IRQn ) ; IntCtrl_Ip_InstallHandler ( FlexCAN0_1_IRQn , CAN0_ORED_0_31_MB_IRQHandler , NULL_PTR ) ; FlexCAN_Ip_Init ( INST_FLEXCAN_0 , & FlexCAN_State0 , & FlexCAN_Config0 ) ; FlexCAN_Ip_SetRxMaskType_Privileged ( INST_FLEXCAN_0 , FLEXCAN_RX_MASK_INDIVIDUAL ) ; FlexCAN_Ip_SetRxIndividualMask_Privileged(INST_FLEXCAN_0,RX_MB_IDX,0x0<<18); // 清除掩码寄存器以允许接收所有STDID FlexCAN_Ip_SetStartMode ( INST_FLEXCAN_0 ) ; setupCanXCVR_TJA1153 () ; tx_info.is_polling = FALSE ;​​ tx_info.msg_id_type = FLEXCAN_MSG_ID_STD ;​​ tx_info.data_length = 8 ;​​ tx_info.fd_enable = false ;​​ tx_info.enable_brs = false ;​​ FlexCAN_Ip_ConfigRxMb ( INST_FLEXCAN_0 , RX_MB_IDX , & rx_info , MSG_ID ) ; FlexCAN_Ip_Receive ( INST_FLEXCAN_0 , RX_MB_IDX , & rxData , false ) ; FlexCAN_Ip_Send ( INST_FLEXCAN_0 , TX_MB_IDX , & tx_info , MSG_ID , ( uint8 * ) & dummyData ) ; 当( 1 ) { g_canErrorStatus = FlexCAN_Ip_GetErrorStatus ( INST_FLEXCAN_0 ) ; } 返回0 ; } /* 主程序结束 */ /*! ** @} */ Re: S32K358 EVK board CAN not working 你好@ Yash2530 附件包含我对 RTD 版本 3.0.0 进行的测试。您可以参考 P07。 Re: S32K358 EVK board CAN not working 嗨Senlent , Can 传输 TX 工作正常,我能够从 NXP 接收数据到 Waveshare USB CAN 设备,但 RX 似乎无法工作。 我发送的 id 为 0x001,数据为 01 01 01 01 01 01 01 01。 我是不是漏掉了什么?或者您提供的代码只适用于TX?
View full article
TJA1050,CAN总线丢失 你好, 我们有一款使用TJA1050的产品,其原理图如下。 我们发现测试过程中存在高频 CAN 丢包。操作过程中丢失了一两帧。 公交车载客率约为 16%。 我已在下方附上硬件原理图和CAN总线丢包数据。 问题 1. CAN 总线丢失的可能根本原因是什么? 2. 硬件原理图是否存在任何问题? 3. 下一步我可以采取什么行动 如有必要,我可以进行更多测试或提供更多信息。感谢您的支持。 Re: TJA1050, CAN loss 1:如果您的板不在总线末端,建议先断开 DR6/DR7 连接,或将其更换为可选的跳线。 2:为了测试目的,请移除DR8/DR9/DD1/DD2 3:隔离器SI8421的数据速率和传播延迟是否满足CAN位时序裕量。
View full article
S32K344 FreeRTOS example fails to link Hello; I'm just starting out with the S32K344 EVK (S32K344MINI-EVB) and am using the IDE 3.6.5 with FreeRTOS 7.0.0 (D2511) that came in the FRDM automotive bundle created by the package manager. I'm trying to build one of the provided sample applications for the 344, via the "S32DS Project from Example", the FreeRTOS_Toggle_Led_Example_S32K344.. I've use the ConfigTools to Update Code, but so far that's the only modification to the code that I've made. But out of the box the code fails at the link stage: c:/nxp/s32ds.3.6.5/s32ds/build_tools/gcc_v10.2/gcc-10.2-arm32-eabi/bin/../lib/gcc/arm-none-eabi/10.2.0/../../../../arm-none-eabi/bin/real-ld.exe: ./FreeRTOS/Source/portable/GCC/ARM_CM7/r0p1/port.o: in function `vPortStoreTaskMPUSettings': C:\Workspaces-35\FreeRTOS_Toggle_Led_Example_S32K344\Debug_FLASH/../FreeRTOS/Source/portable/GCC/ARM_CM7/r0p1/port.c:1890: undefined reference to `__FreeRTOS_code_data_start__' c:/nxp/s32ds.3.6.5/s32ds/build_tools/gcc_v10.2/gcc-10.2-arm32-eabi/bin/../lib/gcc/arm-none-eabi/10.2.0/../../../../arm-none-eabi/bin/real-ld.exe: C:\Workspaces-35\FreeRTOS_Toggle_Led_Example_S32K344\Debug_FLASH/../FreeRTOS/Source/portable/GCC/ARM_CM7/r0p1/port.c:1890: undefined reference to `__FreeRTOS_code_data_end__' c:/nxp/s32ds.3.6.5/s32ds/build_tools/gcc_v10.2/gcc-10.2-arm32-eabi/bin/../lib/gcc/arm-none-eabi/10.2.0/../../../../arm-none-eabi/bin/real-ld.exe: ./FreeRTOS/Source/portable/GCC/ARM_CM7/r0p1/port.o: in function `prvSetupMPU': C:\Workspaces-35\FreeRTOS_Toggle_Led_Example_S32K344\Debug_FLASH/../FreeRTOS/Source/portable/GCC/ARM_CM7/r0p1/port.c:1723: undefined reference to `__FreeRTOS_code_data_end__' c:/nxp/s32ds.3.6.5/s32ds/build_tools/gcc_v10.2/gcc-10.2-arm32-eabi/bin/../lib/gcc/arm-none-eabi/10.2.0/../../../../arm-none-eabi/bin/real-ld.exe: C:\Workspaces-35\FreeRTOS_Toggle_Led_Example_S32K344\Debug_FLASH/../FreeRTOS/Source/portable/GCC/ARM_CM7/r0p1/port.c:1723: undefined reference to `__FreeRTOS_code_data_start__' I assume these are linker sections, but they do not appear to be defined anywhere inside either the sample code, the FreeRTOS folder inside the package, or elsewhere. Are the "S32DS Project from Example" sample projects outdated? Or is there a simple fix to this issue that I'm missing? Thanks in advance, Joe Shidle Re: S32K344 FreeRTOS example fails to link Hi Joe Shidle, Sorry for the inconvenience we bring you! I was able to reproduce the issue where example does not build correctly because of Ld errors, and their solution is correct: Root cause: MPU is enabled by default in the S32CT. This causes code generator to emit MPU-aware code (including references to the FreeRTOS MPU linker symbols). However, the linker script for the Toggle_Led_Example_S32K344 (linker_flash_s32k344.ld) does not define these MPU memory regions or their boundary symbols — those are only present in MPU-specific examples (e.g., FreeRTOS_MPU_Example_S32K389/linker_flash_s32k389.ld). The mismatch between the generated code expecting MPU symbols and the non-MPU linker script causes the undefined reference errors. Disabling 'use mpu' makes the example compile correctly: Side effect note: Disabling MPU by default means users who need MPU must explicitly enable it in S32CT and configure the memory regions. Best Regards, Robin
View full article
S32K3X4EVB-Q257開発ボードのK26ファームウェアは存在しません。 私のS32K3X4EVB-Q257開発ボードのOpenSDAが動作しません。すでにPEmicroドライバーをインストールしましたが、私のパソコンのデバイスマネージャーではOpenSDAが認識されません。K26のファームウェアが欠落していることが原因だと確信しています。そのファームウェアを教えてもらえますか? Re: The K26 firmware on the S32K3X4EVB-Q257 development board is missing. D+やD-信号付きのUSBケーブルに交換しても問題が続く場合は、PEMicroの技術サポートに連絡することをお勧めします。https://www.pemicro.com/support/index.cfm Re: The K26 firmware on the S32K3X4EVB-Q257 development board is missing. 私の開発ボードにはK26チップが搭載されており、オンボードのデバッガを認識できませんPEFirmwareConfig.exe。K26のOpenSDAファームウェアが明らかに欠落している。 Re: The K26 firmware on the S32K3X4EVB-Q257 development board is missing. ハイ まず、U63のK26がはんだ付けされているかどうかを確認してください。K26がはんだ付けされていない開発ボードの一括があり、K26が不足していたため、外部デバッガを使わざるを得ませんでした。 次に、 USBマルチリンクリソースのインストール マルチリンクデバッグプローブから。USBハブを使わずに、USBをS32K3X4EVB-Q257のJ55に接続します。オンボードデバッガは PEFirmwareConfig.exeで認識できますか? よろしくお願いいたします ロビン
View full article
S32K344 FreeRTOS サンプルはリンクに失敗します こんにちは; 私はS32K344 EVK(S32K344MINI-EVB)を始めたばかりで、IDE 3.6.5とFreeRTOS 7.0.0を使っています(D2511)は、パッケージマネージャーによって作成されたFRDM自動車バンドルに含まれていました。 私は「S32DS Project from Example」という344用のサンプルアプリケーションの一つを作ろうとしています。FreeRTOS_Toggle_Led_Example_S32K344... ConfigToolsを使ってコードを更新したことはありますが、今のところそれだけがコードの修正です。 しかし、そのままの状態では、コードはリンク段階で失敗します。 c:/nxp/s32ds.3.6.5/s32ds/build_tools/gcc_v10.2/GCC-10.2-arm32-eabi/bin/../lib/gcc/arm-none-eabi/10.2.0/../../../../arm-none-eabi/bin/real-ld.exe:./FreeRTOS/Source/ポータブル/GCC/ARM_CM7/r0p1/port.o: in function 'vPortStoreTaskMPUSettings': C:\Workspaces-35\FreeRTOS_Toggle_Led_Example_S32K344\Debug_FLASH/../FreeRTOS/Source/portable/GCC/ARM_CM7/r0p1/port.c:1890:未定義の「__FreeRTOS_code_data_start__」参照 c:/nxp/s32ds.3.6.5/s32ds/build_tools/gcc_v10.2/GCC-10.2-arm32-eabi/bin/../lib/gcc/arm-none-eabi/10.2.0/../../../../arm-none-eabi/bin/real-ld.exe:C:\Workspaces-35\FreeRTOS_Toggle_Led_Example_S32K344\Debug_FLASH/../FreeRTOS/Source/portable/GCC/ARM_CM7/r0p1/port.c:1890: 「__FreeRTOS_code_data_end__」に関する未定義の参照 c:/nxp/s32ds.3.6.5/s32ds/build_tools/gcc_v10.2/GCC-10.2-arm32-eabi/bin/../lib/gcc/arm-none-eabi/10.2.0/../../../../arm-none-eabi/bin/real-ld.exe:./FreeRTOS/Source/portable/GCC/ARM_CM7/r0p1/port.o: 関数 'prvSetupMPU': C:\Workspaces-35\FreeRTOS_Toggle_Led_Example_S32K344\Debug_FLASH/../FreeRTOS/Source/portable/GCC/ARM_CM7/r0p1/port.c:1723: 「__FreeRTOS_code_data_end__」に関する未定義の参照 c:/nxp/s32ds.3.6.5/s32ds/build_tools/gcc_v10.2/GCC-10.2-arm32-eabi/bin/../lib/gcc/arm-none-eabi/10.2.0/../../../../arm-none-eabi/bin/real-ld.exe:C:\Workspaces-35\FreeRTOS_Toggle_Led_Example_S32K344\Debug_FLASH/../FreeRTOS/Source/ポータブル/GCC/ARM_CM7/r0p1/port.c:1723:未定義の「__FreeRTOS_code_data_start__」参照 これらはリンカーセクションだと思いますが、サンプルコード内やパッケージ内のFreeRTOSフォルダ、その他の場所のどこにも定義されていないようです。 「S32DSプロジェクト例」のサンプルプロジェクトは古くなっていますか?それとも、私が気づいていない簡単な解決策があるのでしょうか? 前もって感謝します、 ジョー・シドル Re: S32K344 FreeRTOS example fails to link こんにちは、ジョー・シドルさん。 ご迷惑をおかけして申し訳ございません! Ldエラーが原因でサンプルが正しくビルドされないという問題を再現できました。そして、彼らの解決策は正しいものでした。 根本原因:S32CTではMPUがデフォルトで有効になっています。これにより、コードジェネレータはMPU対応コード(FreeRTOS MPUリンカーシンボルへの参照を含む)を出力するようになります。しかし、 Toggle_Led_Example_S32K344のリンカー スクリプト (linker_flash_s32k344.ld) では、これらの MPU メモリ領域やその境界シンボルは定義されていません。これらは MPU 固有のサンプル (例: FreeRTOS_MPU_Example_S32K389/linker_flash_s32k389.ld) にのみ存在します。MPUシンボルを想定して生成されたコードと、MPU非対応のリンカスクリプトとの間の不一致が、未定義参照エラーの原因となります。 「use mpu」を無効にすると、サンプルが正しくコンパイルされます。 副次的な注意:MPUをデフォルトで無効にすると、MPUが必要なユーザーはS32CTで明示的にMPUを有効にし、メモリ領域を設定する必要があります。 よろしくお願いいたします ロビン
View full article
受信感度は連続測定間で10dBの差がある。 QN9083 BLE SoCを使用している当社の製品の一つで予期せぬ挙動を観察しています。機器のレシーバ感度を測定すると、連続した測定間で最大10dBの差が見られます。CMW100を広告モードで測定しており、機器はシールドされたRFボックスに設置されています。箱を開けたり、デバイスの設置場所を変更したりせずに、連続してRxS測定を行ったところ、デバイスは最大10dBの差(-91dBmと-81dBm)を示しました。これは予想外で、これまで一度も発生したことのない現象です。その挙動はランダムである。ハードウェアとソフトウェアの両方の可能な原因を探しています。
View full article