OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 5058|回复: 2

ADC双通道采集的数据,经过DMA传输的内存中,然后保存到SD卡中。读取SD卡扇区中的只有一半数据。

[复制链接]

7

主题

24

帖子

0

精华

初级会员

Rank: 2

积分
76
金钱
76
注册时间
2014-10-22
在线时间
1 小时
发表于 2014-11-9 22:56:51 | 显示全部楼层 |阅读模式
5金钱
ADC双通道采集的数据,经过DMA传输的内存(buf[512]数组)中,然后保存到SD卡(没有文件系统,直接保存到SD卡的扇区)中,然后打印出SD卡扇区中的数据时,只有256个数据,剩余的256个数据全是0.但是我打印出内存中的数据是正确的512个数据。求解各位高手。。。

main()

#include <stm32f10x.h>
#include "sys.h"
#include "usart.h"
#include "delay.h"
#include "led.h" 
#include "key.h"
#include "exti.h"
#include "wdg.h"
#include "timer.h"
#include "lcd.h"   
#include "wkup.h"
#include "adc.h"
#include "dma.h"
#include "mmc_sd.h"
//Mini STM32开发板范例代码13
//ADC 实验
//正点原子@ALIENTEK
//技术论坛:www.openedv.com

u16 AD_Value[512];
u16 Send_buf_Ch0[512];
u16 Send_buf_Ch1[512];



int main(void)
{ u32 sector_size;
    u16 i;
// u8 t;

  SystemInit();//系统时钟设置
delay_init(72); //延时初始化
uart_init(9600); //串口1初始化  
Adc_Init();
MYDMA_Config(DMA1_Channel1,(u32)&ADC1->DR,(u32)AD_Value,512);   //DMA1通道1初始化配置      
MYDMA_Enable(DMA1_Channel1);   //开启DMA通道1
  LED_Init();
  KEY_Init();
LCD_Init();
POINT_COLOR=RED;//设置字体为红色   
LCD_ShowString(60,50,"Mini STM32");
LCD_ShowString(60,70,"SD Card TEST");
LCD_ShowString(60,90,"ATOM@ALIENTEK");
LCD_ShowString(60,110,"2011/1/1");  
while(SD_Initialize()!=0)//检测不到SD卡
{
LCD_ShowString(60,130,"SD Card Failed!");
delay_ms(500);
LCD_ShowString(60,130,"Please Check!      ");
delay_ms(500);
LED0=!LED0;//DS0闪烁
}
//检测SD卡成功    
LCD_ShowString(60,130,"SD Card Checked OK ");
sector_size=SD_GetSectorCount();
printf(" SD Sector Size:%x\n",sector_size);
LCD_ShowString(60,150,"SD Card Size:    Mb");
LCD_ShowNum(164,150,sector_size>>11,5,16);

while(DMA1->ISR&(1<<1))//等待通道1传输完成
   {
    DMA1->IFCR|=1<<1;  //清除传输完成标志
     for(i=0;i<512;i++)
{
Send_buf_Ch1=512;
}

SD_WriteDisk((u8*)Send_buf_Ch1,21,1);
      LCD_ShowString(60,170,"xie ru ok");
}

while(1){
if(SD_ReadDisk((u8*)Send_buf_Ch0,21,1)==0)//读取MBR扇区
{
LCD_ShowString(60,170,"USART1 Sending Data...");
printf("SECTOR 0 DATA:\n");
for(sector_size=0;sector_size<512;sector_size++)printf("%d ",Send_buf_Ch0[sector_size]);//打印MBR扇区数据       
printf("\nDATA ENDED\n");
LCD_ShowString(60,170,"USART1 Send Data Over!");
}

}


ADC-- DMA实验.zip

8.35 MB, 下载次数: 30198

正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2014-11-9 23:51:01 | 显示全部楼层
回复

使用道具 举报

3

主题

23

帖子

0

精华

初级会员

Rank: 2

积分
56
金钱
56
注册时间
2012-7-21
在线时间
0 小时
发表于 2015-8-4 17:00:22 | 显示全部楼层
话说,dma的内存地址会自动增加吗?我的这么只在第一位有数据,其他的都写不进数据,楼主可否知道。
最好的生活状态莫过于,你在你的青春年纪傻逼地为了理想坚持过,最后回到平淡用现实的方法让自己生活下去!!!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-6-18 22:51

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表