示例#1
0
文件: spi.c 项目: basilfx/EFM2Riot
int spi_transfer_byte(spi_t dev, char out, char *in)
{
    if (in != NULL) {
        (*in) = USART_SpiTransfer(spi_config[dev].dev, out);
    }
    else {
        USART_SpiTransfer(spi_config[dev].dev, out);
    }

    return 0;
}
示例#2
0
/**************************************************************************//**
 * @brief
 *  Do one SPI transfer.
 *
 * @param data
 *  Byte to transmit.
 *
 * @return
 *  Byte received.
 *****************************************************************************/
uint8_t MICROSD_XferSpi(uint8_t data)
{
    if ( timeOut )
        timeOut--;

    return USART_SpiTransfer(MICROSD_USART, data);
}
示例#3
0
/*==============================================================================
  hal_spiRead()
 =============================================================================*/
uint8_t hal_spiRead(uint8_t * p_reg, uint16_t i_length)
{
    //SPIDRV_MReceiveB( s_hal_spi.pHndl, p_reg, i_length );
    for( int i = 0; i < i_length; i++ )
        p_reg[i] = USART_SpiTransfer( s_hal_spi.pHndl->initData.port, 0 );
    return *p_reg;
} /* hal_spiRead() */
// *****************************************************************************
// @fn          spi_byte
// @brief       Write a byte through SPI
// @param       unsigned char data      Byte to send
// @return      unsigned char           Recieved byte
// *****************************************************************************
unsigned char spi_byte(unsigned char data)
{
#ifdef SPI_USE_DMA
    unsigned char receive = NULL;
    spiDmaTransfer( (uint8_t*) &data, (uint8_t*) &receive, 1 );
    sleepUntilDmaDone();
    return receive;
#else
    return USART_SpiTransfer( SPI_CHANNEL, data );
#endif
}
示例#5
0
byte SPIClass::transfer(byte _pin, uint8_t _data, SPITransferMode _mode) {

	//SERIAL.print(":w:");
	//DEBUGPRINTLN(_data);
	/*while (!(spi->STATUS & USART_STATUS_TXBL));
	
	spi->TXDATA = (uint32_t)_data;


	
	while (!((spi->STATUS & USART_STATUS_RXDATAV) == USART_STATUS_RXDATAV)); 
	
	uint32_t d = spi->RXDATA; */
	uint8_t out =0;

	out = USART_SpiTransfer(spi, _data);

	/*SERIAL.print("data:");
	DEBUGPRINTLN(_data);*/
	/*uint8_t out = 0;
	for(int i = 0; i < 8; i++)
	{
		digitalWrite(PIN_SPI_MOSI, ((_data >> (7-i)) & 0x01));
		//delayMicroseconds(1);
		digitalWrite(PIN_SPI_SCK, HIGH);
		//delayMicroseconds(1);
		digitalWrite(PIN_SPI_SCK, LOW);
		out = (digitalRead(PIN_SPI_MISO) << (7-i)) | out;
	}*/
	
	
	/*SERIAL.print("read:");
	DEBUGPRINTLN(out);*/
	
    return out & 0xFF;
}
示例#6
0
/*==============================================================================
  hal_spiWrite()
 =============================================================================*/
void hal_spiWrite(uint8_t * c_value, uint16_t i_length)
{
    //SPIDRV_MTransmitB( s_hal_spi.pHndl, c_value, i_length );
    for( int i = 0; i < i_length; i++ )
        USART_SpiTransfer( s_hal_spi.pHndl->initData.port, c_value[i] );
} /* hal_spiWrite() */
示例#7
0
/*---------------------------------------------------------------------------*/
uint8_t spi2_readwrite(uint8_t data)
{
  return USART_SpiTransfer(USART2, data);
}