Với công nghệ này cho phép các lệnh thực thi chỉ trong một chu kì xung nhịp, vì thế tốc độ xử lý dữ liệu có thể... Đây là thanh ghi dữ liệu của PORTx, nếu thanh ghi DDRx thiết lập cổng l
Trang 1MỤC LỤC
1.GIỚI THIỆU 1
1.1 Tổng quan 1
1.2 Tình hình nghiên cứu trong và ngoài nước 1
1.3 Nhiệm vụ luận văn 2
2 LÝ THUYẾT 2
2.1 TỔNG QUAN VỀ VI ĐIỀU KHIỂN ATMEGA 32 2
2.1.1 Giới thiệu 2
2.1.2 Sơ đồ chân của Atmega 32 3
2.1.3 Cấu trúc lõi của Atmega 32 4
2.1.4 ALU Arithmetic Logic Unit 6
2.1.5 Thanh ghi trạng thái 6
2.1.6 Tập các thanh ghi làm việc đa năng 7
2.1.7 Cổng vào ra của ATmega 32 8
2.1.8 Bộ chuyển đổi ADC 10
2.2 TỔNG QUAN VỀ REALTIMES DS1307 15
2.2.1 Sơ đồ chân DS1307 15
2.2.2 Cấu tạo bên trong của DS1307 16
2.2.3 Khái quát về giao diện I2C 20
2.3 TỔNG QUAN VỀ MODULE PHÁT RF nRF24L01 20
2.3.1 Giới thiệu 20
2.3.2 Khảo sát chip nRF24L01 21
2.3.3 Điều kiện làm việc 24
2.3.4 Hoạt động của nRF24L01 24
Trang 22.3.6 Chế độ standby 24
2.3.7 Chế độ RX 25
2.3.8 Chế độ TX 25
2.3.9 Chức năng Shockburst 26
2.3.10 Giao tiếp SPI của nRF24L01 27
2.3.11 Các thanh ghi trong nRF24L01 29
2.3.12 Module nRF24L01 39
2.4 TỔNG QUAN VỀ LCD 16x2 39
2.4.1 Giới thiệu về LCD 39
2.4.2 Sơ đồ chân 40
2.4.3 Thanh ghi và tổ chức bộ nhớ 41
2.4.4 Tập lệnh của LCD 44
2.4.5 Phương thức giao tiếp với LCD 45
2.5 TỔNG QUAN VỀ DS1820 46
2.5.1 Giới thiệu sơ lược về DS1820 46
2.5.2 Những đặc tính chung 46
2.5.3 Sơ đồ chân 46
2.5.4 Sự mô tả 47
2.5.5 Sơ đồ khối DS1820 47
2.5.6 Thao tác và cách đo nhiệt độ 48
2.5.7 Thao tác và báo động báo hiệu 50
2.5.8 Nguồn cấp cho DS1820 50
2.5.9 Bộ nhớ ROM 64 bit 52
2.5.10 Bộ nhớ DS1820 53
2.5.11 Các bước tiến hành để truy nhập đến DS1820 54
Trang 32.5.12 Các lệnh trên ROM của DS1820 54
2.5.13 Các lệnh chức năng của bộ nhớ DS1820 56
2.6 TỔNG QUAN VỀ IC GIAO TIẾP PC PL2303 57
2.6.1 Giới thiệu 57
2.6.2 Đặc điểm chung 58
2.6.3 Chức năng các chân của PL2303 60
2.7 TỔNG QUAN VỀ LƯU TRỮ MMC/SD 61
2.7.1 Giới thiệu về MMC/SD 61
2.7.2 Phương thức giao tiếp MMC/SD 63
2.7.3 Giao tiếp vi điều khiển với MMC/SD 65
3 THIẾT KẾ VÀ THỰC HIỆN PHẦN CỨNG 67
3.1 Sơ đồ khối của hệ thống 67
3.2 Sơ đồ nguyên lý mạch slave 67
3.2.1 Khối nguồn 67
3.2.2 Khối cảm biến nhiệt độ 67
3.2.3 Khối vi điều khiển 68
3.2.4 Khối tạo nhiệt 68
3.2.5 Khối thu phát RF 69
3.3 Sơ đồ nguyên lý mạch master 69
3.3.1 Khối nguồn 69
3.3.2 Khối thu phát RF 70
3.3.3 Khối vi điều khiển 70
3.3.4 Khối thời gian thực 71
3.3.5 Khối cài đặt 71
3.3.6 Khối hiển thị LCD 72
Trang 43.3.7 Khối kết nối PC 72
3.3.8 Khối lưu trữ SD/MMC: 73
3.3.9 Khối cảnh báo sự cố 73
4 THIẾT KẾ VÀ THỰC HIỆN PHẦN MỀM 74
4.1 Lưu đồ giải thuật mạch slave: 74
4.2 Lưu đồ giải thuật mạch master: 75
5 KẾT QUẢ THỰC HIỆN 77
5.1 Mạch slave 77
5.2 Mạch master 77
5.3 Giao diện giao tiếp máy tính 78
6 KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN 78
6.1 Kết luận 78
6.2 Hướng phát triển 79
7 TÀI LIỆU THAM KHẢO 79
8 PHỤ LỤC 80
8.1 Sơ đồ nguyên lý mạch Slave 80
8.2 Sơ đồ nguyên lý mạch Master 81
8.3 Chương trình Slave 81
8.4 Chương trình Master 84
Trang 5DANH SÁCH HÌNH MINH HỌA
Hình 2.1: Sơ đồ chân của Atmega 32 3
Hình 2.2: Sơ đồ lõi của ATmega 32 6
Hình 2.3: Thanh ghi trạng thái 6
Hình 2.4: Thanh ghi đa năng 8
Hình 2.5: Thanh ghi DDRA 9
Hình 2.6: Thanh ghi PORTA 9
Hình 2.7: Thanh ghi PINA 10
Hình 2.8: Thanh ghi SFIOR 10
Hình 2.9: Sơ đồ khối đơn giản của ADC 11
Hình 2.10: Ngõ vào vi sai 13
Hình 2.11: Thanh ghi ADMUX 13
Hình 2.12: Thanh ghi điều khiển và trạng thái ADC 14
Hình 2.13: Thanh ghi dữ liệu của ADC 15
Hình 2.14: Hai dạng cấu tạo chân của DS1307 16
Hình 2.15: Sơ đồ khối bên trong của DS1307 17
Hình 2.16: Tổ chức bộ nhớ trong DS1307 17
Hình 2.17: Tổ chức bit của các thanh ghi 18
Hình 2.18: Cấu trúc thanh ghi điều khiển 19
Hình 2.19: Cơ chế truyền dữ liệu giữa Master và Slave 20
Hình 2.20: Sơ đồ khối chip nRF24L01 22
Hình 2.21: Sơ đồ chân chip nRF24L01 22
Hình 2.22: Biểu đồ hoạt động đọc SPI của nRF24L01 29
Hình 2.23: Biểu đồ hoạt động ghi SPI của nRF24L01 29
Trang 6Hình 2.24: Sơ đồ nguyên lý module nRF24L01 39
Hình 2.25: LCD 16x2 40
Hình 2.26: Tổ chức DDRAM 42
Hình 2.27: Hình dạng và sơ đồ chân của DS1820 47
Hình 2.28: Sơ đồ khối DS1820 48
Hình 2.29: Thanh ghi lưu trữ nhiệt độ đo 49
Hình 2.30: Thanh ghi định dạng TH và TL 50
Hình 2.31: Sử dụng MOSFET để cấp nguồn cho DS1820 51
Hình 2.32: Không sử dụng DS1820 cấp nguồn cho DS1820 52
Hình 2.33: Nội dung của dãy 64 bit trên ROM 52
Hình 2.34: Sơ đồ bộ nhớ DS1820 53
Hình 2.35: PL 2303 thực tế 57
Hình 2.36: Sơ đồ khối PL2303 58
Hình 2.37: Sơ đồ chân của PL2303 59
Hình 2.38: Bố trí chân MMC và SD 61
Hình 2.39: Sơ đồ kết nối giữa chip điều khiển và card MMC/SD 63
Hình 2.40: Trình tự khởi động MMC/SD 66
Hình 3.1: Sơ đồ khối hệ thống 67
Hình 3.2: Sơ đồ khối nguồn 67
Hình 3.3: Sơ đồ khối cảm biến nhiệt 68
Hình 3.4: Sơ đồ khối vi điều khiển 68
Hình 3.5: Sơ đồ khối tạo nhiệt 69
Hình 3.6: Khối thu phát RF 69
Hình 3.7: Sơ đồ khối nguồn 70
Hình 3.8: Sơ đồ khối thu phát RF 70
Trang 7Hình 3.9: Sơ đồ khối vi điều khiển 71
Hình 3.10: Sơ đồ khối Realtime 71
Hình 3.11: Sơ đồ khối cài đặt nhiệt độ 72
Hình 3.12: Sơ đồ khối hiển thị LCD 72
Hình 3.13: Sơ đồ khối giao tiếp máy tính 73
Hình 3.14: Sơ đồ khối lưu trữ SD/MMC 73
Hình 3.15: Sơ đồ khối cảnh báo 73
Hình 4.1: Lưu đồ giải thuật Slave 74
Hình 4.2: Lưu đồ giải thuật Master 76
Hình 5.1: Mô hình khối Slave 77
Hình 5.2: Mô hình khối Master 77
Hình 5.3: Giao diện giao tiếp với máy tính 78
Hình 8.1 Sơ đồ mạch Slave 80
Hình 8.2 Sơ đồ mạch master 81
Trang 8DANH SÁCH BẢNG SỐ LIỆU
Bảng 2.1 Lựa chọn điện thế tham chiếu 13
Bảng 2.2 Lựa chọn tần số trên chân SQW/OUT 19
Bảng 2.3 Chức năng các chân của nRF24L01 23
Bảng 2.4 Điều kiện làm việc của nRF24L01 24
Bảng 2.5 Các chế độ hoạt động của nRF24L01 24
Bảng 2.6 Thời gian chuyển đổi giữa các chế độ 26
Bảng 2.7 Mã lệnh SPI của nRF24L01 28
Bảng 2.8 Kí hiệu trong biểu đồ hoạt động SPI 29
Bảng 2.9 Register CONFIG 29
Bảng 2.10 Register EN_AA 30
Bảng 2.11 Register EN_RXADDR 31
Bảng 2.12 Register SETUP_AW 31
Bảng 2.13 Register SETUP_RETR 32
Bảng 2.14 Register RF_CH 32
Bảng 2.15 Register RF_SETUP 33
Bảng 2.16 Register STATUS 33
Bảng 2.17 Register OBSERVE_TX 34
Bảng 2.18 Register CD 34
Bảng 2.19 Register RX_ADDR_P0 à RX_ADDR_P5 34
Bảng 2.20 Register TX_ADDR 35
Bảng 2.21 Register RX_PW_P0 à RX_PW_P0 35
Bảng 2.22 Register FIFO_STATUS 37
Bảng 2.23 Register ACK_PLD 38
Trang 9Bảng 2.24 Register RX_PLD 38
Bảng 2.25 Register TX_PLD 38
Bảng 2.26 Chức năng các chân của LCD 16x2 41
Bảng 2.27 Các mode giao tiếp của LCD 42
Bảng 2.28 Bảng dò giá trị đo nhiệt độ 49
Bảng 2.29 Chức năng các chân của PL2303 60
Bảng 2.30 Ý nghĩa của các bit trong lệnh 64
Trang 101 GIỚI THIỆU
Hệ thống điều khiển từ xa có vai trò quan trọng trong công cuộc công nghiệp hóa, hiện đại hóa đất nước Trong ngành công nghiệp, điều khiển nhiệt độ là một vấn đề rất quan trọng Trong ngành luyện kim, cần phải đạt đến một nhiệt độ nào đó
để kim loại nóng chảy, và cũng cần đạt một nhiệt độ nào đó để ủ kim loại nhằm đạt được tốt các đặc tính cơ học như độ bền, độ dẻo, độ chống gỉ sét, có thể đo nhiệt độ trong môi trường độc hại một cách dễ dàng hơn … Trong ngành thực phẩm, cần duy trì một nhiệt độ nào đó để nướng bánh, để nấu, để bảo quản … Trong nông nghiệp thì cần nhiệt độ để sấy nông sản hoặc ủ cho hạt giống nảy mầm … Trong chăn nuôi thì cần có nhiệt độ để ấp trứng, để sưởi ấm gia súc khi mùa đông đến …
Từ đó, điều khiển nhiệt độ trở thành một yếu tố không thể thiếu trong cuộc sống của chúng ta Và theo đà phát triển của các học thuyết về điều khiển tự động, thì nhiều nghiên cứu cho kết quả của quá trình đo và điều khiển nhiệt độ ngày càng phong phú và đa dạng hơn
Trên thế giới, ở các nước phát triển không ít những công trình nghiên cứu khoa học đã thành công khi ứng dụng kỹ thuật điều khiển từ xa để điều khiển các thiết bị trong công nghiệp cũng như trong dân dụng mà đặc biệt là trong quân sự: Tại Nga có những nhà máy điện, những kho lưu trữ tài liệu quý đã ứng dụng hệ thống điều khiển từ xa và tự động báo động để đóng ngắt những nơi cao áp, tự động
xã bình chữa cháy …và cũng tại Nga đã có hệ thống điều khiển và báo động thông qua mạng Internet để điều khiển nhà máy điện nguyên tử
Ở nước ta mạch cảm biến cảnh báo và kiểm soát nhiệt độ bằng sóng RF là một
đề tài không mới, trong các khoá học trước đã có người nghiên cứu Nhưng vì tính thực tiễn của đề tài này nên nó cần được tiếp tục nghiên cứu và hoàn chỉnh để đưa
ra giải pháp tối ưu Trong các kết quả nghiên cứu trước thì nhiệt độ thu được sẽ được hiển thị trên LCD hoặc trên Led 7 đoạn để theo dõi khi đang vận hành Với đề tài này thì giá trị nhiệt độ được truyền lên PC vẽ ra giản đồ nhiệt theo thời gian, vi
Trang 11xử lý điều khiển nhiệt độ cho thích hợp với giá trị cài đặt và đồng thời phát ra tín hiệu cảnh báo khẩn cấp nếu xảy ra sự cố
Trong đề tài này, sinh viên thực hiện dùng IC rời kết hợp với Modun RF chuyên dụng để tạo ra mạch ứng dụng hoàn chỉnh Hiện nay xu hướng sử dụng sóng
RF để điều khiển thiết bị từ xa rất được ưa chuộng Hệ thống đo nhiệt độ có sử dụng
RF giúp cho ứng dụng càng rộng rãi hơn trong cuộc sống
Với thời gian, cũng như khả năng có hạn nên người thực hiện đề tài chỉ tập trung nghiên cứu các vấn đề sau:
• Tìm hiểu lý thuyết về: vi điều khiển ATMEGA32, IC cảm biến nhiệt độ DS1820, bộ đếm thời gian DS1307, bộ thu phát sóng RF nRF24L01, màn hình LCD 16x2, khối giao tiếp với máy tính dùng PL2303, lưu trữ thẻ nhớ SD/MMC
• Thiết kế và thi công mạch đo, điều khiển tắt mở nguồn nhiệt và phát tín hiệu nhiệt độ (slave)
• Thiết kế và thi công mạch nhận, hiển thị, lưu trữ tín hiệu nhiệt độ và phát tín hiệu cảnh báo khẩn cấp khi xảy ra sự cố (master)
ATmega là bộ vi điều khiển CMOS 8 bits tiêu thụ điện năng thấp dựa trên kiến trúc RISC Vào ra Analog – Digital và ngược lại Với công nghệ này cho phép các lệnh thực thi chỉ trong một chu kì xung nhịp, vì thế tốc độ xử lý dữ liệu có thể
Trang 12đạt đến 1 triệu lệnh/giây ở tần số 1Mhz Vi điều khiển này cho phép người thiết kế
có thể tối ưu hoá chế độ tiêu thụ năng lượng mà vẫn đảm bảo tốc độ xử lý
Atmega được hỗ trợ đầy đủ phần mềm và công cụ phát triển hệ thống bao gồm: trình dịch Assembly như AVR studio của Atmel, trình dịch C như win AVR, CodeVision AVR C,… Trình dịch C đã được nhiều người dùng và đánh giá tương đối mạnh, đó là trình dịch CodeVision AVR C Phần mềm này hỗ trợ nhiều ứng dụng và có nhiều hàm có sẵn nên việc lập trình tốt hơn
Atmega 32 là loại vi điều khiển CMOS, nguồn thấp, 8 bits, xây dựng trên nền tảng cấu trúc tập lệnh thu gọn cho AVR Gồm 32 thanh ghi làm việc liên kết trực tiếp với bộ xử lý số học ALU
• Chân VCC: Điện áp nguồn nuôi
• Chân GND: Nối mass
• PortA (PA7…PA0): PortA là Port vào/ ra hai hướng 8 bit, các chân của Port
A có các điện trở nối lên nguồn dương Các chân ra của Port A có thể cho phép dòng điện 20mA đi qua và trực tiếp điều khiển LED hiển thị
Khi các chân PA0 đến PA7 là các ngõ vào và được đặt xuống mức thấp từ bên ngoài, chúng sẽ là nguồn dòng nếu các điện trở nối lên nguồn dương được kích hoạt Các chân của Port A ở vào trạng thái có điện trở cao khi tín hiệu reset ở mức tích cực hoặc ngay cả khi không có tín hiệu xung clock
Trang 13Port A cung cấp các đường địa chỉ/ dữ liệu vào/ ra hoạt động theo kiểu đa hợp kênh khi dùng bộ nhớ SRAM ở bên ngoài
Port A còn có thêm chức năng là ngõ vào tương tự và đưa đến bộ chuyển đổi Analog sang Digital
• Các Port B, C, D tương tự như Port A
• Chân RESET: ngõ vào đặt lại Bộ vi điều khiển sẽ được reset lại khi chân này ở mức thấp trong khoảng thời gian 50ns, các xung ngắn hơn không tạo ra tín hiệu reset
• XTAL1: Lối vào bộ vào mạch tạo xung dao động
• XTAL2: Lối ra bộ vào mạch tạo xung dao động
• XTAL1 và XTAL2 lần lượt là lối vào và lối ra của một bộ khuếch đại đảo
Bộ khuếch đại này được bố trí để làm bộ tạo dao động trên chip Một bộ tinh thể thạch anh hoặc một bộ cộng hưởng có thể được sử dụng Để điều khiển bộ vi điều khiển từ một nguồn xung nhịp bên ngoài, chân XTAL2 để trống, còn chân XTAL1 được nối với bộ dao động bên ngoài
• Chân ICP: Là chân vào cho chức năng bắt tín hiệu vào bộ timer/ counter1
• Chân OC1B: Là chân ra PWM, ngõ ra so sánh của timer/ counter1
• Chân ALE: Là chân tín hiệu cho phép chốt địa chỉ được dùng khi truy nhập
bộ nhớ ngoài Xung ALE được dùng để chốt 8 bits địa chỉ thấp vào một bộ chốt địa chỉ trong chu kỳ truy cập bộ nhớ thứ nhất Sau đó các chân AD0-AD7 được dùng làm các đường dữ liệu trong chu kỳ truy nhập bộ nhớ thứ hai
• Chân AVCC: là chân điện áp cung cấp nguồn cho PortA và một bộ chuyển đổi A/D Được kết nối với Vcc bên ngoài ngay cả khi không được sử dụng ADC Nếu ADC được sử dụng, nó phải được kết nối với Vcc thông qua một bộ lọc thông thấp
• Chân AREF: là chân tham chiếu tín hiệu tương tự cho quá trình chuyển đổi A/D
Trang 14Lõi của AVR sử dụng kiến trúc Harvard – các bus riêng biệt cho chương trình
và dữ liệu Lệnh từ bộ nhớ chương trình thực thi thông qua một ống đơn cấp Khi một lệnh đang thực thi, lệnh tiếp theo sẽ được nhốt từ bộ nhớ chương trình, cho phép các lệnh thực thi trong mỗi chu kỳ của xung clock
Các 32 thanh ghi ( 8 bits) cho phép truy xuất nhanh trong một chu kỳ clock Trong hoạt động thông thường của ALU, hai toán hạng xuất ra từ thanh ghi làm việc, lệnh thực thi, và kết quả lưu ngược lại thanh ghi làm việc chỉ trong 1 chu kỳ clock
Có 6 thanh ghi trong số 32 thanh ghi được dùng như con trỏ địa chỉ gián tiếp
16 bits sử dụng cho địa chỉ không gian dữ liệu Một trong 3 thanh ghi địa chỉ này có thể được dùng như con trỏ địa chỉ Look-up table trong bộ nhớ Flash
Bộ ALU hỗ trợ các hoạt động tính toán số học và logic giữa thanh ghi với nhau, hay giữa thanh ghi với hằng số Các hoạt động từng thanh ghi đơn cũng được thực hiện trong ALU Sau khi tính toán, thanh ghi trạng thái cập nhật thông tin liên quan đến kết quả tính toán
Bộ nhớ chương trình chia làm hai phần: Boot Loader và vùng ứng dụng Cả hai đều sử dụng các lock bit để bảo vệ đọc/ ghi Lệnh SPM thực thi vùng ghi dữ liệu vào vùng flash ứng dụng phải được đặt trong vùng Boot Loader
Bộ nhớ của Atmega32 gồm có 3 phần: RAM tĩnh, RAM ngoại và EFROM
Trong quá trình ngắt hay gọi chương trình con, địa chỉ trả về của bộ đếm chương trình lưu trong ngăn xếp Ngăn xếp được phân bổ trong một phần bộ nhớ SRAM, vì vậy độ lớn của ngăn xếp chỉ phụ thuộc vào SRAM và việc sử dụng SRAM
Chương trình ngắt linh hoạt có thanh ghi điều khiển riêng trong không gian IO
và có bit cho phép ngắt toàn cục trong thanh ghi trạng thái Tất cả các ngắt đều có vector ngắt riêng trong bảng vector ngắt Các ngắt có ưu tiên ngắt theo đúng vị trí ngắt của nó Địa chỉ ngắt càng thấp thì độ ưu tiên càng cao
Trang 15Hình 2.2: Sơ đồ lõi của ATmega 32
Bộ ALU hiệu suất cao của AVR hoạt động trong liên kết trực tiếp với 32 thanh ghi làm việc Hoạt động của ALU được chia ra làm 3 phần chính: xử lý số học, phép toán logic và các phép toán bit
Thanh ghi trạng thái chứa 8 bit cờ chỉ trạng thái của bộ xử lý, tất cả các bit này đều bị xóa sau khi reset, các bit này cũng có thể được đọc và ghi bởi chương trình Thanh ghi trạng thái không tự động lưu lại khi nhảy vào chương trình ngắt và cũng không tự động phục hồi khi quay về, cần thực hiện điều này bằng phần mềm
Trang 16• Bit 7 – I: Bit cho phép ngắt toàn bộ
Bit này cần được set lên 1 nếu trong chương trình có sử dụng ngắt Sau khi set bit này, bạn muốn kích hoạt loại ngắt nào cần set các bit ngắt riêng của ngắt đó
Chú ý: bit toàn cục này sẽ bị xóa tự động bằng phần cứng khi có ngắt nào đó xảy ra Và nó được set trở lại tự động bằng phần cứng khi lệnh kết thúc chương trình ngắt được thực thi
Bit toàn cục cũng có thể được set/ clear bằng phần mềm thông qua lệnh SEI/ CLE
• Bit 6 - T: Bit coppy Storage, được sử dụng trong 2 Intruction BLD (Bit LoaD) và bit BST (Bit Storage)
• Bit 5 – H: cờ nhờ nữa, cờ H là cờ nhớ trong một vài phép toán đại số và phép logic, cờ này hiệu quả đối với các phép toán số BCD
• Bit 4 – S: Bit dấu, bit S là kết quả phép XOR giữa 1 cờ N và V, S=N xor V
• Bit 0 – C: là cờ nhớ, là bit nhớ trong các phép đại số hoặc logic
Tất cả các lệnh đều được thực thi trên các thanh ghi làm việc có thể truy xuất đến các thanh ghi, và hầu hết là các lệnh thực thi trong 1 chu kỳ clock
Thanh ghi R0 được dùng để load chương trình vào trong bộ nhớ của AVR Các thanh ghi R26, R27, R28, R29, R30 và R31 ngoài chức năng thông thường còn được sử dụng như các con trỏ để truy xuất đến bộ nhớ một cách gián tiếp
Trang 17Hình 2.4: Thanh ghi đa năng
ATmega 32 có 4 port vào ra 8 bit là: Port A, Port B, Port C và Port D tương ứng với 32 đường vào ra Các cổng vào ra của ATmega 32 là cổng vào ra hai chiều
có thể định hướng, tức có thể chọn hướng của cổng là hướng vào hay hướng ra Tất
cả các cổng vảo ra của ATmega điều có tính năng đọc – chỉnh sửa – ghi, khi sử dụng chúng như các cổng vào ra số thông thường Tất cả các chân của các port đều
có điện trở kéo lên, ta có thể cho phép hay không cho phép điện trở kéo lên này hoạt động
Điện trở kéo lên là một điện trở được dùng khi thiết kế các điện tử logic Nó
có một đầu được nối với nguồn điện áp dương và đầu còn lại được nối với tín hiệu lối vào/ ra của một mạch logic chức năng Điện trở kéo lên có thể được lắp đặt tại các lối vào của khối mạch logic để thiết lập mức logic lối vào của khối mạch khi không có thiết bị ngoài nào nối với lối vào Ngoài ra, điện trở kéo lên còn được lắp đặt tại lối ra của khối mạch khi lối ra không thể nối nguồn để tạo dòng
2.1.7.1 Hoạt động của các Port xuất nhập
Mỗi port vào/ ra của vi điều khiển được liên kết với 3 thanh ghi: PORTx, DDRx, PINx, ở đây x là các port A, B, C, D Ba thanh ghi này sẽ được phối hợp với
Trang 18nhau để điều khiển hoạt động của cổng, chẳng hạn thiết lập port thành lối vào có sử dụng điện trở kéo lên
Đây là thanh ghi 8 bit có chức năng điều khiển hướng của cổng vào hoặc ra Khi một bit của thanh ghi được set lên 1 thì chân tương ứng với nó được cấu hình thành ngõ ra Ngược lại, nếu bit của thanh ghi DDRx là 0 thì chân tương ứng với nó được thiết lập thành ngõ vào
Đây là thanh ghi dữ liệu của PORTx, nếu thanh ghi DDRx thiết lập cổng là lối
ra, khi đó giá trị của thanh ghi PORTx cũng là giá trị của các chân tương ứng của PORTx, nghĩa là khi ghi một giá trị logic lên 1 bit của thanh ghi này thì chân tương ứng với bit đó cũng có cùng mức logic Khi thanh ghi DDRx thiết lập cổng thành lối vào thì thanh ghi PORTx đóng vai trò như một thanh ghi điều khiển cổng Cụ thể, nếu một bit của thanh ghi này được set lên 1 thì điện trở kéo lên ở chân tương ứng với nó sẽ được kích hoạt, ngược lại nếu bit được ghi thành 0 thì điện trở kéo lên
ở chân tương ứng sẽ không được kích hoạt, cổng ở trạng thái cao trở ( Hi-Z )
PINx không phải là một thanh ghi thực sự, đây là địa chỉ trong bộ nhớ I/O kết nối trực tiếp tới các chân của cổng Khi ta đọc PORTx tức là ta đọc dữ liệu được chốt trong PORTx, còn khi đọc PINx thì giá trị logic hiện thời ở chân của cổng
Trang 19tương ứng được đọc Vì thế đối với thanh ghi PINx ta chỉ có thể đọc mà không thể ghi
Ngoài 2 bit của các thanh ghi DDRx và PORTx tham gia điều khiển điện trở kéo lên, còn có một tín hiệu nữa điều khiển điện trở kéo lên, đó là tín hiệu PUD, đây
là bit nằm trong thanh ghi SFIOR, khi set bit này thành 1 thì điện trở kéo lên sẽ không được cho phép bất kể các thiết lập của các thanh ghi DDRx và PORTx Khi bit này là 0 thì điện trở kéo lên được cho phép nếu { DDRxn, PORTxn } = { 0, 1 }
2.1.8.1 Giới thiệu bộ chuyển đổi ADC
Bộ biến đổi ADC có chức năng biến đổi tín hiệu tương tự thành tín hiệu số Bộ ADC của Atmega32 có độ phân giải 10 bit, Có thể chuyển đổi ở độ phân giải cao,
có 8 kênh ngõ vào nguồn đơn thông qua bộ dồn kênh, 7 kênh ngõ vào vi sai với độ lợi tùy chọn, dải điện áp ngõ vào ADC từ 0 đến Vcc, có thể lựa chọn điện áp tham chiếu 2.56V cho ADC, có chế độ tự kích hoạt ADC bằng nguồn ngắt, và tính năng chống nhiễu cho ADC Bộ ADC của Atmega32 là loại ADC xấp xỉ liên tiếp với 2 chế độ chuyển đổi liên tục và chuyển đổi từng bước Sơ đồ khối đơn giản của một
bộ ADC thể hiện như hình 2.9
Trang 20Hình 2.9: Sơ đồ khối đơn giản của ADC Nguyên tắc hoạt động của khối ADC: Tín hiệu tương tự đưa vào các ngõ ADC0 đến ADC7 được lấy mẫu và biến đổi thành tín hiệu số tương ứng Tín hiệu
số được lưu trong hai thanh ghi ADCH và ADCL Một ngắt có thể được tạo ra khi hoàn thành một chu trình biến đổi ADC
Điện thế tham chiếu là giá trị điện thế dùng để so sánh với điện thế của tín hiệu tương tự cần biến đổi ở ngõ vào ADC Atmega32 sử dụng điện thế tham chiếu nội là 2.56V, và Vref là tùy chọn
Tần số Clock ADC: là tần số clock cung cấp cho bộ biến đổi ADC, giá trị có thể thay đổi từ vài KHz đến vài MHz Tuy nhiên, tần số thích hợp khoảng từ 50KHz đến 200KHz cho độ phân giải 10 bit và có thể cao hơn 200KHz nếu độ phân giải thấp hơn
Ngõ vào tương tự: ATmega32 có hai lựa chọn ngõ vào tương tự:
• 10 ngõ vào đơn hướng: 10 ngõ vào này là ADC0: ADC7, AGND và bandgapreference Thực tế thường dùng 8 ngõ vào ADC0:ADC7 Vì có 8 ngõ vào ADC0:ADC7 nên ta có thể đưa vào 8 tín hiệu tương tự khác nhau Khi lựa chọn ngõ vào kiểu này thì kết quả chuyển đổi được tính như sau:
Trang 21• Ngõ vào vi sai: ta có thể đưa hai tín hiệu tương tự vào ngõ vào ADC, hai tín hiệu tương tự này sẽ qua một bộ vi sai, kết quả ở ngõ ra có thể được khuếch đại rồi sau đó mới đưa vào khối ADC để biến đổi Bộ vi sai có 2 ngõ vào là Vpos (ngõ vào dương) và Vneg (ngõ vào âm) Các chân ADC3:ADC7 dùng làm ngõ vào dương, các chân ADC0:ADC2 là ngõ vào âm, hình 2.10 Đối với lựa chọn này, kết quả ADC sẽ là:
Với:
• Gain: là độ lợi có thể tùy chọn
• VPOS: là điện áp trên chân ngõ vào positive
• VNEG: là điện áp trên chân ngõ vào negative
• VREF: là điện áp tham chiếu lựa chọn
Công thức trên cho thấy kết quả ADC có thể là số âm khi Vpos < Vneg Do
đó, dải giá trị của ADC trong trường hợp này là -512 tới 511 Vì vậy, kết quả trong thanh ghi ADC được biểu diễn dưới dạng số bù 2 Để biết được kết quả là số âm hay dương ta kiểm tra bit ADC9 (trong thanh ghi ADCH), nếu bit này là 1 thì kết quả là số âm, nếu bit này là 0 thì kết quả là số dương
Chú ý: Điện thế qua bộ vi sai có thể âm, nhưng điện thế cấp ở các ngõ vào ADC0:ADC7 (cho cả hai trường hợp ngõ vào vi sai và ngõ vào đơn hướng) phải luôn nằm trong khoảng 0V-AVcc
Trang 22Hình 2.10: Ngõ vào vi sai Chế độ hoạt động: Có hai chế độ hoạt động của bộ ADC là chuyển đổi liên tục
và chuyển đổi từng bước
2.1.8.2 Các thanh ghi của bộ ADC
Bit 7: Bit 6 – REFS1:REFS0: Reference Selection Bits: hai bit này dùng để lựa chọn điện thế tham chiếu là một trong 3 nguồn: AVCC, điện thế tham chiếu nội 2.56V và VREF như bảng 2.1 Nếu chọn điện thế VREF thì các tùy chọn còn lại không được sử dụng để tránh bị ngắn mạch, điều này có nghĩa là nếu ta chọn điện thế tham chiếu là VREF rồi, thì trong suốt quá trình hoạt động của bộ ADC ta không được lựa chọn điện thế tham chiếu khác
Trang 23Bit 5 – ADLAR: ADC Left Adjust Result: Bit này lựa chọn cách bố trí dữ liệu trong hai thanh ghi dữ liệu ADCH và ADCL
Bits 4:0 – MUX4:0: Analog Channel and Gain Selection Bits: Các bit này lựa chọn kiểu ngõ vào (đơn hay vi sai) và độ lợi
Bit 7 – ADEN: ADC Enable: Bit này là 1 sẽ cho phép bộ ADC hoạt động, ngược lại sẽ ngừng bộ ADC ngay cả khi nó đang trong quá trình biến đổi
Bit 6 – ADSC: ADC Start Conversion: Ghi bit này thành 1 để bắt đầu quá trình chuyển đổi Trong chế độ chuyển đổi từng bước, sau mỗi lần chuyển đổi hoàn thành bit này bị xóa về 0, ta phải set lại bit này để bắt đầu một biến đổi tiếp theo Trong chế độ chuyển đổi liên tục, ta chỉ cần set bit này một lần
Bit 5 – ADFR: ADC Free Running Select: Set bit này lên 1 để lựa chọn chế
độ hoạt động biến đổi liên tục Bit này là 0 sẽ cho phép chế độ biến đổi từng bước Bit 4 – ADIF: ADC Interrupt Flag: Bit này sẽ được set thành 1 khi một chu trình biến đổi ADC hoàn thành, bit này được xóa bởi phần cứng khi trình phục vụ ngắt tương ứng được thực thi Chú ý là khi ta chỉnh sửa thanh ghi ADCSRA (như dùng các lệnh CBI, SBI) thì bit này sẽ bị xóa Vì vậy, để xóa bit này bởi phần mềm,
ta chỉ cần ghi giá trị 1 vào nó
Bit 3 – ADIE: ADC Interrupt Enable: Bit này cho phép ngắt ADC, khi bit ADIE (cho phép ngắt ADC) và bit I (cho phép ngắt toàn cục) trong thanh ghi SREG được set lên 1 sẽ cho phép ngắt ADC hoạt động
Bits 2:0 – ADPS2:0: ADC Prescaler Select Bits: Vì tần số clock ADC được lấy từ xung clock hệ thống, nên các bit ADPS2:0 sẽ cho phép chia xung clock hệ thống với các hệ số xác định trước khi đưa vào nguồn clock ADC Với độ phân giải
10 bit, tần số clock ADC khoảng từ 50 – 200 KHz, nên tùy theo tần số clock hệ
Trang 242.1.8.2.3 Thanh ghi dữ liệu cao và thấp của ADC
Đây là hai thanh ghi chứa kết quả ADC, tùy theo thiết lập của bit ADLAR trong thanh ghi ADMUX, mà 10 bit dữ liệu ADC có thể được bố trí về phía phải hay trái của hai thanh ghi ADCH và ADCL, cụ thể như sau:
Khi một quá trình chuyển đổi ADC hoàn tất thì kết quả sẽ được lưu trong 2 thanh ghi này Trường hợp các kênh vi sai được sử dụng cho việc chuyển đổi ADC thì giá kết quả được lưu chính là 2 dạng bù nhau
Khi ADCL được đọc, thanh ghi DATA của ADC sẽ không được cập nhật cho đến khi ADCH được đọc xong Như vậy, nếu kết quả đang được canh trái và không cần chính xác hơn 8 bit thì chỉ cần đọc ADCH Ngược lại thì phải đọc ADCL trước sau đó mới đọc đến ADCH
Bit ADLAR trong ADMUX, và bit MUXn trong thanh ghi ADMUX tác động lên kết quả được đọc ra từ các thanh ghi Nếu ADLAR bằng 1 thì kết quả là canh trái, nếu ADLAR bằng 0 thì kết quả là canh phải
ADC 9:0 – Là kết quả chuyển đổi ADC, các bit này thể hiện kết quả từ quá trình chuyển đổi
DS1307 là chip đồng hồ thời gian thực, khái niệm thời gian thực ở đây có ý 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ờ…
Trang 25DS1307 là một sản phẩm của Dallas Semiconductor 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
Khi mất nguồn, DS1307 tự động chuyển sang dùng nguồn Pin Lithium 3V gắn ngoài nên DS1307 vẫn đang hoạt động nhưng không ghi và đọc được Hoạt động với khoảng nhiệt độ: -400C đến 850C
Hình 2.14: Hai dạng cấu tạo chân của DS1307
Các chân DS1307 được mô tả như sau:
- X1:X2: là hai chân kết nối với thạch anh 32.768Khz tạo nguồn dao động
- VBAT: cực dương của nguồn pin 3V nuôi chíp
- GND: chân mass chung cho cả nguồn pin 3V và Vcc
- Vcc: nguồn cho giao diện I2C thường là 5V, dùng chung với vi điều khiển
- SQW/OUT: là chân tạo ra xung vuông của DS1307 có 4 chế độ: 1Hz, 4.096kHz, 8.192kHz, 32.768kHz các chế độ này được quy định bởi thanh ghi Control Register có địa chỉ 0x07h
- SCL và SDA: đường xung nhịp và đường dữ liệu của giao diện I2C
Cấu tạo bên trong của 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 diện I2C, con trỏ điều khiển, các thanh ghi (RAM) Đa số các thành phần bên trong của DS1307 là phần cứng nên khi sử dụng chủ yếu là ghi và đọc dữ liệu từ các thanh ghi của chip này Do vậy cần phải hiểu rõ 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
Trang 26Hình 2.15: Sơ đồ khối bên trong của DS1307
Bộ nhớ của DS1307 có tất cả 64 thanh ghi 8bit đượ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 có chức năng
“đồng hồ”, còn lại 56 thanh ghi có chức năng như là RAM dùng để lưu trữ Bảy thanh ghi đầu tiên chứa thời gian của đồng hồ giây, phút, giờ, ngày, tháng, năm 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 Realtime Việc đọc giá trị từ bảy thanh ghi này là quá trình đọc thời gian thực từ Realtime tạo ra
Hình 2.16: 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, tổ chức bit của các thanh ghi như sau:
Trang 27Hình 2.17: Tổ chức bit của các thanh ghi
Tất cả các giá trị thời gian lưu trong thanh ghi lưu theo dạng BCD
• Thanh ghi giây: là thanh ghi đầu tiên trong bộ nhớ của DS1307, địa chỉ là 0x00H 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 bit là
đủ Bit cao nhất ( bit thứ 7) trong thanh ghi này là 1 bit điều khiển có tên là 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: có địa chỉ 0x01H, chứa giá trị phút của đồng hồ Tương tự thanh ghi giây, 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ờ: 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, vì vậy bit thứ 6 dùng để xác lập hệ thống giờ Nếu bit thứ 6 bằng 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 bằng 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
Trang 28chỉ buổi trong ngày (AM hoặc PM) Bit thứ 5 bằng 0 là AM và bit thứ 5 bằng 1 là
PM Bit thứ 7 luôn bằng 0
• Thanh ghi thứ (ngày trong tuần): nằm ở địa chỉ 0x03H Thanh ghi này chỉ mang giá trị từ 1 đến 7 tương ứng từ chủ nhật đến thứ 7 trong tuần Vì thế, chỉ có 3 bit trong thanh ghi này có nghĩa Các bit còn lại bằng 0
• Thanh ghi ngày: nằm ở địa chỉ 0x04H Thanh ghi DATE mang giá trị từ 1 đến 31, chỉ có 5 bit đầu tiên có nghĩa Các bit còn lại luôn bằng 0
• Thanh ghi tháng: nằm ở địa chỉ 0x05H Thanh ghi tháng mang giá trị từ 1 đến 12, chỉ có 4 bit đầu tiên có nghĩa Các bit còn lại bằng 0
• Thanh ghi năm: 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: có địa chỉ 0x07H, thanh ghi CONTROL REGISTER được biểu diễn như sau:
Hình 2.18: Cấu trúc thanh ghi điều khiển
Bit 1 và 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:
Bảng 2.2 Lựa chọn tần số trên chân SQW/OUT
Bit 7_ Output Control (OUT): dùng để kiểm soát mức logic tại SQW/OUT
Trang 29Bit 4_Square-Wave Enable (SQWE): bit này được set lên bằng 1 để tạo dao động ở đầu ra
I2C là viết tắt của từ Inter – Intergrated Circuit là một chuẩn truyền thông nối tiếp đồng bộ do hãng Philips Semiconductor sáng lập và xây dựng thành chuẩn Các khái niệm cơ bản trong giao diện I2C:
• Master (Chip chủ): là chíp 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à khôi 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 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 phải 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
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 hai hướng, còn SCL là đường truyền xung đồng
hồ chỉ truyền theo một hướng từ Master đến Slave
Hình 2.19: Cơ chế truyền dữ liệu giữa Master và Slave
nRF24L01 là một trong những dòng sản phẩm của nhà sản xuất Nordic (Nauy), có chức năng thu phát tín hiệu qua sóng RF sử dụng điện áp thấp
Trang 30Đặc điểm của chip nRF24L01:
• Thực hiện chức năng thu phát dữ liệu bằng sóng RF tần số 2.4GHz
• Sử dụng dạng điều chế GFSK
• Tốc độ truyền tải dữ liệu trong không khí 1Mbp – 2Mbp
• Tiêu thụ năng lượng thấp, sử dụng điện áp thấp (3.3V)
• Sử dụng giao thức phần cứng Shockburst
+ Tự động tạo gói dữ liệu (Preamble, Address, CRC)
+ Tự động phát hiện gói dữ liệu và xác nhận
+ Lựa chọn dữ liệu từ 1-32 Byte
+ Có khả năng truyền lại dữ liệu
+ Tự động xác nhận mã ACK
+ Có 6 đường dẫn để truyền nhận dữ liệu
• Sử dụng giao thức SPI để trao đổi dữ liệu với Vi điều khiển, tốc độ truyền
nhận dữ liệu lên tới 10Mbp
Một số ứng dụng cơ bản của nRF24L01:
• Thiết bị ngoại vi máy tính không dây
• Ứng dụng trong chuột, bàn phím và điều khiển từ xa
• Điều khiển từ xa bằng sóng RF cho các thiết bị điện tử tiêu dùng
• Mạng cảm biến với điện năng cực thấp
• Tự động hóa trong thương mại và gia dụng
• Ứng dụng trong đồ chơi
2.3.2.1 Cấu trúc phần cứng
Trang 31Hình 2.20: Sơ đồ khối chip nRF24L01
Hình 2.21: Sơ đồ chân chip nRF24L01
Trang 32Bảng 2.3 Chức năng các chân của nRF24L01
1 CE Dữ liệu số ngõ vào Kích hoạt cho phép chip chế độ RX hoặc
TX
2 CSN Dữ liệu số ngõ vào Chọn chip SPI
3 SCK Dữ liệu số ngõ vào Xung Clock SPI
vào Dữ liệu ngõ vào Slave SPI
6 IRQ Dữ liệu số ngõ ra Cho phép ngắt, tích cực mức thấp
7 VDD Nguồn Nguồn cấp (+1.9V- +3.6VDC)
9 XC2 Ngõ ra tương tự Chân thạch anh2
10 XC1 Ngõ vào tương tự Chân thạch anh1
Trang 3320 VSS Nguồn Ground(0V)
Bảng 2.4 Điều kiện làm việc của nRF24L01
VDD Điện áp tín hiệu ngõ vào >3.6V 2.7 3.0 3.3 V
Trang 34Chế độ Standby có hai loại: Standby-I, Standby-II Khi dữ liệu trong chế độ
TX được truyền đi hết nRF24L01 tự động chuyển sang chế độ Standby-II.Chế
độ Standby-Iđược thiết lập khi bit PWR_UP lên ‘1’ và bit PRIM_RX xuống
‘0’.Dữ liệu của các thanh ghi trong nRF24L01 được giữ nguyên và giao thức truyền dữ liệu SPI được kích hoạt để chip trao đổi dữ liệu với Vi điều khiển
Sự khác nhau giữa chế độ Standby I và Standby II
o Standby I sẽ không truyền dữ liệu khi vào chế độ này
o Standby II sẽ ngừng truyền dữ liệu khi TX FIFO trống
Chế độ nhận dữ liệu từ sóng RF phát đi của bộ phát
Để vào chế độ này, nRF24L01 phải có các bit PWR_UP mức cao, bit
PRIM_RX thiết lập cao và chân CE cũng được thiết lập mức cao
Trong chế độ này bộ thu (nRF24L01 hoạt động ở chế độ RX) liên tục tìm kiếm các gói tin trong dãy băng tần điều chế thích hợp ( Được cài đặt trong thanh ghi RF_CH) Nếu một gói tin hợp lệ được tìm thấy (một địa chỉ phù hợp và một giá trị CRC hợp lệ) dữ liệu của gói tin được lưu trữ trong FIFO RX.Nếu FIFO RX
bị đầy, các gói tin nhận được còn lại sẽ bị loại bỏ
NRF24L01 vẫn còn trong chế độ RX cho đến khi MCU cấu hình nó để vào chế độ chờ standby-I, hoặc chế độ tắt nguồn
Bit CD thanh ghi CD được thiết lập mức ‘1’ khi một tín hiệu RF phù hợp được phát hiện trong chế độ RX, ngược lại bit CD là mức ‘0’ Các tín hiệu RF phải có mặt ít nhất là 128μs trước khi CD được thiết lập cao
Chế độ TX là một chế độ hoạt động, khi mà nRF24L01 truyền một gói tin
Để vào chế độ này, nRF24L01 phải có bit PWR_UP ở mức cao, bit PRIM_RX thiết lập mức thấp, tải trọng trong FIFO TX và, một xung cao trên CE hơn 10μs NRF24L01 vào trong chế độ TX cho đến khi nó kết thúc truyền một gói tin hiện tại,sau đó nó vào chế độ Standby I Nếu CE = 0 nRF24L01 trở về chế độ chờ standby-I Nếu CE = 1, hành động tiếp theo được xác định bởi tình trạng
Trang 35của FIFO TX Nếu FIFO TX là chưa trống, nRF24L01 vẫn còn trong TX chế
độ, truyền tải các gói dữ liệu tiếp theo Nếu TX FIFO trống thì nRF24L01 đi vào chế độ chờ standby-II
2.3.8.1 Thời gian chuyển đổi giữa các chế độ hoạt động
Bảng 2.6 Thời gian chuyển đổi giữa các chế độ
Power Down àStandbymode 1.5ms Thạch anh giao động nội
Power Down àStandbymode 150µs Xung clock bên ngoài
Standbymodesà TX/RXmode 130µs
2.3.8.2 Cài đặt kênh tần số RF cho nRF24L01
nRF24L01 có thể hoạt động thu phát dữ liệu trên 126 kênh sóng RF trên tần
số từ 2.400GHz đến 2.525GHz
Với tốc độ truyền tải 1Mbp thì khoảng cách giữa các kênh là 1MHz
Với tốc độ truyền tải 2Mbp thì khoảng cách giữa các kênh là 2MHz
Các kênh tần số RF được thiết lập bởi thanh ghi RF_CH theo công thức
sau:
F0 = 2400 + RF_CH [MHz]
Một bộ phát và bộ nhận phải được lập trình với cùng một kênh tần số RF để
có thể giao tiếp với nhau
Shockburst là một tính năng hoạt động trên lớp liên kết dữ liệu cho phép tự động đóng gói dữ liệu, tự động xác nhận mã ACK và tự động truyền lại dữ liệu.Shockburst có thể thực hiện với điện áp thấp nhưng hiệu suất cao.Không sử dụng tài nguyên của vi điều khiển Do đó sẽ tiết kiệm được chi phí
2.3.9.1 Các tính năng chính của ShockBurst
Trang 36- Tự động xử lý gói tin
- Tự động xử lý giao dịch
+ Tự động báo nhận
+ Tự động truyền lại
- Sáu chế độ đường nhận dữ liệu cho mạng sao 1:6
2.3.9.2 Định dạng dữ liệu trong ShockBurst
Preamble : Phần đầu, đây là một byte có giá trị là một trong 2 byte
:‘01010101’ hoặc ‘10101010’ Nếu bit đầu tiên trong địa chỉ của bộ thu là ‘1’ thì Preamble là ‘10101010’, nếu là ‘0’ thì Preamble là ‘01010101’
Address : Là địa chỉ của bên thu có độ dài từ 3-4 byte Được quy định trong
thanh ghi AW
Packet control field : Có độ dài 9 bit
Playload length ( Độ dài 6 bit): Chứa chiều dài của dữ liệu (0- 32 byte)
PID ( Độ dài 2 bit) : Được dùng để phát hiện dữ liệu là mới hay được truyền lại NO_ACK :Bit này được dùng khi chế độ tự động xác nhận ACK được dùng Khi bit này được set ‘1’,nó sẽ thông báo với bên thu là gói dữ liệu này không có chế
2.3.10.1 Các chân của nRF24L01 sử dụng trong giao tiếp SPI
- CE: Được sử dụng để kích hoạt các chip trong chế độ RX, TX
Trang 37- CSN: Chân chọn chế độ SPI
- SCK: Chân tạo xung Clock để truyền nhận dữ liệu
- MOSI: Chân nhận dữ liệu ngõ vào slave, ngõ ra dữ liệu master
- MISO: Chân nhận dữ liệu ngõ vào master, ngõ ra dữ liệu slave
2.3.10.2 Một vài đặc tính của chuẩn giao tiếp SPI của nRF24L01
- Lệnh SPI đặc biệt để truy cập nhanh vào các tính năng được sử dụng thường xuyên nhất
- Tốc độ dữ liệu lên tới 8Mbp
- Dễ dàng cấu hình bản đồ thanh ghi
- Đầy đủ ba cấp độ FIFO cho cả hai hướng TX và RX
2.3.10.3 Hoạt động đọc/ghi của chuẩn SPI
2.3.10.3.1 Một số lệnh SPI thường dùng của nRF24L01
- Mỗi lệnh mới phải được bắt đầu bởi một xung thay đổi từ cao xuống thấp trên chân CSN
- Dữ liệu được truyền nhận theo định dạng sau:
+ Command Word: MSBit đến LSBit (1 byte)
+ Data Bytes: LSByte đến MSByte, MSBit trong mỗi byte đầu tiên
Bảng 2.7 Mã lệnh SPI của nRF24L01
Tên lệnh Mã lệnh Chức năng
R_REGISTER 000AAAAA Lệnh đọc dữ liệu thanh ghi trong nRF24L01
A AAAA là địa chỉ thanh ghi cần đọc
W_REGISTER 001AAAAA Lênh viết dữ liệu lên thanh ghi nRF24L01
A AAAA là địa chỉ thanh ghi cần viết
R_RX_PAYLOAD 0110 0001 Lệnh đọc dữ liệu lưu trong thanh ghi
Trang 38FLUSH_RX 1110 0010 Dùng để xóa dữ liệu nhận về
R_RX_PL_WID 0110 0000 Lệnh đọc độ dài của dữ liệu lưu trong
Dn Data Bit (LSBytetoMSByte,MSBitfirst)
Hình 2.22: Biểu đồ hoạt động đọc SPI của nRF24L01
Hình 2.23: Biểu đồ hoạt động ghi SPI của nRF24L01
Trang 39MASK_RX_DR 6 0 R/W Phản ánh ngắt tạo ra bởi
RX_DR:
‘0’: Ngắt không được thể hiện
ra chân IRQ pin
‘1’: Ngắt được thể hiện ra chân IRQ pin, chân IRQ chuyển xuống mức ‘0’
MASK_TX_DS 5 0 R/W Phản ánh ngắt tạo ra bởi
TX_DS:
‘0’: Ngắt không được thể hiện
ra chân IRQ pin
‘1’: Ngắt được thể hiện ra chân IRQ pin, chân IRQ chuyển xuống mức ‘0’
MASK_MAX_R
T
4 0 R/W Phản ánh ngắt tạo ra bởi
MAX_RT:
‘0’: Ngắt không được thể hiện
ra chân IRQ pin
‘1’: Ngắt được thể hiện ra chân IRQ pin, chân IRQ chuyển xuống mức ‘0’
EN_CRC 3 1 R/W Cho phép kiểm tra CRC CRCO 2 0 R/W Chế độ mã hóa CRC:
Trang 40ERX_P5 5 0 R/W Cho phép chọn kênh truyền dữ