⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 msp430sdwrite.c

📁 MSP430F149与SD卡接口设计,可以对SD卡进行读写
💻 C
字号:
/***************************************************************************\
 文件名称:MSP430与SD卡接口设计
 芯片类型:MSP430F149
 开发软件:IAR Embedded Workbench 4.0,Windows XP
 程序功能:SD卡的读写

\***************************************************************************/
/***************************************************************************\
  SD连线图      
  *5.0---CS*     *5.1---DI*     *5.2---DO*     *5.3---Clk*                     
\***************************************************************************/
// 头文件
#include  <msp430x14x.h>
#include  <string.h>
#include  "sd.h"

extern char card_state;
extern char sd_buffer[512];

char card_state = 0;                              // card state: 0: not found, 1 found (init successfull)
unsigned long loop;

void main (void)
{volatile unsigned char dco_cnt = 255;

 BCSCTL1 &= ~XT2OFF;                             // XT2on
 do                                              // wait for MCLK from quartz
 {IFG1 &= ~OFIFG;                                // Clear OSCFault flag
  for (dco_cnt = 0xff; dco_cnt > 0; dco_cnt--);  // Time for flag to set
 }
 while ((IFG1 & OFIFG) != 0);                    // OSCFault flag still set?
 WDTCTL = WDTPW + WDTHOLD;                       // Stop WDT
 BCSCTL1 = 0x07;                                 // LFXT1: XT2on: LF quartz for MCLK
 BCSCTL2 = SELM1 + SELS;                         // LFXT2: use HF quartz (XT2)
 DCOCTL = 0xe0;
 P5SEL = 0x00;
 P5DIR = 0xFF;
 P5OUT = 0xFF;
 for (;;)
 {if (initSD() == SD_SUCCESS)                    // card found
  {card_state |= 1;
   // Read Out Card Type and print it or trace memory
   memset(&sd_buffer,0,512);
   sdReadRegister (10, 16);
   sd_buffer[7]=0;
   // PLease mofify based on your Compiler sim io function
   // debug_printf("Multi Media Card Name: %s",&mmc_buffer[3]);
   // Fill first Block (0) with 'A'
   memset(&sd_buffer,'A',512);                  // set breakpoint and trace mmc_buffer contents
   sdWriteBlock(0x00);
   // Fill second Block (1)-AbsAddr 512 with 'B'
   memset(&sd_buffer,'B',512);
   sdWriteBlock(512);

   // Read first Block back to buffer
   memset(&sd_buffer,0x00,512);
   sdReadBlock(0x00,512);
   memset(&sd_buffer,0x00,512);                // set breakpoint and trace mmc_buffer contents
   sdReadBlock(512,512);
   memset(&sd_buffer,0x00,512);                // set breakpoint and trace mmc_buffer contents
   }
   else
   {//Error card not detected or rejected during writing
    // switch red led on
    card_state = 0;                             // no card
   }
 }
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -