test version 0.2

Dependents:   SC18IS606_Hello SC18IS606_EEPROM_access_test SC18IS606_OS6_Hello

Committer:
okano
Date:
Sun Jul 25 08:30:08 2021 +0000
Revision:
4:ac0aef91fd94
Parent:
3:47f1f22747cc
Child:
5:436b2c7854e8
transfer complete wait function implemented

Who changed what in which revision?

UserRevisionLine numberNew contents of line
okano 0:d4d72026aaf3 1 /*
okano 0:d4d72026aaf3 2 * SC18IS606 library
okano 0:d4d72026aaf3 3 *
okano 0:d4d72026aaf3 4 * @author Akifumi (Tedd) OKANO, NXP Semiconductors
okano 0:d4d72026aaf3 5 * @version 0.1
okano 0:d4d72026aaf3 6 * @date 13-July-2021
okano 0:d4d72026aaf3 7 *
okano 1:b44f801ac9f2 8 * SC18IS606 is an "I2C-bus to SPI bridge"
okano 1:b44f801ac9f2 9 * http://www.nxp.com/ (product infomation page will be updated later)
okano 0:d4d72026aaf3 10 */
okano 0:d4d72026aaf3 11
okano 1:b44f801ac9f2 12 #include "mbed.h"
okano 1:b44f801ac9f2 13
okano 0:d4d72026aaf3 14 #ifndef MBED_SC18IS606
okano 0:d4d72026aaf3 15 #define MBED_SC18IS606
okano 0:d4d72026aaf3 16
okano 0:d4d72026aaf3 17
okano 0:d4d72026aaf3 18 /** SC18IS606 class
okano 0:d4d72026aaf3 19 *
okano 0:d4d72026aaf3 20 * This is a driver code for the SC18IS606: *
okano 0:d4d72026aaf3 21 * Example:
okano 0:d4d72026aaf3 22 * @code
okano 0:d4d72026aaf3 23 * #include "mbed.h"
okano 0:d4d72026aaf3 24 * @endcode
okano 0:d4d72026aaf3 25 */
okano 0:d4d72026aaf3 26
okano 0:d4d72026aaf3 27 class SC18IS606
okano 0:d4d72026aaf3 28 {
okano 0:d4d72026aaf3 29 public:
okano 0:d4d72026aaf3 30
okano 0:d4d72026aaf3 31 /** Function IDs */
okano 0:d4d72026aaf3 32 typedef enum {
okano 0:d4d72026aaf3 33 SPI_read_and_write = 0x00,
okano 0:d4d72026aaf3 34 Configure_SPI_Interface = 0xF0,
okano 0:d4d72026aaf3 35 Clear_Interrupt,
okano 0:d4d72026aaf3 36 Idle_mode,
okano 1:b44f801ac9f2 37 GPIO_Write = 0xF4,
okano 0:d4d72026aaf3 38 GPIO_Read,
okano 0:d4d72026aaf3 39 GPIO_Enable,
okano 0:d4d72026aaf3 40 GPIO_Configuration
okano 0:d4d72026aaf3 41 }
okano 0:d4d72026aaf3 42 FunctionID;
okano 0:d4d72026aaf3 43
okano 0:d4d72026aaf3 44 /** Create a SC18IS606 instance connected to specified I2C pins with specified address
okano 0:d4d72026aaf3 45 *
okano 0:d4d72026aaf3 46 * @param I2C_sda I2C-bus SDA pin
okano 0:d4d72026aaf3 47 * @param I2C_scl I2C-bus SCL pin
okano 0:d4d72026aaf3 48 */
okano 0:d4d72026aaf3 49 SC18IS606( PinName sda, PinName scl, char i2c_address = DEFAULT_I2C_SLAVE_ADDRESS );
okano 0:d4d72026aaf3 50
okano 0:d4d72026aaf3 51 /** Create a SC18IS606 instance connected to specified I2C pins with specified address
okano 0:d4d72026aaf3 52 *
okano 0:d4d72026aaf3 53 * @param i2c I2C object (instance)
okano 0:d4d72026aaf3 54 */
okano 1:b44f801ac9f2 55 SC18IS606( I2C &i2c, char i2c_address = DEFAULT_I2C_SLAVE_ADDRESS );
okano 0:d4d72026aaf3 56
okano 0:d4d72026aaf3 57 /** Destractor
okano 0:d4d72026aaf3 58 */
okano 1:b44f801ac9f2 59 ~SC18IS606();
okano 0:d4d72026aaf3 60
okano 4:ac0aef91fd94 61 void install_wait_func( void (*block)( void ) )
okano 4:ac0aef91fd94 62 {
okano 4:ac0aef91fd94 63 wait_transfer_completion = block;
okano 4:ac0aef91fd94 64 }
okano 4:ac0aef91fd94 65
okano 2:4e64923032ad 66 /** Transfer (send data)
okano 2:4e64923032ad 67 *
okano 2:4e64923032ad 68 * @param slave_select_num SPI slave select number (0 ~ 2)
okano 2:4e64923032ad 69 * @param send_ptr Send_data_ptr
okano 2:4e64923032ad 70 * @param length Length of data array
okano 2:4e64923032ad 71 * @return dummy
okano 2:4e64923032ad 72 */
okano 2:4e64923032ad 73 int transfer( int slave_select_num, char *send_data_ptr, int length );
okano 2:4e64923032ad 74
okano 2:4e64923032ad 75 /** Read buffer (reading out received data from buffer)
okano 0:d4d72026aaf3 76 *
okano 2:4e64923032ad 77 * @param receive_ptr Receive_data_ptr
okano 2:4e64923032ad 78 * @param length Length of data array
okano 2:4e64923032ad 79 * @return dummy
okano 0:d4d72026aaf3 80 */
okano 2:4e64923032ad 81 int read_buffer( char *receive_data_ptr, int length );
okano 2:4e64923032ad 82
okano 0:d4d72026aaf3 83 /** Set congiguration
okano 0:d4d72026aaf3 84 *
okano 0:d4d72026aaf3 85 * @param data Donfig data byte
okano 0:d4d72026aaf3 86 * @return dummy
okano 0:d4d72026aaf3 87 */
okano 0:d4d72026aaf3 88 int config( FunctionID fid, char data );
okano 0:d4d72026aaf3 89
okano 1:b44f801ac9f2 90 /** Clear interrupt
okano 1:b44f801ac9f2 91 *
okano 1:b44f801ac9f2 92 * @return dummy
okano 1:b44f801ac9f2 93 */
okano 1:b44f801ac9f2 94 int clear_interrupt( void );
okano 1:b44f801ac9f2 95
okano 0:d4d72026aaf3 96 private:
okano 0:d4d72026aaf3 97
okano 0:d4d72026aaf3 98 enum {
okano 1:b44f801ac9f2 99 DEFAULT_I2C_SLAVE_ADDRESS = 0x50
okano 0:d4d72026aaf3 100 };
okano 0:d4d72026aaf3 101
okano 4:ac0aef91fd94 102 int init( void);
okano 1:b44f801ac9f2 103
okano 0:d4d72026aaf3 104 I2C *i2c_p;
okano 0:d4d72026aaf3 105 I2C &i2c;
okano 0:d4d72026aaf3 106 char device_address;
okano 4:ac0aef91fd94 107 void (*wait_transfer_completion)( void );
okano 0:d4d72026aaf3 108 };
okano 0:d4d72026aaf3 109
okano 0:d4d72026aaf3 110 #endif // end of "#ifndef MBED_SC18IS606"