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.

PGA460: Programming problem of EEPROM

Part Number: PGA460

Hi Team,

Here is another question about the EEPROM programming problem in PGA460. When customer sends order "0" (55 00 01 fe), the PGA460 doesn't respond, and the code in EEPROM doesn't run. Customer measures the voltage of OUTA and OUTB is high, and customer read DEV_STATO register (55 09 4ca a) get feedback number (40 84 3B).

Do you have any suggestions to this phenomenon ?

By the way, can the PGA460 measure ultrasonic wave whose frequency is between 30 and 500 KHz ? If not, can you recommend one device to me ?

Many thanks~

Stanley Dai

  • Hi Stanley,

    When DEV_STAT0 = 0x84, the THR_CRC_ERR (bit 2) flag is high, indicating that the threshold has not been written to. Before the device is able to perform a burst/listen command, the threshold must be written to at least once after start-up. Once the threshold is written to, the THR_CRC_ERR will be cleared to enable the burst/listen commands (commands 0-3).

    The most basic test to determine if your PGA460 circuit is operational, execute the following command sequence:
    (Note, these examples assume your device is using the factory settings at UART_ADDR=0, you are using a transformer driven transducer, and using UART to communicate.)

    1. Power-on device
    2. Master transmit a threshold bulk write command (CMD16): 0x{55 10 88 88 88 88 88 88 84 21 08 42 10 80 80 80 80 00 88 88 88 88 88 88 84 21 08 42 10 80 80 80 80 00 85}
    3. Master transmit a Preset 1 burst and listen command for 1 object (CMD 1): 0x{55 00 01 FE}
    4. Master waits the equivalent of Preset 1's record length time of 8.192ms (factory default time)
    5. Master requests slave to return the ultrasonic measurement results (CMD5): 0x{55 05}


    If you want to read the echo data dump profile instead of the ultrasonic measurement results, perform the following instead:

    1. Power-on device
    2. Master transmit a threshold bulk write command (CMD16): 0x{10 52 98 5B 00 A1 D0 90 87 4D 1C C3 FE 89 24 5A D7 6D AD B9 D1 95 D5 5D 7C 57 31 13 A7 D6 51 42 56 23}
    3. Master transmit a register write command (CMD10) to EE_CNTRL to set DATADUMP_EN=1: 0x{55 0A 40 80 35}
    4. Master transmit a Preset 1 burst and listen command for 1 object (CMD 1): 0x{55 00 01 FE}
    5. Master waits the equivalent of Preset 1's record length time of 8.192ms (factory default time)
    6. Master requests slave to return the 128 bytes of echo data dump results (CMD5): 0x{55 07}

    Your post title read "EEPROM Programming", which is usually related to burning the EEPROM settings, but your question pertains more so to the time of flight and data capture operation. In the event you also need infromation on programming=burning the EEPROM see the following instructions:

    To update and program/burn the EEPROM values for power-cycle retention (assumes UART_ADDR is updated to 1 as a non-factory value):

    1) If necessary, write to the EEPROM using CMD12 (EEPROM bulk write) to update all user values.


    2) Issue the EEPROM burn routine:

    To program the EEPROM, follow these steps:

    1. Send an EEPROM program command using UART or TCI with a unique unlock pattern on 4-bits.
    The program bit is set to 0 in register 0x40. The unlock passcode is 0x Dh.
    Assuming new UART_ADDR=b001, MCU transmitted UART 0x { 55 2A 40 69 2C }

    2. Immediately send the same UART or TCI command with the program bit set to 1.
    If any other command is issued after the unlock code (Step 1), the EEPROM program is initiated.
    Also, if the unlock command in Step 1 is not correct, the EEPROM is not programmed.
    The EEPROM is locked again automatically after each program command
    Assuming new UART_ADDR=b001, MCU transmitted UART 0x { 55 2A 40 68 2D }

    3) To check if the EEPROM was programmed successfully, the EE_PRGM_OK bit should read back '1'.

    Note: Programming the EEPROM is only necessary if you want to save the EEPROM values. The EEPROM values can be written to (EEPROM bulk write) and take effect immediately because the read/writes are actually taking place in the working register space.