【裸机开发】SPI 通信接口(二)—— SPI 寄存器解析(ECSCPI)

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

I.MX6ULL 中,SPI 对应的模块是ECSPI(Enhanced Configurable SPI)


目录

一、硬件原理图分析

二、IO 复用寄存器解析

三、ECSPI 寄存器解析

3.1 时钟配置

3.2 ECSPI3_RXDATA

3.3 ECSPI3_TXDATA

3.4 ECSPI3_CONREG(ECSPI使能、分频)

3.5 ECSPI3_CONFIGREG(配置寄存器)

3.6 ECSPI3_INTREG(中断使能寄存器)

3.7 ECSPI3_STATREG(状态寄存器)

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
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值