![](/media/cache/profiles/795c7a7a5ec6b460ec00c5841019b9e9.jpg.50x50_q85.jpg)
SC16IS750 TX sample
Diff: main.cpp
- Revision:
- 0:41dffa1b3405
- Child:
- 1:40c636cb6d09
diff -r 000000000000 -r 41dffa1b3405 main.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/main.cpp Tue Jul 17 08:48:07 2012 +0000 @@ -0,0 +1,102 @@ +#include "mbed.h" + +I2C i2c( p28, p27 ); + + +enum { + RHR = 0x00 << 3, + THR = 0x00 << 3, + IER = 0x01 << 3, + FCR = 0x02 << 3, + IIR = 0x02 << 3, + LCR = 0x03 << 3, + MCR = 0x04 << 3, + LSR = 0x05 << 3, + MSR = 0x06 << 3, + SPR = 0x07 << 3, + TCR = 0x06 << 3, + TLR = 0x07 << 3, + TXLVL = 0x08 << 3, + RXLVL = 0x09 << 3, + IODir = 0x0A << 3, + IOState = 0x0B << 3, + IOIntEna = 0x0C << 3, + reserved = 0x0D << 3, + IOControl = 0x0E << 3, + EFCR = 0x0F << 3, + DLL = 0x00 << 3, + DLH = 0x01 << 3, + EFR = 0x02 << 3, + XON1 = 0x04 << 3, + XON2 = 0x05 << 3, + XOFF1 = 0x06 << 3, + XOFF2 = 0x07 << 3, +}; + +#define ADDR 0x9A +char three[] = { 0x03, 0xBF }; +char data[] = { 0x0A, 0xBF }; + +#define N_OF_ACCESS 8 + +char init[ N_OF_ACCESS ][ 2 ] = { + { LCR, 0x80 }, +#ifdef BAUD_115200 + { DLL, 0x0C }, + { DLH, 0x00 }, +#else + { DLL, 0x60 }, // 9600 baud + { DLH, 0x00 }, +#endif + { LCR, 0xBF }, + { EFR, 0x10 }, + { LCR, 0x03 }, + { IER, 0x00 }, + { FCR, 0x07 }, +}; + +char *txt_data = "\x0NXP Semiconductors"; + +void init_registers( void ); +void register_write( char address, char data ); +char register_read( char address ); + +int main() { + char r; + + init_registers(); + +#ifdef SINGLE_TX_BUFFER_WRITES + txt_data++; + for ( int i = 0; i < 18; i++ ) + register_write( THR, *txt_data++ ); +#else + i2c.write( ADDR, txt_data, 19 ); +#endif + + while ( 1 ) + ; +} + +void init_registers( void ) { + for ( int i = 0; i < N_OF_ACCESS; i++ ) + i2c.write( ADDR, init[ i ], 2 ); +} + +void register_write( char address, char data ) { + char w[ 2 ]; + + w[ 0 ] = address; + w[ 1 ] = data; + + i2c.write( 0x9A, w, 2 ); +} + +char register_read( char address ) { + char r; + + i2c.write( 0x9A, &address, 1 ); + i2c.read( 0x9A, &r, 1 ); + + return ( r ); +}