LINUX.ORG.RU

MSP430F1232

 


0

1

Есть простая плата с микроконтроллером MSP430F1232:

http://itmages.ru/image/view/2290647/4499fa5c

http://itmages.ru/image/view/2290646/d0eedd56

Подключаю аккумулятор 3.7В к J5. Линейный стабилизатор U2 работает нормально и выдаёт 3.3В. Беру адаптер на базе FT232RL. Подключаю RST к DTR, TEST к RTS, URXD0 к TXD, UTXD0 к RXD. Запускаю в терминале команду msp430-bsl -p /dev/ttyUSB0 и получаю:

$ msp430-bsl -p /dev/ttyUSB0
ERROR:BSL:Sync failed, aborting...

An error occurred:
could not sync
Cleaning up after error...

Пробовал различные комбинации опций --invert-test и --invert-reset, но результат тот же.

Микроконтроллер новый, только пришёл из Китая. Быть может я неправильно использую утилиту прошивки или что-то ещё не понимаю?

msp430-bsl предоставлен пакетом python-msp430-tools из AUR.

★★★★★

Последнее исправление: cetjs2 (всего исправлений: 2)

Для начала. Скорость должна быть 9600, формат 8n1. Сопадает? Скорость в msp430-bsl зашита или же надо выставлять самому при помощи stty?

Zubok ★★★★★
()
Ответ на: комментарий от Zubok

Насколько я понимаю, защита. Зато я наткнулся на информацию в даташите, что для BSL RX и TX пины не совпадают с аппаратным UART, а сидят на P1.1 и P2.2. Хотя может быть я не правильно понял. Завтра попробую припаяться к этим контактам и шить через них.

KivApple ★★★★★
() автор топика
Ответ на: комментарий от KivApple

А землю соединить между программатором и платой не забываешь (это на всякий случай спрашиваю)?

Zubok ★★★★★
()
Последнее исправление: Zubok (всего исправлений: 1)
Ответ на: комментарий от KivApple

Зато я наткнулся на информацию в даташите, что для BSL RX и TX пины не совпадают с аппаратным UART, а сидят на P1.1 и P2.2.

Да, действительно, для этого кристалла написано в описании выводов:

P1.1/TA0 - General-purpose digital I/O pin/Timer_A, capture: CCI0A input, compare: Out0 output/BSL transmit

P2.2/TA0/A2 - General-purpose digital I/O pin/Timer_A, capture: CCI0B input, compare: Out0 output/analog input to 10-bit ADC input A2/BSL receive

Если так, то BSL не через UART работает, а через другие пины.

Zubok ★★★★★
()
Последнее исправление: Zubok (всего исправлений: 1)
Ответ на: комментарий от Zubok

Если так, то BSL не через UART работает, а через другие пины.

Так и есть. «Обычный» UART там вообще не при делах. Курить техасовскую доку slau319.

(Вот в серии TMS320 от того же Техаса есть режим начальной загрузки с линии — тот да, через UART_0 работает.)

alegz ★★★★
()
Ответ на: комментарий от alegz

Курить техасовскую доку slau319.

А я откуда, по-твоему, скопировал текст? Не сам же выдумал. А ТС откуда вычитал? :)

UPD: Хотя твой документ по программированию конкретно, а не даташит на кристалл, да.

Zubok ★★★★★
()
Последнее исправление: Zubok (всего исправлений: 1)
Ответ на: комментарий от Zubok

UPD: Хотя твой документ по программированию конкретно, а не даташит на кристалл, да.

А у Техасов с одним даташитом ловить нечего, о том и речь. Стандартный набор: Family Guidе + даташит на конкретный проц + Application Notes по специфичным штукам типа BSL/JTAG. Причём в последней редакции (они обновляются время от времени). Плюс Errata на всё это хозяйство.

alegz ★★★★
()
Ответ на: комментарий от Zubok

После подключения RX и TX к правильным пинам, а также добавления ключей --invert-reset и --invert-test прошивка работает. Смог вывести единичку на один из GPIO, загрузив простейшую программу.

Теперь хочу заставить работать UART (аппаратный) - не получилось и я скопировал пример от TI - http://pastebin.com/VueJDQQT (конкретно под мой МК пришлось изменить ME1 на ME2). Насколько я понимаю, МК должен возвращать данные, которые принимает, но он этого делать не хочет. Кварц 32768 Гц подключен к соответствующим ножкам.

KivApple ★★★★★
() автор топика
Ответ на: комментарий от KivApple

Ну, это много чего может быть. Проверь пока очевидные вещи: настройки порта (скорость, паритет) компьютера правильные? Как настраивал? Проверь, получает ли микроконтроллер данные хотя бы. Повесь мигание светодиодом на определенный байт. Скажем, 0xAA или 0x55. У тебя же, насколько я помню, нет осциллографа.

Zubok ★★★★★
()
Последнее исправление: Zubok (всего исправлений: 1)
Ответ на: комментарий от KivApple
UTCTL0 |= SSEL1 + SSEL0 + URXSE;          // UCLK = SMCLK, start edge detect

Никогда не понимал, зачем так себя мучить. Есть же техасовская DriverLib (MSPWare430) с человеческими именами функций, она даже в исходниках.

Кварц 32768 Гц подключен к соответствующим ножкам.

#define DELTA 488                           // Target DCO = DELTA*(4096) = 2MHz

Не знаю про серию 1xxx, но в 5xxx эта подсистема называется UCS. Кури про нее доки. Для внешнего кварца, возможно, надо еще ноги XIN/XOUT настраивать. Взрослые дяди делают как-то так:

void clocks_init(unsigned long freq)
{
    UCS_bypassXT1(UCS_XT1_HIGH_FREQUENCY);
    UCS_clockSignalInit(UCS_ACLK, UCS_XT1CLK_SELECT, UCS_CLOCK_DIVIDER_1);
    UCS_clockSignalInit(UCS_MCLK, UCS_XT1CLK_SELECT, UCS_CLOCK_DIVIDER_1);
    UCS_clockSignalInit(UCS_SMCLK, UCS_XT1CLK_SELECT, UCS_CLOCK_DIVIDER_1);
    UCS_setExternalClockSource(freq, 0);

    __bis_SR_register(SCG0);    // выкл FLL
    __bis_SR_register(SCG1);    // выкл DCO
}

И зря ты пока с режимами пониженного энергопотребления связываешься:

__bis_SR_register(LPM3_bits + GIE);     // Enter LPM3, int's active

Там бывает много всякой неочевидной магии. Сначала сделай чтоб оно вообще хоть как-то заработало.

alegz ★★★★
()
Последнее исправление: alegz (всего исправлений: 1)
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.