嵌入式通信DQ單總線協議及UART(一)

文章目錄

  • 一、DS18B20--DQ單總線
    • 1.1 單總線時序結構分析
      • 1.1.1 初始化:
      • 1.1.2 發送一位
      • 1.1.3 接收一位
      • 1.1.5 發送字節
      • 1.1.6 操作流程
      • 1.1.7 數據幀的理解
      • 1.1.8 數據幀的理解
  • 二、UART
    • 2.1 同步通信和異步通信
    • 2.2 雙工通信
    • 2.3 串行通信常用數據校驗方式
      • 2.3.1 奇偶檢驗
      • 2.3.2 和校驗/異或校驗
      • 2.3.3 循環冗余校驗CRC


一、DS18B20–DQ單總線

在設計的時候一定要滿足單總線時序,

總線有一個基本要求:

每次初始化以后,總線的控制權都是主機掌握。默認是寫的狀態,

有一個讓從機發送的性質(從機此時具有控制權),因此此時主機就變成一個讀的狀態了。

1.1 單總線時序結構分析

1.1.1 初始化:

1.主機將總線拉低最少480us。

2.釋放總線,等待15us~60us,時間不能超過,一定按照嚴格的時序來表達。

3.如果存在從機會拉低總線60us~240us以響應主機,之后從機將釋放總線,總線回到高電平。

在從機拉低電平的時間,通過IO口讀取電平,判斷從機是否存在。

復位 和 響應兩個部分。

在這里插入圖片描述

每個操作之前都要都一個初始化

1.1.2 發送一位

發送一位:主機將總線拉低60~120us,然后釋放總線,表示發送0主機將總線拉低1~15us,然后釋放總線,表示發送1。從機將在總線拉低30us后(典型值)讀取電平,整個時間片應大于60us。

在這里插入圖片描述

時間片就是時序結構的意思,

一定是30us的時候進行讀取電平。

60us一個周期進行理解,不管是發送還是接收。

1.1.3 接收一位

接收一位:主機將總線拉低1~15us,然后釋放總線,并在拉低后15us內讀取總線電平(盡量貼近15us的末尾),讀取為低電平則為接收0,讀取為高電平則為接收1,整個時間片應大于60us

在這里插入圖片描述

60us一個周期進行理解,不管是發送還是接收。

1.1.5 發送字節

連續調用,低位在前。

在這里插入圖片描述

1.1.6 操作流程

初始化:從機復位,主機判斷從機是否響應

ROM操作:ROM指令+本指令需要的讀寫操作

功能操作:功能指令+本指令需要的讀寫操作

在這里插入圖片描述

1.1.7 數據幀的理解

溫度變化數據幀:當主機將這些數據發送給DS18N20以后,從機就會將溫度傳感器值刷新到RAM暫存器里面。

溫度讀取:讀取暫存器指令,連續讀操作(對于主機來說就是接收數據)。將這個指令發送給從機,目的就是告訴你,主機需要溫度數據了,接著就是從機發送數據,也就是主機接收數據的操作。

兩個溫度字節讀取以后,還可以繼續讀取,但是本次沒有必要就不用讀取。

在這里插入圖片描述

1.1.8 數據幀的理解

在這里插入圖片描述

二、UART

2.1 同步通信和異步通信

簡單說,同步通信需要時鐘信號,而異步通信不需要時鐘信號

如何通信,怎么知道這是高電平或者是低電平或者說是我怎么知道這是兩個高電平,
我可以假設這是在1ms內,我采集10次,那么其中有6次是高電平,那么我就認為這個1ms傳輸的就是高電平,那么這就是第一個第一個電平,同理,繼續下一個1ms,因此就引出了波特率的概念。

波特率:數據傳輸的速率。

波特率:串行通信中,數據傳送速率有兩種名稱,即比特率或波特率(對于二進制傳輸,兩者等價)它表示可以支持每秒鐘傳送多少位數據,常用包括,600、1200、2400、4800、9600、19200、38400、115200波特等;串行通信的收發雙方必須采用相同的波特率。

假設一幀是10位,那么1S可以傳輸960幀,也約等于1ms傳輸一幀。

在這里插入圖片描述

  • 起始位:位于數據幀開頭,占1位,始終為低電平,用于向接收設備表示發送端開始發送1幀數據,

  • 數據位:要傳輸的數據信息,一般為7/8位,可配置,通常由低位到高位依次傳送:

  • 校驗位:位于數據位之后,占1位,可配置,用于發送數據的校驗,或傳送多機串行通信的聯絡信息;

  • 停止位:位于數據位未尾,占0.5~2位,可配置,始終為高電平,用于向接收端表示1幀數據已發送完畢。

一般都是起始位是低電平 停止位是高電平。空閑位一般也是高電平。

在這里插入圖片描述

2.2 雙工通信

  • 單工
    指數據傳輸僅能沿一個方向,不能實現反向傳輸,
  • 半雙工(RS485 CAN IIC)
    指數據傳輸可以沿兩個方向,但需要分時進行
  • 全雙工(SPI)
    指數據可以同時進行雙向傳輸。

2.3 串行通信常用數據校驗方式

2.3.1 奇偶檢驗

在這里插入圖片描述

奇偶校驗

針對一幀數據進行校驗,在發送數據時,數據位尾隨的1位為奇偶校驗位(1或0)。奇校驗時,數據中"1”的個數與校驗位“1”的個數之和應為奇數;偶校驗時,數據中“1”的個數與校驗位“1”的個數之和應為偶數。接收字符時,對“1”的個數進行校驗,若發現不一致,則說明傳輸數據過程中出現了差錯。

2.3.2 和校驗/異或校驗

在這里插入圖片描述

和校驗/異或校驗

針對一包數據進行校驗,和校驗是發送方將所發數據塊求和(或各字節異或),產生一個字節的校驗字符(校驗和)附加到數據塊未尾。接收方接收數據同時對數據塊(除校驗字節外)求和(或各字節異或),將所得的結果與發送方的“校驗和”進行比較,相符則無差錯,否則即認為傳送過程中出現了差錯。

2.3.3 循環冗余校驗CRC

在這里插入圖片描述

循環冗余校驗(Cyclic Redundancy Check,CRC)
針對一包數據進行校驗,這種校驗是通過某種數學運算實現有效信息與校驗位之間的循環校驗,常用于對磁盤信息的傳輸、存儲區的完整性校驗等。這種校驗方法糾錯能力強,廣泛應用于同步通信中。


文章源碼獲取方式:
如果您對本文的源碼感興趣,歡迎在評論區留下您的郵箱地址。我會在空閑時間整理相關代碼,并通過郵件發送給您。由于個人時間有限,發送可能會有一定延遲,請您耐心等待。同時,建議您在評論時注明具體的需求或問題,以便我更好地為您提供針對性的幫助。

【版權聲明】
本文為博主原創文章,遵循 CC 4.0 BY-SA 版權協議。這意味著您可以自由地共享(復制、分發)和改編(修改、轉換)本文內容,但必須遵守以下條件:
署名:您必須注明原作者(即本文博主)的姓名,并提供指向原文的鏈接。
相同方式共享:如果您基于本文創作了新的內容,必須使用相同的 CC 4.0 BY-SA 協議進行發布。

感謝您的理解與支持!如果您有任何疑問或需要進一步協助,請隨時在評論區留言。

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

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

相關文章

2025年SEVC SCI2區,利用增強粒子群算法(MR-MPSO)優化MapReduce效率和降低復雜性,深度解析+性能實測

目錄1.摘要2.MapReduce-Modified Particle Swarm Optimization (MR-MPSO)3.結果展示4.參考文獻5.算法輔導應用定制讀者交流1.摘要 大數據的迅猛增長帶來了嚴峻的數據管理挑戰,尤其是在數據分布不均的龐大數據庫中。由于這種不匹配,傳統軟件系統的效率大…

10-day07文本分類

文本分類使用場景文本分類任務 文本分類-機器學習貝葉斯算法應用在NLP中的應用 用貝葉斯公式處理文本分類任務 一個合理假設: 文本屬于哪個類別,與文本中包含哪些詞相關 任務: 知道文本中有哪些詞,預測文本屬于某類別的概率 貝葉斯…

Apache SeaTunnel詳解與部署(最新版本2.3.11)

目錄 一、概述 1.1、軟件介紹 1.2、解決問題? 1.3、軟件特性? 1.4、使用用戶 1.5、產品對比 二、架構 2.1、運行流程 2.2、連接器? 2.3、引擎 2.3.1、設計理念 2.3.2、集群管理? 2.3.3、核心功能? 2.3.4、引擎對比 三、軟件部署 3.1、Docker部署 3.2、發…

pytorch | minist手寫數據集

一、神經網絡神經網絡(Neural Network)是一種受生物神經系統(尤其是大腦神經元連接方式)啟發的機器學習模型,是深度學習的核心基礎。它通過模擬大量 “人工神經元” 的互聯結構,學習數據中的復雜模式和規律…

[C/C++安全編程]_[中級]_[如何避免出現野指針]

場景 在Rust里不會出現野指針的情況,那么在C里能避免嗎? 說明 野指針是指指向無效內存地址的指針,訪問它會導致未定義行為,可能引發程序崩潰、數據損壞或安全漏洞。它是 C/C 等手動內存管理語言中的常見錯誤,而 Rust…

機器學習基礎:從數據到智能的入門指南

一、何謂機器學習? 在我們的日常生活中,機器學習的身影無處不在。當你打開購物軟件,它總能精準推薦你可能喜歡的商品;當你解鎖手機,人臉識別瞬間完成;當你使用語音助手,它能準確理解你的指令。這些背后&a…

steam游戲搬磚項目超完整版實操分享

大家好,我是阿陽,今天再次最詳細的給大家綜合全面的分析講解下steam搬磚,可以點擊后面跳轉往期文章了再次解下阿陽網客:關于steam游戲搬磚項目,我想說!最早是21年5月份公開朋友圈,初次接觸是在2…

vue2 面試題及詳細答案150道(21 - 40)

《前后端面試題》專欄集合了前后端各個知識模塊的面試題,包括html,javascript,css,vue,react,java,Openlayers,leaflet,cesium,mapboxGL,threejs&…

原生前端JavaScript/CSS與現代框架(Vue、React)的聯系與區別(詳細版)

原生前端JavaScript/CSS與現代框架(Vue、React)的聯系與區別,以及運行環境和條件 目錄 引言原生前端技術概述 JavaScript基礎CSS基礎 現代框架概述 Vue.jsReact 聯系與相似性主要區別對比運行環境和條件選擇建議總結 引言 在現代Web開發中&…

基于機器視覺的邁克耳孫干涉環自動計數系統設計與實現

基于機器視覺的邁克耳孫干涉環自動計數系統設計與實現 前些天發現了一個巨牛的人工智能學習網站,通俗易懂,風趣幽默,忍不住分享一下給大家。點擊跳轉到網站。 摘要 本文設計并實現了一種基于機器視覺的邁克耳孫干涉環自動計數系統。該系統…

設計模式筆記(1)簡單工廠模式

最近在看程杰的《大話設計模式》,在這里做一點筆記。 書中主要有兩個角色: 小菜:初學者,學生; 大鳥:小菜表哥,大佬。 也按圖中的對話形式 01 簡單工廠模式 要求:使用c、Java、C#或VB…

Vue3 學習教程,從入門到精通,Vue 3 聲明式渲染語法指南(10)

Vue 3 聲明式渲染語法指南 本文將詳細介紹 Vue 3 中的聲明式渲染語法,涵蓋所有核心概念,并通過一個完整的案例代碼進行演示。案例代碼中包含詳細注釋,幫助初學者更好地理解每個部分的功能和用法。 目錄 簡介聲明式渲染基礎 文本插值屬性綁…

React hooks——useReducer

一、簡介useReducer 是 React 提供的一個高級 Hook,用于管理復雜的狀態邏輯。它類似于 Redux 中的 reducer 模式,適合處理包含多個子值、依賴前一個狀態或邏輯復雜的狀態更新場景。與 useState 相比,useReducer 提供更結構化的狀態管理方式。…

SEO中關于關鍵詞分類與布局的方法有那些

前邊我們說到關鍵詞挖掘肯定很重要,但如何把挖掘出來的關鍵詞用好更為重要,下邊我們就來說說很多seo剛入行的朋友比較頭疼的關鍵詞分類問題,為了更直觀的感受搭配了表格,希望可以給大家一些幫助!SEO優化之關鍵詞分類?挖掘出的關鍵…

考研最高效的準備工作是什么

從性價比的角度來說,考研最高效的準備工作是什么呢? 其實就是“卷成績”。 卷學校中各門課程的成績,卷考研必考的數學、英語、政治和專業課的成績。 因為現階段的考研,最看重的仍然是你的成績,特別是初試成績。 有了…

【Linux】基于Ollama和Streamlit快速部署聊天大模型

1.環境準備 1.1 安裝Streamlit 在安裝Streamlit之前,請確保您的系統中已經正確安裝了Python和pip。您可以在終端或命令行中運行以下命令來驗證它們是否已安裝 python --version pip --version一旦您已經準備好環境,現在可以使用pip來安裝Streamlit了。…

Jetpack - ViewModel、LiveData、DataBinding(數據綁定、雙向數據綁定)

一、ViewModel 1、基本介紹 ViewModel 屬于 Android Jetpack 架構組件的一部分,ViewModel 被設計用來存儲和管理與 UI 相關的數據,這些數據在配置更改(例如,屏幕旋轉)時能夠幸存下來,ViewModel 的生命周期與…

Go并發聊天室:從零構建實戰

大家好,今天我將分享一個使用Go語言從零開始構建的控制臺并發聊天室項目。這個項目雖然簡單,但它麻雀雖小五臟俱全,非常適合用來學習和實踐Go語言強大的并發特性,尤其是 goroutine 和 channel 的使用。 一、項目亮點與功能特性 …

瘋狂星期四第13天運營日報

網站運營第13天,點擊觀站: 瘋狂星期四 crazy-thursday.com 全網最全的瘋狂星期四文案網站 運營報告 昨日訪問量 昨天大概60個ip, 同比上個星期是高點的,但是與星期四差別還是太大了。😂 昨日搜索引擎收錄情況 百度依舊0收錄 …

吳恩達《AI for everyone》第二周課程筆記

機器學習項目工作流程以Echo/Alexa(語音識別AI)作為例子解釋: 1. collect data 收集數據——人為找很多人說 Alexa,并錄制音頻;并且還會讓一群人說其他詞語,比如hello 2. train model 訓練模型——用機器學…