- •Микроконтроллеры msp430 Введение
- •1. Центральный процессор msp430
- •1.1. Адресное пространство микроконтроллеров msp430f1xx
- •1.2. Регистровый файл
- •1.3. Байтовая и словная формы инструкций.
- •1.4. Режимы адресации
- •1.4.1 Регистровая адресация
- •1.4.2. Индексная адресация
- •1.4.3 Символьная адресация
- •1.4.4 Абсолютная адресация
- •1.4.5. Косвенная адресация
- •1.4.6. Косвенная адресация с автоинкрементом
- •1.4.7 Непосредственная адресация
- •2. Система команд msp микроконтроллеров
- •2.1. Двухадресные команды
- •2.2 Одноадресные команды
- •2.3 Команды переходов
- •2.4. Эмулируемые команды
- •3. Периферийные устройства микроконтроллеров msp430f1xx
- •3.1 Внешние выводы микроконтроллера msp430f149
- •3.2 Система прерываний
- •3.3 Система тактирования
- •3.4 Сторожевой таймер
- •3.5 Аппаратный умножитель
- •3.6 Порты ввода/вывода
- •3.7 Таймер a3
- •3.8 Таймер b7
- •3.9 Интерфейс usart
- •3.9.1 Режим uart
- •3.9.1.1 Передача данных
- •3.9.1.2 Прием данных
- •3.9.1.3 Поддержка коммуникации в многопроцессорных системах
- •3.9.1.4 Обнаружение стартового бита при приеме
- •3.9.1.5 Скорость передачи
- •3.9.1.6 Регистры usart
- •3.9.2 Режим spi
- •3.9.3 Режим i2c
- •3.9.3.1 Общие сведения о шине i2c
- •3.9.3.2 Режимы работы usart в режиме i2c
- •3.9.3.3 Арбитраж
- •3.9.3.4 Тактирование i2c модуля
- •3.9.3.4 Инициализация модуля i2c
- •3.9.3.5 Регистры модуля usart в режиме i2c
- •3.10 Аналоговый компаратор
- •3.11 Аналого-цифровой преобразователь adc12
- •3.12 Flash контроллер
- •3.12.1 Стирание Flash памяти
- •3.12.2 Запись Flash памяти
- •3.12.3 Регистры Flash контроллера
- •3.13 Цифро-аналоговый преобразователь
- •Контроллер dma
3.9.1.6 Регистры usart
UxCTL (USART Control) – содержит биты управления USART.
7 6 5 4 3 2 1 0
-
PENA
PEV
SPB
CHAR
LISTEN
SYNC
MM
SWRS
Бит 7 – PENA (Parity Enable) –разрешение паритета. Установка/сброс этого бита включает/выключает контроль четности единиц в кадре.
Бит 6 – PEV (Parity Even) – четность паритета. Установка/сброс этого бита выбирает паритет четности/нечетности в том случае, если паритет разрешен.
Бит 5 – SPB (Stop Bit) - состояние этого бита задает количество стоп-битов в конце кадра:
0 – 1 стоп бит,
1 – 2 стоп бита.
Бит 4 – CHAR (Character) – определяет длину информационного поля кадра:
0 – 7 битов,
1 – 8 битов.
Бит 3 – LISTEN – прослушивание. Установка этого бита подключает выход UTXD ко входу URXD внутри USART, что дает возможность приемнику прослушивать данные, передаваемые собственным передатчиком.
Бит 2 – SYNC (Synchronous) – должен быть сброшен для задания режима UART.
Бит 1 – MM (Multiprocessor Mode) – установка/сброс этого бита задает режим многопроцессорного протокола:
0 – режим свободной линии – idle line,
1 – режим адресного бита – address bit.
Бит 0 – SWRS (Software Reset) – программный сброс. Установка этого бита в 1 производит программный сброс аппаратуры USART в исходное состояние, 0 – разрешает работу USART.
UxTCTL (USART Control) – содержит биты управления передатчика USART.
7 6 5 4 3 2 1 0
-
-
CKPL
SSEL1,0
URXSE
TXWAKE
-
TEXP
Бит 7 – зарезервирован.
Бит 6 – CKPL (Clock Polarity) – выбор полярности тактирования при использовании внешнего тактового сигнала UCLK. Установка этого бита инвертирует тактирующий сигнал.
Биты 5,4 – SSEL (Source Select) – комбинация этих бит задает источник тактирования USART
-
SSEL1
SSEL0
Источник
0
0
Внешний UCLK (P3.3/P5.3)
0
1
ACLK
1
0
SMCLK
1
1
SMCLK
Бит 3 – URXSE (UART Receive Start Edge) – контроль фронта стартового бита. Установка/сброс этого бита разрешает/запрещает реакцию на фронт стартового бита (см. п. 3.9.1.4).
Бит 2 – TXWAKE (Transmitter Wake) – пробуждение передатчика. При установке этого бита следующий кадр посылается как адресный. Сбрасывается автоматически.
Бит 1 – зарезервирован.
Бит 0 – TXEPT ( Transmitter Empty) – передатчик пуст. Устанавливается в 1 аппаратно в том случае если UTXBUF и сдвиговый регистр не содержит данных, в противном случае сбрасывается.
UxRCTL (USART Control) – содержит биты управления приемника USART.
7 6 5 4 3 2 1 0
-
FE
PE
OE
BRK
URXEIE
URXWIE
RXWAKE
RXERR
Бит 7 – FE (Frame Error) – ошибка кадра. Устанавливается аппаратно, если принятый стоп-бит равен 0. Сбрасывается программно или чтением URXBUF.
Бит 6 – PE (Parity Error) – ошибка паритета. Устанавливается аппаратно, если было обнаружено несоответствие единиц в полученном кадре и состоянием бита паритета. Сбрасывается программно или чтением URXBUF.
Бит 5 – OE (Overrun Error) – ошибка переполнения. Устанавливается аппаратно если при копировании данных из сдвигового регистра в URXBUF, старые данные не были вычитаны из буфера. Сбрасывается программно или чтением URXBUF.
Бит 4 – BRK (Break) – разрыв линии. Устанавливается аппаратно, если приемник обнаружил 10 или более нулевых битов на входе URXD. Сбрасывается программно или чтением URXBUF.
Бит 3 – URXEIE (Receive Erroneous-character Interrupt Enable) – разрешение прерывания при приеме ошибочного символа. Устанавливается/сбрасывается для разрешения/запрещения приема ошибочных символов – т.е. символов, прием которых вызвал установку битов 7,6,5 этого регистра. Если этот бит сброшен, прием символа с ошибками не устанавливает флаг URXIFG.
Бит 2 – URXWIE (Receive Wake-up Interrupt Enable) – разрешение прерывания при получении адресного байта. При установке этого бита принимаются (устанавливается флаг URXIFG) только адресные байты. При сбросе бита принимаются все байты.
Бит 1 – RXWAKE (Receive Wake-up) – прием адресного байта. Устанавливается аппаратно при приеме адресного байта. Сбрасывается аппаратно при приеме байта данных.
Бит 0 – RXERR (Receive Error) – ошибка приема. Устанавливается аппаратно, если установлен любой из флагов ошибок (FE,PE,OE,BRK). Сбрасывается чтением URXBUF.
UxMCTL (USART Control) – содержит биты управления модулятора USART (см. 3.9.1.5).
UxBR0 (Baud Rate) – младший байт делителя частоты тактирования UART.
UxBR1 (Baud Rate) – старший байт делителя частоты тактирования UART.
UxTXBUF (Transmit Buffer) – буферный регистр передатчика.
UxRXBUF (Transmit Buffer) – буферный регистр приемника
ME1 (Module Enable 1) – содержит биты разрешения приемника и передатчика USART0.
7 6 5 0
-
UTXE0
URXE0
-
Бит 7 – UTXE0 (USART0 Transmit Enable). Установка/сброс этого бита разрешает/запрещает передатчик USART0.
Бит 6 – URXE0 (USART0 Receive Enable). Установка/сброс этого бита разрешает/запрещает приемник USART0.
Биты 5…0 – зарезервированы.
ME2 (Module Enable 2) – содержит биты разрешения приемника и передатчика USART1.
7 6 5 4 3 0
-
-
UTXE1
URXE1
-
Биты 7,6 – зарезервированы.
Бит 5 – UTXE1 (USART1 Transmit Enable). Установка/сброс этого бита разрешает/запрещает передатчик USART1.
Бит 4 – URXE1 (USART1 Receive Enable). Установка/сброс этого бита разрешает/запрещает приемник USART1.
Биты 3…0 – зарезервированы.
IE1 (Interrupt Enable 1) – содержит биты разрешения прерываний для USART0 (см. п.3.2).
IE2 (Interrupt Enable 2) – содержит биты разрешения прерываний для USART1 (см. п.3.2).
IFG1 (Interrupt Flag 1) – содержит флаги прерываний для USART0 (см. п.3.2).
IFG2 (Interrupt Flag 2) – содержит флаги прерываний для USART1 (см. п.3.2).
ПРИМЕР
Принять 100 байт данных с помощью UART0 и записать их в ОЗУ, начиная с адреса 200h. Скорость передачи данных - 115.2 kb/s, формат – 8 бит, один стоп бит, частота SMCLK – 8 MHz.
Рассчитаем коэффициент деления частоты SMCLK для обеспечения требуемой скорости.
N=8000/115.2=69.4≈69
Погрешность скорости δ=100% * (69.4-69)/69.4≈0.6 %, следовательно модулятор можно не использовать.
mov.b #SWRST+CHAR, &U0CTL ; устанавливаем программный
; сброс, режим 8 бит
mov.b #SSEL1, &U0TCTL ; тактирование от SMCLK
mov.b #69, &U0BR0 ; установка скорости приема
mov.b #0, &U0BR1
mov.b #0, &U0MCTL
bis.b #URXE0, &ME1 ; разрешение приема
bic.b #URXIE0, &IE1 ; запрет прерываний
bis.b #40h, &P3SEL ; вывод P3.5/U0RXD для
; поддержки UART0
bic.b #SWRST, &U0CTL ; очистка программного сброса
mov #200h, R12 ; настраиваем указатель
wait: bit.b #URXIFG0, &IFG1 ; ожидание поступления кадра
jz wait
mov.b &U0RXBUF, 0(R12) ; сохранение данных в ОЗУ
inc R12 ; наращивание указателя
cmp #200h+100, R12 ; все данные приняты?
jne wait ; если нет, то цикл
