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

 
 
> Проблемы с SPI на STM32L151xxx
AndreyKeil
сообщение Jan 15 2017, 17:16
Сообщение #1


Частый гость
**

Группа: Свой
Сообщений: 96
Регистрация: 16-11-05
Из: г.Екатеринбург
Пользователь №: 10 930



При установке флага SPE, сбрасывается флаг MSTR в регистре SPI_CR1 контроллера STM32L151VBT6. В результате SPI не работает. В чем может быть проблема?
Код
void SPI_Config() {
    RCC_APB2ENR|=
        0<<14|//USART1EN:
        1<<12|//SPI1EN: 1-разр.SPI1
        0<<11|//SDIOEN:
        0<< 9|//ADC1EN:
        0<< 4|//TIM11EN:
        0<< 3|//TIM10EN:
        0<< 2|//TIM9EN:
        0<< 0;//SYSCFGEN:

    GPIOA_AFRL|=
        5<<28|//7 вывод
        5<<20;//5 вывод

    ConfPort_UltraLowPower(A, 7, cAlter, cPpull, cOut10MH, cNoPud);    //SDA индикатора
    //SDA_HI;
    ConfPort_UltraLowPower(A, 5, cAlter, cPpull, cOut10MH, cPulDow);    //SCL индикатора
    //SCL_LO;

    SPI1_I2SCFGR&= (ushort)~0x800;
    SPI1_CR1=
        0<<15| //BIDI MODE: 1-передача только в одну сторону
        1<<14| //BIDI OE: 1-вывод включен (только передача)
        0<<13| //CRC EN: 0-CRC не считать
        0<<12| //CRC NEXT: 0-передача без CRC
        0<<11| //DFF: 0- режим 8бит, 1- режим 16бит (SPE=0 надо запрещать)
        0<<10| //RX ONLY: 0-режим передача и прием
        1<< 9| //SSM: 0-режим slave запрещен
        0<< 8| //SSI:
        0<< 7| //LSB: FIRST 0-начинать со старш.бита
        0<< 6| //SPE: 1-разрешение SPI
        1<< 3| //BR[2:0] 0-clk:2, 1-clk:4
        1<< 2| //MSTR: 1-мастер
        0<< 1| //CPOL
        0<< 0; //CPHA

    //SPI1_I2SPR= 7;
    SPI1_CR1|= 0x40;    //SPE: 1-разрешение SPI
}
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
AndreyKeil
сообщение Jan 15 2017, 23:17
Сообщение #2


Частый гость
**

Группа: Свой
Сообщений: 96
Регистрация: 16-11-05
Из: г.Екатеринбург
Пользователь №: 10 930



Все верно! sm.gif Спасибо! Биты SSM и SSI надо установить в единицу. Теперь ошибки не возникает, но передачи все равно нет. Програмная реализация SPI работает.
Какая конфигурация ножки CS (она же NSS или SS) должна быть: альтернативная или обычная программная (выход)?
Разобрался. Правильный код:
Код
SPI1_CR1=
             1<<15| //BIDI MODE: 1-передача только в одну сторону
        1<<14| //BIDI OE: 1-вывод включен (только передача)
        0<<13| //CRC EN: 0-CRC не считать
        0<<12| //CRC NEXT: 0-передача без CRC
        0<<11| //DFF: 0- режим 8бит, 1- режим 16бит (SPE=0 надо запрещать)
        0<<10| //RX ONLY: 0-режим передача и прием
        1<< 9| //SSM: 0-режим slave запрещен
        1<< 8| //SSI:
        0<< 7| //LSB: FIRST 0-начинать со старш.бита
        0<< 6| //SPE: 1-разрешение SPI
        1<< 3| //BR[2:0] 0-clk:2, 1-clk:4
        1<< 2| //MSTR: 1-мастер
        1<< 1| //CPOL
        1<< 0; //CPHA

Конфигурация ножки CS (она же NSS или SS) должна быть обычная программная как выход.
Спасибо всем, кто смотрел.
Go to the top of the page
 
+Quote Post



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

 


RSS Текстовая версия Сейчас: 20th August 2025 - 04:29
Рейтинг@Mail.ru


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