1. Trang chủ
  2. » Luận Văn - Báo Cáo

tìm hiểu về truyền thông nối tiếp trong vi điều khiển pic18f4520 và thiết kế modul thí nghiệm

83 1,2K 6
Tài liệu đã được kiểm tra trùng lặp

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Tiêu đề Tìm hiểu về truyền thông nối tiếp trong vi điều khiển PIC18F4520 và thiết kế module thí nghiệm
Người hướng dẫn PGS. TS. Nguyễn Văn B, Giáo sư Trần Thị C
Trường học Trường Đại Học Công Nghiệp Hà Nội
Chuyên ngành Điện tử
Thể loại Báo cáo thực tập
Năm xuất bản 2023
Thành phố Hà Nội
Định dạng
Số trang 83
Dung lượng 3,8 MB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

Hình 1: Biểu diễn sơ đồ khối của khối MSSP khi điều khiển trong khối SPI 2.1.2 Khởi tạo chế độ SPI Khi khởi tạo chế độ SPI ta cần thiết đặt cho các bít SSPCON vàSSPSTAT để cho phép các c

Trang 1

BÁO CÁO THỰC TẬP

ĐỀ TÀI : Tìm hiểu về truyền thông nối tiếp trong vi điều khiển pic18f4520 và thiết kế modul thí nghiệm.

I Tổng quan về vi điều khiển pic18f4520

Bộ vi điều khiển ghi tắt là Micro-controller là mạch tích hợp trên một chip cóthể lập trình được, dùng để điều khiển hoạt động của hệ thống Theo các tập lệnhcủa người lập trình, bộ vi điêu khiển tiến hành đọc, lưu trữ thông tin, xử lý thôngtin, đo thời gian và tiến hành đóng mở một cơ cấu nào đó

Trong các thiết bị điện và điện tử các bộ vi điều khiển điều khiển hoạt động của ti

vi, máy giặt, đầu đọc lase, lò vi ba, điện thoại …Trong hệ thống sản xuất tự động,

bộ vi điều khiển sử dụng trong robot, các hệ thống đo lường giám sát Các hệ thốngcàng thông minh thì vai trò của vi điều khiển ngày càng quan trọng Hiện nay trênthị trường có rất nhiều họ vi điều khiển như: 6811 của Motorola, 8051 của Intel, Z8của Zilog, PIC của Microchip Technology …

Trong đề tài này nghiên cứu về pic18f4520 vì nó có nhiều ưu điểm hơn các loại viđiều khiển các như : ADC 10 BÍT, PWM 10 BÍT, EEPROM 256 BYTE,COMPARATER, …ngoài ra nó còn được các trường đại học trên thế giới đặc biệt

là ở các nước Châu Âu hầu hết xem PIC là 1 môn học trong bộ môn vi diều khiểnnói vậy các bạn cũng thấy sự phổ biến rộng rãi của nó Ngoài ra PIC còn được rấtnhiều nhà sản xuat phần mềm tạo ra các ngôn ngữ hổ trợ cho việc lập trình ngoàingôn ngữ Asembly như :MPLAB, CCSC, HTPIC, MIRKROBASIC,…

Hiện nay có khá nhiều dòng PIC và có rất nhiều khác biệt về phần cứng, nhưngchúng ta có thể điểm qua một vài nét như sau :

 8/16 bít CPU, xây dựng theo kiến trúc trên kiến trúc Harvard sửa đổi, với tậplệnh rút gọn (do vậy PIC thuộc loại RISC)

Trang 2

 Flash và Rom có thể tuỳ chọn 256 byte đến 256 kbybe

 Các cổng xuất/nhập (mức lôgic thường từ 0v đến 5v, ứng với mức logic 0 và1)

 8/16 bít timer

 Các chuẩn giao tiếp ngoại vi nối tiếp đồng bộ/ không đồng bộ

 Bộ chuyển đổi ADC

 Bộ so sánh điện áp

 MSSP Pripheral dùng cho các giao tiếp I2C, SPI

 Bộ nhớ nội EEPROM - có thể ghi/ xoá lên tới hàng triệu lần

 Modul điều khiển động cơ, đọc encoder

 Hỗ trợ giao tiếp USB

 Hỗ trợ điều khiển Ethernet

 Hỗ trợ giao tiếp CAN

 Hỗ trợ giao tiếp LIN

 Hỗ trợ giao tiếp IRDA

 DSP những tính năng xử lý tín hiệu số

1 Sơ đồ chân vi điều khiển pic18f4520

Trang 3

2 Các thông số về vi điều khiển pic18f4520

CPU tốc độ cao có 75 cấu trúc lệnh, nếu được cho phép có thể kéo dài đến

83 cấu trúc lệnh

 Hầu hết các cấu trúc lệnh chỉ mất một chu kỳ máy, ngoại trừ lệnh rẽ nhánhchương trình mất hai chu kỳ máy

 Tốc độ làm việc: xung clock đến 40MHz, tốc độ thực thi lệnh 125ns

 Bộ nhớ chương trình ( flash program memory) là 32kbyte

 Bộ nhớ dữ liệu SRAM là 1536 byte

Trang 4

 Bộ nhớ dữ liệu EEPROM là 256 byte

 5 port Vào hoặc ra

 4 bộ timer

 1 capture/compare/PWM modules

 1 enhanced capture/ compare/PWM modules

 Giao tiếp nối tiếp : MSSP, enhanced USART

 Cổng giao tiếp song song

 13 bộ Analog to Digital module 10 bít

 POR,BOR

Bên cạnh đó là một vài đặc tính khác của vi điều khiển như:

+ Bộ nhớ Flash có khả năng ghi xoá được 100.000 lần

+ Bộ nhớ EEPROM với khả năng ghi xoá được 1.000.000 lần

+ Flash/Dữ liệu bộ nhớ EEPROM có thể lưu trữ hàng 100 năm

+ Khả năng tự nạp chương trình với sự điều khiển của phần mềm

+ Watchdog timer với bộ dao động trong

+ Chức năng bảo mật mã chương trình

+ Chế độ SLEEP

+ Có thể hoạt động với nhiều dạng Oscillator khác nhau

Trang 5

3 Sơ đồ khối của vi điều khiển pic18f4520

Trang 6

4 Sơ đồ khối bộ nhớ dữ liệu pic18f4520

II Truyền thông nối tiếp

Trang 7

Thanh ghi điều khiển

Khối MSSP có 3 thanh ghi liên quan đến đó là : thanh ghi trạng thái(SSPSTAT), và 2 thanh ghi điều khiển (SSPCON1 và SSPCON2 ) Thiết lập cácthanh ghi để xác định chế độ làm việc của khối MSSP là SPI hoặc I2C

2.1 SPI

2.1.1 Giới thiệu về giao tiếp SPI

Chế độ SPI cho phép 8 bít dữ liệu được truyền và nhận đồng thời Tất cả 4chế độ của khối SPI đều được hỗ trợ Có 3 chân điển hình cho chuẩn giao tiếp này :+ Ngõ ra dữ liệu dạng nối tiếp RC5/SDO

+ Ngõ vào dữ liệu dạng nối tiếp RC4/SDI/SDA

+ xung đồng bộ nối tiếp RC3/SCK/SCL

Trang 8

Trong chế độ tớ chân thứ 4 có thể được sử dụng để điều khiển đó là : Chân chọnđối tượng giao tiếp : RA5/AN4/SS /HLVDIN/C2OUT.

Hình 1:

Biểu diễn sơ đồ khối của khối MSSP khi điều khiển trong khối SPI

2.1.2 Khởi tạo chế độ SPI

Khi khởi tạo chế độ SPI ta cần thiết đặt cho các bít SSPCON<5:0> vàSSPSTAT<7:6> để cho phép các chế độ hoạt động và các đặc tính trong chế độSPI, đó là :

+ Chế độ chủ

+ Chế độ tớ

+ Cực tính xung clock

+ Pha lấy mẫu dữ liệu vào

+ Sườn xung clock

+ Xung nhip ( chỉ có trong chế độ chủ )

Trang 9

+ Lựa chọn chế độ tớ (chỉ có trong chế độ tớ )

MSSP bao gồm thanh ghi dịch truyền nhận (SSPSR) và thanh ghi đệm(SSPBUF) , SSPSR dùng để dịch dữ liệu vào và ra, đầu tiên là bít msb Khi quátrình nhận dữ liệu sẵn sàng, dữ liệu sẽ được ghi vào SSPSR sau đó dữ liệu sẽ đượcgiữ ở SSPBUF Khi phát hiền bộ đệm đầy cờ BF (SSPSTAT<0>) và bít cho phépngắt được đặt lên Bộ đệm dữ liệu 2 lớp cho phép nhận tiếp 1 byte dữ liệu trước khiđọc bất kỳ sự ghi nào tới thanh ghi SSPBUF trong thời gian truyền nhận dữ liệu sẽ

bị lờ đi và bít phát hiện xung đột WCOL (SSPCON1<7>) sẽ được đặt lên BítWCOL phải được xóa bằng phần mềm để xác định việc ghi tiếp theo lên thanh ghiSSPBUF SSPSR không thể đọc hoặc ghi trực tiếp mà chỉ có thể truy cập thôngqua thanh ghi SSPBUF

2.1.3 Thanh ghi

Khối MSSP có 4 thanh ghi điều khiển khi hoạt động ở chế độ SPI :

+ Thanh ghi điều khiển 1 ( SSPCON1)

+ Thanh ghi trạng thái ( SSPSTAT )

+ Thanh ghi đệm truyền hoặc nhận (SSPBUF)

+ Thanh ghi dịch dữ liệu ( SSPSR) ( không trực tiếp điều khiển được )

SSPCON1 và SSPSTAT là thanh ghi điều khiển và thanh ghi trạng thái trong chế

độ SPI Thanh ghi SSPCON1 có thể đọc và ghi 6 bít dưới của thanh ghi SSPSTATchỉ có thể đọc, 2 bít trên có thể đọc và ghi

Hình 2 SSPSTAT : Thanh ghi trạng thái (chế độ SPI )

Bít 7 SMP : bít lấy mẫu

SPI chế độ chủ :

1= lấy mẫu dữ liệu vào thời điểm cuối của dữ liệu ra

Trang 10

0= lấy mẫu dữ liệu vào thời điểm giữa của dữ liệu ra.

SPI chế độ tớ :

SMP phải được xóa khi SPI được sử dụng ở chế độ tớ

Bít 6 CKE : bít chọn xung clock

1= Truyền khi xuất hiện sự chuyển tiếp từ tích cực đến trạng thái nghỉ.0= Truyền khi xuất hiện sự chuyển tiếp từ trạng thái nghỉ lên tích cực.Bít 5 D/ A : Dữ liệu hoặc địa chỉ

Bít 0 BF : bít trạng thái báo đầy bộ đệm ( duy nhất ở chế độ truyền )

1= Truyền hoàn tất ( SSPBUF đầy )

0= Truyền không hoàn tất ( SSPBUF rỗng)

Hình 3 SSPCON1 : Thanh ghi điều khiển khối MSSP (trong chế độ SPI)

Trang 11

Bít 7 WCOL : bít phát hiện xung đột khi ghi

1= Thanh ghi SSPxBUF được ghi trong khi vẫn có sự truyền từ trước.0= không có xung đột

Bít 6 SSPOV : bít cờ tràn nhận

SPI chế độ tớ :

1= 1 byte được nhận trong khi dữ liệu cũ vẫn còn trong thanh ghi SSPBUF.Trong trường hợp này dữ liệu trong SSPSR bị ghi đè lên Tràn chỉ xuấthiện duy nhất trong chế độ tớ Người sử dụng phải đọc SSPBUF để dữ liệutruyền là duy nhất, tránh cờ tràn được đặt lên.( cờ tràn phải xóa bằng phầnmềm)

0= không có sự tràn xẩy ra

Bít 5 SSPEN : bít cho phép truyền thông nối tiếp

1= cho phép cổng nối tiếp và thiết lập SCK, SDO, SDI, và SS như là cácchân của cổng nối tiếp

0= không cho phép cổng nối tiếp và thiết lập các chân như là chân vào hoặcra

Bít 4 CKP : bít chọn cực tính xung clock

1= trạng thái nghỉ khi xung ở mức cao

0= trạng thái nghỉ khi xung ở mức thấp

Bít 3 SSPM3 : SSPM0 : các bít chọn chế độ

0101= SPI chế độ tớ (SCK là chân xung clock, SS không cho phép hoạtđộng, SS sử dụng như chân vào hoặc ra )

0100= SPI chế độ tớ (SCK là chân xung clock, SS cho phép hoạt động)

0011 : SPI chế độ chủ ( xung clock = đầu ra TMR2/2 )

0010 : SPI chế độ chủ (xung clock = Fosc/64)

Trang 12

0001 : SPI chế độ chủ ( xung clock =Fosc /16).

0000 : SPI chế độ chủ (xung clock =Fosc/4)

2.1.4 Cho phép SPI vào hoặc ra

Thiết lập thanh ghi SSPCON và bít SSPEN ( SSPCON1<5>) được đặt lên đểcho phép cổng nối tiếp Việc thiết lập này cho phép SDI, SDO, SCK, SS là cácchân của cổng nối tiếp Xác định hướng dữ liệu của các chân này được thiết lậptrong thanh ghi trisc :

+ SDI : tự động điều khiển bởi khối SPI

+ SDO : xóa bít thứ 5 trong thanh ghi TRISC

+ SCK : (chế độ chủ ) phải xóa bít thứ 3 trong thanh ghi TRISC

+ SCK : (chế độ tớ ) phải đặt bít thứ 3 trong thanh ghi TRISC

+ SS : phải đặt bít thứ 5 trong thanh ghi TRISC

Sơ đồ kết nối điển hình :

Hinh 4

sơ đồ kết nối SPI chủ hoặc tớ

Hình 4 biểu diễn sơ đồ kết nối giữa 2 vi điều khiển Vi điều khiển chủ (processor1) khởi tạo quá trình truyền dữ liệu bằng việc gửi tín hiệu xung đồng bộ SCK Dữliệu sẽ được dịch từ cả hai thanh ghi SSPSR đưa ra ngoài nếu có một cạnh củaxung đồng bộ tác động và ngưng dịch khi có tác động của cạnh còn lại Cả hai khối

Trang 13

chủ và tớ nên được ấn định chung các quy tắc tác động của xung clock đồng bộ để

dữ liệu có thể dịch chuyển đồng thời

2.1.5 Chế độ chủ

Vi điều khiển chủ có thể khởi tạo quá trình truyền dữ liệu ở bất cứ thời điểmnào bởi vì nó điều khiển xung đồng bộ SCK Trong chế độ chủ, dữ liệu đượctruyền/nhận ngay khi thanh ghi SSPSR được ghi lên Nếu chỉ cần nhận dữ liệu, lúcnày chân SDO không có tác dụng ta có thể ấn định nó là ngõ vào ( đặt bítTRISC<5>), dữ liệu sẽ được dịch vào thanh ghi SSPSR theo một tốc độ được địnhsẵn cho xung clock Sau khi nhận được 1 byte dữ liệu hoàn chỉnh, byte dữ liệu sẽđược đưa vào thanh ghi SSPBUF, bít BF được đặt và ngắt xẩy ra

Trong chế độ chủ, tốc độ của xung đồng bộ clock được chọn :

Trang 14

Hình 5Giản đồ xung của chế độ chủ và các tác động của các bít điều khiển

2.1.6 Chế độ tớ

Trong chế độ này, dữ liệu được truyền và nhận khi có xung đồng bộ bênngoài xuất hiện ở chân SCK Khi nhận đủ 8 bít thì cờ ngắt SSPIF được đặt lên

Trang 15

Trước khi cho phép khối SPI ở chế độ tớ thì đường xung clock phải ở trạng tháinghỉ (idle), ta có thể quan sát đường này bằng việc quan sát quá trình đọc tại chânSCK Trạng thái idle được xác định bởi bít CKP ( SSPCON1<4> ).

Chế độ này hoạt động ngay cả khi vi điều khiển đang ở chế độ ngủ Ngắt truyềnnhận cho phép “đánh thức” vi điều khiển

Hình 6Giản đồ xung chuẩn giao tiếp SPI ( chế độ tớ )

2.1.7 Tóm lược

+ Thanh ghi INTCON : Chứa bít cho phép ngắt toàn cục (GIE VÀ PEIE )

+ Thanh ghi PIR1 : Chứa bít SSPIF

+ Thanh ghi PIE1 : Chứa bít SSPIE

+ Thanh ghi IPR1 : Chứa bít SSPIP

+ Thanh ghi TRISA : Điều khiển xuất nhập chân

RA4/AN4/SS /HLVDIN/C2OUT

+ Thanh ghi TRISC : Điều khiển xuất nhập PORTC

Trang 16

+ Thanh ghi SSPBUF : Thanh ghi đệm dữ liệu

+ Thanh ghi SSPCON1 : Điều khiển chuẩn giao tiếp SPI

+ Thanh ghi SSPSTAT : Chứa các bít chỉ thị trạng thái chuẩn giao tiếp SPI

2.2 I2C

2.2.1 Giới thiệu về giao tiếp I2C

Đây là một chế độ khác của khối MSSP Chuẩn giao tiếp I2C cũng có

Chế độ chủ , tớ và cũng được kết nối với ngắt Chuẩn giao tiếp I2C sử dụng 2 chân

để truyền nhận dữ liệu :

+ RC3/SCK/SCL : Chân truyền dẫn nối tiếp xung clock

+ RC4/SDI/SDA : Chân truyền dẫn nối tiếp dữ liệu

Hình 7 :

Sơ đồ khối MSSP ( Chế độ I2C )

2.2.2 Các chế độ hoạt động

Trang 17

Khối MSSP được cho phép bởi bít SSPEN (SSPCON1<5>) Giao tiếp I2C

có nhiều chế độ hoạt động và được điều khiển bởi các bít SSPCON1<3:0> bao gồm:

+ I2C chế độ chủ, xung clock = (Fosc/4 )*(SSPADD+1)

+ I2C chế độ tớ, 7 bít địa chỉ

+ I2C chế độ tớ, 10 bít địa chỉ

+ I2C chế độ tớ, 7 bít địa chỉ, cho phép ngắt khi phát hiện bít start và stop

+ I2C chế độ tớ, 10 bít địa chỉ, cho phép ngắt khi phát hiện bít start và stop

+ I2C điều khiển chế độ chủ bằng phần mềm, chế độ tớ thì không có chế độ này.Lựa chọn chế độ I2C và đặt bít SSPEN, các chân SCL và SDA sẽ ở trạng thái cựcthu hở Do đó phải kéo điện trở ngoài, đồng thời cần thiết đặt các giá trị phù hợpcho các bít trong thanh ghi TRISC đối với các chân SDA và SCL

2.2.3 Thanh ghi

Khối MSSP có 6 thanh ghi để điều khiển chế độ I2C Các thanh ghi đó là :+ Thanh ghi điều khiển MSSP 1 (SSPCON1)

+ Thanh ghi điều khiển MSSP 2 (SSPCON2)

+ Thanh ghi trạng thái MSSP (SSPSTAT)

+ Thanh ghi đệm truyền nhận nối tiếp (SSPBUF)

+ Thanh ghi dịch MSSP (SSPSR) (không trưc tiếp truy cập)

+ Thanh ghi địa chỉ MSSP (SSPADD)

Các thanh ghi điều khiển SSPCON1 và SSPCON2 có thể đọc và ghi Thanh ghiSSPSTAT chỉ cho phép đọc và ghi ở 2 bít đầu, 6 bít còn lại chỉ cho phép đọc

Thanh ghi SSPBUF chứa dữ liệu sẽ được truyền đi hoặc nhận được và đóng vai trònhư một thanh ghi đệm cho thanh ghi dịch dữ liệu SSPSR Thanh ghi SSPSRkhông thể truy xuất trực tiếp được, muốn truy xuất nó ta phải thông qua thanh ghiSSPBUF

Thanh ghi SSPADD chứa địa chỉ của thiết bị ngoại vi cần truy xuất dữ liệu của I2Ckhi hoạt động ở chế độ tớ Khi hoạt động ở chế độ chủ, thanh ghi SSPADD chứagiá trị tạo ra tốc độ baud cho xung clock dùng để truyền nhận dữ liệu

Trang 18

Trong quá trình nhận dữ liệu, cả 2 thanh ghi SSPSR và SSPBUF tạo thành bộ đệmnhận dữ liệu 2 lớp khi SSPSR thực hiện nhận 1 byte hoàn tất, nó sẽ ghi tới thanhghi SSPBUF và cờ ngắt SSPIF được đặt.

Trong quá trình truyền, chúng không đóng vai trò là bộ đệm dữ liệu 2 lớp Khi ghitới SSPBUF lúc này sẽ ghi tới cả SSPBUF và SSPSR

Hình 8 SSPSTAT : Thanh ghi trạng thái MSSP(chế độ I2C)

1= cho phép đầu vào SMBUS

0= không cho phép đầu vào SMBUS

Bít 5 D/ A bít dữ liệu hoặc bít địa chỉ

Trong chế độ chủ :

Dùng để dự chữ

Trong chế độ tớ :

1= byte cuối của quá trình truyền hoặc nhận là dữ liệu

0= byte cuối của quá trình truyền hoặc nhận là địa chỉ

Trang 19

0= không phát hiện bít start

Bít 2 R/W : đọc hoặc ghi thông tin

1= SSPBUF đầy ( không bao gồm ACK và bít stop )

0= SSPBUF rỗng ( không bao gồm ACK và bít stop )

Hình 9 SSPCON1 : Thanh ghi điều khiển 1 (chế độ I2C)

Bít 7 WCOL : bít phát hiện xung đột lúc ghi

Truyền trong chế độ chủ :

1= dữ liệu truyền được đưa vào thanh ghi SSPBUF trong khi chế độ truyền

dữ liệu của I2C chưa sẵn sàng

0= không có sự xung đột

Truyền trong chế độ tớ :

Trang 20

1= dữ liệu mới được đưa vào thanh ghi SSPBUF trong khi chưa truyềnxong dữ liệu cũ.

Bít 5 SSPEN : bít cho phép cổng nối tiếp

1= cho phép cổng nối tiếp và thiết lập SDA và SCL là các chân của cổngnối tiếp

0= không cho phép cổng nối tiếp và thiết lập chúng như các chân vào ra.Bít 4 CKP : SCK : bít điều khiển tác động

Chế độ tớ :

1= cho xung clock tác động

0= giữ xung clock ở mức thấp (để đảm bảo thời gian thiết lập dữ liệu)

Chế độ chủ :

Không sử dụng trong chế độ này

Bít 3-0 SSPM3 : SSPM0 : các bít lựa chọn chế độ hoạt động cổng nối tiếp

1111 : I2C chế độ tớ, 10 bít địa chỉ, cho phép ngắt khi phát hiện bít start vàbít stop

1110 : I2C chế độ tớ, 7 bít địa chỉ, cho phép ngắt khi phát hiện bít start vàbít stop

1011 : dùng phần mềm điều khiển chế độ chủ (chế độ tớ không dùng)

1000 : I2C chế độ chủ, clock = Fosc/(4*(SSPADD+1))

Trang 21

0111 : I2C chế độ tớ , 10 bít địa chỉ.

0110 : I2C chế độ tớ, 7 bít địa chỉ

Hình 10 SSPCON2 : Thanh ghi điều khiển MSSP 2(chế độ I2C)

Bít 7 GCEN : bít cho phép gọi chung (duy nhất trong chế độ tớ )

1= cho phép ngắt khi địa chỉ 0000h được nhận vào trong SSPSR

0= không cho phép gọi địa chỉ trên

Bít 6 ACKSTAT : bít trạng thái ACK (duy nhất trong chế độ chủ : truyền

truyền dữ liệu )

1= chưa nhận được xung ACK từ tớ

0= nhận được xung từ tớ

Bít 5 ACKDT : bít dữ liệu ACK (chỉ có trong chế độ chủ : nhận dữ liệu )

1= không có xung ACK

0= có xung ACK

Bít 4 ACKEN : bít cho phép xung ACK.(chỉ có trong chế độ chủ: nhận dữ liệu )

1= khởi tạo xung ACK trên các chân SDA và SCL Bít dữ liệu truyềnACKDT ) Tự động xóa bằng phần cứng

0= không cho phép xung ACK

Bít 3 RCEN : bít cho phép nhận (duy nhất trong chế độ chủ )

1= cho phép nhận dữ liệu

0= không cho phép nhận dữ liệu

Bít 2 PEN : bít cho phép điều kiện stop

1= khởi tạo điều kiện stop trên các chân SDA và SCL Tự động xóa bằngphần cứng

0= không cho phép điều kiện stop

Bít 1 RSEN : bít cho phép điều kiện start (duy nhất trong chế độ chủ )

Trang 22

1= khởi tạo điều kiện start trên các chân SDA và SCL Tự động xóa bằngphần cứng.

0= không cho phép điều kiện start

Bít 0 SEN : bít cho phép điều kiện start hoặc cho phép khóa

1= cho phép khóa xung clock từ chế độ tớ truyền và nhận

0= không cho phép khóa xung clock

2.2.4 Chế độ chủ

Chế độ chủ được cho phép bởi việc cài đặt hoặc xóa các bít SSPM trongthanh ghi SSPCON1 và cài đặt bít SSPEN Trong chế độ chủ các chân SDA vàSCL được điều khiển bởi với phần cứng MSSP

Hoạt động của chế độ chủ được hỗ trợ bởi việc phát sinh các ngắt khi phát hiện bítstart và stop Bít start và stop được xóa khi reset hoặc khi khối MSSP không hoạtđộng Việc điều khiển giao tiếp I2C có thể tiếp tục khi bít stop được đặt hoặc khibus rỗng với cả hai bít start và stop đều xóa

Điều khiển chế độ chủ bằng phần mềm người sử dụng ghi mã điều khiển tất cảgiao tiếp bên trong 2 bít start và stop

1 chế độ chủ được cho phép, người sử dụng phải có 6 thao tác:

+ Có điều kiện bít start trên chân SDA và SCL

+ Điều kiện lặp lại bít start trên chân SDA và SCL

+ Thanh ghi SSPBUF được khởi tạo truyền dữ liệu hoặc địa chỉ

+ Thiết lập cổng giao tiếp I2C để nhận dữ liệu

+ Xuất hiện xung ACK khi kết thúc nhận 1 byte dữ liệu

+ Xuất hiện bít stop trên chân SDA và SCL

Các sự kiện sau sẽ gây ra ngắt MSSP : Bít cờ và SSPIF được đặt

Trang 23

+ Xuất hiện bít start.

+ Xuất hiện bít stop

+ Byte dữ liệu chuyển đổi truyền/nhận

+ Truyền xung ACK

I2C chủ đóng vai trò tích cực trong quá trình giao tiếp và điều khiển các I2C

tớ thông qua việc chủ động tạo ra các xung giao tiếp và các điều kiện start, stop khitruyền nhận dữ liệu Một byte dữ liệu có thể được bắt đầu bằng điều kiện start, kếtthúc bằng điều kiện stop hoặc bắt đầu và kết thúc với cùng một điều kiện khởi độnglặp lai (repeated start )

Quá trình truyền trong chế độ chủ, dữ liệu nối tiếp được xuất ra tại chân SDA trongkhi SCL xuất ra xung clock đồng bộ nối tiếp Byte đầu tiên truyền đi sẽ chứa địachỉ của thiết bị nhận (7 bít) và 1 bít R/W Trong trường hợp này R/W sẽ có mứclogic là 0, dữ liệu 8 bít thì truyền 8 bít trong 1 lần, sau đó mỗi byte tiếp theo được

Trang 24

truyền và 1 bít ACK được nhận lại từ tớ khi tớ nhận được đủ 1 byte Điều kiệnstart và stop được xuất ra chỉ ra quá trình bắt đầu và kết thúc của 1 khung truyềnnối tiếp.

Quá nhận dữ liệu trong chế độ chủ, byte đầu tiên được truyền chứa địa chỉ của thiết

bị tớ (7 bít ) và 1 bít R/W Trong trường hợp này bít R/W sẽ có giá trị la 1 Vờigiá trị của bít R/W là 1 thì thiết bị tớ hiểu rằng nó sẽ nhận dữ liệu Dữ liệu nối tiếpđược nhận tại chân SDA, trong khi đầu ra xung clock tại chân SCL 8 bít dữ liệuđược nhận trong 1 lần, sau mỗi byte được nhận thì 1 bít ACK được truyền, điềukiện start và stop được xuất ra chỉ ra quá trình bắt đầu và kết thúc của 1 khungtruyền nối tiếp

Tốc độ người sử dụng trong chế độ I2C để tần số của xung clock là 100 KHZ,400KHZ hoặc 1MHZ

1 quá trình truyền điển hình như sau :

+ Sử dụng điều kiện start bằng việc cài đặt bít SEN (SSPCON2<0> ) cho phépStart

+ Đặt bít SSPIF, khối MSSP sẽ chờ sự xuất hiện của bít start trước khi có bất kỳthao tác nào xẩy ra

+ Người sử dụng sẽ đưa địa chỉ của tớ vào thanh ghi SSPBUF để truyền

+ Địa chỉ được dịch ra ngoài tại chân SDA

+ Khối MSSP sẽ nhận bít ACK từ thiết bị tớ và ghi giá trị đó vào trong thanh ghiSSPCON2 (SSPCON2<6>)

+ Khối MSSP sẽ phát sinh 1 ngắt ở xung thứ 9 bằng việc cài đặt bít SSPIF

+ Người sử dụng cập nhật 8 bít dữ liệu trong thanh ghi SSPBUF

+ Dữ liệu được dịch ra ngoài tại chân SDA cho đến khi 8 bít được truyền xong.+ Khối MSSP sẽ nhận bít ACK từ thiết bị tớ và ghi giá trị đó vào trong thanh ghi SSPCON2 (SSPCON2<6>)

+ Khối MSSP sẽ phát sinh 1 ngắt ở xung thứ 9 bằng việc cài đặt bít SSPIF

+ Người sử dụng tạo ra 1 điều kiện stop bằng việc cài đặt bít PEN

(SPCON2<2>) cho phép stop

Trang 25

+ Ngắt được sinh ra từ điều kiện stop thì hoàn tất 1 khung truyền nối tiếp.

2.2.4.2 Giao tiếp I2C chế độ chủ trong quá trình truyền dữ liệu

Quá trình truyền dữ liệu, xung clock sẽ được đưa tới chân SCL và dữ liệuđược đưa tới chân SDA Byte đầu tiên là byte xác định địa chỉ, 7 bít dữ liệu hoặc 1nửa của 10 bít địa chỉ được ghi tới thanh ghi SSPBUF Điều này sẽ đặt bít cờ bộđệm đầy, bộ đếm tạo xung clock nối tiếp BRG bắt đầu đếm và bắt đầu truyền Mỗibít địa chỉ hoặc dữ liệu sẽ được dịch ra qua chân SDA tại mỗi sườn xuống của xungclock Sau khi 8 bít được dịch hết ra ngoài I2C chủ ngưng tác động lên chân SDA

để chờ tín hiệu từ I2C tớ ( tín hiệu xung ACK ) Tại cạnh xuống của xung clockthứ 9, I2C chủ sẽ lấy mẫu tín hiệu từ chân SDA để kiểm tra địa chỉ đã được I2C tớnhận dạng chưa Trạng thái ACK được đưa vào bít ACKSTAT (SSPCON2<6>).Cũng tại thời điểm bít BF sẽ tự động được xóa, cờ ngắt SSPIF được đặt và BRGtạm ngưng hoạt động cho tới khi dữ liệu hoặc địa chỉ tiếp theo được đưa vào thanhghi SSPBUF, dữ liệu hoặc địa chỉ tiếp tục được truyền đi tại cạnh xuống của xungclock tiếp theo

Trang 26

Hình 12Giản đồ xung I2C chế độ chủ trong quá trình truyền dữ liệu

(7 hoặc 10 bít địa chỉ)

2.2.4.3 Giao tiếp I2C chế độ chủ trong quá trình nhận dữ liệu

Trang 27

Quá trình nhận dữ liệu trong chế độ chủ được cho phép băng cách đặt bít cho phépnhận RCEN (SSPCON2<3>) Cần chú ý là khối MSSP phải ở trạng thái nghỉ trướckhi bít RCEN được đặt hoặc bít RCEN sẽ được bỏ qua.

BRG bắt đầu đếm, dữ liệu sẽ được dịch vào trong I2C chủ tại mỗi cạnh xuống củachân SCL Sau sườn xuống của xung clock thứ 8, cờ cho phép nhận tự động đượcxóa, giá trị trong thanh ghi SSPSR được cập nhật vào trong thanh ghi SSPBUF, bít

cờ BF và bít cờ SSPIF được đặt và BRG ngừng đếm, chân SCL được đưa xuốngmức thấp Khi đó MSSP ở trạng thái nghỉ và chờ lệnh tiếp theo Khi bộ đệm sẵnsàng, bít cờ BF sẽ tự động được xóa, lúc này ta có thể gửi 1 xung ACK bằng cáchcài đặt bít cho phép ACKEN(SSPCON2<4>)

Bít cờ trạng thái BF :

Trong quá trình truyền, bít BF được đặt khi 1 byte địa chỉ hoặc dữ liệu đượcđưa vào trong thanh ghi SSPBUF từ SSPSR Nó được xóa khi thanh ghi SSPBUFđược đọc

Trang 28

Hình 13Giản đồ xung I2C chế độ chủ trong quá trình truyền dữ liệu

(7 bít địa chỉ )

2.2.4.4 I2C Chế độ chủ tính toán điều kiện start

Trang 29

Khởi tạo điều kiện start, người sử dụng đặt bít SEN(SSPCON2<0>) chophép start Nếu chân SDA và SCL lấy mẫu mức cao, tốc độ baud được cập nhật lai

và chứa trong thanh ghi SSPADD<6:0> và bắt đầu đếm Nếu hai chân SDA vàSCL lấy mẫu mức cao và thời gian ra của tốc độ baud (Tbrg ), chân SDA xuống mứcthấp Tại thời điểm SDA đưa xuống mức thấp trong khi SCL vẫn ở mức cao thỉđiêu kiện start hình thành và bít S (SSPSTAT<3>) được đặt

Trong trường hợp SCL và SDA ở trạng thái logic thấp hoặc trong quá trình điềukiện start, chân SCL được đưa về trạng thái logic thấp trước khi chân SDA đượcđưa về trạng thái logic thấp thì điều kiện start không được hình thành, cờ ngắtBCLIF sẽ được đặt và I2C sẽ ở trạng thái nghỉ (IDLE)

Hình 14Quá trình tạo bít start

2.2.4.5 Lặp lại điều kiện start

Để tạo điều kiện start lặp lại trong quá trình truyền dữ liệu, trước hết cần đặtbít RSEN(SSPCON2<2>) Sau khi đặt bít RSEN, chân SCL được đưa xuống mứclogic thấp, chân SDA được đưa lên mức logic cao, BRG lấy giá trị từ thanh ghiSSPADD vào để bắt đầu quá trình đếm Sau khoảng thời gian TBRG chân SCL cũngđược đưa lên mức logic cao trong khoảng thời gian TBRG tiếp theo Trong khoảng

Trang 30

thời gian TBRG kế tiếp , chân SDA lại được đưa xuống mức thấp trong khi SCL vẫnđược giữ ở mức logic cao Tai thời điểm đó bít S (SSPSTAT<3>) được đặt để báohiệu điều kiện start được hình thành, bít RSEN tự động được xóa và cờ ngắt SSPIF

sẽ được đặt sau 1 khoảng thời gian TBRG nữa Lúc này địa chỉ của I2C tớ có thểđước đưa vào thanh ghi SSPBUF, sau đó chỉ việc đưa tiếp địa chỉ hoặc dữ liệu tiếptheo vào thanh ghi SSPBUF mỗi khi nhận được tín hiệu ACK từ I2C tớ, I2C chủ sẽ

tự động tạo tín hiệu lặp lại start cho quá trình truyền dữ liệu liên tục

Hình 15Giản đồ xung trong quá trình tạo điều kiện lặp lại bít start

2.2.5 Chế độ tớ

Trong chế độ tớ các chân SCL và SDA phải được thiết lập là đầu vào KhốiMSSP sẽ ép trạng thái đầu vào thành trạng thái dữ liệu ra khi cần thiết (thiết bị tớtruyền )

Chế độ tớ luôn tồn tại 1 ngắt trên 1 địa chỉ phù hợp Lựa chọn các bít có thể chọnngắt bít start và stop I2C của vi điều khiển sẽ được điều khiển bởi một vi điềukhiển hoặc một thiết bị ngoại vi khác thông qua các địa chỉ Khi địa chỉ này chỉ đến

vi điều khiển , thì tại thời điểm này và tại thời điểm dữ liệu truyền nhận xong sau

đó vi điều khiển sẽ tạo ra xung ACK để báo hiệu kết thúc dữ liệu Giá trị trong

Trang 31

thanh ghi SSPSR sẽ được đưa vào thanh ghi SSPBUF Tuy nhiên xung ACK sẽkhông được tạo ra nếu một trong các trường hợp sau :

+ Bít BF (SSPSTAT <0>) báo hiệu bộ đệm đầy, đã được đặt trước khi quá trìnhtruyền nhận xẩy ra

+ Bít SSPOV(SSPCON2<6>) được đặt trước khi quá trình truyền nhận xẩy ra

Trong các trường hợp trên thanh ghi SSPSR sẽ không đưa giá trị vào trong thanhghi SSPBUF, nhưng bít SSPIF (PIR1<3>) được đặt Để quá trình truyền nhận dữliệu được tiếp tục , cần đọc dữ liệu từ thanh ghi SSPBUF vào trước, khi đó bít BF

sẽ tự động được xóa , còn bít SSPOV phải xóa bằng phần mềm

2.2.5.1 Định địa chỉ

Khi khối MSSP đã được cho phép, nó sẽ chờ sự xuất hiện của bít start Theosau bít start là 8 bít được dịch vào trong thanh ghi SSPSR Các bít đưa vào sẽ đượclấy mẫu tại cạnh lên của xung clock Gíá trị của thanh ghi SSPSR được so sánh vớigiá trị của thanh ghi SSPADD tại canh xuống của xung clock thứ 8 Nếu kết quả sosánh bằng nhau, tức là I2C chủ chỉ định đối tượng giao tiếp là vi điều khiển đang ởchế độ tớ Bít BF và SSPOV sẽ được xóa về 0 và gây ra các sự kiện sau :

+ Giá trị thanh ghi SSPSR được cập nhật vào trong thanh ghi SSPBUF

+ Bộ đệm đầy, cờ BF được đặt

+ Một xung ACK được tạo ra

+ Cờ ngắt SSPIF được đặt (PIR1<3>) ( ngắt được tạo ra nếu cho phép ) tại cạnhxuống của xung clock thứ 9

Trong chế độ địa chỉ 10 bít, 2 byte địa chỉ cần được nhận vào bởi thiết bị tớ khi bítR/W = 0 để so sánh Byte đầu tiên có định dạng “11110A9A80” trong đó A9,A8

là hai bít MSB của 10 bít địa chỉ Byte thứ hai là 8 bít địa chỉ còn lại

Quá trình nhận dạng địa chỉ của MSSP ở chế độ I2C, chế độ tớ 10 bít địa chỉ nhưsau :

1 : Byte đầu tiên chứa 2 bít MSB của 10 bít địa chỉ được nhận trước, bít

SSPIF,BF và UA (SSPSTAT<1>) được đặt

Trang 32

2 : Byte thứ hai chưa 8 bít địa chỉ thấp được cập nhật vào thanh ghi SSPBUF, bít

UA bị xóa

3 : Đọc thanh ghi SSPBUF (bít BF bị xóa ), xóa cờ ngắt SSPIF

4 : Nhận 8 bít địa chỉ thấp của byte thứ 2 , các bít SSPIF,BF và UA được đặt

5 : Cập nhật vào thanh ghi SSPADD các bít ở byte đầu tiên Nếu địa chỉ là đúngxung clock ở chân SCL được khởi tạo và bít UA được đặt

6 : Đọc thanh ghi SSPBUF (xóa bít BF) và bít cờ SSPIF bị xóa

7 : Nhận tín hiệu start

8 : Nhận byte địa chỉ cao , bít SSPIF và BF được đặt

9 : Đọc thanh ghi SSPBUF(xóa bít BF) và xóa cờ ngắt SSPIF

2.2.5.2 Giao tiếp I2C chế độ tớ trong quá trình nhận dữ liệu

Trong quá trình nhận dữ liệu ở chế độ tớ, các bít địa chỉ sẽ được đưa vàotrước khi bít R/W của byte địa chỉ có giá trị bằng 0 và địa chỉ là đúng Bít R/W

của thanh ghi SSPSTAT được xóa về 0 Địa chỉ nhận được đưa vào trong thanh ghiSSPBUF và đường dữ liệu SDA được đưa về mức logic thấp (xung ACK ) Khiđiều kiện tràn byte địa chỉ tồn tại thi xung NOT ACK được sinh ra Điều kiện trànxẩy ra thì 2 bít BF(SSPSTAT<0>) được đặt, hoặc bít SSPOV(SSPCON1<6>)được đặt

Ngắt MSSP khi truyền mỗi byte dữ liệu, bít cờ SSPIF(PIR1<3>) được đặt, phảiđược xóa bằng phần mềm Thanh ghi SSPSTAT được sử dụng để xác định trạngthái của byte

Khi bít SEN (SSPCON2<0>) được đặt, sau khi 1 byte dữ liệu được nhận, xungclock từ chân RC3/SCK/SCL sẽ được đưa xuống mức thấp Muốn khởi tạo lại xungclock ta đặt bít CKP(SSPCON<4>)

Trang 33

Hình 16Giản đồ xung của I2C chế độ tớ 7 bít địa chỉ trong quá trình nhận dữ

Liệu (bít SEN = 0 )

Trang 34

Hình 17Giản đồ xung của I2C chế độ tớ 10 bít địa chỉ trong quá trình nhận dữ

liệu (bít SEN = 0 )

Trang 35

Hình 18Giản đồ xung của I2C chế độ tớ 7 bít địa chỉ trong quá trình nhận dữ

liệu (bít SEN = 1 )

Trang 36

Hình 19Giản đồ xung của I2C chế độ tớ 10 bít địa chỉ trong quá trình nhận

dữ liệu (bít SEN = 1 )

2.2.5.3 Giao tiếp I2C chế độ tớ trong quá trình truyền dữ liệu

Trang 37

Khi bít R/W của byte địa chỉ được đặt và địa chỉ được chỉ định là đúng BítR/W của thanh ghi SSPSTAT được đặt Địa chỉ được nhận và được đưa vào trongthanh ghi SSPBUF 1 xung ACK sẽ được tạo ra và gửi trong bít thứ 9, xung clock

ở chân RC3/SCK/SCL được kéo xuống mức thấp bất chấp trạng thái của bít SEN.Khi đó I2C chủ sẽ không được đưa xung clock vào I2C tớ cho đến khi quá trìnhtruyền dữ liệu ở trạng thái sẵn sàng Quá trình truyền dữ liệu phải được đưa vàotrong thanh ghi SSPBUF và đồng thời đưa vào trong thanh ghi SSPSR Tiếp theocho phép xung ở chân RC3/SCK/SCL bằng cách đặt bít CKP (SSPCON<4>) 8bít trong byte dữ liệu sẽ được dịch dần ra tại mỗi sườn xuống của xung clock Nhưvậy dữ liệu sẽ sẵn sàng ở ngõ ra khi xung clock ở mức logic cao, giúp cho I2C chủnhận được tại mỗi cạnh lên của xung clock

Tại sườn lên của xung clock thứ 9, dữ liệu đã được dịch hết vào I2C chủ, xung

ACK sẽ được tạo ra ở I2C chủ Nếu chân SDA được dữ ở mức cao và dữ liệutruyền đã hoàn thành thì xung NOTACK sẽ được tạo ra Trong trường hợp xung

ACK được chốt bởi I2C tớ , thanh ghi SSPSTAT sẽ được reset I2C tớ sẽ chờ tínhiệu của bít start để tiếp tục truyền byte dữ liệu tiếp theo, đưa byte dữ liệu vàothanh ghi SSPBUF và đặt bít CKP

Ngắt MSSP xẩy ra khi kết thúc truyền 1 byte dữ liệu bít SSPIF được đặt tại sườnxuống của xung clock thứ 9 và phải xóa bằng phần mềm, để đảm bảo sẽ được đặtkhi byte dữ liệu tiếp theo truyền xong

Trang 38

Hình 20Giản đồ xung của I2C chế độ tớ 7 bít địa chỉ trong quá trình truyền dữ liệu

Trang 39

Hình 21Giản đồ xung của I2C chế độ tớ 10 bít địa chỉ trong quá trình truyền

dữ liệu

Trang 40

2.2.6 Tốc độ baud

Trong chế độ chủ của giao tiếp I2C, xung giao tiếp nối tiếp được tạo ra từRRG (bau rate generator), giá trị xác định tần số xung clock nối tiếp được lấy từ 7bít thấp của thanh ghi SSPADD Khi dữ liệu được đưa vào thanh ghi SSPBUF, bít

BF được đặt và BRG tự động đếm ngược về 0 và dừng lại, chân SCL được giữnguyên trạng thái trước đó Khi dữ liệu tiếp theo được đưa vào, BRG sẽ cần mộtkhoảng thời gian để tự động reset lại giá trị để tiếp tục quá trình đếm ngược Mỗivòng lệnh (có thời gian )Tcy BRG sẽ giảm giá trị 2 lần Trong chế độ chủ, thanh ghiSSPADD sẽ không được sử dụng để chứa địa chỉ, thay vào đó chức năng củaSSPADD lúc này là thanh ghi chứa giá trị của BRG

Hình 22

Sơ đồ khối BRG (baud rate generator )

Các giá trị cụ thể của tần số xung nối tiếp do BRG tạo ra được liệt kê trong bảngsau :

Ngày đăng: 06/03/2014, 08:57

HÌNH ẢNH LIÊN QUAN

3. Sơ đồ khối của vi điều khiển pic18f4520 - tìm hiểu về truyền thông nối tiếp trong vi điều khiển pic18f4520 và thiết kế modul thí nghiệm
3. Sơ đồ khối của vi điều khiển pic18f4520 (Trang 5)
4. Sơ đồ khối bộ nhớ dữ liệu pic18f4520 - tìm hiểu về truyền thông nối tiếp trong vi điều khiển pic18f4520 và thiết kế modul thí nghiệm
4. Sơ đồ khối bộ nhớ dữ liệu pic18f4520 (Trang 6)
Hình 2  SSPSTAT : Thanh ghi trạng thái (chế độ SPI ) - tìm hiểu về truyền thông nối tiếp trong vi điều khiển pic18f4520 và thiết kế modul thí nghiệm
Hình 2 SSPSTAT : Thanh ghi trạng thái (chế độ SPI ) (Trang 9)
Sơ đồ kết nối SPI chủ hoặc tớ - tìm hiểu về truyền thông nối tiếp trong vi điều khiển pic18f4520 và thiết kế modul thí nghiệm
Sơ đồ k ết nối SPI chủ hoặc tớ (Trang 12)
Hình 10   SSPCON2 : Thanh ghi điều khiển MSSP 2(chế độ I2C) - tìm hiểu về truyền thông nối tiếp trong vi điều khiển pic18f4520 và thiết kế modul thí nghiệm
Hình 10 SSPCON2 : Thanh ghi điều khiển MSSP 2(chế độ I2C) (Trang 21)
Hình 35  TXSTA : Trạng thái truyền và thanh ghi điều khiển - tìm hiểu về truyền thông nối tiếp trong vi điều khiển pic18f4520 và thiết kế modul thí nghiệm
Hình 35 TXSTA : Trạng thái truyền và thanh ghi điều khiển (Trang 57)
Hình 36  RCSTA : Trạng thái nhận và thanh ghi điều khiển - tìm hiểu về truyền thông nối tiếp trong vi điều khiển pic18f4520 và thiết kế modul thí nghiệm
Hình 36 RCSTA : Trạng thái nhận và thanh ghi điều khiển (Trang 58)
Hình 37   BAUDCON : Thanh ghi điều khiển tốc độ baud - tìm hiểu về truyền thông nối tiếp trong vi điều khiển pic18f4520 và thiết kế modul thí nghiệm
Hình 37 BAUDCON : Thanh ghi điều khiển tốc độ baud (Trang 60)
Hình 41 Truyền bất đồng bộ - tìm hiểu về truyền thông nối tiếp trong vi điều khiển pic18f4520 và thiết kế modul thí nghiệm
Hình 41 Truyền bất đồng bộ (Trang 69)

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

🧩 Sản phẩm bạn có thể quan tâm

w