Easyelectronics.ru

Электроника для всех
Текущее время: 22 авг 2019, 21:26

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



JLCPCB – Прототипы печатных плат за $2/10pcs (Любой цвет!)
Крупнейший производитель печатных плат и прототипов. Более 600000 клиентов и свыше 10000 заказов в день!
Получите скидку на почтовую отправку при первом заказе в JLCPCB!

Начать новую тему Ответить на тему  [ Сообщений: 36 ]  На страницу Пред.  1, 2
Автор Сообщение
 Заголовок сообщения: Re: Проблема с передачей по spi stm32 Nucleo-L053R8
СообщениеДобавлено: 14 дек 2015, 14:53 
Старожил
Аватара пользователя

Зарегистрирован: 27 мар 2015, 04:10
Сообщения: 1931
Откуда: Харьков
foxis писал(а):
alexsam,
1) Ура ! :):):) Наконец-то все заработало !!! :)
Я тут здорово тупанул, оказывается на разных ножках может быть
одна и та же альтернативная функция, например для
spi2 MISO может быть и PB14 и PC2 (вложил рисунок). А какой именно ноге Cube подцепил
данную функцию можно было уже узнать в файле stm32l0xx_hal_msp.c.

Ну отлично же :)
А вот про stm32l0xx_hal_msp.c тут вы не правы, Куб-то вам сразу показывает какие ноги будут инициализированы.
И можно сменить их до генерации кода. См. картинку
foxis писал(а):
2) В общем все заработало, как вы и говорили помехи достаточно сильно влияют на результат.
Но в целом передается нормально (т.е. 50/50 есть случаи когда информация искажается,
есть случаи при которых нормально все передается), правда почему-то HAL_SPI_RxCpltCallback вызывается
2 раза, это видимо тоже связано с помехами, как ложное срабатывание обработчика прерываний (вложил рисунок).

Чтоб не было помех нужно подтягуть МИСО, МОСИ и ЦЛК к +3,3В резисторами на 4.7-10 КОм.
foxis писал(а):
3) Огромное вам спасибо, alexsam, за помощь, без вас
я бы тут еще долго ковырялся с этим spi. :):)

Не за что :)
Следующая тема про I2C? ;)


Вложения:
2015-12-14_1148.png
2015-12-14_1148.png [ 148.15 Кб | Просмотров: 7005 ]
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Проблема с передачей по spi stm32 Nucleo-L053R8
СообщениеДобавлено: 14 дек 2015, 16:15 
Заглядывает иногда
Аватара пользователя

Зарегистрирован: 23 июн 2013, 22:55
Сообщения: 53
alexsam писал(а):
alexsam,

Ну отлично же :)
А вот про stm32l0xx_hal_msp.c тут вы не правы, Куб-то вам сразу показывает какие ноги будут инициализированы.
И можно сменить их до генерации кода. См. картинку


alexsam,
1) Да, спасибо, согласен с вами, надо было на этапе генерации кода (в Cube) обратить внимание на то,
какие именно ноги подвязаны для SPI1, 2. Кстати альтернативные функции тоже пробовал менять,
например назначить для SPI2 MISO вместо РС2 -> РВ14. Все очень легко оказывается меняется.
Теперь буду это иметь ввиду. :)

alexsam писал(а):
Чтоб не было помех нужно подтягуть МИСО, МОСИ и ЦЛК к +3,3В резисторами на 4.7-10 КОм.


2) Хорошо, спасибо, надо будет это учесть, когда за что-то реальное возьмусь.

alexsam писал(а):
Не за что :)
Следующая тема про I2C? ;)


:):) Надеюсь следующих тем по поводу определенных проблем
с работой МК будет как можно меньше. :)
Все таки обращать на форум это крайний случай, когда совсем
нет никаких идей по преодолению возникших трудностей. :)

А вообще, попробую сделать так, чтобы spi1 мог общаться сам с собой.
Потом можно попытаться уже с экраном поучиться работать.
Ну наверное и за I2C со временем возьмусь (интересно его опробовать). :)


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Проблема с передачей по spi stm32 Nucleo-L053R8
СообщениеДобавлено: 14 дек 2015, 18:28 
Заглядывает иногда
Аватара пользователя

Зарегистрирован: 23 июн 2013, 22:55
Сообщения: 53
vbogom писал(а):
foxis писал(а):
что вы имеет ввиду под одновременным выполнением, все команды

Например использовать
Код:
HAL_SPI_TransmitReceive_IT

Сейчас проверил все работает...
На самом деле при Transmit происходит и получение тоже, но это может только в текущих версиях HAL, поэтому лучше использовать именно TransmitReceive. Кроме того в Вашем случае если использовать только Transmit, то будет не понятно произошло получение или просто смотришь свои же данные.
А вообще Вам нужен логический анализатор. Серьезный проект без него будет сделать сложно. Когда я писал модуль для работы с памятью AT25160, получилось следующее. Проверил модуль на F411 и F103, а потом решил его запустить на F030 - не работает (инициализировал через куб), очень удивился, код, то не менялся. Посмотрел анализатором, а там вместо восьми бит идет только четыре... Проверил оказалось (может и сам накосячил), что поставил Data Size 4 бита. Изменил на 8 - все заработало. А если бы не анализатор, то долго бы лазил искал бы у себя ошибка там, где ее и не было...


Спасибо большое, vbogom, с помощью функции HAL_SPI_TransmitReceive_IT все заработало.
Теперь SPI1 как посылает данные, так их и принимает одновременно.

Код программы:
Show


Куски кода (которые выполняют функцию коллбэка через USART2 на терминал ПК):
Код:
//  printf("All Ready!!\n\n");
//  printf("receiveBuffer: ", &receiveBuffer[0]);

и
Код:
//void HAL_SPI_RxCpltCallback(SPI_HandleTypeDef *hspi) {
//  printf("Callback!\n");
//  printf("State: %d\n", hspi->State);
//  printf("ErrorCode: %d\n", hspi->ErrorCode);
//  printf("receiveBuffer: %x\n", receiveBuffer[0]);
//}

Пришлось закомментировать в связи с тем, что ИАР у меня ограниченной версии,
а с этим кодом программа занимает место больше, чем допустимо.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Проблема с передачей по spi stm32 Nucleo-L053R8
СообщениеДобавлено: 14 дек 2015, 22:39 
Старожил
Аватара пользователя

Зарегистрирован: 27 мар 2015, 04:10
Сообщения: 1931
Откуда: Харьков
foxis писал(а):
Пришлось закомментировать в связи с тем, что ИАР у меня ограниченной версии,
а с этим кодом программа занимает место больше, чем допустимо.

Ох, чтож там за ограничение такое-то жесткое?
Лучше тогда Keil там 32 кб на бинарник. Хватает для начала за глаза.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Проблема с передачей по spi stm32 Nucleo-L053R8
СообщениеДобавлено: 15 дек 2015, 15:29 
Заглядывает иногда
Аватара пользователя

Зарегистрирован: 23 июн 2013, 22:55
Сообщения: 53
alexsam писал(а):
Ох, чтож там за ограничение такое-то жесткое?
Лучше тогда Keil там 32 кб на бинарник. Хватает для начала за глаза.


alexsam,
Вообще бесплатная версия kickstart дает 32 кб, однако (я честно говоря сразу сам не заметил,
только сейчас обратил внимание) в скобках они (разработчики ИАРА) пишут, что для ядра
Cortex-M0 дается только 16 кб. А у меня в нуклео как раз это ядро используется.

Я конечно точно не знаю, но возможно и в Keil есть такие оговорки в скобках для определенных ядер.

На самом деле, ограничение это не проблема, можно перейти на бесплатное IDE.
Просто IAR я уже работал и для обучения считал, что вполне 16 кб будет достаточно.
Оказалось, что ни совсем. :)


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Проблема с передачей по spi stm32 Nucleo-L053R8
СообщениеДобавлено: 15 дек 2015, 15:37 
Старожил
Аватара пользователя

Зарегистрирован: 26 янв 2010, 21:48
Сообщения: 3965
Откуда: Звенигород
Keil для М0 бесплатный в полном объеме)))

_________________
От Парижа до Находки с водкой лучше, чем без водки!


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Проблема с передачей по spi stm32 Nucleo-L053R8
СообщениеДобавлено: 15 дек 2015, 16:23 
Заглядывает иногда
Аватара пользователя

Зарегистрирован: 23 июн 2013, 22:55
Сообщения: 53
PRC писал(а):
Keil для М0 бесплатный в полном объеме)))


PRC,
здесь пишут, что 32 кб.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Проблема с передачей по spi stm32 Nucleo-L053R8
СообщениеДобавлено: 15 дек 2015, 16:27 
Старожил
Аватара пользователя

Зарегистрирован: 26 янв 2010, 21:48
Сообщения: 3965
Откуда: Звенигород
Читать нужно на официальных сайтах, keil, stm
А не что на заборе написано!))

_________________
От Парижа до Находки с водкой лучше, чем без водки!


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Проблема с передачей по spi stm32 Nucleo-L053R8
СообщениеДобавлено: 15 дек 2015, 16:30 
Заглядывает иногда
Аватара пользователя

Зарегистрирован: 23 июн 2013, 22:55
Сообщения: 53
PRC писал(а):
Читать нужно на официальных сайтах, keil, stm
А не что на заборе написано!))


Хорошо, спасибо, PRC, возможно вы правы, надо будет попробовать и проверить. :)


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Проблема с передачей по spi stm32f103
СообщениеДобавлено: 20 апр 2016, 15:46 
Здравствуйте!

Зарегистрирован: 24 мар 2013, 13:56
Сообщения: 2
Приветствую, уважаемые знатоки. Имеется вопрос, уже мозг сломал. Пытаюсь настроить передачу инфы по SPI в пределах одного микроконтроллера, все как в вышеуказанном примере. Соответственно SPI1- master, SPI2 - slave. При отправке данных мастером слейву все отлично, и на осциллографе картинка идеальная.
с определенной частотой вызываю следующие функции:
HAL_SPI_Receive_IT(&SPI2, (uint8_t*)data_get, 1); /* Соответственно активизирую прерывание для слейва. Ждем в общем, когда мастер начнет клоки слать, тогда и попадем в соответствующее прерывание*/
HAL_SPI_Transmit(&SPI1, (uint8_t*)data_send, 1, 10000); // Ну и отправляем данные мастером
Все как часы работает.
А вот при попытке сделать все наоборот, то есть получить данные от слейва мастером все портится и никак не работает.
Делаю следующее:
HAL_SPI_Transmit_IT(&SPI2, (uint8_t*)data_send, 1); /* Включаем прерывание, чтоб когда придут клоки, слейв выдал мастеру данные. */
HAL_SPI_Receive(&SPI_MASTER_hspi, (uint8_t*)data_get_M, 1, 10000); // Ну и отправляем клоки в надежде получить данные от слейва. Но их нет.
Загвоздка в том, что при вызове функции HAL_SPI_Transmit_IT(&SPI2, (uint8_t*)data_send, 1) мы сразу попадаем в прерывание, ходя клоки еще не пришли. В чем причина такого косяка? Может я просто логику работы SPI не понимаю. Заранее спасибо за ответ.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Проблема с передачей по spi stm32 Nucleo-L053R8
СообщениеДобавлено: 20 апр 2016, 15:50 
Здравствуйте!

Зарегистрирован: 24 мар 2013, 13:56
Сообщения: 2
Да, и еще вопрос в догонку, а зачем нам вообще нужно прерывание у Мастера, которое можно включить, ведь источником прерываний и являются клоки от него отправленные. Не пойму данный момент, разъясните


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 36 ]  На страницу Пред.  1, 2

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


Кто сейчас на конференции

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


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

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

Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB