Модуль хороший. И идея применения тоже. Правда у PZEM всего несколько ячеек для запроса данных. Т.е. запрос - константа. Расчет CRC нужен лишь в случае проверки целостности принятых данных. И возникает резонный вопрос: а нужен ли он в показометре?
Отправка команд обязательна с контрольной суммой. Иначе он просто не отвечает. И нет команды на отключение. Ну там вообще грустно с командами и данными. ST-шные девайсы вон по 70 регистров значащих содержат. В показометре он не нужен, о чём я и говорил :) Я от него стабилизацию делал и мониторинг основных параметров. Но это такое, сильно начальный уровень. Но с чего-то надо начинать, иба взрослые девайсы мозг выносят навылет просто. А Аналогдевайс вон вообще от нас полностью отгородились информационно.
@@MrCrossRaccoon То, что сделан задел на будущее - хорошо. Здесь Вам честь и хвала. Я один раз с DS18B20 столкнулся, когда она отвалилась при 80 градусах... С тех пор всегда использую CRC сумму. И только в случае, когда кончается память контроллера в готовом устройстве начинаю решать, жертвовать ей или нет.
Привет.Не слышал до этого про PZEM.Но если я правильно понял у тебя тоже косяки случаются с usart на stm32.Вот раньше было на ардуино объявил Serial.begin(115200) и всё работает как часы.Отправляет принимает строки любой длины.С stm32 какие то траблы.Нигде ни у кого не видел толкового примера по приёму строки произвольной длины.Сам пробовал и HAL и LL и как то не нравится мне как оно работает у меня.Пока нашёл единственный выход для более менее надёжной работы это фикированнная длина принимаемого буфера и фиксированная длина отправленной строки
С PZEM проблема не в юарт СТМ, а в типично тупорылом китайском коде :) Вроде взяли за основу модбас, но как прописали это на коленке, так и торгуют девайсами с параличным наброском кода, не внося никаких изменений. В итоге там от модбаса только название. Определённый плюс ардуиновского Serial в том, что там за нас уже все методы уже прописаны до мелочей, а для СТМ нам надо самостоятельно всё писать и парсить буферы самостоятельно. Ну либо дёргать где-то уже готовые решения. Serial., например, сам добьёт твой буфер концом строки и ты даже не в курсе будешь, что реально твой буфер на байт больше и в конце там разделитель. Ну в СТМ ручками добиваем сервисный байт, вот тебе и приём буфера любой длины с проверкой окончания передачи по этому байту. Ну или в начале пакета передаём длину. Принимаем уже в структуру с буфером и длиной этого буфера. Ну или по ситуации. В LL ещё и флаги регистра юарт мониторим постоянно, о чём ардуинщики вообще не в курсе :) Либо скорость и краткость, либо неповоротливая ардуина, что поделать :)
Модуль хороший. И идея применения тоже. Правда у PZEM всего несколько ячеек для запроса данных. Т.е. запрос - константа. Расчет CRC нужен лишь в случае проверки целостности принятых данных. И возникает резонный вопрос: а нужен ли он в показометре?
Отправка команд обязательна с контрольной суммой. Иначе он просто не отвечает. И нет команды на отключение. Ну там вообще грустно с командами и данными. ST-шные девайсы вон по 70 регистров значащих содержат. В показометре он не нужен, о чём я и говорил :) Я от него стабилизацию делал и мониторинг основных параметров. Но это такое, сильно начальный уровень. Но с чего-то надо начинать, иба взрослые девайсы мозг выносят навылет просто. А Аналогдевайс вон вообще от нас полностью отгородились информационно.
@@MrCrossRaccoon То, что сделан задел на будущее - хорошо. Здесь Вам честь и хвала. Я один раз с DS18B20 столкнулся, когда она отвалилась при 80 градусах... С тех пор всегда использую CRC сумму. И только в случае, когда кончается память контроллера в готовом устройстве начинаю решать, жертвовать ей или нет.
Привет.Не слышал до этого про PZEM.Но если я правильно понял у тебя тоже косяки случаются с usart на stm32.Вот раньше было на ардуино объявил Serial.begin(115200) и всё работает как часы.Отправляет принимает строки любой длины.С stm32 какие то траблы.Нигде ни у кого не видел толкового примера по приёму строки произвольной длины.Сам пробовал и HAL и LL и как то не нравится мне как оно работает у меня.Пока нашёл единственный выход для более менее надёжной работы это фикированнная длина принимаемого буфера и фиксированная длина отправленной строки
С PZEM проблема не в юарт СТМ, а в типично тупорылом китайском коде :) Вроде взяли за основу модбас, но как прописали это на коленке, так и торгуют девайсами с параличным наброском кода, не внося никаких изменений. В итоге там от модбаса только название. Определённый плюс ардуиновского Serial в том, что там за нас уже все методы уже прописаны до мелочей, а для СТМ нам надо самостоятельно всё писать и парсить буферы самостоятельно. Ну либо дёргать где-то уже готовые решения. Serial., например, сам добьёт твой буфер концом строки и ты даже не в курсе будешь, что реально твой буфер на байт больше и в конце там разделитель. Ну в СТМ ручками добиваем сервисный байт, вот тебе и приём буфера любой длины с проверкой окончания передачи по этому байту. Ну или в начале пакета передаём длину. Принимаем уже в структуру с буфером и длиной этого буфера. Ну или по ситуации. В LL ещё и флаги регистра юарт мониторим постоянно, о чём ардуинщики вообще не в курсе :) Либо скорость и краткость, либо неповоротливая ардуина, что поделать :)
привет, у меня есть некоторые проблемы с моим uart? не могли бы вы поделиться исходным кодом, пожалуйста?
Hi. Can you share your source. Thank you in advanced