I2C通信講解

I2C總線發展史

image-20250605213607253

image-20250605213644012

image-20250605213705754

image-20250605213808565

怎么在一條串口線上連接多個設備呢?

image-20250605213851905

image-20250605213918725

image-20250605214001109

由于速度同步線是由主機實時發出的,所以主機可以按需求修改通信速度,這樣在一條線上可以掛接不同速度的器件,單片機和性能差的器件通信,就輸出較慢的脈沖信號,和高性能芯片通信,就輸出高速脈沖信號。

這條速度同步線被稱為SCL時鐘線

原來的串口線被稱為SDA數據線

學習一種協議,用于所有I2C器件上

image-20250605214250318

因為有地址保留所以只能連接111個器件

image-20250605214352061

芯片的地址并不是由廠商隨意寫的,而是要得到飛利浦公司的授權

I2C硬件連接

image-20250605214538427

image-20250605214555850

image-20250605214623796

還要為SCL和SDA線添加上拉電阻

image-20250605214653655

I2C器件的所有接口必須是開漏模式(I2C器件的SCL和SDA必須是開漏模式),各自器件沒有上拉或下拉電阻,如果每個器件內部都添加上拉電阻,當把大量的器件連在一起,上拉電阻的阻值也會累加,就對單片機IO端口的電流輸出能力有很高的要求,最終也會影響到通信速度和穩定性。

image-20250605215004680

image-20250605215034240

事先將地址設置引腳連接到Vdd或GND上,這樣才能確定器件的地址編碼

各器件可以使用同一個電源也可以使用不同的電源

image-20250605215209495

上拉電阻使無信號時線上為高電平

如何傳遞數據內容

image-20250605215515841

SCL派上用場了

image-20250605215549961

Hz變化頻率決定通信總速度

image-20250605215917709

image-20250605215949362

image-20250605220026000

單片機可以利用這個休息時間把下一個要發送的數據準備好

image-20250605220159764

image-20250605220249485

image-20250605220324278

單片機讓出控制權

image-20250605220339895

image-20250605220443537

如果是默認的高電平就代表無應答,從設備沒有收到數據,或者說收到了,但是數據是錯誤的

image-20250605220616516

image-20250605220654194

沒有問題的話,SDA就會連接到GND使SDA輸出低電平

image-20250605220747431

image-20250605220802539

image-20250605220818529image-20250605220832568

總之就是誰接收誰應答

image-20250605220915539

image-20250605220947172

要確定第一個工作區間在哪?

在第一個工作期間之前加一個 (起始位),再在最后一個工作期間后面,加入一個(結束位),也叫停止位

想出這個起始位和停止位的人是天才

image-20250605221238154

完整時序圖

image-20250605221352844

來研究數據內容層面的東西

image-20250605221524229

image-20250605221620248

image-20250605221633512

接下來是讀數據

image-20250605221756348

如何標出本次通信是接收(讀)還是發送(寫)

image-20250605221834658

image-20250605221858644

讀操作是從設備將向單片機發送數據

寫操作是是單片機向從設備發送數據

下面是出現的一個新問題

image-20250605222136180

像從設備每次讀/寫多個數據都要從第一個寄存器的盒子開始讀寫,假如我們想寫第四個寄存器中的數據,那也要從第一個寄存器開始寫,連續寫四個才行,這樣的操作是非常麻煩的,于是I2C協議規定了一個指針功能,英文是Pointer

image-20250605222320209

指針功能就是利用一組數據中第二個DATA數據,當作指針來使用

image-20250605222354440

如果要讀寫第四個寄存器,也可以表示從第四個寄存器開始讀寫

image-20250605222427304

image-20250605222627334

image-20250605222657176

下次再讀時可以不使用指針了,直接讀取上一次指針指向的寄存器內容,這個指針在國內被翻譯成子地址/寄存器地址

如果一條總線上連接多個從設備,單片機要如何區分它們

image-20250605222901551

不是此號碼的從設備將處在待機狀態

image-20250605222939021

左邊7位二進制數就表示著器件地址

image-20250605223022654

image-20250605223042104

image-20250605223112117

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/908297.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/908297.shtml
英文地址,請注明出處:http://en.pswp.cn/news/908297.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Windows 10 IoT 系統深度定制指南:從環境搭建到工業部署

目錄 一、Windows 10 IoT 架構特性與版本選型 1.1 核心架構設計 1.2 版本對比與選型建議 二、開發環境搭建與硬件適配 2.1 工具鏈配置 2.2 硬件適配關鍵步驟 三、系統定制流程詳解 3.1 鏡像定制(IoT Core Dashboard) 3.2 使用ICD(Im…

k8s開發webhook使用certmanager生成證書

1.創建 Issuer apiVersion: cert-manager.io/v1 kind: Issuer metadata:name: selfsigned-issuernamespace: default spec:selfSigned: {}2.Certificate(自動生成 TLS 證書) apiVersion: cert-manager.io/v1 kind: Certificate metadata:name: webhook…

MyBatis-Plus深度全解:從入門到企業級實戰

MyBatis-Plus深度全解:從入門到企業級實戰 一、為什么選擇MyBatis-Plus? 1.1 MyBatis的痛點 - 重復CRUD代碼編寫 - 分頁功能實現復雜 - 缺少通用Service層封裝 - 動態表名支持困難 - 多租戶方案需自行實現1.2 MyBatis-Plus核心優勢 無侵入&#xff1a…

【無標題】路徑著色問題的革命性重構:拓撲色動力學模型下的超越與升華

路徑著色問題的革命性重構:拓撲色動力學模型下的超越與升華 一、以色列路徑著色模型的根本局限 mermaid graph TB A[以色列路徑著色模型] --> B[強連通約束] A --> C[僅實邊三角剖分] A --> D[靜態色彩分配] B --> E[無法描述非相鄰關系] C --> F[忽…

01 Deep learning神經網絡的編程基礎 二分類--吳恩達

二分類 1. 核心定義 二分類任務是監督學習中最基礎的問題類型,其目標是將樣本劃分為兩個互斥類別。設樣本特征空間為 X ? R n \mathcal{X} \subseteq \mathbb{R}^n X?Rn,輸出空間為 Y { 0 , 1 } \mathcal{Y} \{0,1\} Y{0,1},學習目標為…

數據結構:遞歸:泰勒展開式(Taylor Series Expansion)

目錄 第一步:?我們要解決什么? 第二步:將其類比為求自然數和 第三步:什么是每一項? 第四步:定義要計算的每一項(term) 第五步:定義遞歸函數結構 🌳 調用…

Hadolint:Dockerfile 語法檢查與最佳實踐驗證的終極工具

在容器化應用開發的浪潮中,Dockerfile 作為構建 Docker 鏡像的核心配置文件,其質量直接影響著應用的安全性、穩定性和可維護性。然而,隨著項目復雜度的增加,手動檢查 Dockerfile 不僅耗時,還容易遺漏潛在問題。今天,我要向大家介紹一款強大的工具——Hadolint,它將徹底改…

redis數據過期策略、淘汰策略

過期鍵的刪除策略? ??1. 被動刪除(惰性刪除)?? ??觸發時機??:當客戶端嘗試訪問某個鍵時,Redis會先檢查該鍵是否過期。就是說,我們不時時檢查每個鍵是否過期,而是在使用到這個鍵時檢查是否過期&a…

ES 學習總結一 基礎內容

ElasticSearch學習 一、 初識ES1、 認識與安裝2、 倒排索引2.1 正向索引2.2 倒排索引 3、 基本概念3.1 文檔和字段3.2 索引和倒排 4 、 IK分詞器 二、 操作1、 mapping 映射屬性2、 索引庫增刪改查3、 文檔的增刪改查3.1 新增文檔3.2 查詢文檔3.3 刪除文檔3.4 修改文檔3.5 批處…

鴻蒙任務項設置案例實戰

目錄 案例效果 資源文件與初始化 string.json color.json CommonConstant 添加任務 首頁組件 任務列表初始化 任務列表視圖 任務編輯頁 添加跳轉 任務目標設置模型(formatParams) 編輯頁面 詳情頁 任務編輯列表項 目標設置展示 引入目標…

DeepSeek-R1-0528重磅升級:三大突破重新定義AI生產力

2025年5月28日,中國AI領軍企業深度求索(DeepSeek)正式發布DeepSeek-R1-0528版本,這是繼2025年1月R1模型登頂中美App Store后,DeepSeek在通用大模型領域的又一次戰略級突破。此次升級雖為小版本迭代,卻在推理…

【算法訓練營Day07】字符串part1

文章目錄 反轉字符串反轉字符串II替換數字 反轉字符串 題目鏈接&#xff1a;344. 反轉字符串 雙指針法&#xff0c;兩個指針的元素直接調轉即可 class Solution {public void reverseString(char[] s) {int head 0;int end s.length - 1;while(head < end) {char temp …

中國西部逐日1 km全天候地表溫度數據集(TRIMS LST-TP;2000-2024)

時間分辨率&#xff1a;日空間分辨率&#xff1a;100m - 1km共享方式&#xff1a;開放獲取數據大小&#xff1a;474.31 GB數據時間范圍&#xff1a;2000-01-01 — 2024-12-31元數據更新時間&#xff1a;2025-05-31 數據集摘要 青藏高原是全球氣候變化的敏感區域。地表溫度&…

PPT轉圖片拼貼工具 v1.0

軟件介紹 這個軟件的作用就是將單個PPT的每一頁轉換為單獨的圖片&#xff0c;然后將圖片進行拼接起來。 但是我沒有還沒有解決一次性處理多個文件。 效果展示如下&#xff1a; 軟件安裝 軟件源碼 import os import re import win32com.client from PIL import Imagedef con…

嵌入式學習筆記DAY33(網絡編程——TCP)

一、網絡架構 C/S &#xff08;client/server 客戶端/服務器&#xff09;&#xff1a;由客戶端和服務器端兩個部分組成。客戶端通常是用戶使用的應用程序&#xff0c;負責提供用戶界面和交互邏輯 &#xff0c;接收用戶輸入&#xff0c;向服務器發送請求&#xff0c;并展示服務…

拋磚引玉:RadarDet4D,NuScenes數據集Radar模態目標檢測第二名(即將開源)

這幾年一直在關注自動駕駛3D目標檢測相關的研究。在NuScenes數據集上有很多經典的模型被提出并得到了驗證&#xff0c;純視覺3D目標檢測經典的方法有BEVFormer、BEVDet系列、DETR3D、Sparse4D等工作&#xff0c;基于LiDAR的有CenterPoint、多模態有BEVFusion、DAL、UniTR等。 …

更新Java的環境變量后VScode/cursor里面還是之前的環境變量

最近我就遇到這個問題&#xff0c;這個一般是安裝了多個版本的Java&#xff0c;并設置好環境變量&#xff0c;但VScode/cursor內部環境變量卻沒有改變 解決辦法 打開設置&#xff0c;或者直接快捷鍵CTRL&#xff0c;搜索Java:Home編輯settings.json文件 把以下部分改為正確的…

線程的基礎知識

進程和線程的區別&#xff1f; 從實例去引入我們的進程和線程的概念&#xff0c;說出進程和線程的關系&#xff0c;引出線程&#xff0c;說出兩者的內存分配占用&#xff0c;上下文切換的區別 當操作系統把我們磁盤中的程序加載到我們的內存當中&#xff0c;為其分配內存空間&a…

x86 匯編中的【條件跳轉指令】:從基礎到擴展的全面解析(查表版)

為了徹底覆蓋 x86 架構中所有條件跳轉指令&#xff0c;包括 8086 到現代 x86-64 的全部變體&#xff0c;我重新整理了分類體系&#xff0c;并補充了鮮為人知的指令變體、操作數大小前綴和歷史演進。 本文需要運用的知識(需要詳細了解可點擊對應的點)&#xff1a; flags寄存器…

FPGA點亮ILI9488驅動的SPI+RGB接口LCD顯示屏(一)

FPGA點亮ILI9488驅動的SPIRGB接口LCD顯示屏 ILI9488 RGB接口初始化 目錄 前言 一、ILI9488簡介 二、3線SPI接口簡介 三、配置寄存器介紹 四、手冊和初始化verilog FPGA代碼 總結 前言 ILI9488是一款廣泛應用于嵌入式系統和電子設備的彩色TFT LCD顯示控制器芯片。本文將介…