ZHCUAN6E October 2022 – May 2025 MSPM0L1105 , MSPM0L1106 , MSPM0L1116 , MSPM0L1117 , MSPM0L1227 , MSPM0L1227-Q1 , MSPM0L1228 , MSPM0L1228-Q1 , MSPM0L1303 , MSPM0L1304 , MSPM0L1304-Q1 , MSPM0L1305 , MSPM0L1305-Q1 , MSPM0L1306 , MSPM0L1306-Q1 , MSPM0L1343 , MSPM0L1344 , MSPM0L1345 , MSPM0L1346 , MSPM0L2227 , MSPM0L2227-Q1 , MSPM0L2228 , MSPM0L2228-Q1
表 22-21 列出了 I2C 寄存器的存储器映射寄存器。表 22-21 中未列出的所有寄存器偏移地址都应视为保留的位置,并且不应修改寄存器内容。
| 偏移 | 首字母缩写词 | 寄存器名称 | 部分 |
|---|---|---|---|
| 800h | PWREN | 电源使能 | 节 22.3.1 |
| 804h | RSTCTL | 复位控制 | 节 22.3.2 |
| 808h | CLKCFG | 外设时钟配置寄存器 | 节 22.3.3 |
| 814h | STAT | 状态寄存器 | 节 22.3.4 |
| 1000h | CLKDIV | 时钟分频器 | 节 22.3.5 |
| 1004h | CLKSEL | 超低功耗外设的时钟选择 | 节 22.3.6 |
| 1018h | PDBGCTL | 外设调试控制 | 节 22.3.7 |
| 1020h | IIDX | 中断索引 | 节 22.3.8 |
| 1028h | IMASK | 中断屏蔽 | 节 22.3.9 |
| 1030h | RIS | 原始中断状态 | 节 22.3.10 |
| 1038h | MIS | 已屏蔽中断状态 | 节 22.3.11 |
| 1040h | ISET | 中断设置 | 节 22.3.12 |
| 1048h | ICLR | 中断清除 | 节 22.3.13 |
| 1050h | IIDX | 中断索引 | 节 22.3.14 |
| 1058h | IMASK | 中断屏蔽 | 节 22.3.15 |
| 1060h | RIS | 原始中断状态 | 节 22.3.16 |
| 1068h | MIS | 已屏蔽中断状态 | 节 22.3.17 |
| 1070h | ISET | 中断设置 | 节 22.3.18 |
| 1078h | ICLR | 中断清除 | 节 22.3.19 |
| 1080h | IIDX | 中断索引 | 节 22.3.20 |
| 1088h | IMASK | 中断屏蔽 | 节 22.3.21 |
| 1090h | RIS | 原始中断状态 | 节 22.3.22 |
| 1098h | MIS | 已屏蔽中断状态 | 节 22.3.23 |
| 10A0h | ISET | 中断设置 | 节 22.3.24 |
| 10A8h | ICLR | 中断清除 | 节 22.3.25 |
| 10E0h | EVT_MODE | 事件模式 | 节 22.3.26 |
| 10E4h | INTCTL | 中断控制寄存器 | 节 22.3.27 |
| 10FCh | DESC | 模块说明 | 节 22.3.28 |
| 1200h | GFCTL | I2C 干扰滤波器控制 | 节 22.3.29 |
| 1204h | TIMEOUT_CTL | I2C 超时计数控制寄存器 | 节 22.3.30 |
| 1208h | TIMEOUT_CNT | I2C 超时计数寄存器 | 节 22.3.31 |
| 1210h | CSA | I2C 控制器目标地址寄存器 | 节 22.3.32 |
| 1214h | CCTR | I2C 控制器控制寄存器 | 节 22.3.33 |
| 1218h | CSR | I2C 控制器状态寄存器 | 节 22.3.34 |
| 121Ch | CRXDATA | I2C 控制器 RX 数据 | 节 22.3.35 |
| 1220h | CTXDATA | I2C 控制器 TX 数据 | 节 22.3.36 |
| 1224h | CTPR | I2C 控制器计时器周期 | 节 22.3.37 |
| 1228h | CCR | I2C 控制器配置 | 节 22.3.38 |
| 1234h | CBMON | I2C 控制器总线监控器 | 节 22.3.39 |
| 1238h | CFIFOCTL | I2C 控制器 FIFO 控制 | 节 22.3.40 |
| 123Ch | CFIFOSR | I2C 控制器 FIFO 状态寄存器 | 节 22.3.41 |
| 1240h | _I2CPECCTL | I2C 控制器 PEC 控制寄存器 | 节 22.3.42 |
| 1244h | _PECSR | I2C 控制器 PEC 状态寄存器 | 节 22.3.43 |
| 1250h | TOAR | I2C 目标自身地址 | 节 22.3.44 |
| 1254h | TOAR2 | I2C 目标自身地址 2 | 节 22.3.45 |
| 1258h | TCTR | I2C 目标控制寄存器 | 节 22.3.46 |
| 125Ch | TSR | I2C 目标状态寄存器 | 节 22.3.47 |
| 1260h | TRXDATA | I2C 目标 RX 数据 | 节 22.3.48 |
| 1264h | TTXDATA | I2C 目标 TX 数据 | 节 22.3.49 |
| 1268h | TACKCTL | I2C 目标 ACK 控制 | 节 22.3.50 |
| 126Ch | TFIFOCTL | I2C 目标 FIFO 控制 | 节 22.3.51 |
| 1270h | TFIFOSR | I2C 目标 FIFO 状态寄存器 | 节 22.3.52 |
| 1274h | _PECCTL | I2C 目标 PEC 控制寄存器 | 节 22.3.53 |
| 1278h | _PECSR | I2C 目标 PEC 状态寄存器 | 节 22.3.54 |
复杂的位访问类型经过编码可适应小型表单元。表 22-22 展示了适用于此部分中访问类型的代码。
| 访问类型 | 代码 | 说明 |
|---|---|---|
| 读取类型 | ||
| R | R | 读取 |
| 写入类型 | ||
| W | W | 写入 |
| WK | W K |
写入 受密钥保护的写入 |
| 复位或默认值 | ||
| -n | 复位后的值或默认值 | |
表 22-23 中显示了 PWREN。
返回到汇总表。
用于控制电源状态的寄存器
| 位 | 字段 | 类型 | 复位 | 说明 |
|---|---|---|---|---|
| 31-24 | KEY | W | 0h | 允许电源状态更改的 KEY 26h = 允许对该寄存器进行写入访问的 KEY |
| 23-1 | RESERVED | R | 0h | |
| 0 | ENABLE | R/WK | 0h | 启用电源 必须将 KEY 设置为 26h 才能写入该位。 0h = 禁用电源 1h = 启用电源 |
表 22-25 中显示了 CLKCFG。
返回到汇总表。
外设时钟配置寄存器
| 位 | 字段 | 类型 | 复位 | 说明 |
|---|---|---|---|---|
| 31-24 | KEY | W | 0h | 允许状态更改的 KEY - 0xA9 A9h = 允许更改 GPRCM 字段的密钥值 |
| 23-9 | RESERVED | R | 0h | |
| 8 | BLOCKASYNC | R/W | 0h | 阻止异步时钟请求启动 SYSOSC 或强制总线时钟为 32MHz 0h = 不阻止异步时钟请求 1h = 阻止异步时钟请求 |
| 7-0 | RESERVED | R | 0h |
表 22-26 中显示了 STAT。
返回到汇总表。
外设启用和复位状态
| 位 | 字段 | 类型 | 复位 | 说明 |
|---|---|---|---|---|
| 31-17 | RESERVED | R | 0h | |
| 16 | RESETSTKY | R | 0h | 该位指示自 RSTCTL 寄存器中的 RESETSTKYCLR 清除该位以来,外设是否复位 0h = 自 RSTCTL 寄存器中的 RESETSTKYCLR 上次清除该位以来,外设尚未复位 1h = 自从上次清除该位以来,外设已复位 |
| 15-0 | RESERVED | R | 0h |
表 22-27 中显示了 CLKDIV。
返回到汇总表。
该寄存器用于指定功能时钟的模块专用分频比
| 位 | 字段 | 类型 | 复位 | 说明 |
|---|---|---|---|---|
| 31-3 | RESERVED | R | 0h | |
| 2-0 | RATIO | R/W | 0h | 选择模块时钟的分频比 0h = 不对时钟源进行分频 1h = 对时钟源进行 2 分频 2h = 对时钟源进行 3 分频 3h = 对时钟源进行 4 分频 4h = 对时钟源进行 5 分频 5h = 对时钟源进行 6 分频 6h = 对时钟源进行 7 分频 7h = 对时钟源进行 8 分频 |
表 22-28 中显示了 CLKSEL。
返回到汇总表。
时钟源选择。
| 位 | 字段 | 类型 | 复位 | 说明 |
|---|---|---|---|---|
| 31-4 | RESERVED | R | 0h | |
| 3 | BUSCLK_SEL | R/W | 0h | 如果启用,选择 BUSCLK 作为时钟源 0h = 不选择此时钟作为时钟源 1h = 选择此时钟作为时钟源 |
| 2 | MFCLK_SEL | R/W | 0h | 如果启用,选择 MFCLK 作为时钟源 0h = 不选择此时钟作为时钟源 1h = 选择此时钟作为时钟源 |
| 1-0 | RESERVED | R | 0h |
表 22-29 展示了 PDBGCTL。
返回到汇总表。
软件开发人员可以使用该寄存器来控制外设相对于“内核暂停”输入的行为
| 位 | 字段 | 类型 | 复位 | 说明 |
|---|---|---|---|---|
| 31-2 | RESERVED | R | 0h | |
| 1 | SOFT | R/W | 1h | 软暂停边界控制。此功能仅在 FREE 设置为“STOP”时可用 0h = 外设将立即暂停,即使系统重新启动后产生的状态将导致损坏的情况下也是如此 1h = 外设阻止调试冻结,直至其达到可以恢复而不会损坏的边界 |
| 0 | 免费 | R/W | 1h | 自由运行控制 0h = 当“内核暂停”输入变为有效时,外设功能冻结;当该输入变为无效时,外设功能恢复。 1h = 外设忽略“内核暂停”输入的状态 |
表 22-30 中显示了 IIDX。
返回到汇总表。
该寄存器提供了具有最高优先级的中断索引。
| 位 | 字段 | 类型 | 复位 | 说明 |
|---|---|---|---|---|
| 31-8 | RESERVED | R | 0h | |
| 7-0 | STAT | R | 0h | I2C 模块中断矢量值。该寄存器提供了最高优先级中断索引。读取操作会清除 RIS 和 MISC 中的相应中断标志。15h-1Fh = 保留 00h = 无中断挂起 01h = 已接收控制器数据 02h = 已发送控制器数据 03h = 控制器接收 FIFO 触发电平 04h = 控制器发送 FIFO 触发电平 5h = RX FIFO 满事件/中断挂起 6h = 发送 FIFO/缓冲器空事件/中断挂起 08h = 地址/数据 NACK 09h = 启动事件 0Ah = 停止事件 0Bh = 仲裁失败 Ch = 通道 TX 上 DMA 完成 Dh = 通道 RX 上 DMA 完成 Eh = 控制器 PEC 接收错误事件 Fh = 超时 A 事件 10h = 超时 B 事件 11h = 目标数据事件 12h = 目标数据事件 13h = 目标接收 FIFO 触发电平 14h = 目标发送 FIFO 触发电平 15h = RX FIFO 已满事件/中断挂起 16h = 发送 FIFO/缓冲器空事件/中断挂起 17h = 启动事件 18h = 停止事件 19h = 常规调用事件 1Ah = 通道 TX 上 DMA 完成 1Bh = 通道 RX 上 DMA 完成 1Ch = 目标 PEC 接收错误事件 1Dh = 目标 TX FIFO 下溢 1Eh = 目标 RX FIFO 上溢事件 1Fh = 目标仲裁失败事件 20h = 中断上溢事件 |
表 22-31 中显示了 IMASK。
返回到汇总表。
中断屏蔽。如果设置了某个位,相应的中断会被取消屏蔽。取消屏蔽中断会导致原始中断显示在 IIDX 以及 MIS 中。
| 位 | 字段 | 类型 | 复位 | 说明 |
|---|---|---|---|---|
| 31 | INTR_OVFL | R/W | 0h | 中断上溢中断屏蔽 0h = 清除中断屏蔽 1h = 设置中断屏蔽 |
| 30 | TARBLOST | R/W | 0h | 目标仲裁失败 0h = 清除设置的中断屏蔽 1h = 设置中断屏蔽 |
| 29 | TRX_OVFL | R/W | 0h | 目标 RX FIFO 上溢 0h = 清除中断屏蔽 1h = 设置中断屏蔽 |
| 28 | TTX_UNFL | R/W | 0h | 目标 TX FIFO 下溢 0h = 清除中断屏蔽 1h = 设置中断屏蔽 |
| 27 | TPEC_RX_ERR | R/W | 0h | 目标 RX PEC 错误中断 0h = 清除中断屏蔽 1h = 设置中断屏蔽 |
| 26 | TDMA_DONE_RX | R/W | 0h | 事件通道 RX 上目标 DMA 完成 0h = 清除中断屏蔽 1h = 设置中断屏蔽 |
| 25 | TDMA_DONE_TX | R/W | 0h | 事件通道 TX 上目标 DMA 完成 0h = 清除中断屏蔽 1h = 设置中断屏蔽 |
| 24 | TGENCALL | R/W | 0h | 通用广播中断 0h = 清除中断屏蔽 1h = 设置中断屏蔽 |
| 23 | TSTOP | R/W | 0h | 停止条件中断 0h = 清除中断屏蔽 1h = 设置中断屏蔽 |
| 22 | TSTART | R/W | 0h | 启动条件中断 0h = 清除中断屏蔽 1h = 设置中断屏蔽 |
| 21 | TTXEMPTY | R/W | 0h | 目标发送 FIFO 空中断屏蔽。如果发送 FIFO 中的所有数据都已移出并且发送进入空闲模式,则设置此中断。 0h = 清除中断屏蔽 1h = 设置中断屏蔽 |
| 20 | TRXFIFOFULL | R/W | 0h | RXFIFO 满事件。如果目标 RX FIFO 已满,则设置此中断。 0h = 清除中断屏蔽 1h = 设置中断屏蔽 |
| 19 | TTXFIFOTRG | R/W | 0h | 目标发送 FIFO 触发信号 0h = 清除中断屏蔽 1h = 设置中断屏蔽 |
| 18 | TRXFIFOTRG | R/W | 0h | 目标接收 FIFO 触发信号 0h = 清除中断屏蔽 1h = 设置中断屏蔽 |
| 17 | TTXDONE | R/W | 0h | 目标发送事务完成中断 0h = 清除中断屏蔽 1h = 设置中断屏蔽 |
| 16 | TRXDONE | R/W | 0h | 目标接收数据中断 表示已接收到一个字节的信号 0h = 清除中断屏蔽 1h = 设置中断屏蔽 |
| 15 | TIMEOUTB | R/W | 0h | 超时 B 中断 0h = 清除中断屏蔽 1h = 设置中断屏蔽 |
| 14 | TIMEOUTA | R/W | 0h | 超时 A 中断 0h = 清除中断屏蔽 1h = 设置中断屏蔽 |
| 13 | CPEC_RX_ERR | R/W | 0h | 控制器 RX PEC 错误中断 0h = 清除中断屏蔽 1h = 设置中断屏蔽 |
| 12 | CDMA_DONE_RX | R/W | 0h | 事件通道 RX 上 DMA 完成 0h = 中断已禁用 1h = 设置中断屏蔽 |
| 11 | CDMA_DONE_TX | R/W | 0h | 事件通道 TX 上 DMA 完成 0h = 中断已禁用 1h = 设置中断屏蔽 |
| 10 | CARBLOST | R/W | 0h | 仲裁失败中断 0h = 清除中断屏蔽 1h = 设置中断屏蔽 |
| 9 | CSTOP | R/W | 0h | STOP 检测中断 0h = 清除中断屏蔽 1h = 设置中断屏蔽 |
| 8 | CSTART | R/W | 0h | START 检测中断 0h = 清除中断屏蔽 1h = 设置中断屏蔽 |
| 7 | CNACK | R/W | 0h | 地址/数据 NACK 中断 0h = 清除中断屏蔽 1h = 设置中断屏蔽 |
| 6 | RESERVED | R | 0h | |
| 5 | CTXEMPTY | R/W | 0h | 发送 FIFO 空中断屏蔽。如果发送 FIFO 中的所有数据都已移出并且发送进入空闲模式,则设置此中断。 0h = 清除中断屏蔽 1h = 设置中断屏蔽 |
| 4 | CRXFIFOFULL | R/W | 0h | RXFIFO 满事件。如果 RX FIFO 已满,则设置此中断。 0h = 清除中断屏蔽 1h = 设置中断屏蔽 |
| 3 | CTXFIFOTRG | R/W | 0h | 控制器发送 FIFO 触发信号 当发送 FIFO 包含 <= 定义的字节时触发 0h = 清除中断屏蔽 1h = 设置中断屏蔽 |
| 2 | CRXFIFOTRG | R/W | 0h | 控制器接收 FIFO 触发信号 当 RX FIFO 包含 >= 定义的字节时触发 0h = 清除中断屏蔽 1h = 设置中断屏蔽 |
| 1 | CTXDONE | R/W | 0h | 控制器发送事务完成中断 0h = 清除中断屏蔽 1h = 设置中断屏蔽 |
| 0 | CRXDONE | R/W | 0h | 控制器接收事务完成中断 0h = 清除中断屏蔽 1h = 设置中断屏蔽 |
表 22-32 中显示了 RIS。
返回到汇总表。
原始中断状态。反映所有挂起的中断,而不管屏蔽与否。RIS 寄存器允许用户实施轮询方案。即使相应的 IMASK 位未启用,也可以通过向 ICLR 寄存器位写入 1 来清除该寄存器中设置的标志。
| 位 | 字段 | 类型 | 复位 | 说明 |
|---|---|---|---|---|
| 31 | INTR_OVFL | R | 0h | 中断上溢中断 当 CSTART 或 CSTOP 中断上溢发生两次而未得到处理时设置此位 0h = 未发生中断 1h = 已发生中断 |
| 30 | TARBLOST | R | 0h | 目标仲裁失败 0h = 未发生中断 1h = 已发生中断 |
| 29 | TRX_OVFL | R | 0h | 目标 RX FIFO 上溢 0h = 未发生中断 1h = 已发生中断 |
| 28 | TTX_UNFL | R | 0h | 目标 TX FIFO 下溢 0h = 未发生中断 1h = 已发生中断 |
| 27 | TPEC_RX_ERR | R | 0h | 目标 RX PEC 错误中断 0h = 未发生中断 1h = 已发生中断 |
| 26 | TDMA_DONE_RX | R | 0h | 事件通道 RX 上 DMA 完成 0h = 清除中断 1h = 设置中断 |
| 25 | TDMA_DONE_TX | R | 0h | 事件通道 TX 上 DMA 完成 0h = 清除中断 1h = 设置中断 |
| 24 | TGENCALL | R | 0h | 通用广播中断 0h = 清除中断屏蔽 1h = 已发生中断 |
| 23 | TSTOP | R | 0h | 停止条件中断 0h = 清除中断 1h = 设置中断 |
| 22 | TSTART | R | 0h | 启动条件中断 0h = 清除中断 1h = 设置中断 |
| 21 | TTXEMPTY | R | 0h | 发送 FIFO 空中断屏蔽。如果发送 FIFO 中的所有数据都已移出并且发送进入空闲模式,则设置此中断。 0h = 未发生中断 1h = 已发生中断 |
| 20 | TRXFIFOFULL | R | 0h | RXFIFO 满事件。如果 RX FIFO 已满,则设置此中断。 0h = 清除中断屏蔽 1h = 已发生中断 |
| 19 | TTXFIFOTRG | R | 0h | 目标发送 FIFO 触发信号 0h = 清除中断屏蔽 1h = 已发生中断 |
| 18 | TRXFIFOTRG | R | 0h | 目标接收 FIFO 触发信号 0h = 清除中断屏蔽 1h = 已发生中断 |
| 17 | TTXDONE | R | 0h | 目标发送事务完成中断 0h = 未发生中断 1h = 已发生中断 |
| 16 | TRXDONE | R | 0h | 目标接收数据中断 表示已接收到一个字节的信号 0h = 未发生中断 1h = 已发生中断 |
| 15 | TIMEOUTB | R | 0h | 超时 B 中断 0h = 未发生中断 1h = 已发生中断 |
| 14 | TIMEOUTA | R | 0h | 超时 A 中断 0h = 未发生中断 1h = 已发生中断 |
| 13 | CPEC_RX_ERR | R | 0h | 控制器 RX PEC 错误中断 0h = 未发生中断 1h = 已发生中断 |
| 12 | CDMA_DONE_RX | R | 0h | 事件通道 RX 上 DMA 完成 0h = 中断已禁用 1h = 已发生中断 |
| 11 | CDMA_DONE_TX | R | 0h | 事件通道 TX 上 DMA 完成 0h = 中断已禁用 1h = 已发生中断 |
| 10 | CARBLOST | R | 0h | 仲裁失败中断 0h = 未发生中断 1h = 已发生中断 |
| 9 | CSTOP | R | 0h | STOP 检测中断 0h = 未发生中断 1h = 已发生中断 |
| 8 | CSTART | R | 0h | START 检测中断 0h = 未发生中断 1h = 已发生中断 |
| 7 | CNACK | R | 0h | 地址/数据 NACK 中断 0h = 未发生中断 1h = 已发生中断 |
| 6 | RESERVED | R | 0h | |
| 5 | CTXEMPTY | R | 0h | 发送 FIFO 空中断屏蔽。如果发送 FIFO 中的所有数据都已移出并且发送进入空闲模式,则设置此中断。 0h = 未发生中断 1h = 已发生中断 |
| 4 | CRXFIFOFULL | R | 0h | RXFIFO 满事件。如果 RX FIFO 已满,则设置此中断。 0h = 未发生中断 1h = 已发生中断 |
| 3 | CTXFIFOTRG | R | 0h | 控制器发送 FIFO 触发信号 当发送 FIFO 包含 <= 定义的字节时触发 0h = 清除中断屏蔽 1h = 已发生中断 |
| 2 | CRXFIFOTRG | R | 0h | 控制器接收 FIFO 触发信号 当 RX FIFO 包含 >= 定义的字节时触发 0h = 清除中断屏蔽 1h = 已发生中断 |
| 1 | CTXDONE | R | 0h | 控制器发送事务完成中断 0h = 未发生中断 1h = 已发生中断 |
| 0 | CRXDONE | R | 0h | 控制器接收事务完成中断 0h = 未发生中断 1h = 已发生中断 |
表 22-33 中显示了 MIS。
返回到汇总表。
屏蔽中断状态。这是 IMASK 和 RIS 寄存器的与运算。
| 位 | 字段 | 类型 | 复位 | 说明 |
|---|---|---|---|---|
| 31 | INTR_OVFL | R | 0h | 中断上溢 0h = 未发生中断 1h = 已发生中断 |
| 30 | TARBLOST | R | 0h | 目标仲裁失败 0h = 清除中断屏蔽 1h = 设置中断屏蔽 |
| 29 | TRX_OVFL | R | 0h | 目标 RX FIFO 上溢 0h = 清除中断屏蔽 1h = 设置中断屏蔽 |
| 28 | TTX_UNFL | R | 0h | 目标 TX FIFO 下溢 0h = 清除中断屏蔽 1h = 设置中断屏蔽 |
| 27 | TPEC_RX_ERR | R | 0h | 目标 RX PEC 错误中断 0h = 清除中断屏蔽 1h = 设置中断屏蔽 |
| 26 | TDMA_DONE_RX | R | 0h | 事件通道 RX 上 DMA 完成 0h = 清除 MIS 1h = 设置 MIS |
| 25 | TDMA_DONE_TX | R | 0h | 事件通道 TX 上 DMA 完成 0h = 清除 MIS 1h = 设置 MIS |
| 24 | TGENCALL | R | 0h | 通用广播中断 0h = 未发生中断 1h = 已发生中断 |
| 23 | TSTOP | R | 0h | 目标 STOP 检测中断 0h = 清除 MIS 1h = 设置 MIS |
| 22 | TSTART | R | 0h | 目标 START 检测中断 0h = 清除 MIS 1h = 设置 MIS |
| 21 | TTXEMPTY | R | 0h | 发送 FIFO 空中断屏蔽。如果发送 FIFO 中的所有数据都已移出并且发送进入空闲模式,则设置此中断。 0h = 未发生中断 1h = 已发生中断 |
| 20 | TRXFIFOFULL | R | 0h | RXFIFO 满事件。如果 RX FIFO 已满,则设置此中断。 0h = 清除中断屏蔽 1h = 已发生中断 |
| 19 | TTXFIFOTRG | R | 0h | 目标发送 FIFO 触发信号 0h = 清除中断屏蔽 1h = 已发生中断 |
| 18 | TRXFIFOTRG | R | 0h | 目标接收 FIFO 触发信号 0h = 清除中断屏蔽 1h = 已发生中断 |
| 17 | TTXDONE | R | 0h | 目标发送事务完成中断 0h = 未发生中断 1h = 已发生中断 |
| 16 | TRXDONE | R | 0h | 目标接收数据中断 表示已接收到一个字节的信号 0h = 未发生中断 1h = 已发生中断 |
| 15 | TIMEOUTB | R | 0h | 超时 B 中断 0h = 清除中断屏蔽 1h = 设置中断屏蔽 |
| 14 | TIMEOUTA | R | 0h | 超时 A 中断 0h = 未发生中断 1h = 已发生中断 |
| 13 | CPEC_RX_ERR | R | 0h | 控制器 RX PEC 错误中断 0h = 清除中断屏蔽 1h = 设置中断屏蔽 |
| 12 | CDMA_DONE_RX | R | 0h | 事件通道 RX 上 DMA 完成 0h = 中断已禁用 1h = 已发生中断 |
| 11 | CDMA_DONE_TX | R | 0h | 事件通道 TX 上 DMA 完成 0h = 中断已禁用 1h = 已发生中断 |
| 10 | CARBLOST | R | 0h | 仲裁失败中断 0h = 未发生中断 1h = 已发生中断 |
| 9 | CSTOP | R | 0h | STOP 检测中断 0h = 未发生中断 1h = 已发生中断 |
| 8 | CSTART | R | 0h | START 检测中断 0h = 未发生中断 1h = 已发生中断 |
| 7 | CNACK | R | 0h | 地址/数据 NACK 中断 0h = 未发生中断 1h = 已发生中断 |
| 6 | RESERVED | R | 0h | |
| 5 | CTXEMPTY | R | 0h | 发送 FIFO 空中断屏蔽。如果发送 FIFO 中的所有数据都已移出并且发送进入空闲模式,则设置此中断。 0h = 未发生中断 1h = 已发生中断 |
| 4 | CRXFIFOFULL | R | 0h | RXFIFO 满事件。如果 RX FIFO 已满,则设置此中断。 0h = 未发生中断 1h = 已发生中断 |
| 3 | CTXFIFOTRG | R | 0h | 控制器发送 FIFO 触发信号 当发送 FIFO 包含 <= 定义的字节时触发 0h = 清除中断屏蔽 1h = 已发生中断 |
| 2 | CRXFIFOTRG | R | 0h | 控制器接收 FIFO 触发信号 当 RX FIFO 包含 >= 定义的字节时触发 0h = 清除中断屏蔽 1h = 已发生中断 |
| 1 | CTXDONE | R | 0h | 控制器发送事务完成中断 0h = 未发生中断 1h = 已发生中断 |
| 0 | CRXDONE | R | 0h | 控制器接收数据中断 0h = 未发生中断 1h = 已发生中断 |
表 22-34 中显示了 ISET。
返回到汇总表。
中断设置。允许通过软件设置中断(在诊断和安全检查中很有用)。向 ISET 中的某个位写入 1 将设置事件,因此相关的 RIS 位也会置位。如果通过屏蔽启用了中断,那么也会设置相应的 MIS 位。
| 位 | 字段 | 类型 | 复位 | 说明 |
|---|---|---|---|---|
| 31 | INTR_OVFL | W | 0h | 中断上溢 0h = 无效 1h = 设置中断 |
| 30 | TARBLOST | W | 0h | 目标仲裁失败 0h = 写入 0 无效 1h = 设置中断 |
| 29 | TRX_OVFL | W | 0h | 目标 RX FIFO 上溢 0h = 写入 0 无效 1h = 设置中断 |
| 28 | TTX_UNFL | W | 0h | 目标 TX FIFO 下溢 0h = 写入 0 无效 1h = 设置中断 |
| 27 | TPEC_RX_ERR | W | 0h | 目标 RX PEC 错误中断 0h = 写入 0 无效 1h = 设置中断 |
| 26 | TDMA_DONE_RX | W | 0h | 事件通道 RX 上 DMA 完成 0h = 写入 0 无效 1h = 设置中断 |
| 25 | TDMA_DONE_TX | W | 0h | 事件通道 TX 上 DMA 完成 0h = 写入 0 无效 1h = 设置中断 |
| 24 | TGENCALL | W | 0h | 通用广播中断 0h = 写入 0 无效 1h = 设置中断 |
| 23 | TSTOP | W | 0h | 停止条件中断 0h = 写入 0 无效 1h = 设置中断 |
| 22 | TSTART | W | 0h | 启动条件中断 0h = 写入 0 无效 1h = 设置中断 |
| 21 | TTXEMPTY | W | 0h | 发送 FIFO 空中断屏蔽。如果发送 FIFO 中的所有数据都已移出并且发送进入空闲模式,则设置此中断。 0h = 写入 0 不产生影响 1h = 设置中断 |
| 20 | TRXFIFOFULL | W | 0h | RXFIFO 满事件。如果 RX FIFO 已满,则设置此中断。 0h = 清除中断屏蔽 1h = 设置中断 |
| 19 | TTXFIFOTRG | W | 0h | 目标发送 FIFO 触发信号 0h = 清除中断屏蔽 1h = 设置中断 |
| 18 | TRXFIFOTRG | W | 0h | 目标接收 FIFO 触发信号 0h = 清除中断屏蔽 1h = 设置中断 |
| 17 | TTXDONE | W | 0h | 目标发送事务完成中断 0h = 写入 0 无效 1h = 设置中断 |
| 16 | TRXDONE | W | 0h | 目标接收数据中断 表示已接收到一个字节的信号 0h = 写入 0 无效 1h = 设置中断 |
| 15 | TIMEOUTB | W | 0h | 超时 B 中断 0h = 写入 0 无效 1h = 设置中断 |
| 14 | TIMEOUTA | W | 0h | 超时 A 中断 0h = 写入 0 无效 1h = 设置中断 |
| 13 | CPEC_RX_ERR | W | 0h | 控制器 RX PEC 错误中断 0h = 写入 0 无效 1h = 设置中断 |
| 12 | CDMA_DONE_RX | W | 0h | 事件通道 RX 上 DMA 完成 0h = 中断已禁用 1h = 设置中断 |
| 11 | CDMA_DONE_TX | W | 0h | 事件通道 TX 上 DMA 完成 0h = 中断已禁用 1h = 设置中断 |
| 10 | CARBLOST | W | 0h | 仲裁失败中断 0h = 写入 0 无效 1h = 设置中断 |
| 9 | CSTOP | W | 0h | STOP 检测中断 0h = 写入 0 无效 1h = 设置中断 |
| 8 | CSTART | W | 0h | START 检测中断 0h = 写入 0 无效 1h = 设置中断 |
| 7 | CNACK | W | 0h | 地址/数据 NACK 中断 0h = 写入 0 无效 1h = 设置中断 |
| 6 | RESERVED | R | 0h | |
| 5 | CTXEMPTY | W | 0h | 发送 FIFO 空中断屏蔽。如果发送 FIFO 中的所有数据都已移出并且发送进入空闲模式,则设置此中断。 0h = 写入 0 无效 1h = 设置中断 |
| 4 | CRXFIFOFULL | W | 0h | RXFIFO 满事件。 0h = 写入 0 无效 1h = 设置中断 |
| 3 | CTXFIFOTRG | W | 0h | 控制器发送 FIFO 触发信号 当发送 FIFO 包含 <= 定义的字节时触发 0h = 清除中断屏蔽 1h = 设置中断 |
| 2 | CRXFIFOTRG | W | 0h | 控制器接收 FIFO 触发信号 当 RX FIFO 包含 >= 定义的字节时触发 0h = 清除中断屏蔽 1h = 设置中断 |
| 1 | CTXDONE | W | 0h | 控制器发送事务完成中断 0h = 写入 0 无效 1h = 设置中断 |
| 0 | CRXDONE | W | 0h | 控制器接收数据中断 表示已接收到一个字节的信号 0h = 写入 0 无效 1h = 设置中断 |
表 22-35 中显示了 ICLR。
返回到汇总表。
中断清除。写入 1 以清除相应的中断。
| 位 | 字段 | 类型 | 复位 | 说明 |
|---|---|---|---|---|
| 31 | INTR_OVFL | W | 0h | 中断上溢 0h = 无效 1h = 清除中断 |
| 30 | TARBLOST | W | 0h | 目标仲裁失败 0h = 写入 0 无效 1h = 清除中断 |
| 29 | TRX_OVFL | W | 0h | 目标 RX FIFO 上溢 0h = 写入 0 无效 1h = 清除中断 |
| 28 | TTX_UNFL | W | 0h | 目标 TX FIFO 下溢 0h = 写入 0 无效 1h = 清除中断 |
| 27 | TPEC_RX_ERR | W | 0h | 目标 RX PEC 错误中断 0h = 写入 0 无效 1h = 清除中断 |
| 26 | TDMA_DONE_RX | W | 0h | 事件通道 RX 上 DMA 完成 0h = 写入 0 无效 1h = 清除中断 |
| 25 | TDMA_DONE_TX | W | 0h | 事件通道 TX 上 DMA 完成 0h = 写入 0 无效 1h = 清除中断 |
| 24 | TGENCALL | W | 0h | 通用广播中断 0h = 写入 0 无效 1h = 清除中断 |
| 23 | TSTOP | W | 0h | 目标 STOP 检测中断 0h = 写入 0 无效 1h = 清除中断 |
| 22 | TSTART | W | 0h | 目标 START 检测中断 0h = 写入 0 无效 1h = 清除中断 |
| 21 | TTXEMPTY | W | 0h | 发送 FIFO 空中断屏蔽。如果发送 FIFO 中的所有数据都已移出并且发送进入空闲模式,则设置此中断。 0h = 写入 0 不产生影响 1h = 清除中断 |
| 20 | TRXFIFOFULL | W | 0h | RXFIFO 满事件。如果 RX FIFO 已满,则设置此中断。 0h = 清除中断屏蔽 1h = 清除中断 |
| 19 | TTXFIFOTRG | W | 0h | 目标发送 FIFO 触发信号 0h = 清除中断屏蔽 1h = 清除中断 |
| 18 | TRXFIFOTRG | W | 0h | 目标接收 FIFO 触发信号 0h = 清除中断屏蔽 1h = 清除中断 |
| 17 | TTXDONE | W | 0h | 目标发送事务完成中断 0h = 写入 0 无效 1h = 清除中断 |
| 16 | TRXDONE | W | 0h | 目标接收数据中断 表示已接收到一个字节的信号 0h = 写入 0 无效 1h = 清除中断 |
| 15 | TIMEOUTB | W | 0h | 超时 B 中断 0h = 写入 0 无效 1h = 清除中断 |
| 14 | TIMEOUTA | W | 0h | 超时 A 中断 0h = 写入 0 无效 1h = 清除中断 |
| 13 | CPEC_RX_ERR | W | 0h | 控制器 RX PEC 错误中断 0h = 写入 0 无效 1h = 清除中断 |
| 12 | CDMA_DONE_RX | W | 0h | 事件通道 RX 上 DMA 完成 0h = 中断已禁用 1h = 清除中断 |
| 11 | CDMA_DONE_TX | W | 0h | 事件通道 TX 上 DMA 完成 0h = 中断已禁用 1h = 清除中断 |
| 10 | CARBLOST | W | 0h | 仲裁失败中断 0h = 写入 0 无效 1h = 清除中断 |
| 9 | CSTOP | W | 0h | STOP 检测中断 0h = 写入 0 无效 1h = 清除中断 |
| 8 | CSTART | W | 0h | START 检测中断 0h = 写入 0 无效 1h = 清除中断 |
| 7 | CNACK | W | 0h | 地址/数据 NACK 中断 0h = 写入 0 无效 1h = 清除中断 |
| 6 | RESERVED | R | 0h | |
| 5 | CTXEMPTY | W | 0h | 发送 FIFO 空中断屏蔽。如果发送 FIFO 中的所有数据都已移出并且发送进入空闲模式,则设置此中断。 0h = 写入 0 无效 1h = 清除中断 |
| 4 | CRXFIFOFULL | W | 0h | RXFIFO 满事件。 0h = 写入 0 无效 1h = 清除中断 |
| 3 | CTXFIFOTRG | W | 0h | 控制器发送 FIFO 触发信号 当发送 FIFO 包含 <= 定义的字节时触发 0h = 清除中断屏蔽 1h = 清除中断 |
| 2 | CRXFIFOTRG | W | 0h | 控制器接收 FIFO 触发信号 当 RX FIFO 包含 >= 定义的字节时触发 0h = 清除中断屏蔽 1h = 清除中断 |
| 1 | CTXDONE | W | 0h | 控制器发送事务完成中断 0h = 写入 0 无效 1h = 清除中断 |
| 0 | CRXDONE | W | 0h | 控制器接收数据中断 表示已接收到一个字节的信号 0h = 写入 0 无效 1h = 清除中断 |
表 22-36 中显示了 IIDX。
返回到汇总表。
该寄存器提供了具有最高优先级的中断索引。
| 位 | 字段 | 类型 | 复位 | 说明 |
|---|---|---|---|---|
| 31-8 | RESERVED | R | 0h | |
| 7-0 | STAT | R | 0h | I2C 模块中断矢量值。该寄存器提供了最高优先级中断索引。读取操作会清除 RIS 和 MISC 中的相应中断标志。15h-1Fh = 保留 00h = 无中断挂起 01h = 控制器接收 FIFO 触发电平 02h = 控制器发送 FIFO 触发电平 03h = 目标接收 FIFO 触发电平 04h = 目标发送 FIFO 触发电平 |
表 22-37 中显示了 IMASK。
返回到汇总表。
中断屏蔽。如果设置了某个位,相应的中断会被取消屏蔽。取消屏蔽中断会导致原始中断显示在 IIDX 以及 MIS 中。
| 位 | 字段 | 类型 | 复位 | 说明 |
|---|---|---|---|---|
| 31-4 | RESERVED | R | 0h | |
| 3 | TTXFIFOTRG | R/W | 0h | 目标发送 FIFO 触发信号 0h = 清除中断屏蔽 1h = 设置中断屏蔽 |
| 2 | TRXFIFOTRG | R/W | 0h | 目标接收 FIFO 触发信号 0h = 清除中断屏蔽 1h = 设置中断屏蔽 |
| 1 | CTXFIFOTRG | R/W | 0h | 控制器发送 FIFO 触发信号 当发送 FIFO 包含 <= 定义的字节时触发 0h = 清除中断屏蔽 1h = 设置中断屏蔽 |
| 0 | CRXFIFOTRG | R/W | 0h | 控制器接收 FIFO 触发信号 当 RX FIFO 包含 >= 定义的字节时触发 0h = 清除中断屏蔽 1h = 设置中断屏蔽 |
表 22-38 中显示了 RIS。
返回到汇总表。
原始中断状态。反映所有挂起的中断,而不管屏蔽与否。RIS 寄存器允许用户实施轮询方案。即使相应的 IMASK 位未启用,也可以通过向 ICLR 寄存器位写入 1 来清除该寄存器中设置的标志。
| 位 | 字段 | 类型 | 复位 | 说明 |
|---|---|---|---|---|
| 31-4 | RESERVED | R | 0h | |
| 3 | TTXFIFOTRG | R | 0h | 目标发送 FIFO 触发信号 0h = 清除中断屏蔽 1h = 设置中断屏蔽 |
| 2 | TRXFIFOTRG | R | 0h | 目标接收 FIFO 触发信号 0h = 清除中断屏蔽 1h = 设置中断屏蔽 |
| 1 | CTXFIFOTRG | R | 0h | 控制器发送 FIFO 触发信号 当发送 FIFO 包含 <= 定义的字节时触发 0h = 清除中断屏蔽 1h = 设置中断屏蔽 |
| 0 | CRXFIFOTRG | R | 0h | 控制器接收 FIFO 触发信号 当 RX FIFO 包含 >= 定义的字节时触发 0h = 清除中断屏蔽 1h = 设置中断屏蔽 |
表 22-39 中显示了 MIS。
返回到汇总表。
屏蔽中断状态。这是 IMASK 和 RIS 寄存器的与运算。
| 位 | 字段 | 类型 | 复位 | 说明 |
|---|---|---|---|---|
| 31-4 | RESERVED | R | 0h | |
| 3 | TTXFIFOTRG | R | 0h | 目标发送 FIFO 触发信号 0h = 清除中断屏蔽 1h = 设置中断屏蔽 |
| 2 | TRXFIFOTRG | R | 0h | 目标接收 FIFO 触发信号 0h = 清除中断屏蔽 1h = 设置中断屏蔽 |
| 1 | CTXFIFOTRG | R | 0h | 控制器发送 FIFO 触发信号 当发送 FIFO 包含 <= 定义的字节时触发 0h = 清除中断屏蔽 1h = 设置中断屏蔽 |
| 0 | CRXFIFOTRG | R | 0h | 控制器接收 FIFO 触发信号 当 RX FIFO 包含 >= 定义的字节时触发 0h = 清除中断屏蔽 1h = 设置中断屏蔽 |
表 22-40 中显示了 ISET。
返回到汇总表。
中断设置。允许通过软件设置中断(在诊断和安全检查中很有用)。向 ISET 中的某个位写入 1 将设置事件,因此相关的 RIS 位也会置位。如果通过屏蔽启用了中断,那么也会设置相应的 MIS 位。
| 位 | 字段 | 类型 | 复位 | 说明 |
|---|---|---|---|---|
| 31-4 | RESERVED | R | 0h | |
| 3 | TTXFIFOTRG | W | 0h | 目标发送 FIFO 触发信号 0h = 清除中断屏蔽 1h = 设置中断屏蔽 |
| 2 | TRXFIFOTRG | W | 0h | 目标接收 FIFO 触发信号 0h = 清除中断屏蔽 1h = 设置中断屏蔽 |
| 1 | CTXFIFOTRG | W | 0h | 控制器发送 FIFO 触发信号 当发送 FIFO 包含 <= 定义的字节时触发 0h = 清除中断屏蔽 1h = 设置中断屏蔽 |
| 0 | CRXFIFOTRG | W | 0h | 控制器接收 FIFO 触发信号 当 RX FIFO 包含 >= 定义的字节时触发 0h = 清除中断屏蔽 1h = 设置中断屏蔽 |
表 22-41 中显示了 ICLR。
返回到汇总表。
中断清除。写入 1 以清除相应的中断。
| 位 | 字段 | 类型 | 复位 | 说明 |
|---|---|---|---|---|
| 31-4 | RESERVED | R | 0h | |
| 3 | TTXFIFOTRG | W | 0h | 目标发送 FIFO 触发信号 0h = 清除中断屏蔽 1h = 设置中断屏蔽 |
| 2 | TRXFIFOTRG | W | 0h | 目标接收 FIFO 触发信号 0h = 清除中断屏蔽 1h = 设置中断屏蔽 |
| 1 | CTXFIFOTRG | W | 0h | 控制器发送 FIFO 触发信号 当发送 FIFO 包含 <= 定义的字节时触发 0h = 清除中断屏蔽 1h = 设置中断屏蔽 |
| 0 | CRXFIFOTRG | W | 0h | 控制器接收 FIFO 触发信号 当 RX FIFO 包含 >= 定义的字节时触发 0h = 清除中断屏蔽 1h = 设置中断屏蔽 |
表 22-42 中显示了 IIDX。
返回到汇总表。
该寄存器提供了具有最高优先级的中断索引。
| 位 | 字段 | 类型 | 复位 | 说明 |
|---|---|---|---|---|
| 31-8 | RESERVED | R | 0h | |
| 7-0 | STAT | R | 0h | I2C 模块中断矢量值。该寄存器提供了最高优先级中断索引。读取操作会清除 RIS 和 MISC 中的相应中断标志。15h-1Fh = 保留 00h = 无中断挂起 01h = 控制器接收 FIFO 触发电平 02h = 控制器发送 FIFO 触发电平 03h = 目标接收 FIFO 触发电平 04h = 目标发送 FIFO 触发电平 |
表 22-43 中显示了 IMASK。
返回到汇总表。
中断屏蔽。如果设置了某个位,相应的中断会被取消屏蔽。取消屏蔽中断会导致原始中断显示在 IIDX 以及 MIS 中。
| 位 | 字段 | 类型 | 复位 | 说明 |
|---|---|---|---|---|
| 31-4 | RESERVED | R | 0h | |
| 3 | TTXFIFOTRG | R/W | 0h | 目标发送 FIFO 触发信号 0h = 清除中断屏蔽 1h = 设置中断屏蔽 |
| 2 | TRXFIFOTRG | R/W | 0h | 目标接收 FIFO 触发信号 0h = 清除中断屏蔽 1h = 设置中断屏蔽 |
| 1 | CTXFIFOTRG | R/W | 0h | 控制器发送 FIFO 触发信号 当发送 FIFO 包含 <= 定义的字节时触发 0h = 清除中断屏蔽 1h = 设置中断屏蔽 |
| 0 | CRXFIFOTRG | R/W | 0h | 控制器接收 FIFO 触发信号 当 RX FIFO 包含 >= 定义的字节时触发 0h = 清除中断屏蔽 1h = 设置中断屏蔽 |
表 22-44 中显示了 RIS。
返回到汇总表。
原始中断状态。反映所有挂起的中断,而不管屏蔽与否。RIS 寄存器允许用户实施轮询方案。即使相应的 IMASK 位未启用,也可以通过向 ICLR 寄存器位写入 1 来清除该寄存器中设置的标志。
| 位 | 字段 | 类型 | 复位 | 说明 |
|---|---|---|---|---|
| 31-4 | RESERVED | R | 0h | |
| 3 | TTXFIFOTRG | R | 0h | 目标发送 FIFO 触发信号 0h = 清除中断屏蔽 1h = 设置中断屏蔽 |
| 2 | TRXFIFOTRG | R | 0h | 目标接收 FIFO 触发信号 0h = 清除中断屏蔽 1h = 设置中断屏蔽 |
| 1 | CTXFIFOTRG | R | 0h | 控制器发送 FIFO 触发信号 当发送 FIFO 包含 <= 定义的字节时触发 0h = 清除中断屏蔽 1h = 设置中断屏蔽 |
| 0 | CRXFIFOTRG | R | 0h | 控制器接收 FIFO 触发信号 当 RX FIFO 包含 >= 定义的字节时触发 0h = 清除中断屏蔽 1h = 设置中断屏蔽 |
表 22-45 中显示了 MIS。
返回到汇总表。
屏蔽中断状态。这是 IMASK 和 RIS 寄存器的与运算。
| 位 | 字段 | 类型 | 复位 | 说明 |
|---|---|---|---|---|
| 31-4 | RESERVED | R | 0h | |
| 3 | TTXFIFOTRG | R | 0h | 目标发送 FIFO 触发信号 0h = 清除中断屏蔽 1h = 设置中断屏蔽 |
| 2 | TRXFIFOTRG | R | 0h | 目标接收 FIFO 触发信号 0h = 清除中断屏蔽 1h = 设置中断屏蔽 |
| 1 | CTXFIFOTRG | R | 0h | 控制器发送 FIFO 触发信号 当发送 FIFO 包含 <= 定义的字节时触发 0h = 清除中断屏蔽 1h = 设置中断屏蔽 |
| 0 | CRXFIFOTRG | R | 0h | 控制器接收 FIFO 触发信号 当 RX FIFO 包含 >= 定义的字节时触发 0h = 清除中断屏蔽 1h = 设置中断屏蔽 |
表 22-46 中显示了 ISET。
返回到汇总表。
中断设置。允许通过软件设置中断(在诊断和安全检查中很有用)。向 ISET 中的某个位写入 1 将设置事件,因此相关的 RIS 位也会置位。如果通过屏蔽启用了中断,那么也会设置相应的 MIS 位。
| 位 | 字段 | 类型 | 复位 | 说明 |
|---|---|---|---|---|
| 31-4 | RESERVED | R | 0h | |
| 3 | TTXFIFOTRG | W | 0h | 目标发送 FIFO 触发信号 0h = 清除中断屏蔽 1h = 设置中断屏蔽 |
| 2 | TRXFIFOTRG | W | 0h | 目标接收 FIFO 触发信号 0h = 清除中断屏蔽 1h = 设置中断屏蔽 |
| 1 | CTXFIFOTRG | W | 0h | 控制器发送 FIFO 触发信号 当发送 FIFO 包含 <= 定义的字节时触发 0h = 清除中断屏蔽 1h = 设置中断屏蔽 |
| 0 | CRXFIFOTRG | W | 0h | 控制器接收 FIFO 触发信号 当 RX FIFO 包含 >= 定义的字节时触发 0h = 清除中断屏蔽 1h = 设置中断屏蔽 |
表 22-47 中显示了 ICLR。
返回到汇总表。
中断清除。写入 1 以清除相应的中断。
| 位 | 字段 | 类型 | 复位 | 说明 |
|---|---|---|---|---|
| 31-4 | RESERVED | R | 0h | |
| 3 | TTXFIFOTRG | W | 0h | 目标发送 FIFO 触发信号 0h = 清除中断屏蔽 1h = 设置中断屏蔽 |
| 2 | TRXFIFOTRG | W | 0h | 目标接收 FIFO 触发信号 0h = 清除中断屏蔽 1h = 设置中断屏蔽 |
| 1 | CTXFIFOTRG | W | 0h | 控制器发送 FIFO 触发信号 当发送 FIFO 包含 <= 定义的字节时触发 0h = 清除中断屏蔽 1h = 设置中断屏蔽 |
| 0 | CRXFIFOTRG | W | 0h | 控制器接收 FIFO 触发信号 当 RX FIFO 包含 >= 定义的字节时触发 0h = 清除中断屏蔽 1h = 设置中断屏蔽 |
表 22-48 展示了 EVT_MODE。
返回到汇总表。
事件模式寄存器。它用于选择在软件模式(软件清除 RIS)或硬件模式(硬件清除 RIS)下是否禁用每条线路
| 位 | 字段 | 类型 | 复位 | 说明 |
|---|---|---|---|---|
| 31-6 | RESERVED | R | 0h | |
| 5-4 | EVT2_CFG | R | 2h | none.DMA_TRIG0 对应事件的事件线模式选择 0h = 中断或事件线被禁用。 1h = 中断或事件线路处于软件模式。软件必须清除 RIS。 2h = 中断或事件线路处于硬件模式。硬件(另一个模块)会自动清除关联的 RIS 标志。 |
| 3-2 | INT1_CFG | R | 2h | none.DMA_TRIG1 对应事件的事件线模式选择 0h = 中断或事件线被禁用。 1h = 中断或事件线路处于软件模式。软件必须清除 RIS。 2h = 中断或事件线路处于硬件模式。硬件(另一个模块)会自动清除关联的 RIS 标志。 |
| 1-0 | INT0_CFG | R | 1h | none.CPU_INT 对应事件的事件线模式选择 0h = 中断或事件线被禁用。 1h = 中断或事件线路处于软件模式。软件必须清除 RIS。 2h = 中断或事件线路处于硬件模式。硬件(另一个模块)会自动清除关联的 RIS 标志。 |
表 22-49 中显示了 INTCTL。
返回到汇总表。
中断控制寄存器
| 位 | 字段 | 类型 | 复位 | 说明 |
|---|---|---|---|---|
| 31-1 | RESERVED | R | 0h | |
| 0 | INTEVAL | W | 0h | 向该字段写入 1 会重新评估中断源。 0h = 中断或事件线路被禁用。 1h = 中断或事件线路处于软件模式。软件必须清除 RIS。 |
表 22-50 中显示了 DESC。
返回到汇总表。
该寄存器标识外设及其确切版本。
| 位 | 字段 | 类型 | 复位 | 说明 |
|---|---|---|---|---|
| 31-16 | MODULEID | R | 1511h | 模块标识包含唯一的外设标识号。所有平台模块的分配都保存在中央数据库中,可确保唯一性。 0h = 最小值 FFFFh = 尽可能高的值 |
| 15-12 | FEATUREVER | R | 0h | 模块 *实例* 的功能集 0h = 最小值 Fh = 尽可能高的值 |
| 11-8 | INSTNUM | R | 0h | 器件中的实例编号。对于具有多个实例的模块,这将是 RTL 的参数 0h = 最小值 Fh = 尽可能高的值 |
| 7-4 | MAJREV | R | 1h | IP 的主要版本 0h = 最小值 Fh = 尽可能高的值 |
| 3-0 | MINREV | R | 0h | IP 的次要版本 0h = 最小值 Fh = 尽可能高的值 |
表 22-51 中显示了 GFCTL。
返回到汇总表。
该寄存器控制 SCL 和 SDA 线上的干扰滤波器
| 位 | 字段 | 类型 | 复位 | 说明 |
|---|---|---|---|---|
| 31-12 | RESERVED | R | 0h | |
| 11 | CHAIN | R/W | 1h | 模拟和数字噪声滤波器链接使能。 0h = 为 0 时,禁用链接,只有数字滤波器输出可用于 IP 逻辑以进行过采样 1h = 为 1 时,模拟和数字干扰滤波器将链接起来,组合的输出可用于 IP 逻辑以进行过采样 |
| 10-9 | AGFSEL | R/W | 3h | 模拟干扰抑制脉宽 该字段可控制 SCL 和 SDA 线上用于进行模拟干扰抑制的脉宽选择。 请参阅器件数据表以了解确切值。 (仅限 ULP I2C) 0h = 过滤掉长度短于 5ns 的脉冲。 1h = 过滤掉长度短于 10ns 的脉冲。 2h = 过滤掉长度短于 25ns 的脉冲。 3h = 过滤掉长度短于 50ns 的脉冲。 |
| 8 | AGFEN | R/W | 1h | 模拟干扰抑制使能 0h = 禁用模拟干扰滤波器 1h = 启用模拟干扰滤波器 |
| 7-3 | RESERVED | R | 0h | |
| 2-0 | DGFSEL | R/W | 0h | 干扰抑制脉宽 该字段可控制 SCL 和 SDA 线上用于进行干扰抑制的脉宽选择。以下值是功能时钟方面的干扰抑制值。 (仅适用于内核域) 0h = 旁路 1h = 1 个时钟 2h = 2 个时钟 3h = 3 个时钟 4h = 4 个时钟 5h = 8 个时钟 6h = 16 个时钟 7h = 31 个时钟 |
TIMEOUT_CTL 如 表 22-52 所示。
返回到汇总表。
该寄存器包含超时计数器 A 和 B 的控制
| 位 | 字段 | 类型 | 复位 | 说明 |
|---|---|---|---|---|
| 31 | TCNTBEN | R/W | 0h | 超时计数器 B 使能 0h = 禁用超时计数器 B 1h = 启用超时计数器 B |
| 30-24 | RESERVED | R | 0h | |
| 23-16 | TCNTLB | R/W | 2h | 超时计数 B 加载:计数器 B 用于 SCL 高电平检测。该字段包含用于超时 B 计数的 12 位预加载值的高 8 位。注意:CNTLB 的值必须大于 1h。 每个计数等于 1* 时钟周期。例如,使用 10MHz 功能时钟时,一个超时周期将等于 1*100ns。 0h = 尽可能小的值 FFh = 尽可能高的值 |
| 15 | TCNTAEN | R/W | 0h | 超时计数器 A 使能 0h = 禁用超时计数器 B 1h = 启用超时计数器 B |
| 14-8 | RESERVED | R | 0h | |
| 7-0 | TCNTLA | R/W | 2h | 超时计数器 A 加载值 计数器 A 用于 SCL 低电平检测。该字段包含用于超时 A 计数的 12 位预加载值的高 8 位。注意:CNTLA 的值必须大于 1h。 每个计数等于功能时钟超时周期的 520 倍。例如,使用 8MHz 功能时钟和 100KHz 工作 I2C 时钟时,一个超时周期将等于 (1 / 8MHz) * 520,即 65us。 0h = 最小值 FFh = 尽可能高的值 |
TIMEOUT_CNT 如 表 22-53 所示。
返回到汇总表。
该寄存器包含计数器 A 和 B 的 12 位当前计数器值的高 8 位。计数器的低 4 位非用户可见,始终为 0h。
| 位 | 字段 | 类型 | 复位 | 说明 |
|---|---|---|---|---|
| 31-24 | RESERVED | R | 0h | |
| 23-16 | TCNTB | R | 2h | 超时计数 B 当前计数:该字段包含超时计数器 B 的 12 位当前计数器的高 8 位 0h = 最小值 FFh = 尽可能高的值 |
| 15-8 | RESERVED | R | 0h | |
| 7-0 | TCNTA | R | 2h | 超时计数 A 当前计数:该字段包含超时计数器 A 的 12 位当前计数器的高 8 位 0h = 最小值 FFh = 尽可能高的值 |
表 22-54 中显示了 CSA。
返回到汇总表。
I2C 控制器目标地址寄存器
| 位 | 字段 | 类型 | 复位 | 说明 |
|---|---|---|---|---|
| 31-16 | RESERVED | R | 0h | |
| 15 | CMODE | R/W | 0h | 该位选择要在控制器模式下使用的寻址模式 为 0 时,使用 7 位寻址。 为 1 时,使用 10 位寻址。 0h = 7 位寻址模式 1h = 10 位寻址模式 |
| 14-11 | RESERVED | R | 0h | |
| 10-1 | TADDR | R/W | 0h | I2C 目标地址。该字段指定目标地址的 A9 到 A0 位。 在由 MSA.MODE 位选择的 7 位寻址模式中,前 3 位是无关位 0h = 最小值 3FFh = 尽可能高的值 |
| 0 | DIR | R/W | 0h | 接收/发送 DIR 位指定下一个控制器操作是接收(高电平)还是发送(低电平)。 0h = 发送 1h = 接收 0h = 控制器处于发送模式。 1h = 控制器处于接收模式。 |
表 22-55 中显示了 CCTR。
返回到汇总表。
该控制寄存器用于配置 I2C 控制器操作。START位用来产生开始或重复开始信号。STOP 位决定周期是在数据周期结束时停止,还是继续运行下一个传输周期(可能是重复 START)。为生成单个发送周期,I2C 控制器目标地址(MSA)寄存器中写入所需的地址,R/S 位清零,此寄存器中写入 ACK = X(0 或 1)、STOP = 1、START = 1、RUN = 1,从而执行操作并停止。当操作完成(或由于错误而中止)时,字节事务完成中断将激活,并可从 MRXDATA 寄存器中读取数据。当 I2C 模块在控制器接收器模式下运行时,设置 ACK 位会使 I2C 总线控制器在每个字节后自动发送确认。当 I2C 总线控制器无需接收从目标发送器发送的更多数据时,必须清除该位。
| 位 | 字段 | 类型 | 复位 | 说明 |
|---|---|---|---|---|
| 31-28 | RESERVED | R | 0h | |
| 27-16 | CBLEN | R/W | 0h | I2C 事务长度 该字段包含已编程的事务字节长度。 0h = 最小值 FFFh = 尽可能高的值 |
| 15-6 | RESERVED | R | 0h | |
| 5 | RD_ON_TXEMPTY | R/W | 0h | TX 为空时读取 0h = 无特殊行为 1h = 为 1 时,控制器将发送来自 TX FIFO 的所有字节,然后继续执行编程的突发运行读取。 如果 DIR 在 MSA 中未设置为读取,则会忽略该位。必须在 MCTR 中设置启动条件以实现正确的 I2C 协议。在发送 TX FIFO 中的字节之前,控制器将首先发送启动条件,即 I2C 地址的 R/W 位设置为写入。当 TX FIFO 为空时,I2C 事务将按照 MTCR 和 MSA 中的编程继续进行,而不发送停止条件。 旨在用于执行简单的基于 I2C 命令的读取转换,该转换将在启动后完成,无需获取中断来进行总线回转。 |
| 4 | CACKOEN | R/W | 0h | 控制器 ACK 覆盖使能 0h = 无特殊行为 1h = 为 1 并且控制器正在接收数据并已接收到 MBLEN 中指示的字节数时,状态机将生成一个 rxdone 中断,并在 ACK 的开头等待 FW 指示应发送 ACK 还是 NACK。 选择 ACK 或 NACK 的方法是写入 MCTR 寄存器并相应地设置 ACK。此时还可以写入该寄存器中的其他字段以继续运行事务。如果发送 NACK,状态机将自动发送停止。 |
| 3 | ACK | R/W | 0h | 数据确认使能。 软件需要配置该位来发送 ACK 或 NACK。 0h = 控制器不自动确认事务最后一个接收的数据字节。 1h = 控制器自动确认事务最后一个接收的数据字节。 |
| 2 | STOP | R/W | 0h | 生成停止条件 0h = 控制器不生成停止条件。 1h = 控制器生成停止条件。 |
| 1 | 开始 | R/W | 0h | 生成启动条件 0h = 控制器不生成启动条件。 1h = 控制器生成启动条件或重复启动条件。 |
| 0 | BURSTRUN | R/W | 0h | I2C 控制器使能 和启动事务 0h = 在标准模式下,此编码表示控制器无法发送或接收数据。 1h = 控制器能够发送或接收数据。 |
表 22-56 中显示了 CSR。
返回到汇总表。
状态寄存器指示 I2C 总线控制器的状态。
| 位 | 字段 | 类型 | 复位 | 说明 |
|---|---|---|---|---|
| 31-28 | RESERVED | R | 0h | |
| 27-16 | CBCNT | R | 0h | I2C 控制器事务计数 该字段包含事务的当前倒计时值。 0h = 最小值 FFFh = 尽可能高的值 |
| 15-7 | RESERVED | R | 0h | |
| 6 | BUSBSY | R | 0h | I2C 总线忙 控制器状态机将等待清除该位后再启动事务。在多控制器环境中首次启用控制器时,FW 应在将 ACTIVE 设置为高电平后等待一个 I2C 时钟周期,然后再写入 MTCR 寄存器以启动事务,这样如果 SCL 变为低电平,便会触发 BUSBSY。 0h = I2C 总线空闲。 1h = 在启动时或 SCL 变为低电平时会设置该状态位。在停止时或发生 SCL 高电平总线忙超时并且 SCL 和 SDA 都为高电平时,会清除该位。当 ACTIVE 位为低电平时,会清除该状态。 请注意,控制器状态机将等待清除该位后再启动 I2C 事务。在多控制器环境中首次启用控制器时,FW 应在将 ACTIVE 设置为高电平后等待一个 I2C 时钟周期,然后再写入 MTCR 寄存器以启动事务,这样如果 SCL 变为低电平,便会触发 BUSBSY。 |
| 5 | 空闲 | R | 1h | I2C 空闲 0h = I2C 控制器非空闲。 1h = I2C 控制器空闲。 |
| 4 | ARBLST | R | 0h | 仲裁失败 0h = I2C 控制器赢得仲裁。 1h = I2C 控制器仲裁失败。 |
| 3 | DATACK | R | 0h | 确认数据 0h = 发送的数据已确认。 1h = 发送的数据未确认。 |
| 2 | ADRACK | R | 0h | 确认地址 0h = 发送的地址已确认。 1h = 发送的地址未确认。 |
| 1 | ERR | R | 0h | 错误 该错误可能源于目标地址未得到确认或者发送数据未得到确认。 0h = 在最后一个操作中未检测到错误。 1h = 在最后一个操作中发生了错误。 |
| 0 | BUSY | R | 0h | I2C 控制器 FSM 忙 在正在进行的事务中会设置 BUSY 位,因此会在发送/接收 MBLEN 中设置的数据量时(包括根据当前事务的需要生成启动、重新启动、地址和停止信号时)设置该位。 0h = 控制器空闲。 1h = 控制器忙。 |
CRXDATA 如 表 22-57 所示。
返回到汇总表。
I2C 控制器 RX FIFO 读取数据字节
该字段包含此时在 RX FIFO 栈中读取的当前字节。
如果接收FIFO被禁用,则数据字节和状态位保存在接收保持寄存器(即接收FIFO的最底部单元)中。读取该寄存器可以获取接收的数据。
| 位 | 字段 | 类型 | 复位 | 说明 |
|---|---|---|---|---|
| 31-8 | RESERVED | R | 0h | |
| 7-0 | 值 | R | 0h | 接收的数据。 该字段包含最后接收的数据。 0h = 最小值 FFh = 尽可能高的值 |
CTXDATA 如 表 22-58 所示。
返回到汇总表。
I2C 控制器发送数据寄存器。
该寄存器是发送数据寄存器(FIFO 的接口)。当发送数据时,若FIFO已使能,则对本寄存器写入的数据将推入发送FIFO。如果发送FIFO被禁用,则数据仅保存在发送保持寄存器(即发送FIFO的最底部单元)中。
| 位 | 字段 | 类型 | 复位 | 说明 |
|---|---|---|---|---|
| 31-8 | RESERVED | R | 0h | |
| 7-0 | 值 | R/W | 0h | 发送数据 该字节包含下一个事务期间要传输的数据。 0h = 最小值 FFh = 尽可能高的值 |
表 22-59 中显示了 CTPR。
返回到汇总表。
对该寄存器进行编程,以便设置 SCL 时钟的计时器周期,并将 SCL 时钟指定为标准模式。
| 位 | 字段 | 类型 | 复位 | 说明 |
|---|---|---|---|---|
| 31-7 | RESERVED | R | 0h | |
| 6-0 | TPR | R/W | 1h | 计时器周期 该字段用在 SCL_PERIOD 的计算公式中: SCL_PERIOD = (1 + TPR) × (SCL_LP + SCL_HP) × INT_CLK_PRD 其中: SCL_PRD 是 SCL 线周期(I2C 时钟)。 TPR 是计时器周期寄存器值(范围为 1 到 127)。 SCL_LP 是 SCL 低电平周期(固定为 6)。 SCL_HP 是 SCL 高电平周期(固定为 4)。 CLK_PRD 是以 ns 为单位的功能时钟周期。 0h = 最小值 7Fh = 尽可能高的值 |
表 22-60 中显示了 CCR。
返回到汇总表。
控制器配置寄存器
| 位 | 字段 | 类型 | 复位 | 说明 |
|---|---|---|---|---|
| 31-9 | RESERVED | R | 0h | |
| 8 | LPBK | R/W | 0h | I2C 环回 0h = 正常运行。 1h = 控制器处于测试模式环回配置中。 |
| 7-3 | RESERVED | R | 0h | |
| 2 | CLKSTRETCH | R/W | 0h | 时钟延展。该位控制对 I2C 总线时钟延展的支持。 0h = 禁用时钟延展检测。 如果总线上的任何目标都不支持时钟延展,则可以禁用此功能,以便能够达到总线上的最大速度。 1h = 启用时钟延展检测。 启用时钟延展可确保符合 I2C 标准,但可能会因时钟延展而限制速度。 |
| 1 | MCTL | R/W | 0h | 多控制器模式。在多控制器模式下,一旦检测到 SCL 线为高电平,SCL 高电平时间便会开始计时。如果未启用此功能,一旦 I2C 控制器将 SCL 线设置为高电平,高电平时间便会开始计时。 0h = 禁用多控制器模式。 1h = 启用多控制器模式。 |
| 0 | 运行 | R/W | 0h | 器件激活。设置该位后,在通过写入 0 或进行复位而清除该位之前,不得再次设置该位,否则可能发生传输失败。 0h = 禁止 I2C 控制器运行。 1h = 允许 I2C 控制器运行。 |
表 22-61 中显示了 CBMON。
返回到汇总表。
该寄存器用来确定 SCL 和 SDA 的信号状态。
| 位 | 字段 | 类型 | 复位 | 说明 |
|---|---|---|---|---|
| 31-2 | RESERVED | R | 0h | |
| 1 | SDA | R | 1h | I2C SDA 状态 0h = I2CSDA 信号为低电平。 1h = I2CSDA 信号为高电平。注意:在复位期间和复位之后,SDA 引脚处于 GPIO 输入模式,内部拉电阻未启用。为了让 I2C 正确运行,用户应在开始任何 I2C 操作之前设置好外部上拉电阻。 |
| 0 | SCL | R | 1h | I2C SCL 状态 0h = I2CSCL 信号为低电平。 1h = I2CSCL 信号为高电平。注意:在复位期间和复位之后,SCL 引脚处于 GPIO 输入模式,内部拉电阻未启用。为了让 I2C 正确运行,用户应在开始任何 I2C 操作之前设置好外部上拉电阻。 |
CFIFOCTL 如 表 22-62 所示。
返回到汇总表。
I2C 控制器 FIFO 控制
| 位 | 字段 | 类型 | 复位 | 说明 |
|---|---|---|---|---|
| 31-16 | RESERVED | R | 0h | |
| 15 | RXFLUSH | R/W | 0h | RX FIFO 清空 设置该位将清空 RX FIFO。 在清除该位以停止清空之前,应校验 RXFIFOCNT 为 0 以指示清空已完成。 0h = 不清空 FIFO 1h = 清空 FIFO |
| 14-11 | RESERVED | R | 0h | |
| 10-8 | RXTRIG | R/W | 0h | RX FIFO 触发信号 指示 RX FIFO 中哪个填充级别将生成触发信号。 注意:将 RXTRIG 编程为 0x0 无效,因为没有数据从 RX FIFO 中 传出。 0h = 当 RX FIFO 包含 >= 1 字节时触发 1h = 当 RX FIFO 包含 >= 2 字节时触发 2h = 当 RX FIFO 包含 >= 3字节时触发 3h = 当 RX FIFO 包含 >= 4 字节时触发 4h = 当 RX FIFO 包含 >= 5 字节时触发 5h = 当 RX FIFO 包含 >= 6 字节时触发 6h = 当 RX FIFO 包含 >= 7 字节时触发 7h = 当 RX FIFO 包含 >= 8 字节时触发 |
| 7 | TXFLUSH | R/W | 0h | TX FIFO 清空 设置该位将清空 TX FIFO。 在清除该位以停止清空之前,应校验 TXFIFOCNT 为 8 以指示清空已完成。 0h = 不清空 FIFO 1h = 清空 FIFO |
| 6-3 | RESERVED | R | 0h | |
| 2-0 | TXTRIG | R/W | 0h | TX FIFO 触发信号 指示 TX FIFO 中哪个填充级别将生成触发信号。 0h = 当 TX FIFO 为空时触发。 1h = 当 TX FIFO 包含 ≤ 1 字节时触发 2h = 当 TX FIFO 包含 ≤ 2 字节时触发 3h = 当 TX FIFO 包含 ≤ 3 字节时触发 4h = 当 TX FIFO 包含 ≤ 4 字节时触发 5h = 当 TX FIFO 包含 ≤ 5 字节时触发 6h = 当 TX FIFO 包含 ≤ 6 字节时触发 7h = 当 TX FIFO 包含 ≤ 7 字节时触发 |
CFIFOSR 如 表 22-63 所示。
返回到汇总表。
I2C 控制器 FIFO 状态寄存器
注意:仅当 BUSY 为 0 时才应读取该寄存器
| 位 | 字段 | 类型 | 复位 | 说明 |
|---|---|---|---|---|
| 31-16 | RESERVED | R | 0h | |
| 15 | TXFLUSH | R | 0h | TX FIFO 清空 设置该位时,TX FIFO 的清空操作将激活。清除控制寄存器中的 TXFLUSH 位将停止。 0h = FIFO 清空未激活 1h = FIFO 清空激活 |
| 14-12 | RESERVED | R | 0h | |
| 11-8 | TXFIFOCNT | R | 8h | 可放入 TX FIFO 的字节数 0h = 最小值 8h = 尽可能高的值 |
| 7 | RXFLUSH | R | 0h | RX FIFO 清空 设置该位时,RX FIFO 的清空操作将激活。清除控制寄存器中的 RXFLUSH 位将停止。 0h = FIFO 清空未激活 1h = FIFO 清空激活 |
| 6-4 | RESERVED | R | 0h | |
| 3-0 | RXFIFOCNT | R | 0h | 可从 RX FIFO 读取的字节数 0h = 最小值 8h = 尽可能高的值 |
_I2CPECCTL 如 表 22-64 所示。
返回到汇总表。
I2C 控制器 PEC 控制寄存器
| 位 | 字段 | 类型 | 复位 | 说明 |
|---|---|---|---|---|
| 31-13 | RESERVED | R | 0h | |
| 12 | PECEN | R/W | 0h | PEC 使能 该位启用 SMB 数据包错误检查 (PEC)。启用后,对于除 Start、Stop、Ack 和 Nack 外的所有位都会计算 PEC。当状态机处于空闲状态时(该状态出现在停止之后或发生超时时),PEC LSFR 和字节计数器设置为 0。在发送或接收 PEC 字节后,计数器也设置为 0。请注意,NACK 会在导致 PEC 错误的 PEC 字节之后自动发送。 PEC 多项式为 x^8 + x^2 + x^1 + 1。 0h = 在控制器模式下禁用 PEC 1h = 在控制器模式下启用 PEC |
| 11-9 | RESERVED | R | 0h | |
| 8-0 | PECCNT | R/W | 0h | PEC 计数 该字段为非零值时,将进行 I2C 字节数量的计数(请注意,虽然会在 I2C 地址计算 PEC,但不会在字节内进行计数)。当字节计数 = PECCNT 且状态机正在发送时,LSFR 的内容将加载到移位寄存器中,而不是加载从 TX FIFO 接收到的字节。当状态机正在接收时,在接收到该字节的最后一位后,会检查 LSFR,如果它不为零,则会生成 PEC RX 错误中断。必须填充 I2C 数据包以包括用于发送和接收的 PEC 字节。在发送模式下,FIFO 必须加载一个虚拟 PEC 字节。在接收模式下,PEC 字节将传递到 Rx FIFO。 在正常的控制器用例中,FW 会设置 PECEN=1 和 PECCNT=SMB 数据包长度(不包括目标地址字节,但包括 PEC 字节)。然后,FW 会配置 DMA 以允许数据包独立完成,并写入 MCTR 以启动事务。 请注意,当字节计数 = PEC CNT 时,字节计数将复位为 0,并且在单个 I2C 事务中可以自动进行多次 PEC 计算。 请注意,对 Controller_I2CPECCTL 寄存器的任何写入操作都将清除控制器状态机中的当前 PEC 字节计数。 0h = 最小值 1FFh = 最大值 |
_PECSR 如 表 22-65 所示。
返回到汇总表。
控制器 PEC 状态寄存器
| 位 | 字段 | 类型 | 复位 | 说明 |
|---|---|---|---|---|
| 31-18 | RESERVED | R | 0h | |
| 17 | PECSTS_ERROR | R | 0h | 该状态位指示在最后一次停止前发生的事务中是否发生 PEC 检查错误。锁定在停止位置。 0h = 指示在最后一次停止前发生的事务中没有出现 PEC 检查错误 1h = 指示在最后一次停止前发生的事务中发生了 PEC 检查错误 |
| 16 | PECSTS_CHECK | R | 0h | 该状态位指示在最后一次停止前发生的事务中是否检查了 PEC。锁定在停止位置。 0h = 指示在最后一次停止前发生的事务中没有检查 PEC 1h = 指示在最后一次停止前发生的事务中检查了 PEC |
| 15-9 | RESERVED | R | 0h | |
| 8-0 | PECBYTECNT | R | 0h | PEC 字节计数 这是控制器状态机的当前 PEC 字节计数。 0h = 最小值 1FFh = 最大值 |
表 22-66 中显示了 TOAR。
返回到汇总表。
该寄存器包含七个用于标识 I2C 总线上 I2C 器件的地址位。
| 位 | 字段 | 类型 | 复位 | 说明 |
|---|---|---|---|---|
| 31-16 | RESERVED | R | 0h | |
| 15 | TMODE | R/W | 0h | 该位选择要在目标模式中使用的寻址模式。 为 0 时,使用 7 位寻址。 为 1 时,使用 10 位寻址。 0h = 启用 7 位寻址 1h = 启用 10 位寻址 |
| 14 | OAREN | R/W | 1h | I2C 目标自身地址使能 0h = 禁用 OAR 地址 1h = 启用 OAR 地址 |
| 13-10 | RESERVED | R | 0h | |
| 9-0 | OAR | R/W | 0h | I2C 目标自身地址:该字段指定目标地址的 A9 到 A0 位。 在由 I2CSOAR.MODE 位选择的 7 位寻址模式中,前 3 位是无关位 0h = 最小值 3FFh = 尽可能高的值 |
表 22-67 展示了 TOAR2。
返回到汇总表。
该寄存器包含七个用于标识 I2C 总线上 I2C 器件备用地址的地址位。
| 位 | 字段 | 类型 | 复位 | 说明 |
|---|---|---|---|---|
| 31-23 | RESERVED | R | 0h | |
| 22-16 | OAR2_MASK | R/W | 0h | I2C 目标自身地址 2 屏蔽:该字段指定目标地址的 A6 到 A0 位。 SOAR2.OAR2_MASK 字段内值为“1”的位将使相应的传入地址位默认匹配,不用考虑 SOAR2.OAR2 中的值,即相应的 SOAR2.OAR2 位是无关位。 0h = 最小值 7Fh = 最大值 |
| 15-8 | RESERVED | R | 0h | |
| 7 | OAR2EN | R/W | 0h | I2C 目标自身地址 2 使能 0h = 禁用备用地址。 1h = 允许在 OAR2 字段中使用备用地址。 |
| 6-0 | OAR2 | R/W | 0h | I2C 目标自身地址 2 该字段指定备用的 OAR2 地址。 0h = 最小值 7Fh = 尽可能高的值 |
表 22-68 中显示了 TCTR。
返回到汇总表。
I2C 目标控制寄存器
| 位 | 字段 | 类型 | 复位 | 说明 |
|---|---|---|---|---|
| 31-11 | RESERVED | R | 0h | |
| 10 | TWUEN | R/W | 1h | 目标唤醒使能 0h = 为 0 时,不允许目标在 START 检测时进行时钟延展 1h = 为 1 时,允许目标在 START 检测时进行时钟延展并等待更快的时钟可供使用。 这样可以在低功耗模式用例中为 I2C 提供纯净的唤醒支持 |
| 9 | EN_DEFDEVADR | R/W | 0h | 启用默认器件地址 0h = 当该位为 0 时,不匹配默认器件地址。注意:如果在 SOAR/SOAR2 内部进行了相应编程,则仍然可能匹配。 1h = 当该位为 1 时,目标地址匹配逻辑会始终匹配默认器件地址 7’h110_0001。 |
| 8 | EN_ALRESPADR | R/W | 0h | 启用警报响应地址 0h = 当该位为 0 时,不匹配警报响应地址。注意:如果在 SOAR/SOAR2 内部进行了相应编程,则仍然可能匹配 1h = 当该位为 1 时,目标地址匹配逻辑会始终匹配警报响应地址 7’h000_1100。 |
| 7 | EN_DEFHOSTADR | R/W | 0h | 启用默认主机地址 0h = 当该位为 0 时,不匹配默认主机地址 注意:如果在 SOAR/SOAR2 内部进行了相应编程,则仍然可能匹配 1h = 当该位为 1 时,目标地址匹配逻辑会始终匹配默认主机地址 7’h000_1000。 |
| 6 | RXFULL_ON_RREQ | R/W | 0h | 在 SSR 中所示的 RREQ 条件下产生的 RX 已满中断 0h = 为 0 时,仅当目标 RX FIFO 已满时才会设置 RIS:TRXFULL。 这种情况下允许使用 TRXFULL 中断来指示 I2C 总线正在进行时钟延展,并且 FW 必须读取 RX FIFO 或对当前的 Rx 字节进行 ACK/NACK。 1h = 为 1 时,在目标状态机处于 RX_WAIT 或 RX_ACK_WAIT 状态的情况下将设置 RIS:TRXFULL;由于 RX FIFO 已满或 ACKOEN 已设置且状态机正在等待 FW 对当前字节进行 ACK/NACK,而导致 I2C 事务进行时钟延展时,便会出现这种情况。 |
| 5 | TXWAIT_STALE_TXFIFO | R/W | 0h | TX FIFO 中存在过时数据时的 TX 传输等待。 这可防止在下一个 I2C 数据包上自动发送 TX FIFO 中剩余的过时字节。注意:这应该与 TXEMPTY_ON_TREQ 设置一起使用,防止目标状态机在 FIFO 数据过时时等待 TX FIFO 数据而不发出中断通知。 0h = 为 0 时,发送到目标状态机的 TX FIFO 空信号指示 TX FIFO 为空。 1h = 为 1 时,发送到目标状态机的 TX FIFO 空信号指示 TX FIFO 为空或 TX FIFO 数据过时。当目标状态机离开 SSR 寄存器中定义的 TXMODE 时,如果 TX FIFO 中有数据,则 TX FIFO 数据将被确定为过时。如果 TX FIFO 中有剩余字节时发生停止或超时,可能会出现这种情况。 |
| 4 | TXTRIG_TXMODE | R/W | 0h | 目标 FSM 处于 TX 模式时的 TX 触发信号 0h = 无特殊行为 1h = 为 1 时,在目标 TX FIFO 达到触发电平并且目标状态机处于 SSR 寄存器中定义的 TXMODE 的情况下将设置 RIS:TXFIFOTRG。 清除后,在目标 TX FIFO 处于或者高于触发电平的情况下将设置 RIS:TXFIFOTRG。 此设置可用于延缓 TX DMA 直至事务开始。 这样可以在 I2C 空闲时配置 DMA,但让它等到事务开始加载目标 TX FIFO,这样它就可以从可能随时间变化的存储器缓冲区进行加载。 |
| 3 | TXEMPTY_ON_TREQ | R/W | 0h | TREQ 时的 Tx 空中断 0h = 为 0 时,仅当目标 TX FIFO 为空的情况下才会设置 RIS:TTXEMPTY。 这样可以使用 TTXEMPTY 中断来指示 I2C 总线正在进行时钟延展并且需要目标 TX 数据。 1h = 为 1 时,在目标状态机处于 TX_WAIT 状态的情况下将设置 RIS:TTXEMPTY;当 TX FIFO 为空且 I2C 事务处于时钟延展状态而等待 FIFO 接收数据时,便会出现这种情况。 |
| 2 | TCLKSTRETCH | R/W | 1h | 目标时钟延展使能 0h = 禁用目标时钟延展 1h = 启用目标时钟延展 |
| 1 | GENCALL | R/W | 0h | 通用广播响应使能 仅当 UCSWRST = 1 时修改。 0b = 不响应通用广播 1b = 响应通用广播 0h = 不响应通用广播 1h = 响应通用广播 |
| 0 | 运行 | R/W | 0h | 器件激活。设置该位可启用目标功能。 0h = 禁止 I2C 目标运行。 1h = 允许 I2C 目标运行。 |
表 22-69 中显示了 TSR。
返回到汇总表。
写入时,该寄存器是控制寄存器;读取时,该寄存器是状态寄存器。
| 位 | 字段 | 类型 | 复位 | 说明 |
|---|---|---|---|---|
| 31-19 | RESERVED | R | 0h | |
| 18-9 | ADDRMATCH | R | 0h | 指示发生目标地址匹配的地址 0h = 最小值 3FFh = 最大值 |
| 8 | STALE_TXFIFO | R | 0h | TX FIFO 过时 0h = TX FIFO 未过时 1h = TX FIFO 已过时 在前一个 I2C 事务期间 TX FIFO 未清空时,便会发生这种情况。 |
| 7 | TXMODE | R | 0h | 目标 FSM 处于 TX 模式 0h = 总线方向设置为读取时,目标状态机未处于 TX_DATA、TX_WAIT、TX_ACK 或 ADDR_ACK 状态。 1h = 总线方向设置为读取时,目标状态机处于 TX_DATA、TX_WAIT、TX_ACK 或 ADDR_ACK 状态。 |
| 6 | BUSBSY | R | 0h | I2C 总线忙 0h = I2C 总线不忙 1h = I2C 总线忙 在超时时清除。 |
| 5 | QCMDRW | R | 0h | 快速命令读取/写入 仅当设置了 QCMDST 位时,该位才有意义。 值说明: 0:快速指令是写入 1:快速命令是读取 0h = 快速命令是写入 1h = 快速命令是读取 |
| 4 | QCMDST | R | 0h | 快速命令状态 值说明: 0:上一个通信传输是正常通信传输,或者通信传输没有发生。 1:最后一个事务是快速命令事务 0h = 最后一个事务是正常事务或没有发生事务。 1h = 最后一个事务是快速指令事务。 |
| 3 | OAR2SEL | R | 0h | OAR2 地址匹配 每次比较地址之后会重新评估该位。 0h = OAR2 地址不匹配,或匹配处于旧模式。 1h = OAR2 地址匹配并得到目标确认。 |
| 2 | RXMODE | R | 0h | 目标 FSM 处于 RX 模式 0h = 总线方向设置为写入时,目标状态机未处于 RX_DATA、RX_ACK、RX_WAIT、RX_ACK_WAIT 或 ADDR_ACK 状态。 1h = 总线方向设置为写入时,目标状态机处于 RX_DATA、RX_ACK、RX_WAIT、RX_ACK_WAIT 或 ADDR_ACK 状态。 |
| 1 | TREQ | R | 0h | 发送请求 0h = 无未处理的发送请求。 1h = I2C 控制器已被寻址为目标发送器,并且正在使用时钟延展技术来延迟控制器,直到数据被写入 TTXDATA FIFO(目标 TX FIFO 为空)。 |
| 0 | RREQ | R | 0h | 接收请求 0h = 无未处理的接收数据。 1h = I2C 控制器具有来自 I2C 控制器的未处理的接收数据,并且正在使用时钟延展技术来延迟控制器,直到从 TRXDATA FIFO 读取数据(目标 RX FIFO 已满)。 |
TRXDATA 如 表 22-70 所示。
返回到汇总表。
I2C 目标 RX FIFO 读取数据字节
该字段包含此时在 RX FIFO 栈中读取的当前字节。
如果接收FIFO被禁用,则数据字节和状态位保存在接收保持寄存器(即接收FIFO的最底部单元)中。读取该寄存器可以获取接收的数据。
| 位 | 字段 | 类型 | 复位 | 说明 |
|---|---|---|---|---|
| 31-8 | RESERVED | R | 0h | |
| 7-0 | 值 | R | 0h | 接收的数据。 该字段包含最后接收的数据。 0h = 最小值 FFh = 尽可能高的值 |
TTXDATA 如 表 22-71 所示。
返回到汇总表。
I2C 目标发送数据寄存器。
该寄存器是发送数据寄存器(FIFO 的接口)。当发送数据时,若FIFO已使能,则对本寄存器写入的数据将推入发送FIFO。如果发送FIFO被禁用,则数据仅保存在发送保持寄存器(即发送FIFO的最底部单元)中。
| 位 | 字段 | 类型 | 复位 | 说明 |
|---|---|---|---|---|
| 31-8 | RESERVED | R | 0h | |
| 7-0 | 值 | R/W | 0h | 发送数据 该字节包含下一个事务期间要传输的数据。 0h = 最小值 FFh = 尽可能高的值 |
TACKCTL 如 表 22-72 所示。
返回到汇总表。
该寄存器使 I2C 目标能够对无效数据或命令进行否定确认 (NACK),或对有效数据和命令进行确认 (ACK)。最后一个数据位之后会将 I2C 时钟拉至低电平,直到写入该寄存器。
| 位 | 字段 | 类型 | 复位 | 说明 |
|---|---|---|---|---|
| 31-5 | RESERVED | R | 0h | |
| 4 | ACKOEN_ON_PECDONE | R/W | 0h | 设置该位后将在接收到的 PEC 字节的 ACK/NACK 之后自动启用目标 ACKOEN 字段。 0h = 无特殊行为 1h = 设置该位后将在接收到的 PEC 字节的 ACK/NACK 之后自动启用目标 ACKOEN 字段。 |
| 3 | ACKOEN_ON_PECNEXT | R/W | 0h | 设置该位后将在 PEC 字节之前接收到的字节的 ACK/NACK 之后自动启用目标 ACKOEN 字段。 请注意,设置 ACKOEN 后,状态机不会自动对 PEC 字节进行 ACK/NACK,FW 必须通过写入 Target_SACKCTL 来执行该功能。 0h = 无特殊行为 1h = 设置该位后将在 PEC 字节之前接收到的字节的 ACK/NACK 之后自动启用目标 ACKOEN 字段。 请注意,设置 ACKOEN 后,状态机不会自动对 PEC 字节进行 ACK/NACK,FW 必须通过写入 Target_SACKCTL 来执行该功能。 |
| 2 | ACKOEN_ON_START | R/W | 0h | 设置该位后将在一个启动条件之后自动启用目标 ACKOEN 字段。 0h = 无特殊行为 1h = 设置该位后将在一个启动条件之后自动启用目标 ACKOEN 字段。 |
| 1 | ACKOVAL | R/W | 0h | I2C 目标 ACK 覆盖值 注意:对于通用广播,如果设置为 NACK,则会忽略该位,目标继续接收数据。 0h = 发送 ACK 以指示有效数据或命令。 1h = 发送 NACK 以指示无效数据或命令。 |
| 0 | ACKOEN | R/W | 0h | I2C 目标 ACK 覆盖使能 0h = 不提供响应。 1h = 根据写入 ACKOVAL 位的值发送 ACK 或 NACK。 |
TFIFOCTL 如 表 22-73 所示。
返回到汇总表。
I2C 目标 FIFO 控制
| 位 | 字段 | 类型 | 复位 | 说明 |
|---|---|---|---|---|
| 31-16 | RESERVED | R | 0h | |
| 15 | RXFLUSH | R/W | 0h | RX FIFO 清空 设置该位将清空 RX FIFO。 在清除该位以停止清空之前,应校验 RXFIFOCNT 为 0 以指示清空已完成。 0h = 不清空 FIFO 1h = 清空 FIFO |
| 14-11 | RESERVED | R | 0h | |
| 10-8 | RXTRIG | R/W | 0h | RX FIFO 触发信号 指示 RX FIFO 中哪个填充级别将生成触发信号。 注意:将 RXTRIG 编程为 0x0 无效,因为没有数据从 RX FIFO 中 传出。 4h = 当 RX FIFO 包含 >= 5 字节时触发 5h = 当 RX FIFO 包含 >= 6 字节时触发 6h = 当 RX FIFO 包含 >= 7 字节时触发 7h = 当 RX FIFO 包含 >= 8 字节时触发 |
| 7 | TXFLUSH | R/W | 0h | TX FIFO 清空 设置该位将清空 TX FIFO。 在清除该位以停止清空之前,应校验 TXFIFOCNT 为 8 以指示清空已完成。 0h = 不清空 FIFO 1h = 清空 FIFO |
| 6-3 | RESERVED | R | 0h | |
| 2-0 | TXTRIG | R/W | 0h | TX FIFO 触发信号 指示 TX FIFO 中哪个填充级别将生成触发信号。 4h = 当 TX FIFO 包含 ≤ 4 字节时触发 5h = 当 TX FIFO 包含 ≤ 5 字节时触发 6h = 当 TX FIFO 包含 ≤ 6 字节时触发 7h = 当 TX FIFO 包含 ≤ 7 字节时触发 |
TFIFOSR 如 表 22-74 所示。
返回到汇总表。
I2C 目标 FIFO 状态寄存器
注意:仅当 BUSY 为 0 时才应读取该寄存器
| 位 | 字段 | 类型 | 复位 | 说明 |
|---|---|---|---|---|
| 31-16 | RESERVED | R | 0h | |
| 15 | TXFLUSH | R | 0h | TX FIFO 清空 设置该位时,TX FIFO 的清空操作将激活。清除控制寄存器中的 TXFLUSH 位将停止。 0h = FIFO 清空未激活 1h = FIFO 清空激活 |
| 14-12 | RESERVED | R | 0h | |
| 11-8 | TXFIFOCNT | R | 8h | 可放入 TX FIFO 的字节数 0h = 最小值 8h = 尽可能高的值 |
| 7 | RXFLUSH | R | 0h | RX FIFO 清空 设置该位时,RX FIFO 的清空操作将激活。清除控制寄存器中的 RXFLUSH 位将停止。 0h = FIFO 清空未激活 1h = FIFO 清空激活 |
| 6-4 | RESERVED | R | 0h | |
| 3-0 | RXFIFOCNT | R | 0h | 可从 RX FIFO 读取的字节数 0h = 最小值 8h = 尽可能高的值 |
_PECCTL 如 表 22-75 所示。
返回到汇总表。
I2C 目标 PEC 控制寄存器
| 位 | 字段 | 类型 | 复位 | 说明 |
|---|---|---|---|---|
| 31-13 | RESERVED | R | 0h | |
| 12 | PECEN | R/W | 0h | PEC 使能 该位启用 SMB 数据包错误检查 (PEC)。启用后,对于除 Start、Stop、Ack 和 Nack 外的所有位都会计算 PEC。当状态机处于空闲状态时(该状态出现在停止之后或发生超时时),PEC LSFR 和字节计数器设置为 0。在发送或接收 PEC 字节后,计数器也设置为 0。请注意,NACK 会在导致 PEC 错误的 PEC 字节之后自动发送。 PEC 多项式为 x^8 + x^2 + x^1 + 1。 0h = 禁用 PEC 发送和检查 1h = 启用 PEC 发送和检查 |
| 11-9 | RESERVED | R | 0h | |
| 8-0 | PECCNT | R/W | 0h | 该字段为非零值时,将对 I2C 数据字节数进行计数。当字节计数 = PECCNT 且状态机正在发送时,LSFR 的内容将加载到移位寄存器中,而不是加载从 TX FIFO 接收到的字节。当状态机正在接收时,在接收到该字节的最后一位后,会检查 LSFR,如果它不为零,则会生成 PEC RX 错误中断。必须填充 I2C 数据包以包括用于发送和接收的 PEC 字节。在发送模式下,FIFO 必须加载一个虚拟 PEC 字节。在接收模式下,PEC 字节将传递到 Rx FIFO。 在正常的目标用例中,FW 会设置 PECEN=1 和 PECCNT=0 并使用 ACKOEN 直到知道剩余的 SMB 数据包长度。然后,FW 会将 PECCNT 设置为剩余的数据包长度(包括 PEC 字节)。然后,FW 会配置 DMA,以便允许数据包独立完成并退出 NoAck 模式。 请注意,当字节计数 = PEC CNT 时,字节计数将复位为 0,并且在单个 I2C 事务中可以自动进行多次 PEC 计算 0h = 最小值 1FFh = 最大值 |
_PECSR 如 表 22-76 所示。
返回到汇总表。
目标 PEC 状态寄存器
| 位 | 字段 | 类型 | 复位 | 说明 |
|---|---|---|---|---|
| 31-18 | RESERVED | R | 0h | |
| 17 | PECSTS_ERROR | R | 0h | 该状态位指示在最后一次停止前发生的事务中是否发生 PEC 检查错误。锁定在停止位置。 0h = 指示在最后一次停止前发生的事务中没有出现 PEC 检查错误 1h = 指示在最后一次停止前发生的事务中发生了 PEC 检查错误 |
| 16 | PECSTS_CHECK | R | 0h | 该状态位指示在最后一次停止前发生的事务中是否检查了 PEC。锁定在停止位置。 0h = 指示在最后一次停止前发生的事务中没有检查 PEC 1h = 指示在最后一次停止前发生的事务中检查了 PEC |
| 15-9 | RESERVED | R | 0h | |
| 8-0 | PECBYTECNT | R | 0h | 这是目标状态机的当前 PEC 字节计数。 0h = 最小值 1FFh = 最大值 |