Microprocessor/STM32 PLM-100 RF Module
  • 728x90
    반응형

     

     

    PLNetworks PLM100 Hardware Datasheet v1.0.pdf
    다운로드
    PLNetworks_PLM100_Configuration_Guide_V1.0.pdf
    다운로드
    PLNetworks_PLM100_User_Guide_V1.4.pdf
    다운로드

     

     

     

    [RF 통신 모듈] PLM100

     

     

     

    PLM-100 Module 에는 두채널의 UART(UART0, UART1) 통신을 지원한다.

    Console을 사용하여 환경설정 및 데이터 송/수신을 할 수 있는 채널은 UART1 이다. (위의 자료는 수정이 필요)

     

     

     

    데이터 송/수신

     

    아래 User Guide 13page 와 같이 AT+ 명령을 통하여 데이터를 송신 하며 수신된 결과 값을 Console 에서 확인 할 수 있다.

     

     

     

     

    PLM-100 Module Test

    Test 구성은 PLM-100 모듈과 STM32F101C8T6 의 PA10(USART1 RXD), PA9(USART1 TXD) 핀과 PLM-100 pin 20(USART1 RXD), pin 19(USART1 TXD)에 연결하여 진행하였다.

     

    컴파일러는 Keil uVsion5 으로 CubeMx 없이 hal 라이브러리를 사용하지 않고 코딩하였다.

    (Slave 의 EUI 는 00:01:93 이다.)

     

    
                    
    #include "stm32f10x.h"
    volatile unsigned int msTicks;
    void LED_Init(void);
    void UART_Init(void);
    void Delay(unsigned int dlyTicks);
    void SysTick_Handler(void) {
    msTicks++;
    }
    int main(void)
    {
    unsigned char data[] = "AT+DATA=000193:HELLO\r";
    int i = 0;
    LED_Init();
    UART_Init();
    SystemCoreClockUpdate();
    SysTick_Config(SystemCoreClock / 10000);
    GPIO_WriteBit(GPIOB, GPIO_Pin_12, Bit_SET);
    while (1) {
    Delay(10000);
    for (i = 0; i < sizeof(data)-1; i++) {
    USART_SendData(USART1, data[i]);
    Delay(50);
    }
    }
    }
    void LED_Init(void)
    {
    GPIO_InitTypeDef PORTB;
    RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE);
    PORTB.GPIO_Pin = GPIO_Pin_12;
    PORTB.GPIO_Speed = GPIO_Speed_50MHz;
    PORTB.GPIO_Mode = GPIO_Mode_Out_PP;
    GPIO_Init(GPIOB, &PORTB);
    }
    void UART_Init(void)
    {
    GPIO_InitTypeDef PORTA;
    USART_InitTypeDef USART1_struct;
    RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1 |
    RCC_APB2Periph_GPIOA |
    RCC_APB2Periph_AFIO, ENABLE);
    PORTA.GPIO_Pin = GPIO_Pin_9 | GPIO_Pin_10;
    PORTA.GPIO_Speed = GPIO_Speed_50MHz;
    PORTA.GPIO_Mode = GPIO_Mode_AF_PP;
    GPIO_Init(GPIOA, &PORTA);
    USART_Cmd(USART1, ENABLE);
    USART1_struct.USART_BaudRate = 115200;
    USART1_struct.USART_WordLength = USART_WordLength_8b;
    USART1_struct.USART_Parity = USART_Parity_No;
    USART1_struct.USART_StopBits = USART_StopBits_1;
    USART1_struct.USART_Mode = USART_Mode_Rx | USART_Mode_Tx;
    USART1_struct.USART_HardwareFlowControl = USART_HardwareFlowControl_None;
    USART_Init(USART1, &USART1_struct);
    USART_ITConfig(USART1, USART_IT_RXNE, ENABLE);
    NVIC_EnableIRQ(USART1_IRQn);
    }
    void USART1_IRQHandler(void)
    {
    if (USART_GetITStatus(USART1, USART_IT_RXNE) != RESET) {
    if (USART_ReceiveData(USART1) != 0) {
    GPIO_WriteBit(GPIOB, GPIO_Pin_12, Bit_RESET);
    while (USART_GetFlagStatus(USART1, USART_FLAG_TXE) == RESET);
    }
    }
    }
    void Delay(unsigned int dlyTicks)
    {
    unsigned int curTicks;
    curTicks = msTicks;
    while ((msTicks - curTicks) < dlyTicks) {
    __NOP();
    }
    }

     

     

    [TEST 결과]

     

     

     

     

     

     

    728x90
    반응형

    'Microprocessor > STM32' 카테고리의 다른 글

상단으로