Это видео недоступно.
Сожалеем об этом.

STM32. Урок 20. SPI. Serial Peripheral Interface

Поделиться
HTML-код
  • Опубликовано: 31 янв 2020
  • Видео урок о том, что такое интерфейс SPI, какие схемы подключения бывают, какие виды сигналов физически реализованы в МК STM32, какие настройки необходимо выполнить в среде STM32CubeIDE для популярного микроконтроллера STM32F103C8T6 отладочной платы BluePill.
    Вы можете помочь каналу Яндекс-деньги:
    money.yandex.r...

Комментарии • 41

  • @ayazgv
    @ayazgv 4 года назад +4

    Еще одно полезное видео, Списидо Вам!

    • @NRelectronics
      @NRelectronics  4 года назад

      Пижалуйста) Рад помочь.

  • @banaaboy6504
    @banaaboy6504 4 года назад +4

    Материал и подача на канале достойны топового ВУЗа.

    • @NRelectronics
      @NRelectronics  4 года назад +2

      Спасибо! Старался во всю) Дальше будут видео по I2C, RTC, DAC, ADC и HRTIM конечно же.

    • @programer8
      @programer8 4 года назад

      @@NRelectronics как я я понимаю вы занимаетесь программированием микроконтроллеров ?

    • @NRelectronics
      @NRelectronics  4 года назад

      трошки для себе)

  • @ded_pihor
    @ded_pihor 2 года назад +1

    Спасибо! У вас супер полезный контент

  • @tupoy_ytub_uberi_psevdonim
    @tupoy_ytub_uberi_psevdonim Год назад

    Понял некоторые вещи, познавательно. Спасибо!

  • @dongrizly8266
    @dongrizly8266 4 года назад +2

    На картинке на 17 минуте (подключение нескольких слейвов) пучок от mosi слейвов заведён на sclk.

    • @NRelectronics
      @NRelectronics  4 года назад

      твою м... спасибо что сказали, даже такому нашему сми довериться нельзя..

    • @dongrizly8266
      @dongrizly8266 4 года назад

      @@NRelectronics да ладно, у всех бывает. За всеми глаз да глаз ))

  • @Bi-dj3iy
    @Bi-dj3iy 10 месяцев назад

    Я что то не особо понял, если есть синхроимпульс почему происходит рассинхронизация при большем пакете. И означает ли это что USART работает дальше чем UART?

    • @NRelectronics
      @NRelectronics  10 месяцев назад +1

      Про рассинхронизацию уже не помню, надо смотреть вспоминать. А usart действительно работает дальше, скорость значительно меньше...

  • @user-pr4en3fh2o
    @user-pr4en3fh2o 4 года назад

    Спасибо! Очень подробно и понятно. Есть некоторые устройства с SPI без вывода SS (CG) конкретно дисплей, на ардуино есть библиотеки которые позволяют работать без этого контакта. Вопрос можно ли на STM32 подключить устройство без SS если оно будет единственное? А также если их несколько? Спасибо.

    • @NRelectronics
      @NRelectronics  4 года назад

      Нужно рассматривать конкретную библиотеку, так сходу сложно сказать. SS или чип селект можно управлять обычным gpio, не запрещено ;-)

  • @BarVados
    @BarVados 11 месяцев назад

    Здравствуйте! Спасибо за видео. Подскажите пожалуйста есть в hal метод HAL_TransmitReceive чем он отличается от отдельно вызванных transmit receive? Я его использую для чтения регистров ethernet адаптера w5500 . Результаты отличаются от отдельно вызванных методов, исходный код смотрел не понятно почему это написано так, как это работает... Можно ли его заменить коротким методом работающим непосредственно с регистрами stm32, и как будет выглядит этот код? Для лучшего понимания хотелось бы разобраться с этими моментами

    • @NRelectronics
      @NRelectronics  11 месяцев назад

      Здравствуйте. Пожалуйста за видео)
      Данный метод или функция мне не попадалась, по крайней мере не помню. Надо будет посмотреть почему она на передачу и прием, судя из ее названия...

    • @BarVados
      @BarVados 7 месяцев назад

      @@NRelectronics Подскажите пожалуйста, когда подключаю к логическому анализатору выходы (sck и mosi) и пытаюсь выполнить код:
      char dta[6]="hellow";
      HAL_SPI_Transmit(&hspi1, dta, 6, 1000000);
      Вижу много раз 0xff, но полезных данных нет. В чем может быть причина?

  • @maksympavlenko5305
    @maksympavlenko5305 3 года назад

    30:03 я могу использовать свой ST7735 дисплей и SD Card на одном SPI? SD card отдельным модулем идет, в дисплей не впаян

    • @NRelectronics
      @NRelectronics  3 года назад

      Именно эту переферию я бы не использовал на одном SPI.

    • @maksympavlenko5305
      @maksympavlenko5305 3 года назад

      @@NRelectronics ух ты попался я ) спасибо за ответ. Мозг уже вскипел, потому что карточка отдельно даже не хочет работать. FR_not_ready выдает :(. Свободная карта только одна. Не знаю в чем дело, надеюсь не в карте

  • @CadmiumUA
    @CadmiumUA 4 года назад

    Куб не даёт поставить прескалер больше 4, а вот в коде можно поставить 2, и spi работает без ошибок. Интересно оно выдаёт 36 мегабит, или 18 это потолок и дальше настройки не влияют. И кстати в даташите пишут "master mode baud rate prescalers (fPCLK/2 max.)" и не слова про предел в 18.

    • @NRelectronics
      @NRelectronics  4 года назад +1

      В исходнике то можно вписать делитель на 2. Но не все так просто:
      cloud.mail.ru/public/2fh8/UxxfH9Sw7

    • @CadmiumUA
      @CadmiumUA 4 года назад

      @@NRelectronics ​Интересно как на практике, STM32F103C8T6 он весть такой, по даташиту 72MHz, а на практике можно до 128, флеша 64kB, а на практике 128, думаю с spi также. Жду не дождусь экран с Китая проверить

    • @NRelectronics
      @NRelectronics  4 года назад

      то что вы пишите, это то что не оттестировано и компания не гарантирует правильную работоспособность. Повезло работает, не повезло не работает.

  • @maksympavlenko5305
    @maksympavlenko5305 3 года назад

    А как настроить программный SPI? STM32F103C8T6 только два аппаратных spi имеет :(

    • @NRelectronics
      @NRelectronics  3 года назад

      Настроить никак. Самому написать библиотеку с программным SPI.

    • @maksympavlenko5305
      @maksympavlenko5305 3 года назад

      @@NRelectronics спасибо за ответ. А проблем не будет, если использовать дисплей и sd карту на одном spi? DMA вроде использовать нужно будет? Первый раз такое делаю :)

    • @NRelectronics
      @NRelectronics  3 года назад

      надо их разделять грамотно при использовании, DMA желательно понятно.

  • @y_ivan
    @y_ivan 4 года назад

    Здравствуйте, продолжаю изучать f103.
    Написал процедуру SPI_TRANSMIT, она отправляет данные 1 раз. а на втором круге зацикливается на while(!SPI_TX_BUSY);
    В SPI HAL_SPI_TxCpltCallback работать должна так же как на UART ?
    void HAL_SPI_TxCpltCallback(SPI_HandleTypeDef *hspi)
    {
    if (hspi == &hspi1)
    {
    SPI_TX_BUSY=true;
    }
    }
    void SPI_TRANSMIT (uint8_t *MessageSPI, uint8_t ArrayLengthPSI)
    {
    while(!SPI_TX_BUSY);
    SPI_TX_BUSY = false;
    HAL_SPI_Transmit_DMA (&hspi1, (uint8_t *)MessageSPI, ArrayLengthPSI);
    }

    • @y_ivan
      @y_ivan 4 года назад

      Разобрался! Если отправлять один байт, независимо от скорости порта, наблюдается описанный bug. но при отправке массива с из 2 и более байт все работает.

    • @NRelectronics
      @NRelectronics  4 года назад

      вот молодцы! Быстрее меня отвечаете, так держать!

    • @y_ivan
      @y_ivan 4 года назад

      @@NRelectronics вопрос остаётся открытым, как передать один байт и получить нормальное прерывание в DMA. До CMSIS пока ещё руки не дошли.

    • @NRelectronics
      @NRelectronics  4 года назад

      HAL_StatusTypeDef HAL_SPI_Transmit(SPI_HandleTypeDef *hspi, uint8_t *pData, uint16_t Size, uint32_t Timeout);
      *hspi - с какого SPI будет передача,
      DataSize - 1 или 2 байта передается,
      *pData - ваши данные,
      Size и Timeout думаю понятно.
      Это обычная передача без прерываний.

    • @y_ivan
      @y_ivan 4 года назад

      @@NRelectronics передаю по SPI1, попробую. Но задача разгрузить процессорное время.

  • @ShivBhagtivideo8451
    @ShivBhagtivideo8451 4 года назад

    Hi