Перетворювач шини інтерфейсу CAN на USB
Цей проект призначений для виготовлення простого пристрою для моніторингу шини CAN. Я вибрав мікропроцесор NUC140LC1CN 32K Cortex-M0 з однієї головної причини – він має периферійні блоки USB і CAN.
Характеристики проекту
- Простота розробки
- Сумісність з протоколом LAWICEL CANUSB
- Моніторинговий пристрій відображається як USB FTDI пристрій
- Підтримка 11-бітних CAN 2.0A і 29-бітних CAN 2.0B кадрів
- Наявність внутрішнього буфера повідомлень FIFO CAN
- Живлення від USB порту
- Завантажувач, що зберігається в пам'яті USB запам'ятовуючого пристрою, для оновлень мікропрограми
- Мікропрограма, яка доступна для завантаження
Схемне рішення
Для дозволу периферійному блоку NUC140 CAN з'єднуватися з шиною CAN необхідна наявність приймач-передавача CAN. Для цієї мети найбільш підходить мікросхема TJA1051T від компанії NXP. Блок NUC140 може працювати від джерела живлення напругою 5В. Тому немає необхідності у використанні додаткового стабілізатора напруги на 3.3В. Це дозволяє значно спростити задачу реалізації інтерфейсу шини CAN. У схемі передбачено три світлодіодних індикатора стану:
- D1 – індикатор стану USB з'єднання з хостом
- D2 відображає активність шини CAN
- D3 відображає помилки інтерфейсу CAN
NUC140 не має вбудованого завантажувача і єдиним способом його запрограмувати - використовувати інтерфейс ARM Serial Wire Debug (SWD) (коннектор J2) і програматор Nuvoton ICP. Ну і звісно, якщо завантажувач вже заздалегідь запрограмований, то його можна активувати. Для цієї мети необхідно використовувати джампер JP1. Використання джампера JP1 перед подачею живлення на інтерфейс призведе до запуску завантажувача.
Завантажувач
Флеш-пам'ять NUC140LC1 поділена на дві секції. Одна з них призначена для виконання коду користувацької програми (APROM) розміром 32K, а інша для завантажувача (LDROM). Розмір LDROM лише 4K, що ускладнює створення повнофункціонального USB завантажувача. Я використав завантажувач, розміщений на запам'ятовуючому пристрої (MSD), наданий Nuvoton. Встановлення джампера JP1 запускає виконання завантажувача. В результаті знімний диск буде відображатися у файловій системі хоста розміром 32 кБ. Просто скопіюйте і вставте або перетягніть та опустіть оновлення мікропрограми CAN-USB на диск завантажувача. Від'єднайте USB кабель, зніміть джампер і знову підключіть кабель. Тепер повинна виконуватися оновлена мікропрограма.
Програмування інтерфейсу CAN-USB і NuTiny-SDK-140
Для програмування процесора NUC140 знадобиться програматор Nu-Link від Nuvoton і програмне додаток Nuvoton ICP. Але замість нього я вирішив використовувати демонстраційну плату NUC140 (NuTiny-SDK-140), доступну від Digi-Key. Вона має дві частини, частину з мікросхемою NUC140 та власне програматор Nu-Link. Плата рівномірно перфорована, що дозволяє від'єднати частину Nu-Link. Насправді ви можете виготовити даний пристрій виключно на демонстраційній платі NuTiny-SDK-140, додавши лише додаткову мікросхему приймач-передавача CAN.
При підключенні Nu-Link процес програмування NUC140 стає нескладним. Ключовим питанням є вибір завантаження з LDROM замість APROM (у налаштуваннях Config) для забезпечення функціонування USB завантажувача.
Програмне забезпечення
Інтерфейс CAN-USB сумісний з протоколом LAWICEL CANUSB і буде працювати з додатками, призначеними для цього протоколу. Я протестував два додатки з інтерфейсом CAN-USB:
CANHacker V2.00.02
Це безкоштовне додаток CANHacker. Я не зміг знайти посібник користувача для цього додатка. Проте воно досить просте і інтуїтивно зрозуміле у використанні.
CAN Monitor Pro V2.2
Дане додаток розроблено wgsoft.de. Зверніть увагу, що даний сайт розробника в основному німецькою мовою.
Дизайн друкованої плати
Список радіоелементів
Обозначення | Тип | Номінал | Кількість | Примітка |
---|---|---|---|---|
IC1 | Мікросхема | NUC140LC1CN | 1 | |
IC2 | Мікросхема | TJA1051T | 1 | |
D1 | Світлодіод | Зелений | 1 | |
D2 | Світлодіод | Жовтий | 1 | |
D3 | Світлодіод | Червоний | 1 | |
С1, С6 | Конденсатор | 10 мкФ | 2 | |
С2, С3, С7, С8 | Конденсатор | 0.1 мкФ | 4 | |
С4, С5 | Конденсатор | 20 пФ | 2 | |
R1, R2 | Резистор |
100 Ом
|
2 | |
R3 | Резистор |
10 кОм
|
1 | |
R4-R6 | Резистор |
330 Ом
|
3 | |
Х1 | Кварцовий резонатор | 12 МГц | 1 | |
J1 | USB-роз'єм | 1 | ||
J2 | Роз'єм | 5-виїздів | 1 | |
J3 | Роз'єм | 3-виїздів | 1 | |
JP1 | Роз'єм | 2-виїздів | 1 | |
Прикреплені файли:
- can_monitor_firmware.zip (12 Кб)
- can-monitor_Eagle_files.zip (62 Кб)
- can-monitor_Gerber_files.zip (29 Кб)