倔强红军 发表于 2020-6-2 09:14:08

adc多通道采集数据错位

各位技术们,最近做adc多通道采样,发现采样的数据错位了,而且好像还是高低位错位了,不知道问题出在哪,还希望哥哥们指导一下。程序以及实验数据已上传,数据发送格式是8位da采集值+一个8位数据+0x0d0x0a

wenyangzeng 发表于 2020-6-2 09:52:38

从发送的数据量看是奇数,串口发送时漏了第一个字节的数据。查查发送代码的BUG

倔强红军 发表于 2020-6-2 11:15:10

wenyangzeng 发表于 2020-6-2 09:52
从发送的数据量看是奇数,串口发送时漏了第一个字节的数据。查查发送代码的BUG ...

应该不会吧,我数据数组就设置了16位大小,如果漏了数据那我前16位中应该有一个值是00的呀,我数据发送是这样的:
voidDMA1_Channel1_IRQHandler(void)
{
        u8i=0;
if(DMA_GetITStatus(DMA1_IT_TC1)!=RESET)
        {       

                if(MYDMA_Enable_flag==1)
                {
                for(i=0;i<16;i++)
                        {
                       USART_SendData(USART1, AD_VStoregy.AD_B_Value);//Ïò´®¿Ú1·¢ËÍÊý¾Ý
                       while(USART_GetFlagStatus(USART1,USART_FLAG_TC)!=SET);//µÈ´ý·¢ËͽáÊø
                        }       
                        Logic_value=logic_IO_Read();
                        for(i=0;i<3;i++)
                        {
                       USART_SendData(USART1, Logic_value);//Ïò´®¿Ú1·¢ËÍÊý¾Ý
                       while(USART_GetFlagStatus(USART1,USART_FLAG_TC)!=SET);//µÈ´ý·¢ËͽáÊø
                        }
                        MYDMA_Enable_flag=0;
          }               
        }
        ADC_SoftwareStartConvCmd(ADC1, ENABLE);
        DMA_ClearITPendingBit(DMA1_IT_TC1);
}

MrJiu 发表于 2020-6-2 13:02:45

直接使用STM32Cube配置,他不香么?;P;P;P

wenyangzeng 发表于 2020-6-2 13:11:05

倔强红军 发表于 2020-6-2 11:15
应该不会吧,我数据数组就设置了16位大小,如果漏了数据那我前16位中应该有一个值是00的呀,我数据发送是 ...
楼主的贴图是19个数据,扣除0D 0A,还有17个数据是单数呀!STM32的12位ADC每个数据需要2个字节。3楼贴出的代码是DMA处理,但是串行发送19个数据就肯定有问题的。

倔强红军 发表于 2020-6-2 16:31:35

wenyangzeng 发表于 2020-6-2 13:11
楼主的贴图是19个数据,扣除0D 0A,还有17个数据是单数呀!STM32的12位ADC每个数据需要2个字节。3楼贴出的 ...

是这样的,哥.我是这样采集数据的:我用了一个联合体来存储采集数据并用串口发送
union   AD_values      
{
   uint16_t   AD_A_Value;
   uint8_tAD_B_Value;
} AD_VStoregy;
其中 uint16_t   AD_A_Value;是我8个adc采集通道的采集数据缓存,然后   uint8_tAD_B_Value;
是我串口发送的数据,应为联合体共用一段内存,所以我只是把采集到的16位ad数值按8位发送,这个应该不会丢失数据吧,我觉得。

倔强红军 发表于 2020-6-2 16:33:15

MrJiu 发表于 2020-6-2 13:02
直接使用STM32Cube配置,他不香么?

听说过有这么个软件,但是一直使用keil习惯了,:lol,谢谢大哥

倔强红军 发表于 2020-6-2 16:34:32

wenyangzeng 发表于 2020-6-2 13:11
楼主的贴图是19个数据,扣除0D 0A,还有17个数据是单数呀!STM32的12位ADC每个数据需要2个字节。3楼贴出的 ...

哥哥我ad数据就前面的16哥数据后面三位是帧尾

butterflyspring 发表于 2020-6-9 16:27:26

建议楼主调试一下看呗,看看转换结果,搬运后结果,这样更容易就发现问题所在了:)
页: [1]
查看完整版本: adc多通道采集数据错位