找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 3217|回復: 0
打印 上一主題 下一主題
收起左側

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

[復制鏈接]
跳轉到指定樓層
樓主
ID:776997 發(fā)表于 2020-9-30 23:14 | 只看該作者 |只看大圖 回帖獎勵 |倒序瀏覽 |閱讀模式
本帖最后由 jinglixixi 于 2020-10-1 16:15 編輯

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


1 電位器連接


在廠家提供的例程是通過串口來輸出數(shù)據(jù)采集值,但奇怪的是在串口連接并設置好以后,卻一直沒等到數(shù)據(jù)的到來。
為確定A/D是否真正獲得了正確的結果,就將OLED屏與A/D結合到一起以驗證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. }
復制代碼

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



3 采樣最大值1



4 采樣最大值2


評分

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

查看全部評分

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復

使用道具 舉報

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

本版積分規(guī)則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

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

快速回復 返回頂部 返回列表