LINUX.ORG.RU

Вопрос по 1-wire железячникам.

 


0

2

Вот есть цифровые термометры на 1-wire.

http://pdfserv.maximintegrated.com/en/ds/DS18B20.pdf

Такой девайс цепляется на GPIO-ногу и с этой ноги в программе я считываю уровни. А как это физически выглядит? С какой частотой девайс выставляет эти уровни на шину? Где там клок?

Вот чё нашёл: http://www.maximintegrated.com/en/images/appnotes/126/522Fig01.gif

Т.е. коммуникация устроена как импульсный набор в телефоне почти? Обмен идёт заземлением на ноль? Если мне надо сбросить девайс, я заземляю надолго. Если мне надо прочитать, я заземляю ногу ненадолго, а потом отпускаю и смотрю осталась она на земле или нет. Если осталась - значит это девайс притянул к земле и таким образом шлёт мне 1. Если не осталась - значит девайс шлёт мне 0.

Так примерно?

(вот это я не понял, там же 1 нога блин: https://upload.wikimedia.org/wikipedia/commons/1/12/1-Wire-Protocol.png )

★☆

Последнее исправление: kiverattes (всего исправлений: 2)

Если я правильно понял, то output это то, что на шину выставляет master, input это то, что приходит с шины (может отличаться из-за действий slave).

как импульсный набор в телефоне почти?

Почти, только master шлёт короткие импульсы начала бита.

Обмен идёт заземлением на ноль

Скорее замыканием на землю :-)

mky ★★★★★
()

И да, в даташите на эти термометры отлично все расписано! В зависимости от длительности поджатия линии данных к нулю передается 1 или 0 на слейв. Если надо со слейва считать данные, на 1-5мкс шина поджимается к земле, а затем уже ожидается нарастающий импульс (слейв по спадающему фронту сам поджимает шину к земле, передавая таким образом 1 или 0).

Полуаппаратная реализация очень проста: используются 2 канала таймера + ПДП. ПДП читает данные из буфера для передачи и изменяет содержимое регистра CCR, сам выход работает в режиме открытого коллектора (т.е. понятно, что шину нужно резистором 4.7к поджать к +3.3В или +5В) и ШИМит данные в зависимости от содержимого CCR (поджимает к земле шину на CCR микросекунд), регистр ARR меняется только при сбросе (там длительность импульса аж 1мс). Ну, а второй канал таймера снимает сигнал с этой же ноги и дергает ПДП, чтобы в другой буфер сохранить принятую информацию (обычный режим захвата).

Eddy_Em ☆☆☆☆☆
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.