Multi Source Translation Content

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

Multi Source Translation Content

ディスカッション

ソート順:
Clarification Required on FlexCAN Enhanced RX FIFO + DMA Operation on S32K312 Hello , We are currently working on FlexCAN Enhanced RX FIFO with DMA on the S32K312, enhanced FIFOenhanced FIFOenhanced FIFO   we are using the rtd v 7.0.1 and would like clarification on several observations and issues we are facing. 1. MEX Configuration Verification Could you please verify the recommended MEX configuration for FlexCAN Enhanced RX FIFO with DMA enabled? We would like to ensure that our configuration follows the intended RTD usage model. 2. Enhanced RX FIFO + DMA Data Loss Observation As suggested in the FlexCAN errata, the following Message Buffers are not used when Enhanced RX FIFO is enabled: MB0–MB7, MB10, MB12, MB20, MB22, MB30, MB32, MB40, MB50, and MB60. Our setup is as follows: Enhanced RX FIFO enabled DMA enabled Watermark configured to 10 entries DMA transfers FIFO data into a software buffer Observed behavior: CAN messages are correctly received into the Enhanced RX FIFO. DMA transfers data successfully until the watermark level is reached. DMA completion interrupt is triggered. After this point, incoming CAN messages are not observed in the expected next FIFO location (11th FIFO entry onwards). Data loss and abnormal FIFO behavior are observed. Could you please explain the expected behavior in this scenario and the likely reason for the observed message loss? 3. FlexCAN_Ip_RxFifo DMA Reconfiguration While debugging the RTD driver, we observed that the FlexCAN_Ip_RxFifo API appears to reconfigure DMA parameters. Specifically: Minor loop count appears to be configured as 16 Transfer size appears to be 4 bytes This results in a total transfer size of 64 bytes (or approximately 68 bytes depending on interpretation), which does not appear to match the Enhanced RX FIFO entry size described in the Reference Manual. Could you clarify the intended operation of this API and the rationale behind these DMA settings? 4. Enhanced RX FIFO Memory Observation Another observation during debugging is that even though DMA appears to transfer data from the FIFO into the software buffer: The FIFO memory region still contains older message IDs. The memory browser appears to show only the first Enhanced RX FIFO element. FIFO locations do not appear to update as expected. A screenshot is attached for reference. Could you explain whether this is expected behavior and how the Enhanced RX FIFO memory should be interpreted during runtime debugging? 5. Structure Size Mismatch We also observed a discrepancy between the RTD structure and the Reference Manual. FlexCAN_Ip_MsgBuffType size in RTD: 78 bytes Enhanced RX FIFO element size according to the Reference Manual: 80 bytes Could you clarify: Why this size difference exists? Whether any packing/alignment considerations are involved? Whether DMA transfers should be configured for 78 bytes or 80 bytes? Intended Use Case Our requirement is to use: Enhanced RX FIFO DMA-based reception No CPU interrupts for message reception The intended behavior is: CAN message arrives in Enhanced RX FIFO. DMA automatically transfers the FIFO entry into a software buffer. No software polling or RX interrupt handling is required for normal operation. The Message Buffers reserved by the Enhanced RX FIFO (MB0–MB7, MB10, MB12, MB20, MB22, MB30, MB32, MB40, MB50, and MB60) are intentionally avoided, while the remaining Message Buffers are used for transmission. Request Could you please provide: Any available example project demonstrating Enhanced RX FIFO with DMA operation. Recommended RTD configuration for this use case. Clarification on whether the RTD currently supports continuous Enhanced RX FIFO reception using DMA without software re-arming. Any bare-metal driver examples implementing Enhanced RX FIFO + DMA reception. Thank you for your support. Re: Clarification Required on FlexCAN Enhanced RX FIFO + DMA Operation on S32K312 Hi, 1. MEX Configuration Verification A: seems your mex does not correspond for the your described setup - watermark is set to 1 - DMA Transfer Config is not need, driver configures DMA by own, unless you want to do own DMA setting and transfers 2. Enhanced RX FIFO + DMA Data Loss Observation A: After DMA completion interrupt, all received messages are read out and the assigned DMA channel is disabled. So if the FlexCAN_Ip_RxFifo is not called again, RXFIFO still accepts messages, again from entry 0, but as DMA is not started again, it does not read out RXFIFO. 3. FlexCAN_Ip_RxFifo DMA Reconfiguration A: what is minor loop count? Driver itself sets minor loop size (NBYTES) as 80 to read up to 64byte payload message plus IDHIT and timestamp info from RXFIFO. So I do not get your calculation, in fact. Maybe share your code 4. Enhanced RX FIFO Memory Observation A: just first Enhanced RX FIFO element area is visible to used, if represents Enhanced FIFO output port address range. It is not advisable to show RXFIFO memory during debugging. For proper FIFO engine operation, the CPU should not access the Enhanced FIFO output port address range during DMA operation, in fact displaying this memory space cause reading of it. 5. Structure Size Mismatch A: FlexCAN_Ip_MsgBuffType does not fully reflect RXFIFO structure. at teh end of transfer a driver read out internal buffer and fill respective fields of user buffer with proper data. As written above DMA should be set to read out 80bytes per single DMA request. Driver is written in a way you need to rearm DMA (call FlexCAN_Ip_RxFifo) again after DMA is finished and FLEXCAN_EVENT_DMA_COMPLETE event is called. You can refer to below demo foe enhance RXFIFO and DMA usage, but it is done in RTD400 https://community.nxp.com/t5/S32K-Knowledge-Base/Example-S32K344-FlexCAN-Ip-TX-RX-EnhanceRXFIFO-DMA-test-S32DS3-5/ta-p/2015832 BR, Petr
記事全体を表示
MPC5200 detected by Codewarrior TAP over JTAG Hello, I have been struggling for a while with attaching the Codewarrior TAP debugger to a custom application board which is equipped with MPC5200. Probe is "FREESCALE CodeWarrior USB TAP CWH-CTP-BASE-HE". Probe tip is built by myself. Basically I found the pinout/schematic of the 2x15 connector on the site and did my own wiring to the board. I placed 10Kohms resistor between pin 30 and ground. Tip is recognized as "Power Architecture/JTAG COP" I have been using CCS console exclusively. I did not use Codewarrior IDE so far. Current status: findcc detects the TAP correctly. scanboard detects the JTAG chain and reports: Device 0: Altera FPGA (IDCODE 0x020B20DD) Device 1: MPC5200B rev. 2.x (IDCODE 0x1001101D) Devices 2....7: IDCODE: FFFFFFFF, Device: Unknown Device. OpenOCD also detects exactly the same two devices, so the JTAG chain appears to be correct. The target is powered and running its application. Problem: Any attempt to configure the processor in CCS fails: ccs::config_chain mgt5200 returns: mgt5200: no connection to the target or unrecognized processor ccs::get_config_chain always reports "test core" instead of mgt5200. Low level JTAG commands (like jtag::get_speed) always return: Internal failure. Questions: Does the MPC5200 support any hardware or software mechanism that disables JTAG debug while still allowing IDCODE scans? Are there known requirements regarding TRST, HRESET, boot straps, or BDM/JTAG enable pins for CCS to recognize the MPC5200? Is there a way to obtain a more detailed attach log from CCS to determine which step fails after the IDCODE scan? Really appreciate your for taking the time to read this, Mihai Re: MPC5200 detected by Codewarrior TAP over JTAG Hello, The behavior you observe (IDCODE scan working but debug attach failing) is consistent with MPC5200 architecture. According to the MPC5200 documentation, the device uses a two-level JTAG structure: a master TAP (for standard JTAG/IDCODE) and a slave TAP for CPU debug (e300 COP interface). If the slave TAP is not enabled or not correctly selected, JTAG detection works, but debugger attach will fail.  Recommend check: Proper handling of TRST and reset signals (TAP must be in correct state) Ability to reset/hold the device during attach That the CPU debug (COP) interface is accessible (not blocked by hardware or configuration) Correct JTAG chain configuration and TAP selection, especially in multi-device chains Best regards, Peter
記事全体を表示
GUI 指南 - 在 RT1170 evkb 上刷写 16 位设备演示程序时发生内存溢出 id:GUI-Guider 环境 • 工具:GUI Guider 1.10.1 • 目标板:RT1170-EVKB,RK055HDMIPI4M 720x1280 MIPI 面板 • 图形库:LVGL8 • 工作版本:咖啡倾倒演示(功能齐全) • 设备演示(8 位 RGB332 工作正常) 失败的变体: • 设备演示(16 位 RGB565) 问题描述 尝试构建并烧录 16 位 (RGB565) 版本的 Appliance 演示程序时,由于 .bss 文件中的内存溢出,构建在链接器阶段失败。部分。 错误详情 • 段溢出:.bss不符合 m_data 的要求 • 溢出大小:约 5.13 MB(≈ 5,382,464 字节) 这个问题似乎与从 8 位颜色深度过渡到 16 位颜色深度时内存使用量增加有关: 帧缓冲区大小可能会翻倍 LVGL 绘制缓冲区 + 可能的双缓冲增加 .bss用法 合并内存超过了链接器脚本中定义的可用 m_data 区域。 问:想请教一下,这种配置是否可行?或者 GUI Guider 中是否有针对 LVGL 的推荐内存优化方案? Re: GUI Guider - Memory Overflow when Flashing 16-bit Appliance Demo on RT1170 evkb 你好migb2720 , 对于 RT1170EVKB,所有图像资源最终都链接到 同步动态随机存取存储器(SDRAM)。您遇到的问题是由同步动态随机存取存储器(SDRAM) 空间不足引起的。您可以调整应用程序堆大小,以释放更多可用的同步动态随机存取存储器 (SDRAM) 空间。请问您使用的是哪种工具链? 顺祝商祺! 宗春
記事全体を表示
kw47 lpuart Hi: Modify and verify the serial communication based on the official routine kw47loc_wireless_uart_freertos. Only modify Uart_RxCallBack and baud rate. The modifications are as follows:  For the convenience of testing at present, 20 bytes are sent each time through the serial port. The test found that when the baud rate is lower than 256000, there are no problems with both receiving and sending. When the baud rate is set to 460800 or higher, the kw47 sends normally, but packet loss occurs during reception.  Could you please check if I'm using it improperly and give me some guidance?  Also, why is there no kw47loc_freertos_lpuart_cm33_core0 routine in sdk_26_03_00?  Thank you! 
記事全体を表示
Codewarrior TAP 通过 JTAG 检测到了 MPC5200 你好, 我一直很苦恼,不知道如何将Codewarrior TAP调试器连接到配备MPC5200的定制应用板上。 探针是“ FREESCALE CodeWarrior USB TAP CWH-CTP-BASE-H E”。 探针尖端是我自己制作的。基本上,我在网站上找到了 2x15 连接器的引脚图/原理图,然后自己进行了板的接线。我在引脚 30 和地之间连接了一个 10 千欧姆的电阻。提示被识别为“电源架构/JTAG COP” 我一直只使用CCS控制台。我目前还没有使用过Codewarrior IDE。 当前状态: findcc 能正确检测到 TAP。 扫描板检测到 JTAG 链并报告: 设备 0:Altera FPGA(IDCODE 0x020B20DD) 设备 1:MPC5200B rev. 2.x(IDCODE 0x1001101D) 设备 2....7:IDCODE:FFFFFFFF,设备:未知设备。 OpenOCD 也检测到了完全相同的两个设备,因此 JTAG 链似乎是正确的。 目标设备已通电并正在运行其应用程序。 问题: 在CCS中配置处理器的任何尝试均失败: ccs::config_chain mgt5200 返回: mgt5200:未连接到目标或无法识别的处理器 ccs::get_config_chain总是报告“测试核心”而不是 mgt5200。 底层 JTAG 命令(如jtag::get_speed )总是返回:内部故障。 问题: MPC5200 是否支持任何硬件或软件机制,可以在禁用 JTAG 调试的同时仍然允许 IDCODE 扫描? CCS 识别 MPC5200 时,对 TRST、HRESET、引导程序或 BDM/JTAG 使能引脚是否有已知的要求? 是否有办法从 CCS 获取更详细的附件日志,以确定 IDCODE 扫描后哪个步骤失败? 非常感谢您抽出时间阅读本文。 米哈伊 Re: MPC5200 detected by Codewarrior TAP over JTAG 你好, 您观察到的行为(IDCODE 扫描工作但调试附加失败)与 MPC5200 架构一致。 根据 MPC5200 文档,该设备使用两级 JTAG 结构:一个主 TAP(用于标准 JTAG/IDCODE)和一个从 TAP(用于 CPU 调试,即 e300 COP 接口)。如果从设备 TAP 未启用或未正确选择,JTAG 检测可以工作,但调试器连接将失败。 建议查看: 正确处理 TRST 和复位信号(TAP 必须处于正确状态) 能够在连接过程中重置/固定设备 CPU调试(COP)接口可访问(未被硬件或配置阻止) 正确的 JTAG 链配置和 TAP 选择,尤其是在多设备链中 顺祝商祺! Peter
記事全体を表示
How to Measure the Internal Temperature and Voltage of an MCU Using the ADC0 NXPサポートチームの皆様、こんにちは。  現在、S32K314、RTD 7.0.0、およびFreeRTOSを使用したプロジェクトに取り組んでいます。MCALのADCモジュールを使用して、MCUに接続された外部デバイスの電圧、MCUの内部温度(TEMPSENSE)、MCUの内部電圧(ANAMUX)、およびバンドギャップ電圧の測定を実装しようとしています。測定結果を見ると、外部デバイスの電圧とバンドギャップ電圧は正しく測定されているようですが、MCUの内部温度と内部電圧の値は予想と異なっています。 期待値: MCU内部電圧(VDD_HV_A): 8192(2.5V、14ビット分解能) 実測値: 約6800~7100(2.07~2.13V、14ビット分解能) MCUの電源電圧は5.0Vです。ADCハードウェアユニットはADC0に設定され、ADC測定対象は以下のように構成されます。  Ch8:MCU内部温度(TEMPSENSE)  Ch9:MCU内部電圧(ANAMUX)  第10章:バンドギャップ  MCU入力電圧 = 5.0V ADC初期化コード: void AdcAdapter_Init ( void ) { Adc_Calibrate ( ADC0 , & calStatus ) ; Adc_SetupResultBuffer ( ADC0 , Group0Result ) ; IP_DCM_GPR -> DCMRWF1 = ( IP_DCM_GPR -> DCMRWF1 | DCM_GPR_DCMRWF1_SUPPLY_MON_EN ( 1 ) | DCM_GPR_DCMRWF1_VDD_HV_A_VLT_DVDR_EN ( 1 ) | DCM_GPR_DCMRWF1_VDD_HV_B_VLT_DVDR_EN ( 1 ) | DCM_GPR_DCMRWF1_VDD_1_5_VLT_DVDR_EN ( 1 ) ) ; IP_DCM_GPR -> DCMRWF1 = ( IP_DCM_GPR -> DCMRWF1 & ~ DCM_GPR_DCMRWF1_SUPPLY_MON_SEL_MASK ) | DCM_GPR_DCMRWF1_SUPPLY_MON_SEL ( 0U ) ; // VDD_HV_A_DIV Adc_StartGroupConversion ( ADC0 ) ; // AdcConversionStart } ADCデータ取得(すべての周期的なタスク) void AdcAdapter_RunCyclic ( void ) { Adc_StatusType ret = ADC_IDLE ; Std_ReturnType adcStatus ; uint16 temperature ; // 変換完了チェック ret = Adc_GetGroupStatus ( ADC0 ) ; if ( ( ret == ADC_COMPLETED ) || ( ret == ADC_STREAM_COMPLETED ) ) { // 結果を取得 Adc_ReadGroup ( ADC0 , Group0Result ) ; // 次の変換を開始 Adc_StartGroupConversion ( ADC0 ) ; } else { // エラーログ } /* Adc_TempSenseGetTemp Singed Q11.4 */ adcStatus = Adc_TempSenseGetTemp ( ADC0 , mcuTemperature ) ; if ( E_OK == adcStatus ) { temperature = Adc_TempSenseCalculateTemp ( ADC0 , mcuTemperature ) ; } else { // エラーログ } }  ADC0グループのADC値は`Adc_ReadGroup`を使用して更新できると思いますが、MCUの内部温度については`Adc_TempSenseGetTemp`と`Adc_TempSenseCalculateTemp`を使用する必要があると思います。もし私が見落としている設定があれば教えてください。 Re: How to Measure the Internal Temperature and Voltage of an MCU Using the ADC0 こんにちは、センレントさん。 迅速なご対応ありがとうございます。 ご提供いただいたサンプルコードは既に確認済みで、私のコードに組み込んだと考えています。 ご提供いただいた表は、ADCブロックに供給される各クロックに対するレジスタ設定の表であると解釈しました。しかし、それらがMCALのどのADC設定に対応しているのかを特定することはできませんでした。 ソースコードを提供できないため、ADC設定の画像を添付します。どの設定を変更すればよいか教えてください。 他に何か必要な設定画面があれば、お知らせください。 AdcHwUnit> Re: How to Measure the Internal Temperature and Voltage of an MCU Using the ADC0 こんにちは@輝彦 提供された情報にはADCの完全な構成が見当たらなかったので、ADCクロックがデータシートの要件に合っているか再確認してください。 可能であれば、テストプロジェクトを共有していただければ、私が確認します。 ちなみに、下記のリンクからデモをご覧ください。 https://community.nxp.com/t5/S32K-Knowledge-Base/Example-S32K344-TempSenser-S32DS36-RTD600-500-400-p24/ta-p/2136187 Re: How to Measure the Internal Temperature and Voltage of an MCU Using the ADC0 こんにちは、センレントさん。 アドバイスありがとうございます。 ご助言に従い、TEMPSENSEのサンプリング時間を1.2マイクロ秒に設定するように、以下のように設定を変更しました。 160MHz = 0.00625マイクロ秒 1.2マイクロ秒/0.00625マイクロ秒= 192 FreeRTOSで1秒サイクルのタスクを作成し、MCU電圧(VDD_HV_A)とMCU温度(TEMPSENSE)のADC値を毎秒取得しました(30秒分のデータ収集)。 MCU電圧についてはバンドギャップ電圧を使い、以下の補償式でmVに変換しました。 (バンドギャップ電圧はほとんど変動せず、約3975(約1.2V)の値が得られた。) Adc補正 = (1200(mV) * Adc_VCC_HV_A) / Adc_バンドギャップ Mcu電圧 = アドコレーション × 2(2は電圧分割比VDD_HV_A) さらに、 McuTempデータは `Adc_TempSenseGetTemp(ADC0, &mcuTemperature)` から取得されます。 ADC変換誤差が±5.0%であることを考慮しても、このばらつきは大きすぎると思います。何か解決策の提案はありますか?   Re: How to Measure the Internal Temperature and Voltage of an MCU Using the ADC0 こんにちは@輝彦 ご提供いただいた設定画面のスクリーンショットとコードを見る限り、明らかなエラーは見当たりません。ただし、温度センサのサンプリング時間は1.2μsを超えなければならないことに注意が必要です。そうでなければ、サンプリングの精度に影響します。したがって、テストを行う前にサンプリング時間を再度確認することをお勧めします。 Re: How to Measure the Internal Temperature and Voltage of an MCU Using the ADC0 ADC_Config>AdcHwUnitの画像が圧縮されて解像度が低下したため、再アップロードします。 <#1> <#2> <#3> Re: How to Measure the Internal Temperature and Voltage of an MCU Using the ADC0 こんにちは@輝彦 温度チャネルから生データを直接読み取って、変動があるかどうかを観察できます。変動が大きい場合は、サンプリング時間を延ばし続けるCAN。 Re: How to Measure the Internal Temperature and Voltage of an MCU Using the ADC0 こんにちは、センレントさん。 ご返信ありがとうございます。 下図に示すように、サンプリング期間1/期間2の値を増加させた後、値は安定しました。デフォルト設定はサンプリング持続時間0だと思っていましたが、サンプリング持続時間0、1、2の切り替えはどうすればいいのでしょうか? (プリスケール設定に基づくと、ADCクロックは80MHzなので、1.2μsに相当する期間は96となる。) Re: How to Measure the Internal Temperature and Voltage of an MCU Using the ADC0 こんにちは、センレントさん。 ドキュメントを添付してくださりありがとうございます。現在チャネル32から63を測定しているので、これはサンプリング持続時間1に対応していると理解しています。 迅速なご対応ありがとうございます。問題は解決しました。 Re: How to Measure the Internal Temperature and Voltage of an MCU Using the ADC0 こんにちは、センレントさん。 私は表317の情報を以下のように解釈しました。 fmc = 160 MHz の場合: ・キャリブレーション用のプリスケーラを4に設定する ・通常のADC変換のプリスケーラを2に設定する ・「ADC高速」を無効に設定する これらの設定を適用して得られたデータは、以下の表に示されています。 平均化することでばらつきは減りましたが、MCU内部温度の変動は依然としてかなり大きいと感じます。 以下の表は、ADC値から°Cに変換したMCU温度データを示しています。 (ADC値を摂氏に変換するために、ADC値を16で割りました。) 16点平均で2.55度の変動は極めて大きい。MCUの温度はプロセッシング負荷によって変動することは理解していますが、これほど瞬時に大きく変わるのは普通のことですか? MCUの内部温度を測定する際に、平均を取るのが正しいアプローチでしょうか?
記事全体を表示
Using GPIO29 of RW612 on FRDM Devboard and uBlox IRIS-W101 Hi everyone, I’ve been trying for a while to use GPIO29/D2 as an I/O pin. However, when I initialize the pin as an I/O pin /* Initialize GPIO29 functionality on pin GPIO_29 (pin D2) */ IO_MUX_SetPinMux(IO_MUX_GPIO29); the program crashes. As far as I can tell, GPIO29 isn’t being used for DQS on the connected Flash ICs via FlexSPI—neither on the FRAM board nor in the IRIS module—so it should be available for use. I’ve been using the lpc_gpio_led_output example as a basis. I’ve also tried changing the clock settings, but that only led to even more errors. Are there specific settings I need to adjust here? Thank you very much for your help. Best regards, Andreas Re: Using GPIO29 of RW612 on FRDM Devboard and uBlox IRIS-W101 Hello @gasar, hope you are doing well. Even though the GPIO[29] is not physically connected/used by the flash device, the FlexSPI controller uses DQS configuration by default for the boot ROM from Flash to achieve proper data read timings in loopback, and also its configuration is used by the ROM code, therefore its functionality should not be modified as stated in Table 45 - ISP pin assignments of UM11865. Sorry for the inconveniences this may cause. Re: Using GPIO29 of RW612 on FRDM Devboard and uBlox IRIS-W101 Hi Roman, thank you for the fast response and for confirming my suspicion. I was hoping that the IO could still be used somehow by adjusting some settings. Unfortunately, now I have to repair all the pcbs by hand 😞 Then I'll write to u-blox and ask them to please update their incorrect datasheet so that others are spared the hassle! BR, Andreas
記事全体を表示
GUI Guider - RT1170 evkbで16ビットアプライアンスデモをフラッシュする際のメモリオーバーフロー ID:GUI-Guider環境 • ツール:GUI Guider 1.10.1 ・対象ボード:RT1170-EVKB、RK055HDMIPI4M 720x1280 MIPIパネル • グラフィックライブラリ: LVGL8 ・動作確認済みバージョン:コーヒー注ぎデモ(完全動作) ・アプライアンスデモ(8ビットRGB332動作確認済み) 失敗したバリアント: • アプライアンスデモ(16ビットRGB565) 問題の説明 アプライアンスデモの16ビット(RGB565)バージョンをビルドしてフラッシュしようとすると、.bssファイル内のメモリオーバーフローが原因でリンカー段階でビルドが失敗します。セクション。 エラーの詳細 • セクションオーバーフロー: .bssm_dataには適合しません ・オーバーフローサイズ:約5.13MB(約5,382,464バイト) この問題は、8ビットから16ビットの色深度に移行する際にメモリ使用量が増加することに関連しているようです。 フレームバッファのサイズはおそらく2倍になります LVGL ドローバッファ + ダブルバッファリングの可能性増加 .bss使用法 合計メモリがリンカースクリプトで定義された使用可能なm_data領域を超えています。 質問:この構成で正常に動作するか、またはGUI GuiderでLVGLのメモリ最適化に関する推奨事項があるかどうかについて、ご教示いただければ幸いです。 Re: GUI Guider - Memory Overflow when Flashing 16-bit Appliance Demo on RT1170 evkb こんにちはmigb2720 さん、 RT1170EVKBの場合、すべてのイメージリソースは最終的にSDRAMにリンクされます。発生した問題は、SDRAM容量不足が原因です。アプリケーションヒープのサイズを調整して、より多くのSDRAMスペースを空けることができます。お使いのツールチェーンを教えていただけますか? よろしくお願いいたします。 宗春
記事全体を表示
kw47 lpuart 您好: 根据官方例程 kw47loc_wireless_uart_freertos 修改并验证串行通信。仅修改 Uart_RxCallBack 和波特率。修改内容如下: 为了方便测试,目前每次通过串口发送 20 字节。测试发现,当波特率低于 256000 时,接收和发送均无问题。当波特率设置为 460800 或更高时,kw47 发送正常,但在接收过程中会发生丢包。 请问您能否帮我检查一下我的使用方法是否正确,并给我一些指导? 另外,为什么 sdk_26_03_00 中没有 kw47loc_freertos_lpuart_cm33_core0 例程? 谢谢!
記事全体を表示
如何使用ADC0测量MCU的内部温度和电压 NXP支持团队的各位成员大家好。 我目前正在使用 S32K314、RTD 7.0.0 和 FreeRTOS 开发一个项目。我尝试使用 MCAL 的 ADC 模块测量连接到 MCU 的外部设备的电压、MCU 的内部温度(TEMPSENSE)、MCU 的内部电压(ANAMUX)以及带隙电压。查看测量结果,外部设备的电压和带隙电压似乎测量正确,但 MCU 的内部温度和内部电压值与预期不符。 预期值: MCU内部电压(VDD_HV_A): 8192(2.5V,14 位分辨率) 实际测量值: 约 6800–7100 (2.07–2.13V,14 位分辨率) MCU电源电压为5.0V。ADC硬件单元设置为ADC0,ADC测量目标配置如下: Ch8:MCU内部温度(TEMPSENSE) Ch9:MCU内部电压(ANAMUX) 第十章:带隙 MCU输入电压 = 5.0V ADC初始化代码: void AdcAdapter_Init ( void ) { Adc_Calibrate ( ADC0 , & calStatus ) ; Adc_SetupResultBuffer ( ADC0 , Group0Result ) ; IP_DCM_GPR -> DCMRWF1 = ( IP_DCM_GPR -> DCMRWF1 | DCM_GPR_DCMRWF1_SUPPLY_MON_EN ( 1 ) | DCM_GPR_DCMRWF1_VDD_HV_A_VLT_DVDR_EN ( 1 ) | DCM_GPR_DCMRWF1_VDD_HV_B_VLT_DVDR_EN ( 1 ) | DCM_GPR_DCMRWF1_VDD_1_5_VLT_DVDR_EN ( 1 ) ) ; IP_DCM_GPR -> DCMRWF1 = ( IP_DCM_GPR -> DCMRWF1 & ~ DCM_GPR_DCMRWF1_SUPPLY_MON_SEL_MASK ) | DCM_GPR_DCMRWF1_SUPPLY_MON_SEL ( 0U ) ; // VDD_HV_A_DIV Adc_StartGroupConversion ( ADC0 ) ; // AdcConversionStart } ADC数据采集(所有周期性任务) void AdcAdapter_RunCyclic ( void ) { Adc_StatusType ret = ADC_IDLE ; Std_ReturnType adcStatus ; uint16 temperature ; // 変換完了チェック ret = Adc_GetGroupStatus ( ADC0 ) ; if ( ( ret == ADC_COMPLETED ) || ( ret == ADC_STREAM_COMPLETED ) ) { // 結果を取得 Adc_ReadGroup ( ADC0 , Group0Result ) ; // 次の変換を開始 Adc_StartGroupConversion ( ADC0 ) ; } else { // エラーログ } /* Adc_TempSenseGetTemp Singed Q11.4 */ adcStatus = Adc_TempSenseGetTemp ( ADC0 , mcuTemperature ) ; if ( E_OK == adcStatus ) { temperature = Adc_TempSenseCalculateTemp ( ADC0 , mcuTemperature ) ; } else { // エラーログ } } 我认为可以使用 `Adc_ReadGroup` 更新 ADC0 组的 ADC 值,但需要使用 `Adc_TempSenseGetTemp` 和 `Adc_TempSenseCalculateTemp` 来检查 MCU 的内部温度。如果我遗漏了任何设置,请告知。 Re: How to Measure the Internal Temperature and Voltage of an MCU Using the ADC0 森伦特先生,您好! 感谢您的快速回复。 我已经审阅了您提供的示例代码,并且相信我已经将其融入到我的代码中。 我把您提供的表格理解为提供给 ADC 模块的每个时钟的寄存器设置表。但是,我无法确定它们对应于 MCAL 中的哪个 ADC 设置。 由于我无法提供源代码,因此我附上了一张ADC设置的图片。请告诉我应该更改哪些设置。 如果您还需要其他设置界面,请告诉我。 AdcHwUnit> Re: How to Measure the Internal Temperature and Voltage of an MCU Using the ADC0 嗨@辉彦 我没有从您提供的信息中看到完整的ADC配置,所以请您仔细检查ADC时钟是否符合数据手册的要求。 如果可以的话,你可以把你的测试项目分享给我,我会帮你检查一下。 对了,可以看看下面链接里的演示: https://community.nxp.com/t5/S32K-Knowledge-Base/Example-S32K344-TempSenser-S32DS36-RTD600-500-400-p24/ta-p/2136187 Re: How to Measure the Internal Temperature and Voltage of an MCU Using the ADC0 森伦特先生,您好! 谢谢你的建议。 根据您的建议,我更改了设置,如下所示,将 TEMPSENSE 采样时间设置为 1.2 微秒。 160MHz = 0.00625微秒 1.2微秒/0.00625微秒= 192 我在 FreeRTOS 中创建了一个周期为 1 秒的任务,每秒获取一次 MCU 电压 (VDD_HV_A) 和 MCU 温度 (TEMPSENSE) 的 ADC 值(收集 30 秒的数据)。 对于 MCU 电压,我使用了带隙电压,并使用以下补偿公式将其转换为 mV。 (带隙电压几乎没有波动,测得的值约为 3975(约 1.2 V)。) Adc校正 = (1200(mV) * Adc_VCC_HV_A) / Adc_带隙 MCU电压= Adc校正 * 2(2为VDD_HV_A的分压比) 此外, McuTemp数据来自 `Adc_TempSenseGetTemp(ADC0, &mcuTemperature)`。 即使考虑到 +/- 5.0% 的 ADC 转换误差,我认为这种变化也太大了。有什么建议的解决方案吗?   Re: How to Measure the Internal Temperature and Voltage of an MCU Using the ADC0 嗨@辉彦 从你提供的配置截图和代码来看,我没有发现任何明显的错误。但是需要注意的是,温度传感器的采样时间必须大于 1.2µs;否则,会影响采样精度。因此,我建议您在测试前仔细核对采样时间。 Re: How to Measure the Internal Temperature and Voltage of an MCU Using the ADC0 ADC_Config>AdcHwUnit 的图像被压缩,导致分辨率降低,因此我重新上传了它。 <#1> <#2> <#3> Re: How to Measure the Internal Temperature and Voltage of an MCU Using the ADC0 嗨@辉彦 您可以直接读取温度通道的原始数据,观察是否存在波动。如果波动较大,您可以继续尝试增加采样时间。 Re: How to Measure the Internal Temperature and Voltage of an MCU Using the ADC0 森伦特先生,您好! 我对表 317 中的信息作了如下解释。 当 fmc = 160 MHz 时: ・将校准预分频器设置为4 ・将普通ADC转换的预分频器设置为2 ・将“ADC 高速”设置为“禁用” 应用这些设置后获得的数据如下表所示。 虽然平均值降低了波动,但我感觉 MCU 内部温度的波动仍然相当显著。 下表显示了从 ADC 值转换为 °C 的 MCU 温度数据。 (为了将ADC值转换为摄氏度,我将ADC值除以16。) 16 个点平均值出现 2.55 度的变化是极其大的。我知道MCU温度会根据处理负载而波动,但是温度瞬间变化这么大正常吗? 测量MCU内部温度时,取平均值是否是正确的方法? Re: How to Measure the Internal Temperature and Voltage of an MCU Using the ADC0 森伦特先生,您好! 感谢您附上文档。由于我目前正在测量通道 32-63,我知道这对应于采样持续时间 1。 感谢您的及时回复。问题已解决。 Re: How to Measure the Internal Temperature and Voltage of an MCU Using the ADC0 森伦特先生,您好! 谢谢你的回复。 如下图所示,在我增加采样持续时间 1/持续时间 2 的值后,这些值趋于稳定。我以为默认设置是采样持续时间 0,但是如何才能在采样持续时间 0、1 和 2 之间切换呢? (根据预分频设置,由于 ADC 时钟频率为 80 MHz,因此 1.2 μs 对应的持续时间为 96。)
記事全体を表示
kw47 lpuart こんにちは: 公式ルーチン kw47loc_wireless_uart_freertos に基づいてシリアル通信を修正および検証します。Uart_RxCallBackとボーレートのみを変更してください。変更点は以下のとおりです。 現時点でのテストの便宜上、シリアルポートを通して毎回20バイトのデータが送信されます。テストの結果、ボーレートが256000未満の場合、送受信ともに問題は発生しないことがわかった。ボーレートを460800以上に設定した場合、kw47は正常に送信しますが、受信時にパケット損失が発生します。 使い方が間違っているか確認して、アドバイスをいただけませんか? また、sdk_26_03_00 に kw47loc_freertos_lpuart_cm33_core0 ルーチンがないのはなぜですか? よろしくお願いいたします。
記事全体を表示
FRDM Devboard および uBlox IRIS-W101 上の RW612 の GPIO29 を使用する こんにちは、皆さん 私はGPIO29/D2をI/Oピンとして使用しようとしばらく試みてきました。しかし、ピンをI/Oピンとして初期化すると /* ピン GPIO_29 (ピン D2) で GPIO29 の機能を初期化します */ IO_MUX_SetPinMux(IO_MUX_GPIO29); プログラムがクラッシュします。私の知る限り、GPIO29はFlexSPI経由で接続されたフラッシュICのDQSには使われていないので、使用可能であるはずです。私はlpc_gpio_led_outputのサンプルをベースに使っています。 時計の設定を変更してみましたが、かえってエラーが増えてしまいました。 ここで調整する必要のある特定の設定はありますか? ご協力いただき、誠にありがとうございました。 よろしくお願いします、 アンドレアス Re: Using GPIO29 of RW612 on FRDM Devboard and uBlox IRIS-W101 こんにちは、 @gasar さん。お元気でお過ごしでしょうか。 GPIO[29]はフラッシュデバイスによって物理的にコネクテッド・使用されていませんが、FlexSPIコントローラはフラッシュからのブートROMに対してデフォルトでDQS構成を用い、ループバックで適切なデータ読み取りタイミングを実現しています。また、その構成はROMコードによっても利用されるため、 表45 - UM11865のISPピン割り当て に記載されているように機能を変更するべきではありません。 ご迷惑をおかけして申し訳ございません。 Re: Using GPIO29 of RW612 on FRDM Devboard and uBlox IRIS-W101 こんにちは、ローマンさん。 迅速なご対応と、私の推測を裏付けていただき、ありがとうございました。設定を調整すればIOが何らかの形で使えることを期待していました。残念ながら、今はすべての基板を手作業で修理しなければなりません。 😞 その後、you-bloxに連絡して、誤ったデータシートを更新してほしいとお願いします。そうすれば他の人も手間を省けるように! BR、アンドレアス
記事全体を表示
关于 S32K312 上 FlexCAN 增强型 RX FIFO + DMA 操作的说明需要澄清 你好 , 我们目前正在研究基于 S32K312 的 FlexCAN 增强型 RX FIFO 和 DMA, enhanced FIFOenhanced FIFO增强型先进先出   我们正在使用 rtd v 7.0.1,希望就我们遇到的几个问题和观察结果进行澄清。 1. MEX 配置验证 请您确认启用 DMA 的 FlexCAN 增强型 RX FIFO 的推荐 MEX 配置是什么?我们希望确保我们的配置符合预期的RTD使用模型。 2. 增强型接收 FIFO + DMA 数据丢失观察 根据 FlexCAN 勘误表中的建议,启用增强型 RX FIFO 时,以下消息缓冲区将不使用: MB0–MB7、MB10、MB12、MB20、MB22、MB30、MB32、MB40、MB50 和 MB60。 我们的配置如下: 增强型接收 FIFO 已启用 DMA已使能 水印配置为 10 个条目 DMA 将 FIFO 数据传输到软件缓冲区。 观察到的行为: CAN 消息已正确接收到增强型 RX FIFO 中。 DMA 可以成功传输数据,直到达到水印级别。 DMA完成中断被触发。 此后,在预期的下一个 FIFO 位置(从第 11 个 FIFO 条目开始)中未观察到传入的 CAN 消息。 观察到数据丢失和异常的先进先出(FIFO)行为。 请解释一下这种情况下的预期行为以及出现消息丢失的可能原因? 3. FlexCAN_Ip_RxFifo DMA 重配置 在调试 RTD 驱动程序时,我们观察到 FlexCAN_Ip_RxFifo API 似乎会重新配置 DMA 参数。 具体来说: 次要循环计数似乎已配置为 16 传输大小似乎为 4 字节 这导致总传输大小为 64 字节(或根据解释约为 68 字节),这似乎与参考手册中描述的增强型 RX FIFO 条目大小不符。 能否解释一下这个 API 的预期功能以及这些 DMA 设置背后的原理? 4. 增强型接收 FIFO 存储器观察 调试过程中还观察到,尽管 DMA 似乎将数据从 FIFO 传输到软件缓冲区: FIFO 内存区域仍然包含较旧的消息 ID。 内存浏览器似乎只显示第一个增强型 RX FIFO 元素。 先进先出位置似乎没有按预期更新。 附上屏幕截图供参考。 能否解释一下这是否是预期行为,以及在运行时调试期间应该如何解释增强型 RX FIFO 内存? 5. 结构尺寸不匹配 我们还观察到 RTD 结构与参考手册之间存在差异。 FlexCAN_Ip_MsgBuffType 在 RTD 中的大小:78 字节 根据参考手册,增强型 RX FIFO 元素大小为:80 字节 请问您能否解释一下: 为什么会出现这种尺寸差异? 是否需要考虑包装/对齐方面的问题? DMA 传输应该配置为 78 字节还是 80 字节? 预期用途案例 我们的要求是使用: 增强型接收 FIFO 基于DMA的接收 消息接收过程中不会出现 CPU 中断。 预期行为是: CAN 消息到达增强型 RX FIFO。 DMA 会自动将 FIFO 条目传输到软件缓冲区。 正常运行不需要软件轮询或接收中断处理。 有意避开增强型 RX FIFO 保留的消息缓冲区(MB0–MB7、MB10、MB12、MB20、MB22、MB30、MB32、MB40、MB50 和 MB60),而其余的消息缓冲区则用于传输。 申请它 请问您能否提供以下信息: 任何能够演示增强型 RX FIFO 与 DMA 操作的示例项目。 针对此用例推荐的RTD配置。 澄清 RTD 目前是否支持使用 DMA 进行连续增强型 RX FIFO 接收而无需软件重新激活。 任何实现增强型 RX FIFO + DMA 接收的裸机驱动程序示例。 感谢您的支持。 Re: Clarification Required on FlexCAN Enhanced RX FIFO + DMA Operation on S32K312 您好, 1. MEX 配置验证 A:看来您的 MEX 与您描述的设置不符。 - 水印设置为 1 - DMA传输配置并非必需,驱动程序会自动配置DMA,除非您想要自行设置DMA参数和传输方式。 2. 增强型接收 FIFO + DMA 数据丢失观察 A:DMA 完成中断后,所有接收到的消息都会被读取,并且分配的 DMA 通道将被禁用。 因此,如果不再调用 FlexCAN_Ip_RxFifo,RXFIFO 仍然会从条目 0 开始接收消息,但由于 DMA 没有再次启动,因此不会读取 RXFIFO。 3. FlexCAN_Ip_RxFifo DMA 重配置 A:什么是次要循环计数?驱动程序本身将次要循环大小(字节)设置为 80,以便从 RXFIFO 读取最多 64 字节的有效负载消息以及 IDHIT 和时间戳信息。 所以,我其实不太明白你的计算方法。或许可以分享一下你的代码 4. 增强型接收 FIFO 存储器观察 A:仅第一个增强型 RX FIFO 元素区域可见,表示增强型 FIFO 输出端口地址范围。调试期间不建议显示 RXFIFO 内存。为了使 FIFO 引擎正常运行,CPU 在 DMA 操作期间不应访问增强型 FIFO 输出端口地址范围,实际上显示此内存空间会导致对其进行读取。 5. 结构尺寸不匹配 A:FlexCAN_Ip_MsgBuffType 不能完全反映 RXFIFO 结构。传输结束时,驱动程序读取内部缓冲,并将相应的数据填充到用户缓冲区的相应字段中。 如上所述,DMA 应设置为每次 DMA 请求读取 80 字节。 驱动程序的编写方式是,在 DMA 完成并调用 FLEXCAN_EVENT_DMA_COMPLETE 事件后,需要重新激活 DMA(调用 FlexCAN_Ip_RxFifo)。 您可以参考下面的演示来增强 RXFIFO 和 DMA 的使用,但这是在 RTD400 中实现的。 https://community.nxp.com/t5/S32K-Knowledge-Base/Example-S32K344-FlexCAN-Ip-TX-RX-EnhanceRXFIFO-DMA-test-S32DS3-5/ta-p/2015832 BR,彼得
記事全体を表示
GUI Guider - Memory Overflow when Flashing 16-bit Appliance Demo on RT1170 evkb id:GUI-Guider Environment • Tool: GUI Guider 1.10.1 • Target board: RT1170-EVKB, RK055HDMIPI4M 720x1280 MIPI panel • Graphics library: LVGL8 • Working variant: Coffee Pour demo (fully working)     • Appliance demo (8-bit RGB332 works) Failing variant:     • Appliance demo (16-bit RGB565) Issue Description When attempting to build and flash the 16-bit (RGB565) version of the Appliance demo, the build fails at the linker stage due to a memory overflow in .bss section. Error Details • Section overflow: .bss does not fit in m_data • Overflow size: ~5.13 MB (≈ 5,382,464 bytes) The issue appears to be related to increased memory usage when moving from 8-bit to 16-bit colour depth: Framebuffer size likely doubles LVGL draw buffers + possible double buffering increase .bss usage Combined memory exceeds available m_data region defined in linker script ASK: Looking for guidance on whether this configuration is expected to work or if there are recommended memory optimizations for LVGL in GUI Guider. Re: GUI Guider - Memory Overflow when Flashing 16-bit Appliance Demo on RT1170 evkb Hello migb2720, For the RT1170EVKB, all image resources are eventually linked to SDRAM. The issue you encountered is caused by insufficient SDRAM space. You can adjust the application heap size to free up more available SDRAM space. May I ask which toolchain you are using? Best Regards Zongchun
記事全体を表示
How to Jump from App1 to App2 on the S32K344 Hi, we are testing a custom jump from user App 1 to user  App 2 on the FRDM A S32K344 linker file of app1 and app2 is attached below  #define APP_START_ADDRESS 0x00500000 void Bootup_Application(const uint32_t app_StarAddress) { uint32_t appEntry, appStack; static void (*jump_to_application)(void); /* Get the application's initial stack pointer value */ appStack = *((uint32_t *)(app_StarAddress)); /* Get the application's reset handler (entry point) address */ appEntry = *((uint32_t *)(app_StarAddress + 4)); /* Assign the application entry address to the function pointer */ jump_to_application = (void (*)(void))appEntry; /* Relocate the interrupt vector table to the application */ S32_SCB->VTOR = (uint32_t)app_StarAddress; /* Disable global interrupts (ASM_KEYWORD("cpsid i");) */ __asm volatile ("cpsid i" : : : "memory"); /* Set the Main Stack Pointer (MSP) */ __asm volatile ("MSR msp, %0\n" : : "r" (appStack) : "memory"); /* Set the Process Stack Pointer (PSP) */ __asm volatile ("MSR psp, %0\n" : : "r" (appStack) : "memory"); /* Jump to the application */ jump_to_application(); while (1) { /* Reaching here indicates an error occurred */ Siul2_Dio_Ip_WritePin(LED_RED_PORT, LED_RED_PIN, 1U); } } Could you please verify Bootup_Application func can succeffuly jump to app2? If any additional steps are required, please let me know. Re: How to Jump from App1 to App2 on the S32K344 Hi @ganavi1  In principle, I can see no problem there. The only thing is that disabling of global interrupts may not be enough. I always recommend to de-initialize all used peripherals. Make sure that all interrupts are disabled also locally via peripheral registers, so they can’t be triggered again once global interrupts are enabled by App2. Regards, Lukas
記事全体を表示
FEE INIT进hardware 你好,我想使用FEE储存数据,根据S32K344 例程配置后,在init进入hardware,我尝试过提前C40解锁,还是不行,我使用SW32K3_S32M27x_RTD_R21-11_4.0.0_D2311_DS_updatesite。S32DS 3.6.3   Re: FEE INIT进hardware Hi@LJH1 下周我花时间帮你检查一下 回复: FEE INIT进hardware 不是NXP开发板,是我们硬件工程师使用的8Mhz Re: FEE INIT进hardware 因为之前项目是基于rtd4.0.0;维护和开发也基本使用这个版本。除非后续不在维护老项目,我们才会使用新的rtd,毕竟公司需要统一版本。 Re: FEE INIT进hardware Hi@LJH1 我看到了总共创建了两个问题,都是基于RTD 4,0,0制作的。 我想问一下是基于什么原因还在该版本上进行开发,目前我们的RTD版本已经更新至RTD 7.0.0了,很多旧版 本的BUG已经在新版本中进行修复了。如果可以的话,我建议你安装使用最新的RTD版本, 如果由于某种原因必须要使用RTD 4.0.0,那我会花点时间去检查你提供的程序。 还有,我想明确以下你们所使用的硬件是什么?我看你提供的工程,外部时钟填写的是8MHz,这应该不是我们NXP的开发板。 Re: FEE INIT进hardware Hi@LJH1 “MemAcc”组件的预编译选项错了。
記事全体を表示
S32K344でApp1からApp2にジャンプする方法 こんにちは、 FRDM A S32K344上でユーザーApp 1からユーザーApp 2へのカスタムジャンプをテストしています app1とapp2のリンカーファイルは以下に添付されています。 #define APP_START_ADDRESS 0x00500000 void Bootup_Application ( const uint32_t app_StarAddress) { uint32_t appEntry、appStack; static void (*jump_to_application)( void ); /* アプリケーションの初期スタックポインタ値を取得 */ appStack = *(( uint32_t *)(app_StarAddress)); /* アプリケーションのリセットハンドラー(エントリポイント)アドレスを取得する */ appEntry = *(( uint32_t *)(app_StarAddress + 4)); /* アプリケーションのエントリアドレスを関数ポインタに割り当てる */ jump_to_application = ( void (*)( void ))appEntry; /* 割り込みベクターテーブルをアプリケーションに再配置する */ S32_SCB-> VTOR = ( uint32_t )app_StarAddress; /* グローバル割り込みを無効にする (ASM_KEYWORD(" cpsid i");) */ __asm volatile ( " cpsid i" : : : "memory" ); /* メインスタックポインタ (MSP) を設定します */ __asm volatile ( "MSR msp , %0\n" : : "r" (appStack) : "memory" ); /* プロセススタックポインタ(PSP)を設定します */ __asm volatile ( "MSR psp , %0\n" : : "r" (appStack) : "memory" ); /* アプリケーションへジャンプ */ jump_to_application(); ( 1) { /* ここに到達した場合は、エラーが発生したことを示します */ Siul2_Dio_Ip_WritePin(LED_RED_PORT, LED_RED_PIN, 1U); } } Bootup_Application funcがapp2に確実にジャンプできるか確認してもらえますか?他に何か必要な手順があれば、お知らせください。 Re: How to Jump from App1 to App2 on the S32K344 こんにちは、 @ganavi1さん 原則としては、問題はないと思います。ただ、グローバル割り込みを無効にするだけでは不十分な場合がある。私はいつも、使用済みのペリフェラルはすべて初期化解除することをおすすめします。すべての割り込みは、周辺レジスタを通じてローカルでも無効化されているか確認してください。これにより、App2でグローバル割り込みが有効化された後に再び割り込みがトリガーされないようにしてください。 よろしくお願いいたします。 ルーカス
記事全体を表示
S32K312におけるFlexCAN拡張RX FIFO + DMA動作に関する説明が必要 こんにちは 、 現在、S32K312上でDMAを備えたFlexCAN拡張RX FIFOの開発に取り組んでいます。 enhanced FIFOenhanced FIFO拡張FIFO   私たちはrtd v 7.0.1を使用しており、現在直面しているいくつかの所見や問題点についてご説明をいただきたいと考えています。 1. MEX構成の検証 DMAを有効にしたFlexCAN Enhanced RX FIFOの推奨MEX構成を確認していただけますか?私たちの構成が意図されたRTD利用モデルに沿っていることを確実にしたいと考えています。 2. RX FIFO + DMAデータ損失観測機能の強化 FlexCANの正誤表で示されているように、拡張RX FIFOが有効になっている場合、以下のメッセージバッファは使用されません。 MB0~MB7、MB10、MB12、MB20、MB22、MB30、MB32、MB40、MB50、およびMB60。 当社の体制は以下のとおりです。 拡張RX FIFOが有効になりました DMA が許可される 透かしは10件に設定されています DMAはFIFOデータをソフトウェアバッファに転送します 観察された行動: CANメッセージはEnhanced RX FIFOに正しく受信されます。 DMAは、ウォーターマークレベルに達するまでデータを正常に転送します。 DMA完了割り込みがトリガーされました。 この時点以降、次のFIFO位置(11回目以降)では受信CANメッセージが観測されません。 データ損失および異常なFIFO動作が確認された。 このシナリオで予想される挙動と、メッセージ喪失が確認される可能性のある理由について説明していただけますか? 3. FlexCAN_Ip_RxFifo DMA再構成 RTDドライバのデバッグ中に、FlexCAN_Ip_RxFifo APIがDMAパラメータを再構成しているように見えました。 具体的には: マイナーループカウントは16に設定されているようです。 転送サイズは4バイトのようです これにより、総転送サイズは64バイト(解釈によっては約68バイト)となり、リファレンスマニュアルで説明されている強化RX FIFOエントリサイズとは一致しないようです。 このAPIの意図された動作と、これらのDMA設定の背景について説明していただけますか? 4. RX FIFOメモリ監視機能の強化 デバッグ中のもう一つの観察点は、DMAがFIFOからソフトウェアバッファにデータを転送しているように見えるにもかかわらず、以下の通りです: FIFOメモリ領域には、古いメッセージIDがまだ残っています。 メモリブラウザーには、最初の拡張RX FIFO要素のみが表示されるようです。 FIFOロケーションが期待どおりに更新されていないようです。 参考のためにスクリーンショットを添付します。 これは予想される動作なのか、またEnhanced RX FIFOメモリをランタイムデバッグ時にどのように解釈すべきか説明していただけますか? 5. 構造サイズの不一致 また、RTDの構造とリファレンスマニュアルの間に不一致も観察されました。 FlexCAN_Ip_MsgBuffType のサイズ (RTD 内): 78 バイト リファレンスマニュアルに基づく強化RX FIFO要素サイズ:80バイト もう少し詳しく教えていただけますか: なぜこのようなサイズの違いが生じるのか? 梱包や位置合わせに関する考慮事項はありますか? DMA転送は78バイトと80バイトのどちらに設定すべきでしょうか? 意図されたユースケース 私たちの要件は以下を使用することです。 拡張RX FIFO DMAベースの受信 メッセージ受信のためのCPU割り込みはありません 意図された動作は以下のとおりです。 CANメッセージはEnhanced RX FIFOで届きます。 DMAはFIFOエントリを自動的にソフトウェアバッファに転送します。 通常の動作にはソフトウェアポーリングやRX割り込み処理は不要です。 拡張RX FIFOによって予約されているメッセージバッファ(MB0~MB7、MB10、MB12、MB20、MB22、MB30、MB32、MB40、MB50、およびMB60)は意図的に使用されず、残りのメッセージバッファが送信に使用されます。 要求 以下の情報を提供していただけますか: DMA動作を備えた拡張RX FIFOを実証する、利用可能なサンプルプロジェクト。 このユースケースに推奨されるRTD構成。 RTDが現在、DMAを用いたソフトウェア再武装なしで連続的な強化RX FIFO受信をサポートしているかどうかの説明。 強化されたRX FIFO + DMA受信を実装したベアメタルドライバーの例はありますか? 再開まで今しばらくお待ちください。 Re: Clarification Required on FlexCAN Enhanced RX FIFO + DMA Operation on S32K312 こんにちは、 1. MEX構成検証 A: あなたのメキシコは、あなたが説明した環境とは合っていないようです - ウォーターマークは1に設定されています - DMA転送設定は必須ではなく、ドライバはDMAを独自に設定します。ただし、独自のDMA設定や転送を行う場合は別です。 2. 強化RX FIFO + DMAデータ損失観測 A: DMA完了割り込みの後、受信したすべてのメッセージが読み出され、割り当てられたDMAチャネルは無効化されます。 SO、したがって、FlexCAN_Ip_RxFifoが再度呼び出されなくても、RXFIFOはエントリ0からメッセージを受け付けますが、DMAが再開されないためRXFIFOは読み出されません。 3. FlexCAN_Ip_RxFifo DMA再構成 A:マイナーループカウントとは何ですか?ドライバ自体はマイナーループサイズ(NBYTES)を80に設定し、最大64バイトのペイロードメッセージとRXFIFOからのIDHITおよびタイムスタンプ情報を読み取っています。 SO、実際のところあなたの計算が理解できません。コードを共有してみませんか? 4. RX FIFOメモリ監視機能の強化 A: 拡張 RX FIFO 要素領域の最初の部分のみが表示され、拡張 FIFO 出力ポートのアドレス範囲を表します。デバッグ中にRXFIFOメモリを表示することは推奨されません。FIFOエンジンの適切な動作のためには、DMA動作中にCPUが強化FIFO出力ポートアドレス範囲にアクセスしないようにすべきです。実際にはこのメモリ空間を表示することで読み込みが発生します。 5. 構造サイズの不一致 A: FlexCAN_Ip_MsgBuffType は RXFIFO の構造を完全に反映していません。転送終了時にドライバが内部バッファを読み出し、ユーザーバッファの各フィールドを適切なデータで埋めます。 上記の通り、DMAは1回のDMA要求ごとに80バイトの読み込みを設定すべきです。 ドライバは、DMAが終わってイベントが呼び出された後に再度DMAを再起動(コールFlexCAN_Ip_RxFifo)する必要があるように書かれていますFLEXCAN_EVENT_DMA_COMPLETE。 以下のデモを参照して、強化RXFIFOやDMAの使用例を挙げられますが、これはRTD400で行われます https://community.nxp.com/t5/S32K-Knowledge-Base/Example-S32K344-FlexCAN-Ip-TX-RX-EnhanceRXFIFO-DMA-test-S32DS3-5/ta-p/2015832 BR、ペトル
記事全体を表示
FEE INIT into hardware Hello, I want to use FEE to store data, according to S32K344 After configuring the example, during the init process, I entered the hardware. I tried unlocking the C40 beforehand, but it still didn't work. I used SW32K3_S32M27x_RTD_R21-11_4.0.0_D2311_DS_updatesite. S32DS 3.6.3   Re: FEE INIT进hardware Hi@ LJH1 I'll take some time next week to check it out for you. 回复: FEE INIT进hardware It's not an NXP development board, it's the 8MHz board used by our hardware engineers. Re: FEE INIT进hardware The previous project was based on RTD 4.0.0, and maintenance and development primarily used this version. We will only switch to the new RTD version if we stop maintaining the old project, as the company needs a unified version. Re: FEE INIT进hardware Hi@ LJH1 I see that a total of two issues were created, both based on RTD 4.0.0. I'd like to ask why we're still developing on this version. Our RTD version has already been updated to RTD 7.0.0, and many older versions... The bug has been fixed in the new version. If possible, I recommend that you install and use the latest RTD version. If for some reason I have to use RTD 4.0.0, then I will take some time to check the program you provided. Also, I'd like to clarify what hardware you are using? I see in the project you provided that the external clock is set to 8MHz, which shouldn't be our NXP development board. Re: FEE INIT进hardware Hi@ LJH1 The pre-compilation options for the “MemAcc” component are incorrect.
記事全体を表示
RT1172 Bott Config Hi, There we are using RT1172 on our new PCB board, and boot mode =0x10(Internal boot), but the problem is, all boot config is NC(not connect) pin,  in this case,  where will the MCU boot up? or do you have any good idea can help us? thanks...   Boot ROM|Booting | Flash Re: RT1172 Bott Config Hi @dongjun , BT_FUSE_SEL eFuse might help with this.
記事全体を表示