Если вы спрашиваете о рабочем диапазоне GSM модуля M66, то производитель гарантирует от -40 до 80 градусов. Если спрашиваете про контроллер, показанный в данном видео, то мы испытывали его в диапазоне от -25 и до 65 градусов. Ниже думаю можно, а вот выше начнутся проблемы с отведением тепла. Ну разумеется это все без выпадения росы.
@@VladimirMedintsev Я спрашивал о устройстве в целом, в котором его части общаются по UART с тактированием от RC-генератора, точность которого, если я не ошибаюсь, около 5% в рабочем диапазоне температур.
А, вот вы о чем... Если верить 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.
@@VladimirMedintsev А Вы разве настраивали ABR в этом видео? И на сколько я понял из этого AN, речь идет об автоматическом определении скорости передачи при инициализации, а не о борьбе с плавающей частотой генератора в процессе работы. Кроме того, эта функция относится к приему, а мы не знаем, как отнесется приемник (GSM-модуль) к нашему юарту с плавающей частотой передачи. И на мой вкус запас по стабильности частоты маловат получается в рабочем диапазоне температур. Да и не стоит забывать, что у модуля тоже частота может плавать, и не обязательно в ту же сторону, что у нашего RC-генератора...
Признаться я даже не знаю что вам на это ответить... 1. Вот решил я снять видео про UART, надо же его показать в работе. Показанный в видео модуль был взят только ради примера. Пример это не настоящий код. Он дает право на некоторые упрощения не относящиеся к теме видео. А тема - UART. 2. Если просмотреть видео про компоновку, где я показывал платы модуля более подробно можно на процессорной плате рассмотреть место под кварцы и под процессорный и под кварц RTC. 3. Как показывает практика кварц там не нужен, модуль был подвергнут температурным тестам и показал свою стабильность. 4. Модуль успешно продается и с весны 2018 года стоит у нескольких крупных заказчиках и сбоев не зафиксировано. Что доказывает, что наши расчеты оказались верными. 5. Если просмотреть код, то куб по умолчанию поставил туда строчку huart1.Init.OverSampling = UART_OVERSAMPLING_16; строка находится в uart.c 6. Разумеется см пункт 1 в боевом модуле, отправляющемся потребителям мало того, что настроена куча приятных штучек, так еще и код полностью отличается от приведенного в примере, и работа с uart в частности. Ваш изначальный вопрос про устройство в целом там все работает и отклонения заявленные производителем я вам показал.
Добрый день. Вопрос чуток не в тему, но похож, т.к. функции очень похожи. Суть в чём: я пытаюсь "подружить" отладочную плату F4 Discovery с дисплеем 320x240 на чипе ILI9341 по шине SPI. Создал проект в Кубе. Использую открытую библиотеку для работы с данным дисплеем, которая выложена га Гитхабе. Обычные функции - закраска прямоугольников, рисование линий, заполнение экрана и т.д. В библиотеке используется стандартная функция передачи по шине HAL_SPI_Transmit (). Так вот, пока я использую функции из библиотеки, все примеры работают. Но все эти примеры "одноцветные". Т.е. те или иные геометрические фигуры закрашиваются одним цветом. Но стоит мне попробовать передать массив цветов для каждого пикселя в определённой прямоугольной области (по сути это передача картинки), экран - глючит. Появляются артефакты в виде скошенных разноцветных тонких полос на светлом фоне и картинки нет. У меня закралась мысль на счёт того, что может я таймаут выставляю в функции маленький. Как его вообще определять? На "глазок" или есть механизм расчёта? В описании функции в HALе об этом умалчивают. П.С.: Массив цветов создавал с помощью программы LCD Image Converter. Но для эксперимента, я в данном массиве заменял значения на один цвет. Думал, может программа не верно создаёт массив с неправильными значениями цветов. Всё равно это не помогает. Иногда, когда я создавал очень маленькую прямоугольную область (16х16 пикселей) и закрашивал одним цветом, у меня получалось. Но стоит создать прямоугольник размером 64х32 пикселя и более, глючит. И не важно, закрашиваешь ты его одним цветом или массивом цветов, что бы отобразить картинку. Как вариант, хочу откатиться на Atmega328 и попробовать там. С 8 --ми битными чипами у меня опыта больше. Или, как вариант, попробовать "опустится" на более низкий уровень написания кода и использовать CMSIS для передачи по SPI. Что посоветуете?
Скошенное изображение идущее наискосок это не из-за времени. Скорее всего вы передаете или на байт больше или меньше необходимого во вновь создаваемых функциях. Еще раз очень внимательно все циклы просмотрите. У меня просто очень похожее было разок я таблицу цветов неверно передавал.
Здравствуйте, в одном из видео вы говорили, что собираетесь собирать дозиметр. Я тоже хотел бы перенести свой проект дозиметра на stm. В прошлой версии у меня была проблема с помехами из за использования dc-dc с управлением от мк. Скажите где можно для подобных нужд купить трансформатор(желательно smd), и какой способ управления трансформатором лучше, с контроллера или использовать специальную микросхему?
Я ни в одном из видео не говорил что собираюсь делать дозиметр. С другой стороны если бы это было так, то я не вижу в схеме дозиметра потребности получать какой-либо сигнал с микроконтроллера. Я бы использовал SN6501 или аналогичную микросхему помощнее. Видео было на канале.
А линии CTS И RTS задействованы? Почему размер массива ограничен 64 байтами? Это размер буфера USART в STM32? В моем понимании если GSM модуль установит CTS в "1" это буде говорить о том, что последний байт о него ушел, и то что следующих ждать не надо и можно остановить заполнение массива.
На схеме линии CTS и RTS разумеется подключены. Но в настройках UART стоит UART_HWCONTROL_NONE т.е. программно они не задействованы. Мне не хотелось в простом видео про UART залезать в дебри и сложности. Контроль передачи это тема для продвинутого видео. Размер в 64 байта - так захотелось. Никаких видимых и скрытых причин именно такого размера массива нету.
@@VladimirMedintsev а как в Кейле понять, что GSM модуль установил CTS в "1"? т.е. я могу отправить команду и ждать пока модуль установит CTS в 1 и уже потом читать данные из буфера?
а вы не могли бы уточнить как именно работают резисторы на линиях rx, tx usart. Не понял как они согласуют уровни. Можно ли в качестве альтернативы использовать схему согласования уровней на полевых транзисторах. Возможно ли также, как альтернатива, использование, к примеру, TXS0108E или аналогов
Можно использовать любое решение, вопрос только в цене. Здесь собран обычный делитель напряжения построенный на резисторах. Все остальные решения более дорогие.
Нет не нужен. Есть ролик ua-cam.com/video/ScsY08ZPT78/v-deo.html в котором я показывал что по этому поводу сказано в даташите на модуль. Но я честно говоря не совсем понимаю что вас смущает.
Видимо в каком-то месте случилось недопонимание. Вы поместили свой вопрос под роликом более чем годовой давности. Во время сьемки этого ролика CubeIDE не существовало. Ну а если серьезно то мы перевели коммерческие проекты.
Сейчас работаем по JTAG, и используем Keil. С SWD не работали. Какие минусы и ограничения есть при SWD? Стоит ли переходить в отладке на SWD? Привлекает меньший разъём и printf.
Ну собственно вопрос не ко мне, а к вам. Какого черта вы вообще использовали JTAG и почему вы пользуете большой разъем, а не создали собственную систему разъемов и подключений. Этакий собственный корпоративный стандарт. Ну а если серьезно, то возьмите любой процессор, прямо на ноги напаяйте ему SWD, подайте питание и попробуйте. Отладка, перенаправление ввода-вывода, логирование событий и системный монитор - работают. Кто вас знает может вы еще что-то используете. Но если серьезно то я сниму через денек видео про это дело, там и посмотрите надо ли оно вам.
Добрый день. Прошу помощи. Есть пример проекта ua-cam.com/video/R21GQB8ISSM/v-deo.html в coocox управление модулем dfplayer. Все работает. Но я учусь работать в cubeide. Уже сделал проект. И хотел его озвучить с помощью модуля dfplayer. Пытался переделать проект из coocox в cubeide и возник затык. В обработчике прерывания есть строка if ((USART3->SR & USART_FLAG_RXNE) != (u16)RESET). Как ее переделать с помощью библиотеки HAL?
Спасибо! Отличный урок.
Спасибо большое за видео!
Вам большое спасибо! Очень просто и понятно)
Добрый день! Спасибо за Ваши видео! Подскажите, пожалуйста, какой у данного устройства рабочий диапазон температур?
Если вы спрашиваете о рабочем диапазоне GSM модуля M66, то производитель гарантирует от -40 до 80 градусов.
Если спрашиваете про контроллер, показанный в данном видео, то мы испытывали его в диапазоне от -25 и до 65 градусов. Ниже думаю можно, а вот выше начнутся проблемы с отведением тепла. Ну разумеется это все без выпадения росы.
@@VladimirMedintsev Я спрашивал о устройстве в целом, в котором его части общаются по UART с тактированием от RC-генератора, точность которого, если я не ошибаюсь, около 5% в рабочем диапазоне температур.
А, вот вы о чем... Если верить 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.
@@VladimirMedintsev А Вы разве настраивали ABR в этом видео? И на сколько я понял из этого AN, речь идет об автоматическом определении скорости передачи при инициализации, а не о борьбе с плавающей частотой генератора в процессе работы. Кроме того, эта функция относится к приему, а мы не знаем, как отнесется приемник (GSM-модуль) к нашему юарту с плавающей частотой передачи. И на мой вкус запас по стабильности частоты маловат получается в рабочем диапазоне температур. Да и не стоит забывать, что у модуля тоже частота может плавать, и не обязательно в ту же сторону, что у нашего RC-генератора...
Признаться я даже не знаю что вам на это ответить...
1. Вот решил я снять видео про UART, надо же его показать в работе. Показанный в видео модуль был взят только ради примера. Пример это не настоящий код. Он дает право на некоторые упрощения не относящиеся к теме видео. А тема - UART.
2. Если просмотреть видео про компоновку, где я показывал платы модуля более подробно можно на процессорной плате рассмотреть место под кварцы и под процессорный и под кварц RTC.
3. Как показывает практика кварц там не нужен, модуль был подвергнут температурным тестам и показал свою стабильность.
4. Модуль успешно продается и с весны 2018 года стоит у нескольких крупных заказчиках и сбоев не зафиксировано. Что доказывает, что наши расчеты оказались верными.
5. Если просмотреть код, то куб по умолчанию поставил туда строчку huart1.Init.OverSampling = UART_OVERSAMPLING_16; строка находится в uart.c
6. Разумеется см пункт 1 в боевом модуле, отправляющемся потребителям мало того, что настроена куча приятных штучек, так еще и код полностью отличается от приведенного в примере, и работа с uart в частности.
Ваш изначальный вопрос про устройство в целом там все работает и отклонения заявленные производителем я вам показал.
Добрый день. Вопрос чуток не в тему, но похож, т.к. функции очень похожи. Суть в чём: я пытаюсь "подружить" отладочную плату F4 Discovery с дисплеем 320x240 на чипе ILI9341 по шине SPI. Создал проект в Кубе. Использую открытую библиотеку для работы с данным дисплеем, которая выложена га Гитхабе. Обычные функции - закраска прямоугольников, рисование линий, заполнение экрана и т.д. В библиотеке используется стандартная функция передачи по шине HAL_SPI_Transmit (). Так вот, пока я использую функции из библиотеки, все примеры работают. Но все эти примеры "одноцветные". Т.е. те или иные геометрические фигуры закрашиваются одним цветом. Но стоит мне попробовать передать массив цветов для каждого пикселя в определённой прямоугольной области (по сути это передача картинки), экран - глючит. Появляются артефакты в виде скошенных разноцветных тонких полос на светлом фоне и картинки нет. У меня закралась мысль на счёт того, что может я таймаут выставляю в функции маленький. Как его вообще определять? На "глазок" или есть механизм расчёта? В описании функции в HALе об этом умалчивают.
П.С.: Массив цветов создавал с помощью программы LCD Image Converter. Но для эксперимента, я в данном массиве заменял значения на один цвет. Думал, может программа не верно создаёт массив с неправильными значениями цветов. Всё равно это не помогает. Иногда, когда я создавал очень маленькую прямоугольную область (16х16 пикселей) и закрашивал одним цветом, у меня получалось. Но стоит создать прямоугольник размером 64х32 пикселя и более, глючит. И не важно, закрашиваешь ты его одним цветом или массивом цветов, что бы отобразить картинку. Как вариант, хочу откатиться на Atmega328 и попробовать там. С 8 --ми битными чипами у меня опыта больше. Или, как вариант, попробовать "опустится" на более низкий уровень написания кода и использовать CMSIS для передачи по SPI. Что посоветуете?
Скошенное изображение идущее наискосок это не из-за времени. Скорее всего вы передаете или на байт больше или меньше необходимого во вновь создаваемых функциях. Еще раз очень внимательно все циклы просмотрите. У меня просто очень похожее было разок я таблицу цветов неверно передавал.
@@VladimirMedintsev Ок. Спасибо. Попробую.
Здравствуйте, в одном из видео вы говорили, что собираетесь собирать дозиметр. Я тоже хотел бы перенести свой проект дозиметра на stm. В прошлой версии у меня была проблема с помехами из за использования dc-dc с управлением от мк. Скажите где можно для подобных нужд купить трансформатор(желательно smd), и какой способ управления трансформатором лучше, с контроллера или использовать специальную микросхему?
Я ни в одном из видео не говорил что собираюсь делать дозиметр. С другой стороны если бы это было так, то я не вижу в схеме дозиметра потребности получать какой-либо сигнал с микроконтроллера. Я бы использовал SN6501 или аналогичную микросхему помощнее. Видео было на канале.
Прошлый раз про SWO вы так и не ответили. :(
Я не вижу, что именно вы пишете в Keil'e для работы SWO.
Понял, спасибо, сделаю короткий ролик и подробно покажу.
@@VladimirMedintsev Вот спасибочки!
Да, и по железу вопрос возник. Где-то увидел фразу, что swo надо подтягивать к плюсу через резистор 10к. Оно правда надо?
Да, к сожалению без этого не работает. У меня подтянуто в программаторе. Ибо постоянно забываю это делать на платах. Хоть памятку на стену вешай.
А линии CTS И RTS задействованы? Почему размер массива ограничен 64 байтами? Это размер буфера USART в STM32? В моем понимании если GSM модуль установит CTS в "1" это буде говорить о том, что последний байт о него ушел, и то что следующих ждать не надо и можно остановить заполнение массива.
На схеме линии CTS и RTS разумеется подключены. Но в настройках UART стоит UART_HWCONTROL_NONE т.е. программно они не задействованы. Мне не хотелось в простом видео про UART залезать в дебри и сложности.
Контроль передачи это тема для продвинутого видео.
Размер в 64 байта - так захотелось. Никаких видимых и скрытых причин именно такого размера массива нету.
@@VladimirMedintsev а как в Кейле понять, что GSM модуль установил CTS в "1"? т.е. я могу отправить команду и ждать пока модуль установит CTS в 1 и уже потом читать данные из буфера?
а вы не могли бы уточнить как именно работают резисторы на линиях rx, tx usart. Не понял как они согласуют уровни. Можно ли в качестве альтернативы использовать схему согласования уровней на полевых транзисторах. Возможно ли также, как альтернатива, использование, к примеру, TXS0108E или аналогов
Можно использовать любое решение, вопрос только в цене.
Здесь собран обычный делитель напряжения построенный на резисторах.
Все остальные решения более дорогие.
А почему на схеме только один резистор R10, подключённый к линии TX. Резистор на линию RX не нужен?
Нет не нужен.
Есть ролик ua-cam.com/video/ScsY08ZPT78/v-deo.html в котором я показывал что по этому поводу сказано в даташите на модуль. Но я честно говоря не совсем понимаю что вас смущает.
Спасибо за ответ. Ничто не смущает, я просто этого не знал, поэтому и спрашивал.
Не обращайте внимания, это не единственное чего я сегодня не догнал, погода...
Владимир, добрый день. А почему вы все же остались на кейле, хотя намеревались перейти на cube ide?
Видимо в каком-то месте случилось недопонимание. Вы поместили свой вопрос под роликом более чем годовой давности. Во время сьемки этого ролика CubeIDE не существовало. Ну а если серьезно то мы перевели коммерческие проекты.
Прошу прощерия, я очень не внимательный.
Не могу найти работу с юарт по прерыванимям при пакетах с переменной длинной.
на гитхабе видел репозиторий в котором залиты все варианты работы с юартом, попробуйте найти поиском
Работает ли printf если отладчик подключен через обычный JTAG, а не SWD?
Не работает. У JTAG немного другое назначение.
Сейчас работаем по JTAG, и используем Keil. С SWD не работали. Какие минусы и ограничения есть при SWD? Стоит ли переходить в отладке на SWD? Привлекает меньший разъём и printf.
Ну собственно вопрос не ко мне, а к вам.
Какого черта вы вообще использовали JTAG и почему вы пользуете большой разъем, а не создали собственную систему разъемов и подключений. Этакий собственный корпоративный стандарт.
Ну а если серьезно, то возьмите любой процессор, прямо на ноги напаяйте ему SWD, подайте питание и попробуйте. Отладка, перенаправление ввода-вывода, логирование событий и системный монитор - работают. Кто вас знает может вы еще что-то используете. Но если серьезно то я сниму через денек видео про это дело, там и посмотрите надо ли оно вам.
Добрый день. Прошу помощи. Есть пример проекта ua-cam.com/video/R21GQB8ISSM/v-deo.html в coocox управление модулем dfplayer. Все работает. Но я учусь работать в cubeide. Уже сделал проект. И хотел его озвучить с помощью модуля dfplayer. Пытался переделать проект из coocox в cubeide и возник затык. В обработчике прерывания есть строка if ((USART3->SR & USART_FLAG_RXNE) != (u16)RESET). Как ее переделать с помощью библиотеки HAL?
Это работа с регистрами, ничего здесь переделывать не надо. Оно и так должно работать.
@@VladimirMedintsevТак cubeide ругается на этот формат команды USART3->SR & USART_FLAG_RXNE
этот модуль поддерживает технологию OPENCPU ему внешний контроллер вообще не нужен
Видео про UART для контроллеров STM32