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); } }
///////////////////////////////////////////////////////////////////////////// //! 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; }