stm32學習筆記:IIC通信(未完)

概述

第一塊:介紹協議規則,然后用軟件模擬的形式來實現協議。

第二塊:介紹STM32的iic外設,然后用硬件來實現協議。

程序一現象:通過軟件I2C通信,對MPU6050芯片內部的寄存器進行讀寫,寫入到配置寄存器,就可以對外掛的這個模型進行配置,讀出數據寄存器,就可以獲取外掛模塊的數據。I2通信的目的

串口通信沒有時鐘線的異步全雙工的協議。

如果我們想要讀寫寄存器來控制硬件電路,我們至少需要定義兩個字節的數據。一個字節是我們要讀寫哪個寄存器,也就是指定寄存器的地址,另一個字節就是這個地址下存儲器的內容,寫入內容就是控制電路,讀出內容就是獲取電路狀態。

要求

1、全雙工變為半雙工;
2、應答機制(安全起見)
3、一根通訊線能夠同時外接多個模塊(單片機可以指定和任意一個模塊進行通信,同時單片機在跟某個模塊進行通信時,其他模塊不能對正常的通信產生干擾。)
4、串口是異步時序,也就是發送方和接收方約定的傳輸速率是非常嚴格的,時鐘不能有過大的偏差,也不能在傳輸過程中,單片機有事進入中斷了,異步時序是不能暫停的,單片機一個字節發一半數據暫停了,接收方是不知道的,它仍然會按照原來的約定速率讀取,最終導致傳輸出錯。(異步時序的缺點是依賴硬件外設的支持,必須要有USART電路才能方便使用,如果沒有USART硬件電路的支持,那么串口是很難用軟件來模擬的),需要將該協議改為同步協議,另外加一條時鐘線來指導對方讀寫。由于存在時鐘線,對傳輸的時間要求就不高了,單片機可以隨時暫停傳輸,去處理其他事情,因為暫停傳輸的同時,時鐘線也暫停了,所以傳輸雙方都能定格在暫停的時刻,可以過一段時間再繼續,不會對傳輸造成影響。(同步時序的好處),使用同步時序可極大降低單片機對硬件電路的依賴。即使沒有硬件電路的支持也可以很方便地用軟件手動翻轉電平來實現通信,而異步時序的好處是省一根時鐘線,節省資源,缺點是對時間要求嚴格,對硬件電路的依賴比較嚴重。

單片機讀寫自己的寄存器,可以直接通過內部的數據總線來實現,直接用指針操作就行,不需要我們操心。但是,現在這個模塊的寄存器在單片機的外面,那怎么實現單片機讀寫外部模塊寄存器的操作呢

項目要求

通過通信線,實現單片機讀寫外掛模塊寄存器的功能,其中至少要實現在指定的位置讀寄存器和在指定的位置寫寄存器兩個功能。實現讀寫寄存器也就實現了對外掛模塊的完全控制。

同步時序穩定性比異步時序更高,然后只有一根SDA數據線,變全雙工為半雙工,一根線兼具發送和接收,最大化利用資源。一主多從:單片機作為主機,主導I2C總線的運行,掛在在I2C總線的所有外部模塊都是從機,從機只有被主機點名之后才能控制IIC總線,不能在未經允許的情況下去碰I2C總線,防止沖突。

?I2C的硬件規定

1.左邊CPU就是單片機,作為總線主機,功能包括對SCL線的完全控制,任何時候都是主機完全掌控SCL線。在空閑狀態下,主機可以主動發起對SDA的控制。只有在從機發送數據和從機應答的時候,主機才會轉交SDA的控制權給從機。

2.被控IC就是掛載在iic總線上的從機,可以是姿態傳感器,OLED,存儲器,時鐘模塊等。

3.從機權利比較小,對SCL時鐘線,在任何時刻都只能被動讀取,從機不允許控制SCL線,對于SDA數據線,從機不允許主動發起對SDA的控制,只有在主機發送讀取從機的命令后,或者從機應答的時候,從機才能短暫的獲取SDA的控制權。

4.接線要求所有從機SCL,SDA線都在一條線上與主機相連。

5.主機SCL可以配置成推挽輸出,從機的SCL可以配置成浮空輸入或者上拉輸入,數據流向是主機發送,所有從機接收。

6.?主機SDA在發送的時候是輸入,在接收的時候是輸出,從機的SDA也在輸入和輸出之間切換。如果總線時序沒協調好,就可能發生兩個引腳同時處于輸出狀態。如果這時一個輸出高電平,一個輸出低電平,這個狀態就是電源短路。需要避免。

7.為了避免這個問題,IIC禁止所有設備輸出強上拉的高電平,采用外置弱上拉電阻加開漏輸出的電路結構。所以設備的SCL和SDA均要配置成開漏輸出模式。并且添加上拉電阻。

?

I2C的軟件規定

起始和終止條件

起始條件:SCL高電平期間,SDA從高電平切換到低電平

? ? ? ? 即左下角,在IIC處于空閑狀態時,SCL和SDA都處于高電平狀態,也就是沒有設備去碰SCL和SDA,SCL和SDA由外掛的上拉電阻拉高至高電平,總線處于平靜的高電平狀態,當主機需要進行數據收發時,需要產生起始條件,即SCL處于高電平,把SDA拉底,變成低電平,產生一個下降沿,當從機捕獲到SCL高電平,SDA下降沿信號時,就會進行自身的復位,等待主機的召喚,在SDA下降沿之后,主機要把SCL拉底。原因是占用總線,且為了方便基本單元的拼接,即為了保證每個時序單元的SCL都是以低電平開始,低電平結束的,這樣這些單元拼接起來,SCL才能續上。

終止條件:SCL高電平期間,SDA從低電平切換到高電平

? ? ? ? ?即SCL先拉高,SDA再拉高,產生一個上升沿,這個上升沿觸發終止條件,同時終止條件之后,SCL和SDA都是高電平。回歸到平靜狀態。類似串口的起始位和停止位。

? ? ? ? ?一個完整的數據幀總是以其實條件開始,終止條件結束,起始和終止都是由主機產生的。再總線空閑狀態時,從機雙手放開。不允許觸碰總線。

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

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

相關文章

【Synchronized同步原理】

Synchronized同步原理 1. synchronized的使用?2. 如何保證線程安全的?3.可重入原理(加鎖次數計數器)4. 原子性和可見性(順序性) 1. synchronized的使用? 對象鎖方法鎖類鎖 2. 如何保證線程安全的? publi…

關于數據提交上傳服務端的數據類型以及項目打包上線的流程

1 請求頭的類型: content-type; 01: application/json 數據以json格式請求:{"key":"value"} 02: application/x-www.form-urlencoded from表單的數據格式 name"zs"&age12 03 mutipart/form-data…

重學SpringBoot3-自動配置機制

重學SpringBoot3-自動配置機制 引言Spring Boot 自動配置原理示例:Spring Boot Web 自動配置深入理解總結相關閱讀 引言 Spring Boot 的自動配置是其最強大的特性之一,它允許開發者通過最少的配置實現應用程序的快速開發和部署。這一切都得益于 Spring …

飛槳(PaddlePaddle)模型保存與加載教程

文章目錄 飛槳(PaddlePaddle)模型保存與加載教程1. 概述2. 訓練調優場景2.1 保存動態圖模型2.2 加載動態圖模型 3. 推理部署場景3.1 使用基礎API 4. 其他場景4.1 舊版本格式兼容載入4.2 靜態圖模型的保存與加載 5. 總結 飛槳(PaddlePaddle&am…

OmniPlan Pro mac版:簡單、智能,項目管理新選擇!

OmniPlan Pro是一款功能強大的項目管理軟件,它以其直觀的用戶界面和豐富的功能,幫助用戶輕松管理各種復雜的項目。無論是個人任務還是團隊協作,OmniPlan Pro都能提供全面的解決方案,讓項目管理變得更加簡單高效。 OmniPlan Pro軟…

從0開始回顧Mysql --- MySQL初體驗

大白話從0開始回顧MySQL,去除了一些繁瑣的操作的演示以及內容,如MySQL安裝等,本篇文章適合復習MySQL語法,學習MySQL語句,對MySQL不太熟練的同學,希望對大家有一些幫助。 MySQL初體驗 首先,我將…

如何在Window系統部署VisualSVN服務并結合cpolar實現無公網ip遠程訪問

文章目錄 前言1. VisualSVN安裝與配置2. VisualSVN Server管理界面配置3. 安裝cpolar內網穿透3.1 注冊賬號3.2 下載cpolar客戶端3.3 登錄cpolar web ui管理界面3.4 創建公網地址 4. 固定公網地址訪問 前言 SVN 是 subversion 的縮寫,是一個開放源代碼的版本控制系統…

數字孿生與智慧交通的融合發展:推動交通行業數字化轉型,構建智慧城市新生態

隨著信息技術的快速發展和城市化進程的深入推進,交通行業正面臨著前所未有的機遇與挑戰。傳統的交通管理模式已難以滿足日益增長的交通需求,而數字化轉型則成為了推動交通行業創新發展的必由之路。數字孿生技術作為一種前沿的信息技術手段,為…

聊一聊腦機接口

截至我所知的信息,腦機接口(Brain-Computer Interface, BCI)技術正在迅速發展,但仍處于相對早期階段。這一領域的研究涉及神經科學、工程學、計算機科學和人工智能等多個學科。以下是一些關于腦機接口目前進展的要點: …

基于springboot+vue的公寓報修管理系統

博主主頁:貓頭鷹源碼 博主簡介:Java領域優質創作者、CSDN博客專家、阿里云專家博主、公司架構師、全網粉絲5萬、專注Java技術領域和畢業設計項目實戰,歡迎高校老師\講師\同行交流合作 ?主要內容:畢業設計(Javaweb項目|小程序|Pyt…

每天的三哥牌小雞腿沒了

查看印度基金(164824)公告,從2024年2月28日起,暫停印度基金的申購,限額100塊的一拖七套利告一段落。這意味著看好印度股市的國內投資者,以后只能通過在場內買入獲得份額。 關于暫停申購的原因,官方說是為保護基金持有…

學Python如此簡單--停車管理模塊

簡介 (本停車場一個小時4塊) 模塊名稱:黑心停車管理模塊 模塊功能:汽車進場錄入、汽車出場收費 代碼 #進入停車場 def enter():print(歡迎進入黑心停車場)#模擬識別車牌號car_number input(請輸入車牌號:)t 0 #停車時間car…

重磅!交通領域頂級會議TRB會議將進行重大改革

美國交通研究委員會年會(Transportation Research Board annual meeting,以下簡稱TRB會議)是由美國交通研究委員會舉辦的交通領域的國際頂級會議。該會議每年舉辦一次,在華盛頓特區召開。TRB會議是交通研究領域知名度最高的學術會議之一&…

安裝 node 錯誤的配置環境變量之后使用 npm 報錯

安裝 node 錯誤的配置環境變量之后使用 npm 報錯 node:internal/modules/cjs/loader:1147 throw err; ^ Error: Cannot find module ‘F:\ACodeTools\Node\node_modules\npm\bin\node_modules\npm\bin\npm-cli.js’ at Module._resolveFilename (node:internal/modules/cjs/loa…

基于springboot實現企業員工績效考評系統項目【項目源碼+論文說明】

基于springboot實現企業員工績效考評系統演示 摘要 時代的變化速度實在超出人類的所料,21世紀,計算機已經發展到各行各業,各個地區,它的載體媒介-計算機,大眾稱之為的電腦,是一種特高速的科學儀器&#xf…

AI-數學-高中-32-統計-樣本空間與隨機事件

原作者視頻:【概率】【一數辭典】1樣本空間與隨機事件_嗶哩嗶哩_bilibili 1.隨機試驗: 2.樣本點、樣本空間、有限樣本空間: 示例1 示例2 3.事件: 示例:

[DEBUG] spring boot-如何處理鏈接中的空格等特殊字符

問題&#xff1a; get或者post中提交的內容可能有空格、#等特殊字符&#xff0c;不做處理的話可能解析錯誤。 解決&#xff1a; html中&#xff1a; <a th:href"{/listSgrna(id${item.getGeneId()},geneName${item.getGeneName()},genome${genome},sgrnaNum${sgrnaN…

Qt CMake 國際化相關配置

文章目錄 更新ts文件發布ts文件 本來用qmake使用pro文件很簡單的一件事&#xff0c;結果用cmake折騰了半天。 何必呢~ 參考&#xff1a;QT6.3 CMake 多語言切換 這是我的 cmake_minimum_required(VERSION 3.16)project(testQml3_6 VERSION 0.1 LANGUAGES CXX)set(CMAKE_AUTO…

06.QT信號和槽-1

一、信號和槽概述 在Qt中&#xff0c;用戶和控件的每次交互過程稱為一個事件。比如"用戶點擊按鈕"是一個事件&#xff0c;"用戶關閉窗口"也是一個事件。每個事件都會發出一個信號&#xff0c;例如用戶點擊按鈕會發出"按鈕被點擊"的信號&#xff…

Java練習(第5天)【總結】在字符串中尋找特定的字符(5種方法)

問題描述&#xff1a;在字符串中尋找特定字符 1、第1次出現位置 實現函數原型&#xff1a; int indexOf(char c) Java代碼&#xff1a; import java.io.*; public class Way_1 {public static void main(String args[]){String str "Geeks for Geeks is a computer s…