|
0 / 0 / 0
Регистрация: 22.05.2010
Сообщений: 22
|
||||||
Помогите поженить HAL, SPI, и ADXL345 на STM32F4-DISCO19.03.2015, 14:07. Показов 24543. Ответов 10
Метки нет (Все метки)
День добрый.
Пытаюсь завести китайский brekaout с ADXL345 через SPI на F4Dyscovery (через I2C, кстати, завелся). Для инициализации периферии использую CubeMX c новомодными HAL-драйверами.
Читаю из акселерометра идентификатор следующим образом: 1. Устанавливаю CS в 1. 2. Инициализирую SPI. 3. Устанавливаю CS в 0 4. Шлю акселерометру команду чтения. 5. Читаю ответ. 6. Устанавливаю CS в 1 Идентификатор никогда не читается с первого раза, иногда корректно читается при повторном чтении, иногда вместо него читается каша. Посмотрел осциллографом, что у меня творится ножках, и увидел, что после инициализации и до первого обращения к SPI сигнал SCK установлен в 0. При этом получается фигня, которая не соответствует диаграммам из датшита на ADXL. Чего я забыл или не учел? Файлы с кодом инициализации и скриншот прилагаю, линия CLK показана зеленым цветом, CS голубым. [5.28 Кб] [7.77 Кб]
0
|
||||||
| 19.03.2015, 14:07 | |
|
Ответы с готовыми решениями:
10
Помогите подружить ADXL345 с HAL и STM32 HAL SPI DMA(STM32F4) + WIZ550io Micropython на stm32f4 disco |
|
0 / 0 / 0
Регистрация: 22.05.2010
Сообщений: 22
|
|
| 19.03.2015, 20:57 | |
|
В общем, в порядке эксперимента попробовал инициализацию c SPL, адаптированную из спертой с интернета.
Дома осцила нет, но я посмотрел мультиметром, сразу после инициализации модуля SPI на линии CLK появляется высокий уровень. Хм.
0
|
|
|
0 / 0 / 0
Регистрация: 22.05.2010
Сообщений: 22
|
|
| 19.03.2015, 21:11 | |
|
Ага.
Внутре драйвера stm32f4xx_hal_spi.c, в функции HAL_SPI_Init() нет вызова __HAL_SPI_ENABLE(), который, собственно, и должен включать периферию. А вот, например, в драйвере I2C подобный вызов есть. Видимо, забыли положить. Вызов добавил, читается, правда, всё равно фигня пока, но тут уже дело техники.
0
|
|
|
RysiOfDioth
|
|
| 01.04.2015, 17:20 | |
|
Вызов __HAL_SPI_ENABLE() есть в функциях отправки и приема. И, судя по всему, (лично у меня) SPI после инициализации приходится деинициализировать, иначе следующая передача происходит криво. (мне было совсем влом разбираться с потрохами, по этому я на скорую руку сделал сброс бита SPE регистра CR1 перед каждой передачей и это помогло).
|
|
|
0 / 0 / 0
Регистрация: 06.12.2016
Сообщений: 1,183
|
|
| 03.04.2015, 17:16 | |
|
Сообщите пожалуйста если получилось подружить. У меня такая же беда только с модулем nrf24l01+
0
|
|
|
0 / 0 / 0
Регистрация: 03.11.2014
Сообщений: 153
|
|
| 03.04.2015, 17:50 | |
|
В сообществе недавно делал статью, к которой приложен перевод использования HAL. При использовании какой-либо периферии - её включение ( __HAL_SPI_ENABLE() ) необходимо прописать в файле stm32f4xx_hal_msp.c . Читайте документацию, HAL это довольно сложная система, с пол тыка не заведется - будет больше проблем, чем пользы ...
0
|
|
|
0 / 0 / 0
Регистрация: 22.05.2010
Сообщений: 22
|
||
| 04.04.2015, 00:13 | ||
1. В документации (конкретно сейчас смотрю в UM1725 Dessription of STM32F4xx HAL dryvers) не упоминается необходимость вызова __HAL_PPP_ENABLE() из юзерской HAL_PPPMsp_Init(); 2. В драйверах другой периферии (в моем случае - UART и I2C) в функции инициализации HAL_PPP_Init() присутствует вызов __HAL_PPP_ENABLE(), то есть, соответствующий модуль оказывается включен без лишних танцев с бубном. 3. В любом случае, я юзал генератор кода STM32CubeMX, который должен корректно инициализировать периферию. Так что я предполагаю либо ошибку в HAL-драйвере SPI, либо в генераторе кода. Надо, кстати, посмотреть, может апдейт какой вышел.
0
|
||
|
0 / 0 / 0
Регистрация: 03.11.2014
Сообщений: 153
|
|||||||
| 04.04.2015, 04:57 | |||||||
1. В документации (конкретно сейчас смотрю в UM1725 Dessription of STM32F4xx HAL dryvers) не упоминается необходимость вызова __HAL_PPP_ENABLE() из юзерской HAL_PPPMsp_Init(); 2. В драйверах другой периферии (в моем случае - UART и I2C) в функции инициализации HAL_PPP_Init() присутствует вызов __HAL_PPP_ENABLE(), то есть, соответствующий модуль оказывается включен без лишних танцев с бубном. 3. В любом случае, я юзал генератор кода STM32CubeMX, который должен корректно инициализировать периферию. Так что я предполагаю либо ошибку в HAL-драйвере SPI, либо в генераторе кода. Надо, кстати, посмотреть, может апдейт какой вышел.
Куб может и умеет это делать, но надо его перепроверять - он молодой, зеленый и неопытный ...
0
|
|||||||
|
0 / 0 / 0
Регистрация: 06.12.2016
Сообщений: 1,183
|
||||||
| 04.04.2015, 20:39 | ||||||
|
Вот что имеется в stm32f4xx_hal_spi.c в HAL_SPI_Init:
0
|
||||||
|
0 / 0 / 0
Регистрация: 22.05.2010
Сообщений: 22
|
||
| 04.04.2015, 20:46 | ||
В общем, я у себя исправил stm32f4xx_hal_spi.c, у меня теперь всё работает в соответствии с моим пониманием документации.
0
|
||
|
0 / 0 / 0
Регистрация: 22.12.2011
Сообщений: 361
|
||
| 05.04.2015, 15:55 | ||
STM32Cube_FW_L0_V1.1.0\Projects\STM32T05 3R8-Nucleo\Examples\SPI\SPI_FullDuptix_ComDM A в маине сделал бесконечный цикл передачи по SPI - больше ничего не менял подключил выходы к анализатору = всё передаётся безо всяких извращений и добавлений HAL_SPI_ENABLE и так есть там где надо прошагал в шаговом режиме как на картинке ниже и в рабочем Аналогично без проблем SPI работает на STM32F072B-Dyscovery STM32Cube_FW_F0_V1.2.0\Projects\STM32F07 2B-Dyscovery\Examples\SPI\SPI_FullDuptix_Co mDMA
0
|
||
| 05.04.2015, 15:55 | |
|
Помогаю со студенческими работами здесь
11
замена дисплея STM32f4 DISCO stm32f4 disco, сделать дамп с внешнего устройства Не получается прошить STM32F100 ST-Linkом от STM32F4-disco STM32F429-Disco TFT Плывет картинка по SPI STM32F4 + HAL drivers + C++ Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
||||
|
Новый ноутбук
volvo 07.12.2025
Всем привет.
По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне:
Ryzen 5 7533HS
64 Gb DDR5
1Tb NVMe
16" Full HD Display
Win11 Pro
|
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
|
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
|
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов
На странице:
https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/
нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
|
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов.
. . .
|
|
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
|
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
|
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут.
В век Веб все очень привыкли к дизайну Single-Page-Application .
Быстренько разберем подход "на фреймах".
Мы делаем одну. . .
|
Фото: Daniel Greenwood
kumehtar 13.11.2025
|
Расскажи мне о Мире, бродяга
kumehtar 12.11.2025
— Расскажи мне о Мире, бродяга,
Ты же видел моря и метели.
Как сменялись короны и стяги,
Как эпохи стрелою летели.
- Этот мир — это крылья и горы,
Снег и пламя, любовь и тревоги,
И бескрайние. . .
|