Великая штука, логический анализатор, добил я SPI на f030f4, подключил модуль NRF24L01, основной заплет был с чтением и записью в буфер, при чтении, что бы избавиться от мусора в теневом регистре, перед приемом нужных данных, его нужно вычитать до последнего байта, при 8 битной передаче, читать нужно 4 раза. Если этого не сделать то первые данный будут содержать мусор.
@@Solderingironspb Да сказать честно, просто приятно смотреть ваши видео, хочу перейти с AVR, но пока только подготавливаюсь, решил для себя что буду изучать работу с CMSIS. Есть у меня проект пульта дистанционного управления, и хочу его модернизировать и построить на базе STM, не хватает пинов на ATMega328, можно конечно их расширить с помощью внешних микросхем, он все же хочется шагнуть вперед и перейти на другую архитектуру, более производительную. Если интересно, есть по нем видео у меня на канале.
Как всегда, Олег, все по полочкам!!! За труд -----лайк!!!! Единственно, непонятно, зачем делать "костыль" с флагом overrun, при отправке байтов, когда можно читать DR регистр в пустоту, если тебе данные от периферии не нужны??? (имхо)
для мастер режима не вижу смысла на прерываниях работать, т.к. при передаче данных или приеме данных мы все равно сами выбираем, когда что-то отправить или принять. Нет такого, что мы неожиданно получим данные, как на том же USART. Режим DMA может еще есть смысл использовать, если использовать передачу больших пачек данных, либо в режиме слейва. Но в любом случае, Вы можете дописать функционал под себя. Вся информация на видео.
Добрый вечер) возможно будет) я работал с CAN в коммерческих целях. В бытовом плане пока нужды не было. Может когда-нибудь руки дойдут до занятия по нему…
bool CMSIS_SPI_Data_Transmit_8BIT(SPI_TypeDef* SPI, uint8_t* data, uint16_t Size_data, uint32_t Timeout_ms); *SPI - шина SPI. Ну и соответственно, каким SPI будете пользоваться, тот и вводите) Мы настраивали SPI1. Вот, я с ним и работал.
16:00 А вы проверяли может все таки заведется на 36Мбит? Я почему спрашиваю тут один товарищ вроде как заводил на 36Мбит , по крайней мере так он в исходниках пишет с гитхаба . Вся та дребудень написана для ардуины и кажись ни у одного не компилится. Ну и у меня тоже. там толи с библиотеками что то либо сей товарищь лукавит. cbm80amiga th-cam.com/video/6Uh5Iu-erO0/w-d-xo.html
Пробовал. Лог. анализатор показывает полную ерунду. Линия тактирования с ума сходит. Можно конечно было бы списать на то, что лог. анализатор просто не успевает....но...CS при 18 MBits/s имеет длительность 5,2 мкс (при передаче 6 байт), а при настройке на уловные 36 MBits/s имеет длительность 5,42 мкс (при передаче 6 байт), но там на захвате вообще дичь. Приложу скрины: Вот 18 MBits/s: user-images.githubusercontent.com/68805120/216789716-0fc306cb-8cac-4c04-bd61-2c86314f5693.PNG Вот 36 MBits/s: user-images.githubusercontent.com/68805120/216789717-30662bb8-b30f-4602-b815-a16726a74d08.PNG
Я вообще советую забыть про stm32f103 и клоны с 103 в названии и брать его копию в виде ch32v203 по 60р на riscv. Они работают до 144Мц и потребляют в 6 раз меньше всяких 103.
@@Solderingironspb у меня палочка выручалочка вообще stm8 для всякой мелочевки всегда был. Вот их у меня тож десятки, девать некуда. Потом упомянутый g0 накупил по 55р. И этих ch32v203 недавно так же по 55р. 103 у меня есть, как экспонаты).
Наконец-то урок по SPI! В очередной раз, большое вам спасибо!
Спасибо, очень понравилась генерация пустого проекта))
Великая штука, логический анализатор, добил я SPI на f030f4, подключил модуль NRF24L01, основной заплет был с чтением и записью в буфер, при чтении, что бы избавиться от мусора в теневом регистре, перед приемом нужных данных, его нужно вычитать до последнего байта, при 8 битной передаче, читать нужно 4 раза. Если этого не сделать то первые данный будут содержать мусор.
Спасибо. Полезно. Интересно.
о. снова радуете)
Спасибо за отличный материал. А работу с другими датчиками/микросхемами по SPI/i2c сможете показать?
Да) видео и библиотеки будут)
Буду с нетерпением ждать😅
Дружище, когда продолжение серий по CMSIS?
Огонь контент!!!!!!
Спасибо) а какие темы еще требуются?)
@@Solderingironspb Да сказать честно, просто приятно смотреть ваши видео, хочу перейти с AVR, но пока только подготавливаюсь, решил для себя что буду изучать работу с CMSIS. Есть у меня проект пульта дистанционного управления, и хочу его модернизировать и построить на базе STM, не хватает пинов на ATMega328, можно конечно их расширить с помощью внешних микросхем, он все же хочется шагнуть вперед и перейти на другую архитектуру, более производительную. Если интересно, есть по нем видео у меня на канале.
@@svbHiTek выглядит прям очень круто!) все так внутри продумано до мелочей)
@@Solderingironspb еще раз спасибо, если есть желание по участвовать в проекте, в плане программирования, буду рад, предоставлю всю документацию)))
@svbHiTek к сожалению пока своих проектов выше крыши))
Как всегда, Олег, все по полочкам!!! За труд -----лайк!!!! Единственно, непонятно, зачем делать "костыль" с флагом overrun, при отправке байтов, когда можно читать DR регистр в пустоту, если тебе данные от периферии не нужны??? (имхо)
Если читать при отправке, то мы будем лишнее время тратить.
@@Solderingironspb ну да, согласен. Оптимизация))Отдельный респект за скрипты!
Скрипт шикарен, сейчас хочу перейти на VisualGDB, и ваша разработка как нельзя кстати, спасибо. Кстати Олег, вам часто приходится паять?
Очень часто. На работе пальник в руках держу. Почти каждый день)
@@Solderingironspb Я не стал здесь писать и оставлять ссылку, поэтому все изложил в сообщении вашей группы в VK
мой путь был другим: CMSIS -> SPL -> CMSIS -> HAL -> CMSIS c 2011 по 2023
Спасибо за материал, в будущем вы планируете уроки по RS232, Rs485 на CMSIS?
Да) но по сути дела - это тот же uart будет ведь)
@@Solderingironspb Ethernet??)
Тоже хочется)
Друг, нашел тему для видео, освети пожалуйста вопрос использования внешних микросхем памяти, интересует как FLASH так и EEPROM, заранее спасибо)))
С eeprom я работал же. С flash, что в stm32 да, видео нет еще)
@@Solderingironspb по флешу интересует момент, можно ли с него грузиться
@svbHiTek я в него только структуры записывал (настройки) и читал потом.
создаю порэкт, а у меня почему то пустая папка получаеться. Не подскажете в чем дело может быть?
Все хорошо, а почему не сделать все то же самое но на прерываниях ?
для мастер режима не вижу смысла на прерываниях работать, т.к. при передаче данных или приеме данных мы все равно сами выбираем, когда что-то отправить или принять. Нет такого, что мы неожиданно получим данные, как на том же USART. Режим DMA может еще есть смысл использовать, если использовать передачу больших пачек данных, либо в режиме слейва. Но в любом случае, Вы можете дописать функционал под себя. Вся информация на видео.
Доброго вам. Интересует теория и практика по CAN?
Будет ли такой урок?
Добрый вечер) возможно будет) я работал с CAN в коммерческих целях. В бытовом плане пока нужды не было. Может когда-нибудь руки дойдут до занятия по нему…
на STM32F030F4 команда записи в регистр передачи, при передачи в режиме 8бит выглядит *(uint8_t*)&SPI->DR = *(data); может кому поможет.
единственное я не понял от куда взялся SPI1 в функции отправки(
bool CMSIS_SPI_Data_Transmit_8BIT(SPI_TypeDef* SPI, uint8_t* data, uint16_t Size_data, uint32_t Timeout_ms);
*SPI - шина SPI.
Ну и соответственно, каким SPI будете пользоваться, тот и вводите) Мы настраивали SPI1. Вот, я с ним и работал.
@@Solderingironspb так я про это и говорю. где мы объявили SPI_TypeDef. вот этого не вижу(
@@openFrimeTv Если работаете в VisualGDB, то наведите на SPI_TypeDef и нажмите на F12(в CubeIDE на F3). Вас перенесет в файл stm32f103xb.h (Драйвера CMSIS)
ну и структура там будет прописана:
typedef struct
{
__IO uint32_t CR1;
__IO uint32_t CR2;
__IO uint32_t SR;
__IO uint32_t DR;
__IO uint32_t CRCPR;
__IO uint32_t RXCRCR;
__IO uint32_t TXCRCR;
__IO uint32_t I2SCFGR;
} SPI_TypeDef;
там же и макросы прописаны:
#define SPI1 ((SPI_TypeDef *)SPI1_BASE)
#define SPI2 ((SPI_TypeDef *)SPI2_BASE)
#define SPI1_BASE (APB2PERIPH_BASE + 0x00003000UL)
#define SPI2_BASE (APB1PERIPH_BASE + 0x00003800UL)
ну и т.д.)
@@Solderingironspb аа, понял. спасибо
Вообще супер!
Ну и несколько абсолютно бесполезных слов для хитроумных алгоритмов Ютуба.
16:00 А вы проверяли может все таки заведется на 36Мбит?
Я почему спрашиваю тут один товарищ вроде как заводил на 36Мбит , по крайней мере так он в исходниках пишет с гитхаба . Вся та дребудень написана для ардуины и кажись ни у одного не компилится. Ну и у меня тоже. там толи с библиотеками что то либо сей товарищь лукавит.
cbm80amiga
th-cam.com/video/6Uh5Iu-erO0/w-d-xo.html
Пробовал. Лог. анализатор показывает полную ерунду. Линия тактирования с ума сходит. Можно конечно было бы списать на то, что лог. анализатор просто не успевает....но...CS при 18 MBits/s имеет длительность 5,2 мкс (при передаче 6 байт), а при настройке на уловные 36 MBits/s имеет длительность 5,42 мкс (при передаче 6 байт), но там на захвате вообще дичь.
Приложу скрины:
Вот 18 MBits/s: user-images.githubusercontent.com/68805120/216789716-0fc306cb-8cac-4c04-bd61-2c86314f5693.PNG
Вот 36 MBits/s: user-images.githubusercontent.com/68805120/216789717-30662bb8-b30f-4602-b815-a16726a74d08.PNG
Да 103 cortex m3 устаревший камень.
Я вообще советую забыть про stm32f103 и клоны с 103 в названии и брать его копию в виде ch32v203 по 60р на riscv. Они работают до 144Мц и потребляют в 6 раз меньше всяких 103.
Тяжело забыть про них, когда закупил их куеву тучу)) лично для меня они палочки-выручалочки. Хватало их для 95% задач)
@@Solderingironspb у меня палочка выручалочка вообще stm8 для всякой мелочевки всегда был. Вот их у меня тож десятки, девать некуда. Потом упомянутый g0 накупил по 55р. И этих ch32v203 недавно так же по 55р. 103 у меня есть, как экспонаты).