当前位置: 首页 > article >正文

学习STC51单片机30(芯片为STC89C52RCRC)

每日一言

      当你感到疲惫时,正是成长的关键时刻,再坚持一下。

IIC协议

是的,IIC协议就是与我们之前的串口通信协议是同一个性质,就是为了满足模块的通信,其实之前的串口通信协议叫做UART协议,我们千万不要弄混了,串口协议有很多种,现在我们学习IIC协议

IIC协议是 半双工,由一条SDA 和SCL两条线构成

五. IIC协议

5.1.1 IIC协议概述

IIC全称Inter-Integrated Circuit (集成电路总线)

是由PHILIPS公司在80年代开发的两线式串行总线,用于连接微控制器及其外围设备。IIC属于半双

工同步通信方式

特点

简单性和有效性。

由于接口直接在组件之上,因此IIC总线占用的空间非常小,减少了电路板的空间和芯片管脚的数量,降

低了互联成本。总线的长度可高达25英尺,并且能够以10Kbps的最大传输速率支持40个组件 ,我们之前的uart协议是20kbps

多主控(multimastering)

其中任何能够进行发送和接收的设备都可以成为主总线。一个主控能够控制信号的传输和时钟频率。当

然,在任何时间点上只能有一个主控。

构成

IIC串行总线一般有两根信号线,一根是双向的数据线SDA,另一根是时钟线SCL,其时钟信号是由主控

器件产生。所有接到IIC总线设备上的串行数据SDA都接到总线的SDA上,各设备的时钟线SCL接到总线

的SCL上。对于并联在一条总线上的每个IC都有唯一的地址。

IIC总线在传输数据的过程中一共有三种类型信号,分别为:开始信号、结束信号和应答信号。

这些信号中,起始信号是必需的,结束信号和应答信号

时序图

发送器每发送一个字节(8个bit),就在时钟脉冲9期间释放数据线,由接收器反馈一个应答信号。

Tips:时钟脉冲9 就是前面的是时钟脉冲8 一个时钟脉冲进行一个位的传输,那么8之后就是一个字节了,我们需要检测字节是否传输成功,那么就需要在时钟脉冲9这边来进行检测,因为在没有传输数据的时候,默认SDA是由上拉电阻控制为高电平的,要是传输完时候还是高电平,说明无应答,也就是字节没有传输成功,要是为低电平,那么就是有应答,字节传输成功

怎么个原理呢,就是

应答信号为低电平时,规定为有效应答位(ACK,简称应答位),表示接收器已经成功地接收了该字

节;

应答信号为高电平时,规定为非应答位(NACK),一般表示接收器接收该字节没有成功。

这个就是IIC的通信的时序图

因为我们开发板上面没有IIC的相关的硬件,也就是寄存器,所以我们可以根据时序来写出代码

那我们根据起始信号时序图和终止信号时序图,应答信号的时序图,还有发送数据的时序图,我写出来以上的代码

记住SCL信号为高电平的时候,才是在工作的时候,才能识别SDA的状态

所以我们的开始信号要

看这个方框里面的内容来写时序图才是正确的,

在scl在高电平信号 SDA由低到高的跳变就是终止信号,

在scl在高电平信号 SDA由高到低的跳变就是起始信号

http://www.lryc.cn/news/2404639.html

相关文章:

  • sql中group by使用场景
  • 将HTML内容转换为Canvas图像,主流方法有效防止文本复制
  • Python-进程
  • Paraformer分角色语音识别-中文-通用 FunASR demo测试与训练
  • 【从0-1的CSS】第1篇:CSS简介,选择器以及常用样式
  • 对抗反爬机制的分布式爬虫自适应策略:基于强化学习的攻防博弈建模
  • JDK21深度解密 Day 15:JDK21实战最佳实践总结
  • 手写muduo网络库(一):项目构建和时间戳、日志库
  • 每日算法刷题Day25 6.7:leetcode二分答案3道题,用时1h40min(遇到两道动态规划和贪心时间较长)
  • 14-Oracle 23ai Vector Search 向量索引和混合索引-实操
  • kubeadm安装k8s
  • 服务器新建用户无法使用conda
  • Web前端基础:JavaScript
  • 基于对比学习的带钢表面缺陷分类研究,整合SimCLR自监督预训练与YOLOv8目标检测框架的技术解析及Python实现方案
  • 基于AWS Serverless架构:零运维构建自动化SEO内容生成系统
  • 【.net core】天地图坐标转换为高德地图坐标(WGS84 坐标转 GCJ02 坐标)
  • Linux操作系统故障应急场景及对应排查方法
  • 电镀机的阳极是什么材质?
  • vscode调试deepspeed的方法之一(无需调整脚本)
  • 神经网络-Day44
  • 创客匠人:如何通过精准定位实现创始人IP打造与知识变现
  • Codeforces Round 509 (Div. 2) C. Coffee Break
  • 榕壹云健身预约系统:多门店管理的数字化解决方案(ThinkPHP+MySQL+UniApp实现)
  • QUIC——UDP实现可靠性传输
  • 提高Python编程效率的工具推荐
  • React Native图片预加载:让你的应用图片预览像德芙一样丝滑
  • 快速上手shell脚本运行流程控制
  • 10.Linux进程信号
  • Python 函数全攻略:函数基础
  • 机器学习基础(四) 决策树