Home
        Aardvark I2C/SPI Host Adapter User Manual v5.15
         Contents
1.      Slave Disable  aa_spi_slave_disable   int aa_ spi slave disable  Aardvark aardvark    Disable the Aardvark as an SPI slave device   Arguments    aardvark handle of an Aardvark adapter    Return Value    An Aardvark status code is returned that is AA OK on success   Specific Error Codes    None     Details    None     66    SY   amp  TOTAL PHASE Aardvark I2C SPI Host Adapter User Manual       Slave Set Response  aa_spi_slave_set_response     int aa spi slave set response  Aardvark aardvark   aa _ u08 num bytes   const aa u08   data out      Set the slave response in the event the Aardvark adapter is put into slave mode and  contacted by a master     Arguments    aardvark handle of an Aardvark adapter  num bytes number of bytes for the slave response  data out pointer to the slave response    Return Value    The number of bytes accepted by the Aardvark for the response   Specific Error Codes    None     Details    The value of num_bytes must be greater than zero  If it is zero  the response string  is undefined until this function is called with the correct parameters     Due to limited buffer space on the Aardvark slave  the device may only accept a  portion of the intended response  If the value returned by this function is less than  num bytes the Aardvark slave has dropped the remainder of the bytes     If more bytes are requested in a transaction  the response string will be wrapped as  many times as necessary to complete the transaction     The buffer space will nomi
2.     no stop     Arguments    aardvark handle of an Aardvark adapter    Return Value    An Aardvark status code is returned that is AA OK on success   Specific Error Codes    AA I2C ALREADY FREE BUS The bus was already free and  no action was taken     Details    If the Aardvark I C subsystem had executed a master transaction and is holding the  bus due to a previous AA I2C NO STOP flag  this function will issue the stop  command and free the bus  If the bus is already free  it will return the status code  AA I2C BUS ALREADY FREE     Similarly  if the Aardvark 1  C subsystem was placed into slave mode and in the  middle of a slave transaction  this command will disconnect the slave from the bus   flush the last transfer  and re enable the slave  Such a feature is useful if the  Aardvark adapter was receiving bytes but then was forced to wait indefinitely on the  bus because of the absence of the terminating stop command  After disabling the    46    SY   amp  TOTAL PHASE Aardvark I2C SPI Host Adapter User Manual       slave  any pending slave reception will be available to the host through the usual  aa i2c slave write stats andaa i2c slave read API calls        The bus is always freed  i e   a stop command is executed if necessary  and the  slave functions are disabled at software opening and closing of the device     Set Bus Lock Timeout  aa_i2c_bus_timeout   int aa_i2c bus timeout  Aardvark aardvark  aa_ul6 timeout ms    Set the PC bus lock timeout in milliseconds   Argumen
3.    27    SY   amp  TOTAL PHASE Aardvark I2C SPI Host Adapter User Manual       5 API Documentation    5 1 Introduction    The API documentation that follows is oriented toward the Aardvark Rosetta C bindings   The set of API functions and their functionality is identical regardless of which Rosetta  language binding is utilized  The only differences will be found in the calling convention  of the functions  For further information on such differences please refer to the  documentation that accompanies each language bindings in the Aardvark software  distribution     The Aardvark OEM   C Host Adapter and the Aardvark OEM SPI Host Adapter have a  subset of these features  Attempting to use a feature that is not supported will result in  an error     5 2 General Data Types    The following definitions are provided for convenience  All Aardvark data types are  unsigned     typedef unsigned char aa u08   typedef unsigned short aa u16   typedef unsigned int aa _ u32     5 3 Notes on Status Codes    Most of the Aardvark API functions can return a status or error code back to the caller   The complete list of status codes is provided at the end of this chapter  All of the error  codes are assigned values less than 0  separating these responses from any numerical  values returned by certain API functions     Each API function can return one of two error codes with regard to the loading of the  underlying Aardvark DLL  AA UNABLE TO LOAD LIBRARY and   AA INCOMPATIBLE LIBRARY  If these s
4.   Linux  and Mac OS X compatible     Easy to integrate application interface       Supported products        5 Perr    Aardvark Host Adapters  User Manual v5 15  February 28  2014    SY   amp  TOTAL PHASE Aardvark I2C SPI Host Adapter User Manual       1 General Overview    1 1 I C Background    1 1 1 I C History    When connecting multiple devices to a microcontroller  the address and data lines of  each devices were conventionally connected individually  This would take up precious  pins on the microcontroller  result in a lot of traces on the PCB  and require more  components to connect everything together  This made these systems expensive to  produce and susceptible to interference and noise     To solve this problem  Philips developed Inter IC bus  or I C  in the 1980s  I C is a low   bandwidth  short distance protocol for on board communications  All devices are  connected through two wires  serial data  SDA  and serial clock  SCL      SDA  SCL       Figure 1   Sample PC Implementation      Regardless of how  many slave units are attached to the FC bus  there are only  two signals connected to all of them  Consequently  there is  additional overhead because an addressing mechanism is  required for the master device to communicate with a  specific slave device     Because all communication takes place on only two wires  all devices must have a  unique address to identify it on the bus  Slave devices have a predefined address  but    EY   amp  TOTAL PHASE Aardvark I2C SP
5.   equal to 0  it will be treated as though it is 1  In order to support protocols that  include an optional checksum byte  e g   SMBus  the flag can alternatively be set to  AA I2C SIZED READ EXTRALI  In this case the Aardvark will read one more data  byte beyond the number specified by the length field     Master Read Extended  aa_i2c_read_ext     int aa_i2c read ext  Aardvark aardvark   aa _ul6 Slave_addr   AardvarkI2cFlags flags   aa ul6 num bytes   aa_ u08   data in   aa ul6   num read      Read a stream of bytes from the FC slave device with extended status information     Arguments  aardvark handle of an Aardvark adapter  Slave_addr __ the slave from which to read  flags special operations as described previously  num bytes the number of bytes to read  maximum 65535   data in pointer to data  num read the actual number of bytes read    Return Value    50    SY   amp  TOTAL PHASE Aardvark I2C SPI Host Adapter User Manual       Status code  see  Notes  section    Specific Error Codes    None     Details    This function operates exactly like aa_i2c_ read  except that the return value now  specifies a status code  The number of bytes read is returned through an additional  pointer argument at the tail of the parameter list     The status code allows the user to discover specific events on the I C bus that  would otherwise be transparent given only the number of bytes transacted  The   Notes  section describes the status codes     For a master read operation  the AA I2C STA
6.   there was an error receiving the  acknowledgment response from the Aardvark adapter  This can occur in situations  where the incoming data stream has been saturated by asynchronously received  messages an outgoing message is sent to the Aardvark adapter  but the incoming  acknowledgment is dropped by the operating system as a result of the incoming USB  receive buffer being full  The error signifies that it was not possible to guarantee that the  connected Aardvark device has processed the host PC request  though it is likely that  the requested action has been communicated to the Aardvark adapter and the response  was simply lost  For example  if the slave functions are enabled and the incoming  communication buffer is saturated  an API call to disable the slave may return  AA_COMMUNICATION ERROR even though the slave has actually been disabled     If either the I 7C or SPI subsystems have been disabled by aa_configure  all other API  functions that interact with I C or SPI will return AA_I2C_NOT_ ENABLED or  AA_SPI_NOT_ ENABLED  respectively     These common status responses are not reiterated for each function  Only the error  codes that are specific to each API function are described below     All of the possible error codes  along with their values and status strings  are listed  following the API documentation     5 4 General    5 4 1 Interface  Find Devices  aa_find_devices     int aa_ find devices  int nelem   aa ul6   devices      Get a list of ports to which Aardv
7.  Details    This function is the same as aa_ find devices   except that is also returns the  unique IDs of each Aardvark device  The IDs are guaranteed to be non zero if valid     The IDs are the unsigned integer representation of the 10 digit serial numbers     The number of devices and IDs returned in each of their respective arrays is  determined by the minimum of num_devices and num_ids  However  if either  array is NULL  the length passed in for the other array is used as is  and the NULL  array is not populated  If both arrays are NULL  neither array is populated  but the  number of devices found is still returned     Open an Aardvark device  aa_open   Aardvark aa_open  int port number    Open the Aardvark port     Arguments    port number The port is the same as the one obtained from function  aa find devices  It is a zero based number     Return Value    This function returns an Aardvark handle  which is guaranteed to be greater than  zero if valid     Specific Error Codes    AA UNABLE TO OPEN The specified port is not connected to an  Aardvark device or the port is already in  use    AA INCOMPATIBLE DEVICE There is a version mismatch between the    DLL and the firmware  The DLL is not of a  sufficient version for interoperability with  the firmware version or vice versa  See  aa_open_ext   for more information     Details    31    SY   amp  TOTAL PHASE Aardvark I2C SPI Host Adapter User Manual       This function is recommended for use in simple applications where ex
8.  Manual       This function is recommended for use in complex applications where extended  information is required  For simpler applications  the use of aa_open   is  recommended     This open function also terminates all slave functionality as described for the  aa_ open   call     Close an Aardvark  aa_close   int aa_close  Aardvark aardvark     Close the Aardvark port   Arguments    aardvark handle of an Aardvark adapter to be closed    Return Value    The number of adapters closed is returned on success  This will usually be 1   Specific Error Codes    None     Details    An Aardvark adapter could have potentially been opened  enabled as a slave  and  configured to send and receive asynchronous responses to and from a third party  master  A call to aa_close   will deactivate all slave functionality  Also the I C bus  is freed  in the event that it was held indefinitely from a previous AA I2C NO STOP  transaction     If the handle argument is zero  the function will attempt to close all possible  handles  thereby closing all open Aardvark adapters  The total number of Aardvark  adapters closed is returned by the function     Get Port  aa_port   int aa_port  Aardvark aardvark      Return the port number for this Aardvark handle   Arguments    aardvark handle of an Aardvark adapter    34    SY   amp  TOTAL PHASE Aardvark I2C SPI Host Adapter User Manual       Return Value    The port number corresponding to the given handle is returned  It is a zero based  number     Specifi
9.  The SPI API does not include a function that is analogous to the I  C function   aa i2c slave write stats  Since SPI is a full duplex standard  the slave  writes to the master whenever it receives bytes from the master  Hence  a received  message from aa_i2c slave _ read implies that an equal number of bytes were  sent to the master     68    SY   amp  TOTAL PHASE Aardvark I2C SPI Host Adapter User Manual       5 7 GPIO Interface    5 7 1 GPIO Notes    1  The following enumerated type maps the named lines on the Aardvark I C SPI  output cable to bit positions in the GPIO API  All GPIO API functions will index  these lines through a single 8 bit masked value  Thus  each bit position in the  mask can be referred back its corresponding line through the mapping described  below    Table 8   AardvarkGpioBits   enumerated type of line locations in bit mask    AA GPIO SCL IC SCL line  AA GPIO SDA IC SDA line  AA GPIO MISO SPI MISO line    AA GPIO MOSI SPI MOSI line  AA GPIO SS SPI SS line       AA GPIO SCK SPI SCK line    2  There is no check in the GPIO API calls to see if a particular GPIO line is enabled  in the current configuration  If a line is not enabled for GPIO  the get function will  simply return O for those bits  Another example is if one changes the GPIO  directions for I C lines while the I C subsystem is still active  These new direction  values will be cached and will automatically be activate if a later call to  aa_configure disables the I C subsystem and enables 
10.  by the Aardvark device  but the response  was lost  A similar problem can happen when one attempts to disable the very slave that  is saturating the incoming receive buffer  The API function sends a command to disable  the slave  but the acknowledgment from the Aardvark adapter is lost  The API call will  treat this as a communication error  but if the slave was actually disabled  a subsequent  call to disable the slave should complete without errors     The receive saturation problem can be improved in two ways  The obvious solution is to  reduce the amount of traffic that is sent by the master between calls to the Aardvark API   This will require the ability to reconfigure the offending master device  The other option is  to more regularly poll the slave to obtain any pending asynchronous messages  Keep in  mind that each call to capture pending asynchronous data can have a timeout of up to  500 ms  If there is other time critical code that must be executed simultaneously  it is  best to use the asynchronous polling function found in the API which allows for variable  timeout values     3 8 3 Threading    The Aardvark DLL is designed for single threaded environments so as to allow for  maximum cross platform compatibility  If the application design requires multi threaded    24    SY   amp  TOTAL PHASE Aardvark I2C SPI Host Adapter User Manual       use of the Aardvark functionality  each Aardvark API call can be wrapped with a thread   safe locking mechanism before and af
11.  compatible with firmware revisions  greater than or equal to a certain version number  Likewise  each firmware version is  tagged as being compatible with DLL revisions greater than or equal to a specific version  number     Here is an example     DLL v1 20  compatible with Firmware  gt   v1 15  Firmware v1 30  compatible with DLL  gt   v1 20    Hence  the DLL is not compatible with any firmware less than version 1 15 and the  firmware is not compatible with any DLL less than version 1 20  In this example  the  version number constraints are satisfied and the DLL can safely connect to the target  firmware without error  If there is a version mismatch  the API calls to open the device  will fail  See the API documentation for further details     3 7 Rosetta Language Bindings  API Integration into  Custom Applications    3 7 1 Overview    The Aardvark Rosetta language bindings make integration of the Aardvark API into  custom applications simple  Accessing Aardvark functionality simply requires function  calls to the Aardvark API  This API is easy to understand  much like the ANSI C library  functions   e g   there is no unnecessary entanglement with the Windows messaging  subsystem like development kits for some other embedded tools      First  choose the Rosetta bindings appropriate for the programming language  Different  Rosetta bindings are included with the software distribution on the distribution CD  They  can also be found in the software download package available on
12.  condition is seen in the middle of a byte  When    47    SY   amp  TOTAL PHASE Aardvark I2C SPI Host Adapter User Manual       the Aardvark is acting as an I C mater device  this may result in only a partial byte  being executed on the bus     5 5 3 IC Master    Set Bitrate  aa_i2c_bitrate   int aa_i2c bitrate  Aardvark aardvark  int bitrate khz    Set the PC bitrate in kilohertz     Arguments    aardvark handle of an Aardvark adapter  bitrate _khz the requested bitrate in khz     Return Value    This function returns the actual bitrate set   Specific Error Codes    None     Details  The power on default bitrate is 100 kHz     Only certain discrete bitrates are supported by the Aardvark I C master interface  As  such  this actual bitrate set will be less than or equal to the requested bitrate     If bitrate khz is 0  the function will return the bitrate presently set on the  Aardvark adapter and the bitrate will be left unmodified     Master Read  aa_i2c_read     int aa_i2c read  Aardvark aardvark   aa_ul6 Slave_addr   AardvarkI2cFlags flags   aa ul6 num bytes   aa_u08   data in      Read a stream of bytes from the FC slave device   Arguments    aardvark handle of an Aardvark adapter    48    SY   amp  TOTAL PHASE Aardvark I2C SPI Host Adapter User Manual       Slave_addr the slave from which to read    flags special operations as described in  Notes  section and below  num bytes the number of bytes to read  maximum 65535   data_in pointer to data    Return Value    Number o
13.  has many features other important features worth mentioning  It supports multiple  data speeds  standard  100 kbps   fast  400 kbps   and high speed  3 4 Mbps   communications     SY   amp  TOTAL PHASE Aardvark I2C SPI Host Adapter User Manual       Other features include     e Built in collision detection    e 10 bit Addressing    e Multi master support       Data broadcast  general call      For more information about other features  see the references at the end of this section   1 1 4 IC Benefits and Drawbacks    Since only two wires are required  1  C is well suited for boards with many devices  connected on the bus  This helps reduce the cost and complexity of the circuit as  additional devices are added to the system     Due to the presence of only two wires  there is additional complexity in handling the  overhead of addressing and acknowledgments  This can be inefficient in simple  configurations and a direct link interface such as SPI might be preferred     1 1 5 I C References    2C bus     NXP  Philips  Semiconductors Official FC website    e  C  Inter Integrated Circuit  Bus Technical Overview and Frequently Asked  Questions     Embedded Systems Academy      Introduction to 1  C     Embedded com      I C     Open Directory Project Listing    1 2 SPI Background    1 2 1 SPI History  SPI is a serial communication bus developed by Motorola  It is a full duplex protocol    which functions on a master slave paradigm that is ideally suited to data streaming  applicati
14.  larger than num_bytes     Details    If the message was directed to this specific slave   addr will be set to the value of  this slaves address  However  this slave may have received this message through a  general call addressing  In this case   addr will be 0x80 instead of its own    address     59    SY   amp  TOTAL PHASE Aardvark I2C SPI Host Adapter User Manual       The num bytes parameter specifies the size of the memory pointed to by data  It is  possible  however  that the received slave message exceeds this length  In sucha  situation  AA I2C DROPPED EXCESS BYTES is returned  meaning that   num bytes was placed into data but the remaining bytes were discarded     There is no cause for alarm if the number of bytes read is less than num bytes   This simply indicates that the incoming message was short     The reception of bytes by the Aardvark slave  when it is configured as an I  C slave   is asynchronous with respect to the PC host software  Hence  there could be  multiple responses queued up from previous transactions     This function will wait 500 milliseconds before timing out  See the aa_async_ poll  function if a variable timeout is required     Slave Read Extended  aa_i2c_slave_read_ext     int aa_i2c slave read ext  Aardvark aardvark   aa u08   addr   aa ul6 num bytes   aa u08   data out  aa ul6   num read      Read the bytes from an FC slave reception with extended status information     Arguments    aardvark handle of an Aardvark adapter   addr the addres
15.  likely a result of a  communication error  Make sure that  out_num_ bytes is less than 4 KiB     64    SY   amp  TOTAL PHASE Aardvark I2C SPI Host Adapter User Manual       Details    Due to the full duplex nature of the SPI protocol  for every byte written to the slave   one byte is also received  The Aardvark will always receive the same number of  bytes that it sends out  barring any error   This is the return value mentioned above   The user has the option of saving all  some  or none of those received bytes by  varying the size of in num bytes     This function will always write out the number of bytes defined by out_num_ bytes  from the memory pointed to by data_out  When out_num bytes is larger than  in_num bytes  data_inis completely filled and any extra bytes are dropped   When out_num_ bytes is less than in_num_ bytes  all the received bytes are  saved and data_inis only partially filled     The data_in pointer should reference memory that is at least allocated to the size  specified by in _num_ bytes  Otherwise there will be a memory access violation in  the program     If out_num_bytes is 0  no bytes will be written to the slave  However  the slave  select line will be dropped for 5 10 us  This can be useful in sending a signal to a  downstream SPI slave without actually sending any bytes  For example  if an SPI  slave has tied the slave select to an interrupt line and it sees the line is toggled  without any bytes sent  it can interpret the action as a command t
16.  slave cuts short the  transmission by sending a NACK by using the function aa_i2c_ read ext     2  Collisions are not detected in the following situations      Between a REPEATED START condition and a data bit     Between a STOP condition and a data bit     Between a REPEATED START and a STOP condition    This constraint can be phrased in a different manner  Say that   C master device A has a  packet length of X bytes  If there is a second 1  C master device  B  that sends packets of  length greater than X bytes  the first X bytes should never contain exactly the same data  as the data sent by device A  Otherwise the results of the arbitration will be undefined     This is a constraint found with most 12  C master devices used in a multi master  environment     2 4 SPI Signaling Characteristics    2 4 1 SPI Waveforms    The SPI signaling is characterized by the waveforms in Figures 7 and 8     12    Ay   amp  TOTAL PHASE Aardvark I2C SPI Host Adapter User Manual       SS    t          tz    tp mni   MISO MISO  MOSI MOSI  Figure 7   SPI Waveform     Three different times are of  note  t    time from the assertion of SS  to the first clock  cycle  t     time from the last clock cycle and the deassertion  of SS   t     clock period   SS      ipm     ty    MISO MISO MISO  MOSI MOSI   J MOSI    Figure 8   SPI Byte Timing     t   is the setup time between  SPI bytes and t   is the total byte to byte time     J    Table 1   SPI Timing Parameters    Symbol   Parameter  min   t SS  a
17.  the Total Phase  website  Currently the following languages are supported  C C    Python  Visual   Basic 6  Visual Basic  NET  and C   Next  follow the instructions for each language  binding on how to integrate the bindings with your application build setup  As an  example  the integration for the C language bindings is described below   For information  on how to integrate the bindings for other languages  please see the example code  included on the distribution CD and also available for download on the Total Phase  website      1  Include the aardvark h file included with the API software package in any C or  C   source module  The module may now use any Aardvark API call listed in  aardvark h     22    SY   amp  TOTAL PHASE Aardvark I2C SPI Host Adapter User Manual       2  Compile and link aardvark  c with your application  Ensure that the include path  for compilation also lists the directory in which aardvark h is located if the two  files are not placed in the same directory     3  Place the Aardvark DLL  included with the API software package  in the same  directory as the application executable or in another directory such that it will be  found by the previously described search rules     3 7 2 Versioning    Since a new Aardvark DLL can be made available to an already compiled application  it  is essential to ensure the compatibility of the Rosetta binding used by the application   e g   aardvark c   against the DLL loaded by the system  A system similar to the o
18. 66 0 0    4  Unmount the  proc bus usb directory using umount  5  Remount the  proc bus usb directory using mount    6  Repeat step 1  Now the contents of that directory should be writable by all users     19    SY   amp  TOTAL PHASE Aardvark I2C SPI Host Adapter User Manual       7  Set the environment variable USB DEVFS PATH to  proc bus usb    3 4 Mac OS X USB Driver    The Aardvark communications layer under Mac OS X does not require a specific kernel  driver to operate  Both Mac OS X 10 4 Tiger and 10 5 Leopard are supported  It is  typically necessary to ensure that the user running the software is currently logged into  the desktop  No further user configuration should be necessary     3 5 USB Port Assignment    The Aardvark adapter is assigned a port on a sequential basis  The first adapter is  assigned to port 0  the second is assigned to port 1  and so on  If an Aardvark adapter is  subsequently removed from the system  the remaining adapters shift their port numbers  accordingly  With n Aardvark adapters attached  the allocated ports will be numbered  from 0 to n1     3 5 1 Detecting Ports    To determine the ports to which the Aardvark adapters have been assigned  use the  aa find devices routine as described in following API documentation     3 6 Aardvark Dynamically Linked Library    3 6 1 DLL Philosophy    The Aardvark DLL provides a robust approach to allow present day Aardvark enabled  applications to interoperate with future versions of the device interface 
19. API  functions that interact with I C or SPI will return AA CONFIG ERROR     If configurations are switched  the subsystem specific parameters will be preserved   For example if the SPI bitrate is set to 500 kHz and the SPI system is disabled and  then enabled  the bitrate will remain at 500 kHz  This also holds for other  parameters such as the SPI mode  SPI slave response  I  C bitrate  I C slave  response  etc     However  if a subsystem is shut off  it will be restarted in a quiescent mode  That is  to say  the I C slave function will not be reactivated after re enabling the I C  subsystem  even if the I C slave function was active before first disabling the 1  C  subsystem     Note  Whenever the configure command is executed and GPIO lines are enabled   the GPIO lines will be momentarily switched to high Z before their direction and  pullup configurations are executed     Target Power  aa_target_power   int aa_ target power  Aardvark aardvark  aa_u08 power mask      Activate deactivate target power pins 4 and 6   Arguments  aardvark handle of an Aardvark adapter    power mask enumerated values specifying power pin state  See Table 3     Table 3   power_mask enumerated types    AA TARGET POWER NONE   Disable target power pins  AA_TARGET POWER BOTH   Enable target power pins    AA TARGET POWER QUERY   Queries the target power pin state       39    SY   amp  TOTAL PHASE Aardvark I2C SPI Host Adapter User Manual       Return Value    The current state of the target power pin
20. Aardvark Host Adapters    The Aardvark Host Adapters allow developers to interface a host  PC to a downstream embedded system environment and transfer  serial messages using the I C and SPI protocols  Additionally  the   12C and or SPI pins can be used for general purpose signaling  when the respective subsystem is not in use     Aardvark I C SPI Host Adapter Features    e  2C     Two wire interface      Standard mode  100 kbps  and fast mode  400 kbps       Variable bitrate  1 800 kbps    o Master and slave functionality  e SPI     Four wire serial communication protocol      Up to 8 Mbps as master  4 Mbps as slave      Configurable slave select polarity for master mode  e GPIO     General Purpose Input Output   o General purpose signaling on I C and or SPI pins  e Software      Windows  Linux  and Mac OS X compatible      Easy to integrate application interface      Upgradeable Firmware over USB    Aardvark OEM I C Host Adapter Features    e 12C     Two wire interface     Standard mode  100 kbps   o Master only up to 125 kbps  e GPIO     General Purpose Input Output     Up to 6 general purpose signaling pins     Software     Windows  Linxu  and Mac OS X compatible     Easy to integrate application interface    Aardvark OEM SPI Host Adapter Features    e SPI     Four wire serial communication protocol  o Master only up to 1 Mbps     Configurable slave select polarity   e GPIO     General Purpose Input Output     Up to 6 general purpose signaling pins   e Software     Windows
21. GPIO for the IC lines  The  same type of behavior holds foraa_gpio pullup andaa gpio set     3  Additionally  for lines that are not configured as inputs  a change in the pullup  configuration using aa_gpio pullup will be cached and will take effect the next  time the line is active and configured as an input  The same behavior holds for  aa gpio set when a line is configured as an input instead of an output     4  On Aardvark adapter power up  directions default to all input  pullups default to  disabled and outputs default to logic low  Also the GPIO subsystem is off by  default  It must be activated by using aa_configure     69    SY   amp  TOTAL PHASE Aardvark I2C SPI Host Adapter User Manual       5  Note  For hardware version 1 02  it is not possible to have high Z inputs on the 1   C lines since that hardware has 2 2K pullups on the I C bus     5 7 2 GPIO Interface    Direction  aa_gpio_direction     int aa_gpio direction  Aardvark aardvark   aa u08 direction mask      Change the direction of the GPIO lines between input and output directions     Arguments  aardvark handle of an Aardvark adapter  direction mask each bit corresponds to the physical line as given by    AardvarkGpioBits  If a line s bit is 0  the line is  configured as an input  Otherwise it will be an output     Return Value  An Aardvark status code is returned that is AA _OK on success     Specific Error Codes  None     Details    None     Pullup  aa_gpio_pullup     int aa _gpio pullup  Aardvark aardvar
22. I Host Adapter User Manual       the lower bits of the address can be assigned to allow for multiples of the same devices  on the bus     1 1 2 I C Theory of Operation    I C has a master slave protocol  The master initiates the communication  Here is a  simplified description of the protocol  For precise details  please refer to the Philips 1  C  specification  The sequence of events are as follows     1  The master device issues a start condition  This condition informs all the slave  devices to listen on the serial data line for their respective address     2  The master device sends the address of the target slave device and a read write  flag     3  The slave device with the matching address responds with an acknowledgment  signal     4  Communication proceeds between the master and the slave on the data bus   Both the master and slave can receive or transmit data depending on whether the  communication is a read or write  The transmitter sends 8 bits of data to the  receiver  which replies with a 1 bit acknowledgment     5  When the communication is complete  the master issues a stop condition  indicating that everything is done     Figure 2 shows a sample bitstream of the 1  C protocol        READ  NAK   h i ww i E  ERRCRREE PECCCCCCETENPNNCERTE  S Lp    Slave Address ACK Data Data STOP    Figure 2   PC Protocol      Since there are only two wires   this protocol includes the extra overhead of the addressing  and acknowledgement mechanisms     1 1 3 I C Features    I C
23. TUS DATA NACK flag is not used  since the acknowledgment of data bytes is predetermined by the master and the 1  C  specification     Master Write  aa_i2c_write     int aa_i2c write  Aardvark aardvark   aa_ul6 Slave_addr   AardvarkI2cFlags flags   aa ul6 num bytes     const aa u08   data out    Write a stream of bytes to the FC slave device   Arguments    aardvark handle of an Aardvark adapter   Slave_addr the slave from which to read   flags special operations as described in  Notes  section  num bytes the number of bytes to write  maximum 65535   data out pointer to data    Return Value    Number of bytes written     Specific Error Codes    51    SY   amp  TOTAL PHASE Aardvark I2C SPI Host Adapter User Manual       AA I2C WRITE ERROR There was an error reading the  acknowledgment from the Aardvark adapter   This is most likely a result of a communication  error     Details    For ordinary 7 bit addressing  the lower 7 bits of sLave_addr should correspond to  the slave address  The topmost bits are ignored  The Aardvark I C subsystem will  assemble the address along with the R W bit after grabbing the bus  For 10 bit  addressing  the lower 10 bits of addr should correspond to the slave address  The  Aardvark adapter will then assemble the address into the proper format as  described in the Philips specification  There is a limitation that a maximum of only  65534 bytes can be written in a single transaction if the 10 bit addressing mode is  used     The slave addr 0x00 has b
24. This allows the Aardvark  adapter to be used with both TTL and CMOS logic level devices  A logic high of 3 3 volts  will be adequate for TTL compliant devices since such devices are ordinarily specified to  accept logic high inputs above approximately 3 volts    2 2 2 ESD protection    The Aardvark adapter has built in electrostatic discharge protection to prevent damage  to the unit from high voltage static electricity     2 2 3 Input Current  All inputs are high impedance so the input current is approximately 1 A   2 2 4 Drive Current  The Aardvark adapter can drive all output signals with a maximum of 10 mA current    source or sink  It may be possible to exceed this for short periods of time  but drawing  more than 20mA may damage the I O buffers     2 3 I C Signaling Characteristics    2 3 1 Speed  As of hardware version 3 00  the Aardvark IC master can operate at a maximum bitrate    of 800 kbps and supports many intermediate bitrates between 1 kHz and the maximum   The power on default bitrate is for the 1  C master unit is 100 kbps     10    SY   amp  TOTAL PHASE Aardvark I2C SPI Host Adapter User Manual       For slave functionality  the Aardvark adapter can operate at any rate less than the  maximum bitrate of 800 kbps     For hardware versions before 3 00  the maximum I C master bitrate is 663 kbps and the  maximum I  C slave bitrate is 595 kbps     It is not possible to send bytes at a throughput of exactly 1 8 times the bitrate  The I C  protocol requires that 9 
25. adapters have a subset of these features  The Aardvark OEM I C Host  Adapter is an I C master capable of speeds up to 125 kbps  The Aardvark OEM SPI  Host Adapter is an SPI master capable of speeds up to 1 Mbps  Neither OEM adapter  provides slave capabilities     2 1 Pinouts    2 1 1 Connector Specification    The ribbon cable is a standard 10 wire 0 050     1 25 mm  pitch cable that is 5 125      131mm  long     The ribbon cable connector is a standard 0 100     2 54 mm  pitch IDC type connector   This connector will mate with a standard keyed boxed header     Alternatively  a split cable is available which connects to the ribbon cable and provides  individual leads for each pin     2 1 2 Orientation  The ribbon cable pin order follows the standard convention  The red line indicates the    first position  When looking at your Aardvark adapter in the upright position  figure 5     pin 1 is in the top left corner and pin 10 is in the bottom right corner        Figure 5   The Aardvark PC SPI Host Adapter in the upright  position      Pin 1 is located in the upper left corner of the  connector and Pin 10 is located in the lower right corner of  the connector     A   amp  TOTAL PHASE Aardvark I2C SPI Host Adapter User Manual       If you flip your Aardvark adapter over  figure 6   such that the text on the serial number  label is in the proper upright position  the pin order is as shown in the following diagram        Figure 6   The Aardvark PC SPI Host Adapter in the upside  do
26. ark devices are attached     Arguments    29    SY   amp  TOTAL PHASE Aardvark I2C SPI Host Adapter User Manual       nelem Maximum size of the array  devices array into which the port numbers are returned    Return Value    This function returns the number of devices found  regardless of the array size   Specific Error Codes    None     Details    Each element of the array is written with the port number  Devices that are in use  are ORed with AA PORT NOT FREE   0x8000       Example     Devices are attached to port 0  1  2  ports 0 and 2 are available  and port 1 is in use   array   gt  0x0000  0x8001  0x0002     If the input array is NULL  it is not filled with any values     If there are more devices than the array size  as specified by nelem    only the first  ne lem port numbers will be written into the array     Find Devices  aa_find_devices_ext     int aa_ find devices ext  int num devices   aa ul6   devices   int num_ids     aa_u32   unique ids    Get a list of ports and unique IDs to which Aardvark devices are attached   Arguments    num devices maximum number of device port numbers to return  devices array into which the device port numbers are returned  num_ids maximum number of unique IDs to return   unique ids array into which the unique IDs are returned    Return Value    This function returns the number of devices found  regardless of the array sizes     30    SY   amp  TOTAL PHASE Aardvark I2C SPI Host Adapter User Manual       Specific Error Codes    None    
27. bits are sent for every 8 bits of data  There is also a finite time  required to set up a byte transmission  In the development of the Aardvark adapter   many optimizations have been employed to decrease this setup time  This allows byte  throughputs within each transaction to be very close to the theoretical maximum byte  throughput of 1 9 the bitrate     There can be extra overhead introduced by the operating system between calls to the  Aardvark API  These delays will further reduce the overall throughput across multiple  transactions  To achieve the fastest throughput  it is advisable to send as many bytes as  possible in a single transaction  i e   a single call to the Aardvark API      2 3 2 Pull up Resistors    There is a 2 2K resistor on each I C line  SCL  SDA   The lines are effectively pulled up  to 3 3V  resulting in approximately 1 5 mA of pull up current  If the Aardvark adapter is  connected to an I C bus that also includes pull up resistors  the total pull up current  could be potentially larger  The IC specification allows for a maximum of 3 mA pull up  current on each I  C line     A good rule of thumb is that if a downstream I C device can sink more than 5 mA of  current  the protocol should operate properly  Stronger pull up resistors and larger sink  currents may be required for fast bitrates  especially if there is a large amount of  capacitance on the bus  The Aardvark device is able to sink approximately 10 mA  so it  is possible to have two Aardvark d
28. bytes written from a previous Aardvark FC slave to FC master  transmission with extended status information     Arguments    aardvark handle of an Aardvark adapter  num written  the number of bytes written by the slave    Return Value    Status code  see  Notes  section      58    SY   amp  TOTAL PHASE Aardvark I2C SPI Host Adapter User Manual       Specific Error Codes    None     Details    This function operates exactly like aa i2c slave write stats  except that the  return value now specifies a status code  The number of bytes written is returned  through an additional pointer argument at the tail of the parameter list     The only possible status code is AA I2C STATUS BUS ERROR which can occur  when an illegal START  STOP  or RESTART condition appears on the bus during a  transaction  In this case the num written may not exactly reflect the number of    bytes written by the slave  It can be off by 1     Slave Read  aa_i2c_slave_read     int aa_i2c slave read  Aardvark aardvark   aa u08   addr   aa ul6 num bytes   aa u08   data out    Read the bytes from an FC slave reception   Arguments  aardvark handle of an Aardvark adapter  addr the address to which the received message was sent    num bytes the maximum size of the data buffer    data out pointer to data buffer    Return Value    This function returns the number of bytes read asynchronously     Specific Error Codes    AA I2C SLAVE TIMEOUT There was no recent slave transmission   AA_I2C DROPPED EXCESS BYTES The msg was
29. c Error Codes    None     Details    None     Get Features  aa_features   int aa features  Aardvark aardvark      Return the device features as a bit mask of values  or an error code if the handle is not  valid     Arguments    aardvark handle of an Aardvark adapter    Return Value    The features of the Aardvark device are returned  These are a bit mask of the  following values      define AA FEATURE SPI  1 lt  lt 0    define AA FEATURE I2C  1 lt  lt 1    define AA FEATURE GPIO   1 lt  lt 3     Specific Error Codes    None     Details    None     Get Unique ID  aa_unique_id   aa_ u32 aa unique id  Aardvark aardvark      Return the unique ID of the given Aardvark device     35    SY   amp  TOTAL PHASE Aardvark I2C SPI Host Adapter User Manual       Arguments  aardvark handle of an Aardvark adapter    Return Value    This function returns the unique ID for this Aardvark adapter  The IDs are  guaranteed to be non zero if valid  The ID is the unsigned integer representation of  the 10 digit serial number     Specific Error Codes    None     Details    None     Status String  aa_status_ string     const char  aa status string  int status      Return the status string for the given status code   Arguments    status status code returned by an Aardvark API function    Return Value    This function returns a human readable string that corresponds to status  If the code  is not valid  it returns a NULL string     Specific Error Codes    None     Details    None     Logging  aa_log   i
30. c bit corruptions in the most significant bit of  certain bytes  The bug has been noted for SPI slave devices and there may also be    14    SY   amp  TOTAL PHASE Aardvark I2C SPI Host Adapter User Manual       corruptions when using this mode for sending or receiving messages as an SPI master   Unfortunately there is no fix for this problem and the best solution is to use another  mode  If you have any questions regarding this issue please contact Total Phase  support     It is only possible to reliably send and receive transactions of 4 KiB or less as an SPI    master or slave  This is due to operating system issues and the full duplex nature of the  SPI signaling     2 4 5 Aardvark Device Power Consumption  The Aardvark adapter consumes less than 100 mA of current  This is within the USB 1 1    current specification for devices powered from a USB host adapter  500 mA maximum  per device  or a USB hub  100 mA maximum per device      2 5 USB 1 1 Compliance    The Aardvark adapter is USB 1 1 compliant and will also operate as a full speed   12 Mbps  device on a USB 2 0 hub or host controller    2 6 Physical Specifications    e Dimensions  W x D x L  55 6 mm x 22 2 mm x 89 mm  2 19  x 0 87  x 3 5    e Weight  64 g  0 14 Ibs     2 7 Temperature Specifications    The Aardvark device is designed to be operated at room temperature  10 35 C   The  electronic components are rated for standard commercial specifications  0 70 C    However  the plastic housing  along with the ribbon an
31. ch as an I C or SPI EEPROM with the  Aardvark adapters power  which is provided by the USB port   It is ideal if the  downstream device does not consume more than 25 mA per pin  The Aardvark adapter  is compatible with USB hubs as well as USB host controllers  see section below on USB  compliance   USB hubs are technically only rated to provide 100 mA per USB device  If  the Aardvark adapter is directly plugged into a USB host controller  it can theoretically  draw up to 500 mA total  leaving approximately 400 mA for any downstream target   However  the Aardvark adapter always reports itself to the host as a low power device    lt 100 mA   Therefore  drawing large amounts of current from the host is not advisable     SY   amp  TOTAL PHASE Aardvark I2C SPI Host Adapter User Manual       NC  5V  Pin 4   IC Power  NC  5V  Pin 6   SPI Power    By default  these pins are left unconnected at the time of shipping  For hardware  versions 2 00 and greater  these pins are switched through the software API  A  maximum of 25 mA may be drawn from each pin     For hardware versions prior to 2 00  power cannot be supplied unless the appropriate  jumpers are connected inside the Aardvark unit  To connect VDD to pins 4 and 6   connect jumpers J301 and J302     Opening your Aardvark unit will void any hardware warranty  Any modifications are at the  user s own risk     2 2 Signal Levels Voltage Ratings    2 2 1 Logic High Levels  All signal levels are nominally 3 3 volts      10   logic high  
32. corruption can cause the Aardvark adapter to be locked until a subsequent clean update  is executed     The upgrade utility is also compatible with older devices that use the legacy virtual serial  port communications drivers  pre 3 00 firmware revisions   The older serial port driver  must be installed on your operating system  When listing such devices  the upgrade  utility will report these devices with port numbers starting at 128  The devices will also be  marked as  serial  as opposed to the  direct  identifier  Upgrading the legacy firmware  will cause the Aardvark unit to automatically switch to using the new communications  driver interface  If the host PC does not have the appropriate driver installed  the  operating system may prompt the user for the new driver upon completion of the  firmware upgrade  Please refer to the section on USB driver installation above for more  information on how to install the new driver     The Aardvark OEM   C Host Adapter and the Aardvark OEM SPI Host Adapter do not  support field upgrades     4 1 2 Upgrade Procedure    Here is the simple procedure by which the Aardvark firmware is upgraded     1  Download the latest firmware from the Total Phase website     2  Unzip the downloaded file  It should contain the aaf Lash utility  This utility  contains the necessary information to perform the entire firmware update     3  Run the appropriate version of aaflash      aaflash win32 exe on Windows  o aaflash  linux on Linux    o aaf lash da
33. d   e The requested slave is on the bus but refuses to acknowledge its address     e The Aardvark adapter was unable to seize the bus due to the presence of  another I C master  Here  the arbitration was lost during the slave  addressing phase     results can be unpredictable     49    SY   amp  TOTAL PHASE Aardvark I2C SPI Host Adapter User Manual       e Zero bytes were requested from a slave  The slave acknowledged its address  and returned 1 byte  That byte was dropped     Ordinarily the number of bytes read  if not 0  will equal the requested number of  bytes  One special scenario in which this will not happen is if the Aardvark adapter  loses the bus during the data transmission due to the presence of another 1  C  master     If the slave has fewer bytes to transmit than the number requested by the master   the slave will simply stop transmitting and the master will receive Oxf f for each  remaining byte in the transmission  This behavior is in accordance with the 1  C  protocol     Additionally  the flags argument can be used to specify a sized read operation  If  the flag includes the value AA _I2C SIZED READ  the Aardvark adapter will treat  the first byte received from the slave as a packet length field  This length denotes  the number of bytes that the slave has available for reading  not including the length  byte itself   The Aardvark adapter will continue to read the minimum of   num bytes 1 and the length field  The length value must be greater than O  If it is
34. d USB cables  may not withstand  the higher end of this range  Any use of the Aardvark device outside the room  temperature specification will void the hardware warranty     15    SY   amp  TOTAL PHASE Aardvark I2C SPI Host Adapter User Manual       3 Software    3 1 Compatibility  3 1 1 Overview    The Aardvark software is offered as a 32 bit or 64 bit Dynamic Linked Library  or shared  object   The specific compatibility for each operating system is discussed below  Be sure  the device driver has been installed before plugging in the Aardvark adapter     3 1 2 Windows Compatibility    The Aardvark software is compatible with 32 bit and 64 bit versions of Windows XP  SP2  or later   Windows Vista  Windows 7  and Windows 8 8 1     Windows 2000 and legacy 16 bit Windows 95 98 ME operating systems are not  supported     3 1 3 Linux Compatibility    The Aardvark software is compatible with all standard 32 bit and 64 bit distributions of  Linux with kernel 2 6 and integrated USB support  When using the 32 bit library on a 64   bit distribution  the appropriate 32 bit system libraries are also required     3 1 4 Mac OS X Compatibility    The Aardvark software is compatible with Intel versions of Mac OS X 10 5 Leopard   10 6 Snow Leopard  10 7 Lion  10 8 Mountain Lion  and 10 9 Mavericks  Installation of  the latest available update is recommended     3 2 Windows USB Driver    3 2 1 Driver Installation    As of version 3 0  the Aardvark communications layer under Windows no longer 
35. d by two parameters  clock polarity  CPOL   and clock phase  CPHA   Both parameters have two states which results in four possible  combinations  These combinations are shown in figure 4     SY   amp  TOTAL PHASE Aardvark I2C SPI Host Adapter User Manual       Clock Phase  CPHA   CPHA   0 CPHA   1    o  9   Uo    AS    MODEO MODE 1   s   0  a        ii  2 2  YU u  MODE 2   MODE 3    sampie sample    Figure 4   SPI Modes     The frame of the data exchange is  described by two parameters  the clock polarity  CPOL  and  the clock phase  CPHA   This diagram shows the four  possible states for these parameters and the corresponding  mode in SPI     1 2 4 SPI Benefits and Drawbacks    SPI is a very simple communication protocol  It does not have a specific high level  protocol which means that there is almost no overhead  Data can be shifted at very high  rates in full duplex  This makes it very simple and efficient in a single master single slave  scenario     Because each slave needs its own SS  the number of traces required is n 3  where n is  the number of SPI devices  This means increased board complexity when the number of  slaves is increased     1 2 5 SPI References    e Introduction to Serial Peripheral Interface     Embedded com    e SPI     Serial Peripheral Interface    SY   amp  TOTAL PHASE Aardvark I2C SPI Host Adapter User Manual       2 Hardware Specifications    The specifications defined in this section are for the Aardvark   C SP  Host Adapter  The  Aardvark OEM 
36. documentation in complete and unaltered form  provided that the purpose  is to use or evaluate Total Phase products  Distribution rights do not include public  posting or mirroring on Internet websites  Only a link to the Total Phase download area  can be provided on such public websites     Total Phase shall in no event be liable to any party for direct  indirect  special  general   incidental  or consequential damages arising from the use of its site  the software or  documentation downloaded from its site  or any derivative works thereof  even if Total  Phase or distributors have been advised of the possibility of such damage  The software   its documentation  and any derivative works is provided on an  as is  basis  and thus  comes with absolutely no warranty  either express or implied  This disclaimer includes   but is not limited to  implied warranties of merchantability  fitness for any particular  purpose  and non infringement  Total Phase and distributors have no obligation to  provide maintenance  support  or updates     Information in this document is subject to change without notice and should not be  construed as a commitment by Total Phase  While the information contained herein is  believed to be accurate  Total Phase assumes no responsibility for any errors and or  omissions that may appear in this document     6 2 Life Support Equipment Policy    Total Phase products are not authorized for use in life support devices or systems  Life  support devices or syste
37. dvark slave  the data received by  the Aardvark slave may be corrupted  There is no precise value for this minimum inter   transaction time  but a suggested spacing is approximately 100 200 us     2 4 3 Pin Driving    When the SPI interface is activated as a master  the slave select line  SS  is actively  driven low  The MOSI and SCK lines are driven as appropriate for the SPI mode  After  each transmission is complete  these lines are returned to a high impedance state  This  feature allows the Aardvark adapter  following a transaction as a master SPI device  to  be then reconnected to another SPI environment as a slave  The Aardvark adapter will  not fight the master lines in the new environment     Consequently  any SPI slave target to which the Aardvark adapter is interfaced must  have a pull up resistor on its slave select line  preventing fluttering of the voltage when  the Aardvark adapter stops driving the signal  It is also advisable that every slave also  have passive pull ups on the MOSI and SCK lines  These pull up resistors can be  relatively weak     100k should be adequate     As a slave  the MOSI  SCK  and SS lines are configured as an input and the MISO line is  configured as an output  This configuration is held as long as the slave mode is enabled   see the API documentation later in the manual      2 4 4 Known SPI Limitations  There is currently an issue with SPI mode 2  clock idles high  and sampling of MOSI is    on the leading edge  that induces periodi
38. een reserved in the I C protocol specification for  general call addressing  I C slaves that are enabled to respond to a general call will  acknowledge this address  The general call is not treated specially in the Aardvark I   C master  The user of this API can manually assemble the first data byte if the  hardware address programming feature with general call is required     It is actually possible to write    bytes to the slave  The slave will be addressed and  then the stop condition will be immediately transmitted by the Aardvark adapter  No  bytes are sent to the slave  so the data argument is ignored  i e   it can be 0 or  point to invalid memory      If the number of bytes written is zero  the following conditions are possible     The requested slave was not found     The requested slave is on the bus but refuses to acknowledge its address     The Aardvark adapter was unable to seize the bus due to the presence of  another I C master  Here  the arbitration was lost during the slave  addressing phase results can be unpredictable     The slave was addressed and no bytes were written to it because num _ bytes  was set to 0     The number of bytes written can be less than the requested number of bytes in the  transaction due to the following possibilities     e The Aardvark adapter loses the bus during the data transmission due to the  presence of another I C master     52    SY   amp  TOTAL PHASE Aardvark I2C SPI Host Adapter User Manual       e The slave refuses the rec
39. eption of any more bytes     Master Write Extended  aa_i2c_write_ext     int aa_i2c write ext  Aardvark aardvark   aa_ul6 Slave_addr   AardvarkI2cFlags flags   aa ul6 num bytes   const aa u08   data out   aa ul6o   num written      Write a stream of bytes to the PC slave device with extended status information     Arguments  aardvark handle of an Aardvark adapter  Slave addr the slave from which to read  flags special operations as described in  Notes  section  num bytes the number of bytes to write  maximum 65535   data out pointer to data    num written the actual number of bytes written    Return Value    Status code  see  Notes  section    Specific Error Codes    None   Details  This function operates exactly like aa _i2c write  except that the return value now    specifies a status code  The number of bytes written is returned through an  additional pointer argument at the tail of the parameter list     The status code allows the user to discover specific events on the 1  C bus that  would otherwise be transparent given only the number of bytes transacted  The   Notes  section describes the status codes     For a master write operation  the AA I2C STATUS DATA _ NACK flag can be useful  in the following situation     e Normally the 1  C master will write to the slave until the slave issues a NACK or  the requested number of bytes have been written     53    SY   amp  TOTAL PHASE Aardvark I2C SPI Host Adapter User Manual       e If the master has wishes to write 10 bytes  
40. evices communicate with each other as master and  slave  with both devices pull up resistors enabled     Hardware versions 2 00 and later have the ability to switch the pull up resistors by  through the software  Refer to the API section for more details     2 3 3 I C Clock Stretching  When the Aardvark adapter is configured as an I C master  it supports both inter bit and  inter byte slave clock stretching  If a slave device pulls SCL low during a transaction  the  adapter will wait until SCL has been released before continuing with the transaction     2 3 4 Known    C Limitations    Since firmware version 2 00  the Aardvark adapter supports the repeated start  10 bit  addressing  and combined format features of the 1  C protocol     11    SY   amp  TOTAL PHASE Aardvark I2C SPI Host Adapter User Manual       Since firmware version 3 00  the Aardvark adapter can keep the slave functions enabled  even while master operations are executed through the same adapter  The Aardvark  adapter can even respond to slave requests immediately after losing bus arbitration  during the slave addressing phase of a master transaction     Multi master is also supported with the following features   1  If there is a bus collision during data transmission and the Aardvark adapter loses  the bus  the transaction will be be cut short and the host API will report that fewer  bytes were transmitted than the requested number  This condition can be    distinguished from the case in which the downstream
41. f bytes read   Specific Error Codes    AA_I2C READ ERROR There was an error reading from the Aardvark  adapter  This is most likely a result of a  communication error     Details    For ordinary 7 bit addressing  the lower 7 bits of slave _addr should correspond to  the slave address  The topmost bits are ignored  The Aardvark I C subsystem will  assemble the address along with the R W bit after grabbing the bus  For 10 bit  addressing  the lower 10 bits of addr should correspond to the slave address  The  Aardvark adapter will then assemble the address into the proper format as  described in the Philips specification  namely by first issuing an write transaction on  the bus to specify the 10 bit slave and then a read transaction to read the requested  number of bytes  The initial write transaction can be skipped if the  Combined  Format  feature is requested in conjunction with the 10 bit addressing functionality     The data pointer should be allocated at least as large as num bytes     It is possible to read zero bytes from the slave  In this case  num_bytes is set to 0  and the data argument is ignored  i e   it can be 0 or point to invalid memory    However  due to the nature of the IC protocol  it is not possible to address the slave  and not request at least one byte  Therefore  one byte is actually received by the  host  but is subsequently thrown away     If the number of bytes read is zero  the following conditions are possible     e The requested slave was not foun
42. fined until this function is called with the correct parameters     Due to limited buffer space on the Aardvark slave  the device may only accept a  portion of the intended response  If the value returned by this function is less than  num bytes the Aardvark slave has dropped the remainder of the bytes     If more bytes are requested in a transaction  the response string will be wrapped as  many times as necessary to complete the transaction     57    SY   amp  TOTAL PHASE Aardvark I2C SPI Host Adapter User Manual       The buffer space is 64 bytes     Slave Write Statistics  aa_i2c_slave_write_stats   int aa_i2c slave write stats  Aardvark aardvark      Return number of bytes written from a previous Aardvark FC slave to PC master  transmission     Arguments    aardvark handle of an Aardvark adapter    Return Value    The number of bytes written asynchronously   Specific Error Codes    AA I2C SLAVE TIMEOUT There was no recent slave transmission     Details    The transmission of bytes from the Aardvark slave  when it is configured as an I C  slave  is asynchronous with respect to the PC host software  Hence  there could be  multiple responses queued up from previous write transactions     This function will wait 500 milliseconds before timing out  See the aa_async_ poll  function if a variable timeout is required   Slave Write Statistics Extended  aa_i2c_slave_write_stats_ext     int aa_i2c slave write stats ext  Aardvark aardvark   aa_ul6   num written      Return number of 
43. function    72    Y   amp  TOTAL PHASE Aardvark I2C SPI Host Adapter User Manual       aa gpio get is called before calling aa _gpio change  aa gpio change will  only register any changes from the value last returned by aa _gpio get     5 8 Error Codes    Table 9   Aardvark API Error Codes    Value   aa_status_string   return value     1   unable to load library    E  3     5  7    Literal Name   AA_OK  AA_UNABLE_TO_LOAD_LIBRARY  AA_UNABLE_TO_LOAD_DRIVER  AA_UNABLE_TO_LOAD_FUNCTION  AA_INCOMPATIBLE_LIBRARY  AA_INCOMPATIBLE_DEVICE  AA_COMMUNICATION_ ERROR  AA_UNABLE_TO_OPEN  AA_UNABLE_TO_CLOSE  AA_INVALID_  HANDLE  AA_CONFIG_ERROR  AA_12C_NOT_AVAILABLE  AA_12C_NOT_ENABLED  AA_l2C_READ_ERROR  AA_12C_WRITE_ERROR  AA_12C_SLAVE_BAD_CONFIG  AA_12C_SLAVE_READ_ ERROR  AA_12C_SLAVE_TIMEOUT  AA_l2C_DROPPED EXCESS _ BYTES  AA_l2C_BUS ALREADY _FREE  AA_SPI_NOT_AVAILBLE  AA_SPI_NOT_ENABLED  AA_SPI_WRITE_ERROR  AA_SPI_SLAVE_READ_ERROR  AA_SPI_SLAVE_TIMEOUT  AA_SPI_DROPPED_EXCESS_BYTES  AA_GPIO_NOT_AVAILABLE     204   spi slave timeout     205   spi slave dropped excess bytes   400   gpio feature not available       73    SY   amp  TOTAL PHASE Aardvark I2C SPI Host Adapter User Manual       74    SY   amp  TOTAL PHASE Aardvark I2C SPI Host Adapter User Manual       6 Legal   Contact    6 1 Disclaimer    All of the software and documentation provided in this manual  is copyright Total Phase   Inc    Total Phase    License is granted to the user to freely use and distribute the  software and 
44. g its slave mode capabilities     3  It is always advisable to set the slave response before first enabling the slave   This ensures that valid data is sent to any requesting master     42    SY   amp  TOTAL PHASE Aardvark I2C SPI Host Adapter User Manual       4  It is not possible to receive messages larger than approximately 4 KiB as a slave  due to operating system limitations on the asynchronous incoming buffer  As  such  one should not queue up more than 4 KiB of total slave data between calls  to the Aardvark API     5  Since firmware revision 2 00 it is possible for the Aardvark IC master to employ  some of the advanced features of I C  This is accomplished by the  AardvarkI2cFlags argument type that is included in the aa i2c read and  aa_i2c_ write argument lists  The options in Table 5 are available can be  logically ORed together to combine them for one operation     Table 5   I C Advanced Feature Options    AA I2C NO FLAGS Request no options     AA I2C 10 BIT ADDR Request that the provided address is  treated as a 10 bit address  The Aardvark     C subsystem will follow the Philips 1  C  specification when transmitting the address        AA_I2C COMBINED FMT Request that the Philips combined format is  followed during a I C read operation   Please see the Philips specification for  more details  This flag does not have any  effect unless a master read operation is  requested and the AA I2C 10 BIT ADDR  is also set     AA_I2C_NO STOP Request that no stop condition i
45. he appropriate  service function once for each type of data that is available     3  Next  call the polling function with a 0 timeout     4  Call the appropriate service function once for each type of data that is available     41    SY   amp  TOTAL PHASE Aardvark I2C SPI Host Adapter User Manual       5  Repeat steps 3 and 4 until the polling function reports that there is no data  available     Sleep  aa_sleep_ms   u32 aa sleep ms  u32 milliseconds    Sleep for given amount of time   Arguments    milliseconds number of milliseconds to sleep    Return Value    This function returns the number of milliseconds slept   Specific Error Codes    None   Details    This function provides a convenient cross platform function to sleep the current  thread using standard operating system functions     The accuracy of this function depends on the operating system scheduler  This  function will return the number of milliseconds that were actually slept     5 5 I C Interface    5 5 1 IC Notes    1  It is not necessary to set the bitrate for the Aardvark I C slave     2  An   C master operation read or write operation can be transacted while leaving  the IC slave functionality enabled  In a multi master situation it is possible for the  Aardvark adapter to lose the bus during the slave addressing portion of the  transaction  If the other master that wins the bus subsequently addresses this  Aardvark adapters slave address  the Aardvark adapter will respond appropriately  to the request usin
46. ice on the bus was  accessing the bus simultaneously with    this Aardvark adapter  That device won  arbitration of the bus as per the I C  specification     AA_I2C STATUS BUS LOCKED An IC packet is in progress  and the  time since the last I C event executed or  received on the bus has exceeded the  bus lock timeout  This is most likely due  to the clock line of the bus being held  low by some other device  or due to the  data line held low such that a start  condition cannot be executed by the  Aardvark  The bus lock timeout can be  configured using the  aa i2c bus timeout function  The  Aardvark adapter resets its own I C  interface when a timeout is observed  and no further action is taken on the  bus        44    SJ   amp  TOTAL PHASE Aardvark I2C SPI Host Adapter User Manual       AA_I2C STATUS LAST DATA ACK   When the Aardvark slave is configured  with a fixed length transmit buffer  it will  detach itself from the I C bus after the  buffer is fully transmitted  The Aardvark  slave also expects that the last byte  sent from this buffer is NACKed by the       opposing master device  This status  code is returned by the Aardvark slave   see Slave Write Statistics API  if the  master device instead ACKs the last  byte  The notification can be useful  when debugging a third party master  device        These codes can provide hints as to why an impartial transaction was  executed by the Aardvark adapter  In the event that a bus error occurs  while the Aardvark adapter is id
47. ification bubble will again pop up and  state that the  device driver software installed successfully      To confirm that the device was correctly installed  check that the device appears in the   Device Manager   To navigate to the  Device Manager screen  select  Control Panel    System Properties   Hardware   Device Manager  for Windows XP  or select  Control  Panel   Hardware and Sound   Device Manager  for Windows Vista 7 8  The Aardvark  device should appear under the Universal Serial Bus Controllers section     3 2 2 Driver Removal    The USB communication driver can be removed from the operating system by using the  Windows program removal utility  Instructions for using this utility can be found below   Alternatively  the Uninstall option found in the driver installer can also be used to remove  the driver from the system     NOTE  It is critical to remove all Total Phase devices from your system before you  remove the USB drivers     Windows XP     1  Select  Control Panel   Add or Remove Programs     2  Select  Total Phase USB Driver  and select  Change Remove     17    SY   amp  TOTAL PHASE Aardvark I2C SPI Host Adapter User Manual       3  Follow the instructions in the uninstaller    Windows Vista 7 8     1  Select  Control Panel   Uninstall a program   2  Right click on  Total Phase USB Driver  and select  Uninstall Change     3  Follow the instructions in the uninstaller    3 3 Linux USB Driver    As of version 5 15  the Aardvark communications layer under Lin
48. information will be available in the memory  pointed to by aa_ext     Details    If O is passed as the pointer to the structure  this function will behave exactly like  aa open       32    SY   amp  TOTAL PHASE Aardvark I2C SPI Host Adapter User Manual       The AardvarkExt structure is described below     struct AardvarkExt    AardvarkVersion version      Features of this device      int features          The features field denotes the capabilities of the Aardvark device  See the API  function aa_ features for more information     The AardvarkVersion structure describes the various version dependencies of  Aardvark components  It can be used to determine which component caused an  incompatibility error     struct AardvarkVersion       Software  firmware  and  hardware versions      aa ul6 software   aa ul6 firmware   aa _ul6 hardware        FW requires that SW must be  gt   this version      aa ul6 sw _req by fw        SW requires that FW must be  gt   this version      aa ul6 fw_req by sw        API requires that SW must be  gt   this version      aa ul6 api req by sw           All version numbers are of the format      major  lt  lt  8    minor  example  v1 20 would be encoded as 0x0114     The structure is zeroed before the open is attempted  It is filled with whatever  information is available  For example  if the firmware version is not filled  then the  device could not be queried for its version number     33    SY   amp  TOTAL PHASE Aardvark I2C SPI Host Adapter User
49. k   aa _ u08 pullup mask       Change the pullup configuration of the GPIO lines     Arguments  aardvark handle of an Aardvark adapter  pullup mask each bit corresponds to the physical line as given by    AardvarkGpioBits  If a line s bit is 1  the line s pullup is  active whenever the line is configured as an input   Otherwise the pullup will be deactivated     Return Value    70    SY   amp  TOTAL PHASE Aardvark I2C SPI Host Adapter User Manual       An Aardvark status code is returned that is AA OK on success     Specific Error Codes  None     Details    None     Get  aa_gpio_get   int aa_gpio get  Aardvark aardvark    Get the value of current GPIO inputs   Arguments    aardvark handle of an Aardvark adapter    Return Value    An integer value  organized as a bitmask in the fashion described by  AardvarkGpioBits  Any line that is logic high will have a its corresponding bit  active  If the line is logic low the bit will not be active in the bit mask     Specific Error Codes  None     Details    A line s bit position in the mask will be 0 if it is configured as an output or if it  corresponds to a subsystem that is still active     Set  aa_gpio_set     int aa_gpio set  Aardvark aardvark   aa u08 value      Set the value of current GPIO outputs     Arguments  aardvark handle of an Aardvark adapter  value a bitmask specifying which outputs should be set to logic    high and which should be set to logic low     71    SY   amp  TOTAL PHASE Aardvark I2C SPI Host Adapter User Man
50. k to the host  PC and then transition to a idle state  waiting to be addressed in a subsequent  transaction     It is never possible to restrict a transmit or receive to 0 bytes  Furthermore  once the  slave is addressed by a master read operation it is always guaranteed to transmit at  least 1 byte     If a master transaction is executed after the slave features have been enabled  the  slave features will remain enabled after the master transaction completes     Slave Disable  aa_i2c_slave_disable   int aa_i2c slave disable  Aardvark aardvark     Disable the Aardvark adapter as an PC slave device   Arguments    aardvark handle of an Aardvark adapter    Return Value    An Aardvark status code is returned that is AA OK on success     56    SY   amp  TOTAL PHASE Aardvark I2C SPI Host Adapter User Manual       Specific Error Codes    None     Details    None     Slave Set Response  aa_i2c_slave_set_response     int aa_i2c slave set response  Aardvark aardvark   aa u08 num bytes   const aa u08   data out      Set the slave response in the event the Aardvark adapter is put into slave mode and  contacted by a master     Arguments    aardvark handle of an Aardvark adapter  num bytes number of bytes for the slave response  data out pointer to the slave response    Return Value    The number of bytes accepted by the Aardvark slave for the response   Specific Error Codes    None     Details    The value of num_bytes must be greater than zero  If it is zero  the response string  is unde
51. le and enabled as a slave  but not  currently receiving a message   the adapter will return the bus error  through the aa_i2c_slave_read function  The length of the  message will be 0 bytes but the status code will reflect the bus error     5 5 2 General I2C    I C Pullup  aa_i2c_pullup   int aa_i2c pullup  Aardvark aardvark  aa _u08 pullup mask     Activate deactivate FC pull up resistors on SCL and SDA     Arguments    aardvark handle of an Aardvark adapter    pullup mask enumerated values specifying pullup state  See Table 7   Table 7   pullup_ mask enumerated types    AA_I2C PULLUP_ NONE   Disable SCL SDA pull up resistors  AA_I2C PULLUP BOTH   Enable SCL SDA pull up resistors       AA_I2C PULLUP QUERY   Queries the pull up resistor state    Return Value    45    SY   amp  TOTAL PHASE Aardvark I2C SPI Host Adapter User Manual       The current state of the I C pull up resistors on the Aardvark adapter will be  returned  The configuration will be described by the same values as in the table  above     Specific Error Codes    AA INCOMPATIBLE DEVICE The hardware version is not compatible  with this feature  Only hardware  versions 2 00 or greater support  switchable pull up resistors pins     Details    Both pull up resistors are controlled together  Independent control is not supported   This function may be performed in any operation mode     Free bus  aa_i2c_free_bus   int aa_i2c free bus  Aardvark aardvark     Free the Aardvark PC subsystem from a held bus condition  e g
52. ms include  but are not limited to  surgical implants  medical  systems  and other safety critical systems in which failure of a Total Phase product could  cause personal injury or loss of life  Should a Total Phase product be used in such an  unauthorized manner  Buyer agrees to indemnify and hold harmless Total Phase  its  officers  employees  affiliates  and distributors from any and all claims arising from such  use  even if such claim alleges that Total Phase was negligent in the design or  manufacture of its product     6 3 Contact Information    Total Phase can be found on the Internet at http   www totalphase com   If you have  support related questions  please go to the Total Phase website  For sales inquiries   please contact sales totalphase com     75    SY   amp  TOTAL PHASE Aardvark I2C SPI Host Adapter User Manual         2003 2014 Total Phase  Inc   All rights reserved     76    
53. n is not thread safe     If the timeout value is negative  the function will block indefinitely until data arrives  If  the timeout value is 0  the function will perform a non blocking check for pending  asynchronous data     As described before  the Aardvark software contains asynchronous queues that can  be filled during synchronous operations on the Aardvark adapter  If data is already  in one or more asynchronous queues  it will immediately return with all of the types  of asynchronous data that are currently available  Further data may be pending in  the operating systems incoming receive buffer  but the function will not examine that  data  Hence any pending data in the operating systems incoming buffer will not be  reported to the user until the Aardvarks software queues have been fully serviced     If there is no data already available  this function will check the operating systems  receive buffer for the presence of asynchronous data  The function will block for the  specified timeout  It will then only report the type of the very first data that has been  received  The function will not examine the remainder of the operating systems  receive buffer to see what other asynchronous messages are pending     One can employ the following technique to guarantee that all pending asynchronous  data have been captured during each service cycle   1  Call the polling function with a specified timeout     2  If the polling function indicates that there is data available  call t
54. nally be 64 bytes but may change depending on firmware  revision     Slave Read  aa_spi_slave_read     int aa spi slave read  Aardvark aardvark   aa ul6 num bytes   aa _u08   data in      Read the bytes from an SPI slave reception     67    SY   amp  TOTAL PHASE Aardvark I2C SPI Host Adapter User Manual       Arguments    aardvark handle of an Aardvark adapter  num bytes the maximum size of the data buffer  data in pointer to data buffer    Return Value    This function returns the number of bytes read asynchronously     Specific Error Codes    AA SPI SLAVE TIMEOUT There was no recent slave transmission   AA SPI DROPPED EXCESS BYTES The msg was larger than num_bytes     Details    The num bytes parameter specifies the size of the memory pointed to by data  It is  possible  however  that the received slave message exceeds this length  In sucha  situation  AA SPI DROPPED EXCESS BYTES is returned  meaning that num_bytes  was placed into data but the remaining bytes were discarded     There is no cause for alarm if the number of bytes read is less than num_bytes   This simply indicates that the incoming message was short     The reception of bytes by the Aardvark adapter  when it is configured as an SPI  slave  is asynchronous with respect to the PC host software  Hence  there could be  multiple responses queued up from previous write transactions     This function will wait 500 milliseconds before timing out  See the aa_async_ poll  function if a variable timeout is required    
55. ne  employed for the DLL Firmware cross validation is used for the binding and DLL  compatibility check     Here is an example     DLL v1 20  compatible with Binding  gt   v1 10  Binding v1 15  compatible with DLL  gt   v1 15    The above situation will pass the appropriate version checks  The compatibility check is  performed within the binding  If there is a version mismatch  the API function will return  an error code  AA INCOMPATIBLE LIBRARY     3 7 3 Customizations    While provided language bindings stubs are fully functional  it is possible to modify the  code found within this file according to specific requirements imposed by the application  designer     For example  in the C bindings one can modify the DLL search and loading behavior to  conform to a specific paradigm  See the comments in aardvark  c for more details     3 8 Application Notes    3 8 1 Asynchronous Messages    There is buffering within the Aardvark DLL  on a per device basis  to help capture  asynchronous messages  Take the case of the Aardvark adapter receiving   C  messages asynchronously  If the application calls the function to change the SPI bitrate  while some unprocessed asynchronous messages are pending  the Aardvark adapter  will transact the bitrate change but also save any pending I C messages internally  The  messages will be held until the appropriate API function is called     23    SY   amp  TOTAL PHASE Aardvark I2C SPI Host Adapter User Manual       The size of the I C and SPI buffer
56. nt aa_log  Aardvark aardvark  int level  int handle      Enable logging to a file     36    SY   amp  TOTAL PHASE Aardvark I2C SPI Host Adapter User Manual       Arguments    aardvark handle of an Aardvark adapter  level the logging detail level as described below  handle a file descriptor    Return Value    An Aardvark status code is returned with AA_OK on success   Specific Error Codes    None   Details  The handle must be standard file descriptor  In C  a file descriptor can be obtained  by using the ANSI C function  open  or by using the function  fileno  on a FILE     stream  A FILE  stream obtained using fopen or can correspond to the common  stdout or stderr available when including stdlib h     The logging detail level can be one of the following options     0 none   1     error   2     warning  3     info   4     debug    Note that if the handle is invalid  the application can crash during a logging  operation     Due to inconsistencies arising from how Microsoft handles linkage to the C runtime  library  logging to a file may not work in Windows  However  logging to stdout and  stderr is still supported  As a convenience  the following two constants are defined  and can be passed as the handle argument     e AA LOG STDOUT    AA LOG STDERR    Version  aa_version   int aa_version  Aardvark aardvark  AardvarkVersion  version       Return the version matrix for the device attached to the given handle     37    SY   amp  TOTAL PHASE Aardvark I2C SPI Host Adapter User Man
57. o prepare its  firmware for an subsequent reception of bytes  If out_num_ bytes is 0  data out   data _ in  and in num bytes can be set to 0     If the return value of this function is less than out_num_bytes  there was an error   SPI is a bit blasting scheme where the master does not even know if there is a slave  on the other end of the transmission  Therefore  it is always expected that the  master will send the entire length of the transaction     An error will likely occur if the number of bytes sent is significantly greater than   4 KiB  This function cannot reliably execute larger transfers due to the buffering  issues explained in the  Software   Application Notes  section  Only a partial number  of bytes will be sent to the slave and only a partial number will be received from the  slave  it is quite possible that these numbers will not be equal  The size of the partial  response is returned by this function and any received data up to in num bytes    65    SY   amp  TOTAL PHASE Aardvark I2C SPI Host Adapter User Manual       will be in the memory pointed to by data_in  Note that the last few bytes of the  response may be corrupted as well     5 6 4 SPI Slave    Slave Enable  aa_spi_slave_enable   int aa_spi slave enable  Aardvark aardvark     Enable the Aardvark as an SPI slave device   Arguments    aardvark handle of an Aardvark adapter    Return Value    An Aardvark status code is returned that is AA OK on success   Specific Error Codes    None     Details    None
58. onfigure the SPI to idle the SCLK clock line low  The clock would then transition  low to high on the leading edge and high to low on the trailing edge     The phase option determines whether to sample or setup on the leading edge  For  example  AA SPI PHASE SAMPLE SETUP would configure the SPI to sample on  the leading edge and setup on the trailing edge     The bitorder option is used to indicate whether LSB or MSB is shifted first     62    SY   amp  TOTAL PHASE Aardvark I2C SPI Host Adapter User Manual       The pair  AA SPI POL FALLING RISING  AA SPI PHASE SETUP SAMPLE   would correspond to mode 3 in the figure found in the  SPI Background  chapter     5 6 3 SPI Master    Set Bitrate  aa_spi_bitrate   int aa spi bitrate  Aardvark aardvark  int bitrate khz    Set the SPI bitrate in kilohertz     Arguments    aardvark handle of an Aardvark adapter  bitrate _khz the requested bitrate in khz     Return Value    This function returns the actual bitrate set   Specific Error Codes  None   Details    The power on default bitrate is 1000 kHz     Only certain discrete bitrates are supported by the Aardvark adapter  As such  this  actual bitrate set will be less than or equal to the requested bitrate unless the  requested value is less than 125 kHz  in which case the Aardvark adapter will  default to 125 kHz     If bitrate khz is 0  the function will return the bitrate presently set on the  Aardvark adapter and the bitrate will be left unmodified     Set Slave Select Polarity  aa_s
59. ons     1 2 2 SPI Theory of Operation    SPI requires four signals  clock  GCLK   master output slave input  MOSI   master input   slave output  MISO   slave select  SS      Y   amp  TOTAL PHASE Aardvark I2C SPI Host Adapter User Manual          Figure 3   Sample SPI Implementation      Each slave device  requires a separate slave select signal  SS   This means  that as devices are added  the circuit increases in  complexity     Three signals are shared by all devices on the SPI bus  SCLK  MOSI and MISO  SCLK  is generated by the master device and is used for synchronization  MOSI and MISO are  the data lines  The direction of transfer is indicated by their names  Data is always  transferred in both directions in SPI  but an SPI device interested in only transmitting  data can choose to ignore the receive bytes  Likewise  a device only interested in the  incoming bytes can transmit dummy bytes     Each device has its own SS line  The master pulls low on a slaves SS line to select a  device for communication     The exchange itself has no pre defined protocol  This makes it ideal for data streaming  applications  Data can be transferred at high speed  often into the range of the tens of  megahertz  The flipside is that there is no acknowledgment  no flow control  and the  master may not even be aware of the slave s presence     1 2 3 SPI Modes    Although there is no protocol  the master and slave need to agree about the data frame  for the exchange  The data frame is describe
60. pi_master_ss_polarity     int aa_spi _master_ss polarity  Aardvark aardvark   AardvarkSpiSSPolarity polarity      Change the output polarity on the SS line     Arguments    aardvark handle of an Aardvark adapter    63    SY   amp  TOTAL PHASE Aardvark I2C SPI Host Adapter User Manual       polarity AA_SPI_SS_ACTIVE_LOW or AA_SPI_SS_ACTIVE_HIGH    Return Value    An Aardvark status code is returned that is AA _OK on success   Specific Error Codes    None     Details    This function only affects the SPI master functions on the Aardvark adapter  When  configured as an SPI slave  the Aardvark adapter will always be setup with SS as  active low     Master Write Read  aa_spi_write     int aa_ spi write  Aardvark aardvark   aa ul6 out_num bytes   const aa u08   data out   aa ul6 in num bytes   aa_u08   data_in      Write a stream of bytes to the downstream SPI slave device and read back the full   duplex response     Arguments    aardvark handle of an Aardvark adapter   out_num_bytes number of bytes to send   data_out pointer to the bytes to transmit out   in_ num bytes number of bytes to receive   data_in pointer to memory that will hold the received data    Return Value  This function returns the total number of bytes read from the slave which normally    will be the same as the number of bytes written to the slave  See below for how this  value relates to in_num bytes     Specific Error Codes    AA SPI WRITE ERROR There was an error writing to the Aardvark  adapter  This is most
61. rite ext and   aa_ i2c read _ ext in one atomic operation  thereby minimizing the latency  between consecutive write and read operations due to the USB communication  layer     A combined status code from the write and the read operations is provided as the  return value of the function  The return value is constructed as  read status    lt  lt  8     write status   See the  Notes  section  along with the details of  aa i2c write ext andaa i2c read ext  for more discussion about the  specific status codes  Note that if the write phase of the operation completes with a  non zero status code  the Aardvark adapter will not physically execute the read  phase of the operation     If either the write or read fails with an error  as opposed to simply a non zero status  code   the return value of the function reflects the appropriate error code  with  preference given to write errors     5 5 4 I C Slave    Slave Enable  aa_i2c_slave_enable     int aa_i2c slave enable  Aardvark aardvark   aa_u08 addr   aa ul6 maxTxBytes   aa ul6 maxRxBytes        Enable the Aardvark adapter as an PC slave device     Arguments  aardvark handle of an Aardvark adapter  addr address of this slave    maxTxBytes max number of bytes to transmit per transaction  maxRxBytes max number of bytes to receive per transaction    Return Value    An Aardvark status code is returned that is AA _OK on success   Specific Error Codes    None     Details    55    SY   amp  TOTAL PHASE Aardvark I2C SPI Host Adapter User Man
62. rwin on Mac OS X    26    SY   amp  TOTAL PHASE Aardvark I2C SPI Host Adapter User Manual       It will first display the firmware version contained in the utility along  with the required hardware version to run this firmware version     4  It will list all of the detected devices along with their current firmware and  hardware versions     5  Select a device to upgrade  Note the firmware and hardware version of the  device before proceeding  If the selected devices hardware is not suitable to  accept the new firmware  an error will be printed and the utility will be reinvoked     6  If the chosen device is acceptable  the aaflash utility will update the device with  the new firmware  The process should take about 3 seconds  with a progress bar  displayed during the procedure     7  The upgraded Aardvark adapter should now be usable by any Aardvark enabled  application     8  In the event that there was a malfunction in the firmware update  the Aardvark  adapter may not be recognizable by an Aardvark enabled application  Try the  update again  since the Aardvark adapter has most likely become locked due to a  corruption in the upgrade process  If the update still does not take effect  it is best  to revert back to the previous firmware  This can be done by running a previous  version of aaf Lash that contains an earlier firmware version  Check the Total  Phase website or the distribution CD that was included with your Aardvark  adapter for previous versions of the firmware  
63. s are 16 KiB each and they can hold many separate  transactions  The buffers are only used when an Aardvark API call is invoked  The buffer  size is adequate since the overall limitation for asynchronous messages is fundamentally  determined by the operating systems internal buffer size  This concept is explained  below     3 8 2 Receive Saturation    The Aardvark adapter can be configured as an I2C or SPI slave  A slave can receive  messages asynchronously with respect to the host PC software  Between calls to the  Aardvark API  these messages must be buffered somewhere in memory  This is  accomplished on the PC host  courtesy of the operating system  Naturally the buffer is  limited in size and once this buffer is full  bytes will be dropped     An overflow can occur when the Aardvark device receives asynchronous messages  faster than the rate that they are processed     the receive link is saturated  This condition  can affect other synchronous communication with the Aardvark adapter  For example  if  the SPI slave is receiving many unserviced messages  messages left pending in the  operating systems buffer   a subsequent call to change the bitrate of I C could fail in the  following manner     1  The software sends a command to the Aardvark adapter to change the bitrate   2  The Aardvark adapter responds that the bitrate was set to a given value   3  The response is lost since the operating systems receive buffer was full     The requested bitrate has most likely been set
64. s issued on  the I  C bus after the transaction completes   It is expected that the PC will follow up with  a subsequent transaction at which point a  repeated start will be issued on the bus   Eventually an IC transaction must be  issued without the  no stop  option so that a  stop condition is issued and the bus is  freed     AA I2C SIZED READ See aa _i2c_ read below   AA I2C SIZED READ EXTRA1  Seeaa i2c read below     6  Since firmware revision 3 00 it is possible for the Aardvark I C master to return an  extended status code for master read and master write transactions  These codes  are described in Table 6 and are returned by the aa _i2c read ext and  aa i2c write ext functions  as well as the analogous slave API functions                 Table 6   12C Extended Status Code    43    SY   amp  TOTAL PHASE Aardvark I2C SPI Host Adapter User Manual       AA I2C STATUS BUS ERROR A bus error has occurred  Transaction  was aborted     AA_I2C STATUS SLA ACK Bus arbitration was lost during master  transaction  another master on the bus  has successfully addressed this  Aardvark adapters slave address  As a  result  this Aardvark adapter has  automatically switched to slave mode  and is responding     AA_I2C STATUS SLA NACK The Aardvark adapter failed to receive  acknowledgment for the requested  slave address during a master  operation     AA_I2C STATUS DATA NACK The last data byte in the transaction was  not acknowledged by the slave    AA_I2C STATUS ARB LOST Another master dev
65. s on the Aardvark adapter will be returned   The configuration will be described by the same values as in the table above     Specific Error Codes    AA INCOMPATIBLE DEVICE The hardware version is not compatible  with this feature  Only hardware  versions 2 00 or greater support  switchable target power pins     Details    Both target power pins are controlled together  Independent control is not  supported  This function may be executed in any operation mode     Asynchronous Polling  aa_async_poll   int aa_async_ poll  Aardvark aardvark  int timeout      Check if there is any asynchronous data pending from the Aardvark adapter   Arguments    aardvark handle of an Aardvark adapter  timeout timeout in milliseconds    Return Value    A status code indicating which types of asynchronous messages are available for  processing  See Table 4     Table 4   Status code enumerated types  AA_ASYNC_NO DATA No asynchronous data is available     AA_ASYNC_I2C READ IC slave read data is available  Use  aa i2c slave _ read to get data     AA_ASYNC_I2C WRITE IC slave write stats are available  Use   aa i2c slave write stats to get data   AA_ASYNC_SPI SPI slave read data is available  Use   aa spi slave _ read to get data        40    SY   amp  TOTAL PHASE Aardvark I2C SPI Host Adapter User Manual       These codes can be bitwise ORed together if there are multiple types of data  available     Specific Error Codes    None     Details  Recall that  like all other Aardvark functions  this functio
66. s to which the received message was sent  num bytes the maximum size of the data buffer   data out pointer to data buffer   num read the actual number of bytes read by the slave    Return Value    Status code  see  Notes  section    Specific Error Codes    None     Details    60    SY   amp  TOTAL PHASE Aardvark I2C SPI Host Adapter User Manual       This function operates exactly like aa i2c slave read  except that the return  value now specifies a status code  The number of bytes read is returned through an  additional pointer argument at the tail of the parameter list     The only possible status code is AA I2C STATUS BUS ERROR which can occur  when an illegal START  STOP  or RESTART condition appears on the bus during a  transaction     5 6 SPI Interface    5 6 1 SPI Notes    1  The SPI master and slave must both be configured to use the same bit protocol   mode      2  It is not necessary to set the bitrate for the Aardvark SPI slave     3  An SPI master operation read or write operation can be transacted while leaving  the SPI slave functionality enabled  During the master transaction  the slave will  be temporarily deactivated  Once the master transaction is complete  the slave  will be automatically reactivated     4  It is always advisable to set the slave response before first enabling the slave   This ensures that valid data is sent to any requesting master     5  It is not possible to receive messages larger than approximately 4 KiB as a slave  due to operating sy
67. software without  recompilation  For example  take the case of a graphical application that is written to  communicate 1  C or SPI through an Aardvark device  At the time the program is built  the  Aardvark software is released as version 1 2  The Aardvark interface software may be  improved many months later resulting in increased performance and or reliability  it is  now released as version 1 3  The original application need not be altered or recompiled   The user can simply replace the old Aardvark DLL with the newer one  How does this  work  The application contains only a stub which in turn dynamically loads the DLL on  the first invocation of any Aardvark API function  If the DLL is replaced  the application  simply loads the new one  thereby utilizing all of the improvements present in the  replaced DLL     On Linux and Mac OS X  the DLL is technically known as a shared object  SO    3 6 2 DLL Location    Total Phase provides language bindings that can be integrated into any custom  application  The default behavior of locating the Aardvark DLL is dependent on the    20    SY   amp  TOTAL PHASE Aardvark I2C SPI Host Adapter User Manual       operating system platform and specific programming language environment  For  example  for a C or C   application  the following rules apply     On a Windows system  this is as follows     1  The directory from which the application binary was loaded   2  The applications current directory   3  32 bit system directory  for a 32 bi
68. ssertion to first clock  to Last clock to SS  deassertion us   Clock period 8000    fy  Sup imema   7  ol       13    SY   amp  TOTAL PHASE Aardvark I2C SPI Host Adapter User Manual       2 4 2 Speeds    The Aardvark SPI master can operate at bitrates between 125 kHz and 8 MHz   including  but not limited to the following frequencies  125 kHz  250 kHz  500 kHz    1 MHz  2 MHz  4 MHz  and 8 MHz  The power on default bitrate is 1 MHz  The quoted  bitrates are only achievable within each individual byte and does not extend across  bytes  There is approximately 9 us of setup time required in between each byte which  results in a total transmission period of the byte transmission time plus 9 us     The Aardvark SPI slave can operate at any bitrate up to 4 Mbps  However  for correct  transmission from slave to master there must be at least 4 us delay between the end of  byte n and start of byte n 1 for the MISO data to be setup properly for byte n 1   Otherwise  the Aardvark adapter will simply return the data it just received  Likewise  for  correct reception of data by the slave  there must be at least 10 us between the start of  byte n and the start of byte n 1     Similarly  when the Aardvark adapter is configured to act as an SPI slave  and the slave  select is pulled high to indicate the end of a transaction  there is a data processing  overhead of sending the transaction to the PC host  As such  if the SPI master sends a  subsequent transaction in rapid succession to the Aar
69. sted on the Total Phase website for download  These files are  aardvark and  aardvark usermap  Please follow the following steps to enable hotplugging     1  As superuser  unpack aardvark and aardvark usermap to  etc hotplug   usb   2  chmod 755  etc hotplug usb aardvark   chmod 644  etc hotplug usb aardvark usermap    Unplug and replug your Aardvark adapter s     a oe oe    Set the environment variable USB DEVFS PATH to  proc bus usb  3 3 3 World Writable USB Filesystem    Finally  here is a last ditch method for configuring your Linux system in the event that  your distribution does not have udev or hotplug capabilities  The following procedure is  not necessary if you were able to exercise the steps in the previous subsections     Often  the  proc bus usb directory is mounted with read write permissions for root  and read only permissions for all other users  If an non privileged user wishes to use the  Aardvark adapter and software  one must ensure that  proc bus usb is mounted with  read write permissions for all users  The following steps can help setup the correct  permissions  Please note that these steps will make the entire USB filesystem world  writable     1  Check the current permissions by executing the following command   ls  al  proc bus usb 001    2  If the contents of that directory are only writable by root  proceed with the  remaining steps outlined below     3  Add the following line to the  etc  fstab file     none  proc bus usb usbfs defaults devmode 06
70. stem limitations on the asynchronous incoming buffer  As  such  one should not queue up more than 4 KiB of total slave data between calls  to the Aardvark API     6  It is not possible to send messages larger than approximately 4 KiB as a master  due to operating system limitations on the asynchronous incoming buffer  The SPI  is full duplex so there must be enough buffer space to accommodate the slave  response when sending as a master     7  Sending zero bytes as an SPI master will simply toggle the slave select line for  5 10 us     5 6 2 General SPI    Configure  aa_spi_configure     int aa_spi_ configure  Aardvark aardvark   AardvarkSpiPolarity polarity     61    SY   amp  TOTAL PHASE Aardvark I2C SPI Host Adapter User Manual       AardvarkSpiPhase phase   AardvarkSpiBitorder bitorder      Configure the SPI master or slave interface     Arguments  aardvark handle of an Aardvark adapter  polarity AA SPI POL RISING FALLING or  AA SPI POL FALLING RISING  phase AA SPI PHASE SAMPLE SETUP or  AA SPI PHASE SETUP SAMPLE  bitorder AA SPI BITORDER MSB or AA SPI BITORDER LSB    Return Value    An Aardvark status code is returned that is AA _OK on success   Specific Error Codes    None   Details    These configuration parameters specify how to clock the bits that are sent and  received on the Aardvark SPI interface     The polarity option specifies which transition constitutes the leading edge and which  transition is the falling edge  For example  AA SPI POL RISING FALLING would  c
71. t application   Examples   o     Windows System32  Windows XP Vista 7 8 32 bit   o C  Windows System64  Windows XP 64 bit          Windows SysWow64  Windows Vista 7 8 64 bit   4  64 bit system directory  for a 64 bit application   Examples   o C  Windows System32  Windows XP Vista 7 8 64 bit   5  The Windows directory   Ex  c   Windows    6  The directories listed in the PATH environment variable   On a Linux system  this is as follows   1  First  search for the shared object in the application binary path  If the  proc  filesystem is not present  this step is skipped   2  Next  search in the applications current working directory   3  Search the paths explicitly specified in LD LIBRARY PATH     4  Finally  check any system library paths as specified in  etc ld so conf and  cached in  etc ld so cache     On a Mac OS X system  this is as follows     1  First  search for the shared object in the application binary path   2  Next  search in the applications current working directory    3  Search the paths explicitly specified in DYLD LIBRARY PATH    4  Finally  check the  usr lib and  usr local lib system library paths     If the DLL is still not found  an error will be returned by the binding function  The error  code is AA UNABLE TO LOAD LIBRARY     21    SY   amp  TOTAL PHASE Aardvark I2C SPI Host Adapter User Manual       3 6 3 DLL Versioning    The Aardvark DLL checks to ensure that the firmware of a given Aardvark device is  compatible  Each DLL revision is tagged as being
72. tatus codes are received  refer to the previous  sections in this manual that discuss the DLL and API integration of the Aardvark  software  Furthermore  all API calls can potentially return the error   AA UNABLE TO LOAD FUNCTION  If this error is encountered  there is likely a serious  version incompatibility that was not caught by the automatic version checking system   Where appropriate  compare the language binding versions  e g     AA _HEADER_VERSION found in aardvark h and AA _CFILE VERSION found in  aardvark  c   to verify that there are no mismatches  Next  ensure that the Rosetta  language binding  e g   aardvark c and aardvark h   are from the same release as    28    SY   amp  TOTAL PHASE Aardvark I2C SPI Host Adapter User Manual       the Aardvark DLL  If all of these versions are synchronized and there are still problems   please contact Total Phase support for assistance     Any API function that accepts an Aardvark handle can return the error   AA INVALID HANDLE if the handle does not correspond to a valid Aardvark device that  has already been opened  If this error is received  check the application code to ensure  that the aa_open command returned a valid handle and that this handle is not corrupted  before being passed to the offending API function     Finally  any IC or SPI API call that communicates with an Aardvark device can return  the error AA COMMUNICATION ERROR  This means that while the Aardvark handle is  valid and the communication channel is open
73. tended  information is not required  For more complex applications  the use of  aa open ext   is recommended     The open function also deactivates all slave functionality  An Aardvark device could  have potentially been opened  enabled as a slave  and configured to send  asynchronous responses to a third party master  If the controlling application quits  without calling aa_close    the port is freed but the slave functions can still be  active  The open function deactivates slave functionality to ensure that the new  application has access to an Aardvark device that is in a known state  Also the 1  C  bus is freed  in the event that it was held indefinitely from a previous   AA I2C NO STOP transaction     Open an Aardvark device  aa_open_ext   Aardvark aa open ext  int port number  AardvarkExt  aa ext      Open the Aardvark port  returning extended information in the supplied structure     Arguments  port_number same as aa_open  aa_ ext pointer to pre allocated structure for extended version    information available on open    Return Value    This function returns an Aardvark handle  which is guaranteed to be greater than  zero if valid     Specific Error Codes    AA UNABLE TO OPEN The specified port is not connected to an  Aardvark device or the port is already in  use    AA INCOMPATIBLE DEVICE There is a version mismatch between the    DLL and the firmware  The DLL is not of a  sufficient version for interoperability with the  firmware version or vice versa  The version  
74. ter invocation  A call to any Aardvark API function  that communicates with the host synchronously will also fetch any pending  asynchronous messages  buffering them for subsequent calls to the asynchronous   slave  receive functions     3 8 4 USB Scheduling Delays    Each API call that is used to send data to and from the Aardvark adapter can incur up to  1 ms in delay on the PC host  This is caused by the inherent design of the USB  architecture  The operating system will queue any outgoing USB transfer request on the  host until the next USB frame period  The frame period is 1 ms  Thus  if the application  attempts to execute several transactions in rapid sequence there can be 1 2 ms delay  between each transaction plus any additional process scheduling delays introduced by  the operating system  The best throughput can be achieved for single transactions that  transfer a large number of bytes at a time     25    SY   amp  TOTAL PHASE Aardvark I2C SPI Host Adapter User Manual       4 Firmware    4 1 Field Upgrades    4 1 1 Upgrade Philosophy    The Aardvark adapter is designed so that its internal firmware can be upgraded by the  user  thereby allowing the inclusion of any performance enhancements or critical fixes  available after the purchase of the device  The upgrade procedure is performed via USB  and has several error checking facilities to ensure that the Aardvark adapter is not  rendered permanently unusable by a bad firmware update  In the worst case scenario  a  
75. the I C slave issues either an ACK  or NACK on the tenth byte without affecting the total number of bytes  transferred  Hence  the aa_i2c write function cannot provide the caller with  the information that the 10th byte was ACK ed or NACK ed     e On the other hand  if the aa _i2c write ext is used  the status code will  distinguish the two scenarios  This status information could be useful for further  communications with that particular slave device     Master Write Read  aa_i2c_write_read     int aa_i2c write read  Aardvark aardvark   aa_ul6 Slave_addr   AardvarkI2cFlags flags   aa ul6 out_num bytes   const aa u08   out data   aa ul6o   num written   aa ul6 in num bytes   aa_u08   in data   aa ul6   num read      Write a stream of bytes to the PC slave device followed by a read from the same slave    device    Arguments  aardvark handle of an Aardvark adapter  Slave addr the slave from which to read  flags special operations as described in  Notes  section  out num bytes the number of bytes to write  maximum 65535   out data pointer to data to write  num written the actual number of bytes written  in_num bytes the number of bytes to read  maximum 65535   in data pointer to data for read  num read the actual number of bytes read    Return Value    Combined I C status code from the write and read operations   Specific Error Codes    None     Details    54    SY   amp  TOTAL PHASE Aardvark I2C SPI Host Adapter User Manual       This function performs the functions of aa_i2c w
76. ts  aardvark handle of an Aardvark adapter    timeout _ms the requested bus lock timeout in ms     Return Value    This function returns the actual timeout set   Specific Error Codes    None     Details    The power on default timeout is 200ms  The minimum timeout value is 10ms and  the maximum is 450ms  If a timeout value outside this range is passed to the API  function  the timeout will be restricted  The exact timeout that is set can vary based  on the resolution of the timer within the Aardvark adapter  The nominal timeout that  was set is returned back by the API function     If timeout _ms is 0  the function will return the bus lock timeout presently set on the  Aardvark adapter and the bus lock timeout will be left unmodified     If the bus is locked during the middle of any 1  C transaction  master transmit  master  receive  slave transmit  slave receive  the appropriate extended API function will  return the status code AA I2C STATUS BUS LOCKED as described in the  preceding Notes section  The bus lock timeout is measured between events on the    2C bus  where an event is a start condition  the completion of 9bits of data transfer   a repeated start condition  or a stop condition  For example  if a full 9 bits are not  completed within the bus lock timeout  due to clock stretching or some other error    the bus lock error will be triggered     Please note that once the Aardvark adapter detects a bus lock timeout  it will abort  its   C interface  even if the timeout
77. ual       Arguments    aardvark handle of an Aardvark adapter  version pointer to pre allocated structure    Return Value    An Aardvark status code is returned with AA_OK on success   Specific Error Codes    None     Details  If the handle is 0 or invalid  only the software version is set     See the details of aa open ext for the definition of AardvarkVersion     Configure  aa_configure     int aa_configure  Aardvark aardvark  AardvarkConfig config      Activate deactivate individual subsystems  FC  SPI  GPIO    Arguments    aardvark handle of an Aardvark adapter  config enumerated type specifying configuration  See Table 2    Table 2   config enumerated types    AA CONFIG GPIO ONLY   Configure all pins as GPIO  Disable both 1  C and SPI   AA CONFIG SPI GPIO   Configure I C pins as GPIO  Enable SPI     AA CONFIG GPIO I2C   Configure SPI pins as GPIO  Enable    C   AA CONFIG SPI I2C Disable GPIO  Enable both I C and SPI   AA CONFIG QUERY Queries existing configuration  does not modify      Return Value       The current configuration on the Aardvark adapter will be returned  The  configuration will be described by the same values in AardvarkConf ig     38    SY   amp  TOTAL PHASE Aardvark I2C SPI Host Adapter User Manual       Specific Error Codes    AA CONFIG ERROR The I C or SPI subsystem is currently active and  the new configuration requires the subsystem to  be deactivated     Details    If either the 12C or SPI subsystems have been disabled by this API call  all other 
78. ual       Return Value    An Aardvark status code is returned that is AA _OK on success   Specific Error Codes    None   Details  If a line is configured as an input or not activated for GPIO  the output value will be    cached  The next time the line is an output and activated for GPIO  the output value  previously set will automatically take effect     Change  aa_gpio_change     int aa _gpio change  Aardvark aardvark   aa ul6 timeout       Block until there is a change on the GPIO input lines   Arguments  aardvark handle of an Aardvark adapter  timeout time to wait for a change in milliseconds    Return Value    The current state of the GPIO input lines   Specific Error Codes    None     Details    The function will return either when a change has occurred or the timeout expires   Pins configured for   C or SPI will be ignored  Pins configured as outputs will be  ignored  The timeout  specified in milliseconds  has a precision of approximately   2 ms  The maximum allowable timeout is approximately 60 seconds  If the timeout  expires  this function will return the current state of the GPIO lines  It is the  applications responsibility to save the old value of the lines and determine if there is  a change based on the return value of this function     The function aa_gpio_ change will return immediately with the current value of the  GPIO lines for the first invocation after any of the following functions are called   aa configure  aa gpio direction  oraa gpio pullup  If the 
79. ual       The lower 7 bits of addr should correspond to the slave address of this Aardvark  adapter  If the topmost bit of addr is set  the slave will respond to a general call  transmission by an I C master  After having been addressed by a general call  the  Aardvark IC slave treats the transaction no differently than a single slave  communication  There is no support for the hardware address programming feature  of the general call that is described in the I C protocol specification since that  capability is not needed for Aardvark devices     If maxTxBytes is 0  there is no limit on the number of bytes that this slave will  transmit per transaction  If it is non zero  then the slave will stop transmitting bytes  at the specified limit and subsequent bytes received by the master will be Oxf f due  to the bus pull up resistors  The response that is transmitted by the slave is set  through the aa _ i2c slave set_response function described below  If the  maximum is greater than the response  as set through   aa i2c slave set response   the Aardvark slave will wrap the response string  as many times as necessary to send the requested number of bytes     If maxRxBytes is 0  the slave can receive an unlimited number of bytes from the  master  However  if it is non zero  the slave will send a not acknowledge bit after the  last byte that it accepts  The master should then release the bus  Even if the master  does not stop transmitting  the slave will return the received data bac
80. uses a  virtual serial port driver  The switch to a more direct USB driver should improve the  installation and performance of PC and Aardvark adapter communication     To install the appropriate USB communication driver under Windows  use the Total  Phase USB Driver Installer before plugging in any device  The driver installer can be  found either on the CD ROM  use the HTML based guide that is opened when the CD is  first loaded to locate the Windows installer   or in the Downloads section of the Aardvark  adapter product page on the Total Phase website     16    SY   amp  TOTAL PHASE Aardvark I2C SPI Host Adapter User Manual       After the driver has been installed  plugging in an Aardvark adapter for the first time will  cause the adapter to be installed and associated with the correct driver  The following  steps describe the feedback the user should receive from Windows after an Aardvark  adapter is plugged into a system for the first time     Windows XP     1  The Found New Hardware notification bubble will pop up from the system tray  and state that the Total Phase Aardvark I C SPI Host Adapter has been detected     2  When the installation is complete  the Found New Hardware notification bubble  will again pop up and state that your new hardware is installed and ready to use     Windows Vista 7 8   1  A notification bubble will pop up from the system tray and state that Windows is   installing device driver software      2  When the installation is complete  the not
81. ux no longer requires a  specific kernel mode or user mode driver to operate  This differs from previous versions   that required the user to ensure independently that the libusb library was installed on the  system  See the README txt in the API package for more details     Most modern Linux distributions use the udev subsystem to help manipulate the  permissions of various system devices  This is the preferred way to support access to  the Aardvark adapter such that the device is accessible by all of the users on the system  upon device plug in     For legacy systems  there are two different ways to access the Aardvark adapter   through USB hotplug or by mounting the entire USB filesystem as world writable  Both  require that  proc bus usb is mounted on the system which is the case on most  standard distributions     3 3 1 UDEV  Support for udev requires a single configuration file that is available on the software CD   and also listed on the Total Phase website for download  This file is 99      totalphase  rules  Please follow the following steps to enable the appropriate  permissions for the Aardvark adapter     1  As superuser  unpack 99 totalphase  rules to  etc udev rules d    2  chmod 644  etc udev rules d 99 totalphase  rules    18    SY   amp  TOTAL PHASE Aardvark I2C SPI Host Adapter User Manual       3  Unplug and replug your Aardvark adapter s   3 3 2 USB Hotplug    USB hotplug requires two configuration files which are available on the software CD  and  also li
82. wn position      Pin 1 is located in the lower left corner of  the connector and Pin 10 is located in the upper right corner  of the connector     2 1 3 Order of Leads    1  SCL    nm    GND  SDA  NC  5V  MISO  NC  5V  SCLK  MOSI  SS    O CO s o o e    _   h    GND  2 1 4 Ground    GND  Pin 2    GND  Pin 10      It is imperative that the Aardvark adapter be on a common ground with the target  system  If the grounds are not connected  the signaling is entirely unpredictable and    SY   amp  TOTAL PHASE Aardvark I2C SPI Host Adapter User Manual       communication will likely be corrupted  Two pins are connected to provide a solid ground  path     2 1 5 I C Pins  SCL  Pin 1      Serial Clock line     the signal used to synchronize communication between the master  and the slave     SDA  Pin 3      Serial Data line     the signal used to transfer data between the transmitter and the  receiver     2 1 6 SPI Pins  SCLK  Pin 7      Serial Clock     control line that is driven by the master and regulates the flow of the data  bits     MOSI  Pin 8      Master Out Slave In     this data line supplies output data from the master which is shifted  into the slave     MISO  Pin 5      Master In Slave Out     this data line supplies the output data from the slave to the input  of the master     SS  Pin 9      Slave Select     control line that allows slaves to be turned on and off via hardware  control     2 1 7 Powering Downstream Devices    It is possible to power a downstream target  su
    
Download Pdf Manuals
 
 
    
Related Search
    
Related Contents
SOLIS Genius 561    Acco 62385 wrist rest  TomTom 1B00050 GPS Receiver User Manual  whynter 70 pint residential portable dehumidifier with built    Copyright © All rights reserved. 
   Failed to retrieve file