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 14 03:00:41 2021 +0000
Revision:
4:2759b8e6d5ec
Parent:
2:6d65d24e55ed
Child:
6:741cdb9c5726
buffer write/read splitted

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 0:45ec5ead6731 32 int main()
okano 0:45ec5ead6731 33 {
okano 2:6d65d24e55ed 34 printf( "SC18IS606 Hello\r\n" );
okano 4:2759b8e6d5ec 35
okano 1:f0126d924ff8 36 int_line.mode( PullUp );
okano 1:f0126d924ff8 37 int_line.fall( &int_handler );
okano 4:2759b8e6d5ec 38 i2c.frequency( I2C_FREQUENCY );
okano 0:45ec5ead6731 39
okano 4:2759b8e6d5ec 40 char snd_data[ DATA_LENGTH ];
okano 4:2759b8e6d5ec 41 char rcv_data[ DATA_LENGTH ];
okano 0:45ec5ead6731 42
okano 4:2759b8e6d5ec 43 for ( int i = 0; i < DATA_LENGTH; i++ ) {
okano 4:2759b8e6d5ec 44 snd_data[ i ] = i;
okano 0:45ec5ead6731 45 }
okano 0:45ec5ead6731 46
okano 0:45ec5ead6731 47 while(1) {
okano 4:2759b8e6d5ec 48 bridge.transfer( SLAVE_SELECT_NUM, snd_data, sizeof( snd_data ) );
okano 0:45ec5ead6731 49
okano 0:45ec5ead6731 50 while ( !int_flag )
okano 0:45ec5ead6731 51 ;
okano 4:2759b8e6d5ec 52
okano 2:6d65d24e55ed 53 bridge.clear_interrupt();
okano 0:45ec5ead6731 54 int_flag = false;
okano 0:45ec5ead6731 55
okano 4:2759b8e6d5ec 56 bridge.read_buffer( rcv_data, sizeof( rcv_data ) );
okano 4:2759b8e6d5ec 57 // data_check( rcv_data, DATA_LENGTH );
okano 0:45ec5ead6731 58 }
okano 0:45ec5ead6731 59 }
okano 4:2759b8e6d5ec 60
okano 4:2759b8e6d5ec 61
okano 4:2759b8e6d5ec 62 void data_check( char *data, int length )
okano 4:2759b8e6d5ec 63 {
okano 4:2759b8e6d5ec 64 for ( int i = 0; i < length; i++ ) {
okano 4:2759b8e6d5ec 65 if ( !(i % 16) )
okano 4:2759b8e6d5ec 66 printf( "\r\n %02X :", i );
okano 4:2759b8e6d5ec 67 printf( " %02X", data[ i ] );
okano 4:2759b8e6d5ec 68 }
okano 4:2759b8e6d5ec 69
okano 4:2759b8e6d5ec 70 }