Может ли кто-нибудь объяснить мне принцип работы связи SPI? И если его возможно показать мне ссылку с примерами кодов для обмена SPI? Я собираюсь использовать микропроцессор «STM32f1xx» с подключенным периферийным устройством SPI, которое является ADE7878 (Energy Analyzer). Я использую библиотеки «STM32CubeMx» и «stm32f1xx_hal.h». Но я не смог найти много примеров кода с библиотекой «stm32f1xx_hal.h». Заранее благодарим за помощьКак использовать связь STM32f1xx_HAL SPI
ответ
В основном 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"
.
- 1. Микроконтроллер для микроконтроллера Связь SPI
- 2. Как читать и записывать в EEPROM, запрашивая связь SPI
- 3. CAN-шина и связь SPI в Raspberry Pi
- 4. GPS-связь uxox-6 neo6 с микроконтроллером с использованием SPI
- 5. Raspberry Pi spidev.h SPI Communication
- 6. Arduino Nano: поддерживается SPI?
- 7. SPI Часы и сигналы CS
- 8. Linux Kernel Driver - SPI как идентифицируется устройство SPI?
- 9. Как mtd_dataflash.c с spi protocal ..?
- 10. SPI Communication RaspberryPI Arduino
- 11. Sysfs для устройства SPI
- 12. Контроллер OMAP SPI
- 13. Unknown BlueNRG SPI response
- 14. Вопросы интервью I2C/SPI
- 15. SPI периферийный на LPC1769
- 16. SPI: модель драйвера Linux
- 17. Чтение 22 бит через SPI
- 18. Что делает SPI быстрее, чем протокол I2C
- 19. MCP2515 & ATMEGA328 Особенность SPI
- 20. Интерфейс SPI linux
- 21. Verilog Inter-FPGA SPI Communication
- 22. SPI linux driver
- 23. PIC32 SPI не работает
- 24. stm32 SPI + DMA
- 25. STM32F4-Discovery SPI LIS3DSH
- 26. STM32f4 SPI DMA принимаем
- 27. SPI header Файл
- 28. Как использовать HTTP-связь на iPhone?
- 29. Как использовать связь npm с Heroku?
- 30. как использовать связь с glyphicon рельсами 4
Помогает ли это: https://github.com/eleciawhite/STM32Cube/tree/master/STM32Cube_FW_F3_V1.3.0/Projects/STM32F303RE-Nucleo/Examples/SPI/SPI_FullDuplex_ComIT/Src – TisteAndii