swzswz 发表于 2025-1-8 23:33

【Follow me第二季第3期】扩展任务:控制DAC输出

<p>本项目由于没有示波器,故不能进行演示,而且在默认的样例中给了DAC的工程,这里就详细进行解释。</p>

<p><span style="font-size:24px;">一、DAC工程目的</span></p>

<p>该项目使用 ADC 初始化并演示了瑞萨 RA MCU 上的 DAC 模块。用户可以输入允许范围内的 DAC 值(0-4095),转换后的输出将作为 ADC 通道 0 的输入。ADC 输出值打印在 RTT JlinkViewer 上。</p>

<p>硬件连接:将 P014(DAC 输出)连接到 P000(ADC 通道 0)。</p>

<p><span style="font-size:24px;">二、代码解释</span></p>

<p>主函数实现流程,先设置参考电压电路控制寄存器,即ADC引脚的寄存器,之后校准 RA2A1 板的 ADC,通过adc_start_calibration函数确定ADC返回状态,加入一个判断,对返回的状态进行判断,如果不是错误代码,就进行ADC和DAC初始化,如果没有错误,就可以进行DA的初始值输入,即输入0-4095之间的值,而后在DAC连接的通道会进行数值的波形显示,同时在RTT的终端进行数值显示。</p>

<pre>
<code class="language-cpp">#if (defined BOARD_RA2A1_EK) || (defined BOARD_RA6T2_MCK)
    /* Set Reference Voltage Circuit Control register */
    R_ADC0-&gt;VREFAMPCNT |= ((VREFADCG_VALUE) | (VREFADCG_ENABLE));

    /* Calibrate the ADC for RA2A1 board */
    err = adc_start_calibration ();
    /* handle error */
    if (FSP_SUCCESS != err)
    {
      adc_deinit();
      dac_deinit();
      /* ADC Failure message */
      APP_ERR_PRINT("** ADC Calibrate API failed ** \r\n");
      APP_ERR_TRAP(err);
    }
#endif</code></pre>

<p>这里分别是ADC和DAC的初始化函数声明,分别调用其API,并对返回状态进行判断。</p>

<pre>
<code class="language-cpp">static void adc_deinit(void)
{
    fsp_err_t err = FSP_SUCCESS;

    /* Close ADC module */
#if defined (BOARD_RA6T2_MCK)
    err = R_ADC_B_Close(&amp;g_adc_ctrl);
#else
    err = R_ADC_Close(&amp;g_adc_ctrl);
#endif
    /* Handle error */
    if (FSP_SUCCESS != err)
    {
      /* ADC Close failure message */
      APP_ERR_PRINT("** ADC Close API failed **\r\n");
    }
}</code></pre>

<pre>
<code class="language-cpp">static void dac_deinit(void)
{
    fsp_err_t err = FSP_SUCCESS;

    /* Close DAC module */
    err = R_DAC_Close(&amp;g_dac_ctrl);
    /* Handle error */
    if (FSP_SUCCESS != err)
    {
      /* DAC Close failure message */
      APP_ERR_PRINT("** DAC Close API failed **\r\n");
    }
}</code></pre>

<p>APP_PRINT是其默认的打印函数,当调用没问题之后,就可以直接用其打印输出的值。</p>

<p>这个过程就是全DAC项目的实现流程,由于没有示波器,故不能进行演示。</p>

Jacktang 发表于 2025-1-11 09:58

<p>当调用没问题之后,就可以直接用其打印输出的值。</p>

<p>打印输出的值正确吧</p>

swzswz 发表于 2025-1-13 18:45

Jacktang 发表于 2025-1-11 09:58
当调用没问题之后,就可以直接用其打印输出的值。

打印输出的值正确吧

<p>对的,你可以试试</p>
页: [1]
查看完整版本: 【Follow me第二季第3期】扩展任务:控制DAC输出