atmega16
Trang 1MỤC LỤC
LỜI GIỚI THIỆU 4
Chương 1 5
GIỚI THIỆU AVR MCU ATMEL 5
1.1 Tổng quan về AVR 5
1 1.1 Giới thiệu 5
1.1.2 Ưu thế của MCU AVR 5
1.1.3 Một số dòng AVR 6
1.2 Một số dòng AVR phổ biến 7
ATMEGA16 – KIẾN TRÚC TỔNG QUAN 8
2.1 Ưu điểm 8
2.2 Kiến trúc 8
2.2.1.Sơ đồ chân 8
2.2.2 Sơ đồ khối 9
2.2.3 Chức năng các chân 9
2.3 Các khối chính 11
2.3.1 CPU 11
2.3.2 Con trỏ ngăn xếp SP: 14
2.3.3 Memory 14
2.3.4 Quá trình thực thi lệnh: 16
Chương 3 18
GIAO TIẾP I 2 C 18
3.1 Khái quát về I 2 C 18
3.1.1 Ích lợi cho người thiết kế I2C BUS và Sản xuất 19
3.1.2 Lợi ích cho người thiết kế 20
3.1.3 Lợi ích trong sản suất 21
3.1.4 Giới thiệu đặc điểm kỹ thuật của I2C - Bus 22
3.1.5 Khái niệm về I2C-Bus 23
3.1.6 Tính chất chung I2C Bus 25
3.1.7 Sự truyền bit 25
Bài tập
Trang 23.1.8 Truyền dữ liệu 27
3.1.9 Sự phân xử và sự khởi tạo xung nhịp 29
3.2 TWI trên AVR 32
3.2.1 Thanh ghi 32
3.2.2 Hoạt động của TWI: 36
3.3 Bài tập vận dụng I 2 C trên AVR 43
3.3.1.code 43
3.3.2.Mô phỏng 45
Chương 4 46
BÀI TẬP VẬN DỤNG 46
4.1 Thư viện _7_seg.h 46
4.1.1 code 46
4.1.2 Giải thích code 47
4.2 Bài 1 48
4.2.1 code 48
4.2.2 Giải thích code 48
4.3 Bài 2 49
4.3.1 code 49
4.3.2 Giải thích code 49
4.4 Bài 3 50
4.4.1 Code 50
4.4.2 Giải thích code 50
4.4.3 mô phỏng 51
4.5 Bài 4 51
4.5.1 Code 51
4.5.2 Giải thích code 52
4.5.3 Mô phỏng 53
4.6 Bài 5 53
4.6.1 Code 53
4.6.2 Giải thích Code 54
4.6.3 Mô phỏng 55
Trang 34.7 Bài 6 55
4.7.1 Code 55
4.7.2 Giải thích code 56
4.7.3 Mô phỏng 57
4.8.Bài 7 57
4.8.1.Code 57
4.8.2.Giải thích code 58
4.8.3.Mô phỏng 59
4.9 Bài 8 59
4.9.1 Code 59
4.9.2 Giải thích code 60
4.9.3 Mô phỏng 60
4.10 Bài 9 60
4.10.1 Code 60
4.10.2 Giải thích code 61
4.10.3 Mô phỏng 62
4.11.Bài 10 62
4.11.1 Code 62
4.11.1 Giải thích code 64
4.11.3 Mô phỏng 64
Bài tập
Trang 4LỜI GIỚI THIỆU
Từ khi công nghệ chế tạo loại vi mạch lập trình ra đời đã đem đến các kỹthuật điều khiển hiện đại có nhiều ưu điểm hơn so với việc sử dụng các mạchđiều khiển lắp ráp bằng các linh kiện rời như kích thước nhỏ, giá thành rẻ, độlàm việc tin cậy, công suất tiêu thụ nhỏ Hàng loạt nhà sản xuất MCU ra đờinhư Atmel, Philip, Motorola với hàng loạt chip với nhiều tính năng vô cùngphong phú và đa dạng
Ngày nay, lĩnh vực điều khiển đã được ứng dụng rộng rãi trong các thiết
bị, sản phẩm phục vụ cho nhu cầu sinh hoạt hàng ngày của con người như máygiặt, đồng hồ báo giờ… đã giúp cho đời sống cuả chúng ta ngày càng hiện đại
và tiện nghi hơn Trong số những nhà sản xuất MCU 8 bit thì Atmel đã trởnên quá quen thuộc với giới sinh viên, kỹ thuật Việt Nam Nhóm chúng emtìm hiểu đề tài về MCU AVR
Một trong những MCU được sử dụng rất rộng rãi trong kỹ thuật điềukhiển Vì kiến thức có hạn nên trong nội dung đề tài chắc chắn không tránhkhỏi thiếu sót Nhóm chúng em xin gửi lời cám ơn đến thầy Đặng Văn Hiếu và
sẽ cố gắng hoàn thiện trong những lần báo cáo sau
Trang 5Chương 1 GIỚI THIỆU AVR MCU ATMEL 1.1 Tổng quan về AVR
Hình 1.1 Hình ảnh chip AVR.
1.1.2 Ưu thế của MCU AVR
Kết nối phần cứng cho AVR đơn giản với những linh kiện thông dụngnhư điện trở, tụ điện, thạch anh Dòng ra điều khiển Port lớn và không cầndùng điện trở kéo
Thiết kế mạch nạp cho AVR khá đơn giản giao tiếp qua cổng LPT,COM, USB Hỗ trợ ISP lập trình trực tiếp trên mạch
Hỗ trợ lập trình trên nền ngôn ngữ ASM, C với nhiều công cụ hỗ trợnhư CodeVision, AVR Studio
Hầu hết các chip AVR có những tính năng (features) sau:
• Xung External OSC lên đến 16Mhz và Internal OSC 8Mhz
Bài tập
Trang 6• Bộ nhớ chương trình Flash có thể lập trình lại rất nhiều lần vàdung lượng lớn có thể ghi và xóa trên 1000 lần Bên cạnh đó bộ nhớ EEPROM
có thể lập trình được
• 32 Port xuất nhập
• 8 bits, 16 bits timer/counter tích hợp PWM
• Các bộ chuyển đối Analog – Digital phân giải 10 bits
• Analog comparator
• Giao diện nối tiếp USART (tương thích chuẩn nối tiếp RS-232)
• Giao diện nối tiếp Two –Wire –Serial (tương thích chuẩn I2C)Master và Slaver
• Giao diện nối tiếp Serial Peripheral Interface (SPI)
1.1.3 Một số dòng AVR
Nhìn chung AVR có các dòng chính sau:
TinyAVR - the ATtiny series:
• 1- 8 kB bộ nhớ chương trình
• 6 - 32 Chân
• Hạn chế các thiết bị ngoại vi
MegaAVR - the ATmega series:
• 4–256 kB bọ nhớ chương trình
• 28–100- Chân
• Mở rộng tập lệnh, phục vụ các chương trình lớn hơn
• Cho phép mở rộng các ngoại vi
XMEGA - the ATxmega series
• 6–384 kB Bộ nhớ chương trình
• 44–64–100 chân (A4, A3, A1)
• Mở rộng việc thực hiện các tính năng, chẳng hạn như DMA, "Sựkiện hệ thống", và hỗ trợ mật mã
Trang 7• Mở rộng thiết bị ngoại vi với DACs.
Application specific AVR
• MegaAVRs với các tính năng đặc biệt mà không tìm thấy được trêncác thành viên khác của gia đình AVR, chẳng hạn như điều khiển màn hìnhLCD, bộ điều khiển USB, PWM tiên tiến, CAN
1.2 Một số dòng AVR phổ biến
- AT90S1200
- AT90S2313
- AT90S2323 and AT90S2343
- AT90S2333 and AT90S4433
- AT90S4414 and AT90S8515
- AT90S4434 and AT90S8535
Trang 8Bài tập lớn môn Vi điều khiển 8
Trang 9Chương 2 ATMEGA16 – KIẾN TRÚC TỔNG QUAN 2.1 Ưu điểm
- Tốc độ xử lý cao, tiêu thụ điện năng thấp
- Kiến trúc 131 tập lệnh thưc thi hầu hết trong mỗi chu kỳ xung clock
- 32x8 thanh ghi đa dụng
- Đạt tốc độ tối đa 16MIPS ở 16Mhz xung clock
- Dung lượng bộ nhớ: 16Kb Flash, 512 EEPROM, 1kb Internal SRAM
- Khả năng ghi và xóa có thể đạt đến 10000 lần, lưu trữ trong thời giandài trên 20 năm/85oC-100 năm 25oC
- Giao tiếp chuẩn JTAG hỗ trợ debug, Lock, Fuse bit
- 2 bộ Timer 16 bit, 1 bộ timer 16 bit, 4 kênh PWM
- 8 kênh ADC 10 bit
- 32 port xuất nhập
- Hỗ trợ giao tiếp I2C, USART, SPI
- Hoạt động tốt ở hiệu điện thế 4.5-5.5
2.2 Kiến trúc
2.2.1.Sơ đồ chân
Hình 2.1 Sơ đồ chân chip ATMEGA 16.
Trang 11- Port A ( PA0 PA7) : Ngõ vào/ra Port A
Các chân của Port A cũng là ngõ vào analog của bộ chuyển đổi A/D.
- Port B (PB0 PB7) : Ngõ vào/ra Port B :
Chân Chức năng
PB7 SCK ( Chân clock của SPI)
PB6 MISO( Master Input / Slave output của SPI)
PB5 MOSI ( Master output/ Slave Input của SPI)
PB4 SS ( Ngõ vào chọn Slave của SPI)
PB3 AIN1 ( Ngõ vào Negative của bộ so sánh analog)
OC0 ( Ngõ ra so sánh của Timer/counter 0)PB2 AINO ( Ngõ vào Possitive của bộ so sánh analog)
INT2 ( Ngõ vào ngắt ngoài 2)PB1 T1 ( Ngõ vào của bộ đếm ngoài counter 1)
PB0 T0 ( Ngõ vào của bộ đếm ngoài counter 0)
XCK ( chân I/O clock của USART)
- Port C ( PC0 PC7 ): Ngõ vào /ra Port C:
PC7 TOSC2 ( Chân 2 bộ dao động của timer)
PC6 TOSC1 ( Chân 1 bộ dao động của timer)
PC5 TDI ( Chân data in Test JTAG)
PC4 TDO ( Chân data out Test JTAG)
PC3 TMS ( Chân chọn Mode Test JTAG)
PC2 TCK ( Chân clock Test JTAG)
PC1 SDA ( Chân Data I/O của giao thức two_wire)
PC0 SCL ( Chân clock của giao thức Two_wire)
- Port D ( PD0 PD7): Ngõ vào /ra Port D:
PD7 OC2 ( Ngõ ra so sánh của Timer / counter2)
Trang 12PD6 ICP1 ( Chân bắt mẫu của Timer / counter1)
PD5 OC1A ( Ngõ ra so sánh A của Timer/ counter1)
PD4 OC1B ( Ngõ ra so sánh B của Timer/ counter1)
PD3 INT1 ( Ngõ vào ngắt ngoài 1)
PD2 INT0 ( Ngõ vào ngắt ngoài 0)
PD1 TXD ( Ngõ ra USART)
PD0 RXD ( Ngõ vào USART)
- Reset : (Chân ngõ vào) Khi đặt điện áp mức thấp trong thời gian xác định
( xem trong data sheet ) thì sẽ reset chương trình Nếu thời gian ngắn hơn thì việcreset không thành công
- XTAL1 : Ngõ vào khuếch đại dao động đảo và cũng là ngõ vào mạch tạo
xung nội
- XTAL2 : Ngõ ra của mạch khuếch đại dao động đảo.
- AVCC : là chân nguồn cấp cho Port A và bộ chuyển đổi A/D Nên nối
chân này với chân VCC ngay cả khi không sử dụng ADC Nếu dùng ADC thìnên nối chân này với chân VCC qua 1 tụ lọc thông thấp
- AREF: Chân tham chiếu điện áp analog của bộ chuyển đổi A/ D.
2.3 Các khối chính
2.3.1 CPU
AVR có cấu trúc Harvard, trong đó đường truyền cho bộ nhớ dữ liệu(data memory bus) và đường truyền cho bộ nhớ chương trình (program memorybus) được tách riêng Data memory bus chỉ có 8 bit và được kết nối với hầu hếtcác thiết bị ngoại vi, với register file Trong khi đó program memory bus có
độ rộng 16 bits và chỉ phục vụ cho instruction registers
a ALU:
ALU làm việc trực tiếp với các thanh ghi chức năng chung Các phéptoán được thực hiện trong một chu kỳ xung clock Hoạt động của ALU đượcchia làm 3 loại: đại số, logic và theo bit
Trang 13Hình 2.3 Sơ đồ khối AVR MCU.
b Thanh ghi trạng thái:
Đây là thanh ghi 8 bit lưu trữ trạng thái của ALU sau các phép tính sốhọc và logic
• C: Carry Flag → cờ nhớ
• Z: Zero Flag → Cờ zero
• N: Negative Flag → Kết quả phép toán âm
• V: Two’s complement overflow → Cờ bù 2
• S For signed tests (S=N XOR V) → Kiểm tra 2 cờ N và V
• H: Half Carry Flag → Được sử dụng trong BCD cho một số toán hạng
• T: Transfer bit used by BLD and BST instructions→ Được sử dụnglàm nơi trung gian trong các lệnh BLD,BST
Trang 14• I: Global Interrupt Enable/Disable Flag → Đây là bit cho phép toàn cụcngắt Nếu bit này ở trạng thái logic 0 thì không có một ngắt nào
được phục vụ
c Thanh ghi chức năng chung: Atmega 16 có 32 thanh ghi chức năng
chung thực thi nhiều tác vụ trong đó:
Hình 2.4 Thanh ghi chức năng chung.
- Một 8 bit output toán hạng và một 8 bit cho input kết quả
- Hai 8 bit output toán hạng và một 8 bit cho input kết quả
- Hai 8 bit cho output kết quả và một 16 bit cho input kết quả
- Một 16 bit cho output toán hạng và một 16 bit cho input kết quả
2.3.2 Con trỏ ngăn xếp SP:
Là một thanh ghi 16 bit nhưng cũng có thể được xem như hai thanh ghichức năng đặc biệt 8 bit dùng để lưu trữ biến trong quá trình tính toán Stack
Trang 15được hiểu như là 1 “tháp” dữ liệu, dữ liệu được chứa vào stack ở đỉnh “tháp” và
dữ liệu cũng được lấy ra từ đỉnh Kiểu truy cập dữ liệu của stack gọi là LIFO
Khia báo SP tại một vùng nhớ trong SRAM với địa chỉ của SP thiết lập
>$60 Con trỏ giảm địa chỉ xuống 1 khi dữ liệu được đưa vào Stack với lệnhPUSH và hai khi có Subroutine hoặc Interrupt được gọi Con trỏ tăng địa chỉ lên
1 khi có lệnh POP dữ liệu thực hiện nhiệm vụ và lên hai khi trả dữ liệu về chochương trình con
2.3.3 Memory
a Bộ nhớ chương trình Flash:
Bộ nhớ Flash 16KB của ATmega16 dùng để lưu trữ chương trình với độrộng 16 bit Do các lệnh của AVR có độ dài 16 hoặc 32 bit nên bộ nhớ Flashđược sắp xếp theo kiểu 8KX16
Bộ nhớ chương trình chỉ gồm 1 phần là Application Flash Section nhưngtrong các chip AVR mới chúng ta có thêm phần Boot Flash section BootSection Thực chất, application section bao gồm 2 phần: phần chứa cácinstruction và phần chứa interrupt vectors Các vector ngắt nằm ở phần đầu củaapplication section từ địa chỉ 0x0000 và dài đến bao nhiêu tùy thuộc vào loạichip và phần chứa instruction nằm liền sau đó Các chương trình được viết sauđịa chỉ đó
Trang 16Hình 2.5 Bộ nhớ chương trình.
b Bộ nhớ dữ liệu SRAM:
Đây là phần chứa các thanh ghi quan trọng nhất của chip, việc lập trìnhcho chip phần lớn là truy cập bộ nhớ này và bộ nhớ này gồm các phần sau:
• Phần 1: Là phần đầu tiên trong bộ nhớ dữ liệu bao gồm 32 thanh
General Purpose Rgegister – GPR Tất cả các thanh ghi này đều là các thanh ghi
8 bits Tất cả các chip trong họ AVR đều bao gồm 32 thanh ghi Register File cóđịa chỉ tuyệt đối từ 0x0000 đến 0x001F Mỗi
thanh ghi có thể chứa giá trị dương từ 0 đến 255 hoặc các giá trị có dấu từ -128đến 127 hoặc mã ASCII của một ký tự nào đó…Các thanh ghi này được đặt têntheo thứ tự là R0 đến R31 Chúng được chia thành 2 phần, phần 1 bao gồm cácthanh ghi từ R0 đến R15 và phần 2 là các thanh ghi R16 đến R31
• Phần 2: Là phần nằm ngay sau SFR bao gồm 64 thanh ghi IO hay còn
gọi là vùng nhớ IO Vùng nhớ I/O là cửa ngõ giao tiếp giữa CPU và thiết bị
ngoại vi Vùng nhớ I/O có thể được truy cập như S
Trang 17• RAM hay như các thanh ghi I/O Nếu sử dụng instruction truy xuất SRAM để truy xuất vùng nhớ này thì địa chỉ của chúng được tính từ 0x0020 đến 0x005F Nhưng nếu truy xuất như các thanh ghi I/O thì địa chỉ của chúng đựơc tính từ 0x0000 đến 0x003F.
• Phần 3: Internal SRAM là vùng không gian cho chứa các biến trong lúc
thực thi chương trình
c Bộ nhớ dữ liệu EEPROM:
ATmega16 chứa bộ nhớ dữ liệu EEPROM dung lượng 512 byte, và đượcsắp xếp theo từng byte, cho phép các thao tác đọc/ghi từng byte một EEPROMđược tách riêng và có địa chỉ tính từ 0x0000H
Hình 2.6 Bộ nhớ dữ liệu.
2.3.4 Quá trình thực thi lệnh:
Các instruction được chứa trong bộ nhớ chương trình Flash memory dướidạng các thanh ghi 16 bit Bộ nhớ chương trình được truy cập trong mỗi chu kỳxung clock và 1 instruction chứa trong program memory sẽ được load vào tronginstruction register, instruction register tác động và lựa chọn register file cũng
Trang 18như RAM cho ALU thực thi Trong lúc thực thi chương trình, địa chỉ của dònglệnh đang thực thi được quyết định bởi một bộ đếm chương trình – PC (Programcounter) Hầu hết các instruction đều được thực thi trong 1 chu kỳ xung clock.
Hình 2.4 Giản đồ xung.
Chương 3
GIAO TIẾP I 2 C 3.1 Khái quát về I 2 C
I2C, viết tắt của từ tiếng Anh "Inter-Intergrated Circuit", là một loại busnối tiếp được phát triển bởi hãng sản xuất linh kiện điện tử Philips Ban đầu, loại
Trang 19bus này chỉ được dùng trong các linh kiện điện tử của Philip Sau đó, do tính ưuviệt và đơn giản của nó, I²C đã được chuẩn hóa và được dùng rộng rãi trong các
mô đun truyền thông nối tiếp của vi mạch tích hợp ngày nay
Phiên bản 1.0 – 1992
Đây là phiên bản ra đời năm 1992, bao gồm những đặc điểm kỹ thuật sau:
- Phần mềm bỏ sót phần lập trình của địa chỉ Slave Sự thật về chi tiếtnày thì phức tạp hơn và không được sử dụng
- Kiểu tốc độ chậm ( low – speed ) được bỏ qua
- Kiểu nhanh ( fast ) được thêm vào Nó cho phép tăng tốc độ bit lênđến 400 kbit/s Thiết bị sử dụng kiểu này có thể tương thích với kiểu tốc độ thấphơn, có thể sử dụng trong hệ thống bus I2C từ 0 – 100 kbit/s
- Địa chỉ 10-bit được thêm vào Cho phép 1024 nút địa chỉ
Phiên bản 2.0 – 1998
Bus I2C trở thành chuẩn thực tế, lúc này đã thực hiện trên hơn 1000 Ics
và hơn 50 công ty đăng ký Tuy nhiên nhiều ứng dụng ngày nay yêu cầu tốc độcao hơn và nguồn cung cấp nhỏ xuống Những phiên bản mới của I2C bus cầnphải chú ý đến những yêu cầu kỹ thuật này, phiên bản này có những thay đổinhư sau:
- Kiểu tốc độ cao (high-speed hay HS) được thêm vào Cho phép tăngtốc độ bit lên đến 3.4Mbit/s Thiết bị hỗ trợ kiểu HS cũng mang tính kế thừa,tức là có thể hoạt động ở tốc độ bit từ 0 – 3.4Mbit/s
- Ngõ ra và trễ của thiết bị với nguồn cung cấp 2V được điều chỉnh chophù hợp yêu cầu về nhiễu và duy trì sự tương thích với thiết bị có nguồn cungcấp cao hơn
- Yêu cầu 0.6V tại 6mA của ngõ ra thiết bị được bỏ qua
- Mức điện áp ngõ ra cố định cho thiết bị mới được thay thế bằng mứcđiện áp của Bus
- Thông tin ứng dụng cho bộ dịch hai chiều được thêm vào
Trang 20Phiên bản 2.1 – 2000
Phiên bản 2.1 có những thay đổi nhỏ sau đây:
- Sau “START condition” lặp lại trong kiểu HS, nó có thể kéo dàithêm SCLH tín hiệu xung nhịp(clock signal)
3.1.1 Ích lợi cho người thiết kế I2C BUS và Sản xuất
Trong việc thiết kế điện tử, viễn thông và điện tử công nghiệp thường cónhiều sự tương tự giữa các thiết kế dường như không liên quan.Ví dụ như, hầunhư mỗi hệ thống bao gồm :
- Trong vài hệ thống điều khiển thông minh, thông thường vi
điều khiển đơn chip
- Các thiết bị như LCD, cổng I/O, RAM, EEPROM hoặc các thiết bịchuyển đổi dữ liệu
Khai thác sự giống nhau này thì có lợi cho cả người thiết kế hệ thống vàsản xuất thiết bị, cũng như để tối ưu hiệu quả phần cứng và đơn giản mạch thiết
kế Philips phát triển Bus 2 dây đơn giản 2 chiều điều khiển nhiều IC Bus nàygọi là Inter IC hay I2C-bus Tất cả thiết bị tương thích I2C-bus kết hợp chặt chẽgiao tiếp trên chip mà nó cho phép chúng thông tin trực tiếp với mỗi giao tiếpkhác theo I2C-bus Khái niệm thiết kế này giải quyết nhiều vấn đề giao tiếp gặpphải khi thiết kế mạch điều khiển số
Sau đây là một số chi tiết của I2C-bus:
- Chỉ yêu cầu 2 dây bus : một đường xung nhịp đồng hồ ( SCL: a serialdata line) và một đường dữ liệu ( SDA: a serial data line)
-Mỗi thiết bị kết nối đến Bus có địa chỉ mềm bằng địa chỉ duy nhất vàmối liên hệ đơn giản chủ/tớ (Master/Slave) tồn tại Masters có thể hoạt động bộphát chủ (Master-Transmitters) hoặc bộ thu chủ(Master-Receivers)
-Trong Bus đa chủ ( multi-master bus) bao gồm phát hiện ra xung đột
và sự phân xử để tránh sai lệch dữ liệu nếu hai hay nhiều Masters đồng thời khởiđộng truyền dữ liệu cùng một lúc
Trang 21-Dữ liệu nối tiếp, 8-bit định hướng, 2 chiều có thể truyền ở:
Standard (Chuẩn) 100 kb/s Fast (Nhanh) 400 kb/s Fast mode plus (Nhanh hơn) 1 Mb/s High speed mode (Tốc độ cao) 3.4 Mb/s
- Bộ lọc loại bỏ gai nhiễu trên dây Bus để giữ dữ liệu nguyên gốc
- Số lượng IC có thể kết nối chung Bus bị giới hạn bởi điện dung tối đacủa Bus là 400pF
3.1.2 Lợi ích cho người thiết kế.
Một số chi tiết của I2C-bus mà đặc biệt cuốn hút người dùng:
- Khối hàm trong biểu đồ khối phù hợp với các IC trong thực tế, thiết
kế thực hiện nhanh hơn từ sơ đồ khối đến lược đồ
- Không cần phải thiết kế giao diện Bus bởi vì giao tiếp Bus đã tíchhợp sẵn trên trên chip
- Nghi thức truyền dữ liệu và địa chỉ tích hợp cho phép hệ thống đểphần mềm định nghĩa hoàn toàn
- Các IC cùng loại thường được sử dụng nhiều ứng dụng khác nhau
- Thời gian thiết kế được rút ngắn bởi vì người thiết kế nhanh chóngthân thiện với việc thường xuyên sử dụng các khối hàm đại diện cho I2C-bustương thích IC
- Các IC có thể được thêm vào hoặc gỡ ra mà không ảnh hưởng đếncác phần tử khác trên Bus
- Sự kiểm tra và chỉnh lỗi thì đơn giản Sự trục trặc, hay khi gặp sự cốnhanh chóng được chỉ ra
- Thời gian phát triển phần mềm có thể được rút ngắn nhờ các thư viện
mà trong đó có các mô đun phần mềm có thể dùng lại được
Trang 22Thêm vào những thuận lợi này, các CMOS IC có tích hợp I2C bus có độtương thích cao, cung cấp cho người thiết kế những đặc điểm kỹ thuật đặc trưngnhư thiết bị di động
Tất cả bao gồm:
- Năng lương tiêu thụ rất thấp
- Chống nhiễu tốt
- Tầm điện áp nguồn cung cấp rộng
- Hoạt động với khoảng nhiệt độ lớn
3.1.3 Lợi ích trong sản suất
I2C - Bus tương thích với IC không những trợ giúp thiết kế, mà còn cungcấp nhiều lợi ích to lớn cho việc sản suất thiết bị bởi vì:
- I2C-Bus với thiết kế đơn giản chỉ cần 2 dây tối thiểu hóa đa liên kếtcho nên IC sẽ có ít chân hơn và không có quá nhiều đường mạch in Kết quả làbảng mạch in sẽ nhỏ hơn và rẻ hơn
- Phương thức nào tích hợp toàn bộ I2C - Bus loại bỏ yêu cầu về giải
mã địa chỉ và các liên kết logic (glue logic) khác
- Đa chủ ( multi Master) là khả năng của I2C - Bus cho phép nhanhchóng kiểm tra và sắp xếp định tuyến với thiết bị người dùng theo kết nối cục bộđến một đường chung
- I2C-Bus có sẵn sự tương thích với với IC trong SO(small outline),VSO(very small outline) rất tốt
Đó chỉ là một số lợi ích Thêm vào đó, IC có tích hợp I2C - Bus làm tăng
sự linh động thiết kế hệ thống bằng cách nhiều thiết bị khác nhau và có cấu trúcđơn giản và dễ dàng nâng cấp để cập nhật Trong trường hợp này, một thiết bịthuộc họ nào có thể phát triển lên từ thiết kế cơ bản của họ đó Nâng cấp chothiết bị mới hoặc tăng cường chức năng cho thiết bị mẫu (ví dụ như mở rộng bộnhớ, điều khiển từ xa v.v) có thể làm đơn giản bằng cách tách IC tương thíchtrên Bus ra
Trang 233.1.4 Giới thiệu đặc điểm kỹ thuật của I2C - Bus.
Về ứng dụng điều khiển số định hướng 8-bit, như là những ứng dụng yêucầu vi điều khiển, tiêu chuẩn thiết kế có thể được thiết lập:
- Hệ thống hoàn chỉnh thường bao gồm một vi điều khiển và thiết bịngoại vi khác như là bộ nhớ và mở rộng I/O
- Chi phí kết nối với nhiều thiết bị mà không cần hệ thống phải đượctối thiểu hóa
- Một hệ thống mà thực hiện hàm điều khiển thì không yêu cầu truyền
Thiết bị giao tiếp với các thiết bị khác trên Bus nối tiếp phải mang một sốphương thức mà tránh được tất cả hỗn loạn có thể xảy ra, mất dữ liệu và tắcnghẽn thông tin Thiết bị tốc độ cao phải có khả giao tiếp với thiết bị có tốc độthấp Một hệ phải không phụ thuộc vào thiết bị kết nối với nó, mặt khác sự điềuchỉnh và cải tiến là không khả thi Một thủ tục đưa ra để quyết dịnh là thiết bị sẽ
ở trong sự diều khiển của Bus khi đó Và, nếu các thiết bị khác nhau với tốc độxung nhịp khác nhau được kết nối đến Bus, xung nhịp nguồn của Bus phải đượcđịnh nghĩa Tất cả tiêu chuẩn này điều được bao hàm trong I2C - Bus
3.1.5 Khái niệm về I2C-Bus
I2C-Bus cung cấp bất cứ cách nào chế tạo IC( NMOS, CMOS, bipolar).Gồm có 2 dây, dữ liệu nối tiếp( SDA: serial data) và xung nhịp nối tiếp (SCL:serial clock), mang thông tin giữa thiết bị và Bus nối với thiết bị đó
Trang 24Mỗi thiết bị được định nghĩa bằng một địa chỉ duy nhất và có thể sử dụngnhư bộ thu hoặc bộ phát, phụ thuộc vào chức năng của thiết bị Hiển nhiên điềukhiển LCD chỉ có thể là bộ thu, trong khi đó bộ nhớ có thể thu và phát dữ liệu.thêm vào bộ thu hoặc bộ phát, thiết bị có thể được xem như làbộ chủ(Master)hoặc bộ tớ (Slave) khi thực hiện truyền dữ liệu Xem bảng 1 Bộ chủ là thiết bịkhởi đầu truyền dữ liệu trên Bus và khởi tạo tín hiệu xung nhịp để cho phéptruyền Thời điểm này, bất cứ thiết bị nào được định địa chỉ được coi như bộ tớ.
Bộ phát Thiết bị truyền dữ liệu đến Bus
Bộ thu Thiết bị nhận dữ liệu từ Bus
Bộ chủ Thiết bị khởi động truyền, khởi tạo xung
nhịp và kết thúc truyền
Bộ tớ thiết bị được định địa chỉ bởi Bộ chủ
Đa chủ Hơn một bộ chủ cố gắng để điều khiển Bus
tại một thời điểm mà không sai lạc thôngđiệp
Sự phân xử Thủ tục đảm bảo rằng, nếu có hơn một bộ
chủ cùng một lúc cố gắng điều khiển Bus, chỉ có một được cho phép làm vậy
và và thông điệp thì không sai Đồng bộ Thủ tục đồng bộ tín hiệu xung nhịp của hai
hay nhiều thiết bị
Bảng 1 : Định nghĩa các thuât ngữ của I2C Bus.
I2C Bus là Bus đa chủ Điều này có nghĩa là nhiều hơn một thiết bị có khảnăng điều khiển Bus mà có thể được kết nối với nó Vì bộ chủ thường là vi điềukhiển, chúng ta hãy xét đến trường hợp dữ liệu truyền giữa hai vi điều khiển kếtnối với I2C Bus (Xem hình 3.1)
Trang 25Hình 3.1 Ví dụ về I 2 C có hai vi điều khiển kết nối
Điểm nổi bật là mối quan hệ chủ- tớ và thu- phát được thiết lập trên I2C.Chú ý rằng những mối quan hệ trên là không cố định, nhưng chỉ phụ thuộc vàohướng truyền dữ liệu tại thời điểm đó Sự truyền dữ liệu tiến hành như sau:
1 Giả thiết vi điều khiển A muốn truyền thông tin cho vi điều khiển B:
- Vi điều khiển A(chủ), vi điều khiển B (tớ)được định địa chỉ
- Vi điều khiển A(bộ phát chủ) truyền dữ liệu cho vi điều khiển
B(bộ thu tớ)
- Vi điều khiển A kết thúc truyền
2 Nếu vi điều khiển A muốn nhận thông tin từ vi điều khiển B:
- Vi điều khiển A(chủ), vi điều khiển B được định địa chỉ(tớ)
- Vi điều khiển A(bộ thu chủ) nhận dữ liệu từ B (bộ phát tớ)
- Vi điều khiển A kết thúc truyền
Khả năng kết nối nhiều hơn một vi điều khiển với I2C Bus có nghĩa lànhiều hơn một master có thể khởi động truyền dữ liệu tại cùng một thời điểm
Để tránh sự hỗn độn sinh ra từ sự việc này, người đã phát phiển một thủ tục gọi
là sự phân xử Thủ tục này dựa trên kết nối And nối dây đến đường SCL
Việc khởi tạo tín hiệu xung nhịp trên I2C Bus luôn luôn là nhiệm vụ củacác thiết bị chủ (master devices); mỗi bộ chủ khởi tạo tín hiệu xung nhịp củachính nó khi đang truyền dữ liệu trên Bus Tín hiệu xung nhịp trên I2C Bus từ
bộ chủ chỉ có thể được hiệu chỉnh khi nó được kéo dài bởi thiết bị tớ có tốc độchậm mà giữ đường SCL, hoặc bởi bộ chủ khác khi sự phân xử xảy ra
Trang 263.1.6 Tính chất chung I2C Bus
Cả SDA và SCL đều là đường dây 2 chiều, được kết nối với nguồn dươngtheo nguồn dòng hoặc diện trở kéo lên (Xem hình 3.2) Khi Bus rảnh , cả haiđường dây đều ở mức cao Tần ngõ ra của thiết bị kết nối với I2C Bus phải cócực máng mở hay cực thu mở để thực hiện hàm And nối dây Dữ liệu trên I2CBus có thể được truyền đạt được tốc độ 100 kbit/s ở chế độ chuẩn (stardardmode), tốc độ 400 kbit/s ở chế độ nhanh(fast mode), tốc độ 3.4 Mbit/s ở chế độtốc độ cao (high- speed mode) Số lượng thiết bị kết nối với I2C Bus là duy nhấtphụ thuộc vào điện dung của Bus giới hạn ở 400pF
H ình 3.2 Tính chất I2C Bus.
3.1.7 Sự truyền bit
Bởi vì nhiều thiết bị kỹ thuật đadạng khác nhau ( CMOS, NMOS, bipolar)
có thể kết nối với I2C Bus mức logic “0” hoặc “1” thì không cố định và phụthuộc vào sự liên hợp mức logic của VDD Một xung nhịp khởi tạo cho mỗi bit
dữ liệu được truyền
1 Sự hợp lệ dữ liệu:
Dữ liệu trên đường SDA phải ổn định suốt khoảng thời gian ở mức caocủa xung nhịp Trạng thái của SDA chỉ có thể thay đổi khi tín hiệu xung nhịptrên đường SCL xuống mức thấp (Xem hình 3.3)
Trang 27Hình 3.3 sự truyền bit trên I2C Bus.
2 Điều kiện KHỞI ĐỘNG và điều kiện DỪNG( START (S) và STOP(P) conditions):
Trong thủ tục của I2C Bus, những trạng thái duy nhất phát sinh dược địnhnghĩa là điều kiện KHỞI ĐỘNG và điều kiện DỪNG ( START (S) và STOP(P)conditions)
Hình 3.4 Điều kiện KHỞI ĐỘNG và điều kiện DỪNG.
Điều kiện KHỞI ĐỘNG(S): Là sự chuyển đổi trạng thái từ mức CAO
xuống mức THẤP trên SDA trong khi đó SCL ở mức CAO
Điều kiện DỪNG (P): Là sự chuyển đổi trạng thái từ mức THẤP xuống
mức CAO trên SDA trong khi đó SCL ở mức CAO
Điều kiện KHỞI ĐỘNG và điều kiện DỪNG thì luôn luôn được khởiđộng bởi bộ chủ Bus coi như là bận sau điều kiện KHỞI ĐỘNG Bus sẽ trở lạirảnh sau điều kiện DỪNG
Bus ở trạng thái bận nếu KHỞI ĐỘNG lặp lại ( Sr : repeated START)được kích khởi thay vì điều kiện DỪNG Về điểm này, điều kiện KHỞIĐỘNG(S) và KHỞI ĐỘNG lặp lại (Sr) thì định nghĩa giống nhau ( Xem hình
Trang 2810) Do đó, ở phần còn lại , ta sẽ gọi tắt S đại diện cho cả Điều kiện KHỞIĐỘNG và KHỞI ĐỘNG lặp lại Và P đại diện cho điều kiện DỪNG.
Thiết bị kết nối với Bus phát hiện ra S và P thì dễ dàng nếu chúng kết hợpchặt chẽ giao diện phần cứng cần thiết Tuy nhiên, vi điều khiển mà không cógiao diện như vậy phải lấy mẫu SDA ít nhất 2 lần trên 1 chu kỳ xung nhịp đểnhận biết được sự truyền
3.1.8 Truyền dữ liệu
1 Định dạng byte:
Hình 3.5 Truyền dữ liệu trên I2C Bus
Nếu bộ tớ không thể truyền hoặc nhận byte dữ liệu khác cho đến khi nóthực hiện một số hành động khác, ví dụ như phục vụ cho việc ngắt nội bộ, nó cóthể giữ SCL ở mức THẤP để ép bộ tớ vào trạng thái chờ.Sự truyền dữ liệu sau
đó sẽ tiếp tục khi bộ tớ sẵn sàng cho byte dữ liệu khác và giải phóng SCL
Trong một số trường hợp, I2C Bus cho phép định dạng khác định dạngcủa I2C Bus( ví dụ của CBUS) Một thông điệp mà bắt đầu với một địa chỉ nhưvậy có thể kết thúc bằng cách phát ra P , thậm chí trong suốt quá trình truyềnmột byte Trong trường hợp này, không có ACK
2 Sự xác nhận (acknowledge : ACK):
Trang 29Truyền dữ liệu với ACK là bắt buộc ACK có liên quan tới xung nhịpđược phát ra bởi bộ chủ Ở bộ phát SDA ở mức CAO trong suốt xung nhịp củaACK.
Bộ phải kéo SDA xuống trong suốt xung nhịp của ACK để duy trì mứcTHẤP trong suốt quá trình ở mức cao của xung nhịp này.(Xem hình 3.6) Tấtnhiên, sự thiết lập và thời gian giữ cũng dược đưa vào để tính toán
Hình 3.6 ACK trên I2C Bus
Thông thường, một bộ thu mà đã được định địa chỉ thì bắt buộc phải khởitạo một bit ACK sau mỗi byte mà nó nhận được, trừ phi thông điệp đó bắt đầubằng địa chỉ CBUS
Khi bộ tớ không xác nhận địa chỉ tớ ( ví dụ như: nó không nhận hoặc thubởi vì nó thực hiện một số chức năng trong thời gian thực), SDA phải rời khỏimức CAO bởi vì bộ tớ Bộ chủ sau đó có thể khởi tạo hoặc là P để hủy bỏ sựtruyền, hoặc Sr để bắt đầu truyền dữ liệu mới
Nếu bộ thu chủ xác nhận địa chỉ tớ, nhưng sau đó sự truyền không thểnhận thêm byte dữ liệu nào nữa, bộ chủ phải một lần nữa hủy bỏ sự truyền Điềunày chứng tỏ rằng bộ tớ không khởi tạo ACK theo byte đầu tiên Bộ tớ đưa SDA
ra khỏi mức CAO và bộ chủ khởi tạo P hoặc Sr
Nếu bộ thu chủ gặp rắc rối với sự truyền, nó phải phát tín hiệu kết thúc dữ liệuđến bộ phát tớ bằng cách không khởi tạo ACK trên byte cuối cùng Bộ phát tớphải giải thoát SDA và cho phép bộ chủ khởi tạo P hoặc Sr
3.1.9 Sự phân xử và sự khởi tạo xung nhịp
1 Sự đồng bộ:
Trang 30Tất cả các bộ chủ khởi tạo xung nhịp của chúng trên SCL để chuyểnthông điệp trên I2C Bus Dữ liệu chỉ hợp lệ trong suốt khoảng thời gian xungnhịp ở mức CAO Xung nhịp được định nghĩa về việc này thì cần thiết cho thủtục phân xử theo từng bit xảy ra.
Đồng bộ xung nhịp được thực hiện bằng cách sử dụng And nối dây củagiao diện I2C đến SCL Điều này có nghĩa là sự chuyển tiếp từ mức CAO xuốngmức THẤP trên SCL gây ra cho thiết bị liên quan bắt đầu giai đoạn ở mứcTHẤP ( LOW period) xung nhịp của một thiết bị sẽ xuống mức THẤP, nó sẽgiữ trạng thái này cho đến khi đạt được trạng thái CAO.( Xem hình 8) Tuynhiên , sự chuyển tiếp từ mức THẤP xuống mức CAO của xung nhịp này có thểkhông thay đổi trạng thái của SCL nếu xung nhịp của thiết bị khác vẫn ở tronggiai đoạn ở mức THẤP của nó SCL sẽ được giữ ở mức THẤP bởi thiế bị mà cógiai đoạn ở mức THẤP của nó dài nhất Những thiết bị với giai đoạn ở mứcTHẤP của nó ngắn hơn trạng thái chờ ở mức CAO trong suốt thời gian này
Hình 3.7 Đồng bộ xung nhịp trong thủ tục phân sử
Khi tất cả các thiết bị liên quan không ở giai đoạn ở mức THẤP củachúng, SCL sẽ được giải phóng và lên mức CAO Không có sự khác biệt giữaxung nhịp của thiết bị Và tất cả các thiết bị sẽ khởi động đến giai đoạn ở mứcCAO của chúng Nếu thiết bị đầu tiên hoàn thành giai đoạn ở mức CAO củachúng và lại kéo SCL xuống THẤP
Trang 31Trong trường hợp này, xung nhịp của SCL mà được đồng bộ được khởiđộng với giai đoạn ở mức THẤP của nó quyết định bởi thiết bị có giai đoạn ởmức THẤP dài nhất, giai đoạn ở mức CAO của nó quyết định bởi thiết bị có giaiđoạn ở mức CAO ngắn nhất.
2 Sự phân xử( Arbitration):
Bộ chủ chỉ có thể bắt đầu sự truyền nếu Bus rảnh Hai hay nhiều bộ chủ
có thể phát động S trong khoảng thời gian duy trì nhỏ nhất ( the minimum holdtime : tHD,STA) của S mà kết quả trong định nghĩa S đến Bus
Sự phân xử xảy ra trên SDA trong khi đó SCL ở mức cao, trong trườnghợp như vậy bộ chủ mà truyền đi mức CAO Trong khi đó một bộ chủ kháctruyền mức THẤP sẽ ngắt ngõ ra dữ liệu của nó bởi vì mức logic trên Buskhông tương thích với mức logic của chính nó
Sự phân xử có thể tiếp tục cho nhiều bit Giai đoạn đầu tiên là so sánh cácbit địa chỉ Nếu các bộ chủ mà cùng cố gắng để định chỉ cho cùng một thiết bị,
sự phân xử sẽ tiếp tục so sánh các bit dữ liệu nếu chúng là bộ phát chủ hoặc bitACK nếu chúng là bộ thu chủ Bởi vì thông tin về địa chỉ và dữ liệu trên I2CBus bởi bộ chủ thắng trong sự phân xử, không có thông tin bị mất trong quátrình phân xử
Bộ chủ mà thua trong sự phân xử có thể phát động xung nhịp cho đến khikết thúc byte mà nó thua trong sự phân xử
Như bộ chủ ở kiểu HS có mã bộ chủ 8 bit duy nhất, nó luôn luôn kết thúcphân xử trong byte đầu tiên
Nếu bộ chủ kết hợp chặt chẽ với chức năng của bộ tớ và nó thua trong sựphân xử trong suốt giai đoạn định địa chỉ, có khả năng bộ chủ đang cố gắng địnhđịa chỉ nó Bộ chủ thua trong sự phân xử vì thế phải ngay lập tức chuyển thànhchế độ tớ
Hình 3.8 cho ta thấy thủ tục phân xử cho hai bộ chủ Dĩ nhiên, có thể baogồm nhiều hơn( phụ thuộc vào bao nhiêu bộ chủ kết nối với Bus)
Trang 32Hình 3.8 Sự phân xử với hai bộ chủ.
Xự phân xử sẽ hoàn tất trên SDA khi SCL ở mức cao Khi đó bộ chủ màtruyền mức CAO trong khi đó bộ chủ khác truyền mức THẤP sẽ thua trongphân xử
3 Sử dụng cơ chế đồng bộ xung nhịp như là sự bắt tay:
Được thêm vào để sử dụng trong suốt thủ tục phân xử, cơ chế đồng bộxung nhịp có thể được sử dụng dể cho phép bộ thu đối phó với truyền data tốc
độ cao, trên 1 byte hoặc 1 bit
Xét về byte, thiết bị có khả năng nhận các byte dữ liệu ở tốc độ nhanh,nhưng cần nhiều thời gian hợn để lưu trữ byte nhận được và chuẩn bị byte kháctruyền tới Bộ tớ sau đó có thể giữ SCL ở mức thấp sau đó thu nhận byte vàACK của byte đó để đưa bộ chủ về trạng thái chờ cho đến khi bộ tớ sẵn sàngcho sự truyền của byte kế tiếp trong một kiểu bắt tay.( Hình 3.9)
Xét về bit, một thiết bị như là vi diều khiển kết nối với I2C Bus, có thểlàm chậm xung nhịp của Bus mở rộng giai đoạn ở mức thấp của mỗi chu kỳxung nhịp Tốc độ của bất cứ bộ chủ nào bằng cách này thích nghi với tốc độvận hành bên trong của thiết bị này
Trong kiểu HS, kiểu này chỉ có thể được sử dụng trên byte