Hallo,
mein Status ist im Moment folgender:
- Karte in Idle setzen geht
- Karte dann initialisieren geht auch
das wars dann schon :-(
Habe dann versucht 512 Bytes auf die Karte zu schreiben:
1 | do
|
2 | {
|
3 | SPI_put_char(0xFF);
|
4 | SPI_put_char(0x58);
|
5 | SPI_put_char(0x00);
|
6 | SPI_put_char(0x00);
|
7 | SPI_put_char(0x02);
|
8 | SPI_put_char(0x00);
|
9 | SPI_put_char(0xFF);
|
10 | answer=SPI_get_char();
|
11 | }while(answer==0xFF);//CMD write block
|
12 |
|
13 | rs232_send_hex(answer);//PC rec. 0x00
|
14 | SPI_put_char(0xff);
|
15 | SPI_put_char(0xff);
|
16 | SPI_put_char(0xfe);//start block
|
17 | for(i=0;i<512;i++)
|
18 | {
|
19 | SPI_put_char(0xAA);//block
|
20 | }
|
21 | SPI_put_char(0xff);//dummy
|
22 | SPI_put_char(0xff);//dummy
|
23 | do
|
24 | {
|
25 | answer=SPI_get_char();
|
26 | rs232_send_hex(answer);
|
27 | }while(answer==0xFF);
|
28 |
|
29 | answer&=0x1f;
|
30 | rs232_send_hex(answer);//should be 0x05
|
31 | do
|
32 | {
|
33 | answer=SPI_get_char();
|
34 | }while(answer!=0xFF);
|
Statt den zu erwartenden 0x05 kommt meist was anderes konnte kein Muster
erkennen. Hatte aber schon einmal 0x05!
habe einmal versucht die Bocklänge zu setzen, erhalte als antwort nie
0x00, meist 0x03 oder 0x01 ...:
1 | SPI_Disable();
|
2 | SPI_PutChar(0xFF);
|
3 | SPI_Enable();
|
4 | do
|
5 | {
|
6 | SPI_put_char(0x50);
|
7 | SPI_put_char(0x00);
|
8 | SPI_put_char(0x00);
|
9 | SPI_put_char(0x00);
|
10 | SPI_put_char(0x00);
|
11 | SPI_put_char(0xFF);
|
12 | do
|
13 | {
|
14 | answer=SPI_get_char();
|
15 | }while(answer==0xFF);
|
16 | }while(answer!=0x00);
|
Habe auch schon viele codebeispiele(http://www.captain.at,
http://www.captain.at, uvm) ausprobiert, CMD1 geht weiter komme ich
nicht.
Ideen?
glg,
Stefan