Перейти к содержанию

Serg_Sm

Свой
  • Публикаций

    183
  • Зарегистрирован

  • Посещение

Репутация

0 Обычный

Информация о Serg_Sm

  • Звание
    Частый гость
  • День рождения 18.11.1980

Контакты

  • Сайт
    http://
  • ICQ
    366969066

Информация

  • Город
    Смоленск

Посетители профиля

2 341 просмотр профиля
  1. Кто-нибудь реализовывал быстрое чтение (а может и запись) через GPIF FX3 в режиме мастера? Пытаюсь настроить проект в GPIF II Designer (прога не обновлялась с 2012г), но на диаграммах оказывается совсем не то, что ожидается увидеть. Например сигналы на линии данных смещены в "прошлое" относительно состояний чтения + сигнал готовности DMA обрывается задолго до расчетных значений. В итоге получается, что либо я что-то не понимаю, либо чтение на 100МГц там вообще недостижимо - нужны wait states (как и есть в единственном примере). Да и вообще толковых примеров по настройке GPIF в режиме мастера как-то не нашлось. Есть только AN87216, но его крайне маловато для понимания. А уж по GPIF II Designer вопросов множество. На официальном форуме кто-то задавал вопрос когда будет обновление (и 5 пунктов ради которых оно нужно) - в ответ "не в ближайшем квартале", т.е. никогда похоже.
  2. Цитата(dima32rus @ Aug 18 2016, 11:40) Мы для таких случаев специально делали перемычку на линии SDA, и не к земле, а разрывали саму SDA между EEPROM и контроллером. Сколько раз эта перемычка выручала. Может быть, если просто притянуть к земле, контроллер воспринимает это как неготовность EEPROM и намертво зависает ожидании. Он выставляет на линию 1, а там всегда 0. Как только вы убираете перемычку, он это дело тут же прочухивает и загружает битую прошивку. Попробуйте разорвать саму линию SDA, если это возможно, должно гарантированно сработать. SDA разрывать как-то не красиво, достаточно изменить адрес. Т.е. ножку адреса микросхемы EEPROM соединить перемычкой с землей (в боевом режиме подтяжка к 3.3В). В моем случае физически не было возможности до платы добраться, чтобы что-нибудь разорвать. Ещё вариант (если есть доступ только к SCL/SDA) и если защита от записи EEPROM управляется контроллером (по умолчанию т.е. прошить не получится) - подсоединить параллельно внутренней EEPROM внешнюю с таким же адресом, но с зашитыми "0". По идее одновременный доступ к шине 2 EEPROM считаются "0", соответственно загрузка по I2C будет отменена.
  3. В общем получилось - просто подключился к SCL/SDA другим устройством (тоже на FX2, программатора I2C поблизости не было) и прошил EEPROM из вне))
  4. Связался с техподдержкой по нерабочему прибору - ответили, есть всё-таки SCL/SDA на внешнем разъёме. Алгоритм действий прислали - отключаете прибор, перемычку SDA к земле, подключаете к компу, перемычку убираете и шьёте нашей утилитой. Попробовал, не работает)) Посмотрел осциллографом - как только перемычка убирается (хоть через 10 секунд, хоть через минуту) сразу идет 500мс загрузка с EEPROM (судя по всему), т.е. сброса контроллера не происходит. Так как его правильно сбросить?
  5. Цитата(jcxz @ Aug 15 2016, 17:28) А что в ней чудесного? Ну если нужна, то она есть в составе "Cypress Suite USB". Я EEPROM прошивал сам... насколько помню. На основе этого сообщения вопрос и появился
  6. Цитата(jcxz @ Aug 15 2016, 13:55) Очевидно, что это описано в документации. Помнится там должен быть какой-то заголовок. Если только по первому байту, то про 0xC0, 0xC2 - это понятно. Сейчас там 0xC2 - загрузка из EEPROM. Просто здесь на форуме описывали чудесную программу CyConsole, с помощью которой можно перепрошивать FX2 и которая лучше EzMr (я ей всё прошивал). Вот я и интересуюсь.
  7. Цитата(jcxz @ Aug 13 2016, 10:58) Насколько помню: если в EEPROM нет прошивки или она невалидна, то сабж должен переходить в режим загрузки прошивки по USB. И как определяется её невалидность? Грубо говоря при обновлении прошивки вместо 16Кб данных записалось только 8, после этого работоспособность была утеряна (хотя до этого родная прошивка слетела по непонятным причинам).
  8. Подскажите, так можно ли очистить EEPROM без прямого доступа к ней. Т.е. есть закрытый прибор на FX2, в нем доступ возможен только к USB порту. Прошивка убита - при подсоединению к компу определяется как неизвестное устройство (VID/PID = 0).
  9. Подделка STM32F407?

    Не совсем в тему, но тоже про подделки. Долгое время использовали DS1086L Spread-Spectrum EconOscillator. Это 8-ногая микросхемка выдающая программируемую болтающуюся частоту. Программируется по I2C. В железе прошивается один раз. Так вот несколько лет было всё нормально и тут купили партейку. По виду выходная частота есть, но регулируется только предделителем, а точной настройки нет. Регистры считываются все, а вот пишутся только 2 (предделитель и еще какой-то). Регистр цапы (точная настройка) и диапазона не пишется. Теперь отсылаем поставщику - хорошо партия небольшая. Кстати эта партия чуть отличается дополнительной маркировкой. У нормальной что-то вроде XY443, у кривой 443XY. Причем это уже второй раз - год назад было так же.
  10. Непонятки с UDP у SAM7S64

    Всё, вроде разобрался)) Теперь работает везде где проверял с тестами и так (XP, 8.1 и 10). Причина была во флаге TXCOMP. У меня использовался переделанный пример из под FREERTOS, и есть там такая фича - сброс сразу кучи прерываний в обработчике (осталась у меня в проекте). А TXCOMP был задефайнен в эту кучу. Т.е. TXCOMP сбрасывался еще до обработки прерывания на него. Соответственно сделал сброс TXCOMP только в одном месте после полной обработки соответствующего прерывания - проблема ушла.
  11. Непонятки с UDP у SAM7S64

    Цитата(misyachniy @ Apr 18 2016, 20:20) Не могу понять по картинке, где ошибка? Ищите у себя в программе. Вот моих два старых проекта на SAM7S http://njnmnp.narod.ru/proj/usb_bulk_sam7/usb_bulk_sam7.html http://njnmnp.narod.ru/proj/prog16/prog16.html Ошибка в том, что запрос SetAddress не проходит - SETUP пакет не принимается корректно. Что касается двух ссылок с проектами, то оба проекта не работают под искомой системой (в Windows XP на другой машине работают). Отличие только в том, что возвращается STALL на запрос SetAddress (в моем случае идет безответный сбой). Естественно после этого устройство не работоспособно. PS: Может у кого есть точно рабочий проект с USB на SAM7S64? Проверенный на 8-ке и без больших тормозящих навесок (с задержками более 1мс между обработкой прерываний скорее всего заработает), нужен только процесс энумерации. Хоть бинарник киньте - попробую проверить.
  12. Непонятки с UDP у SAM7S64

    Цитата(misyachniy @ Apr 16 2016, 16:29) В чем вопрос? Получили RESET - все конечные точки в режим STALL. Не получили - продолжаете передачу. Я с SAM7S64 уже лет 5 не работаю. Но точно помню, что вопросов не возникало. RESET уже прошел - обработали и забыли. Далее идет обмен, вот картинка для наглядности: [attachment=100094:usbcrash.GIF] 8 байт отослали хосту, затем он рвет связь (что не удается отследить). В это время в очередь загружается последующие 8 байт и с приходом следующего SETUP получаем невосстанавливаемый сбой.
  13. Непонятки с UDP у SAM7S64

    Цитата(misyachniy @ Apr 15 2016, 19:38) Получили RESET - очищайте все передачи. И ждите SETUP. RESET получен, SETUP с запросом GetDeviceDescriptor 18 байт length. После 8 байт передачи идет следующий SETUP без RESET и всё. В старых системах (на XP) после такого шел RESET, а на 8-ке SETUP. RESET убрали для повышения скорости.
  14. Непонятки с UDP у SAM7S64

    Так все-таки, подскажите - запрос GetDeviceDescriptor после сброса, есть система запрашивающая 18 байт и честно получающая все 18 байт, эта же система может запросить 8 байт и ждет 8 байт. Тут всё нормально. Но есть система запрашивающая 18 байт, которая после получения 8 байт разрывает обмен и тут же посылает следующий SETUP пакет. Вот здесь и начинается самое интересное - если до разрыва контроллер успел забить очередь следующими 8 байтами, то при получении SETUP получаем тотальный сбой с невозможностью что либо принять/передать по USB, если же очередь заполнить не успели, то всё проходит нормально. Как на такое реагировать?
  15. Непонятки с UDP у SAM7S64

    Цитата(aaarrr @ Apr 1 2016, 15:55) Это значит, что нельзя, например, отдать эти восемь байт двумя пакетами по 4, а не то что можно не отдавать больше. А в запросе что стоит в wLength? Всё-таки на самой кривой системе запрашивает именно 18 (Windows 8.1 Intel Core i5, чипсет 82801). На других бывает и 8. Так что не определить.