저는 RF 전송 ASIC이 포함 된 프로젝트를 수행하는 연구팀의 학부 회원이며 궁극적으로 데이터를 PC로 보내야하는 무선 수신기입니다.
수신기는 빠르고 연속적인 비동기 비표준 직렬 신호 (SPI, I2C, UART 등이 아님)를 출력하므로 수신기는 컴퓨터에 인터페이스하기 위해 마이크로 컨트롤러 소프트웨어를 작성해야합니다. 현재 내 접근 방식은 에지 트리거 인터럽트를 사용하여 데이터를 순환 버퍼에 배치하고 메인 루프에서 전체 비트 단위 디코딩 프로세스를 수행하는 것입니다. 마이크로 컨트롤러는 USB (가상 COM 포트)를 사용하여이 데이터를 컴퓨터에 동시에 출력해야합니다.
여기에 내가 가진 문제와 내가 기대하는 문제가 있습니다.
강력한 72MHz ARM Cortex M3 프로세서를 사용해도 버퍼링 된 데이터를 충분히 빠르게 처리 할 수 없습니다. 비트 전송률은 400Kbps (2.5us / bit)입니다. 참고로 비트 당 180 사이클 만 남습니다 (디코딩 및 ISR은 ~ 30 사이클의 오버 헤드 아야를 포함합니다)! MCU는 또한 메인 루프에서 폴링하는 다른 많은 작업을 처리해야합니다.
USB 가상 COM 포트 드라이버도 인터럽트 기반입니다. 이것은 비트가 전송 될 수있는 2.5 마이크로 초 (180 사이클) 창을 놓치도록 드라이버가 결국 프로세서를 오랫동안 중단 할 것이라고 확신합니다. 이와 같은 인터럽트 충돌 / 레이스가 일반적으로 어떻게 해결되는지 잘 모르겠습니다.
문제는 간단히 말해서, 이러한 문제를 해결하기 위해 무엇을 할 수 있습니까, 아니면 이것이 올바른 접근법이 아닙니까? 소프트웨어 중심적인 접근 방식도 고려하지 않겠습니다. 예를 들어, 디코딩을 위해 일종의 하드웨어 상태 머신과 함께 전용 USB 칩을 사용하지만 이는 익숙하지 않은 영역입니다.