TRƯỜng đẠi học cần thơ khoa công nghệ BỘ MÔN ĐIỆn tử viễn thôNG


II. ĐỒNG HỒ THỜI GIAN THỰC



tải về 461.56 Kb.
trang5/9
Chuyển đổi dữ liệu26.07.2016
Kích461.56 Kb.
#6036
1   2   3   4   5   6   7   8   9

II. ĐỒNG HỒ THỜI GIAN THỰC

1. Tổng quan về DS1307

1.1. Sơ đồ chân DS1307


DS1307 là chip đồng hồ thời gian thực (RTC : Real-time clock), khái niệm thời gian thực ở đây được dùng với ý nghĩa thời gian tuyệt đối mà con người đang sử dụng, tính bằng giây, phút, giờ…DS1307 là một sản phẩm của Dallas Semiconductor (một công ty thuộc Maxim Integrated Products). Chip này có 7 thanh ghi 8-bit chứa thời gian là: giây, phút, giờ, thứ (trong tuần), ngày, tháng, năm. Ngoài ra DS1307 còn có 1 thanh ghi điều khiển ngõ ra phụ và 56 thanh ghi trống có thể dùng như RAM. DS1307 được đọc và ghi thông qua giao diện nối tiếp I2C nên cấu tạo bên ngoài rất đơn giản. DS1307 xuất hiện ở 2 gói SOIC và DIP có 8 chân như trong hình sau.



Hai gói cấu tạo của chip DS1307

       Các chân của DS1307 được mô tả như sau:


       - X1X2: là 2 ngõ kết nối với 1 thạch anh 32.768KHz làm nguồn tạo dao động cho chip
       - VBAT: cực dương của một nguồn pin 3V nuôi chip
       - GND: chân mass chung cho cả pin 3V và Vcc
       - Vcc: nguồn cho giao diện I2C, thường là 5V và dùng chung với vi điều khiển. Chú ý: nếu Vcc không được cấp nguồn nhưng VBAT được cấp thì DS1307 vẫn đang hoạt động (nhưng không ghi và đọc được).
SQW/OUT: Đây là chân tạo ngõ ra xung vuông của DS1307 có 4 chế độ 1Hz, 4.096HZ, 8.192Hz, 32.768Hz... các chế độ này đuợc quy định bởi các bit của thanh ghi Control Register (địa chỉ 0x07).
       - SCL và SDA là đường giữ xung nhịp và đường dữ liệu của giao diện I2C mà chúng ta sẽ tìm hiểu sau.

1.2. Cấu tạo bên trong DS1307


Sơ đồ khối bên trong chip DS1307

Cấu tạo bên trong DS1307 bao gồm một số thành phần như mạch nguồn, mạch dao động, mạch điều khiển logic, mạch giao điện I2C, con trỏ địa chỉ và các thanh ghi (hay RAM). Do đa số các thành phần bên trong DS1307 là thành phần “cứng” nên chúng ta không có quá nhiều việc khi sử dụng DS1307. Sử dụng DS1307 chủ yếu là ghi và đọc các thanh ghi của chip này. Vì thế cần hiểu rõ 2 vấn đề cơ bản đó là cấu trúc các thanh ghi và cách truy xuất các thanh ghi này thông qua giao diện I2C

Như đã trình bày, bộ nhớ DS1307 có tất cả 64 thanh ghi 8bit được đánh địa chỉ từ 0 đến 63 (từ 0x00h đến 0x3Fh). Tuy nhiên, thực chất chỉ có 8 thanh ghi đầu là dùng cho chức năng “đồng hồ”, còn lại 56 thanh ghi bỏ trống có thể được dùng chứa biến tạm như RAM nếu muốn. Bảy thanh ghi đầu tiên chứa thông tin về thời gian của đồng hồ bao gồm: giây (SECONDS), phút (MINUETS), giờ (HOURS), thứ (DAY), ngày (DATE), tháng (MONTH) và năm (YEAR). Việc ghi giá trị vào 7 thanh ghi này tương đương với việc “cài đặt” thời gian khởi động cho RTC. Việc đọc giá từ 7 thanh ghi là quá trình đọc thời gian thực mà RTC tạo ra.

Tổ chức bộ nhớ trong DS1307

Vì 8 thanh ghi đầu tiên là quan trọng nhất trong hoạt động của DS1307, chúng ta sẽ khảo sát các thanh ghi này một cách chi tiết. Trước hết hãy quan sát tổ chức theo từng bit của các thanh ghi này trong hình sau:



Chú ý là tất cả các giá trị thời gian lưu trong các thanh ghi theo dạng BCD (Binary-Coded Decimal).



Thanh ghi giây (SECONDS): thanh ghi này là thanh ghi đầu tiên trong bộ nhớ của DS1307, địa chỉ của nó là 0x00. Bốn bit thấp của thanh ghi này chứa mã BCD 4-bit của chữ số hàng đơn vị của giá trị giây. Do giá trị cao nhất của chữ số hàng chục là 5 nên chỉ cần 3 là đủ. Bit cao nhất (bit thứ 7) trong thanh ghi này là 1 bit điều khiển có tên CH (Clock halt – treo đồng hồ), nếu bit này được set bằng 1 bộ dao động trong chip bị vô hiệu hóa, đồng hồ không hoạt động. Vì vậy, nhất thiết phải reset bit này xuống 0 ngay từ đầu.

Thanh ghi phút (MINUTES): có địa chỉ 0x01h, chứa giá trị phút của đồng hồ. Tương tự thanh ghi SECONDS, chỉ có 7 bit của thanh ghi này được dùng lưu mã BCD của phút, bit thứ 7 luôn luôn bằng 0.

Thanh ghi giờ (HOURS): có thể nói đây là thanh ghi phức tạp nhất trong chip DS1307. Thanh ghi này có địa chỉ 0x02h. Trước hết 4 bit thấp của thanh ghi này được dùng cho chữ số hàng đơn vị của giờ. Do DS1307 hỗ trợ 2 loại hệ thống hiển thị giờ là: 12h và 24h giờ, vì vậy bit thứ 6 được dùng để xác lập hệ thống giờ. Nếu bit thứ 6 = 0 thì hệ thống 24h được chọn, khi đó 2 bit thứ 5 và thứ 4 dùng mã hóa chữ số hàng chục của giá trị giờ. Do giá trị lớn nhất của chữ số hàng chục trong trường hợp này là 2 nên cần 2 bit để mã hóa. Nếu bit thứ 6 = 1 thì hệ thống 12h được chọn. Với trường hợp này chỉ có 1 bit thứ 4 dùng mã hóa chữ số hàng chục của giờ, bit thứ 5 chỉ buổi trong ngày (AM hoặc PM). Bit thứ 5 = 0 là AM và bit thứ 5 = 1 là PM. Bit thứ 7 luôn bằng 0.

Thanh ghi thứ (DAY – ngày trong tuần): nằm ở địa chỉ 0x03h. Thanh ghi DAY chỉ mang giá trị từ 1 đến 7 tương ứng từ Chủ nhật đến thứ 7 trong 1 tuần. Vì thế, chỉ có 3 bit thấp trong thanh ghi này có nghĩa. Các bit còn lại luôn bằng 0.

Thanh ghi ngày (DATE – ngày trong tháng): nằm ở địa chỉ 0x04h. Thanh ghi DATE mang giá trị từ 1 đến 31, chỉ có 5 bit đầu tiên là có nghĩa. Các bit còn lại luôn bằng 0.

Thanh ghi tháng (MONTH): nằm ở địa chỉ 0x05h. Thanh ghi MONTH mang giá trị từ 1 đến 12, chỉ có 4 bit đầu tiên là có nghĩa. Các bit còn lại bằng 0.

Thanh ghi năm (YEAR): nằm ở địa chỉ 0x06h. Thanh ghi YEAR mang giá trị từ 0 đến 99. Chip DS1307 chỉ dùng cho 100 năm, nên giá trị năm chỉ có 2 chữ số, phần đầu của năm do người dùng tự thêm vào.

Thanh ghi điều khiển (CONTROL REGISTER): có địa chỉ là 0x07h, thanh ghi CONTROL REGISTER được dùng để điều khiển tần số xung vuông ở ngỏ ra SQW/OUT. Giá trị các bít trong thanh ghi CONTROL REGISTER được biểu diển như sau:

Bit 7_Output Control (OUT): dùng để kiểm soát mức logic tại SQW/OUT.

Bit 4­­_Square-Wave Enable (SQWE): bit này được set lên bằng 1 để tạo dao động ở đầu ra.

Bits 1 and 0­_ Rate Select (RS[1:0]): 2 bit này dùng điều khiển tần số dao động ở ngỏ ra SQW/OUT, với 4 tần số được chọn như sau:

2. Khái quát giao diện I2C


    • I2C là viết tắc của từ Inter - Integrated Circuit là một chuẩn truyền thông nối tiếp đồng bộ do hãng điện tử Philips Semiconductor sáng lập và xây dựng thành chuẩn năm 1990.

    • Các khái niệm cơ bản trong giao diện I2C:

  • Master (chip chủ): là chip khởi động quá trình truyền nhận, phát đi địa chỉ của thiết bị cần giao tiếp và tạo xung giữ nhịp trên đường SCL.

  • Slave (chip tớ): là chip có một địa chỉ cố định, được gọi bởi Master và phục vụ yêu cầu từ Master.

  • SDA (Serial Data): là đường dữ liệu nối tiếp, tất cả các thông tin về địa chỉ hay dữ liệu đều được truyền trên đường này theo thứ tự từng bit một. Chú ý là trong chuẩn I2C, bit có trọng số lớn nhất (MSB) được truyền đi trước nhất.

  • SCL (Serial Clock): là đường xung giữ nhịp nối tiếp. I2C là chuần truyền thông nối tiếp đồng bộ, cần có 1 đường tạo xung giữ nhịp cho quá trình truyền/nhận, cứ mỗi xung trên đường giữ nhịp SCL, một bit dữ liệu trên đường SDA sẽ được lấy mẫu (sample). Dữ liệu nối tiếp trên đường SDA được lấy mẫu khi đường SCL ở mức cao trong một chu kỳ giữ nhịp, vì thế đường SDA không được đổi trạng thái khi SCL ở mức cao (trừ điều kiện START và STOP). Chân SDA có thể được đổi trạng thái khi SCL ở mức thấp.

    • Một giao tiếp I2C gồm có 2 dây: Serial Data (SDA) và Serial Clock (SCL). SDA là đường truyền dữ liệu theo 2 hướng (từ master đến slave và ngược lại), còn SCL là đường truyền xung đồng hồ chỉ truyền theo một hướng (từ master đến slave).

    • Trong một giao diện I2C thì có một thiết bị là chủ (master) và một thiết bị là tớ (slave). Tại sao lại có sự phân biệt này? Đó là vì trên một giao diện I2C thì quyền điều khiển thuộc về thiết bị chủ. Thiết bị chủ nắm vai trò tạo xung đồng bộ cho toàn hệ thống, khi giữa 2 thiết bị chủ/tớ giao tiếp thì thiết bị chủ có nhiệm vụ tạo ra xung đồng bộ và quản lý đến thiết bị tớ trong suốt quá trình giao tiếp. Thiết bị chủ giữ vai trò chủ động, còn thiết bị tớ giữ vai trò bị động trong quá trình giao tiếp.

    • Một giao diện I2C có thể hoạt động ở nhiều chế độ khác nhau: 

- Một chủ một tớ (one master – one slave) 

- Một chủ nhiều tớ (one master – multi slave) 

- Nhiều chủ nhiều tớ (Multi master – multi slave)


  • Vài điều kiện cần biết khi thiết lập một giao tiếp I2C:

- Điều kiện START (gọi tắt là S): điều kiện START được thiết lập khi có một sự chuyển đổi trạng thái từ cao xuống thấp tại SDA, khi SCL đang ở mức cao (mức cao là 1, mức thấp là 0).

- Điều kiện STOP (gọi tắt là P): điều kiện STOP được thiết lập khi có một sự chuyển đổi trạng thái từ thấp lên cao tại SDA, khi SCL đang ở mức cao.

- Điều kiện REPEAT START (bắt đầu lặp lại): khoảng giữa điều kiện START và STOP là khoảng bận của đường truyền, các master khác không tác động được vào đường truyền trong khoảng này. Trường hợp sau khi kết thúc quá trình truyền/nhận mà master không gởi điều kiện STOP lại gởi thêm 1 điều kiện START gọi là REPEAT START. Khả năng này thường được dùng khi master muốn lấy dữ liệu liên tiếp từ các Slaves.

Mô tả điều kiện START, STOP và REPEAT START

- Bit ACK: dùng để báo hiệu dữ liệu đã được nhận, bit ACK được tạo ra tại thời điểm xung clock thứ 9 bằng cách kéo chân SDA xuống mức thấp.

- Bit NACK: dùng để báo hiệu dữ liệu đã bị lỗi hoặc byte truyền cuối cùng, bit NACK cũng được tạo ra tại thời điểm xung clock thứ 9 bằng cách kéo chân SDA lên mức cao.

Bit ACK/NACK trong giao diện I2C


  • Định dạng dữ liệu truyền:

Dữ liệu được truyền trên bus I2C theo từng bit, bit dữ liệu được truyền  đi tại mỗi sườn lên của xung đồng hồ trên đường dây SCL, quá trình thay đổi bit dữ 

liệu xảy ra khi SCL đang ở mức thấp. 


Quá trình truyền nhận 1 bit dữ liệu

Mỗi byte dữ liệu được truyền có độ dài là 8 bit. Số byte có thể truyền trong một lần là không hạn chế. Mỗi byte được truyền đi theo sau là một bit ACK, bit có trong số lớn nhất (MSB) sẽ được truyền đi đầu tiên, các bit kế tiếp sẽ được truyền đi lần lượt. Sau 8 xung clock thì dữ liệu đã được truyền đi, ở xung clock thứ 9 thì bit ACK được truyền đi báo hiệu đã nhận đủ 8 bits. Thiết bị truyền sau khi nhận được bit ACK sẽ tiếp tục thực hiện quá trình truyền hoặc kết thúc.





Dữ liệu được truyền trên giao diện I2C

Một byte truyền đi có kèm theo bit ACK là điều kiện bắt buộc, nhằm đảm bảo cho quá trình truyền nhận được chính xác. Khi không nhận được đúng địa chỉ hay muốn kết thúc quá trình giao tiếp, thiết bị nhận sẽ gởi một xung Not_ACK (NACK) để báo cho thiết bị chủ biết. Thiết bị chủ sẽ tạo ra xung STOP để kết thúc hay lặp lại một xung START để bắt đấu quá trình mới.


3. Mode (chế độ) truyền dữ liệu giữa DS1307 và AT89S52


Trong giao tiếp I2C giữa DS1307 và 89S52 thì chip 89S52 đóng vai trò là một master và DS1307 đóng vai trò là một slave. Do chỉ có một master và một chip giao tiếp với nhau nên chỉ có 2 mode (chế độ) hoạt động giao tiếp giữa 2 chip này. Hai mode đó là: Data Write (từ AT89S52 đến DS14307) và Data Read (từ DS1307 vào AT89S52).

3.1. Mode Data Write (chế độ ghi dữ liệu)


Mode Data Write (chế độ truyền dữ liệu từ master đến slave) được dùng khi xác lập giá trị ban đầu cho các thanh ghi thời gian hoặc dùng để canh chỉnh thời gian cho chip DS1307. Cấu trúc truyền dữ liệu trong mode Data Write được mô tả như hình sau:



Chế độ data write

 Trước hết hãy nói về địa chỉ SLA (Slave Address) của chip DS1307 trong mạng I2C, trên mạng I2C mỗi thiết bị sẽ có một địa chỉ riêng gọi là SLA. SLA được tính theo lý thuyết chuẩn I2C sẽ có giá trị tối đa là 128 (do có 128 thiết bị trong 1 mạng I2C). Chip DS1307 là một Slave nên cũng có một địa chỉ SLA, giá trị này được set cố định là 1101000b (68h). Do SLA của DS1307 cố định nên trong 1 mạng I2C sẽ không thể tồn tại cùng lúc 2 chip này.

 Quan sát hình trên ta thấy, đầu tiên master (AT89S52) sẽ gởi điều kiện START đến Slave (DS1307), tiếp theo sau master sẽ là 7 bit địa chỉ SLA của slave (cố định là: 1101000b). Do chế độ này là Data Write nên bit W = 0 và sẽ được gởi kèm sau SLA. Bit ACK (A) được slave trả về cho master sau mỗi quá trình giao tiếp.

 Tiếp theo sau địa chỉ SLA sẽ là 1 byte chứa địa chỉ của thanh ghi cần truy cập (Word Address). Cần phân biệt địa chỉ của thanh ghi cần truy cập và địa chỉ SLA. Như đã đề cập trên, địa chỉ của thanh ghi cần truy cập sẽ được lưu trong thanh ghi địa chỉ (hay con trỏ địa chỉ), vì vậy byte dữ liệu đầu tiên sẽ được chứa trong thanh ghi địa chỉ của DS1307.

 Sau byte địa chỉ thanh ghi là một dãy các byte dữ liệu được ghi vào bộ nhớ của DS1307. Byte dữ liệu đầu tiên sẽ được ghi vào thanh ghi có địa chỉ được chỉ định bởi Word Address, sau khi ghi xong 1 byte thì Word Address tự động tăng nên các byte tiếp theo sẽ được ghi liên tiếp vào DS1307 ở các thanh ghi kế sau. Số lượng bytes dữ liệu cần ghi do master quyết định và không được vượt quá dung lương bộ nhớ của DS1307. Quá trình ghi kết thúc khi master phát ra điều kiện STOP.

Chú ý: Sau khi ghi thành công 1 byte thì DS1307 sẽ trả lời lại bằng một bit ACK. Nếu như byte được ghi vào là byte cuối cùng thì DS1307 sẽ trả lời lại bằng 1 bit Not_ACK (NACK).

Nếu sau khi gởi byte Word Address, master không gởi các byte dữ liệu mà gởi liền điều kiện STOP thì không có thanh ghi nào được ghi. Trường hợp này được dùng để set địa chỉ Word Address để phục vụ cho quá trình đọc.


3.2. Mode Data Read (chế độ dọc dữ liệu)


Mode Data Read (chế độ truyền dữ liệu từ salve về master) được sử dụng khi đọc thời gian thực từ DS1307 về AT89S52. Cấu trúc truyền dữ liệu trong mode Data Write được mô tả như hình sau:

Chế độ Data Read

Nguyên tắt truyền trong chế độ Data Read cơ bản cũng giống như trong truyền chế độ Data Write. Trong chế độ Data Read bit R = 1 sẽ được gởi kèm sau 7 bit SLA. Sau đó liên tiếp các byte dữ liệu được truyền từ DS1307 đến AT89S52. Điểm khác biệt trong cách bố trí dữ liệu của chế độ này so với chế độ Data Write là không có byte địa chỉ thanh ghi dữ liệu nào được gởi đến. Tất cả các byte theo sau SLA+R đều là dữ liệu đọc từ bộ nhớ của DS1307.



Lưu ý: dữ liệu được đọc tại thanh ghi được chỉ định bởi con trỏ địa chỉ, vì vậy muốn đọc chính xác dữ liệu từ một địa chỉ nào đó, chúng ta cần thực hiện quá trình ghi giá trị cho con trỏ định địa chỉ trước khi thực hiên quá trình đọc. Để ghi giá trị vào con trỏ định địa chỉ chúng ta sẽ gọi chương trình Data Write với chỉ 1 byte được ghi sau SLA+W như phần chú ý ở trên.

CHƯƠNG III: THIẾT KẾ PHẦN CỨNG

A. ĐO NHIỆT ĐỘ


Каталог: books -> luan-van-de-tai -> luan-van-de-tai-cd-dh
luan-van-de-tai-cd-dh -> Thế kỷ 21, cùng với sự phát triển nh­ vũ bão của khoa học kỹ thuật, của công nghệ thông tin. Sự phát triển kinh tế tác động đến tất cả mọi mặt đời sống kinh tế xã hội
luan-van-de-tai-cd-dh -> VIỆN ĐẠi học mở HÀ NỘi khoa công nghệ thông tin đỒ Án tốt nghiệP ĐẠi họC
luan-van-de-tai-cd-dh -> Phần một : Tình hình thu hút vốn đầu tư trên thị trường vốn việt nam hiện nay
luan-van-de-tai-cd-dh -> Em xin chân thành cảm ơn! Vị Xuyên, ngày 19 tháng 5 năm 2012 sinh viêN
luan-van-de-tai-cd-dh -> PHẦn I mở ĐẦu tầm quan trọng và SỰ ra đỜi của giấY
luan-van-de-tai-cd-dh -> Đề tài: Tìm hiểu về vấn đề sử dụng hợp đồng mẫu trong đàm phán ký kết hợp đồng mua bán ngoại thương và thực tiễn ở Việt Nam
luan-van-de-tai-cd-dh -> Đề tài phân tích thực trạng kinh doanh xuất khẩu cà phê nhân của các doanh nghiệP
luan-van-de-tai-cd-dh -> Giao tiếp máy tính và thu nhận dữ liệU ĐỀ TÀI: TÌm hiểu công nghệ 4g lte
luan-van-de-tai-cd-dh -> TRƯỜng đẠi học văn hóa hà NỘi khóa luận tốt nghiệP

tải về 461.56 Kb.

Chia sẻ với bạn bè của bạn:
1   2   3   4   5   6   7   8   9




Cơ sở dữ liệu được bảo vệ bởi bản quyền ©hocday.com 2024
được sử dụng cho việc quản lý

    Quê hương