I2C基础知识
引言
这里祝大家新年快乐!前面我们介绍了串口通讯协议,现在我们继续来介绍另一种常见的简单的串行通讯方式——I2C通讯协议。
一、什么是I2C
I2C 通讯协议(Inter-Integrated Circuit)是由Phiilps公司在上个世纪80年代开发的,其英文翻译过来实际上是【内部集成电路】,所以他就是为内部集成电路与其他各种模块进行简单的串口通讯设置的这样一个协议。
关于I2C的叫法,简单说明一下:
根据英文缩写,应该是写成IIC,不过通常我们读的时候会把两个I读成I2(I的平方的意思,标准写法的2应该是在I的右上角)。之所以平时描述时直接写I2C,主要是因为打角标相对麻烦,所以就出现这样的写法。当然了,字母旁边跟着的“2”一般是表示“to”,所以很多时候会看见比如【P2P】这样的写法,这其实就是【Point to Point点对点】的意思。同时有些老外也会直接叫“I to C”,主要原因还是因为“I方C”说起来的话那个平方square念起来比较长,显得麻烦,所以为了简单就直接叫I to C了,所以关于I2C的叫法主要会存在这两种说法。
总的来说,关于I2C的叫法标准来说就是“I方C”,叫“I2C”相对显得没那么准确,也问题不大。
二、I2C有什么特点
I2C主要优点是引脚少、硬件单路实现比较简单、可扩展性强,其通讯相对来说还是非常稳定的。后来飞利浦公司将其知识产权完全放开,任何人都能随意使用,成为了一个通用的通讯协议。不需要 USART、CAN等通讯协议的外部收发设备,加之其简单易用等特点,因此现在被广泛的使用在系统内多个集成电路(IC)间的低速串行通讯当中。
I2C是一种简单的双向两线制总线协议标准,支持同步串行半双工通讯。也就是说I2C通讯使用两根线实现数据的传输;同时他是双向的,既可以收,也可以发。由于其支持的是同步通讯,因此两根线中必有一根是时钟信号线,因此只有一条线进行数据的收发,因此其只能支持串行半双工通讯,这也是I2C通讯与串口通讯的一个显著区别。
三、I2C通讯的速度如何
I2C通讯其在标准模式下的传输速率为100kbit/s,快速模式下传输速率为400kbit/s,高速模式下可达到3.4Mbit/s,目前大多I2C设备上不支持高速模式。
可见,I2C通讯的速度实际上也比较慢,毕竟其硬件简单,对比串口通讯,前面设置的波特率一般是115200,也就是115.2,速率也差不多,最快的是450,理论上串口还会比I2C快一点点,当然也都快的有限,所以他们都算是一种低速串行通讯。所以I2C的硬件可能会更简单,而串口通讯可能还相对复杂一点,主要是因为其同时又要收又要发,所以有一个通用的异步收发器UART在里面。
四、I2C的物理层
这里,我们来了解一下I2C的物理层,看看其硬件设备到底是如何进行设计的。
1、两种总线
先介绍两种总线,分别是SCL和SDA
SCL:Serial CLock,串行时钟总线,用于数据的收发同步;
SDA:Serial DAta,串行数据总线,用高低电平表示数据。
2、通讯设备的连接
知道了使用的两根线,那么设备他是怎么连接的呢?前面介绍串口通讯时我们知道,串口两根线连接设备时是点对点的连接,有一个对应关系。而这里I2C通讯我们就一根数据线SCL,很显然我们这里将会把各种设备挂在一根线上,进行数据的收或发。
如上图,也就是说,这实际上是一种总线连接的传输方式。也就是我们可以在SCL时钟线和SDA数据线之间挂载多个I2C通讯设备。当然了,所有的这些I2C设备就相当于电路上的一种并联的方式将通讯设备连接在了总线上。
其可以连接多个I2C设备,其中多个设备中必须要有一个主设备,另外其他的可以是从设备。同时I2C通讯协议支持一主多从,也支持多主多从。
这里简单解释一下,什么叫主从设备?
主从设备是指总线上连接的设备,按其对总线有无控制功能可分为主设备和从设备两种。
主设备,英文名Master,主人,起到一个控制的作用。这里主要是控制时钟信号,相当于跑步时喊121的人,控制一个整体的节奏。
从设备,就相当于是听指令的人,主从设备相当于一种主仆关系。
这里有一个疑问:如果多个设备同时要收发数据的话,全部在总线上进行,那数据不会乱吗?
实际上,为了避免这种问题,我们I2C通讯协议规定,为了区分不同的设备,每个设备都会有一个唯一的地址,主设备会通过这个地址来与相应的从机进行通讯。然后总线连接方式下,我们使用的工作模式应该是开漏输出,默认会处于一个高阻态,这时候就需要在外面接一个上拉电阻。
还有一个疑问:如果现在有多个主设备和从设备之间要进行数据的传递,全都要占用总线,那怎么办呢?
首先,总线是不能直接让所有的设备都占用的,所以默认情况下总线会处于高阻态。总线通过上拉电阻接到电源。设备空闲时,输出高阻态;当所有设备都空闲时,都输出高阻态时,由上拉电阻把总线拉成高电平。
当总线上有一个设备为0,就相当于设备接地,这时候整个数据总线上就都会被接地拉低,置为0,告诉数据总线上的其他所有设备该设备将要占用总线,然后就开始输出数据。
一般情况下,主从设备是不能占用时钟信号线的。
但在特殊情况下,也可以往时钟线上输出0:在STM32的I2C模块中有一个特殊的功能——时钟扩展,即在I2C的主从通信过程中,总线上的SCL时钟总是由主机来产生和控制的,但如果从机跟不上主机的速率,I2C协议规定:在开启时钟延展功能后,从机可以通过将SCL时钟线拉低来暂停一个传输的,直到从机释放掉SCL线,传输继续进行。
五、I2C的协议层
为了了解I2C通讯的数据传输需要怎么做,具体怎么样规定要开始发送、结束发送、以什么样的方式进行传输,数据是否有效等等问题的答案,我们需要来看看关于I2C通讯的相关协议部分。
1、位传输
前面提到,I2C通讯也是一种低速串行通讯方式。所以在数据传输方式上,作为串行通信,I2C时按照位进行传输,一般时高位先行。(与串口通讯是相反的)
2、起始信号
知道数据时如何传输后,接下来我们就要讨论数据什么时候开始传输了。也就是当出现什么信号后,就预示着我们要开始进行数据传递了。
由于在没有设备进行数据传递,也就是总线处于空闲时,总线上是处于高阻态,同时外接了上拉电阻接到电源,因此在没有发送数据传递时总线或者说SDA线上应该处于高电平。因此我们可以给SDA低电平作为开始发送数据传递的起始信号。当然了,为了保证起始信号的独特性,避免SDA线的低电平被视作一位数据,前提需要时钟线SCL是处于高电平,这样才能作为I2C通讯传递信号的起始信号。
简单来说,起始信号:SCL是高电平时,SDA线从高电平向低电平切换。 用start的S表示
3、停止信号
同理,停止信号就是SDA线由低电平又变成高电平,出现的上升沿信号。
即,停止信号:SCL是高电平时,SDA线从低电平向高电平切换。用stop的P表示
4、传输地址
知道了什么时候进行或者结束数据传递后,我们当然就要开始进行数据传递了,这时候就会出现一个问题:我们和谁进行数据传递?此时就涉及到通讯设备的地址了。
为了对应设备进行数据传递,主机会通过SDA信号线发送设备地址(SLAVE_ADDRESS)来查找从机。其中,I2C协议规定设备地址可以是7位或10位,实际中7位的地址应用比较广泛。可见,7位设备地址就可以有2^7种设备同时去进行通信,再不够可以扩展成10位,即2^10种设备同时进行数据传递。
如上图所示,一般设备地址占7位,然后紧跟着的一个数据位用来表示数据传输方向,他是数据方向位(R/W),通常是第8位或第11位。其中,数据方向位为“1”时表示主机由从机读数据,该位为“0”时表示主机向从机写数据。
5、数据的有效性
确定了设备地址,那就真的要开始进行数据传递了。这时候就会涉及到另一个问题:系统他不会随随便便把一个信号当做传递的数据,所以I2C协议规定了什么情况下的数据才是有效数据。
I2C协议规定SDA线的高低电平状态只有在SCL时钟信号线处于低电平时才能改变,同时SDA线上的数据必须在SCL时钟信号线处于高电平周期保持稳定。
也就是说,SCL线上处于高电平的时候,SDA线上的数据必须要保持稳定,相当于要做一个数据信号线的采样;如果此时SDA线上处于一个下降沿,就意味着要开始传递数据;如果此时SDA线上处于一个上升沿,就意味着要停止传递数据。然后SCL线处于低电平时,SDA线上才能进行电平转换。
6、响应
I2C协议规定,当数据发送方发送数据以后,如果接收方收到了数据就必须给发送方一个响应(ACKnowledge),表示接收方收到数据了。
由上图可知,按照主机控制的时钟信号,每次时钟信号高电平时在数据信号线上进行数据采样,然后当数据线产生停止信号时表示数据传递结束,释放SDA线。此时接收方就要发出响应,这里有两种响应:
1、应答响应ACK:接收器会给发送方一小段低电平信号;
2、非应答响应NACK:接收器会给发送方一个高电平信号。
以上便是本次文章的所有内容,欢迎各位朋友在评论区讨论,本人也是一名正在学习的小白,愿大家共同努力,一起进步吧!
鉴于笔者能力有限,难免出现一些纰漏和不足,望大家在评论区批评指正,谢谢!
相关文章:
I2C基础知识
引言 这里祝大家新年快乐!前面我们介绍了串口通讯协议,现在我们继续来介绍另一种常见的简单的串行通讯方式——I2C通讯协议。 一、什么是I2C I2C 通讯协议(Inter-Integrated Circuit)是由Phiilps公司在上个世纪80年代开发的&#…...
智慧园区平台系统在数字化转型中的作用与应用前景探究
内容概要 在当前快速变化的商业环境中,数字化转型已经成为企业发展的重要趋势,而智慧园区平台系统则是这一转型的核心工具之一。这种系统集成了多种现代技术,能够有效提升园区的管理效率、优化资产使用,并提升整体服务水平。智慧…...
19 压测和常用的接口优化方案
高并发的平台应用,项目上线前离不开一个重要步骤就是压测,压测对于编码中的资源是否问题的排查,性能的调优都是离不开的。测试还要做测试报告,出具了测试报告给到运维团队才能上线。 压测的测试报告主要有以下几个方面:1.响应时间…...
buuuctf_秘密文件
题目: 应该是分析流量包了,用wireshark打开 我追踪http流未果,分析下ftp流 追踪流看看 用户 “ctf” 使用密码 “ctf” 登录。 PORT命令用于为后续操作设置数据连接。 LIST命令用于列出 FTP 服务器上目录的内容,但在此日志中未…...
前端学习-事件委托(三十)
目录 前言 课前思考 for循环注册事件 语法 事件委托 1.事件委托的好处是什么? 2.事件委托是委托给了谁,父元素还是子元素 3.如何找到真正触发的元素 示例代码 总结 前言 才子佳人,自是白衣卿相 课前思考 1.如果同时给多个元素注册事件&…...
工具的应用——安装copilot
一、介绍Copilot copilot是一个AI辅助编程的助手,作为需要拥抱AI的程序员可以从此尝试进入,至于好与不好,应当是小马过河,各有各的心得。这里不做评述。重点在安装copilot的过程中遇到了一些问题,然后把它总结下&…...
OPENGLPG第九版学习
文章目录 一、OpenGL概述二、着色器基础三、OpenGL绘制方式四、颜色、像素和片元五、视口变换、裁减、剪切与反馈六、纹理与帧缓存七、光照与阴影八、程序式纹理 skip九、细分着色器 skip十、几何着色器 skip十一、内存十二、计算着色器 skip附录 A 第三方支持库附录 B OpenGL …...
C++中常用的十大排序方法之1——冒泡排序
成长路上不孤单😊😊😊😊😊😊 【😊///计算机爱好者😊///持续分享所学😊///如有需要欢迎收藏转发///😊】 今日分享关于C中常用的排序方法之——冒泡排序的相关…...
算法总结-哈希表
文章目录 1.赎金信1.答案2.思路 2.字母异位词分组1.答案2.思路 3.两数之和1.答案2.思路 4.快乐数1.答案2.思路 5.最长连续序列1.答案2.思路 1.赎金信 1.答案 package com.sunxiansheng.arithmetic.day14;/*** Description: 383. 赎金信** Author sun* Create 2025/1/22 11:10…...
文件上传功能(一)
总说 过程参考黑马程序员SpringBoot3Vue3全套视频教程,springbootvue企业级全栈开发从基础、实战到面试一套通关_哔哩哔哩_bilibili 目录 总说 一、功能实现 1.1 Controller层 二、优化 一、功能实现 1.1 Controller层 在contoller层,创建一个File…...
【LeetCode 刷题】二叉树-二叉树的属性
此博客为《代码随想录》二叉树章节的学习笔记,主要内容为二叉树的属性相关的题目解析。 文章目录 101. 对称二叉树104.二叉树的最大深度111.二叉树的最小深度222.完全二叉树的节点个数110.平衡二叉树257. 二叉树的所有路径404.左叶子之和513.找树左下角的值112. 路…...
Redisson
Redisson快速入门 将原先逻辑修改 Redis代金卷(优惠卷)秒杀案例-多应用版-CSDN博客...
回顾生化之父三上真司的游戏思想
1. 放养式野蛮成长路线,开创生存恐怖类型 三上进入capcom后,没有培训,没有师傅手把手的指导,而是每天摸索写策划书,老员工给出不行的评语后,扔掉旧的重写新的。 然后突然就成为游戏总监,进入开…...
汽车网络信息安全-ISO/SAE 21434解析(中)
目录 第七章-分布式网络安全活动 1. 供应商能力评估 2. 报价 3. 网络安全职责界定 第八章-持续的网络安全活动 1. 网路安全监控 2. 网络安全事件评估 3. 漏洞分析 4. 漏洞管理 第九章-概念阶段 1. 对象定义 2. 网路安全目标 3. 网络安全概念 第十章 - 产品开发 第十…...
Tailwind CSS - Tailwind CSS 引入(安装、初始化、配置、引入、构建、使用 Tailwind CSS)
一、Tailwind CSS 概述 Tailwind CSS 是一个功能优先的 CSS 框架,它提供了大量的实用类(utility classes),允许开发者通过组合这些类来快速构建用户界面 Tailwind CSS 与传统的 CSS 框架不同(例如,Bootstr…...
Python-基于PyQt5,pdf2docx,pathlib的PDF转Word工具
前言:日常生活中,我们常常会跟WPS Office打交道。作表格,写报告,写PPT......可以说,我们的生活已经离不开WPS Office了。与此同时,我们在这个过程中也会遇到各种各样的技术阻碍,例如部分软件的PDF转Word需要收取额外费用等。那么,可不可以自己开发一个小工具来实现PDF转…...
FreeRTOS学习 --- 中断管理
什么是中断? 让CPU打断正常运行的程序,转而去处理紧急的事件(程序),就叫中断 中断执行机制,可简单概括为三步: 1,中断请求 外设产生中断请求(GPIO外部中断、定时器中断…...
【小鱼闪闪】单片机开发工具——米思齐软件下载安装(图文)
浏览器打开网址 mixly.org, 在软件平台选择mixly离线版。 最新版本为3.0,会支持audinio, ESP32、ESP8266 , 可以选择下载安装器或者完整版。 这里选择下载安装器,下载后运行“一键更新.bat”,即可自动下载最新版本的M…...
HarmonyOS:创建应用静态快捷方式
一、前言 静态快捷方式是一种在系统中创建的可以快速访问应用程序或特定功能的链接。它通常可以在长按应用图标,以图标和相应的文字出现在应用图标的上方,用户可以迅速启动对应应用程序的组件。使用快捷方式,可以提高效率,节省了查…...
企业微信远程一直显示正在加载
企业微信远程一直显示正在加载 1.问题描述2.问题解决 系统:Win10 1.问题描述 某天使用企业微信给同事进行远程协助的时候,发现一直卡在正在加载的页面,如下图所示 2.问题解决 经过一番查找资料后,我发现可能是2个地方出了问题…...
FireFox | Google Chrome | Microsoft Edge 禁用更新 final版
之前的方式要么失效,要么对设备有要求,这次梳理一下对设备、环境几乎没有要求的通用方式,universal & final 版。 1.Firefox 方式 FireFox火狐浏览器企业策略禁止更新_火狐浏览器禁止更新-CSDN博客 这应该是目前最好用的方式。火狐也…...
【C++】类和对象(5)
目录 一、构造函数补充1、初始化列表 二、类型转换三、static成员四、友元1、友元函数2、友元类 五、内部类六、匿名对象 一、构造函数补充 对于之前讲解的构造函数,还有一些更深层次的内容要进行补充,接下来进行补充内容的讲解。 1、初始化列表 在我…...
芸众商城小程序会员页面部分图标不显示问题解决办法
我遇到的问题 如下图所示,会员中心这里的图标在小程序端显示异常。但是在网页端又是能够正常显示的。 小程序端截图: 网页端截图: 我的解决方法 检查使用的小程序版本,比如这里使用的是1.2.238版本的小程序,最后…...
Spring Web MVC基础第一篇
目录 1.什么是Spring Web MVC? 2.创建Spring Web MVC项目 3.注解使用 3.1RequestMapping(路由映射) 3.2一般参数传递 3.3RequestParam(参数重命名) 3.4RequestBody(传递JSON数据) 3.5Pa…...
Privacy Eraser,电脑隐私的终极清除者
Privacy Eraser 是一款专为保护用户隐私而设计的全能型软件,它不仅能够深度清理计算机中的各类隐私数据,还提供了多种系统优化工具,帮助用户提升设备的整体性能。通过这款软件,用户可以轻松清除浏览器历史记录、缓存文件、Cookie、…...
编程题-三数之和(中等)
题目: 给你一个整数数组 nums ,判断是否存在三元组 [nums[i], nums[j], nums[k]] 满足 i ! j、i ! k 且 j ! k ,同时还满足 nums[i] nums[j] nums[k] 0 。请你返回所有和为 0 且不重复的三元组。注意:答案中不可以包含重复的三…...
mysql中in和exists的区别?
大家好,我是锋哥。今天分享关于【mysql中in和exists的区别?】面试题。希望对大家有帮助; mysql中in和exists的区别? 在 MySQL 中,IN 和 EXISTS 都是用于子查询的操作符,但它们在执行原理和适用场景上有所不…...
ThinkPHP 8 操作JSON数据
【图书介绍】《ThinkPHP 8高效构建Web应用》-CSDN博客 《2025新书 ThinkPHP 8高效构建Web应用 编程与应用开发丛书 夏磊 清华大学出版社教材书籍 9787302678236 ThinkPHP 8高效构建Web应用》【摘要 书评 试读】- 京东图书 使用VS Code开发ThinkPHP项目-CSDN博客 编程与应用开…...
深入剖析 Docker 的镜像分层存储机制
目录 一、基本原理 镜像构成 UnionFS 二、工作方式 镜像构建时 容器启动时 三、优势 共享与复用 高效存储和传输 快速镜像构建 可追溯性和可维护性 四、相关命令 查看镜像分层 基于已有镜像创建新镜像 Docker 凭借其卓越的性能和极高的灵活性,已然成为众多开发者…...
本地部署DeepSeek
1、打开ollama,点击“Download” Ollamahttps://ollama.com/ 2、下载完成后,安装ollama.exe 3、安装完成后,按"windowsR",输入"cmd” 4、输入“ollama -v”,查看版本,表示安装成功 5、返回ollama网页,…...
10.5 LangChain Model I/O 深度解析:如何用标准化接口打通大模型开发的“任督二脉”?
LangChain Model I/O 深度解析:如何用标准化接口打通大模型开发的“任督二脉”? 关键词: LangChain Model I/O、大模型抽象、LLM标准化调用、多模型支持、流式响应 一、为什么需要标准化的大模型抽象? 1. 大模型开发的现实困境 厂商锁定风险:代码深度耦合特定API(如Op…...
使用Pygame制作“俄罗斯方块”游戏
1. 前言 俄罗斯方块(Tetris) 是一款由方块下落、行消除等核心规则构成的经典益智游戏: 每次从屏幕顶部出现一个随机的方块(由若干小方格组成),玩家可以左右移动或旋转该方块,让它合适地堆叠在…...
OSCP:常见文件传输方法
在渗透测试过程中,文件传输是一个关键环节,涉及不同的协议和工具,本文整理了 Linux 和 Windows 系统下常见的文件传输方法,并提供相应的命令示例。 通用文件传输方式 Base64 编码传输 Base64 可用于跨平台传输文件,…...
基于遗传优化GRNN和Hog特征提取的交通标志识别算法matlab仿真
目录 1.算法运行效果图预览 2.算法运行软件版本 3.部分核心程序 4.算法理论概述 4.1 HOG 4.2 GRNN(General Regression Neural Network)模型原理 4.3 遗传算法(GA)优化GRNN平滑因子 5.算法完整程序工程 1.算法运行效果图预…...
Redis代金卷(优惠卷)秒杀案例-单应用版
优惠卷表:优惠卷基本信息,优惠金额,使用规则 包含普通优惠卷和特价优惠卷(秒杀卷) 优惠卷的库存表:优惠卷的库存,开始抢购时间,结束抢购时间.只有特价优惠卷(秒杀卷)才需要填写这些信息 优惠卷订单表 卷的表里已经有一条普通优惠卷记录 下面首先新增一条秒杀优惠卷记录 { &quo…...
蓝桥杯之c++入门(一)【第一个c++程序】
目录 前言一、第⼀个C程序1.1 基础程序1.2 main函数1.3 字符串1.4 头文件1.5 cin 和 cout 初识1.6 名字空间1.7 注释 二、四道简单习题(点击跳转链接)练习1:Hello,World!练习2:打印飞机练习3:第⼆个整数练习4ÿ…...
数据结构 树1
目录 前言 一,树的引论 二,二叉树 三,二叉树的详细理解 四,二叉搜索树 五,二分法与二叉搜索树的效率 六,二叉搜索树的实现 七,查找最大值和最小值 指针传递 vs 传引用 为什么指针按值传递不会修…...
EtherCAT主站IGH-- 25 -- IGH之fsm_slave_scan.h/c文件解析
EtherCAT主站IGH-- 25 -- IGH之fsm_slave_scan.h/c文件解析 0 预览一 该文件功能`fsm_slave_scan.c` 文件功能函数预览二 函数功能介绍`fsm_slave_scan.c` 中主要函数的作用1. `ec_fsm_slave_scan_state_start`2. `ec_fsm_slave_scan_state_address`3. `ec_fsm_slave_scan_stat…...
redis数据安全与性能保障
数据安全与性能保障 1、持久化1.1 快照持久化1.2 AOF持久化1.3 重写/压缩AOF文件 2、复制2.1 Redis复制的启动过程2.2 主从链 3、处理系统故障3.1 验证快照文件和AOF文件 4、事务4.1 java中的redis事务使用 如有侵权,请联系~ 如有错误,也欢迎…...
llama.cpp LLM_CHAT_TEMPLATE_DEEPSEEK_3
llama.cpp LLM_CHAT_TEMPLATE_DEEPSEEK_3 1. LLAMA_VOCAB_PRE_TYPE_DEEPSEEK3_LLM2. static const std::map<std::string, llm_chat_template> LLM_CHAT_TEMPLATES3. LLM_CHAT_TEMPLATE_DEEPSEEK_3References 不宜吹捧中国大语言模型的同时,又去贬低美国大语言…...
【图文详解】lnmp架构搭建Discuz论坛
安装部署LNMP 系统及软件版本信息 软件名称版本nginx1.24.0mysql5.7.41php5.6.27安装nginx 我们对Markdown编辑器进行了一些功能拓展与语法支持,除了标准的Markdown编辑器功能,我们增加了如下几点新功能,帮助你用它写博客: 关闭防火墙 systemctl stop firewalld &&a…...
一文读懂fgc之cms
一文读懂 fgc之cms-实战篇 1. 前言 线上应用运行过程中可能会出现内存使用率较高,甚至达到95仍然不触发fgc的情况,存在内存打满风险,持续触发fgc回收;或者内存占用率较低时触发了fgc,导致某些接口tp99,tp…...
Agent 高频知识汇总:查漏补缺参考大全
Agent 高频问题汇总 一、基础概念类 (一)请解释 Agent 的概念及其主要特点 Agent 是一种能够感知所处环境,并基于感知信息做出决策、采取行动以实现特定目标的实体。它既可以是简单的规则基系统,也能是复杂的智能体,…...
毕业设计--具有车流量检测功能的智能交通灯设计
摘要: 随着21世纪机动车保有量的持续增加,城市交通拥堵已成为一个日益严重的问题。传统的固定绿灯时长方案导致了大量的时间浪费和交通拥堵。为解决这一问题,本文设计了一款智能交通灯系统,利用车流量检测功能和先进的算法实现了…...
fatal error C1083: [特殊字符]ļ: openssl/opensslv.h: No such file or directory
一、环境 1. Visual Studio 2017 2. edk2:202305 3. Python:3.11.4 二、 fatal error C1083: 򿪰ļ: openssl/opensslv.h: No such file or directory 上图出现这个警告,不用管。 出现Done,说明编译成功。 执行上…...
EasyExcel使用详解
文章目录 EasyExcel使用详解一、引言二、环境准备与基础配置1、添加依赖2、定义实体类 三、Excel 读取详解1、基础读取2、自定义监听器3、多 Sheet 处理 四、Excel 写入详解1、基础写入2、动态列与复杂表头3、样式与模板填充 五、总结 EasyExcel使用详解 一、引言 EasyExcel 是…...
论文阅读(十六):利用线性链条件随机场模型检测阵列比较基因组杂交数据的拷贝数变异
1.论文链接:Detection of Copy Number Variations from Array Comparative Genomic Hybridization Data Using Linear-chain Conditional Random Field Models 摘要: 拷贝数变异(CNV)约占人类基因组的12%。除了CNVs在癌症发展中的…...
7.抽象工厂(Abstract Factory)
抽象工厂与工厂方法极其类似,都是绕开new的,但是有些许不同。 动机 在软件系统中,经常面临着“一系列相互依赖的对象”的创建工作;同时,由于需求的变化,往往存在更多系列对象的创建工作。 假设案例 假设…...
从0开始使用面对对象C语言搭建一个基于OLED的图形显示框架(基础组件实现)
目录 基础组件实现 如何将图像和文字显示到OLED上 如何绘制图像 如何绘制文字 如何获取字体? 如何正确的访问字体 如何抽象字体 如何绘制字符串 绘制方案 文本绘制 更加方便的绘制 字体附录 ascii 6x8字体 ascii 8 x 16字体 基础组件实现 我们现在离手…...
负荷预测算法模型
1. 时间序列分析方法 时间序列分析方法是最早被用来进行电力负荷预测的方法之一,它基于历史数据来构建数学模型,以描述时间与负荷值之间的关系。这种方法通常只考虑时间变量,不需要大量的输入数据,因此计算速度快。然而ÿ…...