Имею отладочную плату STM32F4 Discovery
К ней припаяна панелька для EEPROM. Процесс прошивки работает очень странно, например в AT29C010 прошивка происходит только если прошиваю первые 4 сектора. Если больше то процесс прошивки не происходит.
В плане алгоритма прошивки это вроде самые простые флешки. То есть не надо никаких кодов записи отсылать.
Вероятно где-то косяк с таймингами.
Если все верно понял, нужно слать данные одного сектора, в этом процесс может проходить почти без задержек.
Потом нужно выждать некоторое время что флешка из буфера успела записать данные в память.
И так пройтись по всем секторам. Экспериментально установить нужную задержку не получилось, а с указаной в даташите работает как-то не так.
В чем может быть проблема?
Вот так выглядит попытка прошивать https://dl.dropboxusercontent.com/u/6439155/1%230.ORI
Я пробовал писать сплошные числа, 01,03,170 итп. Видно что их раскидало по памяти как-то не понятно.
Вот исходник:
Функция Delay дает задержку в uS. То есть 300 это примерно 200 uS.Код:SET_DATA_MODE_OUT uint16_t sector = 0; uint16_t byte = 0; uint16_t addr = 0; uint8_t d = 1; uint8_t data = 0; OE_HIGH; CE_HIGH; WE_HIGH; Delay(0xfffff); for (sector=0; sector<256; sector++) { for (byte=0; byte<128; byte++) { addr = (sector << 7 ) | byte; data = rom_gb[addr]; OE_HIGH; ADDR_OUT = addr; WE_LOW; DATA_OUT = (uint16_t)data << 8; Delay(d); WE_HIGH; OE_LOW; Delay(d); } Delay(300); }
Полинг не использую, так-как не очень понял как это правильно делать.
Посмотрел в сорцах к Wylliam програмеру, там задержка между секорами 17ms. У меня же при больших задержках запись похоже вообще не происходит. Ну то есть скали скажем выставить ее в 1 секунду.
Denn поделился своим опытом с неэкранированым кабелем, но я думаю дело не в этом. В инете похожие схемы выглядят еще более страшно и витьевато чем у меня и ведь работают.
Где искать подвох? Ну или сорцы с записью 29 серии? В сорцах к Wylliam есть только 27 и 28.
---------- Post added at 18:59 ---------- Previous post was at 18:57 ----------
Дело осложняетс тем что я не могу на комп считать данные и проконтролировать то что записал.
---------- Post added at 19:03 ---------- Previous post was at 18:59 ----------
Изначально код был такой:
ДаташитыPHP код:
for (byte=0; byte<128; byte++) {
addr = (sector << 7 ) | byte;
data = rom_gb[addr];
OE_HIGH;
ADDR_OUT = addr;
CE_LOW;
WE_LOW;
DATA_OUT = (uint16_t)data << 8;
Delay(d);
WE_HIGH;
CE_HIGH;
Delay(d);
}
http://www.soselectronic.cz/a_info/r.../AT29C010A.pdf






Ответить с цитированием
Размещение рекламы на форуме способствует его дальнейшему развитию 
