STC8H8K64U I2C主机模式相关寄存器

2024-04-25 03:12

本文主要是介绍STC8H8K64U I2C主机模式相关寄存器,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

STC8H8K64U I2C主机模式相关寄存器

STC8H8K64U-TSSOP20
STC8H8K64U-TSSOP20

I2CCFG I2C配置寄存器
I2CMSCR I2C主机控制寄存器
I2CMSST I2C主机状态寄存器
I2CMSAUX I2C主机辅助控制寄存器
I2CTXD I2C数据发送寄存器
I2CRXD I2C数据接收寄存器

I2CCFG I2C配置寄存器

B7=ENI2C
ENI2C:I2C 功能使能控制位
0:禁止 I2C 功能
1:允许 I2C 功能
B6=MSSL
MSSL:I2C 工作模式选择位
0:从机模式
1:主机模式
B5-B0
MSSPEED[5:0]:I2C 总线速度(等待时钟数)控制,I2C 总线速度=FOSC / 2 / (MSSPEED * 2 + 4)
MSSPEED[5:0] 对应的时钟数
0 4
1 6
2 8
… …
x 2x+4
… …
62 128
63 130
只有当 I2C 模块工作在主机模式时,MSSPEED 参数设置的等待参数才有效。此等待参数主要用于主机模式的以下几个信号:
TSSTA:起始信号的建立时间(Setup Time of START)
THSTA:起始信号的保持时间(Hold Time of START)
TSSTO:停止信号的建立时间(Setup Time of STOP)
THSTO:停止信号的保持时间(Hold Time of STOP)
THCKL:时钟信号的低电平保持时间(Hold Time of SCL Low)
THCKH:时钟信号的高电平保持时间(Hold Time of SCL High)
例 1:当 MSSPEED=10 时,TSSTA=THSTA=TSSTO=THSTO=THCKL=24/FOSC
例 2:当 24MHz 的工作频率下需要 400K 的 I2C 总线速度时,
MSSPEED=(24M / 400K / 2 - 4) / 2=13

I2CMSCR I2C主机控制寄存器

B7=EMSI:主机模式中断使能控制位
0:关闭主机模式的中断
1:允许主机模式的中断
51汇编示例:

MOV  A,#80H;B7=1允许I2C主机模式的中断
MOV  DPTR,#I2CMSCR
MOVX  @DPTR,A

MSCMD[3:0]:主机命令
0000:待机,无动作。
0001:起始命令。
发送 START 信号。如果当前 I2C 控制器处于空闲状态,即 MSBUSY(I2CMSST.7)为 0 时,写此命令会使控制器进入忙状态,硬件自动将 MSBUSY 状态位置 1,并开始发送 START 信号;若当前 I2C 控制器处于忙状态,写此命令可触发发送 START 信号。
0010:发送数据命令。
写此命令后,I2C 总线控制器会在 SCL 管脚上产生 8 个时钟,并将 I2CTXD 寄存器里面数据按位送到 SDA 管脚上(先发送高位数据)。
0011:接收 ACK 命令。
写此命令后,I2C 总线控制器会在 SCL 管脚上产生 1 个时钟,并将从 SDA 端口上读取的数据保存到 MSACKI(I2CMSST.1)。
0100:接收数据命令。
写此命令后,I2C 总线控制器会在 SCL 管脚上产生 8 个时钟,并将从 SDA 端口上读取的数据依次左移到 I2CRXD 寄存器(先接收高位数据)。
0101:发送 ACK 命令。
写此命令后,I2C 总线控制器会在 SCL 管脚上产生 1 个时钟,并将 MSACKO(I2CMSST.0)中的数据发送到 SDA 端口。
0110:停止命令。
发送 STOP 信号。写此命令后,I2C 总线控制器开始发送 STOP 信号。信号发送完成后,硬件自动将 MSBUSY 状态位清零。
0111:保留。
1000:保留。
1001:起始命令+发送数据命令+接收 ACK 命令。
此命令为命令 0001、命令 0010、命令 0011 三个命令的组合,下此命令后控制器会依次执行这三个命令。
1010:发送数据命令+接收 ACK 命令。
此命令为命令 0010、命令 0011 两个命令的组合,下此命令后控制器会依次执行这两个命令。
1011:接收数据命令+发送 ACK(0)命令。
此命令为命令 0100、命令 0101 两个命令的组合,下此命令后控制器会依次执行这两个命令。
注意:此命令所返回的应答信号固定为 ACK(0),不受 MSACKO 位的影响。
1100:接收数据命令+发送 NAK(1)命令。
此命令为命令 0100、命令 0101 两个命令的组合,下此命令后控制器会依次执行这两个命令。
注意:此命令所返回的应答信号固定为 NAK(1),不受 MSACKO 位的影响。

I2CMSST I2C主机状态寄存器

B7=MSBUSY:主机模式时 I2C 控制器状态位(只读位)
0:控制器处于空闲状态
1:控制器处于忙碌状态
当 I2C 控制器处于主机模式时,在空闲状态下,发送完成 START 信号后,控制器便进入到忙碌状态,忙碌状态会一直维持到成功发送完成 STOP 信号,之后状态会再次恢复到空闲状态。
B6=MSIF:主机模式的中断请求位(中断标志位)。当处于主机模式的 I2C 控制器执行完成寄存器 I2CMSCR中 MSCMD 命令后产生中断信号,硬件自动将此位 1,向 CPU 发请求中断,响应中断后 MSIF 位必须用软件清零。
B1=MSACKI:主机模式时,发送“0011”命令到 I2CMSCR 的 MSCMD 位后所接收到的 ACK 数据。(只读位)
B0=MSACKO:主机模式时,准备将要发送出去的 ACK 信号。当发送“0101”命令到 I2CMSCR 的 MSCMD位后,控制器会自动读取此位的数据当作 ACK 发送到 SDA。

I2CMSAUX I2C主机辅助控制寄存器

B0=WDTA:主机模式时 I2C 数据自动发送允许位
0:禁止自动发送
1:使能自动发送
若自动发送功能被使能,当 MCU 执行完成对 I2CTXD 数据寄存器的写操作后,I2C 控制器会自动触发“1010”命令,即自动发送数据并接收 ACK 信号。

I2CTXD I2C数据发送寄存器

I2CRXD I2C数据接收寄存器

这篇关于STC8H8K64U I2C主机模式相关寄存器的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/933562

相关文章

sqlite3 相关知识

WAL 模式 VS 回滚模式 特性WAL 模式回滚模式(Rollback Journal)定义使用写前日志来记录变更。使用回滚日志来记录事务的所有修改。特点更高的并发性和性能;支持多读者和单写者。支持安全的事务回滚,但并发性较低。性能写入性能更好,尤其是读多写少的场景。写操作会造成较大的性能开销,尤其是在事务开始时。写入流程数据首先写入 WAL 文件,然后才从 WAL 刷新到主数据库。数据在开始

在JS中的设计模式的单例模式、策略模式、代理模式、原型模式浅讲

1. 单例模式(Singleton Pattern) 确保一个类只有一个实例,并提供一个全局访问点。 示例代码: class Singleton {constructor() {if (Singleton.instance) {return Singleton.instance;}Singleton.instance = this;this.data = [];}addData(value)

浅谈主机加固,六种有效的主机加固方法

在数字化时代,数据的价值不言而喻,但随之而来的安全威胁也日益严峻。从勒索病毒到内部泄露,企业的数据安全面临着前所未有的挑战。为了应对这些挑战,一种全新的主机加固解决方案应运而生。 MCK主机加固解决方案,采用先进的安全容器中间件技术,构建起一套内核级的纵深立体防护体系。这一体系突破了传统安全防护的局限,即使在管理员权限被恶意利用的情况下,也能确保服务器的安全稳定运行。 普适主机加固措施:

实例:如何统计当前主机的连接状态和连接数

统计当前主机的连接状态和连接数 在 Linux 中,可使用 ss 命令来查看主机的网络连接状态。以下是统计当前主机连接状态和连接主机数量的具体操作。 1. 统计当前主机的连接状态 使用 ss 命令结合 grep、cut、sort 和 uniq 命令来统计当前主机的 TCP 连接状态。 ss -nta | grep -v '^State' | cut -d " " -f 1 | sort |

两个月冲刺软考——访问位与修改位的题型(淘汰哪一页);内聚的类型;关于码制的知识点;地址映射的相关内容

1.访问位与修改位的题型(淘汰哪一页) 访问位:为1时表示在内存期间被访问过,为0时表示未被访问;修改位:为1时表示该页面自从被装入内存后被修改过,为0时表示未修改过。 置换页面时,最先置换访问位和修改位为00的,其次是01(没被访问但被修改过)的,之后是10(被访问了但没被修改过),最后是11。 2.内聚的类型 功能内聚:完成一个单一功能,各个部分协同工作,缺一不可。 顺序内聚:

log4j2相关配置说明以及${sys:catalina.home}应用

${sys:catalina.home} 等价于 System.getProperty("catalina.home") 就是Tomcat的根目录:  C:\apache-tomcat-7.0.77 <PatternLayout pattern="%d{yyyy-MM-dd HH:mm:ss} [%t] %-5p %c{1}:%L - %msg%n" /> 2017-08-10

Node Linux相关安装

下载经编译好的文件cd /optwget https://nodejs.org/dist/v10.15.3/node-v10.15.3-linux-x64.tar.gztar -xvf node-v10.15.3-linux-x64.tar.gzln -s /opt/node-v10.15.3-linux-x64/bin/npm /usr/local/bin/ln -s /opt/nod

git ssh key相关

step1、进入.ssh文件夹   (windows下 下载git客户端)   cd ~/.ssh(windows mkdir ~/.ssh) step2、配置name和email git config --global user.name "你的名称"git config --global user.email "你的邮箱" step3、生成key ssh-keygen

模版方法模式template method

学习笔记,原文链接 https://refactoringguru.cn/design-patterns/template-method 超类中定义了一个算法的框架, 允许子类在不修改结构的情况下重写算法的特定步骤。 上层接口有默认实现的方法和子类需要自己实现的方法

【iOS】MVC模式

MVC模式 MVC模式MVC模式demo MVC模式 MVC模式全称为model(模型)view(视图)controller(控制器),他分为三个不同的层分别负责不同的职责。 View:该层用于存放视图,该层中我们可以对页面及控件进行布局。Model:模型一般都拥有很好的可复用性,在该层中,我们可以统一管理一些数据。Controlller:该层充当一个CPU的功能,即该应用程序