IIC接口

news2024/11/26 16:39:24

一、IIC总线简介

IIC总线是由飞利浦公司推出的一种串行、同步、半双工通信协议。它由两条线组成,时钟线(SCL)和数据线(SDA)。主机产生通信用的时钟,可以产生起始信号和结束信号来开始或者结束一次通信。

二、IIC时序

2.1、空闲状态

IIC总线的SDA和SCL两条信号线同时处于高电平时,规定为总线的空闲状态。

2.2、数据的有效性

SDA 线上的数据必须在时钟的高电平周期保持稳定 数据线的高或低电平状态只有在 SCL 线的时钟
信号是低电平时才能改变。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Dm3ykZoc-1685338848150)(https://note.youdao.com/yws/res/f/WEBRESOURCE2e46527160d47bcbe19eceb8d38e31ff)]

2.3、起始信号和停止信号

  • 起始信号:SCL高电平期间,SDA由高到低的跳变;
  • 停止信号:SCL高电平期间,SDA由低到高的跳变;
    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-lEUjflvJ-1685338848151)(https://note.youdao.com/yws/res/5/WEBRESOURCE87d09b7aa6dc3ebd3f46b5e4d0134ef5)]

参考代码:

void IIC_Start()
{
	SdaOut();
	sda(1);
    scl(1);
	I2cDelayUs(2);
	sda(0);
	I2cDelayUs(2);
	scl(0);
}

2.3、数据传输和响应

  • 发送到 SDA 线上的每个字节必须为 8 位 每次传输可以发送的字节数量不受限制 每个字节后必须跟一个响应位, 首先传输的是数据的最高位 MSB。;
  • 在响应的时钟脉冲期间 接收器必须将 SDA 线拉低 使它在这个时钟脉冲的高电平期间保持稳定的低
    电平;
    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-8KURCDOW-1685338848151)(https://note.youdao.com/yws/res/b/WEBRESOURCEf6d3545e08afa594b0d8426588d189db)]

参考代码:


void IIC_SendByte(char ch)
{
    int i;
	SdaOut();
	scl(0);
	for(i=0;i<8;i++)
	{
		sda(ch & 0x80);	
		I2cDelayUs(1);	
		scl(1);	
		I2cDelayUs(2);
		scl(0);
		I2cDelayUs(1);
		ch = ch << 1;
	}
}
char IIC_ACK(){
	SdaOut();
	I2cDelayUs(2);	//5us
	scl(0);
	sda(0);
	I2cDelayUs(2);
	scl(1);
	I2cDelayUs(2);
	sda(0);
	I2cDelayUs(2);
	scl(0);
	I2cDelayUs(2);
}
unsigned char IIc_Wait_Ack(void)
{
    unsigned char ackflag = 1;
	unsigned char timeout = 0;
	unsigned char status = 1;;
    SdaIn();

	scl(1);
	
    while(status)
	{
		timeout++;
		if(timeout >= 200)
		{
			ackflag = 0;
			break;
		}
		status = ReadBit();
	}
	I2cDelayUs(2);
	scl(0);
	I2cDelayUs(2);
	return ackflag;
}

三、7位寻址模式

  • 一台主机可以连接多台从机,不同类型的从机可以通过地址来区分访问。
  • 数据的传输遵循图 10 所示的格式 在起始条件 S 后 发送了一个从机地址 这个地址共有 7 位紧接着的第 8 位是数据方向位 (R/ W) '0’表示发送 写 ‘1’ 表示请求数据读数据传输一般由主机产生的停止位 P 终止;
  • 当主机发送了一个地址后 系统中的每个器件都在起始条件后将头 7 位与它自己的地址比较 如果一样器件会认为它被主机寻址;
    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-mjGwLDjU-1685338848151)(https://note.youdao.com/yws/res/d/WEBRESOURCE9cad796c1de2cc846da3001c987c532d)]

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

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

相关文章

OFGF光流引导特征:用于视频动作识别的快速且稳健的运动表示【含源码】

论文地址:https://openaccess.thecvf.com/content_cvpr_2018/papers/Sun_Optical_Flow_Guided_CVPR_2018_paper.pdf 这个 repo 包含论文的实现代码: Optical Flow Guided Feature: A Fast and Robust Motion Representation for Video Action Recognition,Shuyang Sun,Zh…

基于MATLAB的数字滤波器语音信号去噪

文章目录 一、滤波器的种类及简介二、设计流程三、滤波器设计实现与结果仿真参考文献基于MATLAB的FPR滤波器设计源代码 本课程设计通过分析FIR滤波器的基本原理&#xff0c;在MATLAB环境下利用窗函数法设计出FIR滤波器,实现FIR滤波器的仿真。首先是采集一段语音信号&#xff0c…

C++高级数据结构——ST表(倍增表)

从上次写文章到现在已经27天了&#xff0c;将近一个月蒟蒻没有更新了。 最近学的ST表太难理解了&#xff0c;再加上忙&#xff0c;一直没时间…… ----------------------------------------------------------------------------------------------------------------------…

Tarball管理

文章目录 Tarball管理Tarball安装的基本步骤一般 Tarball 软件安装的建议事项 Tarball管理 从源代码的说明我们知道制作一个二进制程序需要很多东西&#xff0c;这包括下面这些基础的软件。 gcc或cc等C语言编译器make及autoconfig等软件需要内核提供的Library以及相关的inclu…

win11使用命令行建立wifi热点,并可以设定名称密码等

主要是想自动化的实现打开wifi热点,ssid和wifi密码可控!手机设定比较简单,但是用程序行来设定还真是比较麻烦。 查了一下,有人使用netsh 无法解决,也就是说无法使用如下命令启动移动热点: netsh wlan set hostednetwork mode=allow ssid=wifi888 key=88888888 netsh wl…

信息安全实践1.2(重放攻击)

前言 这个实验是看一本书做的&#xff0c;就是李华峰老师的书——《Metasploit Web 渗透测试实战》&#xff0c;我之前写过一篇Slowloris DoS攻击的博客&#xff0c;也是看这本书写的&#xff0c;总的来说&#xff0c;有用处。这篇博客其实也只是很浅显的去做一下重放攻击。 要…

PyTorch 深度学习 || 专题二:PyTorch 编程基础

PyTorch 编程基础 文章目录 PyTorch 编程基础1. backword 求梯度2. 常用损失函数2.1 均方误差损失函数2.2 L1范数误差损失函数2.3 交叉熵损失函数 3. 优化器 1. backword 求梯度 import torchw torch.tensor([1.], requires_gradTrue) x torch.tensor([2.], requires_gradTr…

R实践——【rgplates】安装、介绍、入门

【rgplates】安装、介绍、入门 1. rgplates 安装1.1 easy way1.2 备案方法 2. rgplates 介绍3. rgplates 在线方法入门3.1 加载rgplates3.2 板块重建3.3 独立的地点坐标3.3.1 单个现存坐标点3.3.2 单个点的古坐标3.3.3 多个点的古坐标 3.4 现今的海岸线3.5 其他的重建模型3.6 在…

JMeter 性能测试基本过程及示例

jmeter 为性能测试提供了一下特色&#xff1a; 2023年最新出炉性能测试教程&#xff0c;真实企业性能压测全流程项目实战训练大合集&#xff01;_哔哩哔哩_bilibili2023年最新出炉性能测试教程&#xff0c;真实企业性能压测全流程项目实战训练大合集&#xff01;共计11条视频&…

javascript获取对象的键名列表、键值列表

Object.keys&#xff1a;获取对象的键名列表 Object.values&#xff1a;获取对象的键值列表 <script>var obj {name: 1,age: 2,order: 3}const klist Object.keys(obj)const vals Object.values(obj)console.log(obj, obj)console.log(键名列表, klist)console.log(键…

STM32F4_位带操作

目录 1. 位带简介 2. 别名区地址的计算 2.1 合并计算 3. 位带操作访问ODR和IDR寄存器 4. GPIOB->MODER&~(3<<(9*2));GPIOB->MODER|0<<9*2 / GPIOB->MODER&~(3<<(9*2));GPIOB->MODER|1<<9*2 位带操作在写单片机程序时&#xf…

springboot+vue 刘老师

课程内容 前端&#xff1a;vue elementui 后端&#xff1a;springboot mybatisplus 公共云部署 ------boot-------- 热部署 不用devtools&#xff0c;交给jrebel工具 RequestMapping ​ 参数 value 路径 method 方法consumes 请求媒体类型 如 application/jsonproduces …

DJ5-7 缓冲区管理

目录 5.7.1 缓冲的引入 5.7.2 单缓冲和双缓冲 1、单缓冲&#xff08;Single Buffer&#xff09; 2、双缓冲&#xff08;Double Buffer&#xff09; 3、双机通信时缓冲区的设置 5.7.3 循环缓冲 1、循环缓冲的组成 2、循环缓冲区的使用 3、进程同步 5.7.4 缓冲池 …

Spring Security源码剖析从入门到精通.跟学尚硅谷

1.1 概要 Spring 是非常流行和成功的 Java 应用开发框架&#xff0c;Spring Security 正是 Spring 家族中的成员。Spring Security 基于 Spring 框架&#xff0c;提供了一套 Web 应用安全性的完整解决方案。 正如你可能知道的关于安全方面的两个主要区域是“认证”和“授权”…

Mediapipe人体识别库

一、简介 官网&#xff1a;MediaPipe | Google for Developershttps://developers.google.cn/mediapipe Mediapipe 是2012年起开始公司内部使用&#xff0c;2019年google的一个开源项目&#xff0c;可以提供开源的、跨平台的常用机器学习(machine learning)方案。Mediapipe…

python-sqlite3使用指南

python下sqlite3使用指南 文章目录 python下sqlite3使用指南开发环境sqlite3常用APICRUD实例参考 开发环境 vscode ​ 开发语言&#xff1a; python vscode SQLite插件使用方法&#xff1a; 之后在这里就可以发现可视化数据&#xff1a; sqlite3常用API Python 2.5.x 以上…

信息安全实践1.3(HTTPS)

前言 做这个实验对Tomcat的版本有要求&#xff0c;最好是使用Tomcat8。因为我之前使用Tomcat10&#xff0c;然后一直做不出来。 要求 部署Web服务器端HTTPS功能&#xff0c;通过网络嗅探分析HTTPS通过SSL实施安全保护的效果 关键步骤 首先要给tomcat配置https&#xff0c;也…

设计模式之美-实战一(上):业务开发常用的基于贫血模型的MVC架构违背OOP吗?

领域驱动设计&#xff08;Domain Driven Design&#xff0c;简称DDD&#xff09;盛行之后&#xff0c;这种基于贫血模型的传统的开发模式就更加被人诟病。而基于充血模型的DDD开发模式越来越被人提倡。所以&#xff0c;我打算用两节课的时间&#xff0c;结合一个虚拟钱包系统的…

超低功耗三通道低频无线唤醒ASK接收 125k soc芯片UM2082F08

UM2082F08 是基于单周期 8051 内核的超低功耗 8 位、、具有三通道低频无线唤醒 ASK 接收功能的 SOC 芯片。芯片可检测 30KHz~300KHz 范围的 LF&#xff08;低频&#xff09;载波频率数据并触发唤醒信号&#xff0c;同时可以调节接收灵敏度&#xff0c;确保在各种应用环境下实现…

代码随想录算法训练营15期 Day 6 | 242.有效的字母异位词 、349. 两个数组的交集 、202. 快乐数、1. 两数之和

由于昨天是周日&#xff0c;周日是休息日&#xff0c;所以就是什么也没有写啦。今天是day06天&#xff0c;继续加油。 哈希表理论基础 建议&#xff1a;大家要了解哈希表的内部实现原理&#xff0c;哈希函数&#xff0c;哈希碰撞&#xff0c;以及常见哈希表的区别&#xff0c;…