I.MX6ULL 中,SPI 对应的模块是ECSPI(Enhanced Configurable SPI)
目录
3.8 ECSPI3_PERIODREG(选择时钟源、采样周期)
一、硬件原理图分析
SPI 至少涉及到四个引脚,在开发板底板原理图找到 ECSPI 相关的四个引脚,以及这四个引脚关联到核心板的哪些引脚。比如下面的 SS0 是片选信号线,关联到核心板的 UART2_TXD
- SS0:片选信号 —— UART2_TXD
- SCLK:时钟线 —— UART2_RXD
- MISO:主设备接收 —— UART2_RTS
- MOSI:主设备发送 —— UART2_CTS

注意:IMX6ULL 有四个 SPI 主控制器 ECSPI1~ECSPI4,每个主控制器包含四个片选引脚 SS0~SS3

二、IO 复用寄存器解析
以 SS0 为例,关联的核心板引脚是 UART2_TXD,UART2_TXD可能有多种用途,我们要将其复用为 SS0 功能。(其他引脚也是同理)
- 设置复用的寄存器:IOMUXC_SW_MUX_CTL_PAD_UART2_TX_DATA
- 设置电气属性的寄存器:IOMUXC_SW_PAD_CTL_PAD_UART2_TX_DATA
- 初始值:0x10B1

/*************** SS0 复用初始化 ******************/
寄存器(基地址): IOMUXC_SW_MUX_CTL_PAD_UART2_TX_DATA (0x20E0094)
寄存器(基地址): IOMUXC_SW_PAD_CTL_PAD_UART2_TX_DATA (0x20E0320)
初始化操作:
IOMUXC_SW_MUX_CTL_PAD_UART2_TX_DATA &=~ (0xF); // 低4位清零
IOMUXC_SW_MUX_CTL_PAD_UART4_TX_DATA |= 8; // 复用为SS0
IOMUXC_SW_PAD_CTL_PAD_UART2_TX_DATA = 0x10B1;
/*************** SCL 复用初始化 ******************/
寄存器(基地址): IOMUXC_SW_MUX_CTL_PAD_UART2_RX_DATA (0x20E0098)
寄存器(基地址): IOMUXC_SW_PAD_CTL_PAD_UART2_RX_DATA (0x20E0324)
初始化操作:
IOMUXC_SW_MUX_CTL_PAD_UART2_RX_DATA &=~ (0xF); // 低4位清零
IOMUXC_SW_MUX_CTL_PAD_UART2_RX_DATA |= 8; // 复用为SCL
IOMUXC_SW_PAD_CTL_PAD_UART2_RX_DATA = 0x10B1;
/*************** MISO 复用初始化 ******************/
寄存器(基地址): IOMUXC_SW_MUX_CTL_PAD_UART2_RTS_B (0x20E00A0)
寄存器(基地址): IOMUXC_SW_PAD_CTL_PAD_UART2_RTS_B (0x20E032C)
初始化操作:
IOMUXC_SW_MUX_CTL_PAD_UART2_RTS_B &=~ (0xF); // 低4位清零
IOMUXC_SW_MUX_CTL_PAD_UART2_RTS_B |= 8; // 复用为MISO
IOMUXC_SW_PAD_CTL_PAD_UART2_RTS_B = 0x10B1;
/*************** MOSI 复用初始化 ******************/
寄存器(基地址): IOMUXC_SW_MUX_CTL_PAD_UART2_CTS_B (0x20E009C)
寄存器(基地址): IOMUXC_SW_PAD_CTL_PAD_UART2_CTS_B (0x20E0328

本文详细解析了I.MX6ULL平台上的ECSPI模块,包括硬件原理图分析、IO复用寄存器设置、ECSPI各寄存器的功能和配置,如时钟配置、数据通信控制等,有助于理解和使用该平台的SPI功能。
最低0.47元/天 解锁文章
918





