[汽车MCU – KEA] 【玩转KEA】通过UART发送ADC转换数据

[复制链接]
3667|9
 楼主| FSL_FAE_STEVE 发表于 2014-7-3 17:45 | 显示全部楼层 |阅读模式
之前的玩转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的转换数据。
Capture.JPG

TRK-KEA64_ADC_UART.zip (383.38 KB, 下载次数: 41)
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采样值显著变化。
gxliu08 发表于 2014-7-7 09:40 | 显示全部楼层
UART最典型接口之一啊
茫茫大士 发表于 2014-7-7 11:35 | 显示全部楼层
UART可以很方便的与主机进行通信,从机可以上传数据以及状态信息,主机也可对从机进行控制。
茫茫大士 发表于 2014-8-6 16:45 | 显示全部楼层
我还以为例程3没现象了,重看此贴豁然开朗,谢谢楼主
茫茫大士 发表于 2014-8-12 11:20 | 显示全部楼层
@FSL_FAE_STEVE
楼主您好!我做了一下这个实验,但是用您的程序,结果并没出现
1.JPG
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是根据您的办法,短路传感器得到的
2.JPG
TRK-KEA128_ADC_UART.rar (272.03 KB, 下载次数: 5)

  
 楼主| FSL_FAE_STEVE 发表于 2014-8-13 09:44 | 显示全部楼层
茫茫大士 发表于 2014-8-12 11:20
@FSL_FAE_STEVE
楼主您好!我做了一下这个实验,但是用您的程序,结果并没出现

您好!
我的代码里面直接把adc转换的数值用二进制方式发送至串口,所以在串口调试工具这一端需要选择二进制或者16进制编码,这里没有进行ASCII码转换。推荐试试HTERM这个工具。
茫茫大士 发表于 2014-8-13 14:40 | 显示全部楼层
FSL_FAE_STEVE 发表于 2014-8-13 09:44
您好!
我的代码里面直接把adc转换的数值用二进制方式发送至串口,所以在串口调试工具这一端需要选择二进 ...

好的,我试试,谢谢版主
您需要登录后才可以回帖 登录 | 注册

本版积分规则

16

主题

168

帖子

3

粉丝
快速回复 在线客服 返回列表 返回顶部