UM2225
Hướng dẫn sử dụng
Bắt đầu với thư viện E-Compass thời gian thực MotionEC trong phần mở rộng X-CUBE-MEMS1 cho STM32Cube
Giới thiệu
MotionEC là thành phần thư viện trung gian của phần mềm X-CUBE-MEMS1 và chạy trên STM3z2. Nó cung cấp thông tin thời gian thực về hướng thiết bị và trạng thái chuyển động dựa trên dữ liệu từ thiết bị.
Nó cung cấp các đầu ra sau: hướng thiết bị (quaternion, góc Euler), độ quay của thiết bị (chức năng con quay hồi chuyển ảo), vectơ trọng trường và gia tốc tuyến tính.
Thư viện này chỉ hoạt động với ST MEMS.
Thuật toán được cung cấp ở định dạng thư viện tĩnh và được thiết kế để sử dụng trên các bộ vi điều khiển STM32 dựa trên kiến trúc ARM® Cortex®-M0+, ARM® Cortex®-M3, ARM® Cortex®-M33, ARM® Cortex®-M4 và ARM® Cortex®-M7.
Nó được xây dựng dựa trên công nghệ phần mềm STM32Cube để dễ dàng di chuyển trên các bộ vi điều khiển STM32 khác nhau.
Phần mềm đi kèm với sampViệc triển khai chạy trên bo mạch mở rộng X-NUCLEO-IKS01A3, X-NUCLEO-IKS4A1 hoặc X-NUCLEO-IKS02A1 trên bo mạch phát triển NUCLEO-F401RE, NUCLEO-U575ZI-Q, NUCLEO-L152RE hoặc NUCLEO-L073RZ.
Từ viết tắt và chữ viết tắt
Bảng 1. Danh sách các từ viết tắt
Từ viết tắt | Sự miêu tả |
Giao diện lập trình ứng dụng (API) | Giao diện lập trình ứng dụng |
BSP | Gói hỗ trợ hội đồng quản trị |
Giao diện người dùng | Giao diện người dùng đồ họa |
HAL | Lớp trừu tượng phần cứng |
Ý TƯỞNG | Môi trường phát triển tích hợp |
Thư viện phần mềm trung gian MotionEC trong phần mở rộng phần mềm X-CUBE-MEMS1 cho STM32Cube
2.1 MotionEC quaview
Thư viện MotionEC mở rộng chức năng của phần mềm X-CUBE-MEMS1.
Thư viện thu thập dữ liệu từ máy đo gia tốc và máy đo từ trường và cung cấp thông tin về hướng thiết bị và trạng thái chuyển động dựa trên dữ liệu từ thiết bị.
Thư viện được thiết kế chỉ dành cho ST MEMS. Chức năng và hiệu suất khi sử dụng các cảm biến MEMS khác không được phân tích và có thể khác biệt đáng kể so với những gì được mô tả trong tài liệu.
BẰNGampViệc triển khai có sẵn trên bo mạch mở rộng X-NUCLEO-IKS01A3, X-NUCLEO-IKS4A1 và X-NUCLEO-IKS02A1, được gắn trên bo mạch phát triển NUCLEO-F401RE, NUCLEO-U575ZI-Q, NUCLEO-L152RE hoặc NUCLEO-L073RZ.
2.2 Thư viện MotionEC
Thông tin kỹ thuật mô tả đầy đủ các chức năng và thông số của API MotionEC có thể được tìm thấy trong tệp HTML được biên dịch MotionEC_Package.chm file nằm trong thư mục Tài liệu.
2.2.1 Mô tả thư viện MotionEC
Thư viện MotionEC E-Compass quản lý dữ liệu thu được từ máy đo gia tốc và máy đo từ trường; thư viện này có các tính năng:
- hướng thiết bị (quaternion, góc Euler), quay thiết bị (chức năng con quay hồi chuyển ảo), vectơ trọng trường và đầu ra gia tốc tuyến tính
- chức năng chỉ dựa trên dữ liệu gia tốc kế và từ kế
- dữ liệu gia tốc kế và từ kế cần thiếtamptần số dao động lên đến 100 Hz
- Yêu cầu về nguồn lực:
– Cortex-M0+: 3.7 kB mã và 0.1 kB bộ nhớ dữ liệu
– Cortex-M3: 3.8 kB mã và 0.1 kB bộ nhớ dữ liệu
– Cortex-M33: 2.8 kB mã và 0.1 kB bộ nhớ dữ liệu
– Cortex-M4: 2.9 kB mã và 0.1 kB bộ nhớ dữ liệu
– Cortex-M7: 2.8 kB mã và 0.1 kB bộ nhớ dữ liệu - có sẵn cho kiến trúc ARM Cortex M0+, Cortex-M3, Cortex-M33, Cortex-M4 và Cortex M7
2.2.2 API MotionEC
Các API của MotionEC là:
- uint8_t MotionEC_GetLibVersion(char *version)
– lấy lại phiên bản của thư viện
– *version là một con trỏ tới một mảng gồm 35 ký tự
– trả về số ký tự trong chuỗi phiên bản
• void MotionEC_Initialize(MEC_mcu_type_t mcu_type, float freq)
– thực hiện khởi tạo thư viện MotionEC và thiết lập cơ chế bên trong.
– mcu_type là loại MCU:
◦ MFX_CM0P_MCU_STM32 là MCU STM32 chuẩn
◦ MFX_CM0P_MCU_BLUE_NRG1 là BlueNRG-1
◦ MFX_CM0P_MCU_BLUE_NRG2 là BlueNRG-2
◦ MFX_CM0P_MCU_BLUE_NRG_LP là BlueNRG -LP
– tần số là cảm biến samptần số dao động [Hz]
Ghi chú: Chức năng này phải được gọi trước khi sử dụng thư viện E-Compass và mô-đun CRC trong vi điều khiển STM32 (trong thanh ghi kích hoạt đồng hồ ngoại vi RCC) phải được bật trước khi sử dụng thư viện
- void MotionEC_SetFrequency(float tần số)
– thiết lập samptần số ling (sửa đổi các tham số lọc)
– tần số là cảm biến samptần số ling [Hz] • void MotionEC_Run(MEC_input_t *data_in, MEC_output_t *data_out)
– chạy thuật toán E-Compass (hợp nhất dữ liệu gia tốc kế và từ kế)
– *data_in là con trỏ đến một cấu trúc có dữ liệu đầu vào
– các tham số cho kiểu cấu trúc MEC_input_t là:
◦ acc[3] là một mảng dữ liệu gia tốc kế theo quy ước ENU, được đo bằng g
◦ mag[3] là một mảng dữ liệu được hiệu chuẩn từ kế theo quy ước ENU, được đo bằng μT/50
◦ deltatime s là thời gian delta (tức là độ trễ thời gian giữa tập dữ liệu cũ và mới) được đo bằng s
– *data_out là con trỏ đến một cấu trúc có dữ liệu đầu ra
– các tham số cho kiểu cấu trúc MEC_output_t là:
◦ quaternion[4] là mảng chứa quaternion theo quy ước ENU, biểu diễn hướng 3Dangular của thiết bị trong không gian; thứ tự các phần tử là: X, Y, Z, W, với phần tử W luôn dương
◦ euler[3] là một mảng các góc Euler trong quy ước ENU, biểu diễn hướng góc 3D của thiết bị trong không gian; thứ tự của các phần tử là: độ lệch, độ cao, độ lăn, được đo bằng độ
◦ i_gyro[3] là một mảng tốc độ góc trong quy ước ENU, biểu diễn một cảm biến con quay hồi chuyển ảo, được đo bằng dps
◦ gravity[3] là một mảng gia tốc theo quy ước ENU, biểu diễn vectơ trọng lực, được đo bằng g
◦ tuyến tính[3] là một mảng gia tốc theo quy ước ENU, biểu diễn gia tốc tuyến tính của thiết bị, được đo bằng g
- void MotionEC_GetOrientationEnable(MEC_state_t *state)
– lấy trạng thái bật/tắt của phép tính góc Euler
– *state là con trỏ đến trạng thái bật/tắt hiện tại - void MotionEC_SetOrientationEnable(MEC_state_t trạng thái)
– thiết lập trạng thái bật/tắt của phép tính góc Euler
– trạng thái là trạng thái bật/tắt mới cần được thiết lập - void MotionEC_GetVirtualGyroEnable(MEC_state_t *state)
– lấy trạng thái bật/tắt của phép tính con quay hồi chuyển ảo
– *state là con trỏ đến trạng thái bật/tắt hiện tại - void MotionEC_SetVirtualGyroEnable(MEC_state_t trạng thái)
– thiết lập trạng thái bật/tắt của phép tính con quay hồi chuyển ảo
– trạng thái là trạng thái bật/tắt mới cần được thiết lập - void MotionEC_GetGravityEnable(MEC_state_t *state)
– lấy trạng thái bật/tắt của phép tính vectơ trọng lực
– *state là con trỏ đến trạng thái bật/tắt hiện tại - void MotionEC_SetGravityEnable(MEC_state_t trạng thái)
– thiết lập trạng thái bật/tắt của phép tính vectơ trọng lực
– trạng thái là trạng thái bật/tắt mới cần được thiết lập - void MotionEC_GetLinearAccEnable(MEC_state_t *state)
– lấy trạng thái bật/tắt của phép tính gia tốc tuyến tính
– *state là con trỏ đến trạng thái bật/tắt hiện tại - void MotionEC_SetLinearAccEnable(MEC_state_t trạng thái)
– thiết lập trạng thái bật/tắt của phép tính gia tốc tuyến tính
– trạng thái là trạng thái bật/tắt mới cần được thiết lập
2.2.3 Biểu đồ luồng API
2.2.4 Mã demo
Mã trình diễn sau đây đọc dữ liệu từ các cảm biến gia tốc kế và từ kế và lấy dữ liệu ECompass (tức là quaternion, góc Euler, v.v.).
2.2.5 Hiệu suất thuật toán
Thuật toán E-Compass chỉ sử dụng dữ liệu từ máy đo gia tốc và máy đo từ trường. Thuật toán này chạy ở tần số thấp (lên đến 100 Hz) để giảm mức tiêu thụ điện năng.
Sampứng dụng le
Phần mềm trung gian MotionEC có thể dễ dàng được thao tác để xây dựng các ứng dụng người dùng; nhưamptập tin ứng dụng được cung cấp trong thư mục Ứng dụng.
Nó được thiết kế để chạy trên bo mạch phát triển NUCLEO-F401RE, NUCLEO-U575ZI-Q, NUCLEO-L152RE hoặc NUCLEO-L073RZ được kết nối với bo mạch mở rộng X-NUCLEO-IKS01A3, X-NUCLEO-IKS4A1 hoặc X-NUCLEO-IKS02A1.
Ứng dụng nhận dạng hướng và xoay của thiết bị theo thời gian thực. Dữ liệu có thể được hiển thị thông qua GUI.
Thuật toán cung cấp các đầu ra sau: hướng thiết bị (quaternion, góc Euler), độ quay của thiết bị (chức năng con quay hồi chuyển ảo), vectơ trọng trường và gia tốc tuyến tính.
3.1 Ứng dụng MEMS-Studio
Các sampỨng dụng này sử dụng ứng dụng MEMS-Studio, có thể tải xuống từ www.st.com.
Bước 1. Đảm bảo rằng các trình điều khiển cần thiết đã được cài đặt và bo mạch STM32 Nucleo cùng với bo mạch mở rộng phù hợp đã được kết nối với PC.
Bước 2. Khởi chạy ứng dụng MEMS-Studio để mở cửa sổ ứng dụng chính.
Nếu bo mạch STM32 Nucleo có chương trình cơ sở được hỗ trợ được kết nối với PC, cổng COM thích hợp sẽ tự động được phát hiện. Nhấn nút [Kết nối] để thiết lập kết nối với bo mạch đánh giá.
Bước 3. Khi kết nối với bo mạch STM32 Nucleo có phần mềm được hỗ trợ, tab [Đánh giá thư viện] sẽ được mở.
Để bắt đầu và dừng phát dữ liệu, hãy chuyển đổi [Bắt đầu] thích hợp hoặc [Dừng lại]
nút trên thanh công cụ dọc bên ngoài.
Dữ liệu đến từ cảm biến được kết nối có thể viewed chọn tab [Bảng dữ liệu] trên thanh công cụ dọc bên trong.
Bước 4. Nhấp vào [E-Compass] để mở trang dành riêng cho thư viện này.
Hình trên cho thấy mô hình đồ họa STM32 Nucleo. Hướng và độ quay của mô hình dựa trên dữ liệu E-Compass (quaternion) được tính toán bởi thuật toán.
Để căn chỉnh chuyển động của thiết bị thực với mô hình đồ họa, hãy hướng thiết bị về phía màn hình và nhấn [Đặt lại mô hình].
Giá trị tiêu đề biểu thị tiêu đề thực của thiết bị.
Hướng thiết bị thẳng lên hoặc xuống (dọc theo trục Lên của khung tham chiếu ENU, với dung sai ±5 độ) sẽ cho giá trị N/A cho hướng: không thể phân biệt được thiết bị đang hướng tới điểm chính nào.
Giá trị tốt đưa ra từ 0 đến 3 giá trị và liên quan đến hiệu chuẩn từ kế: giá trị càng cao thì kết quả của thuật toán dữ liệu E-Compass càng tốt.
Bước 5. Nhấp vào [Lưu vào File] để mở cửa sổ cấu hình dữ liệu. Chọn cảm biến và dữ liệu E-Compass để lưu trong file. Bạn có thể bắt đầu hoặc dừng lưu bằng cách nhấp vào nút tương ứng.
Bước 6. Chế độ Data Injection có thể được sử dụng để gửi dữ liệu đã thu thập trước đó đến thư viện và nhận kết quả. Chọn tab [Data Injection] trên thanh công cụ dọc để mở chuyên dụng view cho chức năng này.
Bước 7. Nhấp vào nút [Duyệt] để chọn file với dữ liệu đã thu thập trước đó ở định dạng CSV.
Dữ liệu sẽ được tải vào bảng trong hiện tại view.
Các nút khác sẽ hoạt động. Bạn có thể nhấp vào:
– Nút [Chế độ ngoại tuyến] để bật/tắt chế độ ngoại tuyến của phần mềm (chế độ sử dụng dữ liệu đã thu thập trước đó).
– Các nút [Start]/[Stop]/[Step]/[Repeat] để điều khiển việc cấp dữ liệu từ MEMS-Studio vào thư viện.
Tài liệu tham khảo
Tất cả các tài nguyên sau đây đều có sẵn miễn phí trên www.st.com.
- UM1859: Bắt đầu với phần mềm mở rộng MEMS chuyển động và cảm biến môi trường X-CUBE-MEMS1 cho STM32Cube
- UM1724: Bảng STM32 Nucleo-64 (MB1136)
- UM3233: Bắt đầu với MEMS-Studio
Lịch sử sửa đổi
Bảng 4. Lịch sử sửa đổi tài liệu
Ngày | Phiên bản | Thay đổi |
18-17-XNUMX | 1 | Phiên bản phát hành đầu tiên. |
25-18-XNUMX | 2 | Đã thêm tài liệu tham khảo vào bo mạch phát triển NUCLEO-L152RE và Bảng 2. Thuật toán thời gian trôi qua (μs). |
21-18-XNUMX | 3 | Cập nhật Giới thiệu và Mục 2.1 MotionEC quaview. |
26-18-XNUMX | 4 | Đã thêm Bảng 3. Cortex -M0+: thuật toán thời gian trôi qua (µs). Đã thêm tham chiếu đến ARM® Cortex® – Bo mạch phát triển M0+ và NUCLEO-L073RZ. |
19-19-XNUMX | 5 | Hình 1 đã cập nhật. Khung tham chiếu ENU, Bảng 2. Cortex -M4 và Cortex-M3: thuật toán thời gian trôi qua (µs), Bảng 3. Cortex -M0+: thuật toán thời gian trôi qua (µs), Hình 3. Bộ điều hợp bo mạch mở rộng cảm biến được kết nối với STM32 Nucleo, Hình 4. Cửa sổ chính Unicleo, Hình 5. Tab Tin nhắn người dùng, Hình 6. Cửa sổ E-Compass và Hình 7. Cửa sổ Datalog. Đã thêm thông tin về khả năng tương thích của bo mạch mở rộng X-NUCLEO-IKS01A3. |
25-20-XNUMX | 6 | Cập nhật phần Giới thiệu, Mục 2.2.1: Mô tả thư viện MotionEC và Mục 2.2.5: Hiệu suất thuật toán. Đã thêm thông tin về khả năng tương thích của kiến trúc ARM Cortex-M7. |
17-Tháng 24-XNUMX | 7 | Phần giới thiệu đã cập nhật, Mục 2.1: MotionEC quaview, Phần 2.2.1: Thư viện MotionEC mô tả, Mục 2.2.2: MotionEC API, Mục 2.2.5: Thuật toán hiệu suất, Phần 3: Sample ứng dụng, Mục 3.1: Ứng dụng MEMS-Studio |
THÔNG BÁO QUAN TRỌNG – ĐỌC KỸ
STMicroelectronics NV và các công ty con (“ST”) có quyền thực hiện các thay đổi, chỉnh sửa, cải tiến, sửa đổi và cải thiện đối với các sản phẩm ST và/hoặc tài liệu này bất kỳ lúc nào mà không cần thông báo. Người mua nên tìm hiểu thông tin mới nhất có liên quan về các sản phẩm ST trước khi đặt hàng. Các sản phẩm ST được bán theo các điều khoản và điều kiện bán hàng của ST có hiệu lực tại thời điểm xác nhận đơn hàng.
Người mua chịu toàn bộ trách nhiệm về việc lựa chọn, cân nhắc và sử dụng các sản phẩm ST và ST không chịu trách nhiệm về việc hỗ trợ ứng dụng hoặc thiết kế các sản phẩm của người mua.
ST không cấp bất kỳ giấy phép nào, dù là rõ ràng hay ngụ ý, cho bất kỳ quyền sở hữu trí tuệ nào ở đây.
Việc bán lại các sản phẩm ST với các điều khoản khác với thông tin được nêu ở đây sẽ làm mất hiệu lực bất kỳ bảo hành nào mà ST cấp cho sản phẩm đó.
ST và logo ST là thương hiệu của ST. Để biết thêm thông tin về thương hiệu ST, hãy tham khảo www.st.com/trademarks. Tất cả tên sản phẩm hoặc dịch vụ khác là tài sản của chủ sở hữu tương ứng.
Thông tin trong tài liệu này thay thế và thay thế thông tin đã cung cấp trước đó trong bất kỳ phiên bản nào trước đây của tài liệu này.
© 2024 STMicroelectronics – Bảo lưu mọi quyền
Tài liệu / Tài nguyên
![]() |
ST X-CUBE-MEMS1 MotionEC là một thư viện phần mềm trung gian [tập tin pdf] Hướng dẫn sử dụng X-CUBE-MEMS1 MotionEC là một thư viện Middleware, X-CUBE-MEMS1, MotionEC là một thư viện Middleware, Thư viện Middleware, Thư viện |