Ejemplo n.º 1
0
void set_address(char *address, int address_size) {
	spi_csl();
	spi_send(NRF_WRITE | NRF_TX_ADDR);
	spi_send_buffer(address, address_size);
    spi_csh();
    spi_csl();
	spi_send(NRF_WRITE | NRF_RX_ADDR_P0);
	spi_send_buffer(address, address_size);
	spi_csh();
}
Ejemplo n.º 2
0
/*
 * SPI.c
 *
 *  Created on: Nov 22, 2012
 *      Author: Admin
 */
void SPI_Init(void)
{
	/**
	 * From TIs users manual
	 *
     * The recommended USCI initialization/re-configuration process is:
 	 * 1. Set UCSWRST (BIS.B #UCSWRST,&UCxCTL1)
 	 * 2. Initialize all USCI registers with UCSWRST=1 (including UCxCTL1)
 	 * 3. Configure ports
 	 * 4. Clear UCSWRST via software (BIC.B #UCSWRST,&UCxCTL1)
 	 * 5. Enable interrupts (optional) via UCxRXIE and/or UCxTXIE
 	 */

	// (1)
	UCB0CTL1 = UCSWRST;

	// (2)
	P1DIR  |= CE;
    P1DIR  |= CSN;
    P1OUT  |= CSN;
  	P1SEL  |= SOMI + SIMO + SCLK;
  	P1SEL2 |= SOMI + SIMO + SCLK;

    // (3) 3-pin, 8-bit SPI master
    UCB0CTL0 |= UCCKPH + UCMSB + UCMST + UCSYNC;
	UCB0CTL1 |= UCSSEL_2;   // SMCLK

	// (4)
	UCB0CTL1 &= ~UCSWRST;

	spi_csh();
}
Ejemplo n.º 3
0
char nrf_rx() {
	char tmp;
	spi_csl();
	spi_send(NRF_R_PAYLOAD);
	tmp = spi_send(NRF_NOOP);
	spi_csh();
	return tmp;
}
Ejemplo n.º 4
0
char nrf_read( char address ) {
	char tmp;
	spi_csl();
	spi_send(NRF_READ | address);
	tmp = spi_send(NRF_NOOP);
	spi_csh();
	return tmp;
}
Ejemplo n.º 5
0
/*
 * SPI.c
 *
 *  Created on: Nov 22, 2012
 *      Author: Admin
 */
void SPI_Init_For_RF(void)
{
	SPI_InitTypeDef  SPI_InitStructure;
	GPIO_InitTypeDef GPIO_InitStructure;

	/* Init CSN pin */
	GPIO_InitStructure.GPIO_Pin = CSN_PIN;
	GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
	GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
	GPIO_Init(CSN_PORT, &GPIO_InitStructure);
	
	/* Init CE pin */
	GPIO_InitStructure.GPIO_Pin = CE_PIN;
	GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
	GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
	GPIO_Init(CE_PORT, &GPIO_InitStructure);
	
	/* Init IRQ pin */
	GPIO_InitStructure.GPIO_Pin = IRQ_PIN;
	GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;
	GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
	GPIO_Init(IRQ_PORT, &GPIO_InitStructure);
	
	/* Enable SPI1 clocks */
	RCC_APB2PeriphClockCmd(RCC_APB2Periph_SPI1, ENABLE);

	/* Configure SPI1 pins: SCK, MISO and MOSI */
	GPIO_InitStructure.GPIO_Pin = SCLK_PIN | MISO_PIN | MOSI_PIN;
	GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
	GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;
	GPIO_Init(SCLK_PORT, &GPIO_InitStructure);

	/* SPI1 configuration */ 
	SPI_InitStructure.SPI_Direction = SPI_Direction_2Lines_FullDuplex;
	SPI_InitStructure.SPI_Mode = SPI_Mode_Master;
	SPI_InitStructure.SPI_DataSize = SPI_DataSize_8b;
	SPI_InitStructure.SPI_CPOL = SPI_CPOL_Low;
	SPI_InitStructure.SPI_CPHA = SPI_CPHA_1Edge;
	SPI_InitStructure.SPI_NSS = SPI_NSS_Soft;
	SPI_InitStructure.SPI_BaudRatePrescaler = SPI_BaudRatePrescaler_16;
	SPI_InitStructure.SPI_FirstBit = SPI_FirstBit_MSB;
	SPI_InitStructure.SPI_CRCPolynomial = 7;
	SPI_Init(SPI1, &SPI_InitStructure);

	/* Enable SPI1  */
	SPI_Cmd(SPI1, ENABLE); 

	spi_csh();
}
Ejemplo n.º 6
0
void nrf_tx(char data) {
	char tmp = nrf_read(NRF_FIFO_STATUS);
	if(tmp & NRF_STAT_TX_FULL) {
		return;
	}
	radio_on();
	spi_csl();
	spi_send(NRF_TX);
	spi_send(data);
	spi_csh();
	nrf_ceh();
	//start transmission (pulse CE > 10us)
	__delay_cycles(20);
	nrf_cel();
	__delay_cycles(1000);
	radio_off();
}
Ejemplo n.º 7
0
void draw_square()
{
   int count = 0;

   if(change_duty) {
      square_wave_init();
      change_duty = 0;
   }
   while(count < NUM_DIVISIONS) {
      if (timeCount > oldTimeCount) {
         oldTimeCount = timeCount;
         spi_csl();
         spi_xfer_byte((squareVals[count] | 0x1000) >> 8);
         spi_xfer_byte(squareVals[count++] & 0xFF);
         spi_csh();
      }
   }
Ejemplo n.º 8
0
void send_command(char command) {
	spi_csl();
	spi_send(command);
	spi_csh();
}
Ejemplo n.º 9
0
void nrf_write(char address, char data) {
	spi_csl();
	spi_send(NRF_WRITE | address);
    spi_send(data);
    spi_csh();
}