https://github.com/luonghuuphuc/ecg_signal_stm32
ECG signal measure using AD8232 sensor and STM32 MCU
https://github.com/luonghuuphuc/ecg_signal_stm32
ad8232 dma ecg stm32 timer
Last synced: 9 months ago
JSON representation
ECG signal measure using AD8232 sensor and STM32 MCU
- Host: GitHub
- URL: https://github.com/luonghuuphuc/ecg_signal_stm32
- Owner: LuongHuuPhuc
- Created: 2025-06-19T10:54:43.000Z (12 months ago)
- Default Branch: main
- Last Pushed: 2025-06-19T10:58:54.000Z (12 months ago)
- Last Synced: 2025-08-21T23:40:49.338Z (10 months ago)
- Topics: ad8232, dma, ecg, stm32, timer
- Language: C
- Homepage:
- Size: 27.3 KB
- Stars: 0
- Watchers: 0
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# *Đọc tín hiệu ECG bằng AD8232 sử dụng Timer Trigger và DMA* #
## *1. Cách cấu hình* ##
- Timer là bộ đếm định kỳ
- Prescaler là bộ chia tần để điều chỉnh tốc độ đếm
- Period xác định số tick cần đếm trước khi trigger (Ví dụ để là 49 thì sau 49 tick, nó sẽ trigger 1 lần)
- TRGO (Trigger Output): Đây là tín hiệu được phát ra từ Timer khi nó được trigger
- ADC được kích hoạt bẳng TRGO -> Giúp lấy mẫu đều đặn và không phụ thuộc vào CPU
## *2. Hiểu về bản chất của việc Timer Trigger* ##
* Khoảng thời gian mà Timer Trigger chính là **chu kỳ lấy mẫu (Sample Period)** và nó cũng là **tần số lấy mẫu/tốc độ lấy mẫu (Sampling Frequency/Sampling rate)**
* Ta không nên sử dụng Delay của hệ thông như HAL_Delay() vì đây là hàm khiến cả hệ thống/chương trình bị ngừng lại và không làm gì cả, khiến cho sai lệch về thời gian thực tế
và ảnh hưởng đến việc phân tích QRS của ECG
* Thế nên để có thể lấy mãu liên tục mà ít bị mất mẫu thì nên dùng DMA + Timer để dữ liệu có thể liên tục được cập nhật mà không cần sự can thiệp của CPU, giúp
tăng tính đồng bộ hóa
### *Vậy Timer hoạt động như thế nào ?* ###
Timer là bộ đếm, nó sẽ đếm từ 0, mỗi lần tăng 1 giá trị, gọi là 1 tick.
* Tốc độ phụ thuộc vào: *Tần số Clock Timer* và *Prescaler*
* Timer đếm từ 0 đến giá trị ARR (AutoReload Register) - tức là Counter Period mà đã set trong CubeMX
* Khi đếm xong (đạt ARR), nó:
- Reset về lại 0
- Gây 1 sự kiện "Update Event"
- Nếu bạn chỉnh cấu hình TRGO = Update Event -> Timer sẽ phát 1 xung trigger tại đây
- Chính xung này được gọi là xung Trigger Output (TRGO) -> ADC nhận được và bắt đầu lấy mẫu
# Kết quả #
