- //******************************************************************************
- // MSP430F552x Demo - USCI_B0 I2C Master TX single bytes to MSP430 Slave
- //
- // Description: This demo connects two MSP430's via the I2C bus. The master
- // transmits to the slave. This is the master code. It continuously
- // transmits 00h, 01h, ..., 0ffh and demonstrates how to implement an I2C
- // master transmitter sending a single byte using the USCI_B0 TX interrupt.
- // ACLK = n/a, MCLK = SMCLK = BRCLK = default DCO = ~1.045MHz
- //
- // ***to be used with "MSP430F55xx_uscib0_i2c_07.c" ***
- //
- // /|\ /|\
- // MSP430F5529 10k 10k MSP430F5529
- // slave | | master
- // ----------------- | | -----------------
- // -|XIN P3.0/UCB0SDA|<-|----+->|P3.0/UCB0SDA XIN|-
- // | | | | |
- // -|XOUT | | | XOUT|-
- // | P3.1/UCB0SCL|<-+------>|P3.1/UCB0SCL |
- // | | | |
- //
- // Bhargavi Nisarga
- // Texas Instruments Inc.
- // April 2009
- // Built with CCSv4 and IAR Embedded Workbench Version: 4.21
- //******************************************************************************
- #include <msp430.h>
- unsigned char TXData;
- unsigned char TXByteCtr;
- int main(void)
- {
- WDTCTL = WDTPW + WDTHOLD; // Stop WDT
- P3SEL |= BIT0 + BIT1; // Assign I2C pins to USCI_B0
- P3DIR |= BIT0 + BIT1;
- P3OUT |= BIT0 + BIT1;
-
- UCB0CTL1 |= UCSWRST; // Enable SW reset
- UCB0CTL0 = UCMST + UCMODE_3 + UCSYNC; // I2C Master, synchronous mode
- UCB0CTL1 = UCSSEL_2 + UCSWRST; // Use SMCLK, keep SW reset
- UCB0BR0 = 12; // fSCL = SMCLK/12 = ~100kHz
- UCB0BR1 = 0;
- UCB0I2CSA = 0x48; // Slave Address is 048h
- UCB0CTL1 &= ~UCSWRST; // Clear SW reset, resume operation
- //UCB0IE |= UCTXIE; // Enable TX interrupt
- TXData = 0xFF; // Holds TX data
- while (1)
- {
- TXByteCtr = 1; // Load TX byte counter
- while (UCB0CTL1 & UCTXSTP); // Ensure stop condition got sent
- UCB0CTL1 |= UCTR + UCTXSTT; // I2C TX, start condition
-
- //__bis_SR_register(LPM0_bits + GIE); // Enter LPM0 w/ interrupts
- //__no_operation(); // Remain in LPM0 until all data
- UCB0TXBUF = TXData; // is TX'd
- }
- }
|