OpenEdv-开源电子网

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

为什么SD卡例程里边,把读0扇区改为读n扇区以后,串口接收到的还是0扇区的内容?

[复制链接]

2

主题

2

帖子

0

精华

新手入门

积分
30
金钱
30
注册时间
2015-10-13
在线时间
0 小时
发表于 2015-10-13 20:11:56 | 显示全部楼层 |阅读模式
5金钱

如图所示,用winhex看到SD卡的0扇区:





串口收的数据如下:





可以看到,串口发送的还是扇区0的数据,但是例程中读扇区的参数我已经修改,如下:

MSR



#include "led.h"
#include "usart.h"
#include "lcd.h"
#include "key.h"
#include "malloc.h" 
#include "MMC_SD.h"



//读取SD卡的指定扇区的内容,并通过串口1输出
//sec:扇区物理地址编号
void SD_Read_Sectorx(u32 sec)
{
 u8 *buf;
 u16 i;
 buf=mymalloc(512);    //申请内存
 if(SD_ReadDisk(buf,sec,1)==0) //读取648扇区的内容
 { 
  LCD_ShowString(60,190,200,16,16,"Sending Data...");
  printf("SECTOR 648 DATA:\r\n");
  for(i=0;i<512;i++)          
  {
   printf("%x ",buf);//打印出来的就是16进制,注意就不要再在接收时用16进制显示了       
   delay_ms(10); 
  } 
   
   printf("\r\nDATA ENDED\r\n");
  LCD_ShowString(60,190,200,16,16,"USART1 Send Data Over!");
 }
 myfree(buf);//释放内存 
}
 


 int main(void)
 {
 u8 key;  
 u32 sd_size;
  NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);// 设置中断优先级分组2
 delay_init();       //延时函数初始化  
 uart_init(9600);   //串口初始化为9600
 LED_Init();      //初始化与LED连接的硬件接口
 LCD_Init();       //初始化LCD 
  KEY_Init();    //按键初始化 
  mem_init();    //初始化内存池 
  OINT_COLOR=RED;//设置字体为红色
 LCD_ShowString(60,50,200,16,16,"Mini STM32"); 
 LCD_ShowString(60,70,200,16,16,"SD CARD TEST"); 
 LCD_ShowString(60,90,200,16,16,"ATOM@ALIENTEK");
 LCD_ShowString(60,110,200,16,16,"2014/3/13"); 
 LCD_ShowString(60,130,200,16,16,"KEY0:Read Sector 0");   
  while(SD_Initialize())//检测不到SD卡
 {
  LCD_ShowString(60,150,200,16,16,"SD Card Error!");
  delay_ms(500);     
  LCD_ShowString(60,150,200,16,16,"Please Check! ");
  delay_ms(500);
  LED0=!LED0;//DS0闪烁
 }
  OINT_COLOR=BLUE;//设置字体为蓝色
 //检测SD卡成功               
 LCD_ShowString(60,150,200,16,16,"SD Card OK    ");
 LCD_ShowString(60,170,200,16,16,"SD Card Size:     MB");
 sd_size=SD_GetSectorCount();//得到扇区数
 LCD_ShowNum(164,170,sd_size>>11,5,16);//显示SD卡容量
while(1){
 
    key=KEY_Scan(0);
  if(key==KEY0_PRES)  
  {
    /*   ****      SD读数据               */ 
  SD_Read_Sectorx(cnt);//KEY0按,读取SD卡扇区648的内容

  }      
 }
}

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

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2015-10-13 21:41:32 | 显示全部楼层
好好查代码.
另外2个扇区的数据很可能十分相似的.
你要512字节全部对比,才能看出区别.
当然,如果全是0,那就不好对比了.有可能2个扇区数据就是一样.
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-7-18 23:27

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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