Exemplo n.º 1
0
void spiFlashTest(void)
{
	u32 FlashID = 0;
  u8  state[2] = {0};
  u8  Rx_Buffer[22];
  
  FlashID = spiFlashReadID();

  printf("\r\n 芯片的ID是 0x%X", (int)FlashID);

  if (FlashID == 0xEF4015)  
  {
    //擦除0x00扇区
    flashEraseSector(FLASH_SECTORTOERASE);
  
    printf("\r\n 写入的数据为: %s", Tx_Buffer);
    
    spiFlashBufferWrite((u8*)Tx_Buffer, FLASH_WRITEADDR, sizeof(Tx_Buffer));
  
    spiFlashBufferRead(Rx_Buffer, FLASH_READADDR, sizeof(Tx_Buffer));
  
    printf("\r\n 读出的数据为: %s", Rx_Buffer);
    
    for (u16 i=0;i< 22;i++)
    {
      if (*(Tx_Buffer+i)!=*(Rx_Buffer+i))
      {
        state[0] = 1;
      }
    }
    
    /* 擦除一个扇区 */    
    flashEraseSector(FLASH_SECTORTOERASE);
  
    /* 读取扇区数据 */
    spiFlashBufferRead(Rx_Buffer, FLASH_READADDR, sizeof(Rx_Buffer));
  
    /* 判断读取数据是否为0xff */
    for (u8 Index = 0; Index < 22; Index++)
    {
      if (Rx_Buffer[Index] != 0xFF)
      {
        state[1] = 1;
      }
    }
  
    if(0 == state[1])
    {
            printf("\r\n 读出数据都为 0xff\n\r");
    }
    else
    {
            printf("\r\n 读出数据不都为 0xff\n\r");
    }
  
    if(0 == (state[0]+state[1]))
    {
      printf("\r\n flash测试成功\n\r");
    }
    else
    {
      printf("\r\n flash测试失败!\n\r");
    }
  }
  else
  {
    printf("\r\n FLASH测试失败 \n\r");
  }
}
Exemplo n.º 2
0
DSTATUS disk_initialize (
	BYTE drv		/* Physical drive nmuber */
)
{
	DSTATUS sta;
	uint32_t timeout = 0;
	uint32_t id;

	//card detect = GPB14
	GCR->PB_H_MFP = (GCR->PB_H_MFP & ~PB14_MFP_MASK) | PB14_MFP_GPB14;
	GPIOB->PMD = (GPIOB->PMD & ~GPIO_PMD_PMD14_MASK) | GPIO_PMD_PMD14_INPUT;
	
	printf("Check SD Card insert ?\n");
	while(GPIOBITB->GP_BIT14 == 1)
	{	
		if(timeout++ > 0x200)
			break;
	}
	
	bUseSDCard = 0;
	if(GPIOBITB->GP_BIT14 != 1)
	{
		printf("Card Detected!!\n");
		
		//power pin(GPE6)
		GCR->PE_L_MFP = (GCR->PE_L_MFP & ~PE6_MFP_MASK) | PE6_MFP_GPE6;
		GPIOE->PMD = (GPIOE->PMD & ~GPIO_PMD_PMD6_MASK) | GPIO_PMD_PMD6_OUTPUT;
		GPIOBITE->GP_BIT6 = 0;
		
		RoughDelay(100000);
		if(SDCARD_Open() == E_SUCCESS)
		{	
			sta = 	RES_OK;
			printf("SDCard Open success\n");
			bUseSDCard = 1;
		}
		else
		{
			sta = STA_NOINIT;
			printf("SDCard Open failed\n");
		}
	}
	else
	{	
		printf("Can't detect card !!\n");
		
		/* Set SPI0 pin, GPE1->SS0; GPE2->CLK, GPE3->MISO0, GPE4->MOSI0 */
                GCR->PE_L_MFP = GCR->PE_L_MFP & ~0x000ffff0|0x00066660;
		CLK->CLKSEL2 = (CLK->CLKSEL2 & CLK_CLKSEL2_SPI0_MASK) | CLK_CLKSEL2_SPI0_PLL;
	
		//can't find SD card, use SPI flash instead.
		spiFlashInit(SPI0);
	
		/* Check Flash ID */
		if((id = spiFlashReadID()) == 0)
		{
			printf("Sorry!! The ID (0x%x)is wrong!!\n", id);
			sta = STA_NOINIT;
		}
		else
			sta = RES_OK;
	}
	
	return sta;

}