导航: 老古网老古论坛XMOS公共讨论区XMOS开源项目区单片机程序设计嵌入式系统广告区域
→[转帖]如何配置U和A设备的ADC?[liufengzhong]

 *第36021篇: [转帖]如何配置U和A设备的ADC?

  
楼 主:liufengzhong 2014年8月19日12:01
 [转帖]如何配置U和A设备的ADC?
如何配置U和A设备的ADC?

回答:

ADC本身记录在每个部分的xCORE-USB数据表((U)&type=datasheet).但是,该文档并不一定提供足够的信息来使用它。

sc_periph库提供一个抽象层来使它可以简单的使用ADCs。寻找这个如何工作的最好的地方中的app_adc_demo_u示例应用程序

希望看那个如何工作可以回答你的问题。首先,它可以配置和启用的ADC:

adc_config_t adc_config = { { 0, 0, 0, 0, 0, 0, 0, 0 }, 0, 0, 0 };

在此情况下只ADC 0启用:

adc_config.input_enable[0] = 1;

ADC的精度被设置为每个样本32位。它可以被配置为每样品8中,16位或32位。另外,ADC的精度是唯一的12位,无论如何,所以如果使用32位的而不是16位样本,返回的值的准确度不会有任何提高。

adc_config.bits_per_sample = ADC_32_BPS;

该ADC将提供样本块(包)。传递的数据总是与每个活动ADC的一个样本序列。

adc_config.samples_per_packet = 1;

如果你要启用的ADC 0和ADC 1,保持samples_per_packet那么每个数据包都会交替返回数据的ADC 0,则ADC的1,那么ADC 0,依此类推。如果配置samples_per_packet为2,则每一个数据包将包含来自ADC的0和1,从ADC 1的样本,在一分钟内我们可以看到这是如何读
 
该ADC具有其中的ADC连接到0.8V校准模式参考电压。

adc_config.calibration_mode = 0;

最后,一个呼叫,以使模数转换器。这个调用需要照顾,有ADC需要一些校准样品是准备使用之前的事实。

adc_enable(xs1_su,C,trigger_port,adc_config)

之后,该库提供了使用ADC的方法有两种: 
- adc_trigger / adc_read
- adc_trigger_packet / adc_read_packet

示例应用程序使用这些中的第二。它首先通过触发一个数据包的过程中要阅读:

adc_trigger_packet(trigger_port, adc_config);

然后在应用程序的其余部分是从触发处理数据,并定期打印当前ADC值:

while (1)
    {
        unsigned data[1];
        select
        {
            case print_timer when timerafter(print_time) :>   void:
                if (new_value != current_value)
                {
                    debug_printf("ADC value: 0x%x\n", new_value);
                    current_value = new_value;
                }
                print_time += PRINT_PERIOD;
                break;
 
            case adc_read_packet(c, adc_config, data):
                new_value = data[0];
                adc_trigger_packet(trigger_port, adc_config);
                break;
        }
    }

数据包被接收下一个数据包被触发各一次。 只有一个ADC触发销它会导致下一活跃ADC来读取样品。他们工作在一个循环方式。
 



>>>>>>对该主题发表你的看法

本主题贴数1,分页: [第1页]


[上一篇主题]:[转帖]如何开始使用startKIT?

[下一篇主题]:[转帖]以太网协议开发什么是合适的kit?