Например TDA7294

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





Текущее время: Сб сен 21, 2024 04:31:03

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


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



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

Зарегистрирован: Пт апр 22, 2011 18:41:48
Сообщений: 56
Рейтинг сообщения: 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 
Встал на лапы
Аватар пользователя

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

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


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

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


Вернуться наверх
 
PCBWay - всего $5 за 10 печатных плат, первый заказ для новых клиентов БЕСПЛАТЕН

Сборка печатных плат от $30 + БЕСПЛАТНАЯ доставка по всему миру + трафарет

Онлайн просмотровщик Gerber-файлов от PCBWay + Услуги 3D печати
Показать сообщения за:  Сортировать по:  Вернуться наверх
Начать новую тему Ответить на тему  [ Сообщений: 3 ] 

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


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

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


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

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


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