一、認(rèn)識(shí)ADC兼進(jìn)一步看懂STM的庫
ADC是多少位的?
12位
ADC有多少個(gè)?
1個(gè)、2個(gè)或多至3個(gè),視不同的器件而不同;每個(gè)又有多個(gè)通道。
關(guān)于通道的名堂:
10.3.3 通道選擇
有16個(gè)多路通道。可以把轉(zhuǎn)換分成兩組:規(guī)則的和注入的。在任意多個(gè)通道上以任意順序進(jìn)行的一系列轉(zhuǎn)換構(gòu)成成組轉(zhuǎn)換。例如,可以如下順序完成轉(zhuǎn)換:通道3、通道8、通道2、通道2、通道0、通道2、通道2、通道15。
● 規(guī)則組由多達(dá)16個(gè)轉(zhuǎn)換組成。規(guī)則通道和它們的轉(zhuǎn)換順序在ADC_SQRx寄存器中選擇。規(guī)則組中轉(zhuǎn)換的總數(shù)寫入ADC_SQR1寄存器的L[3:0]位中。
● 注入組由多達(dá)4個(gè)轉(zhuǎn)換組成。注入通道和它們的轉(zhuǎn)換順序在ADC_JSQR寄存器中選擇。注入組里的轉(zhuǎn)換總數(shù)目必須寫入ADC_JSQR寄存器的L[1:0]位中。
它們有什么區(qū)別:
不同的組轉(zhuǎn)換后保存數(shù)據(jù)的地方不一樣,產(chǎn)生的中斷標(biāo)志不一樣。
在掃描模式下,規(guī)則組會(huì)有能力把各通道數(shù)據(jù)通過DMA傳給SRAM,而注入組的數(shù)據(jù)總是存在在ADC_JDRx中。
還有其他的一些區(qū)別,這里暫不一一羅列。
ST為什么這么樣來設(shè)計(jì)AD轉(zhuǎn)換,肯定是有理由的,但是我不知道,因此,我也就難以深入地理解AD轉(zhuǎn)換的各種模式。這也就是說,對(duì)于知識(shí)的理解,要把它放在其應(yīng)用背景中去學(xué)習(xí)才能學(xué)得好。因此,其他知識(shí)積累得越多,學(xué)起來也就越快,這也就是所謂的“功底”問題。某人功底深厚,意味著他見多識(shí)廣,遇到的事情多,能夠很快找到處理某件事情的“原型”。當(dāng)然,也有一些人抽象學(xué)習(xí)能力極強(qiáng),就算找不到“原型”,他也能學(xué)得很好。基本上,這類人的科學(xué)素養(yǎng)更高一些,在工程師、工科類學(xué)生中并不多見。
閑話少說,下面來看怎么樣來使用AD轉(zhuǎn)換器?
以一段源程序為例分別來解讀,同時(shí)進(jìn)一步理解STM32中有關(guān)符號(hào)的含義,相信以后再讀庫源程序,定能更上一層樓。
為看得清楚一些,以下代碼用一種顏色表示。
/* ADC1 開始準(zhǔn)備配置*/
ADC_InitStructure.ADC_Mode = ADC_Mode_Independent;
/*設(shè)置ADC-》CR1的19:16,確定ADC工作模式,一共有10種工作模式
#define ADC_Mode_Independent ((uint32_t)0x00000000) 0000:獨(dú)立模式
#define ADC_Mode_RegInjecSimult ((uint32_t)0x00010000) 0001:混合的同步規(guī)則+注入同步模式
#define ADC_Mode_RegSimult_AlterTrig ((uint32_t)0x00020000) 0010:混合的同步規(guī)則+交替觸發(fā)模式
#define ADC_Mode_InjecSimult_FasTInterl ((uint32_t)0x00030000) 0011:混合同步注入+快速交替模式
#define ADC_Mode_InjecSimult_SlowInterl ((uint32_t)0x00040000) 0100:混合同步注入+慢速交替模式
#define ADC_Mode_InjecSimult ((uint32_t)0x00050000) 0101:注入同步模式
#define ADC_Mode_RegSimult ((uint32_t)0x00060000) 0110:規(guī)則同步模式
#define ADC_Mode_FasTInterl ((uint32_t)0x00070000) 0111:快速交替模式
#define ADC_Mode_SlowInterl ((uint32_t)0x00080000) 1000:慢速交替模式
#define ADC_Mode_AlterTrig ((uint32_t)0x00090000) 1001:交替觸發(fā)模式
*/
ADC_InitStructure.ADC_ScanConvMode = ENABLE;
/* ADC_ScanConvMode在stm32f10x_adc.h中定義如下:
alState ADC_ScanConvMode;
這個(gè)參數(shù)用來指定轉(zhuǎn)換是掃描(多通道模式)還是單個(gè)轉(zhuǎn)換(單通道模式),該參數(shù)可以被設(shè)置為DISABLE或者ENABLE。
在數(shù)據(jù)手冊(cè)中,SCAN位是這樣描述的:掃描模式
該位由軟件設(shè)置和清除,用于開啟或關(guān)閉掃描模式。在掃描模式中,由ADC_SQRx或ADC_JSQRx寄存器選中的通道被轉(zhuǎn)換。
0:關(guān)閉掃描模式
1:使用掃描模式
注:如果分別設(shè)置了EOCIE或JEOCIE位,只在最后一個(gè)通道轉(zhuǎn)換完畢才會(huì)產(chǎn)生EOC或JEOC中斷。
這樣,如果一次需要對(duì)多個(gè)通道進(jìn)行轉(zhuǎn)換,這位就必須設(shè)置為ENABLE。
*/
ADC_InitStructure.ADC_ConTInuousConvMode = ENABLE;
/* alState ADC_ConTInuousConvMode;
這個(gè)參數(shù)用來指定轉(zhuǎn)換是連續(xù)進(jìn)行還是單次進(jìn)行,它可以設(shè)置為ENABLE或者DISABLE。
這兩個(gè)參數(shù)中出現(xiàn)了alState數(shù)據(jù)類型,那么它是什么呢,順滕摸瓜,可以看到它的的定義如下:
typedef enum {DISABLE = 0, ENABLE = !DISABLE} alState;
因此,它相當(dāng)于是一個(gè)位變量,我的理解,DISPABLE=0這個(gè)沒有問題,ENABLE=!DISABLE是否應(yīng)該確切的是1??否則下面的設(shè)置就會(huì)有問題。
用這兩個(gè)符號(hào)來對(duì)寄存器中的位進(jìn)行設(shè)置的話,還需要提供位置信息,如下面的代碼所示:
tmpreg1 |= (uint32_t)(ADC_InitStruct-》ADC_DataAlign | ADC_InitStruct-》ADC_ExternalTrigConv |
((uint32_t)ADC_InitStruct-》ADC_ContinuousConvMode 《《 1));
這個(gè)《《1就是位置信息,CONT是CON2寄存器的位1
這樣,我們看STM32的庫又能多看懂一點(diǎn)了。
用于設(shè)定CON2的CONT位(位1):是否連續(xù)轉(zhuǎn)換
該位由軟件設(shè)置和清除。如果設(shè)置了此位,則轉(zhuǎn)換將連續(xù)進(jìn)行直到該位被清除。
上一篇:一文看懂STM32單片機(jī)和51單片機(jī)區(qū)別
下一篇:基于STM32芯片的一款智能臺(tái)燈
推薦閱讀
史海拾趣
君耀一直注重技術(shù)創(chuàng)新和產(chǎn)品研發(fā)。公司擁有一支強(qiáng)大的研發(fā)團(tuán)隊(duì),致力于開發(fā)新型的半導(dǎo)體器件,以滿足市場不斷變化的需求。同時(shí),君耀還與全球知名的半導(dǎo)體公司合作,共同研究和開發(fā)未來的半導(dǎo)體技術(shù)。這些努力使得君耀在技術(shù)上始終保持領(lǐng)先地位,為公司的長期發(fā)展提供了有力保障。
君耀(Brightking)公司于1996年在臺(tái)灣新竹高科技園區(qū)創(chuàng)立,初期專注于防雷元器件的研發(fā)和生產(chǎn)。憑借對(duì)技術(shù)的深入研究和市場需求的敏銳洞察,君耀逐步在臺(tái)灣的電子器件市場上占得一席之地。隨著產(chǎn)品質(zhì)量和技術(shù)含量的提升,君耀的產(chǎn)品開始受到國內(nèi)外客戶的青睞,銷售網(wǎng)絡(luò)逐漸拓展至全球。
在發(fā)展過程中,格瑞寶始終秉持開放合作的理念,積極尋求與行業(yè)內(nèi)外的合作伙伴建立長期穩(wěn)定的合作關(guān)系。例如,公司與唯樣商城等元器件線上平臺(tái)達(dá)成戰(zhàn)略合作,成為其代理商之一。這一合作不僅進(jìn)一步擴(kuò)充了格瑞寶的產(chǎn)品線,也為廣大客戶提供了更多的產(chǎn)品選擇和服務(wù)支持。通過合作與共贏的模式,格瑞寶不斷拓寬業(yè)務(wù)邊界,提升市場競爭力,實(shí)現(xiàn)了更快速的發(fā)展。
APM Hexseal的創(chuàng)始人Milton Morse是一位自學(xué)成才的工程師和杰出的創(chuàng)新者。他敏銳地洞察到電子行業(yè)對(duì)密封解決方案的迫切需求,于是開始設(shè)計(jì)原始的密封開關(guān)“靴子”。這種模制的覆蓋物能夠保護(hù)撥動(dòng)開關(guān)和安裝面板免受各種液體和氣體的滲透。這一創(chuàng)新產(chǎn)品迅速取得了巨大的成功,為APM Hexseal公司奠定了堅(jiān)實(shí)的基礎(chǔ)。
大家每天都會(huì)用到示波器吧,現(xiàn)在越來越多的國產(chǎn)品牌在沖擊著國際品牌的市場,作為工程師,你肯定也是用過國產(chǎn)品牌的示波器吧,有什么心得體會(huì)呢?或者你最喜歡哪個(gè)品牌,來,投上你寶貴的一票! 【參與投票者,均可獲得20枚芯幣的獎(jiǎng)勵(lì)】 【詳 ...… 查看全部問答∨ |
硬件平臺(tái): ST7101 FLASH: NOR 8M 操作系統(tǒng): OS21 需求: 將Linux下的JFFS2文件系統(tǒng)移植到上面平臺(tái)。 問題: 1. 由于操作系統(tǒng)平臺(tái)不同,VFS提供的接口也不同,因此不能像在Linux ...… 查看全部問答∨ |
uclibc和busybox浮點(diǎn)數(shù)沖突 uclibc和busybox浮點(diǎn)數(shù)沖突 編譯uclinux時(shí),報(bào)浮點(diǎn)數(shù)出錯(cuò): uclibc使用硬浮點(diǎn)數(shù),busybox使用的軟浮點(diǎn)數(shù), 交叉編譯鏈:arm-linux-tools-20061213.tar.gz uclibc:0.9.27 busybox:1.0 錯(cuò)誤信息如下: /usr/local/lib/gcc/arm-linux/3.4.4/. ...… 查看全部問答∨ |
請(qǐng)問什么是“模擬隔離放大器”?“模擬隔離放大器”就是“隔離放大器”嗎 各位大俠: 請(qǐng)問什么是“模擬隔離放大器”?“模擬隔離放大器”就是“隔離放大器”嗎?它的原理和作用是什么?感激涕零… 查看全部問答∨ |
EVC的使用方法各位大俠有沒有,怎么創(chuàng)建一個(gè)新文件? EVC的使用方法各位大俠有沒有,怎么創(chuàng)建一個(gè)新文件?工程,工作區(qū)?有什么區(qū)別呢?… 查看全部問答∨ |
一個(gè)嵌入式初學(xué)者引發(fā)的思考(jesse談自己的經(jīng)驗(yàn)體會(huì)) 我目前再跟幾個(gè)朋友合伙一起做點(diǎn)開源的硬件小產(chǎn)品,隨后就成立了一個(gè)論壇,也就是現(xiàn)在的armjishu.com,那時(shí)候我們?cè)谝黄鹕塘恐趺醋屛覀兊膹V大初學(xué)者能夠更快的進(jìn)入到嵌入式領(lǐng)域,我們琢磨了很長時(shí)間,怎么樣做到,后來決定做一款嵌入式硬件產(chǎn)品出 ...… 查看全部問答∨ |
EVC 中char[]轉(zhuǎn)換為unsigned short 如何將char[]轉(zhuǎn)換為unsigned short,例如,我在Edit中寫了一個(gè)10進(jìn)制的數(shù),通過轉(zhuǎn)換為16進(jìn)制的,然后附給一個(gè)unsigned short變量。如何做? char buffer[80]; uint Temp; sprintf(buffer, \"%x\", M_Edit1); Temp = buffer;?????// 這里該如何 ...… 查看全部問答∨ |
|
關(guān)于用狀態(tài)機(jī)設(shè)計(jì)秒表時(shí)遇見的問題(求教) 做個(gè)秒表 0-59 flow_out flow_in 連接時(shí) 的時(shí)序仿真結(jié)果如下flow_out flow_in 不連接時(shí) 的時(shí)序仿真結(jié)果如下請(qǐng)問為什么 flow_out 和flow_in 連接時(shí) 的結(jié)果里的 flow_out 是在low_num 為0001 時(shí) 有輸出1而 flow_out和 flow_in ...… 查看全部問答∨ |
AD轉(zhuǎn)換 數(shù)碼管顯示數(shù)值一直遞減 要拔掉電源 從新開始從4.99幾v開始遞減 模擬輸入是從同一板上的5V穩(wěn)壓管接出來通過4052 接到AN0上的 uint signed AD() { uint adc=0; ADCON1=0x8e; ADCON0=0x81; ADGO=1; delay( ...… 查看全部問答∨ |
設(shè)計(jì)資源 培訓(xùn) 開發(fā)板 精華推薦
- 意法半導(dǎo)體推出用于匹配遠(yuǎn)距離無線微控制器STM32WL33的集成的匹配濾波芯片
- ESP32開發(fā)板連接TFT顯示屏ST7789跳坑記
- 如何讓ESP32支持analogWrite函數(shù)
- LGVL配合FreeType為可變字體設(shè)置字重-ESP32篇
- 使用樹莓派進(jìn)行 ESP32 Jtag 調(diào)試
- ESP32怎么在SPIFFS里面存儲(chǔ)html,css,js文件,以及網(wǎng)頁和arduino的通訊
- ESP32 freeRTOS使用測試
- API調(diào)用小記(Touchdesigner和ESP32)
- 關(guān)于ESP32/8266使用async-mqtt-client庫的一些基本介紹
- 意法半導(dǎo)體緊湊型可配置車規(guī)負(fù)載驅(qū)動(dòng)器具備安全引腳
- 美光宣布在美投資增至 2000 億美元,加建晶圓廠和 HBM 封裝設(shè)施
- AMD舉辦Advancing AI 2025大會(huì):Instinct MI350系列GPU發(fā)布,35倍推理性能提升
- 特斯拉起訴前Optimus機(jī)器人工程師,指控其竊取商業(yè)機(jī)密
- Nordic Semiconductor將在MWC上海2025上展示前沿蜂窩物聯(lián)網(wǎng)解決方案
- SiC 市場的下一個(gè)爆點(diǎn):共源共柵(cascode)結(jié)構(gòu)詳解
- 香港科技大學(xué)工學(xué)院推出擬人化自動(dòng)駕駛系統(tǒng)
- 現(xiàn)代摩比斯推出新型安全技術(shù) 防止追尾碰撞
- 研究人員開發(fā)新型機(jī)器人系統(tǒng) 利用AI賦能機(jī)器人技術(shù)
- 研究人員開發(fā)具有突破性觸覺靈敏度的機(jī)械手 可實(shí)現(xiàn)類人靈巧操作
- 【投票瓜分2500元紅包】2022得捷電子創(chuàng)新設(shè)計(jì)大賽優(yōu)秀作品人氣獎(jiǎng)由你來定!
- 積分芯幣兌換情人節(jié)專場
- DEYISUPPORT:【全新FAQ來襲】今夏且聽風(fēng)吟,你不能錯(cuò)過的精華!
- 暢想十二月,設(shè)計(jì)我自己的EEWORLD!
- DEYISUPPORT TI 大咖級(jí)工程師在這里,等你來約!
- 提出你的電源問題&技術(shù)解答,提升自我電源知識(shí),贏取好禮
- 看是德科技利用校準(zhǔn)降低儀器測量不確定度、提高測試精度 直播享好禮!
- 有獎(jiǎng)直播:8月21上午10:00 泰克助您應(yīng)對(duì)現(xiàn)在及未來的測試挑戰(zhàn)!
- 諾基亞9 PureView后指紋版工程機(jī)流出了
- 獨(dú)家探訪FF美國工廠:賈躍亭的造車夢(mèng)能否再次起飛
- 小米真全面屏新機(jī)專利解密:外形方正 無前置攝像頭
- 11億美元!這是今年以來被盜的數(shù)字貨幣價(jià)值
- iOS 14適配機(jī)型列表出爐 看看你的手機(jī)可以升級(jí)嗎
- 特斯拉將如何提高M(jìn)odel Y的續(xù)航能力
- 盧偉冰暗示K30 Pro備貨充足
- 蘋果專利顯示未來iPhone可通過跟蹤眼睛來將數(shù)據(jù)保密
- 三星手機(jī)屏幕將邁入新時(shí)代:Samsung PIFF商標(biāo)獲批
- 三星Galaxy A21現(xiàn)身Geekbench:搭載的是Helio P35