Добрый день. Вопрос чуток не в тему, но похож, т.к. функции очень похожи. Суть в чём: я пытаюсь "подружить" отладочную плату F4 Discovery с дисплеем 320x240 на чипе ILI9341 по шине SPI. Создал проект в Кубе. Использую открытую библиотеку для работы с данным дисплеем, которая выложена га Гитхабе. Обычные функции - закраска прямоугольников, рисование линий, заполнение экрана и т.д. В библиотеке используется стандартная функция передачи по шине HAL_SPI_Transmit (). Так вот, пока я использую функции из библиотеки, все примеры работают. Но все эти примеры "одноцветные". Т.е. те или иные геометрические фигуры закрашиваются одним цветом. Но стоит мне попробовать передать массив цветов для каждого пикселя в определённой прямоугольной области (по сути это передача картинки), экран - глючит. Появляются артефакты в виде скошенных разноцветных тонких полос на светлом фоне и картинки нет. У меня закралась мысль на счёт того, что может я таймаут выставляю в функции маленький. Как его вообще определять? На "глазок" или есть механизм расчёта? В описании функции в HALе об этом умалчивают. П.С.: Массив цветов создавал с помощью программы LCD Image Converter. Но для эксперимента, я в данном массиве заменял значения на один цвет. Думал, может программа не верно создаёт массив с неправильными значениями цветов. Всё равно это не помогает. Иногда, когда я создавал очень маленькую прямоугольную область (16х16 пикселей) и закрашивал одним цветом, у меня получалось. Но стоит создать прямоугольник размером 64х32 пикселя и более, глючит. И не важно, закрашиваешь ты его одним цветом или массивом цветов, что бы отобразить картинку. Как вариант, хочу откатиться на Atmega328 и попробовать там. С 8 --ми битными чипами у меня опыта больше. Или, как вариант, попробовать "опустится" на более низкий уровень написания кода и использовать CMSIS для передачи по SPI. Что посоветуете?
@VladimirMedintsev5 жыл бұрын
Скошенное изображение идущее наискосок это не из-за времени. Скорее всего вы передаете или на байт больше или меньше необходимого во вновь создаваемых функциях. Еще раз очень внимательно все циклы просмотрите. У меня просто очень похожее было разок я таблицу цветов неверно передавал.
@ДмитроПерший5 жыл бұрын
@@VladimirMedintsev Ок. Спасибо. Попробую.
@maskon786 жыл бұрын
Прошлый раз про SWO вы так и не ответили. :( Я не вижу, что именно вы пишете в Keil'e для работы SWO.
@VladimirMedintsev6 жыл бұрын
Понял, спасибо, сделаю короткий ролик и подробно покажу.
@maskon786 жыл бұрын
@@VladimirMedintsev Вот спасибочки!
@maskon786 жыл бұрын
Да, и по железу вопрос возник. Где-то увидел фразу, что swo надо подтягивать к плюсу через резистор 10к. Оно правда надо?
@VladimirMedintsev6 жыл бұрын
Да, к сожалению без этого не работает. У меня подтянуто в программаторе. Ибо постоянно забываю это делать на платах. Хоть памятку на стену вешай.
@DIY_PLC2 жыл бұрын
Не могу найти работу с юарт по прерыванимям при пакетах с переменной длинной.
@zhdanvadim95362 жыл бұрын
на гитхабе видел репозиторий в котором залиты все варианты работы с юартом, попробуйте найти поиском
@oberwerewolf6 жыл бұрын
А линии CTS И RTS задействованы? Почему размер массива ограничен 64 байтами? Это размер буфера USART в STM32? В моем понимании если GSM модуль установит CTS в "1" это буде говорить о том, что последний байт о него ушел, и то что следующих ждать не надо и можно остановить заполнение массива.
@VladimirMedintsev6 жыл бұрын
На схеме линии CTS и RTS разумеется подключены. Но в настройках UART стоит UART_HWCONTROL_NONE т.е. программно они не задействованы. Мне не хотелось в простом видео про UART залезать в дебри и сложности. Контроль передачи это тема для продвинутого видео. Размер в 64 байта - так захотелось. Никаких видимых и скрытых причин именно такого размера массива нету.
@aleksandrekalandadze88365 жыл бұрын
@@VladimirMedintsev а как в Кейле понять, что GSM модуль установил CTS в "1"? т.е. я могу отправить команду и ждать пока модуль установит CTS в 1 и уже потом читать данные из буфера?
@andrei11466 жыл бұрын
Добрый день! Спасибо за Ваши видео! Подскажите, пожалуйста, какой у данного устройства рабочий диапазон температур?
@VladimirMedintsev6 жыл бұрын
Если вы спрашиваете о рабочем диапазоне GSM модуля M66, то производитель гарантирует от -40 до 80 градусов. Если спрашиваете про контроллер, показанный в данном видео, то мы испытывали его в диапазоне от -25 и до 65 градусов. Ниже думаю можно, а вот выше начнутся проблемы с отведением тепла. Ну разумеется это все без выпадения росы.
@andrei11466 жыл бұрын
@@VladimirMedintsev Я спрашивал о устройстве в целом, в котором его части общаются по UART с тактированием от RC-генератора, точность которого, если я не ошибаюсь, около 5% в рабочем диапазоне температур.
@VladimirMedintsev6 жыл бұрын
А, вот вы о чем... Если верить datasheet (раздел 6.3.8), то производитель процессора пишет, что в температурном диапазоне 0 до 85 градусов точность RC цепочки составляет от -1.9% до 2% это максимальные значения, а в диапазоне от -40 до 105 градусов от -2.8% и до 3.8% это очень даже небольшие отклонения. UART их даже не заметит. Так что в этом месте подвоха не будет. Тем более что UART в STM32 весьма продвинутый и может автоматично подстраиваться по частоте. Более подробно читать тут AN4908 STM32 USART automatic baud rate detection.
@andrei11466 жыл бұрын
@@VladimirMedintsev А Вы разве настраивали ABR в этом видео? И на сколько я понял из этого AN, речь идет об автоматическом определении скорости передачи при инициализации, а не о борьбе с плавающей частотой генератора в процессе работы. Кроме того, эта функция относится к приему, а мы не знаем, как отнесется приемник (GSM-модуль) к нашему юарту с плавающей частотой передачи. И на мой вкус запас по стабильности частоты маловат получается в рабочем диапазоне температур. Да и не стоит забывать, что у модуля тоже частота может плавать, и не обязательно в ту же сторону, что у нашего RC-генератора...
@VladimirMedintsev6 жыл бұрын
Признаться я даже не знаю что вам на это ответить... 1. Вот решил я снять видео про UART, надо же его показать в работе. Показанный в видео модуль был взят только ради примера. Пример это не настоящий код. Он дает право на некоторые упрощения не относящиеся к теме видео. А тема - UART. 2. Если просмотреть видео про компоновку, где я показывал платы модуля более подробно можно на процессорной плате рассмотреть место под кварцы и под процессорный и под кварц RTC. 3. Как показывает практика кварц там не нужен, модуль был подвергнут температурным тестам и показал свою стабильность. 4. Модуль успешно продается и с весны 2018 года стоит у нескольких крупных заказчиках и сбоев не зафиксировано. Что доказывает, что наши расчеты оказались верными. 5. Если просмотреть код, то куб по умолчанию поставил туда строчку huart1.Init.OverSampling = UART_OVERSAMPLING_16; строка находится в uart.c 6. Разумеется см пункт 1 в боевом модуле, отправляющемся потребителям мало того, что настроена куча приятных штучек, так еще и код полностью отличается от приведенного в примере, и работа с uart в частности. Ваш изначальный вопрос про устройство в целом там все работает и отклонения заявленные производителем я вам показал.
@irbiit49105 жыл бұрын
а вы не могли бы уточнить как именно работают резисторы на линиях rx, tx usart. Не понял как они согласуют уровни. Можно ли в качестве альтернативы использовать схему согласования уровней на полевых транзисторах. Возможно ли также, как альтернатива, использование, к примеру, TXS0108E или аналогов
@VladimirMedintsev5 жыл бұрын
Можно использовать любое решение, вопрос только в цене. Здесь собран обычный делитель напряжения построенный на резисторах. Все остальные решения более дорогие.
@irbiit49105 жыл бұрын
А почему на схеме только один резистор R10, подключённый к линии TX. Резистор на линию RX не нужен?
@VladimirMedintsev5 жыл бұрын
Нет не нужен. Есть ролик kzbin.info/www/bejne/iZTWimNuj7WHbZo в котором я показывал что по этому поводу сказано в даташите на модуль. Но я честно говоря не совсем понимаю что вас смущает.
@irbiit49105 жыл бұрын
Спасибо за ответ. Ничто не смущает, я просто этого не знал, поэтому и спрашивал.
@VladimirMedintsev5 жыл бұрын
Не обращайте внимания, это не единственное чего я сегодня не догнал, погода...
@AdamFullowsky4 жыл бұрын
Здравствуйте, в одном из видео вы говорили, что собираетесь собирать дозиметр. Я тоже хотел бы перенести свой проект дозиметра на stm. В прошлой версии у меня была проблема с помехами из за использования dc-dc с управлением от мк. Скажите где можно для подобных нужд купить трансформатор(желательно smd), и какой способ управления трансформатором лучше, с контроллера или использовать специальную микросхему?
@VladimirMedintsev4 жыл бұрын
Я ни в одном из видео не говорил что собираюсь делать дозиметр. С другой стороны если бы это было так, то я не вижу в схеме дозиметра потребности получать какой-либо сигнал с микроконтроллера. Я бы использовал SN6501 или аналогичную микросхему помощнее. Видео было на канале.
@vad7416 жыл бұрын
Работает ли printf если отладчик подключен через обычный JTAG, а не SWD?
@VladimirMedintsev6 жыл бұрын
Не работает. У JTAG немного другое назначение.
@vad7416 жыл бұрын
Сейчас работаем по JTAG, и используем Keil. С SWD не работали. Какие минусы и ограничения есть при SWD? Стоит ли переходить в отладке на SWD? Привлекает меньший разъём и printf.
@VladimirMedintsev6 жыл бұрын
Ну собственно вопрос не ко мне, а к вам. Какого черта вы вообще использовали JTAG и почему вы пользуете большой разъем, а не создали собственную систему разъемов и подключений. Этакий собственный корпоративный стандарт. Ну а если серьезно, то возьмите любой процессор, прямо на ноги напаяйте ему SWD, подайте питание и попробуйте. Отладка, перенаправление ввода-вывода, логирование событий и системный монитор - работают. Кто вас знает может вы еще что-то используете. Но если серьезно то я сниму через денек видео про это дело, там и посмотрите надо ли оно вам.
@MrRuroffg4 жыл бұрын
Владимир, добрый день. А почему вы все же остались на кейле, хотя намеревались перейти на cube ide?
@VladimirMedintsev4 жыл бұрын
Видимо в каком-то месте случилось недопонимание. Вы поместили свой вопрос под роликом более чем годовой давности. Во время сьемки этого ролика CubeIDE не существовало. Ну а если серьезно то мы перевели коммерческие проекты.
@MrRuroffg4 жыл бұрын
Прошу прощерия, я очень не внимательный.
@kurtsvl5 жыл бұрын
этот модуль поддерживает технологию OPENCPU ему внешний контроллер вообще не нужен
@VladimirMedintsev5 жыл бұрын
Видео про UART для контроллеров STM32
@udelka4 жыл бұрын
Добрый день. Прошу помощи. Есть пример проекта kzbin.info/www/bejne/iGOUeIR4ba6Gia8 в coocox управление модулем dfplayer. Все работает. Но я учусь работать в cubeide. Уже сделал проект. И хотел его озвучить с помощью модуля dfplayer. Пытался переделать проект из coocox в cubeide и возник затык. В обработчике прерывания есть строка if ((USART3->SR & USART_FLAG_RXNE) != (u16)RESET). Как ее переделать с помощью библиотеки HAL?
@VladimirMedintsev4 жыл бұрын
Это работа с регистрами, ничего здесь переделывать не надо. Оно и так должно работать.
@udelka4 жыл бұрын
@@VladimirMedintsevТак cubeide ругается на этот формат команды USART3->SR & USART_FLAG_RXNE