Hallo zusammen,
Ich versuche derzeit einen ADS8344 auszulesen. Dies funktioniert soweit
eigentlich. Jedoch habe ich das Problem, dass es nur funktioniert wenn
ich einen sehr langsamen SPI Takt verwende. Das heisst, mit 130kHz Takt
funktioniert alles ohne Probleme. Sobald ich aber auf beispielsweise
1MHz erhöhe, funktioniert es nicht mehr. Laut Datenblatt sollten bis zu
2.3MHz möglich sein.
Funktioniert nicht mehr bedeutet, dass immer der Wert 0 ausgelesen wird.
Ich verwende folgenden Code:
1 | uint16_t ads8344_read(void)
|
2 | {
|
3 | uint8_t temp = 0;
|
4 | uint32_t result = 0;
|
5 |
|
6 | ADS8344_ENABLE = 0;
|
7 |
|
8 | spi3_read_send(ADS8344_CONFIG | 1 << ADS8344_STARTBIT ); //CONFIG = 0x04 Startbit = 7
|
9 |
|
10 | // MSB from ADC
|
11 | temp = spi3_read_send(0);
|
12 | result = temp << 9;
|
13 |
|
14 | // LSB from ADC
|
15 | temp = spi3_read_send(0);
|
16 | result |= temp << 1;
|
17 |
|
18 | // last bit from adc
|
19 | temp = spi3_read_send(0);
|
20 | result |= temp >> 7;
|
21 |
|
22 | ADS8344_ENABLE = 1;
|
23 |
|
24 | return result;
|
25 | }
|
Übersehe ich irgendwo etwas im Datenblatt?
Grüsse