• Объявления

    • admin

      Просьба всем принять участие!   24.11.2017

      На форуме разыгрывается спектроанализатор Arinst SSA-TG LC (цена 18500 руб). Просьба всем перейти по ссылке ниже и принять участие!
shematehnik

Msp430F249 Не Работает Spi На Модуле Usci_B

1 сообщение в этой теме

shematehnik    1

Не работает SPI на модуле USCI_B в микроконтроллере MSP430F249.

А если более конкретно, то после того, как записываю данные в регистр передачи UCB1TXBUF, флаг UCB1TXIFG в регистре UC1IFG не устанавливается.

Пока железа под рукой не имею, поэтому проверяю программу в протеусе.

Вот исходный код инициализации:

void spi_init(){
//Настройка ножек, связанных с SPI
gpio_port_init(SPI_CS_PORT);
spi_so_clk_init(TEMP_SENS_SO);
spi_so_clk_init(TEMP_SENS_CLK);
//Переводим USCI в состояние сброса и сбрасываем настройки регистра
UCB1CTL1 = UCSWRST;
//Источник тактирования USCI выбираем SMCLK
UCB1CTL1 |= UCSSEL_2;
//Передача по переднему фронту, прием по заднему
//CLk в нуле при неактивном состоянии
//MSB первый
//8-битный режим
//Режим мастера
//3-проводной режим
//Синхронный режим SPI
UCB1CTL0 = UCMST | UCMSB | UCSYNC;
//Выставляем частоту работы SPI = 1MHz
UCB1BR0 = 16;
UCB1BR1 = 0;
//Сброс всех флагов ошибок
UCB1STAT = 0;
//Запускаем USCI
UCB1CTL1 &= ~UCSWRST;
//Запретить прерывания по приему и передаче
UC1IE &= ~(UCB1TXIE | UCB1RXIE);
//Сброс флагов прерываний
UC1IFG &= ~UCB1RXIFG;
}

Вот код передачи данных:

spi_select(sensor_num);
//Передаем произвольные данные
UCB1TXBUF = 0x00;
//Дожидаемся завершения передачи
while(!(UC1IFG & UCB1TXIFG));
//Дожидаемся приема первого байта
while(!(UC1IFG & UCB1RXIFG));
//Забираем первый байт значения температуры
temperature = UCB1RXBUF;
temperature <<= 8;
//Передаем произвольные данные
UCB1TXBUF = 0xFF;
//Дожидаемся завершения передачи
while(!(UC1IFG & UCB1TXIFG));
//Дожидаемся приема первого байта
while(!(UC1IFG & UCB1RXIFG));
//Забираем второй байт значения температуры
temperature |= UCB1RXBUF;
spi_unselect(sensor_num);

Кто знает в чем проблема?

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Быстрый заказ печатных плат

Полный цикл производства PCB по низким ценам!

  • x
    мм
Заказать Получить купон на $5.00

Создайте аккаунт или войдите в него для комментирования

Вы должны быть пользователем, чтобы оставить комментарий

Создать аккаунт

Зарегистрируйтесь для получения аккаунта. Это просто!

Зарегистрировать аккаунт

Войти

Уже зарегистрированы? Войдите здесь.

Войти сейчас


  • Сообщения

    • @Sukhanov Да как бы в том-то и дело, что я сам себя регулярно корю за то, что иногда стараешься делать побыстрее, а не удовлетворить своего внутреннего перфекциониста. Выложить фото сюда, посыпать голову пеплом, завернуться в простыню и ползти, или, по крайней мере, лежать по направлению на кладбище...

      Хотя бывает и другая ситуация, - желание сделать всё идеально превращает проект в долгострой.
    • Я тут ДШ посмотрел, у нее гейн в типовом включении 50 дБ. При такой чуйке будет весь шум со входа усиливаться.
    • Номинал сопротивления R3 получился в 5ом, при этом размах амплитуды составил 28.8В, ток на катушке 77mA. Вчера перемотал катушку, на этот раз 200 витков провод 0,18мм, конденсатор 18нф, частота составила 6000 с копейками Hz. Разность по катушкам сейчас 1800 Hz. Но баланс ни как, у меня уже просто нет слов!!!
    • @viks-76 Не ведитесь на простоту. Это очень опасная схема. Ее категорически нельзя собирать при токах зарядки более 1А. Автор, по всей видимости, не знаком даже с основами проектирования преобразовательной техники. @master144  просто издевается над Вами постепенно сходя с ума, или вообще из хулиганских побуждений. Я об этом уже неоднократно предупреждал. 1. Трансформатор очень сильно нагреется. Для тока зарядки 5А понадобится трансформатор минимум на 400ВА.

      2. При среднем значении тока зарядки 5А выбранный тиристор будет работать с перегрузкой по действующему и импульсному значениям тока. Через некоторое время тиристор выйдет из строя и устроит короткое замыкание. Поэтому обязательно применяйте плавкие предохранители как на проводе к аккумулятору, так и в первичной обмотке трансформатора. Не удивляйтесь, если при среднем значении тока зарядки 5А будут перегорать даже 10 амперные предохранители. Действующее значение тока будет именно таким. По этой же причине придется мотать трансформатор примерно на 15А. В противном случае есть риск возникновения пожара.
    • Может кому пригодится: в arrow.com можно заказывать с бесплатной доставкой, если заказывать на юридический адрес.