Beispiel #1
0
static void TASK_SPI_Handler(void *pvParameters)
{
  portTickType xLastExecutionTime;

  // Initialise the xLastExecutionTime variable on task entry
  xLastExecutionTime = xTaskGetTickCount();

  // fill Tx Buffer with housenumbers
  {
    int i;
    for(i=0; i<TRANSFER_BUFFER_SIZE; ++i)
      tx_buffer[i] = i;
  }

  while( 1 ) {
    // wait for 100 mS
    vTaskDelayUntil(&xLastExecutionTime, 100 / portTICK_RATE_MS);

    // toggle Status LED to as a sign of live
    MIOS32_BOARD_LED_Set(1, ~MIOS32_BOARD_LED_Get());

    // activate CS pin
    MIOS32_SPI_RC_PinSet(MASTER_SPI, MASTER_CS_PIN, 0); // spi, rc_pin, pin_value

    // send data non-blocking
    MIOS32_SPI_TransferBlock(MASTER_SPI, tx_buffer, rx_buffer, TRANSFER_BUFFER_SIZE, SPI_Callback);
  }
}
Beispiel #2
0
/////////////////////////////////////////////////////////////////////////////
//! writes several sequential bytes to the ENC28J60 RAM. It performs faster 
//! than multiple MIOS32_ENC28J60_MACPut() calls.
//!
//! EWRPT is incremented by len.
//! \param[in] buffer source buffer
//! \param[in] len number of bytes which should be written
//! \return < 0 on errors
/////////////////////////////////////////////////////////////////////////////
s32 MIOS32_ENC28J60_MACPutArray(u8 *buffer, u16 len)
{
  s32 status = 0;

  CSN_0;
  status |= MIOS32_SPI_TransferByte(MIOS32_ENC28J60_SPI, WBM);
  status |= MIOS32_SPI_TransferBlock(MIOS32_ENC28J60_SPI, buffer, NULL, len, NULL);
  CSN_1;

  return status;
}