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

Builder

Свой
  • Постов

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

  • Посещение

Весь контент Builder


  1. Не, мне что-то не хочется возится с ними, для мелкой поделки возни много, да и драйвера у wch-ic "из коробки", не нужно со своими возится, попробую, закажу макетку поиграться.
  2. А вы их пробовали? Присматриваюсь к ним, но смущает что мало информации по ним, стабильно ли работают. Думаю вот заказать отладочную плату, поиграться.
  3. Так вот и я о том-же, не корректно считаю плата сделана, нет тут честных 5В поддержки, как пишут. Видимо расчёт на то, что 5В плату в наше время уже не найти, а древние уже давно выброшены на свалку.
  4. Насчёт - не интересовались несогласен, помню как в конце 90-х все носились с этим PCI, даже в MAX-сы не сильно крупные от альтеры запихивали, потом на 66 МГц переходили. Насчёт того что не ставят - да, много не ставят, но проблем с мамками где есть PCI нет, а в промышленных компах и ISA до сих пор есть. Потрясу производителя, спросил через дилера, молчат, ещё раз спрошу. Смотрите фото, там чётко видно, что сигналы PCI.
  5. Я может бы с этим согласился, если бы в описании этой платы не было "3.3 V/5 V Universal PCI, 32-bit, 33 MHz". И я вижу, что другой производитель до сих пор ставит "честные" буфера. Я задал вопрос поддержке, пока молчат. Для меня это выглядит как не корректная информация, написали 3.3 V/5 V Universal PCI, а по факту это не так. Да как-то не получается ограничения по напряжению с 5В на 3.3В на 22Ом, только диоды могут не выдержать, я уже не помню подробности, но в рекомендациях по сопряжению 5В и 3.3В эти способом выходят заметно более высокие сопротивления, поставив которые потеряешь скорость.
  6. Попалась на глаза PCI тайваньская плата дискретных портов ввода/вывода. PCI сделан на Lattice 3.3V MachXO. Она 3.3V. В принципе там описывается, что можно активируя диод и ставя резистор обеспечить подключение 5В сигналов. Но дело в том, что на плате резисторы стоят гораздо более низких номиналов, чем это прописано в мануале на MachXO, специально нашел где это описывают. И это понятно, если поставить высокоомные резисторы, скорость потеряется на RC цепочке, что получиться, если бахнуть туда пару К ом. Кто-то ещё видел, что такую наглость практикуют? А то какое-то радиолюбительство получается в коммерческом продукте. up. Прикрепил фото, микросхема там LCMXO1200C, резисторы 22R В общем или я что-то не понимаю, или это жуткая халтура.
  7. Попробовал. Переустановил, не удаляя не нужные мне семейства. Всё запустилось. Видимо есть некая зависимость, которая критична, а они её не отслеживают. Спасибо за совет!
  8. Переставлял винду. Поставил Diamond 3.10 64-bit for Windows, ничего не поменялось - эксепшин при старте. SP ставил - не помогло. Лицензия - с сайта FREE. Ставлось всё по умолчанию - на C диск. Есть тут представители, что могут дать совет, что делать? Что-то в моей системе не нравится. Система - как и было Win10 X64
  9. Исправляюсь: - Win10 x64 - старую (3.7) не трогал, доставлял в отдельные каталоги версии 3.9 и 3.10. Старая (3.7) продолжает работать. Сервиспаки для новых тоже ставил - не помогает.
  10. Может кто знает, что за фигня. Использовал версию 3.7 free. Решил обновиться, при запуске выскакивает окошко: Catch unknown exception. После нажатия ОК программа закрывается. Что на 3.9, что на 3.10. Непонятно что не нравится, может кто сталкивался? Поиск по инету ничего не дал.
  11. Понятно, как-то повлияет, но для количественной оценки нужно знать константы микросхемы и задержки, из которых по формулам, аналогичным app Altera, что прикрепил, оценивать как влияет. Причем это влияние сильно не линейно, в app показано, что доли наны очень сильно влияют на время сбоя, на несколько порядков. Но вопрос - стоит ли так делать в общем случае, остался открыт. Не в проекте лишний триггер и так погоды не делают - оставил два на входе.
  12. Так, ушли в сторону, обсуждать стандартные рекомендации, там и так всё понятно. Для новичком прикрепляю то, что уже было ранее на форуме. Вопрос был не в том, нужно ли 2, нужно, во всех рекомендациях так указывается, и объясняется почему, в этом случае вероятность ошибка крайне мала, в отличии от случая, когда один стоит. Иногда и 3 могут рекомендоваться, но тут нужно технологию чипа знать, что бы посчитать вероятность, оправдано ли 3. Причем во всех рекомендациях указано, что два регистра ставятся без логики между ними, тоже в принципе понятно - меньше вносим новых задержек, меньше вероятность повлиять на второй триггер, в худшую сторону. Вопрос был в том - насколько корректен код SM и почему, когда у него перед вторым триггером стоит простая логика. Я понимаю, что вроде как логику маппер скорее всего поставит от триггера родную - та что перед триггером, т.е. вероятность ухудшить ситуацию небольшая. Но это не гарантируется, и нужно ещё разобраться, насколько это ухудшает ситуацию. Не правильнее ли ставить два триггера и уже со второго что-то считать, как сделано в сообщении #13 (я у себя примерно так-же делаю). Да, так лишний может быть так (в среднем пол такта), но зато голова не болит, всё ли правильно работает. Или я что-то не понимаю... async_signals.pdf an042.pdf design_rules_for_stable.pdf CummingsSNUG2001SJ_AsyncClk_rev1_1.pdf
  13. Вы не знаете, будут они рядом стоящие, или не рядом. Только если обконстренить, что хлопотно очень. Если встречали в рекомендации по метастабильности такой вариант - покажите где.
  14. Тема старая, так получилось, случайно нарвался, копаясь в архивах по теме. Не совсем понял, по модулю SM: почему при пере-синхронизации в новый домен сигнал до анализа пропускается только один триггер, а не как обычно по классике в перессинхронизаторах - через два, и сделано в модуле из сообщения #15 ? По идее строка "reg [1:0] out_at_clkb;", должны быть "reg [2:0] out_at_clkb;" где первые два триггера просто пропускают сигнал и только перед третьим ставим логику. Разве так можно, с одним чистым триггером? Считаем что простейшая логика с сигналом от своего триггера работает так-же как и чистый триггер?
  15. развожу плату PCI на FPGA, 32 бита, 33 МГц, мастер/слейв. Сопряжение с 5В делаю на idt3861, как рекомендуют. Они 10 битные. Как на зло - сигналов получается 51, ставить корпус ради одного сигнала как-то не хочется. Вижу два варианта: 1) SERR - открытый коллектор, выход, есть мысль его пустить через резистор на шину PCI, не забыв в FPGA включить защитные диоды. Исходя из описания, учитывая что там открытый коллектор, вроде ничего плохого не будет. ТО, что будут затяжки - предусмотрено в спецификации, п. 3.7.4.2. 2) вообще не разводить SERR. Пока склоняюсь к варианту 1, т.к. вариант 2 получается не запаиванием резистора. Кто на опыте, что скажете - вариант 1 годится?
  16. Под рукой нету, но точно помню что всё это написано в стандарте - поднимите pdf и посмотрите, там всё четко расписано.
  17. Спасибо, получил. Если кому в Минске надо - могу одолжать на время, пишите.
  18. Спасибо, с этой ценой я поиском не находил. Визуально такой-же в других местах продают дороже. Если утвердят Lattice - для программирования самое то.
  19. Спасибо, не видел. Но если честно, если нет под рукой FT2232H Board, то затраты не менее чем заказать на ebay: купить, собрать, запустить. Пока самым оптимальным вариантом вижу что-то типа: http://www.ebay.com/itm/USB-ISP-Download-C...3UAAOSwp5JWYunl http://www.ebay.com/itm/USB-ISP-Download-C...lUAAOSwv0tVEuMx На ali дороже. Но не вижу отзывов явных. Только если косвенно - рейтинг продавцы высокий, значит вероятность что всё работает высокая.
  20. До этого работал с Altera и немного с Xilinx, там как-то с программаторами всё ясно, особенно с Atrera-й, бластеры с ali за "за копейки" работают, функцию выполняют и выбор продавцов большой, отзывов много, можно о покупки почитать что люди покупают и что работает, проверено. Но для текущего проекта больше подходит Lattice. Встал вопрос программатора. Родной hw-usbn-2b не гуманен по цене. На ebay и aliexpress продают, как я понял клон hw-usbn-2a. На eba, судя по фото есть и оригинал (если не подделали, а то цена такая-же как и не оригинал). В общем кто покупал - можно брать, работают? А то ценник за 30 USD получается, это не 4-5 USD, как на Altera-у, жалко будет если что-то с ними не так.
  21. Вроде не оно, я это видел, в CubeMX пишет что 25MHz у меня шина, но я не перепроверил что оно там генерировало. Нет времени разбираться, пока работает, это пока для тестов сделано, протестирую как будет себя вести. Если интересно - в архиве почти "голый проект" от CubeMX, ничего лишнего, есть и от CubeMX файл.
  22. В общем плюнул на код, который с генерировал CubeMX, взял для теста пример - с ходу заработал. На первый взгляд библиотеки/функции используются те-же самые. Как будет время - сравню, чем отличаются/где ошибка. Добавлю, кажется нашел. Не нравились мои настройки частот в функции SystemClock_Config. Перенес настройки из работающего примера в неработающий - вроде всё заработало. А CubeMX на мои совсем и не ругался, хотят он проверяет корректность. Вот такой вот забавный эффект от некорректной настройки частот, будьте внимательны...
  23. Попробовать можно, но если прочитаете первое сообщение - я дошел до функции USB_WritePacket, в которой идет перезапись из буфера в регистры USB. Так там всё вычитывается правильно, я вижу младшим байтом то, что должна передаться. А реально приходит не тот байт. Уже думал на программу со стороны PC, но потестил древней простой MTTTY.exe из старых примеров VS, много используемой ранее. Привожу куски, как отправляю: Если так отправляю, работает void StartDefaultTask(void const * argument) { /* init code for USB_DEVICE */ MX_USB_DEVICE_Init(); /* USER CODE BEGIN 5 */ uint8_t buf_add1[]="-"; uint8_t buf_add2[]="123;"; osDelay(10000); for(int i=0;1;i++) { // Этот код работает --------------------------------------- while(CDC_Transmit_FS(buf_add1, 1)!=USBD_OK) osDelay(1); osDelay(100); while(CDC_Transmit_FS(buf_add2+2, 2)!=USBD_OK) osDelay(1); osDelay(100); while(CDC_Transmit_FS(buf_add2+1, 3)!=USBD_OK) osDelay(1); osDelay(100); while(CDC_Transmit_FS(buf_add2, 4)!=USBD_OK) osDelay(1); osDelay(100); } /* USER CODE END 5 */ } А если так, не работает - кашу получаю void StartDefaultTask(void const * argument) { /* init code for USB_DEVICE */ MX_USB_DEVICE_Init(); /* USER CODE BEGIN 5 */ uint8_t buf_add1[]="-"; uint8_t buf_add2[]="123;"; osDelay(10000); for(int i=0;1;i++) { // Этот код НЕ работает - передает "кашу" while(CDC_Transmit_FS(buf_add2, 1)!=USBD_OK) osDelay(1); osDelay(100); while(CDC_Transmit_FS(buf_add2+1, 1)!=USBD_OK) osDelay(1); osDelay(100); while(CDC_Transmit_FS(buf_add2+2, 1)!=USBD_OK) osDelay(1); osDelay(100); while(CDC_Transmit_FS(buf_add2+3, 1)!=USBD_OK) osDelay(1); osDelay(100); } /* USER CODE END 5 */ } По буферам - буфера хоть и локальные, но статичны по сути, т.к. в функции бесконечный цикл задачи ОС. Если есть возможность - попробуйте у себя передавать данные по 1 байту с паузой, как в моем тестовом примере, будет ли работать и на каком процессоре? Добавлю: проблемы наблюдаю, если посылки делаю по 1 или 2 байта, 3 байта вроде уходят нормально, возможно сразу не так что-то посмотрел. Я понимаю, что по USB отправлять пакеты по 1-2 байта не есть гуд, но при малых объемах так удобнее, чем собирать данные в пакет и отправлять пакетом...
  24. не похоже - нашел место, где идет запись в регистр. На первый взгляд всё читается из буфера и пишется в регистр правильно. Похоже или какая-то особенность реализации у STM32CubeMX, которую не учитываю или ошибка в инициализации железа.
×
×
  • Создать...