Hallo Zusammen, ich habe eine kleine Routne für einen 25AA02E48 Chip geschrieben. diese arbeitet aber nicht korrekt. Takt und Daten liegen an, allerdings bekomme ich keine Daten zurück.
1 | /************************************************************************/
|
2 | // 25AA02E48-Befehle
|
3 | /************************************************************************/
|
4 | #define READ 0x03 // Read data from memory array beginning at selected address
|
5 | #define WRITE 0x02 // Write data to memory array beginning at selected address
|
6 | #define WRDI 0x04 // Reset the write enable latch (disable write operations)
|
7 | #define WREN 0x06 // Set the write enable latch (enable write operations)
|
8 | #define RDSR 0x05 // Read STATUS register
|
9 | #define WRSR 0x01 // Write STATUS register
|
10 | /************************************************************************/
|
11 | |
12 | /************************************************************************/
|
13 | unsigned char Read_Byte_25AA025E48(unsigned char unc_Register) |
14 | {
|
15 | unsigned char unc_Daten = 0; |
16 | |
17 | SPI1_Open(SPI1_DEFAULT); |
18 | |
19 | CS_1 = 0; |
20 | __delay_ms(1); |
21 | |
22 | if(SSPSTATbits.BF) |
23 | {
|
24 | SPI1_ExchangeByte(READ); |
25 | SPI1_ExchangeByte(unc_Register); |
26 | unc_Daten = SPI1_ExchangeByte(0x00); |
27 | }
|
28 | |
29 | __delay_ms(1); |
30 | CS_1 = 1; |
31 | |
32 | SPI1_Close(); |
33 | |
34 | |
35 | return unc_Daten; |
36 | }
|
37 | /************************************************************************/
|
38 | |
39 | chr_MAC[0] = Read_Byte_25AA025E48(0xFA); |
40 | chr_MAC[1] = Read_Byte_25AA025E48(0xFB); |
41 | chr_MAC[2] = Read_Byte_25AA025E48(0xFC); |
42 | chr_MAC[3] = Read_Byte_25AA025E48(0xFD); |
43 | chr_MAC[4] = Read_Byte_25AA025E48(0xFE); |
44 | chr_MAC[5] = Read_Byte_25AA025E48(0xFF); |
45 | |
46 | sprintf(chr_Temp, "MAC-Adresse: %02X:%02X:%02X:%02X:%02X:%02X\n\r", chr_MAC[0], chr_MAC[1], chr_MAC[2], chr_MAC[3], chr_MAC[4], chr_MAC[5]); |
47 | USART_Write_String(chr_Temp); |
Ich bekomme nur 00:00.. zurück. Mit SPI arbeite ich zum ersten mal.Laut DB schreibt am ja 0x03 und das zu lesende Reg. Danach sollen die Daten kommen. Woran kann das liegen? Die Leitungen CLK -> CLK. SDO -> SDI, SDI -> SDO. hold und WP sind über einen 100K an VCC angeschlossen. VG Ingo