Download as pdf or txt
Download as pdf or txt
You are on page 1of 33

Chương 6

Truyền thông SPI


Sơ đồ kết nối
Đặc điểm
• Serial to Peripheral Interface (SPI) là giao thức truyền
thông được phát triển bởi Motorola và được các nhà sản
xuất chấp nhận. SPI còn được gọi là giao tiếp nối tiếp 4
dây.
• SPI-bus là giao tiếp truyền thông nối tiếp 4 dây đơn giản
được sử dụng bởi nhiều chip vi xử lý hay vi điều khiển
ngoại vi mà nó cho phép các bộ điều khiển và các thiết
bị ngoại vi truyền thông lẫn nhau.
• SPI Bus có thể truyền đồng thời cả 2 hướng-truyền song
công (full duplex)

• Tốc độ truyền dữ liệu Master/Slave có thể được hỗ trợ lên


đến 10Mbps. Cả 2 giao thức single-master và multi-
master đều khả thi trong SPI.

• SPI Bus thường được sử dụng trên board mạch (PCB),


SPI Bus được thiết kế để truyền dữ liệu giữa 2 IC chips
khác nhau ở tốc độ rất cao, vì vậy dây bus không thể quá
dài (điện kháng của chúng sẽ tăng lên rất nhiều và đường
bus sẽ trở nên mất ổn định.)
• SPI Bus được thiết kế để truyền dữ liệu giữa 2 IC chips
khác nhau ở tốc độ rất cao vì vậy dây bus không thể quá
dài làm điện kháng của tăng lên và đường bus sẽ trở nên
mất ổn định. Tuy nhiên vẫn có thể sử dụng SPI Bus ngoài
PCB ở tốc độ thấp nhưng nó hoàn toàn không thực tế.
• Ngoại vi có thể là Real Time Clocks, chuyển đổi ADC,
DAC, memory module như là EEPROM và FLASH, cảm
biến như là cảm biến nhiệt độ, cảm biến áp suất hoặc các
thiết bị khác như bộ điều khiển LCD, bộ điều khiển
UART, bộ điều khiển CAN bộ điều khiển USB, bộ điều
khiển khuếch đại…
Kết nối cơ bản

• MOSI và MISO là nhóm đường dây dữ liệu


• SS và CSLK là 2 dây điều khiển.
Kết nối cơ bản
• Master Out Slave In (MOSI) – Tín hiệu MOSI được tạo
ra bởi Master bên nhận là Slave.
• Master In Slave Out (MISO) – Slave tạo ra tín hiệu MISO
và được Master chấp nhận.
• Serial Clock (SCLK or SCK) – Tín hiệu SCLK được tạo
ra bởi Master để truyền dữ liệu đồng bộ giữa master và
slave.
• Slave Select (SS) from master to Chip Select (CS) of
slave - Tín hiệu SS được tạo ra bởi Master để lựa chọn
slave/ thiết bị ngoại vi riêng. SS/CS là tín hiệu tác động
mức thấp.
Truyền thông
• Việc truyền thông được thiết lập bởi master.
• Master cấu hình clock, sử dụng một tần số nhỏ hơn hoặc
bằng tần số lớn nhất mà thiết bị slave được hỗ trợ.
• Master sau đó lựa chọn slave mong muốn cho việc truyền
thông bằng cách kéo (pull) chân SS của slave xuống mức
thấp.
• Master chỉ lựa chọn một slave
tại một thời điểm
• Hầu hết các ngoại vi và Slave
có ngõ ra 3 trạng thái (tri-state
output) ở trạng thái trở kháng
cao (khi không kết nối) khi thiết
bị không được lựa chọn.
• Việc truyền dữ liệu song công
có thể xảy ra suốt mỗi chu kỳ
clock- master sẽ gửi một bit
trên dây MOSI; slave đọc nó
trên dây đó và sẽ gửi 1 bit trên
dây MISO, master đọc bit này
Kết nối mở rộng
MODE hoạt động
• Hiện tại có 4 mode cơ bản (MODE 0. 1,2,3) của SPI dựa
vào config SCLK như sau:
CPHA=0 CPHA=1
Phân cực clock và phase
• Một cặp thông số khác được gọi là clock polarity (CPOL)
và clock phase (CPHA) xác định cạnh của tín hiệu clock
và tời điểm lấy mẫu.

Mode CPOL CPHA


0 0 0
1 0 1
2 1 0
3 1 1
Phân cực clock và phase
Khởi tạo
Sbit SPI_SCLK = P2^0;
Sbit SPI_MOSI = P2^1;
Sbit SPI_SISO = P2^2;
Sbit SPI_CS = P2^3;
Void SPI_Init() // Hàm khởi tạo
{
SPI_CS =1;
SPI_SCLK =0;
SPI_MISO =1

}
void PSI_Write (unsigned char b)
{
unsigned char i;
for (i=0;i<8;i++)
{
if (b&0x80==1)
SPI_MOSI=1;
else
SPI_MOSI=0;
SPI_SCLK=1;
SPI_SCLK=0;
b <<=1;
}
}
unsigned char PSI_Read ()
{
unsigned char i,b=0;
for (i=0;i<8;i++)
{
b <<=1;
SPI_SCLK=1;
if (SPI_MISO)
b |=0x01;
SPI_SCLK=0;
}
return b;
}
Ưu điểm
• Truyền thông song công.
• Lượng dữ liệu đưa vào cao hơn giao thức I2C.
• Không giới hạn ở 8-bit word trong trường hợp truyền bit.
• Tùy ý lựa chọn size thông tin nội dung và mục đích.
• Giao tiếp phần cứng đơn giản.
• Yêu cầu nguồn tiêu chuẩn thấp hơn I2C mạch ít cồng kềnh.
• Không có sự điều chỉnh hay các chế độ truyền thất bại liên
quan.
• Slave sử dụng clock của master và không cần độ chính xác của
bộ dao động (oscillator).
• Không cần thiết bộ truyền nhận.
• Nhiểu nhất là một dây tín hiệu bus duy nhất trên thiệt bị (CS),
tất cả dây khác được chia sẽ.
Nhược điểm
• Yêu cầu nhiều dây trên IC hơn I2C.
• Không ấn định địa chỉ, tín hiệu chip select được yêu
cầu trên bus được chia sẽ.
• Không có luồn điều khiển phần cứng.
• Không có chế độ nhận biết slave.
• Các bus multi master thì ít và bất tiện, thường sử dụng
giới hạn slave đơn.
• Không có một tiêu chuẩn chính thức, không có sự phê
duyệt độ phù hợp.
• Chỉ làm việc ở khoản cách ngắn hơn so với Rs232,
Rs485 hay CAN.
Giao thức đọc và viết trong SPI
• VĐK : master
• Thiết bị SPI: slave
• MSB (most-significant bit) sẽ được truyền trước
• Trong suốt quá trình truyền CE/CS/SS phải luôn ở
mức thấp hay mức cao (tùy thuộc vào thiết bị)
• Dữ liệu và địa chỉ đều truyền theo từng byte
• Bit D7 của byte địa chỉ luôn là
– 1 khi hoạt động ghi;
– 0 khi hoạt động đọc
WRITE

READ
Giao thức viết trong SPI
• Hoạt động viết từng byte đơn
Giao thức viết trong SPI
• Hoạt động viết nhiều byte
Giao thức đọc trong SPI
• Hoạt động đọc từng byte đơn
Giao thức đọc trong SPI
• Hoạt động đọc nhiều byte
DS1306 RTC (REAL TIME CLOCK)
DS1306 RTC (REAL TIME CLOCK)
DS1306 RTC (REAL TIME CLOCK)
• Ví dụ
1.

You might also like