У меня есть устройство (счетчик энергии), которое отправляет данные по RS-485 (протокол Modbus). И я хочу собрать его с MCU. Важно то, что я пытаюсь спроектировать доску и хочу, чтобы она была масштабируемой. Это означает, что у меня может быть подключено 1 устройство или, может быть, 2 или 3 устройства (с разными идентификаторами ведомых устройств). У меня есть следующие вопросы:
Заранее спасибо!
Да, очевидно, вам нужен UART. Ваш водитель тоже выглядит нормально. Достаточно одного UART. Не пытайтесь создать свой проект, если вы не знакомы с такими терминами, как шинная система, RS485, физический уровень, UART, RS232, полудуплекс, топология Master-Slave, арбитраж шины. Благодаря этому вы поймете, что такое шинная система и как работают несколько устройств на одной линии. Хорошей отправной точкой являются заметки по применению от некоторых поставщиков rs485 и учебные пособия, например этот .
Лично я использовал ST3485, у которого есть примечания по применению, объясняющие некоторые основные вещи здесь , но вы можете найти ту же информацию и у всех других поставщиков.
Для расшифровки прошивки и протокола существует множество библиотек. Прежде всего, вы должны знать, хотите ли вы создать ведущее или ведомое устройство. Для всего вышеперечисленного: Google — ваш друг. Но чтобы гугл находил нужные вещи, нужно знать терминологию (что искать)!
Возможно, вы захотите рассмотреть аппаратное обеспечение на ранней стадии, если это MODBUS-RTU. Протокол MODBUS-RTU имеет 3-1/2-символьное условие MARK для обозначения START/END, которое может не поддерживаться обычным UART.
В MODBUS ASCII такой проблемы нет — в качестве разделителей используются символы двоеточия и CR/LF. Конечно, недостаток в том, что это намного медленнее.
Тут