在官方的例程中,提供了供用户学习和测试的A/D数据采集程序,它主要是通过串口来输出信息内容。
其主程序的内容为:
<pre>int main(void)
{
//inital ADC pin
PA0_INIT (PA0_ADC0);
PA1_INIT (PA1_ADC1);
PA2_INIT (PA2_ADC2);
PA3_INIT (PA3_ADC3);
PA4_INIT (PA4_ADC4);
PA5_INIT (PA5_ADC5);
PA6_INIT (PA6_ADC6);
PA7_INIT (PA7_ADC7);
//initial ADC
ADC_Init(200000,INTERNALADCVREFGND);
ADC_SetTrigger(ADC_START_BY_SOFTWAER,0);
ADC_SetupChannels(AD0|AD1|AD2|AD3|AD4|AD5|AD6|AD7,TRIGGERMODE);
//init UART pin
PA9_INIT(PA9_UART0_TX);
PA10_INIT(PA10_UART0_RX);
//initial UART
UART_Open(UART0,115200,UART_NO_PARITY,UART_TRIGGER_LEVEL_1_BYTE);
UART_Send(UART0,"ADC Data\n",12);
while (1)
{
ADC_IssueSoftTrigger;
while(ADC->DR7_b .DONE ==0);
UART_PutHex (UART0, ADC->DR1_b.RESULT);
UART_PutHex (UART0, ADC->DR2_b.RESULT);
UART_PutHex (UART0, ADC->DR3_b.RESULT);
UART_PutHex (UART0, ADC->DR4_b.RESULT);
UART_PutHex (UART0, ADC->DR5_b.RESULT);
UART_PutHex (UART0, ADC->DR6_b.RESULT);
UART_PutHex (UART0, ADC->DR7_b.RESULT);
UART_PutString (UART0, " ");
}
}</pre>
复制代码由此可以看出,它是使用UART0来输出信息,采用的波特率为115200bps,无奇偶校验位。
要使用UART0进行串口通讯,需使用PA9来连接外挂的USB转串口模块的RXD引脚。
经程序的编译和下载,其运行结果如图1所示。
图1 测试结果
通过对输出数据的分析可知,每次会输出7项数据,每个数据占4个字节。
所输出的7项数据,依次对应AD1~AD7。
若只对AD1进行采集和输出,则其输出结果如图2所示。
图2 单项数据采集
在PA1分别接如VDD和GND的情况下,其检测结果见图3和图4所示,说明其检测值可达到满量程。
图3 检测VDD输出值
图4 检测GND输出值
为便于更直观地显示检测结果,可配合前面介绍的OLED屏来显示检测结果,其主程序为:
<pre>int main(void)
{
//inital ADC pin
PA0_INIT (PA0_ADC0);
PA1_INIT (PA1_ADC1);
PA2_INIT (PA2_ADC2);
PA3_INIT (PA3_ADC3);
PA4_INIT (PA4_ADC4);
PA5_INIT (PA5_ADC5);
PA6_INIT (PA6_ADC6);
PA7_INIT (PA7_ADC7);
ADC_Init(200000,INTERNALADCVREFGND);
ADC_SetTrigger(ADC_START_BY_SOFTWAER,0);
ADC_SetupChannels(AD0|AD1|AD2|AD3|AD4|AD5|AD6|AD7,TRIGGERMODE);
PC1_INIT(PC1_GPIO);
PC2_INIT(PC2_GPIO);
PC->DIR_b.DIR1 = 0x1;
PC->DIR_b.DIR2 = 0x1;
OLED_Init();
OLED_Clear();
OLED_ShowString(0,0,"ME32G030 ",16);
OLED_ShowString(0,2,"OLED & ADC TEST",16);
OLED_ShowString(0,4,"AD1=",16);
while (1)
{
ADC_IssueSoftTrigger;
while(ADC->DR7_b .DONE ==0);
OLED_ShowNum(40,4,ADC->DR1_b.RESULT,4,16);
SYS_Delay(0x4FFFF);
}
}</pre>
复制代码经程序的编译和下载,其测试效果如图5所示,若添加NTC温度感应器件,则可进行温度的测控处理。
图5 显示效果