У меня есть микроконтроллер, который должен общаться по кабелю, который будет прибл. 5 м в длину, с еще одним очень маленьким микроконтроллером. Устройства будут использоваться на открытом воздухе в различных условиях. Скорость передачи данных будет не очень высокой. Когда вы подключаете малый UC кабелем к большому UC, строка идентификации и периодические (каждую минуту) обновления батареи отправляются с маленького UC.
Думал про I2C но не уверен, что он рассчитан на такие нужды? CAN также возможен, но я думаю, что это немного избыточно для моих нужд. У кого-нибудь есть хорошие идеи?
РЕДАКТИРОВАТЬ: я хочу использовать как можно меньше контактов для кабеля.
Хотя CAN может быть немного «излишним», всегда предпочтительнее, если у вас есть этот вариант. Краткое сравнение CAN и RS232/RS422/RS485:
Преимущества CAN:
Недостатки CAN:
Стоимость приемопередатчиков CAN по сравнению с приемопередатчиками RS-xxx должна быть примерно одинаковой (за исключением случаев, когда вы выбираете старые дрянные приемопередатчики, такие как MAX232, которым нужны развязывающие конденсаторы 5x 1 мкФ). Уровни напряжения сигнала не имеют значения, есть приемопередатчики CAN и RS-xxx как для 3,3 В, так и для 5 В.
Количество проводов для полудуплексной системы в любом случае будет равно 3. В случае CAN у вас есть CAN H, CAN L и сигнальная земля. В случае, например, RS-422 у вас есть T+, T- и сигнальная земля. Пропускать сигнальную землю действительно не рекомендуется ни в одном случае, не слушайте людей, говорящих вам иначе.
Я также буду голосовать за RS232, вы должны быть осторожны с одной вещью, о которой никто не упомянул. Вы не говорите, какие микроконтроллеры вы используете, но для большинства из тех, что я использовал, верно следующее...
Ваш микроконтроллер будет иметь как минимум одну линию передачи данных (TX) и как минимум одну линию приема данных (RX). Эти линии будут переключаться между низким и высоким уровнем при передаче/приеме между уровнями напряжения 0 В и ~ 5 В или 0 В и 3,3 В в зависимости от устройства. Если предположить, что оба микроконтроллера используют одинаковые уровни напряжения, то, в принципе, вы можете просто подключить TX от одного микроконтроллера к RX другого и наоборот. Это работает для коротких расстояний и низких скоростей передачи данных, но я думаю, что 5 м слишком длинны для этого, и я также думаю, что это плохая практика между системами.
Лучше использовать преобразователь уровня (например, семейство MAX232 для систем 0–5 В или MAX3232 для систем 0–3 В) на каждом конце. Они преобразуют логический 0 в ~+12 В, а логическую 1 в ~-12 В, чтобы ваша линия связи электрически соответствовала стандарту RS232.
Надеюсь это поможет,
Джо
Игнорируя вопрос о лучших альтернативах (я не очень рекомендую это, но это может сработать), я успешно запускал I2C на большие расстояния (между зданиями) в производстве, и это работало годами.
См. раздел 19 «Взаимная блокировка шины I2C» на странице http://www.i2cchip.com/pdfs/bl233_b.pdf .
Маженко
перотом
Синхрондин
Ник Алексеев
Синхрондин
Робхерк KV5ROB
перотом
придурок
Прохожий
Прохожий
перотом
придурок
перотом
придурок
перотом
придурок
придурок
перотом
придурок