Multi Source Translation Content

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

Multi Source Translation Content

ディスカッション

ソート順:
Parallel RGB LCD interface pins question on RT1064 Hello, Correct me if I am wrong but it seems to me that the RT1064 features 2 LCD interfaces: - one located on the GPIO bus with CLK/HSYNC/VSYNC + up to 24 bits data signals and - another one for 8/16-bit MPU/8080 interface located on the SEMC bus I am using a LCD module having a ILI9341 controller. My plan is to display text and icons, I will not perform video/animation at all. I am not using any external memory on this design, SEMC bus is therefore available. Q1. Which inteface is best for my application ? Q2. On the SEMC bus, where are located the following pins that are needed to interface the ILI9341 in parallel mode : - D/CX - WRX - RDX i.MXRT 106x Re: Parallel RGB LCD interface pins question on RT1064 Hi @batmat, The LCD module that you are referring to as the one based on the GPIO bus is the Enhanced LCD Interface (eLCDIF) module, which is designed specifically for driving displays. The other module would be the Smart External Memory Controller (SEMC) module which can definitely be used to drive certain types of displays, but its design is more specifically for driving of external memories, although most 8080-based displays also fit the SEMC capabilities when this module is combined with the capabilities of the FlexIO pins. The following application describes this functionality: https://mcuxpresso.nxp.com/appcodehub?search=an-flexio_8080_rt1050 From a quick look at the ILI9341 datasheet, I believe this driver supports several types of interfaces, including the RGB interface that is compatible with the eLCDIF module, the 8080 interface which is compatible with the SEMC module, and even 3/4-line SPI interface, that could be implemented using the LPSPI module. That said, the best recommendation would be whatever fits your performance requirements, and available pinouts. With respect to the SEMC signals, the WRX (write signal) and RDX (read signal) are both defined on specific FlexIO pins. In the case of the aforementioned Application Note, these would be FlexIO2_00 and FlexIO2_01 respectively. The D/CX signal is equivalent to the Register Select (RS) signal to determine if the data lines will send data or command information. BR, Edwin.
記事全体を表示
SVD files for S32K3 - license question I would like to release some software which is derived from the S32K388 and S32K344 SVD files. But the SVD files have the following text: Copyright 2016-2024 NXP NXP Confidential and Proprietary. This software is owned or controlled by NXP and may only be used strictly in accordance with the applicable license terms. By expressly accepting such terms or by downloading, installing, activating and/or otherwise using the software, you are agreeing that you have read, and that you agree to comply with and are bound by, such license terms. If you do not agree to be bound by the applicable license terms, then you may not retain, install, activate or otherwise use the software. Is there some way I can put this code into a public repository? Or will I have to put guidance in the repository telling people to download the S32DS and extract the SVD files themselves? Re: SVD files for S32K3 - license question Thank you for your question. Unfortunately, the S32K3 SVD files (S32K344.svd, S32K388.svd) carry an "NXP Confidential and Proprietary" license that does not permit redistribution or publishing of derived works in a public repository. We recommend the following approach: Do not include the SVD-derived code directly in a public repo, as this would likely violate the license terms. Instead, provide build scripts/tooling in your repository and instruct users to download S32DS themselves and extract the SVD files, then run the code generation step locally. If you need explicit permission to publish derived code publicly, please contact your NXP sales representative to request a formal licensing exception. This is the safest path until NXP clarifies or updates the SVD file licensing terms.
記事全体を表示
对基于SoM设计的iMX95 PMIC输出存在疑问 我想制作一个基于 iMX95 的定制 PCB,我以 iMX95 SoM 原理图作为参考,引用原理图。 据我了解,PF09 将是主电源管理芯片,它将产生除 SoC 和 ARM 内核电压之外的所有电压,这些内核电压由 pf530x 产生。 我的疑问是: 1.在 PF09 的参考原理图中,LDO3 也构成了 VDD_SoC 电压线,这是为什么呢? 2. 数据显示它只能提供最高 200mA 的电流,但 SoC 的电流需求远高于此,如果 PF09 和 PF530x 都输出相同的电压,那就相当于电源线短路了,在这种情况下,PF09 的引脚会吸收电流并导致问题吗? 3. 我是否可以移除 Pf09 低压差线性稳压器\(LDO\) 的电源输出,只使用另一个低压差线性稳压器\(LDO\),这样可以吗?(请就“我是否应该删除”或“我是否可以删除”给出明确的建议) 下面附上图片供参考。 PF09 输出 PF530x 用于 VDD_SOC 生成
記事全体を表示
mcxn947 dma传输开启后没有进入回调 #include "fsl_debug_console.h" #include "pin_mux.h" #include "clock_config.h" #include "board.h" #include "app.h" #include "fsl_flexio_spi_edma.h" #include "board.h" //#include "app.h" #include "fsl_debug_console.h" void BOARD_InitHardware(void); #include "fsl_debug_console.h" #include "fsl_flexio.h" #include "fsl_edma.h" #include "fsl_inputmux.h" #include "fsl_common.h" /* 硬件常数定义 */ #define DEMO_FLEXIO_BASE FLEXIO0 #define DEMO_DMA_BASE    DMA0 #define DEMO_DMA_CH      0  /* 使用 DMA 通道 61 */ #define CHANNEL_COUNT    20  /* 20路并行引脚 */ #define BIT_DEPTH        24  /* 24位深度 */ #define SHIFTERS_USED    8   /* 每次 DMA 填充 8 个 Shifter */ /* 数据缓冲区:必须对齐以优化 DMA 性能 */ SDK_ALIGN(uint32_t g_dac_buffer[BIT_DEPTH], 32); edma_handle_t g_edma_handle; volatile bool g_transfer_done = false; /* DMA 完成回调 */ void EDMA_Callback(edma_handle_t *handle, void *param, bool transferDone, uint32_t tcds) {    if (transferDone)    {        /* 确保 FlexIO 最后一组数据已从移位寄存器彻底发出 */        while (!(FLEXIO_GetShifterStatusFlags(DEMO_FLEXIO_BASE) & 0x01U));        /* 立即关闭 DMA 请求,防止产生虚假触发 */        FLEXIO_EnableShifterStatusDMA(DEMO_FLEXIO_BASE, 1 << 0, false);        g_transfer_done = true;    } } void Init_FlexIO_DAC(void) {    flexio_config_t fxioConfig;    flexio_shifter_config_t shConfig = {0};    flexio_timer_config_t timConfig = {0};    FLEXIO_GetDefaultConfig(&fxioConfig);    FLEXIO_Init(DEMO_FLEXIO_BASE, &fxioConfig);    FLEXIO_Reset(DEMO_FLEXIO_BASE);    /* 配置 8 个 Shifter 并行输出 */    for (uint8_t i = 0; i < SHIFTERS_USED; i++)    {        shConfig.timerSelect   = 0;        shConfig.timerPolarity = kFLEXIO_ShifterTimerPolarityOnPositive;        shConfig.pinConfig     = kFLEXIO_PinConfigOutput;        shConfig.pinSelect     = 0;  /* 引脚从 D0 开始 */        shConfig.pinPolarity   = kFLEXIO_PinActiveHigh;        shConfig.shifterMode   = kFLEXIO_ShifterModeTransmit;        shConfig.inputSource   = kFLEXIO_ShifterInputFromPin;        shConfig.shifterStop   = kFLEXIO_ShifterStopBitDisable;        shConfig.shifterStart  = kFLEXIO_ShifterStartBitDisabledLoadDataOnEnable;        shConfig.parallelWidth = CHANNEL_COUNT - 1U; /* 20路并行宽度 */        FLEXIO_SetShifterConfig(DEMO_FLEXIO_BASE, i, &shConfig);    }    /* 配置 Timer 0 作为 SCLK 时钟源 */    timConfig.triggerSelect   = FLEXIO_TIMER_TRIGGER_SEL_SHIFTnSTAT(0);    timConfig.triggerPolarity = kFLEXIO_TimerTriggerPolarityActiveLow;    timConfig.triggerSource   = kFLEXIO_TimerTriggerSourceInternal;    timConfig.pinConfig       = kFLEXIO_PinConfigOutput;    timConfig.pinSelect       = 20; /* 时钟信号输出在 D20 */    timConfig.timerMode       = kFLEXIO_TimerModeDual8BitBaudBit;    timConfig.timerDisable    = kFLEXIO_TimerDisableOnTimerCompare;    timConfig.timerEnable     = kFLEXIO_TimerEnableOnTriggerHigh;    /* 8个位 = 16个边沿 (15), 频率分频 = 10 */    timConfig.timerCompare    = (15U << 8U) | 10U;    FLEXIO_SetTimerConfig(DEMO_FLEXIO_BASE, 0, &timConfig); } void Init_DMA_DAC(void) {    edma_config_t edmaConfig;    /* 修正后的 MCXN947 InputMux 连接 */    /* 如果 kINPUTMUX_Flexio0Shift0ToDma0Ch61Ena 依然报错,       请尝试 kINPUTMUX_Flexio0Request0ToDma0Ch61Ena */    INPUTMUX_Init(INPUTMUX0);    //INPUTMUX_EnableSignal(INPUTMUX0, kINPUTMUX_Flexio0Shift0ToDma0Ch61Ena, true);    INPUTMUX_EnableSignal(INPUTMUX0, kINPUTMUX_FlexIO0ShiftRegister0RequestToDma0Ch61Ena, true);    EDMA_GetDefaultConfig(&edmaConfig);    EDMA_Init(DEMO_DMA_BASE, &edmaConfig);    EDMA_CreateHandle(&g_edma_handle, DEMO_DMA_BASE, DEMO_DMA_CH);    EDMA_SetCallback(&g_edma_handle, EDMA_Callback, NULL); } void DAC_Transmit(void) {    edma_transfer_config_t xferConfig;    edma_minor_offset_config_t offsetConfig;    g_transfer_done = false;    /*       参数修正说明:       1. bytesEachRequest = 32  (每次触发搬运 8 个 Shifter,每个 4 字节)       2. transferBytes = 96     (总共 24 位数据,每位 4 字节,24 * 4 = 96)       这样 96 % 32 == 0,断言即可通过。    */    EDMA_PrepareTransferConfig(&xferConfig,                               (void *)g_dac_buffer,                /* srcAddr */                               4,                                   /* srcWidth: 4字节 */                               4,                                   /* srcOffset: 4 */                               (void *)&(DEMO_FLEXIO_BASE->SHIFTBUF[0]), /* destAddr */                               4,                                   /* destWidth: 4字节 */                               4,                                   /* destOffset: 4 */                               32,                                  /* bytesEachRequest: 32 */                               96                                   /* transferBytes: 96 (!!!修正点) */                               );    /* 提交配置 */    EDMA_SubmitTransfer(&g_edma_handle, &xferConfig);    /* 配置地址回退:Minor Loop 结束后,目的地址减去 32 字节回到 SHIFTBUF[0] */    offsetConfig.enableSrcMinorOffset  = false;    offsetConfig.enableDestMinorOffset = true;    offsetConfig.minorOffset           = -32;    EDMA_SetMinorOffsetConfig(DEMO_DMA_BASE, DEMO_DMA_CH, &offsetConfig);    /* 启动 DMA 和 FlexIO 请求 */    EDMA_StartTransfer(&g_edma_handle);    FLEXIO_EnableShifterStatusDMA(DEMO_FLEXIO_BASE, 1 << 0, true); } int main(void) {    /* 基础硬件初始化 (时钟/引脚) */    BOARD_InitHardware();    Init_FlexIO_DAC();    Init_DMA_DAC();    /* 示例数据填充 */    for(int i=0; i<BIT_DEPTH; i++) g_dac_buffer[i] = 0xAAAAA;    while (1)    {        DAC_Transmit();        /* 等待回调执行 */        while(!g_transfer_done);        /* 间隔 */        SDK_DelayAtLeastUs(1000, SystemCoreClock);    } }     程序卡死在    while(!g_transfer_done);  没有往下走 。 请问哪里出了问题 Communication & Control(I3C | I2C | SPI | FlexCAN | Ethernet | FlexIO) Re: mcxn947 dma传输开启后没有进入回调 The callback was not executed. Which channel should be used for DMA here? Channel 61 won't pass the assertion; it cannot exceed 16. If the DMA channel is set to 0, the DMA callback will not be entered at all. Re: mcxn947 dma传输开启后没有进入回调 Hi @justdomyself 1) Set breakpoints for debugging and check if the eDMA interrupt and callback functions have been entered. 2) Confirm which eDMA channel is being used. #define DEMO_DMA_CH      / * Using DMA channel 61 */ It seems that channel 0 is being used here. INPUTMUX_EnableSignal(INPUTMUX0, kINPUTMUX_FlexIO0ShiftRegister0RequestToDma0Ch61Ena, true); However, judging from the comments and this line of code, it seems to be using Chaanel 61. BR Alice
記事全体を表示
imx95 + la12xx hi NXP Problem Description: I'm currently using an IMX95 and a LA1234 connected via PCIe. I've compiled the kernel driver for hostsw_la12xx and loaded yami.ko, but I can't detect the LA1234 device using LSPCI. 1. I don't have a program for burning into my LA1234. Do I need to burn the program before I can view it via LSPCI? How do I burn the program? Re: imx95 + la12xx Based on the observed phenomena, the current problem is most likely not caused by the yami.ko compilation or loading process on the host side. lspci The premise for seeing LA1234 is that LA1234 has already started normally as a PCIe Endpoint and the PCIe link has been successfully trained. If no programs have been flashed/booted on the LA1234, it's reasonable that the i.MX95 side cannot see the LA1234 via lspci . The LA1234 needs to boot from a supported boot source to run the LA12xx BSP/FreeRTOS/PCIe EP firmware, completing the PCIe Endpoint initialization, before the i.MX95, as the Root Complex, can enumerate the device. hostsw_la12xx/kernel_driver/yami.ko This is the host Linux-side LA12xx PCIe driver. It typically handles further LA12xx initialization after the PCIe device has been enumerated by the host, such as PCIe inbound/outbound windows, e200 OS boot, VSPA image boot, IPC/RFIC, etc. It cannot allow the device to appear directly in lspci if the PCIe EP is not fully enabled on the LA1234 side. We recommend checking in the following directions first: Verify that the LA1234 boot mode/boot source is correct, and that the LA1234 has started the LA12xx BSP/FreeRTOS image containing the PCIe Endpoint driver. Confirm that the LA1234 PCIe controller is configured as EP, and the i.MX95 side is configured as RC. Check if PCIe REFCLK, PERST#, power sequence, SerDes lane settings, and lane width/speed are matched. The i.MX95 side first executes dmesg | grep -i pcie , echo 1 > /sys/bus/pci/rescan , and lspci -nn -vv to check if there are any endpoint enumerations. If there is still no device, it is recommended to first connect to the i.MX95 with a known working PCIe endpoint to confirm that the i.MX95 RC side hardware and device tree/kernel configuration are correct; then go back to the LA1234 side to check EP boot and hardware connection. To program the LA1234, you need to use the LA1234/LA12xx board boot image and corresponding programming process provided in the LA12xx SDK/BSP. The publicly available hostsw_la12xx repository mainly contains host-side software; the FreeRTOS side code is not in this repository. Therefore, you need to refer to the sections on LA12xx board boot and image programming in the LA12xx SDK User Guide / BSP release package.
記事全体を表示
LPC54S018をSPI-MRAM(MR25H40)から起動します。 私はLPC54S018を搭載したEVB LPC54S018M-EVKを購入し、それにSPI-MRAMチップ=MR25H40を接続します。 SPI-MRAM(MR25H40)からLPC54S018にファームウェアをロードする必要があります。MRAMをFLEXCOMM9に接続しました。ファームウェアからこのMRAMへのデータの読み書きは正常にできますが、問題ありません。でもMCUを起動できません。 オシログラムでは(RESET後に)マイクロコントローラのブートROMコードがMRAMと通信し始めるのがデフォルト速度=12 MHz(起動ROMがウェイクアップコマンド(opcode = 0xAB)を送信し、その後「read JEDEC-ID」コマンドを3回送信します(opcode = 0x9F))。その後、SPI上ではそれ以上の活動は発生しない。ウェイクアップコマンドはMRAMによって正常に処理されますが、「JEDEC-ID読み取り」コマンドはメモリによってサポートされていません(MRAMのデータシートによる)。私は、ブートROMコードが「JEDEC-IDの読み取り」コマンドに対する応答を受け取らなかったため、デフォルトの速度で起動を続行するだけだと思っていました。しかし、理由は不明だが、「JEDEC-IDの読み取り」を3回試みた後、ブートプロセスがキャンセルされる。 LPC54S018のISPピンを以下の状態に設定してみました。 1) または ISP0 = high、ISP1 = high、ISP2 = high; 2) または ISP0 = high、ISP1 = low、ISP2 = high。 何も変わりません。マイクロコントローラが起動しません。 「read JEDEC-ID」コマンドへの応答を待たずに、SPIメモリからLPC54S018の起動を続行する方法はありますか? 追伸:負荷処理のオシログラムを添付します。 Re: Boot LPC54S018 from SPI-MRAM (MR25H40). LPC540xxをSPI-MRAM(MR20H40/MR25H40)から起動することは不可能であるようです。SPI-MRAMは「read JEDEC-ID」コマンドをサポートしていないためです。 😞😞 しかし、SPI-FRAM(SPI-MARMとは異なり)は「read JEDEC-ID」コマンドをサポートしています。SPI-MRAMをSPI-FRAM(FM25V05)に交換したところ、LPC54S018の起動に成功しました!しかし、FM25V05では、ファームウェアはアドレス0x0000からではなく、0x0001から開始する必要があります。「read JEDEC-ID」コマンドの後、LPC540xxブートROMはまず24ビットアドレスを持つ読み出しコマンド0x03をSPIメモリに送信します。読み取りが失敗した場合は、32ビットのアドレスを持つ読み取りコマンド0x03を送信します。FM25V05は16ビットのアドレスを持ちます。しかし、ブートイメージをアドレス0x0001にシフトすると、LPC540xxはFM25V05からでも正常にブートします。ブートROMでは24ビットの読み取りコマンドが使われるため、最初のバイト読み込みは省略されます。 添付のオシログラムを参照してください。 後で、24ビットアドレス指定が可能なCY15B104QN(SPI-FRAM)からの起動を試してみます。 Re: Boot LPC54S018 from SPI-MRAM (MR25H40). こんにちは、 @jcxzさん ボードが正常に起動したと聞いて大変嬉しく思います。 他に何かご質問やご不明な点はありますか? よろしくお願いします。 BR アリス Re: Boot LPC54S018 from SPI-MRAM (MR25H40). はい。次に、CY15B104QN-50SXI SPI-FRAMからの起動を試みました。機能しません 😞 CY15B104QNからは起動しません。このチップは「JEDEC-ID読み取り」コマンドに応答しますが、しかし、CY15B104QN は逆バイト順の JEDEC-ID を出力します: "00,2C,C2,7F,7F,7F,7F,7F,7F" (16 進数)。おそらくそれが、LPC54018のブートROMがそこから起動しない理由でしょう。 FM25V05は「7F,7F,7F,7F,7F,7F,C2,23,00」(16進数)の形式でJEDEC-IDを出力します。LPC54018ブートROMはこれを受け入れて起動します。しかし、FM25V05の容量は私のプロジェクトには小さすぎます。 それでは、FM25V20Aから起動してみます。そこから起動してくれるといいのですが。 PS: CY15B104QNは、新世代のSPI-FRAMチップである「EXCELON™ F-RAM」(Infineon社製)に属します。どうやらLPC54018ブートローダーはそれらをサポートしていないようです。 Re: Boot LPC54S018 from SPI-MRAM (MR25H40). FM25V20A-GからLPC54018を正常に起動できました! LPC54018のMRAM/FRAMブート機能チェックの最終結果: 1. SPI-MRAM (MR25H40) からのブート:失敗。考えられる原因=JEDEC-ID読み取りコマンドがサポートされていない。 2. SPI-FRAM CY15B104QN からのブート、JEDEC-ID = "00,2C,C2,7F,7F,7F,7F,7F,7F" (16 進数):失敗。考えられる原因=ブートROMがJEDEC-IDを認識していない。 3. SPI-FRAM FM25V20A-G からブート中、JEDEC-ID = "7F,7F,7F,7F,7F,7F,C2,25,08" (16 進数):成功。考えられる理由=ブートROMがJEDEC-IDを認識している。 4. SPI-FRAM FM25V05 からブート、JEDEC-ID = "7F,7F,7F,7F,7F,7F,C2,23,00" (16 進数):成功。考えられる理由:ブートROMがJEDEC-IDを認識している。ただし、ブートイメージはアドレス1(0ではない)に配置する必要があります。 しかし、CY15B104QNのメモリファミリは新しいです。これは旧型のFM25Vxxの後継機種です。したがって、CY15B104QNを使用したいと思います。CY15B104QNからのブートがサポートされていないのはなぜですか?また、FUTUREのLPC540xxのリビジョンでは、CY15B104QN(またはこのファミリの他のチップ)からの起動機能は追加されるのでしょうか?
記事全体を表示
SoM設計に基づくiMX95 PMIC出力に関する疑問 iMX95をベースにしたカスタムPCBを作成したかったので、iMX95 SoMの回路図をリファレンス回路図として使用しています。 私の理解では、PF09はマスターPMICとなり、SoCとARMコアの電圧を除くすべての電圧を出力します。これらのコア電圧はpf530xによって作られています。 私の疑問点は以下の通りです。 1.参照回路図では、PF09のLDO3がVDD_SoC電圧ラインも構成していますが、これはなぜでしょうか? 2. そして、最大200mAまでしか供給できないことが示されていますが、SoCの電流要求はそれ以上で、もしPF09とPF530xの両方が同じ電圧を出しているなら、それは電源線をショートさせるようなものです。その場合、PF09のピンが電流を吸収して問題を引き起こすのでしょうか? 3. Pf09 LDOの電源出力を外して、もう一方のLDOを使うべきか、またはCANでしょうか?動作しますか?(「削除すべきか」や「CAN」など、明確な提案をしてください) 参考用の画像を下に添付します PF09の出力 VDD_SOC生成にPF530xを使用
記事全体を表示
S32K3 的 SVD 文件 - 许可证问题 我想发布一些基于 S32K388 和 S32K344 SVD 文件开发的软件。但SVD文件包含以下文本: 版权所有 2016-2024 NXP NXP 机密专有软件。本软件归 NXP 所有或受其控制。 由恩智浦半导体(NXP)所有,且仅可严格按照适用法律法规使用。 许可条款。通过明确接受这些条款或下载, 安装、激活和/或以其他方式使用该软件,即表示您同意 您同意已阅读并同意遵守本条款。 受此类许可条款的约束。如果您不同意受其约束,则表示您同意接受此类许可条款的约束。 如果违反适用的许可条款,则您不得保留、安装或激活。 或者以其他方式使用该软件。 我能否将这段代码放到一个公共代码库中?或者我需要在代码库中添加说明,告诉用户下载 S32DS 并自行提取 SVD 文件吗? Re: SVD files for S32K3 - license question 谢谢你的提问。遗憾的是,S32K3 SVD 文件(S32K344.svd,S32K388.svd)带有“NXP 机密和专有”许可,不允许在公共存储库中重新分发或发布衍生作品。 我们建议采用以下方法: 请勿将 SVD 派生代码直接包含在公共仓库中,因为这很可能违反许可条款。 相反,请在您的存储库中提供构建脚本/工具,并指示用户自行下载 S32DS 并提取 SVD 文件,然后在本地运行代码生成步骤。 如果您需要获得明确许可才能公开发布衍生代码,请联系您的 NXP 销售代表,申请正式的许可例外。 在 NXP 澄清或更新 SVD 文件许可条款之前,这是最安全的方法。
記事全体を表示
Boot LPC54S018 from SPI-MRAM (MR25H40). I am buy EVB LPC54S018M-EVK with LPC54S018 and connect to it SPI-MRAM chip = MR25H40. I need to load the firmware into LPC54S018 from SPI-MRAM (MR25H40). I connected the MRAM to FLEXCOMM9. I can read and write of data to this MRAM from my firmware normally - it ok. But I can't boot of MCU from it. On the oscillogramm, I see that (after RESET) the microcontroller's boot-ROM code begins communicating with the MRAM at the default speed = 12 MHz (boot-ROM sending it a wake-up command (opcode = 0xAB) and then three times sending a "read JEDEC-ID" command (opcode = 0x9F)). After that, no further activity occurs on the SPI. The wake-up command is processed normally by the MRAM, but the "read JEDEC-ID" command is not supported by the memory (according to the datasheet by MRAM). I thought that the boot-ROM code, having not received a response to the "read JEDEC-ID" command, would simply continue booting at the default speed. But for unknown reason, after three attempts to "read JEDEC-ID", the boot process is cancelled. I tried setting the ISP pins of LPC54S018 to the following states: 1) or ISP0 = high, ISP1 = high, ISP2 = high; 2) or ISP0 = high, ISP1 = low, ISP2 = high. Nothing changes - the microcontroller won't boot. Is there any way to continue booting of LPC54S018 from SPI-memory without waiting for a response to the "read JEDEC-ID" command? PS: I am attaching oscillograms of the loading process. Re: Boot LPC54S018 from SPI-MRAM (MR25H40). It appears that booting the LPC540xx from SPI-MRAM (MR20H40/MR25H40) is impossible. Because SPI-MRAM does not support the "read JEDEC-ID" command.  😞😞 But SPI-FRAM (unlike SPI-MRAM) supports the "read JEDEC-ID" command. I replaced SPI-MRAM to SPI-FRAM (FM25V05) and booted my LPC54S018 successfully! However, in the FM25V05, the firmware should start from address 0x0001, not from 0x0000. After the "read JEDEC-ID" command, the LPC540xx boot-ROM sends a read command 0x03 to the SPI memory first, with a 24-bit address. If the reading is unsuccessful, it then sends a read command 0x03 with a 32-bit address. The FM25V05 has a 16-bit address. However, if the boot image is shifted to address 0x0001, the LPC540xx boots successfully even from the FM25V05. 24-bit read commands are used by boot-ROM for booting, so the first byte read is skipped. See attached oscillogram. Later I'll try booting from the CY15B104QN (SPI-FRAM), which has 24-bit addressing. Re: Boot LPC54S018 from SPI-MRAM (MR25H40). Yes. Next, I tried booting from the CY15B104QN-50SXI SPI-FRAM. Its doesn't work 😞 Doesn't boot from the CY15B104QN. Although this chip responds to the "read JEDEC-ID" command. But CY15B104QN outputs a JEDEC-ID in reverse byte order: "00,2C,C2,7F,7F,7F,7F,7F,7F" (hex). That's probably why the boot-ROM LPC54018 refuses to boot from it. The FM25V05 outputs a JEDEC-ID in the form: "7F,7F,7F,7F,7F,7F,C2,23,00" (hex) - the LPC54018 boot-ROM accepts it and boots. But capacity of FM25V05 is too small for the my project. Now I'll try booting from the FM25V20A. I hope it will boot from there. PS: The CY15B104QN belongs to the new generation of SPI-FRAM chips - "EXCELON™" F-RAM" (Infineon). Apparently, the LPC54018 bootloader doesn't support them. Re: Boot LPC54S018 from SPI-MRAM (MR25H40). Hi @jcxz  It is great to hear that your board has booted successfully. Do you have any further questions or concerns? Thank you. BR Alice Re: Boot LPC54S018 from SPI-MRAM (MR25H40). I was able to successfully boot LPC54018 from FM25V20A-G! Final result of the LPC54018 MRAM/FRAM boot capability check: 1. Booting from SPI-MRAM (MR25H40): FAILED. Possible reason = JEDEC-ID read command not supported. 2. Booting from SPI-FRAM CY15B104QN, JEDEC-ID = "00,2C,C2,7F,7F,7F,7F,7F,7F" (hex): FAILED. Possible reason = boot-ROM does not recognize JEDEC-ID. 3. Booting from SPI-FRAM FM25V20A-G, JEDEC-ID = "7F,7F,7F,7F,7F,7F,C2,25,08" (hex): SUCCESSFUL. Possible reason = boot-ROM recognizes JEDEC-ID. 4. Booting from SPI-FRAM FM25V05, JEDEC-ID = "7F,7F,7F,7F,7F,7F,C2,23,00" (hex): SUCCESSFUL. Possible reason: The boot ROM recognizes the JEDEC-ID. However, the boot image must be located at address 1 (not 0). But the CY15B104QN memory family is newer. It replaces the outdated FM25Vxx. Therefore, I'd like to use the CY15B104QN. Why booting from CY15B104QN not supported? And will booting from the CY15B104QN (or other chips in this family) be added in future LPC540xx revisions?
記事全体を表示
从 SPI-MRAM (MR25H40) 启动 LPC54S018。 我购买了 EVB LPC54S018M-EVK,其中包含 LPC54S018,并将其连接到 SPI-MRAM 芯片 = MR25H40。 我需要将固件从 SPI-MRAM (MR25H40) 加载到 LPC54S018 中。我将 MRAM 连接到了 FLEXCOMM9。我的固件可以正常地对这个 MRAM 进行数据读写操作——没问题。但我无法从中启动MCU。 从示波器上,我看到(RESET后)微控制器的启动 ROM 代码开始以默认速度 = 12 MHz 与 MRAM 通信(启动 ROM 向其发送唤醒命令(操作码 = 0xAB),然后三次发送“读取 JEDEC-ID”命令(操作码 = 0x9F))。此后,SPI 上不再发生任何活动。唤醒命令由 MRAM 正常处理,但存储器不支持“读取 JEDEC-ID”命令(根据 MRAM 的数据手册)。我原以为,由于没有收到“读取 JEDEC-ID”命令的响应,启动 ROM 代码会继续以默认速度启动。但不知何故,在三次尝试“读取 JEDEC-ID”后,启动过程被取消。 我尝试将 LPC54S018 的 ISP 引脚设置为以下状态: 1) 或 ISP0 = 高,ISP1 = 高,ISP2 = 高; 2) 或 ISP0 = 高,ISP1 = 低,ISP2 = 高。 情况依旧没有改变——微控制器无法启动。 是否有办法在不等待“读取 JEDEC-ID”命令的响应的情况下,继续从 SPI 存储器启动 LPC54S018? PS:我附上了加载过程的示波图。 Re: Boot LPC54S018 from SPI-MRAM (MR25H40). 看来无法从 SPI-MRAM (MR20H40/MR25H40) 启动 LPC540xx。因为 SPI-MRAM 不支持“读取 JEDEC-ID”命令。 😞😞 但 SPI-FRAM(与 SPI-MRAM 不同)支持“读取 JEDEC-ID”命令。我已将 SPI-MRAM 更换为 SPI-FRAM (FM25V05),并成功启动了我的 LPC54S018!但是,在 FM25V05 中,固件应该从地址 0x0001 开始,而不是从 0x0000 开始。在执行“读取 JEDEC-ID”命令后,LPC540xx 启动 ROM 首先向 SPI 存储器发送 READ命令 0x03,地址为 24 位。如果读取失败,则发送带有 32 位地址的 READ命令 0x03。FM25V05 具有 16 位地址。但是,如果将启动映像移至地址 0x0001,即使从 FM25V05 启动,LPC540xx 也能成功启动。启动 ROM 使用 24 位读取命令进行启动,因此会跳过读取的第一个字节。 请参见附图示波图。 稍后我会尝试从 CY15B104QN(SPI-FRAM)启动,它具有 24 位寻址。 Re: Boot LPC54S018 from SPI-MRAM (MR25H40). 是的。接下来,我尝试从 CY15B104QN-50SXI SPI-FRAM 启动。它不起作用 😞 无法从 CY15B104QN 启动。虽然该芯片响应“读取 JEDEC-ID”命令。但 CY15B104QN 以相反的字节顺序输出 JEDEC-ID:"00,2C,C2,7F,7F,7F,7F,7F,7F"(十六进制)。这大概就是为什么启动 ROM LPC54018 无法从中启动的原因。 FM25V05 输出 JEDEC-ID,格式为:"7F,7F,7F,7F,7F,7F,C2,23,00"(十六进制) - LPC54018 启动 ROM 接受它并启动。但是 FM25V05 的容量太小,无法满足我的项目需求。 现在我尝试从 FM25V20A 启动。我希望它能从那里启动。 PS:CY15B104QN 属于新一代 SPI-FRAM 芯片——“EXCELON™”F-RAM(英飞凌)。显然,LPC54018 引导加载程序不支持它们。 Re: Boot LPC54S018 from SPI-MRAM (MR25H40). 嗨@jcxz 很高兴听到您的板已成功启动。 您还有其他问题或疑虑吗? 谢谢! BR 爱丽丝 Re: Boot LPC54S018 from SPI-MRAM (MR25H40). 我成功地从 FM25V20A-G 启动了 LPC54018! LPC54018 MRAM/FRAM 启动能力检查的最终结果: 1. 从 SPI-MRAM (MR25H40) 启动:失败。可能原因 = 不支持 JEDEC-ID 读取命令。 2. 从 SPI-FRAM CY15B104QN 启动,JEDEC-ID = "00,2C,C2,7F,7F,7F,7F,7F,7F" (十六进制):失败。可能的原因 = 启动 ROM 无法识别 JEDEC-ID。 3. 从 SPI-FRAM FM25V20A-G 启动,JEDEC-ID = "7F,7F,7F,7F,7F,7F,C2,25,08" (十六进制):成功。可能的原因 = 启动 ROM 识别 JEDEC-ID。 4. 从 SPI-FRAM FM25V05 启动,JEDEC-ID = "7F,7F,7F,7F,7F,7F,C2,23,00" (十六进制):成功。可能的原因:启动 ROM 识别了 JEDEC-ID。但是,启动映像必须位于地址 1(而不是 0)。 但CY15B104QN系列内存是较新的产品。它取代了过时的FM25Vxx。因此,我想使用 CY15B104QN。为什么不支持从 CY15B104QN 启动?未来 LPC540xx 版本是否会增加从 CY15B104QN(或该系列的其他芯片)启动的功能?
記事全体を表示
mcxn947 dma传输开启後没进入回调 #include "fsl_debug_console.h" #include "pin_mux.h" #include "clock_config.h" #include "board.h" #include "app.h" #include "fsl_flexio_spi_edma.h" #include "board.h" //#include "app.h" #include "fsl_debug_console.h" void BOARD_InitHardware ( void ); #include "fsl_debug_console.h" #include "fsl_flexio.h" #include "fsl_edma.h" #include "fsl_inputmux.h" #include "fsl_common.h" /* ハードウェア常数定义 */ #define DEMO_FLEXIO_BASE FLEXIO0 #define DEMO_DMA_BASE DMA0 #define DEMO_DMA_CH      0 /* DMA チャネル 61 を使用 */ #define CHANNEL_COUNT    20 /* 20路并行引 */ #define BIT_DEPTH        24 /* 24位深度 */ #define SHIFTERS_USED    8 /* 次回 DMA 充填 8 个 シフター */ /* データ缓冲区:DMA パフォーマンスを強化する必要があります */ SDK_ALIGN ( uint32_t g_dac_buffer [ BIT_DEPTH ], 32 ); edma_handle_t g_edma_handle ; volatile bool g_transfer_done = false ; /* DMA 完了回调 */ void EDMA_Callback ( edma_handle_t * handle , void * param , bool transferDone , uint32_t tcds ) {    if ( transferDone )     {        /* FlexIO の最後の一組のデータを確保します */        while ( ! ( FLEXIO_GetShifterStatusFlags ( DEMO_FLEXIO_BASE ) & 0x01U ));        /* 立即关闭 DMA 请要求、生成仮想假触発を防止 */        FLEXIO_EnableShifterStatusDMA ( DEMO_FLEXIO_BASE , 1 << 0 , false );        g_transfer_done = true ;    } } void Init_FlexIO_DAC ( void ) {    flexio_config_t fxioConfig ;    flexio_shifter_config_t shConfig = { 0 };    flexio_timer_config_t timConfig = { 0 };    FLEXIO_GetDefaultConfig ( & fxioConfig );    FLEXIO_Init ( DEMO_FLEXIO_BASE 、 & fxioConfig );    FLEXIO_Reset ( DEMO_FLEXIO_BASE );    /* 配置 8 个 Shifter 并行出力 */    for ( uint8_t i = 0 ; i < SHIFTERS_USED ; i ++ )     {        shConfig.timerSelect​​   = 0 ;        shConfig.timerPolarity = kFLEXIO_ShifterTimerPolarityOnPositive ;​​        shConfig . pinConfig     = kFLEXIO_PinConfigOutput ;        shConfig.pinSelect​​     = 0 ; /* 引脚から D0 開始 */        shConfig . pinPolarity   = kFLEXIO_PinActiveHigh ;        shConfig.shifterMode​​   = kFLEXIO_ShifterModeTransmit ;        shConfig.inputSource​​   = kFLEXIO_ShifterInputFromPin ;        shConfig . shifterStop   = kFLEXIO_ShifterStopBitDisable ;        shConfig . shifterStart  = kFLEXIO_ShifterStartBitDisabledLoadDataOnEnable ;        shConfig 。平行幅= CHANNEL_COUNT - 1U ; /* 20路并行宽度 */        FLEXIO_SetShifterConfig ( DEMO_FLEXIO_BASE , i , & shConfig );    }    /* タイマー 0 を SCLK 時間源として設定 */    timConfig.triggerSelect​​   = FLEXIO_TIMER_TRIGGER_SEL_SHIFTnSTAT ( 0 );    timConfig.triggerPolarity​​= kFLEXIO_TimerTriggerPolarityActiveLow ;    timConfig.triggerSource​​   = kFLEXIO_TimerTriggerSourceInternal ;    timConfig . pinConfig       = kFLEXIO_PinConfigOutput ;    timConfig.pinSelect​​       = 20 ; /* 時刻信号出力 D20 */    timConfig.timerMode​​       = kFLEXIO_TimerModeDual8BitBaudBit ;    timConfig.timerDisable​​    = kFLEXIO_TimerDisableOnTimerCompare ;    timConfig.timerEnable​​     = kFLEXIO_TimerEnableOnTriggerHigh ;    /* 8 位 = 16 边沿線 (15)、周波数分周波数 = 10 */    timConfig.timerCompare​​    = ( 15U << 8U ) | 10U ;    FLEXIO_SetTimerConfig ( DEMO_FLEXIO_BASE , 0 , & timConfig ); } void Init_DMA_DAC ( void ) {    edma_config_t edmaConfig ;    /* 修正後の MCXN947 InputMux 接続 */    /* 結果 kINPUTMUX_Flexio0Shift0ToDma0Ch61Ena 依然报错,       kINPUTMUX_Flexio0Request0ToDma0Ch61Ena */    INPUTMUX_Init (INPUTMUX0);    //INPUTMUX_EnableSignal(INPUTMUX0, kINPUTMUX_Flexio0Shift0ToDma0Ch61Ena, true);    INPUTMUX_EnableSignal (INPUTMUX0, kINPUTMUX_FlexIO0ShiftRegister0RequestToDma0Ch61Ena , true );    EDMA_GetDefaultConfig ( & edmaConfig );    EDMA_Init ( DEMO_DMA_BASE , & edmaConfig );    EDMA_CreateHandle ( & g_edma_handle , DEMO_DMA_BASE , DEMO_DMA_CH );    EDMA_SetCallback ( & g_edma_handle , EDMA_Callback , NULL ); } void DAC_Transmit ( void ) {    edma_transfer_config_t xferConfig ;    edma_minor_offset_config_t offsetConfig ;    g_transfer_done = false ;    /*       パラメータ修正説明: 1.bytesEachRequest = 32 (每次触発行搬运 8 个 Shifter、每个 4 字节) 2.transferBytes = 96 (总共 24 位データ、每位 4 字节、24 * 4 = 96)       このように 96 % 32 == 0、承認すれば通過できます。    */    EDMA_PrepareTransferConfig ( & xferConfig 、 ( void * )g_dac_buffer, /* srcAddr */                               4 , /* srcWidth: 4文字节 */                               4 、 /* srcOffset: 4 */ ( void * ) & ( DEMO_FLEXIO_BASE -> SHIFTBUF [ 0 ]), /* destAddr */                               4 , /* destWidth: 4文字节 */                               4 、 /* destOffset: 4 */                               32 、 /* bytesEachRequest: 32 */                               96 /* transferBytes: 96 (!!修正点) */                               );    /* 提交配置 */    EDMA_SubmitTransfer ( & g_edma_handle , & xferConfig );    /* 配置地址回帰:マイナーループ終了後、目的地址减去 32 字节回帰 SHIFTBUF[0] */    offsetConfig.enableSrcMinorOffset​​  = false ;    offsetConfig.enableDestMinorOffset = true ;​​    offsetConfig.minorOffset​​           = -32 ;​    EDMA_SetMinorOffsetConfig ( DEMO_DMA_BASE , DEMO_DMA_CH , & offsetConfig );    /* DMA と FlexIO の要求 */    EDMA_StartTransfer ( & g_edma_handle );    FLEXIO_EnableShifterStatusDMA ( DEMO_FLEXIO_BASE , 1 << 0 , true ); } int main ( void ) {    /* 基础ハードウェア初期化 (時間钟/引脚) */    BOARD_InitHardware ();    Init_FlexIO_DAC ();    Init_DMA_DAC ();    /* 例データ充填 */    for ( int i = 0 ; i < BIT_DEPTH ; i ++ ) g_dac_buffer [ i ] = 0xAAAAA ;    ( 1 )​     {        DAC_Transmit ();        /* 等待ち回调执行 */        while ( ! g_transfer_done );        /* 間隔 */        SDK_DelayAtLeastUs ( 1000 、 SystemCoreClock);    } }     程序卡死在 while(!g_transfer_done); 問題はここにあります 通信・制御(I3C |I2C |SPI |FlexCAN |イーサネット |FlexIO) Re: mcxn947 dma传输开启后没有进入回调 コールバックは実行されませんでした。 ここではどのチャネルをDMAに使用すべきでしょうか?チャネル61ではアサーションが満たされません。チャネル61は16を超えることはできません。 DMAチャネルが0に設定されている場合、DMAコールバックは一切実行されません。 Re: mcxn947 dma传输开启后没有进入回调 こんにちは、 @justdomyself 1) デバッグ用のブレークポイントを設定し、eDMA割り込み関数とコールバック関数が実行されているかどうかを確認します。 2) 使用されているeDMAチャネルを確認してください。 #定義する DEMO_DMA_CH      / * DMAチャネル61を使用 */ ここではチャネル0が使用されているようです。 INPUTMUX_EnableSignal(INPUTMUX0, kINPUTMUX_FlexIO0ShiftRegister0RequestToDma0Ch61Ena, true); ただし、コメントとこのコード行から判断すると、チャネル61を使用しているようです。 BR アリス
記事全体を表示
Doubt regarding iMX95 PMIC output based on SoM design i wanted to make a custom pcb based on iMX95 and i am using the iMX95 SoM schematic as the reference schematic. As per what i understood, the PF09 will be the master pmic and will be making all the voltages except the soc and arm core voltages, these core voltages are made by pf530x. My doubts are: 1.  In the ref schematic LDO3 of PF09 is also making the VDD_SoC voltage line, why is it done? 2. And it is shown it can only source upto 200mA, but SoC current requirement is more than that, and if we both PF09 and PF530x is making the same voltages then it is like shorting the power lines, in such case will the pin at PF09 sink the current and then cause issues? 3. Should I/Can I remove the  power output from Pf09 LDO and just use the other one, will it work? (give a clear suggestion, regarding "should i remove" or "can i remove") images are attached below for reference PF09 outputs PF530x used for VDD_SOC generation
記事全体を表示
mcxn947 dma传输开启后没有进入回调 #include "fsl_debug_console.h" #include "pin_mux.h" #include "clock_config.h" #include "板.h" #include "app.h" #include “fsl_flexio_spi_edma.h” #include "板.h" //#include "app.h" #include "fsl_debug_console.h" void BOARD_InitHardware ( void ); #include "fsl_debug_console.h" #include "fsl_flexio.h" #include "fsl_edma.h" #include "fsl_inputmux.h" #include "fsl_common.h" /* 硬件硬件定义 */ #define DEMO_FLEXIO_BASE FLEXIO0 #define DEMO_DMA_BASE DMA0 #define DEMO_DMA_CH      0 /* 使用 DMA 通道 61 */ #定义CHANNEL_COUNT    20 /* 20路主板引脚 */ #define位深度        24 /* 24位深度 */ #define SHIFTERS_USED    8 /* 补充 DMA 填充 8 个 Shifter */ /* 数据像素:必须对齐以优化 DMA 性能 */ SDK_ALIGN ( uint32_t g_dac_buffer [ BIT_DEPTH ], 32 ); edma_handle_t g_edma_handle ; volatile bool g_transfer_done = false ; /* DMA完成回调 */ void EDMA_Callback ( edma_handle_t * handle , void * param , bool transferDone , uint32_t tcds ) {    如果(转移完成)     {        /* 确定 FlexIO 最后一组数据已从升降机旋转释放 */        while ( ! ( FLEXIO_GetShifterStatusFlags ( DEMO_FLEXIO_BASE ) & 0x01U ));        /* 立即关闭 DMA 请求,防止产生转向触发 */        FLEXIO_EnableShifterStatusDMA ( DEMO_FLEXIO_BASE , 1 << 0 , false );        g_transfer_done = true ;    } } void Init_FlexIO_DAC ( void ) {    flexio_config_t fxioConfig ;    flexio_shifter_config_t shConfig = { 0 };    flexio_timer_config_t timConfig = { 0 };    FLEXIO_GetDefaultConfig ( & fxioConfig );    FLEXIO_Init ( DEMO_FLEXIO_BASE , & fxioConfig );    FLEXIO_重置( DEMO_FLEXIO_BASE );    /* 配置8个Shifter输出 */    for ( uint8_t i = 0 ; i < SHIFTERS_USED ; i ++ )     {        shConfig.timerSelect​​   = 0 ;        shConfig.timerPolarity = kFLEXIO_ShifterTimerPolarityOnPositive ;​​        shConfig.pinConfig​​     = kFLEXIO_PinConfigOutput ;        shConfig.pinSelect​​     = 0 ; /* 引脚从D0开始 */        shConfig.pinPolarity​​   = kFLEXIO_PinActiveHigh ;        shConfig.shifterMode​​   = kFLEXIO_ShifterModeTransmit ;        shConfig.inputSource​​   = kFLEXIO_ShifterInputFromPin ;        shConfig.shifterStop​​   = kFLEXIO_ShifterStopBitDisable ;        shConfig.shifterStart​​  = kFLEXIO_ShifterStartBitDisabledLoadDataOnEnable ;        shConfig 。并行宽度= CHANNEL_COUNT - 1U ; /* 20路宽度 */        FLEXIO_SetShifterConfig ( DEMO_FLEXIO_BASE , i , & shConfig );    }    /* 配置定时器 0 作为 SCLK 时钟源 */    timConfig.triggerSelect​​   = FLEXIO_TIMER_TRIGGER_SEL_SHIFTnSTAT ( 0 );    timConfig.triggerPolarity​​= kFLEXIO_TimerTriggerPolarityActiveLow ;    timConfig.triggerSource​​   = kFLEXIO_TimerTriggerSourceInternal ;    timConfig.pinConfig​​       = kFLEXIO_PinConfigOutput ;    timConfig.pinSelect​​       = 20 ; /*时钟信号在D20输出*/    timConfig.timerMode​​       = kFLEXIO_TimerModeDual8BitBaudBit ;    timConfig.timerDisable​​    = kFLEXIO_TimerDisableOnTimerCompare ;    timConfig.timerEnable​​     = kFLEXIO_TimerEnableOnTriggerHigh ;    /* 8个位 = 16个边沿 (15), 频率频分 = 10 */    timConfig.timerCompare​​    = ( 15U << 8U ) | 10U ;    FLEXIO_SetTimerConfig ( DEMO_FLEXIO_BASE , 0 , & timConfig ); } void Init_DMA_DAC ( void ) {    edma_config_t edmaConfig ;    /* 修改后面的MCXN947 InputMux连接 */    /* 如果 kINPUTMUX_Flexio0Shift0ToDma0Ch61Ena 仍然报错,       请尝试 kINPUTMUX_Flexio0Request0ToDma0Ch61Ena */    输入/输入混合器初始化(输入/输入混合器0);    //INPUTMUX_EnableSignal(INPUTMUX0, kINPUTMUX_Flexio0Shift0ToDma0Ch61Ena, true);    INPUTMUX_EnableSignal (INPUTMUX0, kINPUTMUX_FlexIO0ShiftRegister0RequestToDma0Ch61Ena , true );    EDMA_GetDefaultConfig ( & edmaConfig );    EDMA_Init ( DEMO_DMA_BASE , & edmaConfig );    EDMA_CreateHandle ( & g_edma_handle , DEMO_DMA_BASE , DEMO_DMA_CH );    EDMA_SetCallback ( & g_edma_handle , EDMA_Callback , NULL ); } void DAC_Transmit ( void ) {    edma_transfer_config_t xferConfig ;    edma_minor_offset_config_t offsetConfig ;    g_transfer_done = false ;    /*       参数修改说明: 1.bytesEachRequest = 32  (每次触发搬运 8 个 Shifter,每 4 字节) 2.传输字节数 = 96     (总共 24 位数据,传输 4 字节,24 * 4 = 96)       这样 96 % 32 == 0,断言即可通过。 */    EDMA_PrepareTransferConfig ( & xferConfig , ( void * )g_dac_buffer, /* srcAddr */                               4 , /* srcWidth: 4字节 */                               4 , /* srcOffset: 4 */ ( void * ) & ( DEMO_FLEXIO_BASE -> SHIFTBUF [ 0 ]), /* destAddr */                               4 , /* 目标宽度: 4字节 */                               4 , /* destOffset: 4 */                               32 , /* bytesEachRequest: 32 */                               96 /* 传输字节数: 96 (!!!修改点) */                               );    /* 提交配置 */    EDMA_SubmitTransfer ( & g_edma_handle , & xferConfig );    /* 配置地址回退:小循环结束后,目的地址减少 32 字节返回 SHIFTBUF[0] */    offsetConfig.enableSrcMinorOffset​​  = false ;    offsetConfig.enableDestMinorOffset = true ;​​    offsetConfig.minorOffset​​           = -32 ;​    EDMA_SetMinorOffsetConfig ( DEMO_DMA_BASE , DEMO_DMA_CH , & offsetConfig );    /* 启动 DMA 和 FlexIO 请求 */    EDMA_StartTransfer ( & g_edma_handle );    FLEXIO_EnableShifterStatusDMA ( DEMO_FLEXIO_BASE , 1 << 0 , true ); } int main ( void ) {    /* 基础硬件初始化(时钟/引脚) */    BOARD_InitHardware ();    初始化 FlexIO_DAC ();    初始化 DMA_DAC ();    /* 示例数据填充 */    for ( int i = 0 ; i < BIT_DEPTH ; i ++ ) g_dac_buffer [ i ] = 0xAAAAA ;    当( 1 )     {        DAC_Transmit ();        /* 等待回调执行 */        while ( ! g_transfer_done );        /* 间隔 */        SDK_DelayAtLeastUs ( 1000 ,系统核心时钟);    } }     程序卡死在 while(!g_transfer_done); 没有往下走。询问哪里生长问题 通信与控制(I3C | I2C | SPI | FlexCAN | 以太网 | FlexIO) Re: mcxn947 dma传输开启后没有进入回调 callback  回调没有进 。  这里dma应该用哪个通道?  通道61,断言的时候就过不去,不能超过16. dma通道设0 ,dma回调直接进不去。 Re: mcxn947 dma传输开启后没有进入回调 Hi @justdomyself  1)打断点调试,查看是否进入了eDMA 中断和callback函数。 2)确认具体使用的哪个eDMA channel.  #define DEMO_DMA_CH      0  /* 使用 DMA 通道 61 */ 这里貌似使用的是channel 0.   INPUTMUX_EnableSignal(INPUTMUX0, kINPUTMUX_FlexIO0ShiftRegister0RequestToDma0Ch61Ena, true);   但从备注和这行代码看似乎又使用的Chaanel 61. BR Alice
記事全体を表示
imx95 + la12xx hi NXP       问题描述:我现在使用imx95加la1234,之间通过pcie连接,我现在将hostsw_la12xx的kernel_driver编译,并且加载了yami.ko,让后通过lspci没有查看到la1234这个设备      1.我现在la1234中没有烧写程序,需要烧写程序以后imx95才可以通过lspci查看吗,如何烧写呢 Re: imx95 + la12xx 从现象看,当前问题大概率不是 host 侧 yami.ko 编译或加载本身导致的。 lspci 能看到 LA1234 的前提是 LA1234 已经作为 PCIe Endpoint 正常启动,并且 PCIe link 已经训练成功。 如果 LA1234 端目前没有烧写/启动任何程序,那么 i.MX95 侧通过 lspci 看不到 LA1234 是合理的。需要先让 LA1234 从支持的 boot source 启动 LA12xx 端 BSP/FreeRTOS/PCIe EP firmware,使其完成 PCIe Endpoint 初始化后,i.MX95 作为 Root Complex 才能枚举到该设备。 hostsw_la12xx/kernel_driver/yami.ko 是 host Linux 侧 LA12xx PCIe driver。它通常是在 PCIe 设备已经能被 host 枚举后,再负责 LA12xx 进一步初始化,例如 PCIe inbound/outbound window、e200 OS boot、VSPA image boot、IPC/RFIC 等。它不能在 LA1234 端完全未启动 PCIe EP 的情况下,让设备直接出现在 lspci 中。 建议先按以下方向检查: 确认 LA1234 boot mode/boot source 是否正确,LA1234 端是否已启动包含 PCIe Endpoint driver 的 LA12xx BSP/FreeRTOS image。 确认 LA1234 PCIe controller 配置为 EP,i.MX95 侧配置为 RC。 检查 PCIe REFCLK、PERST#、power sequence、SerDes lane 设置、lane width/speed 是否匹配。 i.MX95 侧先执行 dmesg | grep -i pcie 、 echo 1 > /sys/bus/pci/rescan 、 lspci -nn -vv ,确认是否有任何 endpoint 枚举。 若仍无设备,建议先用一个已知可工作的 PCIe endpoint 接到 i.MX95,确认 i.MX95 RC 侧硬件和 device tree/kernel 配置没有问题;然后再回到 LA1234 侧检查 EP boot 和硬件连接。 关于如何烧写 LA1234,需要使用 LA12xx SDK/BSP 中提供的 LA1234/LA12xx 端 boot image 和对应烧写流程。公开的 hostsw_la12xx 仓库主要是 host 侧软件,FreeRTOS 端代码不在该仓库中,因此需要参考 LA12xx SDK User Guide / BSP release package 中关于 LA12xx board boot 和 image programming 的章节。
記事全体を表示
S32K3用SVDファイル - ライセンスに関する質問 S32K388とS32K344 SVDファイルから派生したソフトウェアをリリースしたいと考えています。しかし、SVDファイルには以下のテキストが含まれています。 著作権 2016-2024 NXP NXP機密かつ独自的な情報。このソフトウェアは所有または管理されています NXPによるものであり、適用される規定に厳密に従ってのみ使用可能です ライセンス条件。明示的にそのような条件を受け入れるか、ダウンロードすることで、 インストール、アクティベート、またはその他の方法でソフトウェアを使用することで、あなたは あなたが読んだこと、そして従うことに同意すること、そして そのようなライセンス条件に縛られています。もしあなたが 適用されるライセンス条件がある場合、保持、インストール、アクティベートができません または、ソフトウェアを使ったほうがいいです。 このコードを公開リポジトリに入れることはCANですか?それとも、リポジトリにS32DSをダウンロードしてSVDファイルを自分で抽出するように指示するガイドを記載する必要があるのでしょうか? Re: SVD files for S32K3 - license question ご質問ありがとうございます。残念ながら、S32K3 SVD ファイル (S32K344.svd、S32K388.svd)本ソフトウェアには「NXP機密および専有」ライセンスが付与されており、派生作品の再配布や公開リポジトリへの掲載は許可されていません。 以下の方法をお勧めします。 SVDから得られたコードを公開リポジトリに直接含めないでください。ライセンス条項に違反する可能性が高いです。 代わりに、リポジトリにビルドスクリプトやツールを提供し、ユーザーにS32DSを自分でダウンロードしてSVDファイルを抽出し、ローカルでコード生成ステップを実行するよう指示してください。 派生コードを公開するために明示的な許可が必要な場合は、NXPの営業担当者にお問い合わせの上、正式なライセンス例外を申請してください。 NXPがSVDファイルのライセンス条項を明確化または更新するまでは、これが最も安全な方法です。
記事全体を表示
RT1064に関するパラレルRGB LCDインターフェースピンの質問 こんにちは、 間違っていたら訂正してください。私の考えではRT1064は2つのLCDインターフェースを備えています。 - 1つはGPIOバス上にあり、CLK/HSYNC/VSYNC信号と最大24ビットのデータ信号を備えています。 そして、 - SEMCバス上に設置された8/16ビットMPU/8080インターフェース用の別のもの 私はILI9341コントローラ付きのLCDモジュールを使っています。私の計画はテキストとアイコンを表示することで、動画やアニメーションは一切行いません。このデザインでは外部メモリは使っておらず、SEMCバスが利用可能です。 Q1。私のアプリケーションに最適な機関はどれでしょうか? Q2。SEMCバス上には、並列モードでILI9341とインターフェースするために必要な以下のピンが配置されています: - D/CX - WRX - RDX i.MXRT 106x Re: Parallel RGB LCD interface pins question on RT1064 こんにちは、 @batmat さん。 GPIOバスをベースにしていると言っているLCDモジュールは、ディスプレイの駆動専用に設計されたEnhanced LCD インターフェース(eLCDIF)モジュールです。 もう一つのモジュールはスマート外部メモリコントローラ(SEMC)で、特定のディスプレイの駆動に使えますが、その設計は外部メモリの駆動に特化しています。ただし、ほとんどの8080ベースのディスプレイは、このモジュールとFlexIOピンの機能を組み合わせることでSEMC機能も搭載されています。以下のアプリケーションがこの機能を説明しています:https://mcuxpresso.nxp.com/appcodehub?search=an-flexio_8080_rt1050 ILI9341のデータシートをざっと見たところ、このドライバはeLCDIFモジュールと互換性のあるRGBインターフェース、SEMCモジュールに対応した8080インターフェース、さらにはLPSPIモジュールで実装可能な3/4ラインSPIインターフェースなど、複数の種類のインターフェースをサポートしているようです。 とはいえ、最適な選択肢は、お客様の性能要件と利用可能なピン配置に合致するものでしょう。 SEMC信号に関しては、WRX(書き込み信号)とRDX(読み出し信号)はどちらも特定のFlexIOピンに定義されています。前述のアプリケーションノートの場合、それぞれFlexIO2_00とFlexIO2_01となります。D/CX信号は、データラインがデータを送信するかコマンド情報を送信するかを決定するためのレジスタ選択(RS)信号に相当します。 BR、 エドウィン。
記事全体を表示
关于RT1064的并行RGB LCD接口引脚问题 你好, 如果我理解有误请指正,但在我看来,RT1064 似乎有两个 LCD 接口: - 一个位于 GPIO 总线上,带有 CLK/HSYNC/VSYNC 信号以及最多 24 位数据信号 以及 - 另一个用于位于 SEMC 总线上的 8/16 位 MPU/8080 接口 我使用的是一个搭载ILI9341 控制器的 LCD 模块。我的计划是显示文本和图标,不会播放任何视频或动画。此设计中未使用任何外部存储器,因此可以使用 SEMC 总线。 问题1:哪种接口最适合我的应用? Q2. 在 SEMC 总线上,用于以并行模式连接 ILI9341 的以下引脚位于何处: - D/CX - WRX - RDX i.MX RT106x Re: Parallel RGB LCD interface pins question on RT1064 嗨@batmat , 您提到的基于 GPIO 总线的 LCD 模块是增强型 LCD 接口 (eLCDIF) 模块,它是专门为驱动显示器而设计的。 另一个模块是智能外部存储器控制器 (SEMC) 模块,它当然可以用来驱动某些类型的显示器,但它的设计更侧重于驱动外部存储器,尽管大多数基于 8080 的显示器在将此模块与 FlexIO 引脚的功能结合起来时也符合 SEMC 的功能。以下应用程序描述了此功能: https://mcuxpresso.nxp.com/appcodehub?search =an-flexio_8080_rt1050 从 ILI9341 数据手册的快速浏览来看,我认为该驱动程序支持多种类型的接口,包括与 eLCDIF 模块兼容的 RGB 接口、与 SEMC 模块兼容的 8080 接口,甚至还有可以使用 LPSPI 模块实现的 3/4 线 SPI 接口。 也就是说,最好的建议是选择最符合您的性能要求和可用引脚排列的产品。 对于 SEMC 信号,WRX(写入信号)和 RDX(读取信号)均定义在特定的 FlexIO 引脚上。对于上述应用笔记,它们分别是 FlexIO2_00 和 FlexIO2_01。D/CX 信号相当于寄存器选择 (RS) 信号,用于确定数据线是发送数据还是命令信息。 BR, 埃德温。
記事全体を表示
imx95 + la12xx こんにちは、NXP 問題の説明:現在、PCIe経由で接続されたIMX95とLA1234を使用しています。hostsw_la12xx用のカーネルドライバをコンパイルし、yami.koをロードしましたが、LSPCIを使用してLA1234デバイスを検出できません。 1. LA1234に書き込むためのプログラムがありません。LSPCI経由でプログラムを表示するには、まず書き込む必要がありますか?プログラムを書き込むにはどうすればよいですか? Re: imx95 + la12xx yami.ko lspci 観測された現象に基づくと、現在の問題はホスト側のコンパイルまたはロード処理に起因する可能性は低い。LA1234が観測される前提条件は、LA1234が既にPCIeエンドポイントとして正常に起動しており、PCIeリンクが正常にトレーニングされていることである。 LA1234にプログラムが書き込まれていない、またはブートされていない場合、i.MX95側が lspci 経由でLA1234を認識できないのは当然です。i.MX95がルートコンプレックスとしてデバイスを列挙するには、LA1234がサポートされているブートソースから起動してLA12xx BSP/FreeRTOS/PCIe EPファームウェアを実行し、PCIeエンドポイントの初期化を完了する必要があります。 hostsw_la12xx/kernel_driver/yami.ko これはホストLinux側のLA12xx PCIeドライバです。通常、ホストがPCIeデバイスを列挙した後、PCIeインバウンド/アウトバウンドウィンドウ、e200 OSブート、VSPAイメージブート、IPC/RFICなど、LA12xxのさらなる初期化処理を行います。LA1234側でPCIe EPが完全に有効になっていない場合、デバイスが lspci に直接表示されることはありません。 まずは以下の手順を確認することをお勧めします。 LA1234のブートモード/ブートソースが正しいこと、およびLA1234がPCIeエンドポイントドライバを含むLA12xx BSP/FreeRTOSイメージを起動したことを確認してください。 LA1234 PCIeコントローラがEPとして構成され、i.MX95側がRCとして構成されていることを確認してください。 PCIe REFCLK、PERST#、電源シーケンス、SerDesレーン設定、レーン幅/速度が一致しているかどうかを確認してください。 i.MX95側はまず dmesg | grep -i pcie 、 echo 1 > /sys/bus/pci/rescan 、 lspci -nn -vv を実行して、エンドポイント列挙があるかどうかを確認します。 それでもデバイスが認識されない場合は、まず正常に動作することが確認されているPCIeエンドポイントを使用してi.MX95に接続し、i.MX95 RC側のハードウェアとデバイスツリー/カーネル構成が正しいことを確認することをお勧めします。その後、LA1234側に戻り、EPの起動とハードウェア接続を確認してください。 LA1234をプログラムするには、LA12xx SDK/BSPに付属のLA1234/LA12xxボードブートイメージと対応するプログラミング手順を使用する必要があります。公開されている hostsw_la12xx リポジトリには主にホスト側のソフトウェアが含まれており、FreeRTOS側のコードは含まれていません。そのため、LA12xx SDKユーザーガイド/BSPリリースパッケージのLA12xxボードブートとイメージプログラミングに関するセクションを参照してください。
記事全体を表示
S32 Design Studio S32 Design Studio v2.0をインストールしようとしています。S32 design studio v2.0をインストールすると、このファイルをライセンス申請に持って行request.xml、パソコンに保存Activation.xml送信されます。インストール画面に戻るとタイムアウトが発生し、Activation.xml ファイルを追加できません。彼らが許可した時間内にこれをどうすればいいですか? Re: S32 design Studio こんにちは、 アクティベーションリクエストに固有マシンIDが欠落しています。このIDがなければS32DSは起動できません。別のPCマシンでの最初の試行時に、そのIDが含まれており、アクティベーションは正常に完了しました。 仮想マシンを使用している場合、「マシンUIDが見つかりません」というエラーがよく発生します。場合によっては、OSのセキュリティポリシーがS32SDをブロックしてOSからそのようなIDを取得することもあります。c:\ProgramData\FLEXnet\フォルダの内容をバックアップして削除し、再度インストールを試してみてください。
記事全体を表示
S32DSのソフトウェアは期限切れです。 質問したいのですが、S32DSソフトウェアのライセンスがまもなく切れます。どうやって更新すればいいですか? Re: The S32DS software has expired. こんにちは、 現在は延長されています。 よろしくお願いいたします。 ピーター
記事全体を表示