Exemplo n.º 1
0
CyU3PReturnStatus_t NuandLockOtp() {
    CyU3PReturnStatus_t status = CY_U3P_SUCCESS;
    uint8_t location[1];
    uint8_t read_status;

    status = FlashReadStatus(&read_status);

    location[0] = 0x06;  /* Write enable. */
    status = CyU3PSpiSetSsnLine (CyFalse);
    status = CyU3PSpiTransmitWords (location, 1);
    status = CyU3PSpiSetSsnLine (CyTrue);

    status = FlashReadStatus(&read_status);

    location[0] = 0x2f;// WRSCUR
    status = CyU3PSpiSetSsnLine (CyFalse);
    status = CyU3PSpiTransmitWords (location, 1);
    status = CyU3PSpiSetSsnLine (CyTrue);

    location[0] = 0x02;// Page program
    status = CyU3PSpiSetSsnLine (CyFalse);
    status = CyU3PSpiTransmitWords (location, 1);
    status = CyU3PSpiSetSsnLine (CyTrue);

    location[0] = 0x2b; /* RDSCUR */
    status = CyU3PSpiSetSsnLine (CyFalse);
    status = CyU3PSpiTransmitWords (location, 1);
    status = CyU3PSpiReceiveWords(location, 1);
    status = CyU3PSpiSetSsnLine (CyTrue);

    return status;
}
Exemplo n.º 2
0
// Commit the loaded page buffer
char NandStorePage(void)
{
	unsigned char status;
	FLASH_CE = 0;                                       // Chip select
	NandWriteCommand(FLASH_PAGE_PROGRAM_COPY_BACK_2 );
	FLASH_CE = 1;                                       // Chip deselect
    FLASH_WAIT_RB();                                    // Wait for page to copy
	status = FlashReadStatus();                         // Get status
	if (status & FLASH_STATUS_FLAG_FAILED) return (FALSE); 	// Failed
	else	return (TRUE);                              // Pass
}
Exemplo n.º 3
0
/********************************************************************
函数功能:擦除一个块。
入口参数:Addr:字节地址。
返    回:无。
备    注:无。
********************************************************************/
uint8 FlashEraseBlock(uint32 Addr)
{
 //擦除命令第一字节命令
 FlashWriteCommand(0x60);
 //写入两字节的页地址
 FlashWritePageAddr(Addr);
 //写入擦除命令第二字节
 FlashWriteCommand(0xD0);
 //等待擦除完成
 FlashWait();
 //返回操作状态
 return FlashReadStatus();
}
Exemplo n.º 4
0
/********************************************************************
函数功能:复制一页数据。
入口参数:sAddr:源地址;dAddr:目标地址。
返    回:无。
备    注:操作的状态。
********************************************************************/
uint8 FlashCopyPage(uint32 sAddr, uint32 dAddr)
{
 //读源数据到内部缓存
 FlashWriteCommand(0x00);
 FlashWriteAddr4Byte(sAddr);
 FlashWriteCommand(0x35);
 FlashWait();
 
 //将数据写到目标页
 FlashWriteCommand(0x85);
 FlashWriteAddr4Byte(dAddr);
 FlashWriteCommand(0x10);
 FlashWait();
 return FlashReadStatus();
}
Exemplo n.º 5
0
// Commit the loaded page buffer to a different destination
char NandStorePageRepeat(unsigned short destBlock, unsigned char destPage)
{
	unsigned char status;
	FormAddressBP(destBlock,destPage);                  // See macro
    FLASH_WAIT_RB();                                    // Wait for previous operations
	FLASH_CE = 0;                                       // Chip select
	NandWriteCommand(FLASH_PAGE_PROGRAM_COPY_BACK_1 );
	NandWriteAddress5B();                               // Specify new desination
	NandWriteCommand(FLASH_PAGE_PROGRAM_COPY_BACK_2 );
	FLASH_CE = 1;                                       // Chip deselect
    FLASH_WAIT_RB();                                    // Wait for page to copy
	status = FlashReadStatus();                         // Get status
	if (status & FLASH_STATUS_FLAG_FAILED) return (FALSE); 	// Failed
	else	return (TRUE);                              // Pass
}
Exemplo n.º 6
0
// Copy a page
char NandCopyPage(unsigned short srcBlock, unsigned char srcPage, unsigned short destBlock, unsigned char destPage)            // Copes with unknown source
{
	unsigned char status;
	FormAddressBP(srcBlock,srcPage);                    // See macro
	FLASH_CE = 0;                                       // Chip enable
    FLASH_WAIT_RB();                                    // Wait for previous operations
	NandWriteCommand(FLASH_READ_COMMAND_COPY_BACK_1);	// Read for copy back
	NandWriteAddress5B();                               // Specify source address
	NandWriteCommand(FLASH_READ_COMMAND_COPY_BACK_2);
	FormAddressBP(destBlock,destPage);                  // See macro
    FLASH_WAIT_RB();                                    // Wait for page to load
	NandWriteCommand(FLASH_PAGE_PROGRAM_COPY_BACK_1);
	NandWriteAddress5B();                               // Specify destination address
	NandWriteCommand(FLASH_PAGE_PROGRAM_COPY_BACK_2);
	FLASH_CE = 1;                                       // Deselect
    FLASH_WAIT_RB();                                    // Wait for page program
	status = FlashReadStatus();                         // Get status
	if (status & FLASH_STATUS_FLAG_FAILED) return (FALSE); 	// Failed
	else	return (TRUE);                              // Pass
}
Exemplo n.º 7
0
/********************************************************************
函数功能:页写命令的后半部分。
入口参数:无。
返    回:无。
备    注:操作的状态。
********************************************************************/
uint8 FlashWritePage(void)
{
 FlashWriteCommand(0x10);  //页写命令
 FlashWait();  //等待写完成
 return FlashReadStatus();
}