271 lines
5.9 KiB
C
271 lines
5.9 KiB
C
|
|
#include "sys.h"
|
|||
|
|
#include "delay.h"
|
|||
|
|
#include "usart.h"
|
|||
|
|
#include "led.h"
|
|||
|
|
#include "key.h"
|
|||
|
|
|
|||
|
|
#include "LCD.h"
|
|||
|
|
#include "Dis_Picture.h"
|
|||
|
|
#include "Text.h"
|
|||
|
|
#include "GBK_LibDrive.h"
|
|||
|
|
|
|||
|
|
|
|||
|
|
#include "mpu.h"
|
|||
|
|
#include "malloc.h"
|
|||
|
|
#include "w25qxx.h"
|
|||
|
|
#include "sdmmc_sdcard.h"
|
|||
|
|
|
|||
|
|
/********************************************************/
|
|||
|
|
//SD<53><44> ʵ<><CAB5>
|
|||
|
|
|
|||
|
|
//STM32H7<48><37><EFBFBD><EFBFBD>ģ<EFBFBD><C4A3>-HAL<41>⺯<EFBFBD><E2BAAF><EFBFBD>汾
|
|||
|
|
//DevEBox <20><>Խ<EFBFBD><D4BD><EFBFBD><EFBFBD>
|
|||
|
|
//<2F>Ա<EFBFBD><D4B1><EFBFBD><EFBFBD>̣<EFBFBD>mcudev.taobao.com
|
|||
|
|
//<2F>Ա<EFBFBD><D4B1><EFBFBD><EFBFBD>̣<EFBFBD>shop389957290.taobao.com
|
|||
|
|
|
|||
|
|
/********************************************************/
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
//ͨ<><CDA8><EFBFBD><EFBFBD><EFBFBD>ڴ<EFBFBD>ӡSD<53><44><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ
|
|||
|
|
void show_sdcard_info(void)
|
|||
|
|
{
|
|||
|
|
switch(SDCardInfo.CardType)
|
|||
|
|
{
|
|||
|
|
case STD_CAPACITY_SD_CARD_V1_1:
|
|||
|
|
printf("Card Type:SDSC V1.1\r\n");
|
|||
|
|
break;
|
|||
|
|
case STD_CAPACITY_SD_CARD_V2_0:
|
|||
|
|
printf("Card Type:SDSC V2.0\r\n");
|
|||
|
|
break;
|
|||
|
|
case HIGH_CAPACITY_SD_CARD:
|
|||
|
|
printf("Card Type:SDHC V2.0\r\n");
|
|||
|
|
break;
|
|||
|
|
case MULTIMEDIA_CARD:
|
|||
|
|
printf("Card Type:MMC Card\r\n");
|
|||
|
|
break;
|
|||
|
|
}
|
|||
|
|
printf("Card ManufacturerID:%d\r\n",SDCardInfo.SD_cid.ManufacturerID); //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ID
|
|||
|
|
printf("Card RCA:%d\r\n",SDCardInfo.RCA); //<2F><><EFBFBD><EFBFBD><EFBFBD>Ե<EFBFBD>ַ
|
|||
|
|
printf("Card Capacity:%d MB\r\n",(u32)(SDCardInfo.CardCapacity>>20)); //<2F><>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD>
|
|||
|
|
printf("Card BlockSize:%d\r\n\r\n",SDCardInfo.CardBlockSize); //<2F><>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD>С
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
|
|||
|
|
/********************************************************/
|
|||
|
|
//<2F><><EFBFBD><EFBFBD>SD<53><44><EFBFBD>Ķ<EFBFBD>ȡ
|
|||
|
|
//<2F><>secaddr<64><72>ַ<EFBFBD><D6B7>ʼ,<2C><>ȡseccnt<6E><74><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
//secaddr:<3A><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ַ
|
|||
|
|
//seccnt:<3A><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
|
|||
|
|
//STM32H7<48><37><EFBFBD><EFBFBD>ģ<EFBFBD><C4A3>-HAL<41>⺯<EFBFBD><E2BAAF><EFBFBD>汾
|
|||
|
|
//DevEBox <20><>Խ<EFBFBD><D4BD><EFBFBD><EFBFBD>
|
|||
|
|
//<2F>Ա<EFBFBD><D4B1><EFBFBD><EFBFBD>̣<EFBFBD>mcudev.taobao.com
|
|||
|
|
//<2F>Ա<EFBFBD><D4B1><EFBFBD><EFBFBD>̣<EFBFBD>shop389957290.taobao.com
|
|||
|
|
|
|||
|
|
/********************************************************/
|
|||
|
|
|
|||
|
|
|
|||
|
|
void sd_test_read(u32 secaddr,u32 seccnt)
|
|||
|
|
{
|
|||
|
|
u32 i;
|
|||
|
|
u8 *buf;
|
|||
|
|
u8 sta=0;
|
|||
|
|
buf=mymalloc(SRAMIN,seccnt*512); //<2F><><EFBFBD><EFBFBD><EFBFBD>ڴ<EFBFBD>,<2C><>SDRAM<41><4D><EFBFBD><EFBFBD><EFBFBD>ڴ<EFBFBD>
|
|||
|
|
sta=SD_ReadDisk(buf,secaddr,seccnt);//<2F><>ȡsecaddr<64><72><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
if(sta==0)
|
|||
|
|
{
|
|||
|
|
printf("SECTOR %d DATA:\r\n",secaddr);
|
|||
|
|
for(i=0; i<seccnt*512; i++)printf("%x ",buf[i]); //<2F><>ӡsecaddr<64><72>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
printf("\r\nDATA ENDED\r\n");
|
|||
|
|
} else printf("err:%d\r\n",sta);
|
|||
|
|
myfree(SRAMIN,buf); //<2F>ͷ<EFBFBD><CDB7>ڴ<EFBFBD>
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
/********************************************************/
|
|||
|
|
//<2F><><EFBFBD><EFBFBD>SD<53><44><EFBFBD><EFBFBD>д<EFBFBD><D0B4>(<28><><EFBFBD><EFBFBD>,<2C><><EFBFBD><EFBFBD>дȫ<D0B4><C8AB>0XFF<46><46><EFBFBD><EFBFBD><EFBFBD><EFBFBD>,<2C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>SD<53><44>.)
|
|||
|
|
//<2F><>secaddr<64><72>ַ<EFBFBD><D6B7>ʼ,д<><D0B4>seccnt<6E><74><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
//secaddr:<3A><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ַ
|
|||
|
|
//seccnt:<3A><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
|
|||
|
|
//STM32H7<48><37><EFBFBD><EFBFBD>ģ<EFBFBD><C4A3>-HAL<41>⺯<EFBFBD><E2BAAF><EFBFBD>汾
|
|||
|
|
//DevEBox <20><>Խ<EFBFBD><D4BD><EFBFBD><EFBFBD>
|
|||
|
|
//<2F>Ա<EFBFBD><D4B1><EFBFBD><EFBFBD>̣<EFBFBD>mcudev.taobao.com
|
|||
|
|
//<2F>Ա<EFBFBD><D4B1><EFBFBD><EFBFBD>̣<EFBFBD>shop389957290.taobao.com
|
|||
|
|
|
|||
|
|
/********************************************************/
|
|||
|
|
|
|||
|
|
|
|||
|
|
void sd_test_write(u32 secaddr,u32 seccnt)
|
|||
|
|
{
|
|||
|
|
u32 i;
|
|||
|
|
u8 *buf;
|
|||
|
|
u8 sta=0;
|
|||
|
|
buf=mymalloc(SRAMIN,seccnt*512); //<2F><>SDRAM<41><4D><EFBFBD><EFBFBD><EFBFBD>ڴ<EFBFBD>
|
|||
|
|
for(i=0; i<seccnt*512; i++) //<2F><>ʼ<EFBFBD><CABC>д<EFBFBD><D0B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>,<2C><>3<EFBFBD>ı<EFBFBD><C4B1><EFBFBD>.
|
|||
|
|
{
|
|||
|
|
buf[i]=i*3;
|
|||
|
|
}
|
|||
|
|
sta=SD_WriteDisk(buf,secaddr,seccnt);//<2F><>secaddr<64><72><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʼд<CABC><D0B4>seccnt<6E><74><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
if(sta==0)
|
|||
|
|
{
|
|||
|
|
printf("Write over!\r\n");
|
|||
|
|
} else printf("err:%d\r\n",sta);
|
|||
|
|
myfree(SRAMIN,buf); //<2F>ͷ<EFBFBD><CDB7>ڴ<EFBFBD>
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
/********************************************************/
|
|||
|
|
//Main <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
|
|||
|
|
//STM32H7<48><37><EFBFBD><EFBFBD>ģ<EFBFBD><C4A3>-HAL<41>⺯<EFBFBD><E2BAAF><EFBFBD>汾
|
|||
|
|
//DevEBox <20><>Խ<EFBFBD><D4BD><EFBFBD><EFBFBD>
|
|||
|
|
//<2F>Ա<EFBFBD><D4B1><EFBFBD><EFBFBD>̣<EFBFBD>mcudev.taobao.com
|
|||
|
|
//<2F>Ա<EFBFBD><D4B1><EFBFBD><EFBFBD>̣<EFBFBD>shop389957290.taobao.com
|
|||
|
|
|
|||
|
|
/********************************************************/
|
|||
|
|
|
|||
|
|
|
|||
|
|
u8 tbuf[32];
|
|||
|
|
|
|||
|
|
int main(void)
|
|||
|
|
{
|
|||
|
|
u8 key;
|
|||
|
|
u32 sd_size;
|
|||
|
|
u8 t=0;
|
|||
|
|
u8 *buf;
|
|||
|
|
|
|||
|
|
Cache_Enable(); //<2F><><EFBFBD><EFBFBD>L1-Cache
|
|||
|
|
HAL_Init(); //<2F><>ʼ<EFBFBD><CABC>HAL<41><4C>
|
|||
|
|
Stm32_Clock_Init(160,5,2,4); //<2F><><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1>,400Mhz
|
|||
|
|
delay_init(400); //<2F><>ʱ<EFBFBD><CAB1>ʼ<EFBFBD><CABC>
|
|||
|
|
uart_init(115200); //<2F><><EFBFBD>ڳ<EFBFBD>ʼ<EFBFBD><CABC>
|
|||
|
|
|
|||
|
|
LED_Init(); //<2F><>ʼ<EFBFBD><CABC>LED
|
|||
|
|
KEY_Init(); //<2F><>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
|
|||
|
|
LCD_Init(); //<2F><>ʼ<EFBFBD><CABC>2.0<EFBFBD><EFBFBD> 240x320 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> LCD<43><44>ʾ
|
|||
|
|
GBK_Lib_Init(); //Ӳ<><D3B2>GBK<42>ֿ<EFBFBD><D6BF><EFBFBD>ʼ<EFBFBD><CABC>--(<28><><EFBFBD><EFBFBD>ʹ<EFBFBD>ò<EFBFBD><C3B2><EFBFBD><EFBFBD>ֿ<EFBFBD><D6BF><EFBFBD>Һ<EFBFBD><D2BA><EFBFBD><EFBFBD><EFBFBD>汾<EFBFBD><E6B1BE><EFBFBD>˴<EFBFBD><CBB4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Σ<EFBFBD><CEA3><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֿ<EFBFBD><D6BF><EFBFBD>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD>
|
|||
|
|
LCD_Clear(WHITE); //<2F><><EFBFBD><EFBFBD>
|
|||
|
|
|
|||
|
|
my_mem_init(SRAMIN); //<2F><>ʼ<EFBFBD><CABC><EFBFBD>ڲ<EFBFBD><DAB2>ڴ<EFBFBD><DAB4><EFBFBD>(AXI)
|
|||
|
|
// //my_mem_init(SRAMEX); //<2F><>ʼ<EFBFBD><CABC><EFBFBD>ⲿ<EFBFBD>ڴ<EFBFBD><DAB4><EFBFBD>(SDRAM)
|
|||
|
|
// my_mem_init(SRAM12); //<2F><>ʼ<EFBFBD><CABC>SRAM12<31>ڴ<EFBFBD><DAB4><EFBFBD>(SRAM1+SRAM2)
|
|||
|
|
// my_mem_init(SRAM4); //<2F><>ʼ<EFBFBD><CABC>SRAM4<4D>ڴ<EFBFBD><DAB4><EFBFBD>(SRAM4)
|
|||
|
|
// my_mem_init(SRAMDTCM); //<2F><>ʼ<EFBFBD><CABC>DTCM<43>ڴ<EFBFBD><DAB4><EFBFBD>(DTCM)
|
|||
|
|
// my_mem_init(SRAMITCM); //<2F><>ʼ<EFBFBD><CABC>ITCM<43>ڴ<EFBFBD><DAB4><EFBFBD>(ITCM)
|
|||
|
|
|
|||
|
|
|
|||
|
|
Draw_Font16B(16,16,RED," STM32H7 SD Card ");
|
|||
|
|
Draw_Font16B(16,32,BLUE," Ƕ<><C7B6>ʽ<EFBFBD><CABD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ");
|
|||
|
|
Draw_Font16B(16,48,BLUE,"mcudev.taobao.com");
|
|||
|
|
Draw_Font16B(16,64,BLUE, "KEY2:Read Sector 0");
|
|||
|
|
|
|||
|
|
|
|||
|
|
while(SD_Init())//<2F><><EFBFBD>ⲻ<EFBFBD><E2B2BB>SD<53><44>
|
|||
|
|
{
|
|||
|
|
Draw_Font16B(16,90,RED,"SD Card Error!");
|
|||
|
|
delay_ms(500);
|
|||
|
|
Draw_Font16B(16,90,RED,"Please Check! ");
|
|||
|
|
delay_ms(500);
|
|||
|
|
LED2_Toggle;//D2<44><32>˸
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
|
|||
|
|
show_sdcard_info(); //<2F><>ӡSD<53><44><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ
|
|||
|
|
|
|||
|
|
Draw_Font16B(16,90,BLUE,"SD Card OK "); //<2F><><EFBFBD><EFBFBD>SD<53><44><EFBFBD>ɹ<EFBFBD>
|
|||
|
|
|
|||
|
|
sprintf((char*)tbuf,"SD Card Size: %u MB",SDCardInfo.CardCapacity>>20); //<2F><>ʾ<EFBFBD><EFBFBD><DEB7><EFBFBD>ʮ<EFBFBD><CAAE><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
|
|||
|
|
Draw_Font16B(16,110,BLUE,tbuf); //<2F><>ʾ<EFBFBD>洢<EFBFBD><E6B4A2><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
|
|||
|
|
|
|||
|
|
while(1)
|
|||
|
|
{
|
|||
|
|
key=KEY_Scan(0);
|
|||
|
|
|
|||
|
|
if(key==KEY2_PRES)//KEY2<59><32><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
{
|
|||
|
|
buf=mymalloc(SRAMIN,2048); //<2F><><EFBFBD><EFBFBD><EFBFBD>ڴ<EFBFBD>2K
|
|||
|
|
|
|||
|
|
key=SD_ReadDisk(buf,0,1);
|
|||
|
|
|
|||
|
|
if(key==0) //<2F><>ȡ0<C8A1><30><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
{
|
|||
|
|
Draw_Font16B(16,130,BLUE,"USART1 Sending ...");
|
|||
|
|
|
|||
|
|
printf("SECTOR 0 DATA:\r\n");
|
|||
|
|
|
|||
|
|
for(sd_size=0; sd_size<512; sd_size++)printf("%x ",buf[sd_size]); //<2F><>ӡ0<D3A1><30><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
|
|||
|
|
printf("\r\nDATA ENDED\r\n");
|
|||
|
|
|
|||
|
|
Draw_Font16B(16,130,BLUE,"USART1 Send Over!");
|
|||
|
|
|
|||
|
|
}
|
|||
|
|
else printf("err:%d\r\n",key);
|
|||
|
|
|
|||
|
|
myfree(SRAMIN,buf);//<2F>ͷ<EFBFBD><CDB7>ڴ<EFBFBD>
|
|||
|
|
}
|
|||
|
|
t++;
|
|||
|
|
delay_ms(10);
|
|||
|
|
if(t==20)
|
|||
|
|
{
|
|||
|
|
LED2_Toggle;//D2<44><32>˸
|
|||
|
|
t=0;
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
/********************************************************/
|
|||
|
|
//SD<53><44> ʵ<><CAB5>
|
|||
|
|
|
|||
|
|
//STM32H7<48><37><EFBFBD><EFBFBD>ģ<EFBFBD><C4A3>-HAL<41>⺯<EFBFBD><E2BAAF><EFBFBD>汾
|
|||
|
|
//DevEBox <20><>Խ<EFBFBD><D4BD><EFBFBD><EFBFBD>
|
|||
|
|
//<2F>Ա<EFBFBD><D4B1><EFBFBD><EFBFBD>̣<EFBFBD>mcudev.taobao.com
|
|||
|
|
//<2F>Ա<EFBFBD><D4B1><EFBFBD><EFBFBD>̣<EFBFBD>shop389957290.taobao.com
|
|||
|
|
|
|||
|
|
/********************************************************/
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
|