| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Микроконтроллеры (MCU) и микропроцессоры (MPU) > Программистам С167 |
| Автор: Swetlana 28.5.2005, 21:28 |
| не совсем мобильная тема, но все-таки рискну... Помогите понять как сделать: есть проц С167, есть подключеная флеш к нему: WE(FLASH) - WR/WRL (C167) OE(FLASH) - RD(C167) CE(FLAS) - CS0(C167) RESET(FLASH) - +5V код загрузчика в прикрепленном файле считать получилось, прочитать не могу.... чего не хватает? |
| Автор: PILOT 29.5.2005, 00:16 |
| Какая флэш? И точно: какой процессор? СУВ. |
| Автор: Swetlana 29.5.2005, 09:05 |
| ST10R167 - процессор (полный аналог С167 сименса) FLASH - 29F400 JAPAN |
| Автор: PILOT 29.5.2005, 09:43 |
| Ясно. А как Вы работаете с параллельной флеш в последовательном режиме? СУВ. |
| Автор: Swetlana 29.5.2005, 10:17 |
| Вообщето я работаю по последовательному порту с процессором - и он собственно принимает от меня байты для записи, или передает считанные байты... т.е. при посылке ему например 0x85 - он последовательно по байту отдает содержимое флеши. (работает как часы) 0x84 - должна по идее была переписывать, а 0x33 ведет подсчет КС... все остальное - впринципе - не суть важно... Собственно всем этим занимаются встроенные устройтсва в процессор - интерфейсом общения выступает ASC0 устройство, а при общении с флеш - начинает свою работу EBC... вот только сигналы c WR не генерятся для доступа на запись к флеш... видимо конфигурация самого устройства нужна, а что именно - не понимаю... EBC молчит как пень |
| Автор: PILOT 29.5.2005, 10:49 |
| Все равно не понимаю. Вот тут: http://mcu.st.com/files/mcu/6864.pdf на 48-50 странице есть диаграммы чтения записи. Никакого участия последовательной шины. СУВ. |
| Автор: Swetlana 29.5.2005, 11:56 |
| значит у меня организовано так: есть программа на моем компьютере мною писаная с 2-мя кнопками типа "читать" и "писАть". при нажатии открываю компорт на который повешен так сказать "адаптер для связи" - грубо говоря преобразователь уровней и все. в проц зашиваю бутстрап, который был в приложении - в нем есть обрабтка команд 0х84(функция чтения) и 0х85(функция записи) и еще нескольких функций, которые говорят о количестве байтов которые я либо передам или жду на прием (это значит при записи в порт всего одного байта 0х84 или 0х85 - проц активируется на прием байтов или на передачу). С помощью записей типа "mov S0BUF, [r6]" я получаю один байт по адресу r6... ну r6 - это просто счетчик, который последовательно инкреминируется... А вот команда записи по адресу - уже не проходит... понимаю, что выборка адреса может для записи организовываться только как word - соответственно веду запись в зависимости от того четный байт идет для записи или нет... вот только нипишет он нифига... Добавлено @ 12:05 поясню еще вот что, управлять напрямую сигналами WR или RD я не могу, я могу лишь только как я поняла включить EBC, который сам управляет ими... а вот как его включить - не знаю.... а ASC0 - всего лишь посредник между процом и моим компьтером... к флешке не имеет никакого отношения... |
| Автор: PILOT 29.5.2005, 12:25 |
| Правильно ли я понял: итак кусок кода уже сидит в проце, который прогружает внешнюю flash 29F400. Загрузка ведется по UART, есть несколько команд, котоые инициируют необхдимую операцию для работы с флэш. При этом чтение проходит на ура, а запись не осуществляется, более того, строб записи не реагирует ни на что. Так? СУВ. |
| Автор: Swetlana 29.5.2005, 12:45 |
| Все правильно. Данные (тока что на осциллографе посмотрела) идут и адреса выставляются, но запись просто не проходит... при считывании записанного байта приходит старый не модифицированный... CE - 0V, WE - 5V, OE - 5V()все это на ногах Flash); причем не меняются вообще... Если войти в обычный режим (работа программы с флеши - она не пустая на данный момент) - все работает как часы... все переключается по диаграммам даташита на проц... В чем засада - не пойму. |
| Автор: PILOT 29.5.2005, 13:43 |
| Где-то ты не указала каким из нескольких способов ты работаешь с памятью (в доках есть раздел про внешнюю память).... мне так кажется, потому что причина именно в отсутсвии строба WE. Чудес не бывает, нужно разбираться с этими режимами. по-моему причина именно в этом. Хотя я с сименсами не работал и могу ошибаться (но не по поводу строба, конечно, строб должен быть). СУВ. |
| Автор: PILOT 29.5.2005, 19:26 |
| Разобрались? СУВ. |
| Автор: Swetlana 29.5.2005, 21:49 |
| В общем сравнила с другим подобным случаем - самое странно, что стробы не генерятся. Мне кажется некоторая проблема может быть и действительно с внутренним контроллером флешки. Там есть команда на программирование, защиту и снятие защиты - пытаюсь с этим поиграть, из-за чего возник еще вопрос: есть еще несколько примеров программирования флешек типа AMD29F400 в том числе и пример с сайта keil - там почему-то в отличии от даташита шлется не на адрес 555 а на 5554 - почему так не могу понять, но стереть пока не удалось |
| Автор: PILOT 30.5.2005, 00:37 |
| http://www.mobil-diszkont.hu/idis/29f400.pdf посмотрите на 15-18 страницы, там есть алгоритмы работы с памятью и указан адрес $5555 там же есть алгоритм стирания, записи и чтения. Должно помочь. СУВ. |
| Автор: Swetlana 31.5.2005, 22:43 |
| Да не все так просто - там на флеше ноги данных попутаны с проца... потому когда шлешь 55 - то на саму флешь приходит охинея и она выдает просто код из прошивки - вот такая вот беда была... но порешили уже - пишет и стирает моя программка на ура... Добавлено @ 22:44 Пасибо тебе, за то что не оставил в трудную минуту ;) |
| Автор: PILOT 31.5.2005, 22:50 |
| Ну... чем мог помог В любом случае чудес не бывает если дело не касается DC-DC преобразователей фирмы ЭлТом. СУВ. |