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.

AM6546: WKUP_POK9 (MAIN/SoC 1.8V)

Part Number: AM6546


Hi!
We (Kongsberg Maritime) use XAM6546ACDXEAF on our custom board. We have set up WKUP_POK9 (MAIN/SoC 1.8V) to generate an interrupt to the ESM on undervoltage. To test that the configuration is correct, we have created a test where we set POK_TRIM=127. What we do are:

Mask the POK reset output CTRLMMR_WKUP_MAIN_PRG_CTRL[20] V1P8_POK_GATERST_EN:
register 0x43018108 value 0x802f803f

Program the POK threshold settings CTRLMMR_WKUP_POK3P3V2_MAIN_1P8IO_VDDS_CTRL[6:0] POK_TRIM = 127
register 0x43018120 value 0x8000007f

Wait for 10 ms for the POK to settle.

Unmask POK reset output CTRLMMR_WKUP_MAIN_PRG_CTRL[20] V1P8_POK_GATERST_EN.
register 0x43018108 value 0x803f803f

On some of our custom boards, the ESM interrupt MAIN_PRG_MAIN_1P8V_POK is generated(register 0x42080440 value 0x00001000). However, on some of our custom boards, the ESM interrupt is NOT generated (register 0x42080440 value 0x00000000). We measure the voltage on all boards to 1.8V.

Do you have any suggestions as to what could be wrong?

Regards
Johnny Mostraum

  • Hello Johnny Mostraum

    Thank you for the function.

    I assuming the behavior is internal to the device and not looking to measure any signal externally.

    However, on some of our custom boards

    Any thoughts on how many boards you have issue vs total boards 

    We measure the voltage on all boards to 1.8V.

    What voltage is this 1.8V.

    Can you confirm if all the boards have been tested functionally and the behavior is similar in terms of power consumption or performance.

    Have these boards been exposed to any additional tests?

    Regards,

    Sreenivasa

  • Hi,

    The behavior is internal to the device and the voltage I mentioned is the one connected to the VDDA1P8_MON0 pin (voltage monitored by WKUP_POK9).

    We haven't tested that many boards for this problem (maybe 5-6), and have seen it on 2-3 boards. All the boards are functionally tested in the same way and the behavior is similar in terms of power consumption and performance (as far as I know).

    Regards,

    Johnny

  • Hello Johnny Mostraum

    Thank you for the inputs.

    Please refer below 

    POK trim bits. These bits are used to trim the comparator threshold voltage. Trim granularity is dependent on hyst_en and pok_trim bit
    settings.

    Have you tried varying the threshold settings?

    Regards,

    Sreenivasa

  • Hi Sreenivasa,

    If you mean the POK_TRIM bits, this is the value I'm trying to change in register 0x43018120 (from 0x8000001d (default) to 0x8000007f) when trying to generate the ESM interrupt.

    Regards

    Johnny

  • Hello Johnny Mostraum

    Thank you for the inputs.

    I was checking if you have had a chance to configuring a different value other than 0x8000007f for testing.

    Regards,

    Sreenivasa

  • Hi Sreenivasa,

    Sorry for the late reply, but I've been on Christmas vacation. We did some tests with other POK_TRIM values some time ago without any ESM interrupt on the non-functioning boards. I can come back with more details on this.

    Regards

    Johnny

  • Hello Johnny Mostraum

    Thank you for the note and wishing you a Happy New year.

    We did some tests with other POK_TRIM values some time ago without any ESM interrupt on the non-functioning boards. I can come back with more details on this.

    Please share the info when you have them in hand for us to review.

    Regards,

    Sreenivasa

  • Hi Sreenivasa, 

    Now I have made some more measurements. First are the measurements on a non-functioning board. The ESM interrupt goes on as expected, but then it goes off again. This does not happen on another board (OK-functioning board). Why is this different?

    non-functioning board:
    register 0x43018120 value 0x80000000 => register 0x42080440 value 0x00000000
    register 0x43018120 value 0x80000010 => register 0x42080440 value 0x00000000
    register 0x43018120 value 0x80000020 => register 0x42080440 value 0x00000000
    register 0x43018120 value 0x80000029 => register 0x42080440 value 0x00000000
    register 0x43018120 value 0x8000002a => register 0x42080440 value 0x00001000
    register 0x43018120 value 0x80000030 => register 0x42080440 value 0x00001000
    register 0x43018120 value 0x80000040 => register 0x42080440 value 0x00001000
    register 0x43018120 value 0x80000043 => register 0x42080440 value 0x00001000
    register 0x43018120 value 0x80000044 => register 0x42080440 value 0x00000000
    register 0x43018120 value 0x80000050 => register 0x42080440 value 0x00000000
    register 0x43018120 value 0x80000060 => register 0x42080440 value 0x00000000
    register 0x43018120 value 0x80000070 => register 0x42080440 value 0x00000000
    register 0x43018120 value 0x8000007f => register 0x42080440 value 0x00000000

    OK-functioning board:
    register 0x43018120 value 0x80000000 => register 0x42080440 value 0x00000000
    register 0x43018120 value 0x80000010 => register 0x42080440 value 0x00000000
    register 0x43018120 value 0x80000020 => register 0x42080440 value 0x00000000
    register 0x43018120 value 0x80000029 => register 0x42080440 value 0x00000000
    register 0x43018120 value 0x8000002a => register 0x42080440 value 0x00001000
    register 0x43018120 value 0x80000030 => register 0x42080440 value 0x00001000
    register 0x43018120 value 0x80000040 => register 0x42080440 value 0x00001000
    register 0x43018120 value 0x80000043 => register 0x42080440 value 0x00001000
    register 0x43018120 value 0x80000044 => register 0x42080440 value 0x00001000
    register 0x43018120 value 0x80000050 => register 0x42080440 value 0x00001000
    register 0x43018120 value 0x80000060 => register 0x42080440 value 0x00001000
    register 0x43018120 value 0x80000070 => register 0x42080440 value 0x00001000
    register 0x43018120 value 0x8000007f => register 0x42080440 value 0x00001000

    Regards

    Johnny

  • Hello Johnny Mostraum

    Thank you for the inputs.

    First are the measurements on a non-functioning board. The ESM interrupt goes on as expected, but then it goes off again.

    register 0x43018120 value 0x80000044 => register 0x42080440 value 0x00000000
    register 0x43018120 value 0x80000050 => register 0x42080440 value 0x00000000
    register 0x43018120 value 0x80000060 => register 0x42080440 value 0x00000000
    register 0x43018120 value 0x80000070 => register 0x42080440 value 0x00000000
    register 0x43018120 value 0x8000007f => register 0x42080440 value 0x00000000

    Could you please confirm if you see the above-described behavior for the values listed.

    Regards,

    Sreenivasa

  • Hi

    Maybe said a little wrong, because the ESM interrupt is cleared before the new POK_TRIM value is set. More correctly: Yes the listed values do not turn the ESM interrupt on like the OK-functioning board.

    Regards

    Johnny

  • Hello Johnny Mostraum

    Thank you for the inputs.

    Could you please help me understand if there is any different between the 2 devices in terms of marking.

    I am interested in understanding if there is any change is silicon version.

    Regards,

    Sreenivasa

  • Hello Johnny Mostraum

    I discussed the POK issue internally and found only a subset of POK_TRIM values are valid. 

    So your attempt to set the POK_TRIM to a value of 0x7f is not valid.  Tou should not use POK_TRIM values outside the valid range. 

    We would recommend operating with trim codes from 0x20 to 0x44 for UV detection when using a POK1P8.

    However, I do not understand the test results when POK_TRIM is set to 0x44.  This is considered a valid value, so would have expected a different result.  I can only assume their values are off by one. 

    Can you please check on a couple of good and bad units for the above range and provide your input to confirm the range.

    This is not explained in the TRM and i am checking with the documentation expert. The expert in on vacation till 9th Jan.

    Regards,

    Sreenivasa

     

  • Hello Johnny Mostraum

    The POK_TRIM recommended range is 0x8C to 0xB0 for OV detection when using a POK1P8.

    I guess this is including Bit 7 which is the detection mode bit.

    Looks like you are enabling the hysteresis. Could you please do a check with hysteresis disabled.

    Regards,

    Sreenivasa

     

  • Hi Sreenivasa,

    Thank you for your input.

    The two devices are from the same hardware version and the silicon version is SR2.0 (register 0x43000014 value 0x1bb5a02f) on both.

    I will get back to you with more test results that you ask about.

    Regards Johnny

  • Hi Sreenivasa,

    Test results with hysteresis disabled:
    non-functioning board:
    register 0x43018120 value 0x00000000 => register 0x42080440 value 0x00000000
    register 0x43018120 value 0x00000010 => register 0x42080440 value 0x00000000
    register 0x43018120 value 0x00000020 => register 0x42080440 value 0x00000000
    register 0x43018120 value 0x00000029 => register 0x42080440 value 0x00000000
    register 0x43018120 value 0x0000002a => register 0x42080440 value 0x00001000
    register 0x43018120 value 0x00000030 => register 0x42080440 value 0x00001000
    register 0x43018120 value 0x00000040 => register 0x42080440 value 0x00001000
    register 0x43018120 value 0x00000043 => register 0x42080440 value 0x00001000
    register 0x43018120 value 0x00000044 => register 0x42080440 value 0x00000000
    register 0x43018120 value 0x00000050 => register 0x42080440 value 0x00000000
    register 0x43018120 value 0x00000060 => register 0x42080440 value 0x00000000
    register 0x43018120 value 0x00000070 => register 0x42080440 value 0x00000000
    register 0x43018120 value 0x0000007f => register 0x42080440 value 0x00000000

    OK-functioning board:
    register 0x43018120 value 0x00000000 => register 0x42080440 value 0x00000000
    register 0x43018120 value 0x00000010 => register 0x42080440 value 0x00000000
    register 0x43018120 value 0x00000020 => register 0x42080440 value 0x00000000
    register 0x43018120 value 0x00000029 => register 0x42080440 value 0x00000000
    register 0x43018120 value 0x0000002a => register 0x42080440 value 0x00001000
    register 0x43018120 value 0x00000030 => register 0x42080440 value 0x00001000
    register 0x43018120 value 0x00000040 => register 0x42080440 value 0x00001000
    register 0x43018120 value 0x00000043 => register 0x42080440 value 0x00001000
    register 0x43018120 value 0x00000044 => register 0x42080440 value 0x00001000
    register 0x43018120 value 0x00000050 => register 0x42080440 value 0x00001000
    register 0x43018120 value 0x00000060 => register 0x42080440 value 0x00001000
    register 0x43018120 value 0x00000070 => register 0x42080440 value 0x00001000
    register 0x43018120 value 0x0000007f => register 0x42080440 value 0x00001000

    I have tested on one more bad unit with the same results.

    Regards Johnny

  • Hello Johnny Mostraum

    Thank you for the inputs.

    Could you please help us on the detection mode that you plan to use - UV or OV or any.

    Would it be possible to perform similar tests on another failing/passing board.

    Regards,

    Sreenivasa

  • Hi Sreenivasa,

    We plan to use under-voltage detection (UV) mode.

    We have performed the test on another failing board with the same result.

    Regards Johnny

  • Hello Johnny Mostraum

    Thank you for the inputs. Please note the below and consider using only the recommended range.

    As mentioned, before your attempt to set the POK_TRIM to a value of 0x7f is not valid.  Tou should not use POK_TRIM values outside the valid range. 

    We would recommend operating with trim codes from 0x20 to 0x44 for UV detection when using a POK1P8.

    I am working to get the values for each of the allowed trim code and will update you.

    Could you please help provide the measured 1.8V value.

    Regards,

    Sreenivasa

  • Hi Sreenivasa,

    Measured 1.8V:
    - Non-functioning board: 1.797 - 1.799
    - OK-functioning board: 1.801 - 1.802

    Regards Johnny

  • Hello Johnny Mostraum

    Thank you for the measurement value.

    We would recommend operating with trim codes from 0x20 to 0x44 for UV detection when using a POK1P8.

    I am working to find the voltage value for the corresponding and associated tolerance.

    I will update you when i have the information.

    Regards,

    Sreenivasa

  • I need to make a correction to the valid threshold range mentioned in the previous post from Sreenivasa. I was looking at the wrong POK specification when I told him the valid threshold range was from 0x20 to 0x44. The actual valid threshold range for this device is 0x00 to 0x43.

    The 1.8V POK implemented in this device has an internal resistor divider that divides the applied voltage down by 1.636. The flag changed from 0 to 1 when increasing the threshold value from 0x29 to 0x2A because the threshold for 0x29 is 1.086V and the threshold for 0x2A is 1.115V. When you consider the input divider of 1.636, the trip point for a threshold value of 0x29 will be about 1.777V and the trip point for a threshold value of 0x2A will be about 1.824V.

    The flag changed back from 1 to 0 when increasing the threshold value from 0x43 to 0x44A since 0x43 is the last valid code. The flag is undetermined when setting a threshold outside the valid range. As Sreenivasa mentioned, you should not configure the threshold value outside of its valid range.

    Regards,
    Paul

  • Hi,

    Thank you for the answers.

    Is this documented somewhere? I can't find much about this in the technical reference manual for AM65x (SPRUID7E April 2018-revised December 2019).

    Is there a formula to calculate the threshold value (in voltage) from the POK_TRIM value?

    We also use WKUP_POK5 (VDDA_DDR) and WKUP_POK10 (MAIN/SoC 3.3V) but haven't seen the same problem here. Both in undervoltage detection (UV) mode. What are the valid POK_TRIM values for these POKs? And is there a formula to calculate the threshold value (in voltage) from the POK_TRIM value?

    Regards

    Johnny

  • I was anticipating these questions and already in the process of searching for the source of this information. At this time, I only have a snapshoot of an internal specification which can't be shared. Meanwhile, I can tell you the proper threshold value that should be used for each POK if you specific a trip voltage.

    Regards,
    Paul    

  • I have attached an Excel file with the POK threshold values.

    GS80_POK_Thesholds.xlsx

    Please note:

    POK_TRIM[0] is ignored when HYST_EN is set. Use the threshold voltage associated with POK_TRIM[0] = 0 when HYST_EN is set.

    POK_TRIM[0] can be used to achieve a little better resolution when HYST_EN is reset. The threshold voltage difference associated with POK_TRIM[0] increases as the threshold voltage increases.

    POK_3P3 and POK_1P8 have internal resistor dividers which scales-down the 3.3V input by 0.3333 and the 1.8V input by 0.6111 before it is applied to the programmable comparator.

    I will submit a request to add this information to the TRM.

    Hopefully this helps.

    Regards,
    Paul

  • Hi,

    Thank you very much for the answers. I have a few more questions.

    What is the scaling factor for WKUP_POK5 (VDDA_DDR 1.2V)?

    Is there any measurement inaccuracy in the AM65x SoC that we need to take into account when deciding the threshold voltage?

    Regards Johnny

  • There is no mention of POK_1P5 in our internal specification. I suspect the TRM is incorrectly calling it a POK_1P5 when it is really a POK_1P8. I saw the POK_1P5 reference in the TRM earlier today and ask our analog designer about the name discrepancy but didn't get a reply yet. I will let you know once he replies.

    The threshold values I provided are nominal values. The POK has a +/-1% accuracy which must be considered. I'm not aware of any other accuracy concerns.

    Regards,
    Paul

  • Hi,
    Thanks for answers.
    Is the +/-1% accuracy according to 3.3/1.8 V?
    Do you have a scaling factor on the WKUP_POK5 (VDDA_DDR 1.2V)?

    Regards Johnny

  • I have reviewed our internal specification further looking for the answer to your question. It says the POK accuracy is +/-1%, but the bandgap reference must also be included which has an accuracy of +/-2%. So you must assume a total accuracy of +/-3%. The examples for selecting a threshold value provided in this document also included another 1% for guard band.

    I have included three examples below.

    1) For a supply defined as 0.9V +/-5.0% variation (VDD_MON is connected to the monitored supply) and considering +/-3% inaccuracy from POK (+/-1% from POK and +/-2% from trimmed Bandgap) POK code should be set to 796mV for UD and 1.006V for OD:

    UD Calculated threshold = (0.9*(100-5-1)/(100+3)) = 821mV  (-1% is guardband)
    Closest threshold settings for the calculated threshold value are: 823mV and 796mV.
    Choose the lowest setting for the undervoltage detection:0.796mV

    OD Calculated threshold = (0.9*(100+5+1)/(100-3)) = 983.5mV (+1% is guardband)
    Closest threshold settings for the calculated threshold value are: 983mV and 1.006V.
    Choose the highest threshold setting for overvoltage detection: 1.006V

    2) If the supply is 1.8V +/-5.0% (VDD_MON1P8V is connected to monitored supply) then calculated thresholds are (with 1% guardband):

    UD threshold = (1.8*(100-5-1)/(100+3)) = 1.643V
    OD threshold = (1.8*(100+5+1)/(100-3)) = 1.967V

    Then these calculated thresholds need to be scaled down by constant 0.6111:

    UD threshold_scaled= 1.643V *0.6111=1.004V
    OD threshold_scaled= 1.967V*0.6111=1.202V

    After scaling the same table for core voltage can be used to find the closest setting to these calculated values:

    UD: closest thresholds setting for the scaled calculated threshold value 1.004V are 1.006V and 0.983V. Choose the lowest setting: 0.983V
    OD: closest threshold settings for the scaled calculated threshold value 1.202V are 1.189V and 1.212V. Choose the highest setting 1.212V.

    3) For an application with 3.3V +/-10.0% supply (VDD_MON3P3V is connected to monitored supply) and considering +/-3% inaccuracy from POK [+/-1% from POK and +/-2% from trimmed Bandgap] calculated thresholds are:

    UD threshold = (3.3*(100-10-1)/(100+3)) = 2.851V
    OD threshold = (3.3*(100+10+1)/(100-3)) = 3.776V

    Then these calculated thresholds need to be scaled down by constant 0.3333:

    UD threshold_scaled= 2.851V *0.3333=0.950V
    OD threshold_scaled= 3.776V*0.3333=1.259V

    After scaling the same table for core voltage can be used to find the closest setting to these calculated values:

    UD: closest thresholds setting for the scaled calculated threshold value 0.950V are 0.930V and 0.952V. Choose the lowest setting: 0.930V
    OD: closest threshold settings for the scaled calculated threshold value 1.202V are 1.236V and 1.261V. Choose the highest setting 1.261V.

    I'm still trying to find someone that can help me clarify which POKs are actually implemented for each of the AM65x POK instances. Our internal specification indicates they are four options. One that has internal scaling of 0.3333, one that has internal scaling of 0.6111, one that has no internal scaling, and another with a fixed threshold of 0.5V that is used with an external resistor divider. Based on this information, it doesn't appear the TRM properly represents the device.

    Regards,
    Paul

  • I finally had chance to sit down with someone from our physical design team and we confirmed POK connectivity in AM65x.

    The TRM has a few errors that need to be corrected. It currently says, "Three types of POK modules are implemented in this family of devices - POK_1P5, POK_3P3, and POK_SA."  It should say, "Four types of POK modules are implemented in this family of devices - POK_1P5, POK_1P8, POK_3P3, and POK_SA." 

    The table titled "POK Types and Monitored Voltages" has the wrong POK listed for WKUP_POK3 and WKUP_POK9. Each of these should be a POK_1P8 rather than a POK_3P3.  All other POKs listed in this table are correct.

    As mentioned before, the scaling for a POK_3P3 is 0.3333 and the scaling for a POK_1P8 is 0.6111. There is no scaling required for a POK_1P5. 

    Hopefully this answers all of your questions.

    Regards,
    Paul