找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 2546|回复: 0
打印 上一主题 下一主题
收起左侧

HC32F460开发板数据采样及显示

[复制链接]
跳转到指定楼层
楼主
本帖最后由 jinglixixi 于 2020-10-1 16:15 编辑

HC32F460内置有2个独立的12ADC,并在开发板上配有10K的电位器以模拟电位高低,见图1所示。
由原理图可知该电位器的引脚被连到MCUPC0上,即ADC12_IN10。


1 电位器连接


在厂家提供的例程是通过串口来输出数据采集值,但奇怪的是在串口连接并设置好以后,却一直没等到数据的到来。
为确定A/D是否真正获得了正确的结果,就将OLED屏与A/D结合到一起以验证A/D的数据采集功能。
其主程序的内容为:
  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. }
复制代码

程序经编译下载后,其起始界面如图2所示,在的最大值为4095,即0XFFFH,对应的电压值为3.287V,见图3所示。
之所产生这样的结果是与其转换公式有关的,改写成直观的形式为:
电压值=A/D采集值*3.288/4096
以这个公式是不能期待有3.3V电压显示的,因为满量程的测量值也仅是3.288V。况且A/D采集的最大值也仅能达到值0XFFFH,是不会产生0X1000H这个结果,即最大测量电压也不会达到3.288V
若满量程时为3.3V电压,在修改转换公式的情况下,应为:
电压值=A/D采集值*3.3/4095
此时,其采集的最大值如图4所示。
2 起始界面



3 采样最大值1



4 采样最大值2


评分

参与人数 1黑币 +50 收起 理由
admin + 50 共享资料的黑币奖励!

查看全部评分

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表