Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Так все таки нужен ВЧ кварц для правильной работы UART ?
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > MSP430
muller11
Уважаемый All,
Столкнулся с тем, что с часовым кварцем неточно работает UART. Процессор MSP430F2232.
UART работает на скорости 115200, но довольно много мусора.
На других скоростях мусора еще больше.
Пробовал DCO настраивать на 1 МГц и на 8 МГц, одна и та же картина.

Код
  WDTCTL = WDTPW + WDTHOLD;
   BCSCTL3 |=XCAP_2;

  BCSCTL1= CALBC1_8MHZ;  // =0x88;                 // Set DCO
  DCOCTL = CALDCO_8MHZ;

//-----------------UART init --------------------

  UCA0CTL0 |= UCPEN;    
  UCA0CTL0 |= UCPAR;        
  
  UCA0CTL0 |= UCMODE_3;

  UCA0CTL1 |= UCSSEL_2;                     // SMCLK
                                        
  UCA0BR0 = 4;                         // 8MHz 115200
  UCA0MCTL = 59;                         // 8MHz 115200
  
UCA0CTL1 &= ~UCSWRST;                     // **Initialize USCI state machine**
IE2 |= UCA0RXIE;                          // Enable USCI_A0 RX interrupt
IE2 |= UCA0TXIE;

//-------------------------------------------------------------------------

Посему вопрос нужно ли все-таки впаивать вместо часового кварц на 8 Мгц для того,
чтобы UART работал на всех скоростях ?
Кто-нибудь использовал это в серийных изделиях ?
Есть ли подводные камни ?
Я в одной плате впаял кварц на 8 МГц, так она прошиваться перестала.
Прошиваю MSP-FET430UIF
V_G
Класс!
Если под часовым кварцем имеется в виду 32 кГц, то как он может обеспечить работу на 115 кБод?
Я не знаю вашего проца, но по ходу это очень крутая штука! Там умножение, что ли, как в Пентиумах?
MrYuran
Можно и с часовым, но тактировать UART нужно от DCO, предварительно откалибровав его по часовому кварцу.
У TI аппликуха есть на этот счёт. (на счёт калибровки DCO)
Либо - термостабилизировать DCO (с внешним термостабильным резистором уход частоты порядка 1%, что допустимо для UART-а), тогда можно обойтись без кварца вообще.

Первый способ я лично испытал - работает. Второй - не пробовал, но есть вероятность. Кварцы день ото дня всё новые фокусы выдают laughing.gif

Всё вышенаписанное справедливо для серии 1xx, для второй - возможно, есть навороты.
Например:
Цитата
Basic Clock Module Configurations:

* Internal Frequencies up to 16 MHz With
Four Calibrated Frequencies to ±1%
* Internal Very-Low-Power Low-Frequency Oscillator
* 32-kHz Crystal
* High-Frequency Crystal up to 16 MHz
* Resonator
* External Digital Clock Source
* External Resistor

К сожалению, тесно со второй серией не работал
Slash
Судя по таблице 15-4 на странице 15-22 документа msp430x2xx Family User Guide, на частоте 8МГц и скорости 115200, ошибка приема\передачи будет не больше 2%. Должно работать.

Попробуйте поставить значения Baud Rate Control Register, как я оставил ниже.

Цитата(muller11 @ Oct 27 2009, 11:11) *
Код
  

  BCSCTL1= CALBC1_8MHZ;  // =0x88;                 // Set DCO
  DCOCTL = CALDCO_8MHZ;

//-----------------UART init --------------------

                                    
  UCA0BR0   = 0x45;                         // 8MHz 115200
  UCA0BR1   = 0x00;
  UCA0MCTL = 0x00;                         // 8MHz 115200
  
//-------------------------------------------------------------------------


ЗЫ Мало работал со второй серией, уарт настроил по аналогии с первой.
zltigo
Цитата(V_G @ Oct 27 2009, 10:42) *
Там умножение, что ли, как в Пентиумах?

Не бывает контроллеров кроме AVR? Оглянитесь кругом - PLL давно уже повседневная реальность в массовых контроллерах за несколько баксов, а не у "Пентиумов".
rezident
Цитата(Slash @ Oct 27 2009, 13:33) *
ЗЫ Мало работал со второй серией, уарт настроил по аналогии с первой.
В модуле USCI по сравнению с USART есть существенные отличия. Например бит управления разрядностью символа (7 бит/8 бит) проинвертирован. Регистр модуляции по-другому устроен. В общем рекомендую найти и почитать Migration Guide, где описаны различия.
muller11
Всем спасибо за участие !
Разобрался сам.
Впаял кварц 8 МГц, нормально работает на MSP430F4250 и MSP430F2232.
UART работает четко на всех скоростях, мусора нет совсем.
Вывод такой: если собираетесь использовать UART лучше ставить
кварц на 1-16 МГц вместо 32768.
Всем удачи
jorikdima
Цитата(muller11 @ Oct 28 2009, 17:27) *
Всем спасибо за участие !
Вывод такой: если собираетесь использовать UART лучше ставить
кварц на 1-16 МГц вместо 32768.
Всем удачи

не связанные вещи.

Цитата(zltigo @ Oct 27 2009, 11:38) *
Оглянитесь кругом - PLL давно уже повседневная реальность в массовых контроллерах за несколько баксов, а не у "Пентиумов".

Но у МСП нету smile.gif
rezident
Цитата(jorikdima @ Oct 28 2009, 20:17) *
Но у МСП нету smile.gif
В сериях MSP430x3xx, MSP430F4xx, MSP430F5xx есть модуль FLL.
MrYuran
Цитата(muller11 @ Oct 28 2009, 18:27) *
Вывод такой: если собираетесь использовать UART лучше ставить
кварц на 1-16 МГц вместо 32768.

Если вы уверены в качестве поставляемых кварцев и нет особых требований к энергопотреблению, то может быть и лучше.
SanvaldYV
Цитата(muller11 @ Oct 28 2009, 18:27) *
Вывод такой: если собираетесь использовать UART лучше ставить
кварц на 1-16 МГц вместо 32768.


Я в девайсе на msp430f247 тактировал UART от DCO, а частоту DCO периодически калибровал по часовому кварцу, никаких проблем со связью не было.
Но если у вас нет жестких требований по потреблению, точности измерения длительных временных интервалов и стоимости вашего изделия, то возможно вы правы.
Shread
Цитата(muller11 @ Oct 28 2009, 17:27) *
Вывод такой: если собираетесь использовать UART лучше ставить
кварц на 1-16 МГц вместо 32768.

Чет вы явно не так делаете.
В нескольких изделиях использую калиброваный по часовому кварцу DCO, номиналом 15667200Hz, обеспечивает ОТЛИЧНУЮ работу UART на скорости 921600бод, на процессоре MSP430F2370.
SanvaldYV
Цитата(Shread @ Nov 9 2009, 10:34) *
Чет вы явно не так делаете.
В нескольких изделиях использую калиброваный по часовому кварцу DCO, номиналом 15667200Hz, обеспечивает ОТЛИЧНУЮ работу UART на скорости 921600бод, на процессоре MSP430F2370.


Никто и не сомневается, что UART можно тактировать от периодически калибруемого DCO, и все будет отлично работать. Вопрос в другом - если есть возможность поставить ВЧ-кварц вместо 32768, то почему бы не поставить?
Shread
Цитата(Юрий Санвальд @ Nov 9 2009, 13:17) *
Никто и не сомневается, что UART можно тактировать от периодически калибруемого DCO, и все будет отлично работать. Вопрос в другом - если есть возможность поставить ВЧ-кварц вместо 32768, то почему бы не поставить?

у меня в изделии три разных тактовых частоты и девайс автономный. Спрашивается, зачем мне нужен какой-то один дорогой точный высокочастотник в неудобном корпусе, когда я могу поставить типовой часовой габаритами 3,5*1,2мм ?
jorikdima
Цитата(Юрий Санвальд @ Nov 9 2009, 13:17) *
Никто и не сомневается, что UART можно тактировать от периодически калибруемого DCO, и все будет отлично работать. Вопрос в другом - если есть возможность поставить ВЧ-кварц вместо 32768, то почему бы не поставить?

потому что вместо не всегда можно, вместе (XT2) можно, но зачем, если можно часовым обойтись smile.gif
Hamster1979
Если используете пониженные режимы потребления LPM3 и ниже там тоже лучше ACLK = 32768 юзать. Из практики 327678 +DCO + USART 115kбит - полет нормальный(все работает стабильно на серийном устройстве).
Если вдруг у кого проблемы с настройкой регистров UART - http://www.ece.uah.edu/~jovanov/msp430/MSP..._Calculator.xls
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.