嵌入式學習筆記-MCU階段--DAY09

1. oled屏幕的接口IIC

應用場合:

2.IIC通信原理

概念:

IIC(Inter-Integrated Circuit)其實是IICBus簡稱,所以中文應該叫集成電路總線,它是一種串行通信總線,使用多主從架構,由飛利浦公司在1980年代為了讓嵌入式系統或手機用以連接低速周邊設備而發展。I2C的正確讀法為“I平方C”("I-squared-C"),而“I二C”("I-two-C")則是另一種錯誤但被廣泛使用的讀法。自2006年10月1日起,使用I2C協議已經不需要支付專利費,但制造商仍然需要付費以獲取I2C從屬設備地址。

IIC:也是一種串行總線,半雙工。

IIC是一種主從結構

主從結構的通信,必須有主機發送起始信號,才可以開始進行通信。

IIC總線對工程師的好處:

?專有名詞:

IIC收發過程:

1 假設微控制器 A 要發送信息到微控制器 B

? 微控制器 A 主機 尋址(包含了讀寫標志)微控制器 B 從機 (從機要給應答信號)

? 微控制器 A 主機 發送器 發送數據到微控制器 B 從機 接收器

? 微控制器 A 終止傳輸(終止信號)

2 如果微控制器 A 想從微控制器 B 接收信息

? 微控制器 A 主機 尋址(包含了讀寫標志)微控制器 B 從機

? 微控制器 A 主機 接收器 從微控制器 B 從機 發送器 接收數據

? 微控制器 A 終止傳輸

IIC總線時序

IIC總線時序

硬件組成:

SDA 和 SCL 都是雙向線路

SDA:根據數據傳輸配置輸入或者輸出---開漏輸出

SCK:復用推挽輸出(硬件IIC)

SCK:通用推挽輸出(軟件(模擬)IIC)

傳輸速率:

I2C 總線上數據的傳輸速率在標準模式下可達 100kbit/s 在快速模式下可達 400kbit/s 在高速模式下可達 3.4Mbit/s 。

傳輸方式:按位傳輸(內部傳輸,主機或者從機內部)

數據的有效性:

SDA 線上的數據必須在時鐘的高電平周期保持穩定 數據線的高或低電平狀態只有在 SCL 線的時鐘信號是低電平時才能改變

時鐘為高電平,只能傳輸數據

時鐘線為低電平,只能切換要傳輸的數據

起始信號和停止信號:

起始信號的狀態:

時鐘線為高電平的時候,數據線由高拉低

停止信號的狀態:

時鐘線為高電平的時候,數據線由低拉高

傳輸數據

發送到 SDA 線上的每個字節必須為 8 位 每次傳輸可以發送的字節數量不受限制 每個字節后必須跟一個響應位 首先傳輸的是數據的最高位 MSB

數據寬度:8bit

響應位:是否正確應答

響應:

時鐘為高電平的時候,數據線輸出穩定的低電平

單個數據發送的應答信號:

仲裁機制:

所有主機在 SCL 線上產生它們自己的時鐘來傳輸 I2C 總線上的報文 數據只在時鐘的高電平周期有效因此 需要一個確定的時鐘進行逐位仲裁

從設備的地址格式:

7bit+讀寫標志位=8位

寫操作:低電平

讀操作:高電平

數據傳輸幀格式:

主機 發送器發送到從機 接收器 傳輸的方向不會改變

在第一個字節后 主機立即讀從機

OLED屏幕介紹:

OLED屏幕的基本特性:

大小:0.96寸(對角線)

分辨率:128*64(0.96寸的屏幕上總共有128*64個像素點)

像素點:成像的最小單位

單色屏:由兩種顏色組成,背景色和前景色都是只有一種,黑白 黑和藍......

像素點大小:1bit 0或者1

多色屏幕中像素點的顏色顯示格式:RGB565 RGB888

RGB565的顏色顯示格式:一個像素點大小就是2字節

OLED屏幕的IO口:

寫操作:

?保存的圖像或者字符在OLED屏幕中保存方式:

128*64---像素點個數

長度128個像素點(128列)

高度64像素點(64行)

PAGE0(com0--com7)--第0頁(0--7行)

因此我們的屏幕中就有8頁。

指令部分:數據手冊27頁

IIC通信接口,只負責發送或者接收數據

比如:我需要在屏幕的第二行去顯示字符,首先設置顯示起始位置,因此我們在操作顯示屏幕的時候,需要先發送指令,告訴從設備,主機先要執行那些操作。

代碼編寫部分:

軟件IIC編寫代碼:

IIC通信連接在單片機的哪些IO口上:

PA6--CLK---通用推挽輸出

PA7--SDA--開漏輸出(只能輸出低電平,無法輸出高電平(是一個高阻態))

為什么不用推挽???

1.我們使用開漏輸出,需要外界上拉電阻,IO內部結構中有上拉

2.選擇開漏是因為,SDA數據線,還需要去接收從設備數據(輸入)

這時如果設置成推挽,從設備給主機發送數據,此時主機還在輸出,有可能產生短路

如果設置成開漏,當設備輸入的時候,就可以直接檢測外界的電平狀態

內部上拉能力不夠???這個時候就需要外接上拉電阻。

以上兩個IO口為例,進行代碼編寫

1.參考官方提供的例程代碼

?參考文件內容:

將以上OLED驅動和字體內容添加到工程

有一個錯誤需要修改:

顯示字符串:

?

因為font.c中已經將全部的英文字符取模

全部是根據ASCII表格進行取模處理

直接網頁搜索取模工具,也可以在線取模?

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

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

相關文章

解決 Node.js 托管 React 靜態資源的跨域問題

在 Node.js 項目中托管 React 打包后的靜態資源時,可能會遇到跨域問題(CORS)。以下是幾種解決方案: 1. 使用 Express 中間件設置 CORS 頭 const express require(express); const path require(path); const app express();// …

【Linux】多路轉接之epoll

優化poll進行拷貝的開銷poll開銷過大將整個 pollfd 數組拷貝到內核態,以便內核檢查 fd 是否就緒(從用戶態 → 內核態)。內核檢查 fd 狀態,并填充 revents。將 pollfd 數組從內核態拷貝回用戶態,讓應用程序可以讀取 rev…

下載一個JeecgBoot-master項目 導入idea需要什么操作啟動項目

官網:開發環境搭建 | JEECG 文檔中心 一般做開發的電腦里都是有的,沒有的只能下載了 前端安裝 node官網:https://nodejs.org/zh-cnpnpm安裝:通過命令 后端安裝: jdk17 :https://www.oracle.com/cn/java/technologies/downloads/#java17maven :https://m…

解決 InputStream 只能讀取一次問題

是的,InputStream 的一個重要特性是它通常只能被讀取一次。這是因為:輸入流通常是單向的、順序訪問的數據源很多流(如網絡流、文件流)讀取后指針就移動了,無法回退有些流(如Socket流)甚至讀取后…

數據分析面試題

技都測試 1、請列舉5個 Excel 中常用的函數及寫法。[ if ] IF(A1>60, "及格", "不及格") —— 若 A1 單元格數值≥60,返回 “及格”,否則返回 “不及格”。IF(B2>100, B2*0.8, B2) —— 若 B2 數值 > 100&#xff0c…

【07】VisionMaster入門到精通——Blob分折

文章目錄0 視屏講解與演示1 案例演示2 參數詳解1 運行參數0 視屏講解與演示 1 案例演示 周長使能查找U型槽 短軸使能查找U型槽 面積篩選區域 當條件不符合是,該模塊顯示紅色,狀態為NG 顯示二值圖像 顯示Blob圖像 2 參數詳解 Blob分折,…

解釋 MySQL 中的 EXPLAIN 命令的作用和使用場景

解釋 MySQL 中的 EXPLAIN 命令的作用和使用場景 總結性回答 EXPLAIN 是 MySQL 中用于分析 SQL 查詢執行計劃的命令,它能展示 MySQL 如何執行一個查詢,包括使用的索引、表連接順序、掃描行數等關鍵信息。主要用于查詢性能優化,幫助開發者識別潛…

.env 文件

.env 文件其實就是一個純文本文件,用來寫“環境變量”鍵值對,格式非常簡單 👇? .env 文件寫法格式:每一行就是一個變量名 值,不要加引號,不要加空格DEEPSEEK_API_KEYsk-xxxxxxxxxxxxxxxxxxxx完整例子&…

機器學習——K 折交叉驗證(K-Fold Cross Validation),案例:邏輯回歸 交叉尋找最佳懲罰因子C

什么是交叉驗證? 交叉驗證是一種將原始數據集劃分為若干個子集,反復訓練和驗證模型的策略。 交叉驗證(Cross-Validation)適用于你在模型調參(如邏輯回歸中的 C) 最常用的:K 折交叉驗證&#…

藍橋杯----串口

(五)、串口1、串口通信簡介制定通信的規則,通信雙方按照協議規則進行數據收發,將一個設備的數據傳送到另一個設備,擴展硬件系統,串口USART有兩根通信線Tx、Rx,可同時雙向通信,稱之為…

錯誤: 找不到或無法加載主類 原因: java.lang.ClassNotFoundException

背景: 代碼沒有更改,主類位置也沒有移動,運行時突然報找不到或無法加載主類的錯誤 錯誤: 找不到或無法加載主類 原因: java.lang.ClassNotFoundException編譯器上方顯示 Java file is located outside of the module source root so it wont …

Lock 接口及實現類詳解:從 ReentrantLock 到并發場景實踐

在 Java 并發編程中,除了synchronized關鍵字,java.util.concurrent.locks.Lock接口及其實現類是另一種重要的同步機制。自 JDK 5 引入以來,Lock接口憑借靈活的 API 設計、可中斷的鎖獲取、公平性控制等特性,成為復雜并發場景的首選…

「iOS」————SideTable

iOS學習前言sideTableSlideTablesSideTableBufSideTable前言 我們在上一篇中,簡單的介紹了weak的實現原理。其中弱引用表就是存儲在SideTable中的,這里我們來學習了解一下SideTable sideTable sideTable主要用于存儲和管理對象的額外信息,…

【PHP】CURL請求第三方API接口

當我們需要調用第三方接口時,就需要使用CURL,通過CURL操作去請求第三方API接口,有的是通過POST方式,有的是通過GET方式,下面介紹一個通用的使用CURL調用API接口的方法。一、CURL操作共兩個方法,分別是CURL操…

對于考研數學的理解

文章目錄高等數學總結補充說明1. 微分方程與無窮級數的特殊性2. 隱藏的邏輯鏈條3. 向量代數的橋梁作用核心框架為什么這樣設計?結論線性代數核心邏輯框架各講之間的本質聯系1. 行列式 → 矩陣2. 矩陣 → 向量組3. 矩陣 向量組 → 線性方程組4. 矩陣 → 特征值與特征…

基于 Hadoop 生態圈的數據倉庫實踐 —— OLAP 與數據可視化(四)

目錄 四、數據可視化與 Hue 簡介 1. 數據可視化簡介 (1)數據可視化的重要性 (2)數據可視化的用途 (3)實施數據可視化需要考慮的問題 (4)幾種主要的數據可視化工具 2. Hue 簡介…

HarmonyOS 開發:基于 ArkUI 實現復雜表單驗證的最佳實踐

摘要 在現代應用開發中,表單是最常見的交互方式之一。不管是用戶注冊、信息錄入,還是登錄驗證,表單的可靠性直接影響用戶體驗。而在鴻蒙 ArkUI 開發中,雖然表單結構清晰,但要實現 復雜驗證(比如&#xff1a…

高效游戲狀態管理:使用雙模式位運算與數學運算

在游戲開發中,狀態管理是一個核心問題。無論是任務系統、成就系統還是玩家進度跟蹤,我們都需要高效地存儲和查詢大量狀態。本文將深入分析一個創新的游戲狀態管理工具類 GameStateUtil,它巧妙結合了位運算和數學運算兩種模式,在存…

linux-process-control

Linux進程控制 1. 進程終止 1.1. 進程終止的本質是回收資源 1.1 釋放資源 內存資源: 釋放進程的地址空間(mm_struct),包括代碼段、數據段、堆、棧等,通過寫時復制(CoW)共享的頁會減少引用計數&a…

Autoswagger:揭露隱藏 API 授權缺陷的開源工具

Autoswagger 是一款免費的開源工具,用于掃描 OpenAPI 文檔中列出的 API,查找授權漏洞。 即使在擁有成熟安全團隊的大型企業中,這類漏洞仍然很常見,而且尤其危險,因為即使技術水平不高的人也能利用它們。 Autoswagger…