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

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

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

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

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

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

Войти

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

Войти сейчас