Перейти к содержанию
    

Stm32F030. Затык с SPI

Работал с SPI на F10x серии и F303 - никаких вопросов не возникало. С F030 затык вышел:

Почитал шит, инициализировал SPI: режим 8-им битной передачи. Смотрю осцилоскопом - при передаче 1 байта генерится 16 тактовых импульсов, как будто передаю 2.

В чём засада? С приёмом вроде понятно- бит SPI_CR2_FRXTH устанавливаю ( приём при 1/4 FIFO ).

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


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

Тоже натыкался. Попробуйте отправлять так:

*(__IO uint8_t *) (&SPIx->DR) = Data;

https://balmerdx.livejournal.com/124604.html

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


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

Невнимательно читали документацию - обращаетесь к регистру данных как к 16-битному, а надо как к 8-битному.

image.thumb.png.2248f275644429b7c3e3e1dd301eb740.png

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


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

Опять бяда с этим SPI. Данные передаются, но не читаются. Осцилографом с декодировкой SPI вижу что данные передаются, Slave выдаёт в ответ то что положено, но из DR читается всегда 0.

Формат передачи данных 8-ми битный, FRXTH = 1. Вижу что после передачи RXEN = 1, FRLVL = 01, т.е. в буфер что то прилетело в итоге

Процедура  обмена совмещает приём и передачу:

if ( SPI1->SR & SPI_SR_TXE ) {  *(__IO uint8_t *)(&SPI1->DR) = SendData; }

while( !( SPI1->SR & SPI_SR_RXNE) ) {  }

ReceiveData = *(__IO uint8_t *)(&SPI1->DR);

Чего опять не хватает?

 

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


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

В 27.07.2022 в 15:29, Arlleex сказал:

Ну а то, что RXNE не был установлен до транзакции - уверены?

Да. В отладчике вижу как RXNE устанавливается  при отправке байта, но при этом DR=0, при чтении DR видно как сбрасывается RXNE и FRLVL.

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


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

Отладчиком нельзя смотреть регистры периферии.

Нога MISO правильно настроена? Альтернативная, на нужном пине, все дела.

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


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

У ST же есть отличные сниппеты для STM32F0! Советую попробовать. Вот, сам оттуда брал и малость под себя изменял.

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


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

On 7/27/2022 at 5:15 PM, EugeNNe said:

Опять бяда с этим SPI. Данные передаются, но не читаются

Смотрю, что у F0 SPI похож на тот, что у F7, только без FIFO.

Spoiler
////////////////////////////////////////////////////////////////////////////////
// Цикл обмена по SPI

inline uint8
spi_exchange( uint8 _aByte )
{
    uint8
        tmp8;

    while( wiz_spi -> SR & SPI_SR_RXNE )
    {
        tmp8 = wiz_spi -> DR;

        // TODO: добавить защиту от зависания.
    };

    *( volatile uint8 *)&( wiz_spi -> DR) = _aByte;

    while( !( wiz_spi -> SR & SPI_SR_RXNE ) )
    {
        // TODO: добавить защиту от зависания.
    }

    tmp8 = *( volatile uint8*)&( wiz_spi -> DR );

    return( tmp8 );
}

////////////////////////////////////////////////////////////////////////////////
// принять байт через SPI

uint8
spi_rb( void )
{
    return( spi_exchange( 0 ) );
}

////////////////////////////////////////////////////////////////////////////////
//  передать байт через SPI

void
spi_wb( uint8_t _aByte )
{
    spi_exchange( _aByte );
}

////////////////////////////////////////////////////////////////////////////////

 

 

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


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

В 27.07.2022 в 15:46, Arlleex сказал:

Нога MISO правильно настроена? Альтернативная, 

Настройку пина MISO в первую очередь проверил.

В 27.07.2022 в 17:34, Eddy_Em сказал:

У ST же есть отличные сниппеты для STM32F0! Советую попробовать. Вот, сам оттуда брал и малость под себя изменял.

Спасибо, посмотрю.

 

Заработало. Всё же дело было в конфигурации MISO

Изменено пользователем EugeNNe

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


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

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
К сожалению, ваш контент содержит запрещённые слова. Пожалуйста, отредактируйте контент, чтобы удалить выделенные ниже слова.
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...