UART

I2C

작업 프로토콜 ·       UART 전송 데이터는 데이터 버스가 다른 장치 ( : CPU)에 의해 UART로 데이터를 보내는 데이터 버스에서 데이터를 수신합니다.
·       UART를 전송 한 후 데이터 버스에서 병렬 데이터를 가져 오면 시작 비트, 패리티 비트 및 중지 비트를 추가하여 데이터 패킷을 만듭니다.
·       데이터 패킷은 수신 UART Rx 핀에서 데이터 패킷을 읽는 Tx 핀에서 전송됩니다전송 UART에 데이터가 남아 있지 않을 때까지 데이터가 전송됩니다.
데이터 전송 및 수신
·       전송 FIFO에 의해 데이터가 전송되면 FIFO 'BUSY'플래그가 표시되고 프로세스 중에 활성화됩니다.
·       FIFO = 선입 선출전송의 각 바이트가 수신 UART로 전달되도록 하는 것은 UART 버퍼입니다.
·       'BUSY'비트는 데이터 전송이 완료되고 FIFO가 비어 있고 정지 비트를 포함하여 모든 비트가 전송된 후에 만 ​​비활성화됩니다.
·       UART 수신기가 유휴 상태이고 시작 비트가 수신된 후 데이터 입력이 낮으면 수신 카운터가 실행되기 시작하고 데이터는 Baud16 8 번째 사이클에 있습니다.
·       시작 비트가 유효한 동안 Baud16 8 번째 사이클 동안 Rx가 여전히 낮 으면 잘못된 시작 비트로 처리되어 무시됩니다.
·       시작 비트가 유효하면 데이터 문자의 길이에 따라 Baud16 16 번째주기마다 데이터 비트가 샘플링됩니다패리티 모드가 활성화 된 경우 패리티 비트도 감지됩니다.
·       Rx가 높으면 유효한 정지 비트가 승인됩니다그렇지 않으면 프레임 오류가 발생합니다
·       완전한 데이터 패킷이 수신되면 데이터는 수신 FIFO에 저장됩니다.
인터럽트 제어
·       인터럽트의 목적은 버퍼의 내용을 자동으로 보내는 것입니다.
·       사용자는 다음과 같은 경우 인터럽트를 사용할 수 있습니다.
·       FIFO 오버플로 오류
·       줄 바꿈 오류 (RX 신호는 확인 및 정지 비트를 포함하여 0으로 유지됩니다.)
·       패리티 오류
·       프레임 오류 (정지 비트 1이 아님)
·       수신 시간 초과 (수신 FIFO에 데이터가 있지만 가득 차 있지 않고 후속 데이터가 전송되지 않음)
·       전송
·       전수
FIFO 작동
·       Stellaris ARM 제품군의 UART 모듈에는 두 개의 16 바이트 FIFO가 포함되어 있습니다. 하나는 전송 용이고 다른 하나는 수 신용입니다
·       다양한 깊이에서 인터럽트를 트리거하도록 구성 할 수 있습니다예를 들어 1/8, 1/4, 1/2, 3/4 7/8 깊이입니다수신 FIFO 1/4에서 인터럽트를 트리거하면 UART 4 개의 데이터를 수신 할 때 수신 인터럽트가 트리거됩니다.
·       FIFO 전송 작업 과정 :
·       데이터가 입력되는 즉시 프로세스가 시작됩니다전송에는 시간이 많이 걸리므로 전송해야하는 다른 데이터를 전송 FIFO에 계속 입력 할 수 있습니다
·       전송 FIFO가 가득 차면 사용자가 기다려야합니다. 그렇지 않으면 데이터가 손실됩니다.
·       전송 FIFO는 전송 FIFO가 완전히 비워 질 때까지 비트 단위로 데이터를 보냅니다전송 된 데이터가 삭제되면 전송 FIFO에 추가 슬롯이 추가됩니다.
·       FIFO  받는 작업 과정 :
·       하드웨어가 데이터를 수신하면 수신 FIFO에 저장됩니다프로그램은 수신 FIFO의 데이터를 자동으로 삭제하므로 수신 FIFO에 공간이 생깁니다수신 FIFO의 데이터가 삭제되지 않고 수신 FIFO가 가득 차면 데이터가 손실됩니다.
·       트랜시버 FIFO CPU가 비효율적이며 UART 트랜시버가 너무 자주 중단되는 문제를 해결하는 것입니다. UART 통신을 사용하면 인터럽트 모드가 폴링 방법보다 더 간단하고 효율적입니다트랜시버 FIFO가 없으면 각 데이터가 한 번 중단되고 비효율적입니다트랜시버 FIFO를 사용하면 인터럽트를 생성하고 데이터를 지속적으로 송수신 (최대 14 ) 할 수 있으므로 송수신 효율성이 향상됩니다.
·       FIFO로 인한 데이터 손실은 이미 송수신 과정에서 문제를 예측했기 때문에 발생하지 않습니다. UART가 초기화되는 한 인터럽트 루틴은 모든 것을 자동으로 수행합니다.
루프백
·       UART에는 진단 또는 디버깅을위한 내부 루프백 기능이 있으며 Tx에서 전송된 데이터는 Rx 입력에 의해 수신됩니다.
직렬 적외선 프로토콜
·       UART에는 IrDA SIR (Serial Infrared) 인코더 / 디코더 모듈이 있습니다. IrDA SIR 모듈은 비동기 UART 데이터 스트림과 반이중 직렬 SIR 인터페이스 사이를 변환합니다.
·       디지털 코딩 된 출력과 디코딩 된 입력을 UART에 제공하는 데 사용됩니다. UART 신호 핀은 IrDA SIR 물리 계층 연결을 위해 적외선 트랜시버에 연결할 수 있습니다.
 

데이터 전송 방법

·       마스터는 SDA 라인을 전환 한 후 SDA 라인을 고전압 레벨에서 저전압 레벨로, SCL 라인을 하이에서 로우로 전환하여 연결된 모든 슬레이브에 전송 신호를 보냅니다.
·       마스터는 각 슬레이브에 슬레이브의 7 비트 또는 10 비트 주소와 통신하려는 슬레이브에 읽기 / 쓰기 비트를 보냅니다.
·       그런 다음 슬레이브는 주소를 자신의 주소와 비교합니다주소가 일치하면 슬레이브는 SDA 라인을 1 비트 동안 로우로 전환하는 ACK 비트를 반환합니다주소가 주소와 일치하지 않으면 슬레이브는 SDA 라인을 높게 유지합니다.
·       마스터는 데이터 프레임을 보내거나 받습니다각 데이터 프레임이 전송된 후 수신 장치는 또 다른 ACK 비트를 전송자에게 반환하여 성공적인 전송을 확인합니다.
·       데이터 전송을 중지하기 위해 마스터는 SDA를 하이로 전환하기 전에 SCL을 하이로 전환하여 슬레이브에 정지 신호를 보냅니다.

clock 동기화

·       모든 마스터는 SCL 라인에서 자체 클럭을 생성하여 I2C 버스에서 메시지를 전송합니다
·       데이터는 시계의 높은 기간에만 유효합니다.
·       클럭 동기화는 I2C 인터페이스를 스위치가 하이에서 로우로 전환되는 SCL 라인에 연결하여 수행됩니다장치의 클록이 낮아지면 클록의 높은 수준에 도달할 때까지 SCL 라인을 이 상태로 유지합니다
·       다른 클럭이 여전히 낮은 기간에 있는 경우 low-to-high 스위치는 SCL 라인의 상태를 변경하지 않습니다. SCL 라인은 항상 낮은 기간이 가장 긴 장치에 의해 낮게 유지됩니다이때, 짧은주기와 낮은주기를 가진 장치는 높고 대기 상태가 됩니다.
·       모든 관련 장치가 로우 기간을 완료하면 클록 라인이 높아집니다
·       그 후에는 장치 클록과 SCL 라인의 상태에 차이가 없으며 모든 장치가 높은주기를 계산하기 시작합니다높은 기간을 처음으로 완료 한 장치는 SCL 라인을 다시 낮게 만듭니다.
·       동기 SCL 클록의 낮은 기간은 가장 긴 낮은 클록 기간을 가진 장치에 의해 결정되는 반면 높은 기간은 가장 짧은 높은 클록 기간을 가진 장치에 의해 결정됩니다.

전송 모드

빠른 모드 :

·       고속 모드 장치는 400kbit / s로 송수신 할 수 있습니다. 400kbit / s 전송과 동기화하고 SCL 신호의 낮은 기간을 연장하여 전송 속도를 늦출 수 있어야합니다
·       고속 모드 장치는 이전 버전과 호환되며 0 ~ 100kbit / s I2C 버스 시스템의 표준 모드 장치와 통신 할 수 있습니다그러나 표준 모드 장치는 상향 호환되지 않으므로 고속 I2C 버스 시스템에서 작동 할 수 없습니다고속 모드 I2C 버스 사양은 표준 모드와 비교하여 다음과 같은 특성이 있습니다.
·       최대 비트 전송률은 400kbit / s로 증가합니다.
·       직렬 데이터 (SDA) 및 직렬 클록 (SCL) 신호의 타이밍을 조정했습니다.
·       글리치를 억제하는 기능이 있으며 SDA SCL 입력에는 Schmitt 트리거가 있습니다.
·       출력 버퍼에는 SDA SCL 신호의 하강 에지에 대한 기울기 제어 기능이 있습니다.
·       고속 모드 장치의 전원 공급 장치가 꺼지면 SDA SCL I / O 핀이 유휴 상태 여야하며 버스를 차단할 수 없습니다.
·       버스에 연결된 외부 풀업 장치는 고속 모드 I2C 버스의 가장 짧은 최대 허용 상승 시간을 수용하도록 조정되어야합니다최대 부하가 200pF 인 버스의 경우 각 버스의 풀업 장치는 저항기가 될 수 있습니다부하가 200pF 400pF 사이 인 버스의 경우 풀업 장치는 전류 소스 (최대 3mA) 또는 스위치 저항 회로 일 수 있습니다.

고속 모드 :

·       Hs 모드 장치는 최대 3.4Mbit / s의 비트 전송률로 정보를 전송할 수 있으며 속도 혼합 버스 시스템에서 양방향으로 통신 할 수있는 고속 모드 또는 표준 모드 (F / S 모드) 장치와 완전히 역 호환됩니다.
·       Hs 모드 전송은 수행되지 않는 중재 및 클럭 동기화를 제외하고 F / S 모드 시스템과 동일한 직렬 버스 원리 및 데이터 형식을 갖습니다.
·       고속 모드의 I2C 버스 사양은 다음과 같습니다.
·       고속 (Hs) 모드에서 마스터 장치에는 고속 (SDAH) 신호용 오픈 드레인 출력 버퍼와 고속 직렬 클럭 ()에서 오픈 드레인 풀다운 및 전류 소스 풀업 회로가 있습니다. SCLH) 출력이렇게하면 SCLH 신호의 상승 시간이 단축되고 언제든지 하나의 호스트 전류 소스 만 활성화됩니다.
·       다중 마스터 시스템의 Hs 모드에서는 비트 처리 기능의 속도를 높이기 위해 중재 및 클록 동기화가 수행되지 않습니다중재 프로세스는 일반적으로 호스트 코드가 F / S 모드로 전송 된 후에 종료됩니다.
·       Hs 모드 마스터 장치는 설정 및 유지 시간에 대한 타이밍 요구 사항을 제거하는 1 : 2 비율로 높고 낮은 직렬 클록 신호를 생성합니다.
·       Hs 모드 장치에는 내장 브리지가있을 수 있습니다. Hs 모드 전송 중에 Hs 모드 장치의 SDAH SCLH 라인은 SDA SCL 라인과 분리되어 SDAH SCLH 라인의 용량 성 부하를 줄이고 상승 및 하강 속도를 높입니다.
·       Hs 모드 슬레이브 장치와 F / S 슬레이브 장치의 차이점은 작동 속도입니다
·       Hs 모드 장치는 글리치를 억제 할 수 있으며 SDAH SCLH 출력에도 Schmitt 트리거가 있습니다.
·       Hs 모드 장치의 출력 버퍼에는 SDAH SCLH 신호의 하강 에지에 대한 기울기 제어 기능이 있습니다.

 

  UART I2C
정의 및
개념
1.     범용 비동기 수신 및 전송 (UART) 약자
2.     호스트가 보조 장치와 통신할 수 있도록하는 간단한 직렬 통신 프로토콜입니다.
3.     UART는 양방향, 비동기 및 직렬 데이터 전송을 지원합니다.
4.     두 개의 데이터 라인이 있습니다. 하나는 전송용(TX)이고 다른 하나는 수신용(RX)이며 디지털 핀 0, 디지털 핀 1을 통해 통신하는 데 사용됩니다.
5.     TX RX는 두 장치간에 연결됩니다. ( : USB 및 컴퓨터)
6.     UART는 컴퓨터와 외부 직렬 장치 간의 동기화 관리 문제도 처리할 수 ​​있습니다.
  1. I2C ( Inter-integrated-circuit) 약자
  2. UART와 유사한 직렬 통신 프로토콜이지만 PC 장치 통신에는 사용되지 않고 모듈 및 센서와 함께 사용됩니다.
  3. 단순한 양방향 2와이어 식 동기 직렬 버스이며 버스에 연결된 장치간에 정보를 전송하는 데 단일 line만 필요합니다.
  4. 명확한 통신 경로를 유지하면서 최대 128개의 장치를 메인 보드에 연결할 수 있으므로 함께 작동하는 다양한 부품 ( : 센서, , 확장 및 드라이버)이 필요한 프로젝트에 유용합니다!
  5. I2C는 주소 시스템과 공유 버스를 사용하기 때문에 동일한 와이어를 사용하여 많은 다른 장치를 연결할 수 있으며 모든 데이터가 단일 와이어로 전송되고 핀 수가 적습니다그러나 이 단순화된 배선의 단점은 SPI보다 느리다는 것입니다.
  6. I2C의 속도는 데이터 속도, 와이어 품질 및 외부 노이즈에 따라 달라집니다.
  7. I2C 프로토콜은 마이크로 컨트롤러, EEPROM, A/D D/A 컨버터, I/O 인터페이스 및 기타 유사한 주변 장치와 같은 저속 장치를 임베디드 시스템에 연결하기위한 2 와이어 인터페이스에도 사용됩니다.
작동 방식 1.      3 가지 방식으로 장치간에 작동 할 수 있습니다.
A.      Simplex = 한 방향으로 데이터 전송
B.      반이중 = 양방향으로 동시에 데이터 전송
C.      전이중 = 양방향으로 동시에 데이터 전송
2.      연결되면 데이터는 수신 UART TX에서 RX로 흐릅니다.
3.      UART는 비동기 직렬 전송이므로 클록 없음
4.      UART 전송은 마스터 장치 ( : CPU)의 병렬 데이터를 직렬 형식으로 변환하고 수신 UART에 직렬로 전송합니다그런 다음 직렬 데이터를 수신 장치의 병렬 데이터로 다시 변환합니다


5.      UART에는 클럭이 없으므로 UART는 전송중인 시작 및 중지 비트를 추가합니다.
6.      이것은 비트가 데이터 패킷의 시작과 끝을 나타내기 때문에 수신 UART가 비트 읽기를 시작할 시기를 알 수 있도록 도와줍니다수신 UART가 시작 비트를 감지하면 BAUD rate로 비트를 읽습니다.
7.      UART 데이터 전송 속도는 BAUD 속도라고하며 기본적으로 115,200으로 설정됩니다 (BAUD 속도는 심볼 전송 속도를 기반으로하지만 비트 속도와 유사 함).
8.      UART는 거의 동일한 전송 속도로 작동해야합니다. BAUD 속도의 차이가 10 % 이상이면 비트 타이밍이 꺼져있을 수 있으며 사용자는 UART가 동일한 데이터 패킷에서 송수신하도록 구성되어 있는지 확인해야합니다.
  1. SCL (시리얼 클럭 라인) SDA (시리얼 데이터 라인 수용 포트) 2개 라인이 있습니다.
  2. CL은 전송 동기화를 위한 클럭 라인입니다. SDA는 데이터 비트가 전송되거나 수신되는 데이터 라인입니다.
  3. 마스터 장치는 데이터의 버스 전송을 시작하고 전송된 장치를 열기위한 클록을 생성하며 주소가 지정된 모든 장치는 슬레이브 장치로 간주됩니다
  4. 버스에서 송수신하는 마스터와 슬레이브 장치 간의 관계는 일정하지 않습니다당시의 데이터 전송 방향에 따라 다릅니다
  5. 마스터가 데이터를 슬레이브로 보내려는 경우 마스터는 데이터를 보내기 전에 먼저 슬레이브에 주소를 지정해야 합니다.
  6. 마스터는 데이터 전송을 종료합니다마스터가 슬레이브로부터 데이터를 수신하려면 먼저 슬레이브에 주소를 지정해야 합니다
  7. 호스트는 슬레이브가 보낸 데이터를 수신하고 마지막으로 수신자는 수신 프로세스를 종료합니다호스트는 또한 타이밍 클럭을 생성하고 데이터 전송을 종료합니다.
  8. 또한 풀업 저항을 통해 전원 공급 장치를 연결해야 합니다버스가 유휴 상태 일 때 두 라인 모두 높은 전력 레벨에 있습니다
  9. 라인의 커패시턴스는 버스 전송 속도에 영향을 미칩니다버스의 전류 전력이 작기 때문에 커패시턴스가 너무 크면 전송 오류가 발생할 수 있습니다따라서 부하 용량은 400pF 여야하므로 버스의 허용 길이와 연결된 장치 수를 추정 할 수 있습니다.
 

 

장점
  1. 온라인에서 많은 리소스를 사용하여 널리 사용되는 방법이므로 작동이 간단하고 잘 문서화되어 있습니다.
  2. 클락이 필요하지 않습니다
  3. 오류 검사를 허용하는 패리티 비트
  1. 버스에 많은 장치가 있는 경우에도 핀/신호 수가 적습니다.
  2. 다중 마스터 및 다중 슬레이브 통신을 지원하므로 유연합니다.
  3. 2개의 양방향 와이어 만 사용하여 여러 장치 간의 통신을 설정하므로 간단합니다.
  4. 다양한 슬레이브 장치의 요구사항에 맞게 조정할 수 있습니다.
  5. 여러 마스터를 지원합니다.
단점
  1. 데이터 프레임의 크기는 9 비트로 만 제한됩니다.
  2. 여러 마스터 시스템 및 슬레이브를 사용할 수 없습니다.
  3. UART의 전송 속도는 데이터 손실을 방지하기 위해 서로 10 % 이내여야 합니다.
  4. 느린 속도
 
  1. SPI에서 사용하는 푸시 풀 저항이 아닌 풀업 저항이 필요하므로 속도가 느립니다또한 개방 드레인 설계 = 제한된 속도입니다.
  2. 저항기가 PCB 공간을 소비하므로 더 많은 공간이 필요합니다.
  3. 장치 수가 증가하면 복잡해질 수 있습니다.

'FW' 카테고리의 다른 글

Simplicity studio로 EFM8BB3 다루기_02  (0) 2023.11.01
Simplicity studio로 EFM8BB3 다루기  (2) 2023.11.01

+ Recent posts