将外部Vref用于SAMD21 DAC

时间:2018-11-29 15:39:14

标签: atmel atmelstudio asf samd21

我使用SAMD21 Xplained板。我运行了Atmel Studio提供的DAC示例:DAC_QUICKSTART1

在示例(dac_feature.h)随附的头文件中,我具有以下枚举:

enum dac_reference {
    /** 1V from the internal band-gap reference*/
    DAC_REFERENCE_INT1V = DAC_CTRLB_REFSEL(0),
    /** Analog V<SUB>CC</SUB> as reference */
    DAC_REFERENCE_AVCC  = DAC_CTRLB_REFSEL(1),
    /** External reference on AREF */
    DAC_REFERENCE_AREF  = DAC_CTRLB_REFSEL(2),
};

最初,参考电压为内部1V电压。我想使用外部基准,以便DAC输出可以在0V至5V左右变化。

我的问题是:如何实际设置这些设置?

在同一文件-dac_feature.h中,有以下结构:

struct dac_config {
    /** Reference voltage */
    enum dac_reference reference;
    /** Select DAC output */
    enum dac_output output;
    /** Left adjusted data */
    bool left_adjust;
    /** GCLK generator used to clock the peripheral */
    enum gclk_generator clock_source;
#ifdef FEATURE_DAC_DATABUF_WRITE_PROTECTION
    /** Bypass DATABUF write protection */
    bool databuf_protection_bypass;
#endif
    /** Voltage pump disable */
    bool voltage_pump_disable;
    /**
     * The DAC behaves as in normal mode when the chip enters STANDBY sleep
     * mode
     */
    bool run_in_standby;
#if (SAMC21)
    /** Dither mode enable data */
    bool dither_mode;
#endif
};

在此创建了一个称为引用的dac_reference实例。我以为这是完成的工作,但是我仍然不确定如何做。

任何帮助表示赞赏。

1 个答案:

答案 0 :(得分:0)

可以在struct dac_config中定义DAC的配置,然后将其用作dac_init()的参数。 enum dac_reference定义了dac_config.reference可以设置的可能值。

// DAC abstraction struct
struct dac_module dac_instance;

// DAC parameter struct
struct dac_config config_dac;

// initialize to defaults
dac_get_config_defaults(&config_dac);

// set DAC reference to AREF
config_dac.reference = DAC_REFERENCE_AREF;

// use parameters set above to initialize DAC hardware
dac_init(&dac_instance, DAC, &config_dac);

以上几行以及更多详细信息,可以在第9.1章的application note AT03244中找到。