Wednesday, February 8, 2012

iPad 2 touch controller - BCM5974

I was looking into the design of the touch circuitry of the iPad2

The scheme works like this: the Broadcom BCM5974 touch controller sends the
timing info to TI's line driver CD3238, the line driver is, in essence, a level shifter
and it drives out a 18V square/sine wave to drive the Y lines one at a time. BCM5974
will sense the voltage through mutual cap on the X lines, thus determining which X-Y
crosspoint has been touched. Of course, there will be lots of points end up being
touched, so there will be a 2D image inside the BCM5974's RAM. BCM5974 will process this
data in its embedded MCU core and RAM. The RAM requirement should be less than 8KB
and the MCU is probably a stripped-down 32-bit ARM core. The reason for 32-bit is
because of the relatively high processing load (it needs to process the X * Y nodes in
each scan, and for each touch, it will need to process the 2D image, doing FIR filtering,
image edge extraction and interpolation to get the coordinates).

BCM5974 is like the following: an analog AFE (front-end) with a MUX (for all the Y points)
sigma-delta ADC (probably 16-bit, not sure) and some other functions. In the logic domain,
there is a MCU core, in the original iPhone, it is a separate IC from NXP (arm7), but in
iPhone 3G, the NXP functionality has been integrated into BCM5974 as a SOC.

the SOC's exact functionality is proprietary. However, you can refer to other touch controller
vendors for similar interface definition. Currently the only competitor out there is Synaptics,
they have documents on their website you can download.

this touch controller solution is extremely difficult to design, and it is even more difficult to
go to mass production. If you are in a startup kind of company, you should think it hard
before diving in to catch the bandwagon.

Sources: