일전에 누군가 나에게 FTDI USB- 직렬 UART의 작동 방식을 물었고, 나는 모른다는 것을 깨달았습니다. FT232R의 데이터 시트를 살펴 보았습니다. 블록 다이어그램은 정말 도움이되지 않았습니다. 누구든지 나를 설명하거나 좋은 설명에 연결할 수 있습니까?
주석
- USB CDC 장치의 장치 측을 구현하는 것보다 더 많은 설명이 있습니까? en.wikipedia.org/wiki/USB_communications_device_class
- @kenny, 실제로는 그렇지 않습니다. ' t. 독점 프로필을 사용하므로 사용하려면 드라이버를 설치해야합니다 (적어도 Windows에서는).
- @avakar, 모든 OS에서 드라이버를 사용하며 일부는 미리로드되어 있습니다.
답변
FTDI 칩은 USB 프로토콜 스택을 구현합니다. 이 하드웨어의 책임은 컴퓨터가 올바른 드라이버를로드 할 수 있도록 (일부 식별 정보를 사용하여) PC에 알리고 USB 엔드 포인트를 조회 한 후 PC와의 데이터 트랜잭션을 관리하는 것입니다. 이러한 프로세스에 대한 더 나은 설명을 위해.
이러한 드라이버가로드되면 PC가 칩을 쿼리하는 데 사용할 수있는 명령 세트를 지정합니다. 이 하드웨어는 방정식의 한쪽을 처리합니다 (PC와의 통신). 다른 측면은 로직, 버퍼, 라인 드라이버 및 정렬을 포함하는 UART 프로토콜을 관리하기위한 전용 하드웨어입니다. 앞에서 언급 한 명령 세트는 UART 하드웨어에서 읽거나 쓰는 데 사용됩니다. USB 장치는 PC에 의해 폴링된다는 점을 언급해야합니다. 따라서 이벤트 기반 코드를 사용하는 경우 PC는 실제로 새 데이터가 도착했는지 확인하기 위해 폴링을 수행합니다. 이것은 기본 직렬과 다를 수 있습니다. 위의 로직은 전용 ASIC로 구현하거나 ROM에서 펌웨어를 실행하는 분리 된 마이크로 컨트롤러 코어를 사용하여 구현할 수 있습니다. 실제로 마이크로 컨트롤러 코어 인 경우 UART가 주변 장치로 연결되어 있다고 상상해보세요.
댓글
- 그것이 없다는 것이 얼마나 확실한지 ' 펌웨어 프로그램이 실행되고 있습니까? 마이크로 컨트롤러는 일반적으로 동등한 ASIC 전용 하드웨어 구현보다 적은 로직 게이트를 필요로합니다. ' ASIC에서 마이크로 컨트롤러에게 알리기가 매우 어렵습니다. 마이크로 컨트롤러 펌웨어는 ' 사용자가 액세스 할 수 없습니다.
- @Ben : 그거 알아요? ldn ' 그렇게 말하지 않았습니다. 내 무지로 인해 답변이 수정되었습니다. 블록 다이어그램을 살펴본 후 직감 가정을했지만 어쨌든 잠재적 uC 세부 사항을 추상화하는 것이 더 낫다고 생각합니다. FTDI의 사람들 만 알고있을 것이며 핵심 라이선스 비용과 사내 개발 시간으로 귀결 될 것 같습니다.
- 보통 "가있을 때 프로토콜 "이를 처리하기위한 " 프로그램 "으로 끝납니다. ASIC 또는 FPGA에 깊숙이 묻혀있는 엔진에서 ' 실행중인 경우. 예외는 눈에 띌 정도로 빠른 속도가 복잡성을 능가하는 것인데, 상태 머신이나 대규모 병렬 처리를 볼 가능성이 높습니다. 그 사이에는 컴퓨팅 경로가 제어 로직에 비례하여 구축되는 엔진이 있습니다. 이는 DSP 프로세서의 원래 아이디어와 같습니다.
Answer
내부에 USB 마이크로 컨트롤러가있어 USB를 통해 독점 프로토콜 (따라서 드라이버가 필요함)을 전달하고이를 “일반”UART 신호로 변환하고 다시 되돌립니다.