test version 0.2
Dependents: SC18IS606_Hello SC18IS606_EEPROM_access_test SC18IS606_OS6_Hello
SC18IS606.h@4:ac0aef91fd94, 2021-07-25 (annotated)
- 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?
User | Revision | Line number | New 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" |