Exemplo n.º 1
0
void SPIClass::begin() {
	
	if(init_flag==0); //init();
	
	/* Unlock protected registers */
	SYS_UnlockReg();	

	/* Enable IP clock */       
	CLK_EnableModuleClock(SPI1_MODULE);    	
   	
	/* Select IP clock source and clock divider */
	CLK_SetModuleClock(SPI1_MODULE,CLK_CLKSEL1_SPI1_S_HCLK,MODULE_NoMsk);
	SYS->GPC_MFP |= SYS_GPC_MFP_PC11_SPI1_MOSI0;
	SYS->GPA_MFP |= SYS_GPA_MFPH_GPA10_MFP_SPI1_MISO0 | SYS_GPA_MFPH_GPA11_MFP_SPI1_CLK;
	SYS->ALT_MFP |= SYS_ALT_MFP_PC11_SPI1_MOSI0 | SYS_ALT_MFP_PA11_SPI1_CLK | SYS_ALT_MFP_PA10_SPI1_MISO0;

	/* Lock protected registers */
	SYS_LockReg();
			  
	/* Configure as a master, clock idle low, falling clock edge Tx, rising edge Rx and 8-bit transaction */
	/* Set IP clock divider. SPI clock rate = 12MHz */
	SPI_Open(spi, SPI_MASTER, SPI_MODE_0, 8, 6000000);
	//SPI_EnableFIFO(spi,2,2); //ouki
	setBitOrder(SS, MSBFIRST);
}
Exemplo n.º 2
0
SPIDaisyChain::SPIDaisyChain(const int pinCS, const int nDaisyChains)
{
	// default setting
	_pinCS			= (uint8_t)pinCS;
	_nDaisyChains	= (uint8_t)nDaisyChains;
	_bitOrder		= (uint8_t)MSBFIRST;
	_spiMode 		= (uint8_t)SPI_MODE3;


	readBytes = new byte[_nDaisyChains];

	// SPI settings
	pinMode(_pinCS, OUTPUT);
	digitalWrite(_pinCS, HIGH);
	SPIClass::begin();
	setBitOrder(_bitOrder);
	setDataMode(_spiMode);

	// select function for rise/fall CS
	if (_pinCS > 7) {
		_pinCS -= 8;
		fallCS = &SPIDaisyChain::fallCSPORTB;
		riseCS = &SPIDaisyChain::riseCSPORTB;
	} else {
		fallCS = &SPIDaisyChain::fallCSPORTD;
		riseCS = &SPIDaisyChain::riseCSPORTD;
	}
}
Exemplo n.º 3
0
Arquivo: spi.cpp Projeto: TMRh20/RF24
void SPI::beginTransaction(SPISettings settings) {

    pthread_mutex_lock (&spiMutex);
    setBitOrder(settings.border);
    setDataMode(settings.dmode);
    setClockDivider(settings.clck);
}
Exemplo n.º 4
0
void SPIClass::begin() {		
	
	if(init_flag==0) init();
	
	 /* Unlock protected registers */
	SYS_UnlockReg();	

	/* Enable IP clock */       
	CLK_EnableModuleClock(module);    	
   	
  /* Select IP clock source and clock divider */
	CLK_SetModuleClock(module,clksel,0);
	
	/* Lock protected registers */
	SYS_LockReg();
			  
	/* Configure as a master, clock idle low, falling clock edge Tx, rising edge Rx and 8-bit transaction */
  /* Set IP clock divider. SPI clock rate = 4MHz */  
  SPI_Open(spi, SPI_MASTER, SPI_MODE_0, 8, 4000000); 
#if defined(__NUC240__)	| defined(__NANO100__) | defined(__NUC131__)
  SPI_EnableFIFO(spi,12,12);
#endif
  setBitOrder(SS, MSBFIRST);  

#if defined(__M451__) 
  SPI_ClearRxFIFO(spi);
  SPI_TRIGGER(spi);
#endif

}
Exemplo n.º 5
0
void SPIClass::begin()
{
    init();
    // NPCS control is left to the user
    // Default speed set to 4Mhz
    setClockDivider(BOARD_SPI_DEFAULT_SS, 21);
    setDataMode(BOARD_SPI_DEFAULT_SS, SPI_MODE0);
    setBitOrder(BOARD_SPI_DEFAULT_SS, MSBFIRST);
}
Exemplo n.º 6
0
SPIClass::SPIClass(USART_TypeDef *_spi, uint32_t _id, CMU_Clock_TypeDef UartClk, const SPIPinSettings *_pinSettings) :
	spi(_spi), id(_id), pinSettings(_pinSettings), spi_clk(UartClk)
{
	
	setBitOrder(true);
	setDataMode(usartClockMode0);
	//setClockDivider(84);
	/*SPI_Configure(spi, id, SPI_MR_MSTR | SPI_MR_PS | SPI_MR_MODFDIS);
	SPI_Enable(spi);*/
}
Exemplo n.º 7
0
Arquivo: SPI.cpp Projeto: Eih3/v0.83
void SPIClass::begin() {
	initCb();
	SPI_Configure(spi, id, SPI_MR_MSTR | SPI_MR_PS | SPI_MR_MODFDIS);
	SPI_Enable(spi);

	// NPCS control is left to the user

	// Default speed set to 4Mhz
	setClockDivider(BOARD_SPI_DEFAULT_SS, 21);
	setDataMode(BOARD_SPI_DEFAULT_SS, SPI_MODE0);
	setBitOrder(BOARD_SPI_DEFAULT_SS, MSBFIRST);
}
Exemplo n.º 8
0
SSP1::SSP1()			//define constructor
{
	this->port = LPCXSSP1;
	bitOrder = LSBFIRST;
	divider = SPI_CLOCK_DIV4;	//Arduino's default
	dataMode = SPI_MODE0;
	bitlength = 8;
	setClockDivider(divider);
	setBitLength(bitlength);
	setBitOrder(LSBFIRST);
	begin();
}
Exemplo n.º 9
0
void SPIClass::begin(uint8_t _pin)
{
    init();
    uint32_t spiPin = BOARD_PIN_TO_SPI_PIN(_pin);
    PIO_Configure(
        g_APinDescription[spiPin].pPort,
        g_APinDescription[spiPin].ulPinType,
        g_APinDescription[spiPin].ulPin,
        g_APinDescription[spiPin].ulPinConfiguration);
    // Default speed set to 4Mhz
    setClockDivider(_pin, 21);
    setDataMode(_pin, SPI_MODE0);
    setBitOrder(_pin, MSBFIRST);
}
Exemplo n.º 10
0
void SPIClass::begin(uint16_t divider, uint8_t bitOrder, uint8_t dataMode)
{
  setClockDivider(divider);
  setBitOrder(bitOrder);
  setDataMode(dataMode);

  //Set CS pins polarity to low
  bcm2835_spi_setChipSelectPolarity(BCM2835_SPI_CS0, 0);

  bcm2835_spi_begin();

  //Initialize a timestamp for millis calculation
  gettimeofday(&RHStartTime, NULL);
}
Exemplo n.º 11
0
void SPIClass::beginTransaction(uint8_t pin, SPISettings settings)
{
        if(init_flag==0);// init();
	/* Configure as a master, clock idle low, falling clock edge Tx, rising edge Rx and 8-bit transaction */
	/* Set IP clock divider. SPI clock rate = 4MHz */  	
	SPI_Open(spi, SPI_MASTER, settings.datmode, 8, settings.clock);	
	//SPI_EnableFIFO(spi,12,12);	
	setBitOrder(SS, settings.border);

//#if defined(__M451__) | defined(__NANO100__)	
	SPI_ClearRxFIFO(spi);
	SPI_TRIGGER(spi);
//#endif
}
Exemplo n.º 12
0
void SPIClass::begin()
{
    pinMode(pinSCK, OUTPUT);
    pinMode(pinMOSI, OUTPUT);
    pinMode(pinMISO, INPUT);

    spi->PSELSCK = pinSCK;
    spi->PSELMOSI = pinMOSI;
    spi->PSELMISO = pinMISO;

	// Default speed set to 4Mhz
	setFrequency(4000);
	setDataMode(SPI_MODE0);
	setBitOrder(MSBFIRST);

    spi->EVENTS_READY = 0;

	spi->ENABLE = (SPI_ENABLE_ENABLE_Enabled << SPI_ENABLE_ENABLE_Pos);
}