打印
[方案相关]

【华大测评】+数据采样及显示

[复制链接]
1049|13
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
本帖最后由 jinglixixi 于 2020-9-30 23:21 编辑

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


在厂家提供的例程是通过串口来输出数据采集值,但奇怪的是在串口连接并设置好以后,却一直没等到数据的到来。
为确定A/D是否真正获得了正确的结果,就将OLED屏与A/D结合到一起以验证A/D的数据采集功能。
其主程序的内容为:
int32_t main(void)
{
uint8_t u8Count;
stc_port_init_t stcPortInit;
MEM_ZERO_STRUCT(stcPortInit);
SystemClockConfig();
AdcConfig();
stcPortInit.enPinMode = Pin_Mode_Out;
PORT_Init(PortD, Pin00, &stcPortInit);
PORT_Init(PortD, Pin01, &stcPortInit);
OLED_Init();
OLED_Clear();
OLED_ShowString(0,0,"HC32F460 TEST",16);
OLED_ShowString(0,2,"OLED & A/D",16);
Ddl_Delay1ms(1000u);
ADC_PollingSa(M4_ADC1, m_au16Adc1Value, ADC1_CH_COUNT, TIMEOUT_MS);
u8Count = 0u;
ADC_StartConvert(M4_ADC2);
while (u8Count < ADC2_CONTINUOUS_TIMES)
{
if (Set == ADC_GetEocFlag(M4_ADC2, ADC_SEQ_A))
{
     ADC_GetChData(M4_ADC2, ADC2_SA_CHANNEL, m_au16Adc2Value, ADC2_SA_CHANNEL_COUNT);
     ADC_ClrEocFlag(M4_ADC2, ADC_SEQ_A);
     u8Count++;
}
}
ADC_StopConvert(M4_ADC2);
OLED_Clear();
OLED_ShowString(0,0,"A/D= ",16);        
OLED_ShowString(0,2," U =      mV",16);
while (1u)
{
       ADC_PollingSa(M4_ADC1, m_au16Adc1Value, ADC1_CH_COUNT, TIMEOUT_MS);
       OLED_ShowNum(40,2,(m_au16Adc1Value[10u] * ADC_VREF) / (float) ADC1_ACCURACY*1000,4,16);
       Ddl_Delay1ms(500u);
}

程序经编译下载后,其起始界面如图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

使用特权

评论回复
沙发
zeshoufx| | 2020-10-2 13:24 | 只看该作者
谢谢分享【数据采样及显示】

使用特权

评论回复
板凳
jinglixixi|  楼主 | 2020-10-2 13:25 | 只看该作者
zeshoufx 发表于 2020-10-2 13:24
谢谢分享【数据采样及显示】

感谢支持!!!

使用特权

评论回复
地板
tfqi| | 2020-10-11 17:06 | 只看该作者
非常感谢楼主分享

使用特权

评论回复
5
wiba| | 2020-10-11 17:07 | 只看该作者
精度怎么样

使用特权

评论回复
6
zljiu| | 2020-10-11 17:07 | 只看该作者
代码是自己写的 还是官网有demo啊

使用特权

评论回复
7
coshi| | 2020-10-11 17:08 | 只看该作者
看着效果不错啊

使用特权

评论回复
8
磨砂| | 2020-10-11 17:08 | 只看该作者
楼主好勤快

使用特权

评论回复
9
jinglixixi|  楼主 | 2020-10-11 19:03 | 只看该作者

理论精度12位

使用特权

评论回复
10
jinglixixi|  楼主 | 2020-10-11 19:03 | 只看该作者
coshi 发表于 2020-10-11 17:08
看着效果不错啊

多谢支持!

使用特权

评论回复
11
jinglixixi|  楼主 | 2020-10-11 19:04 | 只看该作者
zljiu 发表于 2020-10-11 17:07
代码是自己写的 还是官网有demo啊

兼而有之

使用特权

评论回复
12
jinglixixi|  楼主 | 2020-10-11 19:05 | 只看该作者

得块板子不容易呀!

使用特权

评论回复
13
jinglixixi|  楼主 | 2020-10-11 19:06 | 只看该作者
tfqi 发表于 2020-10-11 17:06
非常感谢楼主分享

有支持真好,谢谢!

使用特权

评论回复
14
嵌入小菜菜| | 2020-10-13 08:49 | 只看该作者
HC32F460内置有2个独立的12位ADC,并在开发板上配有10K的电位器以模拟电位高低,见图1所示。
由原理图可知该电位器的引脚被连到MCU的PC0上,即ADC12_IN10

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

455

主题

2756

帖子

38

粉丝