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