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:
Wed Jul 28 01:48:47 2021 +0000
Revision:
7:df3611f05b77
Parent:
6:741cdb9c5726
code cleaned

Who changed what in which revision?

UserRevisionLine numberNew contents of line
okano 2:6d65d24e55ed 1 /*
okano 7:df3611f05b77 2 * "Hello code" for SC18IS606 library
okano 2:6d65d24e55ed 3 *
okano 2:6d65d24e55ed 4 * @author Akifumi (Tedd) OKANO, NXP Semiconductors
okano 7:df3611f05b77 5 * @version 0.2
okano 7:df3611f05b77 6 * @date 28-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 7:df3611f05b77 17 SC18IS606 bridge( i2c ); // make a SC18IS606 instance as "bridge"
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 7:df3611f05b77 41 void hardware_settings( void )
okano 7:df3611f05b77 42 {
okano 7:df3611f05b77 43 int_line.mode( PullUp );
okano 7:df3611f05b77 44 int_line.fall( &int_handler );
okano 7:df3611f05b77 45 i2c.frequency( I2C_FREQUENCY );
okano 7:df3611f05b77 46 }
okano 7:df3611f05b77 47
okano 0:45ec5ead6731 48 int main()
okano 0:45ec5ead6731 49 {
okano 2:6d65d24e55ed 50 printf( "SC18IS606 Hello\r\n" );
okano 4:2759b8e6d5ec 51
okano 7:df3611f05b77 52 hardware_settings();
okano 6:741cdb9c5726 53 bridge.install_wait_func( wait_transfer_done );
okano 0:45ec5ead6731 54
okano 4:2759b8e6d5ec 55 char snd_data[ DATA_LENGTH ];
okano 4:2759b8e6d5ec 56 char rcv_data[ DATA_LENGTH ];
okano 0:45ec5ead6731 57
okano 4:2759b8e6d5ec 58 for ( int i = 0; i < DATA_LENGTH; i++ ) {
okano 4:2759b8e6d5ec 59 snd_data[ i ] = i;
okano 0:45ec5ead6731 60 }
okano 0:45ec5ead6731 61
okano 0:45ec5ead6731 62 while(1) {
okano 4:2759b8e6d5ec 63 bridge.transfer( SLAVE_SELECT_NUM, snd_data, sizeof( snd_data ) );
okano 4:2759b8e6d5ec 64 bridge.read_buffer( rcv_data, sizeof( rcv_data ) );
okano 7:df3611f05b77 65 data_check( rcv_data, DATA_LENGTH );
okano 0:45ec5ead6731 66 }
okano 0:45ec5ead6731 67 }
okano 4:2759b8e6d5ec 68
okano 4:2759b8e6d5ec 69 void data_check( char *data, int length )
okano 4:2759b8e6d5ec 70 {
okano 4:2759b8e6d5ec 71 for ( int i = 0; i < length; i++ ) {
okano 4:2759b8e6d5ec 72 if ( !(i % 16) )
okano 4:2759b8e6d5ec 73 printf( "\r\n %02X :", i );
okano 4:2759b8e6d5ec 74 printf( " %02X", data[ i ] );
okano 4:2759b8e6d5ec 75 }
okano 4:2759b8e6d5ec 76 }