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.

AM335x ADC Lockup

Other Parts Discussed in Thread: AM3354

Hello,

We are experiencing an issue with the ADC where it seems it is locking up occasionally and we suspect it is from ESD.  I have found the following posts claiming the same thing where the FSM_BUSY bit is set and powering down or resetting via the CTRL register has no effect.  Is there another way to power down the ADC to reset it without powering down the entire processor?  I have simulated a lockout as mentioned in the following posts by setting PWR_DOWN with the ENABLE bit set int the CTRL register which always causes an FSM_BUSY but I am unable to recover from it.

Here are the following posts I have seen that are related to our issue.

http://e2e.ti.com/support/arm/sitara_arm/f/791/t/290761.aspx

http://e2e.ti.com/support/arm/sitara_arm/f/791/t/349944.aspx

Here is the reg dump when the lockout occurs the strange thing is we receive a HW_Pen_Event_asynchronous even though all the touchscreen support is disabled.  We are running Linux Kernel 3.8.13

Nov 11 22:52:19 Agent-20cd39fc8c1c user.err MuxIO: Unable to read from AIN 6
Nov 11 22:52:19 Agent-20cd39fc8c1c user.err MuxIO: ADC register 0000000000 value 0x47300001
Nov 11 22:52:19 Agent-20cd39fc8c1c user.err MuxIO: ADC register 0x00000010 value 0x0000000c
Nov 11 22:52:19 Agent-20cd39fc8c1c user.err MuxIO: ADC register 0x00000024 value 0x00000023 IRQSTATUS_RAW HW_Pen_Event_asynchronous | End_of_Sequence | FIFO1_Threshold
Nov 11 22:52:19 Agent-20cd39fc8c1c user.err MuxIO: ADC register 0x00000028 value 0000000000
Nov 11 22:52:19 Agent-20cd39fc8c1c user.err MuxIO: ADC register 0x0000002c value 0000000000
Nov 11 22:52:19 Agent-20cd39fc8c1c user.err MuxIO: ADC register 0x00000030 value 0000000000
Nov 11 22:52:19 Agent-20cd39fc8c1c user.err MuxIO: ADC register 0x00000034 value 0000000000
Nov 11 22:52:19 Agent-20cd39fc8c1c user.err MuxIO: ADC register 0x00000038 value 0000000000
Nov 11 22:52:19 Agent-20cd39fc8c1c user.err MuxIO: ADC register 0x0000003c value 0000000000
Nov 11 22:52:19 Agent-20cd39fc8c1c user.err MuxIO: ADC register 0x00000040 value 0x00000007
Nov 11 22:52:19 Agent-20cd39fc8c1c user.err MuxIO: ADC register 0x00000044 value 0x0000002c Step_13 | FSM_BUSY
Nov 11 22:52:19 Agent-20cd39fc8c1c user.err MuxIO: ADC register 0x00000048 value 0000000000
Nov 11 22:52:19 Agent-20cd39fc8c1c user.err MuxIO: ADC register 0x0000004c value 0x00000007
Nov 11 22:52:19 Agent-20cd39fc8c1c user.err MuxIO: ADC register 0x00000050 value 0000000000
Nov 11 22:52:19 Agent-20cd39fc8c1c user.err MuxIO: ADC register 0x00000054 value 0x0001c000
Nov 11 22:52:19 Agent-20cd39fc8c1c user.err MuxIO: ADC register 0x00000058 value 0000000000
Nov 11 22:52:19 Agent-20cd39fc8c1c user.err MuxIO: ADC register 0x0000005c value 0000000000
Nov 11 22:52:19 Agent-20cd39fc8c1c user.err MuxIO: ADC register 0x00000060 value 0x00000001
Nov 11 22:52:19 Agent-20cd39fc8c1c user.err MuxIO: ADC register 0x00000064 value 0000000000
Nov 11 22:52:19 Agent-20cd39fc8c1c user.err MuxIO: ADC register 0x00000068 value 0000000000
Nov 11 22:52:19 Agent-20cd39fc8c1c user.err MuxIO: ADC register 0x0000006c value 0000000000
Nov 11 22:52:19 Agent-20cd39fc8c1c user.err MuxIO: ADC register 0x00000070 value 0000000000
Nov 11 22:52:19 Agent-20cd39fc8c1c user.err MuxIO: ADC register 0x00000074 value 0000000000
Nov 11 22:52:19 Agent-20cd39fc8c1c user.err MuxIO: ADC register 0x00000078 value 0000000000
Nov 11 22:52:19 Agent-20cd39fc8c1c user.err MuxIO: ADC register 0x0000007c value 0000000000
Nov 11 22:52:19 Agent-20cd39fc8c1c user.err MuxIO: ADC register 0x00000080 value 0000000000
Nov 11 22:52:19 Agent-20cd39fc8c1c user.err MuxIO: ADC register 0x00000084 value 0000000000
Nov 11 22:52:19 Agent-20cd39fc8c1c user.err MuxIO: ADC register 0x00000088 value 0000000000
Nov 11 22:52:19 Agent-20cd39fc8c1c user.err MuxIO: ADC register 0x0000008c value 0000000000
Nov 11 22:52:19 Agent-20cd39fc8c1c user.err MuxIO: ADC register 0x00000090 value 0000000000
Nov 11 22:52:19 Agent-20cd39fc8c1c user.err MuxIO: ADC register 0x00000094 value 0000000000
Nov 11 22:52:19 Agent-20cd39fc8c1c user.err MuxIO: ADC register 0x00000098 value 0000000000
Nov 11 22:52:19 Agent-20cd39fc8c1c user.err MuxIO: ADC register 0x0000009c value 0000000000
Nov 11 22:52:19 Agent-20cd39fc8c1c user.err MuxIO: ADC register 0x000000a0 value 0000000000
Nov 11 22:52:19 Agent-20cd39fc8c1c user.err MuxIO: ADC register 0x000000a4 value 0x04000010
Nov 11 22:52:19 Agent-20cd39fc8c1c user.err MuxIO: ADC register 0x000000a8 value 0x00000098
Nov 11 22:52:19 Agent-20cd39fc8c1c user.err MuxIO: ADC register 0x000000ac value 0x04080010
Nov 11 22:52:19 Agent-20cd39fc8c1c user.err MuxIO: ADC register 0x000000b0 value 0x00000098
Nov 11 22:52:19 Agent-20cd39fc8c1c user.err MuxIO: ADC register 0x000000b4 value 0x04100010
Nov 11 22:52:19 Agent-20cd39fc8c1c user.err MuxIO: ADC register 0x000000b8 value 0x00000098
Nov 11 22:52:19 Agent-20cd39fc8c1c user.err MuxIO: ADC register 0x000000bc value 0x04180010
Nov 11 22:52:19 Agent-20cd39fc8c1c user.err MuxIO: ADC register 0x000000c0 value 0x00000098
Nov 11 22:52:19 Agent-20cd39fc8c1c user.err MuxIO: ADC register 0x000000c4 value 0x04200010
Nov 11 22:52:19 Agent-20cd39fc8c1c user.err MuxIO: ADC register 0x000000c8 value 0x00000098
Nov 11 22:52:19 Agent-20cd39fc8c1c user.err MuxIO: ADC register 0x000000cc value 0x04280010
Nov 11 22:52:19 Agent-20cd39fc8c1c user.err MuxIO: ADC register 0x000000d0 value 0x00000098
Nov 11 22:52:19 Agent-20cd39fc8c1c user.err MuxIO: ADC register 0x000000d4 value 0x04300010
Nov 11 22:52:19 Agent-20cd39fc8c1c user.err MuxIO: ADC register 0x000000d8 value 0x00000098
Nov 11 22:52:19 Agent-20cd39fc8c1c user.err MuxIO: ADC register 0x000000dc value 0x04380010
Nov 11 22:52:19 Agent-20cd39fc8c1c user.err MuxIO: ADC register 0x000000e0 value 0x00000098
Nov 11 22:52:19 Agent-20cd39fc8c1c user.err MuxIO: ADC register 0x000000e4 value 0000000000
Nov 11 22:52:19 Agent-20cd39fc8c1c user.err MuxIO: ADC register 0x000000e8 value 0000000000
Nov 11 22:52:19 Agent-20cd39fc8c1c user.err MuxIO: ADC register 0x000000ec value 0000000000
Nov 11 22:52:19 Agent-20cd39fc8c1c user.err MuxIO: ADC register 0x000000f0 value 0x00000004
Nov 11 22:52:19 Agent-20cd39fc8c1c user.err MuxIO: ADC register 0x000000f4 value 0000000000
Nov 11 22:52:19 Agent-20cd39fc8c1c user.err MuxIO: ADC register 0x000000f8 value 0000000000
Nov 11 22:52:19 Agent-20cd39fc8c1c user.err MuxIO: ADC register 0x00000100 value 0x000100e5
Nov 11 22:52:19 Agent-20cd39fc8c1c user.err MuxIO: ADC register 0x00000200 value 0x000808d7
  • Hi Michael,

    Kernel v3.8 is supported on http://beagleboard.org/Community/Forums . However can you describe in what situations you observe this issue? Have you checked if it happens with the TI distributed EZSDK?

  • Biser,

    I believe the actual event is caused from ESD.  However, we are able to lock up the ADC by simply writing a 1 to the Power_Down bit of the ADC CTRL_Register while leaving the Enable bit high.  This results in a FSM_BUSY in ADCSTAT.  There does not seem to be a way to recover from this scenario and it seems to closely mimic the issue that we are seeing with a select few systems in the field.  I understand that TI does not support the 3.8.13 kernel but my question is there anyway to recover the ADC from this state?  This does not seem to be a software issue but rather the ADC is getting in some locked state that is unrecoverable unless the board is restarted.  I have attempted to reset the ADC on a board that has a lockup by removing the enable bit updating the STEP_ENABLE and then enabling the ADC.  This resulted in the FIFO counts being cleared but the ADC did not run again and the FSM_BUSY bit remained in the ADCSTAT register.  I then set Power_Down and Disable and then Power_UP Enable but there was no change.  Is there any more information or is there something else that I should be doing to completely reset the ADC to remove FSM_BUSY?  Do you agree that I should be able to reset the ADC regardless of what software is running?  I am willing to bring up our hardware on the EZSDK and attempt to lockout the ADC in the same way.  The board I have been talking about though was not locked out by performing the Power_Down low Enable high but occurred on it its own.  Following is a dump of the registers when it occurred.  Why are there Pen_Events when the ADC is not configured for touchscreen?  Any help is greatly appreciated and thank you for responding.

    Unable to read from AIN 7
    ADC register 0000000000 value 0x47300001
    ADC register 0x00000010 value 0x0000000c
    ADC register 0x00000024 value 0x00000423
    ADC register 0x00000028 value 0000000000
    ADC register 0x0000002c value 0000000000
    ADC register 0x00000030 value 0000000000
    ADC register 0x00000034 value 0000000000
    ADC register 0x00000038 value 0000000000
    ADC register 0x0000003c value 0000000000
    ADC register 0x00000040 value 0x00000007
    ADC register 0x00000044 value 0x00000029
    ADC register 0x00000048 value 0000000000
    ADC register 0x0000004c value 0x00000007
    ADC register 0x00000050 value 0000000000
    ADC register 0x00000054 value 0x0001f800
    ADC register 0x00000058 value 0000000000
    ADC register 0x0000005c value 0000000000
    ADC register 0x00000060 value 0x00000001
    ADC register 0x00000064 value 0000000000
    ADC register 0x00000068 value 0000000000
    ADC register 0x0000006c value 0000000000
    ADC register 0x00000070 value 0000000000
    ADC register 0x00000074 value 0000000000
    ADC register 0x00000078 value 0000000000
    ADC register 0x0000007c value 0000000000
    ADC register 0x00000080 value 0000000000
    ADC register 0x00000084 value 0000000000
    ADC register 0x00000088 value 0000000000
    ADC register 0x0000008c value 0000000000
    ADC register 0x00000090 value 0000000000
    ADC register 0x00000094 value 0000000000
    ADC register 0x00000098 value 0000000000
    ADC register 0x0000009c value 0000000000
    ADC register 0x000000a0 value 0000000000
    ADC register 0x000000a4 value 0x04000010
    ADC register 0x000000a8 value 0x00000098
    ADC register 0x000000ac value 0x04080010
    ADC register 0x000000b0 value 0x00000098
    ADC register 0x000000b4 value 0x04100010
    ADC register 0x000000b8 value 0x00000098
    ADC register 0x000000bc value 0x04180010
    ADC register 0x000000c0 value 0x00000098
    ADC register 0x000000c4 value 0x04200010
    ADC register 0x000000c8 value 0x00000098
    ADC register 0x000000cc value 0x04280010
    ADC register 0x000000d0 value 0x00000098
    ADC register 0x000000d4 value 0x04300010
    ADC register 0x000000d8 value 0x00000098
    ADC register 0x000000dc value 0x04380010
    ADC register 0x000000e0 value 0x00000098
    ADC register 0x000000e4 value 0000000000
    ADC register 0x000000e8 value 0000000000
    ADC register 0x000000ec value 0000000000
    ADC register 0x000000f0 value 0x00000001
    ADC register 0x000000f4 value 0000000000
    ADC register 0x000000f8 value 0000000000
    ADC register 0x00000100 value 0x00070581
    ADC register 0x00000200 value 0x00080000

  • Thanks for the additional information Michael. I have forwarded this to the factory team. Feedback will be posted on this thread.

  • I have the hardware running on the latest TI distributed EZSDK and I am able to lockout the ADC manually using the previously described method.

  • Is there any word on this issue?

  • Nothing so far. I will ask again.

  • Here are some more logs of failures.  We are currently looking into integrating an external ADC just as others have done who are facing the same issue.  Since there is no response from TI I'm left to assume that one can

    A.) Lock up the ADC  on all TI AM335x processors via software and the only way to recover is via a hardware reset. 

    B.) This lockup mimics the behavior of an ESD event on the ADC and is unrecoverable without a hardware reset.

    Nov 18 15:28:45 MuxIO: Unable to read from AIN 3
    Nov 18 15:28:45 MuxIO: ADC register 0000000000 value 0x47300001
    Nov 18 15:28:45 MuxIO: ADC register 0x00000010 value 0x0000000c
    Nov 18 15:28:45 MuxIO: ADC register 0x00000024 value 0x00000423
    Nov 18 15:28:45 MuxIO: ADC register 0x00000028 value 0000000000
    Nov 18 15:28:45 MuxIO: ADC register 0x0000002c value 0000000000
    Nov 18 15:28:45 MuxIO: ADC register 0x00000030 value 0000000000
    Nov 18 15:28:45 MuxIO: ADC register 0x00000034 value 0000000000
    Nov 18 15:28:45 MuxIO: ADC register 0x00000038 value 0000000000
    Nov 18 15:28:45 MuxIO: ADC register 0x0000003c value 0000000000
    Nov 18 15:28:45 MuxIO: ADC register 0x00000040 value 0x00000007
    Nov 18 15:28:45 MuxIO: ADC register 0x00000044 value 0x00000028
    Nov 18 15:28:45 MuxIO: ADC register 0x00000048 value 0000000000
    Nov 18 15:28:45 MuxIO: ADC register 0x0000004c value 0x00000007
    Nov 18 15:28:45 MuxIO: ADC register 0x00000050 value 0000000000
    Nov 18 15:28:45 MuxIO: ADC register 0x00000054 value 0x0001fc00
    Nov 18 15:28:45 MuxIO: ADC register 0x00000058 value 0000000000
    Nov 18 15:28:45 MuxIO: ADC register 0x0000005c value 0000000000
    Nov 18 15:28:45 MuxIO: ADC register 0x00000060 value 0x00000001
    Nov 18 15:28:45 MuxIO: ADC register 0x00000064 value 0000000000
    Nov 18 15:28:45 MuxIO: ADC register 0x00000068 value 0000000000
    Nov 18 15:28:45 MuxIO: ADC register 0x0000006c value 0000000000
    Nov 18 15:28:45 MuxIO: ADC register 0x00000070 value 0000000000
    Nov 18 15:28:45 MuxIO: ADC register 0x00000074 value 0000000000
    Nov 18 15:28:45 MuxIO: ADC register 0x00000078 value 0000000000
    Nov 18 15:28:45 MuxIO: ADC register 0x0000007c value 0000000000
    Nov 18 15:28:45 MuxIO: ADC register 0x00000080 value 0000000000
    Nov 18 15:28:45 MuxIO: ADC register 0x00000084 value 0000000000
    Nov 18 15:28:45 MuxIO: ADC register 0x00000088 value 0000000000
    Nov 18 15:28:45 MuxIO: ADC register 0x0000008c value 0000000000
    Nov 18 15:28:45 MuxIO: ADC register 0x00000090 value 0000000000
    Nov 18 15:28:45 MuxIO: ADC register 0x00000094 value 0000000000
    Nov 18 15:28:45 MuxIO: ADC register 0x00000098 value 0000000000
    Nov 18 15:28:45 MuxIO: ADC register 0x0000009c value 0000000000
    Nov 18 15:28:45 MuxIO: ADC register 0x000000a0 value 0000000000
    Nov 18 15:28:45 MuxIO: ADC register 0x000000a4 value 0x04000010
    Nov 18 15:28:45 MuxIO: ADC register 0x000000a8 value 0x00000098
    Nov 18 15:28:45 MuxIO: ADC register 0x000000ac value 0x04080010
    Nov 18 15:28:45 MuxIO: ADC register 0x000000b0 value 0x00000098
    Nov 18 15:28:45 MuxIO: ADC register 0x000000b4 value 0x04100010
    Nov 18 15:28:45 MuxIO: ADC register 0x000000b8 value 0x00000098
    Nov 18 15:28:45 MuxIO: ADC register 0x000000bc value 0x04180010
    Nov 18 15:28:45 MuxIO: ADC register 0x000000c0 value 0x00000098
    Nov 18 15:28:45 MuxIO: ADC register 0x000000c4 value 0x04200010
    Nov 18 15:28:45 MuxIO: ADC register 0x000000c8 value 0x00000098
    Nov 18 15:28:45 MuxIO: ADC register 0x000000cc value 0x04280010
    Nov 18 15:28:45 MuxIO: ADC register 0x000000d0 value 0x00000098
    Nov 18 15:28:45 MuxIO: ADC register 0x000000d4 value 0x04300010
    Nov 18 15:28:45 MuxIO: ADC register 0x000000d8 value 0x00000098
    Nov 18 15:28:45 MuxIO: ADC register 0x000000dc value 0x04380010
    Nov 18 15:28:45 MuxIO: ADC register 0x000000e0 value 0x00000098
    Nov 18 15:28:45 MuxIO: ADC register 0x000000e4 value 0000000000
    Nov 18 15:28:45 MuxIO: ADC register 0x000000e8 value 0000000000
    Nov 18 15:28:45 MuxIO: ADC register 0x000000ec value 0000000000
    Nov 18 15:28:45 MuxIO: ADC register 0x000000f0 value 0000000000
    Nov 18 15:28:45 MuxIO: ADC register 0x000000f4 value 0000000000
    Nov 18 15:28:45 MuxIO: ADC register 0x000000f8 value 0000000000
    Nov 18 15:28:45 MuxIO: ADC register 0x00000100 value 0x0002049a
    Nov 18 15:28:45 MuxIO: ADC register 0x00000200 value 0x000808d2

    Nov 20 05:36:11 MuxIO: Unable to read from AIN 6
    Nov 20 05:36:11 MuxIO: ADC register 0000000000 value 0x47300001
    Nov 20 05:36:11 MuxIO: ADC register 0x00000010 value 0x0000000c
    Nov 20 05:36:11 MuxIO: ADC register 0x00000024 value 0x00000423
    Nov 20 05:36:11 MuxIO: ADC register 0x00000028 value 0000000000
    Nov 20 05:36:11 MuxIO: ADC register 0x0000002c value 0000000000
    Nov 20 05:36:11 MuxIO: ADC register 0x00000030 value 0000000000
    Nov 20 05:36:11 MuxIO: ADC register 0x00000034 value 0000000000
    Nov 20 05:36:11 MuxIO: ADC register 0x00000038 value 0000000000
    Nov 20 05:36:11 MuxIO: ADC register 0x0000003c value 0000000000
    Nov 20 05:36:11 MuxIO: ADC register 0x00000040 value 0x00000007
    Nov 20 05:36:11 MuxIO: ADC register 0x00000044 value 0x0000002a
    Nov 20 05:36:11 MuxIO: ADC register 0x00000048 value 0000000000
    Nov 20 05:36:11 MuxIO: ADC register 0x0000004c value 0x00000007
    Nov 20 05:36:11 MuxIO: ADC register 0x00000050 value 0000000000
    Nov 20 05:36:11 MuxIO: ADC register 0x00000054 value 0x0001f000
    Nov 20 05:36:11 MuxIO: ADC register 0x00000058 value 0000000000
    Nov 20 05:36:11 MuxIO: ADC register 0x0000005c value 0000000000
    Nov 20 05:36:11 MuxIO: ADC register 0x00000060 value 0x00000001
    Nov 20 05:36:11 MuxIO: ADC register 0x00000064 value 0000000000
    Nov 20 05:36:11 MuxIO: ADC register 0x00000068 value 0000000000
    Nov 20 05:36:11 MuxIO: ADC register 0x0000006c value 0000000000
    Nov 20 05:36:11 MuxIO: ADC register 0x00000070 value 0000000000
    Nov 20 05:36:11 MuxIO: ADC register 0x00000074 value 0000000000
    Nov 20 05:36:11 MuxIO: ADC register 0x00000078 value 0000000000
    Nov 20 05:36:11 MuxIO: ADC register 0x0000007c value 0000000000
    Nov 20 05:36:11 MuxIO: ADC register 0x00000080 value 0000000000
    Nov 20 05:36:11 MuxIO: ADC register 0x00000084 value 0000000000
    Nov 20 05:36:11 MuxIO: ADC register 0x00000088 value 0000000000
    Nov 20 05:36:11 MuxIO: ADC register 0x0000008c value 0000000000
    Nov 20 05:36:11 MuxIO: ADC register 0x00000090 value 0000000000
    Nov 20 05:36:11 MuxIO: ADC register 0x00000094 value 0000000000
    Nov 20 05:36:11 MuxIO: ADC register 0x00000098 value 0000000000
    Nov 20 05:36:11 MuxIO: ADC register 0x0000009c value 0000000000
    Nov 20 05:36:11 MuxIO: ADC register 0x000000a0 value 0000000000
    Nov 20 05:36:11 MuxIO: ADC register 0x000000a4 value 0x04000010
    Nov 20 05:36:11 MuxIO: ADC register 0x000000a8 value 0x00000098
    Nov 20 05:36:11 MuxIO: ADC register 0x000000ac value 0x04080010
    Nov 20 05:36:11 MuxIO: ADC register 0x000000b0 value 0x00000098
    Nov 20 05:36:11 MuxIO: ADC register 0x000000b4 value 0x04100010
    Nov 20 05:36:11 MuxIO: ADC register 0x000000b8 value 0x00000098
    Nov 20 05:36:11 MuxIO: ADC register 0x000000bc value 0x04180010
    Nov 20 05:36:11 MuxIO: ADC register 0x000000c0 value 0x00000098
    Nov 20 05:36:11 MuxIO: ADC register 0x000000c4 value 0x04200010
    Nov 20 05:36:11 MuxIO: ADC register 0x000000c8 value 0x00000098
    Nov 20 05:36:11 MuxIO: ADC register 0x000000cc value 0x04280010
    Nov 20 05:36:11 MuxIO: ADC register 0x000000d0 value 0x00000098
    Nov 20 05:36:11 MuxIO: ADC register 0x000000d4 value 0x04300010
    Nov 20 05:36:11 MuxIO: ADC register 0x000000d8 value 0x00000098
    Nov 20 05:36:11 MuxIO: ADC register 0x000000dc value 0x04380010
    Nov 20 05:36:11 MuxIO: ADC register 0x000000e0 value 0x00000098
    Nov 20 05:36:11 MuxIO: ADC register 0x000000e4 value 0000000000
    Nov 20 05:36:11 MuxIO: ADC register 0x000000e8 value 0000000000
    Nov 20 05:36:11 MuxIO: ADC register 0x000000ec value 0000000000
    Nov 20 05:36:11 MuxIO: ADC register 0x000000f0 value 0x00000002
    Nov 20 05:36:11 MuxIO: ADC register 0x000000f4 value 0000000000
    Nov 20 05:36:11 MuxIO: ADC register 0x000000f8 value 0000000000
    Nov 20 05:36:11 MuxIO: ADC register 0x00000100 value 0x0002049a
    Nov 20 05:36:11 MuxIO: ADC register 0x00000200 value 0x000808d3

    Nov 25 00:39:57 MuxIO: ADC register 0000000000 value 0x47300001
    Nov 25 00:39:57 MuxIO: ADC register 0x00000010 value 0x0000000c
    Nov 25 00:39:57 MuxIO: ADC register 0x00000024 value 0x00000423
    Nov 25 00:39:57 MuxIO: ADC register 0x00000028 value 0000000000
    Nov 25 00:39:57 MuxIO: ADC register 0x0000002c value 0000000000
    Nov 25 00:39:57 MuxIO: ADC register 0x00000030 value 0000000000
    Nov 25 00:39:57 MuxIO: ADC register 0x00000034 value 0000000000
    Nov 25 00:39:57 MuxIO: ADC register 0x00000038 value 0000000000
    Nov 25 00:39:57 MuxIO: ADC register 0x0000003c value 0000000000
    Nov 25 00:39:57 MuxIO: ADC register 0x00000040 value 0x00000007
    Nov 25 00:39:57 MuxIO: ADC register 0x00000044 value 0x0000002a
    Nov 25 00:39:57 MuxIO: ADC register 0x00000048 value 0000000000
    Nov 25 00:39:57 MuxIO: ADC register 0x0000004c value 0x00000007
    Nov 25 00:39:57 MuxIO: ADC register 0x00000050 value 0000000000
    Nov 25 00:39:57 MuxIO: ADC register 0x00000054 value 0x0001f000
    Nov 25 00:39:57 MuxIO: ADC register 0x00000058 value 0000000000
    Nov 25 00:39:57 MuxIO: ADC register 0x0000005c value 0000000000
    Nov 25 00:39:57 MuxIO: ADC register 0x00000060 value 0x00000001
    Nov 25 00:39:57 MuxIO: ADC register 0x00000064 value 0000000000
    Nov 25 00:39:57 MuxIO: ADC register 0x00000068 value 0000000000
    Nov 25 00:39:57 MuxIO: ADC register 0x0000006c value 0000000000
    Nov 25 00:39:57 MuxIO: ADC register 0x00000070 value 0000000000
    Nov 25 00:39:57 MuxIO: ADC register 0x00000074 value 0000000000
    Nov 25 00:39:57 MuxIO: ADC register 0x00000078 value 0000000000
    Nov 25 00:39:57 MuxIO: ADC register 0x0000007c value 0000000000
    Nov 25 00:39:57 MuxIO: ADC register 0x00000080 value 0000000000
    Nov 25 00:39:57 MuxIO: ADC register 0x00000084 value 0000000000
    Nov 25 00:39:57 MuxIO: ADC register 0x00000088 value 0000000000
    Nov 25 00:39:57 MuxIO: ADC register 0x0000008c value 0000000000
    Nov 25 00:39:57 MuxIO: ADC register 0x00000090 value 0000000000
    Nov 25 00:39:57 MuxIO: ADC register 0x00000094 value 0000000000
    Nov 25 00:39:57 MuxIO: ADC register 0x00000098 value 0000000000
    Nov 25 00:39:57 MuxIO: ADC register 0x0000009c value 0000000000
    Nov 25 00:39:57 MuxIO: ADC register 0x000000a0 value 0000000000
    Nov 25 00:39:57 MuxIO: ADC register 0x000000a4 value 0x04000010
    Nov 25 00:39:57 MuxIO: ADC register 0x000000a8 value 0x00000098
    Nov 25 00:39:57 MuxIO: ADC register 0x000000ac value 0x04080010
    Nov 25 00:39:57 MuxIO: ADC register 0x000000b0 value 0x00000098
    Nov 25 00:39:57 MuxIO: ADC register 0x000000b4 value 0x04100010
    Nov 25 00:39:57 MuxIO: ADC register 0x000000b8 value 0x00000098
    Nov 25 00:39:57 MuxIO: ADC register 0x000000bc value 0x04180010
    Nov 25 00:39:57 MuxIO: ADC register 0x000000c0 value 0x00000098
    Nov 25 00:39:57 MuxIO: ADC register 0x000000c4 value 0x04200010
    Nov 25 00:39:57 MuxIO: ADC register 0x000000c8 value 0x00000098
    Nov 25 00:39:57 MuxIO: ADC register 0x000000cc value 0x04280010
    Nov 25 00:39:57 MuxIO: ADC register 0x000000d0 value 0x00000098
    Nov 25 00:39:57 MuxIO: ADC register 0x000000d4 value 0x04300010
    Nov 25 00:39:57 MuxIO: ADC register 0x000000d8 value 0x00000098
    Nov 25 00:39:57 MuxIO: ADC register 0x000000dc value 0x04380010
    Nov 25 00:39:57 MuxIO: ADC register 0x000000e0 value 0x00000098
    Nov 25 00:39:57 MuxIO: ADC register 0x000000e4 value 0000000000
    Nov 25 00:39:57 MuxIO: ADC register 0x000000e8 value 0000000000
    Nov 25 00:39:57 MuxIO: ADC register 0x000000ec value 0000000000
    Nov 25 00:39:57 MuxIO: ADC register 0x000000f0 value 0x00000002
    Nov 25 00:39:57 MuxIO: ADC register 0x000000f4 value 0000000000
    Nov 25 00:39:57 MuxIO: ADC register 0x000000f8 value 0000000000
    Nov 25 00:39:57 MuxIO: ADC register 0x00000100 value 0x00020492
    Nov 25 00:39:57 MuxIO: ADC register 0x00000200 value 0x000808d2

    Dec  2 04:13:04 MuxIO: Unable to read from AIN 5
    Dec  2 04:13:04 MuxIO: ADC register 0000000000 value 0x47300001
    Dec  2 04:13:04 MuxIO: ADC register 0x00000010 value 0x0000000c
    Dec  2 04:13:04 MuxIO: ADC register 0x00000024 value 0x00000423
    Dec  2 04:13:04 MuxIO: ADC register 0x00000028 value 0000000000
    Dec  2 04:13:04 MuxIO: ADC register 0x0000002c value 0000000000
    Dec  2 04:13:04 MuxIO: ADC register 0x00000030 value 0000000000
    Dec  2 04:13:04 MuxIO: ADC register 0x00000034 value 0000000000
    Dec  2 04:13:04 MuxIO: ADC register 0x00000038 value 0000000000
    Dec  2 04:13:04 MuxIO: ADC register 0x0000003c value 0000000000
    Dec  2 04:13:04 MuxIO: ADC register 0x00000040 value 0x00000007
    Dec  2 04:13:04 MuxIO: ADC register 0x00000044 value 0x0000002a
    Dec  2 04:13:04 MuxIO: ADC register 0x00000048 value 0000000000
    Dec  2 04:13:04 MuxIO: ADC register 0x0000004c value 0x00000007
    Dec  2 04:13:04 MuxIO: ADC register 0x00000050 value 0000000000
    Dec  2 04:13:04 MuxIO: ADC register 0x00000054 value 0x0001f000
    Dec  2 04:13:04 MuxIO: ADC register 0x00000058 value 0000000000
    Dec  2 04:13:04 MuxIO: ADC register 0x0000005c value 0000000000
    Dec  2 04:13:04 MuxIO: ADC register 0x00000060 value 0x00000001
    Dec  2 04:13:04 MuxIO: ADC register 0x00000064 value 0000000000
    Dec  2 04:13:04 MuxIO: ADC register 0x00000068 value 0000000000
    Dec  2 04:13:04 MuxIO: ADC register 0x0000006c value 0000000000
    Dec  2 04:13:04 MuxIO: ADC register 0x00000070 value 0000000000
    Dec  2 04:13:04 MuxIO: ADC register 0x00000074 value 0000000000
    Dec  2 04:13:04 MuxIO: ADC register 0x00000078 value 0000000000
    Dec  2 04:13:04 MuxIO: ADC register 0x0000007c value 0000000000
    Dec  2 04:13:04 MuxIO: ADC register 0x00000080 value 0000000000
    Dec  2 04:13:04 MuxIO: ADC register 0x00000084 value 0000000000
    Dec  2 04:13:04 MuxIO: ADC register 0x00000088 value 0000000000
    Dec  2 04:13:04 MuxIO: ADC register 0x0000008c value 0000000000
    Dec  2 04:13:04 MuxIO: ADC register 0x00000090 value 0000000000
    Dec  2 04:13:04 MuxIO: ADC register 0x00000094 value 0000000000
    Dec  2 04:13:04 MuxIO: ADC register 0x00000098 value 0000000000
    Dec  2 04:13:04 MuxIO: ADC register 0x0000009c value 0000000000
    Dec  2 04:13:04 MuxIO: ADC register 0x000000a0 value 0000000000
    Dec  2 04:13:04 MuxIO: ADC register 0x000000a4 value 0x04000010
    Dec  2 04:13:04 MuxIO: ADC register 0x000000a8 value 0x00000098
    Dec  2 04:13:04 MuxIO: ADC register 0x000000ac value 0x04080010
    Dec  2 04:13:04 MuxIO: ADC register 0x000000b0 value 0x00000098
    Dec  2 04:13:04 MuxIO: ADC register 0x000000b4 value 0x04100010
    Dec  2 04:13:04 MuxIO: ADC register 0x000000b8 value 0x00000098
    Dec  2 04:13:04 MuxIO: ADC register 0x000000bc value 0x04180010
    Dec  2 04:13:04 MuxIO: ADC register 0x000000c0 value 0x00000098
    Dec  2 04:13:04 MuxIO: ADC register 0x000000c4 value 0x04200010
    Dec  2 04:13:04 MuxIO: ADC register 0x000000c8 value 0x00000098
    Dec  2 04:13:04 MuxIO: ADC register 0x000000cc value 0x04280010
    Dec  2 04:13:04 MuxIO: ADC register 0x000000d0 value 0x00000098
    Dec  2 04:13:04 MuxIO: ADC register 0x000000d4 value 0x04300010
    Dec  2 04:13:04 MuxIO: ADC register 0x000000d8 value 0x00000098
    Dec  2 04:13:04 MuxIO: ADC register 0x000000dc value 0x04380010
    Dec  2 04:13:04 MuxIO: ADC register 0x000000e0 value 0x00000098
    Dec  2 04:13:04 MuxIO: ADC register 0x000000e4 value 0000000000
    Dec  2 04:13:04 MuxIO: ADC register 0x000000e8 value 0000000000
    Dec  2 04:13:04 MuxIO: ADC register 0x000000ec value 0000000000
    Dec  2 04:13:04 MuxIO: ADC register 0x000000f0 value 0x00000002
    Dec  2 04:13:04 MuxIO: ADC register 0x000000f4 value 0000000000
    Dec  2 04:13:04 MuxIO: ADC register 0x000000f8 value 0000000000
    Dec  2 04:13:04 MuxIO: ADC register 0x00000100 value 0x00020492
    Dec  2 04:13:04 MuxIO: ADC register 0x00000200 value 0x000808d3

    Dec  2 11:32:58 MuxIO: Unable to read from AIN 5
    Dec  2 11:32:58 MuxIO: ADC register 0000000000 value 0x47300001
    Dec  2 11:32:58 MuxIO: ADC register 0x00000010 value 0x0000000c
    Dec  2 11:32:58 MuxIO: ADC register 0x00000024 value 0x00000423
    Dec  2 11:32:58 MuxIO: ADC register 0x00000028 value 0000000000
    Dec  2 11:32:58 MuxIO: ADC register 0x0000002c value 0000000000
    Dec  2 11:32:58 MuxIO: ADC register 0x00000030 value 0000000000
    Dec  2 11:32:58 MuxIO: ADC register 0x00000034 value 0000000000
    Dec  2 11:32:58 MuxIO: ADC register 0x00000038 value 0000000000
    Dec  2 11:32:58 MuxIO: ADC register 0x0000003c value 0000000000
    Dec  2 11:32:58 MuxIO: ADC register 0x00000040 value 0x00000007
    Dec  2 11:32:58 MuxIO: ADC register 0x00000044 value 0x0000002e
    Dec  2 11:32:58 MuxIO: ADC register 0x00000048 value 0000000000
    Dec  2 11:32:58 MuxIO: ADC register 0x0000004c value 0x00000007
    Dec  2 11:32:58 MuxIO: ADC register 0x00000050 value 0000000000
    Dec  2 11:32:58 MuxIO: ADC register 0x00000054 value 0x00010000
    Dec  2 11:32:58 MuxIO: ADC register 0x00000058 value 0000000000
    Dec  2 11:32:58 MuxIO: ADC register 0x0000005c value 0000000000
    Dec  2 11:32:58 MuxIO: ADC register 0x00000060 value 0x00000001
    Dec  2 11:32:58 MuxIO: ADC register 0x00000064 value 0000000000
    Dec  2 11:32:58 MuxIO: ADC register 0x00000068 value 0000000000
    Dec  2 11:32:58 MuxIO: ADC register 0x0000006c value 0000000000
    Dec  2 11:32:58 MuxIO: ADC register 0x00000070 value 0000000000
    Dec  2 11:32:58 MuxIO: ADC register 0x00000074 value 0000000000
    Dec  2 11:32:58 MuxIO: ADC register 0x00000078 value 0000000000
    Dec  2 11:32:58 MuxIO: ADC register 0x0000007c value 0000000000
    Dec  2 11:32:58 MuxIO: ADC register 0x00000080 value 0000000000
    Dec  2 11:32:58 MuxIO: ADC register 0x00000084 value 0000000000
    Dec  2 11:32:58 MuxIO: ADC register 0x00000088 value 0000000000
    Dec  2 11:32:58 MuxIO: ADC register 0x0000008c value 0000000000
    Dec  2 11:32:58 MuxIO: ADC register 0x00000090 value 0000000000
    Dec  2 11:32:58 MuxIO: ADC register 0x00000094 value 0000000000
    Dec  2 11:32:58 MuxIO: ADC register 0x00000098 value 0000000000
    Dec  2 11:32:58 MuxIO: ADC register 0x0000009c value 0000000000
    Dec  2 11:32:58 MuxIO: ADC register 0x000000a0 value 0000000000
    Dec  2 11:32:58 MuxIO: ADC register 0x000000a4 value 0x04000010
    Dec  2 11:32:58 MuxIO: ADC register 0x000000a8 value 0x00000098
    Dec  2 11:32:58 MuxIO: ADC register 0x000000ac value 0x04080010
    Dec  2 11:32:58 MuxIO: ADC register 0x000000b0 value 0x00000098
    Dec  2 11:32:58 MuxIO: ADC register 0x000000b4 value 0x04100010
    Dec  2 11:32:58 MuxIO: ADC register 0x000000b8 value 0x00000098
    Dec  2 11:32:58 MuxIO: ADC register 0x000000bc value 0x04180010
    Dec  2 11:32:58 MuxIO: ADC register 0x000000c0 value 0x00000098
    Dec  2 11:32:58 MuxIO: ADC register 0x000000c4 value 0x04200010
    Dec  2 11:32:58 MuxIO: ADC register 0x000000c8 value 0x00000098
    Dec  2 11:32:58 MuxIO: ADC register 0x000000cc value 0x04280010
    Dec  2 11:32:58 MuxIO: ADC register 0x000000d0 value 0x00000098
    Dec  2 11:32:58 MuxIO: ADC register 0x000000d4 value 0x04300010
    Dec  2 11:32:58 MuxIO: ADC register 0x000000d8 value 0x00000098
    Dec  2 11:32:58 MuxIO: ADC register 0x000000dc value 0x04380010
    Dec  2 11:32:58 MuxIO: ADC register 0x000000e0 value 0x00000098
    Dec  2 11:32:58 MuxIO: ADC register 0x000000e4 value 0000000000
    Dec  2 11:32:58 MuxIO: ADC register 0x000000e8 value 0000000000
    Dec  2 11:32:58 MuxIO: ADC register 0x000000ec value 0000000000
    Dec  2 11:32:58 MuxIO: ADC register 0x000000f0 value 0x00000006
    Dec  2 11:32:58 MuxIO: ADC register 0x000000f4 value 0000000000
    Dec  2 11:32:58 MuxIO: ADC register 0x000000f8 value 0000000000
    Dec  2 11:32:58 MuxIO: ADC register 0x00000100 value 0x00020492
    Dec  2 11:32:58 MuxIO: ADC register 0x00000200 value 0x000808d3

    Dec  3 14:51:40 MuxIO: Unable to read from AIN 6
    Dec  3 14:51:40 MuxIO: ADC register 0000000000 value 0x47300001
    Dec  3 14:51:40 MuxIO: ADC register 0x00000010 value 0x0000000c
    Dec  3 14:51:40 MuxIO: ADC register 0x00000024 value 0x00000423
    Dec  3 14:51:40 MuxIO: ADC register 0x00000028 value 0000000000
    Dec  3 14:51:40 MuxIO: ADC register 0x0000002c value 0000000000
    Dec  3 14:51:40 MuxIO: ADC register 0x00000030 value 0000000000
    Dec  3 14:51:40 MuxIO: ADC register 0x00000034 value 0000000000
    Dec  3 14:51:40 MuxIO: ADC register 0x00000038 value 0000000000
    Dec  3 14:51:40 MuxIO: ADC register 0x0000003c value 0000000000
    Dec  3 14:51:40 MuxIO: ADC register 0x00000040 value 0x00000007
    Dec  3 14:51:40 MuxIO: ADC register 0x00000044 value 0x0000002d
    Dec  3 14:51:40 MuxIO: ADC register 0x00000048 value 0000000000
    Dec  3 14:51:40 MuxIO: ADC register 0x0000004c value 0x00000007
    Dec  3 14:51:40 MuxIO: ADC register 0x00000050 value 0000000000
    Dec  3 14:51:40 MuxIO: ADC register 0x00000054 value 0x00018000
    Dec  3 14:51:40 MuxIO: ADC register 0x00000058 value 0000000000
    Dec  3 14:51:40 MuxIO: ADC register 0x0000005c value 0000000000
    Dec  3 14:51:40 MuxIO: ADC register 0x00000060 value 0x00000001
    Dec  3 14:51:40 MuxIO: ADC register 0x00000064 value 0000000000
    Dec  3 14:51:40 MuxIO: ADC register 0x00000068 value 0000000000
    Dec  3 14:51:40 MuxIO: ADC register 0x0000006c value 0000000000
    Dec  3 14:51:40 MuxIO: ADC register 0x00000070 value 0000000000
    Dec  3 14:51:40 MuxIO: ADC register 0x00000074 value 0000000000
    Dec  3 14:51:40 MuxIO: ADC register 0x00000078 value 0000000000
    Dec  3 14:51:40 MuxIO: ADC register 0x0000007c value 0000000000
    Dec  3 14:51:40 MuxIO: ADC register 0x00000080 value 0000000000
    Dec  3 14:51:40 MuxIO: ADC register 0x00000084 value 0000000000
    Dec  3 14:51:40 MuxIO: ADC register 0x00000088 value 0000000000
    Dec  3 14:51:40 MuxIO: ADC register 0x0000008c value 0000000000
    Dec  3 14:51:40 MuxIO: ADC register 0x00000090 value 0000000000
    Dec  3 14:51:40 MuxIO: ADC register 0x00000094 value 0000000000
    Dec  3 14:51:40 MuxIO: ADC register 0x00000098 value 0000000000
    Dec  3 14:51:40 MuxIO: ADC register 0x0000009c value 0000000000
    Dec  3 14:51:40 MuxIO: ADC register 0x000000a0 value 0000000000
    Dec  3 14:51:40 MuxIO: ADC register 0x000000a4 value 0x04000010
    Dec  3 14:51:40 MuxIO: ADC register 0x000000a8 value 0x00000098
    Dec  3 14:51:40 MuxIO: ADC register 0x000000ac value 0x04080010
    Dec  3 14:51:40 MuxIO: ADC register 0x000000b0 value 0x00000098
    Dec  3 14:51:40 MuxIO: ADC register 0x000000b4 value 0x04100010
    Dec  3 14:51:40 MuxIO: ADC register 0x000000b8 value 0x00000098
    Dec  3 14:51:40 MuxIO: ADC register 0x000000bc value 0x04180010
    Dec  3 14:51:40 MuxIO: ADC register 0x000000c0 value 0x00000098
    Dec  3 14:51:40 MuxIO: ADC register 0x000000c4 value 0x04200010
    Dec  3 14:51:40 MuxIO: ADC register 0x000000c8 value 0x00000098
    Dec  3 14:51:40 MuxIO: ADC register 0x000000cc value 0x04280010
    Dec  3 14:51:40 MuxIO: ADC register 0x000000d0 value 0x00000098
    Dec  3 14:51:40 MuxIO: ADC register 0x000000d4 value 0x04300010
    Dec  3 14:51:40 MuxIO: ADC register 0x000000d8 value 0x00000098
    Dec  3 14:51:40 MuxIO: ADC register 0x000000dc value 0x04380010
    Dec  3 14:51:40 MuxIO: ADC register 0x000000e0 value 0x00000098
    Dec  3 14:51:40 MuxIO: ADC register 0x000000e4 value 0000000000
    Dec  3 14:51:40 MuxIO: ADC register 0x000000e8 value 0000000000
    Dec  3 14:51:40 MuxIO: ADC register 0x000000ec value 0000000000
    Dec  3 14:51:40 MuxIO: ADC register 0x000000f0 value 0x00000005
    Dec  3 14:51:40 MuxIO: ADC register 0x000000f4 value 0000000000
    Dec  3 14:51:40 MuxIO: ADC register 0x000000f8 value 0000000000
    Dec  3 14:51:40 MuxIO: ADC register 0x00000100 value 0x00020492
    Dec  3 14:51:40 MuxIO: ADC register 0x00000200 value 0x000808d2

  • This issue is under investigation by the factory team. Feedback will be posted on this thread when available.

  • The finite state machine (FSM) in TSC_ADC_SS sends a start of conversion (SOC) signal to the analog front end (AFE) which starts a conversion. When the AFE has completed the conversion it returns an end of conversion (EOC) signal to indicate the conversion is complete. The FSM will never receive another EOC from the AFE after the Power_Down bit is set because this turns off the AFE. If you do this while the FSM is still running, it will hang waiting on EOC from the AFE. That is why the description for Power_Down = 1 says “the tsc_adc_ss enable (bit 0) should also be set to off” So your observation is expected when you perform this sequence.

    It is not clear how the ESD event causes a similar result. If the ESD event were coupling into the device in such a way the SOC or EOC signals are being masked, the result would look similar to sequence discussed above. If this is the case, you will need to explore how the ESD noise is coupled into the device and modify your system to eliminate or filter the noise. We experienced a similar issue on another TI device once and determined the issue was caused when a piece of metal mounted to the PCB assembly was not properly connected to ground and the metal was building up a charge and creating an ESD event very close to the device. The solution was to ground this piece of metal.

    I would also like to explore another possibility. Have you read Advisory 1.0.30 in the AM335x Silicon Errata? This advisory describes how noise can couple into the crystal circuit and generate glitches on the internal reference clock. The ADC_CLK going into TSC_ADC_SS is sourced from OSC0. Are you using a crystal circuit or an LVCMOS clock source to provide a reference clock to OSC0? If you are using a crystal circuit, are the crystal circuit component grounds connected to the nearest PCB digital ground? If not, can you modify your board and see if this helps. If you are using a crystal circuit, can you temporary remove the crystal circuit components and use a 1.8 volt LVCMOS oscillator to source OSC0 and see if this helps?

    Regards,
    Paul
  • The same ESD issue happen on both our board(am3354+linux-3.12.10) and TI's EVM. Furthermore, ESD event can not only lockup TSC, but also lock out it if the static discharge is keeping for a while. Just as Michael's description, ESD always generates HW_Pen_Event which can trigger interrupt routine. If ADC conversion is not started(REG_SE=0), FSM can not be locked up by ESD which means ESD locks FSM only when it is working.

    I find another issue with following method to do TSC adc:

    1. HW pen-down is used as interrupt only.
    2. isr disable pen-ctrl, and start ad sequencer with SW enabled mode.
    3. after ad sequencer comleted, wait next pen-down by re-enable pen-ctrl.
    4. pen-up is generated by a timeout timer.
    5. ad sequencer is consist of 5-point X + 5-point Y + 2-point Z(optional)

    If the sequencer contains z-pressure acqusition(YPPSW + XNNSW), then pen-down event is always available no matter if the screen is touched or not. This issue can not be recovered unless system reset which is similar with ESD event. If the sequencer only contains X, Y data acquisition, everything is fine. Furthermore the tsc driver with 10-point sequencer behave much better than that with 12-point in ESD testing.

    Is it possible that there is a way which can work arround the bug in TSC hardware?

    BR
    Cheng Shi