2011-02-09 3 views
1

this 질문 이외에도 완전히 프로그래밍 가능한 상태에서 두 개의 USB 호스트를 연결할 수있는 장치를 찾고 있습니다.호스트 컨트롤러에 프로그래밍 할 수있는 USB 호스트

가 PC에서 입력을 가지고 아무것도하지 않고 있지만, 다른 호스트에게 전달 임의의 USB 장치로

가장 무도회 : 나는 다음을 수행 할 수있는 일을하고 싶습니다.

나는 이것을 할 수있게 해주는 마이크로 컨트롤러 (미리 조립 된 상태가 좋음)를 찾고 있었지만 지금까지 아무 것도 보이지 않았다. 누구든지이 작업을 수행 할 수있는 컨트롤러 (저렴한 것이 좋습니다)를 알고 있습니까?

+0

[가능한 스푸핑 게임 컨트롤러] (http : // stackoverflow.com/questions/4940825/spoofing-a-game-controller) –

답변

1

PC에서 입력을 받아 다른 호스트로 전달하면됩니다.

이것은 USB 관점에서 비관적입니다. USB는 호스트 기반 프로토콜입니다. 호스트가 먼저 데이터를 요청하지 않으면 장치에서 데이터를 보내지 않습니다. 여기서 '호스트'와 '장치'는 프로토콜 자체 내에서 구체적인 의미를 지니고 있음을 기억하십시오. '호스트'를 마스터로, '디바이스'를 슬레이브로 생각할 수 있습니다. 이러한 역할은 USB 컨트롤러로 구워집니다. 특정 PC 또는 주변 장치의 표준 USB 컨트롤러가 스왑 역할을하도록 설득 할 수있는 방법은 없습니다. USB 장치 컨트롤러 인 PC 용 애드 인 카드가 있지만 ('PC'는 장치로 사용) '싼'것은 내가 설명하는 데 사용하는 단어가 아닙니다.

정말로하려고하는 것은 USB 장치 대 장치 브리지를 만드는 것입니다. 그렇다면 2 개의 USB (2.0) 장치 컨트롤러가 필요합니다 (가격이 비싸지도 않고, 이미 마이크로 컨트롤러가 필요합니다). 그런 다음 서로에게 의미있는 것을 전달하도록해야합니다. 위에서 언급했듯이 호스트는 데이터를 보내도록 장치에 지시해야하고 필요할 때마다 데이터를 장치에 보낼 수 있기 때문에 매우 어렵습니다. 게임 컨트롤러가 HID 장치로 나타나면 콘솔이 이상한 사용자 지정 설명자를 수신하지 않고 이상한 사용자 지정 프로토콜을 사용한다고 가정하면 인터럽트 파이프가 데이터를 전송하는 데 사용됩니다. 이 파이프는 최소 속도로 폴링되도록 보장됩니다. 따라서 콘솔이 고정 속도가 아닌 일정 비율로 데이터를 요청하고 호스트가 게임을 통해 일정 비율로 데이터를 전송하게됩니다. 이 둘은 동기화가 불가능하기 때문에 생성하려는 가제트에 적당한 크기의 버퍼가 필요할 것이므로 $$ 및 복잡성이 증가합니다.

USB도 꽤 빠릅니다. 고속 (USB2.0)에서 프레임은 125 마이크로 초입니다. 즉, 약 8KHz에서 요청을 완료해야한다는 것을 의미합니다. 마이크로 컨트롤러의 클록 속도에 비해 느린 것처럼 보이지만 한 번에 모든 작업을 수행해야한다는 점을 명심하십시오. 나는 당신이 필요로하는 모든 것, 특히 당신이 자신의 USB 스택을 굴릴 필요가없는 것들을 가질 수있는 아마추어 수준의 마이크로 컨트롤러가 있는지 확신하지 못합니다.

+0

네, 그게 핵심입니다. 아마 나는 충분히 자신을 설명하지 않았다. 이전 질문에 대한 답변을 받으면 USB로 읽었습니다. 그래서 두 호스트를 직접 연결하는 것은 불가능하다는 것을 알고 있습니다. 하나 이상의 OTG 컨트롤러 + 다른 방법 (Wifi/블루투스/이더넷)에 연결하는 장치를 찾고 있습니다. GuruPlug devkit (http://www.globalscaletechnologies.com/p-40-guruplug-display-devkit.aspx)을 사용하여 I * *를 풀 수 있을지도 모르겠지만 지금은 예산 초과입니다 (저는 가격의 1/2로 무언가를 찾고 있습니다.) 그래서 잠시 보류해야합니다. –

+0

왜 다른 방법으로 연결해야합니까? 와이파이/BT/에테르 꽤 그것에 대해 갈 비싼 방법입니다. 일반 UART가 충분히 빠르지 않을까요? –

+0

콘솔 (호스트) <--- (OTG) 장치 (OTG) ---> (호스트) PC. 장치에 OTG가 하나만있는 경우 PC와 장치가 통신하는 인터페이스가 필요합니다. 콘솔 (호스트) <--- (OTG) 장치 (Wifi/Bluetooth/이더넷) ---> PC (Wifi/Bluetooth/이더넷). 또는 키보드/마우스를 장치 자체에 연결할 수도 있지만 장치 자체에 상당한 양의 처리 능력과 메모리가 필요할 것입니다. –

0

당신이 상상하는대로 물건을 얻으려면 장비에 $$$$와 개발 작업에 $$$$$가 필요합니다. 에뮬레이트하고 싶은 것을 알려주고 다른 사람이 이미 수행 한 적이 있다면 here을보아야합니다. 그렇지 않다면 LUFA 라이브러리를 USB 호스트로 동작 할 수있는 더 큰 USB AVR과 함께 사용하고 다른 프로토콜 (I2C/SPI/UART)을 통해 두 개를 하나의 USB 게스트로 연결하고 다른 하나는 USB 호스트로 연결하십시오.

1

이 칩을 시도해보십시오 -> FTDI 232 프로토콜 칩들입니다. 데이터를 i2c, spi, serial, 원하는대로 변환합니다. 좋은, 쉽고 저렴 :). FTDI 회사, 심지어 좋은 것들 (vinculum), OTG와 모든 필요와 함께하지만 난 FTDI232로 시작합니다. 원하는 작업을 수행하기 위해 좋아하는 uC 만 사용해야합니다. ... 다른 한편으로는, 작은 보드, 어쩌면 납땜을해야합니다. :). 행운을 빕니다!