AnsweredAssumed Answered

LPC11U68 SPI always reads 0

Question asked by Nicholas Hunn on Aug 16, 2018
Latest reply on Aug 23, 2018 by Alexis Andalon

Hi, I'm trying to get the SSP controller working on an LPC11U68 with a  Microchip MCP25625 CAN controller.

 

The problem I'm having is that when reading, I always read 0. I have checked with my scope and the correct exchange is occurring (I should read 0x98) and I can write fine. When I place it in loopback mode, I get what I put back. I added some screenshots to show my hardware settings just after the transfer. Pin 1_21 is the one I'm using as my MISO input, I've also attached a screenshot of the settings for 0-22 to show that it isn't set to for MISO.

 

This is my rw write code using the LPCOpen libraries:

 

uint8_t readWriteSpi1(uint8_t* read, uint8_t* write, uint32_t len){
   xf_setup.length = len;
   xf_setup.tx_data = write;
   xf_setup.rx_data = read;
   xf_setup.rx_cnt = xf_setup.tx_cnt = 0;

   Chip_SSP_Int_FlushData(LPC_SSP1);
   Chip_SSP_Int_RWFrames8Bits(LPC_SSP1, &xf_setup);
   Chip_SSP_Int_Enable(LPC_SSP1);

   return 0;
}

 

void SSP1_IRQHandler(void){
   Chip_SSP_Int_Disable(LPC_SSP1);

   Chip_SSP_Int_RWFrames8Bits(LPC_SSP1, &xf_setup);

   if ((xf_setup.rx_cnt != xf_setup.length) || (xf_setup.tx_cnt != xf_setup.length)) {
      Chip_SSP_Int_Enable(LPC_SSP1);
   }
   else {
      transferInProgress=0;
   }
}

 

What have I done wrong?

Outcomes