娇小w搡bbbb搡bbb,《第一次の人妻》,中国成熟妇女毛茸茸,边啃奶头边躁狠狠躁视频免费观看

歷史上的今天

今天是:2025年07月12日(星期六)

2020年07月12日 | STM8S_005_ ADC采集單通道電壓

發布者:Xingfu6666 來源: 51hei關鍵字:STM8S  ADC  采集單通道電壓 手機看文章 掃描二維碼
隨時隨地手機看文章

寫在前面 Ⅰ

和前面51系列的芯片相比,STM8S芯片的優勢之一在于外設資源要豐富且功能要強大的多。因此,本文講述STM8S的一項比較實用的功能:ADC采集電壓。


在物聯網的產品中,大多數傳感器都使用了模數轉換(ADC)這一功能。本文提供STM8兩種轉換模式:

? 單次軟件觸發

? 連續轉換

本文將結合“STM8S參考手冊”中ADC章節和軟件源代碼給大家講述關于UART的基礎知識和用法。


為方便大家閱讀,本文內容已經整理成PDF文件:

http://pan.baidu.com/s/1i5uWhJR

ADC基礎知識 Ⅱ

ADC:Analog-to-Digital Converter,即模擬到數字的轉換

STM8S提供的ADC1和ADC2是10位的逐次比較型模擬數字轉換器。提供多達16個多功能的輸入通道(實際準確的通道數量在數據手冊的引腳描述說明)。 A/D轉換的各個通道可以執行單次和連續的轉換模式。


相對于ADC2, ADC1具有一些擴展功能,包括掃描模式,帶緩存的連續模式以及模擬看門狗。請參考數據手冊來了解不同產品型號的ADC1和ADC2的功能信息。


主要功能:

ADC1和ADC2的功能如下:

● 10位的分辨率

● 單次和連續的轉換模式

● 可編程的(轉換頻率的)預分頻: fMASTER 可以被分頻 2 到 18

● 可以選擇ADC專用外部中斷(ADC_ETR)或者定時器觸發信號(TRGO)來作為外部觸發信號

● 模擬放大 (對于具有VREF引腳的型號)

● 轉換結束時可產生中斷

● 靈活的數據對齊方式

● ADC 輸入電壓范圍: VSSA ≤ VIN ≤ VDDA


ADC1具有以下擴展功能:

● 帶緩沖的連續轉換模式

● 單次和連續轉換的掃描模式

● 具有上限和下限門檻的模擬看門狗

● 模擬看門狗事件發生可產生中斷


ADC 開-關控制:

通過置位ADC_CR1寄存器的 ADON位來開啟ADC。當首次置位ADON位時, ADC從低功耗模式喚醒。為了啟動轉換必須第二次使用寫指令來置位ADC_CR1寄存器的位。


在轉換結束時ADC會保持在上電狀態,用戶只需要置位ADON位一次來啟動下一次的轉換。


如果長時間沒有使用ADC,推薦將ADC模塊切換到低功耗模式來降低功耗,這可以通過清零ADON位來實現。


ADC時鐘:

ADC的時鐘是由fMASTER時鐘經過預分頻后供給的。時鐘的預分頻因子是由 ADC_CR1寄存器的SPSEL[2:0]決定的。


通道選擇:

有多達 16 個外部輸入通道。實際外部通道的數量取決于MCU 封裝大小。

如果在一次轉換過程中改變通道選擇,那么當前的轉換被復位同時一個新的開始指令脈沖被發送到ADC

轉換模式:

ADC支持5種轉換模式:單次模式,連續模式,帶緩存的連續模式,單次掃描模式,連續掃描模式。


軟件工程源代碼 Ⅲ

1、關于工程

本文提供的工程代碼是基于前面軟件工程“STM8S-A04_UART基本收發數據”增加ADC修改而來。初學的朋友可以參看我前面對應的基礎文章,那些文章講的比較詳細。


工程源代碼主要實現功能:ADC單次軟件觸發采集電壓、ADC連續轉換采集電壓。


本文重點講述關于ADC的內容:

ADC_Initializes:ADC初始化

ADC_Read:讀取電壓

2.代碼分析說明

A.ADC_Initializes:初始化

void ADC_Initializes(void)

{

GPIO_Init(GPIOD, GPIO_PIN_2, GPIO_MODE_IN_FL_NO_IT);

ADC1_Init(ADC1_CONVERSIONMODE_SINGLE, ADC1_CHANNEL_3, ADC1_PRESSEL_FCPU_D2,

ADC1_EXTTRIG_TIM, DISABLE, ADC1_ALIGN_RIGHT, ADC1_SCHMITTTRIG_CHANNEL3,

DISABLE);

ADC1_Cmd(ENABLE);

}


GPIO_Init(GPIOD, GPIO_PIN_2, GPIO_MODE_IN_FL_NO_IT)初始化ADC通道引腳:

這句比較簡單,配置ADC對應的引腳為浮動輸入模式。


ADC1_Init初始化ADC配置:

ADC1_CONVERSIONMODE_SINGLE:單次轉換(該參數可以為連續轉換)

ADC1_CHANNEL_3:對應通道(具體查看數據手冊)

ADC1_PRESSEL_FCPU_D2:時鐘分頻

ADC1_EXTTRIG_TIM:外部觸發方式

DISABLE:是否使能該觸發方式

ADC1_ALIGN_RIGHT:對齊方式(可以左右對齊)

ADC1_SCHMITTTRIG_CHANNEL3:指定觸發通道

DISABLE:是否使能指定觸發通道

ADC1_Cmd(ENABLE)使能ADC.

B.ADC_Read:讀取電壓函數

uint32_t ADC_Read(void)

{

uint8_t  i;

uint16_t adc_value = 0;

uint32_t adc_voltage = 0;

for(i=0; i<4; i++)

{

ADC1_StartConversion(); 

while(RESET == ADC1_GetFlagStatus(ADC1_FLAG_EOC));

ADC1_ClearFlag(ADC1_FLAG_EOC);

adc_value += ADC1_GetConversionValue(); 

}

adc_voltage = adc_value >> 2; 

adc_voltage = (adc_voltage*3300) >> 10;

return adc_voltage;

}

這里需要注意單次轉換和連續轉換的區別:

單次轉換就是每次都需要軟件觸發一下;

而連續則不需要軟件每次都觸發,只需要觸發一次。


C.主函數功能

while(1)

{

LED_ON;

TIMDelay_Nms(500);

LED_OFF;

TIMDelay_Nms(500);

voltage = ADC_Read();

vol_buf[0] = (voltage/1000)%10 + '0';

vol_buf[1] = (voltage/100)%10 + '0';

vol_buf[2] = (voltage/10)%10 + '0';

vol_buf[3] = (voltage)%10 + '0';

UART1_SendNByte(vol_buf, 4);

}


本文提供例程是間隔1s讀取ADC并通過UART串口打印的方式進行測試。故在這里使用了UART。


下載 Ⅳ

STM8S資料:

http://pan.baidu.com/s/1o7Tb9Yq

軟件源代碼工程(STM8S-A05_ADCxxx):

http://pan.baidu.com/s/1c2EcRo0

關鍵字:STM8S  ADC  采集單通道電壓 引用地址:STM8S_005_ ADC采集單通道電壓

上一篇:STM8S_ 004_UART基本收發數據
下一篇:STM8S_ 006_AWU自動喚醒

推薦閱讀

包裝機器人制造商舒伯特公司通過其在上海的全新服務和銷售網點,為與中國客戶建立更緊密的合作關系奠定了基礎 德國克賴爾斯海姆/中國上海。次級包裝自動化對于中國的食品、藥品和化妝品或消費品生產商越來越重要。德國包裝機械制造商舒伯特公司憑借極其靈活的機器人頂載式包裝系統,滿足不斷增長的需求。舒伯特公司作為一個家族企業,50多年來一直尤為注重...
01、研究背景 隨著分布式新能源的開發與利用,現有的傳統配電網適應性已經不夠。微網作為分布式電源接入電力系統的有效利用方式,能實現大規模、多類型的新能源就地消納和即插即用,正在成為智能配電網的關鍵一環。當微網在配電網中大量存在并發展成多微網系統(微網群)后,可以通過尋求微網之間的連接方案,即合理構建基于微網的有源配電網拓撲,構建...
師傅所教知識制作了一個LCD12864的屏幕顯示,字模自己軟件下載的,俺們新手,寫的粗糙期末項目為時鐘的顯示和設定,內含鬧鐘PU原理圖按鍵:PA0:暫停時鐘在暫停時鐘后再按一次PA0則開始選擇改變分鐘(反白),繼續按下PA0開始設置時鐘的改變(反白)PA1與PA2連用檢測按鍵:數字的增加PB0:數據的減少PB1與PB2連用檢測按鍵:確認改變仿真原理圖如下另外,我現...
如何選擇一款適用的袋料自動碼垛機呢?對此,相關人士是這樣講的:?負載:負載是指機器人在工作時能夠承受的載重。如果將零件從一臺機器處搬至另外一處,需要將零件的重量和機器人抓手的重量計算在負載內。自由度(軸數):機器人軸的數量決定了其自由度。如果只是進行一些簡單的應用,4軸機器人就足夠。如果機器人需要在一個狹小的空間內工作,而且機械...

史海拾趣

小廣播
設計資源 培訓 開發板 精華推薦

最新單片機文章
何立民專欄 單片機及嵌入式寶典

北京航空航天大學教授,20余年來致力于單片機與嵌入式系統推廣工作。

 
EEWorld訂閱號

 
EEWorld服務號

 
汽車開發圈

 
機器人開發圈

電子工程世界版權所有 京ICP證060456號 京ICP備10001474號-1 電信業務審批[2006]字第258號函 京公網安備 11010802033920號 Copyright ? 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
主站蜘蛛池模板: 阳原县| 项城市| 双流县| 弥渡县| 桂林市| 芦山县| 镇远县| 玛纳斯县| 巴南区| 原阳县| 尼玛县| 沂源县| 康马县| 白水县| 衢州市| 隆子县| 丽江市| 阜宁县| 宜丰县| 始兴县| 丁青县| 祁连县| 朔州市| 光泽县| 双流县| 宝应县| 孙吴县| 休宁县| 措勤县| 通州市| 肇源县| 郧西县| 旅游| 合水县| 高密市| 日照市| 嘉禾县| 齐河县| 高密市| 平利县| 保德县|