#9_Mạch đồng hồ DS1307

DS1307

DS1307 là 1 mạch đồng hồ, sử dụng nhiều trong các dự án thời gian thực, IOT, kiểm tra theo dõi hoạt động… Trong bài viết “STM32 và ngoại vi” này ta sẽ cùng tìm hiểu cách sử dụng nó.

———————————

Cùng xem bài viết bên dưới.

DS1307 – STM32 và ngoại vi

DS1307 là 1 dạng đồng hồ thời gian thực rất đầy đủ, chip này có 7 thanh ghi 8-bit chứa thời gian là: giây, phút, giờ, ngày (trong tuần), ngày, tháng, năm.

Để sử dụng được module thời gian thực DS1307, trước tiên cần đọc datasheet để xem giới thiệu và mô tả chức năng các chân đế kết nối phần cứng cho đúng.

DS1307
Datasheet DS1307

Giữa vi điều khiển và module sử dụng giao tiếp I2C. Nếu muốn can thiệp sâu vào thư viện của DS1307 cần nắm rõ về datasheet của nó, các thanh ghi…

Chưa rõ giao tiếp I2C là gì đọc bài viết” #1_Chuẩn giao tiếp I2C | Giao tiếp điện tử cơ bản

DS1307
Địa chỉ thanh ghi, các bit của DS1307 (Click để phóng to)

Thực hành trên STM32cubeIDE

Cấu hình chân

Kết nối phần cứng như bên dưới, do sử dụng giao tiếp I2C nên kết nối rất đơn giản.

DS1307
Kết nối phần cứng (Click để phóng to)
Về phần cấu hình cubeMX, cấu hình I2C sử dụng 2 chân PB6PB7 tương ứng với SCLSDA.
STM32 và ngoại vi
Cấu hình I2C trong cubeMX (Click để phóng to)

Cuối cùng là 1 số lưu ý:

  • Cả 4 dây kết nối cần kiểm tra tốt để chắc chắn truyền nhận dữ liệu không bị gián đoạn
  • Pin đồng hồ sử dụng là pin CMOS không dây

Lập trình DS1307

Sử dụng hàm “DS1307_GetTime()” trong thư viện để đọc dữ liệu thời gian

STM32 và ngoại vi
Hàm DS1307_GetTime()
Như trong hình, các dữ liệu về thời gian rất đầy đủ, bao gồm cả ngày trong tuần DoW (day of week) và múi giờ,…

Trong hàm main (void), ta thiết lập thời gian bắt đầu cho đồng hồ, sau đó đọc dữ liệu thời gian trong while (1) lưu vào struct time.

STM32 và ngoại vi
Hàm main (void)

Và đây là kết quả debug:

Phần cứng và code

Phần cứng sử dụng STM32F411, module thời gian thực DS1307. Phần mềm sử dụng là stm32cubeIDE. File code ví dụ các bạn tải về bên dưới, phần cứng tại Shoppe.


Ta vừa tìm hiểu về ngoại vi DS1307 trong chuyên mục STM32 và ngoại vi. Mong rằng chuyên mục này sẽ giúp nhiều bạn tiếp cận hơn với dòng vi điều khiển STM32.

Lần tới ngoại vi được nhắc tới sẽ là “Cảm biến mưa“, để phát hiện mực nước, trời mưa, hay các môi trường có nước…

Các bài viết khác cùng chuyên mục trong “STM32 và ngoại vi“.

Các chuyên mục khác:

Bạn có thắc mắc gì trong bài viết không?

Đánh giá và để lại bình luận bên dưới nhá.

5/5 - (1 bình chọn)

Similar Posts

Để lại một bình luận

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *