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.

tsc2013 touch controller

Other Parts Discussed in Thread: TSC2013-Q1, TSC2013EVM

Hi,

I acquired the linux driver and the manual for this device but the manual and driver code poses some confusion to me.

  1. The controller supports 2 scan modes. The driver uses scan conversion mode 0 ( C3:0 = 0000). I was able to get this to work and can retrieve the scan coordinates properly. But there is an alternative scan mode, conversion mode 1 (C3:0 = 0001)  which puts the scan data results into only 2 registers (IX, IY). I’m not clear as to why you would use one scan mode over the other (C3:0 = 0001)?
  2. I tried to use conversion mode 1 because it takes less time to get the coordinates from the controller. But the coordinate values in IX and IY never change. I'm assuming the register addresses for IX and IY are 4 and 5 respectively. I changed the conversion mode to C3:0 = 0001, and I access registers 4 and 5 to retrieve the X,Y coordinates. Is there something else I should be doing or am I misunderstanding something?
  3. The driver has code for supporting 1 and 2 finger touches but the code is unintelligible. Where did this code come from and is there better code that is easier to understand somewhere that I can use?

/carl h.

  • Hi,
    What is your processor and linux kernel version ?
  • Strange question. What difference does it make what processor and linux version I'm using? My questions are about how the tsc2013 works.
  • Hi Carl,

    I acquired the linux driver and the manual for this device but the manual and driver code poses some confusion to me.

    The driver has code for supporting 1 and 2 finger touches but the code is unintelligible. Where did this code come from and is there better code that is easier to understand somewhere that I can use?

    Could you please provide the link for linux driver and manual that you got.
  • Hi Carl,
    I moved your post to touch controller forum.
    Also I requested support from the linux TSC2013 code driver developer, you would get answers shortly.
    Thanks for your patience.

  • See my comments below:
    1) The controller supports 2 scan modes. The driver uses scan conversion mode 0 ( C3:0 = 0000). I was able to get this to work and can retrieve the scan coordinates properly. But there is an alternative scan mode, conversion mode 1 (C3:0 = 0001) which puts the scan data results into only 2 registers (IX, IY). I’m not clear as to why you would use one scan mode over the other (C3:0 = 0001)?
    2) I tried to use conversion mode 1 because it takes less time to get the coordinates from the controller. But the coordinate values in IX and IY never change. I'm assuming the register addresses for IX and IY are 4 and 5 respectively. I changed the conversion mode to C3:0 = 0001, and I access registers 4 and 5 to retrieve the X,Y coordinates. Is there something else I should be doing or am I misunderstanding something?
    Comment : If the conversion mode 1 is used, you could only get IX and IY data from the TSC2013-Q1, which is not sufficient to calculate precise finger X&Y coordinates. As far as I know, the conversion mode 0 is the mode that should be used for most applications.

    3) The driver has code for supporting 1 and 2 finger touches but the code is unintelligible. Where did this code come from and is there better code that is easier to understand somewhere that I can use?
    Comment: That piece of code is mainly borrowed from here : www.spinics.net/.../msg31969.html.

    Andy
  • Thanks Andy,

    However I really would like to see for myself how well Mode 1 works. Mode 0 chews up a lot of real time because of all the data that needs to be pulled over the I2C bus (X1,X2,IX,Y1,Y2,IY,Z1,Z2). This is a concern for our application. Our processor is not terribly fast. Mode 1 would be preferred because there's not as much data required to be transferred. But as I said the IX and IY register values never change.

    As I said before I changed the conversion mode to 1, set the register address to point to the IX register, and then I retrieved the IX and IY registers. But the data never changes. Is there something else I have to do to get Mode 1 to work?

    Or is there a more efficient way to get the minimal XY data I need in Mode 0?

    /carl h.
  • Hi Carl,

    Sorry for the late response. I will try to give you some comments by tomorrow.

    Andy
  • Hi Carl,

    In my opinion, (X1,X2,IX,Y1,Y2,IY) is the minimal set of data for a dual touch application. In Mode 0, you don't have to read all the (X1,X2,IX,Y1,Y2,IY,Z1,Z2) from the TSC2013-Q1. I would still suggest you use Mode 0 and just read (X1,X2,IX,Y1,Y2,IY).

    Andy
  • I thank you for your opinion but considering our real-time constraints I would still like to use Mode 1. Also reading 6 registers rather than 8 is not buying us a lot. Reading 2 registers rather than 8 would buy us a lot. We are not planning to use 2 finger gesturing. So therefore reading X1,X2,IX,Y1,Y2,IY is way more overhead than is necessary and affects our real-time constraints? Can you please tell me what I'm doing wrong for Mode 1. Does it not work?

    /carl

  • Hi Carl,

    First, I quite believe the Mode 1 should work. However, I have been on some business travels aboard for the past 3 weeks, so I am not able to verify your issue using a TSC2013EVM board.

    In addition, could you tell me your purpose of using TSC2013-Q1 in your project? This device is a touch controller for the applications that requires 2-finger gestures.  You mentioned that "We are not planning to use 2 finger gesturing".  Does that mean you only need a single touch controller?

    Besides, what will you do with (IX,IY) without (X1,X2,Y1,Y2)?  I don't think you could get any coordinates from (IX,IY).

    Andy