Переход с микроконтроллеров MSP430F1xx на MSP430F2xx
Цель настоящей статьи - показать целесообразность перехода с микроконтроллеров MSP430F1xx на MSP430F2xx, а также облегчить сам переход, обозначив основные отличительные черты двух семейств с точки зрения аппаратной и программной части.
Сравнение микроконтроллеров семейства MSP430F1xx с MSP430F2xx
Микроконтроллеры MSP430F2xx построены на базе семейства MSP430F1xx и являются их улучшенной версией, обеспечивают большую производительность, меньшее энергопотребление, дополнительную функциональность. Переход на новое семейство позволяет улучшить характеристики приложения и уменьшить его стоимость. В таблице 1 представлены отличительные характеристики семейств.
Несмотря на то, что многие представители нового семейства микроконтроллеров могут рассматриваться как совместимые по выводам прямые замены микроконтроллерам старого семейства, существует несколько моментов, на которые стоит обратить особое внимание. Зная эти моменты, разработчику будет легче перевести приложение на новый микроконтроллер, получив, таким образом, преимущества, обозначенные в таблице 1.
Таблица 1. MSP430F1xx в сравнении с MSP430F2xxПараметры | MSP430F1xx | MSP430F2xx |
---|---|---|
Максимальная частота ядра, МГц | 8 | 16 |
Выход из режимов LPM3/LPM4 | <6 мкс | <1 мкс |
Энергопотребление в режиме LPM3 | <2 мкА | <1 мкА |
Сброс при пониженном напряжении | Некоторые | Все |
Минимальное напряжение при программировании flash, В | 2,7 | 2,2 |
Интегрированные подтягивающие резисторы на портах ввода/вывода | нет | Все порты |
Неравномерность характеристик встроенного осциллятора DCO при дрейфе температуры и напряжения | ±20% | ±2% |
Детектирование ошибок осциллятора | Высокочастотный | Высокочастотный и низкочастотный |
Дополнительный встроенный низкочастотный осциллятор с низким энергопотреблением | нет | 12 кГц VLO |
Фильтр пульсаций сигнала синхронизации | нет | есть |
Конфигурируемые встроенные нагрузочные конденсаторы кварцевого резонатора | нет | есть |
Детектирование обращения к несуществующему адресу | нет | есть |
Сторожевой таймер устойчивый к ошибкам осциллятора | нет | есть |
Защищенность загрузчика от взлома | 256-битный пароль | 256-битный пароль, функция стирания |
Flash память, кбайт | до 60 | до 120 |
ОЗУ, кбайт | до 10 | до 8 |
Температурный диапазон, °С | -40...85 | -40...105 |
Переход с MSP430F1xx на MSP430F2xx: аппаратная часть
Совместимость по корпусу и выводам
Больше всего повезло разработчикам, использующим MSP430F16x и MSP430F13x/14x в 64-выводном корпусе LQFP, так как они могут напрямую заменить эти микроконтроллеры на MSP430F261x и MSP430F23x/24x соответственно. Как корпус, так и площадь, занимаемая на печатной плате (PCB foot-print) идентичны.
Все выводы MSP430F23x/24x могут быть использованы для тех же целей, что и выводы MSP430F13x/14x (выводы аналоговых и цифровых модулей, источников питания, JTAG-программатора), что позволяет осуществить переход на новое семейство без изменения печатной платы. Это утверждение справедливо для MSP430F16x и MSP430F261x с одним исключением. Если в приложении используется последовательный интерфейс USART микроконтроллера MSP430F16x в режиме I2C, прямую замену на MSP430F261x осуществить не получится, из-за несовместимости по выводам (см. таблицу 2).
Таблица 2. Изменения в выводах интерфейса I2C при переходеСигналы I2C | Вывод/сигнал F16x | Вывод/сигнал F261x | Комментарии |
---|---|---|---|
SDA | вывод 29 (P3.1/SIMO0/SDA) | вывод 29 (P3.1/UCB0SIMO/UCB0SDA) | нет конфликта |
SCL | вывод 31 (P3.3/UCLK0/SCL) | вывод 30 (P3.2/UCB0SOMI/UCB0SCL) | меняется вывод |
Подробное описание выводов можно найти в документах.
Потребляемый ток
При переходе на MSP430F2xx, разработчик получает выигрыш по энергопотреблению. Так, например, в режиме ожидания при синхронизации от 32 кГц осциллятора (LFXT1), потребляемый ток MSP430F261x составляет 1,1 мкА (3 В, 25°С), в то время, как для MSP430F16x это значение составляет от 2 мкА до 2,6 мкА при выполнении тех же функций. Таким образом, перейдя на новый микроконтроллер, разработчик может в несколько раз увеличить жизнь батарейки (если в приложении таковая используется).
Потребляемый ток в активном режиме старого и нового семейств при работе на одной и той же частоте, температуре и напряжении примерно одинаков. Но так как потребляемый ток в активном режиме линейно зависит от частоты работы микроконтроллера, а максимальная тактовая частота MSP430F2xx увеличена в два раза, устройство может потреблять дополнительный ток.
Тактовая частота и напряжение питания
Максимальная частота работы MSP430 зависит от напряжения питания. Эта зависимость приводится в документации для каждого устройства. В общем, зависимости максимальной частоты от напряжения питания для MSP430Fxx и MSP430F2xx различаются, но MSP430F2xx всегда может работать на той же частоте, что и MSP430F1xx, при одном и том же напряжении питания. Однако, если разработчик, переходящий на MSP430F2xx, хочет увеличить тактовую частоту ядра, очень важно рассмотреть эту зависимость подробнее.
Особенно рекомендуется рассмотреть эти зависимости, если требуется получить линейное изменение мощности. Напомним, что MSP430F1xx и MSP430F2xx содержат встроенный супервизор (SVS), который может помочь в решении этой задачи.
Документ об ошибках (Device Errata)
При переходе с MSP430F1xx на MSP430F2xx очень важно заглянуть в документ Errata Sheet, в котором собраны найденные ошибки микроконтроллера и предложены методы их обхода, так как этим новые семейства тоже могут отличаться друг от друга.
Переход с MSP430Fxx на MSP430F2xx: программная часть
В этой части мы обсудим важные моменты относительно программного обеспечения при переходе с MSP430F1xx на MSP430F2xx. Несмотря на то, что оба семейства программно совместимы, в большинстве случаев при переходе на новый микроконтроллер нельзя просто загрузить бинарный код MSP430Fxx в MSP430F2xx. Потребуется перекомпоновать код приложения на уровне исходных кодов с использованием необходимых заголовочных файлов, библиотек и соответствующего командного файла компоновщика, находящиеся в папке установки среды разработки и имеющего расширение CMD (для Code Composer Essential) и XCL (для IAR Embedded Workbench). Рассмотрим эти аспекты более подробно.
Расширенная архитектура памяти
Семейство MSP430F2xx построено на базе архитектуры MSP430X с улучшенным ЦПУ и системой памяти. Основное улучшение заключается в расширении разрядности адресной шины до 20 бит, что позволяет получить 1 МБ адресного пространства без использования страниц. Архитектура ЦПУ MSP430X обратно совместима с ЦПУ MSP430 микроконтроллеров MSP430F1xx.
Для использования адресного пространства более 64 кБ нужно применять команды CALLA и RETA (вместо CALL и RET), для того, чтобы обратный адрес возврата из подпрограмм правильно сохранялся и извлекался как 20-битное число. В случае перекомпилирования программного кода на языке высокого уровня, таком как С, компилятор делает это автоматически. При переводе ассемблерного кода на новую архитектуру это нужно будет сделать вручную.
Существуют команды, изменяющие значение PC в соответствии с использующимся режимом адресации. Например, команда MOV.W # value, PC сотрет старшие четыре бита счетчика, так как это команда шириной в слово. Поэтому следует также пересмотреть команды, обращающиеся к PC напрямую. Опять же, в случае компиляции кода на языке высокого уровня, это производится автоматически.
У большинства микроконтроллеров нового семейства увеличен объем ОЗУ. Чтобы воспользоваться этим преимуществом, нужно перекомпилировать программный код при переходе со старого семейства.
Передача параметров подпрограмм и стековый фрейм
Для обмена данными с функциями компилятор обычно использует регистры ЦПУ. В случае, когда все данные не умещаются в регистры, они размещаются в стеке перед тем, как вызывается подпрограмма. В микроконтроллерах с большим адресным пространством MSP430F2xx вызов подпрограмм осуществляется с помощью команды CALLA, которая использует дополнительное 16-битное слово в стеке для размещения значения 20-битного счетчика команд (рисунок 1).
Рис. 1. Сохранение значения счетчика команд в стеке командой CALLA
Если подпрограмме нужно получить доступ к данным в стеке, нужно учитывать, что счетчик команд занимает дополнительное слово. При переносе приложения с MSP430F1xx на MSP430F2xx следует пересмотреть фрагменты кода, где происходит обращение к стеку.
Если осуществляется переход с MSP430F1xx на MSP430F2xx параллельно с обновлением версии компилятора, нужно иметь в виду, что в новой версии может измениться способ вызова подпрограмм, как например, при переходе с IAR Embedded Workbench V2.xx/V3.xx на V4.xx.
Оптимизация кода по скорости выполнения
При переносе кода, который содержал оптимизированные вручную критичные к скорости выполнения участки, следует иметь в виду, что время выполнения некоторых команд ЦПУ сократилось на один или два цикла.
Другим улучшением архитектуры MSP430X является сокращение времени реакции на прерывание (пять циклов MCLK вместо шести) и времени возврата из прерывания (три цикла вместо пяти).
Объем ОЗУ
Микроконтроллер MSP430F1611 содержит 10 кБ ОЗУ, в то время как максимальный объем ОЗУ MSP430F261x составляет 8 кБ. Таким образом, если в приложении задействованы все 10 кБ ОЗУ MSP430F1611, для того, чтобы перейти на MSP430F261x, потребуется переработка программного кода.
Таблица векторов прерывания MSP430F261x занимает 32 слова памяти, в то время как в MSP430F16x только 16. Область памяти MSP430F261x с адресом 0xFFBE зарезервирована для специальных задач загрузчика.
Информационная flash-память
Микроконтроллеры MSP430F1xx и MSP430F2xx содержат 256 байт информационной flash-памяти, расположенной по адресам от 0x1000 до 0x10FF. Хотя объем этого сектора обоих семейств одинаков, его организация различна. Информационная память MSP430F1xx состоит из двух сегментов (INFOA и INFOB) по 128 байт каждый, в то время как MSP430F2xx содержит четыре сегмента (INFOA, INFOB, INFOC и INFOD) по 64 байта каждый.
Каждый сегмент информационной flash-памяти должен стираться отдельно, следовательно, для MSP430F2xx потребуется четыре обращения вместо двух, как для MSP430F1xx. Сегмент INFOA микроконтроллеров MSP430F2xx поддерживает функцию защиты от стирания, что требует дополнительной обработки при обращении к этой области памяти. Однако не рекомендуется стирать сектор INFOA, а также записывать в нее данные, так как там хранятся калибровочные коэффициенты высокочастотного осциллятора DCO. Для более подробной информации о системе памяти и об обращении к сегменту INFOA, см. [3][4].
Последовательные интерфейсы: USCI вместо USART
Одно из самых значительных отличий MSP430F2xx от MSP430F1xx заключается в последовательном коммуникационном интерфейсе. Микроконтроллеры MSP430F2xx содержат USCI модуль, а MSP430F1xx - USART. Эти модули программно несовместимы, т.е. при переходе на новый микроконтроллер потребуется адаптация кода.
С помощью USCI можно реализовать два SPI-канала или один I2C и один UART одновременно. Стоит заметить, что MSP430F1xx не поддерживают интерфейс I2C.
В настоящей статье мы подчеркнем только основные отличия последовательных коммуникационных модулей старого и нового семейств. Для подробного ознакомления рекомендуется обратиться к документам [3][4], а также рассмотреть программные примеры использования USCI модуля, доступные на сайте производителя.
Режим UART
Функционирование USCI модуля MSP430F2xx и USART модуля MSP430F1xx в режиме UART идентично. Основные отличия:
- Модуль USCI использует отдельный генератор скорости передачи. При этом применяется новая схема модуляции с двухуровневым модулятором с возможностью передискретизации. При переходе на новый микроконтроллер потребуется пересчитать коэффициенты для настройки генератора скорости передачи;
- Детектирование фронта первого импульса посылки и схема активации системы синхронизации нового и старого семейств отличаются. В USCI для этого применяется более простая схема, в которой модуль автоматически активирует систему синхронизации при обнаружении фронта первого импульса и генерирует прерывание ЦПУ после приема целого символа. ВUART-модуле MSP430F1xx прерывание генерируется сразу после обнаружения фронта первого импульса посылки, и приложение должно само активировать систему синхронизации после принятия первого символа;
- Флаги прерываний модуля USCI не сбрасываются автоматически при входе в функцию обработки прерывания.
Режим SPI
Функционирование USCI-модуля MSP430F2xx и USART-модуля MSP430F1xx в режиме SPI также идентично. Основные отличия:
- USART поддерживает один канал SPI, в то время, как USCI поддерживает два канала, работающих одновременно (USCI_A0, USCI_B0).
- Каждому из SPI-каналов микроконтроллера MSP430F1xx соответствует отдельный вектор прерываний. Каждый USCI-модуль микроконтроллера MSP430F2xx содержит два совмещенных вектора прерываний, для приема и передачи.
- USCI в режиме SPI по умолчанию работает в режиме «самый младший бит- первый» (LSB-first). Порядок может меняться с помощью бита UCMSB в регистрах управления UCAxCTL0/UCBxCTL0. Модуль USART работает только в режиме MSB-first (самый старший бит- первый) и этот режим изменить нельзя.
- Максимальная частота USCI при передачи битов в режиме SPI соответствует частоте BRCLK, в то время как для USART-модуля эта величина составляет BRCLK/2.
Режим I2C
Модуль USCI не поддерживает некоторых функций, доступных в модуле USART:
- Автоматический подсчет байтов (регистр I2CNDAT),
- Доступ шириной в слово к регистрам I2C (I2CDRW регистр),
- Декодирование источника прерывания I2C (I2CIV регистр).
Осцилляторы LFXT1 и XT2
Микроконтроллеры MSP430F2xx могут работать от тех же низко- и высокочастотных осцилляторов, что и MSP430F1xx, потребляя при этом меньше электроэнергии. Кроме того, в низкочастотном режиме (LF) доступны конфигурируемые нагрузочные конденсаторы кварцевого резонатора. По умолчанию значение емкости этих конденсаторов в LF-режиме составляет 6 пФ.
Если в приложении, в котором использовались внешние нагрузочные конденсаторы, производится переход на микроконтроллер MSP430F2xx, то нужно иметь в виду:
- Способность низкочастотного осциллятора микроконтроллера MSP430F2xx обнаруживать ошибки и сигнализировать о них с помощью установки флага LFXT1OF.
- Если в приложении на базе MSP430F1xx использовался внешний 32кГц кварц для работы в режиме низкого энергопотребления (LPM3), и точность кристалла не так важна, то вместо него при переходе на MSP430F2xx можно использовать встроенный осциллятор VLO. В результате на один внешний компонент приложения станет меньше и сократится энергопотребление микроконтроллера в режиме LPM3. Частота VLO составляет 12кГц. Для более подробной информации см. [6].
- Если в приложении использовался внешний цифровой осциллятор, при переходе на MSP430F2xx рекомендуется использовать новый режим ввода цифрового тактового сигнала (с помощью установки битов управления LFXT1S1 и LFXT1S0).
Высокочастотный осциллятор DCO
В микроконтроллерах DCO-осциллятор имеет более высокую точность, что позволяет использовать его в широком частотном диапазоне. Изначально во flash-памяти хранятся калибровочные коэффициенты для упрощения настройки DCO.
При переходе с MSP430F1xx на MSP430F2xx следует обратить внимание на то, что:
- Частота DCO MSP430F1xx по умолчанию находится в диапазоне 800кГц, а в MSP430F2xx- в диапазоне 1,2МГц.
- Использование калибровочных коэффициентов для DCO MSP430F2xx позволяет обойтись без использования FLL-алгоритмов совместно с внешним кварцем для настройки DCO.
- MSP430F1xx содержит три бита для управления частотой DCO (RSELx в регистре BCSCTL1), в то время, как MSP430F2xx- четыре.
- Если значения DCOx, MODx и RSELx в регистрах управления DCO микроконтроллера MSP430F1xx жестко запрограммированы, это приведет к работе DCO-осциллятора MSP430F2xx на другой частоте.
- Если в MSP430F1xx использовался внешний резистор смещения (с помощью установки DCOR в регистре BCSCTL2), в MSP430F2xx при запуске такой программы DCO начнет работать на той же самой частоте, что и в MSP430F1xx, (при идентичной установке битов управления).
Загрузчик
Микроконтроллеры MSP430F2xx содержат новый загрузчик (BSL) с улучшенными защитными функциями. Память обоих семейств MSP430F1xx и MSP430F2xx защищена 256-битным паролем. Однако, в MSP430F2xx при обращении к памяти с неправильным паролем, стирается все содержимое flash-памяти (включая калибровочные константы, хранящиеся в сегменте INFOA).
Векторы прерываний
Расположение векторов прерываний микроконтроллеров MSP430F1xx и MSP430F2xx отличается. В принципе, перекомпилирование кода MSP430F1xx с использованием библиотек для MSP430F2xx автоматически решает задачи, связанные с изменением расположения векторов в таблице прерываний. Однако, в некоторых случаях, в процедуре обработки прерывания нужно сделать это вручную.
Также изменилось расположение таблицы векторов прерываний. Для MSP430F1xx это была область адресов с 0xFFE0 до 0xFFFF (16 слов), а для MSP430F2xx - с 0xFFC0 до 0xFFFF (32 слова). Кроме этого, область памяти с адресом 0xFFBE зарезервирована в MSP430F2xx и используется для секретного ключа загрузчика BSL.
Зарезервированные участки памяти
Микроконтроллеры MSP430F2xx содержат обновленные периферийные устройства, такие как BCS+, Comparator+. Эти дополнительные устройства используют часть тех участков памяти, которые раньше имели статус «зарезервировано». Теперь, при обращении к этим областям памяти нужно соблюдать осторожность, так как их изменение может привести к нежелательным последствиям в работе приложения. В качестве примера рассмотрим регистр управления компараторами Comparator_A и Comparator_A+ (см. рис 2, 3).
Рис. 2. Биты регистра CACTL2 микроконтроллеров MSP430F1xxx
Рис. 3. Биты регистра CACTL2 микроконтроллеров MSP430F2xxx
Допустим, что в ходе программы устанавливается бит 7, и она работает правильно на MSP430F1xx. Если запустить эту же программу на MSP430F2xx, получится, что входы компаратора будут внутренне закорочены.
Литература
1. Migrating From MSP430F16x to MSP430F261x Application Report (SLAA380).
2. Migrating From MSP430F13x/14x to MSP430F23x/24x Application Report (SLAA381A).
3. MSP430x1xx Family User's Guide (SLAU049).
4. MSP430x2xx Family User's Guide (SLAU144).
5. MSP430x15x, MSP430x16x, MSP430x161x data sheet (SLAS368).
6. MSP430x13x, MSP430x14x, MSP430x14x1 data sheet (SLAS272).
7. MSP430x241x, MSP430x261x data sheet (SLAS541).
8. MSP430x23x, MSP430x24x(1) data sheet (SLAS547).
9. Using the VLO Library (SLAA340).
Ваш комментарий к статье | ||||