I am trying to use USCI_B0in SPI mode but when I probe the MOSI line with a scope I do not see anything. I can see that what I am sending is in the TX buffer in the watch window. My code is below, any help would be very welcomed.
Thanks
Kas
int initSPI(void)
{
P1SEL = BIT5 + BIT6 + BIT7; // Configure SPI on USCI0 port B
P1SEL2 = BIT5 + BIT6 + BIT7; // Configure SPI on USCI0 port B
UCB0CTL1 |= UCSWRST; // Disable USCI
UCB0CTL0 |= UCCKPH + UCMSB + UCMST + UCSYNC; // 3-pin, 8-bit SPI master
UCB0CTL1 |= UCSSEL_2 + UCSWRST; // SMCLK
UCB0BR0 |= 0x02; // /2
UCB0BR1 = 0; //
UCA0MCTL = 0; // No modulation
UCB0CTL1 &= ~UCSWRST; //LOOK here for issues // Initialise USCI state machine
IE2 |= UCB0RXIE; // Enable USCI0 RX interrupt
P1DIR |= 0x08; // Set as CS for SPI
P1OUT |= 0x08; // Set high to deselect IC
return 0;
}
void spiWrite(unsigned char wrAddr, unsigned char wrData)
{
P1OUT &= ~0x08; // Set CS;
// Set the TX buffer for each byte, then go to LPM0 while waiting for the TX to complete
UCB0TXBUF = WRITEINST;
_BIS_SR(LPM0_bits + GIE); // Enter LPM0 w/interrupt
UCB0TXBUF = wrAddr;
_BIS_SR(LPM0_bits + GIE); // Enter LPM0 w/interrupt
UCB0TXBUF = wrData;
_BIS_SR(LPM0_bits + GIE); // Enter LPM0 w/interrupt
P1OUT |= 0x08; // release CS
return;
}