How to use LPUART2 polling example on CM33?

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

How to use LPUART2 polling example on CM33?

ソリューションへジャンプ
2,003件の閲覧回数
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,695件の閲覧回数
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 返答(返信)
1,985件の閲覧回数
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 件の賞賛
返信
1,965件の閲覧回数
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 件の賞賛
返信
1,964件の閲覧回数
danielchen
NXP TechSupport
NXP TechSupport

LPUART0 and LPUART1 are in CM33 real time domain.

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

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

0 件の賞賛
返信
1,937件の閲覧回数
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 件の賞賛
返信
1,927件の閲覧回数
wendy-liu
Contributor II

The reg of PCC_LPUART2 is always 0.  

0 件の賞賛
返信
1,902件の閲覧回数
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 件の賞賛
返信
1,895件の閲覧回数
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,719件の閲覧回数
danielchen
NXP TechSupport
NXP TechSupport

Hi @wendy-liu :

 

Did you solve this issue now?

 

0 件の賞賛
返信
1,713件の閲覧回数
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,696件の閲覧回数
danielchen
NXP TechSupport
NXP TechSupport

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

0 件の賞賛
返信
1,930件の閲覧回数
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 件の賞賛
返信
1,935件の閲覧回数
danielchen
NXP TechSupport
NXP TechSupport

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

0 件の賞賛
返信