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' 카테고리의 다른 글

    nRF51422-QFAB(GPIO/ADC)  (0) 2018.11.01
    MPU-9250 Module  (2) 2016.12.12
    STM32F103VCT6 for MPU-9250 자이로 센서 StartUp  (0) 2016.09.26
    STM32 Clock - 클럭 소스와 클럭 설정  (0) 2016.09.23
    [STM32F103VCT6] USART/FT232RL  (0) 2016.09.21
상단으로