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

 
 
> SPI STM32
Danis
сообщение Oct 28 2010, 15:48
Сообщение #1


Twilight Zone
***

Группа: Свой
Сообщений: 454
Регистрация: 17-02-09
Из: Челябинск
Пользователь №: 44 990



Привет уважаемые форумчане.

Вот такая задача перед мной. Имеется некое ведомое SPI устройство, со своим протоколом, подключено к STM32F. Неудобство в том, что нужно обеспечить сигнал LE, на N-ном клоке DCLK. Аппаратной возможности у SPI STM32F по моему нет. Частота SPI 4 MHz. Все что в голову приходи сейчас – задействовать таймер/счетчик и считать импульсы DCLK через внешний пин таймера, потом при достижении счетчика генерить прерывание и программно устанавливать LE. Хочу услышат Ваши предложения, может что получше придумать можно? И если есть у кого пример использования таймера подобным образом (счет импульсов на пине), дайте примерчик пожалуйста, буду очень благодарен.

Сообщение отредактировал Danis - Oct 28 2010, 15:50
Эскизы прикрепленных изображений
Прикрепленное изображение
 


--------------------
Magic Friend
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
lead_seller
сообщение Apr 18 2012, 07:37
Сообщение #2


Участник
*

Группа: Участник
Сообщений: 53
Регистрация: 27-10-08
Пользователь №: 41 225



Проверьте настройки аппаратной ноги NSS. Для мастера аппаратное управление ногой NSS должно быть либо выключено ( и тогда NSS управляем програмно), либо NSS должно быть сконфигурировано как выход.
Сейчас это похоже на то, что у вас NSS настроен на вход и на нем висит "0".

Раздача портов ВВ под периферию управляется двумя механизмами - включением тактирования периферии в RCC (например, если на одних ногах в режиме AF висят SPI1 и SPI2, включаем тактирование SPI1 и не включаем SPI2 - никакого конфликта нет, или включаем тактирование обоих SPI но для одного из них применяем Remap, и этот модуль подключается к другому порту ВВ)

Go to the top of the page
 
+Quote Post
MiklPolikov
сообщение May 10 2012, 20:09
Сообщение #3


Гуру
******

Группа: Свой
Сообщений: 2 015
Регистрация: 23-01-07
Из: Москва
Пользователь №: 24 702



Вопрос :

Работаю с SPI в STM32L151, SPI настроен как мастер

Отправляю что-то вот таким кодом.
Так вот , если небольшая задержка в цикле есть, то всё хорошо. А если её нет, то процессор перезагружается . Интересно , почему ?
Прерывания об ошибке ERRIE не происходит.


Код
while(1)
{

    while(!(SPI1->SR & SPI_SR_TXE)){}
    SPI1->DR=data;
    while(!(SPI1->SR & SPI_SR_RXNE)){}
    for(k=0;k<1;k++){}      //без этой задержки процессор почему-то перезагружается
    data=SPI1->DR;


}


--------------------
Если у Вас нет практического опыта в данной теме- не вступайте в дискуссию и не пишите никаких теоретических рассуждений! Заранее спасибо !
Go to the top of the page
 
+Quote Post



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

 


RSS Текстовая версия Сейчас: 28th July 2025 - 14:54
Рейтинг@Mail.ru


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