STM32之I2C硬件外設

在這里插入圖片描述
在這里插入圖片描述
注意:硬件I2C的引腳是固定的
SDA和SCL都是復用到外部引腳。
SDA發送時數據寄存器的數據在數據移位寄存器空閑的狀態下進入數據移位寄存器,此時會置狀態寄存器的TXE為1,表示發送寄存器為空,然后往數據控制寄存器中一位一位的移送數據。接收時數據控制寄存器中的數據一位一位的從引腳移位到數據移位寄存器中,當一個數據以為完成后就從數據移位寄存器中轉移到數據寄存器,同時置RXNE表示接收寄存器非空。自身地址寄存器時STM32作為從機時的地址,比較器會比較主機的發出的地址與自身地址是否匹配,如果匹配就響應主機的召喚。STM32支持同時響應兩個主機的召喚,所以有雙低地址寄存器。PEC是用來數據校驗的模塊,執行CRC數據校算。

SCL的時鐘控制是用來控制SCL的,時鐘控制寄存器寫對應的位,電路就會啟用對應的功能,控制邏輯電路寫入控制寄存器可以對電路進行控制,讀取狀態寄存器,可以讀取電路的狀態。
在這里插入圖片描述
注意:使用I2C的時候,兩個GPIO口都要配置成復用開漏輸出的模式。此時是片上外設控制引腳電平。在這里插入圖片描述
圖中線路對應SDA的GPIO的連個箭頭。分別對應輸出和輸入。

硬件I2C的操作流程:

在這里插入圖片描述
7位主發送:
1.產生開始條件
2.EV5標志位,表示起始條件已發送,發送從機地址,然后等待從機應答A,如果沒有應答就會產生中斷
3.EV6事件:表示地址發送結束
4.EV8_1事件:準備好發送
5.EV8事件:表示可以寫入下一個數據
6.EV8_2:表示數據發送完,可以產生終止條件在這里插入圖片描述
7位主接收:
1.EV5:起始條件已經發送
2.尋址接收應答A
3.EV6:代表尋址已完成
4.EV6_1:表示數據正在移位
5.EV7:表示收到一個字節的數據
6.EV7_1:表示想要結束

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

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

相關文章

從青銅到王者:六大排序算法實戰解析

前言 在編程的世界里,排序算法如同一顆璀璨的明珠,閃耀著智慧的光芒。它不僅是計算機科學的基礎知識點,更是每一位程序員必備的技能。今天,就讓我們一同走進排序算法的世界,深入探究冒泡排序、選擇排序、插入排序、快速排序、歸并排序、堆排序這六大經典算法的精髓所在,…

小程序配置webview

1.在微信公眾平臺配置業務域名 1)包括把校驗文件放在服務器根目錄 2)配置域名 2.在小程序中 新建文件 小程序新建頁面:web-view json配置:{ "pageOrientation": "landscape", "renderer":&qu…

不用 Tomcat?SpringBoot 項目用啥代替?

在SpringBoot框架中,我們使用最多的是Tomcat,這是SpringBoot默認的容器技術,而且是內嵌式的Tomcat。 同時,SpringBoot也支持Undertow容器,我們可以很方便的用Undertow替換Tomcat,而Undertow的性能和內存使…

線索二叉樹構造及遍歷算法

線索二叉樹構造以及遍歷算法 線索二叉樹(中序遍歷版)構造線索二叉樹構造雙向線索鏈表遍歷中序線索二叉樹 線索二叉樹(中序遍歷版) 中序遍歷找到對應結點的前驅(土方法) #mermaid-svg-eunGO5d2GhjLxCn5 {fo…

基于SpringBoot的“體育購物商城”的設計與實現(源碼+數據庫+文檔+PPT)

基于SpringBoot的“體育購物商城”的設計與實現(源碼數據庫文檔PPT) 開發語言:Java 數據庫:MySQL 技術:SpringBoot 工具:IDEA/Ecilpse、Navicat、Maven 系統展示 系統總體模塊設計 前臺用戶登錄界面 系統首頁界面…

數據篇| App爬蟲入門(一)

App 的爬取相比 Web 端爬取更加容易,反爬蟲能力沒有那么強,而且數據大多是以 JSON 形式傳輸的,解析更加簡單。在 Web 端,我們可以通過瀏覽器的開發者工具監聽到各個網絡請求和響應過程,在 App 端如果想要查看這些內容就需要借助抓包軟件。常見抓包軟件有: ?工具名稱??…

go context學習

1.Context接口2.emptyCtx3.Deadline()方法4.Done()方法5.Err方法6.Value方法()7.contex應用場景8.其他context方法 1.Context接口 Context接口只有四個方法,以下是context源碼。 type Context interface {Deadline() (deadline time.Time, …

在VMware Workstation Pro上輕松部署CentOS7 Linux虛擬機

首先我們需要下載VM虛擬機和Centos7的鏡像 下載并安裝VMware Workstation Pro 訪問VMware Workstation Pro官網下載 https://www.vmware.com/ 第二步:下載centos7鏡像 訪問centos官網下載 https://www.centos.org/ 開始部署Centos7 點擊創建新的虛擬機 這里是Cen…

Jsoup 解析商品信息時需要注意哪些細節?

在使用Jsoup解析商品信息時,需要注意以下細節和最佳實踐,以確保爬蟲的穩定性和數據的準確性: 1. 檢查HTML文檔的合法性 在解析之前,需要確認所解析的文檔是否是一份合法正確的HTML文檔。如果HTML結構不完整或存在錯誤&#xff0…

Android AudioFlinger(五)—— 揭開AudioMixer面紗

前言: 在 Android 音頻系統中,AudioMixer 是音頻框架中一個關鍵的組件,用于處理多路音頻流的混音操作。它主要存在于音頻回放路徑中,是 AudioFlinger 服務的一部分。 上一節我們講threadloop的時候,提到了一個函數pr…

go的”ambiguous import in multiple modules”

執行“go mod tidy”報如下錯誤: go mod tidy -compat1.17 go: finding module for package github.com/gomooon/goredis go: found github.com/gomooon/goredis in github.com/gomooon/goredis v0.3.5 go: github.com/gomooon/core importsgithub.com/gomooon/gor…

從0開始的操作系統手搓教程27:下一步,實現我們的用戶進程

目錄 第一步:添加用戶進程虛擬空間 準備沖向我們的特權級3(用戶特權級) 討論下我們創建用戶線程的基本步驟 更加詳細的分析代碼 用戶進程的視圖 說一說BSS段 繼續看process.c中的函數 添加用戶線程激活 現在,我們做好了TSS…

Java線程池深度解析,從源碼到面試熱點

Java線程池深度解析,從源碼到面試熱點 一、線程池的核心價值與設計哲學 在開始討論多線程編程之前,可以先思考一個問題?多線程編程的原理是什么? 我們知道,現在的CUP是多核CPU,假設你的機器是4核的&#x…

大數據技術在土地利用規劃中的應用分析

大數據技術在土地利用規劃中的應用分析 一、引言 土地利用規劃是對一定區域內的土地開發、利用、整治和保護所作出的統籌安排與戰略部署,對于實現土地資源的優化配置、保障社會經濟的可持續發展具有關鍵意義。在當今數字化時代,大數據技術憑借其海量數據處理、高效信息挖掘等…

Node 使用 SSE 結合redis 推送數據(echarts 圖表實時更新)

1、實時通信有哪些實現方式? 特性輪詢(Polling)WebSocketSSE (Server-Sent Events)通信方向單向(客戶端 → 服務端)雙向(客戶端 ? 服務端)單向(服務端 → 客戶端)連接方…

Android Native 之 文件系統掛載

一、文件系統掛載流程概述 二、文件系統掛載流程細節 1、Init啟動階段 眾所周知,init進程為android系統的第一個進程,也是native世界的開端,要想讓整個android世界能夠穩定的運行,文件系統的創建和初始化是必不可少的&#xff…

Redis--Set類型

目錄 一、引言 二、介紹 三、命令 1.sadd,smembers,sismember 2.spop,srandmember 3.smove,srem 4.sinter,sinterstore 5.sunion,sunionstore,sdiff,sdiffstore 四、內部編碼 1.intset 2.hashtable 五、應用場景 1.使用Set保存用…

for...of的用法與介紹

一、定義 for...of 是 ES6(ECMAScript 2015)引入的一種用于 遍歷可迭代對象(Iterable)的循環語句 二、語法 for (const item of iterable) {// 代碼塊 }參數: iterable:一個可迭代對象(如數組…

Faster R-CNN原理詳解以及Pytorch實現模型訓練與推理

《------往期經典推薦------》 一、AI應用軟件開發實戰專欄【鏈接】 項目名稱項目名稱1.【人臉識別與管理系統開發】2.【車牌識別與自動收費管理系統開發】3.【手勢識別系統開發】4.【人臉面部活體檢測系統開發】5.【圖片風格快速遷移軟件開發】6.【人臉表表情識別系統】7.【…

使用dockerfile創建鏡像

1.什么是Dockerfile Dockerfile 是一個用于指導 Docker 鏡像構建過程的腳本文件。它通過一系列指令來詳細描述了構建鏡像所需的步驟和配置細節。利用 Dockerfile,我們可以精確地設定容器的運行環境,安裝必要的軟件,復制項目文件,…