개요: 이 문서는 소형, 중형 및 대형 1-Wire® 네트워크의 신뢰할 수 있는 동작을 제공하기 위한 마이크로컨트롤러 기반 1-Wire 마스터 인터페이스를 설명한다. 이는 신중한 임피던스 정합, 지능형(소프트웨어 제어) 액티브 풀업 및 슬루율 제어를 사용하여 달성된다. 또한 적절한 마이크로컨트롤러를 사용하여 리셋 펄스, 존재 검출, 1 쓰기, 제로 쓰기 및 읽기 타임 슬롯에 대한 정확한 1-Wire 타이밍을 발생시키는 것을 돕기 위해 소프트웨어 흐름도가 포함되어 있다. 스코프 트레이스는 드라이버의 타이밍 성능을 비롯하여 긴 케이블 사용 시 나타나는 전송 라인 효과를 보여준다.
개요
전반적으로 1-Wire 네트워크의 신뢰성은 호스트 컴퓨터가 1-Wire 슬레이브 디바이스와 통신하는데 사용하는 드라이버 회로의 특성에 의존한다. 본 문서는 신중한 임피던스 정합 및 "지능형" (소프트웨어 제어) 강한 풀업 (strong pullup)을 사용하여 매우 미약한 수준에서부터 최대 500m에 해당하는 수치까지 매우 강력한 수준에 이르는 네트워크에서 신뢰할 수 있는 동작을 수행하는 1-Wire 마스터 인터페이스를 설명한다. 신뢰할 수 있는 1-Wire 네트워크의 생성 방법에 대한 가이드라인은 애플리케이션 노트 148을 참조한다.
회로 설명
T네트워크 드라이버 ( 그림 1) 는 풀다운 섹션 (Q1, R1, C1, R5) 과 풀업 섹션 (Q2, R2, C2, R6)으로 구성된다. 3차 트랜지스터와 주변 부품 (Q3, C4, R7)은 강한 풀업 섹션을 구성하여 EEPROM 또는 온도 센서와 같은 디바이스에 별도의 전원을 공급한다. 본 문서에서는 "강한 풀업 (strong-pullup)" 기능에 대해서는 다루지 않는다. 3개의 트랜지스터 중 최대 1개는 언제라도 전도된다. 1-Wire 통신이 존재하지 않으면 ("유휴" 상태), 3개 트랜지스터는 모두 비전도 상태가 된다.
그림 1. 드라이버 회로도.
R4, R1, R3의 직렬 경로 (series path)는 VCC에 표준 1-Wire 풀업을 제공한다. 이러한 회로를 사용할 경우 총 풀업 저항은 약 1kΩ이다. 이 값은 1-Wire 라인이 유휴 상태일 때 적용된다. R4는 Q1의 드레인에 연결되기 때문에, Q1이 전도 상태일 때 R4를 흐르는 전류는 1-Wire 라인 상의 로우 레벨 (low level) 전압에 영향을 미치지 않는다. R4+R1+R3은 모두 1-Wire 네트워크의 부하 또는 중량 (weight)"과 함께 1-Wire의 전압이 5V로 상승하는 속도에 영향을 미친다. R4를 낮추면 1-Wire 상의 로우 레벨 전압이 높아지지만 이것은 바람직하지 않으므로, R4를 낮추는 것은 권장되지 않는다. 쇼트키 다이오드 D1 및 D2는 각각 GND와 VCC에 전도함으로써 ESD 탐지나 또는 주변의 다른 케이블링으로부터 발생하는 크로스 커플링에서 오는 스파이크를 제거한다. R3는 ESD 전류를 제한하고, D1 및 D2를 보호한다.
이러한 드라이버의 특수한 특징은 마스터 엔드 (master end)에서 1-Wire 케이블의 적절한 라인 터미네이션이 존재한다는 점이다. 1-Wire 애플리케이션에서 권장되는 범주 5 비차폐 트위스트 페어 데이터 케이블은 약 100Ω의 특징적인 임피던스를 갖는다. Q1 또는 Q2가 전도 상태일 때 R3와 직렬로 연결된 R1 또는 R2를 통해 라인 터미네이션이 달성된다. C3가 R1과 R3와 직렬로 연결되어 존재 펄스 (presence pulse)에 AC 결합 터미네이션을 제공한다. 이러한 드라이버를 다른 임피던스에 맞추려면, 그에 따라 R1과 R2를 변경해야 할 필요가 있다.
이 드라이버의 3개 섹션은 모두 관련 트랜지스터가 턴 온될 경우 슬루율이 제어된다. 드라이버가 가령 시간 슬롯이나 리셋 펄스가 시작될 때와 같이 1-Wire 라인을 로우로 되면, R5와 C1이 슬루율을 제한한다. 동적 풀업이 액티브되면 R6과 C2가 슬루율을 제한한다. R7과 C4는 액티브 풀업의 슬루율을 제한한다. 3개 섹션의 모든 시간 상수는 0.5?s이다. 이 값은 약 4V/?s의 슬루율을 발생시킨다. 자세한 내용 및 스코프 트레이스 (scope trace)는 성능 예섹션을 참조한다.
회로 동작
강한 풀업 회로 (Q3, R7, C4)와 상관 없이 드라이버는 감시 마이크로컨트롤러에 연결되는 3개의 커넥션을 필요로 한다. 이 신호들은 DRIVE, DPU, SENSE라는 이름을 갖는다. DRIVE는 Q1을 턴 온하여 1-Wire 통신을 개시하는 액티브 하이 신호이다. DPU는 동적 풀업 Q2를 액티브하는 액티브 로우 신호이다. SENSE는 근본적으로 1-Wire 라인으로부터 마이크로컨트롤러의 입력 포트까지 연결되는 쓰루 커넥션 (through-connection)이다. 1-Wire 접지와 드라이버/마이크로컨트롤러 GND는 동일하다. 1-Wire 통신을 수행하려면 적절히 DRIVE 및 DPU 신호를 발생시키고 적절한 시간에 SENSE 입력을 통해 1-Wire 라인으로부터 읽어야 할 필요가 있다. 1-Wire 통신은 4가지 경우의 파형을 인식한다. 즉, 리셋/존재 검출 시퀀스와 3가지 경우의 통신 시간 슬롯이다.
리셋 존재 및 검출
모든 1-Wire 통신은 리셋 펄스 (reset pulse)로부터 시작하고 존재 펄스 기간의 윈도우가 이어진다. 그림 2는 1-Wire 파형을 보여준다. 리셋 펄스를 발생시키기 위해 A에서부터 B까지의 기간 동안 DRIVE 신호가 활성화된다 ( 그림 2 참조). A에서 시작되는 1-Wire의 전압은 0V까지 강하한다. DRIVE는 B에서 인액티브되므로, 1-Wire 디바이스가 인터럽트 상태를 알리기 위해 라인을 로우로 연결되지 않는 한 (DS1994/DS2404 데이터 시트, 유형 2 인터럽트 참조). 1-Wire의 전압이 상승하기 시작한다. 이러한 인터럽트 요청을 적절히 수용할 수 있도록, 1-Wire가 D에서 로직 하이 레벨에 도달할 때까지 C에서부터 1-Wire의 상태가 정기적으로 샘플링된다. D에 도달한 즉시, 동적 풀업 DPU가 활성화된다 (E 지점). 이것은 신속히 1-Wire 라인을 5V로 연결한다. F에서 동적 풀업이 종료된다. 1-Wire 디바이스가 존재한다는 것을 가정한다면, 1-Wire 디바이스는 G에서 시작하여 I에서 종료되는 존재 펄스 (presence pulse)를 발생시킨다. G와 I 사이 어딘가에 위치하는 H에서 1-Wire의 상태가 샘플링되어 1-Wire 디바이스가 존재하는지 여부를 확인한다. 존재 펄스가 종료되면, 1-Wire 상의 전압이 5V로 상승하기 시작한다. J에서 1-Wire의 로직 상태가 다시 샘플링되어 유형 1A 인터럽트 (DS1994/DS2402 데이터 시트 참조) 신호가 존재하는지 검출한다. 인터럽트가 없는 경우, 로직 상태는 그림 2와 같이 하이가 되며, 동적 풀업이 K에서부터 L로 다시 활성화된다. 이것은 1-Wire 라인이 완전히 재충전되도록 보장한다. 인터럽트 신호가 존재할 경우, J에서 감지되는 상태는 로직 제로 (0)가 되고, 리셋 펄스의 끝에서와 정확히 똑같이 다시 일련의 반복되는 샘플링이 필요하다 (즉, C로 다시 되돌아가 샘플링을 계속한다). 인터럽트 펄스는 다른 1-Wire 디바이스에서는 리셋 펄스로 이해된다. 따라서 인터럽트 디바이스를 제외하면 다른 1-Wire 디바이스는 그에 대한 응답으로 존재 펄스를 발생시킨다 (즉, 두 번째 패스에서 J에 도달하면, 1-Wire의 로직 상태가 하이가 된다. 그림 2 참조.) 어느 경우에서나, 리셋/존재 검출 시퀀스는 M에서 종료되며, 이 지점에서 시간 슬롯이 시작된다.
그림 2. 리셋 및 존재 검출 시퀀스.
표 1. 리셋/존재 검출 시퀀스에 대한 권장되는 타이밍 값
A to B
B to C
D to E
E to F
E to H
H to J
J to K
K to L
L to M
480µs
0 ~ 2µs
0 ~ 2µs
8µs
72µs
240µs
0 ~ 2µs
60µs
> 2µs
존재 펄스 윈도우를 탐지하기 위해서는 샘플링 지점 H를 선택해야 한다. 이 윈도우는 존재하는 1-Wire 디바이스 중 가장 빠른 디바이스와 가장 느린 디바이스 사이의 타이밍 스프레드 (timing spread)에 의해 결정된다. 데이터 시트에서는 이 윈도우를 tMSP로 표시한다. 리셋 펄스가 종료된 후 1-Wire 디바이스가 로직 하이를 검출하면 tMSP에 대한 기준 타이밍이 시작된다. 그림 2에서 이 기준 지점은 대략 E와 일치한다. A에서부터 C까지의 기간은 tF (하강 시간)과 tRSTL (리셋 로우 시간)의 합과 같다. 유형 2 인터럽트의 경우, 유효 리셋 로우 시간은 A에서 B까지와 인터럽트 펄스 기간의 합이다 (DS1994/DS2404 데이터 시트 참조). E에서부터 M까지의 시간을 리셋 하이 타임 tRSTH이라고 한다. 데이터 시트에는 tRSTL 을 규정하고, tRSTH에 대한 최소 기간 결정 방법을 설명하고 있다. tRSTH에 대한 최대 기간은 없다.
통신 시간 슬롯
제로 쓰기 시간 슬롯
제로 쓰기 시간 슬롯은 1-Wire 라인 상에 0비트를 전송한다. 그림 3은 1-Wire 파형을 보여준다. 제로 쓰기 시간 슬롯을 발생시키기 위해 A에서부터 B0까지의 기간 동안 DRIVE 신호가 활성화된다. A에서 시작하는 1-Wire의 전압은 0V까지 강하된다. DRIVE는 B0에서 인액티브되므로, 1-Wire 라인의 전압이 상승하기 시작한다. B0에 도달한 즉시, 동적 풀업 DPU가 활성화된다 (C0 지점). 이것은 신속히 1-Wire 라인을 5V로 풀한다. D0에서 동적 풀업이 종료된다. 다음의 시간 슬롯 또는 리셋/존재 검출 시퀀스는 E0에서 이어질 것이다.
그림 3. 제로 쓰기 시간 슬롯.
제로 쓰기 시간 슬롯은 데이터 라인의 샘플링을 필요로 하지 않는다. 따라서 그림 3에서는 샘플링 포인트를 볼 수 없다. 그러나, 읽기 시간 슬롯 (그림 4 또는 5)의 경우와 마찬가지로 적절한 시간에 동일한 지점에서 1-Wire 라인을 샘플링하는 것은 전적으로 허용된다. 샘플링된 로직 상태는 언제나 0이며, 이것은 회로가 실제로 1-Wire 라인에 0을 쓴다는 것을 나타낸다. A에서부터 C0까지의 기간은 tF (하강 시간)와 tW0L (제로 쓰기 로우 시간)의 합과 같다. C0에서부터 E0까지의 시간을 복원 시간 tREC라고 한다. 데이터 시트에는 tW0L 및 tREC에 대한 최소 값을 규정하고 있다. A에서부터 E0까지의 시간은 또한 시간 슬롯 기간 tSLOT라고도 한다.
표 2. 제로 쓰기 시간 슬롯에 대한 권장되는 타임 슬롯
A to B0
B0 to C0
C0 to D0
A to E0
60µs
2µs
16µs
80µs
1 쓰기/읽기 시간 슬롯 (1 읽기)
1 쓰기 시간 슬롯 (write one time slot)은 1-Wire 라인 상에 1비트를 전송한다. 그림 4는 1-Wire 파형을 보여준다. 1-Wire 라인으로부터 1비트를 읽으면 1비트를 쓸 때와 정확히 동일한 파형이 발생된다. 따라서, 1 쓰기 및 1 읽기 경우는 하나의 경우로 함께 다루어 설명한다. 1 쓰기 또는 읽기 시간 슬롯을 발생시키기 위해 A에서부터 BR까지의 기간 동안 DRIVE 신호가 활성화된다. A에서 시작하는 1-Wire의 전압은 0V까지 강하된다. DRIVE는 BR에서 비활성되므로, 1비트를 읽거나 쓸 경우, 1-Wire 라인의 전압이 상승하기 시작한다. CR에서 1-Wire의 상태가 샘플링된다. 비트 읽기가 1이므로, 동적 풀업이 즉시 활성화되어 D1에서부터 E1까지 지속된다. 이것은 신속히 1-Wire 라인을 5V로 풀한다. 다음의 시간 슬롯 또는 리셋/존재 검출 시퀀스는 F1에서 시작될 것이다.
마스터 샘플링 윈도우를 탐지하기 위해서는 샘플링 지점 CR을 선택해야 한다. 이 윈도우는가장 빠른 1-Wire 디바이스의 타이밍에 의해 결정된다. 데이터 시트에서는 이 윈도우를 tMSR이라고 부른다. 타임 슬롯이 시작되고 1-Wire 디바이스가 로직 로우를 검출하면 tMSR에 대한 타이밍 기준 (timing reference)이 시작된다. 그림 4에서 이 기준 지점은 대략 A와 하강 시간 tF를 합한 것과 같다. A에서부터 BR까지의 기간은 tF (하강 시간)와 tRL (로우 시간 읽기)의 합과 같다. 데이터 시트에는 tRL (tW1L과 동일) 및 tMSR을 규정하고 있다. A에서부터 F1까지의 시간은 또한 시간 슬롯 기간 tSLOT라고도 한다.
그림 4. 1 쓰기/읽기 시간 슬롯 (1 읽기).
표 3. 쓰기/읽기 시간 슬롯 (1 읽기)에 대한 권장되는 타이밍 값
A to BR
A to CR
CR to D1
D1 to E1
A to F1
9µs
18µs
0 ~ 2µs
60µs
80µs
읽기 시간 슬롯 (제로 읽기)
제로 읽기 시간 슬롯 (read zero time slot)은 1-Wire 라인으로부터 0비트를 읽는 읽기 시간 슬롯이다. 그림 5는 1-Wire 파형을 보여준다. 읽기 시간 슬롯을 발생시키기 위해 A에서부터 BR까지의 기간 동안 DRIVE 신호가 활성화된다. A에서 시작하는 1-Wire의 전압은 0V까지 강하된다. 0비트를 전송하기 위해 1-Wire 디바이스는 A 이후 그러나 BR 전에 1-Wire 라인을 로우로 풀하기 시작한다. 따라서, 1-Wire 라인의 전압은 1-Wire 마스터에 의해 처음 로우로 구동된 다음, 하나 이상의 1-Wire 디바이스에 의해 로직 로우 상태를 유지한다. BR이 발생하면, 마스터 풀다운이 턴 오프된다. CR에서 1-Wire의 상태가 샘플링된다. 비트 읽기가 0이므로, 1-Wire가 반복적으로 샘플링된다. D0에서 1-Wire 디바이스는 라인을 로우로 풀링하는 것을 정지하므로, 전압이 상승한다. E0에서 이후의 샘플링은 라인이 로직 하이 레벨에 도달했는지를 결정한다. 이제 동적 풀업이 활성화되어 F0에서부터 G0까지 지속된다. 이것은 신속히 1-Wire 라인을 5V로 풀한다. 다음의 시간 슬롯 또는 리셋/존재 검출 시퀀스는 H0에서 시작될 것이다.
샘플링 지점 CR은 1 쓰기/읽기 시간 슬롯의 경우와 동일하다. 이후의 샘플링 지점 사이의 거리는 마이크로컨트롤러와 소프트웨어가 허용하는 한 짧아야 한다. A에서부터 H0까지의 시간은 또한 시간 슬롯 기간 tSLOT라고도 한다.
그림 5. 읽기 시간 슬롯 (제로 읽기).
표 4. 읽기 시간 슬롯 (제로 읽기)에 대한 권장되는 타이밍 값
A to BR
A to CR
E0 to F0
CR to G0
A to H0
9µs
18µs
0 ~ 2µs
60µs
82µs
실제적인 고려사항
Advanced 1-Wire 네트워크 드라이버를 제어하는 신호 구조는 상대적으로 복잡하다. 그러나, 알고리즘은 간단하다. 이러한 이유로, 이 드라이버는 으로 신호를 발생시킬 수 있을 만큼 충분히 빠른 마이크로컨트롤러를 사용하여 전형적으로 소프트웨어에서 구현된다. 아래에 제공되는 흐름도는 사용자에게 익숙한 적합한 마이크로컨트롤러를 사용하여 첨단 드라이버를 구현하는 것을 돕는다. 적절한 타이밍을 발생시키기 위해서는 사용자가 지정한 크리스털 주파수에서 동작하는 모든 명령의 실행 시간을 고려해야 한다.
소프트웨어 흐름도
참고 1: 타이머가 실제 타이머가 아닌 카운터로 구현되는 경우에만 디크리먼트가 필요하다. 타이머는 5000?s 후 만료되어야 한다.
참고 2: Presence 와 Short는 상위 프로그램에 리셋/존재 검출 시퀀스 결과를 보고하는 논리 변수이다. 오직 하나의 1-Wire 칩만 인터럽트를 발생시킬 수 있기 때문에 (DS1994/DS2404) 인터럽트는 변수로 보고되지 않으며, 또한 인터럽트의 사용은 1-Wire 네트워크의 유효 속도를 현저히 떨어뜨릴 수 있다.
이 흐름도는 제로 쓰기 또는 읽기 시간 슬롯의 발생 여부를 제어하는 논리적 입력 변수가 존재한다는 것을 가정하고 있다. 1 쓰기 시간 슬롯은 읽기 시간 슬롯과 동일하다. 비트 변수 BitValue는 시간 슬롯의 결과를 상위 프로그램에 보고한다.
참고 1: 타이머가 실제 타이머가 아닌 카운터로 구현되는 경우에만 디크리먼트가 필요하다. 타이머는 45?s 후 만료되어야 한다.
참고 2: 흐름도에 따르면, 타이머가 만료되기 전에 DPU가 반복적으로 액티브된다. 이미 액티브 상태에 있는 신호를 활성화하는 경우 해당 신호의 상태가 달라지지 않기 때문에, 이와 같은 상황은 허용된다. 원하는 경우, DPU가 이미 액티브 상태인지 여부를 테스트할 수 있으며, 그러한 경우, 루프를 수행하는 동안에는 다시 활성화하지 않는다.
성능 예
다음 페이지의 스코프 트레이스는 본 문서에서 설명된 바와 같이 드라이버에 의해 발생되는 1-Wire 신호를 보여준다. 신호를 검증할 경우 특히 케이블의 끝단에서는 차동 프로브를 사용하고 프로브의 기준 접지를 부동 (floating) 상태로 둘 필요가 있다. 그렇지 않을 경우, 프로브의 접지 커넥션이 1-Wire 접지를 바이패스하고 시스템의 토폴로지를 변경시킬 수 있다. 차동 프로브를 사용할 수 없는 경우, 트랜스포머 또는 배터리로 동작하는 오실로스코프를 통해 오실로스코프 접지를 메인 접지와 분리시켜야 한다. 다른 방법으로는 오실로스코프의 전원공급 케이블의 안전 접지 (safety-ground)의 연결을 분리할 수 있다.
스코프 트레이스
리셋/존재 검출 시퀀스 (그림 Figure 2).
제로 쓰기 시간 슬롯 (그림 3).
1 쓰기/읽기 시간 슬롯 (그림 4).
읽기 시간 슬롯 (그림 5)
300m 케이블의 끝단(far end)의 하강 에지
300m 케이블의 근단(near end)에서 볼 수 있는 동일한 에지
참고:Advanced 1-Wire 라인 드라이버와 유사한 제품이 Southwind Enterprises에서 생산되고 있다. 기술적인 세부사항 및 주문 정보에 대해서는 http://ibuttonlink.com/을 참조한다.
새로운 설계에서는 DS1994와 DS2404를 잘 사용하지 않는다.
1-Wire는 Maxim Integrated Products, Inc.의 등록상표이다.
의견을 보내주세요! 위 내용이 도움이 되셨나요? 여러분의 의견을 기다립니다 — Maxim은 보내주신 정정이나 제안사항을 반영하고 있습니다.
이 페이지를 평가하고 의견을 보내주십시오.