Professional Documents
Culture Documents
Bài 10 Spi Trong Pic
Bài 10 Spi Trong Pic
7.1 Gii thiu v SPI SPI (Serial Peripheral Interface) l mt dng giao thc truyn ni tip
c dng giao tip vi cc thit b ngoi vi(EEPROM,SDcard) v cc vi iu khin
khc. 7.2 Ch SPI trong vi iu khin PIC Giao tip SPI c hin thc qua 4 chn ca vi
iu khin:
SDI( Serial Data In ): Tn hiu ni tip c a vo vi iu khin
SDO( Serial Data Out): Tn hiu ni tip t vi iu khin i ra
CLK(Clock): xung clock to ra bi master
SS(Slave Select): tch cc mc thp, dng chn slave truyn d liu
7.2.1 Cc thanh ghi iu khin SPI Ch SPI c iu khin bng 4 thanh ghi sau MSSP
Control Register 1 (SSPCON1)
MSSP Status Register (SSPSTAT)
Serial Receive/Transmit Buffer Register(SSPBUF)
MSSP Shift Register(SSPSR) thanh ghi ny khng c truy xut bi ngi dng Hai thanh
ghi SSPCON1 v SSPSTAT l hai thanh ghi iu khin, cn than ghi SSPSR l thanh ghi dng
dch d liu ra/vo vi iu khin, SSPBUF l thanh ghi dng c d liu t ngoi vo
hoc ghi d liu truyn ra ngoi. ch nhn, 2 thanh SSPBUF v SSPSR l 1 b buffer
i, khi d liu t ngoi truyn vo c lu y trong SSPSR(8 bits) th d liu ny c
truyn ti thanh ghi SSPBUF ngi dng ly ra. Cn ch truyn th khi d liu c
ghi vo thanh ghi SSPBUF th cng lc d liu cng c ghi vo thanh ghi SSPSR dch
ra ngoi.
Code:
void init_spi_master(void) {
SSPSTATbits.CKE = 1; // when CKP = 0,CKE = 0 transmit data on falling clock,CKE = 1
transmit data on rising clock // when CKP = 1,CKE = 1 transmit data on rising clock,CKE = 1
transmit data on falling clock
SSPCON1bits.CKP = 1; // CKP=0 data first,second is clock; CKP=1 clock first,second is data
SSPCON1bits.SSPEN = 1; // enable SPI master
SSPCON1bits.SSPM0 = 0; //
SSPCON1bits.SSPM1 = 0; //
SSPCON1bits.SSPM2 = 0; //
SSPCON1bits.SSPM3 = 0; // preacaler 1:4 }