реклама на сайте
подробности

 
 
> STM32 SPI2, Нет чтения по SPI2
juvf
сообщение Oct 11 2013, 13:42
Сообщение #1


Профессионал
*****

Группа: Свой
Сообщений: 1 261
Регистрация: 14-05-09
Из: Челябинск
Пользователь №: 49 045



инициализация

Код
Код
void initSpi()
{
    RCC_APB2ENR_bit.IOPAEN = 1; // Разрешить тактирование PORTA
    RCC_APB2ENR_bit.IOPBEN = 1; // Разрешить тактирование PORTB
    //конфигурируем ножки для SPI
    RCC_APB2ENR_bit.AFIOEN = 1; // Тактирование альтернативных функций GPIO.
    GPIOB_CRH_bit.MODE13 = 0x3; // out < 50 MHz SPISCK
    GPIOB_CRH_bit.CNF13 = 0x2; // alt push pull
    GPIOB_CRH_bit.MODE14 = 0x0; // input        SPIMISO
    GPIOB_CRH_bit.CNF14 = 0x2; // float
    GPIOB_BSRR_bit.BS14 = 1;
    GPIOB_CRH_bit.MODE15 = 0x3; // out < 50 MHz SPIMOSI
    GPIOB_CRH_bit.CNF15 = 0x2; // alt push pull
    //EEPROM ~CS
    GPIOB_CRL_bit.MODE7 = 0x1; // out < 10 MHz ~SS
    GPIOB_CRL_bit.CNF7 = 0x0; // push pull
    GPIOB_BSRR_bit.BS7 = 0x1; // set hold hi
    //FRAM ~CS
    GPIOA_CRH_bit.MODE12 = 0x1; // out < 10 MHz ~SS
    GPIOA_CRH_bit.CNF12 = 0x0; // push pull
    GPIOA_BSRR_bit.BS12 = 0x1; // set hold hi

    RCC_APB1ENR_bit.SPI2EN = 1; //включим SPI
    SPI2_CR1 = 0;
    SPI2_CR2 = 0;
    SPI2_CR1_bit.BR = 0x4; // 22МГц/32 ~ 600 kHz on spi
    SPI2_CR1_bit.MSTR = 0x1;
    SPI2_CR1_bit.SSI = 0x1;
    SPI2_CR1_bit.SSM = 0x1;
    SPI2_CR1_bit.SPE = 0x1;
}


код рабоающий с SPI
Код
Цитата
uint8_t readFramStatus()
{
enableFram();
SPI2_DR = FRAM_RDSR;
while(SPI2_SR_bit.BSY == 1);
uint8_t byte = SPI2_DR;
SPI2_DR = 0; //читаем данные
while(SPI1_SR_bit.RXNE == 0); //в этом месте зависаем
byte = SPI2_DR;
disableFram();
return byte;
}

Зависает на строчке while(SPI1_SR_bit.RXNE == 0)
смотрел отладчик..... ни разу не видел, чтобы SPI2->RXNE встал в 1. Тот же код с тем же камнем на SPI1 прекрасно работает. Смотрел ноги логическим анализатором.... все такты, cs, miso и mosi - все прекрасно... клкоки есть, есть запрос на mosi, есть ответ на miso.... но почемуто бит приема ни кога не встает в 1. Почему? может есть ещё какието смежные конфигурациолнные биты у ядра, которые я не проинитил?

ps проверил на 2-х платах. процессор STM32F100C8T6
Go to the top of the page
 
+Quote Post

Сообщений в этой теме


Closed TopicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 21st July 2025 - 23:10
Рейтинг@Mail.ru


Страница сгенерированна за 0.01853 секунд с 7
ELECTRONIX ©2004-2016