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数据接收寄存器

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/828167.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

文件多进程、多线程访问

处理多进程和多线程的文件读写操作需要确保对共享资源的访问是同步的,以防止数据竞争和不一致性。以下是一些常用的策略和工具: 多线程同步: 内置锁 (synchronized 关键字):使用 Java 的 synchronized 关键字对代码块或方法进行同…

Android Compose页面跳转Demo

1.引入依赖 //jetpack compose导航 implementation("androidx.navigation:navigation-compose:2.5.3") 2.代码 import android.os.Bundle import androidx.activity.ComponentActivity import androidx.activity.compose.setContent import androidx.compose.foundat…

基于Spring Boot的家具销售电商平台设计与实现

基于Spring Boot的家具销售电商平台设计与实现 开发语言:Java框架:springbootJDK版本:JDK1.8数据库工具:Navicat11开发软件:eclipse/myeclipse/idea 系统部分展示 系统功能界面图,在系统首页可以查看首页…

Web集群_02

Web集群_01 Keepalived 概述 Keepalived实现了高可用集群 Keepalived最初是为LVS设计 , 专门监控各种服务器节点的状态 Keepalived 后加入了 VRRP 功能 , 防止单点故障 VRRP ( 虚拟冗余路由协议 ) VRRP能在不改变网组的情况下 , 将多台路由器虚拟成一个虚拟路由器 , 通过配…

【ZZULIOJ】1079: a+b(多实例测试2)(Java)

目录 题目描述 输入 输出 样例输入 Copy 样例输出 Copy 提示 code 题目描述 计算AB 输入 输入数据有多组。 每组一行,为整数A, B。 输出 对每行输入,输出AB的值,单独占一行。 样例输入 Copy 1 2 3 4样例输出 Copy 3 7 提示 …

川宁生物环保方面优势明显合成生物学赋能未来

川宁生物一直秉持着"树立全球抗生素行业环保典范"的理念,在环保方面进行了大量的投入,总计超过27亿元人民币,占项目总投资的30%以上。川宁生物建设了一个占地面积超过300亩的环保系统,占厂区总面积的20%以上。在中国对抗…

《智能前沿:应对ChatGPT算力挑战》

在全球人工智能热潮中,以 ChatGPT 为代表的 AIGC 技术引发了广泛关注。人工智能和机器学习等技术对数据规模及处理速度等提出了更高要求。在数据成为主要生产要素的当下和未来,如何跟上时代的发展步伐,构建适应 AI 需求的数据中心&#xff0c…

基于Google Gemini 探索大语言模型在医学领域应用评估和前景

概述 近年来,大规模语言模型(LLM)在理解和生成人类语言方面取得了显著的飞跃,这些进步不仅推动了语言学和计算机编程的发展,还为多个领域带来了创新的突破。特别是模型如GPT-3和PaLM,它们通过吸收海量文本…

BUUCTF---misc---[SWPU2019]我有一只马里奥

1、下载附件是一个.exe文件 2、运行之后可以看到桌面生成了1.txt文件,文件里面有如下内容 3、经过信息搜索:NTFS(New Technology File System)是一种由Microsoft开发的专有日志文件系统。根据它的提示,应该是把flag.tx…

B2弹幕插件优化版WordPress插件

源码下载:B2弹幕插件.zip 这是b2独有的站点信息弹幕插件,专门用来在首页显示站点动态的一款个性化 WordPress插件。喜欢的可以下载回去进行二次开发,还是蛮不错的 基于wordpress 7B2主题开发的一款弹幕插件/气泡插件 功能一览 插件安装&a…

三、CPU基础-缓存

计算机中缓存一般分为两个部分 1.内存 2.CPU Cache 一、CPU Cache分级 CPU Cache 通常分为大小不等的三级缓存,分别是 L1 Cache、L2 Cache 和 L3 Cache。 L1 Cache 和 L2 Cache 都是每个 CPU 核心独有的(通常会分为「数据缓存」和「指令缓存」&#…

介绍Phi-3:微软重新定义小型语言模型(SLM)的可能性

每周跟踪AI热点新闻动向和震撼发展 想要探索生成式人工智能的前沿进展吗?订阅我们的简报,深入解析最新的技术突破、实际应用案例和未来的趋势。与全球数同行一同,从行业内部的深度分析和实用指南中受益。不要错过这个机会,成为AI领…

【Python打包exe文件】

Python打包exe文件 ■ Python打包exe文件■■■ ■ Python打包exe文件 需求: 自己写的Python代码,在对方电脑里没有安装py环境无法运行,怎么办? 答:打包成exe文件发送对方就能运行。 首先自己写的python代码自己要能…

云备份day05

📟作者主页:慢热的陕西人 🌴专栏链接:C云备份项目 📣欢迎各位大佬👍点赞🔥关注🚓收藏,🍉留言 主要内容实现Json实用类的设计,以及服务端的设计和实…

【电控笔记5.6】Butterworth滤波器

Butterworth滤波器 需求:在增益交越频率拥有最小的相位滞后 波器经常被使用原因是 Butterworth 滤波器对于给定阶数,拥有最倾斜的衰减率而在伯德图又不会产生凸峰,同时在低频段的相位滞后小,因此本节将为各位介绍 Butterworth 低…

CTFshow-PWN-栈溢出(pwn43)

32位的 system(); 但是好像没"/bin/sh" 上面的办法不行了,想想办法 检查:32 位程序 ida 分析: 跟进 ctfshow 函数 定义了一个长度为 104 的字符数组 s,gets() 函数被用来从标准输入(键盘)中读取…

OpenCompass 大模型评测实战——笔记

OpenCompass 大模型评测实战——笔记 一、评测1.1、为什么要做评测1.2、如何通过能力评测促进模型发展1.2.1、面向未来拓展能力维度1.2.2、扎根通用能力1.2.3、高质量1.2.4、性能评测 1.3、评测的挑战1.3.1、全面性1.3.2、评测成本1.3.3、数据污染1.3.4、鲁棒性 二、OpenCompas…

毕业论文写作指南

【选题】要做什么 第1步:找需求。生活中肯定会存在各种各样的问题,要能找到问题是什么,于是得出社会有什么需求;于是,有了开发的必要性,也就是开发有了意义,然后才有开发的必要。 第2步&#…

【漏洞复现】云时空社会化商业ERP系统LoginName SQL注入漏洞

漏洞描述: 云时空社会化商业ERP系统loginName存在SQL注入漏洞,攻击者可以通过此漏洞获取数据库敏感信息。 搜索语法: Fofa-Query: app"云时空社会化商业ERP系统" 漏洞详情: 1.云时空社会化商业ERP系统。 2.漏洞POC&#xff1a…