找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 3354|回復(fù): 0
收起左側(cè)

HC32F460開發(fā)板數(shù)據(jù)采樣及顯示

[復(fù)制鏈接]
ID:776997 發(fā)表于 2020-9-30 23:14 | 顯示全部樓層 |閱讀模式
本帖最后由 jinglixixi 于 2020-10-1 16:15 編輯

HC32F460內(nèi)置有2個獨(dú)立的12ADC,并在開發(fā)板上配有10K的電位器以模擬電位高低,見圖1所示。
由原理圖可知該電位器的引腳被連到MCUPC0上,即ADC12_IN10。

1.jpg
1 電位器連接


在廠家提供的例程是通過串口來輸出數(shù)據(jù)采集值,但奇怪的是在串口連接并設(shè)置好以后,卻一直沒等到數(shù)據(jù)的到來。
為確定A/D是否真正獲得了正確的結(jié)果,就將OLED屏與A/D結(jié)合到一起以驗(yàn)證A/D的數(shù)據(jù)采集功能。
其主程序的內(nèi)容為:
  1. int32_t main(void)
  2. {
  3.     uint8_t u8Count;
  4.         stc_port_init_t stcPortInit;
  5.     MEM_ZERO_STRUCT(stcPortInit);
  6.     SystemClockConfig();
  7.     AdcConfig();
  8.         stcPortInit.enPinMode = Pin_Mode_Out;
  9.     PORT_Init(PortD, Pin00, &stcPortInit);
  10.         PORT_Init(PortD, Pin01, &stcPortInit);
  11.         OLED_Init();
  12.         OLED_Clear();
  13.         OLED_ShowString(0,0,"HC32F460 TEST",16);
  14.         OLED_ShowString(0,2,"OLED & A/D",16);
  15.         Ddl_Delay1ms(1000u);
  16.     ADC_PollingSa(M4_ADC1, m_au16Adc1Value, ADC1_CH_COUNT, TIMEOUT_MS);
  17.     u8Count = 0u;
  18.     ADC_StartConvert(M4_ADC2);
  19.     while (u8Count < ADC2_CONTINUOUS_TIMES)
  20.     {
  21.         if (Set == ADC_GetEocFlag(M4_ADC2, ADC_SEQ_A))
  22.         {
  23.             ADC_GetChData(M4_ADC2, ADC2_SA_CHANNEL, m_au16Adc2Value, ADC2_SA_CHANNEL_COUNT);
  24.             ADC_ClrEocFlag(M4_ADC2, ADC_SEQ_A);
  25.             u8Count++;
  26.         }
  27.     }
  28.     ADC_StopConvert(M4_ADC2);
  29.         OLED_Clear();
  30.         OLED_ShowString(0,0,"A/D= ",16);       
  31.         OLED_ShowString(0,2," U =      mV",16);       
  32.     while (1u)
  33.     {
  34.         ADC_PollingSa(M4_ADC1, m_au16Adc1Value, ADC1_CH_COUNT, TIMEOUT_MS);
  35.             OLED_ShowNum(40,2,(m_au16Adc1Value[10u] * ADC_VREF) / (float) ADC1_ACCURACY*1000,4,16);
  36.                 Ddl_Delay1ms(500u);
  37.     }
  38. }
復(fù)制代碼

程序經(jīng)編譯下載后,其起始界面如圖2所示,在的最大值為4095,即0XFFFH,對應(yīng)的電壓值為3.287V,見圖3所示。
之所產(chǎn)生這樣的結(jié)果是與其轉(zhuǎn)換公式有關(guān)的,改寫成直觀的形式為:
電壓值=A/D采集值*3.288/4096
以這個公式是不能期待有3.3V電壓顯示的,因?yàn)闈M量程的測量值也僅是3.288V。況且A/D采集的最大值也僅能達(dá)到值0XFFFH,是不會產(chǎn)生0X1000H這個結(jié)果,即最大測量電壓也不會達(dá)到3.288V。
若滿量程時為3.3V電壓,在修改轉(zhuǎn)換公式的情況下,應(yīng)為:
電壓值=A/D采集值*3.3/4095
此時,其采集的最大值如圖4所示。
2.jpg
2 起始界面


3.jpg
3 采樣最大值1


4.jpg
4 采樣最大值2


評分

參與人數(shù) 1黑幣 +50 收起 理由
admin + 50 共享資料的黑幣獎勵!

查看全部評分

回復(fù)

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表