Пример #1
0
// ---------------------------------------------------------------------------
// Transfiere un buffer a la memoria FLASH
// ---------------------------------------------------------------------------
//
void SPI_TransferMsg ( UINT8 HdrLen, UINT8 DataLen, UINT8* MsgPtr ) 
{
    UINT8 TmpData;
    UINT8 * HdrPtr;
    
    HdrPtr = SpiBuf;
      
    flash_cs_l();
    while(HdrLen){
      REFRESH_WATCHDOG;
      TmpData = *HdrPtr;
      *HdrPtr = flash_spi(TmpData);
      HdrPtr++;
      HdrLen--;
    }
    while(DataLen){
      REFRESH_WATCHDOG;
      TmpData = *MsgPtr;
      *MsgPtr = flash_spi(TmpData);
      MsgPtr++;
      DataLen--;
    }
    flash_cs_h();
  
}
Пример #2
0
void program_page(int page) {
    int flash_addr = page_to_flash(page);
    unsigned int i;
    unsigned char data;
    unsigned char data1;
    flash_spi(ARRAY_READ);
    flash_spi((flash_addr >> 8) & 0xff);
    flash_spi(flash_addr & 0xff);
    for (i=0; i < 5; i++) {
	flash_spi(0);
    }
    for (i = 0; i < 128; i++) {
	data = flash_spi(0);
	data1 = flash_spi(0);
	bg_spi(0x40);
	bg_spi(0x00); 
	bg_spi(i);
	bg_spi(data);
	bg_spi(0x48);
	bg_spi(0x00); 
	bg_spi(i);
	bg_spi(data1);
    }

    bg_spi(0x4c);
    bg_spi((page >> 1) & 0xff);
    bg_spi((page << 7) & 0xff );
    bg_spi(0x00);

}
Пример #3
0
// read the parameters from the flash; right now just reads the length of the
// program. 
int read_params() {
    int i;
    int retval;
    flash_cmd(ARRAY_READ, 0,0, 4);
    /*    flash_spi(ARRAY_READ);
    flash_spi(0);
    flash_spi(0);
    flash_spi(4);*/
    for (i=0; i < 4; i++) {
	flash_spi(0);
    }
    retval = flash_spi(0) & 0xff;
    retval += (flash_spi(0) << 8);
    return retval;
}
Пример #4
0
int error_code(short errno) {
    pulse_flash_cs();
    flash_cmd(PAGE_TO_BUFFER_XFER,0,0,0);
    pulse_flash_cs();
    flash_cmd(BUFFER_WRITE, 0,0,8);
    flash_spi(errno & 0xff);
    flash_spi((errno >> 8) & 0xff);
    return 1;
}
Пример #5
0
char program_enable() {
    int ntries, end,i;
    unsigned char foo;
    unsigned char resp[6];
#ifdef FULLPC
    __sda_string_[0] = 0;
    __mosi_string_[0] = 0;
#endif
    MAKE_BIG_GUY_RESET_OUTPUT();
    CLR_SCK_PIN();
    CLR_BIG_GUY_RESET_PIN();
    wait();
    wait();
    i = 0;
    pulse_flash_cs();
    for (end=0; end < 5000; end++) {
	wait();
    }
    for(end = 0, ntries = 32; (end == 0) && (ntries >0); ntries--) {
	bg_spi(0xac);
	bg_spi(0x53);
	foo = bg_spi(0x00);
	if (foo == 0x53) { 
	    end = 1;
	} else {
	    CLR_SCK_PIN();
	    wait();
	    wait();
	    SET_SCK_PIN();
	    wait();
	    wait();
	}	    
	bg_spi(0x00);
	if (i <6)
	    resp[i++] = foo;
    }
    if (end == 0) {
	flash_cmd(BUFFER_WRITE, 0,0,10);
	for (i=0; i < 6; i++)
	    flash_spi(resp[i]);
	pulse_flash_cs();
	wait_ms(20);
	return 0;
    }
    printf("%s\n", __mosi_string_);
    printf("%s\n", __sda_string_);
    return 1;
}
Пример #6
0
void flash_cmd(char cmd, char p1, char p2, char p3) {
    flash_spi(cmd);
    flash_spi(p1);
    flash_spi(p2);
    flash_spi(p3);
}