RTC là gì?

0
829

RTC hay Real Time Clock là ngoại vi sử dụng như một bộ đồng hồ – lịch thời gian thực. Thuật ngữ thời gian thực là chỉ thời gian trong cuộc sống của con người hằng ngày, chứ không phải thời gian trong tính toán như các Timer khác.

Để bộ RTC có thể hoạt động chúng ta cần nối chân Vbat của vi điều khiển với một nguồn 3V, thường sử dụng Pin Cmos, nguồn điện này giúp duy trì xung RTC hoạt động bình thường.

Ưu nhược điểm của RTC on chip so với các IC RTC khác như DS3231, DS1307

Ưu điểm:

Tiết kiệm chi phí linh kiện, góp phần giảm giá thành sản phẩm

Có thể sử dụng thanh ghi Backup 16bit như 1 Eprom điều mà STM32 thiếu

Nhược điểm

Sai số từ bộ dao động lớn (1%), khi chạy lâu dài sẽ dẫn tới sai thời gian

Các thông số chính của STM32 RTC

Có thể cấu hình Clock đầu vào theo 3 nguồn đó là: LSE, HSE, LSI

Bộ chia clock lên đến 20 bit, giúp bộ RTC hoạt động chính xác.

Độ phân giải của timer RTC lên đến 32 bit – tức là 2^32 giây mới tràn và cần reset lại.

3 nguồn clock source có thể được sử dụng.

2 loại Reset RTC riêng biệt.

Có các ngắt hỗ trợ là : ngắt Alarm, ngắt mỗi giây, ngắt tràn bộ đếm.

Trong bài hướng dẫn này, mình sẽ hướng dẫn các bạn tạo ra một chiếc đồng hồ chạy thời gian thực, nó sẽ vẫn chạy dù cho nguồn vi điều khiển có bị mất hay không.

Nội dung Project:

Giao tiếp đọc thời gian giờ-phút-giây, ngày-tháng-năm và gửi thông tin qua cổng UART1 để theo dõi trên máy tính

Hướng dẫn cấu hình

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 mục RCC cấu hình HSE và LSE như hình để cho phép sử dụng thạch anh ngoài

Bước 5: Trong tab Clock Configuration, cấu hình tần số hoạt động cho chip là 216Mhz (max), sử dụng thạch anh ngoài 8Mhz cấp qua bộ HSE và 32.768Khz cấp qua LSE.

Bước 6:

Cấu hình sử dụng bộ UART1 để xuất kết quả đọc ngày giờ

1-Chọn giao tiếp USART1

2-Chọn giao tiếp là bất đồng bộ Asynchronous

3-Cấu hình các tham số của bộ UART như hình

Bước 7: Cấu hình bộ RTC

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.

Khai báo 2 biến dữ liệu lưu thông tin của thời gian và ngày tháng, Temp là mảng chứa giá trị chuyển đổi từ kiểu số sang kiểu ký tự

HAL_RTC_GetTime,là hàm đọc giá trị giờ-phút-giây lưu vào biến stimestructure.

HAL_RTC_GetDate là hàm đọc thứ-ngày-tháng-năm lưu vào biến sdatestructure

Các giá trị thời gian đọc được sau đó được xuất ra UART để theo dõi kết quả trên máy tính.

Kết quả

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

Tác giả: 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