Hướng dẫn cấu hình và sử dụng chức năng ADC trên STM32F7

0
1289

Giới thiệu:

Các tín hiệu mà bạn thường gặp trong tự nhiên chẳng hạn như điện áp, ánh sáng, âm thanh, nhiệt độ … đều tồn tại dưới dạng tương tự có nghĩa là tín hiệu liên tục và mức độ chia nhỏ vô hạn. VD như trong khoảng điện áp từ 0 -> 5V thì bạn sẽ có vô số khoảng giá trị điện áp, ánh sáng sẽ tồn tại từ mờ cho tới sáng tỏ, âm thanh từ nhỏ cho đến lớn. Ngược lại trong vi điều khiển chỉ có khái niệm số (digital), cấu trúc từ nhân cho đến bộ nhớ hoạt động dựa trên các bóng bán dẫn chỉ gồm mức 0-1 nên bạn muốn giao tiếp với chip thì bạn phải số hóa trước khi đưa vào chip. Quá trình số hóa có thể thực hiện bằng nhiều cách và nhiều công đoạn nhưng mục đích cuối cùng là để vi điều khiển hiểu được tín hiệu tương tự đó.

ADC (analog-to-digital converter) bộ chuyển đổi tín hiệu tương tự-số là thuật ngữ nói đến sự chuyển đổi một tín hiệu tương tự thành tín hiệu số hóa để dùng trong các hệ số(digital) hay vi điều khiển. Trong STM32 có hỗ trợ ADC chuyển đổi tín hiệu điện áp thành tín hiệu số với độ phân giải 12bit. Giả sử bạn cần đo điện áp tối thiểu là 0V và tối đa là 3.3V, trong STM32 sẽ chia 0->3.3V thành 4096 khoảng giá trị (từ 0 -> 4095), khi que đo từ chân IO đọc được 0 thì tương đương 0V, đọc được 2047 tương đương 1.65V và đọc được 4095 tương đương 3.3V. Đây chỉ là một ví dụ cơ bản, trên thực tế ADC là một ngoại vi thiết yếu của dòng STM32 nên gồm rất nhiều chức năng, bạn cần kiến thức nền tảng để có thể đọc hiểu các chức năng này.

Nội dung Project:

Đọc giá trị ADC trên bộ ADC1 kênh 6.

Cấu hình trên STM32CubeMX

Bước 1: Mở STM32CubeMX và tạo dự án mới

Bước 2: Gõ tên tìm kiếm loại MCU cần lập trình và click đúp vào tên của nó

Bước 3: Cấu hình chế độ Debug cho chip là Serial Wire

Bước 4: Trong tab Clock Configuration, cấu hình tần số hoạt động cho chip là 216Mhz (max)

Bước 5: Cấu hình chân PA6 hoạt động ở chế độ ADC1_IN6.

Bước 6: Cấu hình bộ ADC

Clock Prescaler là tần số cấp cho bộ ADC, Resolution là độ phân giải ADC, max là 12bits, min là 6bits.

Mục Continuous Conversion Mode cấu hình là Enable để ADC chuyển đổi liên tục.

Sampling Time là chu kỳ chuyển đổi ADC, chu kỳ càng nhiều thời gian chuyển đổi càng lâu nhưng giá trị đo được càng chính xác và ngược lại.

Bước 7: Cấu hình sử dụng bộ UART1 để theo dõi kết quả đọc ADC trên máy tính

Bước 8: Trong tab Project Manager, đặt tên cho Project, chọn đường dẫn lưu thư mục, chọn trình biên dịch là Keilc (MDK-ARM) và chọn phiên bản sử dụng

Bước 9: Trong mục Code Generator tích chọn Generate peripheral initialization.. Sau đó tiến hành GENERATE CODE.

Sau khi GENERATE CODE hoàn tất, click Open Project để mở trình biên dịch code Keilc.

Chúng ta sẽ thực hiện hiện đọc ADC ở chế độ ngắt, trong hàm main, gọi hàm HAL_ADC_Start_IT(&hadc1); để cho phép ngắt ADC1.

HAL_ADC_ConvCpltCallback là chương trình phục vụ ngắt khi có ngắt sảy ra sau khi bộ ADC chuyển đổi xong. adc_value là biến lưu giá trị adc đọc được khi dùng hàm HAL_ADC_GetValue như hình dưới. temp[1] là mảng phục vụ chuyển đổi giá trị adc từ kiểu số nguyên sang ký tự để gửi qua UART.

Ở trong hàm while(1), hàm HAL_UART_Transmit được sử dụng để gửi các ký tự lên máy tính qua cổng UART, sprintf là hàm chuyển đổi kiểu số nguyên của giá trị adc sang kiểu ký tự để thuận tiện cho việc truyền qua cổng UART.

Sau khi hoàn thiện code, nhấn F7 hoặc click vào biểu tượng như hình dưới để biên dịch chương trình

Kết nối các chân trên header JTAG của KIT và mạch nạp ST-link V2 tương ứng như hình dưới

* Các chân nạp code cho STM32 của St-Link:

[1] 3.3V

[2] GND

[3] SWDIO

[4] SWCLK

nối tương ứng các chân này với các chân tương ứng trên KIT STM32F746I

Trước khi nạp chương trình cho KIT qua mạch nạp ST-LINK V2, chúng ta cần cấu hình một số chức năng. Thực hiện các bước như hình dưới để vào giao diện cài đặt mạch nạp.

Sau khi nhấn Setting, cửa sổ cấu hình mạch nạp hiện ra, Trong SW Device, ID CODE hiện ra có nghĩa mạch nạp đã kết nối với KIT thành công, chúng ta cấu hình tốc độ nạp ở mục Max Clock là tần số cao nhất, ở như hình là 4Mhz, Tick vào các mục Verify Code Download để Verify lại chương trình sau khi nạp và Tick vào Download to Flash để nạp chương trình vào bộ nhớ Flash chip.

Trong tab Flash Download tích chọn Reset and Run để chương trình chạy ngay sau khi nạp code xong, sau đó click OK để kết thúc cài đặt.

Click vào biểu tượng LOAD để tiến hành nạp code cho chip.

Kết quả

Chúc các bạn thành công!

Biên dịch: Mai Văn Ba

Để cập nhật tin tức công nghệ mới nhất và các sản phẩm của công ty AIoT JSC, vui lòng truy cập link: http://aiots.vn hoặc linhkienaiot.com

0 0 Phiếu bầu
Article Rating
Subscribe
Notify of
guest
0 Comments
Phản hồi nội tuyến
Xem tất cả các bình luận