GPIO 핀을 사용하여 마이크로 컨트롤러에 소프트웨어 UART를 작성하는 실험을하고 있습니다. 이는 더 많은 UART 포트가있는 uC를 사용하는 새로운 디자인이 구현 될 때까지 프로젝트에 UART 채널을 일시적으로 추가하는 것입니다.
내가 어려움을 겪고있는 것은 직렬 스트림에서 시작 비트를 올바르게 감지하는 것입니다. 스트림의 소스는 외부이며 장치의 전원을 켤 때 신경 쓰지 않습니다. 따라서 내 장치의 전원이 켜지고 바이트 전송 중에 데이터 비트가 표시되기 시작합니다. 의심 할 여지없이, 시작 비트와 다른 고 / 저 전환 간의 차이를 알 수 없으므로 소프트웨어 UART가 잘못된 값을 읽게됩니다.
이것이 UART 채널에서 불가피한 문제입니까? 또는 uC 제조업체가 하드웨어 UART에 사용하는 영리한 트릭이 있습니까?