test code

Dependencies:   mbed SC18IS606

Sample code for SC18IS606 class library

The SC18IS606 : I2C-bus to SPI bridge

Hello program operation sample on Mbed OS6 is available.

Import programSC18IS606_OS6_Hello

operation test on Mbed OS6

This is a "Hello" code for SC18IS606 class library. Showing how to send/receive data to/from SPI bus through this bridge chip. https://os.mbed.com/media/uploads/okano/screenshot_2021-07-14_13.13.55.png

How to wire the SC18IS606 (using evaluation board) https://os.mbed.com/media/uploads/okano/untitled.png

Committer:
okano
Date:
Sun Jul 25 08:30:18 2021 +0000
Revision:
6:741cdb9c5726
Parent:
4:2759b8e6d5ec
Child:
7:df3611f05b77
transfer complete wait function implemented

Who changed what in which revision?

UserRevisionLine numberNew contents of line
okano 2:6d65d24e55ed 1 /*
okano 2:6d65d24e55ed 2 * SC18IS606 library
okano 2:6d65d24e55ed 3 *
okano 2:6d65d24e55ed 4 * @author Akifumi (Tedd) OKANO, NXP Semiconductors
okano 2:6d65d24e55ed 5 * @version 0.1
okano 2:6d65d24e55ed 6 * @date 13-July-2021
okano 2:6d65d24e55ed 7 *
okano 2:6d65d24e55ed 8 * SC18IS606 is an "I2C-bus to SPI bridge"
okano 2:6d65d24e55ed 9 * http://www.nxp.com/ (product infomation page will be updated later)
okano 2:6d65d24e55ed 10 */
okano 2:6d65d24e55ed 11
okano 0:45ec5ead6731 12 #include "mbed.h"
okano 1:f0126d924ff8 13 #include "SC18IS606.h"
okano 0:45ec5ead6731 14
okano 0:45ec5ead6731 15 I2C i2c( p28, p27 );
okano 1:f0126d924ff8 16 InterruptIn int_line( p21 );
okano 1:f0126d924ff8 17 SC18IS606 bridge( i2c );
okano 0:45ec5ead6731 18
okano 4:2759b8e6d5ec 19 #define I2C_FREQUENCY (400 * 1000) // Hz
okano 4:2759b8e6d5ec 20 #define SLAVE_SELECT_NUM 0
okano 4:2759b8e6d5ec 21 #define DATA_LENGTH 256
okano 4:2759b8e6d5ec 22
okano 4:2759b8e6d5ec 23 void data_check( char *data, int length );
okano 2:6d65d24e55ed 24
okano 0:45ec5ead6731 25 volatile int int_flag = false;
okano 0:45ec5ead6731 26
okano 0:45ec5ead6731 27 void int_handler()
okano 0:45ec5ead6731 28 {
okano 0:45ec5ead6731 29 int_flag = true;
okano 0:45ec5ead6731 30 }
okano 0:45ec5ead6731 31
okano 6:741cdb9c5726 32 void wait_transfer_done( void )
okano 6:741cdb9c5726 33 {
okano 6:741cdb9c5726 34 while ( !int_flag )
okano 6:741cdb9c5726 35 ;
okano 6:741cdb9c5726 36
okano 6:741cdb9c5726 37 bridge.clear_interrupt();
okano 6:741cdb9c5726 38 int_flag = false;
okano 6:741cdb9c5726 39 }
okano 6:741cdb9c5726 40
okano 0:45ec5ead6731 41 int main()
okano 0:45ec5ead6731 42 {
okano 2:6d65d24e55ed 43 printf( "SC18IS606 Hello\r\n" );
okano 4:2759b8e6d5ec 44
okano 1:f0126d924ff8 45 int_line.mode( PullUp );
okano 1:f0126d924ff8 46 int_line.fall( &int_handler );
okano 4:2759b8e6d5ec 47 i2c.frequency( I2C_FREQUENCY );
okano 6:741cdb9c5726 48 bridge.install_wait_func( wait_transfer_done );
okano 0:45ec5ead6731 49
okano 4:2759b8e6d5ec 50 char snd_data[ DATA_LENGTH ];
okano 4:2759b8e6d5ec 51 char rcv_data[ DATA_LENGTH ];
okano 0:45ec5ead6731 52
okano 4:2759b8e6d5ec 53 for ( int i = 0; i < DATA_LENGTH; i++ ) {
okano 4:2759b8e6d5ec 54 snd_data[ i ] = i;
okano 0:45ec5ead6731 55 }
okano 0:45ec5ead6731 56
okano 0:45ec5ead6731 57 while(1) {
okano 4:2759b8e6d5ec 58 bridge.transfer( SLAVE_SELECT_NUM, snd_data, sizeof( snd_data ) );
okano 4:2759b8e6d5ec 59 bridge.read_buffer( rcv_data, sizeof( rcv_data ) );
okano 4:2759b8e6d5ec 60 // data_check( rcv_data, DATA_LENGTH );
okano 0:45ec5ead6731 61 }
okano 0:45ec5ead6731 62 }
okano 4:2759b8e6d5ec 63
okano 4:2759b8e6d5ec 64
okano 4:2759b8e6d5ec 65 void data_check( char *data, int length )
okano 4:2759b8e6d5ec 66 {
okano 4:2759b8e6d5ec 67 for ( int i = 0; i < length; i++ ) {
okano 4:2759b8e6d5ec 68 if ( !(i % 16) )
okano 4:2759b8e6d5ec 69 printf( "\r\n %02X :", i );
okano 4:2759b8e6d5ec 70 printf( " %02X", data[ i ] );
okano 4:2759b8e6d5ec 71 }
okano 4:2759b8e6d5ec 72
okano 4:2759b8e6d5ec 73 }