示例#1
0
/* Channel initialization function */
void SPI_CONFIG_0_lInit()
{
  /* Initialize USIC channel in SPI mode */
  XMC_SPI_CH_Init(XMC_SPI0_CH1, &SPI_CONFIG_0_channel_config);
  /* Set the frame and word length */
  XMC_SPI_CH_SetFrameLength(XMC_SPI0_CH1, 16U);
  XMC_SPI_CH_SetWordLength(XMC_SPI0_CH1, 16U);
  /* Set MSB data shift direction */
  XMC_SPI_CH_SetBitOrderMsbFirst(XMC_SPI0_CH1);
  /* Set input source for input stage dx0 (receive pin) */
  XMC_SPI_CH_SetInputSource(XMC_SPI0_CH1, XMC_SPI_CH_INPUT_DIN0, 0U);
  /* Set input source for input stage dx3 (receive pin) */
  XMC_SPI_CH_SetInputSource(XMC_SPI0_CH1, XMC_SPI_CH_INPUT_DIN1, 0U);
  /* Set input source for input stage dx4 (receive pin) */
  XMC_SPI_CH_SetInputSource(XMC_SPI0_CH1, XMC_SPI_CH_INPUT_DIN2, 0U);
  /* Set input source for input stage dx5 (receive pin) */
  XMC_SPI_CH_SetInputSource(XMC_SPI0_CH1, XMC_SPI_CH_INPUT_DIN3, 0U);
  /* Disable Frame End Mode */
  XMC_SPI_CH_DisableFEM(XMC_SPI0_CH1);
  /* Configure the clock polarity and clock delay */
  XMC_SPI_CH_ConfigureShiftClockOutput(XMC_SPI0_CH1, XMC_SPI_CH_BRG_SHIFT_CLOCK_PASSIVE_LEVEL_1_DELAY_ENABLED,
                                       XMC_SPI_CH_BRG_SHIFT_CLOCK_OUTPUT_SCLK);
  /* Disable all Slave Select lines */
  XMC_SPI_CH_DisableSlaveSelect(XMC_SPI0_CH1);
  /* Establish Slave Select signal polarity */
   XMC_SPI_CH_SetSlaveSelectPolarity(XMC_SPI0_CH1, XMC_SPI_CH_SLAVE_SEL_INV_TO_MSLS);
  /* Set Select Control */;
  XMC_SPI_CH_DisableSlaveSelectCodedMode(XMC_SPI0_CH1);
  /* Configure the leading/trailing delay for the MSLS signal */
  XMC_SPI_CH_SetSlaveSelectDelay(XMC_SPI0_CH1, 2U);
  /* Set the service request line for the Data Lost, Baud Rate Generator and SPI protocol events */
  XMC_USIC_CH_SetInterruptNodePointer(XMC_SPI0_CH1, XMC_USIC_CH_INTERRUPT_NODE_POINTER_PROTOCOL, 0U);
  /* Enable the Slave Select 0 Signal */
  XMC_SPI_CH_EnableSlaveSelect(XMC_SPI0_CH1, SPI_CONFIG_0_slave_select_list[0]);
}
示例#2
0
/*
 *  This routine writes to display controller using SPI bus, with A0 = 1
 *
 */
void GUI_SEGGERLIBRARY_WriteDataByte(uint8_t data)
{
#if (!USER_DEFINED_LCD && SPI_INTERFACE == 1)
    /* Set the A0 pin*/
  XMC_GPIO_SetOutputHigh(IOHandle.portNo,IOHandle.pinNo);
#endif

  XMC_SPI_CH_EnableSlaveSelect(SPI_INSTANCE.channel, SPI_INSTANCE.config->slave_select_pin_config[0]->slave_select_ch);

  GUI_SEGGERLIBRARY_SendByte(data);

  XMC_SPI_CH_DisableSlaveSelect(SPI_INSTANCE.channel);
}
示例#3
0
/*
 *  This routine writes to display controller using SPI bus, with A0 = 0
 *
 */
void GUI_SEGGERLIBRARY_WriteCmdByte(uint8_t cmd)
{
#if (!USER_DEFINED_LCD && SPI_INTERFACE == 1)
    /* Clear the A0 pin */
  XMC_GPIO_SetOutputLow(IOHandle.portNo,IOHandle.pinNo);
#endif

  XMC_SPI_CH_EnableSlaveSelect(SPI_INSTANCE.channel,SPI_INSTANCE.config->slave_select_pin_config[0]->slave_select_ch);

  /* Write to the SPI Bus */
  GUI_SEGGERLIBRARY_SendByte(cmd);

  XMC_SPI_CH_DisableSlaveSelect(SPI_INSTANCE.channel);
}
示例#4
0
/*
 *  This routine writes multiple bytes to display controller using SPI bus,
 *  with A0 = 1.
 *
 */
void GUI_SEGGERLIBRARY_WriteMultipleBytes(uint8_t *data, int numitems)
{
  uint8_t datacopy;

#if (!USER_DEFINED_LCD && SPI_INTERFACE == 1)
  /* Set the A0 pin*/
  XMC_GPIO_SetOutputHigh(IOHandle.portNo,IOHandle.pinNo);
#endif

  XMC_SPI_CH_EnableSlaveSelect(SPI_INSTANCE.channel, SPI_INSTANCE.config->slave_select_pin_config[0]->slave_select_ch);

  do
  {
    datacopy = *data;
    GUI_SEGGERLIBRARY_SendByte(datacopy);
	data++;
  }while(--numitems);

  XMC_SPI_CH_DisableSlaveSelect(SPI_INSTANCE.channel);
}