test version 0.2

Dependents:   SC18IS606_Hello SC18IS606_EEPROM_access_test SC18IS606_OS6_Hello

Committer:
okano
Date:
Wed Jul 14 03:00:18 2021 +0000
Revision:
2:4e64923032ad
Parent:
1:b44f801ac9f2
Child:
3:47f1f22747cc
buffer write/read splitted

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 2:4e64923032ad 61 /** Transfer (send data)
okano 2:4e64923032ad 62 *
okano 2:4e64923032ad 63 * @param slave_select_num SPI slave select number (0 ~ 2)
okano 2:4e64923032ad 64 * @param send_ptr Send_data_ptr
okano 2:4e64923032ad 65 * @param length Length of data array
okano 2:4e64923032ad 66 * @return dummy
okano 2:4e64923032ad 67 */
okano 2:4e64923032ad 68 int transfer( int slave_select_num, char *send_data_ptr, int length );
okano 2:4e64923032ad 69
okano 2:4e64923032ad 70 /** Read buffer (reading out received data from buffer)
okano 0:d4d72026aaf3 71 *
okano 2:4e64923032ad 72 * @param receive_ptr Receive_data_ptr
okano 2:4e64923032ad 73 * @param length Length of data array
okano 2:4e64923032ad 74 * @return dummy
okano 0:d4d72026aaf3 75 */
okano 2:4e64923032ad 76 int read_buffer( char *receive_data_ptr, int length );
okano 2:4e64923032ad 77
okano 2:4e64923032ad 78 #if 0
okano 2:4e64923032ad 79 /** Wait transfer done (using polling method)
okano 2:4e64923032ad 80 */
okano 2:4e64923032ad 81 void wait_transfer_done( void );
okano 2:4e64923032ad 82 #endif
okano 0:d4d72026aaf3 83
okano 0:d4d72026aaf3 84 /** Set congiguration
okano 0:d4d72026aaf3 85 *
okano 0:d4d72026aaf3 86 * @param data Donfig data byte
okano 0:d4d72026aaf3 87 * @return dummy
okano 0:d4d72026aaf3 88 */
okano 0:d4d72026aaf3 89 int config( FunctionID fid, char data );
okano 0:d4d72026aaf3 90
okano 1:b44f801ac9f2 91 /** Clear interrupt
okano 1:b44f801ac9f2 92 *
okano 1:b44f801ac9f2 93 * @return dummy
okano 1:b44f801ac9f2 94 */
okano 1:b44f801ac9f2 95 int clear_interrupt( void );
okano 1:b44f801ac9f2 96
okano 0:d4d72026aaf3 97 private:
okano 0:d4d72026aaf3 98
okano 0:d4d72026aaf3 99 enum {
okano 1:b44f801ac9f2 100 DEFAULT_I2C_SLAVE_ADDRESS = 0x50
okano 0:d4d72026aaf3 101 };
okano 0:d4d72026aaf3 102
okano 1:b44f801ac9f2 103 int init( void );
okano 1:b44f801ac9f2 104
okano 0:d4d72026aaf3 105 I2C *i2c_p;
okano 0:d4d72026aaf3 106 I2C &i2c;
okano 0:d4d72026aaf3 107 char device_address;
okano 0:d4d72026aaf3 108 };
okano 0:d4d72026aaf3 109
okano 0:d4d72026aaf3 110 #endif // end of "#ifndef MBED_SC18IS606"