KL27 mini Board最吸引人的是它的小巧及数据采集功能,但遗憾的是板上设计好的检测口却无法正常启用。经权衡,把数据采集的端口由原来的PE30改为PC02,相应地也在PC02引脚配上了一个小电位器来模拟采样信号。 此外,为了能准确地分析采集的数据,还临时编了个LabVIEW小程序来实现串行接收KL27 mini Board发了的采样数据,并以波形图的方式显示出来以供分析。 通过采样数据及波形可以观察到,尽管模拟信号相对较稳定,但细小的波动还是存在的,在图1,红色线代表电压,绿色线代表采集数据值。从波形图可以看出采集数据的波动,当然有红线可以知道这种波动是很细小的。此外,有图2可以看出,随着时间的延续采样信号是在下降一段时间后才渐趋趋于稳定震荡的。 在模拟动态信号采集过程中,其动态相应性也是不错的,可以看到红绿两条线的轮廓是基本一致的。 采集结束时,可以将采集的数据保存到文件中,其数据格式如图4所示。 目前该测试程序的问题是时间轴的标度不理想,需要进一步完善。
其实大家更关心的是KL27 mini Board的采集程序,其程序代码如下: (在例程的基础上改动不大,复制到例程中编译即可执行。) - int main(void)
- {
- int value;
- DelayInit();
- /* LED */
- GPIO_QuickInit(LED0_PORT, LED0_PIN, kGPIO_Mode_OPP);
- GPIO_QuickInit(LED1_PORT, LED1_PIN, kGPIO_Mode_OPP);
- GPIO_QuickInit(LED2_PORT, LED2_PIN, kGPIO_Mode_OPP);
- GPIO_QuickInit(LED3_PORT, LED3_PIN, kGPIO_Mode_OPP);
- GPIO_WriteBit(LED0_PORT, LED0_PIN, 1);
- GPIO_WriteBit(LED2_PORT, LED2_PIN, 1);
- GPIO_WriteBit(LED1_PORT, LED1_PIN, 1);
- GPIO_WriteBit(LED3_PORT, LED3_PIN, 1);
- /* UART */
- LPUART_QuickInit(LPUART0_RX_D06_TX_D07, 115200);
- ADC_QuickInit(ADC0_SE11A_PC02, kADC_SingleDiff12or13);
-
- while(1)
- { value = ADC_QuickReadValue(ADC0_SE11A_PC02);
- printf("ADC:%4d\r\n", value);
-
- if(value<=1000)
- { GPIO_WriteBit(LED0_PORT, LED0_PIN, 1);
- GPIO_WriteBit(LED2_PORT, LED2_PIN, 1);
- GPIO_WriteBit(LED1_PORT, LED1_PIN, 1);
- GPIO_WriteBit(LED3_PORT, LED3_PIN, 0);
- }
- else if(value<=2000){
- GPIO_WriteBit(LED0_PORT, LED0_PIN, 1);
- GPIO_WriteBit(LED2_PORT, LED2_PIN, 0);
- GPIO_WriteBit(LED1_PORT, LED1_PIN, 1);
- GPIO_WriteBit(LED3_PORT, LED3_PIN, 1);
- }
- else if(value<=3000){
- GPIO_WriteBit(LED0_PORT, LED0_PIN, 1);
- GPIO_WriteBit(LED2_PORT, LED2_PIN, 1);
- GPIO_WriteBit(LED1_PORT, LED1_PIN, 0);
- GPIO_WriteBit(LED3_PORT, LED3_PIN, 1);
- }
- else if(value>3000){
- GPIO_WriteBit(LED0_PORT, LED0_PIN, 0);
- GPIO_WriteBit(LED2_PORT, LED2_PIN, 1);
- GPIO_WriteBit(LED1_PORT, LED1_PIN, 1);
- GPIO_WriteBit(LED3_PORT, LED3_PIN, 1);
- }
- DelayMs(500);
- }
- }
复制代码
|