Оглавление:

Пример программирования MTP Arduino: 5 шагов
Пример программирования MTP Arduino: 5 шагов

Видео: Пример программирования MTP Arduino: 5 шагов

Видео: Пример программирования MTP Arduino: 5 шагов
Видео: 7 ПОЛЕЗНЫХ устройств на АРДУИНО, которые можно собрать за 15 минут. 2024, Июль
Anonim
Пример программирования MTP Arduino
Пример программирования MTP Arduino

В этом руководстве мы покажем, как использовать программный скетч SLG46824 / 6 Arduino для программирования устройства Dialog SLG46824 / 6 GreenPAK ™ с многократным программированием (MTP).

Большинство устройств GreenPAK являются одноразовыми программируемыми (OTP), что означает, что после того, как их банк энергонезависимой памяти (NVM) записан, он не может быть перезаписан. Пакеты GreenPAK с функцией MTP, такие как SLG46824 и SLG46826, имеют другой тип банка памяти NVM, который можно программировать более одного раза.

Мы написали скетч Arduino, который позволяет пользователю программировать MTP GreenPAK с помощью нескольких простых команд последовательного монитора. В этом руководстве мы используем SLG46826 в качестве нашего GreenPAK с MTP.

Мы предоставляем образец кода для Arduino Uno с использованием платформы с открытым исходным кодом на основе C / C ++. Дизайнеры должны экстраполировать методы, используемые в коде Arduino, для своей конкретной платформы.

Для получения конкретной информации о технических характеристиках сигнала I2C, адресации I2C и области памяти см. Руководство по внутрисистемному программированию GreenPAK на странице продукта SLG46826. Эта инструкция предоставляет простую реализацию этого руководства по программированию.

Ниже мы описали шаги, необходимые для понимания того, как был запрограммирован чип GreenPAK. Однако, если вы просто хотите получить результат программирования, загрузите программное обеспечение GreenPAK, чтобы просмотреть уже заполненный файл дизайна GreenPAK. Подключите GreenPAK Development Kit к своему компьютеру и нажмите программу, чтобы создать индивидуальную ИС.

Шаг 1: Подключения Arduino-GreenPAK

Соединения Arduino-GreenPAK
Соединения Arduino-GreenPAK
Соединения Arduino-GreenPAK
Соединения Arduino-GreenPAK

Чтобы запрограммировать NVM нашего SLG46826 GreenPAK с нашим скетчем Arduino, нам сначала нужно подключить четыре контакта Arduino Uno к нашему GreenPAK. Вы можете подключить эти контакты напрямую к адаптеру розетки GreenPAK или к коммутационной плате с припаянным GreenPAK.

Обратите внимание, что внешние подтягивающие резисторы I2C не показаны на рисунке 1. Подключите подтягивающий резистор 4,7 кОм от SCL и SDA к выходу 3,3 В. Arduino.

Шаг 2. Экспорт данных GreenPAK NVM из файла проекта GreenPAK

Экспорт данных GreenPAK NVM из файла проекта GreenPAK
Экспорт данных GreenPAK NVM из файла проекта GreenPAK
Экспорт данных GreenPAK NVM из файла проекта GreenPAK
Экспорт данных GreenPAK NVM из файла проекта GreenPAK
Экспорт данных GreenPAK NVM из файла проекта GreenPAK
Экспорт данных GreenPAK NVM из файла проекта GreenPAK

Мы соберем очень простой дизайн GreenPAK, чтобы проиллюстрировать, как экспортировать данные NVM. Схема ниже представляет собой простой переключатель уровня, где синие контакты слева привязаны к VDD (3,3 В), а желтые контакты справа - к VDD2 (1,8 В).

Чтобы экспортировать информацию из этого дизайна, вам нужно выбрать File → Export → Export NVM, как показано на рисунке 3.

Затем вам нужно будет выбрать Intel HEX Files (*.hex) в качестве типа файла и сохранить файл.

Теперь вам нужно открыть файл.hex в текстовом редакторе (например, Notepad ++). Чтобы узнать больше о формате и синтаксисе файлов Intel HEX, посетите его страницу в Википедии. Для этого приложения нас интересует только часть файла с данными, как показано на рисунке 5.

Выделите и скопируйте 256 байтов данных конфигурации NVM, находящихся в HEX-файле. Каждая копируемая строка состоит из 32 символов, что соответствует 16 байтам.

Вставьте информацию в выделенный раздел nvmString скетча Arduino, как показано на рисунке 6. Если вы используете микроконтроллер, отличный от Arduino, вы можете написать функцию для анализа nvmData, сохраненного в файле GreenPAK. GP6. (Если вы откроете файл GreenPAK в текстовом редакторе, вы увидите, что мы храним информацию о проекте в легкодоступном формате XML.)

Чтобы установить данные EEPROM для вашего проекта GreenPAK, выберите блок EEPROM на панели компонентов, откройте его панель свойств и нажмите «Установить данные».

Теперь вы можете редактировать каждый байт в EEPROM индивидуально с помощью нашего графического интерфейса.

После установки данных EEPROM вы можете экспортировать их в файл HEX, используя тот же метод, который был описан ранее для экспорта данных NVM. Вставьте эти 256 байтов данных EEPROM в секцию eepromString скетча Arduino.

Для каждого нестандартного дизайна важно проверить настройки защиты на вкладке «Безопасность» в настройках проекта. На этой вкладке настраиваются биты защиты для регистров конфигурации матрицы, NVM и EEPROM. При определенных конфигурациях загрузка последовательности NVM может заблокировать SLG46824 / 6 в его текущей конфигурации и удалить функциональность MTP микросхемы.

Шаг 3: используйте эскиз Arduino

Используйте эскиз Arduino
Используйте эскиз Arduino

Загрузите эскиз в свой Arduino и откройте последовательный монитор со скоростью 115200 бод. Теперь вы можете использовать подсказки МЕНЮ скетча для выполнения нескольких команд:

● Чтение - считывает либо данные NVM устройства, либо данные EEPROM, используя указанный адрес ведомого устройства.

● Стереть - стирает либо данные NVM устройства, либо данные EEPROM, используя указанный адрес подчиненного устройства.

● Запись - стирает, а затем записывает либо данные NVM устройства, либо данные EEPROM, используя указанный адрес подчиненного устройства. Эта команда записывает данные, сохраненные в массивах nvmString или eepromString.

● Ping - возвращает список адресов подчиненных устройств, подключенных к шине I2C.

Результаты этих команд будут напечатаны на консоли последовательного монитора.

Шаг 4. Советы по программированию и передовые методы

В процессе поддержки SLG46824 / 6 мы задокументировали несколько советов по программированию, которые помогут избежать распространенных ошибок, связанных со стиранием и записью в адресное пространство NVM. В следующих подразделах эта тема рассматривается более подробно.

1. Выполнение точной записи 16-байтовой страницы NVM:

При записи данных в NVM SLG46824 / 6 следует избегать трех приемов:

● Страница записывает менее 16 байт.

● Страница записывает более 16 байт.

● Страница пишет, что не начинается с первого регистра на странице (IE: 0x10, 0x20 и т. Д.)

Если используется какой-либо из вышеперечисленных методов, интерфейс MTP игнорирует запись I2C, чтобы избежать загрузки NVM неверной информацией. Мы рекомендуем выполнить I2C-чтение адресного пространства NVM после записи, чтобы проверить правильность передачи данных.

2. Перенос данных NVM в регистры конфигурации матрицы.

Когда записывается NVM, регистры конфигурации матрицы не перезагружаются автоматически вновь записанными данными NVM. Передача должна быть инициирована вручную с помощью цикла PAK VDD или путем создания мягкого сброса с использованием I2C. Установив регистр по адресу 0xC8, устройство повторно включает последовательность сброса при включении питания (POR) и перезагружает данные регистра из NVM в регистры.

3. Сброс адреса I2C после стирания NVM:

Когда NVM стирается, адрес NVM, содержащий адрес подчиненного устройства I2C, будет установлен на 0000. После стирания чип будет поддерживать свой текущий адрес подчиненного устройства в регистрах конфигурации до тех пор, пока устройство не будет сброшено, как описано выше. После сброса микросхемы адрес ведомого устройства I2C должен устанавливаться в адрес 0xCA в регистрах конфигурации каждый раз, когда GreenPAK выключается и сбрасывается. Это необходимо делать до тех пор, пока новая адресная страница ведомого устройства I2C не будет записана в NVM.

Шаг 5: Обсуждение исправлений

Обсуждение исправлений
Обсуждение исправлений

При записи в «Байт стирания страницы» (адрес: 0xE3) SLG46824 / 6 выдает ACK, не совместимый с I2C, после части «Data» команды I2C. Это поведение может быть интерпретировано как NACK в зависимости от реализации ведущего устройства I2C.

Чтобы приспособиться к такому поведению, мы модифицировали программатор Arduino, закомментировав код, показанный на рисунке 11. Этот раздел кода проверяет наличие I2C ACK в конце каждой команды I2C в функции eraseChip (). Эта функция используется для стирания страниц NVM и EEPROM. Поскольку этот раздел кода находится в цикле For, «return -1;» линия заставляет MCU преждевременно выйти из функции.

Несмотря на наличие NACK, функции стирания NVM и EEPROM будут выполняться правильно. Для подробного объяснения этого поведения, пожалуйста, обратитесь к «Проблема 2: Не-I2C-совместимое поведение ACK для байта стирания страницы NVM и EEPROM» в документе об ошибках SLG46824 / 6 (Revision XC) на веб-сайте Dialog.

Заключение

В этом руководстве мы описываем процесс использования предоставленного программатора Arduino для загрузки пользовательских строк NVM и EEPROM в IC GreenPAK. Код в Arduino Sketch тщательно прокомментирован, но если у вас есть какие-либо вопросы относительно эскиза, пожалуйста, свяжитесь с одним из наших инженеров по полевым приложениям или разместите свой вопрос на нашем форуме. Для получения более подробной информации о регистрах и процедурах программирования MTP, пожалуйста, обратитесь к Руководству по внутрисистемному программированию Dialog.

Рекомендуемые: