Professional Documents
Culture Documents
ch7 SPI
ch7 SPI
}
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.