універсальний програматор

Пропоную вашій увазі невеликий проект універсального Лего-програматора. Всім нам відомо, що з конструктора Лего можна зібрати все, що завгодно. Багато в чому все залежить тільки від вашої фантазії.

Іноді в практиці електронщика з'являється проблема, пов'язана з програмуванням який-небудь мікросхеми флеш пам'яті. Як вчинити? Купувати програматор - дорого, та, і пройде час і він не зрозуміє якусь нову мікросхему. Віддати кому небудь - але кому і знову гроші платити треба. Думаю, що в даній ситуації краще всього зібрати універсальний програматор самому. Адже насправді завдання програмування мікросхеми пам'яті є досить примітивною. Необхідно на певні висновки мікросхеми подати певні сигнали в певній послідовності. Тобто треба створити цифровий автомат. Якщо у вас є досвід в роботі з мікроконтролерами, то витративши не дуже багато часу на реалізацію це проекту, ви зробите пристрій, який з легкістю зможете використовувати для програмування чого завгодно, вносячи при цьому лише небольщой зміни в конструкцію і програми. Необхідно лише поглянути на документацію по мікросхемі, яку ви хочете запрограмувати. А для управління програматором будемо використовувати комп'ютер. Що для цього треба - сущі дрібниці.

  1. Колодка в яку можна вставити мікросхему для програмування (найважливіший компонент нашої системи).
  2. Те, до чого підключимо колодку - будь мікроконтролер, що має достатню кількість висновків для підключення, і з яким ви маєте достатній досвід роботи.
  3. Макетна плата, кому яка буде зручніше.
  4. Кілька всяких детальок.
  5. Комп'ютер, що має послідовний порт, з підключеним інтернетом для управління програматором і розваги, поки йде процес програмування.
  6. Встановлена ​​на комп'ютері система програмування.
  7. Звичайно ж, комплект документації на всі ці штуки, який ви знайдете в інтернеті.

У моєму випадку була необхідність запрограмувати мікросхему SST49LF004B. Ця мікросхема використовується в якості BIOS на багатьох системних платах. Для реалізації проекту було обрано:

Колодка від старої системної плати, випаяная феном. До колодці акуратно припаяна гребінка проводів, взятих з шлейфу жорсткого диска. Як мікроконтролера використаний 40 вивідний корпус AVR мікроконтролера ATMEGA16 c кварцовим резонатором на 11.0592 МГц. Макетна плата для монтажу без пайки. Кілька навісних компонентів, таких як резистори, конденсатори, регулятор напруги.

При монтажі особливу увагу треба приділити якості розводки харчування та встановлення блокуючих конденсаторів. Настійно рекомендую розпаяти один керамічний конденсатор безпосередньо на колодці для програмування мікросхеми. Так, ще знадобиться перехідник для комунікаційного порту. Я використовував готовий, що залишився від бог знає, якого розібраного пристрою. Його можна зібрати на парі транзисторів або на мікросхемі типу MAX232. Стабілізатор напруги, зібраний на регуляторі, має перемичку, яка визначає вихідна напруга 3.3 В або 5.0 В. Мікроконтролер програмується на 5 В, потім працює і програмує SST49LF004B на 3.3 В. Збираємо всі зібрані штучки на монтажній платі та, дотримуючись полярності, підключаємо харчування. Повну принципову схему не наводжу, бо макет, показаний на фотографії досить наочний і збирається з того, що є в наявності. Звертаю увагу лише на те, що в поєднанні комунікаційних портів використовуються лінії GND, RXD, TXD. а також RTS з боку вибору програм (CTS з боку комп'ютера). Нижче наводжу фотографії готового програматора, чи не так, простенько виглядає?

універсальний програматор

універсальний програматор

і те, що до нього ще треба додати.

Запуск програматора відбувається при посилці на послідовний порт (USART) відповідного байта:

1 - прочитати ідентифікатор мікросхеми (для SST49LF004B два байта)

2 - вважати дані

3 - стерти дані

4 - записати дані

5 - прочитати 1к байт (для налагодження)

Процедура wait1 () використовується для внесення невеликої додаткової затримки, аж надто довгі проводочки використовувалися в схемі програматора. Звуковий сигнал використовується як індикатор готовності, та й просто прикольно. Все інше закоментіровано в тексті програми або досить очевидно. Далі, повний вихідний текст програми, який реалізує алгоритм програмування мікросхеми SST49LF004B. Такий алгоритм мають багато мікросхеми, наприклад W39V040A, 49LF040A, firmwsre hub SST49LF004A і ін. Найчастіше вони використовуються для реалізації BIOS або Firmware різних пристроїв. Перепрошую за коменти англійською мовою, просто у мене тут все англійською.

Програма для комп'ютера написана досить недбало. Просто була взята форма, туди були накидані кнопки і текстові віконця і за подією «клацання на лівій кнопці» писалися відповідні процедури.

Так це виглядає програмний інтерфейс після прочитання ID і блоку даних в 1 кБ:

універсальний програматор

Тут наведу лише деякі важливі процедури з програми.

Ініціалізація комунікаційного порту (COM1):

Читання блоку даних (SIZE - кількість байт для читання):

Читання даних з мікросхеми і запис в файл "flash_r.bin".

Читання даних з мікросхеми і запис в файл "flash_r.bin".

Читання даних з файлу і запис в мікросхему: Порівняння двох файлів:

Порівняння двох файлів:

Найважливіше це правильно конфігурувати комунікаційний порт. Зверніть увагу на RTS_CONTROL_HANDSHAKE. а також на те, що для передачі і прийому даних використовуються різні процедури: TransmitCommChar (hCom, buff [i]) ReadFile (hFile, buff, SIZE, d, NULL). Комп'ютер передасть байт в порт тільки тоді, коли встановиться лінія RTS з боку програматора. При програмуванні не відбувається ніяких перевірок. Ми просто встановлюємо правильні тимчасові затримки. Для перевірки ми просто зчитуємо дані з запрограмованої мікросхеми і звіряємо з оригіналом. Ось, мабуть і все. Хай живуть мікроконтролери і візуальні засоби програмування!

список радіоелементів

Схожі статті