How to use LPUART2 polling example on CM33?

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

How to use LPUART2 polling example on CM33?

ソリューションへジャンプ
2,142件の閲覧回数
wendy-liu
Contributor II

Dear all,

      I want to use lpuart polling example on SDK, the demo_example is LPUART1, but I want to use LPUART2.

     Then I add pin_mux and set the clock, then debug console print as below:

ASSERT ERROR " (reg & PCC_CLKCFG_PR_MASK) != 0UL ": file "/home/wendy/workspace/imx8ulp-m33/devices/MIMX8UD7/drivers/fsl_clock.c" Line "300" function name "CLOCK_SetIpSrc"

    This is my add:

void BOARD_InitHardware(void)
{
    +CLOCK_SetIpSrc(kCLOCK_Lpuart2, kCLOCK_Pcc2BusIpSrcFusionDspBus);
 }
void BOARD_InitPins(void) {                                /*!< Function assigned for the core: Cortex-M33[cm33] */
    IOMUXC_SetPinMux(IOMUXC_PTA10_LPUART1_TX, 0U);
    IOMUXC_SetPinConfig(IOMUXC_PTA10_LPUART1_TX,
                        IOMUXC_PCR_PE_MASK |
                        IOMUXC_PCR_PS_MASK);
    IOMUXC_SetPinMux(IOMUXC_PTA11_LPUART1_RX, 0U);
    IOMUXC_SetPinConfig(IOMUXC_PTA11_LPUART1_RX,
                        IOMUXC_PCR_PE_MASK |
                        IOMUXC_PCR_PS_MASK);

    +IOMUXC_SetPinMux(IOMUXC_PTB2_LPUART2_TX , 0U);
    +IOMUXC_SetPinConfig(IOMUXC_PTB2_LPUART2_TX ,
    +                    IOMUXC_PCR_PE_MASK |
    +                    IOMUXC_PCR_PS_MASK);
    +IOMUXC_SetPinMux(IOMUXC_PTB3_LPUART2_RX, 0U);
    +IOMUXC_SetPinConfig(IOMUXC_PTB3_LPUART2_RX,
    +                    IOMUXC_PCR_PE_MASK |
    +                    IOMUXC_PCR_PS_MASK);
}
Looking forward to your reply!
Thanks!
ラベル(1)
0 件の賞賛
返信
1 解決策
1,834件の閲覧回数
danielchen
NXP TechSupport
NXP TechSupport

Thanks for your update.  please follow below thread for this question.  Re: imx8ulp m33 core gpio - NXP Community

元の投稿で解決策を見る

0 件の賞賛
返信
13 返答(返信)
2,124件の閲覧回数
wendy-liu
Contributor II

I add clock in ATF: plat/imx/imx8ulp/imx8ulp_bl31_setup.c:

mmio_write_32(0x28102000+ 0x2c, 0x80000000);

But it doesn't work

0 件の賞賛
返信
2,104件の閲覧回数
danielchen
NXP TechSupport
NXP TechSupport

Hi @wendy-liu :

 

LPUART2 is in DPS domain,  is designed for DSP core, not for CM33.  CM33 can not control it.

please check the reference manual.

danielchen_0-1744702508601.png

 

 

Regards

Daniel

0 件の賞賛
返信
2,103件の閲覧回数
danielchen
NXP TechSupport
NXP TechSupport

LPUART0 and LPUART1 are in CM33 real time domain.

0 件の賞賛
返信
2,094件の閲覧回数
wendy-liu
Contributor II

I know, but how to enable LPUART2 on DSP domain?

0 件の賞賛
返信
2,076件の閲覧回数
danielchen
NXP TechSupport
NXP TechSupport

Hi @wendy-liu :

 

The error message is from function CLOCK_SetIpSrc, can you debug and check the value of reg?

danielchen_0-1744786773504.png

 

 

Regards

Daniel

0 件の賞賛
返信
2,066件の閲覧回数
wendy-liu
Contributor II

The reg of PCC_LPUART2 is always 0.  

0 件の賞賛
返信
2,041件の閲覧回数
danielchen
NXP TechSupport
NXP TechSupport

Please try below lines.

 

    const cgc_rtd_sys_clk_config_t g_sysClkConfigFroSource = {

    .divCore = 0, /* Core clock divider. */

    .divBus  = 1, /* Bus clock divider. */

    .divSlow = 3, /* Slow clock divider. */

    .src     = kCGC_RtdSysClkSrcFro, /* System clock source. */

    .locked  = 0, /* Register not locked. */

};

    CLOCK_SetFusionSysClkConfig(&g_sysClkConfigFroSource);

     BOARD_InitPins();

     BOARD_BootClockRUN();

     BOARD_InitDebugConsole();

     Fusion_Init();

     BOARD_SetTrdcGlobalConfig();

 

    rate = CLOCK_GetFreq(kCLOCK_FusionDspBusClk);

    PRINTF("The rate is 0x%x. \r\n", rate);

 

      CLOCK_SetIpSrc(kCLOCK_Lpuart2, kCLOCK_Pcc2BusIpSrcFusionDspBus);

 

 

Any support, information, and technology (“Materials”) provided by NXP are provided AS IS, without any warranty express or implied, and NXP disclaims all direct and indirect liability and damages in connection with the Material to the maximum extent permitted by the applicable law. NXP accepts no liability for any assistance with applications or product design.  Materials may only be used in connection with NXP products. Any feedback provided to NXP regarding the Materials may be used by NXP without restriction.

0 件の賞賛
返信
2,034件の閲覧回数
wendy-liu
Contributor II

I have tried it.

The rate is 0x5b8d800. My M core and A core don't start normally...

There is my patch.

 

0 件の賞賛
返信
1,858件の閲覧回数
danielchen
NXP TechSupport
NXP TechSupport

Hi @wendy-liu :

 

Did you solve this issue now?

 

0 件の賞賛
返信
1,852件の閲覧回数
wendy-liu
Contributor II

I have already enabled LPUART2, but I'm having some issues with API “LPUART_WriteBlocking” I'm currently using.

0 件の賞賛
返信
1,835件の閲覧回数
danielchen
NXP TechSupport
NXP TechSupport

Thanks for your update.  please follow below thread for this question.  Re: imx8ulp m33 core gpio - NXP Community

0 件の賞賛
返信
2,069件の閲覧回数
wendy-liu
Contributor II

yes, I read reg of LPUART1  and LPUART2 CLOCK, result is 0xd2000000 and 0.

Now, I 'm working with TRDC for eDMA access.

I add some configutation in 

voidBOARD_SetTrdcGlobalConfig(void) as below:
        /* non secure state can access lpuart2(PBridge2 slot 11, T-MBC3) for eDMA0 */
        mbcBlockConfig.memoryAccessControlSelect = TRDC_MBC_ACCESS_CONTROL_POLICY_ALL_INDEX;
        mbcBlockConfig.nseEnable                 = true; /* non secure state can access the block for eDMA0 */
        mbcBlockConfig.mbcIdx                    = 3U;   /* MBC3 */
        mbcBlockConfig.domainIdx                 = TRDC_DMA0_DOMAIN_ID; /* MBC3_DOM0 */
        mbcBlockConfig.slaveMemoryIdx            = 0U;                  /* MBC3_DOM0_MEM0 */
        mbcBlockConfig.memoryBlockIdx            = 11U;                 /* MBC3_DOM0_MEM0_BLK_CFG_W11 */
        TRDC_MbcSetMemoryBlockConfig(TRDC, &mbcBlockConfig);
 
But the result is that I don't read reg of LPUART2[PCC_REG(kCLOCK_Lpuart2)]It means the Peripheral is not present...
Is there any new information on this?
0 件の賞賛
返信
2,074件の閲覧回数
danielchen
NXP TechSupport
NXP TechSupport

did you initialize the DSP core (Fusion_Init) before you call CLOCK_SetIpSrc?

0 件の賞賛
返信