This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

Getting SCI peripheral working in SM470R1B1M-HT

I'm using a processor, says

SM470R1B1

MHFQS

THA

on the package.  It's in the IAR eval board, and I'm using the IAR tools to try to get it going.  I'm running into difficulty with the SCI port -- neither the transmit nor receive appear to be working, and I've tried various combinations.

The code that I'm using to set things up is below; this is basically what IAR supplies and what the data book for the SCI says to do.  The ICLK is set up in a separate piece of code that gets called before any of the various peripherals (all of which work fine) are set up.

But -- nothing works.  Coming out of reset SCI1CTL2 indicates that the transmitter is ready, and SCI1CTL1 indicates that the receiver is waiting for an IDLE, SCIPC2 and SCIPC3 indicate that the pins are at 1.  In spite of the receive pin being high the receiver does not come out of idle, and when I write a byte to the transmit buffer by hand the TXRDY and TX EMPTY bits in SCICTL2 go off and never come back on again.

It is acting for all the world like it isn't actually turned on -- yet it certainly seems like I've covered all my bases.

Suggestions?

      // Turn port off
      SCI1CTL3 &= ~SW_NRESET;  // and with 0x80
     
      // Turn on pins to the SCI
      SCI1PC2 |= RX_FUNC;  // or with 2
      SCI1PC3 |= TX_FUNC;  // or with 2
   
      // Set the baud rate to roughly 115200
      uint32_t brd = 32;
      SCI1HBAUD |= (brd >> 16) & 0xff;             // load divisor
      SCI1MBAUD |= (brd >>  8) & 0xff;             // in three
      SCI1LBAUD |= brd & 0xff;                     // pieces
   
      // no parity, one stop bit, word length = 8
      SCI1CCR   |= TIMING_MODE_ASYNC | CHAR_8;
     
      SCI1CTL1  |= RXENA;  // receiver on (once out of reset)
      SCI1CTL2  |= TXENA;  // transmit on (once out of reset)     

      // turn on, set up for internal clocking and all possible interrupts (0xbf)
      SCI1CTL3  |= RXERR_INT_ENA | BRKDT_INT_ENA | WAKEUP_INT_ENA |
                    TX_ACTION_ENA | RX_ACTION_ENA | CLOCK | SW_NRESET;