SC16IS750 TX sample

Dependencies:   mbed SC16IS750

Committer:
okano
Date:
Tue Jul 17 08:48:07 2012 +0000
Revision:
0:41dffa1b3405
Child:
1:40c636cb6d09
SC16IS750 TX sample: 1st version

Who changed what in which revision?

UserRevisionLine numberNew contents of line
okano 0:41dffa1b3405 1 #include "mbed.h"
okano 0:41dffa1b3405 2
okano 0:41dffa1b3405 3 I2C i2c( p28, p27 );
okano 0:41dffa1b3405 4
okano 0:41dffa1b3405 5
okano 0:41dffa1b3405 6 enum {
okano 0:41dffa1b3405 7 RHR = 0x00 << 3,
okano 0:41dffa1b3405 8 THR = 0x00 << 3,
okano 0:41dffa1b3405 9 IER = 0x01 << 3,
okano 0:41dffa1b3405 10 FCR = 0x02 << 3,
okano 0:41dffa1b3405 11 IIR = 0x02 << 3,
okano 0:41dffa1b3405 12 LCR = 0x03 << 3,
okano 0:41dffa1b3405 13 MCR = 0x04 << 3,
okano 0:41dffa1b3405 14 LSR = 0x05 << 3,
okano 0:41dffa1b3405 15 MSR = 0x06 << 3,
okano 0:41dffa1b3405 16 SPR = 0x07 << 3,
okano 0:41dffa1b3405 17 TCR = 0x06 << 3,
okano 0:41dffa1b3405 18 TLR = 0x07 << 3,
okano 0:41dffa1b3405 19 TXLVL = 0x08 << 3,
okano 0:41dffa1b3405 20 RXLVL = 0x09 << 3,
okano 0:41dffa1b3405 21 IODir = 0x0A << 3,
okano 0:41dffa1b3405 22 IOState = 0x0B << 3,
okano 0:41dffa1b3405 23 IOIntEna = 0x0C << 3,
okano 0:41dffa1b3405 24 reserved = 0x0D << 3,
okano 0:41dffa1b3405 25 IOControl = 0x0E << 3,
okano 0:41dffa1b3405 26 EFCR = 0x0F << 3,
okano 0:41dffa1b3405 27 DLL = 0x00 << 3,
okano 0:41dffa1b3405 28 DLH = 0x01 << 3,
okano 0:41dffa1b3405 29 EFR = 0x02 << 3,
okano 0:41dffa1b3405 30 XON1 = 0x04 << 3,
okano 0:41dffa1b3405 31 XON2 = 0x05 << 3,
okano 0:41dffa1b3405 32 XOFF1 = 0x06 << 3,
okano 0:41dffa1b3405 33 XOFF2 = 0x07 << 3,
okano 0:41dffa1b3405 34 };
okano 0:41dffa1b3405 35
okano 0:41dffa1b3405 36 #define ADDR 0x9A
okano 0:41dffa1b3405 37 char three[] = { 0x03, 0xBF };
okano 0:41dffa1b3405 38 char data[] = { 0x0A, 0xBF };
okano 0:41dffa1b3405 39
okano 0:41dffa1b3405 40 #define N_OF_ACCESS 8
okano 0:41dffa1b3405 41
okano 0:41dffa1b3405 42 char init[ N_OF_ACCESS ][ 2 ] = {
okano 0:41dffa1b3405 43 { LCR, 0x80 },
okano 0:41dffa1b3405 44 #ifdef BAUD_115200
okano 0:41dffa1b3405 45 { DLL, 0x0C },
okano 0:41dffa1b3405 46 { DLH, 0x00 },
okano 0:41dffa1b3405 47 #else
okano 0:41dffa1b3405 48 { DLL, 0x60 }, // 9600 baud
okano 0:41dffa1b3405 49 { DLH, 0x00 },
okano 0:41dffa1b3405 50 #endif
okano 0:41dffa1b3405 51 { LCR, 0xBF },
okano 0:41dffa1b3405 52 { EFR, 0x10 },
okano 0:41dffa1b3405 53 { LCR, 0x03 },
okano 0:41dffa1b3405 54 { IER, 0x00 },
okano 0:41dffa1b3405 55 { FCR, 0x07 },
okano 0:41dffa1b3405 56 };
okano 0:41dffa1b3405 57
okano 0:41dffa1b3405 58 char *txt_data = "\x0NXP Semiconductors";
okano 0:41dffa1b3405 59
okano 0:41dffa1b3405 60 void init_registers( void );
okano 0:41dffa1b3405 61 void register_write( char address, char data );
okano 0:41dffa1b3405 62 char register_read( char address );
okano 0:41dffa1b3405 63
okano 0:41dffa1b3405 64 int main() {
okano 0:41dffa1b3405 65 char r;
okano 0:41dffa1b3405 66
okano 0:41dffa1b3405 67 init_registers();
okano 0:41dffa1b3405 68
okano 0:41dffa1b3405 69 #ifdef SINGLE_TX_BUFFER_WRITES
okano 0:41dffa1b3405 70 txt_data++;
okano 0:41dffa1b3405 71 for ( int i = 0; i < 18; i++ )
okano 0:41dffa1b3405 72 register_write( THR, *txt_data++ );
okano 0:41dffa1b3405 73 #else
okano 0:41dffa1b3405 74 i2c.write( ADDR, txt_data, 19 );
okano 0:41dffa1b3405 75 #endif
okano 0:41dffa1b3405 76
okano 0:41dffa1b3405 77 while ( 1 )
okano 0:41dffa1b3405 78 ;
okano 0:41dffa1b3405 79 }
okano 0:41dffa1b3405 80
okano 0:41dffa1b3405 81 void init_registers( void ) {
okano 0:41dffa1b3405 82 for ( int i = 0; i < N_OF_ACCESS; i++ )
okano 0:41dffa1b3405 83 i2c.write( ADDR, init[ i ], 2 );
okano 0:41dffa1b3405 84 }
okano 0:41dffa1b3405 85
okano 0:41dffa1b3405 86 void register_write( char address, char data ) {
okano 0:41dffa1b3405 87 char w[ 2 ];
okano 0:41dffa1b3405 88
okano 0:41dffa1b3405 89 w[ 0 ] = address;
okano 0:41dffa1b3405 90 w[ 1 ] = data;
okano 0:41dffa1b3405 91
okano 0:41dffa1b3405 92 i2c.write( 0x9A, w, 2 );
okano 0:41dffa1b3405 93 }
okano 0:41dffa1b3405 94
okano 0:41dffa1b3405 95 char register_read( char address ) {
okano 0:41dffa1b3405 96 char r;
okano 0:41dffa1b3405 97
okano 0:41dffa1b3405 98 i2c.write( 0x9A, &address, 1 );
okano 0:41dffa1b3405 99 i2c.read( 0x9A, &r, 1 );
okano 0:41dffa1b3405 100
okano 0:41dffa1b3405 101 return ( r );
okano 0:41dffa1b3405 102 }