打印
[汽车MCU – KEA]

【玩转KEA】通过UART发送ADC转换数据

[复制链接]
3298|9
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
之前的玩转KEA系列例程我们介绍了如何使用KEA系列的UART模块和ADC模块,那么很容易想到我们能否通过UARTADC转换的数据发出来呢,答案当然可以。其实我们只需要在官方例程上稍作修改即可。
首先我们先得到ADC转换的数据,接下来就通过UART将数据发送到PC
主要实现代码如下:
for(;;) {      
              counter++;
              adc_value=ADC_Read(3);/*Read ADC value from channel 3 */
              //adc_value =adc_value >> 4;
              
              Uart_SendChar(adc_value);
              
              int i = 0;
              while(i != 500000)
                    i++;
       }
      
从串口调试工具可以收到ADC的转换数据。

TRK-KEA64_ADC_UART.zip (383.38 KB)

相关帖子

沙发
ar_m_cu| | 2014-7-3 19:54 | 只看该作者
顶一个

使用特权

评论回复
板凳
lvyunhua| | 2014-7-3 21:27 | 只看该作者
不错,学习中。。。

使用特权

评论回复
地板
FSL_FAE_STEVE|  楼主 | 2014-7-4 10:49 | 只看该作者
光线传感器电阻,阻值约为2M欧姆,而串联电阻R10阻值仅为10K欧姆,R10电阻上的分压非常小,这也就解释了为什么一开始ADC转换结果很小(0x03左右)。
通过使用强光照射,比如用手机背面的LED灯照射,光线传感器电阻电阻显著减小,R10电阻上的分压变大,因而看到ADC采样值显著变化。

使用特权

评论回复
5
gxliu08| | 2014-7-7 09:40 | 只看该作者
UART最典型接口之一啊

使用特权

评论回复
6
茫茫大士| | 2014-7-7 11:35 | 只看该作者
UART可以很方便的与主机进行通信,从机可以上传数据以及状态信息,主机也可对从机进行控制。

使用特权

评论回复
7
茫茫大士| | 2014-8-6 16:45 | 只看该作者
我还以为例程3没现象了,重看此贴豁然开朗,谢谢楼主

使用特权

评论回复
8
茫茫大士| | 2014-8-12 11:20 | 只看该作者
@FSL_FAE_STEVE
楼主您好!我做了一下这个实验,但是用您的程序,结果并没出现

Uart_SendChar(adc_value);
这里adc_valueshige 是个变量的值,传过去是不是要转化为ASCII码?才能在串口里正确显示,我用的是SECURE CRT,是不是因为串口工具用的不一样?

我的修改如下
int main(void)
{
    UINT32 counter = 0;
    UINT8 a,b,c;
    Clk_Init();                         /* Configure clocks to run at 20 Mhz*/
    UART_Init();                        /*Initialize Uart 2 at 9600 bauds */
    ADC_Init(3,EIGTH_BIT);    /* Configure ADC channel 3 in 8-bit resolution mode */
    //Uart_SetCallback(Uart_Interrupt);    /* Set the callback function that the UART driver will call when receiving a char */
    Enable_Interrupt(INT_UART2);          /* Enable UART2 interrupt */

    for(;;) {      
           counter++;

           adc_value=ADC_Read(3); /* Read ADC value from channel 3 */
       //adc_value = adc_value >> 4;
       a = adc_value/100;
       b = adc_value/10%10;
       c = adc_value%10;
       //Uart_SendChar(adc_value);
   
       Uart_SendChar(a+48);
       Uart_SendChar(b+48);
       Uart_SendChar(c+48);
       Uart_SendChar('\n');
       Uart_SendChar('\r');
           

           int i = 0;
           while(i != 500000)
               i++;
    }
   
    return 0;
}
这是修改后的结果,其中255是根据您的办法,短路传感器得到的

TRK-KEA128_ADC_UART.rar (272.03 KB)

  

使用特权

评论回复
9
FSL_FAE_STEVE|  楼主 | 2014-8-13 09:44 | 只看该作者
茫茫大士 发表于 2014-8-12 11:20
@FSL_FAE_STEVE
楼主您好!我做了一下这个实验,但是用您的程序,结果并没出现

您好!
我的代码里面直接把adc转换的数值用二进制方式发送至串口,所以在串口调试工具这一端需要选择二进制或者16进制编码,这里没有进行ASCII码转换。推荐试试HTERM这个工具。

使用特权

评论回复
10
茫茫大士| | 2014-8-13 14:40 | 只看该作者
FSL_FAE_STEVE 发表于 2014-8-13 09:44
您好!
我的代码里面直接把adc转换的数值用二进制方式发送至串口,所以在串口调试工具这一端需要选择二进 ...

好的,我试试,谢谢版主

使用特权

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

本版积分规则

16

主题

168

帖子

3

粉丝