Проблема с пакетом DMX512 (нет разрыва?)

Я не уверен, читаю ли я это неправильно или что-то в этом роде, но это след пакета DMX, который исходит от моего модуля USB-RS485, а затем преобразовывается в логические уровни UART для моего микроконтроллера.

DMX-пакет

Дифференциальный пакет

Есть несколько вещей, которые я считаю неправильными...

  • Я предполагаю, что «разрыв» - это только ширина одного кадра, но по определению стандарта он, скорее всего, будет в два раза больше или больше.

  • «Отметка после перерыва» огромна. Из прицела вы можете видеть, что его ширина составляет около 116 нас, хотя на самом деле должно быть всего 8.

  • Наконец, кажется, что нет «начального кадра». Когда для канала 1 установлено любое значение, он переходит в первый кадр после того, что я предположил, является очень длинным «Отметить после перерыва».

Я что-то упустил или неверно истолковал протокол DMX? Прямо сейчас я использую Freestyler для управления устройством RS485 в качестве передатчика ENTTEC OpenDMX. У кого-нибудь есть идеи? это софт или настройка? Я также протестировал инструмент под названием KMTronic DMX device tester, и он дал мне такие же результаты.

Я только что заметил, посмотрев на дифференциальные линии RS485 (см. рисунок выше): похоже, что низкий уровень в начале на самом деле является кадром (может быть, стартовым кадром?). Я вижу, как линия переходит из неизвестного состояния в высокий уровень для 4 мкс (отметка времени между пакетами?), низкий уровень для кадра 44 мкс, затем высокий уровень для 8 мкс (обычно время стоп-бита). После этого линия снова переходит в неизвестное состояние. Действительно странно и запутанно. Если это так, то у меня нет ничего, даже похожего на «разрыв».

Также для тех, кто не знаком со структурой пакетов DMX: http://www.dmx512-online.com/gifs/dmxpack.gif

Как это будет выглядеть, если немного «уменьшить масштаб»? Может быть, вы смотрите на перевернутую строку данных 485 и видите данные в перевернутом виде?
Ваша фундаментальная проблема, вероятно, заключается в том, что в USB-serial и DMX у вас есть две очень разные вещи, каждая из которых может быть «как бы» совместима с обычным асинхронным устройством, которое хочет соответствовать своим особенностям, но, вероятно, не друг с другом. DMX предъявляет особые требования к синхронизации внутри пакета, в то время как последовательное преобразование USB предполагает, что синхронизация между символами является произвольной, и задержка может быть безопасно вставлена ​​всякий раз, когда шине USB не удалось сохранить буфер заполненным, или удалена , когда USB буферизует данные быстрее. чем его можно отправить.
Вероятно, вам понадобится специальная реализация, в которой вы можете заполнить буфер для всего 512-байтового пакета DMX через USB, а затем синхронизировать его в строгом соответствии с протоколом DMX, независимо от USB.
Джон, он находится в неизвестном состоянии, если я уменьшаю масштаб (в этом состоянии значение TTL по умолчанию высокое). Крис, я понимаю, о чем ты говоришь, я знаю, что время здесь может быть немного неправильным. Однако я до сих пор не понимаю, почему я получаю странную структуру пакетов.
Вот посмотрите на дифференциальный пакет RS485 imgur.com/5ghGluC . (есть некоторые данные на канале 2)
У меня есть 2 преобразователя USB-RS485; один работает для DMX, а другой нет, потому что драйвер последовательного чипа USB не поддерживает достаточно высокое изменение скорости передачи данных. Какой чип USB-RS232 используется в вашем? Кроме того, эти дешевые, «тупые» преобразователи полагаются на то, что ведомые устройства довольно снисходительны к стандарту синхронизации.
Я определенно пошел по «дешевому» пути. Я купил один из них: ebay.co.uk/itm/… . Если это является причиной проблемы, и вы можете порекомендовать работающее экономичное решение, мы будем очень признательны!

Ответы (1)

У вас есть правильное окончание шины? Многие более дешевые адаптеры RS485 «освобождают» шину, когда какое-то время ничего не передается; таким образом, вы «отмечаете после перерыва» на самом деле может быть отключением передатчика RS485 из-за отсутствия передачи. Убедитесь, что вы тянете шину до нужных значений.