4. XMC I2C外设寄存器:主控与从机模式配置

XMC系列微控制器的I2C外设通过一组专用的寄存器实现主控与从机模式下的通信控制。正确配置这些寄存器是确保总线时序、地址匹配、数据传输与中断管理的基础。本章将分别解析主控模式寄存器组(MRPS、MSPS、MFCR)与从机模式寄存器组(SRPS、SFCR)的功能、位域定义及典型配置流程。

4.1 主控模式寄存器配置

主控模式下,XMC I2C外设通过三个核心寄存器控制总线时序、协议状态与中断标志:

  • MRPS(Master Rate Prescaler Select):主控速率预分频选择,决定SCL时钟频率。
  • MSPS(Master Status and Protocol Select):主控状态与协议选择,控制启动/停止条件、读写方向及总线状态。
  • MFCR(Master Flag and Control Register):主控标志与控制寄存器,管理中断使能、错误标志及传输完成状态。

4.1.1 MRPS:速率预分频配置

MRPS寄存器用于设置I2C总线SCL时钟频率。XMC I2C模块支持标准模式(100 kHz)和快速模式(400 kHz),通过预分频因子PDIV和时钟分频系数CLKDIV组合实现。

位域 名称 描述 典型值
[15:8] PDIV 预分频因子,决定基础时钟周期 0x01(标准模式)
[7:0] CLKDIV 时钟分频系数,进一步细化SCL高/低电平时间 0x32(标准模式)
配置提示: 标准模式下,推荐PDIV=1、CLKDIV=50(对应100 kHz);快速模式下,推荐PDIV=0、CLKDIV=12(对应400 kHz)。实际频率需根据系统时钟频率计算。

4.1.2 MSPS:协议与状态控制

MSPS寄存器是主控模式下的核心控制寄存器,用于发起总线操作、设置读写方向及监控总线状态。关键位域包括:

  • STA(Start Condition):置1发起启动条件。
  • STO(Stop Condition):置1发起停止条件。
  • RW(Read/Write):0表示写操作,1表示读操作。
  • BUSY(Bus Busy):只读位,指示总线是否被占用。
典型主控写操作流程:
1. 配置MRPS设置速率。
2. 写MSPS寄存器:置位STA,设置RW=0,写入从机地址。
3. 等待MFCR中的ACK位确认从机应答。
4. 写入数据字节,每字节后等待ACK。
5. 传输完成后置位STO,释放总线。

4.1.3 MFCR:标志与中断管理

MFCR寄存器提供传输状态标志和中断控制。主要位域包括:

位域 名称 功能
[0] ACK 从机应答标志,0=无应答,1=应答
[1] BUSERR 总线错误标志,仲裁丢失或异常条件时置位
[2] TC 传输完成标志,每字节传输完成后置位
[8] INTEN 中断使能,置1允许TC或错误触发中断
故障排查要点: 若MFCR中BUSERR频繁置位,检查总线外部上拉电阻是否正常、SCL/SDA线是否存在短路或电平冲突。ACK位为0时,确认从机地址是否正确、从机是否处于空闲状态。
主控模式寄存器配置流程 系统时钟输入 MRPS:设置PDIV/CLKDIV MSPS:STA/STO/RW设置 MFCR:ACK/TC/BUSERR 中断服务(可选) 说明: 配置顺序:先设置MRPS确定速率,再通过MSPS发起操作,最后通过MFCR监控传输状态。中断使能需在初始化时设置。

4.2 从机模式寄存器配置

从机模式下,XMC I2C外设通过两个专用寄存器实现地址匹配、数据收发与状态管理:

  • SRPS(Slave Rate Prescaler Select):从机速率预分频选择,用于同步从机时钟与总线速率。
  • SFCR(Slave Flag and Control Register):从机标志与控制寄存器,管理地址匹配、数据方向及中断标志。

4.2.1 SRPS:从机速率同步

SRPS寄存器与MRPS结构类似,但仅用于从机模式下的时钟同步。从机无需主动产生SCL时钟,但需通过预分频设置采样窗口,确保在总线速率下正确检测起始条件、地址位及数据位。

位域 名称 描述 推荐值
[15:8] SPDIV 从机预分频因子,决定采样时钟 0x01(标准模式)
[7:0] SCLKDIV 从机时钟分频系数,影响滤波与保持时间 0x32(标准模式)
配置建议: 从机SRPS通常与主控MRPS设置一致,以确保采样窗口与总线速率匹配。若总线存在噪声,可适当增大SCLKDIV以增强滤波效果。

4.2.2 SFCR:从机状态与中断控制

SFCR寄存器是从机模式的核心控制寄存器,包含地址匹配标志、数据方向指示及中断使能。关键位域如下:

  • ADDRMATCH:地址匹配标志,当接收到的地址与从机地址一致时置位。
  • DIR:数据方向,0表示从机接收(主控写),1表示从机发送(主控读)。
  • DATAREADY:数据就绪标志,指示数据寄存器已准备好发送或接收。
  • INTEN:中断使能,允许地址匹配或数据就绪触发中断。
从机接收数据流程:
1. 配置SRPS设置采样速率。
2. 使能SFCR中的INTEN,等待地址匹配中断。
3. 检测ADDRMATCH标志,确认被主控寻址。
4. 根据DIR位判断方向:若DIR=0,读取数据寄存器;若DIR=1,写入数据寄存器。
5. 每字节传输后清除DATAREADY标志,准备下一字节。
从机模式寄存器配置与状态机 空闲(IDLE) 地址匹配(ADDRMATCH) 数据接收(DIR=0) 数据发送(DIR=1) 停止条件(STO检测) 说明: 从机通过SFCR的ADDRMATCH标志进入数据收发状态,DIR位决定方向。停止条件或总线错误后返回空闲状态。

4.3 主控与从机寄存器对比

下表总结了主控与从机模式寄存器在功能、配置要点及故障排查中的差异:

寄存器 模式 核心功能 常见故障
MRPS 主控 设置SCL时钟频率 速率过高导致从机无法响应
MSPS 主控 发起启动/停止、设置读写方向 STA未置位导致总线无启动条件
MFCR 主控 监控ACK、TC、BUSERR标志 BUSERR置位时检查总线电平
SRPS 从机 同步采样时钟与总线速率 采样窗口过窄导致地址漏检
SFCR 从机 地址匹配、数据方向、中断控制 ADDRMATCH未置位时检查地址配置
实训作业提示: 在XMC开发板上分别配置主控与从机模式,使用逻辑分析仪捕获SCL/SDA波形。重点观察MRPS设置不同分频系数时SCL频率的变化,以及SFCR中ADDRMATCH标志与地址字节的对应关系。记录并分析配置错误导致的典型故障现象(如无应答、总线卡死、数据错位)。