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 - Pdf 11

Trường Đại Học Công Nghiệp Hà Nội Khoa điện tử
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ệnh
củ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ông
tin, đ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ống
cà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ên
thị trường có rất nhiều họ vi điều khiển như: 6811 của Motorola, 8051 của Intel, Z8
củ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ển
nó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ất
nhiề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ài
ngô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ưng
chú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ập
lệnh rút gọn (do vậy PIC thuộc loại RISC).

Trường Đại Học Công Nghiệp Hà Nội Khoa điện tử
• 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)

• 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.

Trường Đại Học Công Nghiệp Hà Nội Khoa điện tử
3. Sơ đồ khối của vi điều khiển pic18f4520

Trường Đại Học Công Nghiệp Hà Nội Khoa điện tử
4. Sơ đồ khối bộ nhớ dữ liệu pic18f4520
II. Truyền thông nối tiếp

Trường Đại Học Công Nghiệp Hà Nội Khoa điện tử
1. giới thiệu
CHủ SYNCHRONOUS SERIAL PORT (MSSP) MODULE
- SPI
- I2C


Trường Đại Học Công Nghiệp Hà Nội Khoa điện tử
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ủ )

Trường Đại Học Công Nghiệp Hà Nội Khoa điện tử
+ 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ẽ được
giữ ở SSPBUF. Khi phát hiền bộ đệm đầy cờ BF (SSPSTAT<0>) và bít cho phép
ngắ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ít
WCOL phải được xóa bằng phần mềm để xác định việc ghi tiếp theo lên thanh ghi

Chỉ sử dụng trong chế độ I
2
C.
Bít 3 S : bít bắt đầu
Chỉ sử dụng trong chế độ I
2
C.
Bít 2 R/
W
: đọc hoặc ghi thông tin
Chỉ sử dụng trong chế độ I
2
C.
Bít 1 UA : bít cập nhật địa chỉ
Chỉ sử dụng trong chế độ I
2
C.
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)

Trường Đại Học Công Nghiệp Hà Nội Khoa điện tử
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ất

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ác
châ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ập
trong 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ủ (processor
1) 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ủa
xung đồ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

Trường Đại Học Công Nghiệp Hà Nội Khoa điện tử
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ểm
nào bởi vì nó điều khiển xung đồng bộ SCK. Trong chế độ chủ, dữ liệu được
truyền/nhận ngay khi thanh ghi SSPSR được ghi lên. Nếu chỉ cần nhận dữ liệu, lúc
này chân SDO không có tác dụng ta có thể ấn định nó là ngõ vào ( đặt bít

+ 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.

Trường Đại Học Công Nghiệp Hà Nội Khoa điện tử
+ 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

Trường Đại Học Công Nghiệp Hà Nội Khoa điện tử
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ỉ.

Hình 8 SSPSTAT : Thanh ghi trạng thái MSSP(chế độ I2C)
Bít 7 SMP : bít điều khiển tốc độ
Trong chế độ chủ hoặc chế độ tớ :
1= không điều khiển tốc độ, để chế độ tốc độ chuẩn (100 KHZ và 1MHZ ).
0= cho phép điều khiển tốc độ, tốc độ cao (400 KHZ)
Bít 6 CKE : bít chọn SMBUS
Trong chế độ chủ hoặc chế độ tớ :
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ỉ.
Bít 4 P : bít stop
1= xác định bít stop
0= không xác định bít stop
Bít 3 S : bít start
1= phát hiện bít start

Trường Đại Học Công Nghiệp Hà Nội Khoa điện tử
0= không phát hiện bít start
Bít 2 R/
W
: đọc hoặc ghi thông tin
Trong chế độ tớ :
1= đọc.

Trong chế độ nhận (chế độ chủ hoặc tớ ) :
Không sử dụng đến bít này.
Bít 6 SSPOV : bít cờ tràn nhận
Chế độ nhận :
1= 1 byte dữ liệu mới được nhận trong khi dữ liệu cũ vẫn còn trong thanh
ghi SSPBUF.
0= không có tràn.
Chế độ truyền :
Không sử dụng đến bít này.
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ổng
nố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))

Trường Đại Học Công Nghiệp Hà Nội Khoa điện tử
0111 : I2C chế độ tớ , 10 bít địa chỉ.
0110 : I2C chế độ tớ, 7 bít địa chỉ.

phầ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ủ )

Trường Đại Học Công Nghiệp Hà Nội Khoa điện tử
1= khởi tạo điều kiện start trên các chân SDA và SCL. Tự động xóa bằng
phầ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.
Chế độ chủ :
1= khởi tạo điều kiện start trên các chân SDA và SCL. Tự động xóa bằng
phần cứng.
0= không cho phép điều kiện start.
Chế độ tớ :
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 trong
thanh 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ít
start 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 khi
bus 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ỉ.

sẽ có mức
logic 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

Trường Đại Học Công Nghiệp Hà Nội Khoa điện tử
truyền và 1 bít
ACK
được nhận lại từ tớ khi tớ nhận được đủ 1 byte. Điều kiện start
và stop được xuất ra chỉ ra quá trình bắt đầu và kết thúc của 1 khung truyền nố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ời giá
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ều
kiện start và stop được xuất ra chỉ ra quá trình bắt đầu và kết thúc của 1 khung
truyề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ép
Start.
+ Đặ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ỳ

thứ 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à BRG
tạm ngưng hoạt động cho tới khi dữ liệu hoặc địa chỉ tiếp theo được đưa vào thanh
ghi SSPBUF, dữ liệu hoặc địa chỉ tiếp tục được truyền đi tại cạnh xuống của xung
clock tiếp theo.
Bít cờ trạng thái BF :
Trong quá trình truyền, bít BF (SSPSTAT<0>) được đặt khi CPU ghi tới
SSPBUF và được xóa khi tất cả 8 bít được dịch hết ra ngoài.
Bít cờ trạng thái WCOL :
Nếu ghi tới thanh ghi SSPBUF khi đang truyền thì bít WCOL được đặt và
nội dung bộ đệm không thay đổi. Bít WCOL phải được xóa bằng phần mềm.
Bít cờ trạng thái ACKSTAT :
Trong quá trình truyền, bít ACKSTAT (SSPCON2<6>) được xóa khi thiết bị tớ
gửi một xung
ACK
(
ACK
=0) và được đặt khi thiết bị tớ không gửi xung
ACK
(
ACK
=1). Thiết bị tớ gửi 1 xung
ACK
khi nhận đúng địa chỉ của nó hoặc khi nhận
dữ liệu.



Nhờ tải bản gốc

Tài liệu, ebook tham khảo khác

Music ♫

Copyright: Tài liệu đại học © DMCA.com Protection Status