We have a hardware design in progress that is taking touch screen inputs and passing them along via I2C to an FPGA. The FPGA translates the I2C data to PCIe. The PCIe passes the touchscreen data to the processor. I am wondering how to get Windows to recognize this PCIe interface and deal with it like a HID. (Human Interface Device) It appears HIDs are typically USB. Can PCIe be recognized and used with Windows? Would this require a custom Windows driver? I have seen I2C to USB pSoCs that convert I2C to USB. We are trying to use the FPGA as a central point for simplifying and consolodating I/O but the tradeoff of simplifying the layout and parts may be overcome by the software development effort for custom PCIe drivers.
1 Answer
If you're using the FPGA just for the PCIe I would choose a different route. You mention USB HID, and I think this is the best way to get the touch screen data in your Windows (or any other OS) computer. While I don't think multi-touch is possible with a common HID driver like a mouse driver it should work for single-touch.
There are plenty of microcontrollers which have a USB device stack built-in. NXP lists a few dozen of them, the LPC1342 being a low level device. For the rest you only need an ADC to read your touch screen, so the LPC1342 should do.
-
\$\begingroup\$ Agreed, plenty Microchip, Atmel, you can probably find an off-the shelf customized board. \$\endgroup\$– kennyCommented Sep 12, 2011 at 17:39