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.

CCS/PROCESSOR-SDK-AM437X: EnDat multi channel issue

Part Number: PROCESSOR-SDK-AM437X


Tool/software: Code Composer Studio

Hi 

I am developing 3 channel EnDat2.2 feedback function on AM437x IDK.

I use "endat diagnostic" example project from PRU-ICSS-INDUSTRIAL-DRIVES with 1 ECN1325 and 2 ERM2410 for testing multi channel function.

The software enviroment:

PRU-ICSS-Industrial_Drives: 01.00.02.03

Compiler: GNU v6.3.1(Linaro)

SYS/BIOS: 6.73.00.12

XDCtool: 3.50.07.20

My problem is, the ECN1325 encdoer can't be detected when I use multi-channel configuration.

Here is the waveform of startup from AM437x IDK channel 0

Ch1: CLK; Ch2: OUT; Ch3: OUTEN; Ch4: IN

ECN1325 with single channel configuration (works well)

ECN1325 with multi channel configuration (unable to detect encoder no matter which channel is connect)

It seems like there is a strange clock before transmission begin.

Can you tell me how to fix this problem?

Many thanks

Yi-Lin

  • Hi,
    You query has beem assigned to a TI engineer. Please note that response may be delayed due to Christmas and New Year holidays.
  • Hi,

    Are the two ERM2410 devices detected in the multi-channel configuration? If so, when you move one of the ERM2410 devices to the same channel that the ECN1325 device is on, does it still get detected?

    Trying to figure out if it is the encoder or the channel that is the issue.

    Jason Reeder

  • Hi Jason,

    Thanks for replying.

    The ERM2410 devices can be detected on all channels in multi-channel configuration.

    I try to run the example project without return after PRUSS firmware initialization fail.

    The ECN1325 device can successfully send position value once every 15-25 times.

    Best  Regards

    Yi-Lin

  • Looking forward to reply !

    Yi-Lin

  • Hi Jason

    I got an absolute linear encoder LC415 and test with 2 ERM2410.

    At this time, only LC415 can be detected no matter which channel is connected.

    Here is my topology

    Ch[0] : ERM2410

    Ch[1]: LC415

    Ch[2]: ERM2410

    I set breakpoints in endat_get_type() function , find out that the data of ch 0 and 2 did not be updated.

    But the waveform captured from my oscilloscope shows the encoder signal have been correctly send out.

    Ch1: ch[0] ERM2410 Endat CLK

    Ch4: ch[0] ERM2410 Endat Data In

    Ch0: ch[1] LC415 Endat CLK

    Ch2: ch[1] LC415 Endat Data In

    Ch3: ch[2] ERM2410 Endat CLK

    Ch5: ch[2] ERM2410 Endat Data In

    (Encoder Send Parameter of Word 14)

    Please help

    Yi-Lin

  • Hi

    Is there any suggestion for me to get rid of this problem?

    Please let me know

    Many thanks

    Yi-Lin

  • Yi-Lin,

    Sorry for the delay in responding. The feedback from the development team is:

    Different encoder types on different channels is not a tested configuration, we expect all 3 channels to have identical encoder make and model. It appears the number of bits are very different for these encoders and this might be breaking some assumptions in FW.

    Jason Reeder

  • Dear Jason,

    Thanks for your replying. 

    Will this issue be fixed recently?

    By the way, I found file "endat_main.asm" in folder

    C:\ti\PRU-ICSS-Industrial_Drives_01.00.02.03\interfaces\endat_master\firmware

    Is this the source code of endat master?

    Thanks a lot

    Yi-Lin

  • Yi-Lin,

    There is no plan currently to add support for different types of encoders on different channels of the same PRU. Yes, that is the PRU firmware source code for the EnDat master.

    After thinking about this more, one solution that could work is to use two different PRU cores. Each PRU core has 3 EnDat channels available. You should be able to connect the two encoders that are the same to one PRU core and then connect the third encoder to the second PRU core in the same ICSS.

    Jason Reeder