MMDC、RTC、I2C、SPI

Multi-Mode DDR Controller (MMDC)

时钟

  • imx6ull时钟设置DDR为PFD2 400MHz(实际为396MHz)

image-20250228225826030

  • CBCMR[PRE_PERIPH2_CLK_SEL]

image-20250228230621874

  • CBCDR[PERIPH2_CLK_SEL]

image-20250228230800554

  • CBCDR[FABRIC_MMDC_PODF]

image-20250228231143317

DDR3L

  • 型号NT5CC256M16EP-EK

  • 512MB

  • NXP DDR测试程序ddr_stress_tester

LCD

RTC

Secure Non-Volatile Storage(SNVS)

SNVS_HPCOMR[NPSWA_EN]

image-20250301133928537

SNVS_LPCR[SRTC_ENV]

image-20250301134508865

获取计数值

SNVS_SRTCMR 和 SNVS_SRTCLR

  • SRTC 计数器是 32 位的,不是 47 位!

  • SNVS_SRTCMR 的 bit14:0 这 15 位是 SRTC 计数器的高 15 位。

  • SNVS_SRTCLR 的 bit31:bit15 这 17 位是 SRTC 计数器的低 17 位。

I2C

I2C协议介绍

  • 起始位:SCL高电平的时候,SDA下降沿

image-20250301144810634

  • 停止位:SCL高电平的时候,SDA上升沿

image-20250301144958490

  • 数据传输:SCL低电平时SDA必须稳定

image-20250301145051331

  • 应答信号:主机提供时钟,将SDA拉低表示ACK,将SDA拉高表示NOACK

  • I2C 写时序

image-20250301172209134

  • I2C 读时序

image-20250301172223762

imx6ull I2C Controler

引脚复用

image-20250301150553968

时钟

image-20250301150718964

寄存器

  • I2Cx_IFDR
    IPG_CLK_ROOT时钟66MHz,如果实现100KHz的标准I2C速率,则分频系数位66Mhz / 100KHz = 660,查表可知,配置IC值为0x38或者0x15

image-20250301152103670

  • I2Cx_I2CR

image-20250301152313271

位名称 功能 配置值
IEN[7] I2C enable 1
IIEN[6] I2C interrupt enable 0
MSTA Master/Slave mode select bit. 1
MTX Transmit(1)/Receive(0) mode select bit. -
TXAK Transmit acknowledge enable -
RSTA Generates a Repeated Start condition 1有效 -
  • I2Cx_I2SR

image-20250301153035812

位名称 功能 配置值
ICF Data transferring bit. 1:complete 0: progress -
IBB I2C bus busy bit. 1:Busy 0:idle -
IAL Arbitration lost. 0:No arbitration lost 1:Arbitration is lost
RXAK Received acknowledge. 0:Ack 1:noAck -
  • I2Cx_I2DR

image-20250301153529292

SPI

SPI协议介绍

  • 全双工,速度快(几十至上百兆)

  • 一般情况下分为4条线,CS、SCLK、MOSI、MISO,CS拉低有效

  • 工作模式:根据串行时钟极性(CPOL)和相位(CPHA)来配置

CPOL=0 CPOL=1
CPHA=0 时钟空闲状态为低、第一个跳变沿采集数据 时钟空闲状态为高、第一个跳变沿采集数据
CPHA=1 时钟空闲状态为低、第二个跳变沿采集数据 时钟空闲状态为高、第二个跳变沿采集数据

image-20250302115338017

  • 时序:以CPOL=0,CPHA=1工作模式为例,见下图

image-20250302115655548

Enhanced Configurable SPI (ECSPI)

时钟

image-20250302134411147

image-20250302134833548

pll3_sw_clk=480MHz

480 / 8 = 60Mhz

CCM_CSCDR2[ECSPI_CLK_SEL] 配置为0

image-20250302135020795

ECSPI_CLK_PODF[ECSPI_CLK_SEL] 配置为0 ,1分频

image-20250302135311246

寄存器

ECSPIx_RXDATA

image-20250302130932530

ECSPIx_TXDATA

image-20250302131019255

ECSPIx_CONREG

位名称 功能 配置值
EN[0] SPI Block Enable Control 1
HT[1] Hardware Trigger Enable. 0
XCH[2] SPI Exchange Bit. 0
SMC[3] Immediately starts a SPI burst when data is written in TXFIFO 1
CHANNEL_MODE[4:7] SPI CHANNEL MODE selects the mode for each SPI channel. 1
POST_DIVIDER[8:11] SPI Post Divider. -
PRE_DIVIDER[12:15] SPI Pre Divider. -
CHANNEL_SELECT[18:19] SPI CHANNEL SELECT bits b00
BURST_LENGTH[20:31] Burst Length.(设置8bit 一个字节) 7

image-20250302131055092

ECSPIx_CONFIGREG

位名称 功能 配置值
SCLK_PHA[0:3] SPI Clock/Data Phase Control. 0
SCLK_PO[4:7] SPI Clock Polarity Control. 0
SS_CTL[8:11] SPI SS Wave Form Select. 0
SS_POL[12:15] SPI SS Polarity Select. 0
DATA_CTL[16:19] Controls inactive state of the data line for each SPI channel. 0
SCLK_CTL[20:23] Controls the inactive state of SCLK for each SPI channel. 0

image-20250302132046581

ECSPIx_STATREG

位名称 功能 配置值
TE[0] TXFIFO Empty. -
RR[3] RXFIFO Ready. -

image-20250302133030343

ECSPIx_PERIODREG

位名称 功能 配置值
SAMPLE_PERIOD[0:14] Sample Period Control.Control the number of wait states 0x2000
CSRC[15] Clock Source Control. 0
CSD_CTL[16:21] 片选延迟 -

image-20250302133753353

各个协议中MSB、LSB传输顺序

总线类型 默认数据传输顺序
UART LSB 优先(低位先传)
SPI 可配置(常见 MSB 优先)
I²C MSB 优先(高位先传)