www.久久久久|狼友网站av天堂|精品国产无码a片|一级av色欲av|91在线播放视频|亚洲无码主播在线|国产精品草久在线|明星AV网站在线|污污内射久久一区|婷婷综合视频网站

當(dāng)前位置:首頁 > 電源 > 數(shù)字電源
[導(dǎo)讀]STM32的優(yōu)點(diǎn)在哪里?除去宣傳環(huán)節(jié),細(xì)細(xì)分析,STM32時(shí)鐘不算快,72MHZ,也不能擴(kuò)展大容量的RAM FLASH,同樣沒有DSP那樣強(qiáng)大的指令集。它的優(yōu)勢在哪里呢?---就在快速采集數(shù)據(jù)

STM32的優(yōu)點(diǎn)在哪里?除去宣傳環(huán)節(jié),細(xì)細(xì)分析,STM32時(shí)鐘不算快,72MHZ,也不能擴(kuò)展大容量的RAM FLASH,同樣沒有DSP那樣強(qiáng)大的指令集。它的優(yōu)勢在哪里呢?

---就在快速采集數(shù)據(jù),快速處理上。

ARM的特點(diǎn)就是方便?!∵@個(gè)快速采集,高性能的ADC就是一個(gè)很好的體現(xiàn),12位精度,最快1uS的轉(zhuǎn)換速度,通常具備2個(gè)以上獨(dú)立的ADC控制器,這意味著,STM32可以同時(shí)對多個(gè)模擬量進(jìn)行快速采集,這個(gè)特性不是一般的MCU具有的。以上高性能的ADC,配合相對比較塊的指令集和一些特色的算法支持,就構(gòu)成了STM32在電機(jī)控制上的強(qiáng)大特性。

 

 

好了,正題,怎么做一個(gè)簡單的ADC?

注意是簡單的,ADC是個(gè)復(fù)雜的問題,涉及硬件設(shè)計(jì),電源質(zhì)量,參考電壓,信號(hào)預(yù)處理等等問題。我們只就如何在MCU內(nèi)完成一次ADC作討論。

談到ADC,我們還要第一次引入另外一個(gè)重要的設(shè)備DMA。DMA是什么東西呢。

通常在8位單片機(jī)時(shí)代,很少有這個(gè)概念。在外置資源越來越多以后,我們把一個(gè)MCU內(nèi)部分為 主處理器 和 外設(shè)兩個(gè)部分。主處理器當(dāng)然是執(zhí)行我們指令的主要部分,外設(shè)則是 串口 I2C ADC 等等用來實(shí)現(xiàn)特定功能的設(shè)備,回憶一下,8位時(shí)代,我們的主處理器最常干的事情是什么?邏輯判斷?不是。那才幾個(gè)指令計(jì)算算法?不是。大部分時(shí)候算法都很簡單?!∈聦?shí)上,主處理器就是作個(gè)搬運(yùn)工,

把USART的數(shù)據(jù)接收下來,存起來

把ADC的數(shù)據(jù)接收下來,存起來

把要發(fā)送的數(shù)據(jù),存起來,一個(gè)個(gè)的往USART里放。

…………

為了解決這個(gè)矛盾,人們想到一個(gè)辦法,讓外設(shè)和內(nèi)存間建立一個(gè)通道,在主處理器允許下,讓外設(shè)和內(nèi)存直接 讀寫,這樣就釋放了主處理器,這個(gè)東西就是DMA。

打個(gè)比方:

一個(gè)MCU是個(gè)公司。老板就是主處理器員工是外設(shè),倉庫就是內(nèi)存.

從前 倉庫的東西都是老板管的。員工需要原料工作,就一個(gè)個(gè)報(bào)給老板,老板去倉庫里一個(gè)一個(gè)拿。員工作好的東西,一個(gè)個(gè)給老板,老板一個(gè)個(gè)放進(jìn)倉庫里。老板很累,雖然老板是超人,也受不了越來越多的員工和單子。

最后老板雇了一個(gè)倉庫保管員,它就是DMA

他專門負(fù)責(zé) 入庫和出庫,只需要把出庫 和入庫計(jì)劃給老板過目老板說OK,就不管了。

后面的入庫和出庫過程,員工只需要和這個(gè)倉庫保管員打交道就可以了。

--------閑話,馬七時(shí)常想,讓設(shè)備與設(shè)備之間開DMA,豈不更牛X,比喻完成。

ADC是個(gè)高速設(shè)備,前面提到。而且ADC采集到的數(shù)據(jù)是不能直接用的。即使你再小心的設(shè)計(jì)外圍電路,測的離譜的數(shù)據(jù)總會(huì)出現(xiàn)。那么通常來說,是采集一批數(shù)據(jù),然后進(jìn)行處理,這個(gè)過程就是軟件濾波。

DMA用到這里就很合適。讓ADC高速采集,把數(shù)據(jù)填充到RAM中,填充一定數(shù)量,比如32個(gè),64個(gè)MCU再來使用。

-----多一句,也可以說,單次ADC毫無意義。

下面我們來具體介紹,如何使用DMA來進(jìn)行ADC操作。初始化函數(shù)包括兩部分,DMA初始化和 ADC初始化我們有多個(gè)管理員--DMA,一個(gè)管理員當(dāng)然不止管一個(gè)DMA操作。所以DMA有多個(gè)Channel

//ADC with DMA Init

#define ADC_Channel ADC_Channel0

#define ADC1_DR_Address ((u32)0x4001244C)

void ADCWithDMAInit()

{

//DMA init; Using DMA channel 1

DMA_DeInit(DMA1_Channel1); //開啟DMA1的第一通道

DMA_InitStruct.DMA_PeripheralBaseAddr = ADC1_DR_Address; //DMA對應(yīng)的外設(shè)基地址,這個(gè)地址走Datasheet查

DMA_InitStruct.DMA_PeripheralDataSize = DMA_PeripheralDataSize_HalfWord; //轉(zhuǎn)換結(jié)果的數(shù)據(jù)大小

DMA_InitStruct.DMA_MemoryBaseAddr = (unsigned long)&ADC_ConvertedValue; //

DMA_InitStruct.DMA_DIR = DMA_DIR_PeripheralSRC; //DMA的轉(zhuǎn)換模式是SRC模式,就是從外設(shè)向內(nèi)存中搬運(yùn),

DMA_InitStruct.DMA_M2M = DMA_M2M_Disable; //M2M模式禁止,memory to memory,這里暫時(shí)用不上,以后介

DMA_InitStruct.DMA_MemoryDataSize = DMA_MemoryDataSize_HalfWord; //DMA搬運(yùn)的數(shù)據(jù)尺寸,注意ADC是12位的,

HalfWord就是16位

DMA_InitStruct.DMA_MemoryInc = DMA_MemoryInc_Disable; //接收一次數(shù)據(jù)后,目標(biāo)內(nèi)存地址是否后移--重

要概念,用來采集多個(gè)數(shù)據(jù)的

DMA_InitStruct.DMA_PeripheralInc = DMA_PeripheralInc_Disable; //接收一次數(shù)據(jù)后,設(shè)備地址是否后移

DMA_InitStruct.DMA_Mode = DMA_Mode_Circular; //轉(zhuǎn)換模式,循環(huán)緩存模式,常用,M2M果果開啟了,這個(gè)模式失效

。

DMA_InitStruct.DMA_Priority = DMA_Priority_High; //DMA優(yōu)先級,高

DMA_InitStruct.DMA_BufferSize = 1; //DMA緩存大小,1個(gè)

DMA_Init(DMA1_Channel1,&DMA_InitStruct);

// Enable DMA1

DMA_Cmd(DMA1_Channel1, ENABLE);

}

void ADCx_Init(unsigned char ADC_Channel)

{

ADC_DeInit(ADC1); //開啟ADC1

ADC_InitStruct.ADC_Mode = ADC_Mode_Independent; //轉(zhuǎn)換模式,為獨(dú)立轉(zhuǎn)換。轉(zhuǎn)換模式太多了,以后深究

ADC_InitStruct.ADC_DataAlign = ADC_DataAlign_Right; //對齊方式,ADC結(jié)果是12位的,顯然有個(gè)對齊左邊還是右邊

的問題。一般是右對齊

ADC_InitStruct.ADC_ConTInuousConvMode = ENABLE; //連續(xù)轉(zhuǎn)換模式開啟

ADC_InitStruct.ADC_ExternalTrigConv = ADC_ExternalTrigConv_None; //ADC外部出發(fā)開關(guān),關(guān)閉

ADC_InitStruct.ADC_NbrOfChannel = 2; //開啟通道數(shù),2個(gè)

ADC_InitStruct.ADC_ScanConvMode = ENABLE; //掃描轉(zhuǎn)換模式開啟

ADC_Init(ADC1, &ADC_InitStruct);

ADC_RegularChannelConfig(ADC1, ADC_Channel, 1, ADC_SampleTIme_239Cycles5); //規(guī)則組通道設(shè)置,關(guān)鍵函數(shù) 轉(zhuǎn)

換器ADC1,選擇哪個(gè)通道channel,規(guī)則采樣順序,1到16,以后解釋詳細(xì)含義,最后一個(gè)參數(shù)是轉(zhuǎn)換時(shí)間,越長越準(zhǔn)越穩(wěn)定

// ADC1 to DMA, Enable

ADC_DMACmd(ADC1, ENABLE); //ADC命令,和DMA關(guān)聯(lián)。

//ADC1 Enable

ADC_Cmd(ADC1,ENABLE); //開啟ADC1

//Reset the CalibraTIon of ADC1

ADC_ResetCalibraTIon(ADC1); //重置校準(zhǔn)

//wait until the Calibration‘s finish

while(ADC_GetResetCalibrationStatus(ADC1)) //等待重置校準(zhǔn)完成

;

ADC_StartCalibration(ADC1); //開始校準(zhǔn)

while(ADC_GetCalibrationStatus(ADC1)) //等待校準(zhǔn)完成

;

ADC_SoftwareStartConvCmd(ADC1, ENABLE); //連續(xù)轉(zhuǎn)換開始,從選擇開始,MCU可以不用管了,ADC將通過DMA不斷刷新

制定RAM區(qū)

// Attach them;

}

最后講講濾波算法

濾波的方法以后會(huì)開個(gè)專題。

特別提一下---沒有完美的濾波算法,只有合適的濾波算法。

需要綜合考慮信號(hào)特點(diǎn),噪聲特點(diǎn),控制對象等等,

這里用個(gè)最簡單的濾波算法,均值濾波。

采樣16次,取平均值,吼吼,在豆皮上跳動(dòng)還是蠻小的,合適,吼吼

//16ms finish a ADC detection

// return mv

unsigned int ADC_filter(void)

{

unsigned int result=“0”;

unsigned char i;

for(i=16;i》0;i--)

{

Delay_xms(1);

result += ADC_ConvertedValue;

}

return (unsigned int)(((unsigned long)(result》》4))*3300》》12);

}

本站聲明: 本文章由作者或相關(guān)機(jī)構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點(diǎn),本站亦不保證或承諾內(nèi)容真實(shí)性等。需要轉(zhuǎn)載請聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請及時(shí)聯(lián)系本站刪除。
換一批
延伸閱讀

9月2日消息,不造車的華為或?qū)⒋呱龈蟮莫?dú)角獸公司,隨著阿維塔和賽力斯的入局,華為引望愈發(fā)顯得引人矚目。

關(guān)鍵字: 阿維塔 塞力斯 華為

加利福尼亞州圣克拉拉縣2024年8月30日 /美通社/ -- 數(shù)字化轉(zhuǎn)型技術(shù)解決方案公司Trianz今天宣布,該公司與Amazon Web Services (AWS)簽訂了...

關(guān)鍵字: AWS AN BSP 數(shù)字化

倫敦2024年8月29日 /美通社/ -- 英國汽車技術(shù)公司SODA.Auto推出其旗艦產(chǎn)品SODA V,這是全球首款涵蓋汽車工程師從創(chuàng)意到認(rèn)證的所有需求的工具,可用于創(chuàng)建軟件定義汽車。 SODA V工具的開發(fā)耗時(shí)1.5...

關(guān)鍵字: 汽車 人工智能 智能驅(qū)動(dòng) BSP

北京2024年8月28日 /美通社/ -- 越來越多用戶希望企業(yè)業(yè)務(wù)能7×24不間斷運(yùn)行,同時(shí)企業(yè)卻面臨越來越多業(yè)務(wù)中斷的風(fēng)險(xiǎn),如企業(yè)系統(tǒng)復(fù)雜性的增加,頻繁的功能更新和發(fā)布等。如何確保業(yè)務(wù)連續(xù)性,提升韌性,成...

關(guān)鍵字: 亞馬遜 解密 控制平面 BSP

8月30日消息,據(jù)媒體報(bào)道,騰訊和網(wǎng)易近期正在縮減他們對日本游戲市場的投資。

關(guān)鍵字: 騰訊 編碼器 CPU

8月28日消息,今天上午,2024中國國際大數(shù)據(jù)產(chǎn)業(yè)博覽會(huì)開幕式在貴陽舉行,華為董事、質(zhì)量流程IT總裁陶景文發(fā)表了演講。

關(guān)鍵字: 華為 12nm EDA 半導(dǎo)體

8月28日消息,在2024中國國際大數(shù)據(jù)產(chǎn)業(yè)博覽會(huì)上,華為常務(wù)董事、華為云CEO張平安發(fā)表演講稱,數(shù)字世界的話語權(quán)最終是由生態(tài)的繁榮決定的。

關(guān)鍵字: 華為 12nm 手機(jī) 衛(wèi)星通信

要點(diǎn): 有效應(yīng)對環(huán)境變化,經(jīng)營業(yè)績穩(wěn)中有升 落實(shí)提質(zhì)增效舉措,毛利潤率延續(xù)升勢 戰(zhàn)略布局成效顯著,戰(zhàn)新業(yè)務(wù)引領(lǐng)增長 以科技創(chuàng)新為引領(lǐng),提升企業(yè)核心競爭力 堅(jiān)持高質(zhì)量發(fā)展策略,塑強(qiáng)核心競爭優(yōu)勢...

關(guān)鍵字: 通信 BSP 電信運(yùn)營商 數(shù)字經(jīng)濟(jì)

北京2024年8月27日 /美通社/ -- 8月21日,由中央廣播電視總臺(tái)與中國電影電視技術(shù)學(xué)會(huì)聯(lián)合牽頭組建的NVI技術(shù)創(chuàng)新聯(lián)盟在BIRTV2024超高清全產(chǎn)業(yè)鏈發(fā)展研討會(huì)上宣布正式成立。 活動(dòng)現(xiàn)場 NVI技術(shù)創(chuàng)新聯(lián)...

關(guān)鍵字: VI 傳輸協(xié)議 音頻 BSP

北京2024年8月27日 /美通社/ -- 在8月23日舉辦的2024年長三角生態(tài)綠色一體化發(fā)展示范區(qū)聯(lián)合招商會(huì)上,軟通動(dòng)力信息技術(shù)(集團(tuán))股份有限公司(以下簡稱"軟通動(dòng)力")與長三角投資(上海)有限...

關(guān)鍵字: BSP 信息技術(shù)
關(guān)閉
關(guān)閉