arm之s3c2440的I2C的用法

基礎概念?

IC(Inter-Integrated Circuit)又稱I2C,是是IICBus簡稱,所以中文應該叫集成電路總線。

????????IIC的總線的使用場景,所有掛載在IIC總線上的設備都有兩根信號線,一根是數據線SDA,另一 根是時鐘線SCL。這兩個信號線都是雙向的。 ?作為一種通信方式,IIC總線在某一時刻,總線只允許有一個設備處于發送狀態,所發生的數據被總線上所 有的設備所接收。IIC通信協議包含有設備地址,只有發送方攜帶的地址與某個接收方的地址相同時,接收 方才真正執行相關的指令。

????????IIC總線規定,設備在空閑時,兩根總線都處于高電平狀態。為保證這種狀態,數據線SDA和時鐘線SCL都要 外接上拉電阻?。

I2C通信的流程?

  1. ?IIC總線上連接的若干設備中,每次通信前,發送方首先發送一個“起始”信號,其實信號就是在SCL為高電平時, SDA發送一個低電平。當其它設備接收到這個其實信號后,將進行一次“總線仲裁”。意思就是設備(除發送其實信 號的那個設備以外的)都將處于聆聽狀態。

? 2.IC總線進行數據傳送時,時鐘線(SCL)上的信號為高電平期間,數據線(SDA)上的數據必須保持穩定。只有在時鐘線 (SCL)上的信號為低電平期間,數據線(SCL)上的高電平或低電平狀態才允許變化。同時,SCL信號由數據啟動發送 的設備提供。輸出到數據線(SDA)上的每個字節必須是8位。數據傳送時,先傳送最高位(MSB),后傳送最低位(LSB)。

?3.發送器每發送一個字節(8個bit),就在時鐘脈沖 9 期間釋放數據線,由接收器反饋一個應答信號。 主機 SCL拉高,讀取從機SDA的電平。對于反饋有效應答位ACK的要求是:接收器在第9個時鐘脈沖之前的低電平 期間將數據線SDA拉低,并且確保在該時鐘的高電平期間為穩定的低電平。

?數據線(SDA)為低電平時,規定為有效應答位(ACK,簡稱應答位),表示接收器已經成功地接收了該字節。

?數據線(SDA)為高電平時,規定為非應答位(NACK),表示接收器沒有成功接收該字節。?

當發送方發送完最后一個bit后,需要發送一個結束標志來終止整個通信過程。當時鐘線SCL 為高電平時,數 據線SDA 由低電平向高電平跳變。

完整的IIC通信時序圖。?

IIC控制寄存器?

IICCON:IIC控制寄存器中的每個域都需要設置

Bit7:處于發送數據時,如果設置為允許,那么當接收設備回應ACK后,會產生IIC中斷。當處于接收數據時, 允許這一位會發送ACK,否則發送NACK。

Bit6:IIC產生波特率的第一次分頻

Bit5:由于我們要使用中斷方式,所以這一位允許

Bit4:這一位看起來似乎是一個查詢用的掛起標志,但是這一位是允許寫0的。而且無論我們要發送什么數 據,都必須清除這一位才能真正將數據發送出去。

Bit0~3:IIC產生波特率的第二次分頻?

代碼示例?

IIC初始化函數

?第16~17行:配置GPE14和GPE15為IIC方式

?第19行:允許ACK,中斷使能,IIC時鐘分頻為512=50M/512=97656.25

?第20行:發送時鐘分頻因子 0+1=10 因此,波特率為97656.25約等于97.6K

?第22~23行:允許IIC中斷,注冊中斷服務函數

????????IIC中斷服務函數,由于IIC控制器會在收到和發送完ACK之后產生中斷,我們將來在數據發送后等待這個標 記即可。?

????????由于無論發送還是接收數據,手冊里要求我們必須清除IICCON的第四位之后才能繼續,也就是說我們把數據放入IICDS之后,數據并沒有發送出去,而是需要我們把這一位清零后數據才開始發送。從發送第一個比特到接收到ACK之間肯定需要時間,當收到ACK之后就會產生中斷。需要注意的 是at24c02在收到數據之后需要一點時間把數據寫入到EEPROM中,所以可以在循環中等待一段時間。這個 時間大約為100us。?

寫操作

讀操作?

結合以下流程圖更容易理解

?主機發送器操作

主機接收器操作?

以下是邏輯分析儀采取的波形圖,直觀地查看數據?

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

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

相關文章

算法 | 蜣螂優化算法原理,引言,公式,算法改進綜述,應用場景及matlab完整代碼

蜣螂優化算法(Dung Beetle Optimizer, DBO)詳解 1. 算法原理 蜣螂優化算法(DBO)是一種基于自然界蜣螂行為的元啟發式優化算法,靈感來源于蜣螂的滾球、繁殖、覓食和偷竊行為。其核心思想是通過模擬蜣螂在復雜環境中的協作與競爭機制,解決全局優化問題。關鍵行為模擬: 滾球…

uniapp開發實戰自定義組件形式實現自定義海報功能

在 UniApp 中實現自定義海報功能,可以通過 Canvas 來繪制海報。Canvas 提供了豐富的繪圖 API,可以精確控制文字、圖片和二維碼的位置。下面是一個完整的示例,展示如何創建一個自定義海報組件。 項目結構 假設你的項目結構如下: project-root/ ├── pages/ │ └──…

dockerfile構建鏡像方式

在 Docker 中&#xff0c;可使用 docker build 命令依據 Dockerfile 構建鏡像。下面為你詳細介紹構建鏡像的具體方式。 基本構建命令 若要構建鏡像&#xff0c;需在包含 Dockerfile 的目錄下執行 docker build 命令。基本語法如下&#xff1a; bash docker build -t <鏡像…

STM32F103_LL庫+寄存器學習筆記10 - DMA傳輸過半+DMA傳輸完成中斷實現DMA串口接收“雙緩沖“

導言 《[[STM32F103_LL庫寄存器學習筆記09 - DMA串口接收與DMA串口發送&#xff0c;串口接收空閑中斷]]》上一章節完成DMA發送與接收。此時&#xff0c;有一個致命的問題可能會導致數據包丟失。原因是USART1接收只開啟了接收空閑中斷(IDLE)&#xff0c;DMA在連續模式下&#xf…

李宏毅機器學習筆記06 | 魚和熊掌可以兼得的機器學習 - 內容接寶可夢

本章提要 深度學習可以在較少參數量的情況下得到比較低的loss&#xff1a; h a l l a r g min ? h ∈ H L ( h , D a l l ) h^{all}arg \min_{h \in H}L(h,D_{all}) hallargminh∈H?L(h,Dall?) 引入 如何權衡模型的復雜程度 Tradeoff of Model Complexity 理論上&#…

java八股文之JVM

1.什么是程序計數器 程序計數器是 JVM 管理線程執行的“定位器”&#xff0c;記錄每個線程當前執行的指令位置&#xff0c;確保程序流程的連續性和線程切換的準確性。線程私有的&#xff0c;每個線程一份&#xff0c;內部保存的字節碼的行號。用于記錄正在執行的字節碼指令的地…

Android設計模式之觀察者模式

一、定義&#xff1a;定義對象間一種一對多的依賴關系&#xff0c;使得每當一個對象改變狀態&#xff0c;則所有依賴于它的對象都會得到通知并被自動更新。 二、核心角色&#xff1a; Subject&#xff1a;抽象主題被觀察的角色&#xff0c;管理觀察者集合&#xff0c;提供注冊…

海康gdb流程

gdb相關 在initrun.sh文件里加入&#xff0c;注意需要在hikauto起來之前 # 設置core dump大小 ulimit -c unlimited if [ $? -eq 0 ];then echo "core dump size set success" else echo -e "\33[31m core dump size set fail\33[0m" fi echo …

springBoot統一響應類型3.3版本

前言&#xff1a; 通過實踐而發現真理&#xff0c;又通過實踐而證實真理和發展真理。從感性認識而能動地發展到理性認識&#xff0c;又從理性認識而能動地指導革命實踐&#xff0c;改造主觀世界和客觀世界。實踐、認識、再實踐、再認識&#xff0c;這種形式&#xff0c;循環往…

【空間變換】歐拉角與四元數

核心 歐拉角描述的是一種變換&#xff0c;只關注變換后的結果&#xff0c;不關注變換過程中的運動 而四元數不僅良好地表示了一種變換&#xff0c;也很好地表示了一種運動過程&#xff0c;又避免了萬向節死鎖Gimbal Lock變換順序&#xff0c;是歐拉角變換的一部分&#xff0c;…

基于Linux下的MyBash命令解釋器

項目介紹&#xff1a;?個?C語?實現的簡單shell&#xff0c;可以接受??輸?的命令并執?操作&#xff0c;?持多管道和重 定向。 mybash---打造自己的命令解釋器 目前我們Linux的系統默認的命令解釋器是bash; 命令解釋器&#xff08;也稱為命令行解釋器或shell&#xff0…

Linux常見使用場景

一、文件查看與內容操作 ?1. cat ?作用&#xff1a;查看文件內容&#xff08;一次性輸出全部內容&#xff09;。?常用選項&#xff1a; -n&#xff1a;顯示行號。-b&#xff1a;僅對非空行顯示行號。 ?示例&#xff1a; cat file.txt # 查看文件內容 cat -n fil…

Ingredient-oriented Multi-Degradation Learning for Image Restoration論文閱讀

摘要&#xff1a;重點在于關聯多個任務本質的聯系。 不同恢復任務的關聯性很重要。 揭示退化現象的內在機理聯系很有意義。 多合一的方法能在單一模型中處理多種退化問題&#xff0c;可擴展性較差。 成分導向范式挖掘不同圖像退化現象背后的物理規律或特征模式。 成分導向退化重…

禪道后臺命令執行漏洞

漏洞簡介 禪道是第一款國產的開源項目管理軟件。它集產品管理、項目管理、質量管理、文檔管理、 組織管理和事務管理于一體&#xff0c;是一款專業的研發項目管理軟件&#xff0c;完整地覆蓋了項目管理的核心流程。 禪道管理思想注重實效&#xff0c;功能完備豐富&#xff0c;…

密碼學——知識問答

目錄 1、闡述公開密鑰算法的定義&#xff0c;結合RSA算法說明公鑰密碼的基本要求。 說明公鑰與私鑰兩種密碼學并舉例與其應用 1. 公鑰密碼學&#xff08;非對稱加密&#xff09;&#xff1a; 2. 私鑰密碼學&#xff08;對稱加密&#xff09;&#xff1a; 對比公鑰與私鑰密碼…

PDF多表格結構識別與跨表語義對齊:基于對抗遷移的魯棒相似度度量模型

文章目錄 一. 項目結構二.流程分析2.1 批處理器核心代碼解析 三. 跨頁表格相似度匹配原理3.1 表頭內容相似度-特征向量歸一化3.2 表頭內容相似度-余弦相似度3.3 定時緩存清理 ocr掃描有其局限性。對于pdf文本類型這種pdfbox&#xff0c;aspose-pdf&#xff0c;spire直接提取文本…

es 3期 第27節-運用Script腳本實現復雜需求

#### 1.Elasticsearch是數據庫&#xff0c;不是普通的Java應用程序&#xff0c;傳統數據庫需要的硬件資源同樣需要&#xff0c;提升性能最有效的就是升級硬件。 #### 2.Elasticsearch是文檔型數據庫&#xff0c;不是關系型數據庫&#xff0c;不具備嚴格的ACID事務特性&#xff…

23、web前端開發之html5(四)

十二. HTML5實踐示例 前面我們詳細講解了HTML5的特點&#xff0c;包括語義化標簽、增強的表單功能、多媒體元素&#xff08;如<video>和<audio>&#xff09;、Canvas繪圖、SVG集成以及離線存儲等。以下是一些詳細的HTML5實踐示例&#xff0c;展示如何使用HTML5的新…

海思燒錄工具HITool電視盒子刷機詳解

HiTool是華為開發的一款用于海思芯片設備的刷機和調試工具&#xff0c;可對搭載海思芯片的機頂盒、智能電視等設備進行固件燒錄、參數配置等操作。以下為你詳細介紹&#xff1a; 功能用途 固件燒錄&#xff1a;這是HiTool最主要的功能之一。它能夠將下載好的適配固件文件燒錄到…

軟考中級-軟件設計師 23種設計模式(內含詳細解析)

23種設計模式 &#x1f3af; 創建型設計模式&#x1f4cc; 抽象工廠&#xff08;Abstract Factory&#xff09; 設計模式&#x1f4cc; 工廠方法&#xff08;Factory Method&#xff09;設計模式&#x1f4cc; 單例&#xff08;Singleton&#xff09;設計模式&#x1f4cc; 生成…