project bf537 mmc card
DESCRIPTION
Connecting MMC card to SPI of BF537 EZ-KIT LITETRANSCRIPT
ТЕХНИЧЕСКИ УНИВЕРСИТЕТ- СОФИЯ, ФИЛИАЛ ПЛОВДИВ
ПРОЕКТИРАНЕ НА ВГРАДЕНИ МИКРОПРОЦЕСОРНИ СИСТЕМИ
Курсов Проект
Изготвили:
Тонка Танчева, гр.31а, фак. 605 277
Светла Райкова, гр.31а, фак. 605 289
Пловдив Проверил:.............
2010г. /гл.ас.д-р Б. Петров/
Page 2
Задание
Свързване на MMC карта към SPI на ADSP-BF537 EZ-KIT LITE
Проекта да включва:
Осигуряване на възможност за индикиране при поставене на карта
памет в слота;
Програмно следене на захранването на MMC карта;
Индикация за захранване на карта;
Инициализиране на SPI интерфейса на ADSP-BF537 процесор;
Записване на данни през SPI върху MMC карта;
Page 3
За целите на настоящия курсов проект се използва карта памет тип: MMC
card (Multi Media Card), модел: Transcend TS256MMC. Нейната структура е на
базата на flash паметта, достъпът до нея се осъществява посредством сериен
интерфейс оптимизиран за бърз и сигурен обмен на данни. TS256MMC може да
работи в два режима на работа: MMCmode и SPImode. /табл.1/
Табл.1
Избраната MMC карта се използва в SPImode, което дава възможност за
използване и на SD карта в SPImode през SPI интерфейса на ADSP-BF537. Това
осигурява възможност за използване както на SD така и на MMC карта.
Page 4
Схемна реализация:
Page 5
Софтуерна реализация:
1.MMC_SD.c
#include "cdefBF537.h" #include<stdio.h> #include"sys/exception.h" #include " mmc_sd_init.h" #include "image_data.h" #define h 128 #define v 128 EX_INTERRUPT_HANDLER(detect_ISR) unsigned char img_on_card[h][v]; img_on_card[0][0]=*go_see; void main(void) int cntr=0; InitPLL(); InitSPI(); InitINT(); capture(&see_all[0][0]); register_handler(ik_ivg12,detect_ISR); while(1) cntr++;
2.mmc_sd_init.h #ifndef mmc_sd_init #define mmc_sd_init void InitPLL(void);
Page 6
void SPI_init(void); void InitINT(void); void InitPLL(void) *pPLL_CTL=0x1400; //reset *pPLL_CTL=0x3000; // MSEL 24x | NO BYPASS | NO I/O DELAY | NO PD| NO STOPCK | PLL ON | 1/1 DF //VCO 600MHz *pPLL_DIV=0x0005; //reset *pPLL_DIV=0x0014; //CCLK 300MHz | SCLK 100 MHz /*** upBF537-master, MMC_card slave***/ void SPI_init(void) *pPORTF_FER = 0x3C00; //enable:SPI_CLK-pin13,SPI_MISO-pin12,SPI_MOSI-pin11,SSEL1-pin10; *pSPI_BAUD = 0x0002; //(frequancy[bit/sec]/bits, which are transfered) *pSPI_CTL = 0x5600;//TIMOD-start transfer with R of SPI_RDBR; // SZ[2]SPI_TDBR emty-send last word // GM[3]SPI_RDBR full-discard incoming data; // enable:SS,MISO,SPI; //SIZE of words:8bits; begin transfer with LSB; CPHA=1 void InitINT(void) *pPORTF_FER |=0xffdf; //PF5 GPIO *pPORTFIO_DIR |=0xffdf; //PF5 Input *pPORTFIO_INEN &=0x0020; //PF5 Input Buffer Enable *pPORTFIO_POLAR &=0x0020; //PF Low level or Falling Edge *pPORTFIO_EDGE |=0xffdf; //PF Low level *pPORTFIO_MASKA &=0020; *pSIC_IAR3 &=0x00005000; //PF 5 Enable interrupt *pSIC_IMASK &=0x08000000; //PF 5 interrupt enable #endif
Page 7
3.image_data.h #ifndef image_data #define image_data #include<stdio.h> #define h 128 #define v 128 section("sdram0_bank3") unsigned char see_all[h][v]; section("sdram0_bank3") unsigned char *go_see; void capture(go_see); void capture(go_see) FILE *ip; int read; ip=fopen("clouds.bmp","rb+"); read=fread(go_see,sizeof(unsigned char),h*v,ip); if (read<h*v) if (ferror(ip)) printf("fill_buffer failed with an I/O error\n"); else if (feof(ip)) printf("fill_buffer failed with EOF\n"); else printf("fill_buffer only read %d items\n",read); if (ferror(ip)) printf("ERROR R/W \n"); else printf("R/W Stream Good\n"); if ((fclose(ip)) == NULL) printf("Successful Closing\n"); else printf("ERROR Closing\n"); #endif
Page 8
Спецификация на използваните елементи:
на част ИС Стойност Производител Корпус Допълнителна Информация
IC1,2,3 74HC125 ON Semiconductor
TSSOP-14 Буфер
X1 FPS009-3003 Yamaichi Con Слот за SD/MMC
Q2 BSH2550 Ugs=0,4V Philips SOT23 pMOS D1 AND520HW AND T1-3/4
SV1 20pin female con C1 100nF Multicomp C025-
024X044
С2 10uF VISHAY 085CS-1AR
R1,R2,R6 10kΩ 0204V R3 1kΩ 0204V R4 7kΩ 0204V