This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

AFE881H1EVM: Issue with HART data transmission

Part Number: AFE881H1EVM
Other Parts Discussed in Thread: AFE881H1, , AFE882H1

Hi Joseph,

we are facing problem with HART data transmission. I've given detailed description below.

Problem: Approximately every hundred HART frames, one byte shortly after the preamble bytes is not transmitted on `HART_OUT`, despite being sent to AFE881H1 `FIFO_U2H_WR` register via SPI.

See the example SPI protocol trace, below. It shows 5 preamble bytes and then 11 data data bytes written to `FIFO_U2H_WR`.

Data: h0E | h00, h00 | h00, h49 | h00, hD4 | h00, - assert RTS
Data: hA0 | h04, h00 | h00, h00 | h00, h48 | hAB, - read ALARM_STATUS
Data: h00 | h84, h00 | h40, h00 | h00, h00 | hFB, 
Data: hA1 | h04, h00 | h00, h00 | h00, h23 | hAB, - read GEN_STATUS
Data: h00 | h84, h00 | h40, h00 | h90, h00 | h02, 
Data: hA2 | h04, h00 | h00, h00 | h00, h9E | hAB, - read MODEM_STATUS
Data: h00 | h84, h00 | h00, h00 | hDB, h00 | hAF, 
Data: hA2 | h04, h00 | h00, h00 | h00, h9E | hAB, - read MODEM_STATUS
Data: h00 | h84, h00 | h00, h00 | hD9, h00 | hA1, 
Data: h9F | h04, h00 | h00, h00 | h00, hEE | hAB, - read MODEM_STATUS_MASK
Data: h00 | h84, h00 | hFC, h00 | hFA, h00 | hA0, 
Data: h1F | h04, hFC | h00, hF9 | h00, hEC | hAB, - write MODEM_STATUS_MASK
Data: h15 | h00, h01 | h00, hFF | h00, h84 | h00, - write FIFO_U2H_WR
Data: h15 | h00, h01 | h00, hFF | h00, h84 | h00, 
Data: h15 | h00, h01 | h00, hFF | h00, h84 | h00, 
Data: h15 | h00, h01 | h00, hFF | h00, h84 | h00, 
Data: h15 | h00, h01 | h00, hFF | h00, h84 | h00, 
Data: h15 | h00, h01 | h00, h00 | h00, h77 | h00, 
Data: h15 | h00, h00 | h00, h80 | h00, hEB | h00, 
Data: h15 | h00, h01 | h00, h00 | h00, h77 | h00, - not transmitted on HART_OUT
Data: h15 | h00, h00 | h00, h4A | h00, h93 | h00, 
Data: h15 | h00, h01 | h00, h00 | h00, h77 | h00, 
Data: h15 | h00, h01 | h00, h0C | h00, h53 | h00, 
Data: h15 | h00, h00 | h00, hFE | h00, h96 | h00, 
Data: h15 | h00, h00 | h00, h8F | h00, hC6 | h00, 
Data: h15 | h00, h01 | h00, h71 | h00, h27 | h00, 
Data: h15 | h00, h01 | h00, h05 | h00, h6C | h00, 
Data: h15 | h00, h00 | h00, h07 | h00, h77 | h00,

In this example, the third byte after the preamble bytes, value "0x00", is not transmitted on HART_OUT, despite being written to the U2H FIFO. The waveform below was captured with probe connected to TP15 on AFE881H1EVM. 

The implementation follows the recommendation from the AFE881H1 datasheet, "7.3.5.9 HART Communication Using the SPI".

Assert the RTS. After CTS_ASSERT is set, begin to fill FIFO_U2H. Enqueue enough data into FIFO_U2H to fill the FIFO above the set threshold level.

This is noteworthy because the error does not occur (after tens of thousands of HART characters) when the data is written to U2H FIFO before asserting RTS. 

Below are some error conditions that are eliminated as possible causes.

  • `CRC_ERR` not set
  • `FIFO_H2U_FULL_FLAG` IRQ enabled and never occurs
  • Neither `GAP_ERR`, `FRAME_ERR`, nor `PARITY_ERR` bits set within `MODEM_STATUS` register. 

The hardware setup consists of a two microcontroller boards and two AFE881H1EVM boards. The `HART_OUT` screw terminal of each AFE881H1EVM is connected to other's AFE881H1EVM `HART_IN` screw terminal. One microcontroller acts as a HART host, and the other acts as a HART device, waiting for a command. An Analog Discovery 2 is connected to the device-side AFE881H1EVM. 

Some more system information below:

  • AFE881H1 configured for SPI-only mode
  • SCLK frequency 1 MHz
  • RTS input pin always driven high

My initial question is, why might this issue only occur when RTS is asserted prior to writing data to U2H FIFO?

Regards

Asha G

  • Hi Asha,

    We are reviewing this and will respond shortly.

    Thanks,
    Lucas

  • Hi Asha,

    I apologize for the delay in responding.

    To understand the table you posted, are you writing 0x00F9 to the Modem Status Mask register? If you want FIFO_U2H_FULL to be asserted, you would need 0x00D9.

    If the above doesn't help:
    Can you try increasing your preamble size for the message and seeing if the output or missed bytes change at all? I'm trying to completely rule out the H2U FIFO being full. Since the same byte is missed with each test, that is what my suspicion is currently.

    I'm not entirely sure why RTS is causing a difference in your test results. I'm assuming you are only using the SW RTS bit and not the pin?

    Thanks,
    Lucas

  • Hi Lucas,

    same byte is not missing every time. observed different byte missing with each test.

    will try your approach and let you know.

    Thanks

    Asha G

  • Hi Lucas,

    One more update: we are using SW RTS bit and HW RTS pin connected to 3.3V.

    Regards

    Asha G

  • Hi Asha,

    Thank you for the update and correction.

    Let me know when you get a chance to check my suggestion.

    Thanks,
    Lucas

  • Hi Lucas,

    option 1:  writing 0x00D9 to the Modem Status Mask register.

    It's not working.

    Option 2: increasing preamble size for the message

    testing in progress.I'll update soon

    Asha G

  • Hi Asha,

    I forgot to ask if you are monitoring the ALARM pin or reading the modem status register after the missed byte.

    If the specific alarm is masked, it should still update the modem status register, it just won't affect the ALARM pin.

    Thank you,
    Lucas

  • Hi Lucas,

    See the latest SPI snippet, below. Larger SPI trace also attached, 0x01_MissingSpi.txt. In this example, the second data byte, 0x01, after 6 preamble bytes does not appear on HART_OUT. The FIFO_U2H_FULL_FLAG IRQ was enabled and did not occur. 

    I separately confirmed that the FIFO_U2H_FULL_FLAG IRQ detection mechanism works by filling the U2H FIFO. 

    Data: h1F | h04, hE0 | h00, hDF | h00, hB5 | hAB, : write MODEM_STATUS_MASK = 0xE0DF : GAP_ERR, FRAME_ERR, PARITY_ERR, FIFO_H2U_LEVEL_FLAG, FIFO_H2U_FULL_FLAG, FIFO_U2H_FULL_FLAG
    Data: h15 | h00, h01 | h00, hFF | h00, h84 | h00, 
    Data: h15 | h00, h01 | h00, hFF | h00, h84 | h00, 
    Data: h15 | h00, h01 | h00, hFF | h00, h84 | h00, 
    Data: h15 | h00, h01 | h00, hFF | h00, h84 | h00, 
    Data: h15 | h00, h01 | h00, hFF | h00, h84 | h00, 
    Data: h15 | h00, h01 | h00, hFF | h00, h84 | h00, 
    Data: h15 | h00, h01 | h00, h00 | h00, h77 | h00, 
    Data: h15 | h00, h00 | h00, h01 | h00, h65 | h00, : missing from HART_OUT 
    Data: h15 | h00, h00 | h00, h02 | h00, h6C | h00, 
    Data: h15 | h00, h01 | h00, h03 | h00, h7E | h00, 
    Data: h15 | h00, h00 | h00, h04 | h00, h7E | h00, 
    Data: h15 | h00, h01 | h00, h05 | h00, h6C | h00, 
    Data: h15 | h00, h01 | h00, h06 | h00, h65 | h00, 
    Data: h15 | h00, h00 | h00, h07 | h00, h77 | h00, 
    Data: h15 | h00, h00 | h00, h08 | h00, h5A | h00, 
    Data: h1F | h00, hE0 | h00, h9F | h00, h72 | h00, 
    Data: hA0 | h04, h00 | h00, h00 | h00, h48 | hAB, 
    Data: h00 | h84, h00 | h40, h00 | h00, h00 | hFB, : read ALARM_STATUS = 0x4000 : MODEM_IRQ
    Data: hA1 | h04, h00 | h00, h00 | h00, h23 | hAB, 
    Data: h00 | h84, h00 | h40, h00 | h90, h00 | h02, : read GEN_STATUS = 0x4090 : MODEM_IRQ, SR_BUSYn, PVDD_HI
    Data: hA2 | h04, h00 | h00, h00 | h00, h9E | hAB, 
    Data: h00 | h84, h00 | h00, h00 | hC9, h00 | hD1, : read MODEM_STATUS = 0x00C9 : FIFO_H2U_EMPTY_FLAG, FIF

    See the latest SPI snippet, below. Larger SPI trace also attached, 0x01_MissingSpi.txt. In this example, the second data byte, 0x01, after 6 preamble bytes does not appear on HART_OUT. The FIFO_U2H_FULL_FLAG IRQ was enabled and did not occur. 

    I separately confirmed that the FIFO_U2H_FULL_FLAG IRQ detection mechanism works by filling the U2H FIFO. 

  • Hi Asha,

    I am reviewing this and will get back to you soon.

    Thanks,
    Lucas

  • Asha,


    I've been reviewing this post and I still don't know what might be wrong. Out of curiosity, when you write to the FIFO to transmit, do you fill the entire FIFO and check for the FIFO U2H FULL_FLAG or do you use the U2H_LEVEL_SET to check the LEVEL_FLAG when it's lower than full? I would check what happens if you use the U2H_LEVEL_SET and not fill the buffer completely. If you currently use the LEVEL_SET, you can check to see different values cause the problem to get better or worse.

    Another thing to try would be to add some overhead and try reading the FIFO level between writes to the FIFO. If you can record the FIFO level from the FIFO_STATUS with each byte in the transmission, you may be able find if there's a particular FIFO level when this problem is happening.


    Joseph Wu

  • Hi Joseph,

    New evidence shows a register readback, MODEM_STATUS_MASK, not matching the written data. 

    Good example: register write persists

    Data: h1F | h00, hE0 | h00, hCF | h00, hC5 | h00, --- write 0xE0CF to MODEM_STATUS_MASK
    Data: h9F | h00, h00 | h00, h00 | h00, hEE | h00, --- read MODEM_STATUS_MASK
    Data: h00 | h80, h00 | hE0, h00 | hCF, h00 | h2B, --- value = 0xE0CF
    

    Bad example: register write does not persist

    Data: h1F | h00, hE0 | h00, hCF | h00, hC5 | h00, --- write 0xE0CF to MODEM_STATUS_MASK
    Data: h9F | h00, h00 | h00, h00 | h00, hEE | h00, --- read MODEM_STATUS_MASK
    Data: h00 | h80, h00 | hE0, h00 | hDF, h00 | h5B, --- value = 0xE0DF
    

    Larger SPI trace attached, ModemStatusMaskMiscompare.txt.

    The SPI status bits from the AFE881H1 indicate no error in both cases, above. 

    The above write failure only seems to repeat during a HART send/receive workload. Simply writing and reading the MODEM_STATUS_MASK register with no other activity has not produced a mismatch after thousands of writes. 

    The previous register of interest, FIFO_U2H_WR, is write only, but perhaps a similar write failure occurs, resulting in the missing data.

    What could cause a write to MODEM_STATUS_MASK to fail?

    Data: h00 | h84, h00 | h21, h00 | h00, h00 | h1B, 
    Data: hAA | h04, h00 | h00, h00 | h00, hCF | hAB, 
    Data: h00 | h84, h00 | h20, h00 | h01, h00 | h09, 
    Data: hAA | h04, h00 | h00, h00 | h00, hCF | hAB, 
    Data: h00 | h84, h00 | h10, h00 | h02, h00 | hF9, 
    Data: hAA | h04, h00 | h00, h00 | h00, hCF | hAB, 
    Data: h00 | h84, h00 | h11, h00 | h03, h00 | hEB, 
    Data: hAA | h04, h00 | h00, h00 | h00, hCF | hAB, 
    Data: h00 | h84, h00 | h00, h00 | h04, h00 | hBC, 
    Data: hAA | h04, h00 | h00, h00 | h00, hCF | hAB, 
    Data: h00 | h84, h00 | h02, h00 | h04, h00 | h96, 
    Data: h1F | h04, hE0 | h00, hDF | h00, hB5 | hAB, 
    Data: hAB | h00, h00 | h00, h00 | h00, hA4 | h00, 
    Data: h00 | h80, h00 | h02, h00 | h0A, h00 | h17, 
    Data: h15 | h00, h01 | h00, hFF | h00, h84 | h00, 
    Data: hAB | h00, h00 | h00, h00 | h00, hA4 | h00, 
    Data: h00 | h80, h00 | h02, h00 | h08, h00 | h19, 
    Data: h15 | h00, h01 | h00, hFF | h00, h84 | h00, 
    Data: hAB | h00, h00 | h00, h00 | h00, hA4 | h00, 
    Data: h00 | h80, h00 | h02, h00 | h18, h00 | h69, 
    Data: h15 | h00, h01 | h00, hFF | h00, h84 | h00, 
    Data: hAB | h00, h00 | h00, h00 | h00, hA4 | h00, 
    Data: h00 | h80, h00 | h02, h00 | h18, h00 | h69, 
    Data: h15 | h00, h01 | h00, hFF | h00, h84 | h00, 
    Data: hAB | h00, h00 | h00, h00 | h00, hA4 | h00, 
    Data: h00 | h80, h00 | h02, h00 | h28, h00 | hF9, 
    Data: h15 | h00, h01 | h00, hFF | h00, h84 | h00, 
    Data: hAB | h00, h00 | h00, h00 | h00, hA4 | h00, 
    Data: h00 | h80, h00 | h02, h00 | h28, h00 | hF9, 
    Data: h15 | h00, h01 | h00, hFF | h00, h84 | h00, 
    Data: hAB | h00, h00 | h00, h00 | h00, hA4 | h00, 
    Data: h00 | h80, h00 | h02, h00 | h38, h00 | h89, 
    Data: h15 | h00, h00 | h00, h02 | h00, h6C | h00, 
    Data: hAB | h00, h00 | h00, h00 | h00, hA4 | h00, 
    Data: h00 | h80, h00 | h02, h00 | h38, h00 | h89, 
    Data: h15 | h00, h00 | h00, h80 | h00, hEB | h00, 
    Data: hAB | h00, h00 | h00, h00 | h00, hA4 | h00, 
    Data: h00 | h80, h00 | h02, h00 | h48, h00 | hDE, 
    Data: h15 | h00, h01 | h00, h00 | h00, h77 | h00, 
    Data: hAB | h00, h00 | h00, h00 | h00, hA4 | h00, 
    Data: h00 | h80, h00 | h02, h00 | h48, h00 | hDE, 
    Data: h15 | h00, h01 | h00, h00 | h00, h77 | h00, 
    Data: hAB | h00, h00 | h00, h00 | h00, hA4 | h00, 
    Data: h00 | h80, h00 | h02, h00 | h58, h00 | hAE, 
    Data: h15 | h00, h01 | h00, h82 | h00, hF0 | h00, 
    Data: hAB | h00, h00 | h00, h00 | h00, hA4 | h00, 
    Data: h00 | h80, h00 | h02, h00 | h58, h00 | hAE, 
    Data: h15 | h00, h01 | h00, h00 | h00, h77 | h00, 
    Data: h0E | h00, h00 | h00, h49 | h00, hD4 | h00, 
    Data: h1F | h00, hE0 | h00, hCF | h00, hC5 | h00, 
    Data: h9F | h00, h00 | h00, h00 | h00, hEE | h00, 
    Data: h00 | h80, h00 | hE0, h00 | hCF, h00 | h2B, 
    Data: hA0 | h04, h00 | h00, h00 | h00, h48 | hAB, 
    Data: h00 | h84, h00 | h40, h00 | h00, h00 | hFB, 
    Data: hA1 | h04, h00 | h00, h00 | h00, h23 | hAB, 
    Data: h00 | h84, h00 | h40, h00 | h90, h00 | h02, 
    Data: hA2 | h04, h00 | h00, h00 | h00, h9E | hAB, 
    Data: h00 | h84, h00 | h00, h00 | hDB, h00 | hAF, 
    Data: h9F | h04, h00 | h00, h00 | h00, hEE | hAB, 
    Data: h00 | h84, h00 | hE0, h00 | hCF, h00 | h80, 
    Data: h1F | h04, hE0 | h00, hDF | h00, hB5 | hAB, 
    Data: h0E | h00, h00 | h00, h48 | h00, hD3 | h00, 
    Data: h1F | h00, hE0 | h00, hDB | h00, hA9 | h00, 
    Data: h9F | h00, h00 | h00, h00 | h00, hEE | h00, 
    Data: h00 | h80, h00 | hE0, h00 | hDB, h00 | h47, 
    Data: hA0 | h04, h00 | h00, h00 | h00, h48 | hAB, 
    Data: h00 | h84, h00 | h40, h00 | h00, h00 | hFB, 
    Data: hA1 | h04, h00 | h00, h00 | h00, h23 | hAB, 
    Data: h00 | h84, h00 | h40, h00 | h90, h00 | h02, 
    Data: hA2 | h04, h00 | h00, h00 | h00, h9E | hAB, 
    Data: h00 | h84, h00 | h00, h00 | hDF, h00 | hB3, 
    Data: h9F | h04, h00 | h00, h00 | h00, hEE | hAB, 
    Data: h00 | h84, h00 | hE0, h00 | hDB, h00 | hEC, 
    Data: h1F | h04, hE0 | h00, hDF | h00, hB5 | hAB, 
    Data: h1F | h00, hE0 | h00, hDB | h00, hA9 | h00, 
    Data: h9F | h04, h00 | h00, h00 | h00, hEE | hAB, 
    Data: h00 | h84, h00 | hE0, h00 | hDB, h00 | hEC, 
    Data: hA0 | h04, h00 | h00, h00 | h00, h48 | hAB, 
    Data: h00 | h84, h00 | h40, h00 | h00, h00 | hFB, 
    Data: hA1 | h04, h00 | h00, h00 | h00, h23 | hAB, 
    Data: h00 | h84, h00 | h40, h00 | h90, h00 | h02, 
    Data: hA2 | h04, h00 | h00, h00 | h00, h9E | hAB, 
    Data: h00 | h84, h00 | h00, h00 | hD6, h00 | h8C, 
    Data: h9F | h04, h00 | h00, h00 | h00, hEE | hAB, 
    Data: h00 | h84, h00 | hE0, h00 | hDB, h00 | hEC, 
    Data: h1F | h04, hE0 | h00, hDF | h00, hB5 | hAB, 
    Data: h1F | h00, hE0 | h00, hD7 | h00, h8D | h00, 
    Data: h9F | h00, h00 | h00, h00 | h00, hEE | h00, 
    Data: h00 | h80, h00 | hE0, h00 | hD7, h00 | h63, 
    Data: hA0 | h04, h00 | h00, h00 | h00, h48 | hAB, 
    Data: h00 | h84, h00 | h40, h00 | h00, h00 | hFB, 
    Data: hA1 | h04, h00 | h00, h00 | h00, h23 | hAB, 
    Data: h00 | h84, h00 | h40, h00 | h90, h00 | h02, 
    Data: hA2 | h04, h00 | h00, h00 | h00, h9E | hAB, 
    Data: h00 | h84, h00 | h00, h00 | h5E, h00 | h3D, 
    Data: h9F | h04, h00 | h00, h00 | h00, hEE | hAB, 
    Data: h00 | h84, h00 | hE0, h00 | hD7, h00 | hC8, 
    Data: hAA | h04, h00 | h00, h00 | h00, hCF | hAB, 
    Data: h00 | h84, h00 | h51, h00 | hFF, h00 | h4A, 
    Data: hAA | h04, h00 | h00, h00 | h00, hCF | hAB, 
    Data: h00 | h84, h00 | h51, h00 | hFF, h00 | h4A, 
    Data: hAA | h04, h00 | h00, h00 | h00, hCF | hAB, 
    Data: h00 | h84, h00 | h41, h00 | hFF, h00 | h1D, 
    Data: hAA | h04, h00 | h00, h00 | h00, hCF | hAB, 
    Data: h00 | h84, h00 | h41, h00 | hFF, h00 | h1D, 
    Data: hAA | h04, h00 | h00, h00 | h00, hCF | hAB, 
    Data: h00 | h84, h00 | h31, h00 | hFF, h00 | hBF, 
    Data: hAA | h04, h00 | h00, h00 | h00, hCF | hAB, 
    Data: h00 | h84, h00 | h31, h00 | hFF, h00 | hBF, 
    Data: hAA | h04, h00 | h00, h00 | h00, hCF | hAB, 
    Data: h00 | h84, h00 | h21, h00 | h00, h00 | h1B, 
    Data: hAA | h04, h00 | h00, h00 | h00, hCF | hAB, 
    Data: h00 | h84, h00 | h20, h00 | h01, h00 | h09, 
    Data: hAA | h04, h00 | h00, h00 | h00, hCF | hAB, 
    Data: h00 | h84, h00 | h10, h00 | h02, h00 | hF9, 
    Data: hAA | h04, h00 | h00, h00 | h00, hCF | hAB, 
    Data: h00 | h84, h00 | h11, h00 | h03, h00 | hEB, 
    Data: hAA | h04, h00 | h00, h00 | h00, hCF | hAB, 
    Data: h00 | h84, h00 | h00, h00 | h04, h00 | hBC, 
    Data: hAA | h04, h00 | h00, h00 | h00, hCF | hAB, 
    Data: h00 | h84, h00 | h02, h00 | h04, h00 | h96, 
    Data: h1F | h04, hE0 | h00, hDF | h00, hB5 | hAB, 
    Data: h1F | h00, hE0 | h00, hD7 | h00, h8D | h00, 
    Data: h9F | h04, h00 | h00, h00 | h00, hEE | hAB, 
    Data: h00 | h84, h00 | hE0, h00 | hD7, h00 | hC8, 
    Data: hA0 | h04, h00 | h00, h00 | h00, h48 | hAB, 
    Data: h00 | h84, h00 | h40, h00 | h00, h00 | hFB, 
    Data: hA1 | h04, h00 | h00, h00 | h00, h23 | hAB, 
    Data: h00 | h84, h00 | h40, h00 | h90, h00 | h02, 
    Data: hA2 | h04, h00 | h00, h00 | h00, h9E | hAB, 
    Data: h00 | h84, h00 | h00, h00 | hDA, h00 | hA8, 
    Data: h9F | h04, h00 | h00, h00 | h00, hEE | hAB, 
    Data: h00 | h84, h00 | hE0, h00 | hD7, h00 | hC8, 
    Data: hAA | h04, h00 | h00, h00 | h00, hCF | hAB, 
    Data: h00 | h84, h00 | h02, h00 | h04, h00 | h96, 
    Data: h1F | h04, hE0 | h00, hDF | h00, hB5 | hAB, 
    Data: hAB | h00, h00 | h00, h00 | h00, hA4 | h00, 
    Data: h00 | h80, h00 | h02, h00 | h0A, h00 | h17, 
    Data: h15 | h00, h01 | h00, hFF | h00, h84 | h00, 
    Data: hAB | h00, h00 | h00, h00 | h00, hA4 | h00, 
    Data: h00 | h80, h00 | h02, h00 | h08, h00 | h19, 
    Data: h15 | h00, h01 | h00, hFF | h00, h84 | h00, 
    Data: hAB | h00, h00 | h00, h00 | h00, hA4 | h00, 
    Data: h00 | h80, h00 | h02, h00 | h18, h00 | h69, 
    Data: h15 | h00, h01 | h00, hFF | h00, h84 | h00, 
    Data: hAB | h00, h00 | h00, h00 | h00, hA4 | h00, 
    Data: h00 | h80, h00 | h02, h00 | h18, h00 | h69, 
    Data: h15 | h00, h01 | h00, hFF | h00, h84 | h00, 
    Data: hAB | h00, h00 | h00, h00 | h00, hA4 | h00, 
    Data: h00 | h80, h00 | h02, h00 | h28, h00 | hF9, 
    Data: h15 | h00, h01 | h00, hFF | h00, h84 | h00, 
    Data: hAB | h00, h00 | h00, h00 | h00, hA4 | h00, 
    Data: h00 | h80, h00 | h02, h00 | h28, h00 | hF9, 
    Data: h15 | h00, h01 | h00, hFF | h00, h84 | h00, 
    Data: hAB | h00, h00 | h00, h00 | h00, hA4 | h00, 
    Data: h00 | h80, h00 | h02, h00 | h38, h00 | h89, 
    Data: h15 | h00, h00 | h00, h02 | h00, h6C | h00, 
    Data: hAB | h00, h00 | h00, h00 | h00, hA4 | h00, 
    Data: h00 | h80, h00 | h02, h00 | h38, h00 | h89, 
    Data: h15 | h00, h00 | h00, h80 | h00, hEB | h00, 
    Data: hAB | h00, h00 | h00, h00 | h00, hA4 | h00, 
    Data: h00 | h80, h00 | h02, h00 | h48, h00 | hDE, 
    Data: h15 | h00, h01 | h00, h00 | h00, h77 | h00, 
    Data: hAB | h00, h00 | h00, h00 | h00, hA4 | h00, 
    Data: h00 | h80, h00 | h02, h00 | h48, h00 | hDE, 
    Data: h15 | h00, h01 | h00, h00 | h00, h77 | h00, 
    Data: hAB | h00, h00 | h00, h00 | h00, hA4 | h00, 
    Data: h00 | h80, h00 | h02, h00 | h58, h00 | hAE, 
    Data: h15 | h00, h01 | h00, h82 | h00, hF0 | h00, 
    Data: hAB | h00, h00 | h00, h00 | h00, hA4 | h00, 
    Data: h00 | h80, h00 | h02, h00 | h58, h00 | hAE, 
    Data: h15 | h00, h01 | h00, h00 | h00, h77 | h00, 
    Data: h0E | h00, h00 | h00, h49 | h00, hD4 | h00, 
    Data: h1F | h00, hE0 | h00, hCF | h00, hC5 | h00, 
    Data: h9F | h00, h00 | h00, h00 | h00, hEE | h00, 
    Data: h00 | h80, h00 | hE0, h00 | hCF, h00 | h2B, 
    Data: hA0 | h04, h00 | h00, h00 | h00, h48 | hAB, 
    Data: h00 | h84, h00 | h40, h00 | h00, h00 | hFB, 
    Data: hA1 | h04, h00 | h00, h00 | h00, h23 | hAB, 
    Data: h00 | h84, h00 | h40, h00 | h90, h00 | h02, 
    Data: hA2 | h04, h00 | h00, h00 | h00, h9E | hAB, 
    Data: h00 | h84, h00 | h00, h00 | hDB, h00 | hAF, 
    Data: h9F | h04, h00 | h00, h00 | h00, hEE | hAB, 
    Data: h00 | h84, h00 | hE0, h00 | hCF, h00 | h80, 
    Data: h1F | h04, hE0 | h00, hDF | h00, hB5 | hAB, 
    Data: h0E | h00, h00 | h00, h48 | h00, hD3 | h00, 
    Data: h1F | h00, hE0 | h00, hDB | h00, hA9 | h00, 
    Data: h9F | h00, h00 | h00, h00 | h00, hEE | h00, 
    Data: h00 | h80, h00 | hE0, h00 | hDB, h00 | h47, 
    Data: hA0 | h04, h00 | h00, h00 | h00, h48 | hAB, 
    Data: h00 | h84, h00 | h40, h00 | h00, h00 | hFB, 
    Data: hA1 | h04, h00 | h00, h00 | h00, h23 | hAB, 
    Data: h00 | h84, h00 | h40, h00 | h90, h00 | h02, 
    Data: hA2 | h04, h00 | h00, h00 | h00, h9E | hAB, 
    Data: h00 | h84, h00 | h00, h00 | hDF, h00 | hB3, 
    Data: h9F | h04, h00 | h00, h00 | h00, hEE | hAB, 
    Data: h00 | h84, h00 | hE0, h00 | hDB, h00 | hEC, 
    Data: h1F | h04, hE0 | h00, hDF | h00, hB5 | hAB, 
    Data: h1F | h00, hE0 | h00, hDB | h00, hA9 | h00, 
    Data: h9F | h04, h00 | h00, h00 | h00, hEE | hAB, 
    Data: h00 | h84, h00 | hE0, h00 | hDB, h00 | hEC, 
    Data: hA0 | h04, h00 | h00, h00 | h00, h48 | hAB, 
    Data: h00 | h84, h00 | h40, h00 | h00, h00 | hFB, 
    Data: hA1 | h04, h00 | h00, h00 | h00, h23 | hAB, 
    Data: h00 | h84, h00 | h40, h00 | h90, h00 | h02, 
    Data: hA2 | h04, h00 | h00, h00 | h00, h9E | hAB, 
    Data: h00 | h84, h00 | h00, h00 | hD6, h00 | h8C, 
    Data: h9F | h04, h00 | h00, h00 | h00, hEE | hAB, 
    Data: h00 | h84, h00 | hE0, h00 | hDB, h00 | hEC, 
    Data: h1F | h04, hE0 | h00, hDF | h00, hB5 | hAB, 
    Data: h1F | h00, hE0 | h00, hD7 | h00, h8D | h00, 
    Data: h9F | h00, h00 | h00, h00 | h00, hEE | h00, 
    Data: h00 | h80, h00 | hE0, h00 | hD7, h00 | h63, 
    Data: hA0 | h04, h00 | h00, h00 | h00, h48 | hAB, 
    Data: h00 | h84, h00 | h40, h00 | h00, h00 | hFB, 
    Data: hA1 | h04, h00 | h00, h00 | h00, h23 | hAB, 
    Data: h00 | h84, h00 | h40, h00 | h90, h00 | h02, 
    Data: hA2 | h04, h00 | h00, h00 | h00, h9E | hAB, 
    Data: h00 | h84, h00 | h00, h00 | h5E, h00 | h3D, 
    Data: h9F | h04, h00 | h00, h00 | h00, hEE | hAB, 
    Data: h00 | h84, h00 | hE0, h00 | hD7, h00 | hC8, 
    Data: hAA | h04, h00 | h00, h00 | h00, hCF | hAB, 
    Data: h00 | h84, h00 | h51, h00 | hFF, h00 | h4A, 
    Data: hAA | h04, h00 | h00, h00 | h00, hCF | hAB, 
    Data: h00 | h84, h00 | h51, h00 | hFF, h00 | h4A, 
    Data: hAA | h04, h00 | h00, h00 | h00, hCF | hAB, 
    Data: h00 | h84, h00 | h41, h00 | hFF, h00 | h1D, 
    Data: hAA | h04, h00 | h00, h00 | h00, hCF | hAB, 
    Data: h00 | h84, h00 | h41, h00 | hFF, h00 | h1D, 
    Data: hAA | h04, h00 | h00, h00 | h00, hCF | hAB, 
    Data: h00 | h84, h00 | h31, h00 | hFF, h00 | hBF, 
    Data: hAA | h04, h00 | h00, h00 | h00, hCF | hAB, 
    Data: h00 | h84, h00 | h31, h00 | hFF, h00 | hBF, 
    Data: hAA | h04, h00 | h00, h00 | h00, hCF | hAB, 
    Data: h00 | h84, h00 | h21, h00 | h00, h00 | h1B, 
    Data: hAA | h04, h00 | h00, h00 | h00, hCF | hAB, 
    Data: h00 | h84, h00 | h20, h00 | h01, h00 | h09, 
    Data: hAA | h04, h00 | h00, h00 | h00, hCF | hAB, 
    Data: h00 | h84, h00 | h10, h00 | h02, h00 | hF9, 
    Data: hAA | h04, h00 | h00, h00 | h00, hCF | hAB, 
    Data: h00 | h84, h00 | h11, h00 | h03, h00 | hEB, 
    Data: hAA | h04, h00 | h00, h00 | h00, hCF | hAB, 
    Data: h00 | h84, h00 | h00, h00 | h04, h00 | hBC, 
    Data: hAA | h04, h00 | h00, h00 | h00, hCF | hAB, 
    Data: h00 | h84, h00 | h02, h00 | h04, h00 | h96, 
    Data: h1F | h04, hE0 | h00, hDF | h00, hB5 | hAB, 
    Data: h1F | h00, hE0 | h00, hD7 | h00, h8D | h00, 
    Data: h9F | h04, h00 | h00, h00 | h00, hEE | hAB, 
    Data: h00 | h84, h00 | hE0, h00 | hD7, h00 | hC8, 
    Data: hA0 | h04, h00 | h00, h00 | h00, h48 | hAB, 
    Data: h00 | h84, h00 | h40, h00 | h00, h00 | hFB, 
    Data: hA1 | h04, h00 | h00, h00 | h00, h23 | hAB, 
    Data: h00 | h84, h00 | h40, h00 | h90, h00 | h02, 
    Data: hA2 | h04, h00 | h00, h00 | h00, h9E | hAB, 
    Data: h00 | h84, h00 | h00, h00 | hDA, h00 | hA8, 
    Data: h9F | h04, h00 | h00, h00 | h00, hEE | hAB, 
    Data: h00 | h84, h00 | hE0, h00 | hD7, h00 | hC8, 
    Data: hAA | h04, h00 | h00, h00 | h00, hCF | hAB, 
    Data: h00 | h84, h00 | h02, h00 | h04, h00 | h96, 
    Data: h1F | h04, hE0 | h00, hDF | h00, hB5 | hAB, 
    Data: hAB | h00, h00 | h00, h00 | h00, hA4 | h00, 
    Data: h00 | h80, h00 | h02, h00 | h0A, h00 | h17, 
    Data: h15 | h00, h01 | h00, hFF | h00, h84 | h00, 
    Data: hAB | h00, h00 | h00, h00 | h00, hA4 | h00, 
    Data: h00 | h80, h00 | h02, h00 | h08, h00 | h19, 
    Data: h15 | h00, h01 | h00, hFF | h00, h84 | h00, 
    Data: hAB | h00, h00 | h00, h00 | h00, hA4 | h00, 
    Data: h00 | h80, h00 | h02, h00 | h18, h00 | h69, 
    Data: h15 | h00, h01 | h00, hFF | h00, h84 | h00, 
    Data: hAB | h00, h00 | h00, h00 | h00, hA4 | h00, 
    Data: h00 | h80, h00 | h02, h00 | h18, h00 | h69, 
    Data: h15 | h00, h01 | h00, hFF | h00, h84 | h00, 
    Data: hAB | h00, h00 | h00, h00 | h00, hA4 | h00, 
    Data: h00 | h80, h00 | h02, h00 | h28, h00 | hF9, 
    Data: h15 | h00, h01 | h00, hFF | h00, h84 | h00, 
    Data: hAB | h00, h00 | h00, h00 | h00, hA4 | h00, 
    Data: h00 | h80, h00 | h02, h00 | h28, h00 | hF9, 
    Data: h15 | h00, h01 | h00, hFF | h00, h84 | h00, 
    Data: hAB | h00, h00 | h00, h00 | h00, hA4 | h00, 
    Data: h00 | h80, h00 | h02, h00 | h38, h00 | h89, 
    Data: h15 | h00, h00 | h00, h02 | h00, h6C | h00, 
    Data: hAB | h00, h00 | h00, h00 | h00, hA4 | h00, 
    Data: h00 | h80, h00 | h02, h00 | h38, h00 | h89, 
    Data: h15 | h00, h00 | h00, h80 | h00, hEB | h00, 
    Data: hAB | h00, h00 | h00, h00 | h00, hA4 | h00, 
    Data: h00 | h80, h00 | h02, h00 | h48, h00 | hDE, 
    Data: h15 | h00, h01 | h00, h00 | h00, h77 | h00, 
    Data: hAB | h00, h00 | h00, h00 | h00, hA4 | h00, 
    Data: h00 | h80, h00 | h02, h00 | h48, h00 | hDE, 
    Data: h15 | h00, h01 | h00, h00 | h00, h77 | h00, 
    Data: hAB | h00, h00 | h00, h00 | h00, hA4 | h00, 
    Data: h00 | h80, h00 | h02, h00 | h58, h00 | hAE, 
    Data: h15 | h00, h01 | h00, h82 | h00, hF0 | h00, 
    Data: hAB | h00, h00 | h00, h00 | h00, hA4 | h00, 
    Data: h00 | h80, h00 | h02, h00 | h58, h00 | hAE, 
    Data: h15 | h00, h01 | h00, h00 | h00, h77 | h00, 
    Data: h0E | h00, h00 | h00, h49 | h00, hD4 | h00, 
    Data: h1F | h00, hE0 | h00, hCF | h00, hC5 | h00, 
    Data: h9F | h00, h00 | h00, h00 | h00, hEE | h00, 
    Data: h00 | h80, h00 | hE0, h00 | hCF, h00 | h2B, 
    Data: hA0 | h04, h00 | h00, h00 | h00, h48 | hAB, 
    Data: h00 | h84, h00 | h40, h00 | h00, h00 | hFB, 
    Data: hA1 | h04, h00 | h00, h00 | h00, h23 | hAB, 
    Data: h00 | h84, h00 | h40, h00 | h90, h00 | h02, 
    Data: hA2 | h04, h00 | h00, h00 | h00, h9E | hAB, 
    Data: h00 | h84, h00 | h00, h00 | hDB, h00 | hAF, 
    Data: h9F | h04, h00 | h00, h00 | h00, hEE | hAB, 
    Data: h00 | h84, h00 | hE0, h00 | hCF, h00 | h80, 
    Data: h1F | h04, hE0 | h00, hDF | h00, hB5 | hAB, 
    Data: h0E | h00, h00 | h00, h48 | h00, hD3 | h00, 
    Data: h1F | h00, hE0 | h00, hDB | h00, hA9 | h00, 
    Data: h9F | h00, h00 | h00, h00 | h00, hEE | h00, 
    Data: h00 | h80, h00 | hE0, h00 | hDB, h00 | h47, 
    Data: hA0 | h04, h00 | h00, h00 | h00, h48 | hAB, 
    Data: h00 | h84, h00 | h40, h00 | h00, h00 | hFB, 
    Data: hA1 | h04, h00 | h00, h00 | h00, h23 | hAB, 
    Data: h00 | h84, h00 | h40, h00 | h90, h00 | h02, 
    Data: hA2 | h04, h00 | h00, h00 | h00, h9E | hAB, 
    Data: h00 | h84, h00 | h00, h00 | hDF, h00 | hB3, 
    Data: h9F | h04, h00 | h00, h00 | h00, hEE | hAB, 
    Data: h00 | h84, h00 | hE0, h00 | hDB, h00 | hEC, 
    Data: h1F | h04, hE0 | h00, hDF | h00, hB5 | hAB, 
    Data: h1F | h00, hE0 | h00, hDB | h00, hA9 | h00, 
    Data: h9F | h04, h00 | h00, h00 | h00, hEE | hAB, 
    Data: h00 | h84, h00 | hE0, h00 | hDB, h00 | hEC, 
    Data: hA0 | h04, h00 | h00, h00 | h00, h48 | hAB, 
    Data: h00 | h84, h00 | h40, h00 | h00, h00 | hFB, 
    Data: hA1 | h04, h00 | h00, h00 | h00, h23 | hAB, 
    Data: h00 | h84, h00 | h40, h00 | h90, h00 | h02, 
    Data: hA2 | h04, h00 | h00, h00 | h00, h9E | hAB, 
    Data: h00 | h84, h00 | h00, h00 | hD6, h00 | h8C, 
    Data: h9F | h04, h00 | h00, h00 | h00, hEE | hAB, 
    Data: h00 | h84, h00 | hE0, h00 | hDB, h00 | hEC, 
    Data: h1F | h04, hE0 | h00, hDF | h00, hB5 | hAB, 
    Data: h1F | h00, hE0 | h00, hD7 | h00, h8D | h00, 
    Data: h9F | h00, h00 | h00, h00 | h00, hEE | h00, 
    Data: h00 | h80, h00 | hE0, h00 | hD7, h00 | h63, 
    Data: hA0 | h04, h00 | h00, h00 | h00, h48 | hAB, 
    Data: h00 | h84, h00 | h40, h00 | h00, h00 | hFB, 
    Data: hA1 | h04, h00 | h00, h00 | h00, h23 | hAB, 
    Data: h00 | h84, h00 | h40, h00 | h90, h00 | h02, 
    Data: hA2 | h04, h00 | h00, h00 | h00, h9E | hAB, 
    Data: h00 | h84, h00 | h00, h00 | h5E, h00 | h3D, 
    Data: h9F | h04, h00 | h00, h00 | h00, hEE | hAB, 
    Data: h00 | h84, h00 | hE0, h00 | hD7, h00 | hC8, 
    Data: hAA | h04, h00 | h00, h00 | h00, hCF | hAB, 
    Data: h00 | h84, h00 | h51, h00 | hFF, h00 | h4A, 
    Data: hAA | h04, h00 | h00, h00 | h00, hCF | hAB, 
    Data: h00 | h84, h00 | h51, h00 | hFF, h00 | h4A, 
    Data: hAA | h04, h00 | h00, h00 | h00, hCF | hAB, 
    Data: h00 | h84, h00 | h41, h00 | hFF, h00 | h1D, 
    Data: hAA | h04, h00 | h00, h00 | h00, hCF | hAB, 
    Data: h00 | h84, h00 | h41, h00 | hFF, h00 | h1D, 
    Data: hAA | h04, h00 | h00, h00 | h00, hCF | hAB, 
    Data: h00 | h84, h00 | h31, h00 | hFF, h00 | hBF, 
    Data: hAA | h04, h00 | h00, h00 | h00, hCF | hAB, 
    Data: h00 | h84, h00 | h31, h00 | hFF, h00 | hBF, 
    Data: hAA | h04, h00 | h00, h00 | h00, hCF | hAB, 
    Data: h00 | h84, h00 | h21, h00 | h00, h00 | h1B, 
    Data: hAA | h04, h00 | h00, h00 | h00, hCF | hAB, 
    Data: h00 | h84, h00 | h20, h00 | h01, h00 | h09, 
    Data: hAA | h04, h00 | h00, h00 | h00, hCF | hAB, 
    Data: h00 | h84, h00 | h10, h00 | h02, h00 | hF9, 
    Data: hAA | h04, h00 | h00, h00 | h00, hCF | hAB, 
    Data: h00 | h84, h00 | h11, h00 | h03, h00 | hEB, 
    Data: hAA | h04, h00 | h00, h00 | h00, hCF | hAB, 
    Data: h00 | h84, h00 | h00, h00 | h04, h00 | hBC, 
    Data: hAA | h04, h00 | h00, h00 | h00, hCF | hAB, 
    Data: h00 | h84, h00 | h02, h00 | h04, h00 | h96, 
    Data: h1F | h04, hE0 | h00, hDF | h00, hB5 | hAB, 
    Data: hAB | h00, h00 | h00, h00 | h00, hA4 | h00, 
    Data: h00 | h80, h00 | h02, h00 | h0A, h00 | h17, 
    Data: h15 | h00, h01 | h00, hFF | h00, h84 | h00, 
    Data: hAB | h00, h00 | h00, h00 | h00, hA4 | h00, 
    Data: h00 | h80, h00 | h02, h00 | h08, h00 | h19, 
    Data: h15 | h00, h01 | h00, hFF | h00, h84 | h00, 
    Data: hAB | h00, h00 | h00, h00 | h00, hA4 | h00, 
    Data: h00 | h80, h00 | h02, h00 | h18, h00 | h69, 
    Data: h15 | h00, h01 | h00, hFF | h00, h84 | h00, 
    Data: hAB | h00, h00 | h00, h00 | h00, hA4 | h00, 
    Data: h00 | h80, h00 | h02, h00 | h18, h00 | h69, 
    Data: h15 | h00, h01 | h00, hFF | h00, h84 | h00, 
    Data: hAB | h00, h00 | h00, h00 | h00, hA4 | h00, 
    Data: h00 | h80, h00 | h02, h00 | h28, h00 | hF9, 
    Data: h15 | h00, h01 | h00, hFF | h00, h84 | h00, 
    Data: hAB | h00, h00 | h00, h00 | h00, hA4 | h00, 
    Data: h00 | h80, h00 | h02, h00 | h28, h00 | hF9, 
    Data: h15 | h00, h01 | h00, hFF | h00, h84 | h00, 
    Data: hAB | h00, h00 | h00, h00 | h00, hA4 | h00, 
    Data: h00 | h80, h00 | h02, h00 | h38, h00 | h89, 
    Data: h15 | h00, h00 | h00, h02 | h00, h6C | h00, 
    Data: hAB | h00, h00 | h00, h00 | h00, hA4 | h00, 
    Data: h00 | h80, h00 | h02, h00 | h38, h00 | h89, 
    Data: h15 | h00, h00 | h00, h80 | h00, hEB | h00, 
    Data: hAB | h00, h00 | h00, h00 | h00, hA4 | h00, 
    Data: h00 | h80, h00 | h02, h00 | h48, h00 | hDE, 
    Data: h15 | h00, h01 | h00, h00 | h00, h77 | h00, 
    Data: hAB | h00, h00 | h00, h00 | h00, hA4 | h00, 
    Data: h00 | h80, h00 | h02, h00 | h48, h00 | hDE, 
    Data: h15 | h00, h01 | h00, h00 | h00, h77 | h00, 
    Data: hAB | h00, h00 | h00, h00 | h00, hA4 | h00, 
    Data: h00 | h80, h00 | h02, h00 | h58, h00 | hAE, 
    Data: h15 | h00, h01 | h00, h82 | h00, hF0 | h00, 
    Data: hAB | h00, h00 | h00, h00 | h00, hA4 | h00, 
    Data: h00 | h80, h00 | h02, h00 | h58, h00 | hAE, 
    Data: h15 | h00, h01 | h00, h00 | h00, h77 | h00, 
    Data: h0E | h00, h00 | h00, h49 | h00, hD4 | h00, 
    Data: h1F | h00, hE0 | h00, hCF | h00, hC5 | h00, 
    Data: h9F | h00, h00 | h00, h00 | h00, hEE | h00, 
    Data: h00 | h80, h00 | hE0, h00 | hCF, h00 | h2B, 
    Data: hA0 | h04, h00 | h00, h00 | h00, h48 | hAB, 
    Data: h00 | h84, h00 | h40, h00 | h00, h00 | hFB, 
    Data: hA1 | h04, h00 | h00, h00 | h00, h23 | hAB, 
    Data: h00 | h84, h00 | h40, h00 | h90, h00 | h02, 
    Data: hA2 | h04, h00 | h00, h00 | h00, h9E | hAB, 
    Data: h00 | h84, h00 | h00, h00 | hDB, h00 | hAF, 
    Data: h9F | h04, h00 | h00, h00 | h00, hEE | hAB, 
    Data: h00 | h84, h00 | hE0, h00 | hCF, h00 | h80, 
    Data: h1F | h04, hE0 | h00, hDF | h00, hB5 | hAB, 
    Data: h0E | h00, h00 | h00, h48 | h00, hD3 | h00, 
    Data: h1F | h00, hE0 | h00, hDB | h00, hA9 | h00, 
    Data: h9F | h00, h00 | h00, h00 | h00, hEE | h00, 
    Data: h00 | h80, h00 | hE0, h00 | hDB, h00 | h47, 
    Data: hA0 | h04, h00 | h00, h00 | h00, h48 | hAB, 
    Data: h00 | h84, h00 | h40, h00 | h00, h00 | hFB, 
    Data: hA1 | h04, h00 | h00, h00 | h00, h23 | hAB, 
    Data: h00 | h84, h00 | h40, h00 | h90, h00 | h02, 
    Data: hA2 | h04, h00 | h00, h00 | h00, h9E | hAB, 
    Data: h00 | h84, h00 | h00, h00 | hDF, h00 | hB3, 
    Data: h9F | h04, h00 | h00, h00 | h00, hEE | hAB, 
    Data: h00 | h84, h00 | hE0, h00 | hDB, h00 | hEC, 
    Data: h1F | h04, hE0 | h00, hDF | h00, hB5 | hAB, 
    Data: h1F | h00, hE0 | h00, hDB | h00, hA9 | h00, 
    Data: h9F | h04, h00 | h00, h00 | h00, hEE | hAB, 
    Data: h00 | h84, h00 | hE0, h00 | hDB, h00 | hEC, 
    Data: hA0 | h04, h00 | h00, h00 | h00, h48 | hAB, 
    Data: h00 | h84, h00 | h40, h00 | h00, h00 | hFB, 
    Data: hA1 | h04, h00 | h00, h00 | h00, h23 | hAB, 
    Data: h00 | h84, h00 | h40, h00 | h90, h00 | h02, 
    Data: hA2 | h04, h00 | h00, h00 | h00, h9E | hAB, 
    Data: h00 | h84, h00 | h00, h00 | hD6, h00 | h8C, 
    Data: h9F | h04, h00 | h00, h00 | h00, hEE | hAB, 
    Data: h00 | h84, h00 | hE0, h00 | hDB, h00 | hEC, 
    Data: h1F | h04, hE0 | h00, hDF | h00, hB5 | hAB, 
    Data: h1F | h00, hE0 | h00, hD7 | h00, h8D | h00, 
    Data: h9F | h00, h00 | h00, h00 | h00, hEE | h00, 
    Data: h00 | h80, h00 | hE0, h00 | hD7, h00 | h63, 
    Data: hA0 | h04, h00 | h00, h00 | h00, h48 | hAB, 
    Data: h00 | h84, h00 | h40, h00 | h00, h00 | hFB, 
    Data: hA1 | h04, h00 | h00, h00 | h00, h23 | hAB, 
    Data: h00 | h84, h00 | h40, h00 | h90, h00 | h02, 
    Data: hA2 | h04, h00 | h00, h00 | h00, h9E | hAB, 
    Data: h00 | h84, h00 | h00, h00 | h5E, h00 | h3D, 
    Data: h9F | h04, h00 | h00, h00 | h00, hEE | hAB, 
    Data: h00 | h84, h00 | hE0, h00 | hD7, h00 | hC8, 
    Data: hAA | h04, h00 | h00, h00 | h00, hCF | hAB, 
    Data: h00 | h84, h00 | h51, h00 | hFF, h00 | h4A, 
    Data: hAA | h04, h00 | h00, h00 | h00, hCF | hAB, 
    Data: h00 | h84, h00 | h51, h00 | hFF, h00 | h4A, 
    Data: hAA | h04, h00 | h00, h00 | h00, hCF | hAB, 
    Data: h00 | h84, h00 | h41, h00 | hFF, h00 | h1D, 
    Data: hAA | h04, h00 | h00, h00 | h00, hCF | hAB, 
    Data: h00 | h84, h00 | h41, h00 | hFF, h00 | h1D, 
    Data: hAA | h04, h00 | h00, h00 | h00, hCF | hAB, 
    Data: h00 | h84, h00 | h31, h00 | hFF, h00 | hBF, 
    Data: hAA | h04, h00 | h00, h00 | h00, hCF | hAB, 
    Data: h00 | h84, h00 | h31, h00 | hFF, h00 | hBF, 
    Data: hAA | h04, h00 | h00, h00 | h00, hCF | hAB, 
    Data: h00 | h84, h00 | h21, h00 | h00, h00 | h1B, 
    Data: hAA | h04, h00 | h00, h00 | h00, hCF | hAB, 
    Data: h00 | h84, h00 | h20, h00 | h01, h00 | h09, 
    Data: hAA | h04, h00 | h00, h00 | h00, hCF | hAB, 
    Data: h00 | h84, h00 | h10, h00 | h02, h00 | hF9, 
    Data: hAA | h04, h00 | h00, h00 | h00, hCF | hAB, 
    Data: h00 | h84, h00 | h11, h00 | h03, h00 | hEB, 
    Data: hAA | h04, h00 | h00, h00 | h00, hCF | hAB, 
    Data: h00 | h84, h00 | h00, h00 | h04, h00 | hBC, 
    Data: hAA | h04, h00 | h00, h00 | h00, hCF | hAB, 
    Data: h00 | h84, h00 | h02, h00 | h04, h00 | h96, 
    Data: h1F | h04, hE0 | h00, hDF | h00, hB5 | hAB, 
    Data: h1F | h00, hE0 | h00, hD7 | h00, h8D | h00, 
    Data: h9F | h04, h00 | h00, h00 | h00, hEE | hAB, 
    Data: h00 | h84, h00 | hE0, h00 | hD7, h00 | hC8, 
    Data: hA0 | h04, h00 | h00, h00 | h00, h48 | hAB, 
    Data: h00 | h84, h00 | h40, h00 | h00, h00 | hFB, 
    Data: hA1 | h04, h00 | h00, h00 | h00, h23 | hAB, 
    Data: h00 | h84, h00 | h40, h00 | h90, h00 | h02, 
    Data: hA2 | h04, h00 | h00, h00 | h00, h9E | hAB, 
    Data: h00 | h84, h00 | h00, h00 | hDA, h00 | hA8, 
    Data: h9F | h04, h00 | h00, h00 | h00, hEE | hAB, 
    Data: h00 | h84, h00 | hE0, h00 | hD7, h00 | hC8, 
    Data: hAA | h04, h00 | h00, h00 | h00, hCF | hAB, 
    Data: h00 | h84, h00 | h02, h00 | h04, h00 | h96, 
    Data: h1F | h04, hE0 | h00, hDF | h00, hB5 | hAB, 
    Data: hAB | h00, h00 | h00, h00 | h00, hA4 | h00, 
    Data: h00 | h80, h00 | h02, h00 | h0A, h00 | h17, 
    Data: h15 | h00, h01 | h00, hFF | h00, h84 | h00, 
    Data: hAB | h00, h00 | h00, h00 | h00, hA4 | h00, 
    Data: h00 | h80, h00 | h02, h00 | h08, h00 | h19, 
    Data: h15 | h00, h01 | h00, hFF | h00, h84 | h00, 
    Data: hAB | h00, h00 | h00, h00 | h00, hA4 | h00, 
    Data: h00 | h80, h00 | h02, h00 | h18, h00 | h69, 
    Data: h15 | h00, h01 | h00, hFF | h00, h84 | h00, 
    Data: hAB | h00, h00 | h00, h00 | h00, hA4 | h00, 
    Data: h00 | h80, h00 | h02, h00 | h18, h00 | h69, 
    Data: h15 | h00, h01 | h00, hFF | h00, h84 | h00, 
    Data: hAB | h00, h00 | h00, h00 | h00, hA4 | h00, 
    Data: h00 | h80, h00 | h02, h00 | h28, h00 | hF9, 
    Data: h15 | h00, h01 | h00, hFF | h00, h84 | h00, 
    Data: hAB | h00, h00 | h00, h00 | h00, hA4 | h00, 
    Data: h00 | h80, h00 | h02, h00 | h28, h00 | hF9, 
    Data: h15 | h00, h01 | h00, hFF | h00, h84 | h00, 
    Data: hAB | h00, h00 | h00, h00 | h00, hA4 | h00, 
    Data: h00 | h80, h00 | h02, h00 | h38, h00 | h89, 
    Data: h15 | h00, h00 | h00, h02 | h00, h6C | h00, 
    Data: hAB | h00, h00 | h00, h00 | h00, hA4 | h00, 
    Data: h00 | h80, h00 | h02, h00 | h38, h00 | h89, 
    Data: h15 | h00, h00 | h00, h80 | h00, hEB | h00, 
    Data: hAB | h00, h00 | h00, h00 | h00, hA4 | h00, 
    Data: h00 | h80, h00 | h02, h00 | h48, h00 | hDE, 
    Data: h15 | h00, h01 | h00, h00 | h00, h77 | h00, 
    Data: hAB | h00, h00 | h00, h00 | h00, hA4 | h00, 
    Data: h00 | h80, h00 | h02, h00 | h48, h00 | hDE, 
    Data: h15 | h00, h01 | h00, h00 | h00, h77 | h00, 
    Data: hAB | h00, h00 | h00, h00 | h00, hA4 | h00, 
    Data: h00 | h80, h00 | h02, h00 | h58, h00 | hAE, 
    Data: h15 | h00, h01 | h00, h82 | h00, hF0 | h00, 
    Data: hAB | h00, h00 | h00, h00 | h00, hA4 | h00, 
    Data: h00 | h80, h00 | h02, h00 | h58, h00 | hAE, 
    Data: h15 | h00, h01 | h00, h00 | h00, h77 | h00, 
    Data: h0E | h00, h00 | h00, h49 | h00, hD4 | h00, 
    Data: h1F | h00, hE0 | h00, hCF | h00, hC5 | h00, 
    Data: h9F | h00, h00 | h00, h00 | h00, hEE | h00, 
    Data: h00 | h80, h00 | hE0, h00 | hCF, h00 | h2B, 
    Data: hA0 | h04, h00 | h00, h00 | h00, h48 | hAB, 
    Data: h00 | h84, h00 | h40, h00 | h00, h00 | hFB, 
    Data: hA1 | h04, h00 | h00, h00 | h00, h23 | hAB, 
    Data: h00 | h84, h00 | h40, h00 | h90, h00 | h02, 
    Data: hA2 | h04, h00 | h00, h00 | h00, h9E | hAB, 
    Data: h00 | h84, h00 | h00, h00 | hDB, h00 | hAF, 
    Data: h9F | h04, h00 | h00, h00 | h00, hEE | hAB, 
    Data: h00 | h84, h00 | hE0, h00 | hCF, h00 | h80, 
    Data: h1F | h04, hE0 | h00, hDF | h00, hB5 | hAB, 
    Data: h0E | h00, h00 | h00, h48 | h00, hD3 | h00, 
    Data: h1F | h00, hE0 | h00, hDB | h00, hA9 | h00, 
    Data: h9F | h00, h00 | h00, h00 | h00, hEE | h00, 
    Data: h00 | h80, h00 | hE0, h00 | hDB, h00 | h47, 
    Data: hA0 | h04, h00 | h00, h00 | h00, h48 | hAB, 
    Data: h00 | h84, h00 | h40, h00 | h00, h00 | hFB, 
    Data: hA1 | h04, h00 | h00, h00 | h00, h23 | hAB, 
    Data: h00 | h84, h00 | h40, h00 | h90, h00 | h02, 
    Data: hA2 | h04, h00 | h00, h00 | h00, h9E | hAB, 
    Data: h00 | h84, h00 | h00, h00 | hDF, h00 | hB3, 
    Data: h9F | h04, h00 | h00, h00 | h00, hEE | hAB, 
    Data: h00 | h84, h00 | hE0, h00 | hDB, h00 | hEC, 
    Data: h1F | h04, hE0 | h00, hDF | h00, hB5 | hAB, 
    Data: h1F | h00, hE0 | h00, hDB | h00, hA9 | h00, 
    Data: h9F | h04, h00 | h00, h00 | h00, hEE | hAB, 
    Data: h00 | h84, h00 | hE0, h00 | hDB, h00 | hEC, 
    Data: hA0 | h04, h00 | h00, h00 | h00, h48 | hAB, 
    Data: h00 | h84, h00 | h40, h00 | h00, h00 | hFB, 
    Data: hA1 | h04, h00 | h00, h00 | h00, h23 | hAB, 
    Data: h00 | h84, h00 | h40, h00 | h90, h00 | h02, 
    Data: hA2 | h04, h00 | h00, h00 | h00, h9E | hAB, 
    Data: h00 | h84, h00 | h00, h00 | hD6, h00 | h8C, 
    Data: h9F | h04, h00 | h00, h00 | h00, hEE | hAB, 
    Data: h00 | h84, h00 | hE0, h00 | hDB, h00 | hEC, 
    Data: h1F | h04, hE0 | h00, hDF | h00, hB5 | hAB, 
    Data: h1F | h00, hE0 | h00, hD7 | h00, h8D | h00, 
    Data: h9F | h00, h00 | h00, h00 | h00, hEE | h00, 
    Data: h00 | h80, h00 | hE0, h00 | hD7, h00 | h63, 
    Data: hA0 | h04, h00 | h00, h00 | h00, h48 | hAB, 
    Data: h00 | h84, h00 | h40, h00 | h00, h00 | hFB, 
    Data: hA1 | h04, h00 | h00, h00 | h00, h23 | hAB, 
    Data: h00 | h84, h00 | h40, h00 | h90, h00 | h02, 
    Data: hA2 | h04, h00 | h00, h00 | h00, h9E | hAB, 
    Data: h00 | h84, h00 | h00, h00 | h5E, h00 | h3D, 
    Data: h9F | h04, h00 | h00, h00 | h00, hEE | hAB, 
    Data: h00 | h84, h00 | hE0, h00 | hD7, h00 | hC8, 
    Data: hAA | h04, h00 | h00, h00 | h00, hCF | hAB, 
    Data: h00 | h84, h00 | h51, h00 | hFF, h00 | h4A, 
    Data: hAA | h04, h00 | h00, h00 | h00, hCF | hAB, 
    Data: h00 | h84, h00 | h41, h00 | hFF, h00 | h1D, 
    Data: hAA | h04, h00 | h00, h00 | h00, hCF | hAB, 
    Data: h00 | h84, h00 | h41, h00 | hFF, h00 | h1D, 
    Data: hAA | h04, h00 | h00, h00 | h00, hCF | hAB, 
    Data: h00 | h84, h00 | h31, h00 | hFF, h00 | hBF, 
    Data: hAA | h04, h00 | h00, h00 | h00, hCF | hAB, 
    Data: h00 | h84, h00 | h31, h00 | hFF, h00 | hBF, 
    Data: hAA | h04, h00 | h00, h00 | h00, hCF | hAB, 
    Data: h00 | h84, h00 | h21, h00 | h00, h00 | h1B, 
    Data: hAA | h04, h00 | h00, h00 | h00, hCF | hAB, 
    Data: h00 | h84, h00 | h20, h00 | h01, h00 | h09, 
    Data: hAA | h04, h00 | h00, h00 | h00, hCF | hAB, 
    Data: h00 | h84, h00 | h10, h00 | h02, h00 | hF9, 
    Data: hAA | h04, h00 | h00, h00 | h00, hCF | hAB, 
    Data: h00 | h84, h00 | h11, h00 | h03, h00 | hEB, 
    Data: hAA | h04, h00 | h00, h00 | h00, hCF | hAB, 
    Data: h00 | h84, h00 | h00, h00 | h04, h00 | hBC, 
    Data: hAA | h04, h00 | h00, h00 | h00, hCF | hAB, 
    Data: h00 | h84, h00 | h02, h00 | h04, h00 | h96, 
    Data: h1F | h04, hE0 | h00, hDF | h00, hB5 | hAB, 
    Data: hAB | h00, h00 | h00, h00 | h00, hA4 | h00, 
    Data: h00 | h80, h00 | h02, h00 | h0A, h00 | h17, 
    Data: h15 | h00, h01 | h00, hFF | h00, h84 | h00, 
    Data: hAB | h00, h00 | h00, h00 | h00, hA4 | h00, 
    Data: h00 | h80, h00 | h02, h00 | h08, h00 | h19, 
    Data: h15 | h00, h01 | h00, hFF | h00, h84 | h00, 
    Data: hAB | h00, h00 | h00, h00 | h00, hA4 | h00, 
    Data: h00 | h80, h00 | h02, h00 | h18, h00 | h69, 
    Data: h15 | h00, h01 | h00, hFF | h00, h84 | h00, 
    Data: hAB | h00, h00 | h00, h00 | h00, hA4 | h00, 
    Data: h00 | h80, h00 | h02, h00 | h18, h00 | h69, 
    Data: h15 | h00, h01 | h00, hFF | h00, h84 | h00, 
    Data: hAB | h00, h00 | h00, h00 | h00, hA4 | h00, 
    Data: h00 | h80, h00 | h02, h00 | h28, h00 | hF9, 
    Data: h15 | h00, h01 | h00, hFF | h00, h84 | h00, 
    Data: hAB | h00, h00 | h00, h00 | h00, hA4 | h00, 
    Data: h00 | h80, h00 | h02, h00 | h28, h00 | hF9, 
    Data: h15 | h00, h01 | h00, hFF | h00, h84 | h00, 
    Data: hAB | h00, h00 | h00, h00 | h00, hA4 | h00, 
    Data: h00 | h80, h00 | h02, h00 | h38, h00 | h89, 
    Data: h15 | h00, h00 | h00, h02 | h00, h6C | h00, 
    Data: hAB | h00, h00 | h00, h00 | h00, hA4 | h00, 
    Data: h00 | h80, h00 | h02, h00 | h38, h00 | h89, 
    Data: h15 | h00, h00 | h00, h80 | h00, hEB | h00, 
    Data: hAB | h00, h00 | h00, h00 | h00, hA4 | h00, 
    Data: h00 | h80, h00 | h02, h00 | h48, h00 | hDE, 
    Data: h15 | h00, h01 | h00, h00 | h00, h77 | h00, 
    Data: hAB | h00, h00 | h00, h00 | h00, hA4 | h00, 
    Data: h00 | h80, h00 | h02, h00 | h48, h00 | hDE, 
    Data: h15 | h00, h01 | h00, h00 | h00, h77 | h00, 
    Data: hAB | h00, h00 | h00, h00 | h00, hA4 | h00, 
    Data: h00 | h80, h00 | h02, h00 | h58, h00 | hAE, 
    Data: h15 | h00, h01 | h00, h82 | h00, hF0 | h00, 
    Data: hAB | h00, h00 | h00, h00 | h00, hA4 | h00, 
    Data: h00 | h80, h00 | h02, h00 | h58, h00 | hAE, 
    Data: h15 | h00, h01 | h00, h00 | h00, h77 | h00, 
    Data: h0E | h00, h00 | h00, h49 | h00, hD4 | h00, 
    Data: h1F | h00, hE0 | h00, hCF | h00, hC5 | h00, 
    Data: h9F | h00, h00 | h00, h00 | h00, hEE | h00, 
    Data: h00 | h80, h00 | hE0, h00 | hCF, h00 | h2B, 
    Data: hA0 | h04, h00 | h00, h00 | h00, h48 | hAB, 
    Data: h00 | h84, h00 | h40, h00 | h00, h00 | hFB, 
    Data: hA1 | h04, h00 | h00, h00 | h00, h23 | hAB, 
    Data: h00 | h84, h00 | h40, h00 | h90, h00 | h02, 
    Data: hA2 | h04, h00 | h00, h00 | h00, h9E | hAB, 
    Data: h00 | h84, h00 | h00, h00 | hDB, h00 | hAF, 
    Data: h9F | h04, h00 | h00, h00 | h00, hEE | hAB, 
    Data: h00 | h84, h00 | hE0, h00 | hCF, h00 | h80, 
    Data: h1F | h04, hE0 | h00, hDF | h00, hB5 | hAB, 
    Data: h0E | h00, h00 | h00, h48 | h00, hD3 | h00, 
    Data: h1F | h00, hE0 | h00, hDB | h00, hA9 | h00, 
    Data: h9F | h00, h00 | h00, h00 | h00, hEE | h00, 
    Data: h00 | h80, h00 | hE0, h00 | hDB, h00 | h47, 
    Data: hA0 | h04, h00 | h00, h00 | h00, h48 | hAB, 
    Data: h00 | h84, h00 | h40, h00 | h00, h00 | hFB, 
    Data: hA1 | h04, h00 | h00, h00 | h00, h23 | hAB, 
    Data: h00 | h84, h00 | h40, h00 | h90, h00 | h02, 
    Data: hA2 | h04, h00 | h00, h00 | h00, h9E | hAB, 
    Data: h00 | h84, h00 | h00, h00 | hDF, h00 | hB3, 
    Data: h9F | h04, h00 | h00, h00 | h00, hEE | hAB, 
    Data: h00 | h84, h00 | hE0, h00 | hDB, h00 | hEC, 
    Data: h1F | h04, hE0 | h00, hDF | h00, hB5 | hAB, 
    Data: h1F | h00, hE0 | h00, hDB | h00, hA9 | h00, 
    Data: h9F | h04, h00 | h00, h00 | h00, hEE | hAB, 
    Data: h00 | h84, h00 | hE0, h00 | hDB, h00 | hEC, 
    Data: hA0 | h04, h00 | h00, h00 | h00, h48 | hAB, 
    Data: h00 | h84, h00 | h40, h00 | h00, h00 | hFB, 
    Data: hA1 | h04, h00 | h00, h00 | h00, h23 | hAB, 
    Data: h00 | h84, h00 | h40, h00 | h90, h00 | h02, 
    Data: hA2 | h04, h00 | h00, h00 | h00, h9E | hAB, 
    Data: h00 | h84, h00 | h00, h00 | hD6, h00 | h8C, 
    Data: h9F | h04, h00 | h00, h00 | h00, hEE | hAB, 
    Data: h00 | h84, h00 | hE0, h00 | hDB, h00 | hEC, 
    Data: h1F | h04, hE0 | h00, hDF | h00, hB5 | hAB, 
    Data: h1F | h00, hE0 | h00, hD7 | h00, h8D | h00, 
    Data: h9F | h00, h00 | h00, h00 | h00, hEE | h00, 
    Data: h00 | h80, h00 | hE0, h00 | hD7, h00 | h63, 
    Data: hA0 | h04, h00 | h00, h00 | h00, h48 | hAB, 
    Data: h00 | h84, h00 | h40, h00 | h00, h00 | hFB, 
    Data: hA1 | h04, h00 | h00, h00 | h00, h23 | hAB, 
    Data: h00 | h84, h00 | h40, h00 | h90, h00 | h02, 
    Data: hA2 | h04, h00 | h00, h00 | h00, h9E | hAB, 
    Data: h00 | h84, h00 | h00, h00 | h5E, h00 | h3D, 
    Data: h9F | h04, h00 | h00, h00 | h00, hEE | hAB, 
    Data: h00 | h84, h00 | hE0, h00 | hD7, h00 | hC8, 
    Data: hAA | h04, h00 | h00, h00 | h00, hCF | hAB, 
    Data: h00 | h84, h00 | h51, h00 | hFF, h00 | h4A, 
    Data: hAA | h04, h00 | h00, h00 | h00, hCF | hAB, 
    Data: h00 | h84, h00 | h51, h00 | hFF, h00 | h4A, 
    Data: hAA | h04, h00 | h00, h00 | h00, hCF | hAB, 
    Data: h00 | h84, h00 | h41, h00 | hFF, h00 | h1D, 
    Data: hAA | h04, h00 | h00, h00 | h00, hCF | hAB, 
    Data: h00 | h84, h00 | h41, h00 | hFF, h00 | h1D, 
    Data: hAA | h04, h00 | h00, h00 | h00, hCF | hAB, 
    Data: h00 | h84, h00 | h31, h00 | hFF, h00 | hBF, 
    Data: hAA | h04, h00 | h00, h00 | h00, hCF | hAB, 
    Data: h00 | h84, h00 | h31, h00 | hFF, h00 | hBF, 
    Data: hAA | h04, h00 | h00, h00 | h00, hCF | hAB, 
    Data: h00 | h84, h00 | h21, h00 | h00, h00 | h1B, 
    Data: hAA | h04, h00 | h00, h00 | h00, hCF | hAB, 
    Data: h00 | h84, h00 | h20, h00 | h01, h00 | h09, 
    Data: hAA | h04, h00 | h00, h00 | h00, hCF | hAB, 
    Data: h00 | h84, h00 | h10, h00 | h02, h00 | hF9, 
    Data: hAA | h04, h00 | h00, h00 | h00, hCF | hAB, 
    Data: h00 | h84, h00 | h11, h00 | h03, h00 | hEB, 
    Data: hAA | h04, h00 | h00, h00 | h00, hCF | hAB, 
    Data: h00 | h84, h00 | h00, h00 | h04, h00 | hBC, 
    Data: hAA | h04, h00 | h00, h00 | h00, hCF | hAB, 
    Data: h00 | h84, h00 | h02, h00 | h04, h00 | h96, 
    Data: h1F | h04, hE0 | h00, hDF | h00, hB5 | hAB, 
    Data: h1F | h00, hE0 | h00, hD7 | h00, h8D | h00, 
    Data: h9F | h04, h00 | h00, h00 | h00, hEE | hAB, 
    Data: h00 | h84, h00 | hE0, h00 | hD7, h00 | hC8, 
    Data: hA0 | h04, h00 | h00, h00 | h00, h48 | hAB, 
    Data: h00 | h84, h00 | h40, h00 | h00, h00 | hFB, 
    Data: hA1 | h04, h00 | h00, h00 | h00, h23 | hAB, 
    Data: h00 | h84, h00 | h40, h00 | h90, h00 | h02, 
    Data: hA2 | h04, h00 | h00, h00 | h00, h9E | hAB, 
    Data: h00 | h84, h00 | h00, h00 | hDA, h00 | hA8, 
    Data: h9F | h04, h00 | h00, h00 | h00, hEE | hAB, 
    Data: h00 | h84, h00 | hE0, h00 | hD7, h00 | hC8, 
    Data: hAA | h04, h00 | h00, h00 | h00, hCF | hAB, 
    Data: h00 | h84, h00 | h02, h00 | h04, h00 | h96, 
    Data: h1F | h04, hE0 | h00, hDF | h00, hB5 | hAB, 
    Data: hAB | h00, h00 | h00, h00 | h00, hA4 | h00, 
    Data: h00 | h80, h00 | h02, h00 | h0A, h00 | h17, 
    Data: h15 | h00, h01 | h00, hFF | h00, h84 | h00, 
    Data: hAB | h00, h00 | h00, h00 | h00, hA4 | h00, 
    Data: h00 | h80, h00 | h02, h00 | h08, h00 | h19, 
    Data: h15 | h00, h01 | h00, hFF | h00, h84 | h00, 
    Data: hAB | h00, h00 | h00, h00 | h00, hA4 | h00, 
    Data: h00 | h80, h00 | h02, h00 | h18, h00 | h69, 
    Data: h15 | h00, h01 | h00, hFF | h00, h84 | h00, 
    Data: hAB | h00, h00 | h00, h00 | h00, hA4 | h00, 
    Data: h00 | h80, h00 | h02, h00 | h18, h00 | h69, 
    Data: h15 | h00, h01 | h00, hFF | h00, h84 | h00, 
    Data: hAB | h00, h00 | h00, h00 | h00, hA4 | h00, 
    Data: h00 | h80, h00 | h02, h00 | h28, h00 | hF9, 
    Data: h15 | h00, h01 | h00, hFF | h00, h84 | h00, 
    Data: hAB | h00, h00 | h00, h00 | h00, hA4 | h00, 
    Data: h00 | h80, h00 | h02, h00 | h28, h00 | hF9, 
    Data: h15 | h00, h01 | h00, hFF | h00, h84 | h00, 
    Data: hAB | h00, h00 | h00, h00 | h00, hA4 | h00, 
    Data: h00 | h80, h00 | h02, h00 | h38, h00 | h89, 
    Data: h15 | h00, h00 | h00, h02 | h00, h6C | h00, 
    Data: hAB | h00, h00 | h00, h00 | h00, hA4 | h00, 
    Data: h00 | h80, h00 | h02, h00 | h38, h00 | h89, 
    Data: h15 | h00, h00 | h00, h80 | h00, hEB | h00, 
    Data: hAB | h00, h00 | h00, h00 | h00, hA4 | h00, 
    Data: h00 | h80, h00 | h02, h00 | h48, h00 | hDE, 
    Data: h15 | h00, h01 | h00, h00 | h00, h77 | h00, 
    Data: hAB | h00, h00 | h00, h00 | h00, hA4 | h00, 
    Data: h00 | h80, h00 | h02, h00 | h48, h00 | hDE, 
    Data: h15 | h00, h01 | h00, h00 | h00, h77 | h00, 
    Data: hAB | h00, h00 | h00, h00 | h00, hA4 | h00, 
    Data: h00 | h80, h00 | h02, h00 | h58, h00 | hAE, 
    Data: h15 | h00, h01 | h00, h82 | h00, hF0 | h00, 
    Data: hAB | h00, h00 | h00, h00 | h00, hA4 | h00, 
    Data: h00 | h80, h00 | h02, h00 | h58, h00 | hAE, 
    Data: h15 | h00, h01 | h00, h00 | h00, h77 | h00, 
    Data: h0E | h00, h00 | h00, h49 | h00, hD4 | h00, 
    Data: h1F | h00, hE0 | h00, hCF | h00, hC5 | h00, 
    Data: h9F | h00, h00 | h00, h00 | h00, hEE | h00, 
    Data: h00 | h80, h00 | hE0, h00 | hCF, h00 | h2B, 
    Data: hA0 | h04, h00 | h00, h00 | h00, h48 | hAB, 
    Data: h00 | h84, h00 | h40, h00 | h00, h00 | hFB, 
    Data: hA1 | h04, h00 | h00, h00 | h00, h23 | hAB, 
    Data: h00 | h84, h00 | h40, h00 | h90, h00 | h02, 
    Data: hA2 | h04, h00 | h00, h00 | h00, h9E | hAB, 
    Data: h00 | h84, h00 | h00, h00 | hDB, h00 | hAF, 
    Data: h9F | h04, h00 | h00, h00 | h00, hEE | hAB, 
    Data: h00 | h84, h00 | hE0, h00 | hCF, h00 | h80, 
    Data: h1F | h04, hE0 | h00, hDF | h00, hB5 | hAB, 
    Data: h0E | h00, h00 | h00, h48 | h00, hD3 | h00, 
    Data: h1F | h00, hE0 | h00, hDB | h00, hA9 | h00, 
    Data: h9F | h00, h00 | h00, h00 | h00, hEE | h00, 
    Data: h00 | h80, h00 | hE0, h00 | hDB, h00 | h47, 
    Data: hA0 | h04, h00 | h00, h00 | h00, h48 | hAB, 
    Data: h00 | h84, h00 | h40, h00 | h00, h00 | hFB, 
    Data: hA1 | h04, h00 | h00, h00 | h00, h23 | hAB, 
    Data: h00 | h84, h00 | h40, h00 | h90, h00 | h02, 
    Data: hA2 | h04, h00 | h00, h00 | h00, h9E | hAB, 
    Data: h00 | h84, h00 | h00, h00 | hDF, h00 | hB3, 
    Data: h9F | h04, h00 | h00, h00 | h00, hEE | hAB, 
    Data: h00 | h84, h00 | hE0, h00 | hDB, h00 | hEC, 
    Data: h1F | h04, hE0 | h00, hDF | h00, hB5 | hAB, 
    Data: h1F | h00, hE0 | h00, hD7 | h00, h8D | h00, 
    Data: h9F | h00, h00 | h00, h00 | h00, hEE | h00, 
    Data: h00 | h80, h00 | hE0, h00 | hD7, h00 | h63, 
    Data: hA0 | h04, h00 | h00, h00 | h00, h48 | hAB, 
    Data: h00 | h84, h00 | h40, h00 | h00, h00 | hFB, 
    Data: hA1 | h04, h00 | h00, h00 | h00, h23 | hAB, 
    Data: h00 | h84, h00 | h40, h00 | h90, h00 | h02, 
    Data: hA2 | h04, h00 | h00, h00 | h00, h9E | hAB, 
    Data: h00 | h84, h00 | h00, h00 | h5E, h00 | h3D, 
    Data: h9F | h04, h00 | h00, h00 | h00, hEE | hAB, 
    Data: h00 | h84, h00 | hE0, h00 | hD7, h00 | hC8, 
    Data: hAA | h04, h00 | h00, h00 | h00, hCF | hAB, 
    Data: h00 | h84, h00 | h51, h00 | hFF, h00 | h4A, 
    Data: hAA | h04, h00 | h00, h00 | h00, hCF | hAB, 
    Data: h00 | h84, h00 | h41, h00 | hFF, h00 | h1D, 
    Data: hAA | h04, h00 | h00, h00 | h00, hCF | hAB, 
    Data: h00 | h84, h00 | h41, h00 | hFF, h00 | h1D, 
    Data: hAA | h04, h00 | h00, h00 | h00, hCF | hAB, 
    Data: h00 | h84, h00 | h31, h00 | hFF, h00 | hBF, 
    Data: hAA | h04, h00 | h00, h00 | h00, hCF | hAB, 
    Data: h00 | h84, h00 | h31, h00 | hFF, h00 | hBF, 
    Data: hAA | h04, h00 | h00, h00 | h00, hCF | hAB, 
    Data: h00 | h84, h00 | h21, h00 | h00, h00 | h1B, 
    Data: hAA | h04, h00 | h00, h00 | h00, hCF | hAB, 
    Data: h00 | h84, h00 | h20, h00 | h01, h00 | h09, 
    Data: hAA | h04, h00 | h00, h00 | h00, hCF | hAB, 
    Data: h00 | h84, h00 | h10, h00 | h02, h00 | hF9, 
    Data: hAA | h04, h00 | h00, h00 | h00, hCF | hAB, 
    Data: h00 | h84, h00 | h11, h00 | h03, h00 | hEB, 
    Data: hAA | h04, h00 | h00, h00 | h00, hCF | hAB, 
    Data: h00 | h84, h00 | h00, h00 | h04, h00 | hBC, 
    Data: hAA | h04, h00 | h00, h00 | h00, hCF | hAB, 
    Data: h00 | h84, h00 | h02, h00 | h04, h00 | h96, 
    Data: h1F | h04, hE0 | h00, hDF | h00, hB5 | hAB, 
    Data: h1F | h00, hE0 | h00, hD7 | h00, h8D | h00, 
    Data: h9F | h04, h00 | h00, h00 | h00, hEE | hAB, 
    Data: h00 | h84, h00 | hE0, h00 | hD7, h00 | hC8, 
    Data: hA0 | h04, h00 | h00, h00 | h00, h48 | hAB, 
    Data: h00 | h84, h00 | h40, h00 | h00, h00 | hFB, 
    Data: hA1 | h04, h00 | h00, h00 | h00, h23 | hAB, 
    Data: h00 | h84, h00 | h40, h00 | h90, h00 | h02, 
    Data: hA2 | h04, h00 | h00, h00 | h00, h9E | hAB, 
    Data: h00 | h84, h00 | h00, h00 | hDA, h00 | hA8, 
    Data: h9F | h04, h00 | h00, h00 | h00, hEE | hAB, 
    Data: h00 | h84, h00 | hE0, h00 | hD7, h00 | hC8, 
    Data: hAA | h04, h00 | h00, h00 | h00, hCF | hAB, 
    Data: h00 | h84, h00 | h02, h00 | h04, h00 | h96, 
    Data: h1F | h04, hE0 | h00, hDF | h00, hB5 | hAB, 
    Data: hAB | h00, h00 | h00, h00 | h00, hA4 | h00, 
    Data: h00 | h80, h00 | h02, h00 | h0A, h00 | h17, 
    Data: h15 | h00, h01 | h00, hFF | h00, h84 | h00, 
    Data: hAB | h00, h00 | h00, h00 | h00, hA4 | h00, 
    Data: h00 | h80, h00 | h02, h00 | h08, h00 | h19, 
    Data: h15 | h00, h01 | h00, hFF | h00, h84 | h00, 
    Data: hAB | h00, h00 | h00, h00 | h00, hA4 | h00, 
    Data: h00 | h80, h00 | h02, h00 | h18, h00 | h69, 
    Data: h15 | h00, h01 | h00, hFF | h00, h84 | h00, 
    Data: hAB | h00, h00 | h00, h00 | h00, hA4 | h00, 
    Data: h00 | h80, h00 | h02, h00 | h18, h00 | h69, 
    Data: h15 | h00, h01 | h00, hFF | h00, h84 | h00, 
    Data: hAB | h00, h00 | h00, h00 | h00, hA4 | h00, 
    Data: h00 | h80, h00 | h02, h00 | h28, h00 | hF9, 
    Data: h15 | h00, h01 | h00, hFF | h00, h84 | h00, 
    Data: hAB | h00, h00 | h00, h00 | h00, hA4 | h00, 
    Data: h00 | h80, h00 | h02, h00 | h28, h00 | hF9, 
    Data: h15 | h00, h01 | h00, hFF | h00, h84 | h00, 
    Data: hAB | h00, h00 | h00, h00 | h00, hA4 | h00, 
    Data: h00 | h80, h00 | h02, h00 | h38, h00 | h89, 
    Data: h15 | h00, h00 | h00, h02 | h00, h6C | h00, 
    Data: hAB | h00, h00 | h00, h00 | h00, hA4 | h00, 
    Data: h00 | h80, h00 | h02, h00 | h38, h00 | h89, 
    Data: h15 | h00, h00 | h00, h80 | h00, hEB | h00, 
    Data: hAB | h00, h00 | h00, h00 | h00, hA4 | h00, 
    Data: h00 | h80, h00 | h02, h00 | h48, h00 | hDE, 
    Data: h15 | h00, h01 | h00, h00 | h00, h77 | h00, 
    Data: hAB | h00, h00 | h00, h00 | h00, hA4 | h00, 
    Data: h00 | h80, h00 | h02, h00 | h48, h00 | hDE, 
    Data: h15 | h00, h01 | h00, h00 | h00, h77 | h00, 
    Data: hAB | h00, h00 | h00, h00 | h00, hA4 | h00, 
    Data: h00 | h80, h00 | h02, h00 | h58, h00 | hAE, 
    Data: h15 | h00, h01 | h00, h82 | h00, hF0 | h00, 
    Data: hAB | h00, h00 | h00, h00 | h00, hA4 | h00, 
    Data: h00 | h80, h00 | h02, h00 | h58, h00 | hAE, 
    Data: h15 | h00, h01 | h00, h00 | h00, h77 | h00, 
    Data: h0E | h00, h00 | h00, h49 | h00, hD4 | h00, 
    Data: h1F | h00, hE0 | h00, hCF | h00, hC5 | h00, 
    Data: h9F | h00, h00 | h00, h00 | h00, hEE | h00, 
    Data: h00 | h80, h00 | hE0, h00 | hCF, h00 | h2B, 
    Data: hA0 | h04, h00 | h00, h00 | h00, h48 | hAB, 
    Data: h00 | h84, h00 | h40, h00 | h00, h00 | hFB, 
    Data: hA1 | h04, h00 | h00, h00 | h00, h23 | hAB, 
    Data: h00 | h84, h00 | h40, h00 | h90, h00 | h02, 
    Data: hA2 | h04, h00 | h00, h00 | h00, h9E | hAB, 
    Data: h00 | h84, h00 | h00, h00 | hDB, h00 | hAF, 
    Data: h9F | h04, h00 | h00, h00 | h00, hEE | hAB, 
    Data: h00 | h84, h00 | hE0, h00 | hCF, h00 | h80, 
    Data: h1F | h04, hE0 | h00, hDF | h00, hB5 | hAB, 
    Data: h0E | h00, h00 | h00, h48 | h00, hD3 | h00, 
    Data: h1F | h00, hE0 | h00, hDB | h00, hA9 | h00, 
    Data: h9F | h00, h00 | h00, h00 | h00, hEE | h00, 
    Data: h00 | h80, h00 | hE0, h00 | hDB, h00 | h47, 
    Data: hA0 | h04, h00 | h00, h00 | h00, h48 | hAB, 
    Data: h00 | h84, h00 | h40, h00 | h00, h00 | hFB, 
    Data: hA1 | h04, h00 | h00, h00 | h00, h23 | hAB, 
    Data: h00 | h84, h00 | h40, h00 | h90, h00 | h02, 
    Data: hA2 | h04, h00 | h00, h00 | h00, h9E | hAB, 
    Data: h00 | h84, h00 | h00, h00 | hDF, h00 | hB3, 
    Data: h9F | h04, h00 | h00, h00 | h00, hEE | hAB, 
    Data: h00 | h84, h00 | hE0, h00 | hDB, h00 | hEC, 
    Data: h1F | h04, hE0 | h00, hDF | h00, hB5 | hAB, 
    Data: h1F | h00, hE0 | h00, hDB | h00, hA9 | h00, 
    Data: h9F | h04, h00 | h00, h00 | h00, hEE | hAB, 
    Data: h00 | h84, h00 | hE0, h00 | hDB, h00 | hEC, 
    Data: hA0 | h04, h00 | h00, h00 | h00, h48 | hAB, 
    Data: h00 | h84, h00 | h40, h00 | h00, h00 | hFB, 
    Data: hA1 | h04, h00 | h00, h00 | h00, h23 | hAB, 
    Data: h00 | h84, h00 | h40, h00 | h90, h00 | h02, 
    Data: hA2 | h04, h00 | h00, h00 | h00, h9E | hAB, 
    Data: h00 | h84, h00 | h00, h00 | hD6, h00 | h8C, 
    Data: h9F | h04, h00 | h00, h00 | h00, hEE | hAB, 
    Data: h00 | h84, h00 | hE0, h00 | hDB, h00 | hEC, 
    Data: h1F | h04, hE0 | h00, hDF | h00, hB5 | hAB, 
    Data: h1F | h00, hE0 | h00, hD7 | h00, h8D | h00, 
    Data: h9F | h00, h00 | h00, h00 | h00, hEE | h00, 
    Data: h00 | h80, h00 | hE0, h00 | hD7, h00 | h63, 
    Data: hA0 | h04, h00 | h00, h00 | h00, h48 | hAB, 
    Data: h00 | h84, h00 | h40, h00 | h00, h00 | hFB, 
    Data: hA1 | h04, h00 | h00, h00 | h00, h23 | hAB, 
    Data: h00 | h84, h00 | h40, h00 | h90, h00 | h02, 
    Data: hA2 | h04, h00 | h00, h00 | h00, h9E | hAB, 
    Data: h00 | h84, h00 | h00, h00 | h5E, h00 | h3D, 
    Data: h9F | h04, h00 | h00, h00 | h00, hEE | hAB, 
    Data: h00 | h84, h00 | hE0, h00 | hD7, h00 | hC8, 
    Data: hAA | h04, h00 | h00, h00 | h00, hCF | hAB, 
    Data: h00 | h84, h00 | h51, h00 | hFF, h00 | h4A, 
    Data: hAA | h04, h00 | h00, h00 | h00, hCF | hAB, 
    Data: h00 | h84, h00 | h51, h00 | hFF, h00 | h4A, 
    Data: hAA | h04, h00 | h00, h00 | h00, hCF | hAB, 
    Data: h00 | h84, h00 | h41, h00 | hFF, h00 | h1D, 
    Data: hAA | h04, h00 | h00, h00 | h00, hCF | hAB, 
    Data: h00 | h84, h00 | h41, h00 | hFF, h00 | h1D, 
    Data: hAA | h04, h00 | h00, h00 | h00, hCF | hAB, 
    Data: h00 | h84, h00 | h31, h00 | hFF, h00 | hBF, 
    Data: hAA | h04, h00 | h00, h00 | h00, hCF | hAB, 
    Data: h00 | h84, h00 | h31, h00 | hFF, h00 | hBF, 
    Data: hAA | h04, h00 | h00, h00 | h00, hCF | hAB, 
    Data: h00 | h84, h00 | h21, h00 | h00, h00 | h1B, 
    Data: hAA | h04, h00 | h00, h00 | h00, hCF | hAB, 
    Data: h00 | h84, h00 | h20, h00 | h01, h00 | h09, 
    Data: hAA | h04, h00 | h00, h00 | h00, hCF | hAB, 
    Data: h00 | h84, h00 | h10, h00 | h02, h00 | hF9, 
    Data: hAA | h04, h00 | h00, h00 | h00, hCF | hAB, 
    Data: h00 | h84, h00 | h11, h00 | h03, h00 | hEB, 
    Data: hAA | h04, h00 | h00, h00 | h00, hCF | hAB, 
    Data: h00 | h84, h00 | h00, h00 | h04, h00 | hBC, 
    Data: hAA | h04, h00 | h00, h00 | h00, hCF | hAB, 
    Data: h00 | h84, h00 | h02, h00 | h04, h00 | h96, 
    Data: h1F | h04, hE0 | h00, hDF | h00, hB5 | hAB, 
    Data: h1F | h00, hE0 | h00, hD7 | h00, h8D | h00, 
    Data: h9F | h04, h00 | h00, h00 | h00, hEE | hAB, 
    Data: h00 | h84, h00 | hE0, h00 | hD7, h00 | hC8, 
    Data: hA0 | h04, h00 | h00, h00 | h00, h48 | hAB, 
    Data: h00 | h84, h00 | h40, h00 | h00, h00 | hFB, 
    Data: hA1 | h04, h00 | h00, h00 | h00, h23 | hAB, 
    Data: h00 | h84, h00 | h40, h00 | h90, h00 | h02, 
    Data: hA2 | h04, h00 | h00, h00 | h00, h9E | hAB, 
    Data: h00 | h84, h00 | h00, h00 | hDA, h00 | hA8, 
    Data: h9F | h04, h00 | h00, h00 | h00, hEE | hAB, 
    Data: h00 | h84, h00 | hE0, h00 | hD7, h00 | hC8, 
    Data: hAA | h04, h00 | h00, h00 | h00, hCF | hAB, 
    Data: h00 | h84, h00 | h02, h00 | h04, h00 | h96, 
    Data: h1F | h04, hE0 | h00, hDF | h00, hB5 | hAB, 
    Data: hAB | h00, h00 | h00, h00 | h00, hA4 | h00, 
    Data: h00 | h80, h00 | h02, h00 | h0A, h00 | h17, 
    Data: h15 | h00, h01 | h00, hFF | h00, h84 | h00, 
    Data: hAB | h00, h00 | h00, h00 | h00, hA4 | h00, 
    Data: h00 | h80, h00 | h02, h00 | h08, h00 | h19, 
    Data: h15 | h00, h01 | h00, hFF | h00, h84 | h00, 
    Data: hAB | h00, h00 | h00, h00 | h00, hA4 | h00, 
    Data: h00 | h80, h00 | h02, h00 | h18, h00 | h69, 
    Data: h15 | h00, h01 | h00, hFF | h00, h84 | h00, 
    Data: hAB | h00, h00 | h00, h00 | h00, hA4 | h00, 
    Data: h00 | h80, h00 | h02, h00 | h18, h00 | h69, 
    Data: h15 | h00, h01 | h00, hFF | h00, h84 | h00, 
    Data: hAB | h00, h00 | h00, h00 | h00, hA4 | h00, 
    Data: h00 | h80, h00 | h02, h00 | h28, h00 | hF9, 
    Data: h15 | h00, h01 | h00, hFF | h00, h84 | h00, 
    Data: hAB | h00, h00 | h00, h00 | h00, hA4 | h00, 
    Data: h00 | h80, h00 | h02, h00 | h28, h00 | hF9, 
    Data: h15 | h00, h01 | h00, hFF | h00, h84 | h00, 
    Data: hAB | h00, h00 | h00, h00 | h00, hA4 | h00, 
    Data: h00 | h80, h00 | h02, h00 | h38, h00 | h89, 
    Data: h15 | h00, h00 | h00, h02 | h00, h6C | h00, 
    Data: hAB | h00, h00 | h00, h00 | h00, hA4 | h00, 
    Data: h00 | h80, h00 | h02, h00 | h38, h00 | h89, 
    Data: h15 | h00, h00 | h00, h80 | h00, hEB | h00, 
    Data: hAB | h00, h00 | h00, h00 | h00, hA4 | h00, 
    Data: h00 | h80, h00 | h02, h00 | h48, h00 | hDE, 
    Data: h15 | h00, h01 | h00, h00 | h00, h77 | h00, 
    Data: hAB | h00, h00 | h00, h00 | h00, hA4 | h00, 
    Data: h00 | h80, h00 | h02, h00 | h48, h00 | hDE, 
    Data: h15 | h00, h01 | h00, h00 | h00, h77 | h00, 
    Data: hAB | h00, h00 | h00, h00 | h00, hA4 | h00, 
    Data: h00 | h80, h00 | h02, h00 | h58, h00 | hAE, 
    Data: h15 | h00, h01 | h00, h82 | h00, hF0 | h00, 
    Data: hAB | h00, h00 | h00, h00 | h00, hA4 | h00, 
    Data: h00 | h80, h00 | h02, h00 | h58, h00 | hAE, 
    Data: h15 | h00, h01 | h00, h00 | h00, h77 | h00, 
    Data: h0E | h00, h00 | h00, h49 | h00, hD4 | h00, 
    Data: h1F | h00, hE0 | h00, hCF | h00, hC5 | h00, 
    Data: h9F | h00, h00 | h00, h00 | h00, hEE | h00, 
    Data: h00 | h80, h00 | hE0, h00 | hDF, h00 | h5B, 

    Regards

    Asha G

  • Asha,


    At this point, I can't think of any cases where the register write wouldn't get written. Just to be sure I understand, you're looking at the case were the MODEM_STATUS_MASK write is not written.

    It looks like the write starts with 0x1F 0xE0 0xCF 0xC5. The last byte represents the correct CRC byte. The next line comes as 0x9F 0x00 0x00 0xEE. This is the start of the read from the 1F register, again with the proper CRC byte. The next line prompts the actual readback from the device. The write is a NOP of 0x00 0x00 0x00 0x00 again with the last byte of the write as the CRC.

    From the NOP, the readback is 0x80 0xE0 0xDF 0x5B. Here the read gets 0xE0DF instead of the byte that was supposed to be written which was 0xE0CF. However, the 0x5B is the proper CRC for the unexpected bytes of 0xE0DF, meaning the original write did not go through (despite all CRC checking out).

    I think, this is in the code that you placed in the last post. Line 998 writes 0xE0CF to the register, line 999 starts the read with 0x9F, and line 1000 shows the bad read with 0xE0DF.

    If the write in 998 didn't take, the register retains the value from what was previously written, which is from line 960, which does seem to confirm the previous value of 0xE0DF.

    I'm not sure what the problem could be here. Does this occur only when the HART is being sent and received? Do you know if this is one or the other? At this point, I don't know of any cases where this could happen, so I'd like to know as much as possible about this problem. I would note that we have done HART testing with this device, and passed the DLL039 time-out stress test with no failed communications.

    I'll need to check with some other engineers to see if I've missed anything. At this point, I can't think of anything that would cause this type of a problem.


    Joseph Wu

  • Asha,


    I'm still checking on this. In the meantime, can you please verify the timing for the SPI that you've used for the AFE881H1? This would be the Timing Requirements table from Section 6.6 and the diagrams from Figure 6-1. If timing is violated, there can be some unusual results.

    Also, can you show a plot of a 32-bit transmission? with /CS, SCLK, DIN, and DOUT? I just wanted to see what your signals looked like.


    Joseph Wu

  • Asha,

    Also, what are you using to record the digital data? Can you use it to trigger an oscilloscope to read the SPI transmission as it comes in?

    Joseph Wu

  • Asha,

    Yet another thing to check is the SPI transmission that caused the error. First, I would make sure that the CRC can trigger an alarm to indicate that a transmission error has occurred. Second, I would check to see if there's any possibility if the /CS was released early during the transmission. If the SPI data transmission is not complete by the time the /CS rises again, it would not get the complete SPI frame. I'm not sure an incomplete frame would trigger an error that sets the alarm.

    Joseph Wu

  • Hi Joseph, 

    I am working with Asha on this. I will post some recent findings first, and then respond to your outstanding questions. 

    Recent findings

    There is correlation between the ignored register writes via SPI and the U2H FIFO status. 

    First, I verified the stability of the system (AFE881H1EVM + microcontroller) by running internal loopback testing (MODEM_CFG.DUPLEX = 1). The sequence below passed over 130,000 iterations with 0 failures. 

    1. populate U2H FIFO with 1 preamble byte and then between 1 to 31 bytes of random pattern
    2. assert RTS by setting bit 0 of `MODEM_CFG`
    3. delay to allow for HART data transmission: (833us) * (11 bits per HART character) * (number HART characters)
    4. deassert RTS by clearing bit 0 of `MODEM_CFG`
    5. empty H2U FIFO and confirm that all non-preamble bytes were received, with no extra bytes

    Then, I reproduced the intermittent issue where a data byte is not transmitted over HART if RTS is asserted first. It is the same as the sequence above, but steps 1 and 2 are swapped. The issue reproduces every few hundred iterations of the loop. 

    Then, I reproduced the intermittent issue where an unrelated register write is ignored if HART transmission is in progress. Process below:

    1. assert RTS by setting bit 0 of `MODEM_CFG`
    2. populate U2H FIFO with 1 preamble byte and then between 1 to 31 bytes of random pattern
    3. after each byte written to U2H FIFO, repeat the following 50 times: write an incrementing value to an unrelated register (`DAC_OFFSET`) and read back the value 
    4. delay to allow for HART data transmission: (833us) * (11 bits per HART character) * (number HART characters)
    5. deassert RTS by clearing bit 0 of `MODEM_CFG`
    6. empty H2U FIFO and confirm that all non-preamble bytes were received, with no extra bytes

    Note that the above steps are similar still, but with unrelated register writes interleaved with HART FIFO operations. 

    A `DAC_OFFSET` write fails every few hundred iterations of the above loop, and it is always the first write `DAC_OFFSET` after a write to `FIFO_U2H_WR`. A write failure is detected by the read back reporting the previous, non-incremented value. 

    In the waveforms below, the IRQ pin is enabled as active low, and the only modem IRQ unmasked is the `FIFO_U2H_EMPTY_FLAG`.

    The observed correlation is that the SPI write is ignored when the `FIFO_U2H_EMPTY_FLAG` is de-asserted very close to time of the SPI CS de-assert. 

    This timing correlation is unique to the failed writes. Successful writes were observed to have `FIFO_U2H_EMPTY_FLAG` IRQ de-asserted either before or after SPI CS de-assert, but never as close as the failures above. Below are some examples of successful writes with close, but notably different, "CS-deassart vs. FIFO_U2H_EMPTY_FLAG-dessart" timing.

    Do you have any thoughts on this correlation between U2H FIFO status and SPI writes? 

    Responses to outstanding questions

    Our implementation obeys the SPI timing requirements from Section 6.6 and the diagrams from Figure 6-1.

    The digital data is recorded via Analogy Discovery 2 and WaveForms software. The probes are attached to J9 of AFE881H1EVM. 

    I verified that a bad CRC set `CRC_ERR` bit in the subsequent output frame as shown in "Figure 7-29. SPI Frame Details (Default, CRC Enabled)". Good CRC is observed in our failure mode. 

    CS is not released before the end of the SPI transmission, as shown above.

    Below is an analog capture of an SPI frame. I do not see voltage or timing issues. 

    • channel 4: MISO
    • channel 3: MOSI
    • channel 2: SCLK
    • channel 1: CS

  • Steven,

    I'll get back to you. I'll need to run this by the digital design engineer to see if he has any thoughts.

    Joseph Wu

  • Asha and Steven,

    I've talked to the digital designer, but only briefly. He didn't have any thoughts on this problem offhand, but is looking into it.

    To be clear, the SCLK is still 1MHz, is that correct? He did ask that specifically.

    Joseph Wu 

  • Asha and Steven,

    I'm still working with the digital designer. I think he has an understanding of what the problem is. I'll get back to you soon with an explanation and some sort of work around on this test.

    Joseph Wu

  • Asha and Steven,

    We've had a chance to look over this problem and this is what we've found. The write problem occurs in the SPI communication when the device writes the HART FSK from the U2H_FIFO. I'll explain the mechanism, and how to work around it.

    As the device transmits the HART FSK, the device fetches data from the FIFO. The data fetch occurs for every byte that is transmit at a period of about 9.2ms (11 bit times total). For each data fetch there is an internal reset pulse (~1us) that clears the read request from the FIFO. Unfortunately, if this clear is coincident with an SPI write, then it also clears the SPI transmission as well. We've checked this in the Verilog code, and verified this mechanism through a simulation of the digital section of the device.

    In your case, you don’t see this when you fill the FIFO first and then set the RTS, because you've already written the SPI. The U2H_FIFO fetch never occurs at the same time as the SPI write. If you set RTS first and then fill the FIFO, the device starts sending the HART and there are cases where the SPI write occurs at the same time as the U2H_FIFO fetch and clears that SPI write.

    Because this clear during the transmission of the HART affects the SPI communication, you can only send the SPI communication when the device is not fetching the HART data from the U2H_FIFO. This means that you must be able to time the SPI communication with the HART transmission.

    The best way to determine the timing of this fetch is to use the IRQ. The IRQ can be set to check when the FIFO is empty, full or at some user-programmed level. The IRQ is indicates in each of the previous cases when the device has completed a HART byte transmission and started a fetch of the U2H_FIFO to transmit the next HART FSK data. At the IRQ indication the device will transmit the next HART FSK byte. Through 9ms (a little less than 10 bit times), the SPI should be free to receive data. You would do this writing to the U2H_FIFO.

    For writing to the FIFO, data depends on a correct write in a specific sequence and you can't double write. For most other actions, If you are not writing to the FIFO, then another way to counter this problem would be to write the SPI data twice whenever the device is transmitting HART.

    Let me know if you have any questions.

    Joseph Wu

  • Joseph,

    Thank you for the explanation and for your work in identifying root cause. With the firmware workaround in the same test environment, over 30,000 HART messages have passed with 0 byte errors so far.

    Are there other events that cause a similar internal reset pulse as U2H_FIFO fetch? 

  • Steven,

    I'm glad that helped and thanks for letting me know. If you have any other questions, you can start a new post.

    Joseph Wu

  • Asha and Steven,

    There had been another E2E post on writing to the AFE882H1 (which has a very similar digital section) at the same time as your question. Because that post had questions on writing to HART, I mentioned this thread, just in case that poster ran into the same problem.

    Today, I did ask one of the digital designers about this issue and got a little more detail on the exact timing of the problem. I wrote a more detailed post on the timing problem that I thought you might be interested in reading. Regardless, the post can be found at the following link:

    https://e2e.ti.com/support/data-converters-group/data-converters/f/data-converters-forum/1323456/afe882h1-fifo_u2h_wr

    Joseph Wu