mini board PCU9669 (and PCA9665) sample code
Dependencies: mbed PCU9669 utility PCA9665 I2C_slaves parallel_bus
Fork of mini_board_PCU9669_old by
Sample code for PCU9669 (PCU9661, PCA9663, PCA9661 and PCA9665) evaluation board.
PCU9669 evaluation board: Mini board PCU9669
User manual is available -> http://www.nxp.com/documents/user_manual/UM10580.pdf
mini_board_libs/PCU9669/transfer_manager.h
- Committer:
- nxp_ip
- Date:
- 2012-07-06
- Revision:
- 10:47974d9e6a5f
- Parent:
- 8:6120bbbe3636
File content as of revision 10:47974d9e6a5f:
/** A sample code for "mini board PCU9669/PCA9665" * * @author Akifumi (Tedd) OKANO, NXP Semiconductors * @version 1.0 * @date 26-Mar-2012 * * Released under the MIT License: http://mbed.org/license/mit * * An operation sample of PCU9669/PCA9665 I2C bus controller. * The mbed accesses the bus controller's parallel port (8/2 bit address and 8 bit data) by bit-banging. * The bit-banging is poerformed by PortInOut function of mbed library. * * To make the code porting easier, all codes are partitioned into layers to abstract other parts. * The mbed specific parts are concentrated in lowest layer: "hardware_abs.*". * This module may need to be modified for the porting. * * All other upper layers are writen in standard-C. * * base code is written from 05-Sep-2011 to 09-Sep-2011. * And demo code has been build on 11-Sep-2011. * Debug and code adjustment has been done on 08-Sep-2011. * Small sanitization for main.cpp. All mbed related codes are moved in to "hardware_abs.*". 13-Oct-2011 * hardware_abs are moved into parallel_bus library folder, 3 LED driver operation sample 13-Feb.-2012 * PCU9669 and PCA9665 codes are packed in a project 14-Feb-2012. * * Before builidng the code, please edit the file mini_board_PCU9669/config.h * Un-comment the target name what you want to target. */ /** Data transfer is abstracted on this layer * * The transer can be managed by a struct and some functions */ #ifndef __TRANSFER_MANAGER__ #define __TRANSFER_MANAGER__ #define TRIGGER_BY_RISING_EDGE 0 #define TRIGGER_BY_FALLING_EDGE 1 /** @typedef transaction * * A transaction (single data read/write access to the slave) is managed by this structure * An array of the transaction makes a transfer. * The sample of the transfer management can be found in "main.cpp". */ typedef struct transaction_st { char i2c_address __attribute__((packed)); char *data __attribute__((packed)); char length __attribute__((packed)); } transaction; /** Setup transfer * * A transfer (consists multiple transactions) will be set into the buffer. * This function only sets the data. * * @param ch target of channel: CH_FM_PLUS | CH_UFM1 | CH_UFM2 * @param *t a pointer to transaction array. This array represents a transfer. * @param n_of_transaction number of transactions (how many transactions in this transfer) * @see setup_transfer() * @see buffer_overwrite() * @see buffer_read() * @see start() */ void setup_transfer( char ch, transaction *t, char n_of_transaction ); /** Set N of transaction * * To modify the N_OF_TRANSACTION * This can be used to ignore transactions after specified transaction * * @param ch target of channel: CH_FM_PLUS | CH_UFM1 | CH_UFM2 * @param n_of_transaction number of transactions (how many transactions in this transfer) * @see setup_transfer() * @see buffer_overwrite() * @see buffer_read() * @see start() */ void set_n_of_transaction( char ch, char n_of_transaction ); /** Buffer overwrite (in a transaction) * * Buffer contents in a transaction can be overwritten. * * @param ch target of channel: CH_FM_PLUS | CH_UFM1 | CH_UFM2 * @param transaction_number points the target transaction by number. * @param offset offset of overwriting start byte * @param *data pointer to char array, this contents will be written * @param length number of bytes to overwrite * @see setup_transfer() * @see buffer_overwrite() * @see buffer_read() * @see start() */ void buffer_overwrite( char ch, char transaction_number, char offset, char *data, char length ); /** Buffer read (in a transaction) * * Buffer read interface. * * @param ch target of channel: CH_FM_PLUS | CH_UFM1 | CH_UFM2 * @param transaction_number points the target transaction by number. * @param offset offset of reading start byte * @param *data pointer to char array, the data will be written here * @param length number of bytes to read * @see setup_transfer() * @see buffer_overwrite() * @see buffer_read() * @see start() */ void buffer_read( char ch, char transaction_number, char offset, char *data, char length ); /** Start transfer * * Starts the transfer of specified channel * * @param ch target of channel: CH_FM_PLUS | CH_UFM1 | CH_UFM2 * @see setup_transfer() * @see buffer_overwrite() * @see buffer_read() * @see start() */ void start( char ch ); void start_by_trigger( char ch, char polarity ); void stop( char ch ); // void single_transaction_buffer_fill( char ch, char *data, char length ); #endif // __TRANSFER_MANAGER__