You are on page 1of 6

ADC Conversion Time & Timing Diagram

Bộ chuyển đổi ADC cần một thời gian ổn định tSTAB trước khi nó bắt đầu chuyển đổi chính
xác. Sau khi bắt đầu chuyển đổi ADC và sau 14 chu kỳ xung nhịp, cờ EOC được thiết lập và
thanh ghi dữ liệu ADC 16 bit chứa kết quả chuyển đổi.

The ADC Analog Watchdog (AWD)


Bit trạng thái giám sát tương tự AWD được thiết lập nếu điện áp tương tự được chuyển đổi
bởi ADC nằm dưới ngưỡng thấp hoặc trên ngưỡng cao. Các ngưỡng này được lập trình trong
12 bit ít quan trọng nhất của các thanh ghi 16 bit ADC_HTR và ADC_LTR. Có thể kích hoạt
ngắt bằng cách sử dụng bit AWDIE trong thanh ghi ADC_CR1. Giá trị ngưỡng không phụ
thuộc vào căn chỉnh được chọn. Và chức năng giám sát tương tự có thể được bật trên một
hoặc nhiều kênh.
ADC Result Data Alignment
Bit ALIGN trong thanh ghi ADC_CR2 lựa chọn cách căn chỉnh dữ liệu được lưu trữ sau khi
chuyển đổi. Dữ liệu có thể được căn trái hoặc căn phải như thể hiện trong sơ đồ dưới đây.
Giá trị dữ liệu chuyển đổi của các kênh thuộc nhóm injected sẽ được giảm đi bởi độ lệch do
người dùng xác định được ghi trong các thanh ghi ADC_JOFRx, vì vậy kết quả có thể là một
giá trị âm. Bit SEXT là giá trị dấu mở rộng. Đối với các kênh thuộc nhóm regular, không có
độ lệch nào được trừ đi, do đó chỉ có mười hai bit có ý nghĩa.
Injeced group channels: Nhóm kênh injected là một nhóm kênh ADC đặc biệt có thể được sử
dụng để thực hiện các phép đo độc lập với các phép đo thông thường. Các kênh này có thể
được sử dụng để đo các tín hiệu nhanh hoặc các tín hiệu cần độ chính xác cao.
Regular group channels: Nhóm kênh regular là nhóm kênh ADC tiêu chuẩn được sử dụng
cho các phép đo thông thường.

STM32 ADC Modes of Operation


Single Conversion Mode
Trong chế độ Chuyển đổi đơn, bộ ADC thực hiện một lần chuyển đổi. Chế độ này được khởi
động bằng cách đặt bit ADON trong thanh ghi ADC_CR2 (chỉ dành cho kênh thông thường)
hoặc bằng một trình kích hoạt bên ngoài (đối với kênh thông thường hoặc kênh được tiêm),
trong khi bit CONT bằng 0. Sau khi chuyển đổi kênh đã chọn hoàn tất:
 Nếu một kênh thông thường được chuyển đổi:
- Dữ liệu đã chuyển đổi được lưu trữ trong thanh ghi ADC_DR 16 bit
- Cờ EOC (Kết thúc chuyển đổi) được đặt
- Và một ngắt được tạo nếu EOCIE được đặt.
 Nếu một kênh được tiêm đã được chuyển đổi:
- Dữ liệu đã chuyển đổi được lưu trữ trong thanh ghi ADC_DRJ1 16 bit
- Cờ JEOC (Kết thúc chuyển đổi được tiêm) được đặt
- Và một ngắt được tạo nếu bit JEOCIE được đặt.
ADC sau đó sẽ dừng lại.
Continuous Conversion Mode
Ở chế độ chuyển đổi liên tục, ADC bắt đầu một chuyển đổi khác ngay sau khi hoàn thành một
chuyển đổi. Chế độ này được bắt đầu bằng bộ kích hoạt bên ngoài hoặc bằng cách đặt bit
ADON trong thanh ghi ADC_CR2, trong khi bit CONT là 1. Sau mỗi lần chuyển đổi:
 Nếu một kênh thông thường được chuyển đổi:
- Dữ liệu được chuyển đổi sẽ được lưu trữ trong thanh ghi 16 bit ADC_DR.
- Cờ EOC (End Of Conversion - Kết thúc chuyển đổi) sẽ được thiết lập.
- Một ngắt sẽ được tạo nếu bit EOCIE được thiết lập.
 Nếu một kênh được chèn được chuyển đổi:
- Dữ liệu được chuyển đổi sẽ được lưu trữ trong thanh ghi 16 bit ADC_DRJ1.
- Cờ JEOC (End Of Conversion Injected - Kết thúc chuyển đổi được chèn) sẽ được
thiết lập.
- Một ngắt sẽ được tạo nếu bit JEOCIE được thiết lập.
Scan Mode
Chế độ này được sử dụng để quét một nhóm các kênh tương tự. Mỗi kênh trong nhóm sẽ
được thực hiện một lần chuyển đổi. Sau khi kết thúc mỗi lần chuyển đổi, kênh tiếp theo trong
nhóm sẽ được tự động chuyển đổi. Nếu bit CONT được đặt, quá trình chuyển đổi sẽ không
dừng lại ở kênh cuối cùng của nhóm đã chọn mà tiếp tục lại từ kênh đầu tiên của nhóm đã
chọn.
Khi sử dụng chế độ quét, bit DMA phải được đặt và bộ điều khiển truy cập bộ nhớ trực tiếp
(DMA) sẽ được sử dụng để truyền dữ liệu đã chuyển đổi của các kênh nhóm thông thường
đến SRAM sau mỗi lần cập nhật thanh ghi ADC_DR. Dữ liệu chuyển đổi của kênh được chèn
luôn được lưu trữ trong các thanh ghi ADC_JDRx.
Discontinuous Mode
Chế độ này được kích hoạt bằng cách đặt bit DISCEN trong thanh ghi ADC_CR1. Nó có thể
được sử dụng để chuyển đổi một chuỗi ngắn gồm n lần chuyển đổi (n <= 8) là một phần của
chuỗi các lần chuyển đổi được chọn trong các thanh ghi ADC_SQRx. Giá trị của n được chỉ
định bằng cách ghi vào các bit DISCNUM[2:0] trong thanh ghi ADC_CR1.
Khi xảy ra một kích hoạt bên ngoài, nó sẽ bắt đầu n lần chuyển đổi tiếp theo được chọn trong
các thanh ghi ADC_SQRx cho đến khi tất cả các lần chuyển đổi trong chuỗi được hoàn
thành. Tổng độ dài chuỗi được xác định bởi các bit L[3:0] trong thanh ghi ADC_SQR1.
ADC Conversion On External Triggers
Quá trình chuyển đổi có thể được kích hoạt bởi một sự kiện bên ngoài (ví dụ như bắt giữ bộ
đếm thời gian, đường EXTI). Nếu bit điều khiển EXTTRIG được đặt thì các sự kiện bên
ngoài có thể kích hoạt chuyển đổi. Các bit điều khiển EXTSEL[2:0] và JEXTSEL[2:0] cho
phép ứng dụng lựa chọn quyết định xem sự kiện nào trong số 8 sự kiện có thể kích hoạt
chuyển đổi cho các nhóm thông thường và nhóm được chèn.
External event (Sự kiện bên ngoài): Sự kiện bên ngoài là một sự kiện xảy ra bên ngoài ADC
nhưng có thể được sử dụng để kích hoạt quá trình chuyển đổi. Ví dụ về các sự kiện bên ngoài
bao gồm:
 Timer capture (Bắt giữ bộ đếm thời gian): Khi bộ đếm thời gian đạt đến một giá trị
nhất định, nó có thể tạo ra một sự kiện để kích hoạt chuyển đổi ADC.
 EXTI line (Đường EXTI): Các đường EXTI (External Interrupt) là các đường ngắt
bên ngoài có thể được sử dụng để kích hoạt chuyển đổi ADC.
EXTTRIG control bit (Bit điều khiển EXTTRIG): Bit điều khiển này cho phép hoặc không
cho phép các sự kiện bên ngoài kích hoạt chuyển đổi ADC.
EXTSEL[2:0] control bits (Các bit điều khiển EXTSEL[2:0]): Các bit điều khiển này xác
định sự kiện bên ngoài nào sẽ được sử dụng để kích hoạt chuyển đổi cho các nhóm thông
thường.
Khi bạn chọn kích hoạt chuyển đổi ADC (regular or injected) bằng tín hiệu bên ngoài, chỉ có
lúc cạnh dương của tín hiệu đó mới có thể bắt đầu quá trình chuyển đổi. Bảng dưới đây liệt
kê các lựa chọn có thể để ADC1 & 2 sử dụng tín hiệu kích hoạt bên ngoài cho các kênh
chuyển đổi thường.

STM32 ADC Calibration


Bộ ADC tích hợp chế độ tự hiệu chỉnh (self-calibration mode). Việc hiệu chỉnh giảm đáng kể
các lỗi về độ chính xác do sự biến thiên của các tụ điện bên trong. Trong quá trình hiệu chỉnh,
một mã sửa lỗi (từ số) được tính toán cho từng tụ điện, và trong tất cả các quá trình chuyển
đổi tiếp theo, phần lỗi của mỗi tụ điện sẽ được loại bỏ bằng cách sử dụng mã này.
Quá trình hiệu chỉnh được bắt đầu bằng cách đặt bit CAL trong thanh ghi ADC_CR2. Sau khi
hiệu chỉnh xong, bit CAL sẽ được phần cứng đặt lại và quá trình chuyển đổi bình thường có
thể được thực hiện. Nên hiệu chỉnh ADC một lần khi bật nguồn. Các mã hiệu chỉnh được lưu
trữ trong ADC_DR ngay sau khi giai đoạn hiệu chỉnh kết thúc. Bạn nên thực hiện hiệu chỉnh
sau mỗi lần bật nguồn.

STM32 HAL cung cấp một chức năng trong API ADC dành riêng để bắt đầu quá trình hiệu
chuẩn và như đã nói trước đó, đây là bước được khuyến nghị sau khi khởi tạo phần cứng
ADC khi bật nguồn hệ thống.

STM32 ADC Sampling Time


Bộ chuyển đổi tương tự sang số (ADC) lấy mẫu điện áp đầu vào trong một số chu kỳ
ADC_CLK, có thể được điều chỉnh bằng cách sử dụng các bit SMP[2:0] trong các thanh ghi
ADC_SMPR1 và ADC_SMPR2. Mỗi kênh có thể được lấy mẫu với thời gian lấy mẫu khác
nhau.
ADC Conversion Time:
Tconv = Sampling time + 12.5 cycles
Với ADCCLK = 14 MHz và thời gian lấy mẫu là 1,5 chu kỳ: Tconv = 1,5 + 12,5 = 14 chu kỳ
= 1 µs
ADC Sampling Rate
SamplingRate = 1 / Tconv
Đối với ví dụ trước trong đó Tconv = 1µs, Tốc độ lấy mẫu = 1000000 = 1Ms/giây
ADC Result Voltage (Analog Input Value)
Vin = ADC_Res x (Reference Voltage / 4096)
Where Reference Voltage = (VREF+) – (VREF-)
ADC & DMA
Vì giá trị của các kênh thông thường sau khi chuyển đổi được lưu trữ trong một thanh ghi dữ
liệu duy nhất, nên cần sử dụng DMA để chuyển đổi nhiều hơn một kênh thông thường. Điều
này giúp tránh mất dữ liệu đã được lưu trữ trong thanh ghi ADC_DR.
Chỉ khi kết thúc quá trình chuyển đổi của một kênh thông thường mới tạo ra yêu cầu DMA,
cho phép truyền dữ liệu đã chuyển đổi của kênh đó từ thanh ghi ADC_DR đến vị trí đích do
người dùng lựa chọn.

STM32 ADC Interrupts


Một ngắt có thể được tạo ra khi kết thúc quá trình chuyển đổi đối với các nhóm thông thường
và các nhóm được chèn và khi bit trạng thái cơ quan giám sát tương tự được đặt. Các bit cho
phép ngắt riêng biệt có sẵn để linh hoạt.

You might also like