HC32L126系列MCU的HSI2C从机发送模式下的应用注意事项
发布时间:2026-02-27 点击数:234

一,本文介绍:

小华半导体针对HC32L126 系列 MCU的 HSI2C 从机发送的标准操作流程,同时指出高速通信场景下按标准流程会出现数据发送错误的问题,给出的解决方法是在 HSI2C 模块使能后、后续操作前,预先向 STDR 写入一笔待发送数据,即可规避该问题。

二、HSI2C 从机发送标准操作流程

HSI2C 配置为从机发送模式时,需按以下 8 个步骤执行操作,各步骤需关注对应的寄存器 / 标志位:

步骤

操作内容

关键寄存器 / 标志位

判定条件

1

使能 I2C 模块时钟,复位 I2C 模块

-

-

2

配置 I2C 模块 SCLSDA 管脚

-

-

3

配置从机相关寄存器

SCR1.ADDRMODESCR1.TXCFGSADDR.ADDR0

-

4

使能 I2C 模块

SCR0.SEN

 1

5

检测地址匹配状态

SSR.AVF(地址有效标志位)

 1,代表地址匹配

6

判断主机操作模式

SASR.RADDR [0](地址状态寄存器位)

 1,代表主机读、从机发送

7

循环写入待发送数据

SSR.TDF(可写入缓存标志位)、STDR(数据缓存)

SSR.TDF  1 时,向 STDR 写入数据,循环至所有数据写完

8

判定发送操作结束

SSR.AVFSSR.SDF(停止条件标志位)

SSR.AVF  0  SSR.SDF  1

三、不同通信速度下的执行问题

  1. 低速通信:按照上述标准操作流程执行,HSI2C 从机可正常向主机发送数据,无异常;

  2. 高速通信:若仍按标准流程操作,会出现数据发送错误的问题,核心原因是 HSI2C 通讯速度与软件操作速度不匹配。

四、高速通信下数据发送错误的解决方法

在执行标准操作流程的第 4 步(使能 I2C 模块) 后、第 5 步及后续操作前,增加一个关键操作:

  1. 查询SSR.TDF(可以写入缓存标志位) 是否为 1,为 1 表示缓存为空;

  2. 向STDR(数据缓存) 预先写入一笔待发送的数据;

  3. 完成上述操作后,再继续执行标准流程的第 5 步及后续步骤,即可避免高速通信下的数据发送错误。


关键问题

问题 1:HC32L126 系列 MCU 的 HSI2C 从机发送模式下,高速通信按标准流程操作会出现什么问题?原因是什么?

答案:会出现数据发送错误的问题;核心原因是 HSI2C 的通讯速度较快时,软件的操作速度无法匹配,导致按标准流程执行时出现数据发送异常。

问题 2:解决 HC32L126 系列 MCU HSI2C 高速通信从机发送错误的核心操作是什么?该操作需在哪个阶段执行?

答案:核心操作是预先向 STDR 数据缓存写入一笔待发送的数据;该操作需在标准流程第 4 步(使能 I2C 模块,SCR0.SEN=1)后、第 5 步(查询 SSR.AVF 标志位)及后续所有操作前执行。

问题 3:在 HSI2C 从机发送模式的标准流程中,如何判定主机为读操作、从机进入发送模式?又该如何判定整个发送操作完成?

答案:1. 读取SASR 地址状态寄存器,当SASR.RADDR [0] 的值为 1时,判定为主机读操作、从机进入发送模式;2. 当SSR.AVF 地址有效标志位为 0(已读取 SASR),且SSR.SDF 停止条件标志位为 1(检测到停止条件)时,判定整个发送操作完成。