개발/기술문의

LabVIEW/STM32 등 개발문의 -> jexe0716@gmail.com 으로 연락부탁드립니다.

반응형

STM32 11

TouchGFX | Swipecontainer

우리는 이미 Swipe 기능에 익숙하다. 요즘의 아이들에게 터치 기능이 없는 LCD을 주면 아마 우선 손으로 Click이나 Swipe 부터 해 볼 것이다. 이제는 Click과 함께 Swipe는 가장 기본적인 터치 스크린의 기능이라고 볼 수 있다. 예전에는 이 Swipe 기능을 구현하기가 어려웠다고 한다. 그러나 TouchGFX를 이용하면 몇 번의 클릭만으로도 동작을 구현할 수 있다. 오늘은 2개의 이미지를 선택할 수 있는 Swipe 기능을 구현해본다. 먼저 TouchGFX Designer 를 실행한다. 나는 STM32F429 Discovery 를 사용하였기에 APPLICATION TEMPLATE에서 해당 보드를 선택하였다. 저장 장소는 기본으로 두고 Applicaiton name은 Swipe로 작성한 뒤..

STM32/TouchGFX 2021.05.29

Eigen Library 와 Simple Kalman Filter

Kalman Filter 에 대해서 처음 공부하고 있었을 때쯤, LabVIEW를 이용하여 매트릭스 계산을 하면서 편하게 그래프 찍으며? 일했다. 근데, 이걸 STM32에 탑재하려고 하니 매트릭스 연산을 코딩해야 되는 상황이 발생했다. 한번쯤 들어본 것이 Eigen 라이브러리이다. 이번 기회에 한번 적용해보고자 찾아보니, Mbed에서 이미 훌륭하신 분이 라이브러리를 만들어서 배포해주셨다(Yogi KURODA). Eigen - Eigne Matrix Class Library | Mbed 단순한 Kalman을 만들면 Inverse, Transpose 동작을 확인할 수 있으니, 임의의 데이터를 감소시켜가면서 동작하게 코딩해봤다. 그리고 해당 데이터를 랩뷰에서 만든 것과 비교하니 오차없이 잘 동작한다. 1 2 3..

STM32/Mbed 2021.04.14

EtherCAT통신하기

Ethernet보다는 훨씬 빠른 속도가 요구되는 환경에서는 EtherCAT이 많이 사용되고 있다. 이 통신을 (Slave 역할로)STM32에서 사용하기 위한 방법을 인터넷을 검색해보면, (1)특정회사에서 만든 EtherCAT모듈을 탑재하거나 (2)RJ45 포트가 포함된 STM32보드로 직접 연결한다. (2)의 경우는 Master or Slave로 동작을 하는데 이부분은 EtherCAT 스택을 직접 짜서 넣은 것으로 보이는데, 이 부분에 대해서는 공부가 많이 필요할 것 같다. 오늘은 (1)의 경우에 대한 것을 소개하고자 한다. Esmacat 이라는 회사에서는 ROS에 관한 Master와 Slave의 다양한 솔루션을 제공한다. 이중에 EtherCAT Arduino Shield by Esmacat(EASE) ..

STM32/Mbed 2021.02.28

I2C 통신을 이용한 DAC 제어

HAL 함수를 통해 쉽게 I2C 통신을 할 수 있다. 나의 경우, 이상할 정도로 I2C를 쓰는 일은 없었다, 대부분 SPI나 UART... 작은 사이즈의 OLED 디스플레이나 EEPROM 정도로 기억한다. 인터넷을 찾아보면 대다수가 AT24C02 같은 메모리 예제가 많을 것이다. 오늘은 TI사의 8bit DAC IC인 DAC5571를 구동하는 예제를 작성해본다. CubeIDE를 실행시키고 I2C1를 선택하면 다음과 같은 Configuration이 나타난다. -Master Fearues는 MCU가 마스터 역할일 때의 설정. -Slave Features는 MCU가 슬레이브 역할 일 때의 설정. DAC5571의 데이터 시트를 확인 한뒤, 기본 설정인 Standard Mode로 선택했다. 그 이상 사실 I2C는..

STM32/HAL library 2021.01.14

TouchGFX 구조

TouchGFX 를 이용하면 꽤 훌륭한 그래픽을 구현할 수 있다. 그러나 아쉽게도 TouchGFX에 대한 국내 정보가 다른 GUI 정보보다 많지는 않다. 나 역시 인터넷을 통해서 기초 학습을 많이 하였고, 그래서 이번 기회에 간단한 수준의 기술 글을 작성해서 부족한 부분은 피드백받고 처음 시작하는 분들에게는 도움이 되는 등 공유하고자 한다. 먼저 ST에서는 TouchGFX UI 개발을 할 때 MVP(Model-View-Presenter) Design Pattern 가이드를 따르길 권장한다. 아래는 기술문서에서 간략한 글을 정리해 본 것이다. 기존의 CubeIDE를 통해 코드 생성을 해본 경험이 있다면 익숙할 것인데, TouchGFX 로 UI를 꾸미거나 기능을 설정하면 자동으로 코드가 생성된다. 코드는 크..

STM32/TouchGFX 2021.01.06

DMA를 이용한 UART 통신

STM32 에서는 DMA(Direct Memory Access)를 쉽게? 사용 할 수 있다. The DMA allows data transfers to take place in the background, without the intervention of the Cortex-Mx processor. During this operation, the main processor can execute other tasks and it is only interrupted when a whole data block is available for processing. DMA에 관련한 Application note는 아래 주소를 통해 상세하게 확인할 수 있다. Using the STM32F2, STM32F4 and S..

STM32/HAL library 2020.12.30

Mbed Studio X HAL Library

arm 사의 Mbed 를 사용하게 되면서 가장 먼저는 online IDE(web에서 코드 작성)를 사용했었다. 물론 코드 공유 및 PC 개발 환경 구축 등 장점을 가지고 있지만, 기존에 ST사에서 제공하는 HAL library 를 사용한 것이 익숙한 나에게는 Mbed 코드는 너무 아두이노?스러운 느낌이 있어서 불편했다. 정확하게는 코드는 내 맘대로 사용하기가 너무 어려웠다. 그리고 회로를 개발한 뒤에는 JTAG으로 컴파일을 하려다보니 online IDE가 ST link를 지원하지 않아서 문제가 발생했다. 이러한 이유로 뭔가 MbedOS 사용을 중단해야 되나 고민이 되었는데 그러나 OS를 써야할 경우가 분명 있을거라 MbedOS 역시 포기할 수는 없고, 찾아보니 Mbed Studio라는 offline ID..

STM32/Mbed 2020.11.03

Systick / HAL_SYSTICK_Callback() 사용

STM32를 사용할 때 가장 만족하는 기능 중 하나가 Systick 이다. Systick는 ARM Cortex-M에 지원하는 24bit Timer이다. 이녀석이 편리한 것은 CubeMX에서 내가 원하는 HCLK를 설정하면 알아서 Systick은 1ms 을 보장하는 세팅이 되어 있다. 그래서 일반 Timer와 달리, 이녀석을 통해 스케줄링을 설계한다. 아래의 글은 STM32F429ZI 에서 systick 사용하기 위한 예제이다. Systick동작을 사용하기 위해서는 다음과 같은 코드 작성이 필요하다. Core폴더-Src폴더-stm32f4xx_it.c 에 있는 void SysTick_Handler (void) 를 찾는다. 주석 /* USER CODE BEGIN SysTick_IRQn 1 */ 아래에 HAL_..

STM32/HAL library 2020.10.01

BufferedSerial 과 Ticker

Mbed 를 이용하여 UART 통신을 할 때 BufferedSerial 을 사용하면 쉽게 여러 데이터를 전송할 수 있다. 사용방법은 기존의 Serial과 동일하다. for 문에 serial.putc(); 로 날렸었다면 BufferedSerial은 아래처럼 serial.write(buffer, num); 로 쉽게 보낼 수 있다. (Cube HAL library에서는 그렇게 쉬운 것이 Mbed에서는 오히려 어려운 경우의 예이다...) 그리고 이전에 HAL에서 Systick Callback 함수를 사용하여 원하는 시간에 동작을 하였다면, Mbed에서는 Ticker라는 것으로 쉽게 동작할 수 있다. tick.attach(func(), time); 으로 원하는 시간에 함수가 동작한다. 반대로 tick.detach..

STM32/Mbed 2020.09.19

STM32 ARM에서 ROS와 연동하기(2, subscriber)

STM32 ARM에서 ROS와 연동하기(1, publisher) 에 이어서, Master PC로부터 메시지를 받아 동작하는 코드를 구현해본다. Master PC에서 servo motor의 position 값을 메세지로 날려주면, microcontroller에서 메세지를 읽고 servo motor의 위치를 조절한다. 먼저, 지난 번과 동일하게 ros_lib_kinetic를 사용하며 추가로 servo 라이브러리를 받았다. 그리고 메세지의 데이터 타입은 float형을 사용한다. publisher와 달리 subscriber는 callback 함수를 만들어서 사용한다는 차이가 있다. 메세지를 받아서 그에 맞게 적절한 행동을 취할 수 있게 된다. 전체 코드는 아래와 같다. [ Code ] 12345678910111..

STM32/Mbed 2020.09.13
반응형