【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<20; i++)
{
abcBuff = ADC_ExcutSingleConver() + RoughCalib_Value; // 连续采样20次
ADC_DataCalib_Fine( &abcBuff, ADC_PGA_0 );
}
for(i=0; i<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> </i></i></i></p>
<p>看看手册,ADC有没有校准功能</p> <p>是不是需要公式转换?这应该是10位ADC吧?</p>
<p>应该是0才对,我用过不少片子,没有印象接GND不是0,至少接近0</p>
本帖最后由 yangjiaxu 于 2020-12-30 23:01 编辑
<div class="quote">
<blockquote><font size="2"><a href="forum.php?mod=redirect&goto=findpost&pid=3033565&ptid=1153278" target="_blank"><font color="#999999">littleshrimp 发表于 2020-12-28 09:03</font></a></font> 看看手册,ADC有没有校准功能</blockquote>
</div>
<p>有校准,不过应该不是这个问题,我去问了网上的技术支持,我今晚回去试试,说需要将PA5悬空,并且巴拉巴拉的我给忘记了,哈哈哈哈,不过我回家看看记录就记得了,后续补贴,把问题说明</p>
<div class="quote">
<blockquote><font size="2"><a href="forum.php?mod=redirect&goto=findpost&pid=3034077&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>
<p>用STM32生成一个最小ADC例程测测看CH579M-R1的3.3和0</p>
<div class="quote">
<blockquote><font size="2"><a href="forum.php?mod=redirect&goto=findpost&pid=3033570&ptid=1153278" target="_blank"><font color="#999999">w494143467 发表于 2020-12-28 09:28</font></a></font> 是不是需要公式转换?这应该是10位ADC吧?</blockquote>
</div>
<p>手册写是12位的ADC,不过问题解决了 ,是我自己搞错了</p>
<p>经过技术人员的指点,是我自己失误导致出现了这个尴尬的事情,最后,把增益调整一下就好。</p>
<p></p>
littleshrimp 发表于 2020-12-28 09:03
看看手册,ADC有没有校准功能
<p>是我自己搞错了,使用了校准,还多算了一次增益,去掉之后完全正常,感谢您的提示。</p>
yangjiaxu 发表于 2020-12-30 22:57
w494143467 发表于 2020-12-28 09:28 是不是需要公式转换?这应该是10位ADC吧?
手册写是12位的ADC ...
<p>哈哈我也算错了,确实是12位的ADC。</p>
yangjiaxu 发表于 2020-12-30 22:59
经过技术人员的指点,是我自己失误导致出现了这个尴尬的事情,最后,把增益调整一下就好。
<p>具体讲讲吧,我还不明白</p>
页:
[1]