完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
电子发烧友论坛|
最近在使用多重ADC+DMA时出现了一个奇怪的BUG,ADC和DMA采集的数据很正常,是我想要的波形,但是一旦把DMA的缓存数据copy到另外数组的时候,就出错,具体如下:用串口来把ADC采样得到的数据发送出来,当串口收到任意东西时,就开启发送,其中adcx是储存AD转换数据的数组,也是DMA的内存目标,串口代码如下:
void USART1_IRQHandler(void) { u8 Res; u16 i; u16 j; float a[512]; volatile float temp; extern volatile u16 adcx[256][6]; #if SYSTEM_SUPPORT_OS OSIntEnter(); #endif if(USART_GetFlagStatus(USART1,USART_FLAG_RXNE)) { for(j=0;j<256;j++) { printf("%drn",adcx[j][0]); } TIM_Cmd(TIM2,ENABLE); Res= USART_ReceiveData(USART1); } #if SYSTEM_SUPPORT_OS OSIntExit(); #endif } 到这里一切正常,输出出来的就是我想要的ad数据,但是因为我要把adcx的部分数据提取出来做FFT,所以需要复制部分数据到另外的数组float a[512],所以又加了端代码在for的下边 先将adcx储存的u16数据转化成float,然后打印出来看是否正确,然后把数据转移到数组a,具体代码如下: for(j=0;j<256;j++) { temp=(float)(adcx[j][0]); printf("%d::%frn",j,temp); a[j]=temp ; } 结果串口出来了乱码,不是我期望的数据 我以为是从u16到float的转换出现了错误,我就把a[j]=temp ;这一句注释掉,相当于代码如下 for(j=0;j<256;j++) { temp=(float)(adcx[j][0]); printf("%d::%frn",j,temp); //a[j]=temp ; } 出来的结果就正常,依旧是正弦波,打印出来的也正常,打印出了完整的256个点 所以相当于是这样子的,AD采样没问题,DMA也没问题,数据也正常,数据类型转化也没问题,但是一旦把数据从adcx转移到另外的数组,就出现了错误,为什么?折腾一天了,跪求大神解答 |
|
相关推荐
2个回答
|
|
|
|
|
|
|
|
|
从描述中可以看出,当将DMA缓存数据复制到另一个数组时出错。这可能的原因有以下几点:
1. 数据长度不匹配:在复制数据时,可能源数组和目标数组的长度不匹配,导致数据溢出或部分数据丢失。 2. 复制位置错误:可能复制数据时源数组和目标数组的起始位置设置不正确,导致数据复制不完整或者复制错位。 3. 读写冲突:在复制数据时,可能存在读写冲突的情况,即同时对同一存储器进行读写操作,导致数据错误。 4. 数据类型转换错误:如果源数组和目标数组的数据类型不匹配,可能会导致数据被错误解释或转换,导致数据出错。 建议检查以上几点,尤其注意数据长度和复制位置的设置是否正确,并确保在复制过程中不会发生读写冲突。如果问题仍然存在,可以提供更详细的代码和错误信息,以便进行进一步的分析和帮助。 |
|
|
|
|
只有小组成员才能发言,加入小组>>
调试STM32H750的FMC总线读写PSRAM遇到的问题求解?
4130 浏览 1 评论
X-NUCLEO-IHM08M1板文档中输出电流为15Arms,15Arms是怎么得出来的呢?
3221 浏览 1 评论
2747 浏览 2 评论
STM32F030F4 HSI时钟温度测试过不去是怎么回事?
2175 浏览 2 评论
ST25R3916能否对ISO15693的标签芯片进行分区域写密码?
14939 浏览 2 评论
STM32仿真器是选择ST-LINK还是选择J-LINK?各有什么优势啊?
3084浏览 4评论
stm32f4下spi+dma读取数据不对是什么原因导致的?
1894浏览 3评论
STM32F0_TIM2输出pwm2后OLED变暗或者系统重启是怎么回事?
2064浏览 3评论
1976浏览 3评论
stm32cubemx生成mdk-arm v4项目文件无法打开是什么原因导致的?
2166浏览 3评论
/9
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2025-12-2 05:53 , Processed in 0.702008 second(s), Total 44, Slave 37 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191

淘帖
3915