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

 
 
> Как использовать кольцевой буфер на HAL у SPI slave, STM32F4
beard42
сообщение May 1 2016, 10:26
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 32
Регистрация: 18-11-12
Пользователь №: 74 448



Доброго всем времени суток.

Помогите, пожалуйста, разобраться с STM32 в связке с HAL.
Есть плата с STM32F405 (Nucleo). Хочу настроить прием по SPI (в slave-режиме).
В кубе настроил все необходимое, сгенерировал код (IAR 7.60 Kickstarter).
Прием/передача отдельных байтов работает.
Теперь хочу добавить кольцевой буфер.

Как это лучше реализовать?

На первый взгляд можно организовать так:
1. Объявляем глобальные переменные tx, rx. Инициализируем и вызываем HAL_SPI_TransmitReceive_IT().
2. В обработчике прерывания SPI после вызова встроенного обработчика HAL, записываем принятый байт в буфер и опять вызываем HAL_SPI_TransmitReceive_IT().

Правильно ли я понял порядок работы с HAL? Или как-то по другому организовать?

А может вообще забить на HAL? Где тогда брать CMSIS для STM32?
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
AleksBak
сообщение May 1 2016, 15:07
Сообщение #2


Частый гость
**

Группа: Участник
Сообщений: 132
Регистрация: 6-02-16
Из: г. Баку
Пользователь №: 90 364



Цитата(beard42 @ May 1 2016, 14:26) *
...
А может вообще забить на HAL? Где тогда брать CMSIS для STM32?

CMSIS для STM32 уже у Вас есть - куб ее сгенерировал и она в папках проекта есть. Ее использование через хедер stm32f4xx.h, который находится в директории проекта: ..\Drivers\CMSIS\Device\ST\STM32F4xx\Include. Т.е. фактически Вам уже ничего не надо делать в плане того что первоначально как-то настраивать контроллер и т.п. и сразу можете использовать в своем коде работу через CMSIS. На первом этапе так и можно поступать: настраиваете и делаете проект в Кубе, а потом экспериментируйте с работой периферии по Вашему особому алгоритму где-нибудь в майне и т.п. Так легче всего и правильнее т.к. замучаетесь разбираться с кубовским HAL-ом, его функциями, API и очень даже может быть, что вообще не заработает в нем так как Вы именно хотите. В кубе то что сделано, то как бы стандартное все. Самое главное - используя кубовский софт Вы так и не поймете как работает железо. Надеюсь помог я?
Go to the top of the page
 
+Quote Post



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

 


RSS Текстовая версия Сейчас: 31st July 2025 - 08:25
Рейтинг@Mail.ru


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