Example #1
0
/**
 * @brief Initializes the OLED display.
 * @retval None
 */
void Blox_OLED_Init(void) {
  uint8_t garbage;
  OLED_RCC_Configuration();
  OLED_GPIO_Configuration();
  SysTick_Init();
  Blox_VUSART_Init(OLED_USART_ID);

  OLED_Reset();
  SysTick_Wait(2000);
  Blox_VUSART_TryReceive(2, &garbage);  //receive any garbage data
  Blox_OLED_Send(OLED_AUTOBAUD); 
  Blox_OLED_Receive();
}
Example #2
0
/**
 * @brief Initializes the XBees sleep and reset pins, and then resets the XBee.
 * @retval None
 */
XBEE_STATUS Blox_XBee_Init(void) {
  uint8_t garbage;
  XBee_RCC_Configuration();
  XBee_GPIO_Configuration();

  Blox_System_Init();
  SysTick_Init();

  XBEE_SLEEP_GPIO->ODR &= ~(XBEE_SLEEP_PIN);
  XBEE_RESET_GPIO->ODR |= XBEE_RESET_PIN;
  SysTick_Wait(1);
  XBEE_RESET_GPIO->ODR &= ~(XBEE_RESET_PIN);
  SysTick_Wait(1);
  XBEE_RESET_GPIO->ODR |= XBEE_RESET_PIN;
  SysTick_Wait(300);

  Blox_VUSART_Init(XBEE_VUSART_ID);
  Blox_VUSART_TryReceive(XBEE_VUSART_ID, &garbage);   //clear VUSART buffer before send/receive
  Blox_VUSART_Disable_RXNE_IRQ(XBEE_VUSART_ID);
  Blox_VUSART_Register_RXNE_IRQ(XBEE_VUSART_ID, &Blox_XBee_VUSART_RXNE_IRQ);
  Blox_VUSART_Enable_RXNE_IRQ(XBEE_VUSART_ID);

  return XBEE_OK;
}
Example #3
0
/**
 * @brief Configures the XBee and writes the configuration to non-volatile mem.
 * @retval XBEE_OK if successfull, XBEE_INIT_FAIL on failure.
 */
XBEE_STATUS Blox_XBee_Config(void) {
  char buffer[10];
  uint8_t garbage;
  SysVar sys;
  XBee_RCC_Configuration();
  XBee_GPIO_Configuration();
  
  Blox_VUSART_Init(XBEE_VUSART_ID);
  SysTick_Init();
  Blox_System_Init();
  Blox_System_GetVars(&sys);
  
  XBEE_SLEEP_GPIO->ODR &= ~(XBEE_SLEEP_PIN);
  XBEE_RESET_GPIO->ODR |= XBEE_RESET_PIN;
  SysTick_Wait(1);
  XBEE_RESET_GPIO->ODR &= ~(XBEE_RESET_PIN);
  SysTick_Wait(1);
  XBEE_RESET_GPIO->ODR |= XBEE_RESET_PIN;
  SysTick_Wait(1100);

  Blox_VUSART_TryReceive(XBEE_VUSART_ID, &garbage);   //clear VUSART buffer before send/receive
  Blox_VUSART_Send(XBEE_VUSART_ID, 'X');           // Junk character to before init
  SysTick_Wait(1100);
  Blox_VUSART_SendData(XBEE_VUSART_ID, "+++", 3) ; //Enter Command Mode
  if (XBee_CheckOkResponse() == FALSE)
    return XBEE_INIT_FAIL;
  SysTick_Wait(1100);
  
  sprintf(buffer, "ATMY%d\r", sys.id);
  Blox_VUSART_SendData(XBEE_VUSART_ID, (uint8_t *)buffer, strlen(buffer)) ; //Enter Command Mode
  if (XBee_CheckOkResponse() == FALSE)
    return XBEE_INIT_FAIL;
  SysTick_Wait(20);  
  
  Blox_VUSART_SendData(XBEE_VUSART_ID, "ATDLFFFF\r", 9) ; //Set broadcast dest ID
  if (XBee_CheckOkResponse() == FALSE)
    return XBEE_INIT_FAIL;
  SysTick_Wait(20);    
  
  Blox_VUSART_SendData(XBEE_VUSART_ID, "ATDH0\r", 6) ; //Set high of dest ID
  if (XBee_CheckOkResponse() == FALSE)
    return XBEE_INIT_FAIL;
  SysTick_Wait(20);
  
  Blox_VUSART_SendData(XBEE_VUSART_ID, "ATAP1\r", 6) ; //API Mode 1 (no escapes)
  if (XBee_CheckOkResponse() == FALSE)
    return XBEE_INIT_FAIL;
  SysTick_Wait(20);
  
  Blox_VUSART_SendData(XBEE_VUSART_ID, "ATRN1\r", 6) ; //API Mode 1 (no escapes)
  if (XBee_CheckOkResponse() == FALSE)
    return XBEE_INIT_FAIL;
  SysTick_Wait(20);
  
  Blox_VUSART_SendData(XBEE_VUSART_ID, "ATWR\r", 9) ; //Write to non-volatile memory
  if (XBee_CheckOkResponse() == FALSE)
    return XBEE_INIT_FAIL;
  SysTick_Wait(20);
  
  Blox_VUSART_SendData(XBEE_VUSART_ID, "ATCN\r", 5) ; //Exit command mode
  if (XBee_CheckOkResponse() == FALSE)
    return XBEE_INIT_FAIL;
  SysTick_Wait(20);
  
  return XBEE_OK;
}