Hallo zusammen.
Ich arbeite an einem kleinen RFID Reader. Ich verwende als Controller
einen ATTiny2313 und als Reader einen NXP Mifare MFRC531.
Diese Beiden ICs sind über SPI(USI) verbunden. (siehe Schaltplan)
Beitrag "Senden/Empfangen Problem mit ATtiny 2313 und FTDI FT232R"
Mein Problem: Ich bekomme vom MFRC531 keine Antwort auf DI(vom
ATTiny2313)->Leitung ist immer auf LOW.
Ich verwende den ATTiny2313 als Master und habe SPI(USI) dort wie folgt
initialisiert:
1 | void init_master()
|
2 | {
|
3 | DDRB=~(1<<PB5); //MOSI
|
4 |
|
5 | }
|
6 |
|
7 | unsigned char master_trans(unsigned char byte)
|
8 | {
|
9 |
|
10 | USIDR=byte;
|
11 | USISR=(1<<USIOIF);
|
12 | do
|
13 | {
|
14 | USICR= (1<<USIWM0)|
|
15 | (1<<USICS1)|
|
16 | (1<<USICLK)|
|
17 | (1<<USITC);
|
18 | }
|
19 | while (!(USISR&(1<<USIOIF)));
|
20 | return USIDR;
|
21 | }
|
mit der Funktion "master_trans" kann ich ein byte über DO schicken -
Funktioniert.
Bei der Initialisierung des MFRC531 habe ich nur NNS aus LOW geschaltet.
1 | init_mfrc()
|
2 | {
|
3 | DDRB |= (1<<PB3); // NSS -> Ausgang
|
4 | PORTB |=(1<<PB3); // NSS -> LOW
|
5 | }
|
Ich habe mir aus dem Datenblatt des MFRC531 die SPI -Spezifikation(Seite
17 - 22). angesehen.
http://www.nxp.com/#/pip/pip=[pfp=41960]|pp=[t=pfp,i=41960]
Habe daraus folgenden gemacht:
1 | //Write DATA
|
2 | master_trans(4); //Byte 0 : 0|ADDRESS|0 0|000010|0
|
3 | _delay_ms(1000);
|
4 |
|
5 | master_trans(170);//Byte 1 : 10101010
|
6 | _delay_ms(1000);
|
7 |
|
8 | //Read DATA
|
9 | master_trans(132);//Byte 0 : 1|ADDRESS|0 1|000010|0
|
10 | _delay_ms(1000);
|
11 |
|
12 | master_trans(132);//Byte 1 : 1|ADDRESS|0 1|000010|0
|
13 | _delay_ms(1000);
|
14 |
|
15 | master_trans(0);//last Byte : 0|000000|0
|
Ich will mit dem oben gepostetem code, den FIFO ansprechen. Im
Datenblatt(Seite 25) steht dass der FIFOData Register die Adresse
0x02(also 10 binär) hat, diese hab ich dann oben als Addresse verwendet.
Wahrscheinlich völliger Schwachsinn.
Ich befürchte, dass bei der Initialisierung vom MFRC531 noch so einiges
fehlt. Kann mir da jemand helfen?
lg georg