Пример #1
0
void wireless_init() {
	CC2500_Init();
	
	GPIO_InitTypeDef GPIO_init_st;
	NVIC_InitTypeDef NVIC_init_st;
	EXTI_InitTypeDef EXTI_InitStructure;
	
	/* Enable SYSCFG clock */
  RCC_APB2PeriphClockCmd(RCC_APB2Periph_SYSCFG, ENABLE);
	
	//Configure GPIO pin 0 in input mode
	GPIO_init_st.GPIO_Mode = GPIO_Mode_IN;
	GPIO_init_st.GPIO_Pin = CC2500_SPI_INT_PIN;
	GPIO_init_st.GPIO_PuPd = GPIO_PuPd_DOWN;
	GPIO_init_st.GPIO_Speed = GPIO_High_Speed;
	GPIO_init_st.GPIO_OType = GPIO_OType_PP;
	GPIO_Init(CC2500_SPI_INT_GPIO_PORT, &GPIO_init_st);
	
	SYSCFG_EXTILineConfig(EXTI_PortSourceGPIOB, CC2500_SPI_INT_EXTI_PIN_SOURCE);
	EXTI_InitStructure.EXTI_Line = CC2500_SPI_INT_EXTI_LINE;
	EXTI_InitStructure.EXTI_Mode = EXTI_Mode_Interrupt;
	EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Rising;
	EXTI_InitStructure.EXTI_LineCmd = ENABLE;
	EXTI_Init(&EXTI_InitStructure);
	
	// configure NVIC
	NVIC_init_st.NVIC_IRQChannel = CC2500_SPI_INT_EXTI_IRQn;
	NVIC_init_st.NVIC_IRQChannelCmd = ENABLE;
	NVIC_init_st.NVIC_IRQChannelPreemptionPriority = 0x01;
	NVIC_init_st.NVIC_IRQChannelSubPriority = 0x01;
	NVIC_Init(&NVIC_init_st);
	
	NVIC_EnableIRQ(CC2500_SPI_INT_EXTI_IRQn);
}
/**  
  * @brief  Function that initializes receiver. 
  * @param  *receiver: pointer to Receiver structure.
  * @retval None  
  */
void init_receiver(struct Receiver *receiver) {
	receiver->state = 0;
	receiver->buffer_space = 0;
	
	CC2500_Init();
	CC2500_config_transmitter();
	goToTX(&(receiver->state), &(receiver->buffer_space));
	
	osMutexDef(receiverMutex);
	receiver->mutexID=osMutexCreate(osMutex(receiverMutex));
}
/*
	Initialize Wireless Chip
*/
uint8_t init_wireless(void) {	
    
    // Setup up CC2500 SPI
    CC2500_InitTypeDef CC2500_InitStruct;
    CC2500_Init(&CC2500_InitStruct);
	  
    // Send reset command
    CC2500_CommandProbe(CC2500_READBIT, CC2500_SRES);
    
    // Wait for CHIP_RDYn
    while (CC2500_CommandProbe(CC2500_READBIT, CC2500_SNOP) & 0x80); 
  
    // Configure the CC2500 registers 
    CC2500_SmartRF_Config();
    
    osDelay(1000);
  
    return CC2500_CommandProbe(CC2500_READBIT, CC2500_SNOP);
}
/**  
  * @brief  Function that initializes the transmitter.
  * @param  *transmitter: Pointer to a Transmitter structure.
	* @param  *tid_thread_transmitter: Pointer to the pushbutton thread control block.
  * @retval None  
  */
void init_transmitter(struct Transmitter *transmitter, osThreadId **tid_thread_transmitter) {
	transmitter->state = 0;
	transmitter->buffer_space = 0;
	
	uint32_t i;
	for (i=0; i<sizeof(transmitter->data)/sizeof(transmitter->data[0]); i++) {
		transmitter->data[i] = 0;
	}
	
	CC2500_Init();
	CC2500_config_transmitter();
	goToTX(&(transmitter->state), &(transmitter->buffer_space));
	
	osThreadDef(transmitterThread, osPriorityNormal, 1, 0);
	transmitter->threadID = osThreadCreate(osThread(transmitterThread), transmitter);
	
	osMutexDef(transmitterMutex);
	transmitter->mutexID=osMutexCreate(osMutex(transmitterMutex));
	
	*tid_thread_transmitter = &(transmitter->threadID);
}
Пример #5
0
int main() 
{
    
    __eds__ char temp;
    TRISBbits.TRISB13 = 0;
    LATBbits.LATB5 = 0;
    TRISBbits.TRISB5 = 0;

    CC2500_Session Session = CC2500_Init(ChipSelect,0xAA,1);
    
    char data[10] = {1,2,3,4,5,6,7,8,9,10};
    
    CC2500_ReadStatusRegister(Session,&temp,0);
    
    CC2500_TransmitSmallPacket(Session,data,10);
    
    while(1)
    {
        Nop();
    }
    
    return (EXIT_SUCCESS);
}
Пример #6
0
void initializeWireless() {
	//Initialize the transmitter
	CC2500_Init();
	
	GPIO_InitTypeDef GPIO_init_st;
	NVIC_InitTypeDef NVIC_init_st;
	EXTI_InitTypeDef EXTI_InitStructure;
	
	/* Enable SYSCFG clock */
  RCC_APB2PeriphClockCmd(RCC_APB2Periph_SYSCFG, ENABLE);
	
	//Configure GPIO pin 0 in input mode
	GPIO_init_st.GPIO_Mode = GPIO_Mode_IN;
	GPIO_init_st.GPIO_Pin = CC2500_SPI_INT_PIN;
	GPIO_init_st.GPIO_PuPd = GPIO_PuPd_DOWN;
	GPIO_init_st.GPIO_Speed = GPIO_High_Speed;
	GPIO_init_st.GPIO_OType = GPIO_OType_PP;
	GPIO_Init(CC2500_SPI_INT_GPIO_PORT, &GPIO_init_st);
	
	//Configure the EXTI Interrupt
	SYSCFG_EXTILineConfig(CC2500_SPI_INT_EXTI_PORT_SOURCE, CC2500_SPI_INT_EXTI_PIN_SOURCE);
	EXTI_InitStructure.EXTI_Line = CC2500_SPI_INT_EXTI_LINE;
	EXTI_InitStructure.EXTI_Mode = EXTI_Mode_Interrupt;
	EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Falling;
	EXTI_InitStructure.EXTI_LineCmd = ENABLE;
	EXTI_Init(&EXTI_InitStructure);
	
	//Configure the NVIC for the interrupt
	NVIC_init_st.NVIC_IRQChannel = CC2500_SPI_INT_EXTI_IRQn;
	NVIC_init_st.NVIC_IRQChannelCmd = ENABLE;
	NVIC_init_st.NVIC_IRQChannelPreemptionPriority = 0x01;
	NVIC_init_st.NVIC_IRQChannelSubPriority = 0x01;
	NVIC_Init(&NVIC_init_st);
	
	NVIC_EnableIRQ(CC2500_SPI_INT_EXTI_IRQn);
}