반응형 전자/통신83 I2C 통신 프레임 데이트 쓰기 I2C 통신에서 데이터 쓰기 통신 프레임의 예는 다음과 같다. 데이터를 쓸 때는 R/W 비트가 0이다. A는 Slave 측에서 전송하는 비트이다. control register는 레지스터 주소이고 data for register D[7:0]는 레지스터에 쓰는 데이터이다. 데이트 읽기 I2C 통신에서 데이터 읽기 통신 프레임의 예는 다음과 같다. MODE1 register의 AI (Auto-Increment) 비트에 1을 쓰면 MODE1 register부터 차례대로 데이터를 읽을 수 있다. ☞ EEPROM I2C 통신 프레임 2022. 2. 8. RS-485 최대 연결 노드 RS-485 표준에서 연결할 수 있는 최대 노드 개수는 32개이다. IC 업체에는 표준보다 더 많은 노드를 연결할 수 있는 IC를 출시하고 있다. 1/2 UL 제품은 최대 64개까지 연결할 수 있고 1/4 UL 제품은 128 노드, 1/8 UL 제품은 256 노드까지 연결할 수 있다. 하지만, IC에서 Fail-safe 기능이 없다면 버스에 풀업/풀다운 저항을 달아야 하는데 풀업/풀다운 저항은 약 20노드의 부하에 해당한다. 최대 노드 개수는 다음과 같이 계산한다. RS-485 표준을 따르는 1 UL 제품에 풀업/풀다운 저항을 단다면 최대 노드수는 12개가 된다. 1/2 UL 제품에 풀업/풀다운 저항을 단다면 최대 노드수는 24개 ( =(32-20)/(1/2) )가 된다. 1/4 UL 제품에 풀업/풀다운.. 2022. 1. 10. RS-485 통신 거리 RS-485의 최대 통신거리는 속도에 따라 달라진다. 통신속도가 빨라지면 통신거리는 줄어든다. 통신속도에 따른 통신거리는 다음과 같다. 10Mbps 속도일 때 최대 통신거리는 약 40ft (12m)이다. 1Mbps 속도일 때 최대 통신거리는 약 400ft (120m)이다. 200kbps 속도일 때 최대 통신거리는 약 2000ft (600m)이다. 100kbps 속도일 때 최대 통신거리는 약 4000ft (1200m)이다. TI 자료에 나오는 지터에 따른 통신거리는 다음과 같다. ☞ 지터란? 2021. 12. 20. UART 통신 속도 UART의 표준 통신속도는 다음과 같다. 300, 600, 1200, 2400, 4800, 9600, 19200, 38400, 57600, 115200, 230400, 460800, 921600 PL2303에서 기본적으로 지원하는 속도는 다음과 같다. FT232는 1000000과 같은 비표준 속도도 사용할 수 있다. 2021. 12. 20. DMX512-A DMX512은 2004년 ANSI로 표준화되었다. DMX512의 ANSI 표준은 2008년 개정되었는데 표준명은 "E1.11-2008 USITT DMX512-A"이다. 이것을 줄여서 DMX512-A라고도 한다. 2021. 12. 15. RS-485 리피터 회로 RS-485의 리피터 회로는 다음과 같다. 초기상태에는 양단 트랜시버의 R이 모두 High가 된다. 어느 한쪽에서 R이 Low로 신호가 들어오면 반대편 DE가 High가 되어서 반대편으로 출력이 나간다. 저항과 캐패시터의 시정수에 따라 DE를 High로 유지하는 시간이 결정된다. 위 회로에 사용된 부품은 다음과 같다. DD 1N4448 CD 100pF RD 10kΩ 자세한 설명은 여기에서 볼수 있다. 2021. 9. 25. RS-232 / RS-422 / RS-485 커넥터 핀맵 MOXA 제품의 RS-232 / RS-422 / RS-485 D-sub 커넥터 핀맵은 다음과 같다. 커넥터는 male 타입이다. RS-232의 핀은 표준화되어 있지만 RS-422과 RS-485의 핀은 표준화되어 있지 않다. Female 타입의 RS-232 커넥터는 2번이 TXD이고 3번이 RXD이다. Male 타입과 Female 타입의 RS-232 커넥터 핀은 서로 크로스되어 있어 바로 연결하여 사용할 수 있다. ☞ CAN 커넥터 2021. 9. 24. RS-232의 RTS CTS DTR DSR 신호 컴퓨터의 RTS는 출력신호이다. 컴퓨터의 CTS는 입력신호이다. 2대의 컴퓨터에서 RTS와 CTS는 서로 연결된다. 컴퓨터 DTR은 출력신호이다. 컴퓨터의 DSR은 입력신호이다. 2대의 컴퓨터에서 DTR와 DSR는 서로 연결된다. RTS 출력신호는 RS-485에서 버스 제어권을 얻기위해 사용되기도 한다. C#의 SerialPort 클래스에는 DTR와 RTS 신호를 출력할 수 있고 (DtrEnable, RtsEnable) CTS, DSR, DCD 값을 읽을 수 있다 (CtsHolding, DsrHolding, CDHolding) USB-UART 변환 IC인 FT-232의 핀은 다음과 같다. ☞ RS-232 핀 배열 2021. 9. 14. UTP Cat 5e 스펙 UTP 카테고리 5e의 스펙은 다음과 같다. 종류 특성 특성 임피던스 100옴 저항 0.188옴/m 이하 Propagaton speed 0.64c Propagation delay 4.80~5.30ns/m Delay skew (100MHz이하) 0.20ns/m 이하 캐패시턴스 (800Hz) 52pF/m 인덕턱스 525nH/m 차단주파수 50323Hz 전선 24 AWG (0.205SQ) 피복두께 0.245mm 동작온도 -55 ~ 60도 최대전류 0.577A 최대 DC 전압 125V (PoE에서는 57V 사용) ☞ UTP 케이블 카테고리 2021. 9. 11. RS-485 통신의 Common mode 전압 RS-485 통신 표준에 정의된 Common mode 전압의 범위는 -7 ~ +12V이다. 다음 그림과 같이 2개의 노드가 연결되었을 때 양단의 그라운드 차이가 ±7이고 드라이버의 전압이 0~5V라고 하면 통신선에 걸리는 전압은 최소 -7V가 되고 최대 +12V가 된다. 2021. 9. 4. 블루투스 모듈 HC-06 명령어 블루투스 모듈 HC-06의 명령어는 다음과 같다. AT 응답 : OK AT+VERSION 응답 : OKlinvorV1.8 AT+NAMEmyname 응답 : OKsetname AT+PIN6789 응답 : OKsetPIN 초기 비밀번호는 1234이다. 통신속도는 1200 bps에서 1382400 bps까지 설정할 수 있다. 초기 속도는 9600 bps이다. AT+BAUD1 응답 : OK1200 AT+BAUD2 응답 : OK2400 AT+BAUD3 응답 : OK4800 AT+BAUD4 응답 : OK9600 AT+BAUD5 응답 : OK19200 AT+BAUD6 응답 : OK38400 AT+BAUD7 응답 : OK57600 AT+BAUD8 응답 : OK115200 AT+BAUD9 응답 : OK230400 AT+.. 2021. 9. 2. USB 케이블 길이 USB 표준의 케이블 길이는 다음과 같다. USB 1.0 : 3m USB 2.0 : 5m USB 3.2 Gen 1 : 2~3m USB 3.2 Gen 2 : 3m USB 3.3 Gen 2x2 (USB-C) : 3m USB 4 Gen (USB-C) : 0.8m USB 리피터를 사용하면 거리를 몇 십미터까지 늘릴 수 있다. 2021. 8. 29. USB UART 변환 IC 사용 주의사항 USB UART 변환 IC는 대표적으로 Prolific의 PL2303과 FDTI의 FT232가 있다. Prolific은 대만 업체이고 FDTI는 영국 업체이다. 보통 FT232가 PL2303보다 좋고 조금 더 비싸다. PL2303은 단종된 모델도 많고 드라이버가 제대로 동작하지 않는 경우가 있다. PL2303은 1Mbps와 같은 비표준 속도를 지원하지 않는 경우가 많다. USB-RS232/422/485 컨버터에 위의 IC가 내장되는데 많은 경우 저가의 PL2303을 사용한다. 하지만 FT232를 사용하는 모델이 더 안정적이다. 최대 속도가 921.6kbps 인 경우 PL2303일 가능성이 높고 최대 속도가 3Mbps 이상일 경우 FT232일 가능성이 높다. FT232은 마우스나 키보드 또는 다른 USB-.. 2021. 8. 26. MCU의 UART 통신 속도 에러 계산 MCU의 클럭과 UART 통신속도는 서로 맞아야 에러가 적게 발생한다. 230400bps 속도를 설정할 때 실제 설정된 속도가 230216bps라면 에러율은 다음과 같이 계산한다. (230216 - 230400) / 230400 x 100 = -0.08 [%] 2021. 8. 26. USB-UART 컨버터 IC (FT232R)의 통신 속도 USB-RS232/422/485 커버터에 많이 사용하는 FT232R의 최대 속도는 3Mbps이다. 내부 48MHz을 14비트 스케일하여 사용한다. 설정가능 범위는 183 ~ 3Mbps이며 표준 속도뿐만 아니라 비표준 속도로 설정 가능하다. FT232R 내부에서 속도는 다음과 같이 계산한다. Baud rate = 3000000 / ( n + x) 여기서 n은 14비트 값으로 이고 x는 0.125, 0.25, 0.5, 0.625, 0.75, 0.875로 설정할 수 있다. PC 프로그램에서 통신 설정을 하면 드라이버에서 표준 또는 비표준 속도에 상관없이 자동으로 계산하여 설정한다. 3Mbps까지 사용가능한 USB-RS232/422/485 커버터는 보통 FT232 칩을 사용한 모델이다. PL2303을 사용한 컨.. 2021. 8. 26. 이더캣(Ethercat) 통신 개요 EtherCAT (Ethernet for Control Automation Technology)는 이더넷 기반의 필드버스이다. IEC61158로 표준화 되어 있고 소프트 또는 하드 실시간 통신에 사용된다. EtherCAT은 마스터-슬레이브 구성을 가진다. EtherCAT의 데이터 업데이트 시간은 100us 이하이다. 예를들면 100개의 서보 드라이버가 연결되었을 때 10kHz 주기로 데이터를 업데이트할 수 있다. 물리계층은 100BASE-TX 또는 100BASE-FX를 사용한다. 슬레이브에 EtherCAT을 구현하기 위해서는 EthreCAT 전용 IC를 사용하거나 ASIC 또는 FPGA를 사용해야 한다. 또는 EtherCAT 기능이 내장된 MCU을 사용할 수도 있다. 이더캣은 이더넷 통신을 사용한다. 즉.. 2021. 8. 21. RS-485 풀업/풀다운 저항값 계산 RS-485/422에서 Failsafe를 외부에서 구현하기 위해서는 외부에 풀업/풀다운 저항을 설치해야 한다. 풀업/풀다운 저항은 버스에 0.2V 이상이 걸리도록 선정해야 한다. 풀업/풀다운 저항은 전원과 그라운드에 각각 1개씩 설치한다. 풀업/풀다운 저항값 RB는 다음과 같이 계산한다. 여기서, Z0는 종단저항으로 120Ω이다. VAB는 0.2 이상으로 0.25 정도를 사용한다. VBUS-min는 전원 전압에서 VAB를 뺀 값이다. 즉, 5V 전원이라면 4.75V(=5-0.25)이고 3.3V 전원이라면 3.05V(=3.3-0.25)이다. 예를 들면, 5V 전원이라면 RB는 528Ω이고 3.3V 전원이라면 339Ω이다. 2021. 8. 10. RS-485 전압 레벨 RS-485 표준에서 드라이버의 출력 전압은 54Ω 부하에서 최소 ±1.5V 이상이 되어야 한다. +일때 1일고 -일때 0이다. 리시버 입력 전압은 최소 ±200mV부터 검출할 수 있어야 한다. +일때 1일고 -일때 0이다. RS-485 표준에는 리시버의 전압이 -0.2 ~ +0.2V일 때의 동작이 정의되어 있지 않다. 그래서, 모든 노드의 드라이버가 Disable 되었을 때 문제가 되고 별도의 풀업/풀다운 저항을 달아야 한다. Failsafe 기능이 있는 IC는 풀업/풀다운 저항이 없어도 된다. Failsafe 기능이 있는 IC의 리시버 입력 전압은 다음과 같다. 표준에서 정의되어 있지 않는 전압 구간인 -0.02V 이상에서 H를 출력한다. 2021. 8. 5. RS-485 표준 RS-485 표준에 나온 주요 특징은 다음과 같다. 버스의 컴먼모드 전압 범위는 -7 ~ +12V이다. 컴먼모드 전압이 ±7이고 동작전압은 0~+5V이기 때문에 전체 전압 범위가 -7 ~ +12V이다. 최대 32개 노드를 연결할 수 있다. 40피트(120m)에서 최대 속도는 10Mbps이다. 최대 거리는 4000피트(1200m)이고 이 때 속도는 100kbps이다. 드라이버는 54옴 부하에서 최소 1.5V 이상이 되어야 한다. 리시버는 ±200mV까지 검출할 수 있어야 한다. 2021. 7. 17. UART에서 왜 9600 baud rate을 사용할까? RS-232, RS-422, RS-485 등에 사용되는 UART에서 9600 baud를 많이 사용한다. 9600은 어디에서 왔을까? 초기의 전화 모뎀은 300 baud 이었다. 이후 300의 배수인 1200, 2400, 9600 등을 발전하였다. 초기 전화 모뎀이 300 baud인 이유는 20세기초 손으로 입력하여 사용했던 텔레타이프라이터(Teletypewriter)에서 가장 많이 사용된 속도가 75 baud였다. 그래서 75의 4배인 300을 초기 전화 모뎀에 사용하였다. ☞ UART 표준 속도 2021. 7. 17. RS-485에 연결할 수 있는 최대 노드 개수 RS-485 표준에서는 120옴 종단저항 2개를 연결한 버스에서 연결할 수 있는 최대 노드 개수를 32개로 정하고 있다. 노드 개수가 제한되는 이유는 리시버의 임피던스 때문으로 노드가 증가하면 전체 임피던스가 감소하여 드라이버 한계를 넘기 때문이다. 표준 리시버 임피던스는 12k옴이다. 하지만 RS-485 칩에 따라 Unit Load가 작은 모델이 있다. Unit Load가 1이면 표준과 같은 상태로 리시버 입력 임피던스가 12k옴이고 Unit Load가 감소하면 입력 임피던스가 증가한다. Unit Load가 감소하면 그에 비례하여 연결할 수 있는 노드가 증가한다. Unit Load이 0.5이면 64개 노드를 연결할 수 있고 Unit Load가 0.25이면 128개를 연결할 수 있다. 외부에 Failsa.. 2021. 7. 15. RS-485 그라운드 방법 RS-485의 그라운드는 다음과 같이 연결해야 한다. 회로의 그라운드와 프레임 그라운드는 저항을 달아 그라운드 루프가 생기지 않도록 해야 한다. 위 방식은 그라운드 루프에 저항을 넣어 그라운드 루프 전류를 제한했지만 그래도 그라운드 루프가 있다. 보다 좋은 방식은 다음과 같이 회로를 분리하는 것이다. 왼쪽 회로는 회로가 분리되어 있지 않고 오른쪽 회로는 회로가 트래스와 포토 커플러 등으로 분리되어 있다. RS-485에서 멀티 드랍으로 여러 노드를 연결할 때는 다음 그림과 같이 한 노드는 회로를 분리시키지 않아 신호 그라운드가 프레임 그라운드와 연결되고 나머지 노드는 회로를 분리 시켜 신호 그라운드가 프레임 그라운드와 연결되지 않도록 한다. 마스터-슬레이브 구조에서 마스터는 프레임 그라운드와 연결하고 나머.. 2021. 7. 10. XMODEM, YMODEM, ZMODEM 차이 XMODEM, YMODME, ZMODEM은 모두 파일을 전송하는 프로토콜이다. XMODEM XMODEM은 가장 먼저 나온 프로토콜로 한 패캣의 크기는 128 바이트이고 간단한 체크섬을 사용한다. XMODEM-CRC는 CRC 체크섬을 사용한다. XMODEM-1K는 한 패캣의 크기가 1024 바이트이다. YMODEM YMODEM은 XMODEM-1K에 멀티플 배치 전송이 가능한 프로토콜이다. YMODEM-g는 수신측의 ACK 신호를 기다리지 않고 데이터를 계속 전송한다. 한 패캣이라도 에러가 나면 전체 전송을 취소한다. ZMODEM ZMODEM은 가장 앞선 기술을 사용한 것으로 에러 복구 기능이 있다. 2021. 7. 8. I2C 풀업 저항값 I2C 출력은 오픈 드레인 출력으로 외부에 풀업 저항을 달아야 한다. 오픈드레인 출력이기 때문에 Low에서 High로 될때 캐패시턴스 성분에 따라 상승시간이 매우 길어진다. 저항의 최대값은 버스의 캐패시턴스에 따라 달라진다. 저항의 최소값은 흐르는 전류와 Low로 인식되는 전압에 의해 결정된다. 저항의 최대값(왼쪽)과 최소값(오른쪽)은 다음과 같다. Standard-mode에서 +5V 신호의 선로 임피던스가 200pF라면 최소 저항은 1.2kΩ이고 최대 저항은 6kΩ으로 2~6kΩ 범위의 저항을 사용해야 한다. Standard-mode는 100kHz이고 Fast-mode는 400kHz이고 Fast-mode plus는 1MHz이다. 클럭 속도가 높을수록 풀업저항값을 낮춰야 한다. ☞ I2C 통신 2021. 7. 2. I2C로 EEPROM 데이터를 읽고 쓰는 방법 1) EEPROM 쓸 때 I2C를 사용하는 EEPROM에서 데이터를 쓸 때 I2C 프레임은 다음과 같다. 첫번째 바이트는 Start로 시작하여 Write 속성으로 EEPROM 슬레이브 주소를 전송한다. 두번째와 세번째 바이트는 읽을 데이터의 주소를 전송한다. 네번째 바이트는 쓸 데이터를 전송한다. 2) EEPROM 읽을 때 I2C를 사용하는 EEPROM에서 데이터를 읽을 때 I2C 프레임은 다음과 같다. 첫번째 바이트는 Start로 시작하여 Write 속성으로 EEPROM 슬레이브 주소를 전송한다. 두번째와 세번째 바이트는 읽을 데이터의 주소를 전송한다. 여기까지는 쓸 때와 동일하다. 네번째는 Start로 시작하여 Read 속성으로 EEPROM 슬레이브 주소를 전송한다. 다섯번째는 EEPROM에서 마스터.. 2021. 7. 1. I2C의 Clock Stretching I2C는 SDL과 SCL의 2개 선으로 통신하며 두 신호는 오픈 드레인 출력으로 외부에 풀업 저항을 연결해야 한다. SCL은 마스터에서 출력되는 클럭신호이다. 슬레이브에서 SCL 신호 수신 중 SCL를 Low로 잡을 수가 있다. 슬레이브에서 SCL을 Low로 잡으면 마스터는 Slave가 신호를 놓아 High가 될때까지 기다린다. 이것을 SCL Stretching이라고 한다. SCL Stretching는 슬레이브에게 데이터를 처리할 시간을 가지기 위해 사용된다. I2C 신호선은 오픈 드레인 출력이기 때문에 연결된 노드 중 하나에서 Low 출력을 내면 다른 노드에서 High 출력을 내어도 신호선은 Low가 된다. 2021. 7. 1. PL2303 USB-UART 컨버터 USB-UART 컨버터는 USB에 연결하여 TTL 신호의 UART를 입출력하는 장치이다. 위의 USB-UART 컨버터는 Prolific의 PL2303HXD를 사용한다. PL2303HXD는 USB의 +5V을 입력받아 동작하여 내부에 레귤레이터가 내장되어 있어 +3.3V를 출력할 수 있다. 위의 컨버터에서 +5V는 USB 전원이고 3V3은 PL2302HXD에서 출력하는 전압이다. PL2303HXD의 드라이버는 다음과 같은 속도만 지원한다. 2021. 6. 28. LRC 체크썸 계산 LRC(Longitudinal Redundancy Check)의 C 코드는 다음과 같다. lrc = 0; for(i=0; i 2021. 6. 24. Modbus RTU 통신 프레임 타이밍 Modbus RTU는 바이너리 통신이기 때문에 프레임을 시간으로 판단한다. 다음과 같이 3.5 char 이상 데이터가 없으면 프레임 종료로 판단한다. 한 프레임 내의 데이터는 연속이어야 한다. 데이터 사이가 1.5 char 이상이면 에러로 처리한다. 2021. 6. 23. I2C 통신 개요 I2C 통신은 SDA와 SCL의 2개선으로 멀티 드랍 형식으로 연결된다. SDA는 데이터선이고 SCL은 클럭선이다. 2선에는 풀업 저항이 연결되어야 한다. I2C 통신은 멀티마스터가 가능하다. I2C 통신 파형은 다음과 같다. Start에서는 SCL이 1일때 SDA가 1->0이 되고 Stop에서는 SCL이 1일때 SDA가 0->1이 된다. SCL이 1일 때 SDA에 데이터가 0 또는 1로 설정되어 있어야 한다. 클럭 속도는 Standard는 100kHz이고 Fast는 400kHz이고 Fast plus는 1MHz이다. 통신 프레임 구조는 다음과 같다. Read/Write Bit가 0이면 다음 데이터 프레임을 전송이고 1이면 다음 데이터 프레임을 수신한다. I2C 통신 순서는 다음과 같다. 1) 마스터에서 .. 2021. 6. 19. 이전 1 2 3 다음 반응형