임베디드/고추건조기

1-wire, 프로토콜

twoweeks-within 2024. 12. 6. 15:52

접근법
어디다 사용 할까?
굳이 왜 사용 할까?

1-wire 통신
 > 딱 두선으로 전원공급 + 양방향 통신 가능
// POE 있으면 좋음
   > 전원공급이 됨

 nomal power mode / parasite power mode

1. 장거리는 힘듦 ( 노이즈에 약함 )
 > 신호선이 하나  > GPIO 
선이 길어질수록 전압 떨어짐 > 멀리까지 전달x

2. 주소 체계 방식
 하나의 GPIO로 여러 칩을 연결함
  > 어떤 칩이 보냈는지 알아내기 위해 
     > 주소 체계 방식 사용

3. 빠른 속도 불가 (time base)
 클럭이 없음.. >time base (baud rate)

4. 간단해서 많이 사용 + 혼합 사용도 가능

프로토콜
1. 물리적인 통식 방식만을 규정한 프로토콜
   SPI, 
2. 물리적 + 소프트웨어 적인 규칙 까지 정한 프로토콜
   1- wire
3. 소프트웨어 적인 규칙만 정의한 프로토콜
    http, 모드버스, tcp
 > 4. 레이어(상하관계) 가 있는 프로토콜
 ex) tcp 위에 http
     
1-wire
전압 + 시간 을 보내야함
ex) 전압
3v - 1
4v - 2
5v- 3
>> 노이즈에 말도안되게 취약
     전선의 길이에도 취약 ( 전선이 길수록 전압 하강)
ex) 전압
5v, 0v 둘만 사용
 

 

 

 

평소 HIGH > MASTER
initialization timming ( 시작 )
 > LOW , 480μs ( 전압 + 시간 )
 > HIGH , 15~60 μs ( slave칩 응답 대기, 
// 실제로는 1010 딱딱 떨어지지않음)
  > SLAVE chip 
  > HIGH , 60~240μs 

명령어 종류
마스터가 통신 시작을 알림 > presence pulse 수신 
 > 명령어
slave : ROM code(주소)를 갖는다 

ROM command : 장치를 선택하기위한
Function commnad :  장치에게 특정동작 수행하도록

ROM명령어 종류
Search ROM : 0xF0
  1-wire에 연결된 모든 slave 장치들의 ROM code (주소) 를 읽는다
Match ROM : 0x55
 > 64bit ROM code를 보냄 
    > 이에 맞는 slave에 접근
    > 나머지 slave : reset pulse 대기
Skip ROM : 0xCC
   모든 slave 장치에게 동시에 comand를 보냄
Alarm search : 0xEC
slave 장치의 alarm flag가 set인지 확인

Function 명령어
  제조사마다 다름 , 프로토콜에 따라 Function 까지 정의된 경우가 있음
 > 그러면 복잡혀

DS18B20 의 메모리는 scratchpad 라고 부름
 메모리는 우리가 생가가하는 물리적인 메모리가 아닌경우가 많음
ex) 1~10000번지 array 를 만들어버리고
     1000번지라고 1000번지에 접근하는것이 아니라
     a[3] 을 1000번지라고 퉁침

Conver T : 0x44
온도의 변환 시작.
신호선으로 전원 공급 > HIGH >온도변환중 전원공급
[온도의 변환시간]
93.75ms (9bit) - 750ms (12bit)
  >컴퓨터에게 있어서는 엄청나게 느린시간..
 > 절대 빠른 통신 방법이 될 수 없음

Write scratchpad : 0x4E
3byte 의 데이터를 장치의 scaratchpad에 씀

Read scratchpad : 0xBE
scaratchpad값을 읽어옴

copy scratchpad : 0x48
 값을 EEPROM으로 저장 
   > 전원필요
> 신호선을 10μs 동안 HIGH 유지

recall E^2 : 0xB8
현재 alarm 쓰레스 홀드 값(TH, TL)  configuration data
  > EEPROM에서 불러옴 > scratchpad 2,3,4 byte에 기록
// 쓰레스 홀드 : 화를 내게 하는 기준값 

read power supply : 0xB4
전원공급 출처 확인 VDD핀 or 신호선

데이터 주고 받는 방법

  한 slot (간격)에 한 bit 를 보냄
  slot 의 시간 간격 : 1μs 이상

  0 전송 : 60~120μs LOW
  1 전송 : 1μs : LOW

  시간에 따라 0,1 구분
  slave : 15~60μs 사이에 샘플링후 값 읽기
  
  + slave : Master가 1μs 이상 LOW 로 내려야 전송가능
  + slave : 0 표현 >15μs 동안만 LOW로 내릴 수 있음
   > Master 는 15μs 동안 값을 읽어와야함

 

 

 >> 소스에 다 있긴함

'임베디드 > 고추건조기' 카테고리의 다른 글

온도센서 검증  (0) 2024.12.08
Rom search  (0) 2024.12.07
온도센서  (0) 2024.12.05
GPIO >SPI  (0) 2024.12.03
FND 분석  (0) 2024.12.02