• S5PV210 ADC转换


    第一节 S5PV210的ADC
    S5PV210的ADC可支持10bit和12bit,它支持10路输入,然后将输入的模拟的信号转换为10bit或者12bit的二进制数字信号。
    在5MHz的时钟下,最大转换速率是1MSPS。本章只是涉及到初步的ADC转换,并不会讲解触摸屏相关知识,其结构图如下:

      image
    在Mini210S中,adc相关的原理图如下:

    image
    通道0的输入被接到可调电阻上,通过调节可调电阻,adc能转换出不同的值。
    第二节 程序相关讲解
    完整代码见详细代码下载链接。
    1. main.c
    main()函数很简单,主要是调用了adc_test()函数来测试adc,adc_test()的定义位于文件adc.c中。
    2. adc.c
    函数adc_test()的代码如下:
    void adc_test(void)
    {
        printf(" ##################adc test################ ");
        while(1)
        {
            printf("adc = %d ",read_adc(0));
            delay(0x100000);
        }
    }
    通过一个while循环不断的读取通道0经过adc转换的值,核心函数是read_adc(),它主要包括5个步骤:
    第一步 设置时钟。
    相关代码如下:
    TSADCCON0 = (1<<16)|(1 << 14) | (65 << 6);
    首先使用12bit adc,然后使能分频,最后设置分频系数为66。

    image
    第二步 选择通道。
    代码如下:
    ADCMUX = 0; //设置寄存器ADCMUX,选择通道0。
    第三步 启动转换。
    代码如下:
    TSADCCON0 |= (1 << 0);
    while (TSADCCON0 & (1 << 0));
    首先设置寄存器TSADCCON0的bit[0],启动A/D转换,然后读bit[0]以确定转换已经启动。
    第四步 检查转换是否完成。
    代码如下:
    while (!(TSADCCON0 & (1 << 15)) );
    读寄存器TsdACCON0的bit[15],当它为1时表示转换结束。
    第五步 读数据。
    代码如下:
    return (TsdATX0 & 0xfff);
    由于我们使用的12bit的模式,所以只读寄存器TsdATX0的前12bit。
    第三节 实验现象
    串口终端上会不断的打印出数字,数字的范围是0~4095,这是因为我们使用的是12bit的ADC。
    我们通过调节可变电阻可以改变ACD转换值。效果如下:

    image 

    详细代码下载链接:http://download.csdn.net/detail/klcf0220/6045033

  • 相关阅读:
    遇到的一道发散思维题C#
    SQLSERVER函数判断当天是星期几
    C# Web 获取客户端IP
    C# 月度进度条实现
    FileZilla Server的安装和设置
    SQL1428N 应用程序已与 "DB2" 连接,
    DB2客户端连接服务器
    IIS提示Execute Access Denied解决办法
    dom4j java.lang.NoClassDefFoundError: org/jaxen/JaxenException
    Oracle查看用户、用户权限、用户表空间、用户默认表空间
  • 原文地址:https://www.cnblogs.com/klcf0220/p/3208794.html
Copyright © 2020-2023  润新知