1 Востаннє редагувалося voland (21.09.2016 15:35:39)

Тема: Ідентифікація "Борна" (передавача)

Доброго дня всім!

Є чисто "кулуарне" питання: як на шинах цифрових інтерфейсів можна відрізнити передавач від приймача?

Припустимо, в нас є однодротова шина (земля - другий дріт) типу 1-wire, або якійсь I2C. То як можно швидко і просто опреділити в яку сторону іде передача? Давайте для початку обсудимо варіант передавачів с OD (тобто як I2C - резістор на плюс и транзистор в нуль).

Є якісь міркування с цького приводу?

ЗІ: я так розумію, за токову діфф.пару навіть і думати не треба? Там просто так не дізнаєшься що куди іде...

2

Re: Ідентифікація "Борна" (передавача)

за допомогю, осцилографа, логічного аналізатора, та логічного аналізатора протоколів

- Поганому трояну фаєрвол заважає
- Ніколи не програмуйте та не пийте пиво
Якщо ви з першого разу написали програму, в якій немає жодної помилки, повідомте про це системного програмісту: він виправить помилки в компіляторі
Подякували: voland1

3

Re: Ідентифікація "Борна" (передавача)

reverse2500 написав:

за допомогю, осцилографа, логічного аналізатора, та логічного аналізатора протоколів

Поки що мимо. В загальному випадку ви не будете мати ніяких даних, хто навіть слейв а хто майстер. Протоколів обміну - тьма и ще маленька кучка. І засобів "спілкування" - теж. Наприклад, той же LIN використовує старт-фрейм від майстера, а відповідь - в загальному віпадку або від того ж майстера або від слейвів. Так, ви можете глянути в спеціфікації - що це за запроси. Але це не 100% вірогідність, що те що написано в LIN буде реалізовано у реальних умовах.

ЗІ: є навіть ціль - хочу зробити якийсь переходник для лаптопа, який не хоче працювати з лівими блоками живлення. В проводі живлення є ще один сигнальний дріт, який и передає якусь інфу на ноут, щоб себе ідентифікувати. Але чи запитує щось ноут у блока живлення - це я ще не з'ясував. Ткну аналізатором - щось побачу. Але хотілось би якийсь більш "прокачаний" вариант).

4

Re: Ідентифікація "Борна" (передавача)

I2C здається не має напрямку. І користувачі до неї під'єднуються як грушки до гілки. Щоправда там є один мастер, але усі інші рівноправні.

5 Востаннє редагувалося raxp (21.09.2016 14:21:54)

Re: Ідентифікація "Борна" (передавача)

В загальному випадку ви не будете мати ніяких даних, хто навіть слейв а хто майстер

є мультімастернi шини, для них ніяк.

як на шинах цифрових інтерфейсів можна відрізнити передавач від приймача?

з фізики процесу, розiрвати сигнальне коло для струму. В якому ланцюжкi сигнал залишиться, той передавач )

А тепер поміркуємо

1. У загальному випадку, будь-який провідник характеризується комплексним імпендансом з розподіленими iндуктивнiстю по довжині провідника і ємністю лінії або між загальним проводом, або ємністю між провідниками для диференціальної лінії. При довжинах лінії зв'язку вище чверті довжини хвилі сигналу, лінія стає антеною, тому її намагаються узгодити і зробити чисто активною.
2. Будь-який провідник при нормальних умовах має власний активний опір, тому до генератора (джерела) підключається узгоджене навантаження через омічний опір лінії в режимі біжучої хвилі.
3. Оскільки ми маємо справу з цифровим періодичним сигналом, спектр якого на відміну від синусоїдального сигналу має безліч гармонік з обвідною по квазіосціліючей функцієй з поступовим спаданням, а довга лінія є не щось інше, як фільтр, то досить оцінити амплітуди вторинних гармонік після передбачуваного джерела і до приймача. Оскільки сучасні осцилографи мають в своєму складі і аналізатор спектру:

то завдання спрощується.

Є нюанс - ефект буде проявляти себе саме на довгих лініях, внаслідок того, що інструментальна похибка на коротких лініях зв'язку не дасть відчути різницю. Тому простіше:
1. Розірвати ланцюг для сигналу або внести додатковий опір в розрив лінії.
2. Розкрити "джерело" і "приймач" фiзично і прочитати назви чіпів на лінії, далi даташити.

Білоруський журнал «Радиолюбитель»
Lead Radar systems engineer & Software developer of industrial automation
Мої розробки та відеоблог
Подякували: voland1

6

Re: Ідентифікація "Борна" (передавача)

raxp написав:

2. Розкрити "джерело" і "приймач" фiзично і прочитати назви чіпів на лінії, далi даташити.

там побачити щось таке і заспокоїтися.

printf("Nested comments is %s\n", */*/**/"*/"/*"/**/ == '*' ? "OFF" : "ON");
Подякували: voland1

7

Re: Ідентифікація "Борна" (передавача)

аналізатор спектру

Згоден. Дуже цікавий и не такий уже важкий в виконанні метод. Особливо якщо спростити його до пошуку якості фронтів сигналу - думаю, цього повинно бути достатньо. Я попробую на "швидкому" осцилі.

є мультімастернi шини, для них ніяк.

ну, тут я мабуть відійшов від основної цілі - знайти відправника. А кто з них майстер - це інше. Це можно проаналізувати послідовність відправлених пакетів і зрозуміти, хто з девайсів - мастера.

Розірвати ланцюг для сигналу або внести додатковий опір в розрив лінії.

Припустимо. А далі що? Згоден - в I2C це спрацює, а що робити з діф.ланцюгом, наприклад, RS485?

@ReAl, як ви цітуєте месседжі по частям? Я задовбався вже різати чужі висловлення по частях.

8 Востаннє редагувалося ReAl (21.09.2016 15:48:38)

Re: Ідентифікація "Борна" (передавача)

voland написав:

Згоден - в I2C це спрацює, а що робити з діф.ланцюгом, наприклад, RS485?

RS485 доволі толерантно ставиться до зменшення напруги сигналу (на довгих кабелях само собою виходить), тому по ом 20 послідовно у кожну лінію поруч з кожним пристроєм і порівнювати амплітуди на пристрої і на лінії.

voland написав:

@ReAl, як ви цітуєте месседжі по частям? Я задовбався вже різати чужі висловлення по частях.

Я ще ні :D

printf("Nested comments is %s\n", */*/**/"*/"/*"/**/ == '*' ? "OFF" : "ON");

9

Re: Ідентифікація "Борна" (передавача)

ReAl написав:

RS485 доволі толерантно ставиться до зменшення напруги сигналу

RS485 токовий, тому йому й по-боку імпеданс дротів. Ну, майже ;). Але якщо ми впаяємо в лінію якійсь резістор, то що це нам забезпечить? Падіння буде, то й що? Воно ніяк не покаже на напрямок "активної" сторони зв'язку, яка фактично щось змінює.

10 Востаннє редагувалося voland (21.09.2016 15:57:20)

Re: Ідентифікація "Борна" (передавача)

ReAl написав:

Я ще ні :D

ЗІ: дописую ніки ручками. Відчуваю себе лінуксоїдом. У когось є додаток до VIM для цього форума? :)

11

Re: Ідентифікація "Борна" (передавача)

Там на самому початку було запитання «в яку сторону йде передача». По полярності падіння напруги це з'ясувати можна.

p.s. Хоч для з'ясування напрямку поширення сигналу через полярність падіння напруги на врізаному резисторі це і не важливо, але — драйвер RS485 передає напругу, приймач RS485 теж приймає напругу. Струм у лінії який вийде, такий і вийде.
Є варіанти диференційних інтерфейсів, коли передається струм, а приймається напруга (від цього струму на узгодженому кінцевому резисторі), але це не RS485.

printf("Nested comments is %s\n", */*/**/"*/"/*"/**/ == '*' ? "OFF" : "ON");
Подякували: voland1

12

Re: Ідентифікація "Борна" (передавача)

ReAl написав:

драйвер RS485 передає напругу

Такі да:
https://uk.wikipedia.org/wiki/RS-485

По полярності падіння напруги це з'ясувати можна.

Знову згоден. В момент передачі приймач лише має якусь нагрузку на вході. А розбіг потенціалів має формувати передавач. Також, можна сказати в якійсь мірі і про OD-схему... Щось починає розвіднюватись ).

PS: сьогодні не витримав, та запаяв розламаний роз'єм, бо це ж не можливо - жити вдома з поламаним живленням к ноуту! ). Аналізатор не ввімкнув.