簡(jiǎn)介
最近用stm8s003k3開發(fā)項(xiàng)目,用到了ADC模塊,記錄一下筆記也分享一下心得
軟件環(huán)境:STVD+COSMIC
硬件環(huán)境:STM8S003K3 TSSOP20封裝
模塊:ADC
1.ADC功能以及框圖
由STM8S參考手冊(cè)可以得到幾個(gè)信息:
1、有ADC1和ADC2兩個(gè)(實(shí)際上得看封裝,我這款只有ADC1)
2、有多達(dá)16個(gè)輸入通道(看封裝,我這款只有2~6輸入)
3、有好幾個(gè)擴(kuò)展功能
具體的功能如下所示
*由框圖可以看出ADC1和ADC2差別還是有一點(diǎn)的,一些多引腳的芯片中ADC2的帶模擬參考正負(fù)極,在模擬放大中,可通過減小參考電壓來提供更大的分辨率。由于沒有用到所以不考慮
*轉(zhuǎn)換結(jié)束時(shí)可產(chǎn)生中斷
*f MASTER 可以被分頻2 到18
*ADC 輸入電壓范圍:VSSA ≤ VIN ≤ VDDA
*可以選擇ADC 專用外部中斷(ADC_ETR)或者定時(shí)器觸發(fā)信號(hào)(TRGO)來作為
外部觸發(fā)信號(hào)
2.功能描述
2.1Enable/Disable ADC
2.2轉(zhuǎn)換模式
ADC有五種轉(zhuǎn)換模式:?jiǎn)未文J?、連續(xù)模式、帶緩存的連續(xù)模式、單詞掃描模式、連續(xù)掃描模式,可以將以上模式分類便于理解
2.2.1ADC單通道:
A、要求:進(jìn)行一次ADC轉(zhuǎn)換,配置為單次模式使能,掃描模式關(guān)閉,這樣ADC的這個(gè)通道轉(zhuǎn)換一次后,就停止轉(zhuǎn)換了。
B、要求:進(jìn)行連續(xù)ADC轉(zhuǎn)換,配置為連續(xù)模式使能,掃描模式關(guān)閉,這樣ADC的這個(gè)通道轉(zhuǎn)換一次后,接著進(jìn)行下一次轉(zhuǎn)換,不斷連續(xù)。
2.2.2ADC多通道:
C、要求:進(jìn)行一輪ADC轉(zhuǎn)換:配置為單次模式使能,掃描模式使能,這樣ADC的多個(gè)通道,按照配置的順序依次轉(zhuǎn)換一次后,就停止了。
D、要求:進(jìn)行連續(xù)的ADC轉(zhuǎn)換:配置為連續(xù)模式使能,掃描模式使能,這樣ADC的多個(gè)通道,按照配置的順序轉(zhuǎn)換一次后,接著進(jìn)行下一次轉(zhuǎn)換,不斷連續(xù)。
2.2.3結(jié)論:
掃描模式只在多通道的條件下有效,來使得各個(gè)通道按照配置循環(huán)依次轉(zhuǎn)換,而單次模式無論在單通道還是多通道下只對(duì)這些或者這個(gè)通道進(jìn)行一次轉(zhuǎn)換
2.3對(duì)齊方式
通多ADC_CR2的ALIGN位控制對(duì)齊方式
2.4施密特觸發(fā)器
施密特觸發(fā)器是用于輸入信號(hào)整形的,ADC應(yīng)該不用施密特觸發(fā),才可以保持輸入模擬信號(hào)的連續(xù)性 ,備注不用的ADC輸入口如果禁止了施密特觸發(fā),比如UART的RX,在ADC初始化時(shí)禁止了施密特觸發(fā),該腳又復(fù)用為UART-RX,此時(shí)RX信號(hào)根本進(jìn)不到UART接收模塊中,將不能產(chǎn)生UART接收中斷,后來當(dāng)它打開施密特觸發(fā)器后,URAT-RX接收也就正常了。
3.ADC初始化代碼實(shí)現(xiàn)
static Adc_Config_t Adc_Config;
void Adc_Init(const Adc_Config_t * config)
{
memcpy(&Adc_Config, config, sizeof(Adc_Config));
/* 清空對(duì)齊標(biāo)志位 */
ADC_CR2 &= (uint8_t)(~0x08);
/* ----------------------------------對(duì)齊方式 ----------------------------------*/
ADC_CR2 |= (uint8_t)Adc_Config.Align;
/* ---------------------------------轉(zhuǎn)換方式 ----------------------------------*/
if (Adc_Config.Mode == 0x01)
{
/* 設(shè)置連續(xù)*/
ADC_CR1 |= 0x02;
}
else
{
/*設(shè)置單次轉(zhuǎn)換模式 */
ADC_CR1 &= (uint8_t)(~0x02);
}
/* 清空ADC通道 */
ADC_CSR &= (uint8_t)(~ADC_CSR_CH);
/* 設(shè)置ADC的通道 */
ADC_CSR |= (uint8_t)(Adc_Config.Channel);
/* ------------------------------------ADC的分頻------------------------------- */
/*清空寄存器 */
ADC_CR1 &= (uint8_t)(~0x70);
/*配置寄存器 */
ADC_CR1 |= (uint8_t)(Adc_Config.Prescaler);
/* ------------------------------------ADC的分觸發(fā)方式------------------------------- */
/* 清空寄存器*/
ADC_CR2 &= (uint8_t)(~0x30);
/* 選擇觸發(fā)方式或關(guān)閉 */
ADC_CR2 |= (uint8_t)(Adc_Config.ExtTrig);
/* ----------------------------------配置要關(guān)閉的施密特觸發(fā)器--------------------------------- */
ADC_TDRL |= (uint8_t)((uint8_t)0x01 << (uint8_t)Adc_Config.SchmittTrigg);
/* 使能ADC */
ADC_CR1 |= 0x01;
/* 使能ADC中斷 */
ADC_CSR |= 0x20;
/* 開始轉(zhuǎn)換,第二次開啟哦 */
ADC_CR1 |= ((uint8_t)0x01)
}
然后在.h中定義我們要的枚舉和結(jié)構(gòu)體
typedef enum
{
ADC_ALIGN_LEFT = (uint8_t)0x00,
ADC_ALIGN_RIGHT = (uint8_t)0x08
} Adc_AlignType_t;
typedef enum
{
ADCDRV_CHANNEL2 = 0x02,
ADCDRV_CHANNEL3 = 0x03,
ADCDRV_CHANNEL4 = 0x04,
ADCDRV_CHANNEL5 = 0x05,
ADCDRV_CHANNEL6 = 0x06
} Adc_Channel_t;
typedef enum
{
ADC_EXTTRIG_TIM = (uint8_t)0x40,
ADC_EXTTRIG_GPIO = (uint8_t)0x50,
ADC_EXTTRIG_DISABLE = (uint8_t)0x00
} Adc_ExtTrig_TypeDef;
typedef enum
{
ADC_SCHMITTTRIG_CHANNEL2 = 0x02,
ADC_SCHMITTTRIG_CHANNEL3 = 0x03,
ADC_SCHMITTTRIG_CHANNEL4 = 0x04,
ADC_SCHMITTTRIG_CHANNEL5 = 0x05,
ADC_SCHMITTTRIG_CHANNEL6 = 0x06
} Adc_SchmittTrigg_TypeDef;
typedef enum
{
ADC_CONVERSIONMODE_SINGLE = (uint8_t)0x00,
ADC_CONVERSIONMODE_CONTINUOUS = (uint8_t)0x01
} Adc_ConversionMode_t;
typedef enum
{
ADC_PRESSEL_FCPU_D2 = (uint8_t)0x00,
ADC_PRESSEL_FCPU_D3 = (uint8_t)0x10,
ADC_PRESSEL_FCPU_D4 = (uint8_t)0x20,
ADC_PRESSEL_FCPU_D6 = (uint8_t)0x30,
ADC_PRESSEL_FCPU_D8 = (uint8_t)0x40,
ADC_PRESSEL_FCPU_D10 = (uint8_t)0x50,
ADC_PRESSEL_FCPU_D12 = (uint8_t)0x60,
ADC_PRESSEL_FCPU_D18 = (uint8_t)0x70
} Adc_PrescalerType_t;
typedef struct
{
Adc_ConversionMode_t Mode;
Adc_Channel_t Channel;
Adc_PrescalerType_t Prescaler;
Adc_AlignType_t Align;
Adc_ExtTrig_TypeDef ExtTrig;
Adc_SchmittTrigg_TypeDef SchmittTrigg;
} Adc_Config_t;
然后我們定義一個(gè)配置好參數(shù)的結(jié)構(gòu)體,將這個(gè)結(jié)構(gòu)體的首地址傳進(jìn)初始化函數(shù)就可以啦
上一篇:STM8S使用外部時(shí)鐘引起串口數(shù)據(jù)傳輸錯(cuò)誤
下一篇:關(guān)于STM8S003F3P6開發(fā)的筆記
推薦閱讀
史海拾趣
對(duì)于電子消毒柜電路,網(wǎng)友可能的問題涉及多個(gè)方面,包括故障排查、日常維護(hù)、使用注意事項(xiàng)等。以下是一些可能的問題及詳細(xì)回答:
一、故障排查類問題
1. 消毒柜通電后跳閘怎么辦?
回答:
消毒柜通電后跳閘可能是由電路短路引起的。首先,檢查電源插座的火線(L)、零線(N)、地線(E)是否接線正確。其次,按照消毒柜上的線路圖檢查柜內(nèi)線路接線是否正確,以及線路絕緣層是否被破壞(如被螺絲鉆破、被金屬邊角劃破等)。如果以上檢查均正常,可能是電源板或繼電器等部件損壞,建議聯(lián)系專業(yè)維修人員進(jìn)行檢查和更換。
2. 消毒柜插上電源后無法啟動(dòng),指示燈不亮怎么辦?
回答:
消毒柜無法啟動(dòng)且指示燈不亮,可能是由以下原因造成:電源插座無電或接觸不良、熔斷器燒壞、電源線與機(jī)體接觸不良或斷路、變壓器燒壞或斷路、電路板燒壞、繼電器失靈等。解決方法包括檢查電源插座、更換熔斷器、檢查并修復(fù)線路、更換電路板或繼電器等。如果問題依然存在,建議聯(lián)系專業(yè)維修人員進(jìn)行檢查。
二、日常維護(hù)類問題
1. 消毒柜需要定期清潔哪些部位?
回答:
消毒柜需要定期清潔的部位包括柜體內(nèi)部、層架、門封條以及散熱孔等。清潔時(shí),應(yīng)使用柔軟的布或海綿,避免使用腐蝕性強(qiáng)的清潔劑。同時(shí),要注意不要將水濺入電路板等電子元件區(qū)域,以免造成短路或損壞。
2. 消毒柜的電源線應(yīng)該如何保養(yǎng)?
回答:
消毒柜的電源線應(yīng)定期檢查是否老化或破損,如有發(fā)現(xiàn)應(yīng)及時(shí)更換。在使用過程中,應(yīng)避免電源線過度彎折或受到重物壓迫,以免影響其使用壽命和安全性。此外,電源線應(yīng)遠(yuǎn)離高溫、潮濕和腐蝕性強(qiáng)的環(huán)境,以確保其絕緣性能不受影響。
三、使用注意事項(xiàng)類問題
1. 消毒柜在使用時(shí)需要注意哪些安全問題?
回答:
消毒柜在使用時(shí)需要注意以下安全問題:
- 確保電源插座接地良好,避免漏電危險(xiǎn)。
- 不要將易燃易爆物品放入消毒柜內(nèi),以免發(fā)生火災(zāi)或爆炸。
- 在使用過程中,應(yīng)避免頻繁開關(guān)柜門,以免影響消毒效果和能耗。
- 使用完畢后,應(yīng)及時(shí)關(guān)閉電源并拔掉插頭,以節(jié)約能源和延長(zhǎng)設(shè)備使用壽命。
2. 消毒柜是否可以一直插電使用?
回答:
消毒柜是否可以一直插電使用取決于用戶的使用情況和需求。如果用戶經(jīng)常使用消毒柜且沒有其他特殊需求,可以保持電源連接;如果用戶不經(jīng)常使用消毒柜或者有其他特殊需求(如節(jié)約能源、避免設(shè)備老化等),建議在使用前提前通電,并在非使用狀態(tài)下拔掉電源。此外,為了確保安全,插座應(yīng)具備防水、防漏電等功能。
綜上所述,對(duì)于電子消毒柜電路的問題,網(wǎng)友可能關(guān)注故障排查、日常維護(hù)和使用注意事項(xiàng)等方面。通過了解這些問題的解決方法和注意事項(xiàng),可以更好地使用和維護(hù)消毒柜,確保其正常運(yùn)行和延長(zhǎng)使用壽命。
Frequency Sources公司深知質(zhì)量是企業(yè)生存和發(fā)展的基石。因此,公司始終將質(zhì)量控制放在首位,建立了完善的質(zhì)量管理體系和檢測(cè)機(jī)制。從原材料采購(gòu)到生產(chǎn)加工、成品檢驗(yàn)等各個(gè)環(huán)節(jié)都嚴(yán)格把關(guān),確保產(chǎn)品質(zhì)量符合客戶要求和行業(yè)標(biāo)準(zhǔn)。同時(shí),公司還注重品牌建設(shè)和客戶服務(wù)體驗(yàn)的提升,通過提供優(yōu)質(zhì)的售前咨詢、售中支持和售后服務(wù)贏得了客戶的信賴和好評(píng)。這些努力使得公司的品牌形象深入人心,成為了行業(yè)內(nèi)的佼佼者。
在電子產(chǎn)品同質(zhì)化日益嚴(yán)重的今天,Eastron Corp深知品質(zhì)對(duì)于品牌的重要性。公司嚴(yán)格把控產(chǎn)品質(zhì)量,從原材料采購(gòu)到生產(chǎn)過程,再到成品檢驗(yàn),每一個(gè)環(huán)節(jié)都經(jīng)過嚴(yán)格把關(guān)。此外,Eastron還建立了完善的售后服務(wù)體系,為客戶提供全方位的服務(wù)支持。正是憑借出色的品質(zhì)和服務(wù),Eastron贏得了客戶的信賴和口碑。
在產(chǎn)品創(chuàng)新的基礎(chǔ)上,ConnectBlue公司開始積極拓展市場(chǎng)。公司不僅在國(guó)內(nèi)市場(chǎng)取得了良好的銷售業(yè)績(jī),還積極開拓國(guó)際市場(chǎng),與多家海外企業(yè)建立了合作關(guān)系。同時(shí),公司還注重與產(chǎn)業(yè)鏈上下游企業(yè)的合作,與多家供應(yīng)商和集成商建立了長(zhǎng)期穩(wěn)定的合作關(guān)系,共同推動(dòng)無線通信技術(shù)的發(fā)展和應(yīng)用。
為了進(jìn)一步擴(kuò)大市場(chǎng)份額,Digitron公司積極尋求與行業(yè)內(nèi)外的企業(yè)建立戰(zhàn)略合作關(guān)系。XXXX年,Digitron公司與一家全球知名的物流公司達(dá)成合作協(xié)議,為其提供定制化的溫度監(jiān)控解決方案。這一合作不僅為Digitron公司帶來了可觀的收入,還提高了其在物流行業(yè)的知名度。此外,Digitron公司還積極參加國(guó)際展會(huì)和論壇,與全球客戶建立聯(lián)系,拓展國(guó)際市場(chǎng)。
隨著數(shù)字化和智能化時(shí)代的到來,Digitron公司也積極擁抱變革。公司投入大量資源用于數(shù)字化轉(zhuǎn)型和智能化升級(jí),通過引入先進(jìn)的生產(chǎn)管理系統(tǒng)和人工智能技術(shù)提高生產(chǎn)效率和產(chǎn)品質(zhì)量。同時(shí),Digitron公司還積極探索物聯(lián)網(wǎng)、大數(shù)據(jù)等新技術(shù)在電子行業(yè)的應(yīng)用,為客戶提供更加智能、便捷的解決方案。這些努力使Digitron公司在激烈的市場(chǎng)競(jìng)爭(zhēng)中保持領(lǐng)先地位并實(shí)現(xiàn)了可持續(xù)發(fā)展。
在讀MMU初始化部分代碼時(shí), 有一句是:MMU_SetDomain(0x55555550|DOMAIN1_ATTR|DOMAIN0_ATTR); 相當(dāng)于設(shè)置總共16個(gè)區(qū)域的訪問權(quán)限吧,我不大明白,為什么就分成16個(gè)區(qū)間了? 這個(gè)是怎么推算過來的,還有每個(gè)區(qū)間對(duì)應(yīng)的虛擬地址(或者說物理地址 ...… 查看全部問答∨ |
|
請(qǐng)教大家如何在PB下刪除些沒用的組件 使NK.BIN文件盡量小 幫忙講解的詳細(xì)點(diǎn) 謝謝各位大哥了!!… 查看全部問答∨ |
WinCE 對(duì)無線網(wǎng)絡(luò)的支持?? 大家好,想了解一下wince5.0 wince6.0 對(duì)無線網(wǎng)絡(luò)的支持情況,不如wifi,gprs,3G 我了解wince應(yīng)該帶有wifi的協(xié)議棧,不知道對(duì)gprs,3G有沒有支持,如果要實(shí)現(xiàn)是不是困難很大. 謝謝! … 查看全部問答∨ |
大家好,我買了一個(gè)EP9315的開發(fā)板,按照提供的資料,在配置好啟動(dòng)腳本和下載好文件系統(tǒng)和內(nèi)核后,設(shè)置跳線帽從flash啟動(dòng)后出現(xiàn)下面情況: Platform: Cirrus Logic EDB9315 Board (ARM920T) Rev A Copyright (C) 2000, 2001, 2002, Red Hat, Inc. ...… 查看全部問答∨ |
【轉(zhuǎn)】《Cortex-M3權(quán)威指南》 這本書寫的很通俗,啃過兩章,想不到這么快就有強(qiáng)人翻譯出來了,太贊了~~另外那個(gè)論壇似乎也不錯(cuò),香豬還知道哪些arm論壇人氣好點(diǎn)的么? … 查看全部問答∨ |
請(qǐng)問誰用過MDK提供的RL-FlashFS庫(kù)? 我在使用MDK提供的RL-FlashFS庫(kù)去應(yīng)用SD卡的時(shí)候發(fā)現(xiàn)有全速運(yùn)行時(shí)可以正常, 但是在進(jìn)入keil調(diào)試環(huán)境下單步調(diào)試發(fā)現(xiàn),老是跳到HardFault中斷中,這是為什么呢? 大家有什么關(guān)于RL-FlashFS的資料嗎?如果可以,給我個(gè)鏈接,謝謝!… 查看全部問答∨ |
|
理論參數(shù)計(jì)算: 取C0=C1=C2=0.01uF. 則基準(zhǔn)電阻R0=. 品質(zhì)因數(shù)Q=fo/BW. 當(dāng)f0=500hz,Q=10,Au=4.5時(shí)。 各個(gè)電阻值分別為: R1=QR0/Au = 70.7K。   ...… 查看全部問答∨ |
啟動(dòng)代碼里的這段棧初始化代碼 是怎么執(zhí)行的 我知道啟動(dòng)代碼里的向量表編輯段代碼是放在rom起始地址的,即編譯后放在0地址執(zhí)行 那啟動(dòng)代碼里一開始的這段棧初始化代碼 是怎么執(zhí)行的,是放在rom哪里執(zhí)行的呢?難道不執(zhí)行嗎? Stack_Size EQU&n ...… 查看全部問答∨ |
設(shè)計(jì)資源 培訓(xùn) 開發(fā)板 精華推薦
- 人形機(jī)器人馬拉松背后的思考,兆易創(chuàng)新如何賦能機(jī)器人產(chǎn)業(yè)
- 一種基于STM32的智能柜控制器設(shè)計(jì)
- 小型傾轉(zhuǎn)旋翼機(jī)的無刷直流電機(jī)驅(qū)動(dòng)器設(shè)計(jì)
- 超高速攝影機(jī)電控系統(tǒng)設(shè)計(jì)
- 基于GPS自動(dòng)授時(shí)的無線智能控制器的設(shè)計(jì)
- 基于PTR2000的無線氣象信息采集系統(tǒng)設(shè)計(jì)
- Microchip推出MEC175xB系列器件,為嵌入式控制器引入硬件 抗量子攻擊能力
- 無人飛行器機(jī)載穩(wěn)定云臺(tái)控制系統(tǒng)的設(shè)計(jì)
- 匠芯創(chuàng)推出面向具身智能高性能實(shí)時(shí)處理器M7000
- AI PC時(shí)代,英特爾和微軟引領(lǐng)PC產(chǎn)業(yè)翻開Windows 11 AI+ PC新篇章!
- 意法半導(dǎo)體推出針對(duì)消費(fèi)類和工業(yè)電源轉(zhuǎn)換器和電機(jī)控制器 優(yōu)化設(shè)計(jì)的GaN半橋驅(qū)動(dòng)器
- 德州儀器TI發(fā)布全球最小MCU,微型空間內(nèi)實(shí)現(xiàn)智能化
- 瑞聲科技+創(chuàng)昇半導(dǎo)體,能否撬動(dòng)智能座艙格局?
- 又一全固態(tài)電池產(chǎn)業(yè)項(xiàng)目簽約!
- 重大突破!兩大車企啟動(dòng)全固態(tài)電池路測(cè)
- 全球固態(tài)電池現(xiàn)重大進(jìn)展!
- 比亞迪刀片電池領(lǐng)先通過新國(guó)標(biāo)檢測(cè),安全性能獲權(quán)威認(rèn)證
- 一款國(guó)產(chǎn)車規(guī)智能隔離柵極驅(qū)動(dòng)器得推薦
- 一文聊聊禾賽科技激光雷達(dá)技術(shù)
- 您的無人機(jī)安全嗎?使用電路保護(hù)應(yīng)對(duì)安全隱患
- 微波單片集成電路簡(jiǎn)介
- 【EE團(tuán)】鐵電MSP-EXP430FR5739低價(jià)來襲,讓你的夏日清涼到底!
- 搶先體驗(yàn):恩智浦最新LPC1500開發(fā)板,速來!
- 【有獎(jiǎng)知識(shí)問答】光電子,點(diǎn)亮夢(mèng)想!
- 【EEWORLD第二十八屆】2011年07月社區(qū)明星人物揭曉!
- TI培訓(xùn)精選,學(xué)習(xí)精選電源課程,邊學(xué)習(xí)邊賺積分
- 關(guān)注、評(píng)論贏好禮!《美光2022臺(tái)北國(guó)際電腦展主題演講精選:智能邊緣與智能制造專輯》
- 新年測(cè)評(píng)活動(dòng)!ST NUCLEO-H743ZI“佩奇”待測(cè),快來申請(qǐng)年后第一波測(cè)評(píng)!