실행을 위한 블루투스 저에너지 인터페이스 tws 이어버드
실행을 위한 블루투스 저에너지 인터페이스 tws 이어버드
3-와이어 UART
3-와이어 UART는 설계에서 하드웨어 흐름 제어 라인을 제거하지만 일부 비트 오류를 고려한다는 점에서 앞서 설명한 UART보다 약간 더 복잡합니다. 호스트와 컨트롤러 간의 링크가 몇 밀리미터를 초과하고 노이즈가 많은 전기 환경에 있는 경우 3-와이어 UART를 사용하는 것이 완벽합니다.
3-와이어 UART 작동 모드의 경우 채널을 사용하여 이전에 설명한 UART 패킷 유형 구분과 유사한 다양한 패킷을 식별합니다. 채널 번호 0x1은 명령을 식별하고 0x2는 데이터를 식별하며 0x4는 이벤트를 식별합니다. 또한 3-와이어 UART는 링크 설정 및 승인을 위한 두 개의 추가 채널을 정의합니다. 링크 설정을 위한 0xF 및 승인을 위한 0x0. 3-와이어 UART에서 채널 번호는 길이가 4비트에 불과합니다.
3-와이어 UART에는 주로 3가지 모드가 있습니다. 포트 링크 설정 포트 활성 상태 포트 저전압 상태
링크 설정 채널은 작동 모드, 구성 매개변수 및 피어 장치의 전송 속도 자동 감지를 확인하는 데 사용됩니다. 자동 전송 속도 감지를 달성하기 위해 사용되는 방법은 다른 전송 속도를 차례로 선택하여 링크 설정 정보를 보낸 다음 피어 장치로부터 응답을 수신한 전송 속도를 결정하는 것입니다. 3방향 핸드셰이크 프로토콜은 두 장치 간의 링크를 설정하는 데 사용됩니다. 링크 설정 과정에서 신뢰할 수 있는 슬라이딩 윈도우의 크기, CRC(Cyclic Redundancy Check) 사용 여부 및 프레임 오류 소프트웨어 흐름 제어 사용 여부도 설정됩니다.
활성 상태의 데이터 전송은 안정적입니다. 모든 데이터 패킷은 프레임으로 캡슐화되며 각 프레임에는 시퀀스 번호(sequencenumber)와 승인 번호(acknowledgementnumber)가 있습니다. 이 숫자의 길이는 모두 3비트이며 여러 데이터 패킷을 동시에 전송할 수 있습니다. 이 기능은 빠른 UART에 매우 유용합니다.
데이터 패킷을 프레임으로 나눌 때 RFC1055에 정의된 SLIP(Serial Line IP Protocol) 프로토콜을 따릅니다. SLIP은 각 프레임이 시작 표시와 끝 표시로 0xC0(1바이트)을 사용하도록 규정합니다. OxC0이 데이터 패킷에 나타나면 대신 0xDB0xDC(2바이트)를 사용하십시오. 0xDB는 이스케이프 시퀀스이므로 0xDB0xDD(2바이트)로 변환해야 합니다. 프레이밍 소프트웨어 흐름 제어를 사용하는 경우 XON 및 XOFF 바이트도 각각 0xDB0xDE 및 0xDB0xDF로 변환해야 합니다. 각 프레임의 헤더는 패킷의 길이와 헤더 체크섬으로 구성됩니다. 헤더 체크섬은 헤더 정보가 올바른지 여부를 확인하는 데 사용됩니다. 정확하지 않은 경우 전체 데이터 패킷 수신을 거부합니다. 재전송 메커니즘에 따라 피어 장치는 자동으로 데이터 패킷을 재전송합니다. 페이로드의 최대 바이트 수는 4095이며 CRC(Cyclic Redundancy Check)를 사용하여 확인합니다. 3-와이어 UART는 16비트 CRC-CCITT(다항식 생성) 알고리즘을 사용하며, 이는 기존 Bluetooth 베이스밴드 패킷에서 사용하는 16비트 CRC CCITT와 정확히 동일합니다. 또한 데이터 패킷의 CRC 검사가 실패하면 데이터 패킷은 무시되고 피어 장치는 전체 데이터 패킷을 다시 보냅니다.
슬립 정보를 전송하여 연결 상태를 저전력 모드로 전환할 수 있습니다. 이 모드에서 UART는 일반적으로 꺼져 있으며 전송된 데이터 패킷이 완전히 수신된다고 보장할 수 없습니다. 보낼 데이터 패킷이 있는 경우 피어 장치가 UART 하드웨어를 깨울 때까지 기다리는 데 시간이 걸립니다. 효율적인 웨이크업 메커니즘을 구현하기 위해 HCI 정보를 피어 장치에 보내기 전에 먼저 짧은 시간의 웨이크업 정보가 피어 장치에 전송됩니다. 상대방이 깨운 메시지에 응답하면 활성 상태로 전환됩니다. 이 시점에서 장치는 모든 데이터 패킷을 보낼 수 있습니다. 장치에 UART 인터페이스만 있고 이 UART 인터페이스가 오류에 대한 견고성을 제공하지 않는 경우 3-와이어 UART를 사용하는 것이 올바른 선택입니다.