Multi Source Translation Content

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

Multi Source Translation Content

Discussions

Sort by:
RW612のWiFi経由でモバイルから照明制御のサンプルコードが必要です。 拝啓、 私たちはFRDM -RW612を使っており、RW612をWiFi受信機として使ってモバイルWi-Fiからのコマンドや照明制御に使う予定です。 同じサンプルコードを送れるか確認してください。 よろしくお願いします。 シーマ・ジョシ FRDMトレーニング Re: Need sample code for lighting control from Mobile through WiFi for RW612. こんにちは、 あなたの調子が良いといいのですが。SDK、Zephyr、マターなど、さまざまなリポジトリから入手可能な例をチェックすることをお勧めします。 これらすべてのリソースは、 MCUXpresso for Visual Studio Code | NXP Semiconductors。 また、当社の アプリケーションコードハブから他のデモアプリケーションもチェックすることをお勧めします。 よろしくお願いいたします。 リカルド Re: Need sample code for lighting control from Mobile through WiFi for RW612. こんにちは、 基礎プロジェクトを提案してお手伝いできます。そこから始められます。 Wi-Fi対応のFRDM-RW612の場合、Wi-Fiインターフェースが稼働すれば Mongoose Networking Library をHTTP/WebSocketのウェブサーバーとして使えます。 以下はMongoose WizardがRW612用に生成したMCUXpresso + FreeRTOSの例で、すぐに試すことができます。 https://mongoose.ws/wizard/#/output?board=rw612-w&ide=MCUXpresso&rtos=FreeRTOS&file=README.md この例はシンプルなウェブダッシュボードに関するものですが、Wi-FiとMongooseの統合という確かな出発点を既に提供しています。ダウンロードするには、リンクを開き、 「設定」タブに移動し、 「ソースコードジェネレーター」セクションでローカルディレクトリを選択してから、右上隅にある青色の「C/C++コードを生成」ボタンをクリックしてください。次に、MCUXpressoでファイルを開きます。mongoose/mongoose_glue.hファイルを開き、WIZARD_WIFI_NAME と WIZARD_WIFI_PASS の値を変更して、Wi-Fi の認証情報を設定してください。次に、プロジェクトをビルドしてボードに書き込み、シリアルポートのログを確認してください。IPアドレスが表示されるはずです。 制御照明アプリケーションでは、HTTPエンドポイントやWebSocketハンドラを追加できます。例えば: GET /light/on GET /light/off ポスト/ライト これらのハンドラ内で、ボード固有のGPIO/PWM制御照明コードを呼び出します。モバイルアプリはWi-Fi経由でこれらのエンドポイントにコマンドを送信できます。 マングースのドキュメントは こちらです。 お知らせ:私はMongooseの開発チームの一員です。お役に立てば幸いです。
View full article
SPI communication failed in DMA mode(S32k328) 在调用Rm_Init(&Rm_Config);函数后再串口输出就会出现硬件错误错误。 注释掉Rm_Init(&Rm_Config),调用  显示状态一直为busy,我只列出了关键的初始化函数。 if (Lpspi5_ready_flag == 0u) { spi_status = Lpspi_Ip_AsyncTransmit(&LPSPI5_EXTERNAL_DEVICE, &Spi5TxBuffer[0], &Spi5RxBuffer[0], NUMBER_OF_BYTES, Spi5_EndCallback); if (spi_status != LPSPI_IP_STATUS_SUCCESS) { printf("SpiTp: AsyncTransmit FAIL\r\n"); return; } } static void system_init(void) { /* Initialize Clock */ Clock_Ip_StatusType Status_Init_Clock = CLOCK_IP_ERROR; Status_Init_Clock = Clock_Ip_Init(Clock_Ip_aClockConfig); /* Initialize all pins using the Port driver */ Siul2_Port_Ip_PortStatusType Status_Init_Port = SIUL2_PORT_ERROR; Status_Init_Port = Siul2_Port_Ip_Init(NUM_OF_CONFIGURED_PINS_PortContainer_0_BOARD_InitPeripherals, g_pin_mux_InitConfigArr_PortContainer_0_BOARD_InitPeripherals); /* Initialize interrupt */ IntCtrl_Ip_Init(&IntCtrlConfig_0); /* Initialize Dma */ IntCtrl_Ip_EnableIrq(DMATCD0_IRQn); IntCtrl_Ip_EnableIrq(DMATCD1_IRQn); Dma_Ip_Init(&Dma_Ip_xDmaInitPB); Dma_Mux_Ip_Init(&Dma_Mux_Config); //Rm_Init(&Rm_Config); } /* Initialize each Spi hardware units using*/ Lpspi_Ip_Init(&Lpspi_Ip_PhyUnitConfig_SpiPhyUnit_0_Instance_4); Lpspi_Ip_Init(&Lpspi_Ip_PhyUnitConfig_SpiPhyUnit_1_Instance_5); Lpspi_Ip_Init(&Lpspi_Ip_PhyUnitConfig_SpiPhyUnit_2_Instance_3); /* Update Framesize */ Lpspi_Ip_UpdateFrameSize(&LPSPI4_EXTERNAL_DEVICE, 8U); Lpspi_Ip_UpdateFrameSize(&LPSPI5_EXTERNAL_DEVICE, 8U); Lpspi_Ip_UpdateFrameSize(&LPSPI3_EXTERNAL_DEVICE, 8U); /* Update Transfered Bit order */ Lpspi_Ip_UpdateLsb(&LPSPI4_EXTERNAL_DEVICE, TRUE); Lpspi_Ip_UpdateLsb(&LPSPI5_EXTERNAL_DEVICE, TRUE); Lpspi_Ip_UpdateLsb(&LPSPI3_EXTERNAL_DEVICE, TRUE); /* Update Transfer Mode */ Lpspi_Ip_UpdateTransferMode(LPSPI4_EXTERNAL_DEVICE.Instance, LPSPI_IP_INTERRUPT); Lpspi_Ip_UpdateTransferMode(LPSPI5_EXTERNAL_DEVICE.Instance, LPSPI_IP_INTERRUPT); Lpspi_Ip_UpdateTransferMode(LPSPI3_EXTERNAL_DEVICE.Instance, LPSPI_IP_INTERRUPT); /* SPI5 AsyncTransmit 完成回调 */ static void Spi5_EndCallback(uint8 Instance, Lpspi_Ip_EventType Event) { (void)Instance; if (Event == LPSPI_IP_EVENT_END_TRANSFER) { Spi5TransferOk = TRUE; Spi5TransferFault = FALSE; } else /* LPSPI_IP_EVENT_FAULT */ { Spi5TransferFault = TRUE; Spi5TransferOk = FALSE; } Spi5TransferDone = TRUE; } Re: SPI communication failed in DMA mode(S32k328) hi,@VaneB  根据你的回复我更改了RM 配置DMAMUX 源为通道16和通道17,并且DMA也是对应的通道16和通道17。 1.我注释掉 Rm_Init(&Rm_Config); 保留 Dma_Mux_Ip_Init(&Dma_Mux_Config); 中断能够正常的触发。 2.我注释掉 Dma_Mux_Ip_Init(&Dma_Mux_Config); 保留 Rm_Init(&Rm_Config); 还是会触发硬件错误。 现在已经能够正常使用,要是能解决这个问题那就更完美了,非常感谢! BR, zyzzzz Re: SPI communication failed in DMA mode(S32k328) 嗨@zyzzzz 关于您的配置,我有一些意见。您已将 LPSPI5 配置为使用 DMA;但是,在 RM 配置中,分配给通道 0 和通道 1 的 DMA MUX 源对应于 LPSPI_1,而不是 LPSPI_5。 另外,如果您已经在拨打电话: Dma_Mux_Ip_Init(&Dma_Mux_Config); 无需再拨打电话: Rm_Init(&Rm_Config); 反之亦然。这是因为 Rm_Init() 内部执行以下初始化序列: Rm_Init() └─ Rm_InitGroup1() └─ Rm_Ipw_Dma_Mux_Init() └─ Dma_Mux_Ip_Init() 因此,DMA MUX 被初始化了两次。我建议只保留一个初始化函数。 BR,VaneB Re: SPI communication failed in DMA mode(S32k328) 嗨@zyzzzz 我注意到您正在使用 DMAMUX0 配置 DMA 通道。但是,如果您参考参考手册中包含的 S32K3xx_DMAMUX_map.xlsx 文件,您可以验证 LPSPI_5 DMA 请求映射到 DMAMUX1,而不是 DMAMUX0。 请更新配置,使用 DMAMUX 实例 1 而不是实例 0。 Re: SPI communication failed in DMA mode(S32k328) Hi, @VaneB  很高兴收到你的回复,我明白了你的意思,但是现在不能选择DMAMUX instance 1。 在选择DMA_INSTANCE_0的前提下,选择Dma Hardware Channel 16,就能选择Dma Mux Source为DMA_MUX_1_LPSPI_5_TX_REQUEST。
View full article
LVGLでカメラフレームをスムーズに表示するにはどうすればよいですか? こんにちは、私はMIMXRT1176DMAAチップを使用しています。このボードにはMIPIカメラとMIPI LCDが搭載されており、LCDは主にLVGL GUIの表示に使用されます。 現在、カメラの映像を画面に表示しつつ、カメラ映像の上にLVGLラベルを重ねて表示したいと考えています。私はLVGL Canvasを通じてカメラフレームを表示しようと試みましたが、この方法はカメラフレームをCanvasに転送する際の追加プロセッシングオーバーヘッドが発生し、CPU使用率が高くカメラフィードがカクつく結果となりました。 この問題の解決策があれば教えていただけませんか?例えば、LCDIFV2のレイヤー機能を使って異なるレイヤーのコンテンツを表示することは可能でしょうか?何かアドバイスをいただけると大変ありがたいです。 Re: How to smoothly display camera frames in LVGL? こんにちは、 @Vinos さん。もし秘密でなければ、解決策は何だったのでしょうか? 敬具 Re: How to smoothly display camera frames in LVGL? 解決しました。 Re: How to smoothly display camera frames in LVGL? 試してみたところ、カメラ画面はLVGLタスクを閉じた状態でのみスムーズに動作することが分かりました。現在、Layer0はGUI、Layer1はカメラです。Layer0が閉じられ、Layer1が開かれたときに、Layer2を追加したいです。レイヤー3の中央には、円弧部分を除く全ての部分が透明な中空の円を配置する必要があります。 そこで、ARGB4444フォーマットを使用し、LCD上に四角形を描く簡単なテストを行いました(レイヤー0有効、レイヤー1無効、またはレイヤー0無効、レイヤー1有効)。しかし、得られた画像は透明ではなかった。LCDIFV2_SetLayerBlendConfig関数が呼び出されるたびに、LCDのレイヤー3には画像が表示されません。しかし、この関数をコメントアウトすると、LCDには期待どおりの不透明な画像が表示されます。 以下はコードです。SDKの例「lcdifv2_embedded_alpha_cm7」を参照してください #define LCD_WIDTH 480 #define LCD_HEIGHT 640 #define CENTER_LAYER 2 #define DEMO_FB0_ADDR ((uint32_t)s_frameBuffer[0]) AT_NONCACHEABLE_SECTION_ALIGN( uint8_t s_frameBuffer[1][LCD_HEIGHT][LCD_WIDTH][2], 32); void DEMO_FillFrameBuffer(void) { uint32_t x, y; for (y = 0; y < LCD_HEIGHT; y++) { for (x = 0; x < LCD_WIDTH; x++) { s_frameBuffer[0][y][x][0] = 0x11; s_frameBuffer[0][y][x][1] = 0x11; } } } void lcd_center_layer_init() { DEMO_FillFrameBuffer(); /* Layer 1: ARGB4444 */ const lcdifv2_buffer_config_t fb1Config = { .strideBytes = (LCD_WIDTH * 2), .pixelFormat = kLCDIFV2_PixelFormatARGB4444, }; const lcdifv2_blend_config_t blend1Config = { .alphaMode = kLCDIFV2_AlphaEmbedded, }; LCDIFV2_SetLayerBufferConfig(LCDIFV2, CENTER_LAYER, &fb1Config); LCDIFV2_SetLayerSize(LCDIFV2, CENTER_LAYER, 240, 240); LCDIFV2_SetLayerOffset(LCDIFV2, CENTER_LAYER, 0, 0); /* comment or not */ LCDIFV2_SetLayerBlendConfig(LCDIFV2, CENTER_LAYER, &blend1Config); LCDIFV2_SetLayerBufferAddr(LCDIFV2, CENTER_LAYER, DEMO_FB0_ADDR); LCDIFV2_EnableLayer(LCDIFV2, CENTER_LAYER, true); LCDIFV2_TriggerLayerShadowLoad(LCDIFV2, CENTER_LAYER); } 私のコードに何か誤りがありますか?ありがとう。 Re: How to smoothly display camera frames in LVGL? こんにちは、 @Vinos さん。 以下のリンクをご確認ください: https://github.com/lvgl/lvgl/issues/262それはあなたの調査に非常に役立つと思います。 お役に立てば幸いです! エドウィン。 Re: How to smoothly display camera frames in LVGL? ご提案ありがとうございます。2つ目の方法も試しましたが、LVGLでは背景が白で、上にラベルが付いています。実際の結果として、白い背景がラベル以外はカメラの画像を完全に覆っています。これらの白い背景をどうやって透明にできますか? Re: How to smoothly display camera frames in LVGL? こんにちは、 @Vinos さん。 このアプリケーションをどのように進めているのかは分かりませんが、私のおすすめは以下の通りです: 「SDK_MIMXRT1170-EVK\boards\evkmimxrt1170\driver_examples\csi\mipi_rgb」の例を参照してください。カメラで撮影した映像は、LVGLのフレームバッファと合成する必要があります。これを行う方法は2つあります。 1) カメラ出力バッファからLVGLのフレームバッファにカメラ画像をコピーします。これはmemcpyでも可能ですが、パフォーマンスが悪くなるので、代わりにDMAを使うことをおすすめします。 2) カメラの出力バッファとして別の LCDIFv2 レイヤーを直接使用し、LCDIFv2 がコピーなしでディスプレイ上の異なるレイヤーをハードウェア合成します。 BR、 エドウィン。
View full article
PN7642 PN7642 GPTはGPIOピンのハードウェア入力キャプチャをサポートしていますか?もしそうなら、どのGPIOをGPTキャプチャチャネルに接続できますか?もしそうでなければ、125kHzのRFIDプロセッシングでASK/FSKエッジのタイムスタンプを付ける推奨方法は何でしょうか? Re: pn7642 こんにちは、 @AlexPIさん あなたの調子が良いといいのですが。 汎用タイマーはこの機能をサポートしていない場合があります。SCTimer/PWMモジュールを検討してみてはどうでしょうか;詳細については、セキュアユーザーマニュアル(NDAは必要であり、 Secure Access Rights | NXP Semiconductors)を運営しています。 よろしくお願いいたします。 エドゥアルド。
View full article
S32K3:睡眠模式下的 WKPU 唤醒中断行为 您好,NXP技术支持, 我们正在使用S32K312 MCU ,并配置了一个带有中断回调的WKPU(唤醒单元)通道。 注意:将 Wkpu[n] 的偏移量加上 4 -> n+4 我们想澄清一下当 ECU 进入低功耗模式时 WKPU 的行为。 我们的问题是: 如果 MCU 处于睡眠/待机模式,WKPU 是否会继续监控已配置的外部唤醒引脚? 当在睡眠/待机模式下检测到配置的外部边沿时,WKPU 是否会唤醒 MCU? MCU唤醒后,配置的WKPU中断回调会自动执行,还是需要额外的软件处理? 要确保从睡眠/待机模式唤醒,是否需要特定的 WKPU、NVIC 或电源管理单元配置? S32K312 支持的低功耗模式(睡眠、停止、待机等)之间,WKPU 唤醒行为是否存在差异? 我们使用NXP RTD驱动程序来驱动S32K312。 感谢您的支持。 Re: S32K3: WKPU Wake-Up Interrupt Behaviour During Sleep Mode 您好,NXP团队: 感谢您的快速回复。 我使用的是NXP S32K312 MCU。我已在 PTB2(WKPU 通道 8)上配置了外部中断源(WKPU)。当传感器 INT2 引脚置位时,中断旨在将 MCU 从睡眠/待机模式唤醒。 我的问题是: 当收到外部 WKPU 中断时,唤醒后是否应自动调用配置的回调函数? 或者,WKPU 是否仅在外部源配置为 WKPU 引脚的输入时才会产生唤醒事件,我是否需要将 PTB2 配置为 EIRQ 引脚并使用 WKPU 驱动程序作为外设? 如果需要回调,是否需要其他配置(例如,NVIC、中断路由、WKPU 设置或模式相关的限制)? 在我目前的实现中,当配置为 EIRQ/ECU 并处于运行模式时,外部中断可以成功唤醒 MCU,但在待机模式下(引脚和外设中都配置了 Wkpu)则无法工作,并且配置的回调函数也不会执行。 请您详细说明一下WKPU的预期行为以及回调执行所需的配置? 谢谢! Re: S32K3: WKPU Wake-Up Interrupt Behaviour During Sleep Mode 嗨@Dia , 是的,WKPU 引擎具有通过多个可配置的异步唤醒事件唤醒芯片的功能。 是的。以下是 WKPU 唤醒事件后的备用退出序列: 退出待机模式后,会发生以下事件: 唤醒事件发生 FIRC 启动(如果在待机模式下被禁用) PMC 开始向 FPM 过渡的过程(例如,启用最后一公里稳压器并向芯片提供 V1_RUN 电源) MC_PCU 取消了运行功能域和备用功能域之间的隔离。 运行功能域复位取消钳位(待机进入时钳位),芯片将执行该功能域的功能复位退出序列 芯片进入运行模式 还需要进行其他配置。由于唤醒标志寄存器在唤醒后得以保留,因此一旦通过代码使能唤醒单元的 NVIC→ISER,即可进入唤醒 ISR。因此,在唤醒并处于运行模式后,如果您调用平台函数来启用唤醒中断(为 WKPU_IRQn 配置 NVIC_ISER),则您的程序将跳转到唤醒中断函数。 S32K3 仅支持两种模式:运行和待机。 Julin_AragnM_7-1783635768438.png 但是,唤醒行为有所不同,因为 S32K3 可以选择正常待机退出或快速待机退出: Julin_AragnM_8-1783635776576.png RESET 和正常待机退出将执行 HSE sBAF 初始化代码和 HSE_FW 验证,而快速待机退出将跳过此步骤以节省时间,并启动到用户定义的地址。有关更多详细信息,请参阅 S32K3XX 参考手册中的图 176 (上电顺序)。 我建议查阅S32K3 电源管理单元 AN 和演示中的低功耗管理文档。 您还可以参考最新示例: [RTD600 MCAL & IP] S32K3 低功耗管理 AN 和演示。 此致, 朱利安 Re: S32K3: WKPU Wake-Up Interrupt Behaviour During Sleep Mode 嗨@Dia , 当收到外部 WKPU 中断时,唤醒后是否应自动调用配置的回调函数? 调用中断初始化后,将进入 WKPU_EXT_IRQ_SINGLE_ISR() 程序。如果需要使用回调函数,可以在调用中断初始化之前添加以下代码行: Wkpu_Ip_u32ChState[0].chInit = TRUE; Wkpu_Ip_u32ChState[0].notificationEnable = TRUE; Wkpu_Ip_u32ChState[0].WkpuChannelNotification = Wkpu_Callback; IntCtrl_Ip_Init(&IntCtrlConfig_0); ISR 执行完毕后,将进入 WKPU 回调。 或者,WKPU 是否仅在外部源配置为 WKPU 引脚的输入时才会产生唤醒事件,我是否需要将 PTB2 配置为 EIRQ 引脚并使用 WKPU 驱动程序作为外设? 这也没错。您可以使用回调配置来了解在 Standby 之前是否调用了 WKPU 请求。 如果需要回调,是否需要其他配置(例如,NVIC、中断路由、WKPU 设置或模式相关的限制)? 请参阅第一个回复。 能否在 MCU 退出待机状态(唤醒)后立即停止它,并在 WKPU_EXT_IRQ_SINGLE_ISR 内部设置断点,看看 MCU 是否会跳转到该断点? 此致, 朱利安
View full article
MCXC242VFMとMCXC244VFMのピン配置の違い こんにちは、 MCXC242VFMチップで基板を設計していますが、もしフラッシュやRAMが増えた場合に備えて、MCXC244VFMとピン同士で互換性のあるものにしたいと思っています。 MCUXpressoの設定ツールを見ると、MCXC242VFMとMCXC244VFMでいくつかのピンが異なるようですが、ピン配置の違いを詳細に説明したドキュメントは見つかりません。NXPのウェブサイトで調べられる唯一の情報は、製品選択ツールによるとMCXC242VFMはI2SがなくGPIOが24個と報告されているのに対し、MCXC244VFMはI2Sが1つ、GPIOが23個あるということです。私のプロジェクトでは、I2Sには興味がありません。 この2つのチップのピン配置とピン割り当ての違いを明確に記載した文書を誰か教えていただけませんか? 敬具 ミケーレ・ペルラ ボード設計 MCX C パッケージとIO|GPIO Re: MCXC242VFM vs MCXC244VFM pinout differences こんにちは、 @MichelePerla さん MCXC242VFMとMCXC244VFMの両方が32-QFNパッケージで利用可能ですが、完全にピンツーピン互換であるとは限りません。MCX C24XおよびMCX C44Xのリファレンスマニュアルにあるピン割り当て表を比較してください。 特に、両デバイス間ではいくつかのピン配置が異なっている。例えば、ピン5はMCXC242VFMにUSB_VDD、VOUT33はMCXC244VFMに、ピン6はMCXC242VFMのPTE16ですが、MCXC244VFMのVREGINです。ピン9にもアナログ/リファレンス関連の異なる定義があります。したがって、基板が両方のデバイスをサポートすることを意図している場合、回路図やPCB設計でこれらのピンを慎重に確認する必要があります。 MCXC242 RM: MCX C24X サブファミリ参照マニュアル Alice_Yang_2-1783650917873.png MCXC244 RM: MCX C44X サブファミリ参照マニュアル Alice_Yang_0-1783650899990.png お役に立てば幸いです。 BR アリス
View full article
PMIC PF8200 I2C寄存器默认值/RESET值 我正在使用采用 OTP 配置的 PF8200。 我需要通过 SCFW 将一些寄存器加载新值,以更改 PMIC 配置。 未被 OTP 值加载的寄存器位在数据手册中没有指定默认值。 这些值决定了加载 OTP 尚未加载的所有寄存器是否有用。 谢谢; Re: PMIC PF8200 I2C register default/reset values 感谢您的快速回复。 我没有找到任何关于它们上电后默认值的信息。 请问我可以在哪里找到这些信息? Re: PMIC PF8200 I2C register default/reset values 你好, 上电后,未从 OTP 加载的寄存器或位将被初始化为其默认值。因此,除非您需要与默认设置不同的值,否则无需通过 SCFW 配置所有非 OTP 寄存器。 要确定是否需要额外的初始化,请将您期望的配置与默认寄存器值进行比较。 请参阅PF82 系列 I2C 寄存器映射表 希望这能帮到你! Re: PMIC PF8200 I2C register default/reset values 请问您对哪些注册表感兴趣? Re: PMIC PF8200 I2C register default/reset values 例如,寄存器 05 INT_MASK_1。 但所有寄存器均指定为 OFF_TOGGLE。 谢谢。
View full article
RDDRONE-BMS772开发板配件 RDDRONE-BMS772开发板配件 抱歉,你没听懂我的意思。我目前的研究是关于电池状态估计,这需要测量真实电池的电压、电流和温度数据。因此,我不需要电池模拟器;我需要的是真正的电池。所以,我需要一块与我的开发板兼容的电池,以及一个特定型号的配套电池充电器。另外,链接中提到的 PEMicro 适配器和 SEGGER J-Link Mini 调试器是调试或编程开发板所必需的硬件吗?开发板能否直接连接到电脑进行调试和编程?这些适配器和调试器在市场上可以买到吗?此外,除了您提到的硬件之外,开发板是否还有其他必要的硬件元器件?如果是,请列出详细的配件类别及其对应的型号。非常感谢您对这些问题的详细解答。 抱歉,你没明白我的意思,我目前的研究是关于电池状态估计的,需要测量真实电池的电压和温度数据,所以我不需要电池模拟器,我需要真实的电池,所以我需要改装开发板的电池和对应电池充电器的具体型号;以及那个链接里提到的PEMicro适配器以及SEGGER J-Link迷你调试器是开发板或者烧录算法必须的硬件吗?开发板不能直接连接到电脑上进行调试和烧录程序吗?这些调试器和调试器在可以买到吗?还有,开发板除了你提到的这几个硬件以外还必须硬件吗?如果有的话请帮我列出详细的配件类别及其对应的型号;请您详细解答一下这些疑问,万分感谢。 Re: RDDRONE-BMS772 Development Board Accessories RDDRONE-BMS772开发板配件 亲爱的 Fan007, 对于电池状态估计研究,RDDRONE-BMS772 支持真正的 3S 至 6S 锂离子/锂聚合物电池组(6 V 至 26 V),并且不需要特定的电池型号。所选电池必须包含电池平衡连接器。 需要使用与所选电池化学成分和电芯数量兼容的充电器。RDDRONE-BMS772 无需专用的 电池管理系统 通信接口,因为必要时它可以断开充电路径。 对于固件开发和调试,NXP 建议使用外部 SWD 调试器,例如 PEMicro Universal Multilink 或 SEGGER J-Link Mini。RDDRONE-BMS772 没有板载 USB 调试接口,因此需要使用外部调试器。这些调试器在市场上均有销售。 对于电池特性分析和 SOC/SOH 算法开发,强烈建议使用可编程电子负载 (E-load) 进行受控充放电测试。   最诚挚的问候, 约瑟夫
View full article
#S32K312 IO input config joshua9264_0-1783597102225.png I want to used LPUART0 RX,need config IMCR[699],but spec only IMCR[473],So ,what should I do ? Re: #S32K312 IO input config Hi @joshua9264  It is noted in Section 10.1.2 of the S32K3xx Reference Manual, Rev. 12, that: "IMCRs defined in the attached IOMUX file have an offset of 512 with respect to the IMCR number defined in SIUL2 memory map section." To help clarify how the offset is applied, an example is also provided in Section 4.4.3 of the RM. BR, VaneB Re: #S32K312 IO input config yes,I found it. thank you
View full article
i.MX95 是否支持 LPDDR5X 内存? i.MX95 是否支持 LPDDR5X 内存? 如果 MR8[1:0]=01 或 MR5 ID 不在您的支持列表中 i.MX95 如何检查是否受支持?查看MR登记册? Re: Does i.MX95 support LPDDR5X memory? 感谢您快速提交申请。 Re: Does i.MX95 support LPDDR5X memory? 正如你所说,“MR8[1:0] = 01 表示该设备仅支持 LPDDR5X”。 MR8[1:0]=00 支持 LPDDR5,MR8[1:0]=01 支持 LPDDR5x。 那么 MR8[1:0]=?? 应该支持 LPDDR5 和 LPDDR5x 吗? Re: Does i.MX95 support LPDDR5X memory? 是的,i.MX95 可以与许多 LPDDR5X 设备配合使用,但前提是这些设备也支持 LPDDR5 向下兼容模式。 i.MX95 不支持仅支持 LPDDR5X 的设备。 因此,检查内存是否受支持不仅仅是查看 MR8[1:0] 或 MR5 厂商 ID 的问题。 MR8[1:0] = 01 表示该设备仅支持 LPDDR5X 内存。 → 将其视为 不支持 对于 i.MX95,因为 NXP 表示不能使用仅支持 LPDDR5X 的设备。 MR5 制造商/设备 ID 不在 NXP 的验证列表中 → 是 未经恩智浦验证 但这本身并不等同于“不可能”。您仍然需要从内存数据手册中确认该器件是否支持 LPDDR5 模式,并符合支持的密度/组织/时序约束,然后在电路板设计中进行验证。
View full article
i.MX6ULLの6.12カーネルにおけるイーサネットクロックバグ デバイスツリーの例は、6.12のハードコードで、このバグを修正する代わりにイーサネット物理を使いました。NXP 5.15カーネルには存在しませんでした。 最終的にパッチを作成することになったのは、fecモジュールで不具合が生じているPHY検出の柔軟性をカーネルに求めたかったからです。このパッチにより、デバイスツリー内の回避ではなく、ドライバがロードされた際にphyレジスタが読み込まれるようになっています。 On i.MX6UL boards that hang both RMII PHYs on FEC2's MDIO bus, PHY@0 uses the FEC1 (ENET1) RMII reference clock. Kernel 6.12 routes that clock through ENET1_REF_SEL, which may not be active when FEC2 reads PHY@0's ID during of_mdiobus_register(), yielding a bogus ID (0x01080108) and binding the generic PHY driver. Briefly enable FEC1's enet_clk_ref (looked up from DT, not via probe defer) around of_mdiobus_register() so the PHY ID read succeeds without changing FEC probe order and breaking FEC_QUIRK_SINGLE_MDIO. --- drivers/net/ethernet/freescale/fec_main.c | 59 +++++++++++++++++++++++ 1 file changed, 59 insertions(+) diff --git a/drivers/net/ethernet/freescale/fec_main.c b/drivers/net/ethernet/freescale/fec_main.c index 811a66062..46f37be0c 100644 --- a/drivers/net/ethernet/freescale/fec_main.c +++ b/drivers/net/ethernet/freescale/fec_main.c @@ -2540,6 +2540,39 @@ static int fec_enet_mii_probe(struct net_device *ndev) return 0; } +static bool fec_enet_mdio_has_phy_addr0(struct device_node *mdio) +{ + struct device_node *child; + u32 reg; + + for_each_available_child_of_node(mdio, child) { + if (of_property_read_u32(child, "reg", ®)) + continue; + if (reg == 0) { + of_node_put(child); + return true; + } + } + return false; +} + +static struct clk *fec_enet_get_rmii_master_refclk(void) +{ + struct device_node *np = NULL; + struct clk *clk; + + while ((np = of_find_compatible_node(np, NULL, "fsl,imx6ul-fec"))) { + if (of_get_child_by_name(np, "mdio")) { + of_node_put(np); + continue; + } + clk = of_clk_get_by_name(np, "enet_clk_ref"); + of_node_put(np); + return clk; + } + return NULL; +} + static int fec_enet_mii_init(struct platform_device *pdev) { static struct mii_bus *fec0_mii_bus; @@ -2553,6 +2586,8 @@ static int fec_enet_mii_init(struct platform_device *pdev) u32 mii_speed, holdtime; u32 bus_freq; int addr; + struct clk *rmii_master_refclk = NULL; + bool peer_ref_enabled = false; /* * The i.MX28 dual fec interfaces are not equal. @@ -2662,7 +2697,26 @@ static int fec_enet_mii_init(struct platform_device *pdev) fep->mii_bus->priv = fep; fep->mii_bus->parent = &pdev->dev; + if (node && fec_enet_mdio_has_phy_addr0(node)) { + rmii_master_refclk = fec_enet_get_rmii_master_refclk(); + if (IS_ERR(rmii_master_refclk)) { + err = PTR_ERR(rmii_master_refclk); + goto err_out_free_mdiobus; + } + if (rmii_master_refclk) { + err = clk_prepare_enable(rmii_master_refclk); + if (err) + goto err_out_free_mdiobus; + peer_ref_enabled = true; + usleep_range(100, 200); + } + } + err = of_mdiobus_register(fep->mii_bus, node); + if (peer_ref_enabled) + clk_disable_unprepare(rmii_master_refclk); + if (!IS_ERR_OR_NULL(rmii_master_refclk)) + clk_put(rmii_master_refclk); if (err) goto err_out_free_mdiobus; of_node_put(node); Re: i.MX6ULL Ethernet Clock Bug in 6.12 kernel こんにちは、 分析結果とパッチを共有していただきありがとうございます。 NXP EVKボードでこれを検証できましたか? よろしくお願いいたします。 Re: i.MX6ULL Ethernet Clock Bug in 6.12 kernel デバイスツリーの変更を見れば、新しいFECドライバが手抜きし、クロックがなくなり、物理レジスタが最初に読み取れないことがわかります。PHY に複数のベンダーを使用する予定がない場合は、これで問題ありません。互換性のある行は、クロック信号がない場合に不正な値を持つPHYレジスタを指定するために必要です。 https://github.com/nxp-imx/linux-imx/blob/lf-6.12.y/arch/arm/boot/dts/nxp/imx/imx6ul-14x14-evk.dtsi#L205 古いカーネル(デバイスツリーの起源)では、phy の互換性ラインは存在しませんでした。この修正により、物理を読み取る前にクロックをオンにしてレジスタを正しく読み取ることが可能になり、互換性のあるラインは不要になります。以前のデバイスツリーにはなかったためです。 https://github.com/nxp-imx/linux-imx/blob/lf-5.4.y/arch/arm/boot/dts/imx6ul-14x14-evk.dtsi#L224 自社の基板の動作確認に追われているため、御社の基板をテストする時間がありませんでした。これはカーネルの退行だと考えています。
View full article
RDDRONE-BMS772 開発ボード アクセサリ RDDRONE-BMS772开发板配件 申し訳ありません、私の言っていることが伝わらなかったようですね。現在私が取り組んでいる研究は、バッテリーの状態推定に関するもので、そのためには実際のバッテリーの電圧、電流、温度のデータを測定する必要があります。したがって、バッテリーシミュレータは必要ありません。本物のバッテリーが必要だ。そこで、開発ボードに対応したバッテリーと対応するバッテリー・チャージャの特定モデルが必要です。また、PEMicroアダプターやSEGGER J-Link Miniデバッガは、デバッグや開発ボードのプログラミングに必要なハードウェアにリンクに記載されていますか?開発ボードを直接コンピュータに接続してデバッグやプログラミングはできないのでしょうか?これらのアダプターやデバッガはマーケットで入手可能ですか?さらに、あなたが挙げたハードウェア以外に、開発ボードに必要な他のハードウェアコンポーネントはありますか?もしそうであれば、詳細なアクセサリーカテゴリーとその対応モデルを記載してください。これらの質問に詳細なご回答をいただき、誠にありがとうございました。 注意、私たちの意思は理解していません、私たちの現在の研究は電池の状態に関するものであり、実際の電池の電圧と温度のデータを測定する必要があるため、電池モジュールは必要ありません、私たちは必要としていますこれは真の電池であるため、適切なパネルの電池と電池充電器の特定の型名が必要です。また、ここで言及されている PEMicro アダプターと SEGGER も必要です。 Jリンクミニエディタは公開パネルまたは計算法に必須のハードウェアですか? 公開パネルに直接接続することはできませんこれらのアダプターとコントローラーは、市街にある場合もありますか?そうですね、公開パネルには、上記のハードウェアのほかに、必須のハードウェアもありますか?私は、詳細なアクセサリの種類とそれに対応する型名を列挙しました。これらの疑問を、時間とともに詳しく解決していきます。 Re: RDDRONE-BMS772 Development Board Accessories RDDRONE-BMS772开发板配件 Fan007様へ バッテリー状態推定研究のために、RDDRONE-BMS772は実際の3Sから6Sのリチウムイオン/リチウムポバッテリーパック(6Vから26V)をサポートしており、特定のバッテリーモデルを必要としません。選択するバッテリーには、セルバランスコネクタが含まれている必要があります。 選択したバッテリーの種類とセル数に対応した充電器が必要です。RDDRONE-BMS772は必要に応じて充電経路を切断できるため、専用のBMS通信インターフェースは必要ありません。 ファームウェアの開発およびデバッグには、PEMicro Universal MultilinkやSEGGER J-Link Miniなどの外部SWDデバッガの使用をNXPは推奨します。RDDRONE-BMS772にはオンボードUSBデバッグインターフェースが搭載されていないため、外部デバッガが必要です。これらのデバッガーは市販されている。 バッテリーの特性評価やSOC/SOHアルゴリズムの開発においては、制御された充放電試験を実施するために、プログラム可能な電子負荷(E-load)の使用を強く推奨します。   敬具、 ヨゼフ
View full article
PN7642 PN7642 GPT 是否支持 GPIO 引脚上的硬件输入捕获?如果可以,哪些GPIO可以连接到GPT捕获通道?如果不是,那么对于 125 kHz RFID 处理,推荐的 ASK/FSK 边沿时间戳标记方法是什么? Re: pn7642 你好@AlexPI 希望你一切都好。 通用定时器可能不支持此功能。或许您可以考虑使用 SCTimer/PWM 模块;有关此模块的更多信息,请参阅安全用户手册(需要签署 NDA,并且必须通过安全访问权限 | NXP 半导体申请)。 问候, 爱德华多。
View full article
S32K3: スリープモード中のWKPUウェイクアップ割り込み動作 こんにちは、NXPサポートの皆さん、 S32K312 MCUを使用しており、割り込みコールバック付きのWKPU(ウェイクアップユニット)チャネルを設定しています。 注:Wkpu[n]に+4のオフセットを加算します -> n+4 ECUが低電力モードに入った際のWKPUの動作について明確にしたいと思います。 私たちの質問は次のとおりです。 MCUがスリープ/スタンバイモードの場合、WKPUは設定済みの外部ウェイクアップピンを引き続き監視しますか? 設定済みの外部エッジがスリープ/スタンバイモードで検出された場合、WKPUはMCUを起動させますか? MCUが起動した後、設定されたWKPU割り込みコールバックは自動的に実行されるのか、それとも追加のソフトウェア処理が必要になるのか? スリープ/スタンバイモードからの覚醒を保証するために、特定のWKPU、NVIC、または電源管理の設定が必要ですか? S32K312でサポートされている低電力モード(スリープ、ストップ、スタンバイなど)間で、WKPUのウェイクアップ動作に違いはありますか? 私たちはこのS32K312にNXP RTDドライバを使用しています。 再開まで今しばらくお待ちください。 Re: S32K3: WKPU Wake-Up Interrupt Behaviour During Sleep Mode こんにちは、NXP チームの皆様、 迅速なご対応ありがとうございます。 私はNXP S32K312 MCUを使っています。PTB2(WKPUチャネル8)に外部割り込みソース(WKPU)を設定しました。割り込みは、センサーINT2ピンがアサートした際にMCUをスリープ/スタンバイモードから起動させることを目的としています。 私の質問は次のとおりです。 外部WKPU割り込みを受信した場合、ウェイクアップ後に設定されたコールバック関数を自動的に呼び出すべきでしょうか? それとも、WKPUは外部ソースがWKPUピンの入力として設定されているときだけウェイクアップイベントを発生させ、PTB2をEIRQピンとして設定し、WKPU**ドライバ**を**ペリフェラル**として使う必要があるのでしょうか? コールバックが想定される場合、追加の設定(NVIC、割り込みルーティング、WKPU設定、モード依存の制限など)が必要ですか? 私の現在の実装では、外部割り込みは実行モードでEIRQ/ECUとして設定するとMCUを正常に起動させますが、スタンバイモードでは動作せず(Wkpuがピンとペリフェラルの両方に設定されている場合)、設定されたコールバックは実行されません。 WKPUの期待される挙動とコールバック実行に必要な設定について、説明していただけますか? よろしくお願いします。 Re: S32K3: WKPU Wake-Up Interrupt Behaviour During Sleep Mode こんにちは、 @Dia さん。 はい、WKPUエンジンは複数の設定可能な非同期ウェイクアップイベントからチップをウェイクアップする機能を持っています。 はい。こちらがWKPUの起床イベント後の待機出口シーケンスです: スタンバイモード終了後、以下のイベントが発生します。 目覚めのイベントが訪れる FIRCは(スタンバイモードで無効になっている場合)電源がオンになります。 PMCはFPMへの移行プロセスを開始します(例えば、ラストマイルレギュレータを有効にし、チップにV1_RUN電源を供給します)。 MC_PCUは実行ドメインとスタンバイドメインの分離を解消します ドメインリセット解除(スタンバイエントリ時にアサートされる)を実行すると、チップはこのドメインの機能リセット終了シーケンスを実行します。 チップは動作実行モードに入ります 追加の設定が必要です。ウェイクアップフラグレジスタはウェイクアップ後も保持されるため、ウェイクアップユニットのNVIC→ISERがコードで有効化されるとウェイクアップISRを入力できます。したがって、ウェイクアップ後、実行モードでプラットフォーム関数を呼び出してウェイクアップ用の割り込みを有効にする(WKPU_IRQnにISERを設定しNVIC_)すると、プログラムはウェイクアップ割り込み機能にジャンプします。 S32K3は2つのモードのみをサポートしています:ランとスタンバイ。 Julin_AragnM_7-1783635768438.png しかし、ウェイクアップの挙動には違いがあり、S32K3は通常のスタンバイ出口または高速スタンバイ出口を選択できます。 Julin_AragnM_8-1783635776576.png リセットと通常のスタンバイ終了はHSE sBAFの初期化コードとHSE_FW検証の両方を実行し、高速スタンバイ終了は時間を節約するためにバイパスし、ユーザー定義のアドレスで起動します。詳細については、S32K3XXのリファレンスマニュアルにある 図176 (電源起動シーケンス)を参照してください。 S32K3の低電力管理ANやデモのパワーマネージメントドキュメントを調べてみることをおすすめします。 最新の例も参照できます:[RTD600 MCAL & IP] S32K3 低パワーマネージメントANやデモ。 よろしくお願いします、 ジュリアン Re: S32K3: WKPU Wake-Up Interrupt Behaviour During Sleep Mode こんにちは、 @Dia さん。 外部WKPU割り込みを受信した場合、ウェイクアップ後に設定されたコールバック関数を自動的に呼び出すべきでしょうか? 割り込み初期化を呼び出すと、WKPU_EXT_IRQ_SINGLE_ISR()が入力されます。コールバックを使う場合は、割り込み初期化を呼び出す前に以下の行を追加できます: Wkpu_Ip_u32ChState[0].chInit = TRUE; Wkpu_Ip_u32ChState[0].notificationEnable = TRUE; Wkpu_Ip_u32ChState[0].WkpuChannelNotification = Wkpu_Callback; IntCtrl_Ip_Init(&IntCtrlConfig_0); ISRの処理が完了すると、WKPUコールバックが開始されます。 それとも、WKPUは外部ソースがWKPUピンの入力として設定されているときだけウェイクアップイベントを発生させ、PTB2をEIRQピンとして設定し、WKPU**ドライバ**を**ペリフェラル**として使う必要があるのでしょうか? これも妥当な意見です。コールバック設定を使って、WKPUリクエストがスタンバイ前に呼び出されたかどうかを確認できます。 コールバックが想定される場合、追加の設定(NVIC、割り込みルーティング、WKPU設定、モード依存の制限など)が必要ですか? 最初の回答を参照してください。 スタンバイ出口(ウェイクアップ)直後にMCUを止めて、MCUがジャンプしているかどうかを確認するためにWKPU_EXT_IRQ_SINGLE_ISRの中にブレークポイントを入れることはできますか? よろしくお願いします、 ジュリアン
View full article
pn7642 Does PN7642 GPT support hardware Input Capture on GPIO pins? If yes, which GPIOs can be connected to GPT capture channels? If not, what is the recommended method for timestamping ASK/FSK edges for 125 kHz RFID processing? Re: pn7642 Hello @AlexPI Hope you are doing well. General Purpose Timers may not support such feature. Perhaps you could consider the SCTimer/PWM module; more information on this can be found in the secure User Manual (NDA is required, and must be requested through the Secure Access Rights | NXP Semiconductors). Regards, Eduardo.
View full article
PMIC PF8200 I2C register default/reset values I am using the PF8200 with an OTP configuration. I need to load some registers by SCFW with new values to change the PMIC configuration. The register bits which are not loaded by OTP values do not have default values specified in datasheet.  What are these values to know if it is useful or not to load all the registers not already loaded by OTP. Thanks; Re: PMIC PF8200 I2C register default/reset values Thanks for quick answer. I do not find any information about their default values after power-up. Please, let me inform where I can find this information ! Re: PMIC PF8200 I2C register default/reset values Hello, Registers or bits that are not loaded from OTP are initialized to their default values after power-up. Therefore, it is not necessary to configure all non-OTP registers through SCFW unless you need values different from the default settings. To determine whether additional initialization is required, please compare your desired configuration against the default register values. Please see PF82 family I2C register Map Hope this helps! Re: PMIC PF8200 I2C register default/reset values Could you please confirm which registers you are interested in?  Re: PMIC PF8200 I2C register default/reset values For example, register 05 INT_MASK_1. But all registers specified as OFF_TOGGLE. Thanks.
View full article
S32K3: WKPU Wake-Up Interrupt Behaviour During Sleep Mode Hello NXP Support, We are using the S32K312 MCU and have configured a WKPU (Wake-Up Unit) channel with an interrupt callback. Note: Add +4 offset to Wkpu[n] -> n+4 We would like to clarify the behaviour of the WKPU when the ECU enters a low-power mode. Our questions are: If the MCU is in Sleep/Standby mode, does the WKPU continue monitoring the configured external wake-up pin? When the configured external edge is detected during Sleep/Standby mode, will the WKPU wake the MCU? After the MCU wakes up, will the configured WKPU interrupt callback be executed automatically, or is additional software handling required? Are there any specific WKPU, NVIC, or Power Management configurations required to ensure wake-up from Sleep/Standby mode? Are there any differences in WKPU wake-up behaviour between the supported low-power modes (Sleep, STOP, STANDBY, etc.) on the S32K312? We are using the NXP RTD drivers for the S32K312. Thank you for your support. Re: S32K3: WKPU Wake-Up Interrupt Behaviour During Sleep Mode Hi NXP Team, Thanks for your quick response. I am using the NXP S32K312 MCU. I have configured an external interrupt source (WKPU) on PTB2 (WKPU Channel 8). The interrupt is intended to wake the MCU from Sleep/Standby mode when the Sensor INT2 pin asserts. My question is: When an external WKPU interrupt is received, should the configured callback function be invoked automatically after wake-up? Or does the WKPU only generate a wake-up event when the external source is configured as an input on the WKPU pin, and do I need to configure PTB2 as an EIRQ pin and use the WKPU driver as the peripheral? If a callback is expected, are there any additional configurations required (e.g., NVIC, interrupt routing, WKPU settings, or mode-dependent limitations)? In my current implementation, the external interrupt successfully wakes the MCU when configured as EIRQ/ECU in Run mode, but it does not work in Standby mode(Wkpu configured in both pin and peripherals), and the configured callback is not executed. Could you please clarify the expected WKPU behavior and the required configuration for callback execution? Thank you. Re: S32K3: WKPU Wake-Up Interrupt Behaviour During Sleep Mode Hi @Dia, Yes, the WKPU engine has the wake-up capability to the chip from multiple configurable asynchronous wake-up events. Yes. Here is the standby exit sequence after a WKPU wake-up event: After Standby mode exit, the following events occur: A wake-up event arrives FIRC gets powered up (if disabled in Standby mode) PMC starts the transition process to FPM (for example, enables the last-mile regulator and provides V1 _RUN supply to the chip) MC_PCU removes the isolation between Run and Standby domains Run domain reset deasserts (it’s asserted on Standby entry) and the chip undergoes a functional reset exit sequence for this domain The chip enters Run mode of operation Additional configuration is needed. Since the wakeup flag register is retained after waking up, the wakeup ISR can be entered once the NVIC→ISER of Wakeup Unit is enabled by code. So, after wake-up and in Run mode, if you call Platform functions to enable interrupt for wake-up (configure NVIC_ ISER for WKPU_IRQn) then your program will jump into wake-up interrupt function. S32K3 only supports two modes: Run & Standby. Julin_AragnM_7-1783635768438.png However, there is a difference in wake-up behavior, as S32K3 can select normal Standby exit, or Fast Standby exit: Julin_AragnM_8-1783635776576.png Reset and normal Standby exit will perform both the HSE sBAF initialization code and HSE_FW verification, while fast standby exit will bypass it to save time, and boot to a user defined address. You can refer to Figure 176 (Power-up sequence) from the S32K3XX reference manual for further details. I suggest looking into the low power management documentation from S32K3 Low Power Management AN and demos. You can also refer to the latest examples: [RTD600 MCAL & IP] S32K3 Low Power Management AN and demos. Best regards, Julián Re: S32K3: WKPU Wake-Up Interrupt Behaviour During Sleep Mode Hi @Dia, When an external WKPU interrupt is received, should the configured callback function be invoked automatically after wake-up? After calling interrupt initialization, WKPU_EXT_IRQ_SINGLE_ISR() will be entered. If you need to use callback, you can add the following lines before calling interrupt initialization: Wkpu_Ip_u32ChState[0].chInit = TRUE; Wkpu_Ip_u32ChState[0].notificationEnable = TRUE; Wkpu_Ip_u32ChState[0].WkpuChannelNotification = Wkpu_Callback; IntCtrl_Ip_Init(&IntCtrlConfig_0); After ISR is serviced, WKPU callback will be entered.  Or does the WKPU only generate a wake-up event when the external source is configured as an input on the WKPU pin, and do I need to configure PTB2 as an EIRQ pin and use the WKPU driver as the peripheral? This is valid as well. You can use callback configuration to know if a WKPU request was called before Standby. If a callback is expected, are there any additional configurations required (e.g., NVIC, interrupt routing, WKPU settings, or mode-dependent limitations)? See first response. Can you stop MCU right after Standby exit (wake-up), and place a breakpoint inside WKPU_EXT_IRQ_SINGLE_ISR to see if MCU is jumping to it?  Best regards, Julián
View full article
RDDRONE-BMS772 Development Board Accessories RDDRONE-BMS772开发板配件 I apologize, you didn't understand me. My current research is about battery state estimation, which requires measuring the voltage, current, and temperature data of a real battery. Therefore, I don't need a battery simulator; I need a real battery. So, I need a battery compatible with my development board and a specific model of the corresponding battery charger. Also, are the PEMicro adapter and SEGGER J-Link Mini debugger mentioned in the link necessary hardware for debugging or programming the development board? Can't the development board be directly connected to a computer for debugging and programming? Are these adapters and debuggers available on the market? Furthermore, besides the hardware you mentioned, are there any other necessary hardware components for the development board? If so, please list the detailed accessory categories and their corresponding models. Thank you very much for your detailed answers to these questions. 抱歉,你没理解我的意思,我目前的研究是关于电池状态估计的,需要测量真实电池的电压电流和温度数据,所以我不需要电池模拟器,我需要的是真实的电池,所以我需要适配开发板的电池和对应电池充电器的具体型号;并且那个链接里提到的PEMicro适配器以及SEGGER J-Link Mini调试器是开发板调试或者烧录算法必须的硬件吗?开发板不能直接连接到电脑上进行调试和烧录程序吗?这些适配器和调试器在市面上可以买到吗?还有,开发板除了你提到的这几个硬件之外还有别的必须硬件吗?如果有的话请帮我列出详细的配件类别及其对应的型号;请您详细解答一下这些疑问,万分感谢。 Re: RDDRONE-BMS772 Development Board Accessories RDDRONE-BMS772开发板配件 Dear Fan007, For battery state estimation research, the RDDRONE-BMS772 supports real 3S to 6S Li-ion/LiPo battery packs (6 V to 26 V) and does not require a specific battery model. The selected battery must include a cell-balancing connector.  A charger compatible with the selected battery chemistry and cell count is required. No dedicated BMS communication interface is needed, as the RDDRONE-BMS772 can disconnect the charging path when necessary. For firmware development and debugging, NXP recommends an external SWD debugger such as a PEMicro Universal Multilink or SEGGER J-Link Mini. The RDDRONE-BMS772 does not include an onboard USB debug interface, so an external debugger is necessary. These debuggers are commercially available. For battery characterization and SOC/SOH algorithm development, a programmable electronic load (E-load) is also highly recommended to perform controlled charge/discharge testing.    With Best Regards, Jozef
View full article
i.MX6ULL Ethernet Clock Bug in 6.12 kernel The device tree example in 6.12 hard codes the Ethernet Phy rather than fixing this bug which did not exist in the NXP 5.15 kernel we were using. We ended up writing a patch because we would like the flexibility of the kernel detecting the PHY which is broken in the fec module.  This patch causes the phy registers to be read when the driver is loaded, rather than circumvention in device tree. On i.MX6UL boards that hang both RMII PHYs on FEC2's MDIO bus, PHY@0 uses the FEC1 (ENET1) RMII reference clock. Kernel 6.12 routes that clock through ENET1_REF_SEL, which may not be active when FEC2 reads PHY@0's ID during of_mdiobus_register(), yielding a bogus ID (0x01080108) and binding the generic PHY driver. Briefly enable FEC1's enet_clk_ref (looked up from DT, not via probe defer) around of_mdiobus_register() so the PHY ID read succeeds without changing FEC probe order and breaking FEC_QUIRK_SINGLE_MDIO. --- drivers/net/ethernet/freescale/fec_main.c | 59 +++++++++++++++++++++++ 1 file changed, 59 insertions(+) diff --git a/drivers/net/ethernet/freescale/fec_main.c b/drivers/net/ethernet/freescale/fec_main.c index 811a66062..46f37be0c 100644 --- a/drivers/net/ethernet/freescale/fec_main.c +++ b/drivers/net/ethernet/freescale/fec_main.c @@ -2540,6 +2540,39 @@ static int fec_enet_mii_probe(struct net_device *ndev) return 0; } +static bool fec_enet_mdio_has_phy_addr0(struct device_node *mdio) +{ + struct device_node *child; + u32 reg; + + for_each_available_child_of_node(mdio, child) { + if (of_property_read_u32(child, "reg", ®)) + continue; + if (reg == 0) { + of_node_put(child); + return true; + } + } + return false; +} + +static struct clk *fec_enet_get_rmii_master_refclk(void) +{ + struct device_node *np = NULL; + struct clk *clk; + + while ((np = of_find_compatible_node(np, NULL, "fsl,imx6ul-fec"))) { + if (of_get_child_by_name(np, "mdio")) { + of_node_put(np); + continue; + } + clk = of_clk_get_by_name(np, "enet_clk_ref"); + of_node_put(np); + return clk; + } + return NULL; +} + static int fec_enet_mii_init(struct platform_device *pdev) { static struct mii_bus *fec0_mii_bus; @@ -2553,6 +2586,8 @@ static int fec_enet_mii_init(struct platform_device *pdev) u32 mii_speed, holdtime; u32 bus_freq; int addr; + struct clk *rmii_master_refclk = NULL; + bool peer_ref_enabled = false; /* * The i.MX28 dual fec interfaces are not equal. @@ -2662,7 +2697,26 @@ static int fec_enet_mii_init(struct platform_device *pdev) fep->mii_bus->priv = fep; fep->mii_bus->parent = &pdev->dev; + if (node && fec_enet_mdio_has_phy_addr0(node)) { + rmii_master_refclk = fec_enet_get_rmii_master_refclk(); + if (IS_ERR(rmii_master_refclk)) { + err = PTR_ERR(rmii_master_refclk); + goto err_out_free_mdiobus; + } + if (rmii_master_refclk) { + err = clk_prepare_enable(rmii_master_refclk); + if (err) + goto err_out_free_mdiobus; + peer_ref_enabled = true; + usleep_range(100, 200); + } + } + err = of_mdiobus_register(fep->mii_bus, node); + if (peer_ref_enabled) + clk_disable_unprepare(rmii_master_refclk); + if (!IS_ERR_OR_NULL(rmii_master_refclk)) + clk_put(rmii_master_refclk); if (err) goto err_out_free_mdiobus; of_node_put(node); Re: i.MX6ULL Ethernet Clock Bug in 6.12 kernel You only need to look at device tree changes to see that the new fec driver cuts corners and no longer has a clock, so the phy registers do not read initially. This is fine if you do not plan on having multiple vendors for the phy. The compatible line is needed to specify the phy register which has a bad value when there is no clock: https://github.com/nxp-imx/linux-imx/blob/lf-6.12.y/arch/arm/boot/dts/nxp/imx/imx6ul-14x14-evk.dtsi#L205 In older kernels (the heritage of our device tree) the compatible line was not present for the phy. This fix allows the clock to be turned on before reading the phy so registers can be read properly, so the compatible line is not required, as it was not there in older device trees: https://github.com/nxp-imx/linux-imx/blob/lf-5.4.y/arch/arm/boot/dts/imx6ul-14x14-evk.dtsi#L224 I have not had time to test your boards as I am busy getting our boards to work. I consider this to be a regression in the kernel. Re: i.MX6ULL Ethernet Clock Bug in 6.12 kernel Hello, Thanks for sharing the analysis and patch. Have you been able to validate this on an NXP EVK board? Best regards.
View full article
如何在LVGL中流畅地显示相机帧? 您好,我正在使用MIMXRT1176DMAA芯片。该板配备MIPI摄像头和MIPI液晶显示屏,液晶显示屏主要用于显示LVGL GUI。 目前,我希望在屏幕上显示摄像头的图像,同时在摄像头画面上叠加一些 LVGL 标签。我尝试通过 LVGL Canvas 显示相机帧,但这种方法在将相机帧传输到 Canvas 时引入了额外的处理开销,导致 CPU 使用率高和相机画面卡顿。 请问这个问题有解决办法吗?例如,LCDIFV2 的层功能能否用于在不同的层上显示内容?非常感谢您能提供任何建议。 Re: How to smoothly display camera frames in LVGL? 你好@Vinos ,如果这不是秘密,那解决方案是什么? 此致敬礼 Re: How to smoothly display camera frames in LVGL? 已解决。 Re: How to smoothly display camera frames in LVGL? 经过尝试,我发现只有在 LVGL 任务关闭时,相机屏幕才能流畅运行。目前,Layer0 是 GUI,Layer1 是摄像头。当 Layer0 关闭且 Layer1 打开时,我想添加另一个 Layer2。在 Layer3 的中心,应该有一个空心圆,除了弧形部分以外,其余部分都是透明的。 因此,我使用了 ARGB4444 格式,并通过在 LCD 上绘制一个正方形进行了简单的测试(启用 Layer0 并禁用 Layer1;或者禁用 Layer0 并启用 Layer1)。然而,生成的图像并不透明。每当调用 LCDIFV2_SetLayerBlendConfig 函数时,LCD 上的 Layer3 都不会显示图像。但是,如果将此函数注释掉,液晶显示屏将显示预期的非透明图像。 以下是代码,请参考 SDK 中的示例“lcdifv2_embedded_alpha_cm7”。 #define LCD_WIDTH 480 #define LCD_HEIGHT 640 #define CENTER_LAYER 2 #define DEMO_FB0_ADDR ((uint32_t)s_frameBuffer[0]) AT_NONCACHEABLE_SECTION_ALIGN( uint8_t s_frameBuffer[1][LCD_HEIGHT][LCD_WIDTH][2], 32); void DEMO_FillFrameBuffer(void) { uint32_t x, y; for (y = 0; y < LCD_HEIGHT; y++) { for (x = 0; x < LCD_WIDTH; x++) { s_frameBuffer[0][y][x][0] = 0x11; s_frameBuffer[0][y][x][1] = 0x11; } } } void lcd_center_layer_init() { DEMO_FillFrameBuffer(); /* Layer 1: ARGB4444 */ const lcdifv2_buffer_config_t fb1Config = { .strideBytes = (LCD_WIDTH * 2), .pixelFormat = kLCDIFV2_PixelFormatARGB4444, }; const lcdifv2_blend_config_t blend1Config = { .alphaMode = kLCDIFV2_AlphaEmbedded, }; LCDIFV2_SetLayerBufferConfig(LCDIFV2, CENTER_LAYER, &fb1Config); LCDIFV2_SetLayerSize(LCDIFV2, CENTER_LAYER, 240, 240); LCDIFV2_SetLayerOffset(LCDIFV2, CENTER_LAYER, 0, 0); /* comment or not */ LCDIFV2_SetLayerBlendConfig(LCDIFV2, CENTER_LAYER, &blend1Config); LCDIFV2_SetLayerBufferAddr(LCDIFV2, CENTER_LAYER, DEMO_FB0_ADDR); LCDIFV2_EnableLayer(LCDIFV2, CENTER_LAYER, true); LCDIFV2_TriggerLayerShadowLoad(LCDIFV2, CENTER_LAYER); } 我的代码有错误吗?谢谢。 Re: How to smoothly display camera frames in LVGL? @Vinos ,你好! 请查看以下链接: https://github.com/lvgl/lvgl/issues/262我相信这对您的询问会很有帮助。 如果对你有帮助,请告诉我! 埃德温。 Re: How to smoothly display camera frames in LVGL? 谢谢你的建议。我尝试了第二种解决方案,但是在 LVGL 中,背景是白色的,上面有一些标签。实际结果是,除了标签之外,白色背景完全覆盖了相机图像。如何将这些白色背景设置为透明? Re: How to smoothly display camera frames in LVGL? 嗨@Vinos , 我不清楚您打算如何申请这份申请,所以以下是我的建议: 请参考示例“SDK_MIMXRT1170-EVK\boards\evkmimxrt1170\driver_examples\csi\mipi_rgb”。需要将摄像机捕获的视频与 LVGL 的帧缓冲区进行合成。有两种方法可以做到这一点: 1)将相机图像从相机输出缓冲区复制到LVGL的帧缓冲区。虽然可以用 memcpy 实现,但性能会很差,所以我建议改用 DMA。 2) 直接使用另一层 LCDIFv2 作为相机的输出缓冲区,然后 LCDIFv2 硬件在显示屏上合成不同的层而无需复制。 BR, 埃德温。
View full article