Multi Source Translation Content

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

Multi Source Translation Content

Discussions

Sort by:
创建的控件位置在对齐局中后,出现显示不正常。模拟出来的位置也不正常的情况 Screen下面做了一个tabview tab1里面放了一个chart现在是我如果手动对齐的话模拟出来画面偏右。如果用程序里面的局中对齐和下对齐就出现上传图片那样。全部是错误的。 回复: 创建的控件位置在对齐局中后,出现显示不正常。模拟出来的位置也不正常的情况 嗨@qujun 我这边测试过了。 我没有重现您提到的问题。你使用的是哪个版本?如何重现此问题? BR 哈里
View full article
S32K5 Hi there i have requested a secure access for the S32K5 datasheet for a project since two days now but i have no response can anyone help me? Re: S32K5 Hi Could you please confirm whether you have signed a Non-Disclosure Agreement (NDA) with NXP? If not, please refer to https://www.nxp.com.cn/docs/en/user-guide/nxp-secure-access-rights-registration.pdf. If you already have a valid NDA in place, please send the pdf file to [email protected].   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. -------------------------------------------------------------------------------
View full article
SJA1110 Rev. D 上的“捕获到主机”功能无法正常工作 我一直在研究 SJA1110-EVM 板,并编写了软件来读取主机处理器 (Cortex-M7) 上的某些帧。为此,我使用了板提供的“hello world”示例,并以此为基础构建了应用程序。 我当时使用的是带有 Autosar-RTD 的 S32DS。 现在我换用了另一块同样使用 SJA1110 的板。然而,它使用的是所述开关的不同版本(Rev.D)。我确保调整了配置。 但是,我无法在主机处理器上接收到任何应该被捕获到主机的帧。我正在通过 L2 输入并设置陷阱标志来捕获帧。我确保 L2 入口确实用于我要捕获的帧。此外,我还确保启用了滥交模式。我也可以从主机发送帧。根据统计信息,应该接收的帧没有被丢弃,但在进入交换机后仍然消失了(所以 L2 规则有效,但它们从未到达主机端口??)。 我不太确定如何进一步缩小问题范围,以及如何确认或排除任何硬件问题。 Re: Trap to host not working on SJA1110 Rev. D 你好@flxwly , 请问您是在 SJA1110-MGS-EVM 上使用 SJA1110D,还是在您自己的定制板上使用 SJA1110D? 最初的 SJA1110-EVM 基于 SJA1110A,而较新的 SJA1110-MGS-EVM 则使用 SJA1110D。同时,SJA1110 系列被描述为引脚兼容和软件兼容,因此我不认为陷阱到主机的概念本身在不同版本之间会有所不同。这使得特定电路板的配置不匹配比通用的 Rev. D 限制更有可能发生。 请确保 EthTrcv_43_PHY 配置已相应调整,并且 PHY 实例已在 EthSwt_43_SJA11XX 中正确映射。请同时确认 EthSwt_43_SJA11XX 中的 MACConfigurationTable 是否已更新,以匹配您实际的板拓扑结构。未使用的端口应禁用。 如果可以,请也分享您的 .mex 文件。文件以便我们查看配置。 顺祝商祺! 帕维尔 Re: Trap to host not working on SJA1110 Rev. D 你好@PavelL , 感谢您的快速回复。我好像已经修好了。看来我没有正确配置默认 VLAN 0。但我仍然好奇为什么我可以使用 L2 条目将帧路由到其他端口,但不能路由到主机。 我自己的定制板使用的是 SJA1110D。我已附上.mex文件。我正在使用 S32SDK_SJA1110_RTM_1.0.0。 此致, 尼波穆克 Re: Trap to host not working on SJA1110 Rev. D 你好@flxwly , 是的,这种行为符合 VLAN 成员过滤机制。 L2 条目可能仍然匹配并选择转发目标,但帧只会传递到相应 VLAN 的成员端口。如果默认 VLAN 0 配置不正确,则转发到其他端口可能仍然有效,但主机端口无法接收帧,因为它未包含在 VMEMB_PORT 中。 我已审核您的 .mex 域名。除了 VLAN 0 的更正之外,您还可以考虑禁用 MACConfigurationTable 和 L2 Forwarding Table 中所有未使用的端口,以便配置尽可能与您的实际板拓扑结构相匹配。 顺祝商祺! 帕维尔 Re: Trap to host not working on SJA1110 Rev. D 你好@flxwly , 请注意:一旦某个答案被标记为解决方案,我们的系统将不再主动跟踪原始查询。我只接收更新订阅邮件,偶尔会错过一些。 如果您需要进一步的帮助,最好的方法是创建一个新的查询。 顺祝商祺! 帕维尔 Re: Trap to host not working on SJA1110 Rev. D 你好@PavelL , 非常感谢。现在一切运行正常。关于带内控制扩展,我还有一个问题。主机端口(0)是否包含在带有尾部的主机到交换机帧的尾部中?UM11107 文档 5.8.2.1 节中没有说明端口应该如何设置。我假设每个端口一位。此外,预告片信息似乎并没有完全删除。 顺祝商祺! 尼波穆克
View full article
FRDM-MCXA153 Y1晶体 您好,我正在使用 FRDM-MCXA153 评估套件,我想知道 Y1 晶振的用途。我看到这是一个 8MHz 的晶振,但是里面没有安装任何元件。我需要把那部分元件添加到板上吗? 谢谢 电路板设计 Re: FRDM-MCXA153 Y1 Crystal 这块水晶有什么用途? Re: FRDM-MCXA153 Y1 Crystal AN14798 系统振荡器在 MCX A 系列中的应用 频率是选择晶体的主要参数。MCX A 系列 MCU 支持 8 MHz 至 50 MHz 的频率。 Re: FRDM-MCXA153 Y1 Crystal 嗨@joseph_lindula Y1 是 MCX A153 上外部 8 MHz 晶体的预留接口。FRDM-MCXA153 生产板上默认情况下未安装该组件。除非您特别需要启用外部晶体时钟源,否则无需安装它。 谢谢! BR 爱丽丝
View full article
2026年にAdopt Meのペットを無料で即座に入手するトップ10の方法 Robloxの「Adopt Me」をプレイしたことがある人なら、レア、レジェンダリー、ウルトラレアのペットを集めるのがどれほどエキサイティングなことか、既にご存知でしょう。ドラゴンやユニコーンからユニークなイベントペットまで、強力なペットコレクションを作ることはゲームの最も楽しい部分の一つです。しかし、誰もがRobuxを使ってインベントリを拡張したいわけではない。朗報です。実際のお金を使わずにAdopt Meのペットを無料で入手する合法的な方法がいくつかあります。 ➤➤ ここをクリックして このガイドでは、Adopt Meでペットを無料で入手するためのトップ10の方法を紹介し、安全かつ効率的にコレクションを増やすお手伝いをします。 1. 毎日ログイン報酬を完了する Adopt Meで無料のペットを手に入れる最も簡単な方法の一つは、毎日ゲームにログインすることです。Adopt Meでは、アクティブなプレイヤーに、ゲーム内通貨(Bucks)、アイテム、そして時折卵を入手できる機会などを含むデイリーボーナスが与えられます。 ログイン連続記録を長く維持すればするほど、より多くの報酬を受け取ることができます。継続が鍵であり、これらの報酬は時間をかけて孵化した貴重なペットになる卵の購入に役立ちます。 2. 無料の卵を孵化させる Adopt Meでは、卵がペットを入手する主な手段です。プレイヤーはゲームプレイで得たバックスを使って様々な卵を購入できます。最も人気のある選択肢には、ひび割れた卵、ペットの卵、ロイヤルエッグなどがあります。 日常の活動に参加し、お金を貯めることで、Robuxを使わずに卵を継続的に購入できます。卵を一つ開けるごとに、レアなペットや伝説のペットを無料で孵化させるチャンスが得られます。 3. 季節イベント情報への参加 Adopt Meは祝日や主要な祝日の際にイベント情報を頻繁に開催しています。これらのイベント情報では、Robuxで購入するのではなく、ゲームプレイチャレンジで獲得できる期間限定のペットが登場することが多いです。 ハロウィン、クリスマス、イースター、夏のイベント情報は、無料のAdopt Meペットを求めるプレイヤーの間で特に人気があります。イベント情報タスクをクリアしたり、イベント情報通貨を集めたりすると、イベント情報終了前に限定ペットをアンロックできます。 4. 他のプレイヤーと賢く取引する ペットのコレクションを増やすには、トレードが最も効果的な方法の一つです。伝説のペットがなくても、コモンペットとアンコモンペットを戦略的に取引することでステップアップできます。 重複しているペットを交換してくれるプレイヤーや、あなたが所有している特定のアイテムを必要としているプレイヤーを探しましょう。時間が経つにつれて、賢い取引は普段は手に入れにくいペットを手に入れる手助けをしてくれます。 必ず公式のゲーム内取引システムを利用し、ゲーム外で無料のペットを約束する詐欺には注意してください。 5. タスクを完了してバックスを獲得する Adopt Meでは、プレイヤーにBucks(ゲーム内通貨)が報酬として与えられる様々なアクティビティが用意されています。ペットへのご給餌、学校への通学、キャンプ、シャワー、その他の日常的な作業をこなすことで、卵子の購入に使える収入が生まれます。 活動的であればあるほど、バックスをより早く貯めることができます。多くの熟練プレイヤーは、定期的にタスクを完了するだけで数千ドルのバックスを獲得し、毎週複数の卵を孵化させている。 6. プレゼント企画に参加する 多くのAdopt Meコンテンツクリエイターは、YouTubeやDiscord、ソーシャルメディアなどのプラットフォームでプレゼント企画を開催しています。これらのプレゼント企画では、伝説のペット、珍しい卵、貴重なアイテムなどがよく登場します。 プレゼント企画に参加する前に、主催者が信頼できる人物であることを確認してください。正規のプレゼント企画では、パスワードやアカウント情報の入力は一切求められません。信頼できるプレゼント企画に参加することは、無料の「Adopt Me」ペットを手に入れる素晴らしい方法です。 7. ペットのレベルアップと成長 プレイヤーは、生まれたばかりのペットよりも、成長したペットを高く評価する傾向がある。タスクを通じてペットの年齢を上げることに時間を投資することで、取引価値を大幅に高めることができます。 成体になったペットは、交換条件によっては複数の若いペットに匹敵する価値があるかもしれない。この戦略を使えば、一般的なペットをより良い機会に変え、最終的にはRobuxを使わずに希少なペットを入手できます。 8. アクティブなAdopt Meコミュニティに参加する Adopt Meコミュニティは、無料のペットを求めるプレイヤーにとって貴重なリソースとなり得ます。Robloxグループ、Discordサーバー、ソーシャルメディアコミュニティでは、取引イベント情報やコンテスト、コミュニティのプレゼント企画がよく開催されています。 活発なコミュニティは、マーケットの価値、イベント情報、安全な取引慣行についても有益なアドバイスを提供します。これらのコミュニティに関わることで、普段なら逃すかもしれない機会につながります。 9.新しいアップデートを活用する Adopt Meのメジャーアップデートでは、毎回新しいコンテンツと機会が追加されます。新しい卵、ペット、イベント情報、ゲームプレイ機能などにより、アクティブなプレイヤーが貴重な報酬を獲得しやすくなることが多いです。 更新のお知らせに注意を払い、新しいコンテンツが公開されたらすぐに参加してください。早期に参加することで、ペットが希少で非常に人気が高まる前に手に入れる助けになることがあります。 10. ペットマネジメントの戦略を活用する ペットを効果的に管理することで、時間とともにより良いペットを迎える可能性が高まります。複数のペットを同時に育て、タスクを効率的に完了させ、可能な限りバックスを節約することに集中しましょう。 多くの成功したプレイヤーは、複数のペットを同時に世話したり、ファミリのゲームプレイ要素を組み合わせて収益を最大化するなどの代替戦略を用います。より良い資源マネジメントは、より多くの卵、孵化、そして最終的にはより多くの無料ペットをもたらします。 無料ペット詐欺を回避するためのヒント Adopt Meで無料のペットを探していると、すぐに伝説のペットを提供すると謳うウェブサイト、動画、または個人に出くわす可能性が高いでしょう。注意深く、以下のセーフティ対策を守ってください: Robloxのパスワードは絶対に他人に教えないでください。 無料のペットを入手できると謳うウェブサイトは避けてください。 公式のAdopt Meトレードシステムのみを使用してください。 参加する前に、プレゼント企画の主催者を確認してください。 Robloxアカウントで二要素認証を有効にしてください。 正当な無料ペットは、ゲームプレイ、取引、イベント情報、信頼できるコミュニティ活動を通じて得られることを忘れないでください。 まとめ Adopt Meで無料のペットを入手するのに、Robuxを使う必要はありません。毎日ログインし、タスクをこなし、イベント情報に参加し、卵を孵化させ、プレゼント企画に参加し、賢く取引することで、着実に素晴らしいペットコレクションを築くことができます。 最も成功したプレイヤーはこれらの方法をいくつか組み合わせ、ゲーム内で活動し続けます。時間をかけて、忍耐強く継続すれば、リアルマネーを使わずにレア、超レア、さらにはレジェンダリーのペットをアンロックできるようになります。 初めてペットを飼いたい初心者の方も、コレクションを増やしたいベテランの方も、Adopt Meで無料のペットを手に入れるためのこのトップ10の方法を使えば、お財布に負担をかけずにAdopt Meのすべてを楽しむことができます。
View full article
使用 SDK 的 CAN 通信 S32K144 DEMO 并进行修改,发送扩展帧 使用 SDK 的 CAN 通信 S32K144 DEMO 并进行修改后,发送扩展帧失败。我已经将 idType 更改为 CAN_MSG_ID_EXT,但 CAN 适配器仍然接收到标准帧。我发送的 ID 是 1FFFFFFF,但收到的 ID 是 7FF。如果专家能帮忙解决这个问题,我将不胜感激。   #include "Cpu.h" #include "delay.h" #include "uart.h" #include"key.h" #include"oled.h"   #include "stdint.h" #include "stdbool.h"   volatile int exit_code = 0;   #define LED1(x) PINS_DRV_WritePin(PTD,16,!x); #define LED2(x) PINS_DRV_WritePin(PTD,15,!x); #define LED3(x) PINS_DRV_WritePin(PTD,1,!x); #define LED4(x) PINS_DRV_WritePin(PTD,0,!x);   #define Rx_Filter 0x0 char IRQ_CAN0_RX; char IRQ_CAN1_RX; char IRQ_CAN2_RX; can_message_t recvMsg_CAN0; can_message_t recvMsg_CAN1; can_message_t recvMsg_CAN2; #define RX_MASK_ALL_EXT 0x1FFFFFFF #define RX_MAILBOX_CAN0 (0UL) #define TX_MAILBOX_CAN0 (1UL)   #define RX_MAILBOX_CAN1 (2UL) #define TX_MAILBOX_CAN1 (3UL)   #define RX_MAILBOX_CAN2 (4UL) #define TX_MAILBOX_CAN2 (5UL)       /*CAN0回调函数*/ void CAN0_Callback_Func (uint32_t instance,can_event_t event,uint32_t buffIdx,void *flexcanState)   { (无效)flexcan状态; //阻止此处诊断 (void)实例; (void)buffIdx; CAN_Receive(&can_pal0_instance, RX_MAILBOX_CAN0, &recvMsg_CAN0); //接收报文并重新注册回调函数 switch(event) //回调事件 { case CAN_EVENT_RX_COMPLETE: //接收完成事件 IRQ_CAN0_RX = 1; 休息; case CAN_EVENT_TX_COMPLETE: //发送完成事件 休息; 默认: 休息; }   }       void CAN1_Callback_Func (uint32_t instance,can_event_t event,uint32_t buffIdx,void *flexcanState)   { (void)flexcanState; (void)实例; (void)buffIdx; CAN_Receive(&can_pal1_instance, RX_MAILBOX_CAN1, &recvMsg_CAN1); 切换(事件) { case CAN_EVENT_RX_COMPLETE: IRQ_CAN1_RX = 1; 休息; case CAN_EVENT_TX_COMPLETE: 休息; 默认: 休息; }   }       void CAN2_Callback_Func (uint32_t instance,can_event_t event,uint32_t buffIdx,void *flexcanState)   { (void)flexcanState; (void)实例; (void)buffIdx; CAN_Receive(&can_pal2_instance, RX_MAILBOX_CAN2, &recvMsg_CAN2); 切换(事件) { case CAN_EVENT_RX_COMPLETE: IRQ_CAN2_RX = 1; 休息; case CAN_EVENT_TX_COMPLETE: 休息; 默认: 休息; }   }     void CAN0_Init(void) { CAN_Init(&can_pal0_instance, &can_pal0_Config0); can_buff_config_t Rx_buffCfg = { .enableFD= false, .启用BRS= false, .fdPadding= 0U, .id类型= CAN_MSG_ID_EXT, .isRemote假  };   can_buff_config_t Tx_buffCfg = { .enableFD= false, .启用BRS= false, .fdPadding= 0U, .id类型= CAN_MSG_ID_EXT, .isRemote假  }; CAN_ConfigRxBuff(&can_pal0_instance, RX_MAILBOX_CAN0, &Rx_buffCfg, Rx_Filter); //注册接收配置和MSGID过滤器(如过滤器配置为0x1,则只接受msgid 0x1发来的报文) CAN_ConfigTxBuff(&can_pal0_instance, TX_MAILBOX_CAN0, &Tx_buffCfg); //配置发送 /*设置MSGID的掩码,掩码粗略可以理解为对11bit MSGID地址的过滤 如果位需要过滤设置为1,不过滤设置为0,例如掩码设置为0x7ff则过滤全部标准id,如果设置为0x7fe,则只接受0x01的报文(不存在某0x0的地址)*/ CAN_SetRxFilter(&can_pal0_instance, CAN_MSG_ID_EXT, RX_MAILBOX_CAN0, 0x1FFFFFFFU);//设置MSGID掩码, CAN_InstallEventCallback(&can_pal0_instance,&CAN0_Callback_Func,(void*)0); //注册回调函数 CAN_Receive(&can_pal0_instance, RX_MAILBOX_CAN0, &recvMsg_CAN0); //*****重点****此函数不仅有接收作用还有续订回调函数的作用。 }       void CAN1_Init(void) { CAN_Init(&can_pal1_instance, &can_pal1_Config0); can_buff_config_t Rx_buffCfg = { .enableFD= false, .启用BRS= false, .fdPadding= 0U, .id类型= CAN_MSG_ID_EXT, .isRemote假  };   can_buff_config_t Tx_buffCfg = { .enableFD= false, .启用BRS= false, .fdPadding= 0U, .id类型= CAN_MSG_ID_EXT, .isRemote假  }; CAN_ConfigRxBuff(&can_pal1_instance, RX_MAILBOX_CAN1, &Rx_buffCfg, Rx_Filter); CAN_ConfigTxBuff(&can_pal1_instance, TX_MAILBOX_CAN1, &Tx_buffCfg); CAN_SetRxFilter(&can_pal1_instance,CAN_MSG_ID_EXT,RX_MAILBOX_CAN1,0x1FFFFFFFU); CAN_InstallEventCallback(&can_pal1_instance,&CAN1_Callback_Func,(void*)0); CAN_Receive(&can_pal1_instance, RX_MAILBOX_CAN1, &recvMsg_CAN1); }           void CAN2_Init(void) { CAN_Init(&can_pal2_instance, &can_pal2_Config0); can_buff_config_t Rx_buffCfg = { .enableFD= false, .启用BRS= false, .fdPadding= 0U, .id类型= CAN_MSG_ID_EXT, .isRemote假  };   can_buff_config_t Tx_buffCfg = { .enableFD= false, .启用BRS= false, .fdPadding= 0U, .id类型= CAN_MSG_ID_EXT, .isRemote假  }; CAN_ConfigRxBuff(&can_pal2_instance, RX_MAILBOX_CAN2, &Rx_buffCfg, Rx_Filter); CAN_ConfigTxBuff(&can_pal2_instance, TX_MAILBOX_CAN2, &Tx_buffCfg); CAN_SetRxFilter(&can_pal2_instance,CAN_MSG_ID_EXT,RX_MAILBOX_CAN2,0x1FFFFFFFU); CAN_InstallEventCallback(&can_pal2_instance,&CAN2_Callback_Func,(void*)0); CAN_Receive(&can_pal2_instance, RX_MAILBOX_CAN2, &recvMsg_CAN2); }       int main(void) { /* 在这里编写局部变量定义 */ uint8_t pinstate; int MCU_Freq; uint8_t CANRXDATA_STR1[17]; uint8_t CANRXDATA_STR2[17]; /*** 处理器专家内部初始化。请勿删除此代码!!!***/ #ifdef PEX_RTOS_INIT PEX_RTOS_INIT(); /* 初始化所选的 RTOS。宏由 RTOS 元器件定义。*/ #endif /*** 处理器专家内部初始化结束。***/   CLOCK_SYS_Init(g_clockManConfigsArr, CLOCK_MANAGER_CONFIG_CNT,g_clockManCallbacksArr, CLOCK_MANAGER_CALLBACK_CNT); CLOCK_SYS_UpdateConfiguration(0U, CLOCK_MANAGER_POLICY_AGREEMENT); MCU_Freq = delay_init();//初始化延迟函数 PINS_DRV_Init(NUM_OF_CONFIGURED_PINS, g_pin_mux_InitConfigArr); //初始化IO I2C_MasterInit(&i2c1_instance, &i2c1_MasterConfig0);//初始化I2C外设,用于OLED通讯 LPUART_DRV_Init(INST_LPUART1, &lpuart1_State, &lpuart1_InitConfig0); //初始化构造   CAN0_Init(); CAN1_Init(); CAN2_Init();   oled_init(); //OLED配置参数初始化 OLED_TITLE((uint8_t*)"S32K144",(uint8_t*)"CAN");//OLED显示标题 u1_printf("初始化完成,MCU运行频率为%d Mhz \r\n",MCU_Freq);     while(1)     { /* 按键处理 */ pinstate = KEY_Proc (0); /*if(pinstate ==BTN1_PRES ) { can_message_t Tx_msg = { .cs = 0U, .id = 0x01, .data[0] = 0x0, .data[1] = 0x1, .data[2] = 0x2, .data[3] = 0x3, .data[4] = 0x4, .data[5] = 0x5, .data[6] = 0x6, .data[7] = 0x7, 长度 = 8 }; CAN_Send(&can_pal0_instance, TX_MAILBOX_CAN0, &Tx_msg); u1_printf("CAN0发送报文\r\n");   } 否则如果(pinstate ==BTN2_PRES) { can_message_t Tx_msg = { .cs = 0U, .id = 0x02, .data[0] = 0x20, .data[1] = 0x21, .data[2] = 0x22, .data[3] = 0x23, .data[4] = 0x24, .data[5] = 0x25, .data[6] = 0x26, .data[7] = 0x27, 长度 = 8 }; CAN_Send(&can_pal1_instance, TX_MAILBOX_CAN1, &Tx_msg); u1_printf("CAN1发送报文\r\n"); } 否则如果(pinstate ==BTN3_PRES) { can_message_t Tx_msg = { .cs = 0U, .id = 0x03, .data[0] = 0x30, .data[1] = 0x31, .data[2] = 0x32, .data[3] = 0x33, .data[4] = 0x34, .data[5] = 0x35, .data[6] = 0x36, .data[7] = 0x37, 长度 = 8 }; CAN_Send(&can_pal2_instance, TX_MAILBOX_CAN2, &Tx_msg); u1_printf("CAN2发送报文\r\n"); }*/ u1_printf("123456\r\n"); /* can_message_t Tx_msg = { .cs = 0U, .id = 0x03, .data[0] = 0x30, .data[1] = 0x31, .data[2] = 0x32, .data[3] = 0x33, .data[4] = 0x34, .data[5] = 0x35, .data[6] = 0x36, .data[7] = 0x37, 长度 = 8 }; CAN_Send(&can_pal1_instance, TX_MAILBOX_CAN1, &Tx_msg);*/ // 发送标准帧(用于对照) delay_ms(100); can_message_t std_msg0 = { .cs = 0U, .id = 0x1FFFF111U, .data[0] = 0x30, .data[1] = 0x31, .data[2] = 0x32, .data[3] = 0x33, .data[4] = 0x34, .data[5] = 0x35, .data[6] = 0x36, .data[7] = 0x37, 长度 = 8 }; status_t ret = CAN_Send(&can_pal2_instance, TX_MAILBOX_CAN2, &std_msg0); 如果(返回值 != 状态成功) { u1_printf("CAN2 发送 std_msg0 失败,返回值:%d\r\n",ret); } delay_ms(100);   can_message_t Tx_msg0 = { .cs = 0U, .id = 0x1FFFFFFFU, .data[0] = 0x30, .data[1] = 0x31, .data[2] = 0x32, .data[3] = 0x33, .data[4] = 0x34, .data[5] = 0x35, .data[6] = 0x36, .data[7] = 0x37, 长度 = 8 }; CAN_Send(&can_pal2_instance, TX_MAILBOX_CAN2, &Tx_msg0); delay_ms(100); 如果 (IRQ_CAN0_RX ==1) { int i; u1_printf("CAN0 接收 ID:0x%x \r\n",recvMsg_CAN0.id); for(i=0; i { u1_printf("数据 %d : %x\r\n",i,recvMsg_CAN0.data[i]); if(i==recvMsg_CAN0.length-1) u1_printf("***************\r\n"); } IRQ_CAN0_RX=0; }   如果 (IRQ_CAN1_RX ==1) { int i; u1_printf("CAN1 接收 ID:0x%x \r\n",recvMsg_CAN1.id); for(i=0; i { u1_printf("数据 %d : %x\r\n",i,recvMsg_CAN1.data[i]); if(i==recvMsg_CAN1.length-1) u1_printf("***************\r\n"); } IRQ_CAN1_RX=0; }   如果 (IRQ_CAN2_RX ==1) { int i; u1_printf("CAN2 接收 ID:0x%x \r\n",recvMsg_CAN2.id); for(i=0; i { u1_printf("数据 %d : %x\r\n",i,recvMsg_CAN2.data[i]); if(i==recvMsg_CAN2.length-1) u1_printf("***************\r\n"); } IRQ_CAN2_RX=0; } /*OLED显示*/ sprintf((char*)CANRXDATA_STR1,"CAN0 %02X %02X %02X %02X", recvMsg_CAN2.data[0],recvMsg_CAN2.data[1],recvMsg_CAN2.data[2],recvMsg_CAN2.data[3]); // 格式点:删除(uint8_t)强转,格式符改为%08X sprintf((char*)CANRXDATA_STR2,"ID:%08X %02X %02X %02X %02X", recvMsg_CAN2.id,recvMsg_CAN2.data[4],recvMsg_CAN2.data[5],recvMsg_CAN2.data[6],recvMsg_CAN2.data[7]); OLED_ShowString(0,2,CANRXDATA_STR1,8,0); OLED_ShowString(0,3,CANRXDATA_STR2,8,0);   /*sprintf((char*)CANRXDATA_STR1,"CAN1 %02X %02X %02X %02X",recvMsg_CAN1.data[0],recvMsg_CAN1.data[1],recvMsg_CAN1.data[2],recvMsg_CAN1.data[3]); sprintf((char*)CANRXDATA_STR2,"ID%02X %02X %02X %02X %02X",(uint8_t)recvMsg_CAN1.id,recvMsg_CAN1.data[4],recvMsg_CAN1.data[5],recvMsg_CAN1.data[6],recvMsg_CAN1.data[7]); OLED_ShowString(0,4,CANRXDATA_STR1,8,0); OLED_ShowString(0,5,CANRXDATA_STR2,8,0);   sprintf((char*)CANRXDATA_STR1,"CAN2 %02X %02X %02X %02X",recvMsg_CAN2.data[0],recvMsg_CAN2.data[1],recvMsg_CAN2.data[2],recvMsg_CAN2.data[3]); sprintf((char*)CANRXDATA_STR2,"ID%02X %02X %02X %02X %02X",(uint8_t)recvMsg_CAN2.id,recvMsg_CAN2.data[4],recvMsg_CAN2.data[5],recvMsg_CAN2.data[6],recvMsg_CAN2.data[7]); OLED_ShowString(0,6,CANRXDATA_STR1,8,0); OLED_ShowString(0,7,CANRXDATA_STR2,8,0);*/ /*OLED显示*/   PINS_DRV_TogglePins(PTD, 1 << 0); PINS_DRV_TogglePins(PTD, 1 << 1); PINS_DRV_TogglePins(PTD, 1 << 15); PINS_DRV_TogglePins(PTD, 1 << 16); delay_ms(100);    } /*** 请勿在此行之后编写任何代码,否则将在代码生成过程中删除。***/ /*** RTOS 启动代码。宏 PEX_RTOS_START 由 RTOS 元器件定义。请勿修改此代码!!!***/ #ifdef PEX_RTOS_START PEX_RTOS_START(); /* 启动所选的 RTOS。宏由 RTOS 元器件定义。*/ #endif /*** RTOS 启动代码结束。***/ /*** 处理器专家主程序结束。请勿修改此代码!!!***/ 为了(;;) { 如果(退出代码 != 0) { 休息;    }   } 返回退出代码; /*** 处理器专家主程序结束。请勿在下方编写代码!!!***/ } /*** 主程序结束。请勿修改此文本!!!***/   /* 主程序结束 */ /*! ** @} */ /* ** ################################################################### ** **此文件由 Processor Expert 10.1 [05.21] 创建 **适用于NXP S32K系列微控制器。 ** ** ################################################################### */ Re: Using the SDK's CAN communication S32K144 DEMO and making modifications, the sending of extended HI 在调用CAN_Send之前,请先调用CAN_ConfigTxBuff 。 请参阅“无法接收带有扩展 ID 的 CAN 帧”中的讨论 由于我不确定您使用的是哪个 SDK 版本,我建议您检查SRR位是否设置为 1。详情请参考:当 FlexCAN Tx 发送扩展 ID 时,是否应设置 SRR 位? 此致, 罗宾 ------------------------------------------------------------------------------- 笔记: - 如果此帖解答了您的问题,请点击“接受为解决方案”按钮。谢谢你! - 我们会持续关注帖子,从最后一条回复发出后持续7周,之后的回复将被忽略。 如果您之后有相关问题,请另开新帖并引用已关闭的帖子。 -------------------------------------------------------------------------------
View full article
S32K314 UART I recently encountered a problem while debugging the S32K314 serial port. Previously, I was using the GD32/STM32 platform, and when using the serial port for real-time printing, my approach was as follows: the application layer processed the printed characters, and the underlying write function was called to send them out via interrupt. This data is written directly to the data register and sent out quickly. Therefore, there's no need to panic when the application layer receives a large amount of data, as there's a queue, and data transmission is fast. However, when using S32K3, I found that the asynchronous send function `Lpuart_Uart_Ip_AsyncSend` is relatively slow, with nested layers. Relatively speaking, for the same number of bytes of printed data, S32K3 is much slower than GD32. AI provides a solution. In the application layer, the write-by-write method is changed to writing to the underlying layer using a large buffer. Then, the underlying write function and interrupt are handled in the following way. This method does improve speed, but it requires a lot of RAM. Is there a better way that is better in terms of both space and efficiency? Re: S32K314 UART do you use any operating system at MCU level or just baremetal? Re: S32K314 UART Operating system used Re: S32K314 UART Hi@ Joker_Y If possible, you can try to implement LPUART transmission directly using registers. Re: S32K314 UART Could you please provide an example of how to do this?
View full article
启动过程中无法获取 USB 设备 我的处理器是IMX8M Plus。我已将启动配置设置为 0001,以便从 USB 下载固件。 这是一块定制板,我们正在首次启动它。 这是 uuu 工具的日志。 PS C:\NXP\UUU> .\uuu.exe -lsusb 适用于 NXP imx 芯片的 uuu(通用更新实用程序)-- libuuu_1.5.243-0-g230f1b1 已连接的已知 USB 设备 路径芯片专业版视频 PID BCD版本 序列号 ==================================================================== 此外,我们也无法连接JTAG接口。 TDO引脚持续为高电平。 IMX8MPLUS @support @ritesh Re: Not Getting USB Device during Boot 你好, uuu -lsusb 没有显示“已知 USB 设备”,表明 i.MX8M Plus 尚未成功进入 ROM 串行下载器或 USB SDP 模式,或者 USB OTG 设备尚未被 PC 正确枚举。 结合无法通过 JTAG 连接以及 TDO 信号保持高电平的情况,这似乎是一个早期板级启动问题:SoC 可能没有正确释放 RESET,关键电源或时钟可能存在异常,启动模式跳线可能没有被正确采样,或者 JTAG/USB 相关引脚的连接或电源可能存在问题。 此致, 志明 Re: Not Getting USB Device during Boot 问题已解决。 我发现 VDD_PLL_ANA_1V8 网络未上电。 感谢@Zhiming_Liu 的回复。
View full article
Not Getting USB Device during Boot I have IMX8M Plus Processor. I have set the Boot configuration as 0001 to download the firmware from USB. This is a custom Board that we are powering up first time.  This is the log from uuu tool. PS C:\NXP\UUU> .\uuu.exe -lsusb uuu (Universal Update Utility) for nxp imx chips -- libuuu_1.5.243-0-g230f1b1 Connected Known USB Devices Path Chip Pro Vid Pid BcdVersion Serial_no ==================================================================== Also we are unable to connect the JTAG the TDO Pin is continuous High.  IMX8MPLUS  @support @ritesh  Re: Not Getting USB Device during Boot   Hi, uuu -lsusb shows no “Known USB Device,” indicating that the i.MX8M Plus has not successfully entered ROM Serial Downloader or USB SDP mode, or that the USB OTG device has not been properly enumerated by the PC. Combined with the inability to connect via JTAG and the TDO signal remaining high, this appears to be an early-stage board-level bring-up issue: the SoC may not have released the reset properly, there may be abnormalities in critical power supplies or clocks, the boot mode strap may not have been sampled correctly, or there may be issues with the connections or power supply to the JTAG/USB-related pins. Best Regards, Zhiming Re: Not Getting USB Device during Boot The issue is resolved. I found that VDD_PLL_ANA_1V8 Net was not powered up.  Thanks @Zhiming_Liu  for your response.
View full article
FRDM-MCXA153 Y1クリスタル こんにちは。FRDM-MCXA153評価キットを使用しているのですが、Y1クリスタルの用途を知りたいです。8MHzの水晶発振子であることは分かりますが、部品が実装されていません。その部分をボードに追加する必要がありますか? よろしくお願い申し上げます。 ボード設計 Re: FRDM-MCXA153 Y1 Crystal その結晶の目的は何ですか? Re: FRDM-MCXA153 Y1 Crystal AN14798 MCX Aシリーズ用システムオシレータの使用方法 周波数は、結晶を選択する際の主要なパラメータです。MCX AシリーズMCUでは8MHz~50MHzに対応しています Re: FRDM-MCXA153 Y1 Crystal こんにちは、 @joseph_lindula さん。 Y1は、MCX A153上の外部8MHz水晶発振器用に予約されたフットプリントです。FRDM-MCXA153製品版ボードには、デフォルトでは実装されていません。外部水晶発振器を有効にする必要が特にない限り、インストールする必要はありません。 よろしくお願いします。 BR アリス
View full article
SDKsのCAN通信S32K144 DEMOを使い、修正を加えて拡張フレームを送信します。 SDKのCAN通信S32K144 DEMOを使い、修正を加えた結果、拡張フレームの送信は失敗しました。idTypeはすでにCAN_MSG_ID_EXTに変更しましたが、CANアダプターは標準フレームを受け取りました。私が送信したIDは1FFFFFFFでしたが、受信したIDは7FFでした。専門家の方がこの問題の解決に協力していただけるとありがたいです。   #include "Cpu.h" #include "delay.h" #include "uart.h" #include"key.h" #include"oled.h"   #include "stdint.h" #include "stdbool.h"   volatile int exit_code = 0;   #define LED1(x) PINS_DRV_WritePin(PTD,16,!x); #define LED2(x) PINS_DRV_WritePin(PTD,15,!x); #define LED3(x) PINS_DRV_WritePin(PTD,1,!x); #define LED4(x) PINS_DRV_WritePin(PTD,0,!x);   #define Rx_Filter 0x0 char IRQ_CAN0_RX; char IRQ_CAN1_RX; char IRQ_CAN2_RX; can_message_t recvMsg_CAN0; can_message_t recvMsg_CAN1; can_message_t recvMsg_CAN2; #define RX_MASK_ALL_EXT 0x1FFFFFFF #define RX_MAILBOX_CAN0 (0UL) #define TX_MAILBOX_CAN0 (1UL)   #define RX_MAILBOX_CAN1 (2UL) #define TX_MAILBOX_CAN1 (3UL)   #define RX_MAILBOX_CAN2 (4UL) #define TX_MAILBOX_CAN2 (5UL)       /*CAN0回调関数*/ void CAN0_Callback_Func (uint32_t instance,can_event_t event,uint32_t buffIdx,void *flexcanState)   { (void)flexcanState; //此处防止警报 (void)インスタンス; (void)buffIdx; CAN_Receive(&can_pal0_instance, RX_MAILBOX_CAN0, &recvMsg_CAN0); //受信收报文并再注册回调関数 スイッチ(イベント情報) //回调事件 { CASE CAN_EVENT_RX_COMPLETE: //接收完成 事件 IRQ_CAN0_RX = 1; 壊す; CASE CAN_EVENT_TX_COMPLETE: //发送完成事件 壊す; デフォルト: 壊す; }   }       void CAN1_Callback_Func (uint32_t instance,can_event_t event,uint32_t buffIdx,void *flexcanState)   { (void)flexcanState; (void)インスタンス; (void)buffIdx; CAN_Receive(&can_pal1_instance, RX_MAILBOX_CAN1, &recvMsg_CAN1); スイッチ(イベント情報) { CASE CAN_EVENT_RX_COMPLETE: IRQ_CAN1_RX = 1; 壊す; CASE CAN_EVENT_TX_COMPLETE: 壊す; デフォルト: 壊す; }   }       void CAN2_Callback_Func (uint32_t instance,can_event_t event,uint32_t buffIdx,void *flexcanState)   { (void)flexcanState; (void)インスタンス; (void)buffIdx; CAN_Receive(&can_pal2_instance, RX_MAILBOX_CAN2, &recvMsg_CAN2); スイッチ(イベント情報) { CASE CAN_EVENT_RX_COMPLETE: IRQ_CAN2_RX = 1; 壊す; CASE CAN_EVENT_TX_COMPLETE: 壊す; デフォルト: 壊す; }   }     void CAN0_Init(void) { CAN_Init(&can_pal0_instance, &can_pal0_Config0); can_buff_config_t Rx_buffCfg = { .enableFD= 偽、 .enableBRS= 偽、 .fdPadding= 0U、 .idType= CAN_MSG_ID_EXT、 .isRemote= 偽  };   can_buff_config_t Tx_buffCfg = { .enableFD= 偽、 .enableBRS= 偽、 .fdPadding= 0U、 .idType= CAN_MSG_ID_EXT、 .isRemote= 偽  }; CAN_ConfigRxBuff(&can_pal0_instance, RX_MAILBOX_CAN0, &Rx_buffCfg, Rx_Filter); //注釈は構成と MSGID フィルターを受信します (例: フィルターの構成が 0x1 である場合、msgid 0x1 発行の文のみを受け取ります) CAN_ConfigTxBuff(&can_pal0_instance, TX_MAILBOX_CAN0, &Tx_buffCfg); //配置送信 /* MSGID のコードを設定します。コードの大まかな値は 11 ビットの MSGID アドレスのフィルタであると理解できます。 特定のビットを 1 に設定する必要がある場合は、0 に設定する必要はありません。たとえば、コードが 0x7ff に設定されている場合は、すべての標準 ID が必要です。0x7fe に設定されている場合、これは 0x01 の文 (0x0 のアドレスは存在しません)*/ のみを受け入れることができます。 CAN_SetRxFilter(&can_pal0_instance, CAN_MSG_ID_EXT, RX_MAILBOX_CAN0, 0x1FFFFFFFU);//MSGID を設定します、 CAN_InstallEventCallback(&can_pal0_instance,&CAN0_Callback_Func,(void*)0); //注册回调関数数 CAN_Receive(&can_pal0_instance, RX_MAILBOX_CAN0, &recvMsg_CAN0); //*****注目****この関数は受信機能のみを持ちません。 }       void CAN1_Init(void) { CAN_Init(&can_pal1_instance, &can_pal1_Config0); can_buff_config_t Rx_buffCfg = { .enableFD= 偽、 .enableBRS= 偽、 .fdPadding= 0U、 .idType= CAN_MSG_ID_EXT、 .isRemote= 偽  };   can_buff_config_t Tx_buffCfg = { .enableFD= 偽、 .enableBRS= 偽、 .fdPadding= 0U、 .idType= CAN_MSG_ID_EXT、 .isRemote= 偽  }; CAN_ConfigRxBuff(&can_pal1_instance, RX_MAILBOX_CAN1, &Rx_buffCfg, Rx_Filter); CAN_ConfigTxBuff(&can_pal1_instance, TX_MAILBOX_CAN1, &Tx_buffCfg); CAN_SetRxFilter(&can_pal1_instance,CAN_MSG_ID_EXT,RX_MAILBOX_CAN1,0x1FFFFFFFU); CAN_InstallEventCallback(&can_pal1_instance,&CAN1_Callback_Func,(void*)0); CAN_Receive(&can_pal1_instance, RX_MAILBOX_CAN1, &recvMsg_CAN1); }           void CAN2_Init(void) { CAN_Init(&can_pal2_instance, &can_pal2_Config0); can_buff_config_t Rx_buffCfg = { .enableFD= 偽、 .enableBRS= 偽、 .fdPadding= 0U、 .idType= CAN_MSG_ID_EXT、 .isRemote= 偽  };   can_buff_config_t Tx_buffCfg = { .enableFD= 偽、 .enableBRS= 偽、 .fdPadding= 0U、 .idType= CAN_MSG_ID_EXT、 .isRemote= 偽  }; CAN_ConfigRxBuff(&can_pal2_instance, RX_MAILBOX_CAN2, &Rx_buffCfg, Rx_Filter); CAN_ConfigTxBuff(&can_pal2_instance, TX_MAILBOX_CAN2, &Tx_buffCfg); CAN_SetRxFilter(&can_pal2_instance,CAN_MSG_ID_EXT,RX_MAILBOX_CAN2,0x1FFFFFFFU); CAN_InstallEventCallback(&can_pal2_instance,&CAN2_Callback_Func,(void*)0); CAN_Receive(&can_pal2_instance, RX_MAILBOX_CAN2, &recvMsg_CAN2); }       int main(void) { /* ここにローカル変数の定義を記述してください */ uint8_t pinstate; int MCU_Freq; uint8_t CANRXDATA_STR1[17]; uint8_t CANRXDATA_STR2[17]; /*** プロセッサ Expert 内部初期化。このコードを削除しないでください!!! ***/ #ifdef PEX_RTOS_INIT PEX_RTOS_INIT(); /* 選択されたRTOSの初期化。マクロはRTOSコンポーネントによって定義されます。*/ #endif /*** プロセッサエキスパートの内部初期化終了。                    ***/   CLOCK_SYS_Init(g_clockManConfigsArr, CLOCK_MANAGER_CONFIG_CNT,g_clockManCallbacksArr, CLOCK_MANAGER_CALLBACK_CNT); CLOCK_SYS_UpdateConfiguration(0U, CLOCK_MANAGER_POLICY_AGREEMENT); MCU_Freq = late_init();//初期化遅延関数数 PINS_DRV_Init(NUM_OF_CONFIGURED_PINS, g_pin_mux_InitConfigArr); //初期化IO I2C_MasterInit(&i2c1_instance, &i2c1_MasterConfig0);//初期化 I2C 外部設定、OLED 通讯用 LPUART_DRV_Init(INST_LPUART1, &lpuart1_State, &lpuart1_InitConfig0); //初期化串口   CAN0_Init(); CAN1_Init(); CAN2_Init();   oled_init(); //OLED 構成パラメータの初期化 OLED_TITLE((uint8_t*)"S32K144",(uint8_t*)" CAN");//OLED显示标题 u1_printf("初期化完了,MCU の動作周波数は %d Mhz \r\n",MCU_Freq);     while(1)     { /*按键处理*/ pinstate = KEY_Proc (0); /*if(pinstate ==BTN1_PRES ) { can_message_t Tx_msg = { .cs = 0U、 .id = 0x01、 .data[0] = 0x0、 .data[1] = 0x1、 .data[2] = 0x2、 .data[3] = 0x3、 .data[4] = 0x4、 .data[5] = 0x5、 .data[6] = 0x6、 .data[7] = 0x7、 .length = 8 }; CAN_Send(&can_pal0_instance, TX_MAILBOX_CAN0, &Tx_msg); u1_printf("CAN0送信报文\r\n");   } else if(pinstate == BTN2_PRES ) { can_message_t Tx_msg = { .cs = 0U、 .id = 0x02、 .data[0] = 0x20、 .data[1] = 0x21、 .data[2] = 0x22、 .data[3] = 0x23、 .data[4] = 0x24、 .data[5] = 0x25、 .data[6] = 0x26、 .data[7] = 0x27、 .length = 8 }; CAN_Send(&can_pal1_instance, TX_MAILBOX_CAN1, &Tx_msg); u1_printf("CAN1送信报文\r\n"); } else if(pinstate == BTN3_PRES ) { can_message_t Tx_msg = { .cs = 0U、 .id = 0x03、 .data[0] = 0x30、 .data[1] = 0x31、 .data[2] = 0x32、 .data[3] = 0x33、 .data[4] = 0x34、 .data[5] = 0x35、 .data[6] = 0x36、 .data[7] = 0x37、 .length = 8 }; CAN_Send(&can_pal2_instance, TX_MAILBOX_CAN2, &Tx_msg); u1_printf("CAN2送信报文\r\n"); }*/ u1_printf("123456\r\n"); /* can_message_t Tx_msg = { .cs = 0U、 .id = 0x03、 .data[0] = 0x30、 .data[1] = 0x31、 .data[2] = 0x32、 .data[3] = 0x33、 .data[4] = 0x34、 .data[5] = 0x35、 .data[6] = 0x36、 .data[7] = 0x37、 .length = 8 }; CAN_Send(&can_pal1_instance, TX_MAILBOX_CAN1, &Tx_msg);*/ // 標準コードを送信します(照合用) delay_ms(100); can_message_t std_msg0 = { .cs = 0U、 .id = 0x1FFFF111U、 .data[0] = 0x30、 .data[1] = 0x31、 .data[2] = 0x32、 .data[3] = 0x33、 .data[4] = 0x34、 .data[5] = 0x35、 .data[6] = 0x36、 .data[7] = 0x37、 .length = 8 }; status_t ret = CAN_Send(&can_pal2_instance, TX_MAILBOX_CAN2, &std_msg0); if(ret != STATUS_SUCCESS) { u1_printf("CAN2 std_msg0 送信失敗、戻り値:%d\r\n",ret); } delay_ms(100);   can_message_t Tx_msg0 = { .cs = 0U、 .id = 0x1FFFFFFFU、 .data[0] = 0x30、 .data[1] = 0x31、 .data[2] = 0x32、 .data[3] = 0x33、 .data[4] = 0x34、 .data[5] = 0x35、 .data[6] = 0x36、 .data[7] = 0x37、 .length = 8 }; CAN_Send(&can_pal2_instance, TX_MAILBOX_CAN2, &Tx_msg0); delay_ms(100); if (IRQ_CAN0_RX == 1) { int i; u1_printf("CAN0 RECV ID:0x%x \r\n",recvMsg_CAN0.id); for(i=0; i { u1_printf("データ %d : %x\r\n",i,recvMsg_CAN0.data[i]); if(i==recvMsg_CAN0.length-1) u1_printf("***************\r\n"); } IRQ_CAN0_RX=0; }   if (IRQ_CAN1_RX == 1) { int i; u1_printf("CAN1 RECV ID:0x%x \r\n",recvMsg_CAN1.id); for(i=0; i { u1_printf("データ %d : %x\r\n",i,recvMsg_CAN1.data[i]); if(i==recvMsg_CAN1.length-1) u1_printf("***************\r\n"); } IRQ_CAN1_RX=0; }   if (IRQ_CAN2_RX == 1) { int i; u1_printf("CAN2 RECV ID:0x%x \r\n",recvMsg_CAN2.id); for(i=0; i { u1_printf("データ %d : %x\r\n",i,recvMsg_CAN2.data[i]); if(i==recvMsg_CAN2.length-1) u1_printf("***************\r\n"); } IRQ_CAN2_RX=0; } /*OLED表示*/ sprintf((char*)CANRXDATA_STR1,"CAN0 %02X %02X %02X %02X", recvMsg_CAN2.data[0]、recvMsg_CAN2.data[1]、recvMsg_CAN2.data[2]、recvMsg_CAN2.data[3]); // 変更点:删除(uint8_t)强转,格式符変更は%08X sprintf((char*)CANRXDATA_STR2,"ID:%08X %02X %02X %02X %02X", recvMsg_CAN2.id、recvMsg_CAN2.data[4]、recvMsg_CAN2.data[5]、recvMsg_CAN2.data[6]、recvMsg_CAN2.data[7]); OLED_ShowString(0,2,CANRXDATA_STR1,8,0); OLED_ShowString(0,3,CANRXDATA_STR2,8,0);   /*sprintf((char*)CANRXDATA_STR1,"CAN1 %02X %02X %02X %02X",recvMsg_CAN1.data[0],recvMsg_CAN1.data[1],recvMsg_CAN1.data[2],recvMsg_CAN1.data[3]); sprintf((char*)CANRXDATA_STR2,"ID%02X %02X %02X %02X %02X",(uint8_t)recvMsg_CAN1.id,recvMsg_CAN1.data[4],recvMsg_CAN1.data[5],recvMsg_CAN1.data[6],recvMsg_CAN1.data[7]); OLED_ShowString(0,4,CANRXDATA_STR1,8,0); OLED_ShowString(0,5,CANRXDATA_STR2,8,0);   sprintf((char*)CANRXDATA_STR1,"CAN2 %02X %02X %02X %02X",recvMsg_CAN2.data[0],recvMsg_CAN2.data[1],recvMsg_CAN2.data[2],recvMsg_CAN2.data[3]); sprintf((char*)CANRXDATA_STR2,"ID%02X %02X %02X %02X %02X",(uint8_t)recvMsg_CAN2.id,recvMsg_CAN2.data[4],recvMsg_CAN2.data[5],recvMsg_CAN2.data[6],recvMsg_CAN2.data[7]); OLED_ShowString(0,6,CANRXDATA_STR1,8,0); OLED_ShowString(0,7,CANRXDATA_STR2,8,0);*/ /*OLED表示*/   PINS_DRV_TogglePins(PTD, 1 << 0); PINS_DRV_TogglePins(PTD, 1 << 1); PINS_DRV_TogglePins(PTD, 1 << 15); PINS_DRV_TogglePins(PTD, 1 << 16); delay_ms(100);    } /*** この行より先にコードを記述しないでください。記述すると、コード生成時に削除されます。***/ /*** RTOS 起動コード。マクロPEX_RTOS_STARTはRTOSコンポーネントによって定義されます。このコードを変更しないでください!!! ***/ #ifdef PEX_RTOS_START PEX_RTOS_START(); /* 選択されたRTOSの起動。マクロはRTOSコンポーネントによって定義されます。*/ #endif /*** RTOS起動コードの終了。***/ /*** プロセッサ Expert メインルーチン終了。このコードを変更しないでください!!! ***/ のために(;;) { if(exit_code != 0) { 壊す;    }   } 終了コードを返します。 /*** プロセッサ Expert メインルーチン終了。以下にコードを書かないでください!!! ***/ } /*** メインルーチンの終了。このテキストは変更しないでください!!! ***/   /* メイン処理終了 */ /*! ** @} */ /* ** ################################################################### ** ** このファイルはプロセッサ Expert 10.1 [05.21]によって作成されました ** NXP S32Kシリーズのマイクロコントローラ用。 ** ** ################################################################### */ Re: Using the SDK's CAN communication S32K144 DEMO and making modifications, the sending of extended ハイ CAN_Send を呼び出す前に、まずCAN_ConfigTxBuffを呼び出してください。 「拡張IDでCANフレームを受け取れない」の議論を参照してください どのSDKバージョンを使っているか分からないので、 SRR ビットが1に設定されているか確認することをお勧めします。詳細については、 「FlexCAN Txが拡張IDを送信する場合、SRRビットを設定する必要がありますか?」を参照してください。 よろしくお願いします、 ロビン ------------------------------------------------------------------------------- 注記: この投稿があなたの質問への回答になっている場合は、「解決策として承認」ボタンをクリックしてください。ありがとう! - 前回の投稿から7週間Threadをフォローしており、その後の返信は無視しています もし後で関連する質問があれば、新しいThreadを開き、閉じたThreadを参照してください。 -------------------------------------------------------------------------------
View full article
S32K314 UART 最近在调试S32K314串口的时候遇到了一个问题,之前使用的是GD32/STM32平台,在串口用作实时打印发送的时候,我的做法是这样的:由APP层处理打印字符,调用底层写函数以中断的方式发送出去 这里会直接写到数据寄存器中,很快就会发送出去,所以当APP层有庞大的数据发送下来也不用慌张,因为还有队列,发送数据很快。但是当使用S32K3我发现异步发送函数执行起来比较慢Lpuart_Uart_Ip_AsyncSend,里面一层套一层,相对来说同样字节的打印数据,S32K3比GD32要慢很多。AI给出一个办法 在APP层将一个一个写入的方式改成用大缓存写入底层,然后底层写函数和中断用下面这种方式 这种方式在速度上的确会有所进步,不过要占用很大的ram空间,请问有没有什么更好的办法在空间和效率上都更好一些? Re: S32K314 UART 你们是在MCU层面使用操作系统,还是直接在裸机上运行? Re: S32K314 UART 使用的操作系统 Re: S32K314 UART Hi@Joker_Y 如果可以的话,你可以尝试直接用寄存器来实现LPUART的发送。 Re: S32K314 UART 请问应该怎么操作,麻烦发一下示例。
View full article
2026年十大免费立即获得Adopt Me宠物的方法 如果你玩过 Roblox 的 Adopt Me 游戏,你肯定知道收集稀有、传奇和超稀有宠物是多么令人兴奋。从龙和独角兽到独特的活动宠物,打造强大的宠物收藏是游戏中最令人愉悦的部分之一。然而,并非所有人都愿意花费 Robux 来扩充存货。好消息是,有很多合法途径可以免费获得 Adopt Me 宠物,而无需花费真金白银。 ➤➤ 点击此处 在本指南中,我们将探讨获得免费 Adopt Me 宠物的 10 种最佳方法,并帮助您安全有效地扩充您的宠物收藏。 1. 完成每日登录奖励 获得免费 Adopt Me 宠物最简单的方法之一就是每天登录游戏。Adopt Me 会奖励活跃玩家每日连胜奖励,包括游戏币、物品,以及偶尔获得蛋的机会。 保持连续登录的时间越长,获得的奖励就越多。坚持不懈是关键,随着时间的推移,这些奖励可以帮助你购买能孵化出珍贵宠物的蛋。 2.孵化免费蛋 在《Adopt Me》游戏中,鸡蛋是宠物的主要来源。玩家可以使用游戏过程中获得的金币购买各种彩蛋。最受欢迎的选择包括裂纹蛋、宠物蛋和皇家蛋。 通过参与日常活动并积累 Robux,您可以不断购买鸡蛋而无需花费 Robux。每个蛋都有机会免费孵化出稀有和传说级宠物。 3. 参与季节性活动 Adopt Me 经常在节假日和重大庆典期间举办特别活动。这些活动通常会推出限时宠物,这些宠物可以通过游戏挑战获得,而不是用 Robux 购买。 万圣节、圣诞节、复活节和夏季活动尤其受到希望获得免费 Adopt Me 宠物的玩家的欢迎。完成活动任务并收集活动货币,即可在活动结束前解锁专属宠物。 4. 与其他玩家进行明智的交易 交换宠物是扩充宠物收藏的最佳途径之一。即使你没有传奇宠物,你也可以通过策略性地交易普通和不常见的宠物来逐步提升。 寻找愿意交换重复宠物或需要你拥有的特定物品的玩家。随着时间的推移,明智的交易可以帮助你获得原本难以获得的宠物。 务必使用官方游戏内交易系统,避免参与任何承诺在游戏外免费赠送宠物的骗局。 5. 完成任务赚取金币 Adopt Me 提供多种活动,玩家可以通过这些活动获得游戏币奖励。喂养宠物、上学、露营、洗澡以及完成其他日常任务都能产生收入,这些收入可以用来购买鸡蛋。 你越活跃,积累积分的速度就越快。许多经验丰富的玩家只需定期完成任务就能赚取数千美元,从而每周可以孵化多个蛋。 6. 参加赠品活动 许多 Adopt Me 内容创作者会在 YouTube、Discord 和社交媒体等平台上举办赠送活动。这些赠品通常包括传奇宠物、稀有蛋和珍贵物品。 参加任何抽奖活动之前,请务必确认该活动是由信誉良好的主办方举办的。正规的赠送活动绝不会要求您提供密码或帐户信息。参与信誉良好的赠送活动是获得免费 Adopt Me 宠物的绝佳途径。 7. 提升宠物等级和年龄 玩家通常更看重已经长大的宠物,而不是刚出生的宠物。通过花时间完成各种任务来加速宠物的成长,可以显著提高它们的交易价值。 一只成年宠物在交易中可能值多只幼年宠物。这种策略可以让你把普通宠物变成更好的机会,最终无需花费 Robux 就能获得更稀有的宠物。 8. 加入活跃的 Adopt Me 社区 对于想要免费获得宠物的玩家来说,Adopt Me 社区可以成为宝贵的资源。Roblox 群组、Discord 服务器和社交媒体社区经常组织交易活动、比赛和社区赠送活动。 活跃的社区还会提供有关市场价值、即将发生的事件和安全交易方式的有用建议。参与这些社群活动可以为你带来一些你原本可能会错过的机会。 9. 充分利用最新更新 《Adopt Me》的每一次重大更新都会带来新的内容和机会。新的彩蛋、宠物、活动和游戏功能通常会让活跃玩家更容易获得丰厚的奖励。 请留意更新公告,并在新内容发布后立即参与。尽早参与有时可以帮助你在宠物变得稀有且备受追捧之前就获得它们。 10. 运用宠物管理策略 有效管理宠物可以增加你随着时间的推移获得更好宠物的机会。专注于同时培养多只宠物,高效完成任务,并尽可能节省金币。 许多成功的玩家会采用其他策略,例如同时照顾多只宠物或结合家庭游戏功能来最大化收益。更好的资源管理可以带来更多的蛋、更多的孵化,最终带来更多的免费宠物。 如何避免免费宠物骗局 在寻找免费的 Adopt Me 宠物时,你很可能会遇到声称可以提供即时传奇宠物的网站、视频或个人。请注意功能安全并遵守以下功能安全提示: 千万不要泄露你的 Roblox 密码。 避免访问声称可以免费获得宠物的网站。 请仅使用官方的Adopt Me交易系统。 参与抽奖活动前,请先核实主办方信息。 在您的 Roblox 帐户上启用双重身份验证。 请记住,合法的免费宠物只能通过游戏、交易、活动和可信的社区活动获得。 结束语 免费获得 Adopt Me 宠物不需要花费 Robux。通过每日登录、完成任务、参与活动、孵化蛋、参加赠送活动以及明智地进行交易,您可以稳步建立起令人印象深刻的宠物收藏。 最成功的玩家会将这些方法中的几种结合起来,并保持活跃在游戏中。随着时间的推移,耐心和坚持不懈可以帮助你解锁稀有、超稀有甚至传奇宠物,而无需花费真金白银。 无论你是正在寻找第一只宠物的新手,还是想要扩充收藏的老玩家,这 10 种免费获得 Adopt Me 宠物的方法都能帮助你享受 Adopt Me 的一切乐趣,同时还能省钱。
View full article
Scribehow Viewer https://scribehow.com/o/HJxvcW4YSG-OyAaj5IZiaw/viewer/Rhino_Gold_Gel_Fur_Mannliche_Intimitat_Und_Leistung__qvnKuoGRQxmqFoPsspBHlQ
View full article
起動中にUSBデバイスが認識されない 私はIMX8M Plusプロセッサーを使っています。ファームウェアをUSBからダウンロードするために、ブート構成を0001に設定しました。 これは今回初めて電源を入れるカスタムボードです。 これはuuuツールのログです。 PS C:\NXP\UUU> .\uuu.exe -lsusb NXP IMXチップ用uuu(Universal Update Utility)-- libuuu_1.5.243-0-g230f1b1 コネクテッド既知のUSBデバイス Path Chip Pro vid pid bcdバージョンSerial_no ==================================================================== また、JTAGを接続することもできません。 TDOピンは常時ハイレベルです。 IMX8MPLUS @support @ritesh Re: Not Getting USB Device during Boot 問題は解決しました。 VDD_PLL_ANA_1V8ネットに電源が供給されていないことがわかりました。 @Zhiming_Liuさん、ご回答ありがとうございます。 Re: Not Getting USB Device during Boot こんにちは、 uuu -lsusb に「既知の USB デバイス」が表示されない場合、i.MX8M Plus が ROM シリアルダウンローダーまたは USB SDP モードに正常に移行していないか、USB OTG デバイスが PC によって正しく列挙されていないことを示しています。 JTAG経由での接続ができない、TDO信号がハイのままになっているといった状況から、これは初期段階のボードレベルの起動問題であると考えられます。SoCがリセットを正しく解除していない、重要な電源やクロックに異常がある、ブートモードストラップが正しくサンプリングされていない、あるいはJTAG/USB関連のピンへの接続や電源供給に問題があるなどが考えられます。 よろしくお願いします、 志明
View full article
FRDM-MCXA153 Y1 Crystal Hello, I'm using the FRDM-MCXA153 Eval Kit and I would like to know the purpose of the Y1 Crystal. I see that it is an 8Mhz crystal but it is not populated. Do I need to add that part on the board? Thank you Board Design Re: FRDM-MCXA153 Y1 Crystal AN14798 System Oscillator Usage for MCX A series Frequency is the main parameter for selecting the crystal. For MCX A series MCU, 8 MHz~50 MHz are supported Re: FRDM-MCXA153 Y1 Crystal What's the purpose of the crystal? Re: FRDM-MCXA153 Y1 Crystal Hi @joseph_lindula  Y1 is the reserved footprint for the external 8 MHz crystal on the MCX A153. It is not populated by default on the FRDM-MCXA153 production board. Unless you specifically need to enable an external crystal clock source, there is no need to install it. Thank you. BR Alice
View full article
Using the SDK's CAN communication S32K144 DEMO and making modifications, the sending of extended fra Using the SDK's CAN communication S32K144 DEMO and making modifications, the sending of extended frames failed. I have already changed the idType to CAN_MSG_ID_EXT, but the CAN adapter still received standard frames. The ID I sent was 1FFFFFFF, but the received ID was 7FF. I would appreciate it if experts could help solve this problem.   #include "Cpu.h" #include "delay.h" #include "uart.h" #include"key.h" #include"oled.h"   #include "stdint.h" #include "stdbool.h"     volatile int exit_code = 0;   #define LED1(x)  PINS_DRV_WritePin(PTD,16,!x); #define LED2(x)  PINS_DRV_WritePin(PTD,15,!x); #define LED3(x)  PINS_DRV_WritePin(PTD,1,!x); #define LED4(x)  PINS_DRV_WritePin(PTD,0,!x);   #define Rx_Filter  0x0 char IRQ_CAN0_RX; char IRQ_CAN1_RX; char IRQ_CAN2_RX; can_message_t recvMsg_CAN0; can_message_t recvMsg_CAN1; can_message_t recvMsg_CAN2; #define RX_MASK_ALL_EXT 0x1FFFFFFF #define RX_MAILBOX_CAN0  (0UL) #define TX_MAILBOX_CAN0  (1UL)   #define RX_MAILBOX_CAN1  (2UL) #define TX_MAILBOX_CAN1  (3UL)   #define RX_MAILBOX_CAN2  (4UL) #define TX_MAILBOX_CAN2  (5UL)       /*CAN0回调函数*/ void CAN0_Callback_Func (uint32_t instance,can_event_t event,uint32_t buffIdx,void *flexcanState)   { (void)flexcanState; //此处防止警报 (void)instance; (void)buffIdx; CAN_Receive(&can_pal0_instance, RX_MAILBOX_CAN0, &recvMsg_CAN0); //接收报文并重新注册回调函数 switch(event) //回调事件 { case CAN_EVENT_RX_COMPLETE: //接收完成 事件 IRQ_CAN0_RX =1; break; case CAN_EVENT_TX_COMPLETE: //发送完成事件 break; default: break; }   }       void CAN1_Callback_Func (uint32_t instance,can_event_t event,uint32_t buffIdx,void *flexcanState)   { (void)flexcanState; (void)instance; (void)buffIdx; CAN_Receive(&can_pal1_instance, RX_MAILBOX_CAN1, &recvMsg_CAN1); switch(event) { case CAN_EVENT_RX_COMPLETE: IRQ_CAN1_RX =1; break; case CAN_EVENT_TX_COMPLETE: break; default: break; }   }       void CAN2_Callback_Func (uint32_t instance,can_event_t event,uint32_t buffIdx,void *flexcanState)   { (void)flexcanState; (void)instance; (void)buffIdx; CAN_Receive(&can_pal2_instance, RX_MAILBOX_CAN2, &recvMsg_CAN2); switch(event) { case CAN_EVENT_RX_COMPLETE: IRQ_CAN2_RX =1; break; case CAN_EVENT_TX_COMPLETE: break; default: break; }   }     void CAN0_Init(void) {   CAN_Init(&can_pal0_instance, &can_pal0_Config0);   can_buff_config_t Rx_buffCfg =  {       .enableFD = false,       .enableBRS = false,       .fdPadding = 0U,       .idType = CAN_MSG_ID_EXT,       .isRemote = false   };     can_buff_config_t Tx_buffCfg =  {       .enableFD = false,       .enableBRS = false,       .fdPadding = 0U,       .idType = CAN_MSG_ID_EXT,       .isRemote = false   };   CAN_ConfigRxBuff(&can_pal0_instance, RX_MAILBOX_CAN0, &Rx_buffCfg, Rx_Filter); //注册接收配置和MSGID过滤器(如过滤器配置为0x1,则只接受msgid 0x1发来的报文)   CAN_ConfigTxBuff(&can_pal0_instance, TX_MAILBOX_CAN0, &Tx_buffCfg); //配置发送   /*设置MSGID的掩码,掩码粗略可以理解为对11bit MSGID地址的过滤    如果某bit位需要过滤设置为1,不过滤设置为0,例如掩码设置为0x7ff则过滤全部标准id,如果设置为0x7fe,这只能接受0x01的报文(不存在0x0的地址)*/   CAN_SetRxFilter(&can_pal0_instance, CAN_MSG_ID_EXT, RX_MAILBOX_CAN0, 0x1FFFFFFFU);//设置MSGID掩码,   CAN_InstallEventCallback(&can_pal0_instance,&CAN0_Callback_Func,(void*)0); //注册回调函数   CAN_Receive(&can_pal0_instance, RX_MAILBOX_CAN0, &recvMsg_CAN0); //*****重点****此函数不只有接收作用 还有续订回调函数的作用. }       void CAN1_Init(void) {   CAN_Init(&can_pal1_instance, &can_pal1_Config0);   can_buff_config_t Rx_buffCfg =  {       .enableFD = false,       .enableBRS = false,       .fdPadding = 0U,       .idType = CAN_MSG_ID_EXT,       .isRemote = false   };     can_buff_config_t Tx_buffCfg =  {       .enableFD = false,       .enableBRS = false,       .fdPadding = 0U,       .idType = CAN_MSG_ID_EXT,       .isRemote = false   };   CAN_ConfigRxBuff(&can_pal1_instance, RX_MAILBOX_CAN1, &Rx_buffCfg, Rx_Filter);   CAN_ConfigTxBuff(&can_pal1_instance, TX_MAILBOX_CAN1, &Tx_buffCfg);   CAN_SetRxFilter(&can_pal1_instance,CAN_MSG_ID_EXT,RX_MAILBOX_CAN1,0x1FFFFFFFU);   CAN_InstallEventCallback(&can_pal1_instance,&CAN1_Callback_Func,(void*)0);   CAN_Receive(&can_pal1_instance, RX_MAILBOX_CAN1, &recvMsg_CAN1); }           void CAN2_Init(void) {   CAN_Init(&can_pal2_instance, &can_pal2_Config0);   can_buff_config_t Rx_buffCfg =  {       .enableFD = false,       .enableBRS = false,       .fdPadding = 0U,       .idType = CAN_MSG_ID_EXT,       .isRemote = false   };     can_buff_config_t Tx_buffCfg =  {       .enableFD = false,       .enableBRS = false,       .fdPadding = 0U,       .idType = CAN_MSG_ID_EXT,       .isRemote = false   };   CAN_ConfigRxBuff(&can_pal2_instance, RX_MAILBOX_CAN2, &Rx_buffCfg, Rx_Filter);   CAN_ConfigTxBuff(&can_pal2_instance, TX_MAILBOX_CAN2, &Tx_buffCfg);   CAN_SetRxFilter(&can_pal2_instance,CAN_MSG_ID_EXT,RX_MAILBOX_CAN2,0x1FFFFFFFU);   CAN_InstallEventCallback(&can_pal2_instance,&CAN2_Callback_Func,(void*)0);   CAN_Receive(&can_pal2_instance, RX_MAILBOX_CAN2, &recvMsg_CAN2); }       int main(void) {   /* Write your local variable definition here */ uint8_t pinstate; int MCU_Freq; uint8_t CANRXDATA_STR1[17]; uint8_t CANRXDATA_STR2[17];   /*** Processor Expert internal initialization. DON'T REMOVE THIS CODE!!! ***/   #ifdef PEX_RTOS_INIT     PEX_RTOS_INIT();                   /* Initialization of the selected RTOS. Macro is defined by the RTOS component. */   #endif   /*** End of Processor Expert internal initialization.                    ***/   CLOCK_SYS_Init(g_clockManConfigsArr, CLOCK_MANAGER_CONFIG_CNT,g_clockManCallbacksArr, CLOCK_MANAGER_CALLBACK_CNT); CLOCK_SYS_UpdateConfiguration(0U, CLOCK_MANAGER_POLICY_AGREEMENT); MCU_Freq = delay_init();//初始化delay函数 PINS_DRV_Init(NUM_OF_CONFIGURED_PINS, g_pin_mux_InitConfigArr); //初始化IO I2C_MasterInit(&i2c1_instance, &i2c1_MasterConfig0);//初始化I2C外设,用于OLED通讯 LPUART_DRV_Init(INST_LPUART1, &lpuart1_State, &lpuart1_InitConfig0); //初始化串口   CAN0_Init(); CAN1_Init(); CAN2_Init();   oled_init(); //OLED配置参数初始化 OLED_TITLE((uint8_t*)"S32K144",(uint8_t*)" CAN");//OLED显示标题 u1_printf("初始化完毕,MCU运行频率为 %d Mhz \r\n",MCU_Freq);     while(1)     { /*按键处理*/ pinstate = KEY_Proc (0); /*if(pinstate ==BTN1_PRES ) { can_message_t Tx_msg = { .cs = 0U, .id = 0x01, .data[0] = 0x0, .data[1] = 0x1, .data[2] = 0x2, .data[3] = 0x3, .data[4] = 0x4, .data[5] = 0x5, .data[6] = 0x6, .data[7] = 0x7, .length = 8 }; CAN_Send(&can_pal0_instance, TX_MAILBOX_CAN0, &Tx_msg); u1_printf("CAN0发送报文\r\n");   } else if(pinstate ==BTN2_PRES ) { can_message_t Tx_msg = { .cs = 0U, .id = 0x02, .data[0] = 0x20, .data[1] = 0x21, .data[2] = 0x22, .data[3] = 0x23, .data[4] = 0x24, .data[5] = 0x25, .data[6] = 0x26, .data[7] = 0x27, .length = 8 }; CAN_Send(&can_pal1_instance, TX_MAILBOX_CAN1, &Tx_msg); u1_printf("CAN1发送报文\r\n"); } else if(pinstate ==BTN3_PRES ) { can_message_t Tx_msg = { .cs = 0U, .id = 0x03, .data[0] = 0x30, .data[1] = 0x31, .data[2] = 0x32, .data[3] = 0x33, .data[4] = 0x34, .data[5] = 0x35, .data[6] = 0x36, .data[7] = 0x37, .length = 8 }; CAN_Send(&can_pal2_instance, TX_MAILBOX_CAN2, &Tx_msg); u1_printf("CAN2发送报文\r\n"); }*/ u1_printf("123456\r\n"); /* can_message_t Tx_msg = { .cs = 0U, .id = 0x03, .data[0] = 0x30, .data[1] = 0x31, .data[2] = 0x32, .data[3] = 0x33, .data[4] = 0x34, .data[5] = 0x35, .data[6] = 0x36, .data[7] = 0x37, .length = 8 }; CAN_Send(&can_pal1_instance, TX_MAILBOX_CAN1, &Tx_msg);*/ // 发送标准帧(用于对照) delay_ms(100); can_message_t std_msg0 = { .cs = 0U, .id = 0x1FFFF111U, .data[0] = 0x30, .data[1] = 0x31, .data[2] = 0x32, .data[3] = 0x33, .data[4] = 0x34, .data[5] = 0x35, .data[6] = 0x36, .data[7] = 0x37, .length = 8     }; status_t ret = CAN_Send(&can_pal2_instance, TX_MAILBOX_CAN2, &std_msg0); if(ret != STATUS_SUCCESS) {     u1_printf("CAN2 send std_msg0 fail,ret:%d\r\n",ret); } delay_ms(100);   can_message_t Tx_msg0 = { .cs = 0U, .id = 0x1FFFFFFFU,     .data[0] = 0x30,     .data[1] = 0x31,     .data[2] = 0x32, .data[3] = 0x33, .data[4] = 0x34, .data[5] = 0x35,     .data[6] = 0x36, .data[7] = 0x37, .length = 8 }; CAN_Send(&can_pal2_instance, TX_MAILBOX_CAN2, &Tx_msg0); delay_ms(100); if (IRQ_CAN0_RX ==1) { int i; u1_printf("CAN0 RECV ID:0x%x \r\n",recvMsg_CAN0.id); for(i=0; i { u1_printf("Data %d : %x\r\n",i,recvMsg_CAN0.data[i]); if(i==recvMsg_CAN0.length-1) u1_printf("***************\r\n"); } IRQ_CAN0_RX=0; }   if (IRQ_CAN1_RX ==1) { int i; u1_printf("CAN1 RECV  ID:0x%x \r\n",recvMsg_CAN1.id); for(i=0; i { u1_printf("Data %d : %x\r\n",i,recvMsg_CAN1.data[i]); if(i==recvMsg_CAN1.length-1) u1_printf("***************\r\n"); } IRQ_CAN1_RX=0; }   if (IRQ_CAN2_RX ==1) { int i; u1_printf("CAN2 RECV  ID:0x%x \r\n",recvMsg_CAN2.id); for(i=0; i { u1_printf("Data %d : %x\r\n",i,recvMsg_CAN2.data[i]); if(i==recvMsg_CAN2.length-1) u1_printf("***************\r\n"); } IRQ_CAN2_RX=0; } /*OLED显示*/ sprintf((char*)CANRXDATA_STR1,"CAN0 %02X %02X %02X %02X",         recvMsg_CAN2.data[0],recvMsg_CAN2.data[1],recvMsg_CAN2.data[2],recvMsg_CAN2.data[3]); // 改动点:删除(uint8_t)强转,格式符改为%08X sprintf((char*)CANRXDATA_STR2,"ID:%08X %02X %02X %02X %02X",         recvMsg_CAN2.id,recvMsg_CAN2.data[4],recvMsg_CAN2.data[5],recvMsg_CAN2.data[6],recvMsg_CAN2.data[7]); OLED_ShowString(0,2,CANRXDATA_STR1,8,0); OLED_ShowString(0,3,CANRXDATA_STR2,8,0);   /*sprintf((char*)CANRXDATA_STR1,"CAN1 %02X %02X %02X %02X",recvMsg_CAN1.data[0],recvMsg_CAN1.data[1],recvMsg_CAN1.data[2],recvMsg_CAN1.data[3]); sprintf((char*)CANRXDATA_STR2,"ID%02X %02X %02X %02X %02X",(uint8_t)recvMsg_CAN1.id,recvMsg_CAN1.data[4],recvMsg_CAN1.data[5],recvMsg_CAN1.data[6],recvMsg_CAN1.data[7]); OLED_ShowString(0,4,CANRXDATA_STR1,8,0); OLED_ShowString(0,5,CANRXDATA_STR2,8,0);   sprintf((char*)CANRXDATA_STR1,"CAN2 %02X %02X %02X %02X",recvMsg_CAN2.data[0],recvMsg_CAN2.data[1],recvMsg_CAN2.data[2],recvMsg_CAN2.data[3]); sprintf((char*)CANRXDATA_STR2,"ID%02X %02X %02X %02X %02X",(uint8_t)recvMsg_CAN2.id,recvMsg_CAN2.data[4],recvMsg_CAN2.data[5],recvMsg_CAN2.data[6],recvMsg_CAN2.data[7]); OLED_ShowString(0,6,CANRXDATA_STR1,8,0); OLED_ShowString(0,7,CANRXDATA_STR2,8,0);*/ /*OLED显示*/   PINS_DRV_TogglePins(PTD, 1 << 0); PINS_DRV_TogglePins(PTD, 1 << 1); PINS_DRV_TogglePins(PTD, 1 << 15); PINS_DRV_TogglePins(PTD, 1 << 16); delay_ms(100);     }   /*** Don't write any code pass th5is line, or it will be deleted during code generation. ***/   /*** RTOS startup code. Macro PEX_RTOS_START is defined by the RTOS component. DON'T MODIFY THIS CODE!!! ***/   #ifdef PEX_RTOS_START     PEX_RTOS_START();                  /* Startup of the selected RTOS. Macro is defined by the RTOS component. */   #endif   /*** End of RTOS startup code.  ***/   /*** Processor Expert end of main routine. DON'T MODIFY THIS CODE!!! ***/   for(;;) {     if(exit_code != 0) {       break;     }   }   return exit_code;   /*** Processor Expert end of main routine. DON'T WRITE CODE BELOW!!! ***/ } /*** End of main routine. DO NOT MODIFY THIS TEXT!!! ***/   /* END main */ /*! ** @} */ /* ** ################################################################### ** **     This file was created by Processor Expert 10.1 [05.21] **     for the NXP S32K series of microcontrollers. ** ** ################################################################### */ Re: Using the SDK's CAN communication S32K144 DEMO and making modifications, the sending of extended Hi Before calling CAN_Send, please call CAN_ConfigTxBuff first. Refer to the discussion in can not receive the CAN frame with extended ID Since I'm unsure which SDK version you're using, I suggest you check if SRR bit is set to one. For details, please refer to: When FlexCAN Tx send Extended ID, should the SRR bit be set? 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. -------------------------------------------------------------------------------
View full article
LPSPI0およびEMACのパッドタイプ こんにちは、 S32K344のリファレンス・マニュアルによると、最大スイッチング周波数をサポートするパッドタイプは以下の通りです。 - 標準: 10 MHz - スタンダードプラス:25MHz - 中速:50MHz - 高速: 120 MHz 標準および標準プラスパッドの選択がLPSPIとEMACペリフェラルにどのような制約をもたらすのか理解しようとしています。 1.EMACの場合、RMIIインターフェースを使用する場合、基準クロックは50 MHzです。つまり、RX/TXCLK、TXD0、TXD1、RXD0、RXD1のピンは50 MHz信号をサポートするはずです。ただし、S32K344_257bgaのピン構成では、すべてのRX/TXCLK、TXD0、TXD1、RXD0、およびRXD1ピンは、標準パッドまたは標準プラスパッド上にあります。これはつまり、S32K344ではRMIIがサポートされていないということでしょうか? 2. EMACの場合、MIIインターフェースを使用する場合、参照クロックは100 Mbpsイーサネットで25 MHz、10 Mbpsイーサネットで2.5 MHzです。これは、MIIインターフェースで100Mbpsのイーサネットを使いたい場合、標準のプラスパッドを使うべきだということですか? 3. LPSPIについて、LPSPIが標準および標準のプラスパッドで確実にサポートするLPSPI0およびLPSPI1-5の最大レートを提供できますか? ありがとうございます プーヤ Re: Pad Types for LPSPI0 and EMAC こんにちは、 1-2) EMACにおいて、パッドスイッチング周波数の制限は主にMCUで駆動される信号に関係します。 RMII/MIIはS32K344で完全にサポートされています。 RMIIの場合、50 MHzの REF_CLK 信号と RX 信号は MCU への入力なので、MCU 出力スイッチングの観点からは Standard または Standard Plus パッド上に問題はありません。重要な信号はTXD[1:0]とTX_ENであり、これらは50 MHz RMIIクロックで切り替わるMCU出力です。これらは、推奨されるピン使用方法に従って、中速またはできれば高速のパッドに割り当てる必要があります。   MII 100 Mbpsの場合、MCUの送信信号は25 MHzのMIIクロックに切り替わるため、これらの出力には標準プラスパッドが一般的に使えます。ただし、より良いマージンのためにミディアムパッドの使用が推奨されます。TX/RXクロックやその他の受信側信号は入力であるため、パッド出力のスイッチング周波数制限は主な懸念事項ではありません。 RMに添付されたIOMUXファイル「S32K34x_Ethernet Use Cases」シートをご確認ください。そこには推奨されるイーサネットパッドの使用方法が記載されています。 3) デバイスRMおよびDSによると、使用するピンに関係なくすべてのSPIインスタンスで10MHzですが、LPSPI0では特定のピンやモードに応じて15MHzまたは20MHzになることがあります(表表48参照)。LPSPI0 20 MHz および 15 MHz DS の組み合わせ。 BR、ペトル Re: Pad Types for LPSPI0 and EMAC こんにちは、 ご返信ありがとうございます。 1-2) S32K344-WBでは、S32K344プロセッサがRMIIインターフェースを使ってイーサネット・スイッチに接続されています。ただし、選択されたTX_EN、TXD0、TXD1ピンはすべて標準プラスパッド(R3、U2、U3)上にあります。RMIIの基準クロックは50MHzなので、MCU出力のスイッチング周波数は標準のプラスパッドを使うべきなので、問題になりませんか? 3) LPSPI用のクロックは10 MHzですが、コントローラーモードでLPSPI出力に標準パッドを割り当てた場合、LPSPIは常に安定して動作しますか?あるいは、境界線上にいるのだから、信頼性の高い通信のために標準的なパッドを割り当てるべきだろうか? 一般的に、パッドの種類の周波数制限について、そしてなぜプロセッサの観点から出力信号にのみ重要なのか、もう少し詳しく説明していただけますか? ありがとうございます プーヤ
View full article
Scribehow Viewer https://scribehow.com/o/HJxvcW4YSG-OyAaj5IZiaw/viewer/Rhino_Gold_Gel_Fur_Mannliche_Intimitat_Und_Leistung__qvnKuoGRQxmqFoPsspBHlQ
View full article
Top 10 Ways To Get Free Adopt Me Pets Instantly in 2026 If you play Roblox's Adopt Me, you already know how exciting it is to collect rare, legendary, and ultra-rare pets. From dragons and unicorns to unique event pets, building a strong pet collection is one of the most enjoyable parts of the game. However, not everyone wants to spend Robux to expand their inventory. The good news is that there are several legitimate ways to get free Adopt Me pets without spending real money. ➤➤ Click Here To   In this guide, we'll explore the top 10 ways to get free Adopt Me pets and help you grow your collection safely and efficiently. 1. Complete Daily Login Rewards One of the easiest ways to earn free Adopt Me pets is by logging into the game every day. Adopt Me rewards active players with daily streak bonuses, including Bucks, items, and occasional opportunities to obtain eggs. The longer you maintain your login streak, the more rewards you receive. Consistency is key, and over time these rewards can help you purchase eggs that hatch into valuable pets. 2. Hatch Free Eggs Eggs are the primary source of pets in Adopt Me. Players can purchase various eggs using Bucks earned through gameplay. Some of the most popular options include the Cracked Egg, Pet Egg, and Royal Egg. By participating in daily activities and saving your Bucks, you can continuously purchase eggs without spending Robux. Every egg gives you a chance to hatch rare and legendary pets for free. 3. Participate in Seasonal Events Adopt Me frequently hosts special events during holidays and major celebrations. These events often introduce limited-time pets that can be earned through gameplay challenges rather than purchased with Robux. Halloween, Christmas, Easter, and Summer events are especially popular among players looking for free Adopt Me pets. Completing event tasks and collecting event currencies can unlock exclusive pets before the event ends. 4. Trade Smart with Other Players Trading is one of the best ways to expand your pet collection. Even if you don't have legendary pets, you can work your way up by trading common and uncommon pets strategically. Look for players who are willing to exchange duplicate pets or who need specific items you own. Over time, smart trading can help you obtain pets that would otherwise be difficult to acquire. Always use the official in-game trading system and avoid scams promising free pets outside the game. 5. Complete Tasks and Earn Bucks Adopt Me offers numerous activities that reward players with Bucks. Feeding pets, attending school, camping, showering, and completing other daily tasks generate income that can be used to buy eggs. The more active you are, the faster you'll accumulate Bucks. Many experienced players earn thousands of Bucks simply by completing tasks regularly, allowing them to hatch multiple eggs every week. 6. Join Giveaways Many Adopt Me content creators host giveaways on platforms like YouTube, Discord, and social media. These giveaways often feature legendary pets, rare eggs, and valuable items. Before entering any giveaway, verify that it is hosted by a reputable creator. Legitimate giveaways never require your password or account information. Participating in trusted giveaways can be an excellent way to get free Adopt Me pets. 7. Level Up and Age Your Pets Players often value fully grown pets more highly than newborn pets. By investing time into aging your pets through tasks, you can increase their trading value significantly. A fully grown pet may be worth multiple younger pets in a trade. This strategy allows you to turn common pets into better opportunities and eventually acquire rarer pets without spending Robux. 8. Join Active Adopt Me Communities Adopt Me communities can be valuable resources for players looking for free pets. Roblox groups, Discord servers, and social media communities often organize trading events, contests, and community giveaways. Active communities also provide helpful advice about market values, upcoming events, and safe trading practices. Being involved in these communities can lead to opportunities you might otherwise miss. 9. Take Advantage of New Updates Every major Adopt Me update introduces fresh content and opportunities. New eggs, pets, events, and gameplay features often make it easier for active players to earn valuable rewards. Pay attention to update announcements and participate as soon as new content becomes available. Early participation can sometimes help you obtain pets before they become rare and highly sought after. 10. Use Pet Management Strategies Managing your pets effectively can increase your chances of obtaining better pets over time. Focus on growing multiple pets simultaneously, completing tasks efficiently, and saving Bucks whenever possible. Many successful players use alternate strategies such as caring for several pets at once or combining family gameplay features to maximize earnings. Better resource management leads to more eggs, more hatches, and ultimately more free pets. Tips for Avoiding Free Pet Scams While searching for free Adopt Me pets, you'll likely encounter websites, videos, or individuals claiming to offer instant legendary pets. Be cautious and follow these safety tips: Never share your Roblox password. Avoid websites claiming to generate free pets. Use only the official Adopt Me trading system. Verify giveaway hosts before participating. Enable two-factor authentication on your Roblox account. Remember that legitimate free pets come through gameplay, trading, events, and trusted community activities. Conclusion Getting free Adopt Me pets doesn't require spending Robux. By logging in daily, completing tasks, participating in events, hatching eggs, joining giveaways, and trading wisely, you can steadily build an impressive collection of pets. The most successful players combine several of these methods and remain active in the game. Over time, patience and consistency can help you unlock rare, ultra-rare, and even legendary pets without spending real money. Whether you're a beginner looking for your first pet or a veteran aiming to expand your collection, these top 10 ways to get free Adopt Me pets will help you enjoy everything Adopt Me has to offer while keeping your wallet untouched.
View full article