Тёмный

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

NR.electronics
Подписаться 19 тыс.
Просмотров 9 тыс.
50% 1

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

Опубликовано:

 

11 сен 2024

Поделиться:

Ссылка:

Скачать:

Готовим ссылку...

Добавить в:

Мой плейлист
Посмотреть позже
Комментарии : 41   
@ayazgv
@ayazgv 4 года назад
Еще одно полезное видео, Списидо Вам!
@NRelectronics
@NRelectronics 4 года назад
Пижалуйста) Рад помочь.
@banaaboy6504
@banaaboy6504 4 года назад
Материал и подача на канале достойны топового ВУЗа.
@NRelectronics
@NRelectronics 4 года назад
Спасибо! Старался во всю) Дальше будут видео по I2C, RTC, DAC, ADC и HRTIM конечно же.
@programer8
@programer8 4 года назад
@@NRelectronics как я я понимаю вы занимаетесь программированием микроконтроллеров ?
@NRelectronics
@NRelectronics 4 года назад
трошки для себе)
@ded_pihor
@ded_pihor 2 года назад
Спасибо! У вас супер полезный контент
@NRelectronics
@NRelectronics 2 года назад
Спасибо!
@tupoy_ytub_uberi_psevdonim
@tupoy_ytub_uberi_psevdonim 2 года назад
Понял некоторые вещи, познавательно. Спасибо!
@NRelectronics
@NRelectronics 2 года назад
Да пожалуйста)
@dongrizly8266
@dongrizly8266 4 года назад
На картинке на 17 минуте (подключение нескольких слейвов) пучок от mosi слейвов заведён на sclk.
@NRelectronics
@NRelectronics 4 года назад
твою м... спасибо что сказали, даже такому нашему сми довериться нельзя..
@dongrizly8266
@dongrizly8266 4 года назад
@@NRelectronics да ладно, у всех бывает. За всеми глаз да глаз ))
@Bi-dj3iy
@Bi-dj3iy 11 месяцев назад
Я что то не особо понял, если есть синхроимпульс почему происходит рассинхронизация при большем пакете. И означает ли это что USART работает дальше чем UART?
@NRelectronics
@NRelectronics 11 месяцев назад
Про рассинхронизацию уже не помню, надо смотреть вспоминать. А usart действительно работает дальше, скорость значительно меньше...
@АнтонЖук-м4у
@АнтонЖук-м4у 4 года назад
Спасибо! Очень подробно и понятно. Есть некоторые устройства с SPI без вывода SS (CG) конкретно дисплей, на ардуино есть библиотеки которые позволяют работать без этого контакта. Вопрос можно ли на STM32 подключить устройство без SS если оно будет единственное? А также если их несколько? Спасибо.
@NRelectronics
@NRelectronics 4 года назад
Нужно рассматривать конкретную библиотеку, так сходу сложно сказать. SS или чип селект можно управлять обычным gpio, не запрещено ;-)
@BarVados
@BarVados Год назад
Здравствуйте! Спасибо за видео. Подскажите пожалуйста есть в hal метод HAL_TransmitReceive чем он отличается от отдельно вызванных transmit receive? Я его использую для чтения регистров ethernet адаптера w5500 . Результаты отличаются от отдельно вызванных методов, исходный код смотрел не понятно почему это написано так, как это работает... Можно ли его заменить коротким методом работающим непосредственно с регистрами stm32, и как будет выглядит этот код? Для лучшего понимания хотелось бы разобраться с этими моментами
@NRelectronics
@NRelectronics Год назад
Здравствуйте. Пожалуйста за видео) Данный метод или функция мне не попадалась, по крайней мере не помню. Надо будет посмотреть почему она на передачу и прием, судя из ее названия...
@BarVados
@BarVados 8 месяцев назад
@@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 года назад
В исходнике то можно вписать делитель на 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
@NRelectronics
@NRelectronics 4 года назад
Hi)) Who are you?
Далее
A small kitten was dumped #cat #kitten #cutecat
00:41
Cute
00:16
Просмотров 6 млн
STM32. Урок 13. USART. Теория. Часть 1
45:45
7. STM32 and LCD Interface
11:27
Просмотров 116
A small kitten was dumped #cat #kitten #cutecat
00:41