IMX系列是通过修改设备树的IOMUX来配置GPIO复用。 LS系列GPIO复用是通过 RCW(复位配置字)来配置的, LS1046的 RCW是512 bits。本节主要参考 LS1046ARM 4.4.6.1 RCW Field Definitions 章节 和 3.4.1 UART, GPIO, FTM, and LPUART signal multiplexing 章节。来分析一下UART的复用。
- 通过下图得知UART_BASE[366:368]的配置为7
- 启动开发板,可以在串口log 看到 RCW的值如下。 上面我们已知RCW共512字节,所以每个字母位是4个bit,每个WORD是32bit. 每一行是4个WORD,共128bit. 4行总共 512bit(从0到511位)。而 UART_BASE的字节是 366到368. 我们可以定位到第三行第4个WORD, 中的 数字 38(从364 位到371 位)。 数字38 的二进制是00111000 分别对应364位到 371位。所以 UART_BASE[366:368]的二进制是 111 也就是7 . 刚好对应上诉RCW文件中的配置。
- 查看 LS1046ARM 4.4.6.1 RCW Field Definitions 章节 UART_BASE描述如下。如果UART_BASE=7的时候,PIN复用为4个UART
{UART1_SOUT, UART1_SIN,
UART3_SOUT, UART3_SIN,
UART2_SOUT, UART2_SIN,
UART4_SOUT, UART4_SIN}
- 关于UART_BASE复用哪些管脚。可以查看 3.4.1 UART, GPIO, FTM, and LPUART signal multiplexing 章节
最后通过原理图查看UART的PIN脚, 可以看出UART_BASE为7 的时候,其实是复用为UART1,UART2,UART3,UART4。下图标住的信号的不对的。
6.总结 ,复用机制好像不够灵活。GPIO可能不能任意配置。值得注意的是部分管脚是通过SCFG_RCWPMUXCR0 这个寄存器来配置。