реклама на сайте
подробности

 
 
 
Reply to this topicStart new topic
> UART+System Clock
Olegovich
сообщение Apr 20 2005, 10:56
Сообщение #1


Частый гость
**

Группа: Свой
Сообщений: 131
Регистрация: 3-03-05
Из: Санкт-Петербург
Пользователь №: 3 037



Такая ерудна творится, я недавно на MSP пересел...

Надо настроить UART, сам UART вроде настраиваю нормально, всё по методе, а частота получается раз в 10 меньше, чем надо.

Дело, видимо, в том что надо на него подать сигнал SMCLK, и как настроить уже вот этот сигнал, чтоб он шел от MCLK, да и сам MCLK надо ли перед этим как-то настраивать???
Go to the top of the page
 
+Quote Post
rezident
сообщение Apr 20 2005, 11:09
Сообщение #2


Гуру
******

Группа: Свой
Сообщений: 10 920
Регистрация: 5-04-05
Пользователь №: 3 882



Выбор частоты тактирование SMCLK настраивается при инициализации основного модуля тактирования (регистр BCSCTL2). Процедура инициализации модуля тактирования описана в User's Manual или см. перевод на gaw.ru. Там же и про настройку UART описано. Кстати, какой именно кристалл используете?
Go to the top of the page
 
+Quote Post
Olegovich
сообщение Apr 20 2005, 11:34
Сообщение #3


Частый гость
**

Группа: Свой
Сообщений: 131
Регистрация: 3-03-05
Из: Санкт-Петербург
Пользователь №: 3 037



Цитата(rezident @ Apr 20 2005, 14:09)
Выбор частоты тактирование SMCLK настраивается при инициализации основного модуля тактирования (регистр BCSCTL2). Процедура инициализации модуля тактирования описана в User's Manual или см. перевод на gaw.ru. Там же и про настройку UART описано. Кстати, какой именно кристалл используете?
*


MSP430F149
пока не получается...
Go to the top of the page
 
+Quote Post
VAI
сообщение Apr 20 2005, 12:13
Сообщение #4


Профессионал
*****

Группа: Модераторы
Сообщений: 1 120
Регистрация: 17-06-04
Пользователь №: 37



Гляньте здесь. Я прикладывал свои исходники для UART в файле 1.rar


--------------------
Если зайца бить, его можно и спички научить зажигать
Сколько дурака не бей - умнее не будет. Зато опытнее
Go to the top of the page
 
+Quote Post
Olegovich
сообщение Apr 20 2005, 12:15
Сообщение #5


Частый гость
**

Группа: Свой
Сообщений: 131
Регистрация: 3-03-05
Из: Санкт-Петербург
Пользователь №: 3 037



Если быть конкретнее -
у меня 8 МГц кварц подключен на XIN:CLK,
надо установить битрейт 38400, что делать?....

smile3046.gif
Go to the top of the page
 
+Quote Post
rezident
сообщение Apr 20 2005, 15:23
Сообщение #6


Гуру
******

Группа: Свой
Сообщений: 10 920
Регистрация: 5-04-05
Пользователь №: 3 882



Цитата(Olegovich @ Apr 20 2005, 18:15)
Если быть конкретнее -
у меня 8 МГц кварц подключен на XIN:CLK,
надо установить битрейт 38400, что делать?....
*


Если хочется получить точные частоты для UART, то рекомендую использовать кварц 7372,8кГц вместо 8МГц.

Значится инициализация модуля тактирования будет такая.
Код
#include <msp430x14x.h>

#pragma vector=NMI_VECTOR
__interrupt void OSC_Fault(void)
{
// =======   Инициализация источников тактирования ACLK, MCLK, SMCLK ====
 BCSCTL2 = SELM_0 + DIVM_0 + DIVS_0;             // сначала перейдем на внутреннее тактирование
 BCSCTL1 = DIVA_0+RSEL2+RSEL1+RSEL0;             // ACLK=LFXT/1=32768Гц
 DCOCTL = DCO1 + DCO2;                           // DCO около 4МГц
 while ((IFG1 & OFIFG) != 0) IFG1 &=~OFIFG;      // Ожидаем пока стабилизируются колебания кварца
 BCSCTL2 = SELM_2 + DIVM_0 + SELS + DIVS_0;      // MCLK=XT2/1=7.3728МГц, SMCLK=XT2/1=7.3728МГц
 IE1 |= OFIE;                                    // разрешить прерывание от детектора ошибки резонатора
}

void main(void)
{
 WDTCTL = WDTPW + WDTHOLD;                       // Останов сторожевого таймера
 IE1 |= OFIE + WDTIE;                            // разрешить прерывание от детектора ошибки резонатора
 IFG1 |= OFIFG;                                  // установка бита прерывания ошибки осциллятора, для вызова процедуры
//***********
// тут будет ваш код main
//***********
}


Процедура инициализации UART такая:
для кварца 7372,8кГц;
baud 38400;
четность используется;
проверка на четность;
8-ми битные данные;
Код
void _init_uart0(void)
{
U0CTL = SWRST;                                   // уст.бит прогр. сброса модуля UART0
U0CTL |= PENA+PEV+CHAR;                          // уст.режим UART-четн.,1стоп-бит, 8бит данные  
U0TCTL = SSEL0 + SSEL1;                          // U0CLK = SMCLK
U0BR1 = 0x00;                                    // уст.старший байт предделителя BITCLK
U0BR0 = 0xC0;                                    // уст.младший байт предделителя BITCLK
U0MCTL = 0x00;                                   // установка регистра модуляции
// для кварца 8МГц
//  U0BR1 = 0x00;                                 // уст.старший байт предделителя BITCLK
//  U0BR0 = 0xD0;                                 // уст.младший байт предделителя BITCLK
//  U0MCTL = 0x92;                                // установка регистра модуляции
ME1 |= UTXE0 + URXE0;                            // разрешаем работу модуля UART0
U0RCTL = URXEIE;                                 // разр.прерыв. для ош. прин.символов
U0CTL &=~ SWRST;                                 // очистим бит программного сброса
IE1 |= URXIE0 + UTXIE0;                          // разрешить прерывания для UART0
//********************
//  здесь можно добавать инициализацию Port3
//  точнее тех пинов которые относятся к UTXD и URXD
//*********************
}


Премопередача будет вестись по прерываниями от модуля UART. Их можете сами оформить. Успехов!
Go to the top of the page
 
+Quote Post
VAI
сообщение Apr 21 2005, 03:26
Сообщение #7


Профессионал
*****

Группа: Модераторы
Сообщений: 1 120
Регистрация: 17-06-04
Пользователь №: 37



Я в сообщении выше ссылку забыл http://forum.electronix.ru/index.php?showtopic=3794&hl=#


--------------------
Если зайца бить, его можно и спички научить зажигать
Сколько дурака не бей - умнее не будет. Зато опытнее
Go to the top of the page
 
+Quote Post
Olegovich
сообщение Apr 21 2005, 08:16
Сообщение #8


Частый гость
**

Группа: Свой
Сообщений: 131
Регистрация: 3-03-05
Из: Санкт-Петербург
Пользователь №: 3 037



thanks!
Разобрался.
Go to the top of the page
 
+Quote Post

Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 23rd July 2025 - 21:10
Рейтинг@Mail.ru


Страница сгенерированна за 0.01431 секунд с 7
ELECTRONIX ©2004-2016