本帖最后由 flyword 于 2019-1-27 18:46 编辑
今天继续分享xmc4800的ADC学习应用,还是使用的DAVE APP,使用过程也非常简单,使用DAVE这个软件好多次了,对于APP模块的应用,我总结大概一般都分为3个步骤,有的可能会更少一点。娜三个步骤呢?
一、 APP模块的添加以及配置。这里面配置的内容主要包括一些配置参数、中断设置、以及工作状态,例如是否在初始化后就工作等等,目前应用过的APP主要有TIMER,UART,ADC,具体来说配置都是与应用相关的,配置很简单。
二、 HW 信号连接。这里主要是涉及到信号的连接,可以把事件和中断信号连接起来,如之前将timer中的定时事件和软中断连接起来的。
三、 引脚配置。将具体应用的引脚配置到xmc4800芯片上。可以图示配置也可以菜单配置。
综上所述,使用APP模块,始终离不开这3个步骤,熟悉各个APP模块,可以加快你的产品谁应用。
好了,继续今天的分享,如何使用ADC模块。按照上面的步骤,新建DAVE CE工程以后,添加两个模块ADC和UART模块。这次简单应用是ADC模块获得数据后通过串口打印出来。相关的UART使用在这里不再描述了,可以参考之前的帖子。这里重点说说ADC的应用和配置。
1. 添加相关的ADC模块。这里有2个跟ADC相关的模块,选择第1个即可。
2. 配置ADC模块。采用无触发信号,使能连续转换模式,在分辨率方面选择8位的测量模式,这里一般有8bit 10bit 12bit三种模式。
3.设置相关的中断配置需求。在测量结束后产生中中断,中断函数名可以自己定义。
4. 引脚配置。这里选择14.0.
5. 图纸里面对于ADC的定义标记有点问题,具体如下图,这里不影响使用,因为我们测试的引脚都未连接,测量值应该很小很小。
6. 点击产生代码,后对main函数进行修改。具体参考代码如下:
- /*
- * main.c
- #include <DAVE.h> //Declarations from DAVE Code Generation (includes SFR declaration)
- /**
- * [url=home.php?mod=space&uid=159083]@brief[/url] main() - Application entry point
- *
- * <b>Details of function</b><br>
- * This routine is the application entry point. It is invoked by the device startup code. It is responsible for
- * invoking the APP initialization dispatcher routine - DAVE_Init() and hosting the place-holder for user application
- * code.
- */
- XMC_VADC_RESULT_SIZE_t result;
- uint8_t value[10];
-
- void Adc_Measurement_Handler()
- {
- #if(UC_SERIES != XMC11)
-
- result = ADC_MEASUREMENT_GetResult(&ADC_MEASUREMENT_Channel_A);
-
- //result=4096;
-
- #else
-
- result = ADC_MEASUREMENT_GetGlobalResult();
-
- #endif
-
- sprintf(value,"%d",result);
-
- UART_Transmit(&UART_0,"value:",6);
-
- UART_Transmit(&UART_0, value, sizeof(value));
-
- UART_Transmit(&UART_0,"\r\n",2);
- }
- int main(void)
- {
- DAVE_STATUS_t status;
- status = DAVE_Init(); /* Initialization of DAVE APPs */
- if(status != DAVE_STATUS_SUCCESS)
- {
- /* Placeholder for error handler code. The while loop below can be replaced with an user error handler. */
- XMC_DEBUG("DAVE APPs initialization failed\n");
- while(1U)
- {
- }
- }
- ADC_MEASUREMENT_StartConversion(&ADC_MEASUREMENT_0);
- /* Placeholder for user application code. The while loop below can be replaced with user application code. */
- while(1U)
- {
- }
- }
复制代码
7. 编译后运行,putty设置好后,可以看到ADC测量的结果:因为没有电压输入,所以测量的值应该很小,这里测出来的值8、6、7、14等可能是干扰噪声。
好了今天的分享到此,明天计划分享DAC模块的简单应用。
之所以试用ADC模块,也是为了在后面EtherCAT从站设计中,加入模拟量的测量,简单实现数字量和模拟量都能操作的从站。
此内容由EEWORLD论坛网友flyword原创,如需转载或用于商业用途需征得作者同意并注明出处