單片機總結【GPIO/TIM/IIC/SPI/UART】

一、GPIO

1、概念

通用輸入輸出口;開發者可以根據自己的需求將其配置為輸入或輸出模式,以實現與外部設備進行數據交互、控制外部設備等功能。簡單來說,GPIO 就像是計算機或微控制器與外部世界溝通的 “橋梁”。

2、工作模式

工作模式性質特征
上拉輸入數字輸入可讀取引腳電平,內部連接上拉電阻,懸空時默認高電平
下拉輸入數字輸入可讀取引腳電平,內部鏈接下拉電阻,懸空時默認低電平
模擬輸入模擬輸入GPIO無效,引腳直接接入內部ADC
浮空輸入數字輸入可讀取引腳電平,若引腳懸空,則電平不穩定
推挽輸出數字輸出可輸出引腳電平,高電平為VDD,低電平接VSS
開漏輸出數字輸出可輸出引腳電平,高電平為高阻態,低電平接VSS
復用推挽輸出數字輸出由片上外設控制,高電平為VDD,低電平接VSS
復用開漏輸出數字輸出由片上外設控制,高電平為高阻態,低電平接VSS

3、外設寄存器

外設寄存器功能模式選擇
GPIOx_MODER(GPIO端口模式寄存器)用于配置 GPIO 引腳的工作模式,每個 GPIO 引腳對應 2 位,通過設置這 2 位的值,可以將引腳配置為不同的模式。

00:輸入模式;01:通用輸出模式;10:復用功能模式;11:模擬模式。

GPIOx_OTYPER(GPIO端口輸出類寄存器)當 GPIO 引腳配置為輸出模式(通用輸出或復用功能輸出)時,該寄存器用于選擇輸出類型,即推挽輸出或開漏輸出。每個 GPIO 引腳對應 1 位。0:推挽輸出;1:開漏輸出。
GPIOx_OSPEEDR(GPIO端口輸出速度寄存器)用于配置 GPIO 引腳的輸出速度,每個 GPIO 引腳對應 2 位。輸出速度影響引腳的信號上升和下降時間,不同的速度適用于不同的應用場景。00:低速;01:中速;10:高速;11:超高速。
GPIOx_PUPDR(GPIO端口上拉/下拉)用于配置 GPIO 引腳的上拉或下拉電阻,每個 GPIO 引腳對應 2 位。上拉或下拉電阻可以確保引腳在沒有外部信號輸入時保持穩定的電平狀態。00:無上下拉;01:上拉;10:下拉;11:保留。
GPIOx_IDR(GPIO端口輸入數據寄存器)用于讀取 GPIO 引腳的輸入電平狀態。該寄存器是只讀的,每個引腳對應 1 位,讀取相應的位可以獲取該引腳當前的電平(高電平或低電平)。
GPIOx_ODR(GPIO端口輸出數據寄存器)用于設置 GPIO 引腳的輸出電平狀態。當 GPIO 引腳配置為輸出模式時,向該寄存器的相應位寫入?0?或?1?可以將引腳設置為低電平或高電平。
GPIOx_BSRR(GPIO端口置位/復位寄存器)用于原子性地設置或清除 GPIO 引腳的輸出電平。該寄存器分為兩部分,低 16 位用于置位(將引腳設置為高電平),高 16 位用于復位(將引腳設置為低電平)。
GPIOx_BRR(GPIO端口復位寄存器)專門用于將 GPIO 引腳的輸出電平復位(設置為低電平)。該寄存器的每一位對應一個 GPIO 引腳,向相應的位寫入?1?可以將對應的引腳設置為低電平。

二、TIM

1、概念

定時器是一種能夠對時間進行奇數的硬件設備。它可以按照預設的規則對時鐘信號進行計數,當計數值達到設定的閾值時,會觸發相應的事件,如產生中斷、輸出特定的信號等。通過對定時器的配置和使用,開發者可以實現精確的時間控制,滿足各種不同的應用需求。

2、工作原理

定時器的核心是一個計數器,它會在時鐘信號的驅動下進行計數操作。時鐘信號可以來自于內部時鐘源(如系統時鐘),也可以來自外部時鐘源。計數器從初始值開始,每接收到一個時鐘脈沖,計數值就會加1(或減1,具體取決于定時器的工作模式)。當計數值達到預設的自動重載函數值時,計數器會產生溢出事件,根據定時器的配置,可能會觸發中斷、更新輸出信號等。?

?計數模式:①遞增計數模式;②遞減計數模式;③中心對齊模式。

?內部工作框圖:

3、PWM脈沖寬度調劑

1、概念:

PWM是一種對模擬信號電平進行數字編碼的方法。通過定時器產生一系列脈沖信號,這些脈沖信號的頻率通常保持不變,但是脈沖的寬度(即高電平持續的時間)可以根據需要進行調整。通過改變脈沖的寬度,可以等效地控制輸出信號的平均電平,從而實現對一些設備的模擬控制。

2、工作原理:

定時器是產生PWM信號的核心部件。定時器內部有一個計數器,它會在時鐘信號的驅動下不斷計數。同時,還有一個比較寄存器,用于存儲一個比較值。當計數器的值小于比較值時,定時器輸出高電平;當計數器的值大于比較值時,定時器輸出低電平。計數器計數到自動重裝載值后會重新歸零,開始下一個計數周期。通過改變比較寄存器的值,就可以更改脈沖的寬度。

3、關鍵參數:

周期:

pwm信號完成一個完整的脈沖循環所需的時間,它決定了pwm信號的頻率。周期的倒數就是頻率。在定時器中,周期通常由自動重裝載值和時鐘頻率共同決定。

占空比:

指的是脈沖信號中高電平持續時間與整個周期的比值,通常用百分比表示。通過改變占空比,可以控制pwm信號的平均電平。

4、外設寄存器?

外設寄存器功能具體功能位及其作用
TIMx_CR1(定時器控制寄存器1)

該寄存器用于對定時器的基本工作模式和運行狀態進行配置和控制。

計數器使能位:當該位置為 1 時,定時器計數器開始計數;置為 0 時,計數器停止計數。計數器方向位:用于設置計數器的計數方向,0 表示向上計數(從 0 開始遞增到自動重裝載值),1 表示向下計數(從自動重裝載值開始遞減到 0)。自動重裝載預裝載使能位:若該位置 1,自動重裝載寄存器(TIMx_ARR)的值會在更新事件發生時才被傳送到影子寄存器;置 0 時,TIMx_ARR?的值會立即生效單位脈沖模式位:置 1 時,定時器在發生一次更新事件后停止計數,常用于只需要單次定時操作的場景。
TIMx_CCMR1(定時器捕獲/比較模式寄存器)主要用于配置定時器的捕獲 / 比較通道 1 和通道 2 的工作模式,包括輸入捕獲模式和輸出比較模式。模式選擇位:用于選擇通道 1 或通道 2 的輸出比較模式,例如 PWM 模式 1、PWM 模式 2 等。不同的模式決定了計數器值與比較值的比較方式以及輸出引腳的電平變化規則。輸入捕獲預分頻器位:在輸入捕獲模式下,用于設置輸入信號的預分頻系數,以減少捕獲不必要的信號邊沿,提高捕獲精度。輸出比較預裝載使能位:置 1 時,比較寄存器的值會在更新事件發生時才被傳送到影子寄存器;置 0 時,比較寄存器的值會立即生效。
TIMx_CCER(定時器捕獲/比較使能寄存器)該寄存器用于控制定時器捕獲 / 比較通道的使能和極性。捕獲/比較使能位:用于使能相應的捕獲 / 比較通道。例如,CC1E 置 1 時,通道 1 的捕獲或比較功能被使能;置 0 時,功能被禁用。捕獲/比較極性位:用于設置捕獲 / 比較通道的輸入或輸出極性。例如,在輸入捕獲模式下,該位決定是捕獲上升沿還是下降沿;在輸出比較模式下,決定輸出信號的初始電平。
TIMx_PSC(定時器預分頻器寄存器)用于設置定時器時鐘的預分頻系數,從而調整定時器計數器的計數頻率。定時器的時鐘源通常具有較高的頻率,通過設置預分頻器,可以將時鐘頻率降低到合適的范圍,以滿足不同的定時需求。例如,若預分頻系數設置為 10,則計數器每接收到 10 個時鐘脈沖才會加 1。
TIMx_ARR(定時器自動重裝載寄存器)存儲定時器計數器的自動重裝載值。當計數器的值達到該寄存器存儲的值時,會產生更新事件,計數器可能會重新歸零(取決于計數方向和配置)。自動重裝載值與預分頻系數共同決定了定時器的定時周期。通過改變自動重裝載值,可以調整定時器的定時時間。
TIMx_CCR1(定時器捕獲/比較寄存器1)在輸入捕獲模式下,該寄存器用于存儲捕獲到的計數器值;在輸出比較模式下,用于存儲與計數器值進行比較的值。輸入捕獲模式:當定時器檢測到指定的輸入信號邊沿(上升沿或下降沿)時,會將當前計數器的值捕獲到?TIMx_CCR1?中,通過分析這些捕獲值,可以測量輸入信號的周期、脈寬等參數。輸出比較模式:計數器的值會不斷與?TIMx_CCR1?中的值進行比較,當兩者相等時,會根據配置產生相應的輸出動作,如改變輸出引腳的電平狀態,常用于產生 PWM 信號等。

5、看門狗定時器

1、概念(工作原理):

它會在系統正常運行時按照一定的時間間隔進行計數。在系統運行過程中,程序需要定期對看門狗定時器進行 “喂狗” 操作,即重置定時器的計數值。如果由于某種原因(如程序跑飛、硬件故障等)導致系統未能及時 “喂狗”,看門狗定時器就會溢出,進而觸發一個復位信號,使系統重新啟動,以恢復到正常的工作狀態。

2、設置看門狗的步驟:

①確定看門狗的時鐘頻率

②對時鐘頻率進行分頻

③給看門狗一個看門閾值

④主程序中正常喂狗

三、IIC

1、概述

iic是一種同步串行通信協議,有Philips(現為NXP)開發,廣泛用于低速、短距離的多設備通信。iic允許多個設備(包括多個主設備和從設備)共享2根線路:數據線(SDA)和時鐘線(SCL)。

2、工作原理?

由主設備控制時鐘線(SCL),通過數據線(SDA)與多個從設備通信。每個設備由唯一的地址,主設備通過設備地址選擇要通信的設備。

3、應用場景

傳感器、EEPROM、RTC(實時時鐘)、顯示屏等。

4、iic的信號

起始信號(SCL為高電平期間,SDA由高電平向低電平變化)。

終止信號(SCL為高電平期間,SDA由低電平向高電平變化)。

應答信號(接收方接收到數據后,還可以進行下一次8bit數據的接收)。

非應答信號(接收方接收到數據后,不可以進行下一次8bit數據的接收)

數據接收和發送信號。

5、主機和從機通信過程分析

①主機給從機發送數據

②主機從從機讀取數據

四、SPI

1、概述

spi是一種同步串行通信協議,用于主從設備之間的高速數據傳輸。spi是全雙工通信,意味著數據可以同時在兩個方向上傳輸。它使用四根信號線:時鐘線(SCK)、主設備輸入從設備輸出線(MISO)、主設備輸出從設備輸入線(MOSI)和片選線(SS)來進行通信。

?

2、工作原理?

主設備提供時鐘信號(SCK),通過數據線(MISO和MOSI)與從設備進行雙向數據傳輸。每個從設備需要一個單獨的片選信號(SS)來進行通信。

3、應用場景

存儲設備(如Flash、SD卡)、顯示屏、傳感器、音頻解碼器等。

4、硬件連接方式

①基本的連接方式(四線)

當一個SPI主機和多個從機進行通信時,會通過片選線 選擇和哪一個從機進行通信。

② 三線連接

當單主機單從機進行SPI通信時不需要片選線選擇和哪一個從機進行通信,所以在進行連接時只需SCK\MOSI\MISO三根線就可以完成通信。

5、時序分析

spi主從機通信需要通過兩個時鐘特性進行約定:

1、時鐘極性(CPOL):空閑狀態下時鐘線電平的高低

? ? ? ? 時鐘極性為1:空閑狀態下時鐘線保持高電平;

? ? ? ? 時鐘極性為0:空閑狀態下時鐘線保持低電平。

2、時鐘相位(CPHA):通信進行數據采樣(數據讀取)在時鐘前沿還是時鐘后沿

? ? ? ? 時鐘相位1:在時鐘后沿進行數據采樣,在時鐘前沿進行數據輸出;

? ? ? ? 時鐘相位1:在時鐘前沿進行數據采樣,在時鐘后沿進行數據輸出。

五、UART

1、概述

uart一種異步串行通信協議,用于在兩個設備之間傳輸數據。它將數據按位發送,不需要時鐘信號進行同步。在uart通信中,數據通過兩根線路傳輸:發送線(TX)和接收線(RX)。它主要用于簡單的點對點通信。

2、工作原理?

數據被拆分成多個數據位,并通過串行方式(一個接一個地)發送,接收方根據預定的波特率解析數據。

3、應用場景

常見于調試接口、串口通信、GPS模塊、藍牙、WIFI模塊等。

4、數據幀格式

異步通信,雙方各自使用自己的時鐘信號進行數據傳輸,由于雙方的始終不一樣,就算提前約定好了波特率,隨著傳輸數據量的增加,雙方數據收發就會累計一定的誤差,所以為了避免這個誤差,我們需要對傳輸收發的數據進行約定,規范好收發的格式來消除誤差。

?

空閑位:當不進行數據收發時,數據線處于高電平狀態

起始位:1bit低電平,一幀數據傳輸的開始

數據位:5-8bit數據位,傳輸的數據

校驗位:1bit,可有可無

? ? ? ? 奇校驗:一幀數據傳輸后保證數據位和校驗位1的個數是一個奇數;

? ? ? ? 偶校驗:一幀數據傳輸后保證數據位和校驗位1的個數是一個偶數。

停止位:1-2bit高電平,一幀數據結束的標志

六、三種總線對比

1、總線

總線:連接多個部件的信息傳輸線,是各部件共享的傳輸介質

2、總線類型?

片內總線:連接處理器內核和外設的總線,在芯片內部。

片外總線:連接芯片和其他芯片或者模塊的總線。

?

3、模塊之間進行總線通信的方式

①串行通信和并行同行

串行通信:

指的是同一時刻只能收或發一個bit位信息,因此只用一根信號線即可。

優點:占用的引腳資源少。

缺點:速度相對較慢。

并行通信

指的是同一時刻可以收或發多個bit位信息,因此需要多跟信號線才行。

優點:速度快。

缺點:占用引腳資源多。

②單工、半雙工、全雙工通信

單工:

要么收,要么發,只能做接收設備或發送設備。

半雙工:

可以收,可以發,但不能同時收發,通信雙方只有同一個信道。

全雙工:

可以在同一時刻接收和發送。

③同步通信與異步通信

1、同步通信:

同步通信是一種在數據傳輸過程中,發送方和接收方使用同一個時鐘源或通過特定的同步機制來保證雙方時鐘嚴格同步的通信方式。在這種方式下,發送方和接收方的時鐘信號頻率和相位保持一致,從而使數據能夠在準確的時間被發送和接收。

優點:

傳輸效率高,數據傳輸速率快。

缺點:

硬件成本高,對時鐘精度要求高。

2、異步通信:

異步通信是一種發送方和接收方不需要使用同一個時鐘源,而是通過在數據中添加起始位、停止位等控制信息來實現數據傳輸同步的通信方式。

優點:

硬件簡單,靈活性高。

缺點:

傳輸效率低,數據傳輸效率慢。

4、總結對比

?

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

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

相關文章

.gitignore 文件中添加忽略 .pdb 文件

我在項目的根目錄下創建.gitignore文件。打開.gitignore文件并添加忽略.pdb文件的規則。如下: 已經在 .gitignore 文件中添加了忽略 .pdb 文件的規則,但是提交到 Git 倉庫時仍然看到了 .pdb 文件,這通常意味著 .pdb 文件在 .gitignore 文件被…

ubuntu配置jmeter

1.前提準備 系統 ubuntu server 22.04 前提條件:服務器更新apt與安裝lrzsz:更新apt: sudo apt update安裝lrzsz: 命令行下的上傳下載文件工具 sudo apt install lrzszsudo apt install zip2.安裝jemeter 2.1.下載jdk17 輸入命令&#xf…

半導體晶圓精控:ethercat轉profient網關數據提升制造精度

數據采集系統通過網關連接離子注入機,精細控制半導體晶圓制造過程中的關鍵參數。 在半導體制造中,晶圓制造設備的精密控制是決定產品性能的關鍵因素。某半導體工廠采用耐達訊Profinet轉EtherCAT協議網關NY-PN-ECATM,將其數據采集系統與離子注…

VSCode+PlatformIO報錯 找不到頭文件

如圖示,找不到目標頭文件 demo工程運行正常,考慮在src文件夾內開辟自己的代碼,添加后沒有找到 找了些資料,大概記錄如下: 1、c_cpp_properties.json 內記錄 頭文件配置 .vscode 中,此文件是自動生成的&a…

ARM 處理器平臺 eMMC Flash 存儲磨損測試示例

By Toradex秦海 1). 簡介 目前工業嵌入式 ARM 平臺最常用的存儲器件就是 eMMC Nand Flash 存儲,而由于工業設備一般生命周期都比較長,eMMC 存儲器件的磨損壽命對于整個設備來說至關重要,因此本文就基于 NXP i.MX8M Mini ARM 處理器平臺演示…

Comfy UI 快捷鍵

Comfy UI 頁面的快捷鍵操作(記錄下,以防忘記): 捷徑命令Ctrl Enter將當前圖表排隊等待生成Ctrl Shift Enter將當前圖表排成第一個生成圖表Ctrl Z/Ctrl Y撤消/重做Ctrl S保存工作流程Ctrl O加載工作流Ctrl A選擇所有節點A…

uniapp 本地數據庫多端適配實例(根據運行環境自動選擇適配器)

項目有個需求,需要生成app和小程序,app支持離線數據庫,如果當前沒有網絡提醒用戶開啟離線模式,所以就隨便搞了下,具體的思路就是: 一個接口和多個實現類(類似后端的模板設計模式)&am…

HIVE SQL函數之比較函數

背景:今天接到一個臨時需求,需要比較abc的大小,但是abc三個字段都存在為空的情況。 開發:對于這個開發很簡單,因為比較函數有太多了,首先想到的是用case when去進行一個非空的判斷,再去比較用I…

AI探索筆記:淺談人工智能算法分類

人工智能算法分類 這是一張經典的圖片,基本概況了人工智能算法的現狀。這張圖片通過三個同心圓展示了人工智能、機器學習和深度學習之間的包含關系,其中人工智能是最廣泛的范疇,機器學習是其子集,專注于數據驅動的算法改進&#…

進程概念、PCB及進程查看

文章目錄 一.進程的概念進程控制塊(PCB) 二.進程查看通過指令查看進程通過proc目錄查看進程的cwd和exe獲取進程pid和ppid通過fork()創建子進程 一.進程的概念 進程是一個運行起來的程序,而程序是存放在磁盤的,cpu要想執行程序的指…

OA辦公系統自動滲透測試過程

目錄 一、下載環境源碼 二、部署環境 三、測試 XSS漏洞 SQL注入 文件上傳漏洞 一、下載環境源碼 OA源碼打包地址: https://download.csdn.net/download/weixin_43650289/90434502?spm=1001.2014.3001.5503 二、部署環境

怎么修改node_modules里的文件,怎么使用patch-package修改node_modules的文件,怎么修改第三方庫原文件。

在開發中會遇到需要node_modules里第三方庫有bug,然后需要修改node_modules文件的情況 使用patch-package包可以修改node_modules里的文件 patch-package npm 官網:patch-package - npm 安裝 npm i patch-package 修改文件后 npx patch-package s…

Python在實際工作中的運用-通用格式CSV文件自動轉換XLSX

繼續上篇《Python在實際工作中的運用-CSV無損轉XLSX的幾個方法》我們雖然對特定格式的CSV實現了快速轉換XLSX的目標,但是在運行Py腳本前,還是需要編輯表格創建腳本和數據插入腳本,自動化程度很低,實用性不強,為減少人工提高效率,實現輸入CSV文件路徑即可自動適配完成轉換…

seacmsv9報錯注入

1、seacms的介紹 ? seacms中文名&#xff1a;海洋影視管理系統。是一個采用了php5mysql架構的影視網站框架&#xff0c;因此&#xff0c;如果該框架有漏洞&#xff0c;那使用了該框架的各個網站都會有相同問題。 2、源碼的分析 漏洞的部分源碼如下&#xff1a; <?php …

Hbase客戶端API——語句大全

目錄 創建表&#xff1a; 插入數據&#xff1a; 刪除數據&#xff1a; 修改數據&#xff1a; 查詢數據&#xff1a;Get 查詢數據&#xff1a;Scan 查詢數據&#xff1a;過濾查詢 創建表&#xff1a; 檢驗&#xff1a; 插入數據&#xff1a; 驗證 一次多條數據插入 驗證&…

vscode 版本

vscode官網 Visual Studio Code - Code Editing. Redefined 但是官網只提供最新 在之前的版本就要去github找了 https://github.com/microsoft/vscode/releases 獲取舊版本vscode安裝包的方法_vscode 老版本-CSDN博客

IP------PPP協議

這只是IP的其中一塊內容PPP&#xff0c;IP還有更多內容可以查看IP專欄&#xff0c;前一章內容為網絡類型&#xff0c;可通過以下路徑查看IP---網絡類型-CSDN博客&#xff0c;歡迎指正 3.PPP協議 1.PPP優點 網絡類型&#xff1a;p2p PPP---點到點協議 兼容性會更強凡是接口或…

Springboot基礎篇(3):Bean管理

前言&#xff1a;Spring 通過掃描類路徑&#xff08;Classpath&#xff09;來查找帶有特定注解&#xff08;如 Component、Service、Repository 等&#xff09;的類&#xff0c;并將它們注冊為 Spring 容器中的 Bean。 1 Bean掃描 Bean 掃描是 Spring 框架的核心功能之一&…

Metal 學習筆記二:3D模型

是什么讓一個好游戲更好玩&#xff1f;漂亮的圖像&#xff01;就像《神界&#xff1a;原罪2》&#xff0c;《暗黑破壞神3》以及《巫師3》等大作一樣&#xff0c;需要一個強大的程序團隊以及3D美術團隊強強合作。你在屏幕中看到正是3D模型使用自定義渲染繪制的結果。就像上一章你…

【算法】797. 差分

題目 797. 差分 思路 差分的實質是通過構造數組b減少時間復雜度&#xff0c;數組a為初始數據&#xff0c;構造數組b&#xff0c;數組a是b的前綴和&#xff0c;通過對數組b操作就可以實現數組a每個數加上c&#xff0c;而對數組b的操作在單位時間內即可完成&#xff0c;對數組…