когда сам смотришь даташиты и код - это белиберда непонятная. Смотрю здесь видео, складываются ощущения будто бы я это знаю. У вас талант объяснять.
@motoday35805 жыл бұрын
Отличный урок , пожелания : работа с adc (во всех режимах), usb custom hid (прием и передача), подключение vga камеры (не по usb) .. Спасибо больше за Ваш труд.
@Ironziz5 жыл бұрын
Хороший урок , толковое объяснение , так держать 👍
@2222-s8x2 жыл бұрын
Моём дисплейчике ssd1306 есть дополнительные отдельные "порты" как для CS, так и для D/C. Если кто столкнулся с тем же - на данном этапе обучения я решил раздельно запитить их низким логическим сигналом с ног микроконтроллера, не связанных с SPI. Таким образом мы без проблем передаём команды/данные лишь в 8-битности.
@korpus84815 жыл бұрын
Хороший урок - обстоятельный. Не могли бы вы показать работу с м\сх AT45... на примере записи звука с АЦП на флэш память AT45 и последующее воспроизведение по нажатию кнопки
@VladimirMedintsev5 жыл бұрын
Могу но не буду тратить на это время. Т.к. Про AT45 я уже рассказал, АЦП и ЦАП это отдельные и весьма обьемные видеоролики и показывать их работу на примере плеера ну никому не интересно.
@Alf_Shamuei15 сағат бұрын
Какой анализатор используете в видео?
@ivanrusev22706 ай бұрын
У меня вопрос чем отличается TI протокола и протокола MOTOROLA и какими битами устанавливаются?
@AlexAlex-vq6yg2 жыл бұрын
Не могли бы вы подсказать как реализовать spi в режиме daisy-chain? к сожалению очень мало информации в интернете, как теоретической так и практической реализации этого протокола.
@AndreiRomanovGrif3 жыл бұрын
Владимир, добрый день! Начал разбираться с SPI и обнаружилась следующая проблема: При попытке передачи данных на линии MOSI видны импульсы передаваемых данных, но на выходе SCLK нет импульсов. Этот выход в момент начала передачи данных переходит из высокого в низкий уровень и все. После окончания передачи так и остаётся в низком уровне. Может подскажете в какую сторону копать, я уже в ступоре.
@zsony22153 жыл бұрын
Спасибо понятные объяснения. Очень помогает. Вопрос по схемам почему у вас микрофарады mf? Обычно же uf?
@VladimirMedintsev3 жыл бұрын
Как хочу так и пишу.
@zsony22153 жыл бұрын
@@VladimirMedintsev это конечно верно. Но есть же стандарты. И как ваши коллеги, которые ваши схемы читают, обозначают номиналы? Я уж не говорю о начинающих которые будут искать в магазине конденсатор на 10 mf.
@VladimirMedintsev3 жыл бұрын
Вообще не вижу тут почвы для какого-то обсуждения. Хоть словами номинал писать можно, хоть как угодно. Главное это ход мышления. А остальное ну по прошествии лет начинает выглядеть просто как юношеский максимализм.
@zsony22153 жыл бұрын
Спасибо за ответ, хоть он мне и не совсем понятен. И еще раз спасибо за ваши видео. Мне как начинающему очень помогает.
@VladimirMedintsev3 жыл бұрын
Всегда пожалуйста.
@ДмитроПерший5 жыл бұрын
Хотя сейчас ещё раз "нырнул" в даташит дисплея и там на странице 65 указано, что данные цвета передаются всё таки двумя байтами. Но при этом указано, что биты DBI[2:0] регистра 3Ah должны быть выставлены в "101". Нужно будет проверить. Может у меня по умолчанию выставлены в "110" и передача должна быть тремя битами (для 18-ти битного цвета). Дааа... не зря опытные программисты говорят, что работать с графикой и дисплеями - это уже достаточно сложно. Наскоком разобраться не получится.
@sergatmel82425 жыл бұрын
Здорово ! 👍
@ДимаДима-к1н4 жыл бұрын
ВОТ это ПРИМЕР, так пример..... выбирай что нравится.! СПС.
@МихаилТиунов-с7д2 жыл бұрын
Вопрос по эмуляции SPI. А каким образом устанавливается скорость передачи по SPI ?
@VladimirMedintsev2 жыл бұрын
А там же скорость любая. Нет стандарта. Сколько успеваем эмулировать столько и успеваем.
@МихаилТиунов-с7д2 жыл бұрын
@@VladimirMedintsev У меня проблема вот какая. Неожиданно вылезла необходимость сделать программный SPI. Но я делаю не через HAL, а напрямую через регистр ODR. А процессор работает на 72 МГц. И скорость получилась слишком большой - управляемая микросхема не успевает, там 5 МГц максимум. И вот думаю как грамотно делать задержки.
@VladimirMedintsev2 жыл бұрын
Ну я бы попробовал через таймер. В его обработчике менять ODR и тормозов не будет и остальной код не тормозит.
@МихаилТиунов-с7д2 жыл бұрын
@@VladimirMedintsev Спасибо за дельный совет. Как раз один таймер остался
@VladimirMedintsev2 жыл бұрын
Плотно там у вас :-)
@tupoy_ytub_uberi_psevdonim2 жыл бұрын
я уже второй день ломаю голову над тем как подключить внешнюю флеш память так, что бы она была видна в менеджере ресурсов памяти в IDE.
@BarVados Жыл бұрын
Подскажите, по поводу HAL_SPI_TransmitReceive Вы не знаете или я не совсем понятно сформулировал вопрос? Очень часто этот метод используется для чтения регистров различных модулей напр. enc28j60, но почему не используются просто HAL_SPI_Transmit и HAL_SPI_Receive? Каков принцип работы HAL_SPI_TransmitReceive ?
@VladimirMedintsev Жыл бұрын
Принципе работы любой функции прекрасно становится понятен при чтении ее кода. Т.е. на полном серьезе вы можете просто сравнить код этих функций и увидеть разницу. На самом деле почему используют TransmitReceive - да из-за удобстве. Не нужно как в случае с двумя функциями тратить время на проверку блокировки интерфейса, не нужно дважды проверять готовность.
@bubuii5 жыл бұрын
Качественно
@masjanja115 жыл бұрын
Владимир, здравствуйте. Я позаимствовал вашу библиотеку и совсем немного её модифицировал, добавив возможность работы с библиотекой LL, ибо HAL и SPI вместе это лютый тормоз. Плюс добавил возможность выбора режима работы SPI. разрешите ли опубликовать её на гитхаб, конечно же с указанием первоисточника. P.S. не являюсь профессиональным программистом, программирование - это моё хоби, так что изяществом кода не блещу.
@VladimirMedintsev5 жыл бұрын
Можете публиковать где хотите в любом удобном для вас виде. Я совсем не претендую даже на указание своего имени. Для меня это совсем не важный вопрос. Так что с моей стороны нет ни возражений ни пожеланий.
@lesharom24054 жыл бұрын
Здравствуйте!Можно задать Вам вопрос?
@panigo635 жыл бұрын
Спасибо за уроки! Где можно посмотреть текстовую версию? Заранее благодарен.
@VladimirMedintsev5 жыл бұрын
Вот под этим видео в описании ссылка на проект - kzbin.info/www/bejne/eomWqZVrZa2Al6s
@ГеоргийКолосов-ю8р8 ай бұрын
Спасибо большое
@Insideus27865 жыл бұрын
А какие "недоработочки" для FreeRTOS Вы имеете ввиду, если это не секрет? Задержки?
@VladimirMedintsev5 жыл бұрын
Там в моей реализации библиотеки не совсем корректно прописаны timeout при ожидании записи больших обьемов данных. На момент написания библиотеки это было не принципиально, а на будущее придется переписать.
@devel-man5 жыл бұрын
Подскажите пожалуйста как в DSView переключится на бинарное отображение данных из протокола?
@VladimirMedintsev5 жыл бұрын
Выбирать не 0:SPI, 1:SPI. Т.е. протокол с единичкой в начале.
@devel-man5 жыл бұрын
@@VladimirMedintsev Большое спасибо!
@emmetray97034 жыл бұрын
Скажите пожалуйста что луще для SPI, I2C использовать CMSIS или HAL? Я спрашиваю потому что я разобрал много примеров по SPI и I2C с использованием CMSIS и везде почти одно и тоже и по мануалу STM32 все верно, НО при комуникации сразными модулями (например Gyroscope, NRF24L01) с CMSIS кодом возникают проблемы ввиде зависаний и не способность писать или читать из регистров и тд. Например сравниваю значения регистров SPI установленные HAL_ом и с значениями установленные CMSIS_ом, все идентично и отправка/прием данных вроде бы правильно, но как я сказал выше иногда зависает иногда вобше бог знает почему и что делает.
@VladimirMedintsev4 жыл бұрын
Не всегда зависания и прочие артефакты возникают по вине программного обеспечения микроконтроллера. Иногда это является следствием не качественного подключения различных внешних модулей. Иногда не совпадают частоты и прочее и прочее. Невозможно через интернет определить что у вас не так с конкретной железкой. С другой стороны если с использованием библиотеки HAL у вас все работает, а с кодом на CMSIS все сбоит я думаю косяки в коде. Что касается что лучше а что хуже... Лучше то, что работает без ошибок. По сути была взята библиотека CMSIS и обернута в абстракцию HAL. Т.к. внутри себя (если откинуть все проверки и прочее) библиотека HAL содержит CMSIS. kzbin.info/www/bejne/q4WVf6imnqh-ma8
@maskon785 жыл бұрын
А DMA не пробовали прикручивать и потом мерить скорость?
@VladimirMedintsev5 жыл бұрын
От использования DMA скорость не изменяется. DMA снижает загрузку процессора за счет того, что выделенный блок памяти передает в интерфейс автоматично. Я в видео говорил почему не использовал DMA потребовалось бы вдвое увеличить видеопамять из-за 9 битного обмена.
@МитяЯрков-ц1п4 жыл бұрын
Можете подсказать значение DF_PAGE_BITS в функции AT45DB_getPageAddrByte0, а лучше все дефайны Спасибо!
@VladimirMedintsev4 жыл бұрын
нет, это демонстрационный проект которому несколько лет.
@DmitriyMelnik4 жыл бұрын
Отличная работа!
@lesharom24054 жыл бұрын
Здравствуйте Владимир!Очень хорошее видео у вас получилось по этой теме.Извините за длинный пост,не смог выразить короче и так же точно. Скажите,я правильно понял что на всех выводах микросхемы памяти напряжение по SPI не должно превышать 3,6 вольта по даташиту микросхем? Заранее Вам большое спасибо!Прежде чем задать вам вопрос искал информацию сколько же вольт должно быть на CS MOSI MISO линиях.) Прикупил я как то себе китайский программатор на CH341A.Когда пришёл,проверил его на только чтение микросхемы из старой материнки,прошивка считалась,ну я его и положил до момента когда понадобится.И вот такой момент настал,ТВ приставка зависла на одном канале и не переключалась.Я методом исключения проверил пульт,работает,заменил инфракрасный датчик,(благо заведомо исправный с другой приставки был) не помогло. Ну естественно остался самый логичный вариант,прошивка(микросхема 25 серии).Установил я её на программатор,попытался считать,не считалось ничего.Попробовал стереть,стирание было долгим но прошло,попытался прошить,не вышло.Чип после этого вообще не стал определяться. Притом чип с той самой материнки при установке снова прочитался.Я грешил на флешку с приставки.Но потом решил померять напряжения на линиях программатора и там оказалось на CS MISO MOSI CLK линиях,везде по 4,8 вольта.И стало быть мне "повезло" и мне попался брак...(
@stalkerk7505 жыл бұрын
А можно этот код организовать на stm32f103? На нем spi 8-16 битный режим.
@VladimirMedintsev5 жыл бұрын
Конечно можно.
@stalkerk7505 жыл бұрын
@@VladimirMedintsev Не получилось, на stm32f103c8t6 аппаратно не поддерживает 9-битный режим SPI. (
@VladimirMedintsev5 жыл бұрын
Ну сделайте эмуляцию какие проблемы. Там всего-то несколько строчек кода. Более того, код для этой самой эмуляции даже показан в видеоролике.
@stalkerk7505 жыл бұрын
@@VladimirMedintsev Эмуляцию я сделал, она работает очень даже хорошо, но скорость обновления экрана страдает. А можно, сделать программно-аппаратный SPI на STM32? Сначала ножками передать один бит команды, а потом 8 бит данных аппаратно?
@VladimirMedintsev5 жыл бұрын
Пробуйте все от вас зависит. Вообще просто надо выбирать нормальный процессор. Нормальный это в моем понимании не из серии F1. Просто к этой серии у меня не любовь.
@ДмитроПерший5 жыл бұрын
Спасибо. Давно ждал это видео. Как то написал комент под другим видеороликом по поводу подключения ILI9341 к плате Discovery 4. Были проблемы и артефакты. Я не учёл, что интерфейс SPI в ILI9341 является 9-ти битным. А я отправлял с Discovery 4 по SPI 8-ми битный массив данных 16-битных цветов 8+8 бит. И таким образом происходила потеря старших битов во втором байте. Т.е., что бы передать данные 16-ти битного цвета для точки, мне нужно передать в два раза больше данных? На примере закраски точки белым цветом: uint8_t SPI_Data [4] = {0x00, 0xFF, 0x00, 0xFF}; Я правильно понял? В инете полно примеров по передаче данных на этот дисплей по параллельной 8-ми битной шине. По SPI только базовые примеры, которые описывают рисование геометрических фигур и закраска одним цветом. Кстати, это всё у меня получилось повторить. Но как только начал ваять свой проект, так и не смог разобраться.. Ещё раз спасибо за видео по СТМ32 и особенно автомобильную электронику.
@МихаилТиунов-с7д Жыл бұрын
Наблюдаю странное поведение SPI микроконтроллера STM32F103C8T6. Логического анализатора и осциллографа под рукой нет - поэтому по косвенным признакам. У меня в устройстве есть АЦП - ADS1220, которое, с нужной мне периодичностью, измеряет напряжение. Оно расположено за гальванической развязкой с общается с микроконтроллером через ISO7242. Так вот, сделав несколько десятков измерений, АЦП перестает запускаться (DRDY перестает дергаться). После перезагрузки микроконтроллера - опять всё работает нормально. Причем - перезагрузку делаю программно. С АЦП в этот вообще момент ничего не происходит т.к. , повторяю - она находится за гальванической развязкой и имеет собственное питание. Делаю вывод что "вешается" SPI микроконтроллера. Может ли такое быть ?
@VladimirMedintsev Жыл бұрын
Систо теоретически может быть все что угодно. Что делать? Попробовать не перезагружать МК, а передернуть SPI. Отключив/включив тактирование, переинициализировав, проверив флаги. Ну и прочитать errata
@BarVados Жыл бұрын
Здравствуйте! Спасибо за видео. Подскажите пожалуйста есть в hal метод HAL_TransmitReceive чем он отличается от отдельно вызванных transmit receive? Я его использую для чтения регистров ethernet адаптера w5500 . Результаты отличаются от отдельно вызванных методов, исходный код смотрел не понятно почему это написано так, как это работает... Можно ли его заменить коротким методом работающим непосредственно с регистрами stm32, и как будет выглядит этот код? Для лучшего понимания хотелось бы разобраться с этими моментами
@КинобийОбиван5 жыл бұрын
+
@СергейМоскалёв-с3ь Жыл бұрын
Ох, уж эта иностранщина! Неужели нельзя по-русски было обозначить: Ведущий Вход Ведомый Выход, и для MOSI соответственно: Ведущий Выход Ведомый Вход? 🤦♂
@VladimirMedintsev Жыл бұрын
Нет, нельзя. Это не иностранщина. Инженер обязан знать английский.