ST X - 로고UM2225
사용자 설명서

STM1Cube용 X-CUBE-MEMS32 확장에서 MotionEC 실시간 E-Compass 라이브러리 시작하기

소개

MotionEC는 X-CUBE-MEMS1 소프트웨어의 미들웨어 라이브러리 구성 요소이며 STM3z2에서 실행됩니다. 장치의 데이터를 기반으로 장치 방향 및 이동 상태에 대한 실시간 정보를 제공합니다.
다음과 같은 출력을 제공합니다: 장치 방향(사원수, 오일러 각), 장치 회전(가상 자이로스코프 기능), 중력 벡터 및 선형 가속도.
이 라이브러리는 ST MEMS에서만 작동하도록 고안되었습니다.
이 알고리즘은 정적 라이브러리 형식으로 제공되며 ARM® Cortex®-M32+, ARM® Cortex®-M0, ARM® Cortex®-M3, ARM® Cortex®-M33 및 ARM® Cortex®-M4 아키텍처를 기반으로 하는 STM7 마이크로컨트롤러에서 사용되도록 설계되었습니다.
STM32Cube 소프트웨어 기술을 기반으로 구축되어 다양한 STM32 마이크로컨트롤러 간의 이식성을 용이하게 합니다.
소프트웨어는 s와 함께 제공됩니다.ampNUCLEO-F01RE, NUCLEO-U3ZI-Q, NUCLEO-L4RE 또는 NUCLEO-L1RZ 개발 보드의 X-NUCLEO-IKS02A1, X-NUCLEO-IKS401A575 또는 X-NUCLEO-IKS152A073 확장 보드에서 실행되는 구현입니다.

두문자어 및 약어

표 1. 약어 목록

두문자어 설명
API 애플리케이션 프로그래밍 인터페이스
비에스피(BSP) 보드 지원 패키지
그래픽 사용자 인터페이스(GUI) 그래픽 사용자 인터페이스
하드웨어 추상화 계층
IDE 통합 개발 환경

STM1Cube용 X-CUBE-MEMS32 소프트웨어 확장의 MotionEC 미들웨어 라이브러리

2.1 MotionEC 이상view
MotionEC 라이브러리는 X-CUBE-MEMS1 소프트웨어의 기능을 확장합니다.
라이브러리는 가속도계와 자력계로부터 데이터를 수집하고, 장치의 데이터를 기반으로 장치의 방향과 이동 상태에 대한 정보를 제공합니다.
라이브러리는 ST MEMS 전용으로 설계되었습니다. 다른 MEMS 센서를 사용할 때의 기능과 성능은 분석되지 않으며 문서에 설명된 내용과 크게 다를 수 있습니다.
처럼amp이 구현은 NUCLEO-F01RE, NUCLEO-U3ZI-Q, NUCLEO-L4RE 또는 NUCLEO-L1RZ 개발 보드에 장착된 X-NUCLEO-IKS02A1, X-NUCLEO-IKS401A575 및 X-NUCLEO-IKS152A073 확장 보드에서 사용할 수 있습니다.
2.2 MotionEC 라이브러리
MotionEC API의 기능과 매개변수를 완전히 설명하는 기술 정보는 MotionEC_Package.chm 컴파일된 HTML에서 찾을 수 있습니다. file Documentation 폴더에 있습니다.

2.2.1 MotionEC 라이브러리 설명
MotionEC E-Compass 라이브러리는 가속도계와 자력계에서 수집된 데이터를 관리하며 다음과 같은 기능을 제공합니다.

  • 장치 방향(사원수, 오일러 각도), 장치 회전(가상 자이로스코프 기능), 중력 벡터 및 선형 가속도 출력
  • 가속도계 및 자력계 데이터만을 기반으로 하는 기능
  • 필요한 가속도계 및 자력계 데이터amp최대 100Hz의 고 주파수
  • 리소스 요구사항:
    – Cortex-M0+: 3.7kB 코드 및 0.1kB 데이터 메모리
    – Cortex-M3: 3.8kB 코드 및 0.1kB 데이터 메모리
    – Cortex-M33: 2.8kB 코드 및 0.1kB 데이터 메모리
    – Cortex-M4: 2.9kB 코드 및 0.1kB 데이터 메모리
    – Cortex-M7: 2.8kB 코드 및 0.1kB 데이터 메모리
  • ARM Cortex M0+, Cortex-M3, Cortex-M33, Cortex-M4 및 Cortex M7 아키텍처에 사용 가능

2.2.2 MotionEC API
MotionEC API는 다음과 같습니다.

  • uint8_t MotionEC_GetLibVersion(char *버전)
    – 라이브러리 버전을 검색합니다
    – *version은 35자 배열을 가리키는 포인터입니다.
    – 버전 문자열의 문자 수를 반환합니다.
    • void MotionEC_Initialize(MEC_mcu_type_t mcu_type, float 주파수)
    – MotionEC 라이브러리 초기화와 내부 메커니즘 설정을 수행합니다.
    – mcu_type은 MCU의 유형입니다.
    ◦ MFX_CM0P_MCU_STM32는 표준 STM32 MCU입니다.
    ◦ MFX_CM0P_MCU_BLUE_NRG1은 BlueNRG-1입니다.
    ◦ MFX_CM0P_MCU_BLUE_NRG2은 BlueNRG-2입니다.
    ◦ MFX_CM0P_MCU_BLUE_NRG_LP는 BlueNRG -LP입니다.
    – freq는 센서의 주파수입니다.amp링 주파수 [Hz]

메모: 이 기능은 E-Compass 라이브러리를 사용하기 전에 호출되어야 하며 라이브러리를 사용하기 전에 STM32 마이크로컨트롤러의 CRC 모듈(RCC 주변 장치 클록 활성화 레지스터)이 활성화되어야 합니다.

  • void MotionEC_SetFrequency(float 주파수)
    – s를 설정합니다ampling 주파수(필터링 매개변수 수정)
    – freq는 센서의 주파수입니다.amp링 주파수 [Hz] • void MotionEC_Run(MEC_input_t *data_in, MEC_output_t *data_out)
    – E-Compass 알고리즘(가속도계 및 자력계 데이터 융합)을 실행합니다.
    – *data_in은 입력 데이터가 있는 구조에 대한 포인터입니다.
    – 구조 유형 MEC_input_t의 매개변수는 다음과 같습니다.
    ◦ acc[3]은 ENU 규칙에 따른 가속도계 데이터 배열이며 g 단위로 측정됩니다.
    ◦ mag[3]는 ENU 규칙에 따른 자력계 교정 데이터 배열이며 μT/50 단위로 측정됩니다.
    ◦ deltatime s는 s 단위로 측정된 델타 시간(즉, 기존 데이터 세트와 새 데이터 세트 간의 시간 지연)입니다.
    – *data_out은 출력 데이터가 있는 구조에 대한 포인터입니다.
    – 구조 유형 MEC_output_t의 매개변수는 다음과 같습니다.
    ◦ quaternion[4]은 ENU 규칙에 따라 쿼터니언을 포함하는 배열로, 공간에서 장치의 3차원 각도 방향을 나타냅니다. 요소 순서는 X, Y, Z, W이며 항상 양의 요소 W가 있습니다.
    ◦ euler[3]는 ENU 규칙에 따른 Euler 각도 배열로 공간에서 장치의 3D 각도 방향을 나타냅니다. 요소 순서는 다음과 같습니다. 요(yaw), 피치(pitch), 롤(roll)이며 도 단위로 측정됩니다.
    ◦ i_gyro[3]는 ENU 규칙에 따른 각속도 배열로 dps 단위로 측정되는 가상 자이로스코프 센서를 나타냅니다.
    ◦ 중력[3]은 ENU 규칙에 따른 가속도 배열로 g 단위로 측정되는 중력 벡터를 나타냅니다.
    ◦ linear[3]는 ENU 규칙에 따른 가속도 배열로, g 단위로 측정되는 장치 선형 가속도를 나타냅니다.
    ST X CUBE MEMS1 MotionEC는 미들웨어 라이브러리입니다.
  • void MotionEC_GetOrientationEnable(MEC_state_t *state)
    – Euler 각도 계산의 활성화/비활성화 상태를 가져옵니다.
    – *state는 현재 활성화/비활성화 상태를 가리키는 포인터입니다.
  • void MotionEC_SetOrientationEnable(MEC_state_t 상태)
    – Euler 각도 계산의 활성화/비활성화 상태를 설정합니다.
    – state는 설정할 새로운 활성화/비활성화 상태입니다.
  •  void MotionEC_GetVirtualGyroEnable(MEC_state_t *state)
    – 가상 자이로스코프 계산의 활성화/비활성화 상태를 가져옵니다.
    – *state는 현재 활성화/비활성화 상태를 가리키는 포인터입니다.
  • void MotionEC_SetVirtualGyroEnable(MEC_state_t 상태)
    – 가상 자이로스코프 계산의 활성화/비활성화 상태를 설정합니다.
    – state는 설정할 새로운 활성화/비활성화 상태입니다.
  • void MotionEC_GetGravityEnable(MEC_state_t *state)
    – 중력 벡터 계산의 활성화/비활성화 상태를 가져옵니다.
    – *state는 현재 활성화/비활성화 상태를 가리키는 포인터입니다.
  • void MotionEC_SetGravityEnable(MEC_state_t 상태)
    – 중력 벡터 계산의 활성화/비활성화 상태를 설정합니다.
    – state는 설정할 새로운 활성화/비활성화 상태입니다.
  • void MotionEC_GetLinearAccEnable(MEC_state_t *state)
    – 선형 가속 계산의 활성화/비활성화 상태를 가져옵니다.
    – *state는 현재 활성화/비활성화 상태를 가리키는 포인터입니다.
  • void MotionEC_SetLinearAccEnable(MEC_state_t 상태)
    – 선형 가속 계산의 활성화/비활성화 상태를 설정합니다.
    – state는 설정할 새로운 활성화/비활성화 상태입니다.

2.2.3 API 흐름도

ST X CUBE MEMS1 MotionEC는 미들웨어 라이브러리입니다.

2.2.4 데모 코드
다음 데모 코드는 가속도계 및 자력계 센서에서 데이터를 읽고 ECompass 데이터(예: 사원수, 오일러 각 등)를 가져옵니다.

ST X CUBE MEMS1 MotionEC는 미들웨어 라이브러리입니다. 데모 코드ST X CUBE MEMS1 MotionEC는 미들웨어 라이브러리입니다. 데모 코드1

2.2.5 알고리즘 성능
E-Compass 알고리즘은 가속도계와 자력계의 데이터만 사용합니다. 전력 소비를 줄이기 위해 저주파(최대 100Hz)로 실행됩니다.

ST X CUBE MEMS1 MotionEC는 미들웨어 라이브러리입니다. Data Injection1

Samp르 신청

MotionEC 미들웨어는 사용자 애플리케이션을 구축하기 위해 쉽게 조작될 수 있습니다.amp파일 애플리케이션은 Application 폴더에 제공됩니다.
X-NUCLEO-IKS401A575, X-NUCLEO-IKS152A073 또는 X-NUCLEO-IKS01A3 확장 보드에 연결된 NUCLEO-F4RE, NUCLEO-U1ZI-Q, NUCLEO-L02RE 또는 NUCLEO-L1RZ 개발 보드에서 실행되도록 설계되었습니다.

ST X CUBE MEMS1 MotionEC는 미들웨어 라이브러리-어댑터입니다.

이 애플리케이션은 실시간으로 기기 방향과 회전을 인식합니다. 데이터는 GUI를 통해 표시될 수 있습니다.
알고리즘은 다음과 같은 출력을 제공합니다: 장치 방향(사원수, 오일러 각), 장치 회전(가상 자이로스코프 기능), 중력 벡터 및 선형 가속도.
3.1 MEMS-Studio 응용 프로그램
Sample 애플리케이션은 MEMS-Studio 애플리케이션을 사용하며 이는 다음에서 다운로드할 수 있습니다. www.st.com.
1단계. 필요한 드라이버가 설치되어 있고 적절한 확장 보드가 있는 STM32 Nucleo 보드가 PC에 연결되어 있는지 확인하세요.
2단계. MEMS-Studio 애플리케이션을 실행하여 메인 애플리케이션 창을 엽니다.
지원되는 펌웨어가 있는 STM32 Nucleo 보드가 PC에 연결된 경우 해당 COM 포트가 자동으로 감지됩니다. [Connect] 버튼을 눌러 평가 보드에 연결을 설정합니다.

ST X CUBE MEMS1 MotionEC는 미들웨어 라이브러리입니다.

3단계. 지원되는 펌웨어가 있는 STM32 Nucleo 보드에 연결되면 [라이브러리 평가] 탭이 열립니다.
데이터 스트리밍을 시작하거나 중지하려면 해당 [시작]을 토글합니다. ST X CUBE MEMS1 MotionEC는 미들웨어 라이브러리입니다. 또는 [중지] ST X CUBE MEMS1 MotionEC는 미들웨어 라이브러리입니다. 외부 수직 도구 모음의 버튼.
연결된 센서에서 나오는 데이터는 다음과 같습니다. view내부 수직 도구 모음에서 [데이터 표] 탭을 선택합니다.

ST X CUBE MEMS1 MotionEC는 미들웨어 라이브러리입니다. 데이터 테이블

4단계. [E-Compass]를 클릭하시면 해당 도서관의 전용 페이지가 열립니다.

ST X CUBE MEMS1 MotionEC는 미들웨어 라이브러리-Compass입니다.

위의 그림은 STM32 Nucleo 그래픽 모델을 보여줍니다. 모델 방향과 회전은 알고리즘에 의해 계산된 E-Compass 데이터(사원수)를 기반으로 합니다.
실제 장치 움직임을 그래픽 모델에 맞추려면 장치를 화면쪽으로 향하게 하고 [모델 재설정]을 누릅니다.
방향 값은 실제 장치 방향을 나타냅니다.
장치를 똑바로 위 또는 아래로 향하게 하면(ENU 기준 프레임의 위쪽 축을 따라, 허용 오차 범위 ±5도) 방위에 대한 N/A 값이 제공됩니다. 즉, 장치가 가리키는 방위가 어느 기본 방위인지 구별할 수 없습니다.
양호 값은 0~3의 값을 제공하며 자력계 교정과 관련이 있습니다. 값이 높을수록 E-Compass 데이터 알고리즘의 결과가 더 좋습니다.
5단계. [저장]을 클릭하세요. File] 데이터 로깅 구성 창을 엽니다. 저장할 센서 및 E-Compass 데이터를 선택합니다. file해당 버튼을 클릭하면 저장을 시작하거나 중지할 수 있습니다.

ST X CUBE MEMS1 MotionEC는 미들웨어 라이브러리입니다. 저장 File

6단계. 데이터 주입 모드는 이전에 획득한 데이터를 라이브러리로 보내고 결과를 수신하는 데 사용할 수 있습니다. 수직 도구 모음에서 [데이터 주입] 탭을 선택하여 전용을 엽니다. view 이 기능을 위해서.

ST X CUBE MEMS1 MotionEC는 미들웨어 라이브러리입니다. 데이터 주입

7단계. [찾아보기] 버튼을 클릭하여 선택하세요. file 이전에 수집한 데이터를 CSV 형식으로 변환합니다.
데이터는 현재 테이블에 로드됩니다. view.
다른 버튼이 활성화됩니다. 다음을 클릭할 수 있습니다.
– [오프라인 모드] 버튼을 눌러 펌웨어 오프라인 모드를 켜거나 끕니다(이전에 캡처한 데이터를 활용하는 모드).
– MEMS-Studio에서 라이브러리로의 데이터 공급을 제어하기 위한 [시작]/[중지]/[단계]/[반복] 버튼.

참고문헌

다음 리소스는 모두 www.st.com에서 무료로 이용할 수 있습니다.

  1. UM1859: X-CUBE-MEMS1 모션 MEMS 및 STM32Cube용 환경 센서 소프트웨어 확장 시작하기
  2.  UM1724: STM32 Nucleo-64 보드(MB1136)
  3. UM3233: MEMS-Studio 시작하기

개정 내역

표 4. 문서 개정 내역

날짜 버전 변화
18-17-XNUMX 1 최초 출시.
25년 18월 XNUMX일 2 NUCLEO-L152RE 개발 보드와 표 2에 참조를 추가했습니다.
경과 시간(μs) 알고리즘.
21년 18월 XNUMX일 3 업데이트된 소개 및 섹션 2.1 MotionECview.
26년 18월 XNUMX일 4 표 3 추가. Cortex -M0+: 경과 시간(µs) 알고리즘. ARM®에 대한 참조 추가
Cortex® – M0+ 및 NUCLEO-L073RZ 개발 보드.
19-19-XNUMX 5 업데이트된 그림 1. ENU 참조 프레임, 표 2. Cortex-M4 및 Cortex-M3: 경과 시간(µs) 알고리즘, 표 3.
Cortex -M0+: 경과시간(µs) 알고리즘, 그림 3. STM32에 연결된 센서 확장 보드 어댑터
Nucleo, 그림 4. Unicleo 메인 창, 그림 5. 사용자 메시지 탭, 그림 6. E-Compass 창 및 그림 7. Datalog 창. X-NUCLEO-IKS01A3 확장 보드 호환성 정보 추가.
25년 20월 XNUMX일 6 업데이트된 소개, 섹션 2.2.1: MotionEC 라이브러리 설명 및 섹션 2.2.5: 알고리즘 성능.
ARM Cortex-M7 아키텍처 호환성 정보를 추가했습니다.
17년 24월 XNUMX일 7 업데이트된 섹션 소개,
섹션 2.1: MotionECview,
섹션 2.2.1: MotionEC 라이브러리
설명, 섹션 2.2.2: MotionEC
API, 섹션 2.2.5: 알고리즘
성능, 섹션 3: Sample
응용 프로그램, 섹션 3.1: MEMS-Studio 응용 프로그램

중요 공지 – 주의 깊게 읽어보세요
STMicroelectronics NV 및 그 자회사("ST")는 언제든지 통지 없이 ST 제품 및/또는 이 문서를 변경, 수정, 개선, 수정 및 개선할 권리를 보유합니다. 구매자는 주문하기 전에 ST 제품에 대한 최신 관련 정보를 얻어야 합니다. ST 제품은 주문 확인 시점에 적용되는 ST의 판매 약관에 따라 판매됩니다.
구매자는 ST 제품의 선택, 선정 및 사용에 대한 전적인 책임을 지며, ST는 구매자의 제품 설계나 애플리케이션 지원에 대한 책임을 지지 않습니다.
ST는 본 계약에 따라 어떠한 지적 재산권에 대한 명시적 또는 묵시적 라이센스도 부여하지 않습니다.
여기에 명시된 정보와 다른 조항이 적용된 ST 제품을 재판매할 경우, ST가 해당 제품에 대하여 부여한 모든 보증은 무효화됩니다.
ST 및 ST 로고는 ST의 상표입니다. ST 상표에 대한 추가 정보는 다음을 참조하십시오. www.st.com/trademarks. 다른 모든 제품 또는 서비스 이름은 해당 소유자의 자산입니다.
이 문서의 정보는 이 문서의 이전 버전에서 제공된 정보를 대체하고 교체합니다.

© 2024 STMicroelectronics – 모든 권리 보유

문서 / 리소스

ST X-CUBE-MEMS1 MotionEC는 미들웨어 라이브러리입니다 [PDF 파일] 사용 설명서
X-CUBE-MEMS1 MotionEC는 미들웨어 라이브러리입니다, X-CUBE-MEMS1, MotionEC는 미들웨어 라이브러리입니다, 미들웨어 라이브러리, 라이브러리

참고문헌

댓글을 남겨주세요

이메일 주소는 공개되지 않습니다. 필수 항목은 표시되어 있습니다. *