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
I2C 总线协议定义了两种状态,以便开始和结束数据传输:START 和 STOP。当 SCL 为高电平时 SDA 线路上从高电平到低电平的跳变被定义为 START 条件,而当 SCL 为高电平时 SDA 线路上从低电平到高电平的跳变被定义为 STOP 条件。START 和 STOP 条件始终由控制器产生。总线在 START 条件之后被视为忙状态,在 STOP 条件之后被视为空闲(free)状态。
STOP 位决定事务是在数据周期结束时停止还是继续直至重复的 START 条件。
为了生成单个事务,应向 I2C 控制器目标地址 I2Cx.MSA.SADDR 寄存器写入所需的地址,将 I2Cx.MSA.DIR 位设置为 1 启动接收操作,设置为 0 启动发送操作,并向控制寄存器 (I2Cx.MCTR) 写入 ACK = X(0 或 1)、STOP = 1、START = 1 和 RUN = 1 来执行操作并在结束时产生 STOP 条件。当操作完成(或由于错误而中止)时,设置中断标志。I2C 模块以控制器接收器模式运行时,通常会设置 ACK 位(在没有错误的情况下),从而使 I2C 总线控制器在每个字节接收完之后自动发送一个确认。当 I2C 总线控制器无需接收从目标发送器发送的更多数据时,必须清除该位。更多有关 I2C 控制器模式配置的信息,请参阅节 22.2.4.1
在目标模式下运行时,CPU_INT.RIS 寄存器中的 START 和 STOP 位可以指示是否检测到总线上的启动和停止条件,并且可以配置 CPU_INT.IMASK 以允许将 START 和 STOP 提升为控制器中断(启用中断后)。更多有关 I2C 目标模式配置的信息,请参阅节 22.2.4.2
总线状态标志: