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,释放总线。
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时,确认从机地址是否正确、从机是否处于空闲状态。
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标志,准备下一字节。
1. 配置SRPS设置采样速率。
2. 使能SFCR中的INTEN,等待地址匹配中断。
3. 检测ADDRMATCH标志,确认被主控寻址。
4. 根据DIR位判断方向:若DIR=0,读取数据寄存器;若DIR=1,写入数据寄存器。
5. 每字节传输后清除DATAREADY标志,准备下一字节。
4.3 主控与从机寄存器对比
下表总结了主控与从机模式寄存器在功能、配置要点及故障排查中的差异:
| 寄存器 | 模式 | 核心功能 | 常见故障 |
|---|---|---|---|
| MRPS | 主控 | 设置SCL时钟频率 | 速率过高导致从机无法响应 |
| MSPS | 主控 | 发起启动/停止、设置读写方向 | STA未置位导致总线无启动条件 |
| MFCR | 主控 | 监控ACK、TC、BUSERR标志 | BUSERR置位时检查总线电平 |
| SRPS | 从机 | 同步采样时钟与总线速率 | 采样窗口过窄导致地址漏检 |
| SFCR | 从机 | 地址匹配、数据方向、中断控制 | ADDRMATCH未置位时检查地址配置 |
实训作业提示: 在XMC开发板上分别配置主控与从机模式,使用逻辑分析仪捕获SCL/SDA波形。重点观察MRPS设置不同分频系数时SCL频率的变化,以及SFCR中ADDRMATCH标志与地址字节的对应关系。记录并分析配置错误导致的典型故障现象(如无应答、总线卡死、数据错位)。