UART3 on i.MX 8M Mini

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

UART3 on i.MX 8M Mini

Jump to solution
2,853 Views
josc
Contributor II

Hi,

I try to use UART3 on i.MX 8M Mini LPDDR4 EVKB M4 core but I'm not getting any signals. I'm using the evkmimx8mm_iuart_interrupt_transfer example. I edited pin_mux.c:

IOMUXC_SetPinMux(IOMUXC_UART3_RXD_UART3_RX, 0U); 
IOMUXC_SetPinConfig(IOMUXC_UART3_RXD_UART3_RX, 
IOMUXC_SW_PAD_CTL_PAD_DSE(6U) | IOMUXC_SW_PAD_CTL_PAD_FSEL(2U)); 
IOMUXC_SetPinMux(IOMUXC_UART3_TXD_UART3_TX, 0U); IOMUXC_SetPinConfig(IOMUXC_UART3_TXD_UART3_TX, 
IOMUXC_SW_PAD_CTL_PAD_DSE(6U) | IOMUXC_SW_PAD_CTL_PAD_FSEL(2U)); 

 

I also had to edit the function BOARD_BootClockRUN() in clock_config.c:

CLOCK_SetRootMux(kCLOCK_RootUart3, kCLOCK_UartRootmuxSysPll1Div10);
CLOCK_SetRootDivider(kCLOCK_RootUart3, 1U, 1U);
CLOCK_EnableClock(kCLOCK_Uart3); 

 

And I of course changed the definitions in main.c:

#define DEMO_UART UART3 
#define DEMO_UART_CLK_FREQ \ 
CLOCK_GetPllFreq(kCLOCK_SystemPll1Ctrl) / (CLOCK_GetRootPreDivider(kCLOCK_RootUart3)) / \ (CLOCK_GetRootPostDivider(kCLOCK_RootUart3)) / 10 

 

The Boot Switches are in Download Mode and I'm uploading the code via J-Link. I also configured UART3 in RDC. Therefore should UART3 be accessible with the M4, right?

I connected Pin 8, which should be UART3 TX, from the Expansion Connector J1003 on an oscilloscope to detect signals but I can't see anything. What am I missing here?

Labels (1)
0 Kudos
Reply
1 Solution
2,729 Views
josc
Contributor II

I could fix the issue by using the correct PinMux configuration. Instead of IOMUXC_UART3_RXD_UART3_RX  and IOMUXC_UART3_TXD_UART3_TX I'm using IOMUXC_ECSPI1_SCLK_UART3_RX and IOMUXC_ECSPI1_MOSI_UART3_TX now.

Thank you for your help!

View solution in original post

5 Replies
2,819 Views
josc
Contributor II

There's no dts when the switches are in Download mode. So UART3 should be free to use.

0 Kudos
Reply
2,740 Views
joanxie
NXP TechSupport
NXP TechSupport

do you dts has this? if yes, you need set to "disabled," pls double check it

linux-imx/arch/arm64/boot/dts/freescale/imx8mm-evk.dtsi at lf-6.6.y · nxp-imx/linux-imx · GitHub

&uart3 {
pinctrl-names = "default";
pinctrl-0 = <&pinctrl_uart3>;
assigned-clocks = <&clk IMX8MM_CLK_UART3>;
assigned-clock-parents = <&clk IMX8MM_SYS_PLL1_80M>;
fsl,uart-has-rtscts;
status = "okay";
};

0 Kudos
Reply
2,730 Views
josc
Contributor II

I could fix the issue by using the correct PinMux configuration. Instead of IOMUXC_UART3_RXD_UART3_RX  and IOMUXC_UART3_TXD_UART3_TX I'm using IOMUXC_ECSPI1_SCLK_UART3_RX and IOMUXC_ECSPI1_MOSI_UART3_TX now.

Thank you for your help!

2,481 Views
Vishal-K-V
Contributor I

This worked for me as well , But I want to ask why we have done this.

0 Kudos
Reply
2,838 Views
joanxie
NXP TechSupport
NXP TechSupport

could you confirm if your dts doesn't use uart3? if linux side uses this, you need disable this firstly, I don't know how your SW is, you can check it by yourself

0 Kudos
Reply
%3CLINGO-SUB%20id%3D%22lingo-sub-1931780%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%3EUART3%20on%20i.MX%208M%20Mini%3C%2FLINGO-SUB%3E%3CLINGO-BODY%20id%3D%22lingo-body-1931780%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%3E%3CP%3EHi%2C%3C%2FP%3E%3CP%3EI%20try%20to%20use%20UART3%20on%20i.MX%208M%20Mini%20LPDDR4%20EVKB%20M4%20core%20but%20I'm%20not%20getting%20any%20signals.%20I'm%20using%20the%20evkmimx8mm_iuart_interrupt_transfer%20example.%20I%20edited%20pin_mux.c%3A%3C%2FP%3E%3CPRE%20class%3D%22lia-code-sample%20language-c%22%3E%3CCODE%3EIOMUXC_SetPinMux(IOMUXC_UART3_RXD_UART3_RX%2C%200U)%3B%20%0AIOMUXC_SetPinConfig(IOMUXC_UART3_RXD_UART3_RX%2C%20%0AIOMUXC_SW_PAD_CTL_PAD_DSE(6U)%20%7C%20IOMUXC_SW_PAD_CTL_PAD_FSEL(2U))%3B%20%0AIOMUXC_SetPinMux(IOMUXC_UART3_TXD_UART3_TX%2C%200U)%3B%20IOMUXC_SetPinConfig(IOMUXC_UART3_TXD_UART3_TX%2C%20%0AIOMUXC_SW_PAD_CTL_PAD_DSE(6U)%20%7C%20IOMUXC_SW_PAD_CTL_PAD_FSEL(2U))%3B%20%3C%2FCODE%3E%3C%2FPRE%3E%3CBR%20%2F%3E%3CP%3EI%20also%20had%20to%20edit%20the%20function%20BOARD_BootClockRUN()%20in%20clock_config.c%3A%3C%2FP%3E%3CPRE%20class%3D%22lia-code-sample%20language-c%22%3E%3CCODE%3ECLOCK_SetRootMux(kCLOCK_RootUart3%2C%20kCLOCK_UartRootmuxSysPll1Div10)%3B%0ACLOCK_SetRootDivider(kCLOCK_RootUart3%2C%201U%2C%201U)%3B%0ACLOCK_EnableClock(kCLOCK_Uart3)%3B%20%3C%2FCODE%3E%3C%2FPRE%3E%3CBR%20%2F%3E%3CP%3EAnd%20I%20of%20course%20changed%20the%20definitions%20in%20main.c%3A%3C%2FP%3E%3CPRE%20class%3D%22lia-code-sample%20language-c%22%3E%3CCODE%3E%23define%20DEMO_UART%20UART3%20%0A%23define%20DEMO_UART_CLK_FREQ%20%5C%20%0ACLOCK_GetPllFreq(kCLOCK_SystemPll1Ctrl)%20%2F%20(CLOCK_GetRootPreDivider(kCLOCK_RootUart3))%20%2F%20%5C%20(CLOCK_GetRootPostDivider(kCLOCK_RootUart3))%20%2F%2010%20%3C%2FCODE%3E%3C%2FPRE%3E%3CBR%20%2F%3E%3CP%3EThe%20Boot%20Switches%20are%20in%20Download%20Mode%20and%20I'm%20uploading%20the%20code%20via%20J-Link.%20I%20also%20configured%20UART3%20in%20RDC.%20Therefore%20should%20UART3%20be%20accessible%20with%20the%20M4%2C%20right%3F%3C%2FP%3E%3CP%3EI%20connected%20Pin%208%2C%20which%20should%20be%20UART3%20TX%2C%20from%20the%20Expansion%20Connector%20J1003%20on%20an%20oscilloscope%20to%20detect%20signals%20but%20I%20can't%20see%20anything.%20What%20am%20I%20missing%20here%3F%3C%2FP%3E%3C%2FLINGO-BODY%3E%3CLINGO-LABS%20id%3D%22lingo-labs-1931780%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%3E%3CLINGO-LABEL%3Ei.MX%208M%20%7C%20i.MX%208M%20Mini%20%7C%20i.MX%208M%20Nano%3C%2FLINGO-LABEL%3E%3C%2FLINGO-LABS%3E%3CLINGO-SUB%20id%3D%22lingo-sub-1977786%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%3ERe%3A%20UART3%20on%20i.MX%208M%20Mini%3C%2FLINGO-SUB%3E%3CLINGO-BODY%20id%3D%22lingo-body-1977786%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%3E%3CP%3EThis%20worked%20for%20me%20as%20well%20%2C%20But%20I%20want%20to%20ask%20why%20we%20have%20done%20this.%3C%2FP%3E%3C%2FLINGO-BODY%3E%3CLINGO-SUB%20id%3D%22lingo-sub-1937072%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%3ERe%3A%20UART3%20on%20i.MX%208M%20Mini%3C%2FLINGO-SUB%3E%3CLINGO-BODY%20id%3D%22lingo-body-1937072%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%3E%3CP%3EI%20could%20fix%20the%20issue%20by%20using%20the%20correct%20PinMux%20configuration.%20Instead%20of%20%3CSPAN%3E%3CSPAN%20class%3D%22%22%3EIOMUXC_UART3_RXD_UART3_RX%26nbsp%3B%20and%20IOMUXC_UART3_TXD_UART3_TX%20I'm%20using%20IOMUXC_ECSPI1_SCLK_UART3_RX%20and%20IOMUXC_ECSPI1_MOSI_UART3_TX%20now.%3C%2FSPAN%3E%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3CSPAN%3E%3CSPAN%20class%3D%22%22%3EThank%20you%20for%20your%20help!%3C%2FSPAN%3E%3C%2FSPAN%3E%3C%2FP%3E%3C%2FLINGO-BODY%3E%3CLINGO-SUB%20id%3D%22lingo-sub-1936871%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%3ERe%3A%20UART3%20on%20i.MX%208M%20Mini%3C%2FLINGO-SUB%3E%3CLINGO-BODY%20id%3D%22lingo-body-1936871%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%3E%3CP%3Edo%20you%20dts%20has%20this%3F%20if%20yes%2C%20you%20need%20set%20to%20%22disabled%2C%22%20pls%20double%20check%20it%3C%2FP%3E%0A%3CP%3E%3CA%20href%3D%22https%3A%2F%2Fgithub.com%2Fnxp-imx%2Flinux-imx%2Fblob%2Flf-6.6.y%2Farch%2Farm64%2Fboot%2Fdts%2Ffreescale%2Fimx8mm-evk.dtsi%22%20target%3D%22_blank%22%20rel%3D%22nofollow%20noopener%20noreferrer%22%3Elinux-imx%2Farch%2Farm64%2Fboot%2Fdts%2Ffreescale%2Fimx8mm-evk.dtsi%20at%20lf-6.6.y%20%C2%B7%20nxp-imx%2Flinux-imx%20%C2%B7%20GitHub%3C%2FA%3E%3C%2FP%3E%0A%3CP%3E%26amp%3Buart3%20%7B%3CBR%20%2F%3Epinctrl-names%20%3D%20%22default%22%3B%3CBR%20%2F%3Epinctrl-0%20%3D%20%26lt%3B%26amp%3Bpinctrl_uart3%26gt%3B%3B%3CBR%20%2F%3Eassigned-clocks%20%3D%20%26lt%3B%26amp%3Bclk%20IMX8MM_CLK_UART3%26gt%3B%3B%3CBR%20%2F%3Eassigned-clock-parents%20%3D%20%26lt%3B%26amp%3Bclk%20IMX8MM_SYS_PLL1_80M%26gt%3B%3B%3CBR%20%2F%3Efsl%2Cuart-has-rtscts%3B%3CBR%20%2F%3Estatus%20%3D%20%22okay%22%3B%3CBR%20%2F%3E%7D%3B%3C%2FP%3E%3C%2FLINGO-BODY%3E%3CLINGO-SUB%20id%3D%22lingo-sub-1932011%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%3ERe%3A%20UART3%20on%20i.MX%208M%20Mini%3C%2FLINGO-SUB%3E%3CLINGO-BODY%20id%3D%22lingo-body-1932011%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%3E%3CP%3EThere's%20no%20dts%20when%20the%20switches%20are%20in%20Download%20mode.%20So%20UART3%20should%20be%20free%20to%20use.%3C%2FP%3E%3C%2FLINGO-BODY%3E%3CLINGO-SUB%20id%3D%22lingo-sub-1931862%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%3ERe%3A%20UART3%20on%20i.MX%208M%20Mini%3C%2FLINGO-SUB%3E%3CLINGO-BODY%20id%3D%22lingo-body-1931862%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%3E%3CP%3Ecould%20you%20confirm%20if%20your%20dts%20doesn't%20use%20uart3%3F%20if%20linux%20side%20uses%20this%2C%20you%20need%20disable%20this%20firstly%2C%20I%20don't%20know%20how%20your%20SW%20is%2C%20you%20can%20check%20it%20by%20yourself%3C%2FP%3E%3C%2FLINGO-BODY%3E