Lập Trình Truyền Thông

You might also like

Download as pptx, pdf, or txt
Download as pptx, pdf, or txt
You are on page 1of 37

ĐẠI HỌC SƯ PHẠM KỸ THUẬT HƯNG YÊN

LẬP TRÌNH TRUYỀN


THÔNG(UART, SPI, I2C)
Thành viên nhóm:
Hà Văn Trung
ĐẠI HỌC SƯ PHẠM KỸ THUẬT HƯNG YÊN

TỔNG QUAN

-Mục đích của việc truyền thông là: giao tiếp, phục vụ cho các thiết bị gửi và nhận thông tin với nhau.

- Vi điều khiển PIC 16F877A hỗ trợ nhiều chuẩn truyền thông khác nhau như chuẩn nối tiếp USART giao tiếp
với máy tính theo chuẩn RS232, PSP (chuẩn song song), SPI, I2C.

-USART: chuẩn truyền thông nối tiếp không đồng bộ hoàn toàn tương thích với giao tiếp máy tính qua
RS232. Do chuẩn điện áp sử dụng tại PIC 16F877A là TTL nên để ghép nối với máy tính hoặc thiết bị khác
sử dụng chuẩn RS232 cần có bộ chuyển đổi điện áp, ví dụ như IC MAX232. USART mặc định sử dụng 2
chân C6 và C7 để truyền thông.
-PSP: với giao tiếp này, Pic sử dụng cổng D với vai trò là cổng truyền nhận song song 8 bit. Với PSP cho
phép PIC có thể giao tiếp trực tiếp với các VĐK khác bằng bus dữ liệu 8 bit. Các chân RD, CS, WR sẽ giúp
điều khiển đường truyền, chế độ hoạt động. PSP không hỗ trợ trên PIC16F873A, PIC16F876A.
-Truyền thông nối tiếp đồng bộ: hỗ trợ 2 chế độ là SPI và I2C.
ĐẠI HỌC SƯ PHẠM KỸ THUẬT HƯNG YÊN

NỘI DUNG
1.UART
2.SPI
3.I2C
ĐẠI HỌC SƯ PHẠM KỸ THUẬT HƯNG YÊN

1.UART

- UART là bộ truyền nhận dữ liệu nối tiếp bất đồng bộ. Là một giao thức truyền thông
phần cứng dùng giao tiếp nối tiếp không đồng bộ và có thể cấu hình được tốc độ.

- Thông thường, tốc độ truyền của UART được đặt ở một số chuẩn, chẳng hạn như
9600, 19200, 38400, 57600, 115200 baud và các tốc độ khác. Tốc độ truyền này định
nghĩa số lượng bit được truyền qua mỗi giây. Các tốc độ truyền khác nhau thường
được sử dụng tùy thuộc vào ứng dụng và hệ thống sử dụng.

- Với UART cho phép PIC 16F877A giao tiếp với máy tính theo chuẩn RS232
ĐẠI HỌC SƯ PHẠM KỸ THUẬT HƯNG YÊN

1.UART

- Khối truyền thông nối tiếp:


Start bit: một đường truyền khi không
hoạt động được điều khiển ở mức điện áp
cao. Để bắt đầu truyền dữ liệu, truyền
UART kéo đường dữ liệu từ mức điện áp
cao (1) xuống mức điện áp thấp (0). Chỉ
có 1 bit start bit.
Stop bit: được đặt ở phần cuối của
gói dữ liệu. Thông thường bit này dài
2 bit nhưng thường sử dụng 1 bit. Để
dừng truyền, UART giữ đường
truyền ở mức điện áp cao (1) .
ĐẠI HỌC SƯ PHẠM KỸ THUẬT HƯNG YÊN

1.UART

- Khối truyền thông nối tiếp:


Bit chẵn lẻ: cho phép người nhận đảm bảo
liệu dữ liệu được thu thập có đúng hay
không. Đây là một hệ thống kiểm tra lỗi
cấp thấp .Trên thực tế bit này không được
sự dụng rộng dãi.

Các bit dữ liệu: bao gồm dữ liệu thực


được truyền từ người gửi đến người
nhận. Độ dài khung dữ liệu có thể nằm
trong khoảng từ 5 đến 8. Nếu bit chẵn lẻ
không sử dụng thì chiều dài khung có thể
dài 9 bit. LSB của dữ liệu được truyền
trước tiên.
ĐẠI HỌC SƯ PHẠM KỸ THUẬT HƯNG YÊN

1.UART
-RS232
+ Giao diện: giao diện COM sử dụng cổng nối 9 chân và 25
chân. Cổng nối 25 chân chỉ có một số chân được sử dụng.
Thông dụng nhất là cổng nối 9 chân

+Sơ đồ chân trên giao diện DB9 và DB25


ĐẠI HỌC SƯ PHẠM KỸ THUẬT HƯNG YÊN

1.UART
-RS232

Giao diện và công dụng của các chân được thể hiện trong bảng sau:

DTE: nguồn hoặc đích của dữ liệu kỹ thuật số


DCE: là thiết bị được sử dụng để truyền hoặc
nhận dữ liệu.

+Receive data: dữ liệu nhận


+Transmit data: dữ liệu truyền
+Data terminal ready: DTE đầu cuối dữ liệu sẵn
sàng
+Signal ground: tin hiệu mặt đất
+Data set ready: DCE sẵn sàng làm việc
+Request to send: DTE yêu cầu truyền dữ liệu
+Clear to send: DCE sẵn sàng nhận dữ liệu
+Ring indicator: báo chuông
ĐẠI HỌC SƯ PHẠM KỸ THUẬT HƯNG YÊN

1.UART
-RS232

Sơ đồ chuyển đổi, ghép nối giữa COM 9 chân và COM 25 chân


ĐẠI HỌC SƯ PHẠM KỸ THUẬT HƯNG YÊN

1.UART
-RS232

Các kiểu ghép nối truyền thông trên cổng COM


ĐẠI HỌC SƯ PHẠM KỸ THUẬT HƯNG YÊN

1.UART
-RS232

Điện áp sử dụng truyền thông trong RS232 bao gồm cả mức điện áp âm và
dương (không tương thích với các mức logic TTL)

Giải điện áp sử dụng trong RS232 thể hiện trong bảng sau

Các chip giao tiếp, hỗ trợ chuyển đổi mức logic TTL sang mức điện áp
thích hợp trên cổng RS232, sử dụng giao tiếp được với VĐK Pic:
MAX232, MAX233,...
ĐẠI HỌC SƯ PHẠM KỸ THUẬT HƯNG YÊN

1.UART
-Ghép nối pic với máy tính qua RS232

Sử dụng phương pháp truyền thông không điều khiển luồng: chỉ dùng 3 chân TX
(truyền), RX (nhận), Ground (chung-nối đất) và ghép nối thông qua IC chuyển điện áp
MAX232
ĐẠI HỌC SƯ PHẠM KỸ THUẬT HƯNG YÊN

1.UART
-Lập trình với CCS
ĐẠI HỌC SƯ PHẠM KỸ THUẬT HƯNG YÊN

1.UART
-Lập trình với CCS
ĐẠI HỌC SƯ PHẠM KỸ THUẬT HƯNG YÊN

1.UART
-Mô phỏng:

Bài toán 1: Nhận dữ liệu vào, điều khiển các đèn


Bài toán 2: Truyền dữ liệu, tăng giảm giá trị truyền đi
ĐẠI HỌC SƯ PHẠM KỸ THUẬT HƯNG YÊN

2.SPI
-SPI (Serial Peripheral Interface) là một chuẩn truyền thông nối tiếp tốc độ cao do
Motorola đề xuất.
-Các bit dữ liệu được truyền nối tiếp nhau, và có xung clock đồng bộ.
-Giao tiếp song công, có thể truyền và nhận dữ liệu tại cùng một thời điểm
-Khoảng cách truyền ngắn, được sử dụng để trao đổi dữ liệu với nhau giữa các chip
trên cùng một bo mạch
-Tốc độ truyền khoảng vài Mbs
-Các dòng vi điều khiển thường được tích hợp modele giao tiếp SPI dùng để giao tiếp
truyền dữ liệu với vi điều khiển khác, hoặc giao tiếp với các ngoại vi bên ngoài: Cảm
biến, EEPROM, ADC, LCD, SD Card…
ĐẠI HỌC SƯ PHẠM KỸ THUẬT HƯNG YÊN

2.SPI
-Giao tiếp của 1 master và 1 slave
SCK còn thường được gọi là SCLK, CLK
Chân MOSI và MISO còn thường được gọi là SDI, SDO
Chân CS còn thường được gọi là SS

-Bảng chức năng các chân trong chuẩn truyền SPI


ĐẠI HỌC SƯ PHẠM KỸ THUẬT HƯNG YÊN

2.SPI
-Khi hoạt động:

Bước 1: Khi master muốn truyền/nhận dữ liệu, nó


kéo tín hiệu chọn chip /CS xuống mức thấp.
Bước 2: Master cung cấp clock đồng bộ việc
truyền/nhận dữ liệu trên đường SCK. SPI là giao
thức xử lý song công, dữ liệu được truyền từ master
và slave sẽ diễn ra cùng lúc theo sự dao động của
xung SCK.
ĐẠI HỌC SƯ PHẠM KỸ THUẬT HƯNG YÊN

2.SPI
-Truyền và nhận dữ liệu

+Mỗi chip Master hay Slave sẽ có một thanh ghi


dữ liệu 8 bit chứa dữ liệu cần gửi đi hoặc dữ liệu
nhận về.
+Cứ mỗi xung nhịp do Master tạo ra trên SCLK,
một bit trong thanh ghi dữ liệu của Master được
truyền qua Slave trên đường MOSI, đồng thời
một bit trong thanh ghi dữ liệu của Slave cũng
được truyền qua cho Master trên đường MISO
ĐẠI HỌC SƯ PHẠM KỸ THUẬT HƯNG YÊN

2.SPI
-Các chế độ hoạt động

Có 4 chế độ hoạt động khác nhau


ĐẠI HỌC SƯ PHẠM KỸ THUẬT HƯNG YÊN

2.SPI

-Chuẩn SPI Trong vi điêu khiển PIC 16F877A

Chuẩn giao tiếp SPI cho phép truyền nhận đồng


bộ. Có thể hoạt động ở chế độ Master hoặc
Slave. Ta cần sử dụng 4 pin cho chuẩn giao tiếp
này:
+RC5/SDO: ngõ ra dữ liệu dạng nối tiếp (Serial
Data output).
+RC4/SDI/SDA: ngõ vào dữ liệu dạng nối tiếp
(Serial Data Input).
+RC3/SCK/SCL: xung đồng bộ nối tiếp (Serial
Clock).
+RA5/AN4/SS/C2OUT: chọn đối tượng giao
tiếp (Serial Select) khi giao tiếp ở chế độ Slave
mode.
ĐẠI HỌC SƯ PHẠM KỸ THUẬT HƯNG YÊN

2.SPI

-Chuẩn SPI Trong vi điêu khiển PIC 16F877A

+Tần số của xung clock


Fosc/4, Fosc/16, Fosc/64, Timer2_output/2
ĐẠI HỌC SƯ PHẠM KỸ THUẬT HƯNG YÊN

2.SPI

-Lập trình với CCS

1/Setup_spi (mode ) Dùng thiết lập giao tiếp SPI

Trong đó mode có thể là:


SPI_MASTER , SPI_SLAVE , SPI_SS_DISABLED
SPI_L_TO_H , SPI_H_TO_L
SPI_CLK_DIV_4 , SPI_CLK_DIV_16 , SPI_CLK_DIV_64 , SPI_CLK_T2
(*1) xác định VDK là master hay slave ,slave select
(*2) xác định clock cạnh lên hay xuống
(*3) xác định tần số xung clock , SPI_CLK_DIV_4 ngĩa là tần số = FOSC / 4 , tương ứng 1 chu kỳ lệnh /
xung
+Các nhóm này có thể kết hợp với nhau bởi dấu |
+Hàm không trả về trị.
ĐẠI HỌC SƯ PHẠM KỸ THUẬT HƯNG YÊN

2.SPI

-Lập trình với CCS

2 / Spi_read ( data )

+Data có thể có thêm và là số 8 bit


+Hàm trả về giá trị 8 bit value = spi_read ( )
+Hàm trả về giá trị đọc bởi SPI . Nếu value phù hợp SPI_read ( ) thì data sẽ được phát xung ngoài và data
nhận được sẽ được trả về . Nếu không có data sẵn sàng , spi_read ( ) sẽ đợi data +
+Hàm chỉ dùng cho SPI hardware ( SPI phần cứng ) .
ĐẠI HỌC SƯ PHẠM KỸ THUẬT HƯNG YÊN

2.SPI

-Lập trình với CCS

3 / spi_write ( value )

+Hàm không trả về trị,value là giá trị 8 bit


+Hàm này gửi value ( 1 byte ) tới SPI , đồng thời tạo 8 xung clock
+Hàm chỉ dùng cho SPI hardware ( SPI phần cứng )

4 / spi_data_is_in ( )

+Hàm trả về TRUE ( 1 ) nếu data nhận được đầy đủ ( 8 bit ) từ SPI , trả về false nếu chưa nhận đủ
+Hàm này dùng kiểm tra xem giá trị nhận về SPI đã đủ 1 byte chưa để dùng hàm spi_read ( )
ĐẠI HỌC SƯ PHẠM KỸ THUẬT HƯNG YÊN

2.SPI
-Mô phỏng:

Bài toán: Giao tiếp SPI giữa 2 vi điều khiển pic


ĐẠI HỌC SƯ PHẠM KỸ THUẬT HƯNG YÊN

3.I2C
- I2C là tên viết tắt của cụm từ Inter - Intergrated Circuit – Bus giao tiếp giữa các IC
với nhau
- Giao tiếp nối tiếp đồng bộ, có thể giao tiếp với nhiều thiết bị
- Bus I2C được sử dụng làm bus giao tiếp ngoại vi cho rất nhiều loại IC khác nhau
như các loại Vi điều khiển 8051, PIC, AVR, ARM, chíp nhớ như RAM tĩnh (Static
Ram), EEPROM, bộ chuyển đổi tương tự số (ADC), số tương tụ (DAC), IC điểu
khiển LCD, LED…
ĐẠI HỌC SƯ PHẠM KỸ THUẬT HƯNG YÊN

3.I2C
-Đặc điểm:
+Cơ chế giao tiếp nối tiếp, đồng bộ
+Chỉ cần dùng 2 dây để kết nối thiết bị: SDA(Serial DATA) và SCL(Serial Clock),
SDA là đường truyền dữ liệu 2 hướng, SCL là đường truyền xung đồng hồ và chỉ theo
một hướng
+Sử dụng hệ thống địa chỉ 7 bit để xác định một thiết bị trên bus i2c
+Cơ chế Master/Slave
ĐẠI HỌC SƯ PHẠM KỸ THUẬT HƯNG YÊN

3.I2C
-Giao thức truyền dữ liệu
ĐẠI HỌC SƯ PHẠM KỸ THUẬT HƯNG YÊN

3.I2C
-I2C Master

+Xung start được gửi đi bởi Master


+SCL=1 và xung sườn xuống ở chân SDA
+Gửi địa chỉ của Slave+ bit 0(write)/bit 1(read)
+Lắng nghe bit ACK
+Gửi dữ liệu cần thiết/Ghi dữ liệu cần thiết và trả về bit ACK. Với byte dữ liệu đọc
cuối cùng thì trả về NACK
+Stop Condition= xung sườn lên trên chân SDA và SCL=1
ĐẠI HỌC SƯ PHẠM KỸ THUẬT HƯNG YÊN

3.I2C
-I2C Slave

+Slave lắng nghe bus bất cứ khi nào có 1 Master phát ra địa chỉ
+Nếu nhận được địa chỉ+ bit 1(read), Slave phải gửi dữ liệu yêu cầu, nếu là bit
0(write) thì Slave sẽ nhận dữ liệu
+Slave sau khi gửi dữ liệu nếu không nhận được bit ACK từ Master thì Slave trở lại
chế độ lắng nghe
+Slave nhận dữ liệu , cần gửi lại bit ACK sau mỗi byte nhận được
ĐẠI HỌC SƯ PHẠM KỸ THUẬT HƯNG YÊN

3.I2C
-Các chế độ hoạt động

Dựa theo tốc độ:


+Chế độ chuẩn (Standard mode). Tốc độ truyền có thể lên tới 400Kbits/s
+Chế độ nhanh (Fast mode) và cao nhất là 3,4Mbits/s
+Chế độ cao tốc (High‐speed mode)
Nếu chia theo quan hệ chủ tớ:
+Một Master nhiều Slave
+Một Master một Slave
+Nhiều Master nhiều Slave
ĐẠI HỌC SƯ PHẠM KỸ THUẬT HƯNG YÊN

3.I2C
-Lập trình với CCS

Để sử dụng khối I2C ta sử dụng khai báo sau:

#use i2c(chế_độ, tốc độ, sda = PIN_C4, scl=PIN_C3)

‐ Chế độ: Master hay Slave


‐ Tốc độ: Slow (100KHz) hay Fast (400KHz)
‐ SDA và SCL là các chân i2c tương ứng của PIC Sau khai báo trên, ta có thể sử dụng
các hàm nêu trên để thực hiện, xử lý các giao tiếp i2c với các thiết bị ngoại vi khác.
ĐẠI HỌC SƯ PHẠM KỸ THUẬT HƯNG YÊN

3.I2C
-Lập trình với CCS

Các hàm:
+i2c_isr_state(): Thông báo trạng thái giao tiếp I2C
+i2c_start(): Tạo điều kiện START
+i2c_stop(): Tạo điều kiện STOP
+i2c_read(): Đọc giá trị từ thiết bị I2C, trả về giá trị 8 bit
+i2c_write(): Ghi giá trị 8 bit đến thiết bị I2C
ĐẠI HỌC SƯ PHẠM KỸ THUẬT HƯNG YÊN

3.I2C
-Mô phỏng:

Bài toán: Kết nối nhiều LCD thông qua i2c


ĐẠI HỌC SƯ PHẠM KỸ THUẬT HƯNG YÊN

LUYỆN TẬP
Bài toán 1: Giao tiếp SPI giữa 3 vi điều khiển pic
Bài toán 2: Kết nối nhiều 3 LCD thông qua i2c
ĐẠI HỌC SƯ PHẠM KỸ THUẬT HƯNG YÊN

You might also like