Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: MSP430F449 UART - необходима помощь....
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > MSP430
Fenriz
Люди, если не трудно, помогите студенту: Хочу связать MSP430F449 с PC через COM (ну хотя бы, чтоб контроллер эхо на HyperT дал) и ничего не получается.
Заранее спасибо.
Adlex
UART процессора - драйвер RS232 (напр. ST232) - COM порт компьютера. В самом простейшем случае используются только цепи TXD, RXD и GND.
Joy
а какие конкретно проблемы? ставится микросхема типа ST232, настраивается UART (в доке достаточно точно описан этот процесс) - и все! правда у меня иногда бывали проблемы именно с гипертерминалом (почему-то байты приходят. но не отправляются. в этом смысле беспроигрышный вариант - mTTY
avesat
Проблема скорее всего в неправильной инициализации UARTA. Описание его настроек лучше чем в мане ты вряд ли где найдешь, там и блок схемки есть, по которым мож набить свою программу. Под иаровским симулятором посмотри регистры USART0. Ну, если совсем глухо, наверно железяка мертвая.
rezident
Думаю, что студенту помощь в виде уже готовой программы нужна. Нахяляву так сказать. Иначе он привел бы свой код и спросил что он не так делает. Студент, я угадал? wink.gif
Bolg
Господа разработчики, вы неправильно поняли fenriza!
Мы с ним занимаемя разработкой небольшого устройства, какого неважно. На этапе отладки нам требуется связаться с сом-портом по терминальной программе.
В качестве преобразователя уровней RS-232 в TTL используется MAX232 со стандартной обвязкой взятой из мануала. Текст программы следующий:

#include <msp430x44x.h>

void main(void)
{
WDTCTL = WDTPW + WDTHOLD; // Stop WDT

FLL_CTL0 |= XCAP18PF; // Configure load caps

P2SEL |= 0x30; // P2.4,5 = USART0 TXD/RXD
ME1 |= UTXE0 + URXE0; // Enable USART0 TXD/RXD

UCTL0 |= CHAR; // 8-bit character
UTCTL0 |= SSEL0; // UCLK = ACLK
UBR00 = 0x0D; // 32k/2400 - 13.65
UBR10 = 0x00;
UMCTL0 = 0x6B; // Modulation
UCTL0 &= ~SWRST; // Initialize USART state machine
IE1 |= URXIE0; // Enable USART0 RX interrupt

// Mainloop
for (;;)
{
_BIS_SR(LPM3_bits + GIE); // Enter LPM3 w/interrupt
while (!(IFG1 & UTXIFG0)); // USART0 TX buffer ready?
TXBUF0 = RXBUF0; // RXBUF0 to TXBUF0
}
}

// UART0 RX ISR will for exit from LPM3 in Mainloop
__interrupt void usart0_rx (void);
USART0RX_ISR(usart0_rx)
__interrupt void usart0_rx (void)
{
_BIC_SR_IRQ(LPM3_bits); // Clear LPM3 bits from 0(SR)
}

Взят из стандартных примеров Тексаса. Среда - Code Composer.
Контроллер находится в отадочной плате, т.е. питание и прочая разводка выполнена заводстким методом. Единственная добавленная деталь - кварц на 32 КГц с обвязкой из двух кондеров на 10 пФ. Сам микроконтролер рабочий - работоспосоност проверена с помощью тестовой программы с лапочкой. Сама микросхема MAX232 также рабочая. Соответсвенно возникает вопрос - где ошибка? huh.gif
Думается что скорее всего в коде. Он перед вами - надеемся на совет.
Халявы нам не надо, а нужна помощь или совет более опытных людей! rolleyes.gif
Bolg
Можете стучать в асю 290-240-096
VAI
лучше бы не MAX232, а MAX3232.
а
Цитата
32 КГц с обвязкой из двух кондеров на 10 пФ
соответствует даташиту?
Сделайте пока без всяких выпендриваний с приемом и засыпанием
Код
// Mainloop
  for (;; )
  { while ( !( IFG1 & UTXIFG0 ))
     ; // USART0 TX buffer ready?
      TXBUF0 = 0x55;
  }

должен передавать непрерывно 0х55 и смотрите осцилом, че у Вас получается.
Bolg
Не вижу принципиальной разницы между MAX232 и MAX3232... Может объясните в чем она?
Что по поводу засыпания, то в принципе согласен, попробуем, хотя что-то похожее уже пытались делать.

Кондеры для кристала взяты в соответствии с опытом работы с AVR и по рекомендации мануала.
Fenriz
Попробывал забить буфер передачи TXBUF0=0x55 - результат 0. Состояние буфера на дебагере - "пустой".
Bolg
Цитата(Fenriz @ Dec 13 2005, 18:13) *
Попробывал забить буфер передачи TXBUF0=0x55 - результат 0. Состояние буфера на дебагере - "пустой".

А ты отключил переход в режим LPM3?
Если нет - отключи
VAI
Цитата
Не вижу принципиальной разницы между MAX232 и MAX3232... Может объясните в чем она?

Я тоже не вижу, кроме того, что MAX3232 предназначена для 3-х Вольтового питания, а MAX232 для 5 и при 3В может не запустится. Во всяком случае это всегда можно проверить тем-же осцилографом.

Цитата
Кондеры для кристала взяты в соответствии с опытом работы с AVR и по рекомендации мануала.

А здесь надо руководствоваться мануалом на MSP :-)
rezident
Bolg, если используете MAX232 вместо MAX3232, то запитайте ее от 5В, а на входе URXD0 MSP430 установите резисторный делитель, чтобы на нем не было превышения уровня сигнала выше питания.

Для MSP430F149 с кварцем 32786Гц для скорости 2400,8,n,1 процедура инициализации USART0 примерно такая.

Код
#define PIN_TXD0 0x10
#define PIN_RXD0 0x20

U0CTL=SWRST;
U0CTL|=CHAR;
U0TCTL=SSEL0;
U0BR1=0x00;
U0BR0=0x0D;
U0MCTL=0x6B;
ME1|=UTXE0+URXE0;
U0RCTL=URXEIE;
U0CTL&=~SWRST;
P3SEL|=PIN_TXD0+PIN_RXD0;
IFG1&=~(UTXIFG0+URXIFG0);
IE1|=UTXIE0+URXIE0;


Кстати, проверьте, что часовой кварц действительно генерит.
Fenriz
MAX232 запитывается 5-ю вольтами: с физикой проблем нет всё работает как часы. UART запустил - эхо снял (Код ассемблеровый - texas-овские мануалы помогли) - с сишным кодом пока траблы.
Bolg
Как уже заметил Fenriz, питание на MAX232 подавалось 5В. Впрочем это следовало оговорить сразу smile.gif
Вообщем-то проблема с одной стороны разрешилась (ассемблер работает), но с другой стороны возникает вопрос почему С++ не работает? Ведь авторы кода одни и те же - ТI!!!

To Rezident

Спасибо конечно за код, но не вижу принципиальных отличий от предложенного мной smile.gif Хочу лишь спросить - он проверен на реальном устройстве? Что касается кварца, то тут сомнений никаких - 32КГц, железно!
Joy
Цитата(Fenriz @ Dec 14 2005, 17:21) *
MAX232 запитывается 5-ю вольтами: с физикой проблем нет всё работает как часы. UART запустил - эхо снял (Код ассемблеровый - texas-овские мануалы помогли) - с сишным кодом пока траблы.

Работать-то оно работает, но все-таки делитель на входе процессора не помешает. Хоть 430 и не выгорает от 5 вольт на входе, по даташиту он все-таки не 5 вольт толерант.
Fenriz
На проце питание 3.6 вольта, питать 5-ю не рискнули.
Если кто знает киньте ссылки на мануалы по работе с FLASH-памятью для MSP430 (интересует запись и запус содержимого FLASH)....
rezident
Цитата(Fenriz @ Dec 15 2005, 19:47) *
На проце питание 3.6 вольта, питать 5-ю не рискнули.

Имелось в виду не запитывать MSP430 от 5В, а согласовать уровни сигнала выхода приемника MAX232 и входа URXD MSP430.
Цитата(Fenriz @ Dec 15 2005, 19:47) *
Если кто знает киньте ссылки на мануалы по работе с FLASH-памятью для MSP430 (интересует запись и запус содержимого FLASH)....

Апликухи от производителя (типа slaa103) и User's Guide не рулят что ли? Или именно на русском нужно?
Техника самопрограммирования флэш-памяти MSP430
Fenriz
Для resident: нет язык мануала принципиального значения не имеет. За ссылку спасибо...буду разбираться.
На счёт согласования уровней учту.
Bolg
Цитата(rezident @ Dec 16 2005, 01:21) *
Цитата(Fenriz @ Dec 15 2005, 19:47) *

На проце питание 3.6 вольта, питать 5-ю не рискнули.

Имелось в виду не запитывать MSP430 от 5В, а согласовать уровни сигнала выхода приемника MAX232 и входа URXD MSP430.
Цитата(Fenriz @ Dec 15 2005, 19:47) *
Если кто знает киньте ссылки на мануалы по работе с FLASH-памятью для MSP430 (интересует запись и запус содержимого FLASH)....

Апликухи от производителя (типа slaa103) и User's Guide не рулят что ли? Или именно на русском нужно?
Техника самопрограммирования флэш-памяти MSP430


Собственно в чем проблема? Если микроконтроллер работает на ТТЛ/КМОП уровнях и микросхема MAX232 работает на этих же самых уровнях. Не хотите же Вы сказать, что если у нас микроконтролер с низким энергопотреблением (т.е. 3,6В), то у него какие-то "свои" уровни логики?

Вообщем в UART'ом можно сказать разобрались cheers.gif , теперь на очереди SPI... Будем надееятся, что там все будет нормально biggrin.gif
Всем кто принимал участие в обсуждении и, в особенности VAI, большой a14.gif
rezident
Цитата(Bolg @ Dec 18 2005, 07:29) *
Собственно в чем проблема? Если микроконтроллер работает на ТТЛ/КМОП уровнях и микросхема MAX232 работает на этих же самых уровнях. Не хотите же Вы сказать, что если у нас микроконтролер с низким энергопотреблением (т.е. 3,6В), то у него какие-то "свои" уровни логики?

Вы сами понимаете то, о чем пишете? Извините за грубость, но по-моему здесь уместен только такой афоризм: "Если человек умер, то это надолго. Если же он дурак, то это навсегда" (с) приписывают Катрин Бюньяр
Bolg
За грубость не извиняю! angry.gif Собственно тоже самое можно спросить у Вас, уважаемый! Что Вы имели в виду? angry.gif
Fenriz
ТТЛ (0-5)В: 0.4В - лог0; 2.4В - лог 1; 1.2В - порог
КМОП (0-5)В: 1В - лог0; 4В - лог1; 2.5В - порог
Делитель на входе, чтобы ограничить уровень 5В и получить 3.6В
???зачем ругаться, можно ведь просто объяснить????
rezident
Цитата(Bolg @ Dec 19 2005, 06:05) *
За грубость не извиняю! angry.gif Собственно тоже самое можно спросить у Вас, уважаемый! Что Вы имели в виду? angry.gif

Я имел в виду, что если вы лично не видите необходимости в электрическом согласовании сигналов устройств, питающихся от разных по величине напряжений и притом имеющих непосредственные связи, то не стоит думать, что это совершенно незначащий факт и тем более поучать других. Особенно учитывая, что на этот факт пытались обратить внимание несколько разных людей.
При подаче на вход MSP430 (даже запитанного от 3,6В) сигнала с уровнем выше, чем VCC+0.3В откроется защитный диод и ток (а максимум для этого диода +-2мА) потечет через него. Ваше счастье, что MAX232 в таком случае не дает большого выходного тока (хотя выходной ток ее приемника при к.з. до 30мА может достигать) , а то защитный диод (а вслед за ним и вход MSP430) пробился бы. И фиг его знает, что следующее на очереди за ними было.
VAI
Fenriz Вы не правы.

Цитата
ТТЛ (0-5)В: 0.4В - лог0; 2.4В - лог 1; 1.2В - порог
КМОП (0-5)В: 1В - лог0; 4В - лог1; 2.5В - порог

Во первых, Вы указали только верхний порог для лог0 и нижний порог для лог1. На самом деле так:
ТТЛ (0-5)В: 0 ... 0.4В - лог0; 2.4 ... 5В - лог 1.
Верхний порог лог1 и для КМОП и для ТТЛ == напряжению питания.
И эти 5В, как написал rezident сожгут Ваш MSP.
Учите матчасть. Элементарные вещи необходимо знать.
Меня тоже бесит, когда выпускнику старших классов приходится объяснять, чему равно 2*2.

Те элементарные вещи, которые разжевывал Вам rezident, Вы должны знать. Иначе нечего заниматься разработкой электроники.
Bolg
biggrin.gif Я не тормоз, я медленный газ... biggrin.gif
Собственно, просто сразу не дошло что речь идет об ограничении верхнего уровня лог. 1.
Приношу извинения за столь очевидную глупость с моей стороны! biggrin.gif Поверьте, это не нарочно! biggrin.gif

"Давайте жить дружно!"
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.