2016-05-16 4 views
0

Может ли кто-нибудь объяснить мне принцип работы связи SPI? И если его возможно показать мне ссылку с примерами кодов для обмена SPI? Я собираюсь использовать микропроцессор «STM32f1xx» с подключенным периферийным устройством SPI, которое является ADE7878 (Energy Analyzer). Я использую библиотеки «STM32CubeMx» и «stm32f1xx_hal.h». Но я не смог найти много примеров кода с библиотекой «stm32f1xx_hal.h». Заранее благодарим за помощьКак использовать связь STM32f1xx_HAL SPI

+0

Помогает ли это: https://github.com/eleciawhite/STM32Cube/tree/master/STM32Cube_FW_F3_V1.3.0/Projects/STM32F303RE-Nucleo/Examples/SPI/SPI_FullDuplex_ComIT/Src – TisteAndii

ответ

0

В основном SPI - это синхронный последовательный интерфейс связи, в котором используется отношение ведущий-ведомый. Master (ваш STM32 micro) выбирает ведомый на шине, вытаскивает штифт выбора микросхемы. В вашем случае перед всеми коммуникационными действиями вам нужно выбрать интерфейс SPI в ADE7878. Переключайте три раза на контакт SS/HSA после включения питания, если вам не нужна связь с протоколом I2C (см. Подробности на стр. 68 в datasheet). После того, как мастер выбора начинает синхронизировать сигнал в линии SCLK. Мастер отправляет первый байт, чтобы выбрать чтение/запись с битом 0, вторым байтом с адресом регистра в строке MOSI. Наконец, ведущий считывает дату регистра ведомого в строке MISO или записывает значение регистра в MOSI.

Перед связью необходимо задать параметры (фаза синхронизации, полярность, тактовая частота и т. Д.). Вы можете прочитать об этом в литературе и посмотреть STM32F1 HAL documentation. Существует много хороших общих материалов о SPI. Прежде всего, я рекомендую вам the wiki page of SPI. Если вы ищете здесь, вы также можете найти несколько полезных советов, относящихся к SPI и stm32 (например, some shorter general intro). Я тепло предлагаю вам прочитать Geoffrey Brown's book, который представляет собой введение в программирование STM32F1. Он основан на стандартной библиотеке периферийных устройств (предок HAL), но принципы очень хорошо объяснены.

Если вы используете CubeMX и STM32CubeF1 firmware package, вы можете найти некоторые рабочие примеры SPI для разных инструментов в репозитории. Если вы хотите больше, вы можете увидеть любые примеры для любого STM32, потому что код HAL переносится по семействам. Я рекомендую поиск, например. "__HAL_SPI_ENABLE".

Смежные вопросы