色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

基于GD32F350的數字式電容表設計方案

單片機愛好者 ? 2018-10-05 09:14 ? 次閱讀

GD32F350開發板使用了兆易最新推出的ARM Cortex-M4的32位通用微控制器GD32F350RB,這款芯片自帶2路比較器,非常適合用來制作一款低成本的數字式電容表。

設計方案:

圖1是由比較器構成的RC自激振蕩電路,R1、R2為比較器正端提供1/2偏壓,R3是正反饋電阻,待測電容Cx與RT、CT決定了振蕩器的輸出頻率,基本不受供電電壓影響。比較器負輸入端與輸出端的波形見圖2。當RT和CT固定不變時,比較器輸出端PT1輸出的方波頻率與待測電容Cx的容量成反比。

基于GD32F350的數字式電容表設計方案

圖1

圖2

利用GD32F350RB片內自帶的軌對軌比較器CMP0,只要外加少量阻容元件,就能構成圖1的RC自激振蕩電路。然后配置GD32F350的TIMER1每1秒中斷1次,讀取脈沖個數并計算就能得到待測電容Cx的值。這款低成本的數字電容表的測量范圍(具有2位小數的3個自動切換的量程):

1.00pf- 1999.99pf

2.00nf- 999.99nf

1.00uf- 10.00uf

方案實施:

A、硬件資源:

參閱GD32F350手冊可知,GD32F350內置的通用比較器可連接的資源非常豐富,用戶可以很靈活方便組成各種不同應用功能。本方案(見圖3)使用圖中紅框的連接引腳實現圖1自激振蕩器功能。比較器的輸出直接觸發GD32F350內部的EXTI進行計數。

基于GD32F350的數字式電容表設計方案

圖3

同時,為開發板配置了一片OLED顯示屏用來顯示測試結果,相關原理圖見圖4。使用洞洞板焊接了所需的外擴電路。

基于GD32F350的數字式電容表設計方案

圖4

B、軟件資源:

軟件流程很簡單,見圖5.

基于GD32F350的數字式電容表設計方案

圖5

C、中斷資源:

1、ADC_CMP_IRQn

2、CMP0輸出中斷EXTI21

3、TIMER1_IRQn

D、開發環境:

1、使用MDK5;

2、下載GigaDevice.GD32F30x0_DFP.1.0.0.pack為MDK5添加驅動補丁。

3、 下載GD官方GD32F3x0_Firmware_Library_V1.0.0.rar固件庫,直接利用GD32F3x0_Firmware_Library_V1.0.0Template文件夾的演示工程修改添加代碼。

在gd_eval_led_init()函數中配置了LED4來監測1秒中斷的工作狀況,在官方gd32f3x0_eval.h定義的LED有誤,請參考http://bbs.eeworld.com.cn/thread-869871-1-1.html進行修改。

E、主要代碼

基于GD32F350的數字式電容表設計方案

圖4

B、軟件資源:

軟件流程很簡單,見圖5.

基于GD32F350的數字式電容表設計方案

圖5

C、中斷資源:

1、ADC_CMP_IRQn

2、CMP0輸出中斷EXTI21

3、TIMER1_IRQn

D、開發環境:

1、使用MDK5;

2、下載GigaDevice.GD32F30x0_DFP.1.0.0.pack為MDK5添加驅動補丁。

3、 下載GD官方GD32F3x0_Firmware_Library_V1.0.0.rar固件庫,直接利用GD32F3x0_Firmware_Library_V1.0.0Template文件夾的演示工程修改添加代碼。

在gd_eval_led_init()函數中配置了LED4來監測1秒中斷的工作狀況,在官方gd32f3x0_eval.h定義的LED有誤,請參考http://bbs.eeworld.com.cn/thread-869871-1-1.html進行修改。

E、主要代碼

main()

#include "gd32f3x0.h"

#include

#include "gd32f3x0_eval.h"

#include "oled.h"

static void rcu_config(void);

static void gpio_config(void);

static void nvic_configuration(void);

static void cmp_config(void);

static void timer1_configuration(void);

static void To_Buf(void);

__IO uint32_t CAP_Value,CMP_Count=0x00;__IO uint32_t CAP;

uint8_t Number_buf[12],CAP_OK=0;

int main(void)

{

SystemInit();

rcu_config();

gpio_config();

gd_eval_led_init(LED4);

OLED_Init();

OLED_Clear();

cmp_config();

timer1_configuration();

nvic_configuration();

LCD_Print(8,0,"基于GD32F350的",TYPE16X16,TYPE8X16);

LCD_Print(24,16,"數字電容表",TYPE16X16,TYPE8X16);

CAP_OK=0x00;

while(1)

{

while(CAP_OK==0x00);

To_Buf();

LCD_Print(16,40,Number_buf,TYPE16X16,TYPE8X16);

CAP_OK=0x00;

CMP_Count=0;

}

}

cmp_config()

static void cmp_config(void)

{

cmp_mode_init(CMP0,CMP_VERYLOWSPEED , CMP_PA5, CMP_HYSTERESIS_HIGH);

cmp_output_init(CMP0,CMP_OUTPUT_NONE,CMP_OUTPUT_POLARITY_NOINVERTED);//CMP_OUTPUT_TIMER2IC0

cmp_enable(CMP0);

}

gpio_config()

static void gpio_config(void)

{

gpio_output_options_set(GPIOA,GPIO_OTYPE_PP, GPIO_OSPEED_50MHZ,GPIO_PIN_1|GPIO_PIN_5);

gpio_mode_set(GPIOA,GPIO_MODE_ANALOG, GPIO_PUPD_PULLUP, GPIO_PIN_1|GPIO_PIN_5);

gpio_output_options_set(GPIOA, GPIO_OTYPE_PP, GPIO_OSPEED_50MHZ,GPIO_PIN_6);

gpio_mode_set(GPIOA,GPIO_MODE_AF, GPIO_PUPD_PULLUP, GPIO_PIN_6);

gpio_af_set(GPIOA,GPIO_AF_7, GPIO_PIN_6);

gpio_output_options_set(GPIOB,GPIO_OTYPE_PP, GPIO_OSPEED_50MHZ,GPIO_PIN_0|GPIO_PIN_1|GPIO_PIN_12|GPIO_PIN_14|GPIO_PIN_15);

gpio_mode_set(GPIOB,GPIO_MODE_OUTPUT,GPIO_PUPD_PULLUP,GPIO_PIN_0|GPIO_PIN_1|GPIO_PIN_12|GPIO_PIN_14|GPIO_PIN_15);

}

nvic_configuration()

static void nvic_configuration(void)

{

nvic_priority_group_set(NVIC_PRIGROUP_PRE1_SUB3);

nvic_irq_enable(TIMER1_IRQn,1, 1);

nvic_irq_enable(ADC_CMP_IRQn,0, 1);

exti_init(EXTI_21,EXTI_INTERRUPT,EXTI_TRIG_RISING);

exti_interrupt_enable(EXTI_21);

}

timer1_configuration()

void timer1_configuration(void)

{timer_oc_parameter_struct timer_ocintpara;

timer_parameter_structtimer_initpara;

timer_deinit(TIMER1);

timer_initpara.prescaler=5399;

timer_initpara.alignedmode=TIMER_COUNTER_EDGE;

timer_initpara.counterdirection=TIMER_COUNTER_UP;

timer_initpara.period=1480;

timer_initpara.clockdivision=TIMER_CKDIV_DIV1;

timer_initpara.repetitioncounter= 0;

timer_init(TIMER1,&timer_initpara);

timer_ocintpara.ocpolarity=TIMER_OC_POLARITY_HIGH;

timer_ocintpara.outputstate= TIMER_CCX_ENABLE;

timer_channel_output_config(TIMER1,TIMER_CH_0,&timer_ocintpara);

timer_channel_output_pulse_value_config(TIMER1,TIMER_CH_0,740);

timer_channel_output_mode_config(TIMER1,TIMER_CH_0,TIMER_OC_MODE_TIMING);

timer_channel_output_shadow_config(TIMER1,TIMER_CH_0,TIMER_OC_SHADOW_DISABLE);

timer_interrupt_enable(TIMER1,TIMER_INT_CH0);

timer_interrupt_flag_clear(TIMER1,TIMER_INT_CH0);

timer_enable(TIMER1);

}

ADC_CMP_IRQHandler()

void ADC_CMP_IRQHandler(void)

{

CMP_Count++;

EXTI_PD|=0X200000;

}

TIMER1_IRQHandler()

void TIMER1_IRQHandler(void)

{

if(SET== timer_interrupt_flag_get(TIMER1, TIMER_INT_CH0))

{

timer_interrupt_flag_clear(TIMER1,TIMER_INT_CH0);

CAP_Value=CMP_Count;

gd_eval_led_toggle(LED4);

CAP_OK=0x01;

}

}

OLED驅動代碼網上彼彼皆是,就不再重復貼出了。

運行結果見圖6

圖6

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 電容表
    +關注

    關注

    0

    文章

    38

    瀏覽量

    16321
  • gd32f350
    +關注

    關注

    3

    文章

    3

    瀏覽量

    3288

原文標題:基于GD32F350的數字式電容表

文章出處:【微信號:gh_dae0718828df,微信公眾號:gh_dae0718828df】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    指針數字式萬用各有哪些優缺點?

    振蕩,放大、分頻保護等電路,所以功能較多。比如可以測量溫度、頻率(在一個較低的范圍)、電容、電感,做信號發生器等等。 數字式萬用由于內部結構多用集成電路所以過載能力較差,(不過現在有些已能自動換檔
    發表于 08-11 10:30

    GD32F350引腳有異常干擾信號輸出

    `GD32F350使用Timer1,參照例程,通道1、2、3產生PWM信號正常,當不使用通道2、3時,PB10引腳有不固定的波形輸出,懷疑是干擾信號。void timer_config(void
    發表于 11-22 09:35

    求一種數字式溫度測量電路的設計方案

    求一種數字式溫度測量電路的設計方案
    發表于 05-17 06:16

    GD32F350運行在8M的目標

    芯片:GD32F350 運行在8M目標:每10ms讀取三個adc通道,并且通過DMA傳輸流程1.配置DMA傳輸2.配置ADC模式和通道3.配置定時器定時觸發4.中斷函數和獲取足夠數據后進
    發表于 08-06 09:25

    請問一下GD32F350芯片是怎樣在8M上運行的

    請問一下GD32F350芯片是怎樣在8M上運行的?有哪些流程?
    發表于 11-01 06:44

    怎樣通過GD32F350去讀取ADC通道掃描模式

    怎樣通過GD32F350去讀取ADC通道掃描模式?并通過DMA傳輸出來呢?
    發表于 11-08 06:46

    數字式電容計電路圖

    數字式電容計電路圖
    發表于 04-11 13:48 ?842次閱讀
    <b class='flag-5'>數字式</b><b class='flag-5'>電容</b>計電路圖

    數字式電容計原理圖

    數字式電容計原理圖
    發表于 04-11 13:49 ?1064次閱讀
    <b class='flag-5'>數字式</b><b class='flag-5'>電容</b>計原理圖

    數字式電容測試儀電路圖

    數字式電容測試儀電路圖
    發表于 05-19 14:11 ?1529次閱讀
    <b class='flag-5'>數字式</b><b class='flag-5'>電容</b>測試儀電路圖

    數字式電容控制電路

    數字式電容控制電路 數字式
    發表于 09-15 11:34 ?663次閱讀
    <b class='flag-5'>數字式</b><b class='flag-5'>電容</b>控制電路

    GD32F330/GD32F350芯片編程開發手冊英文版

    此文檔包含GD32F330、GD32F350兩種芯片的英文數據開發手冊。
    發表于 08-29 09:35 ?0次下載

    GD32F330/GD32F350芯片編程開發手冊中文版

    此文檔包含GD32F330、GD32F350兩種芯片的中文數據開發手冊。
    發表于 08-29 09:35 ?0次下載

    2017年7月更新最新GD32型單片機選型指導手冊

    此文檔為目前最新的GD32單片機選型手冊,2017年7月更新,包含最新的GD32F403、GD32F405、GD32F407、GD32F45
    發表于 08-29 11:30 ?107次下載

    一種數字式可調直流穩壓電源系統設計方案

    一種數字式可調直流穩壓電源系統設計方案
    發表于 06-25 10:32 ?35次下載

    GD32F350xx 數據

    GD32F350xx 數據
    發表于 02-22 18:26 ?3次下載
    <b class='flag-5'>GD32F350</b>xx 數據<b class='flag-5'>表</b>
    主站蜘蛛池模板: 美女18毛片免费视频| 日韩欧美1区| 成人小视频免费在线观看| 亚洲2017天堂色无码| 免费观看99热只有精品| 国产精品亚洲电影久久成人影院 | 婷婷综合久久狠狠色| 99久久国产露脸精品麻豆| 无码国产成人777爽死在线观看 | 亚洲中文字幕无码一去台湾| 欧美精品高清在线观看| 教室眠催白丝美女校花| 成人免费看片45分钟| 91国在线产| 一级做a爰片久久毛片苍井优| 色悠久久久久综合网小说| 母乳女神春日もな| 久久高清免费视频| 国产偷啪自怕网| 国产ts在线| 宝贝乖女好紧好深好爽老师| 18岁末年禁止观看免费1000个| 亚洲国产在线2o20| 小黄文污到你湿| 少妇高潮惨叫久久久久久电影| 欧美白人极品性喷潮| 久久伊人电影| 久久国产综合精品欧美| 国产成年人在线观看| 日本视频久久| 成人精品综合免费视频| 99精品国产福利在线观看| 渔夫床满艳史bd高清在线直播| 亚洲AV精品乱码专区| 无套内射无矿码免费看黄| 日本一二三区视频在线| 青柠在线视频| 日韩人妻无码专区一本二本| 欧美性暴力变态xxxx| 欧美午夜精品一区区电影 | 中文字幕成人在线观看|