ADC_DMA测多通道时通道之间会影响吗
<p><img src="data/attachment/forum/202412/17/201324yne6keurfkg6nkzi.png" alt="0f51ddf0-eb4c-40ee-a250-973dff66b1d3.png" title="0f51ddf0-eb4c-40ee-a250-973dff66b1d3.png" /></p><p>当我只开启15通道测得的电压是对的,但我同时开启10通道一起测时,原本15通道的值就不对了</p>
<p>10通道暂时是悬空的</p>
<p><img src="data/attachment/forum/202412/17/201738dnc0hzmp7922c56m.png" alt="QQ20241217-201715.png" title="QQ20241217-201715.png" /></p>
<p>在xdata创建两个数组,把数组地址赋值给DMA_ADC_RXA,测得的数组第二个值就是15通道的值,计算得到的电压不对,</p>
<p>但只测15通道,使用数组第一个值计算得到的电压是正确的</p>
<p><img src="data/attachment/forum/202412/17/203506aca35pqmebt3uei8.png" alt="image.png" title="image.png" /></p>
<p>不更改 <code>ADC_DMA 配置寄存器 2(DMA_ADC_CFG2)</code>的话,默认转换次数就是1,如果你使用int宽度的数组,那么第一通道就需要占用数组的0~2地址,第二个通道需要从数组的第三个下标开始取出</p>
<p>例如<code>ShuZu</code>这种形式,而不是是直接取出下一个。</p>
unsigned char xdata DMA_Buffer _at_ DMA_ADDR;
for(i=0;i<ADC_CH;i++)
{
ADC_Value=DMA_Buffer;
ADC_Value<<=8;
ADC_Value|=DMA_Buffer;
ADC_Value<<=8;
ADC_Value|=DMA_Buffer;
ADC_Value>>=4; //20bit结果右移4位得16位结果
}https://www.stcaimcu.com/forum.php?mod=redirect&goto=findpost&ptid=2537&pid=19963
王昱顺 发表于 2024-12-17 20:37
不更改 ADC_DMA 配置寄存器 2(DMA_ADC_CFG2)的话,默认转换次数就是1,如果你使用int宽度的数组,那么第 ...
转换一次不就各个通道取一次值吗,两个通道不就取了4个字节数据吗
为什么会有8字节数据 QQ624353765 发表于 2024-12-18 08:49
转换一次不就各个通道取一次值吗,两个通道不就取了4个字节数据吗
为什么会有8字节数据 ...
有硬件自动平均值和对应的通道号,上面的数据格式截图已经说明了具体的内容 王昱顺 发表于 2024-12-18 08:53
有硬件自动平均值和对应的通道号,上面的数据格式截图已经说明了具体的内容 ...
硬件取平均值每个通道都会有吗,也就是一个通道取一次就有5字节数据
<p>每个通道都会有</p>
<p>一个通道如果只转换一次的话,也是需要占用6个byte数据</p>
<p><img src="data/attachment/forum/202412/18/093331b1znk12kb7cq7ibk.png" alt="image.png" title="image.png" /></p>
页:
[1]