STM32中ADC模擬訊號轉數碼訊號

2021-08-02 06:21:15 字數 1029 閱讀 1093

模擬訊號轉數碼訊號大致都不陌生,模擬訊號是連續性變化的訊號,adc就是把連續型訊號通過線性變換,轉換成相應的數碼訊號儲存在暫存器裡,mcu直接讀取即可。(感測器一般是線性的資料變換)

基礎知識:1. 51中pcf8591是8位adc晶元 (i2c對scl,sda控制,也算方便。後面把i2c,1-wire,spi協議都講了,就把各個協議對比一下,使用情況也分析一下)。而stm32內是12位adc轉換,18個通道(16個外部adc, 2個內部訊號源,下面**就是測試使用內部訊號源)

2. 4種模式:單次,連續 ,掃瞄和間斷模式執行

3. adc的輸入時鐘不能超過14mhz, 像stm32f103ze的rcc就是72mhz,然而使用必須分頻低於14mhz來使用(adc轉換是要時間的,它要將模擬訊號轉換成數碼訊號填入資料暫存器,如果晶振太大,精度就會受影響,後面的資料沒填進去)

4. 中斷源:很多外設都有中斷,adc同樣有

5. 可以使用dma, 後面會將dma_adc混合使用複習一下

adc引腳:

vref, vdda, vref-, vssa 這些了解一下即可,不重要。

adcx_in    模擬輸入訊號  (16個模擬輸入訊號,2個內部的不用adcx_in)

18個通道掛接在adc1,adc2,adc3上,  16通道只負責adc1的溫度感測器

17通道只負責adc1的內部參考電壓(adc採集可以隨意掛接其他通道)

至於各個模式,結構體配置有介紹,**裡註解寫上,也把個人認為有參考的心得,吐槽加上

#include "adc.h"

void adc_init()

main.c檔案

#include "public.h"

#include "systick.h"

#include "printf.h"

#include "adc.h"

int main()

ad=ad/50;

printf("ad=%fv!\r\n",ad*3.3/4096);              

delay_ms(1000);}}

stm32模擬輸出PPM訊號

ppm訊號週期為20ms,分成10分代表10個通道訊號,也就是2ms代表乙個訊號。0.5ms代表乙個通道訊號的開始,所以0.5ms 2ms為通道範圍控制。led p1 a 8 io口初始化,這裡就不介紹了,推挽輸出 u16 count 0 u16 pwm count 1000 總計數 週期20ms,...

STM32韌體概述之ADC

table 3.函式描述格式 函式名外設函式的名稱 函式原形 原形宣告 功能描述 簡要解釋函式是如何執行的 輸入引數 輸入引數描述 輸出引數 輸出引數描述 返回值函式的返回值 先決條件 呼叫函式前應滿足的要求 被呼叫函式 其他被該函式呼叫的庫函式 4.模擬 數字轉換器 模擬 數字轉換器 adc 是一...

STM32的ADC轉換模式

stm32的adc轉換模式 stm32的adc總共有兩種轉換模式 單次轉換和連續轉換 前幾天看了st官方的中文手冊,在adc模組的介紹中,同時出現了單次轉換模式 連續轉換模式和掃瞄模式,看完整個模組的文件後,對adc的轉換模式還是不理解,通過學習其他文件和程式設計測試,整理了 單次轉換 連續轉換和掃...