ENGLISH 简体中文 日本語 한국어  


애플리케이션 노트  155

1-Wire® 소프트웨어 리소스 가이드 소자 설명

개요: Maxim은 현재 iButton® 소자를 포함하여 30여 종의 1-Wire 소자를 생산하고 있다. 이들 소자와의 통신을 위해 이용할 수 있는 애플리케이션 프로그램 인터페이스(API), 소프트웨어 예, 기타 리소스를 검색하고 특정 소자에 적합한 리소스를 찾는 것은 어려울 수 있다. 이 애플리케이션 노트에서는 이용 가능한 리소스에 대해 살펴보고 선택 가이드를 제공한다. 현재 1-Wire 소자들은 소자 설명 및 제품 코드 룩 업을 제공하는 간단한 표에 제시되어 있다.

사용 가능한 API에는 Microsoft Windows®:용 API인 TMEX, 1-Wire 퍼블릭 도메인 킷(크로스 플랫폼 API), Java™용 1-Wire API(OWAPI)와 .NET용 가변 1-Wire API(OW.NET), 그리고 .NET Compact용 1-Wire API(OW.NET.Compact)가 있다. 본문에 설명된 모든 API는 제한 없이 무료로 사용할 수 있으며, 대부분의 경우 완전한 소스 코드가 함께 제공된다.


머리말

Maxim은 현재 iButton® 소자를 포함하여 30여 종의 1-Wire 소자를 생산하고 있다. 이들 소자와의 통신을 위해 이용할 수 있는 애플리케이션 프로그램 인터페이스(API), 소프트웨어 예, 기타 리소스를 검색하고 특정 소자에 적합한 리소스를 찾는 것은 어려울 수 있다. 이 애플리케이션 노트에서는 이용 가능한 리소스에 대해 살펴보고 선택 가이드를 제공한다. 여기서 설명하는 API는 제한 없이 자유롭게 이용할 수 있으며 대부분의 경우에 전체 소스 코드를 포함한다.

1-Wire 설명

Maxim의 1-Wire 버스는 단일 연결을 통해 단일 마스터와 주변 장치 간에 양방향 통신이 가능한 간편한 시그널링 방식이다. 모든 1-Wire 버스 소자에 공통되는 강점이 모든 소자에 출하 전에 고유의 등록번호가 지정된다는 것이다. 그러므로 개별적으로 선택한 다수의 소자를 동일 버스 와이어에 연결할 수 있다. 하나 또는 둘 또는 십여 개의 1-Wire 소자가 통신을 위해 단일 와이어를 공유할 수 있으므로, 바이너리 검색 알고리즘을 이용해 각 소자를 검색할 수 있다. 각각의 소자 등록번호를 알면, 등록번호를 이용해 어드레스를 지정함으로써 통신을 위해 각각의 소자를 선택할 수 있다.

통신을 위해서는 먼저 버스 마스터가 리셋을 발행해서 전체 버스를 동기화한다. 그리고 통신을 위해 슬레이브 장치를 선택한다. 이를 위해 모든 슬레이브를 선택하거나, 특정 슬레이브를 선택하거나(소자 등록번호 이용), 바이너리 검색 알고리즘을 이용해 버스 상의 다음 슬레이브를 찾아낼 수 있다. 이들 명령을 집합적으로 네트워크 기능 또는 ROM(read-only-memory) 명령이라고 한다. 특정 소자가 선택되면 다른 모든 소자가 드롭아웃하고 다음 리셋이 발행될 때까지 이후의 통신을 무시한다.

특정 소자가 버스 통신을 위해 격리되면 마스터가 이 소자로 특정 소자 명령을 발행하거나, 데이터를 전송하거나, 이 소자로부터 데이터를 읽을 수 있다. 각 소자 유형이 다른 기능을 수행하고 그 용도가 다르므로, 각각의 유형이 선택되었을 때 고유의 프로토콜을 이용한다. 하지만 각 소자 유형이 다른 프로토콜 및 기능을 수행하더라도 선택 과정은 동일하며 그림 1의 명령 흐름을 따른다.

Figure 1. Typical <nobr>1-Wire</nobr> communication flow.
그림 1. 일반적인 1-Wire 통신 흐름도

각 슬레이브에서 고유 등록번호의 필수적인 부분이 8비트 제품 코드다. 이 코드는 소자 모델에 따라 달라진다. 각 소자 모델이 각기 다른 기능을 수행하므로, 이 코드를 이용해서 해당 모델을 제어 또는 질의하기 위한 프로토콜을 선택할 수 있다. 표 1은 제품 코드와 해당 Maxim 1-Wire 제품이다.

표 1. 제품 코드 설명
제품
코드
부품번호
() - iButton 패키지
설명
(메모리 크기는 명시하지 않은 경우 비트 단위임)
01 (hex) (DS1990A), (DS1990R), DS2401, DS2411 1-Wire net 어드레스 (등록번호) 전용
02 (DS1991)¹ 멀티키 iButton, 1152비트 보안 메모리
04 (DS1994), DS2404 4Kb NV RAM 메모리 및 클록, 타이머, 알람
05 DS2405¹ 단일 어드레서블 스위치
06 (DS1993) 4Kb NV RAM 메모리
08 (DS1992) 1Kb NV RAM 메모리
09 (DS1982), DS2502 1Kb EPROM 메모리
0A (DS1995) 16Kb NV RAM 메모리
0B (DS1985), DS2505 16Kb EPROM 메모리
0C (DS1996) 64Kb NV RAM 메모리
0F (DS1986), DS2506 64Kb EPROM 메모리
10 (DS1920) 온도 및 알람 트립
12 DS2406, DS2407¹ 1Kb EPROM 메모리, 2채널 어드레서블 스위치
14 (DS1971), DS2430A¹ 256비트 EEPROM 메모리 및 64비트 OTP 레지스터
1A (DS1963L)¹ 쓰기 사이클 카운터가 내장된 4Kb NV RAM 메모리
1C DS28E04-100 4096비트 EEPROM 메모리 및 2채널 어드레서블 스위치
1D DS2423¹ 외부 카운터가 있는 4Kb NV RAM 메모리
1F DS2409¹ Sub-netting을 위한 2채널 어드레서블 커플러
20 DS2450 4채널 A/D 컨버터 (ADC)
21 (DS1921G), (DS1921H), (DS1921Z) Thermochron® 온도 로거
23 (DS1973), DS2433 4Kb EEPROM 메모리
24 (DS1904), DS2415 실시간 클록 (RTC)
27 DS2417 인터럽트 가능 RTC
29 DS2408 8채널 어드레서블 스위치
2C DS2890¹ 단일 채널 디지털 포텐쇼미터
2D (DS1972), DS2431 1024비트 1-Wire EEPROM
37 (DS1977) 패스워드 보호 32KB (바이트) EEPROM
3A (DS2413) 2채널 어드레서블 스위치
41 (DS1922L), (DS1922T), (DS1923), DS2422 고용량 Thermochron (온도) 및 Hygrochron™ (습도) 로거
42 DS28EA00 시퀀스 검출 및 PIO를 갖는 분해능 프로그래밍 가능 디지털 온도계
43 DS28EC20 20Kb 1-Wire EEPROM
*이 리스트는 모든 Maxim 1-Wire 소자 유형(제품군)을 포함하는 것은 아니며, Automatic Information 사업부의 소프트웨어 라이브러리가 직접적으로 지원하는 것들이다.
¹이 소자들은 새로운 설계에서는 더 이상 사용되지 않는다.

API의 개요

1-Wire 소자와 통신하기 위한 각각의 API는 프로토콜과 관련된 근본적인 통신 문제 때문에 공통된 특징을 나타낸다. 그림 2는 각 API의 기능을 그룹으로 분류한 것이다. 대다수 1-Wire 소자가 메모리를 포함하므로, 메모리 I/O 기능이 모든 소자에 해당되는 것이 아니더라도 일반 API 그룹으로 다루어진다. 기타 모든 비메모리 특수 기능은 특정 소자 그룹으로 분류된다.

SESSION
1-Wire 버스의 독점적인 이용을 협상한다. 이 기능은 다수 프로세스 또는 스레드가 동일 1-Wire 버스를 액세스하려고 하는 운영체제나 환경에서 중요하다. 단일 소자로 수행하려는 다중 동작이 중단되지 않아야 할 때 네트워크의 독점적인 사용이 필요하다.
LINK
기본적인 1-Wire 버스 통신 기능. 모든 1-Wire 통신은 리셋을 이용해 모든 소자를 리셋하고 비트 읽기 및 쓰기를 수행할 수 있다. 또한 이 기능 그룹은 특수한 EPROM 프로그래밍 펄스나 전력을 언제 공급할 지와 같은 버스의 전기적 특성을 설정하기 위한 기능들을 포함한다.
NETWORK
소자 식별 및 선택을 위한 네트워크 기능. 각각의 1-Wire 소자에 지정된 등록번호가 네트워크 어드레스로 이용된다. LINK 레벨 기능을 이용해 이들 기능을 구성할 수 있다. 등록번호가 Read-Only 메모리이므로 1-Wire 소자 데이터 시트에서는 이를 ROM 명령이라 한다. 일부 1-Wire 마스터는 네트워크 기능이 내장되어 있다. 이들 기능이 링크 기능보다 더 효율적이다.
TRANSPORT
블록 통신 및 기본적인 읽기/쓰기 메모리 기능. 패킷 읽기/쓰기 메모리 기능을 포함할 수 있다. 이들 기능은 NETWORK 및 LINK 그룹 명령으로 구성된다.
FILE
1-Wire 파일 구조를 이용한 파일 메모리 레벨 기능이다(애플리케이션 노트 114: "1-Wire File Structure" 참조). NETWORK 및 TRANSPORT 레벨 기능으로 구성되며 메모리 페이지가 하나 이상인 소자에만 이용할 수 있다.
소자
특정 소자 '하이 레벨' 기능. 이들 기능은 NETWORK, TRANSPORT, LINK 그룹 명령으로 구성되며 온도 읽기나 스위치 상태 설정 등의 동작을 수행한다.
그림 2. API 기능 그룹

이들 기능을 이용하기 위한 일반적인 순서는 그림 3과 같다. SESSION 기능은 소자에 대한 통신 호출을 포함하며 일반적으로 NETWORK 기능을 이용한 다음에 메모리 또는 특정 소자 동작을 수행한다.

Figure 3. API usage flow.
그림 3. API 활용 흐름

iButton 통신의 특성은 근본적으로 '터치' 방식이라는 것이다. 그러므로 소자와의 접촉이 언제나 신뢰할 수 있는 것이 아니다. iButton이 리더기(reader)에 삽입되고 읽기가 이루어질 때 간헐적으로 접촉이 이루어질 수 있다. 그러므로 일관된 오류 복구 방법론이 뒤따라야 한다. 이를 위해서는 의사 오류(spurious error)가 탐지되었을 때 재시도를 실시하고 데이터 통신에 CRC 검사를 이용해야 한다. API의 파일 I/O 기능은 애플리케이션 노트 114: 1-Wire File Structure1-Wire File Structure 섹션에서 설명하는 표준 파일 구조를 이용한다. 이 구조는 모든 데이터 페이지에 CRC16을 이용해서 읽으려는 데이터의 유효성을 신속하게 검사한다. 대다수 1-Wire API 기능은 자동 재시도를 거의 혹은 아예 이용하지 않는다. 재시도는 애플리케이션 제어를 받는다. 1-Wire 통신의 오류 복구 및 위험성 평가 방법론에 관해서는 애플리케이션 노트 159: Ultra-Reliable 1-Wire Communications를 참조한다.

API 선택

이 애플리케이션 노트에서는 5개 API에 대해 살펴보려고 한다. 이들 API가 각각의 플랫폼으로 동작하고, 서로 다른 언어를 이용하고, 서로 다르게 동작한다. 표 2는 이들 5개 API에 대한 간략한 설명이고, 표 3은 운영 체제를 언어별로 분류된 사용가능한 API의 지도로 나타낸 것이다.

표 2. API 설명
API 약어 설명
1-Wire 퍼블릭 도메인 PD C로 작성된 공개 소스 퍼블릭 도메인 API로 다중의 PC 운영 체제, 핸드헬드 운영 체제, 마이크로컨트롤러 플랫폼으로 이식할 수 있다. PC 플랫폼의 경우 32비트 Microsoft Windows에서는 고유 드라이버 라이브러리를 통해 모든 1-Wire 어댑터(마스터)를 지원하고, 교차 플랫폼 라이브러리를 이용한 기타 PC 운영 체제에서는 특수 1-Wire 어댑터(DS9097U 직렬 및 DS9490 USB 어댑터)를 지원한다.
Java용 1-Wire API OWAPI 거의 모든 1-Wire 소자를 지원하는 공개 소스, 하이 레벨 Java API. 고유의 1-Wire 마스터를 지원할 뿐만 아니라 교차 플랫폼 라이브러리를 통해 DS9097U 직렬 어댑터 및 DS9490 USB 어댑터를 지원한다.
.NET용 1-Wire API OW.NET Microsoft .NET 프레임워크용으로 J#를 이용해 컴파일된 OWAPI 코드 베이스
.NET Compact용 1-Wire API OW.NET.Compact Microsoft Visual J#® redistributable 패키지가 없는 Windows CE 머신이나 플랫폼용 Compact .NET 프레임워크. 지금은 로우 레벨 1-Wire 링크 및 C# 연결 네트워크 레이어로 구성된다.
TMEX API TMEX Windows 플랫폼(32/64비트)에서 모든 1-Wire 마스터 어댑터를 지원한다. 링크 및 파일 I/O 기능을 제공하나 소자 기능을 제공하지 않는다. 드라이버는 폐쇄 소스이다. 다른 API가 모든 1-Wire 어댑터 유형에 대한 액세스를 취득하기 위해 이 API를 호출한다.

표 3. API 운영체제 및 해당 언어
언어 TMEX /OW.NET/OW.NET.Compact
(Microsoft Windows 언어는 별도)
C Java
OS
Windows Vista® TMEX /OW.NET/OW.NET.Compact PD OWAPI
Windows Vista x64 TMEX /OW.NET/OW.NET.Compact PD OWAPI
Windows XP TMEX /OW.NET/OW.NET.Compact PD OWAPI
Windows XP x64 TMEX /OW.NET/OW.NET.Compact PD OWAPI
Windows 2008 TMEX /OW.NET/OW.NET.Compact PD OWAPI
Windows 2008 x64 TMEX /OW.NET/OW.NET.Compact PD OWAPI
Windows 2000¹ TMEX /OW.NET/OW.NET.Compact PD OWAPI
Windows ME¹ TMEX /OW.NET/OW.NET.Compact PD OWAPI
Windows 98¹ TMEX /OW.NET/OW.NET.Compact PD OWAPI
Windows 95¹ TMEX PD OWAPI
Win3.1¹ TMEX PD
DOS¹ TMEX PD
Pocket PC/CE OW.NET.Compact PD
Linux® 및 기타 UNIX® 기반 OS PD OWAPI
TINI* PD - TINI OS 미지원 OWAPI
*TINI®는 Maxim에서 개발한 Java 기반 OS를 이용한 임베디드 플랫폼이다.
¹더 이상 지원되지 않음. 레거시 드라이버 다운로드는 여전히 Maxim 웹 사이트에서 이용 가능하다.

지원하는 소자 유형은 API에 따라 다르다. 표 4는 현재 이용 가능한 1-Wire 소자며 플래그는 각 API의 가능한 지원을 나타낸다. 음영으로 표시되지 않은 소자는 모든 API가 지원하는 것이다. 옅은 음영으로 표시된 소자는 부분적으로 지원되며, 짙은 음영으로 표시된 소자는 최소 지원을 나타낸다.

표 4. 소자별 API 지원 기능
소자 FC 설명 TMEX PD OWAPI OW.NET OW.NET Compact
DS1982 09 1Kb EPROM 메모리 ABCE ABCDE ABCDE ABCDE AB
DS1985 0B 16Kb EPROM 메모리 ABCE ABCDE ABCDE ABCDE AB
DS1986 0F 64Kb EPROM 메모리 ABCE ABCDE ABCDE ABCDE AB
DS1904 24 RTC AB AB ABI ABI AB
DS1920 10 온도 및 알람 트립 AB ABI ABCI ABCI AB
DS1921G
DS1921H
DS1921Z
21 Thermochron 온도 로거 ABDE ABCDEI ABCDEF
GHI
ABCDEF
GHI
AB
DS1922L
DS1922T
DS1923
41 고성능 Thermochron (온도) 및/또는 Hygrochron (습도) 로거 AB ABCDEI ABCDEF
GHI
ABCDEF
GHI
AB
DS1963L¹ 1A 쓰기 사이클 카운터 내장 4Kb NV RAM 메모리 ABDE ABCDE ABCDEF
GH
ABCDEF
GH
AB
DS1971 14 256비트 EEPROM 메모리 및 64비트 OTP 레지스터 ABD ABCDI ABCDI ABCDI AB
DS1972 2D 1024비트 EEPROM 메모리 AB ABCDEI ABCDEF
GHI
ABCDEF
GHI
DS1973 23 4Kb EEPROM 메모리 ABDE ABCDE ABCDEF
GH
ABCDEF
GH
AB
DS1977 37 패스워드로 보호되는 32Kb (바이트) EEPROM AB ABCDE ABCDEF
GH
ABCDEF
GH
AB
DS1990A
DS1990R
01 1-Wire 어드레스 전용 AB AB AB AB AB
DS1991¹ 02 멀티키 iButton, 1152비트 보안 메모리 AB ABC ABC ABC AB
DS1992 08 1Kb NV RAM 메모리 ABDE ABCDE ABCDEF
GH
ABCDEF
GH
AB
DS1993 06 4Kb NV RAM 메모리 ABDE ABCDE ABCDEF
GH
ABCDEF
GH
AB
DS1994¹ 04 4Kb NV RAM 메모리 및 클록, 타이머, 알람 ABDE ABCDEI ABCDEF
GHI
ABCDEF
GHI
AB
DS1995 0A 16Kb NV RAM 메모리 ABDE ABCDE ABCDEF
GH
ABCDEF
GH
AB
DS1996 0C 64Kb NV RAM 메모리 ABDE ABCDE ABCDEF
GH
ABCDEF
GH
AB
DS2401 01 1-Wire 어드레스 전용 AB AB AB AB AB
DS2405¹ 05 단일 스위치 AB ABI ABI ABI AB
DS2404¹ 04 4Kb NV RAM 메모리 및 클록, 타이머, 알람 ABDE ABCDEI ABCDEF
GHI
ABCDEF
GHI
AB
DS2406
DS2407¹
12 1Kb EPROM 메모리, 2채널 어드레스 지정 가능 스위치 ABCE ABCDEI ABCDEI ABCDEI AB
DS2408 29 8채널 어드레스 지정 가능 스위치 AB ABI ABI ABI AB
DS2409¹ 1F 듀얼 스위치, 커플러 AB ABI ABI ABI AB
DS2411 01 1-Wire 어드레스 전용 AB AB AB AB AB
DS2413 3A 듀얼 채널 어드레스 지정 가능 스위치 AB ABI ABI ABI AB
DS2415 24 RTC AB AB ABI ABI AB
DS2417 27 인터럽트 내장 RTC AB AB ABI ABI AB
DS2422 41 고성능 Thermochron (온도)/Hygrochron (습도) 로거 AB ABCDEI ABCDEF
GHI
ABCDEF
GHI
AB
DS2423¹ 1D 외장 카운터가 있는 4Kb NV RAM 메모리 ABDE ABCDEI ABCDEF
GHI
ABCDEF
GHI
AB
DS2430A¹ 14 256비트 EEPROM 메모리 및 64비트 OTP 레지스터 ABD ABCDI ABCDI ABCDI AB
DS2431 2D 1024비트 EEPROM 메모리 AB ABCDEI ABCDEF
GHI
ABCDEF
GHI
AB
DS2450 20 쿼드 ADC AB ABI ABI ABI AB
DS2502 09 1Kb EPROM 메모리 ABCE ABCDE ABCDE ABCDE AB
DS2505 0B 16Kb EPROM 메모리 ABCE ABCDE ABCDE ABCDE AB
DS2506 0F 64Kb EPROM 메모리 ABCE ABCDE ABCDE ABCDE AB
DS2890¹ 2C 단일 채널 디지털 포텐쇼미터 AB AB ABI ABI AB
DS28E04-100 1C 4096비트 EEPROM 메모리, 2채널 어드레스 지정 가능 스위치 AB ABCDEI ABCDEF
GHI
ABCDEF
GHI
AB
DS28EA00 42 시퀀스 검출 및 PIO를 갖는 프로그래밍 가능 분해능 디지털 온도계 AB AB AB AB AB
DS28EC20 43 20Kb EEPROM AB AB AB AB AB

지원 음영 안내 지원 플래그
전체 지원 A. 1-Wire 링크 기본 지원
B. 1-Wire 네트워크 지원
C. 전송 메모리 바이트 읽기/쓰기 지원
D. 전송 메모리 패킷 쓰기/읽기 지원
E. 1-Wire 파일 구조 유형 AA 지원 (파일 구조 유형은 애플리케이션 노트 114: 1-Wire File Structure 참조)
F. 1-Wire 파일 구조 유형 AB 지원
G. 1-Wire 파일 구조 유형 BA 지원
H. 1-Wire 파일 구조 유형 BB 지원
I. 기타 소자별 지원
부분 지원
최소 지원
¹새로운 설계에서는 더 이상 사용되지 않음.

1-Wire 퍼블릭 도메인 (PD) 개요

1-Wire PD API가 제공하는 기능들은 전적으로 'C'로 작성된 것으로, TMEX API가 지원하지 않는 플랫폼에서 이용하기 위한 것이다. '1-Wire net'(또는 MicroLAN™)은 하나의 마스터 및 한 개 이상의 슬레이브 장치를 포함하는 단일 와이어 및 그라운드 네트워크이다. 이 API가 슬레이브 장치를 식별하고 이들 장치와 통신할 수 있도록 1-Wire 마스터를 생성한다. 이 API가 iButton을 포함해 모든 Maxim 1-Wire, 소자와 통신할 수 있도록, 모든 1-Wire, 전송, 파일 레벨 서비스를 제공한다. iButton 웹사이트 에서 이 API 킷 및 샘플 플랫폼 빌드를 이용할 수 있다.

이 API의 'C' 소스 코드는 이식이 가능하도록 설계되었으며, 특정 플랫폼을 위한 'TODO' (해야 할 일) 템플릿이 제공된다. 또한 Windows 64비트, Windows 32비트, Linux 등을 위한 다수의 플랫폼 구현 예시가 제공되며, 이들 플랫폼 구현을 이용한 다수의 애플리케이션 예제가 제공된다.

'General', 'userial', 'other'의 3가지 이식가능 소스 파일 세트가 이용된다. 첫 번째 파일 세트(general)는 범용으로서 기본 링크 1-Wire 통신 기능을 이용하는 플랫폼을 위한 것이다. 이들 파일은 최하위 수준으로서 하드웨어 종속적이다. 두 번째 이식가능 소스 파일 세트(userial)는, 사용자가 직렬 포트(RS-232)를 이용하고 'Universal Serial 1-Wire Line Driver Master: DS2480B' (userial)를 이용하려고 하는 것으로 가정한다. 이 칩이 직렬 포트를 통해 명령을 수신하고, 1-Wire 동작을 수행하고, 직렬 포트로 결과를 전송한다. 소스 코드가 의도하는 1-Wire 동작을 DS2480B에 대한 직렬 통신 패킷으로 변환한다. 플랫폼을 위해 제공해야 할 모듈로는 직렬 포트 읽기/쓰기 프리미티브 뿐이다. DS2480B가 모든 DS9097U 시리즈 직렬 어댑터에 이용되는 인터페이스 칩이다. 세 번째 이식가능 소스 파일 세트(other)는 특정 1-Wire 어댑터 기능을 다루는 것으로서 위의 두 범주에 속하는 않는 것들이다. 이의 한 예가 1-Wire 브리지 칩에 대해 DS2490 USB를 이용하는 USB 포트에 관한 것이다. 많은 경우에 이는 일반적인 빌드와 유사하지만 특별히 DS2490을 위해 수정한 것이다. 어느 파일 세트를 이용하든(general, userial, other) 결국에는 소프트웨어 개발자에게 동일한 API가 제공된다.

특히 이 애플리케이션 노트에서는 1-Wire Public Domain Kit의 공개 소스, 교차 플랫폼 libusb 빌드('other' 빌드)에 대해 설명한다. libusb는 공개 소스 USB 라이브러리로서 다수의 OS로 이식되었다. 이 1-Wire PD API의 특정 빌드가 필요한 libusb 기능을 구성하고, 이들 기능을 이용해 1-Wire PD API PD API를 구성할 수 있다.

아래 표는 이용 가능한 파일 세트다. 아래 표의 각 플랫폼을 위해 이들 파일 세트가 이미 들어가 있으며 다운로드할 수 있다.

표 5. 1-Wire 파일 세트 및 사전 빌드 바이너리
이식가능
소스 파일
세트 (빌드)
플랫폼 포트 설명
userial Win64, Win32, Linux, (기타 UNIX), DS550 COM DS9097U 1-Wire 직렬 포트 어댑터 및 기타 DS2480B 기반 솔루션(임베디드 포함)을 지원한다.
general Win64, Win32 LPT LPT 빌드는 Windows에서 DS1410E¹ 병렬 포트 어댑터를 지원한다.
DS550 마이크로프로세서 (µP) 포트 핀 The DS550 general 빌드는 µP 포트 핀을 이용한다.
other 'libusb' Win64, Win32, Linux, Macintosh, (기타 UNIX) USB DS9490 USB 1-Wire 어댑터 및 기타 DS2490 기반 USB 솔루션을 지원하며 해당 libusb 드라이버를 설치한다.
기타 'WinUsb' Win64, Win32 USB WinUSB 소자 드라이버와 함께 Windows에서 DS9490 USB 1-Wire 어댑터 및 기타 DS2490 기반 USB 어댑터를 지원한다.
기타 'wrapper' (TMEX) Win32 USB, COM, LPT TMEX API를 랩핑함으로써 Windows에서 멀티포트 지원이 가능하도록 한다(각각 DS9490, DS9097U, DS1410E¹).
기타 'multiport' Win64, Win32 USB, COM, LPT 로우 레벨 고유 Windows 드라이버와 직접 통신함으로써 멀티포트 지원을 제공한다.
주의: 최신 플랫폼 빌드에 관해서는 1-Wire Public Domain Kit 웹사이트를 참조한다.
¹DS1410E 병렬 포트 어댑터는 새로운 설계에서 사용되지 않음.

이들 이식가능 소스 코드 파일 세트가 동일한 1-Wire API 기능을 구현하며 상호교체가 가능하다. 그림 41-Wire 코드 기반 3.xx 버전에 이용 가능한 API이다. 비메모리 소자만의 기능은 숫자가 많아서 여기에 표시하지 않았다. 그림 4는 소스 파일이 제공하는 기능과 새로운 플랫폼에 필요한 모듈을 설명하고 있다.

PD 킷 다운로드에는 이식가능 'C' 모듈뿐만 아니라 1-Wire 통신을 수행하기 위한 마이크로프로세서 (µP) 어셈블리 예도 포함된다.

이 API의 파일 기능이 애플리케이션 노트 114: 1-Wire File Structure에서 정의한 1-Wire 파일 구조 유형 'AA'를 구현한다.

이 API의 명칭에서 알 수 있듯이, 이들 소스 코드가 퍼블릭 도메인에 가까운 라이센스로 제공된다. 그러므로 개발자는 이들 코드를 자유롭게 이용할 수 있으며, 제한 없이 애플리케이션에 적용할 수 있다.

SESSION
owAcquire - 1-Wire net을 획득한다.
owRelease - 획득한 1-Wire net을 해제한다.
LINK
owHasOverDrive - 어댑터가 overdrive 기능을 이용하는지 표시한다.
owHasPowerDelivery - 어댑터가 전력을 공급할 수 있는지 표시한다.
owHasProgramPulse - EPROM 프로그래밍 전압을 이용할 수 있는지 표시한다.
owLevel - 1-Wire net 라인 레벨을 Normal(5V 약한 풀업), Power Delivery(5V 강한 풀업), Program 레벨(12V EPROM 프로그래밍 레벨)로 설정한다.
owProgramPulse - EPROM 1-Wire 소자 쓰기를 위해 시간지정 프로그래밍 펄스를 전송한다.
owReadBitPower - 1비트를 읽고 선택적으로 전력을 공급한다.
owReadByte - 모두 1(0xFF)을 전송해서 1-Wire net 으로부터 8비트를 수신한다.
owSpeed - 1-Wire net 의 속도를 Normal(16kb) 또는 Overdrive(142kb)로 설정한다.
owTouchBit - 1-Wire net으로 1비트를 전송하고 수신한다.
owTouchByte - 1-Wire net으로 8비트를 전송하고 수신한다.
owTouchReset - 1-Wire net상의 모든 소자를 리셋하고 결과를 리턴한다.
owWriteByte - 1-Wire net으로 8비트를 전송하고 수신된 에코가 일치하는지 검사한다.
owWriteBytePower - 1-Wire net으로 8비트를 전송하고 전력을 공급한다.
NETWORK
owAccess - 현재 소자를 선택하고 특정 소자 명령을 위해 준비시킨다.
owFamilySearchSetup - 특정 제품군 유형 검색을 위해 검색(owNext)을 설정한다.
owFirst - 1-Wire net상의 첫 번째 1-Wire 소자를 검색한다.
owNext - 1-Wire net상의 그 다음 1-Wire 소자를 검색한다.
owOverdriveAccess - 현재 소자를 선택하고 속도를 Overdrive로 설정한다.
owSerialNum - 현재 선택된 소자의 등록번호(ROM 번호)를 검색하거나 설정한다
owSkipFamily - 최종적인 검색에서 검색된 제품군 유형의 모든 1-Wire 소자를 스킵한다.
owVerify - 현재 소자를 선택하고 이 소자가 존재하는지 검사한다(알람 옵션).
TRANSPORT
owBlock - 선택적 리셋을 이용해 1-Wire net으로 데이터 블록을 전송하고 수신한다.
owCanLockPage - 특정 메모리 뱅크가 로킹할 수 있는 페이지를 포함하는지 표시한다.
owCanLockRedirectPage - 특정 메모리 뱅크가 재지정이 불가능하도록 로킹할 수 있는 페이지를 포함하는지 표시한다.
owGetAlternateName - 대체 부품번호 또는 명칭을 표시한다.
owGetBankDescription - 메모리 뱅크의 스트링 설명을 표시한다.
owGetDescription - 1-Wire 소자 유형에 대한 간략한 설명을 표시한다.
owGetExtraInfoDesc - 추가 정보에서 보여주는 것들에 관한 설명을 표시한다.
owGetExtraInfoLength - 이 메모리 뱅크의 추가 정보의 길이를 바이트로 표시한다.
owGetMaxPacketDataLength - 패킷의 최대 데이터 길이를 바이트로 표시한다.
owGetName - 1-Wire 소자의 부품번호를 스트링으로 표시한다.
owGetNumberBanks - 특정 1-Wire 제품군 그룹의 메모리 뱅크 수를 표시한다.
owGetNumberPages - 특정 메모리 뱅크의 페이지 수를 표시한다.
owGetPageLength - 특정 메모리 뱅크의 raw 페이지 길이를 바이트로 표시한다.
owGetSize - 특정 메모리 뱅크 크기를 바이트로 표시한다.
owGetStartingAddress - 특정 메모리 뱅크의 물리적 시작 어드레스를 표시한다.
owHasExtraInfo - 이 메모리 뱅크의 페이지를 읽었을 때 추가 정보를 제공하는지 표시한다.
owHasPageAutoCRC - 메모리 뱅크가 페이지를 읽을 때 소자 생성 CRC 검증을 이용하는지 표시한다.
owIsGeneralPurposeMemory - 메모리 뱅크가 범용 사용자 메모리인지 표시한다.
owIsNonvolatile - 현재 메모리 뱅크가 비휘발성인지 표시한다.
owIsReadOnly - 메모리 뱅크가 읽기전용인지 표시한다.
owIsReadWrite - 메모리 뱅크가 읽기/쓰기를 위한 것인지 표시한다.
owIsWriteOnce - 메모리 뱅크가 EPROM과 같이 일회 쓰기를 위한 것인지 표시한다.
owNeedsPowerDelivery - 메모리 뱅크가 쓰기를 위해 ‘PowerDelivery’를 필요로 하는지 표시한다.
owNeedsProgramPulse - 메모리 뱅크가 쓰기를 위해 ‘ProgramPulse’를 필요로 하는지 표시한다.
owRead - 메모리 뱅크의 일부분을 raw 모드로 읽는다(패킷 이용 안함, CRC).
owReadPage - 메모리 뱅크의 전체 페이지를 raw 모드로 읽는다(패킷 이용 안함, CRC).
owReadPageCRC - 메모리 뱅크의 전체 페이지를 소자 생성 CRC 검증을 이용해 읽는다.
owReadPageExtra - ‘추가’ 정보를 포함해 메모리 뱅크의 전체 raw 페이지를 읽는다(패킷 이용 안함, CRC).
owReadPageExtraCRC - ‘추가’ 정보를 포함하고 소자 생성 CRC 검증을 이용해서 메모리 뱅크의 전체 raw 페이지를 읽는다.
owReadPagePacket - 메모리 뱅크의 페이지로부터 범용 데이터 패킷을 읽는다. (범용 데이터 패킷 구조에 관해서는 애플리케이션 노트 114: 1-Wire File Structure 참조).
owReadPagePacketExtra - ‘추가’ 정보를 포함해서 메모리 뱅크 페이지로부터 범용 데이터 패킷을 읽는다.
owRedirectPage - 메모리 뱅크가 재지정이 가능한 페이지를 포함하는지 표시한다.
owWrite - 메모리 뱅크의 일부분을 raw 모드로 쓴다.
owWritePagePacket - 메모리 뱅크 페이지에 범용 데이터 패킷을 쓴다.
FILE
owAttribute - 파일 속성을 변경한다.
owChangeDirectory - 현재 디렉토리를 변경한다.
owCloseFile - 파일을 닫는다.
owCreateDir - 디렉토리를 생성한다.
owCreateFile - 쓰기를 위해 파일을 생성한다
owCreateProgramJob - EPROM 프로그래밍 대기 작업을 기록하기 위한 쓰기 버퍼를 생성한다.
owDeleteFile - 파일을 삭제한다.
owDoProgramJob - 대기 중인 EPROM 프로그래밍 작업을 쓴다.
owFirstFile - 현재 디렉토리의 첫 번째 파일을 표시한다.
owFormat - 1-Wire 파일 구조 파일 시스템을 포맷한다.
owGetCurrentDir - 현재 디렉토리를 표시한다.
owNextFile - 현재 디렉토리의 그 다음 파일을 표시한다.
owOpenFile - 읽기를 위해 파일을 연다.
owReadFile - 열린 파일을 읽는다.
owReadFile - 파일에서 데이터를 읽는다.
owRemoveDir - 디렉토리를 제거한다.
owReNameFile - 파일 이름을 변경한다.
owWriteFile - 생성된 파일에 쓰기를 수행한다.
DEVICE
DoAtoDConversion - DS2450에서 A/D 변환을 수행한다.
ReadSwitch12 - DS2406 스위치의 상태를 읽는다.
readCounter - DS2423 1-Wire 칩의 특정 메모리 페이지와 관련된 카운터 값을 읽는다.
...(특정 소자 기능은 너무 많아 생략)
그림 4. PD API의 기능

예 1은 그림 3에서 설명한 API 활용 흐름에 따른 PD 코드이다. 작업 루프의 각각의 패스 1-Wire 네트워크상의 각 소자가 식별된다. 좀더 정교한 애플리케이션에서는 특정 소자 유형만을 검색하거나 이전 검색에서 검색된 소자 중에서 선택할 수 있다.

int rslt, portnum=0, doing_work=1;
char portString[50]; // set to platform appropriate port string

// work loop 
while (doing_work)
{
  // acquire the 1-Wire Net (SESSION)
  if (owAcquire(portnum, portString))
  {
   // find all devices (NETWORK)
   rslt = owFirst(portnum, TRUE, FALSE);
   while (rslt)
   {
     // do SOMETHING with device found (TRANSPORT/FILE/DEVICE)
     // . . .

     // find the next device (NETWORK)
     rslt = owNext(portnum, TRUE, FALSE);
   }

   // release the 1-Wire Net (SESSION)
   owRelease(portnum);
  }
  else
  {
   // Could not acquire 1-Wire network 
   // . . . 
  }

  // do other application work 
  // . . .
}
예 1. PD 코드 예

그림 5a그림 5b1-Wire PD 라이브러리의 두 세트를 각각 구성하는 C 언어 모듈이다. 'TODO' 기능은 라이브러리를 새로운 플랫폼으로 이식하기 위해 제공해야 하는 것들이다. 또한 'TODO' 기능을 구현하는 플랫폼 링크 파일 예들을 포함한다.

SESSION
owsesu.c
LINK
owllu.cds2480ut.cds2480.h
NETWORK
ownetu.ccrcutil.c (required to compile)
TRANSPORT
mbappreg.c mbappreg.h mbee.c mbee.h mbee77.c mbee77.h
mbeewp.c mbeewp.h mbeprom.c mbeprom.h mbnv.c mbnv.h
mbnvcrc.c mbnvcrc.h mbscr.c mbscr.h mbscrcrc.c mbscrcrc.h
mbscree.c mbscree.h mbscrex.c mbscrex.h mbscrx77.c mbscrx77.h
mbsha.c mbsha.h mbshaee.c mbshaee.h owtrnu.c pw77.c
pw77.h rawmem.c rawmem.h      
FILE
owcache.c owfile.c owfile.h owpgrw.c owprgm.c  
DEVICE
ad26.c ad26.h atod20.c atod26.c atod26.h cnt1d.c
humutil.c humutil.h jib96.c jib96.h jib96o.c ps02.c
ps02.h sha18.c sha33.c shadbtvm.c shadebit.c shaib.c
shaib.h swt05.c swt12.c swt12.h swt1c.c swt1c.h
swt1f.c swt29.c swt29.h swt3a.c swt3a.h temp10.c
thermo21.c hermo21.h time04.c time04.h weather.c weather.h
MISC UTILITY
ioutil.c owerr.c findtype.c ownet.h screenio.c sprintf.c
crcutil.c
TODO
다음 기능을 수행하는 직렬 인터페이스 모듈 제공:
BreakCOM* - 최소 2ms 동안 직렬 포트에 'BREAK'를 전송한다.
CloseCOM - 이전에 열린 직렬 포트를 닫는다. (일부 플랫폼의 경우 선택 사항)
FlushCOM* - 남아있는 모든 쓰기 동작이 입력 버퍼를 완료 및 소거하도록 한다.
msDelay* - 최소한 지정된 밀리 초만큼 지연시킨다.
msGettick - 밀리 초의 증가 카운터를 리턴한다. (일부 예제의 경우 선택 사항)
OpenCOM - 지정된 통신 직렬 포트를 연다. (일부 플랫폼의 경우 선택 사항)
ReadCOM* - 직렬 포트에서 지정된 수의 바이트를 읽는다.
SetCOMBaud - 직렬 BAUD 레이트를 지정된 레이트로 변경한다. (오버드라이브가 필요한 경우 선택 사항)
WriteCOM* - 지정된 수의 바이트를 직렬 포트에 쓴다.
* 기본 동작에 필요한 최소 기능
그림 5a. PD 'USERIAL' 구현

SESSION
(TODO 참조)
LINK
(TODO 참조)
NETWORK
ownet.ccrcutil.c (컴파일링 필요)
TRANSPORT
'owtrnu.c'가 'owtran.c'로 대체되고 나머지는 모두 USERIAL과 동일
FILE
USERIAL과 동일
DEVICE
USERIAL과 동일
MISC UTILITY
USERIAL과 동일
TODO
다음 기능을 수행하는 LINK 및 SESSION 인터페이스 모듈 제공:
owAcquire - 1-Wire net을 획득한다.
owRelease - 획득한 1-Wire net을 해제한다.
owHasOverDrive - 어댑터가 overdrive 기능을 이용하는지 표시한다.
owHasPowerDelivery - 어댑터가 전력을 공급할 수 있는지 표시한다.
owHasProgramPulse - EPROM 프로그래밍 전압을 이용할 수 있는지 표시한다.
owLevel - 1-Wire net 라인 레벨을 Normal(5V 약한 풀업), Power Delivery(5V 강한 풀업), Program 레벨(12V EPROM 프로그래밍 레벨)로 설정한다.
owProgramPulse - EPROM 1-Wire 소자 쓰기를 위해 시간지정 프로그래밍 펄스를 전송한다.
owReadBitPower - 1비트를 읽고 선택적으로 전력을 공급한다.
owReadByte - 모두 1(0xFF)을 전송해서 1-Wire net으로부터 8비트를 수신한다.
owSpeed - 1-Wire net의 속도를 Normal(16kb) 또는 Overdrive(142kb)로 설정한다.
owTouchBit* - 1-Wire net으로 1비트를 전송하고 수신한다.
owTouchByte - 1-Wire net으로 8비트를 전송하고 수신한다.
owTouchReset* - 1-Wire net상의 모든 소자를 리셋하고 결과를 리턴한다.
owWriteByte - 1-Wire net으로 8비트를 전송하고 수신된 에코가 일치하는지 검사한다.
owWriteBytePower - 1-Wire net으로 8비트를 전송하고 전력을 공급한다.
* 기본 동작에 필요한 최소 기능
그림 5b. PD 'GENERAL' 구현

설치

1-Wire PD API는 일련의 C 모듈로서 형식적인 설치를 필요로 하지 않는다. 빌드 예에서 볼 수 있듯이 필요한 모듈을 애플리케이션으로 곧바로 컴파일할 수 있다. 그러면서도 개발자가 이들 모듈을 Windows DLL 같은 로드가능 라이브러리에 결합할 수 있다.

일부 빌드는 고유의 1-Wire 어댑터 드라이버 또는 이에 해당하는 것을 필요로 한다. 대다수 OS 플랫폼이 직렬 포트 드라이버를 내장하므로, 1-Wire PD API의 userial 빌드가 다른 드라이버를 필요로 하지 않는다. 하지만 USB 및 병렬 포트 1-Wire 어댑터 지원을 위해서는 고유 또는 교차 플랫폼 드라이버를 설치해야 한다. 해당 드라이버 다운로드에 관해서는 온라인으로 이용할 수 있는l 1-Wire PD 킷 빌드에 관한 설명을 참조한다.

Java용 1-Wire API(OWAPI)의 개요

Java용 1-Wire API는 Java로 1-Wire 애플리케이션을 구축하기 위해 고도로 견고하고 객체 지향적인 토대로 설계되었다. 이를 이용해 프로그래머가 이식가능 교차 플랫폼 소프트웨어를 개발하고 1-Wire 통합 제품의 출시시간을 단축할 수 있다.

이 API는 다수의 Java 클래스 및 인터페이스로 구성된다. 이 1-Wire API의 특수한 Java 클래스 그룹의 하나가 컨테이너(OnewWireContainer 클래스)이다. 컨테이너를 통해 iButton을 포함한 특정 1-Wire 소자의 지원이 이루어진다. 이 API는 대다수 1-Wire 소자를 포괄하는 30개 이상의 컨테이너 유형을 포함한다. 각 컨테이너가 각 소자의 기능을 캡슐화하고 구현한다.

컨테이너가 물리적으로 1-Wire 어댑터에 해당되는 1-Wire 어댑터 클래스(DSPortAdapter 클래스)를 통해 1-Wire 소자와 상호작용한다. 제공자 클래스(OneWireAccessProvider)로부터 어댑터 인스턴스가 생성된다. 1-Wire 의 실제 구현은 플랫폼마다 다르지만 모두 동일한 인터페이스를 이용한다. 일부 플랫폼은 고유 드라이버를 이용하지만 대다수가 RXTX(교차 플랫폼 직렬 COM 포트 API)를 이용해 DS9097U-XXX 직렬 어댑터를 지원한다. 이 API는 RXTX 웹사이트에서 이용할 수 있다..

1-Wire API for Java Software Development KitiButton 웹사이트에서 이용할 수 있다. 1-Wire PD 킷과 마찬가지로 OWAPI를 위한 전체 Java 소스가 퍼블릭 도메인 라이센스로 제공된다.

그림 6은 이 API의 객체 생성 시퀀스이다. '제공자'가 '어댑터' 인스턴스(또는 enumeration)를 생성하면 어댑터가 소자 '컨테이너' 인스턴스를 생성할 수 있다. 그러면 소자에 대한 통신이 거의 전적으로 컨테이너를 통해 이루어진다.

Figure 6. OWAPI object creation.
그림 6. OWAPI 객체 생성

그림 7은 컨테이너의 공통된 특징이다. 메모리를 포함하는 소자가 각 메모리 뱅크를 위해 메모리 뱅크 인스턴스를 생성한다. 뱅크 세트의 특성에 따라 메모리가 뱅크로 분할된다. 예를 들어 어떤 뱅크는 휘발성이고 어떤 뱅크는 비휘발성일 수 있다. 아니면 어떤 뱅크는 범용 메모리이고 어떤 뱅크는 메모리 맵핑을 통해 소자의 기능을 변경할 수 있다.

Figure 7. OWAPI ONEWIRECONTAINER features.
그림 7. OWAPI ONEWIRECONTAINER의 특징

그림 8은 기본적인 OWAPI 클래스가 제공하는 기능들이다. 클래스 또는 패키지는 굵은 글씨로 표시되었다. 각 컨테이너가 각 소자 유형을 다루기 위해 하이 레벨 기능들을 이용하므로 어댑터의 LINK 레벨 기능들을 곧바로 호출할 수 없다.

SESSION
com.dalsemi.onewire.adapter.DSPortAdapter
beginExclusive - 1-Wire net의 독점적 사용 권한을 획득한다.
endExclusive - 1-Wire net의 독점적 사용을 해제한다.
LINK
com.dalsemi.onewire.adapter.DSPortAdapter
canBreak - 어댑터가 1-Wire ''브레이크'(긴 로우) 동작을 지원하는지 표시한다.
canDeliverPower - 어댑터가 '강한 풀업' 전력 공급을 지원하는지 표시한다.
canDeliverSmartPower - 어댑터가 '스마트' 전력 공급을 지원하는지 표시한다. '스마트' 전력 공급은 전력 소모가 감소했을 때 이를 탐지하고 자동으로 전력 공급을 중단하는 것을 말한다.
canFlex - 어댑터가 유연한 긴 라인 통신 타이밍을 지원하는지 표시한다.
canHyperdrive - 어댑터가 hyperdrive 통신 속도를 지원하는지 표시한다.
canOverdrive - 어댑터가 overdrive 통신 속도를 지원하는지 표시한다.
canProgram - 어댑터가 12V EPROM 프로그래밍 전압을 지원하는지 표시한다.
dataBlock - 1-Wire net으로 데이터 블록을 전송하고 수신한다.
getBit - 1-Wire net으로부터 단일 비트를 읽는다.
getBlock - 모두 1(0xFF)을 전송해서 1-Wire net으로부터 블록을 읽는다.
getByte - 모두 1(0xFF)을 전송해서 1-Wire net으로부터 바이트를 읽는다.
getSpeed - 현재 1-Wire 통신 속도를 읽는다.
putBit - 1-Wire net에 1비트를 쓴다.
putByte - 1-Wire net에 바이트를 쓰고 에코가 적절한지 검사한다.
reset - 모든 1-Wire 소자를 리셋한다.
setPowerDuration - 전력 공급 지속시간을 설정한다.
setPowerNormal - 전력 공급을 중단한다.
setProgramPulseDuration - 프로그램 펄스 지속시간을 설정한다.
setSpeed - 1-Wire 통신 속도를 설정한다.
startBreak - 1-Wire net에서 브레이크(로우)를 시작한다.
startPowerDelivery - 전력 공급을 시작한다.
startProgramPulse - 프로그램 펄스를 시작한다.
NETWORK
com.dalsemi.onewire.adapter.DSPortAdapter
excludeFamily - 검색에서 특정 제품군 그룹을 제외한다.
findFirstDevice - 1-Wire net상에서 자동 컨테이너 생성을 이용하지 않는 첫 번째 소자를 검색한다.
findNextDevice - 1-Wire net상에서 자동 컨테이너 생성을 이용하지 않는 그 다음 소자를 검색한다.
getAllDeviceContainers - 1-Wire net상에서 컨테이너를 이용하는 모든 소자를 검색한다.
getDeviceContainer - ‘현재’ 검색된 소자의 소자 컨테이너를 검색한다.
getFirstDeviceContainer - 첫 번째 소자를 검색하고 이 소자를 위한 컨테이너를 생성한다.
getNextDeviceContainer - 그 다음 소자를 검색하고 이 소자를 위한 컨테이너를 생성한다.
setNoResetSearch - 1-Wire 리셋을 발행하지 않도록 1-Wire net 검색을 설정한다.
setSearchAllDevices - 모든 소자를 포함하도록 1-Wire net 검색을 설정한다(알람 전용 제외).
setSearchOnlyAlarmingDevices - 알람 소자만 포함하도록 1-Wire net 검색을 설정한다.
targetAllFamilies - 모든 소자를 포함하도록 1-Wire net 검색을 설정한다.
targetFamily - 1-Wire net 검색이 특정 제품군 그룹을 대상으로 하도록 한다.
(com.dalsemi.onewire.container* 포함.)
isAlarming - 소자가 알람 상태인지 표시한다.
isPresent - 소자가 1-Wire net상에 존재하는지 표시한다.
select - 특정 소자 동작 명령을 위한 1-Wire net 소자를 선택한다.
TRANSPORT
com.dalsemi.onewire.container.MemoryBank
getBankDescription - 메모리 뱅크에 관한 텍스트 설명을 리턴한다.
getSize - 메모리 뱅크 크기를 바이트로 표시한다.
getStartPhysicalAddress - 메모리 뱅크의 시작 어드레스를 표시한다.
isGeneralPurposeMemory - 메모리 뱅크가 범용인지 표시한다(not memory mapped).
isNonVolatile - 메모리 뱅크가 비휘발성인지 표시한다.
isReadOnly - 메모리 뱅크가 읽기전용인지 표시한다.
isReadWrite - 메모리 뱅크가 읽기 및 쓰기 가능한지 표시한다.
isWriteOnce - 메모리 뱅크가 EPROM과 같이 일회쓰기를 위한 것인지 표시한다.
needsPowerDelivery - 메모리 뱅크가 쓰기를 위해 전력 공급을 필요로 하는지 표시한다.
needsProgramPulse - 메모리 뱅크가 쓰기를 위해 프로그램 펄스를 필요로 하는지 표시한다.
read - 해석 없이 메모리 뱅크를 읽는다(패킷 구조 이용 안 함).
setWriteVerification - API가 쓰기 후에 추가적인 검증을 실시하도록 설정한다.
write - 메모리 뱅크를 raw 모드로 쓴다(패킷 구조 이용 안 함).
com.dalsemi.onewire.container.PagedMemoryBank
getExtraInfoDescription - 이 뱅크에 관련된 추가 정보를 표시한다.
getExtraInfoLength - 각 페이지의 추가 정보 길이를 바이트로 표시한다.
getMaxPacketDataLength - 이 메모리 뱅크의 각 페이지에 적합한 ‘패킷’ 구조에 포함시킬 수 있는 데이터의 최대 길이를 표시한다.
getNumberPages - 이 메모리 뱅크의 페이지 수를 표시한다.
getPageLength - 이 메모리 뱅크의 raw 페이지 길이를 바이트로 표시한다.
hasExtraInfo - 이 메모리 뱅크가 각 페이지와 관련해 추가 정보를 포함하는지 표시한다.
hasPageAutoCRC - 메모리 뱅크의 페이지가 소자가 제공하는 CRC 검증을 이용하는지 표시한다.
readPage - 메모리 뱅크로부터 페이지를 읽는다.
readPageCRC - 소자 생성 CRC를 이용해 메모리 뱅크로부터 페이지를 읽는다.
readPagePacket - 메모리 뱅크 페이지로부터 패킷 구조를 읽는다.
writePagePacket - 메모리 뱅크 페이지에 패킷 구조를 쓴다.
com.dalsemi.onewire.container.OTPMemoryBank
canLockPage - 메모리 뱅크 페이지를 더 이상 쓰지 못하도록 로킹할 수 있는지 표시한다.
canLockRedirectPage - 메모리 뱅크의 재지정 기능을 추가적인 재지정이 불가능하도록 로킹할 수 있는지 표시한다.
canRedirectPage - 일회 쓰기 페이지를 업데이트하기 위한 방법으로 메모리 뱅크가 페이지를 재지정할 수 있는지 표시한다.
getRedirectedPage - 페이지가 재지정된 페이지 번호를 검색한다.
isPageLocked - 페이지가 추가적으로 쓰지 못하도록 로킹되었는지 표시한다.
isRedirectPageLocked - 페이지가 추가적인 재지정이 불가능하도록 로킹되었는지 표시한다.
lockPage - 페이지를 로킹한다.
lockRedirectPage - 페이지를 재지정하지 못하도록 로킹한다.
redirectPage - 페이지를 새로운 페이지로 재지정한다. 이로써 일회쓰기 소자를 업데이트할 수 있다.
FILE
com.dalsemi.onewire.utils.OWFile
java.io.File (JDK 버전 1.2용)과 동일한 기능들에 다음 기능들이 추가된다.
close - 파일을 닫고 그에 관련된 리소스를 해제한다.
format -OWFile에 제공된 소자와 관련된 1-Wire 파일 시스템을 포맷한다.
getFD - 파일을 소자와 동기화할 수 있도록 파일에 대한 OWFileDescriptor를 표시한다.
getFreeMemory - 1-Wire 파일 시스템에서 이용 가능한 메모리를 표시한다.
getLocalPage - 1-Wire 파일 시스템 페이지로부터 메모리 뱅크 로컬 페이지 레퍼런스를 표시한다.
getMemoryBankForPage - 제공된 1-Wire 파일 시스템 페이지 읽기/쓰기에 이용할 수 있는 메모리 뱅크 인스턴스를 표시한다.
getOneWireContainer - 파일 시스템을 구성하는 컨테이너를 표시한다.
getPageList - 파일을 구성하 1-Wire 파일 시스템 페이지 리스트를 표시한다.
com.dalsemi.onewire.utils.OWFileDescriptor
java.io.FileDescriptor (JDK 버전 1.2용)와 기능들이 동일하다.
com.dalsemi.onewire.utils.OWFileOutputStream
java.io.FileOutputStream (JDK 버전 1.2용)과 기능들이 동일하다.
com.dalsemi.onewire.utils.OWFileInputStream
java.io.FileInputStream (JDK 버전 1.2용)과 기능들이 동일하다.
DEVICE
com.dalsemi.onewire.container.*
6개 센서 유형 인터페이스를 포함한 30개 이상의 특정 소자 컨테이너 구현이다.
ADContainer - 아날로그-디지털 컨버터
ClockContainer - 클록
SwitchContainer - 스위치
TemperatureContainer - 온도 센서
PotentiometerContainer - 디지털 포텐쇼미터
HumidityContainer - 습도 센서
MissionContainer - 온도 및 습도 로거용
OneWireSensor - 1-Wire 센서
PasswordContainer - 패스워드 보호 메모리
com.dalsemi.onewire.application.*
SHA 및 1-Wire 태깅 유틸리티 클래스
*기본 동작에 필요한 최소 기능
그림 8. OWAPI의 기능

예 2는 그림 3의 API 활용 흐름에 따른 OWAPI 코드이다. 예 1의 PD 코드 예와 마찬가지로 작업 루프의 각 패스에 1-Wire 네트워크의 각 소자가 식별되며 더 정교한 애플리케이션에서는 하나의 소자 유형을 검색하거나 또는 이전에 검색된 소자 중에서 선택할 수 있다.

boolean doing_work=true;

// get the default adapter from the service provider
DSPortAdapter adapter = OneWireAccessProvider.getDefaultAdapter();

// work loop
while (doing_work)
{
  // get exclusive use of adapter (SESSION)
  adapter.beginExclusive(true);

  // clear any previous search restrictions (NETWORK)
  adapter.setSearchAllDevices();
  adapter.targetAllFamilies();
  adapter.setSpeed(adapter.SPEED_REGULAR);

  // enumerate through all the 1-Wire devices found (NETWORK)
  for (Enumeration owd_enum = adapter.getAllDeviceContainers();
    owd_enum.hasMoreElements(); )
  {
   // get a 'container' for each device 
   OneWireContainer owd = ( OneWireContainer ) owd_enum.nextElement();

   // do SOMETHING with device found (TRANSPORT/FILE/DEVICE)
   // . . . 
  }

  // end exclusive use of adapter (SESSION)
  adapter.endExclusive();

  // do other application work 
  // . . .
}
예 2. OWAPI 코드 예

1-Wire 태깅

1-Wire 센서가 숫자가 늘어나고 다양해짐에 따라, 1-Wire 네트워크를 관리하기가 어려워지고 있다. 예를 들어 ADC 같은 센서가 다양한 값을 측정하므로 센서를 태깅해서 기능을 기술할 수 있어야 한다. Java용 1-Wire 에는 XML을 이용한 1-Wire 태깅 방식이 이용된다. 이러한 태그를 이용해서 애플리케이션이 센서를 역동적으로 로드하고 구성할 수 있다. 이에 관해서는 애플리케이션 노트 158: 1-Wire Tagging with XML을 참조한다.

설치

그림 8에서 설명하는 API 호출을 구성하는 모든 모듈이 단일 jar 파일인 OneWireAPI.jar에 포함된다. 이 한 모듈을 해당 위치 또는 클래스패스(classpath)에 배치함으로써 전체 API가 제공된다. 다만 두 가지 예외로서, 특정 플랫폼을 위해 고유 또는 통신 API를 설치해야 하거나, 크기 제약으로 인해 전체 API를 이용하는 것이 바람직하지 않을 수 있다. 이러한 예외에 대해서는 OWAPI 킷에서 자세히 설명하고 있다.

1-Wire .NET (OW.NET) 개요

.NET 지원은 근본적으로 Java용 1-Wire API 로서 Microsoft의 J# 언어로 컴파일한 것이다. 모든 .NET 1-Wire애플리케이션은 OneWire.NET.dll만 참조하면 된다. 이는 C#, J#, VB.NET과 같은 최신 .NET 언어에 대한 지원을 포함한다. 1-Wire .NET 예는 iButton 웹사이트의 Software Development Kit (SDK) 다운로드를 참조한다.

1-Wire 애플리케이션이 적절히 동작하기 위해서는 OnewWire.NET.dll을 위해 PC에 다음과 같은 redistributable이 설치되어야 한다.
  1. 고유의 1-Wire 포트 어댑터 소자 드라이버. 이들을 1-Wire 드라이버라 하며 iButton 웹사이트에서 다운로드할 수 있다.
  2. Microsoft .NET 2.0 프레임워크
  3. Visual J# .NET 2.0 Redistributable
Pocket PC, PDA, 휴대전화, 셋톱박스 등을 위한 Compact .NET 프레임워크 1-Wire 지원을 위해서는 OnewWire.NET.dll의 새 링크 레이어 버전(만)을 이용할 수 있다. 이는 모두 C#로 작성되었다. 현재 이 버전을 위해서 OneWireContainer는 작성되지 않았으나 DSPortAdapter 클래스를 이용할 수 있다. 자세한 내용은 1-Wire 소프트웨어 토론 포럼을 참조한다.

OW.NET API는 TMEX API도 포함하고 있는 1-Wire 드라이버 패키지로 제공된다. 1-Wire 드라이버의 커스텀 설치 방법에 대한 자세한 내용은 애플리케이션 노트 1740: White Paper 6: 1-Wire Drivers Installation Guide for Windows를 참조한다.

1-Wire .NET Compact (OW.NET Compact) 개요

이 객체를 위한 인터페이스는 1-Wire .NET (OW.NET)과 동일하지만 세션, 링크, 네트워크 레이어만 구현된다. 이 객체는 공식적인 설치 배포판은 없지만 대신 단일 DLL(OneWireLinkLayer.dll)이고, 32/64비트 Windows 플랫폼에서 TMEX API와 직접 통신한다. DLL 파일은 로우 레벨 1-Wire 지원을 위해 2.0 .NET 애플리케이션과 함께 포함될 수 있다. 이 객체는 C#로 작성되었기 때문에 J# 2.0 .NET redistributable 패키지는 필요하지 않다.

TMEX API (TMEX) 개요

TMEX API는 언어 독립적 Windows 32비트 DLL로서 메모리 소자에 대한 제한적인 1-Wire 파일 구조 지원을 포함해서 모든 1-Wire 소자에 대한 기본적인 기능을 제공한다. 이 API는 동일 또는 다른 1-Wire 포트를 위해 경쟁하는 멀티프로세스, 멀티스레드 애플리케이션에 이용할 수 있도록 설계되었다. 이 API는 각각의 포트를 이용한 최대 16개 유형의 1-Wire 어댑터를 지원할 수 있으며, 또한 Maxim에서 개발한 모든 1-Wire 어댑터를 지원한다.

이 API의 최하위 레벨(최하위 레벨 소자 드라이버 레이어)은 Windows 플랫폼에서 Java용 1-Wire API를 위한 고유 드라이버로 이용된다. 1-Wire API 역시 Java용 1-Wire API를 기반으로 하므로 여기에도 이용된다. 그림 9는 다른 API가 TMEX API가 제공하는 고유 지원을 어떻게 이용하는지를 그림으로 보여준다. 이 그림은 실제의 드라이버 파일이름과 이들이 어떻게 층을 이루는지를 보여준다.

Maxim 웹사이트에서 또한 1-Wire Drivers installation package (TMEX API, OW.NET 라이브러리 포함)와 TMEX(및 부속 API)에 링크된 다수의 프로그램 예를 포함한 Software Developer's Kit을 이용할 수 있다.

TMEX SDK에서 제공되는 모든 예에 대해 소스 코드가 제공되지만, 로우 레벨 드라이버에 대한 소스 코드는 현재 제공되지 않는다. 그렇지만 드라이버를 제한 없이 재배포할 수 있다.

표 6은 현재 지원되는 1-Wire 어댑터와 각 어댑터의 특징이다.


표 6. 지원되는 TMEX 어댑터
어댑터 포트 특징
DS9490R, DS9490B USB 전력 공급 오버드라이브 RJ-11 또는 iButton 홀더 DS2401 ID
DS1410E¹ 병렬 전력 공급 오버드라이브 듀얼 iButton 홀더 DS2401 ID
DS1410D¹ 병렬 레거시 듀얼 iButton 홀더 DS2401 ID
DS9097U-009 직렬 전력 공급 오버드라이브 RJ-11 커넥터 DS2502 ID
DS9097U-S09 직렬 전력 공급 오버드라이브 RJ-11 커넥터
DS9097U-E25 직렬 전력 공급 오버드라이브 RJ-11 커넥터 EPROM 쓰기
DS1411 직렬 전력 공급 오버드라이브 단일 iButton 홀더
DS9097E¹ 직렬 레거시 RJ-11 커넥터 EPROM 쓰기
DS9097¹ 직렬 레거시 RJ-11 커넥터
DS1413¹ 직렬 레거시 단일 iButton 홀더
¹새로운 설계에서는 더 이상 사용되지 않음

TMEX 지원 Windows 플랫폼

Windows 2008, Windows 2003, Windows Vista, Windows XP SP2는 TMEX 지원이 가능하다. 여기에는 x86 (32비트) 및 x64 (64비트) 운영 체제 버전이 모두 포함된다. 이전의 Windows 운영 시스템 버전용 드라이버가 필요한 경우에는 TMEX 레거시 버전을 이용할 수 있지만 Maxim 웹사이트에서 모두 지원되지는 않는다. 1-Wire Drivers (which install the TMEX API libraries). 1-Wire 드라이버 4.00 또는 그 이전 버전을 다운로드(TMEX API 라이브러리 설치)한다. 1-Wire 드라이버 설치 패키지는 iButton: 1-Wire Drivers for Windows에서 이용 가능하다.

Figure 9. TMEX API drivers and other API connectivity.
그림 9. TMEX API 드라이버 및 기타 API 연결

그림 10은 TMEX API가 제공하는 기능을 열거한 것이다. 이 API는 특정 비메모리 소자 기능을 제공하지 않는다.

SESSION
TMEndSession - 1-Wire net을 해제한다.
TMExtendedStartSession - 1-Wire net의 독점적 사용을 요청한다.
TMValidSession - 현재 1-Wire net 세션이 유효한지 검사한다.
LINK
TMClose - 열린 포트를 위한 리소스를 해제한다(언제나 이용할 수 있는 것은 아님).
TMOneWireCom - 1-Wire net 속도를 Normal(16kb) 또는 Overdrive(142kb)로 설정한다.
TMOneWireLevel - 1-Wire net 라인 레벨을 Normal(5V 약한 풀업), Power Delivery(5V 강한 풀업), 또는 Program 레벨(12V EPROM 프로그래밍 레벨)로 설정한다.
TMProgramPulse - EPROM 프로그래밍을 위해 1-Wire net으로 시간지정 프로그래밍 펄스를 전송한다.
TMSetup - 포트와 어댑터가 동작하는지 검사한다.
TMTouchBit - 1-Wire net으로 1비트를 전송하고 수신한다.
TMTouchByte - 1-Wire net으로 1바이트를 전송하고 수신한다.
TMTouchReset - 1-Wire net상의 모든 소자를 리셋하고 결과를 리턴한다.
NETWORK
TMAccess - 현재 소자를 선택하고 특정 소자 명령을 수행하도록 준비시킨다.
TMAutoOverDrive - 드라이버가 Overdrive 속도를 자동으로 이용하거나 이용하지 않도록 설정한다.
TMFamilySearchSetup - 다음 검색(TMNext 또는 TMNextAlarm)에서 특정한 제품군 유형을 검색하도록 현재 검색 상태를 설정한다.
TMFirst - 1-Wire net상의 첫 번째 1-Wire 소자를 검색한다.
TMFirstAlarm - 1-Wire net상의 첫 번째 알람 1-Wire 소자를 검색한다.
TMNext - 1-Wire net상의 그 다음 1-Wire 소자를 검색한다.
TMNextAlarm - 1-Wire net상의 그 다음 알람 1-Wire 소자를 검색한다.
TMOverAccess - 현재 소자를 선택하고 속도를 Overdrive로 설정한다.
TMRom - 현재 선택된 소자의 등록번호(ROM 번호)를 검색하거나 설정한다.
TMSkipFamily - 최종 검색에서 검색된 제품군 유형을 스킵한다.
TMStrongAccess - 현재 소자가 존재하는지 검사한다.
TMStrongAlarmAccess - 현재 소자가 존재하고 알람 상태인지 검사한다.
TRANSPORT
TMBlockIO - 1-Wire 리셋이 이루어진 1-Wire net으로 데이터 블록을 전송하고 수신한다.
TMBlockStream - 1-Wire 리셋이 이루어지지 않은 1-Wire net으로 데이터 블록을 전송하고 수신한다.
TMExtendedReadPage - 소자 생성 CRC 검증을 이용해 메모리 뱅크 전체 페이지를 읽는다(모든 소자 유형에 이용할 수 있는 것은 아님)..
TMProgramByte - EPROM 기반 1-Wire 소자에 바이트를 프로그래밍한다.
TMReadPacket - 페이지로부터 범용 데이터 패킷을 읽는다. (범용 데이터 패킷 구조에 대한 설명은 애플리케이션 노트 114: 1-Wire File Structure 참조).
TMWritePacket - 페이지에 범용 데이터 패킷을 쓴다.
FILE
TMAttribute - 파일 또는 디렉토리 속성을 변경한다.
TMChangeDirectory - 현재 작업 디렉토리를 읽거나 변경한다.
TMCloseFile - 열려 있거나 생성된 파일을 닫아서 파일 핸들을 해제한다.
TMCreateFile - 쓰기를 위해 파일을 생성한다.
TMCreateProgramJob - EPROM 프로그래밍 대기 작업을 기록하기 위해 쓰기 버퍼를 생성한다.
TMDeleteFile - 파일을 삭제한다.
TMDirectoryMR - 하위 디렉토리를 생성하거나 제거한다.
TMDoProgramJob - 대기 중인 EPROM 프로그래밍 작업을 쓴다.
TMFirstFile - 현재 디렉토리의 첫 번째 파일을 검색한다.
TMFormat - 1-Wire 파일 구조 파일 시스템을 포맷한다.
TMNextFile - 현재 디렉토리의 그 다음 파일을 검색한다.
TMOpenFile - 읽기를 위해 파일을 연다.
TMReadFile - 열린 파일을 읽는다.
TMReNameFile - 파일이나 디렉토리 이름을 변경한다.
TMTerminateAddFile - AddFile'을 종료한다. 'AddFile'은 EPROM 소자의 특수한 파일 유형으로, 다시 쓰기를 수행하지 않고 추가할 수 있다.
TMWriteAddFile - EPROM 소자의 'AddFile'을 추가하거나 변경한다.
TMWriteFile - 생성된 파일에 쓰기를 수행한다.
DEVICE
없음
OTHER
TMGetTypeVersion - 어댑터 드라이버의 버전 정보를 표시한다.
Get_Version - 드라이버 버전을 표시한다.
그림 10. TMEX API 기능

예 4는 그림 3의 API 활용 흐름에 따른 TMEX 코드이다. 위의 마지막 세 예에서와 마찬가지로 단순 프로세스의 경우에는 작업 루프의 각 패스에 1-Wire 네트워크상의 각 소자를 식별하고, 좀더 정교한 애플리케이션의 경우에는 특정 소자 유형을 검색하거나 이전 검색에서 검색된 소자 중에서 선택할 수 있다.

int PortNum, PortType; // port number and type set for adapter present
long session_handle; // session handle
unsigned char state_buffer[5120];
int doing_work=1, did_setup=0;
short rslt;

// work loop 
while (doing_work)
{
  // aquire the 1-Wire Net (SESSION)
  session_handle = TMExtendedStartSession(PortNum,PortType,NULL);
  if (session_handle > 0)
  {
   // check to see if TMSetup has been done once
   if (!did_setup)
   {
     if (TMSetup(session_handle) == 1)
      did_setup = 1;
     else
     {
      // error setting up port, adapter may not be present
      // . . . 
     }
   }
   else
   {
     // find all devices (NETWORK)
     rslt = TMFirst(session_handle, state_buf);
     while (rslt > 0)
     {
      // do SOMETHING with device found (TRANSPORT/FILE/DEVICE)
      // . . .

      // find the next device (NETWORK)
      rslt = TMNext(session_handle, state_buf);
     }
   }

   // release the 1-Wire Net (SESSION)
   TMEndSession(session_handle);
  }
  else
  {
   // Could not acquire 1-Wire network 
   // . . . 
  }
  
  // do other application work 
  // . . .
}
예 4. TMEX 'C' 코드 예

설치

TMEX API는 위에서 설명한 1-Wire 드라이버 설치 패키지를 이용해 설치된다(이 패키지가 OW.NET API 라이브러리도 설치한다). 이 패키지는 Microsoft 설치 패키지로서 지원되는 1-Wire 어댑터를 위해 모든 Windows 드라이버 및 등록 키를 로드한다. 또한 맞춤형 설치를 위해 드라이버 및 API 파일을 온라인으로 이용할 수 있다. OneWireViewer는 대다수 1-Wire 소자 및 iButton을 실행하는 데모 프로그램이며 1-Wire 드라이버로 설치된다.

1-Wire 드라이버 및 OneWireViewer 데모에 관한 추가 정보는 iButton 웹사이트의 "Software Resources" 항목을 참조한다.

기타 툴

이 애플리케이션 노트에서 설명한 API가 1-Wire 소자와 통신하기 위해 이용 가능한 리소스의 많은 부분을 차지하지만 이것이 유일한 리소스는 아니다. 다음에서는 그 밖에 이용 가능한 리소스에 대해 살펴본다.

소프트웨어 인증 API

소프트웨어 인증은 소프트웨어 애플리케이션을 로킹해서 하드웨어 토큰이 존재하는지를 확인하는 것이다. 이 경우에 토큰은 사용자 워크스테이션에 연결된 iButton이다. 애플리케이션이 실행에 앞서 iButton이 존재하고 유효한지 검사한다. 또한 애플리케이션이 실행되는 동안 지속적으로 질의할 수 있다. 실제로는 이러한 유형의 애플리케이션에 여기서 설명하는 어떠한 API라도 이용할 수 있으나, 몇 가지 문제를 고려해야 한다. 외부 드라이버는 사용자가 드라이버를 교체할 수 있도록 함으로써 로킹을 불가능하게 하므로, 보안과 관련해 취약성을 증가시킨다. 1-Wire PD 킷의 소프트웨어 인증 API는 특별히 이러한 유형의 애플리케이션을 위한 것으로, 외부 드라이버 대신에 링크 가능한 모듈을 포함한다.

소프트웨어 인증 API는 소프트웨어 프로그래머의 기본 코드에 간편하게 통합할 수 있도록, 되도록 단순한 용례를 기반으로 했다. 이 API는 다음과 같은 3개 주요 서비스를 제공한다.
  • 1-Wire 소자 초기화
  • 소자 인증
  • 소자 소거 (더 이상 시스템의 유효 부분에 포함되지 않음)
Information on the 1-Wire Software Authorization Kit에 관해서는 iButton 웹사이트를 참조한다.

소프트웨어 예 검색 엔진

Maxim은 여기서 설명하는 API에 관한 1-Wire 소프트웨어 애플리케이션 예제를 지속적으로 개발하고 있다. 소프트웨어 개발 킷 SDK에 소개되지 않은 예는 온라인 Software Example Search Engine을 이용해 검색할 수 있다. 이들 예제(소스 코드 포함)의 대부분은 각각의 SDK에 추가되기 전에 먼저 검색 엔진에 추가(별도 다운로드)된다. 이 검색 엔진은 다음과 같이 소프트웨어 예제를 검색할 수 있다.
  • 1-Wire 소자 (Thermochron, SHA iButton 등)
  • 플랫폼 (Win32, Linux, TINI 등)
  • API (TMEX, 1-Wire 퍼블릭 도메인, 1-Wire .NET 등)
  • 프로그래밍 언어 (C, Java, C#, Visual Basic, Delphi 등)
검색 결과에는 프로그램 및 해당 다운로드 링크에 대한 설명이 포함된다.

1-Wire 소프트웨어 개발 커뮤니티

1-Wire 개발자 커뮤니티로 웹 기반 1-Wire 소프트웨어 개발자 포럼을 추천한다. 이 포럼의 취지는 1-Wire/iButton 제품의 애플리케이션 개발, 툴, 활용에 관한 논의 및 질의를 위한 것이다. Maxim의 애플리케이션 엔지니어가 이 포럼을 모니터하고 제기된 질문에 대해 대답한다. 또한 API 및 킷 다운로드 업데이트에 관한 정보를 게재한다.

3rd Party

1-Wire 소자를 위해 다양한 3rd Party 소프트웨어를 이용할 수 있다. 일부는 Maxim 인증 솔루션 개발자(ASD)가 개발한 애플리케이션으로 이들 업체 솔루션과 함께 구입할 수 있다. 전체 ASD 리스트 및 솔루션 검색기iButton 사이트에서 이용할 수 있으며 SourceForge.net과 같은 공개 포럼에서는 공개소스 프로젝트를 제공한다.

맺음말

이 애플리케이션 노트에서는 1-Wire API의 특성과 각 API의 지원 플랫폼 및 프로그래밍 언어에 대해 살펴보았다. 각 API와 해당 소자 유형에 대해 설명하는 표를 통해, 어느 API를 이용할지를 선택할 수 있다. 적절한 API를 선택함으로써1-Wire를 이용한 애플리케이션을 신속하게 구축할 수 있다.

1-Wire는 Maxim Integrated Products, Inc.의 등록상표이다.
iButton은 Maxim Integrated Products, Inc.의 등록상표이다.
Hygrochron은 Maxim Integrated Products, Inc.의 상표이다.
Java는 Sun Microsystems, Inc.의 상표이다.
Linux은 Linus Torvalds의 등록상표이다.
MicroLAN은 Maxim Integrated Products, Inc.의 상표이다.
Thermochron은 Maxim Integrated Products, Inc.의 등록상표이다.
TINI는 Maxim Integrated Products, Inc.의 등록상표이다.
UNIX는 The Open Group의 등록상표이다.
Visual J#는 Microsoft Corp.의 등록상표이다.
Windows Vista는 Microsoft Corporation의 상표이다.
Windows는 Microsoft Corporation의 등록상표이다.

We Want Your Feedback!


의견을 보내주세요!
위 내용이 도움이 되셨나요?
여러분의 의견을 기다립니다 — Maxim은 보내주신 정정이나 제안사항을 반영하고 있습니다. 이 페이지를 평가하고 의견을 보내주십시오.


자동 업데이트
관심있는 분야의 애플리케이션 노트가 나올 때 자동으로 업데이트 받고 싶으세요? 그렇다면 EE-Mail™을 신청하십시오.



추가 정보  APP 155: Jul 20, 2005
DS1425 다중 iButton 전체 데이터 시트
(PDF, 784kB)
DS1904 RTC iButton 전체 데이터 시트
(PDF, 216kB)
무료 샘플
DS1920 온도 iButton® 전체 데이터 시트
(PDF, 560kB)
DS1921G Thermochron iButton 전체 데이터 시트
(PDF, 504kB)
DS1921H 고분해능 Thermochron iButton 범위 H: +15°C ~ +46°C, Z: -5°C ~ +26°C 전체 데이터 시트
(PDF, 496kB)
DS1921Z 고분해능 Thermochron iButton 범위 H: +15°C ~ +46°C, Z: -5°C ~ +26°C 전체 데이터 시트
(PDF, 496kB)
DS1922L 8KB 데이터로그 메모리가 내장된 온도 로거 iButton 전체 데이터 시트
(PDF, 508kB)
DS1922T 8KB 데이터로그 메모리가 내장된 온도 로거 iButton 전체 데이터 시트
(PDF, 508kB)
DS1923 8KB 데이터 로그 메모리가 내장된 Hygrochron 온도/습도 로거 iButton 전체 데이터 시트
(PDF, 524kB)
DS1963L 4kbit Monetary iButton 전체 데이터 시트
(PDF, 828kB)
DS1963S SHA iButton
DS1971 256비트 EEPROM iButton® 전체 데이터 시트
(PDF, 296kB)
무료 샘플
DS1973 4Kb EEPROM iButton® 전체 데이터 시트
(PDF, 268kB)
무료 샘플
DS1977 비밀번호 보호 기능이 내장된 32KB EEPROM iButton 전체 데이터 시트
(PDF, 344kB)
DS1982 1Kb Add-Only iButton® 전체 데이터 시트
(PDF, 708kB)
무료 샘플
DS1985 16Kb Add-Only iButton® 전체 데이터 시트
(PDF, 708kB)
무료 샘플
DS1986 64Kb Add-Only iButton® 전체 데이터 시트
(PDF, 688kB)
DS1990A 시리얼 넘버 iButton 전체 데이터 시트
(PDF, 200kB)
무료 샘플
DS1990R 시리얼 넘버 iButton 전체 데이터 시트
(PDF, 392kB)
무료 샘플
DS1991 멀티키 iButton 전체 데이터 시트
(PDF, 744kB)
DS1992 1Kb/4Kb 메모리 iButton® 전체 데이터 시트
(PDF, 348kB)
무료 샘플
DS1993 1Kb/4Kb 메모리 iButton® 전체 데이터 시트
(PDF, 348kB)
무료 샘플
DS1994 4Kb + 타임 메모리 iButton® 전체 데이터 시트
(PDF, 732kB)
DS1995 16-kbit 메모리 iButton 전체 데이터 시트
(PDF, 68kB)
DS1996 64-kbit 메모리 iButton® 전체 데이터 시트
(PDF, 352kB)
DS2401 실리콘 시리얼 넘버 전체 데이터 시트
(PDF, 472kB)
무료 샘플
DS2404 EconoRAM 타임 칩 전체 데이터 시트
(PDF, 1.5MB)
DS2405 주소지정이 가능한 스위치 전체 데이터 시트
(PDF, 436kB)
무료 샘플
DS2406 듀얼 주소지정 가능 스위치 및 1Kb 메모리 전체 데이터 시트
(PDF, 660kB)
무료 샘플
DS2407 주소지정이 가능한 듀얼 스위치 및 1kbit 메모리 전체 데이터 시트
(PDF, 1.2MB)
DS2408 1-Wire 8채널 주소지정이 가능한 스위치 전체 데이터 시트
(PDF, 656kB)
무료 샘플
DS2409 MicroLAN 커플러 전체 데이터 시트
(PDF, 428kB)
DS2411 VCC 입력 기능이 있는 실리콘 시리얼 넘버 전체 데이터 시트
(PDF, 476kB)
무료 샘플
DS2413 주소 지정이 가능한 1-Wire, 듀얼 채널 스위치 전체 데이터 시트
(PDF, 252kB)
무료 샘플
DS2415 1-Wire 타임 칩 전체 데이터 시트
(PDF, 256kB)
DS2417 인터럽트 기능이 내장된 1-Wire 타임 칩 전체 데이터 시트
(PDF, 164kB)
무료 샘플
DS2422 8KB 데이터로그 메모리가 내장된 1-Wire® 온도/데이터 로거 전체 데이터 시트
(PDF, 500kB)
DS2423 카운터가 내장된 4kbit 1-Wire RAM 전체 데이터 시트
(PDF, 588kB)
DS2430A 256비트 1-Wire EEPROM 전체 데이터 시트
(PDF, 1.6MB)
무료 샘플
DS2431 1024비트 1-Wire EEPROM 전체 데이터 시트
(PDF, 508kB)