江科大51單片機筆記【12】AT24C02(I2C總線)

寫在前言


? 此為博主自學江科大51單片機(B站)的筆記,方便后續重溫知識

? 在后面的章節中,為了防止篇幅過長和易于查找,我把一個小節分成兩部分來發,上章節主要是關于本節課的硬件介紹、電路圖、原理圖等理論知識,主要是為下章節的代碼部分打基礎。

? 我的單片機是24年12月在tb普中買的,型號是STC89C52,在原視頻中引腳或接口不對應的我都會改正,保證在我的機子上能運行才發上來的,還有一些文字部分是我的理解,并非照搬,所以可能有理解不到位的現象。

? 如有誤或交流,敬請指點提問

一、存儲器

1.介紹

RAM的特點是存儲速度特別快,但是掉電會丟失;ROM的特點是存儲速度特別慢,但是掉電不會丟失

SRAM是所有存儲器最快的,一般用于電腦的CPU高速緩存,容量相對較少,成本較高;DRAM原理是用電容存儲,容值很小,需要配一個掃描電路,需要每隔一段時間補電,一般用于電腦的內存條,手機的運行內存,容量相對較大,成本較低

ROM的前四個都是一個系列的,MaskROM只能讀取不能寫;PROM可編程,但是只能寫入一次;EPROM即可以編程也可以擦除,清除需要拿紫外線照射30分鐘,E2PROM這種只需要用電就可以擦除(本單片機所用);Flash(閃存):電腦固態硬盤,手機存儲,運用最廣泛;硬盤(電腦機械硬盤,利用電磁存儲)、軟盤(淘汰)、光盤(光信號存儲)

2.簡化模型

橫向的線成為地址總線;豎向的線稱為數據總線

我們在橫線賦值就是選擇地址,在豎線賦值就是寫入數據

右邊這樣接一個二極管的連接方式可以有效防止其他行干擾

PROM跟MaskROM其實一樣,藍色的二極管是一種特殊二極管,即很容易擊穿,當我們在橫線給高電壓,藍色二極管就會被擊穿,就會變成右邊的狀態,但是被擊穿之后就永遠被擊穿了,所以我們只能寫入一次,這就是PROM

二、AT24C02

1.介紹

  • AT24C02是一種可以實現掉電不丟失的存儲器,可用于保存單片機運行時想要永久保存的數據信息
  • 存儲介質:EPROM
  • 通訊接口:I2C總線
  • 容量:256字節

2.引腳及應用電路

  • VCC、GND:電源(1.8V-5.5V)
  • WP:寫保護(高電平有效
  • SCL、SDA:I2C接口
  • A0、A1、A2:I2C地址

3.內部結構框圖??

三、I2C(I方C)總線(重難點)

總覽:先介紹,電路,然后學六種時序函數,寫數據幀,學三種數據幀,再學習AT24C02數據幀

1.介紹

  • I2C總線(intel IC BUS)是有飛利浦公司開發的一種通用數據總線
  • 兩根通信線:SCL(serial clock)、SDA(serial data)
  • 同步、半雙工、帶數據應答
  • 通用的I2C總線,可以使各種設備的通信標準統一,對于廠家來說,使用成熟的方案可以縮短芯片設計周期、提高穩定性,對于應用者來說,使用通用的通信協議可以避免學習各種各樣的自定義協議、降低了學習和應用的難度
  • 左1圖是一個小巧的OLED屏幕,左2圖是D3231,一種時鐘芯片,比1302精度高很多 ,右1圖是一種陀螺儀傳感器,姿態傳感器,用于平衡車無人機等;這些都可以通過I2C模塊進行通信

2.電路規范

  • 所有I2C設備的SCL連在一起,SDA連在一起
  • 設別的SCL和SDA均要配置成開漏輸出模式
  • SCL和SDA各添加一個上拉電阻,阻值一般為4.7K歐左右
  • 開漏輸出和上拉電阻的共同作用實現了“線與”的功能,此設計主要是為了解決多級通信互相干擾的問題
  • 左圖是一個連接圖,開漏輸出保證了CPU想通信某一個設備時,其他設備沒有干擾,給1就會進入浮空狀態
  • 右圖是內部結構,下面的三角是一個輸入的緩存,輸入阻抗很大相當于斷開,相當于一個電壓表監視著電壓;上面是目視管,相當于電子開關,給低電平導通,給高電平斷開,不干擾外界

3.I2C時序結構

(1)起始和終止

  • 起始條件:SCL高電平期間,SDA從高電平切換到低電平S:Start
  • 終止條件:SCL高電平期間,SDA從低電平切換到高電平P:Stop

(2)發送和接收

  • ?發送一個字節:SCL低電平期間,主機(單片機)將數據位依次放到SDA線上(高位在前),然后拉高SCL,從機將在SCL高電平期間讀取數據位,所以SCL高電平期間SDA不允許有數據變化,依次循環上述過程8次,即可發送一個字節

  • 接收一個字節:?SCL低電平期間,從機將數據位依次放到SDA線上(高位在前),然后拉高SCL,主機將在SCL高電平期間讀取數據位,所以SCL高電平期間SDA不允許有數據變化,依次循環上述過程8次,即可接收一個字節(主機在接收之前,需要釋放SDA)

(3)應答

  • 發送應答:在接收完一個字節之后,主機在下一個時鐘發送一位數據,數據0表示應答,數據1表示非應答
  • 接收應答:在發送完一個字節之后,主機在下一個時鐘接收一位數據,判斷從機是否應答,數據0表示應答,數據1表示非應答(主機在接收之前,需要釋放SDA)

4.I2C數據幀

(1)發送一幀數據

首先是Strat起始時序;第二個是發送“從機地址+讀寫位”,又分為八位,前七位是地址,地位前4位是固定的,不同芯片不同,我們24C02固定為1010,最后一位是讀寫標識位;第三個是RA:0,接收應答,每次發送后都會加一個接收應答,接下來是發送第一個字節,接收應答,發送第二個字節,接收應答等等等,最后是Stop結束時序

(2)接收一幀數據

結構差不多都一樣,區分就是第二個的最后一位是讀取位,然后最后一位要發送非發送應答

(3)符合格式(先發送再接收數據幀)

就是在發送完數據幀,不寫終止時序,接上讀取數據幀

5.AT24C02數據幀

  • 字節寫:在WORD ADDRESS處寫入數據DATA

  • 隨機讀:讀出在WORD ADDRESS處的數據DATA
  • AT24C02的固定地址為1010,可配置地址本開發板上為000,所以SLAVE ADDRESS+W為0xA0,SLAVE ADDRESS+R為0xA1?

下面看看手冊里的關于這部分的解釋

  • 字節寫:在“字地址”處寫入“數據”

  • 隨機讀:讀出在“字地址”處的“數據”

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

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

相關文章

ClickHouse SQL優化:從原理到實戰的深度指南

目錄 ?ClickHouse架構核心解析 1.1 列式存儲的利刃與短板 1.2 MergeTree引擎的物理存儲密碼 1.3 向量化執行引擎的運算革命 ?數據建模的黃金法則 2.1 分區鍵設計的二十倍性能差異實驗 2.2 主鍵排序的磁盤命中率法則 2.3 稀疏索引的數學選擇策略 ?SQL優化十誡 3.1 查詢模式反…

面試之《前端常見的設計模式》

前端開發中運用多種設計模式可以提高代碼的可維護性、可擴展性和可復用性。以下是一些常見的前端設計模式: 創建型模式 1. 單例模式 定義:確保一個類只有一個實例,并提供一個全局訪問點。應用場景:在前端中,像全局狀…

Unity Android出包

Unity Android出包 1.Android Studio版本 不能高于Unity的版本 2.so庫 這個庫需要自己拷貝到Android工程當中 3.JDK版本太老 編譯可以正常,但無法運行 File->ProjectStructure->SDK Location->Gradle Setting->Gradle JDK->X:/Android Stuido/jre …

Android 中臨時文件存放路徑選擇

在 Android 中,下載臨時文件通常可以放在以下目錄中,具體選擇取決于應用的需求和目標 Android 版本的限制: 1. 通用臨時目錄(/data/local/tmp/) 這是 Android 系統提供的一個通用臨時目錄,適用于存儲臨時…

【軟件測試】--面試

準備簡歷–面試邀請 投遞簡歷 面試(筆試,HR面試,技術官面試) 入職準備(體檢,背調) 辦理入職(簽合同) 入職培訓 試用期 轉正 【簡歷要點】 1.基本信息 學校專業&#xff…

C盤清理技巧分享:釋放空間,提升電腦性能

目錄 1. 引言 2. C盤空間不足的影響 3. C盤清理的必要性 4. C盤清理的具體技巧 4.1 刪除臨時文件 4.2 清理系統還原點 4.3 卸載不必要的程序 4.4 清理下載文件夾 4.5 移動大文件到其他盤 4.6 清理系統緩存 4.7 使用磁盤清理工具 4.8 清理Windows更新文件 4.9 禁用…

rpm安裝nux-dextop時出現 epel-release is needed的解決方案

大家好,我是愛編程的喵喵。雙985碩士畢業,現擔任全棧工程師一職,熱衷于將數據思維應用到工作與生活中。從事機器學習以及相關的前后端開發工作。曾在阿里云、科大訊飛、CCF等比賽獲得多次Top名次。現為CSDN博客專家、人工智能領域優質創作者。喜歡通過博客創作的方式對所學的…

qt加載VeloView工程

接上一篇點云軟件配置與編譯,使用qt加載需要先完成編譯。編譯完成后到編譯目錄下lidarview-superbuild\common-superbuild\lidarview\build 找到CmakeCache.txt,如下是我的編譯目錄。 使用QT6.5.3加載了CmakeCache.txt,QT5.14還加載不了cmake…

python編寫的一個打磚塊小游戲

游戲介紹 打磚塊是一款經典的街機游戲,玩家控制底部的擋板,使球反彈以擊碎上方的磚塊。當球擊中磚塊時,磚塊消失,球反彈;若球碰到擋板,則改變方向繼續運動;若球掉出屏幕底部,玩家失…

git 基本常用操作,切換分支,合并分支

分支 two 查看所有分支 git branch 切換分支(two) git checkout two 創建并切換到新分支(two) git checkout -b two 提交當前代碼到到源分支 git push --set-upstream origin two 合并分支 1. 切換到目標分支 例如,…

【QT】事件系統入門——QEvent 基礎與示例

一、事件介紹 事件是 應用程序內部或者外部產生的事情或者動作的統稱 在 Qt 中使用一個對象來表示一個事件。所有的 Qt 事件均繼承于抽象類 QEvent。事件是由系統或者 Qt 平臺本身在不同的時刻發出的。當用戶按下鼠標、敲下鍵盤,或者是窗口需要重新繪制的時候&…

自然語言處理初學者指南

文章目錄 一、說明二、自然語言處理發展史2.1 最早的自然語言處理簡介2.2 歷史2.3 NLP 的早期工作 三、NLP的現代方法3.1 單詞編碼3.2 循環神經網絡3.3 強化學習3.4 深度學習 四、更進一步的方法 一、說明 對于初學者來說,自然語言處理的發展歷史非常有必要了解&am…

unittest vs pytest區別

unittest vs pytest 對比 ?unittest 像“手動擋汽車”:操作步驟多,規則嚴格,適合老司機。?pytest 像“自動擋汽車”:開起來輕松,功能強大,適合新手和高效開發。 區別點?unittest?(你學過的&…

CT117E-M4 CubeMX與Keil5 MDK-ARM基礎配置

目錄 1.CubeMX構建項目 2.芯片時鐘配置 2.1 芯片引腳配置 2.2 時鐘樹配置 3.調試接口配置 4.項目管理器Project Manager配置 4.1 project 4.2 Code Generator 5. 生成代碼 6.MDK_ARM配置 6.1 編譯器選擇 ?6.2 調試器配置 7. 創建本地代碼文件夾 8. #include 路徑…

MySQL中有哪幾種鎖?

大家好,我是鋒哥。今天分享關于【MySQL中有哪幾種鎖?】面試題。希望對大家有幫助; MySQL中有哪幾種鎖? 1000道 互聯網大廠Java工程師 精選面試題-Java資源分享網 在MySQL中,鎖是用來控制并發訪問的機制,確…

MongoDB 和 Elasticsearch的區別、優缺點對比,以及選型建議

MongoDB 和 Elasticsearch 在存儲和搜索方面各有特點,適用于不同的場景。以下是它們的區別、優缺點對比,以及選型建議。 1. 概述 MongoDB:分布式 NoSQL 文檔數據庫,基于 BSON(類似 JSON)的文檔存儲&#x…

55.HarmonyOS NEXT 登錄模塊開發教程(九):部署與發布

溫馨提示:本篇博客的詳細代碼已發布到 git : https://gitcode.com/nutpi/HarmonyosNext 可以下載運行哦! HarmonyOS NEXT 登錄模塊開發教程(九):部署與發布 效果預覽 1. 引言 在前八篇教程中,我們介紹了H…

vue3實現跨頁面緩存

避免頻繁向后端發送請求,vue3中,可以用緩存機制,為了實現跨頁面緩存,可以把緩存放到localsotrage里面 關鍵代碼: const globalCache JSON.parse(localStorage.getItem(globalCache)) || {}; 然后加一個forceRefresh關鍵字, const fetchData async (forceRefresh false) …

c++類和對象(下篇)上

今天又重新回到c的學習中~在前兩篇博客中,我簡單的學習了類的定義,實例化,以及類中的默認成員函數.下篇是類和對象的收尾篇,在這篇中我將補充一下中篇所講的構造函數以及介紹一些類和對象的新知識.下面讓我們開始學習吧. 再談構造函數 在之前我們實現構造函數時,初始化成員變量…

深度學習 bert流程

Token IDs 在自然語言處理任務中,特別是使用預訓練模型如BERT時,文本首先通過一個分詞器(例如 BertTokenizer)轉換為一系列的token IDs。這些ID是每個詞或子詞單元在詞匯表(包含漢字、英文單詞、標點符號)…