【嵌入式學習筆記】嵌入式入門7——IIC總線協議

1.IIC簡介

IIC即Inter Integrated Circuit,集成電路總線,是一種同步,串行,半雙工通信總線。
IIC總線協議——總線就是傳輸數據通道,協議就是傳輸數據的規則
,有以下特點:

  • 由時鐘線SCL和數據線SDA組成,并且都接上拉電阻,確保總線空閑狀態為高電平
  • 總線支持多設備連接,允許多主機存在,每個設備都有一個唯一的地址
  • 連接到總線上的數目受總線的最大電容400pf限制
  • 數據傳輸速率:標準模式100k bit/s 快速模式400k bit/s 高速模式3.4Mbit/s
    在這里插入圖片描述

IIC協議時序

在這里插入圖片描述
在這里插入圖片描述

IIC通信過程

  • 寫操作過程
    在這里插入圖片描述
  • 讀操作過程
    在這里插入圖片描述

2.EEPROM與24C02簡介

EEPROM是一種掉電后數據不丟失的儲存器,常用來存儲一些配置信息,在系統重新上電時就可以加載
AT24C02是一個2K bit的EEPROM存儲器,使用IIC通信方式。
在這里插入圖片描述

  • A0/1/2 : 設備地址決定引腳
  • WP : 寫保護引腳
  • SCL : 時鐘線
  • SDA : 數據線

24C02的通訊地址

在這里插入圖片描述

24C04的儲存范圍是4Kbit=512KB,使用8位地址無法表示全其儲存地址(28=256KB),需要在設備地址中借位(29=512KB)

24C02的讀寫時序

  • 寫操作
    字節寫模式:一個地址一個數據進行寫入。
    頁寫模式:連續寫入數據。只需要寫一個地址,連續寫入數據時地址會自增,但存在頁的限制,超出一頁時,超出數據覆蓋原先寫入的數據。但讀會自動翻頁。

  • 讀操作
    當前讀模式:基于上一次讀/寫操作的最后位置繼續讀出數據。
    隨機地址讀模式:指定地址讀出數據。
    順序讀模式:連續讀出數據。

  • 寫操作過程(字節寫入/頁寫入)
    注意:EEPROM比較慢,必須等到10ms后再寫下一個字節
    在這里插入圖片描述
    在這里插入圖片描述

  • 讀操作過程
    在這里插入圖片描述

3.IIC協議驅動24C02實驗

  • 硬件IIC——使用復雜、速度快、較穩定、特定引腳
  • 軟件IIC——使用簡單、速度較慢、穩定、任意引腳

推薦使用軟件IIC,一是因為硬件IIC設計復雜,穩定性一般;二是因為軟件IIC方便移植

3.1.IIC配置步驟

  • 使能SCL和SDA對應時鐘——__HAL_RCC_GPIOB_CLK_ENABLE()
  • 設置GPIO工作模式——SDA開漏SCL推挽輸出,使用HAL_GPIO_Init初始化
  • 編寫基本信號——起始信號、停止信號、應答信號
  • 編寫讀和寫函數——iic_read_byte、iic_send_byte
    注意:發送完成,主機釋放SDA

為什么IIC總線SDA建議用開漏模式?

  • IIC的SDA腳即要作為輸出,又要作為輸入,用開漏輸出模式,很好實現輸出輸入共用,避免IO模式頻繁切換帶來的麻煩。
  • 輸出時:主機(MCU)輸出0,可以拉低信號,實現低電平發送,主機輸出1(實際不起作用),由外部上拉電阻上拉,實現高電平發送
  • 輸入時:主機(MCU)設置輸出1狀態,此時因為MCU無法輸出1,相當于釋放了SDA腳,此時外部器件可以主動拉低SDA腳/釋放SDA腳(同樣由上拉電阻提供“輸出1的功能”),實現SDA腳的高低電平變化。
  • 由于開漏輸出模式下,MCU還是可以讀取IDR狀態寄存器,來獲取引腳高低電平,因此MCU讀取IDR,即可獲得SDA腳的高低電平狀態,從而實現輸入檢測。
    也可以參考http://t.csdn.cn/fLxa9和http://t.csdn.cn/3x1wU

3.2.24C02配置步驟

  • 初始化IIC接口
  • 編寫寫入/讀取一個字節數據函數——遵循時序流程編寫
  • 編寫連續讀和連續寫函數——在上面的基礎上進行實現

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

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

相關文章

ES踩坑記錄之集群間通信異常造成節點無法加入

問題描述 公司新搭了一套ES集群,4臺機器,ES版本7.5.0,前期搭建十分順利,但集群運行一段時間后會出現問題。問題具體體現為節點間通訊異常,集群會重新選主,但選主之后只能通過新的主節點進行集群操作&#…

【Linux】可重入函數 volatile關鍵字 以及SIGCHLD信號

可重入函數 volatile關鍵字 以及SIGCHLD信號 一、可重入函數1、引入2、可重入函數的判斷 二、volatile關鍵字1、引入2、關于編譯器的優化的簡單討論 三、SIGCHLD信號 一、可重入函數 1、引入 我們來先看一個例子來幫助我們理解什么是可重入函數: 假設我們現在要對…

EthGlobal 巴黎站 Chainlink 獲獎項目介紹

在 Web3 中,每一周都至關重要。項目的發布、版本的發布以及協議的更新以驚人的速度推出。開發者必須保持學習,隨時了解最新的工具,并將所有他們所學的東西(無論是舊的還是新的)聯系起來,以構建推動 Web3 技…

PLUS操作流程、應用與實踐,多源不同分辨率數據的處理、ArcGIS的應用、PLUS模型的應用、InVEST模型的應用

PLUS模型是由中國地質大學(武漢)地理與信息工程學院高性能空間計算智能實驗室開發,是一個基于柵格數據的可用于斑塊尺度土地利用/土地覆蓋(LULC)變化模擬的元胞自動機(CA)模型。PLUS模型集成了基于土地擴張分析的規則挖掘方法和基于多類型隨機…

Word轉PDF在線轉換如何操作?分享轉換技巧

現如今,pdf轉換器已成為大家日常辦公學習必不可少的工具,市場上的pdf轉換器主要有兩種類型,一種是需要下載安裝的,另一種是網頁版,打開就可以使用的,今天小編給大家推薦一個非常好用的網頁版pdf轉換器&…

基于jvm-sandbox的imock開發指南

基于jvm-sandbox的imock開發指南 團隊今年的指標是為公司提供一個方法級的mock平臺, 這個重要的任務落在了我的身上。 0、明確團隊的需求 支持java后端服務方法級別的mock,對沒有測試環境的第三方服務進行mock,增加團隊覆蓋率。 啟用&#x…

PDF換行的難度,誰能解決?

換行的時候確認不了長度: import java.awt.*;public class Test {public static void main(String[] args) {String str1 "淘淘淘淘淘淘淘淘淘淘淘淘淘淘淘淘淘淘淘淘淘淘淘淘淘淘淘淘淘淘淘淘淘淘淘淘淘";String str2 "AAAAAAAAAAAAAAAAAAAAAAAAA…

實驗篇——亞細胞定位

實驗篇——亞細胞定位 文章目錄 前言一、亞細胞定位的在線網站1. UniProt2. WoLFPSORT3. BUSCA4. TargetP-2.0 二、代碼實現1. 基于UniProt(不會)2. 基于WoLFPSORT后續(已完善,有關代碼放置于[python爬蟲學習(一&#…

一零七零、Redis基礎穩固篇

Redis是什么,優缺點? Redis本質是一個K-V類型的內存數據庫 純內存操作,每秒可處理超過10w的讀寫操作 優點: 讀寫性能極高 非阻塞IO 單線程 支持持久化 支持事務 數據結構豐富 缺點: 容易受到物理內存的限制 主機宕機可…

【JAVA】日志

輸出語句日志輸出位置只能是控制臺可以將日志信息寫入文件或數據庫中取消日志需要修改代碼,靈活性差只需修改日志文件多線程性能較差性能較好 日志規范接口:Commons Logging(JCL)、Simple Logging Facade for Java(slf4j) 日志實現框架:Log…

軟件測試簡歷撰寫與優化,讓你面試邀約率暴增99%!

如何撰寫一份優秀的簡歷呢??這是一個求職者都會遇到的問題,今天就來詳細帶大家寫一份軟件測試工程師職位的簡歷!希望能給各位軟件測試求職者一個帶來幫助! 個人簡歷是求職者給招聘單位發的一份簡要介紹。包含自己的基本…

linux系統服務學習(一)Linux高級命令擴展

文章目錄 Linux高級命令(擴展)一、find命令1、find命令作用2、基本語法3、*星號通配符4、根據文件修改時間搜索文件☆ 聊一下Windows中的文件時間概念?☆ 使用stat命令獲取文件的最后修改時間☆ 創建文件時設置修改時間以及修改文件的修改時間…

【Vue】Vue2創建移動端項目實戰教程,創建移動端項目保姆級教程,設置axios,utils工具包,vue.fonfig.js配置項 (下)

系列文章目錄 這里是創建移動端項目 【Vue】Vue2.x創建項目全程講解,保姆級教程,手把手教,Vue2怎么創建項目(上) 【Vue】Vue2創建移動端項目實戰教程,創建移動端項目保姆級教程,接上一篇創建Vue…

2023牛客暑期多校訓練營9 B.Semi-Puzzle: Brain Storm

文章目錄 題目大意題解求解回溯 參考代碼 題目大意 給定兩個數 a , m a,m a,m ,求滿足 a u ≡ u ( m o d m ) a^u \equiv u (mod\ \ m) au≡u(mod m) 的一個解。 ( 1 ≤ a , m ≤ 1 0 9 , 0 ≤ u ≤ 1 0 18 ) (1\leq a,m \leq10^9 ,0\leq u\leq 10^{18}) (1≤a…

玩賺音視頻開發高階技術——FFmpeg

隨著移動互聯網的普及,人們對音視頻內容的需求也不斷增加。無論是社交媒體平臺、電商平臺還是在線教育,都離不開音視頻的應用。這就為音視頻開發人員提供了廣闊的就業機會。根據這些年來網站上的音視頻開發招聘需求來看,音視頻開發人員的需求…

如何優雅的使用Mock Server

事出有因 昨天跟同事討論我們在用的rap2(一個集接口編寫和mock server的開源項目)和剛上線了一個easy-mock的server,到底哪個好用。 我們主要討論的點有個兩個: 接口的一致性、 編碼的無侵入性。 背景 自從前后端分離后,完成前后端的分工…

【計算機視覺|生成對抗】條件生成對抗網絡(CGAN)

本系列博文為深度學習/計算機視覺論文筆記,轉載請注明出處 標題:Conditional Generative Adversarial Nets 鏈接:[1411.1784] Conditional Generative Adversarial Nets (arxiv.org) 摘要 生成對抗網絡(Generative Adversarial…

Windows 11 家庭中文版找不到組策略文件gpedit.msc

最近因為調整日期問題需要用到組策略文件gpedit.msc,但是發現找不到文件 在按鍵盤 winR 打開運行界面輸入 gpedit.msc 回車 Windows找不到文件’gpedit.msc’。請確定文件名是否正確后,再試-次。 檢查電腦Windows系統版本 是 Windows 11 家庭中文版 果斷早網上搜…

C++模板元編程入門案例

C++模板元編程(Template Metaprogramming)是一種在編譯時進行計算和代碼生成的技術,它使用C++的模板機制來實現。 下面是一個簡單的C++模板元編程的示例,展示了如何在編譯時計算一個數的階乘。 #include <iostream> template <int N> struct Factorial { …

docker 學習--02 常用命令

docker 學習–02 常用命令 文章目錄 docker 學習--02 常用命令1. 幫助啟動類命令1.1啟動docker1.2 停止docker1.3 重啟docker1.4 查看docker1.5 設置開機自啟1.6 查看docker概要信息1.7 查看docker總體幫助文檔1.8 查看docker命令幫助文檔 2. 鏡像命令2.1 列出本地主機上有的鏡…