发新帖我要提问
12
返回列表
打印

STM32的ADC通过DMA传送数据丢失了8位

[复制链接]
楼主: siabc
手机看帖
扫描二维码
随时随地手机跟帖
21
andyjian| | 2013-10-27 20:46 | 只看该作者 回帖奖励 |倒序浏览
应该是数据类型的问题,大哥

使用特权

评论回复
22
LSQHHH| | 2013-10-28 12:23 | 只看该作者
初始化改成这样试试
DMA_Configuration();
ADC_Configuration();

使用特权

评论回复
23
siabc|  楼主 | 2013-10-28 14:56 | 只看该作者
LSQHHH 发表于 2013-10-28 12:23
初始化改成这样试试
DMA_Configuration();
ADC_Configuration();

改了,还是不行

使用特权

评论回复
24
香水城| | 2013-10-28 15:15 | 只看该作者
LZ,你调了两周,有没有试过ST官方标准外设固件库中的ADC DMA例程呢?

使用特权

评论回复
25
siabc|  楼主 | 2013-10-28 17:02 | 只看该作者
香水城 发表于 2013-10-28 15:15
LZ,你调了两周,有没有试过ST官方标准外设固件库中的ADC DMA例程呢?

没有啊,请问哪里有下载的,太感谢了,又让我看到了希望

使用特权

评论回复
26
siabc|  楼主 | 2013-12-8 09:14 | 只看该作者
ticomi 发表于 2013-10-17 07:31
我使用的DMA采集是正常的,前提是在ADC转换完成启动DMA期间必须关中断!

你好,可否把你成功的程序给我参考参考呢?十分感谢

使用特权

评论回复
27
ticomi| | 2013-12-8 13:56 | 只看该作者
siabc 发表于 2013-12-8 09:14
你好,可否把你成功的程序给我参考参考呢?十分感谢

DMA_Stucture.DMA_MemoryBaseAddr=(u32)&AD_Data;//内存地址
内存地址还是改为增加吧,不然每次采集都往一个地址存储怎么看出有多个数据采集进来呢?把内存地址改为自动增加试试!!

使用特权

评论回复
28
ahuzjh| | 2013-12-8 15:38 | 只看该作者
我是来学习经验的,不知道大神说的STM32的DMA不靠谱可是真的。

使用特权

评论回复
29
siabc|  楼主 | 2013-12-9 08:47 | 只看该作者
ticomi 发表于 2013-12-8 13:56
DMA_Stucture.DMA_MemoryBaseAddr=(u32)&AD_Data;//内存地址
内存地址还是改为增加吧,不然每次采集都往 ...

出来了,还是谢谢你。不是内存地址的问题而是DMA数据宽度写错了,两个都写了MEMERY一个是外设的,先写了寄存器才把这个找出了,现在两眼冒星:sleepy:

使用特权

评论回复
30
momingwei| | 2013-12-11 15:04 | 只看该作者
DMA_Stucture.DMA_PeripheralDataSize=DMA_MemoryDataSize_HalfWord; //外设数据为16位
DMA_Stucture.DMA_MemoryDataSize=DMA_MemoryDataSize_HalfWord;//从外设读到内存的数据的长度为两个字节16位

第一个不对吧

使用特权

评论回复
31
momingwei| | 2013-12-11 15:05 | 只看该作者
DMA_Stucture.DMA_PeripheralDataSize=DMA_MemoryDataSize_HalfWord; //外设数据为16位
DMA_Stucture.DMA_MemoryDataSize=DMA_MemoryDataSize_HalfWord;//从外设读到内存的数据的长度为两个字节16位

第一个不对吧

使用特权

评论回复
32
739141300| | 2014-11-11 14:36 | 只看该作者
问题的根源在于:开开启DMA传输前,还要先发出DMA请求

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则