Designer | Texas Instruments |
---|---|
Биты | 16-бит |
Тип | Память-Память |
Порядок байтов | порядок байтов |
Расширения | MSP430X |
Регистры | |
16, R0 - Программный счетчик, R1 - Указатель стека, R2 - Регистр состояния, R2 / R3 - Генератор констант |
MSP430 - это микроконтроллер семейства микроконтроллеров от 215>Texas Instruments, впервые представлен 14 февраля 1992 г. MSP430, построенный на базе 16-битного ЦП, рассчитан на низкую стоимость и, в частности, с низким энергопотреблением. Приложения.
MSP430 может быть используется для маломощных встроенных устройств. Ток , потребляемый в режиме ожидания, может быть менее 1 мкА. Максимальная частота процессора - 25 МГц. Его можно отрегулировать для снижения энергопотребления. MSP430 также использует шесть различных режимов низкого энергопотребления, которые могут отключать ненужные тактовые частоты и ЦП. Кроме того, MSP430 способен просыпаться за время менее 1 микросекунды, что позволяет микроконтроллеру дольше оставаться в спящем режиме, сводя к минимуму его среднее потребление тока. Устройство поставляется в различных конфигурациях с обычными периферийными устройствами: внутренний генератор, таймер, включая ШИМ, сторожевой таймер, USART., SPI, I²C, 10/12/14/16/24-бит АЦП и пониженное напряжение сброс схемотехника. Некоторые менее обычные периферийные опции включают компараторы (которые могут использоваться с таймерами для создания простых АЦП), встроенные в микросхемы операционные усилители для формирования сигнала, 12 -bit DAC, LCD драйвер, аппаратный умножитель, USB и DMA для результатов АЦП. За исключением некоторых более старых версий EPROM (MSP430E3xx) и большого объема mask ROM (MSP430Cxxx), все устройства программируются в системе через JTAG. (полный четырехпроводной или Spy-Bi-Wire ) или встроенный загрузчик bootstrap (BSL) с использованием UART, например RS232 или USB на устройствах с поддержкой USB.
Однако существуют ограничения, которые не позволяют использовать его в более сложных встроенных системах. MSP430 не имеет внешней шины памяти, поэтому он ограничен встроенной памятью (до 512 КБ флэш-памяти и 66 КБ ОЗУ ), которая может быть слишком маленьким для приложений, которым требуются большие буферы или таблицы данных. Кроме того, несмотря на наличие контроллера DMA, его очень сложно использовать для перемещения данных с микросхемы из-за отсутствия строба вывода DMA.
MSP430 номер детали, такой как «MSP430F2618ATZQWT-EP », состоит из следующих частей:
Суффикс | RAM | ПЗУ | Суффикс | ОЗУ | ПЗУ | |
---|---|---|---|---|---|---|
0 | 128 | 1 кб | 10 | 5 кб | 32 кб | |
1 | 128 | 2 K | 11 | 10 K | 48 K | |
2 | 256 | 4 K | 12 | 5 K | 55/56 K | |
3 | 256 | 8 K | 13 | |||
4 | 512 | 12 K | 14 | |||
5 | 512 | 16 K | 15 | |||
6 | 1 K | 24 K | 16 | 4 K | 92 K | |
7 | 1 K | 32 K | 17 | 8 K | 92 K | |
8 | 2 K | 48K | 18 | 8 K | 116 K | |
9 | 2 K | 60K | 19 | 4 K | 120 K |
Буквы в конце суффикса указывают на параметры, не видимые программному обеспечению:
Существует шесть общих поколений процессоров MSP430. В порядке развития это поколение 3xx, поколение 1xx, поколение 4xx, поколение 2xx, поколение 5xx и поколение 6xx. Цифра после поколения идентифицирует модель (как правило, более высокие номера моделей больше и более функциональны), третья цифра определяет объем памяти на плате, а четвертая, если присутствует, идентифицирует второстепенный вариант модели. Наиболее распространенный вариант - это другой аналого-цифровой преобразователь на кристалле .
. Поколения 3xx и 1xx ограничены 16-битным адресным пространством. В более поздних поколениях это было расширено за счет включения инструкций «430X», которые допускают 20-битное адресное пространство. Как и в случае с другими архитектурами процессоров (например, с процессором PDP-11 ), расширение диапазона адресации за пределы 16-битного размера слова привело к некоторым особенностям и неэффективности для программ размером более 64 кбайт.
В следующем списке можно представить себе типичную емкость 200 мА · ч для плоского элемента CR2032 литиевая таблетка как 200000 мкА · ч, или 22,8 мкА. ·год. Таким образом, с учетом потребления только ЦП, такая батарея может обеспечивать потребление тока 0,7 мкА в течение 32 лет. (На самом деле, саморазряд батареи уменьшил бы это число.)
Значение «удержания ОЗУ» по сравнению с «режимом часов реального времени» заключается в том, что в режиме часов реального времени ЦП может перейти в спящий режим с работающими часами, которые разбудят его в определенное время в будущем. В режиме сохранения ОЗУ требуется внешний сигнал, чтобы разбудить его, например Сигнал контакта ввода / вывода или прерывание приема ведомого SPI.
Серия MSP430x1xx - это базовое поколение без встроенного контроллера LCD. Как правило, они меньше поколения 3xx. Эти микроконтроллеры со сверхнизким энергопотреблением на базе флэш-памяти или ПЗУ предлагают 8 операций в секунду, 1,8–3,6 В, флэш-память до 60 КБ и широкий спектр аналоговых и цифровых периферийных устройств.
MSP430F2xx Series похожи на поколение 1xx, но работают с еще меньшей мощностью, поддерживают работу до 16 МГц и имеют более точные (± 2%) встроенные часы, которые упрощает работу без внешнего кристалла. Эти устройства со сверхнизким энергопотреблением на основе флэш-памяти обеспечивают работу от 1,8 до 3,6 В. Включает в себя генератор с очень малой мощностью (VLO), внутренние подтягивающие / понижающие резисторы и варианты с малым количеством выводов.
Серия MSP430G2xx Value включает микроконтроллеры со сверхнизким энергопотреблением на базе флэш-памяти до 16 MIPS при работе 1,8–3,6 В.. Включает в себя генератор очень низкой мощности (VLO), внутренние подтягивающие / понижающие резисторы и варианты с малым числом выводов по более низким ценам, чем серия MSP430F2xx.
MSP430x3xx Series - самое старое поколение, разработанное для портативных приборов со встроенным ЖК-контроллером. Он также включает в себя генератор контура автоподстройки частоты, который может автоматически синхронизироваться с низкоскоростным (32 кГц) кристаллом. Это поколение не поддерживает память EEPROM, только ПЗУ с маской и УФ-стираемое и одноразовое программируемое EPROM. Более поздние поколения предоставляют только флэш-память и параметры маскирующего ПЗУ. Эти устройства предлагают работу 2,5–5,5 В с объемом ПЗУ до 32 КБ.
Серия MSP430x4xx аналогична поколению 3xx, но включает встроенный ЖК-контроллер, они больше и обладают большими возможностями. Эти устройства на основе флэш-памяти или ПЗУ предлагают 8–16 MIPS при работе 1,8–3,6 В, с FLL и SVS. Идеально подходит для измерения малой мощности и медицинских приложений.
Серия MSP430x5xx может работать до 25 МГц, имеют до 512 КБ флэш-памяти и до 66 КБ оперативной памяти. Это семейство на основе флеш-памяти отличается низким потреблением активной мощности: до 25 MIPS при работе 1,8–3,6 В (165 мкА / MIPS). Включает в себя инновационный модуль управления питанием для оптимального энергопотребления и встроенный USB.
Модули серии MSP430x6xx могут работать на частоте до 25 МГц, иметь до 512 КБ флэш-памяти и более до 66 КБ ОЗУ. Это семейство на основе флеш-памяти отличается низким потреблением активной мощности: до 25 MIPS при работе 1,8–3,6 В (165 мкА / MIPS). Включает инновационный модуль управления питанием для оптимального энергопотребления и встроенный USB.
Серия RF SoC (CC430) обеспечивает тесную интеграцию между ядром микроконтроллера, периферийные устройства, программное обеспечение и радиочастотный трансивер. Характеристики <1 GHz RF transceiver, with 1.8 V–3.6 V operation. Programming using Arduino IDE is possible via the panStamp API.
Серия FRAM от Texas Instruments обеспечивает унифицированную память с динамическим разделением и скоростью доступа к памяти в 100 раз быстрее, чем у флэш-памяти. FRAM также может сохранять нулевое энергопотребление во всех режимах энергопотребления, что означает, что запись гарантируется даже в случае потери мощности. При длительности записи более 100 триллионов циклов EEPROM больше не требуется. Активная потребляемая мощность менее 100 мкА / МГц.
Серия Серия низкого напряжения включает детали MSP430C09x и MSP430L092. Эти 2 низковольтных 16-битных микроконтроллеров имеют конфигурацию с двумя 16-битными таймерами, 8-битным аналого-цифрового (A / D) преобразователем, 8-битным цифро-аналоговым (D / A) преобразователем, и до 11 контактов ввода / вывода.
Дополнительные семейства в MSP430 включают детали Фиксированная функция, Автомобильная промышленность и Расширенная температура.
Фиксированная функция : 16-разрядный микроконтроллер MSP430BQ1010 - это усовершенствованное устройство с фиксированной функцией, которое образует блок управления и связи на стороне приемника для беспроводной передачи энергии в портативных приложениях. MSP430BQ1010 соответствует спецификации Wireless Power Consortium (WPC). Для получения дополнительной информации см. Contactless Power.
Автомобильная промышленность : Автомобильные микроконтроллеры (MCU) MSP430 от Texas Instruments (TI) - это 16-битные процессоры смешанных сигналов на основе RISC, соответствующие требованиям AEC-Q100 и подходят для автомобильного применения при окружающей среде среды до 105 ° C. LIN-совместимые драйверы для MCU MSP430, предоставленные IHR GmbH.
Extended Temp : Устройство MSP430 очень популярны в суровых условиях, таких как промышленные датчики, благодаря низкому энергопотреблению и инновационной аналоговой интеграции. Некоторые приложения для суровых условий окружающей среды включают транспорт / автомобилестроение, возобновляемые источники энергии, военное дело / космос, разведку полезных ископаемых, промышленность и безопасность.
Обратите внимание, что когда размер флэш-памяти превышает 64 КБ слов (128 КБ), адреса инструкций не могут больше кодироваться всего двумя байтами. Это изменение размера указателя вызывает некоторую несовместимость с предыдущими частями.
Периферийные устройства MSP430 обычно просты в использовании, с (в основном) согласованными адресами между моделями и без регистров только для записи (за исключением аппаратного умножителя).
Если периферийное устройство не требуется, контакт можно использовать для ввода / вывода общего назначения. Выводы разделены на 8-битные группы, называемые «портами», каждая из которых управляется 8-битными регистрами. В некоторых случаях установлены парами, доступ к которому можно получить как 16-битные регистры.
Семейство MSP430 определяет 11 портов ввода-вывода, с P0 по P10, хотя ни один чип не поддерживает более 10 из них. P0 реализован только в семействе 3xx. P7 - P10 реализованы только на самых больших элементах (и версиях с наибольшим исходом выводов) семейств «4xx и» 2xx. Новейшие семейства «5xx» и «6xx» имеют от P1 до P11, а регистры управления переназначены для обеспечения большего количества пар портов. Каждый порт управляется регистрами. Порты, которые не реализуют верхние функции (например, прерывание при изменении состояния), не реализуют соответствующие регистры.
Порты 0–2 могут вызвать прерывания при изменении входов. Дополнительные регистры края настраивают эту возможность:
Некоторые выводы имеют специальное назначение либо как входы, либо как выходы. (Например, выводы таймера могут быть сконфигурированы как входы захвата или выходы ШИМ.) В этом случае бит PxDIR контролирует, из двух функций вывод, когда установлен бит PxSEL. Если есть только одна специальная функция, то PxDIR обычно игнорируется. Регистр PxIN все еще доступны для чтения, если бит PxSEL установлен, но генерация прерывания отключена. Если PxSEL сброшен, входные функции замораживаются и отключаются от внешнего контакта. Кроме того, настройка вывода для вывода общего назначения не отключает генерацию прерывания.
|
|
Адрес | Имя | Функция |
---|---|---|
0x130 | MPY | Operand1 для беззнакового умножения |
0x132 | MPYS | Operand1 для знакового умножения |
0x134 | MAC | Operand1 для беззнакового умножения-накопления |
0x136 | MACS | Operand1 для знакового умножения-накопления |
0x138 | OP2 | Второй операнд для операции умножения |
0x13A | ResLo | Младшее слово результата умножения |
0x13C | ResHi | Старшее слово умножения результат |
0x13E | SumExt | Выполнить умножение-накопление |
ResLo
и ResHi
регистры также должны быть инициализированы.OP2
, выполняется умножение и результат сохраняется или добавляется в регистры результатов. Регистр SumExt
- это регистр только для чтения, который содержит выполнение сложения (0 или 1) в случае беззнакового умножения) или знаковое расширение 32-битной суммы (0 или - 1) в случае знакового умножения. В случае знакового умножения с накоплением значение SumExt
должно быть объединено со старшим битом предыдущего содержимого SumHi
, чтобы определить истинный результат выполнения (-1, 0, или +1).Texas Instruments предоставляет различное оборудование экспериментальные платы, которые поддерживают большие (примерно два квадратных сантиметра) и маленькие (примерно один квадратный миллиметр) микросхемы MSP430. TI также предоставляет инструменты для разработки программного обеспечения, как напрямую, так и совместно с партнерами (см. Полный список компиляторов, ассемблеров и IDE ). Одним из таких наборов инструментов является IAR C / C ++ компилятор и Интегрированная среда разработки или IDE. Редакцию Kickstart можно бесплатно загрузить с сайтов TI или IAR; он ограничен 8 КБ кода C / C ++ в компиляторе и отладчике (язык ассемблера программы любого размера можно разрабатывать и отлаживать с помощью этого бесплатного набора инструментов).
TI также сочетает в себе версию собственного компилятора и инструментов со своей Eclipse -based Code Composer Studio IDE («CCS»). Он продает полнофункциональные версии и предлагает для загрузки бесплатную версию с ограничением размера кода 16 КБ. CCS поддерживает внутрисхемные эмуляторы и включает симулятор и другие инструменты; он также может работать с другими процессорами, продаваемыми TI.
Для тех, кому удобнее использовать Arduino, есть еще одно программное обеспечение Energia Energia, платформа для создания прототипов электроники с открытым исходным кодом, цель которой - обеспечить проводку и Платформа Arduino для LaunchPad на базе Texas Instruments MSP430, куда можно экспортировать код Arduino для программирования микросхем MSP430. Последняя версия Energia поддерживает MSP-EXP430G2xxx, MSP-EXP430FR5739, MSP-EXP430FR5969, MSP-EXP430FR5994, MSP-EXP430F5529LP, Stellaris EK-LM4F120XL, Tiva-C123G-EK-TM4C-WiFi CC-C123-C-C-C-C-C-C-C-C-C-C-C-C-D-9.
Сообщество с открытым исходным кодом создает свободно доступный набор инструментов для разработки программного обеспечения на основе набора инструментов GNU. Компилятор GNU в настоящее время отклонен в трех версиях:
(MSPGCC )
()
TI проконсультировался с RedHat для предоставления официальной поддержки архитектуры MSP430 для коллекции компиляторов GNU C / Компилятор C ++. Этот компилятор msp430-elf-gcc поддерживается TI Code Composer Studio версии 6.0 и выше.
Существует очень ранний проект llvm-msp430, который в конечном итоге может обеспечить лучшую поддержку MSP430 в LLVM.
других наборах коммерческих инструментов разработки, которые включают редактор, компилятор, Доступны компоновщик, ассемблер, отладчик и в некоторых случаях мастера кода. VisSim, язык блок-схем для разработки на основе моделей, генерирует эффективный C-код с фиксированной точкой непосредственно из диаграммы. Сгенерированный VisSim код для замкнутого контура АЦП + ШИМ на основе ПИД-управления на F2013 компилируется во флэш-память менее 1 КБ и 100 байт ОЗУ. VisSim имеет встроенные периферийные блоки для всего семейства MSP430: I²C, ADC, SD16, PWM.
MSP430F2013 и его братья и сестры отличаются тем, что (за исключением MSP430G2 Value Line ) это единственная часть MSP430, которая выпускается в корпусе с двойным расположением рядов (DIP). Другие варианты этого семейства доступны только в различных корпусах для поверхностного монтажа. Компания TI приложила некоторые усилия, чтобы поддержать платформу разработки eZ430, сделав необработанные чипы легкими для использования любителями в прототипах.
Компания TI решила проблему низкого бюджета, предложив очень маленькую плату для экспериментаторов eZ430-F2013 на USB-накопителе. Это упрощает разработчикам выбор микросхемы MSP430 для недорогих платформ разработки, которые можно использовать с компьютером. EZ430-F2013 содержит микроконтроллер MSP430F2013 на съемной макетной плате и прилагаемый компакт-диск с программным обеспечением для разработки. Это полезно для школ, любителей и изобретателей гаража. Это также приветствуется инженерами крупных компаний, создающих прототипы проектов с проблемами капитального бюджета.
Texas Instruments выпустила MSP430 LaunchPad в июле 2010 года. MSP430 LaunchPad имеет встроенный эмулятор флэш-памяти, USB, 2 программируемых светодиодов и 1 программируемая кнопка. В качестве дополнения к экспериментам с LaunchPad доступна плата защиты .
С тех пор TI предоставила несколько новых LaunchPads на базе платформы MSP430:
Все три из этих LaunchPads включают отладчик eZ-FET JTAG с обратным каналом UART, способный работать со скоростью 1 Мбит / с. Платы FRAM LaunchPads (например, MSP-EXP430FR5969, MSP-EXP430FR4133) включают EnergyTrace, функцию, поддерживаемую TI Code Composer Studio IDE для мониторинга и анализа энергопотребления.
Как и другие производители микроконтроллеров, TI разработала двухпроводной интерфейс отладки, который можно найти в некоторых из их частей MSP430, который может заменить более крупный интерфейс JTAG. Средство разработки eZ430 содержит полностью подключаемый к USB инструмент эмуляции флэш-памяти ("FET") для этого нового двухпроводного протокола, названного TI "Spy-Bi-Wire ". Spy-Bi-Wire изначально был представлен только на самых маленьких устройствах в семействе F2xx с ограниченным количеством контактов ввода-вывода, таких как MSP430F20xx, MSP430F21x2 и MSP430F22x2. Поддержка Spy-Bi-Wire была расширена с появлением последнего семейства 5xx, в котором все устройства поддерживают интерфейс Spy-Bi-Wire в дополнение к JTAG.
Преимущество протокола Spy-Bi-Wire в том, что он использует только две линии связи, одна из которых является выделенной линией _RESET. Интерфейс JTAG на частях MSP430 с меньшим количеством выводов мультиплексирован с линиями ввода / вывода общего назначения. Это делает относительно трудным отладку схем, построенных на небольших микросхемах с низким бюджетом ввода-вывода, поскольку полное 4-контактное оборудование JTAG будет конфликтовать с чем-либо еще, подключенным к этим линиям ввода-вывода. Эта проблема решается с помощью микросхем с поддержкой Spy-Bi-Wire, которые все еще совместимы с обычным интерфейсом JTAG для обратной совместимости со старыми инструментами разработки.
Инструменты отладки JTAG и flash-программирования, основанные и широко используемые в сообществе ARM, недоступны для MSP430. Инструменты программирования, специально разработанные для MSP430, немного дешевле, чем интерфейсы JTAG, использующие OpenOCD. Однако если проект обнаружит, что требуется больше MIPS, больше памяти и больше периферийных устройств ввода-вывода, эти инструменты не будут передаваться на процессор от другого поставщика.
ЦП MSP430 использует архитектуру фон Неймана с единым адресным пространством для инструкций и данных. Память имеет адрес байтов, и пары байтов объединяются little-endian для получения 16-битных слов.
Процессор содержит 16 16-битных регистров, из которых четыре предназначены для специальных целей: R0 - это программный счетчик , R1 - это указатель стека, R2 - регистр состояния, а R3 - «генератор констант». "который читается как ноль и игнорирует записи. Дополнительное кодирование режима адреса с использованием R3 и R2 позволяет в общей сложности шесть обычно используемых постоянных значений (0, 1, 2, 4, 8 и -1), не требуя немедленного слова операнда. R4 - R15 доступны для общего использования.
Набор инструкций очень прост; 27 инструкций в трех семьях. Большинство инструкций доступно в версиях с суффиксом.B (8-битный байт) и.W (16-битное слово), в зависимости от значения бита Ч / Б: бит установлен в 1 для 8-битных и 0 для 16 -немного. Отсутствующий суффикс эквивалентен.W. Байтовые операции с памятью влияют только на адресный байт, в то время как байтовые операции с регистрами очищают самый значимый байт.
15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | Команда |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0 | 0 | 0 | 1 | 0 | 0 | opcode | Ч / Б | As | регистр | Однооперандная арифметика | ||||||
0 | 0 | 0 | 1 | 0 | 0 | 0 | 0 | 0 | Ч / Б | As | регистр | RRC Повернуть вправо (1 бит) через регистр переноса | ||||
0 | 0 | 0 | 1 | 0 | 0 | 0 | 0 | 1 | 0 | As | SWPB Поменять местами байты | |||||
0 | 0 | 0 | 1 | 0 | 0 | 0 | 1 | 0 | Ч / Б | As | регистр | RRA Повернуть вправо (1 бит) арифметический | ||||
0 | 0 | 0 | 1 | 0 | 0 | 0 | 1 | 1 | 0 | As | регистр | SXT Знак расширить байт до слова | ||||
0 | 0 | 0 | 1 | 0 | 0 | 1 | 0 | 0 | Ч / Б | As | регистр | PUSH Вставить значение в стек | ||||
0 | 0 | 0 | 1 | 0 | 0 | 1 | 0 | 1 | 0 | As | регистр | CALL Вызов подпрограммы; нажмите ПК и переместите источник на ПК | ||||
0 | 0 | 0 | 1 | 0 | 0 | 1 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | RETI Возврат из прерывания; pop SR, затем pop PC |
0 | 0 | 1 | условие | 10-битное смещение со знаком | Условный переход; PC = PC + 2 × смещение | |||||||||||
0 | 0 | 1 | 0 | 0 | 0 | 10-битное смещение со знаком | JNE / JNZ Переход, если не равно / ноль | |||||||||
0 | 0 | 1 | 0 | 0 | 1 | 10-битное смещение со знаком | JEQ /JZПерейти, если равно / нулю | |||||||||
0 | 0 | 1 | 0 | 1 | 0 | 10-битное смещение со знаком | JNC / JLO Перейти, если нет переноса / меньше | |||||||||
0 | 0 | 1 | 0 | 1 | 1 | 10-битное смещение со знаком | JC/JHS Перейти, если перенос / больше или такое же | |||||||||
0 | 0 | 1 | 1 | 0 | 0 | 10-битное смещение со знаком | JNПерейти, если отрицательное | |||||||||
0 | 0 | 1 | 1 | 0 | 1 | 10-битное смещение со знаком | JGE Перейти, если больше или равно | |||||||||
0 | 0 | 1 | 1 | 1 | 0 | 10-битное смещение со знаком | JLПерейти, если меньше | |||||||||
0 | 0 | 1 | 1 | 1 | 1 | 10-битное смещение со знаком | JMP Перейти (безусловно) | |||||||||
opcode | источник | Ad | Ч / Б | As | пункт назначения | Двухоперандная арифметика | ||||||||||
0 | 1 | 0 | 0 | источник | Ad | Ч / Б | As | пункт назначения | MOV Переместить источник в пункт назначения | |||||||
0 | 1 | 0 | 1 | источник | Ad | Ч / Б | As | пункт назначения | ДОБАВИТЬ Добавить источник в пункт назначения | |||||||
0 | 1 | 1 | 0 | источник | Ad | Ч / Б | As | пункт назначения | ADDC Добавить источник и перенести в пункт назначения | |||||||
0 | 1 | 1 | 1 | источник | Ad | Ч / Б | As | пункт назначения | SUBC Вычесть источник из пункта назначения (с переносом) | |||||||
1 | 0 | 0 | 0 | источник | Ad | Ч / Б | As | пункт назначения | SUB Вычесть источник из пункта назначения на | |||||||
1 | 0 | 0 | 1 | источнике | Ad | Ч / Б | As | пункте назначения | CMP Сравнить (сделать вид, что вычитать) источник из пункта назначения | |||||||
1 | 0 | 1 | 0 | источник | Ad | Ч / Б | As | пункт назначения | DADD Десятичный добавить источник к месту назначения (с переносом) | |||||||
1 | 0 | 1 | 1 | источник | Ad | Ч / Б | As | назначение | БИТ Тестовые биты источника И назначения | |||||||
1 | 1 | 0 | 0 | источник | Ad | Ч / Б | As | пункт назначения | BIC Очистка бита (dest = ~ src) | |||||||
1 | 1 | 0 | 1 | источник | Ad | Ч / Б | As | пункт назначения | BIS Бит установлен (логическое ИЛИ) | |||||||
1 | 1 | 1 | 0 | источник | Ad | Ч / Б | As | пункт назначения | XORИсключительный или источник с пунктом назначения | |||||||
1 | 1 | 1 | 1 | источник | Ad | Ч / Б | As | пункт назначения | И Логическое И источник с местом назначения (dest = src) |
Инструкции состоят из 16 бит, за которыми следуют до двух 16-битных слов расширения. Режимы адресации задаются 2-битным полем As и 1-битным полем Ad. Некоторые специальные версии могут быть созданы с использованием R0, а режимы, отличные от прямого использования регистра с использованием R2 (регистр состояния) и R3 (генератор констант), интерпретируются особым образом. Объявление может использовать только подмножество режимов адресации для As.
В режимах индексированной адресации к инструкции добавляется 16-битное слово расширения. Если индексируются и источник, и место назначения, первым идет слово расширения источника. x относится к следующему слову расширения в потоке инструкций в таблице ниже.
As | Ad | Регистр | Синтаксис | Описание |
---|---|---|---|---|
00 | 0 | n | Rn | Прямая регистрация. Операнд - это содержимое Rn. |
01 | 1 | n | x (Rn) | проиндексировано. Операнд находится в памяти по адресу Rn + x. |
10 | — | n | @Rn | Зарегистрируйте косвенный. Операнд находится в памяти по адресу, содержащемуся в Rn. |
11 | — | n | @ Rn + | Косвенный автоинкремент. Как и выше, регистр увеличивается на 1 или 2. |
Режимы адресации с использованием R0 (ПК) | ||||
01 | 1 | 0 (ПК) | ADDR | Символьный. Эквивалентно x (ПК). Операнд находится в памяти по адресу PC + x. |
11 | — | 0 (ПК) | #x | Немедленно. Эквивалент @ PC +. Операнд - это следующее слово в потоке инструкций. |
Режимы адресации с использованием R2 (SR) и R3 (CG), декодирование в частном случае | ||||
01 | 1 | 2 (SR) | ADDR | Абсолютный. Операнд находится в памяти по адресу x. |
10 | — | 2 (SR) | #4 | Константа. Операндом является константа 4. |
11 | — | 2 (SR) | #8 | Константа. Операндом является константа 8. |
00 | — | 3 (CG) | #0 | Константа. Операндом является константа 0. |
01 | — | 3 (CG) | #1 | Константа. Операндом является константа 1. Индексного слова нет. |
10 | — | 3 (CG) | #2 | Константа. Операндом является константа 2. |
11 | — | 3 (CG) | # -1 | Константа. Операнд - константа -1. |
Команды обычно занимают 1 цикл на каждое извлеченное или сохраненное слово, поэтому время выполнения команд варьируется от 1 цикла для простой инструкции регистр-регистр до 6 циклов для инструкции с индексированными как источником, так и получателем.
Расширение MSP430X с 20-битной адресацией добавляет дополнительные инструкции, для которых может потребоваться до 10 тактов. Установка или очистка периферийного бита занимает два такта. Прыжок, сделанный или нет, требует двух часов. В серии 2xx 2 MCLK составляют 125 нс на частоте 16 МГц.
Разрешены переходы к счетчику программ и выполнение прыжков. Например, возврат из подпрограммы реализован как MOV @ SP +, PC .
Когда R0 (PC) или R1 (SP) используются в режиме адресации с автоинкрементом, они всегда увеличиваются на два. Другие регистры (с R4 по R15) увеличиваются на размер операнда, либо на 1, либо на 2 байта.
Регистр состояния содержит 4 арифметических бита состояния, глобальное разрешение прерывания и 4 бита, которые отключают различные часы для перехода в режим пониженного энергопотребления. При обработке прерывания процессор сохраняет регистр состояния в стеке и очищает биты низкого энергопотребления. Если обработчик прерывания не изменяет сохраненный регистр состояния, при возврате из прерывания будет возобновлен исходный режимс низким энергопотреблением.
Ряд дополнительных инструкций реализован как псевдонимы для форм вышеперечисленного. Например, нет конкретной инструкции «возврат из подпрограммы», но она реализована как «MOV @ SP +, PC». Эмулируемые инструкции:
Эмулированные | Фактические | Описание |
---|---|---|
ADC .x dst | ADDC.x # 0, dst | Добавить перенос к месту назначения |
BRdst | MOV dst, PC | Переход к месту назначения |
CLR .x dst | MOV.x # 0, dst | Очистить адрес назначения |
CLRC | BIC # 1, SR | Очистить бит переноса |
CLRN | BIC # 4, SR | Очистить отрицательный бит |
CLRZ | BIC # 2, SR | Очистить нулевой бит |
DADC .x dst | DADD.x # 0, dst | Десятичное добавление переноса в пункт назначения |
DEC .x dst | SUB.x # 1, dst | Decrement |
DECD . x dst | SUB.x # 2, dst | Двойной декремент |
DINT | BIC # 8, SR | Отключить прерывания |
EINT | BIS # 8, SR | Разрешить прерывания |
INC .x dst | ADD.x # 1, dst | Increment |
INCD .x dst | ADD.x # 2, dst | Двойное приращение |
INV .x dst | XOR.x # −1, dst | Инвертировать |
NOP | MOV # 0, R3 | Нет операции |
POP dst | MOV @ SP +, dst | Извлечь из стека |
RET | MOV @ SP +, PC | Возврат из подпрограммы |
RLA . x dst | ADD.x dst, dst | Повернуть арифметику влево (сдвинуть на 1 бит влево) |
RLC .x dst | ADDC.x dst, dst | Повернуть влево через перенос |
SBC .x dst | SUBC.x # 0, dst | Вычесть заимствование (1-перенос) из места назначения |
SETC | BIS # 1, SR | Установить бит переноса |
SETN | BIS # 4, SR | Установить отрицательный бит |
SETZ | BIS # 2, SR | Установить нулевой бит |
TST .x dst | CMP.x # 0, dst | Тестовое назначение |
Обратите внимание, что немедленное константы -1 (0xffff), 0, 1, 2, 4 и 8 могут быть указаны в инструкции из одного слова без необходимости в отдельном непосредственном операнде.
Базовый MSP430 не может поддерживать больше памяти (ПЗУ + ОЗУ + периферийные устройства), чем его адресное пространство 64 КБ. Для поддержки этого расширенная форма MSP430 использует 20-разрядные регистры и 20-разрядное адресное пространство, что позволяет использовать до 1 МБ памяти. Здесь используется тот же набор инструкций, что и в базовой форме, но с двумя расширениями:
Расширенные инструкции включают некоторые дополнительные возможности, в частности, многобитовые сдвиги и операции загрузки / сохранения нескольких регистров.
20-битные операции используют суффикс длины «A» (для адреса) вместо.B или.W..W по-прежнему используется по умолчанию. Как правило, более короткие операции очищают старшие биты регистра назначения.
Новые инструкции выглядят следующим образом:
15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | Второе слово | Команда |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0 | 0 | 0 | 0 | источник | 0 | 0 | opcode | назначение | Расширенный регистр памяти перемещает | ||||||||
0 | 0 | 0 | 0 | src | 0 | 0 | 0 | 0 | dst | — | MOVA @ Rsrc, Rdst | ||||||
0 | 0 | 0 | 0 | src | 0 | 0 | 0 | 1 | dst | — | MOVA @ Rsrc +, Rdst | ||||||
0 | 0 | 0 | 0 | адрес [19:16] | 0 | 0 | 1 | 0 | dst | адрес [15: 0] | MOVA abs20, Rdst | ||||||
0 | 0 | 0 | 0 | src | 0 | 0 | 1 | 1 | dst | x [15: 0 ] | MOVA x (Rsrc), Rdst | ||||||
0 | 0 | 0 | 0 | n−1 | op. | 0 | 1 | 0 | W/A | назначение | Битовые сдвиги (1–4 позиции битов) | ||||||
0 | 0 | 0 | 0 | n−1 | 0 | 0 | 0 | 1 | 0 | W/A | dst | — | RRCM .x # n, Rdst (Повернуть вправо через перенос.) | ||||
0 | 0 | 0 | 0 | n − 1 | 0 | 1 | 0 | 1 | 0 | W / A | dst | — | RRAM .x # n, Rdst (Повернуть арифметику вправо, иначе сдвиг вправо со знаком.) | ||||
0 | 0 | 0 | 0 | n-1 | 1 | 0 | 0 | 1 | 0 | W / A | dst | — | RLAM .x # n, Rdst (Повернуть влево арифметику, также можно сдвинуть влево) | ||||
0 | 0 | 0 | 0 | n−1 | 1 | 1 | 0 | 1 | 0 | W/A | dst | — | RRUM .x # n, Rdst (Поворот вправо без знака, он же логический сдвиг вправо) | ||||
0 | 0 | 0 | 0 | источник | 0 | 1 | 1 | op. | назначение | Расширенные перемещения регистров и памяти | |||||||
0 | 0 | 0 | 0 | src | 0 | 1 | 1 | 0 | адрес [19:16] | адрес [ 15: 0] | MOVA Rsrc, abs20 | ||||||
0 | 0 | 0 | 0 | src | 0 | 1 | 1 | 1 | dst | x [15: 0] | MOVA Rsrc, x (Rdst) | ||||||
0 | 0 | 0 | 0 | источник | 1 | код операции | пункт назначения | Расширенные операции ALU | |||||||||
0 | 0 | 0 | 0 | imm[19:16 visible | 1 | 0 | 0 | 0 | dst | imm [15: 0] | MOVA # imm20, Rdst | ||||||
0 | 0 | 0 | 0 | imm[19:16 impression | 1 | 0 | 0 | 1 | dst | imm [15: 0] | CMPA # imm20, Rdst | ||||||
0 | 0 | 0 | 0 | imm [19:16] | 1 | 0 | 1 | 0 | dst | imm [15: 0] | ADDA # imm20, Rdst | ||||||
0 | 0 | 0 | 0 | imm[19:16 provided | 1 | 0 | 1 | 1 | dst | imm [15: 0 ] | SUBA # imm20, Rdst | ||||||
0 | 0 | 0 | 0 | src | 1 | 1 | 0 | 0 | dst | — | MOVA Rsrc, Rdst | ||||||
0 | 0 | 0 | 0 | src | 1 | 1 | 0 | 1 | dst | — | CMPA Rsrc, Rdst | ||||||
0 | 0 | 0 | 0 | src | 1 | 1 | 1 | 0 | dst | — | ADDA Rsrc, Rdst | ||||||
0 | 0 | 0 | 0 | src | 1 | 1 | 1 | 1 | dst | — | SUBA Rsrc, Rdst | ||||||
0 | 0 | 0 | 1 | 0 | 0 | 1 | 1 | op. | режим | варьируется | CALLA | ||||||
0 | 0 | 0 | 1 | 0 | 0 | 1 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | — | RETI (То же, что и MSP430) |
0 | 0 | 0 | 1 | 0 | 0 | 1 | 1 | 0 | 1 | As | регистр | CALLA источник | |||||
0 | 0 | 0 | 1 | 0 | 0 | 1 | 1 | 1 | 0 | 0 | 0 | abs[19:16 impression | abs [15: 0] | CALLA abs20 | |||
0 | 0 | 0 | 1 | 0 | 0 | 1 | 1 | 1 | 0 | 0 | 1 | x[19:16 impression | x [15: 0] | CALLA x (PC) | |||
0 | 0 | 0 | 1 | 0 | 0 | 1 | 1 | 1 | 0 | 1 | 0 | — | — | (зарезервировано) | |||
0 | 0 | 0 | 1 | 0 | 0 | 1 | 1 | 1 | 0 | 1 | 1 | imm [19:16] | imm [15: 0] | CALLA # imm20 | |||
0 | 0 | 0 | 1 | 0 | 0 | 1 | 1 | 1 | 1 | — | — | (зарезервировано) | |||||
0 | 0 | 0 | 1 | 0 | 1 | dir | W / A | n−1 | регистр | Push / pop n регистров, заканчивающихся указанным | |||||||
0 | 0 | 0 | 1 | 0 | 1 | 0 | W / A | n − 1 | src | — | PUSHM .x # n, Rsrc Push Rsrc, R (src − 1),... R (src − n + 1) | ||||||
0 | 0 | 0 | 1 | 0 | 1 | 1 | W / A | n − 1 | dst − n + 1 | — | POPM .x # n, Rdst Pop R (dst − n + 1), R ( dst − n + 2),... Rdst |
Все другие инструкции могут иметь добавленное префиксное слово, которое расширяет их до 20 бит. Слово префикса содержит дополнительный бит размера операнда, который комбинируется с существующим битом Ч / Б для определения размера операнда. Есть одна неиспользованная комбинация размеров; есть признаки того, что это может быть использовано в будущем для 32-битного размера операнда.
Префиксное слово бывает двух форматов, и выбор между ними зависит от следующей инструкции. Если инструкция имеет какие-либо не регистровые операнды, то используется простая форма, которая предоставляет 2 4-битных поля для расширения любого смещения или непосредственной константы в потоке инструкций до 20 бит.
Если команда является записываемой, используется другое слово расширения. Сюда входит флаг «ZC», который подавляет перенос (полезно для таких инструкций, как DADD, которые всегда используют бит переноса), и счетчик повторов. 4-битное поле в слове расширения кодирует либо счетчик повторов (0–15 повторов в дополнение к начальному выполнению), либо номер регистра, который содержит 4-битный счетчик повторов.
15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | Инструкция |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0 | 0 | 0 | 1 | 1 | — | A / L | 0 | 0 | — | Расширяющее слово | ||||||
0 | 0 | 0 | 1 | 1 | src[19:16 impression | A / L | 0 | 0 | dst [19: 16] | Расширение операнда памяти | ||||||
0 | 0 | 0 | 1 | 1 | 0 | 0 | ZC | 0 | A / L | 0 | 0 | n-1 | Расширение операнда регистра (немедленное количество повторов) | |||
0 | 0 | 0 | 1 | 1 | 0 | 0 | ZC | 1 | A / L | 0 | 0 | Rn | Расширение операнда регистра (счетчик повторов регистра) |
Общая структура адресного пространства MSP430:
Некоторые модели включают более 2048 байтов ОЗУ; в этом случае RAM начинается с 0x1100. Первые 2048 байтов (0x1100–0x18FF) зеркалируются по адресу 0x0200–0x09FF для совместимости. Кроме того, некоторые последние модели изменяют правила для 8-битных и 16-битных периферийных устройств, обеспечивая 16-битный доступ к периферийным устройствам в 8-битном диапазоне периферийных адресов.
Существует новая расширенная версия архитектуры (называемая MSP430X), которая допускает 20-битное адресное пространство . Это позволяет дополнительное ПЗУ программы, начиная с 0x10000.
Серия 5xx имеет значительно переработанное адресное пространство: первые 4 КБ предназначены для периферийных устройств и до 16 КБ ОЗУ.
Имя | Производитель | Интерфейс | Протокол (ы) | Статус |
---|---|---|---|---|
MSP-FET430PIF | TI | Параллельный порт | JTAG | |
MSP-FET430UIF | TI | U SB-интерфейс | JTAG, Spy-Bi-Wire | |
MSP-FET | TI | USB-интерфейс | JTAG, Spy-Bi-Wire | |
MSP-430 LaunchPad | TI | USB-интерфейс | Spy-Bi-Wire | |
MSP-430 LaunchPad eZ-FET | TI | USB-интерфейс | Spy-Bi-Wire | |
eZ430-F2013 | TI | USB-интерфейс | Spy-Bi-Wire | |
eZ430-RF2500 | TI | USB-интерфейс | Spy-Bi-Wire | |
FETP | SoftBaugh | Параллельный -Port | JTAG | |
USBP | SoftBaugh | USB-интерфейс | JTAG, Spy-Bi-Wire | снято с производства |
MSP430-JTAG | Olimex | Параллельный порт | JTAG | |
MSP430-JTAG-ISO | Olimex | USB-интерфейс | JTAG, Spy-Bi-Wire | obsolete |
MSP430-JTAG-ISO-MK2 | Olimex | USB-Interface | JTAG, Spy-Bi-Wire | |
MSP430-JTAG-Tiny | Olimex | USB-Interface | JTAG, Spy-Bi-Wire | not found |
MSP430-JTAG-TINY-V2 | Olimex | USB-Interface | JTAG?, Spy-Bi-Wire | |
MSP430-JTAG-RF | Olimex | USB-Interface | JTAG, Spy-Bi-Wire | |
Fla shPro-CC | Elprotronic | USB-Interface | JTAG, Spy-Bi-Wire, BSL | |
VisSim /ECD | Visual Solutions | USB-Interface | JTAG, Spy-Bi-Wire | |
LA-3713 | Lauterbach | USB-Interface / Ethernet | JTAG, Spy-bi-Wire |