Interfejsy szeregowe
Dariusz Chaberski
Interfejs I
2
C
SCL
SDA
progra-
mowalna
matryca
bramek
sterownik
wyświe-
tlacza
LCD
mikro-
kontroler
A
prze-
twornik
A/C
pamięć
RAM lub
EEPROM
mikro-
kontroler
B
I
2
C - Inter IC - Inter Integrated Circuit
2
§ elektryczne podłączenie dwóch urządzeń z wykorzystaniem magistrali I
2
C
SDA (Serial Data Line) - linia danych
urządzenie 1
CLK1
OUT
CLK1
IN
DATA1
OUT
DATA1
IN
SCL (Serial Clock Line) - linia zegara
rezystory
podwieszające R
p
R
p
V
DD
urządzenie 2
CLK2
IN
DATA2
IN
DATA2
OUT
CLK2
OUT
3
§ transfer pojedynczego bitu
SCL
SDA
linia danych
stabilna
zm
ia
n
a
d
a
n
y
ch
d
o
zw
o
lo
n
a
4
§ rozpoczęcie i zakończenie transmisji
SDA
SCL
warunek STOPu
warunek STARTu
S
P
5
§ transfer danych (2 bajty)
SDA
SCL
S
lub
Sr
MSB
9
3-8
2
1
8
9
ACK
1
2
Sr
lub
P
potwierdzenie z układu
podrzędnego
warunek Startu lub
powtórzonego
Startu
warunek Stopu lub
powtórzonego
Startu
bajt skompletowany - przerwanie wewnątrz
układu podrzędnego
linia zegara utrzymywana na niskim poziomie
w momencie obsługi przerwania
Sr
P
ACK
7
6
§ potwierdzenie
warunek Startu
SDA (nadajnik)
SDA (odbiornik)
SCL (układ
nadrzędny)
brak potwierdzenia
potwierdzenie
impuls zegarowy
dla potwierdzenia
S
1
2
8
9
7
§ synchronizacja zegara podczas procedury arbitrażu
rozpoczęcie
odmierzania czasu
trwania stanu
wysokiego
reset licznika
SCL (1)
SCL (2)
SCL
stan oczekiwania
8
§ procedura arbitrażu dwóch MASTERów
S
układ nadrzędny 1
traci arbitraż
SDA16=SDA
SDA (1)
SDA (2)
SDA
SCL
9
§ kompletny transfer danych
SCL
SDA
S
1-7
8
9
1-7
8
9
1-7
8
9
dane
potwierdzenie
dane
R
/W
adres
warunek
Startu
potwierdzenie
potwierdzenie warunek
Stopu
P
10
§ adresowanie SLAVE’a 7-bitowym adresem poprzez MASTERa, który jest nadajnikiem
§ natychmiastowy odczyt SLAVE’a
11
§ format kombinowany
12
PCF8574 Remote 8-bit I/O expander for I2C-bus
13
§ Simplified schematic diagram of each I/O
14
§ Addressing
15
§ WRITE mode (output)
16
§ READ mode (input)
17
§ Interrupt generated by a change of input to I/O P5
18
§ Transient pull-up current I
OHt
while P3 changes from LOW-to-HIGH and back to LOW
19
Interfejs SPI
20
§ SPI Transfer Format with CPHA = 0 (8-bit)
21
§ SPI Transfer Format with CPHA = 1 (8-bit)
22
§ 16-bit SPI Transfer Format
23
§ Setup & Hold Timing
24
§ Timing Master Mode
25
§ Timing Slave Mode
26
USART
Universal (Synchronous) Asynchronous Receiver Transmitter
§ UART
TX/RX
D0 D1 D2 D3 D4 [D5] [D6] [D7] Pa Sto Sto
Sta
RS - Recommended Standard
RS 232 H = -12 V, L = +12V
RXD Received eXchange Data
TXD Transmit eXchange Data
D0
D1
D2
Sta
TX/RX
27
§ USRT
D0 D1 D2 D3 D4 [D5] [D6] [D7] Pa
TX/RX
CLK
TX/RX -> CLK
28
1-Wire
29
§ Pin electrical scheme
30
§ Communication sequence
31
§ WRITE/READ
32
§ 1-Wire waveforms/Master Timing
33
§ RESET
unsigned char reset1w(void){
unsigned char ret=0, i;
PORTA&=0xfe;
DDRA|=0x01;
for(i=0; i<48; i++)
delay us(10);
DDRA&=0xfe;
PORTA|=0x01;
delay us(65);
if((PINA&0x01)==0x00)
ret=1;
delay us(90);
if((PINA&0x01)==0x00)
ret=0;
for(i=0; i<15; i++)
delay us(30);
return ret;
}
34
§ WRITE
void w1w(unsigned char w){
unsigned char i;
for(i=0; i<8; i++){
PORTA&=0xfe;
DDRA|=0x01;
delay us(11);
if((w & (1<<i))==0)
delay us(60);
DDRA&=0xfe;
PORTA|=0x01;
delay us(60);
}
}
35
§ READ
unsigned char r1w(void){
unsigned char i, ret=0, j;
for(i=0; i<8; i++){
PORTA&=0xfe;
DDRA|=0x01;
delay us(1);
DDRA&=0xfe;
PORTA|=0x01;
delay us(14);
if((PINA & 0x01)!=0)
ret|=(1<<i);
delay us(60);
}
return ret;
}
36
§ 8-bit CRC (Cyclic Redundancy Check)
37
unsigned char crc1w(unsigned char * tab){
unsigned char crc=0, i, j, t1, t2, t, tt=0;
for(i=0; i<8; i++){
t=tab[i]; t1=t;
for(j=0; j<8; j++){
t^=crc;
t2=t&0x01;
t=crc;
if(t2)
t^=0x18;
t=(t>>1)+0x80*t2;
crc=t;
t1=(t=t1>>1);
}
tt|=tab[i];
}
if(tt==0) return 1;
return crc;
}
38