2017-02-06 10 views
0

저는 Arduino Due (마이크로 컨트롤러 ATSAM3X8E)를 사용하는 프로젝트를 진행하고 있습니다. 내 목표는 실시간으로 내 펌웨어에서 사용하고있는 주요 변수의 값을 추적 할 수있게하는 것입니다. 사실은 시간이 지남에 따라 변수의 값을 변경해야 할 필요가 있다는 것입니다.Arduino PC 고속 USB 통신으로 인해

이 작업을 수행하기 위해 기본 USB 포트를 통해 내 PC로 데이터를 전송하기로 결정했습니다. 내가 가지고있는 실시간 제약은 0.1 밀리 초 내에 20 개의 변수 값 (각각 8 바이트 길이)을 전송해야한다는 것입니다. 칩의 USB 주변 장치에 연결된 Arduino Due에서 사용할 수있는 기본 USB 포트가 있습니다. USB 장치 모드에서 만기를 설정하여 USB를 통해 UART를 사용해 보았습니다. 직렬 (UART) 통신을 사용하여 115200 보오 (baud)의 속도까지 올릴 수 있습니다. 고속이라면 호스트 PC가 데이터를 올바르게 전송할 수 없습니다.

그래서 집에서 몇 가지 작업을했는데 USB 기반 장치가하는 일에 따라 분류가 다른 것으로 나타났습니다. 적어도 2M 비트/초의 속도를 가진 고속 프로토콜이 있는지 알고 싶습니다. 필자는 USB를 통해 데이터를 PC의 맨 위에 사용할 수 있으며, 동등한 드라이버가 있으면 사용할 수 있습니다. 내 Windows PC에서 고속 데이터를 성공적으로 캡처하려면 모든 권장 사항이 큰 도움이됩니다.

미리 감사드립니다.

Subramanian

답변

1

아두 이노 인해의 기본 USB 포트는 고속 USB (480 Mbps의) 할 수 있고, 기본적으로는 USB 가상 COM 포트를 컴퓨터에 나타납니다. 이것은 가상 직렬 포트이므로 USB 드라이버가 허용하는 속도로 데이터를 전송할 수 있으며 COM 포트의 가상 "전송 속도"에 제한되지 않습니다. 이는 관련없는 설정입니다. 난 가상 COM 포트가 당신을 위해 충분히 빠르다고 생각하고 좀 더 복잡한 일을하기 전에 시도해야한다.

이 포트를 사용하려면 Arduino 프로그램에서 SerialUSB을 사용하십시오. 객체의 인터페이스는 Serial입니다. Arduino IDE를 설치했거나 Windows 10을 실행중인 경우 이미 드라이버가 있어야합니다.

USB 가상 COM 포트는 일반적으로 탁월한 대기 시간이나 처리량을 보장하지 않는 USB 대량 끝점을 사용합니다. 컴퓨터가 버스의 다른 장치와 통신 중이면 처리량이 줄어들지 만 여기에 많은 오류가 있으므로 실제로 문제가 될 것이라고 생각하지 않습니다. 안전을 원할 경우 기기 측면에서 몇 밀리 초의 데이터를 버퍼링하여 데이터가 손실되지 않도록하십시오. 버퍼가 얼마나 큰지 알기 위해 Arduino 코어 코드의 내부를 조사해야 할 수도 있습니다.