SBC TLE9471-3ES Status Information

OP #7971519
Lesenswert?
• ▲
▼

Hallo, ich habe3 einen TLE9471-3ES ( https://www.infineon.com/assets/row/public/documents/10/49/infineon-tle9471-3es-datasheet-en.pdf )und versuche diesen in Betrieb zu nehmen. Hierbei habe ich ein Verständnisproblem. Wenn ich jetzt über SPI den SystemStatus auslese, bekomme ich den Wert 0x0C (0b1100)

Laut dem Datenblatt Kapitel 13.3 SPI Programming und der Tabelle 34 Status Information Field, sind die Register: DEV_STAT (Device Status) und BUS_STAT (Bus Failuire Status)

Wenn ich jetzt DEV_STAT auslese, bekomme ich den Wert 0x49 zurück. Bedeutet: Device Status before Restart Mode:

  • 01B , Restart due to failure (WD fail, TSD2, VCC1_UV, trial to access SLEEP MODE without any wake source activated); also after a wake-up from Fail-Safe Mode

Number of WD-Failure Events

  • 10B , 2x WD Fail, FO activation - Config 1 / 3 / 4 selected

Activation of Fail Output FO

  • 1B , Failure occurred

Wenn ich das Register jetzt aber clearen möchte (also 0x00 schreiben) gehen die Fehler nicht weg, sondern bleiben. Wie kann ich die Fehler löschen?

OP #7971580
Lesenswert?
• ▲
▼

Harald K. schrieb:

Chandler B. schrieb:

Wenn ich das Register jetzt aber clearen möchte

13.6 SPI Status Information Registers (S. 152)

... Clearing a register is done byte wise by setting the SPI bit 7 to “1”

Das habe ich gemacht

1
errCode = SBC_Write_Reg(SBC_DEV_STAT, 0x00, &retVal_u16);
2

3

4
SBC_ErrorCode SBC_Write_Reg(uint8_t SBC_Reg, uint8_t SBC_Val, uint16_t * returnval) {
5
    SBC_ErrorCode errCode;
6
    uint16_t returndata = SBC_SPI_TRANSFER16(SBC_Write_Bit | SBC_Reg, SBC_Val);
7
    if(returnval != NULL) {
8
        *returnval = returndata;
9
    }
10

11
    errCode.SBC_Register = SBC_Reg;
12
    errCode.flippedBitsMask = ((uint8_t)SBC_Read_Command(SBC_Reg)) ^ SBC_Val;
13
    errCode.expectedValue = SBC_Val;
14
}
15

16
uint16_t SBC_Read_Command(uint8_t SBC_Reg) {
17
    /* Read and return data - Bit[15:8] = Status Information Field - Bit [7:0] Register data */
18
    return  SBC_SPI_TRANSFER16(SBC_Read_Mask & SBC_Reg, 0x00U);
19
}
20

21

22
uint16_t SBC_SPI_TRANSFER16(uint8_t Upper, uint8_t Lower) {
23

24
    uint16_t LPSPI1_16bits_read = 0;
25
    //uint16_t tx_16bits = ((uint16_t)Upper<<8 | (uint16_t)Lower);
26
    uint16_t tx_16bits = ((uint16_t)Lower<<8 | (uint16_t)Upper);
27
    LPSPI1_transmit_16bits(tx_16bits);              /* Transmit half word (16 bits) on LPSPI1 */
28
    LPSPI1_16bits_read = LPSPI1_receive_16bits();   /* Receive half word on LSPI1 */
29
}

returndata in SBC_Write_Reg gibt mir auch schon 0x490C zurück. Hier hätte ich eigentlich 0x0008 oder 0x0808 erwartet. bei 0x0008 sind alle Bits in DEV_STAT gelöscht und 0x08 ist das restliche Status. Bei 0x0808 ist WD_FAIL in DEV_STAT noch gesetzt. dies löscht der SBC aber automatisch.

flippedBitsMask ist auf 0x0C. Dies müsste ja auch 0x00 sein, wenn alles richtig reingeschrieben worden ist.

Antwort schreiben

Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt. Bitte hier nur auf die ursprüngliche Frage antworten, für neue Fragen einen neuen Beitrag erstellen.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.