Usb bsl что это

Обновлено: 06.07.2024

Программатор на основе загрузочного сектора MSP430 (BSL) позволяет пользователю обращаться к внутренней памяти микроконтроллера MSP430 в процессе макетирования, производства или обслуживания. Для модификации доступны как программная (флеш) память, так и память данных (ОЗУ).

Для связи используется общеизвестный протокол УАПП (UART) с интерфейсом RS232, обеспечивающий гибкое использование как программного, так и аппаратного обеспечения.

Для использования программатора на основе загрузочного сектора следует подать специальную последовательность сигналов BSL на определённые выводы процессора. После этого подаётся определённая последовательность команд в соответствии с требуемым режимом. Режим загрузки может быть прерван переходом по определённому пользователем адресу либо осуществлением аппаратного сброса (reset).

Обращение к данным в памяти MSP430 через программатор на основе загрузочного сектора защищёно от несанкционированного доступа пользовательским паролем.

Программатор на основе загрузочного сектора (BSL) представляет возможность программирования флеш-памяти микроконтроллера MSP430 в процессе разработки либо для обновлений. Активизация такого режима может быть осуществлена утилитой, передающей команды по широкоизвестному протоколу УАПП (UART). BSL даёт возможность пользователю контролировать функционирование MSP430 и осуществлять обмен данными с персональным компьютером либо другим устройством, поддерживающим протокол UART.

Для защиты программы BSL от случайного стирания она содержится в специальном, масочно запрограммированном на заводе загрузочном секторе ПЗУ. Программа BSL не может быть стёрта никакими методами. Код загрузчика тщательно оптимизирован под нужды BSL, доступ к нему осуществляется с помощью команд, описанных ниже в данном документе. В целях безопасности было обращено большое внимание на защиту пользовательского кода от несанкционированного считывания. Любая команда BSL, позволяющая непосредственное или опосредованное чтение данных защищена паролем.

Для активизации программатора на основе загрузочного сектора следует подать специальную последовательность сигналов BSL на определённые выводы процессора. После этого, передаётся символ синхронизации, сопровождаемый посылкой данных, определяющих выполнение желаемой операции.

2 Стандартная функция сброса (RESET) и активизация BSL

Формирование определённой последовательности сигналов на выводах -RST/NMI и TEST переводит MSP430 в режим выполнения программы с адреса сброса BSL, в отличие от обычного вектора сброса, расположенного по адресу FFFEh.

Если в приборе используется связь с ПК через УАПП (UART), эти 2 вывода могут управляться по линиям –DTR и -RTS последовательного порта (RS232) после соответствующего преобразования уровней. Детальное описание аппаратного обеспечения и сопутствующих вопросов дано в отдельном документе (см. Ссылки, раздел 14). Обычный вектор сброса по адресу FFFEh используется в том случае, когда вывод TEST находится в состоянии лог. «0» в то время, когда вывод RST/NMI переводится из лог. «0» в лог. «1» (стандартный метод, см. Рис 1).

Выполнение программы BSL начинается с того момента, как на вход TEST будет подано как минимум 2 положительных импульса и только в том случае, если вход TEST находился в состоянии лог. «1» во время фронта 0?1 на входе -RST/NMI (метод активизации BSL, см. Рис 2). Такая схема активизации повышает надёжность запуска BSL.

Рис. 1. Стандартная последовательность сигналов сброса (RESET)

Рис.2 Процедура активизации BSL с использованием выводов JTAG, объединённых с портами общего назначения

2.2 Микроконтроллеры с флеш-памятью MSP430 с обособленными выводами JTAG

Устройства с обособленными выводами интерфейса JTAG используют вывод TCK вместо вывода TEST.

Выполнение программы BSL начинается после того, как на входе TCK появятся как минимум два отрицательных перепада 1 ? 0 и, кроме этого, вход TCK находится в состоянии лог. «0» во время перехода 0 ? 1 на входе -RST/NMI (процедура активизации BSL, см. рис. 3). Такая схема активизации повышает надёжность запуска BSL.

Рис.3 Процедура активизации BSL с использованием обособленных выводов JTAG

3 Протокол УАПП (UART)

  • Скорость обмена 9600 бод, режим полудуплекс (один передатчик в любой момент времени).
  • Стартовый бит, 8 бит данных (первым передаётся МЗР), бит контроля по чётности (even), 1 стоп-бит.
  • Успешный приём подтверждается передачей соответствующего символа (acknowledge).

Примечание: Использование скоростей обмена выше, чем 9600 бод может привести к сбоям в связи либо ошибкам записи флеш-памяти из-за несоблюдения временнЫх параметров. Флеш-память в результате этого может быть подвергнута недопустимым нагрузкам, а операции стирания/записи не будут надёжно выполняться.

4 Последовательность синхронизации

Перед передачей любой из команд, следует отослать в BSL символ синхронизации (SYNC), равный 80h. Этот символ необходим для вычисления требуемых внутренних параметров, определяющих временнЫе параметры УАПП и стирания/программирования флеш-памяти. Эта операция формирует опорное системное время BSL.

Далее, BSL отправляет символ подтверждения DATA_ACK = 90h, сообщающий об успешном приёме.

Примечание: Символ синхронизации не входит в последовательность данных Data Frame, описанную ниже.

Существуют два типа команд: требующие и не требующие пароля. Все команды, потенциально допускающие прямой или косвенный доступ к данным защищены паролем.

  • Принять пароль
  • Полное стирание (стирает всю флеш-память, как основную, так и память данных)
  • Считать версию BSL (команда поддерживается в BSL версии V1.60 или выше, либо в загружаемой версии BL_150S_14x.txt)
  • Сменить скорость обмена (команда поддерживается в BSL версии V1.60 или выше, либо в загружаемой версии BL_150S_14x.txt)
  • Принять блок данных для программирования флеш-памяти, ОЗУ либо периферийных модулей
  • Передать блок данных
  • Стереть сегмент
  • Проверка стирания (команда поддерживается в BSL версии V1.60 или выше, либо в загружаемой версии BL_150S_14x.txt)
  • Загрузить программный счётчик и запустить пользовательскую программу

6 Процесс программирования

Процесс записи (команда «Принять блок данных» (RX data block)) во флеш-память, ОЗУ или в периферийные модули выполняется в режиме реального времени. Это означает, что байт либо слово данных обрабатывается непосредственно сразу после их принятия, а процесс записи завершается до того, как полностью принят следующий байт/слово. Таким образом, общее время записи определяется скоростью обмена, никакие способы буферизации не применяются.

Блоки данных, расположенные вне адресной области флеш-памяти, считаются загружаемыми в ОЗУ или периферийные модули, поэтому биты данных контроля флеш-памяти игнорируются.

Примечание: при потере связи по УАПП в результате помех на линии либо нарушении временнЫх требований к передаче блоков данных, единственным способом восстановления обмена является повторная инициализация BSL.

7 Формат посылки

Формат посылки данных, используемый программатором, представляет собой стандартный последовательный протокол (SSP) фирмы TI для MSP430, дополненный предваряющей синхропоследовательностью (SS), как было описано выше. В таблице 1 BSL является приёмником.

Очевидная избыточность некоторых параметров является следствием адаптации под SSP а также служит для экономии объёма ПЗУ загрузчика.

Дополнительная информация по стандартному последовательному протоколу (SSP) содержится в документе «Применение программы начальной загрузки в микроконтроллеры MSP430 с флэш-памятью: программные и аппаратные предложения (версия B)», Application of Bootstrap Loader in MSP430 With Flash Hardware and Software Proposal (SLAA096).

  • Первые 8 байт (от HDR до LH), которые являются обязательными (xx означает, что данные не являются значимыми).
  • Необязательные байты данных от D1 до Dn.
  • Два байта (CKL и CKH) контрольной суммы (являются необходимыми).

Подтверждение от BSL, необходимое для всех команд, кроме передачи блока данных и передачи версии BSL.

7.2 Контрольная сумма

16-битная (2 байта) контрольная сумма вычисляется по всем принятым/переданным байтам B1 … Bn в посылке за исключением собственно байт контрольной суммы путём выполнения операции XOR над операндами-словами (2 байта) и инверсией результата.

CHECKSUM = INV [ (B1 + 256*B2) XOR (B3 + 256*B4) XOR … XOR (Bn–1 + 256*Bn) ]

CKL = INV [ B1 XOR B3 XOR … XOR Bn–1 ] ; CKH = INV [ B2 XOR B4 XOR … XOR Bn ]

Таблица 1. Формат посылки команд BSL

Принятая команда BSL H D R C M D L1 L2 AL AH LL LH D1 D2..Dn CKL CKH ACK
Принять блок данных (RX data block) 80 12 n n AL AH n-4 0 D1 D2..Dn-4 CKL CKH ACK
Принять пароль (RX Password) 80 10 24 24 xx xx xx xx D1 D2..D20 CKL CKH ACK
Стереть сегмент (Erase segment) 80 16 04 04 AL AH 02/04 A5 - - CKL CKH ACK
Полное стирание (Mass erase) 80 18 04 04 xx xx xx xx - - CKL CKH ACK
Проверка стирания (Erase check) 80 1C 04 04 AL AH LL LH - - CKL CKH ACK
Сменить скорость обмена (Change baud rate) 80 20 04 04 D1 D2 D3 xx - - CKL CKH ACK
Передать блок данных (TX data block) 80 14 04 04 AL AH n 0 - - CKL CKH -
Ответ BSL 80 xx n n D1 D2.. …Dn CKL CKH -
Передать версию BSL (TX BSL version) 80 1E 04 04 xx xx xx xx - - CKL CKH -
Ответ BSL 80 xx 10 10 D1 D2.. …D10 CKL CKH

Примечания: Все цифры в таблице – байты в шестнадцатеричном виде
ACK передаётся обратно от BSL.
Синхропоследовательность не входит в блок посылки.
Команды «Проверка стирания» и « Передать версию BSL» не входят в стандартный набор команд (V1.50 или выше).
Команда « Сменить скорость обмена» не входит в стандартный набор команд (V1.60 или выше либо загружаемый BL_150S_14x.txt).

HDR DATA_FRAME = 80h означает ожидается посылка данных в соответствии со стандартным последовательным протоколом (SSP) фирмы TI для MSP430.

CMD Идентификатор команды

Таблица 4. Версия BSL 1.30 в микроконтроллерах серий F41x, F11x, и F11x1

Таблица 5. Версия BSL 1.40 в микроконтроллерах серий F12x

Таблица 6. Версия BSL 1.60 в микроконтроллерах серий F11x2, F12x2, F43x, F44x, FE42x, FW42x, FG43x

Целью данной статьи является помощь в начале освоения микроконтроллеров MSP430 фирмы Texas Instruments.

Была сделана попытка систематизировать действия, которые позволят минимальными усилиями сделать первые шаги в освоении данного типа микроконтроллеров, не перегружая при этом специфичными и иногда трудными (если не сказать отталкивающими) сведениями. Статья не претендует на полноту обзора указанных микроконтроллеров, а лишь позволяет сделать первые шаги на пути их освоения.

Преимущества MSP430:

1. Очень широкая линейка для практически любых задач.

2. Очень широкий ряд корпусов, от DIP до очень мелких типа pqfp.

Весь доступный ряд можно посмотреть с помощью удобной странички от TI:

mc165-1.jpg

Перейдя по ссылкам слева и выбирая нужную серию попадаем в каталог:

Каталог микроконтроллеров MSP430

Где можно выбрать нужный себе кристалл по объему Flash-памяти, ОЗУ, наличию USART, АЦП, корпуса и т.д. Сразу скажу, что я не использовал корпуса типа DIP. Корпус типа SOIC легко распаивается на самодельную плату изготовленную по технологии ЛУТ. Достаточно стабильно у меня получаются платы и для корпусов типа PW (расстояние между ногами 0,65мм).

3. Сверхнизкое потребление питания (бывает ну крайне важно). На этом остановимся поподробнее ниже с примерами и цифрами.

4. Мне также например нравиться то, что для одного и того же типа корпуса расположение ног для разных серий и типов в пределах серии одинаково. Это дает возможность легко заменить один тип на другой без изменения печатной платы.

5. Немаловажно, что все типы микроконтроллеров можно бесплатно заказать у TI для освоения.

В качестве примера два разных MSP430 в одинаковом корпусе, MSP430f2619 и MSP430f149:

MSP430f2619 и MSP430f149

Для начала освоения выберем msp430f1232 или msp430f1222, они отличаются только объемом flash памяти и абсолютно идентичны по расположению ног. Я считаю этот микроконтроллер самым ходовым в радиолюбительской практике. Его плюсом можно также назвать наличие модели его младшего брата msp430f1121 (без usart) в Proteus.

На этой странице есть даташит, а по этой ссылке прочие документы.

Документация от TI имеет особенность (для тех кто уже знаком с микроконтроллерами от, например AVR ATMEL). В даташите указываются специфичные именно для этого камня особенности (количество памяти, наличие USART, электрические характеристики и т.д.). А описание регистров находятся в документе MSP430x1xx Family User's Guide (Rev. F) для серии msp430f1xx. Этот документ общий для всей серии.

Есть также настольные книги "руководство пользователя" и "рекомендации по применению".

А также примеры исходных кодов для семейства msp430f1x по ссылке.

Минимальная обвязка для включения микроконтроллера:

Минимальная обвязка для включения микроконтроллера

Сперва нам понадобятся макетка и программатор.

Пример моей макетки в файле к статье.

Печатная плата

Теперь небольшое отступление на предмет программатора.

Микроконтроллеры msp430 могут быть запрограммированы следующим образом:
4-х проводной JTAG (прошивка и отладка (очень удобно)) бывает LPT и USB.
2-х проводной JTAG, так называемый Spyi-Bi-wire (прошивка и отладка) только USB.
BSL - последовательный интерфейс (только прошивка). COM или USB-COM.

Не все микроконтроллеры могут быть зашиты всеми указанными программаторами. Смотреть надо в даташите на каждый камень. (Так рекомендуемые для начала работы MSP430F1232 можно шить только по 4-х проводному JTAGу или по BSL) .

Где взять программатор? Естественно можно купить. Есть дорого фирменные от TI или от Olimex, а также море китайских клонов.

Например BSL (хотя bsl можно сделать из любого шнурка от сотового в котором есть линии RTS и DTR) можно найти на AliExpress.
JTAG через USB
JTAG через LPT

Также на сайте TI можно почти за даром заказать LaunchPad:

LaunchPad

Который в своем составе имеет 2-х проводной JTAG Spy-Bi-Ware USB, но к сожаленью этот Spy-Bi-Wire есть не во всех камнях. Я поигрался. Мне не пригодилось (у меня практически не было камней с поддержкой spy-bi-wire) и я его отдал другу для освоения.

Также программатор можно сделать и самостоятельно. Где взять детали, смотрите в конце статьи.

В архиве программатор bsl.rar схема BSL программатора на переходнике USB-COM

В архиве программатор JTAG LPT-FET.rar схема и печатка для программатора LPT-FET. Необходимо отметить, что это упрощенная мной схема LPT-FET от Olimex

Схема LPT-FET программатора от Olimex

mc165-8.jpg

И ей требуется внешнее питание 3.3В от платы микроконтроллера. Плата получилась компактная и умещается в корпус DB-25.

Плата программатора

Для BSL программатора корпуса еще нет, но скорее всего это будет кусок кабель-канала нужного сечения.

Схема BSL программатора

mc165-11.jpg

BSL программатор

Выходные сигналы BSL программатора выведены на разъемы типа PLS. И отдельно выведено питание 3.3В (бонусом так сказать)

Оба типа мной собраны и работают.

Программировать через JTAG можно из среды разработки. А для программирования через BSL используется бесплатная и удобная программа от Kurt-а MSPFET. (Приложена в архиве или может быть скачана по ссылке)

Разработка кода может вестись в различных средах

Итак, допустим макетка сделана (нам в первую очередь нужно запаять стабилизатор на 3.3Вольта, светодиод на ножку P1.0 и разъем для LPT-FET. Кварц и прочее можно допаять позже). Программатор LPT-FET тоже.

Устанавливаем и запускаем IAR. Нажимаем create new project:

mc165-13.jpg

mc165-14.jpg

Даем свое название и вот окно проекта с типовым шаблоном.

Перво наперво правой кнопкой мыши кликаем по: название - debug -> option

mc165-15.jpg

Выбираем наш микроконтроллер

mc165-16.jpg

Меняем тип отладчика

mc165-17.jpg

Задаем, что у нас программатор lpt от olimex на lpt1

mc165-18.jpg

В окне сишного кода меняем весь на код из файла demo led.c, нажимаем F7 и видим:

mc165-19.jpg

Нажимаем зеленый треугольник и происходит заливка кода в микроконтроллер:

mc165-20.jpg

В открывшемся окне нажимаем "GO" старт программы:

mc165-21.jpg

В итоге, видим мигающий светодиод на плате.

Если у вас программатор типа BSL, то порядок действий следующий: в IAR выбираем нужный контроллер. Пишем код (например demo led.с).

Правой кнопкой по debug, option и ставим настройки в пункте linker как на рисунке:

mc165-22.jpg

Жмем F7. Запускаем MSPFET от Kurta. Открывается окно. Нажимаем Setup. Выбираем программатор BSL.

mc165-23.jpg

Ставим настройки для выходных ног, патча бутлодера (есть фишка, но нам сейчас не надо), скорости (тоже пока не надо) и т.д.

Для программатора сделанного из TUSB3410 настройки выглядят так.

mc165-24.jpg

В выпадающем списке выбираем нужный микроконтроллер.

Меню, открыть, и идем в каталог где лежит наш тестовый проект. В нем ищем каталог Debug. В нем ищем каталог EXE:

mc165-25.jpg

И там выбираем файл прошивки с расширением .a43:

mc165-26.jpg

Открываем. Нажимаем кнопку auto. Все процесс пошел. В случае удачных действий получаем картинку

mc165-27.jpg

И мигающий светодиод. (Если в настройках msp-fet от Kurta поставить галочку перегружать файл, то в дальнейшем нет необходимости повторять все действия. Изменил прошивку в IAR. Нажал F7. Зашел в MSPFET. Нажал auto.)

Теперь вкратце об особенностях микрконтроллеров msp430.

Супер гибкая система тактирования. В примере мы использовали внутренний генератор на 750кГц. Можно изменять его частоту регистрами настройки DCO (смотри руководство пользователя). Можно на ноги XIN XOUT повесить кварц часовой или высокочастотный (причем для часового кварца конденсаторы уже есть внутри камня и их номинал можно выбирать). В программе можно легко переключаться с одного источника тактирования на другой. В купе с разными режимами спячки можно обеспечить беспрецедентное снижение энергопотребления. Например, затактировать таймер от ACKL настроенный на 32768Гц от часового кварца. Разрешить прерывание от таймера. В прерывании разбудить ядро и настроить тактирование ядра на максимальную частоту, быстро сделать необходимые вычисления и уйти опять в глубокий сон. Подробное описание систем тактирования и режимов питания смотрите в руководстве пользователя.

Вот простой пример для повторения.

Зашьем код из файла norma.c

Включаем через миллиамперметр и видим, что в моменты когда светодиод не горит ток потребления 230мкА.

Зашьем код из файла LPM0.c

Включаем через миллиамперметр и видим, что ток потребления 50мкА. (Данные замеры проводились тестером на пределе 20мА, но в качестве иллюстрации сойдет). Особенно целесообразно применение данных микроконтроллеров в паре с ЖК экранами, где столь малое энергопотребление проявляется в полной мере.

Кстати такое низкое потребление порождает и соответствующие проблемы, связанные с паразитным питанием. Особенно если учесть, что для питания достаточно 1.8В. При довольно насыщенной схеме, контроллер стартует от всего подряд, вплоть до usart. Поэтому будьте внимательны. Часто, микроконтроллер не выходит на связь с JTAG, пока не отключишь внешние схемы (если не приняты меры по исключению паразитного питания и согласования уровней).

Что не очень понравилось в MSP430 0- так это неудобно реализованная работа с Flash памятью для хранения каких либо переменных пользователя. Так называемая память info разбита на сегменты по 128 байт и беда в том, что записать можно в каждую ячейку отдельно, но только один раз. Для изменения ранее записанной ячейки необходимо стереть весь сегмент и заново записать в нужную ячейку. Это приводит к тому, что перед изменением любой ячейки необходимо сначала прочитать в ОЗУ все используемые ячейки, изменить необходимую, стереть весь сегмент и записать из ОЗУ все во info flash.

Итак, первый проект Вы удачно сделали и зашили в контроллер. Что дальше?

Для освоения периферии мне очень помогли примеры использования MSP430 от TI, ранее упомянутые в статье. Много примеров и проектов есть в книге "рекомендации по применению" от КОМПЭЛ.

Если вы решили сами собрать программатор для MSP430, то я рекомендую зарегистрироваться на сайте TI с указанием своего реального номера телефона и может быть даже выдуманным местом работы.

Заказать в качестве бесплатных образцов следующие компоненты:
- MSP430F1222IDW корпус soic
- MSP430F1232IDW корпус soic
- преобразователь COM-usb tusb3410 (для bsl программатора)
- стабилизатор reg104-3.3 в корпусе SOT223-5

Привезут в течении недели, возможно перед этим позвонят и спросят на русском языке зачем Вам это необходимо. Тут уж каждый сам за себя. Придумывайте что хотите. Как привезут, позвонят еще раз из службы доставки. Именно поэтому должен быть правильный телефон и адрес.



Сегодня, уважаемый хабрапользователь, я постараюсь заполнить некоторый пробел, образовавшийся в статьях об MSP430, а именно азы и подход к программированию устройств на данном микроконтроллере.
Эта статья прежде всего направлена на новичков, поскольку я буду рассматривать ряд достаточно простых задач, таких как работа с SPI, мигание лампочкой и отладка в proteus.

Введение


В данной статье будет рассмотрено устройство, в основу которого легла отладочная плата eZ430-RF2500. На плате находится микроконтроллер MSP430F2274 и беспроводной модуль CC2500, который, надо заметить, не будет рассмотрен далее.
Моим коллегой, Соколовым С. А., была изготовлена небольшая надстройка для этого отладочного комплекта, она присоединена ко всем выводам. На надстройке расположен акселерометр LIS331DLH, с которым мы и будем взаимодействовать по SPI.

Должен заметить, что устройства STMicroelectronics, работающие по SPI, очень похожи и, соответственно, работа с ними будет выглядеть примерно также.

Что нам потребуется

Среда разработки

Для начала нужно скачать и установить среду разработки и компилятор. На сегодняшний день существует три варианта — Code Composer Studio, IAR Embedded Workbench for TI MSP430 и mspgcc.
Я буду использовать Workbench KickStart Edition. KickStart бесплатный, он имеет ограничение по количеству кода, но для изучения этого более чем достаточно.

Средство отладки

Если у вас нет под рукой осциллографа или логического анализатора, то часто возникают сложности, связанные с непониманием того, что же на самом деле происходит в вашем устройстве. Понять причины того, почему же устройство отказывается работать часто помогает Proteus.
В нём можно найти очень многие микроконтроллеры MSP430. К сожалению MSP430F2274 в Proteus не оказалось, но имеется аналог — MSP430F2272, его и будем использовать.

Приступим к написанию кода

Создание проекта
Работа с портами

Первое, что стоит освоить в микроконтроллере — это работа с портами. Давайте рассмотрим небольшой пример.

void main ( void )
<
WDTCTL = WDTPW + WDTHOLD ;

BIT2 ;
P1REN | = BIT2 ;

P1DIR | = BIT1 + BIT0 ;

while ( true )
<
if ( P1IN & BIT2 )
<
P1OUT | = BIT1 ;
P1OUT & =

PxDIR отвечает за направление порта 1. Когда конкретный бит данного регистра установлен в 0, соответствующий пин работает на вход. И наоборот, если соответствующий бит установлена в 1, то пин работает на выход. В примере фигурируют 3 пина: P1.2 — кнопка, P1.0 — красный светодиод, P1.1 — зеленый светодиод.

PxREN включает внутренний резистор подтяжки. Кнопка замыкает пин на землю, и, соответственно, переводит его в состояние нуля. Когда кнопка не нажата пин ни к чему не подключен и для обеспечения логической единицы на нём требуется подключить его через резистор к питанию, что и делает регистр P1REN.

PxIN и PxOUT содержат в себе состояние пинов порта. Устанавливая ноль или единицу в регистр PxOUT мы меняем напряжение на лапке микроконтроллера, тем самым включая и выключая светодиод. Читая конкретный бит из регистра PxIN мы получаем логический сигнал, который сейчас подан на пин.


PxSEL выбирает функцию пина. В datasheet на изображении микроконтроллера функции обычно указывают через знак «/».

Например на рисунке P2.7 работает как обычный пин в случае, если P2SEL имеет 0 в соответствующем разряде. По умолчанию, в данном случае, там установлена единица, что означает, что эта лапка предназначена для подключения внешнего часового кварцевого резонатора.

Константы BIT0..BITF содержатся в файле msp430f2274.h и представляют собой 16-ти разрядные слова в заданном разряде которых содержится 1, все остальные разряды содержат 0.

Надо заметить, что файл msp430f2274.h содержит много полезной информации. Там находятся все константы контроллера с комментариями на английском.

В примере используются побитовые операции Си, «|=» установит соответствующий значению справа бит в регистре слева в единицу, а «&=

» напротив установит его в 0.

Работа с SPI

unsigned char spi ( unsigned char data, unsigned char dataEx = 0x00 ) ;

void main ( void )
<
WDTCTL = WDTPW + WDTHOLD ;

P1DIR | = BIT0 + BIT1 ;
P1OUT & =

P3SEL = BIT1 + BIT2 + BIT3 ;
P3DIR | = BIT0 ;
P3OUT | = BIT0 ; // Отключаем CC2500 (устанавливаем 1 на CS)

BIT7 ;
P2DIR | = BIT6 + BIT7 ;
P2OUT | = BIT6 ; // Отключаем датчик температуры (тоже подключен к SPI)
P2OUT | = BIT7 ; // Отключаем акселерометр


// Конфигурируем SPI
UCB0CTL0 | = UCMSB + UCMST + UCSYNC ;
UCB0CTL1 | = UCSSEL_2 ;
UCB0BR0 = 0x02 ;
UCB0BR1 = 0 ;
UCB0CTL1 & =

if ( spi ( 0x8F ) == 0x32 )
<
P1OUT | = BIT1 ; // Красный светодиод
>
P1OUT | = BIT0 ; // Зеленый светодиод
>

unsigned char spi ( unsigned char data, unsigned char dataEx )
<
unsigned char RX ;

BIT7 ; // Включаем акселерометр

while ( ! ( IFG2 & UCB0TXIFG ) ) ; // Ожидаем готовность буфера отправки
UCB0TXBUF = data ;
while ( ! ( IFG2 & UCB0RXIFG ) ) ; // Ожидаем готовность буфера приёма
RX = UCB0RXBUF ;

while ( ! ( IFG2 & UCB0TXIFG ) ) ;
UCB0TXBUF = dataEx ;
while ( ! ( IFG2 & UCB0RXIFG ) ) ;
RX = UCB0RXBUF ;

В примере запрашивается значение регистра по адресу 0x8F, там содержится код, который идентифицирует устройство. Этот код указан в datasheet. Это позволяет убедиться в том, что обмен данными произошел. В случае успеха включаем красный светодиод.
Соответственно все остальные устройства подключенные к SPI необходимо отключить от интерфейса. Для этого CS на них устанавливается в единицу.

Заключение

В следующий раз постараюсь рассказать подробнее про работу с LIS331DLH, добраться до прерываний, поработать со встроенным в программатор мостом USB-UART и рассказать немного про watchdog.

В статье описывается реализация недорогого интерфейса начального загрузчика (BSL) для микроконтроллера MSP430 на основе LaunchPad, использующего протокол UART. Целью этой разработки является внедрение устройств MSP430 Value Line, имеющих менее двух модулей последовательного интерфейса, в качестве моста между программным инструментом начальной загрузки BSL Scripter и устройством MSP430, куда осуществляется загрузка. Дополнительные материалы по проекту и исходный код программы, относящиеся к данной статье, можно загрузить с сайта.

Вебинар «Новые решения STMicroelectronics в области спутниковой навигации» (17.11.2021)

Введение

Начальный загрузчик MSP430

Начальный загрузчик (BSL) микроконтроллера MSP430 — это программа, которая встроена в устройства MSP430 для считывания и изменения содержимого памяти MSP430, и которую можно использовать для изменения встроенного программного обеспечения. Большинство устройств MSP430 имеют возможность доступа к UART BSL через интерфейс UART. Исключение составляют устройства MSP430 с интерфейсом USB, которые имеют встроенную программу USB BSL [1].

UART BSL

Кадры данных протокола UART BSL принципиально различны в случае BSL на основе ПЗУ и BSL на основе flash-памяти. Программа BSL на основе ПЗУ доступна в устройствах 1xx, 2xx, и 4xx, а BSL на основе flash-памяти имеется в устройствах 5xx и 6xx. Подробнее о протоколе BSL обоих типов программного обеспечения BSL в [2].

Универсальный асинхронный приёмопередатчик (UART)

Универсальный асинхронный приёмопередатчик (UART) — это стандарт последовательной связи, который широко используется во встроенных системах. Поскольку данные передаются последовательно и асинхронно (без всякого тактового сигнала), и приёмная, и передающая стороны вынуждены использовать одинаковые настройки скорости передачи данных (обычно она определяется как скорость передачи в бодах), количества битов данных и использования бита чётности. Стандартный кадр UART показан на Рисунке 3.

Рисунок 3. Кадр UART.

По умолчанию линия связи UART находится в состоянии отсутствия передачи, имея логический уровень «ВЫСОКИЙ». Обычно сигналом СТАРТОВОГО бита является первый переход из состояния «ВЫСОКОГО» логического уровня в состояние «НИЗКОГО» логического уровня. После передачи СТАРТОВОГО бита передаются биты данных. В большинстве систем данные отправляются в формате с прямым порядком байтов (первым следует младший байт), а битов данных может быть 7 или 8. Перед СТОПОВЫМ битом может, при необходимости, отправляться бит чётности для проверки кадра. Наконец, СТОПОВЫЙ бит обозначает конец кадра UART, представляя собой переход из состояния «НИЗКОГО» логического уровня в состояние «ВЫСОКОГО» логического уровня.

Комплект разработчика MSP-EXP430G2 Launchpad

Комплект разработчика MSPEXP430G2, известный под названием «Launchpad» — это недорогой комплект разработчика устройств MSP430G2xxx Value Line. Комплект разработчика имеет встроенный эмулятор интерфейса USB, который также можно использовать в качестве интерфейса UART (COM-ПОРТА) со скоростью передачи данных 9600 бод.

Реализация

В статье рассматривается микроконтроллер MSP430G2231 на плате MSP-EXP430G2 Launchpad и микроконтроллер MSP430F5438A, версии E, имеющий ошибку SYS10 (время между импульсами на контактах TEST и TCK должно быть менее 15 мкс), в качестве устройства MSP430 в комплекте разработчика MSP-TS430PZ5x100, куда осуществляется загрузка. На Рисунке 4 показана испытательная установка, представляющая собой соединение плат Launchpad и MSP-TS430PZ5x100.

Интерфейс начального загрузчика для MSP430 на основе LaunchPad,использующего протокол UART
Рисунок 4. Испытательная установка для интерфейса UART BSL
на основе Launchpad
.

Аппаратная реализация

Подключение аппаратного обеспечения

На Рис. 5 показано типовое аппаратное соединение между ПК, на котором работает программа BSL Scripter, платой MSP- EXP430G2 Launchpad и устройством MSP430, куда осуществляется начальная загрузка; в данном случае это MSP430F5438A на плате MSP- TS430PZ5x100.

Интерфейс начального загрузчика для MSP430 на основе LaunchPad,использующего протокол UART
Рисунок 5. Типовое аппаратное подключение интерфейса BSL на основе Launchpad.

Назначение контактов

Эта реализация системы требует использования всех контактов порта 1 (P1) микроконтроллера MSP430G2231. Помимо шести контактов, показанных на Рисунке 5, в Launchpad есть два других контакта, которые нужны для реализации интерфейса BSL. Один контакт используется для определения типа устройства MSP430, куда осуществляется загрузка, указывая, является ли оно устройством, в котором контакты JTAG объединены с другими контактами, или же устройством со специально выделенными контактами JTAG. Другой контакт, который подключается к кнопочному выключателю на плате, используется в качестве входа для формирования входной последовательности BSL. Изначально программа BSL Scripter использовала контакты DTR и RTS для формирования входной последовательности BSL в устройстве MSP430, куда осуществляется загрузка. Но эти контакты не доступны в UART- соединении комплекта разработчика MSP-EXP430G2 Launchpad, поэтому необходимо использовать другой вход, чтобы заставить MSP430G2231 на плате Launchpad формировать входную последовательность BSL для устройства MSP430, в которое осуществляется загрузка. В Таблице 1 указано назначение контактов ввода/ вывода общего назначения (GPIO) MSP430G2231.

Читайте также: