【上海航芯 ACM32F070开发板+触控功能评估板测评】+ADC数据采集
[复制链接]
本帖最后由 jinglixixi 于 2022-10-16 10:41 编辑
在ACM32F070内部配有多通道的A/D转换器,与前面介绍的OLED屏相配合则可以对多通道的采样加以显示。
各模拟信号采集通道的引脚使用见图1所示,在使用时应注意避让。
ADC_Handle.ChannelNum = 14;
图1 引脚占用
实现多通道采集与显示的函数如下:
void ADC_Test_Polling_Nchannels(void)
{
uint32_t i, VrefP, Voltage,v;
uint32_t lu32_COM_OK = 0;
VrefP = ADC_GetVrefP(ADC_CHANNEL_8);
v=VrefP;
UserKEY_Init();
ADC_Init_Polling_Nchannels();
while(1)
{
while(false == UserKEY_Get());
System_Delay_MS(500);
for (i = 0; i < BUFFER_LENGTH; i++)
{
gu32_AdcBuffer = 0;
}
HAL_ADC_Polling(&ADC_Handle, gu32_AdcBuffer, ADC_Handle.ChannelNum, 0);
for (i = 1; i < 8; i++)
{
Voltage = (gu32_AdcBuffer&0xFFF)*VrefP/4095;
OLED_ShowNum(64,4,i,4,16);
OLED_ShowNum(16,6,Voltage,4,16);
}
System_Delay_MS(1000);
}
}
实现图2和图3显示效果的主程序为:
int main(void)
{
int n;
System_Init();
Uart_Init();
GPIO_Test();
OLED_Init();
OLED_Clear();
OLED_ShowString(0,0,"ACM32F070",16);
OLED_ShowString(0,2,"OLED & ADC",16);
OLED_ShowString(0,4,"Channel= ",16);
OLED_ShowString(0,6,"U= mv",16);
ADC_Polling_Test();
while(1)
{
}
}
当OLED屏使用PD4和PD5时,需回避通道0和通道8的数据采集。
图2 排除通道0和通道8的数据采集
当OLED屏使用PD6和PD7时,则可实现全通道的数据采集。
图3 全通道的数据采集
|