Hello! i wanted to programm this flash (AT49BV1614). So I copied the flash programming algorithms for AT49xV16x4A (Atmel Flash) and changed the flashdev.c and flashprog.c But it won't work. So I compared the datasheet from AT49xV16x4A with the algorithms from keil and found some difference: The Algorithm from Keil for AT49xV16x4A:
int EraseChip (void) { // Start Chip Erase Command M16(base_adr + 0xAAA) = 0xAA; M16(base_adr + 0x554) = 0x55; M16(base_adr + 0xAAA) = 0x80; M16(base_adr + 0xAAA) = 0xAA; M16(base_adr + 0x554) = 0x55; M16(base_adr + 0xAAA) = 0x10; return (Polling(base_adr)); // Wait until Erase completed }
"As you can see the Adresses are different (seem to be inverted, but 554 and AAA?), but commands are equal, so i wonder how this can work?!?" It's the difference between byte mode and word mode. The addresses are shifted up by one (e.g., AAA becomes 554 because the upper address bits are "don't care").
Thank You :-) that's exactly the information i was searching for! I'm sorry for my very very bad english