/* p8_2.c: Using SPI to send A to Z characters via SPI * UCB0 is configured as SPI. Software controlled slave select. * * P1.5 UCB0CLK * P1.6 UCB0SIMO * P2.3 Slave Select * * Tested with Keil 5.20 and MSP432 Device Family Pack V2.2.0. */ #include "msp.h" void delayMs(int n); int main(void) { int c; EUSCI_B0->CTLW0 = 0x0001; /* disable UCB0 during config */ /* clock phase/polarity:11, MSB first, 8-bit, master, 3-pin SPI, synchronous mode, use SMCLK as clock source */ EUSCI_B0->CTLW0 = 0xE9C1; EUSCI_B0->BRW = 1; /* 3 MHz / 1 = 3 MHz */ EUSCI_B0->CTLW0 &= ~0x0001; /* enable UCB0 after config */ P1->SEL0 |= 0x60; /* P1.5, P1.6 for UCB0CLK, UCB0SIMO */ P1->SEL1 &= ~0x60; P2->DIR |= 8; /* P2.3 set as output for slave select */ P2->OUT |= 8; /* slave select idle high */ while(1) { for (c = 'A'; c <= 'Z'; c++) { P2->OUT &= ~8; /* assert slave select */ while(!(EUSCI_B0->IFG & 2)) ; /* wait for transmit buffer empty */ EUSCI_B0->TXBUF = c; /* write to SPI transmit buffer */ while(EUSCI_B0->STATW & 1) ; /* wait for transmit done */ P2->OUT |= 8; /* deassert slave select */ delayMs(10); } } } /* system clock at 3 MHz */ void delayMs(int n) { int i, j; for (j = 0; j < n; j++) for (i = 250; i > 0; i--); /* delay 1 ms */ }