Android Open Accessory Protocol (AOA) Using FTDI 311/312

Hello, my name is Alex Krejcie. I am a Project Engineer here at DMC. Today I am going to talk to you guys about Android Open Accessory Protocol and how you can incorporate it into your project using a FTDI or 311 or 312 chip. Just a small outline of what I'm going to be talking about: I'll go over a little bit of the background on the open accessory protocol and how it can be in functionality. Talk a little bit about the FTDI311 and 312 chips. How you are going to include them in a hardware design. How you can program with them and incorporate them into your project. 

The android Open Accessory Protocol is a protocol that was released by Google that defines a way for USB accessory to interface with an android tablet or phone. It allows external hardware basically to work with the majority of these android devices. It acts as the USB host, so it provides power to your device and it also handles the enumeration of the android device. Because it's handling the host’s capabilities it's compatible with android devices even if they don't have USB host capabilities. Which a majority of or a large number of android devices don't have host capabilities, so this is sort of filling in that gap. It provides a standard protocol to confirm that the device you are connecting to has open accessory support and for identifying the accessory to the device that has been connected. It's supported natively in android 3.1 API 12 and can be included into android 2.3.4 API if using an external library. 

The FTDI311 and 312 chips are chips that are basically preprogrammed with this functionality and protocol built into them, so that you don't have to handle the low-level level logic of enumerating and talking to an android device. They provide a bunch of different interfaces for your hardware. You can do general IO, UR, PWM, I²C or SPI and then the 312 chip is essentially the same thing as a 311 except it only provides a UR output. The architecture of this in your project is you basically have your android device talking over USB to the FT311 or 312.  This is done through a collection of FTDI libraries. They handle a lot of the low level USB communication to this device and then the chip on your hardware can talk through one of the before mentioned interfaces to other things on your board. 

When using this on your hardware design you can simply just place it on your board in between your hardware chips that you want to talk to and your USB connection to your android phone or tablet. You can use it to directly control IO or you can use it to talk to a secondary chip either another micro controller, a specific sensors, FPGA, anything like that. As we go to the next page you will see a reference schematic provided by FTDI. It shows how relatively easy it is to incorporate this into your design. There's not a whole lot of connections that need to be made it's all fairly straight forward, so it's pretty easy to just pop this onto your board to provide a communication path between your hardware and an android device.

Once you have incorporated this into your design actually programming and utilizing it is even simpler. They provide a configuration utility that allows you to set up the chip on your board. This mainly gives it identification information so that when you connect it to your android device you can identify which accessory was actually connected and launch the correct program on the phone or tablet for the connected device. FTDI also provides programming guide this gives you different codes and documentation on their API for communicating with their chips and then they also give you some example projects and code to get you started. 

If you need anymore information, below is the FTDI android page for chips and also the Open Accessory Developer resource for more information on that specific protocol. Thank you for listening and feel free to stop by DMC's website or give us a call if you need some more information on these topics. Thank you.