这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » 嵌入式开发 » 国产MCU » 【STCAi8051U】从机模式下I2C有关的寄存器说明

共4条 1/1 1 跳转至

【STCAi8051U】从机模式下I2C有关的寄存器说明

专家
2025-07-09 17:39:39     打赏

一、【STCAi8051U】主机模式下I2C有关的寄存器说明

图片1.png

ESTAI:从机模式时接收到 START 信号中断允许位

  0:禁止从机模式时接收到 START 信号时发生中断

  1:使能从机模式时接收到 START 信号时发生中断

ERXI:从机模式时接收到 1 字节数据后中断允许位

  0:禁止从机模式时接收到数据后发生中断

  1:使能从机模式时接收到 1 字节数据后发生中断

ETXI:从机模式时发送完成 1 字节数据后中断允许位

  0:禁止从机模式时发送完成数据后发生中断

  1:使能从机模式时发送完成 1 字节数据后发生中断

ESTOI:从机模式时接收到 STOP 信号中断允许位

  0:禁止从机模式时接收到 STOP 信号时发生中断

  1:使能从机模式时接收到 STOP 信号时发生中断

SLRST:复位从机模式

二、I2C 从机状态寄存器(I2CSLST)

图片2.png

SLBUSY:从机模式时 I2C 控制器状态位(只读位)

  0:控制器处于空闲状态

  1:控制器处于忙碌状态

当 I2C 控制器处于从机模式时,在空闲状态下,接收到主机发送 START 信号后,控制器会继续检测之后的设备地址数据,若设备地址与当前 I2CSLADR 寄存器中所设置的从机地址像匹配时,控制器便进入到忙碌状态,忙碌状态会一直维持到成功接收到主机发送 STOP 信号,之后状态会再次恢复到空闲状态。

STAIF:从机模式时接收到 START 信号后的中断请求位。从机模式的 I2C 控制器接收到 START 信号后,硬件会自动将此位置 1,并向 CPU 发请求中断,响应中断后 STAIF 位必须用软件清零。STAIF 被置1 的时间点如下图所示:

图片3.png

RXIF:从机模式时接收到 1 字节的数据后的中断请求位。从机模式的 I2C 控制器接收到 1 字节的数据后,在第 8 个时钟的下降沿时硬件会自动将此位置 1,并向 CPU 发请求中断,响应中断后 RXIF 位必须用软件清零。RXIF 被置 1 的时间点如下图所示:

图片4.png

TXIF:从机模式时发送完成 1 字节的数据后的中断请求位。从机模式的 I2C 控制器发送完成 1 字节的数据并成功接收到 1 位 ACK 信号后,在第 9 个时钟的下降沿时硬件会自动将此位置 1,并向 CPU 发请求中断,响应中断后 TXIF 位必须用软件清零。TXIF 被置 1 的时间点如下图所示:

图片5.png

STOIF:从机模式时接收到 STOP 信号后的中断请求位。从机模式的 I2C 控制器接收到 STOP 信号后,硬件会自动将此位置 1,并向 CPU 发请求中断,响应中断后 STOIF 位必须用软件清零。STOIF 被置 1的时间点如下图所示:

图片6.png

SLACKI:从机模式时,接收到的 ACK 数据。

SLACKO:从机模式时,准备将要发送出去的 ACK 信号。

图片7.png

三、I2C 从机地址寄存器(I2CSLADR)

图片8.png

SLADR[6:0]:从机设备地址当 I2C 控制器处于从机模式时,控制器在接收到 START 信号后,会继续检测接下来主机发送出的设备地址数据以及读/写信号。当主机发送出的设备地址与 SLADR[6:0]中所设置的从机设备地址相匹配时,控制器才会向 CPU 发出中断求,请求 CPU 处理 I2C 事件;否则若设备地址不匹配,I2C控制器继续继续监控,等待下一个起始信号,对下一个设备地址继续匹配。

MA:从机设备地址匹配控制

  0:设备地址必须与 SLADR[6:0]继续匹配

  1:忽略 SLADR 中的设置,匹配所有的设备地址

四、I2C 数据寄存器(I2CTXD,I2CRXD)

图片9.png

I2CTXD 是 I2C 发送数据寄存器,存放将要发送的 I2C 数据

I2CRXD 是 I2C 接收数据寄存器,存放接收完成的 I2C 数据

五、I2C 从机超时控制寄存器(I2CTOCR)

图片10.png

ENTO:I2C 从机超时功能控制位

  0:禁止 I2C 从机超时功能

  1:使能 I2C 从机超时功能(注:I2C 的主机模式不要使能接收超时功能)

ENTOI:I2C 从机超时中断控制位

  0:禁止 I2C 从机超时中断

  1:使能 I2C 从机超时中断

SCALE:I2C 超时计数时钟源选择

  0:1us 时钟(1MHz 时钟)。(注意:如需要使用此时钟源,用户必须先正确设置 IAP_TPS 寄存器。

例如:若系统时钟为 12MHz,则需要将 IAP_TPS 设置为 12;若系统时钟为 22.1184MHz,则需要将 IAP_TPS 设置为 22;其他频率以此类推。特别注意,此 1us 的时钟并不是精准时间)

  1:系统时钟

六、I2C 从机超时状态寄存器(I2CTOSR)

图片11.png

CTOIF:写“1”清除 I2C 超时中断标志位 TOIF。(只写)

TOIF:I2C 超时中断请求标志位。(只读)

当发生 I2C 超时时,TOIF 会被硬件置“1”。如果 ENTOI 为 1 时会产生 I2C 中断,中断入口地址为原 I2C 的中断入口地址。标志位需要软件向 CTOIF 位写“1”清零

七、I2C 从机超时长度控制寄存器(I2CTOTE/H/L)

图片12.png

TM[23:0]:I2C 超时时间控制位。

当 I2C 处于接收空闲状态时,内部超时计数器根据 SCALE 寄存器所选择的时钟源进行计数,当计数时间达到 TM 所设置的超时时间时,便会产生超时中断。当 I2C 接收数据完成时,复位内部超时计数器,重新进行超时计数。

注:

  1、如果需要使能接收超时中断功能,则 TM 不可设置为 0,且 I2CTOTL、I2CTOTH、I2CTOTE寄存器的设置必须先设置 I2CTOTL 和 I2CTOTH,最后设置 I2CTOTE

  2、必须使能 I2C 为从机模式才有接收超时功能

  3、接收超时功能必须在正确接收到一字节数据后才能触发

  4、正在接收过程中,无接收超时功能















关键词: 菜鸟学单片机     STCAi8051U     I2C从机模式    

专家
2025-07-09 19:04:49     打赏
2楼

感谢分享


专家
2025-07-09 19:06:57     打赏
3楼

感谢分享


专家
2025-07-09 19:08:35     打赏
4楼

感谢分享


共4条 1/1 1 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]