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/TIDEP0057: Encoder question

Part Number: TIDEP0057
Other Parts Discussed in Thread: TIDEP0022

Tool/software: Code Composer Studio

Hello:

In the TIDEP0057 design file, there is no indication of the specific parameters of the encoder used for the test, and is not stated in the design code. I would like to ask if I follow this program to test, what type of encoder need to buy? Such as the resolution of the encoder and other information. There is the document that BISS support SSI, this support is only hardware support, or for the SSI signal encoder can also read the data?

thank you .

  • The Industrial team have been notified. They will respond here.
  • Hi
    This TI design primarily covers the hardware interface. Software supporting the EnDat 2.2 master for product development is available in www.ti.com/.../PRU-ICSS-INDUSTRIAL-SW. Regretfully, the BiSS C protocol software support is not yet available.
    David

  • Hello there:
    I do not quite understand you. This document gives hardware support for BISS, ENDAT2.2 and HIPERFACE DSL protocols. But also gives the AM437X IDK-based software code support, this code is run with PRU firmware. This is clearly stated in the documentation, and the documentation also provides the results of the hardware and software tests. So for you to say this design only supports hardware, I do not quite understand. Can you explain it a little bit?

    thank you!

  • Hi

    This TI design has example software which provides a simple stand alone demonstration of the operation the physical interface. This software is not intended to be used as the basis for motor control product design.  

    This TI Design along with TIDEP0022 illustrates how the ICSS-PRU can be programmed to support the BiSS C Master protocol. The TI design document provides a summary of the hardware (an AM437x Industrial Development Kit (IDK)) and software that  used in this example. There is a link to the software that was used at the end of the document. There is also a link to the software on the TI design page.   These TI designs are provided as a simple stand alone illustration the PRU-ICSS and is not intended as reference for BiSS C implementation, the basis for product development or use with the Industrial SDK examples.

     The TI software which is provided for product development is the http://www.ti.com/tool/PRU-ICSS-INDUSTRIAL-SW which is available at http://www.ti.com/tool/PRU-ICSS-INDUSTRIAL-SW .  This package includes the PRU-ICSS-INDUSTRIAL-DRIVES: PRU-ICSS SW for Industrial Drives contains support for EnDat2.2, Tamagawa, SDDF and Motor control .

    This package support the EnDat 2.2 stand along and a motor control example using EnDat.   BiSS C and Hyperface DSL are not yet available. 

    The EnDat 2.2 example and motor drive was developed for a ROQ437. R+The software is constructed so that it can be configured to support a variety of encoders with different resolutions (there is a constraint that is used to adjust resolution)  this is described in  "endat_get_2_2_angle" in API guide.

    When PRU-ICSS-INDUSTRIAL-DRIVES is installed in the default location -  C:\ti\PRU-ICSS-Industrial_Drives_01.00.00.00\interfaces\endat_master\doc contains the API guide and the EnDat design guide.

    There are a number of e2e posts on BiSS example software.  If you simply want to run the TI Design BiSS example code there are  a couple of e2es which will help. However it is important to mention that this example code is not maintained in the SDK and will require specific older versions of CCS, compiler and tools.

    https://e2e.ti.com/support/arm/sitara_arm/f/791/t/513493

    https://e2e.ti.com/support/arm/sitara_arm/f/791/t/419199

    https://e2e.ti.com/support/arm/sitara_arm/f/791/p/555938/2042854

    David

  • Hello there:
    thank you for your help. I just want to run the code in this design file. Try to read the BISS, ENDAT, HIPERFACE DSL protocol encoder information. Just running a variety of protocols and no actual operation of the motor. At present I have been able to run the code to IDK, only need to connect the encoder to test. So it is the initial problem, for the encoder selection. I would like to ask if I follow this program to test, what type of encoder need to buy? Such as the resolution of the encoder and other information. There is the document that BISS support SSI, this support is only hardware support, or for the SSI signal encoder can also read the data?
  • Hi

    We have used the following Encoders with TIDEP0057:

    ENDAT 2.2: ROQ1037 (http://www.ti.com/tool/TIDEP0050)

    BISS: WDGF58M (http://www.ti.com/tool/tidep0022)

    HIPERFACE DSL: EKM36-0KF0A018A (http://www.ti.com/tool/tidep0035)

     

     We have not looked into the SSI protocol.

    But the PRU-ICSS is quite programmable with a number of options specifically suited for this type of processing.

    David

  • Hello:
        First of all thank you for your help, solved my problem with the encoder.
        There is also a problem with the Tidcbv9 project provided in TIDEP0057. I have read the program code, but I do not understand some of the code. For example, when using the PRU firmware to support the BISS encoder protocol below:
    // load firmware
    PRUICSS_setPRUBuffer(pruIcss0Handle, 0, (UInt32*)BiSSFirmware, sizeof(BiSSFirmware));

    // configure shared memory interface
    // clear ICSS0 PRU0 data RAM
    memset((void *)(((PRUICSS_HwAttrs *)(pruIcss0Handle->hwAttrs))->baseAddr + 0x0000), 0, (4*1024));


    // BiSS encoder configuration: clock_speed=1; crc_bits=8, encoder_bits=12
    HW_WR_REG32(((PRUICSS_HwAttrs *)(pruIcss0Handle->hwAttrs))->baseAddr + 0x0000, 0x0001080C);

    //Run firmware
    PRUICSS_pruExecProgram(pruIcss0Handle, 0);

    TaskOSAL_sleep(25);
    // write known patterin into position regigister
    HW_WR_REG32(((PRUICSS_HwAttrs *)(pruIcss0Handle->hwAttrs))->baseAddr + 0x8, 0xFFFFFFFF);
    TaskOSAL_sleep(100);
    // check if BiSS encoder has been detected (pattern has been overwritten by PRU firmware)
    biss_angle = HW_RD_REG32(((PRUICSS_HwAttrs *)(pruIcss0Handle->hwAttrs))->baseAddr + 0x8);
    if(biss_angle == 0xFFFFFFFF)
    return;

    For example,
    // BiSS encoder configuration: clock_speed=1; crc_bits=8, encoder_bits=12
    HW_WR_REG32(((PRUICSS_HwAttrs *)(pruIcss0Handle->hwAttrs))->baseAddr + 0x0000, 0x0001080C);
    I can only see the top of the program, the address written to 0x0001080C should be written clock, CRC bits and encoder bits. But the note which only shows the clock clock_speed = 1, I would like to ask this is a representative of how many frequency? I checked a lot of library files and i did not found the description of this parameter. What should i do if i want to modify?
  • Hi

    The firmware architecture is described in the BiSS-C Interface Master Design Guide (Rev. A) document  that is contained in the ARM MPU with Integrated BiSS C Master Interface Reference Design at http://www.ti.com/tool/tidep0022 . There you will find a description of the implementation with flowcharts and tables.

    This design uses a hardware features of the AM437x PRU which is described additional detail  in section 30 of the the AM437x Sitara Processors Technical Reference Manual this is available on page http://www.ti.com/product/AM4379/technicaldocuments.

     

    David