STM32W 시리즈는 두개의 STM32 MCU로 구성되어 있고 Core2에 무선 관련 바이너리 파일을 Write 할 수 있다. BLE 바이너리를 이용해서 BLE 통신 테스트를 해 보자
STM32WB55 Zigbee 테스트에서와 같이 BLE Wireless Coprocessor Binary 파일(stm32wb5x_BLE_Stack_full_fw.bin)을 다운로드 해야 한다.
ST에서 제공하는 STM32CubeIDE용 예제의 구조는 Zigbee예제와 비슷하게 \STM32_WPAN\APP 폴더에 있다. 각 어플리케이션 별로 코드를 작성해서 테스트 하면된다.
우선 간단한 BLE Custom 데이터 송수신 예제를 테스트 해 보자
void Custom_Switch_c_Send_Notification(void) /* Property Notification */
{
uint8_t updateflag = 0;
/* USER CODE BEGIN Switch_c_NS_1*/
if (Custom_App_Context.Switch_c_Notification_Status == TOGGLE_ON)
{
updateflag = 1;
if (Custom_App_Context.SW1_Status == 0)
{
Custom_App_Context.SW1_Status = 1;
NotifyCharData[0] = 0x00;
NotifyCharData[1] = 0x01;
}
else
{
Custom_App_Context.SW1_Status = 0;
NotifyCharData[0] = 0x00;
NotifyCharData[1] = 0x00;
}
APP_DBG_MSG("-- CUSTOM APPLICATION SERVER : INFORM CLIENT BUTTON 1 PUSHED \n");
}
else
{
APP_DBG_MSG("-- CUSTOM APPLICATION : CAN'T INFORM CLIENT - NOTIFICATION DISABLED\n");
}
/* USER CODE END Switch_c_NS_1*/
if (updateflag != 0)
{
Custom_STM_App_Update_Char(CUSTOM_STM_SWITCH_C, (uint8_t *)NotifyCharData);
}
/* USER CODE BEGIN Switch_c_NS_Last*/
/* USER CODE END Switch_c_NS_Last*/
return;
}
/* My_Heart_Rate */
void Custom_Hrs_m_Update_Char(void) /* Property Read */
{
uint8_t updateflag = 0;
/* USER CODE BEGIN Hrs_m_UC_1*/
/* USER CODE END Hrs_m_UC_1*/
if (updateflag != 0)
{
Custom_STM_App_Update_Char(CUSTOM_STM_HRS_M, (uint8_t *)UpdateCharData);
}
/* USER CODE BEGIN Hrs_m_UC_Last*/
/* USER CODE END Hrs_m_UC_Last*/
return;
}
void Custom_Hrs_m_Send_Notification(void) /* Property Notification */
{
uint8_t updateflag = 0;
/* USER CODE BEGIN Hrs_m_NS_1*/
/* USER CODE END Hrs_m_NS_1*/
if (updateflag != 0)
{
Custom_STM_App_Update_Char(CUSTOM_STM_HRS_M, (uint8_t *)NotifyCharData);
}
/* USER CODE BEGIN Hrs_m_NS_Last*/
/* USER CODE END Hrs_m_NS_Last*/
return;
}
프로그램 구동 후 nRF Connect 프로그램으로 확인해 보면 접속되는 것을 확인 할 수 있다.
ST에서도 비슷한 앱을 제공한다. ST BLE ToolBox로 접속하면 인식된다.
접속후 등록한 커스텀 서비스에 데이터를 읽고 쓸 수 있다.
반응형