Например TDA7294

Форум РадиоКот • Просмотр темы - SPI на STM32G473VET6 постоянно отправляет пакеты
Форум РадиоКот
Здесь можно немножко помяукать :)





Текущее время: Вт июл 01, 2025 07:50:44

Часовой пояс: UTC + 3 часа


ПРЯМО СЕЙЧАС:



Начать новую тему Ответить на тему  [ Сообщений: 3 ] 
Автор Сообщение
Не в сети
 Заголовок сообщения: SPI на STM32G473VET6 постоянно отправляет пакеты
СообщениеДобавлено: Вс апр 14, 2024 19:47:48 
Открыл глаза

Зарегистрирован: Пт апр 22, 2011 18:41:48
Сообщений: 71
Рейтинг сообщения: 0
Уважаемые коллеги, здравствуйте!

Возникла следующая проблема: приёмопередатчик SPI начинает постоянно слать данные (вижу на осциллографе сигналы SPI4_SCK и SPI4_NSS, при этом SPI4_MOSI и SPI4_MISO в низком уровне. Т.е. интерфейс "самовольно" шлёт 16-битные нулевые пакеты, хотя в регистр SPI4_DR я ничего не пишу. Лично на мой взгляд это неправильно. По моему мнению, там должно что-то появляться, если я положил в регистр SPI4_DR данные. Но, возможно, я зашёл в какой-то "автоматический" режим, в котором контроллер постоянно "дирижирует" линией. Прошу помощи.

Собственно, код:
Код:
int main ()
{
   InitFLASH();
   InitRCC();
   InitGPIOE();
   InitSPI4();
   while(1) {
   }
}


Код:
#include "STM32G4xxSPII2S.h"

void InitSPI4 () {
   // Скорость обмена по SPI равна тактовой частоте, деленной на 128, т.е. около 1 Mbps
   SPI4_CR1.BR = SPI_CR1_BR_FPCLK_DIV_128;
   // Режим работы приёмопередатчика MASTER
   SPI4_CR1.MSTR = SPI_CR1_MSTR_MASTER;
   // Полярность тактового сигнала от нуля к единице
   SPI4_CR1.CPOL = SPI_CR1_CPOL_RISING;
   // Данные выставляются по переднему фронту тактового сигнала
   SPI4_CR1.CPHA = SPI_CR1_CPHA_RISING;
   // Размер пакета 16 бит
   SPI4_CR2.DS = SPI_CR2_DS_16_BIT;
   // Включить SPI4
   SPI4_CR1.SPE = SPI_CR1_SPE_ENABLED;
}


Ну, инициализация FLASH, порта B и сигналов тактовой частоты, думаю, здесь излишня, т.к. сам SPI "работает", хоть и не так, как мне нужно...
Если вызов функции InitSPI4() в функции main() закомментировать, то передачи данных нет, на выводах правильные уровни.

Всем спасибо за внимание.

Добавлено after 1 hour 21 minute 32 seconds:
Всем спасибо за моральную поддержку! Вопрос отвалился сам собой. Когда обращаюсь к регистрам как к 16-битным числам, и записываю в них целые значения, контроллер работает правильно.

Судя по всему, контроллер SPI был настроен в режим MASTER RXONLY, в этом режиме он, вроде бы, постоянно дирижирует линией, чтобы SLAVE'ы ему выставляли данные (но это не точно, глубоко не вчитывался, мне это не нужно сейчас). Сейчас буду искать косяк с битовыми полями.

_________________
Если я где-то ошибаюсь, прошу от меня этого не скрывать. Заранее очень признателен :)


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: SPI на STM32G473VET6 постоянно отправляет пакеты
СообщениеДобавлено: Пн апр 15, 2024 08:09:23 
Грызет канифоль
Аватар пользователя

Карма: 3
Рейтинг сообщений: 69
Зарегистрирован: Ср сен 02, 2015 07:47:20
Сообщений: 259
Рейтинг сообщения: 0
Судя по всему, контроллер SPI был настроен в режим MASTER RXONLY, в этом режиме он, вроде бы, постоянно дирижирует линией, чтобы SLAVE'ы ему выставляли данные (но это не точно, глубоко не вчитывался, мне это не нужно сейчас).

Что скорее всего даже описано в букваре на него...

_________________
Репозиторий STM32: https://cloud.mail.ru/public/2i19/Y4w8kKEiZ
Актуальность репозитория: 16 мая 2025 года
Если чего-то не хватает с сайта st.com - пишите, докачаю.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: SPI на STM32G473VET6 постоянно отправляет пакеты
СообщениеДобавлено: Вт апр 16, 2024 09:19:41 
Это не хвост, это антенна

Карма: -10
Рейтинг сообщений: 171
Зарегистрирован: Вт авг 15, 2017 10:51:13
Сообщений: 1492
Рейтинг сообщения: 0
глубоко не вчитывался, мне это не нужно сейчас
Обычно это является основной причиной повторного наступления на грабли. На ровном месте. Снова и снова... :facepalm:
PS: Впрочем - каждый сам кузнец своего счастья граблей.


Вернуться наверх
 
Показать сообщения за:  Сортировать по:  Вернуться наверх
Начать новую тему Ответить на тему  [ Сообщений: 3 ] 

Часовой пояс: UTC + 3 часа


Кто сейчас на форуме

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 6


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  


Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB
Extended by Karma MOD © 2007—2012 m157y
Extended by Topic Tags MOD © 2012 m157y