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

N15 I²C(串行通信总线)

一、多路IO

红黑树(Red-Black Tree)是一种自平衡二叉搜索树(BST),通过5 条颜色性质将树高控制在O(log n)量级,保证查找、插入、删除的时间复杂度稳定为O(log n)。相比 AVL 树,它平衡要求更宽松,插入 / 删除时旋转次数更少。

(内核链表核心)

内核list_head链表节点只存前后指针,不包含业务数据。要通过链表节点指针找回整个结构体指针

  • 已知s2.liststruct stu里的list成员指针
  • &s1.list - &s1 = 24得到偏移量
  • 那么(struct stu *)((char *)&s2.list - 24)就能得到&s2,即从链表节点指针反推出父结构体指针

二、I²C:串行通信总线

特性开漏输出 (Open-Drain)推挽输出 (Push-Pull)
输出结构仅 N-MOS 下拉N-MOS 下拉 + P-MOS 上拉
高电平外部上拉电阻内部 P-MOS 主动拉高
低电平内部 N-MOS 主动拉低内部 N-MOS 主动拉低
高阻态MOS 管关断时为高阻无高阻态(始终输出高 / 低)
总线共享支持 “线与”,多设备并联安全不支持,易短路冲突
电平兼容可通过上拉电源实现电平转换电平固定为 GPIO 电源电压

空闲时总线保持高电平

  • SCL(Serial Clock):串行时钟线,由主机驱动,同步所有设备的通信节奏。
  • SDA(Serial Data):串行数据线,双向传输数据与地址,采用开漏输出设计,支持多设备共享。

不需要像UART那样通信时接地,一般情况已经共地了

ACK/NACK 的完整机制

I²C 通信中,发送方在每发送完 8 位数据后,会主动检测第 9 位的 ACK/NCK 信号;接收方则在第 9 个时钟周期驱动 SDA 来发出应答。

时序:空闲时总线保持高电平

起始信号:SCL为高时,SDA由高到低

数据发送期间:SCL为低时,SDA可以跳变,SCL为高时,SDA保持不变(每次传输以8bit为

基本单位)

数据发送完成后,由接收方发出应答信号(1bit的低电平),如果没有应答,通信强制停止。

停止信号:SCL为高时,SDA由低到高。

1.通信只能由主机发起。

2.时钟线永远由主机控制。

3.数据线传输数据时由发送方控制,应答信号由接收方控制

------主机写数据控制数据位,从机控制应答

------主机读从机控制数据位,主机控制应答

4.主机第一次发送的数据永远是7位从机地址+1位的读写标志(0写 1读)。

IIC典型时钟频率:100K ; 400K ;3.4M (指的上限)

http://www.cnnetsun.cn/news/1590558.html

相关文章:

  • 远程控制频繁断连的排查与优化方案
  • 模糊逻辑在年龄分类中的MATLAB实现与优化
  • Java记录模式深度解析:3种你绝对想不到的嵌套解构用法(JDK 21新特性权威解读)
  • 百考通:AI全流程智能化赋能实践报告,让实习总结高效又专业
  • PvZ Toolkit:开源植物大战僵尸修改工具的全方位游戏增强方案
  • Vue3大屏开发踩坑记:transform缩放导致地图偏移的3种解决方案
  • 银滩漫浪:北海海岸绵延千里的纯白画卷
  • 无需显卡!Windows 纯 CPU 部署 Qwen2.5-1.5B 完整指南
  • 3分钟掌握PCL2-CE:打造你的专属Minecraft启动器
  • GRSL前沿解读 | 融合SAR与光学影像的深度学习云去除:从架构设计到地表洞察
  • Excel文件xls转xlsx?5个实用方法一步到位
  • 每周一个开源项目 #3:OpenClaw龙虾机器人
  • 纠结,到底是考研还是考公......
  • pk3DS:自定义宝可梦游戏体验的开源工具
  • 别再死记硬背了!用Python代码和可视化图表,5分钟搞懂IEEE754浮点数精度与范围
  • 告别ReLU?用PyTorch和TensorFlow亲手实现Swish激活函数(附代码对比)
  • X-NUCLEO-IKA01A1:STM32模拟前端硬件即API设计解析
  • 如何在30分钟内用OpCore-Simplify快速完成OpenCore EFI自动化配置?
  • 工程级精准计算!UPS后备时间精算方法与配置规范
  • 基于XGBoost-SHAP的可解释机器学习建模及资源环境领域运用与顶刊论文拆解与复现实战
  • ATX电源选购避坑指南:从80Plus认证到模组化,这些参数你真的懂吗?
  • G-Helper黑科技:华硕笔记本性能优化的终极秘籍
  • 5分钟掌握Windows字体自定义:No!! MeiryoUI深度配置指南
  • 手把手教你搭建基于Matlab/Simulink的插电式混合动力汽车4驱PHEV模型
  • BUG情色经济:用户为系统异常兴奋付费
  • AI如何悄悄改变你的日常生活?5个你已离不开的AI应用场景
  • 误删Anaconda?3步极速抢救指南
  • 焊接机器人避坑指南:轨迹规划中3个90%人会犯的MATLAB错误
  • 基于 MindSpore+OpenCV 的锂电池柔性化焊点识别与自动化焊接系统
  • RouterOS固定IP接入避坑指南:如何正确配置IP POOL和NAT伪装(实测有效)