yangjiaxu 发表于 2020-12-27 23:39

【CH579M-R1】小试牛刀之ADC遇到的问题

本帖最后由 yangjiaxu 于 2020-12-27 23:41 编辑

<p>感觉最近的进度有些慢了,近期应该加速了。最近疫情可能有些严重了,愿各位朋友都保护好自己,注意身体。</p>

<p>今天抽些时间把当时要做的项目分解一下,就搞了段ADC采样的代码,也是从例程里扒出来的。使用定时器,1秒采样20次。</p>

<p>部分代码如下:</p>

<pre>
<code>void TMR0_IRQHandler( void )      // TMR0 定时中断
{
        UINT8 i;
    signed shortRoughCalib_Value = 0;                // ADC粗调偏差值
       
    if( TMR0_GetITFlag( TMR0_3_IT_CYC_END ) )
    {
      TMR0_ClearITFlag( TMR0_3_IT_CYC_END );      // 清除中断标志
                                /* 单通道采样:选择adc通道9做采样,对应 PA0引脚, 带数据校准功能 */   
                                PRINT( "\n2.Single channel sampling...\n");
                                GPIOA_ModeCfg(GPIO_Pin_0, GPIO_ModeIN_Floating);
                                ADC_ExtSingleChSampInit( SampleFreq_4, ADC_PGA_0 );
                                ADC_ChannelCfg( 9 );      
                                for(i=0; i&lt;20; i++)
                                {
                                                abcBuff = ADC_ExcutSingleConver() + RoughCalib_Value;      // 连续采样20次
                                                ADC_DataCalib_Fine( &amp;abcBuff, ADC_PGA_0 );
                                }
                                for(i=0; i&lt;20; i++)
                                {
                                                PRINT("%d ", abcBuff);
                                }PRINT("\n");
                                               
    }
}</code></pre>

<p><i><i><i>代码可以正常运行,不过采样有误差。比如我接 3.3V的电源,采样得到的数据是4045.</i></i></i></p>

<p><i><i><i></i></i></i></p>

<p><i><i><i>接GND的时候理论上是0,不过实际是54。</i></i></i></p>

<p><i><i><i></i></i></i></p>

<p><i><i><i>不知道这块应该怎么解决,是不是我操作的问题,还是硬件的参考电压或者模拟部分有问题。今天就困扰我一下吧。暂时还没有找到问题。</i></i></i></p>

<p><i><i><i>&nbsp;</i></i></i></p>

littleshrimp 发表于 2020-12-28 09:03

<p>看看手册,ADC有没有校准功能</p>

w494143467 发表于 2020-12-28 09:28

<p>是不是需要公式转换?这应该是10位ADC吧?</p>

freebsder 发表于 2020-12-29 22:39

<p>应该是0才对,我用过不少片子,没有印象接GND不是0,至少接近0</p>

yangjiaxu 发表于 2020-12-30 15:14

本帖最后由 yangjiaxu 于 2020-12-30 23:01 编辑

<div class="quote">
<blockquote><font size="2"><a href="forum.php?mod=redirect&amp;goto=findpost&amp;pid=3033565&amp;ptid=1153278" target="_blank"><font color="#999999">littleshrimp 发表于 2020-12-28 09:03</font></a></font> 看看手册,ADC有没有校准功能</blockquote>
</div>

<p>有校准,不过应该不是这个问题,我去问了网上的技术支持,我今晚回去试试,说需要将PA5悬空,并且巴拉巴拉的我给忘记了,哈哈哈哈,不过我回家看看记录就记得了,后续补贴,把问题说明</p>

yangjiaxu 发表于 2020-12-30 15:15

<div class="quote">
<blockquote><font size="2"><a href="forum.php?mod=redirect&amp;goto=findpost&amp;pid=3034077&amp;ptid=1153278" target="_blank"><font color="#999999">freebsder 发表于 2020-12-29 22:39</font></a></font> 应该是0才对,我用过不少片子,没有印象接GND不是0,至少接近0</blockquote>
</div>

<p>是的,按理来说是0 实际并不是 感觉是我没操作好吧,我今晚回去尝试着按网上技术支持的方法改改</p>

freebsder 发表于 2020-12-30 18:44

<p>用STM32生成一个最小ADC例程测测看CH579M-R1的3.3和0</p>

yangjiaxu 发表于 2020-12-30 22:57

<div class="quote">
<blockquote><font size="2"><a href="forum.php?mod=redirect&amp;goto=findpost&amp;pid=3033570&amp;ptid=1153278" target="_blank"><font color="#999999">w494143467 发表于 2020-12-28 09:28</font></a></font> 是不是需要公式转换?这应该是10位ADC吧?</blockquote>
</div>

<p>手册写是12位的ADC,不过问题解决了 ,是我自己搞错了</p>

yangjiaxu 发表于 2020-12-30 22:59

<p>经过技术人员的指点,是我自己失误导致出现了这个尴尬的事情,最后,把增益调整一下就好。</p>

<p></p>

yangjiaxu 发表于 2020-12-30 23:01

littleshrimp 发表于 2020-12-28 09:03
看看手册,ADC有没有校准功能

<p>是我自己搞错了,使用了校准,还多算了一次增益,去掉之后完全正常,感谢您的提示。</p>

w494143467 发表于 2020-12-30 23:44

yangjiaxu 发表于 2020-12-30 22:57
w494143467 发表于 2020-12-28 09:28 是不是需要公式转换?这应该是10位ADC吧?


手册写是12位的ADC ...

<p>哈哈我也算错了,确实是12位的ADC。</p>

程英茂 发表于 2024-10-11 07:46

yangjiaxu 发表于 2020-12-30 22:59
经过技术人员的指点,是我自己失误导致出现了这个尴尬的事情,最后,把增益调整一下就好。

<p>具体讲讲吧,我还不明白</p>
页: [1]
查看完整版本: 【CH579M-R1】小试牛刀之ADC遇到的问题