Spi-програматор з інтерфейсом usb на базі чіпа ftdi ft232h

Spi-програматор з інтерфейсом usb на базі чіпа ftdi ft232h

Добрий час доби, шановне співтовариство.

Давно вже читаю як основний сайт, так і сайт спільноти, але вирішив все таки перестати мовчати, зареєструватися і написати свій перший пост. Якраз і привід для цього з'явився.
Справа в тому, що я вже давно цікавлюся модифікацією і прошивкою BIOS'ов, веду відповідну тему на overclockers.ru і розробляю софт для полегшення процесу модифікації і прошивки для простих користувачів (мой профиль на GitHub).
Оскільки модифікації BIOS'а досить складно тестувати на віртуальному залозі, то доводиться постійно користуватися апаратним SPI-програматором.
Програмувати SPI-чіпи, розраховані на напругу 3,3 В можна практично що завгодно і через що завгодно, але на ринку відсутні одночасно дешеві (до 20 євро) і швидкі (прошивка 64Mbit чіпа за 2 хвилини) рішення, а купувати собі повноцінний програматор за 50 євро при необхідності шити, фактично, 3-5 найменувань чіпів з однаковими характеристиками - дорого і нецікаво.
Виходячи з цього, я вирішив розробити свій власний дешевий програматор 3.3 В SPI-чіпів.

схема:

верх:

низ:

UPD: оновив розведення згідно з рекомендаціями, спасибі величезне всім, хто відгукнувся.
Схема і розводка в форматі KiCAD - на GitHub.

У домашніх умовах плату вирішив не труїти, занадто багато всього доведеться купити, та й замовити пробну партію на PCB-POOL виходить з ціною в

7 євро за штуку, що хоч і не дешево, але терпимо, тим більше, що надлишки можна запаяти і продати через EBay.

Тепер про софт. Як програмна частини використовується утиліта flashrom. в останній версії якої є підтримка программаторов на використовуваному чипі. Утиліта підтримує гору різних чіпів і може бути зібрана практично під будь-яку ОС.

UPD: Спасибі величезне всім, особливо товаришеві Vga за критику і доповнення. Все вийшло.
Замовив плати на www.pcb-pool.com. за 11 штук без паяльної маски і шовкографії вийшло трохи більше 60 євро, що недешево, але для Європи нормально.
Термін виконання був обраний максимальний з доступних - 8 робочих днів. Не підвели, рівно на 8 день ввечері плати були відправлені.
У комплект до платам поклали вирізаний лазером з листа нержавіючої сталі шаблон для нанесення паяльної пасти, а також відсмоктування для припою в якості подарунка за перше замовлення. Спілкування з фірмою сподобалося, буду користуватися їхніми послугами і далі, якщо доведеться робити щось невеликою партією.

Тепер, як і обіцяв, результати бенчмарка:
1. Читання 64Мбит чіпа Winbond W25Q64 - 67 секунд.
2. Видалення цього ж чіпа - 120 секунд.
3. Повний цикл читання / стирання / запис - 145 секунд.
Для прошивки використовувалася утиліта flashrom версії 0.9.6.1.

Собівартість всього пристрою вийшла

17 євро, мета вкластися в діапазон «менше 20» досягнута.

UPD2: Проект прийнятий в список підтримуваних flashrom'ом программаторов.
Англомовне опис проекту разом зі списком матеріалів ви можете знайти на RandomProjects.org.

Ще раз спасибі всім. Вдалих пайок і прошивок!

З приводу розведення - наскільки я пам'ятаю, вони повинні бути по можливості однакової довжини і без різких кутів. Є якісь ще вимоги до розведення таких ліній? Все так плюс для USB є вимоги до хвилевого опору лінії. Правда, я їх не пам'ятаю. В принципі, при такій довжині швидше за все досить вести їх паралельно і близько.
Що до захисту - ферритові намистини в лініях даних я не бачив жодного разу. Вони не похер сигнал так, що взагалі нічого працювати не буде? Якщо намистину і ставити, то в VCC. Ну і без захисту багато девайси (навіть не зовсім китайські) цілком обходяться, але якщо ставити - то або сборочку USB HS захисту, або, хоча б, пару резисторів на 22 ома.
Щось в DIP8 - це сокет для SPI-чіпів. ) Можна спробувати, але це вже косметика, на мою. Ні. DIP там нічим не прив'язаний, зате займає місце, звідки найближче кварц тягнути. Ну і землю кварцу не так треба тягнути. Її потрібно під'єднати безпосередньо до земляного піну FT-шки (можливо - до якогось конкретного) і більше нічого до цієї лінії не підключати.

А так, крім USB і кварцу напортачить тут особливо ніде.

Її потрібно під'єднати безпосередньо до земляного піну FT-шки (можливо - до якогось конкретного) і більше нічого до цієї лінії не підключати. Начебто так і зробив, навіть додав розрив, щоб вся земля під кварцом, на якій стоять C2 і С4 виявилася підключена до землі МК і більше ні до чого.
Суппрессори ці стоять на схемі з даташіта, і на референсной платі. Я тут подивився на різні USB-штуковини на МК, що навколо мене лежать - або використовуються діодні збірки на зразок такої. або просто безпосередньо без нічого.

Начебто так і зробив, навіть додав розрив, щоб вся земля під кварцом, на якій стоять C2 і С4 виявилася підключена до землі МК і більше ні до чого. А, дійсно ... Я б прибрав полігон і залишив тільки доріжку, збирати на цю землю перешкоди совршенно ні до чого.
Суппрессори ці стоять на схемі з даташіта, і на референсной платі. У тебе на платі розведені НЕ супресори (це стібілітроноподобние діоди і ставляться вони не в розрив лінії, а між лінією і землею), а ферритові намистини (ось вони якраз ставляться в розрив). Я такого ні разу не бачив і підозрюю, що на HS намистини задавлять сигнал (хоча хз). Від статики вони, до того ж, все одно не захистять, вони від ВЧ перешкод, але USB воно не потрібно AFAIK.

У мене не було хорошого позначення для цієї деталі на схемі, використовував то що є, каюсь, треба було намалювати. FB1 і FB2 - це ось така деталька. PulseGuard ESD Suppressors help protect sensitive
electronic equipment against electrostatic discharge (ESD).
They supplement the on-chip protection of integrated
circuitry and are best suited for low-voltage, high-speed
applications where low capacitance is important. Data ports
utilizing such high-speed protocols as USB 2.0, IEEE1394,
HDMI and DVI can bene fi t from this new technology

Якщо і правда така - то ти їх неправильно включаєш. Так вони сигнал задавлять з гарантією. Сапресори потрібно включати між землею і захищається лінією, а не в розрив лінії.

Практично на всіх сучасних платах з однієї мікросхемою BIOS стоять звичайні DIP8 в сокетах, щоб не випоювати їх в разі збою, а просто витягти і поміняти. Винятки - плати Gigabyte і EVGA, там стоять припаянности SOIC8, але вони дублюються. Шити такі можна або випаявши і вставивши в перехідник SOIC8 -> DIP8, або підключивши контакти гребінки безпосередньо до чіпу чи до роз'єму SPI на платі, якщо він є.

Один з небагатьох прикладів коли прізводітель зберігає здоровий глузд і ремонтопридатність вироби. А як взагалі ремонтнопригодность і доцільність ремонту сучасних мамок в порівнянні з 10-річними виробами? А то у мене чомусь таке враження що на ринку завжди є тільки 4-5 нормальних плат, а решта дикий ширвжиток. Думаю пара статей про сучасні материнки (особливості використовуваної електроніки, діагностика найбільш частих глюків, цінний Лут) будуть цікаві спільноті.

Дякуємо. Від себе можу тільки додати що через гонитву за тонкістю і дешевизною механічне розтріскування материнки в дешевих ноута стало буденністю (особливо якщо їх тосіть за один кут відкритими) через згинання плати разом з корпусом. Ех, де ж часи мого 440ВХ, який пережив незліченні оверклокінгом і реанімації, причому нерідними компонентами ...