STM32/STM32_USBtoUART 5

STM32로 USB to UART 모듈 만들기 5편(회로도,아트웍)

안녕하세요. 오늘은 회로도와 아트웍을 제작해보겠습니다.회로도는 아래와 같습니다.회로도 기준으로 블럭별로 알아보겠습니다.* LDO(Low Dropout Regulator)- MCU에 전원을 주는 회로입니다. USB로 5V 전원을 받아서 3.3V로 변환해서 MCU에게 공급합니다. 캐패시터 C3,C4는 전원 안정화 용도입니다.* USB CONNECTORUSB CDC 통신을위한 회로입니다. USB B 커넥터를 사용합니다. 특이한점은 D+라인에 Pullup핀을 GPIO로 연결했습니다. MCU가 GPIO를 제어함으로써 PC에게 USB연결 또는 해제를 알릴 수 있기 때문입니다. 여기서는 MCU가 RESET할때 알려주게됩니다.*CLOCKSTM32F103시리즈는 내부크리스탈(8MHz)로도 USB통신을위한 CLOCK(48..

STM32로 USB to UART 모듈 만들기 4편(FW-라인스테이트)

안녕하세요. 오늘은 Terminal 프로그램을 연결/미연결했을때 구분하는법을 알아보겠습니다.사용하는 Terminal 프로그램은 Teraterm입니다.연결 시 , 미연결 시 아래와 같이 커맨드가 옵니다.차이점을보면 세번째 바이트가 연결 시 0x03, 미연결 시 0x02입니다.두번째 바이트의 0x22는 LINE STATE를 의미합니다.세번째 바이트의 0번째비트는 DTR, 1번째 비트는 RTS를 의미합니다.이 중에서 DTR이 연결/미연결을 알 수 있는 비트입니다.STM32에서 이 신호는 3편 라인코딩때와 마찬가지로 CDC_Control_FS함수에서 구분이 가능합니다.이때 pubf는 USBD_SetupReqTypedef의 주소를 가지고있어서 req->wValue를 하면 세번째 바이트를 얻을 수 있습니다. ..

STM32로 USB to UART 모듈 만들기 3편(FW-라인코딩)

안녕하세요.저번시간에는 USB to UART 할때 시리얼 통신설정을 고정으로 사용을 했었는데, 설정을 가변적으로해서 통신할수있게 해보겠습니다.USB CDC에서 사용하는 용어인 라인코딩(Line Coding)이있는데 해당단어의 의미는 USB CDC에서 사용하는 시리얼통신설정값을 의미합니다. 라인코딩은 baudrate, data bits, stop bits, parity가 있습니다.시리얼 통신 프로그램에서 Connect를 누르면, 라인코딩이 STM32로 전달됩니다.실제로 Connect를 했을때 어떤값이 STM32에게 가는지 확인해보겠습니다.시리얼 통신 프로그램은 Teraterm을 사용했고 USB to UART는 2편에서 만들었던 FW를 사용했습니다.위의 데이터는 아래의 데이터시트에서 확인이 가능합니다.htt..

STM32로 USB to UART 모듈 만들기 2편(FW-기본통신)

안녕하세요.NUCLEO-F103RB보드를 사용하고 USB to UART 펌웨어를 만들어보겠습니다.구현해야 할 기능은 두 가지입니다.1. USB CDC 통신2. UART 통신PC랑은 USB CDC통신을하고 MCU랑은 UART 통신을 한다면 USB to UART가 됩니다.구체적으로 PC에서 데이터를 송신하는 경우와 MCU에서 데이터를 송신하는 경우 동작은 아래의 그림과 같습니다.1. PC에서 데이터를 송신하는 경우 : PC 터미널프로그램에서 데이터를 입력하게되면 STM32 에서 CDC 리시브 함수가 호출되고 받은 데이터 그대로 UART로 데이터를 송신하면 됩니다.2. MCU에서 데이터를 송신하는 경우 : MCU-A에서 데이터를 입력하게되면 STM32에서 UART 리시브함수(인터럽트방식)가 호출되고 CDC로 ..

STM32로 USB to UART 모듈 만들기 1편(기본 소개)

안녕하세요. 이번 프로젝트에서는 STM32를 이용해 USB to UART 모듈처럼 동작하는 기능을 구현해보겠습니다. 첫번째 글은 그에 대한 기본적인 소개입니다.일반적으로 USB to UART 모듈은 아래의 그림과 같은 구성으로 많이 사용합니다.printf같은 함수로 MCU의 디버깅을 위해 사용합니다.USB to UART MODULE은 PC와 USB인터페이스로 통신하고 MCU와는 UART인터페이스로 연결되어있습니다.PC에서는 해당 장치를 Virtual COM Port로 인식하게 되며, 이를 통해 터미널 프로그램으로 데이터를 주고받을 수 있습니다.USB인터페이스는 CDC 클래스를 사용하며 USB 표준에 정의된 시리얼 통신 클래스입니다.예를들어 Nucleo 보드를 USB케이블로 연결하면 Virtual COM ..