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.

RTOS/TIDA-010016: Connecting my IO-Link device and TIDA-010016

Genius 5840 points
Part Number: TIDA-010016
Other Parts Discussed in Thread: TMDSIDK437X

Tool/software: TI-RTOS

Hello.

I would like to connect my IO-Link device and TIDA-010016.

I found IO-Link Master demo in processor SDK RTOS.

Could you tell me how to change IO-Link device which will be connected to TIDA-010016?

Regards,

U-SK

  • Hi,

    the default application tries to connect to an Autosen AO001 and AD003. You have to modify or build your own ioLink_autosenTask.c for the devices you have. 

    Independent on what is configured there, the software should bring the device in operate mode.

    What devices do you want to connect to? Or do you want to build a generic IO-Link Master that connects to every device?

    Regards,

    Steffen Graf

  • Hi Steffen Graf,

    Thank you for your reply.

    I would like to build a generic IO-Link Master that connects to every device.

    At first , I would like to connect JS-IOL-T10-EVB(JSL Technology).

    So, I would like to use  TIDA-010016 like TMG IO-Link Device Tool v4.

    http://jslt.co.jp/products/342

    Regards,

    U-SK

  • Hi,

    yes, this is possible and will work, but you will need to write your own tool instead of the TMG Device Tool.

    For this I would start by modifying the IOLink_autosenTask() function to pass custom commands to the IO-Link stack and remove the existing device handling. Also you would have to add a task handling the PC communication either via USB UART or Ethernet.

    Which IO-Link master stack do you use?

    Best regards,

    Steffen Graf

  • Hi Steffen Graf,

    Thank you for your reply.

    Is it available TMG Device Tool software ported to TMDSIDK437x?

    If no, I would like to run IO-Link Master example demo in processor SDK RTOS with JS-IOL-T10-EVB instead of autosen sensors firstly.

    In that case, should I get IO-Link master full stack?

    Or, is it possible to run it with IO-Link demo stack in processor SDK RTOS?

    (My understand is that IO-Link master stack for demo is included in processor SDK RTOS.)

    Regards,

    U-SK

  • Hi,

    a TMG Device Tool is not available.

    You can compile and run the IO-Link Master example with your sensors, this should connect and switch to operate state.

    To be able to compile the demo, you need an IO-Link Master Stack from IQ2, please contact IQ2 (https://www.iq2-development.de/) for that.

    The IO-Link Master Stack is not included in the SDK.

    Best regards,

    Steffen Graf

  • Hi Steffen Graf,

    Thank you for your reply.

    I got an IO-Link Master Stack for Evaluate version from IQ2(2017_05_14_iqstack_master_V1_1_3_0).

    Could you tell me how to create example project with IQStack?

    Regards,

    U-SK

  • Hi,

    we have used V1_1_2_2, you can tell IQ2 that you want to evaluate TIDA-010016 and you'll get the right version. It might work with the newer version, but this is not tested. Do you have the TIDA-010016 board?

    An example project is included in the PDK, how to build it is written here: http://software-dl.ti.com/processor-sdk-rtos/esd/docs/06_00_00_07/rtos/index_device_drv.html#iolink (Building IOLINK example). If you don't have "make" installed you can use "gmake" as it comes with CCS.

    Best regards,

    Steffen Graf

  • Hi Steffen Graf,

    Thank you for your reply.

    I have gotten IQstack v1_1_2_2.

    And I have TIDA-010016 board.

    I generated IOLINK_Stack_idkAM437x_a9hostTestApp_release.xa9fg, reffering following URL.

    After that I made target configuration file and load IOLINK_Stack_idkAM437x_a9hostTestApp_release.xa9fg to AM437x IDK and Run.

    Then, only following contents is displayed in Teraterm.

    (I didn't have sensors of autosen, so I didn't connect any devices.)

    port 0 state changed to 0

    port 1 state changed to 0

    port 2 state changed to 0

    port 3 state changed to 0

    port 4 state changed to 0

    port 5 state changed to 0

    port 6 state changed to 0

    port 7 state changed to 0

    Is it work correctly?

    And could you give me any advises about how to modify source code to connect JS-IOL-T10-EVB?

    By the way, I have a IODD file for JS-IOL-T10-EVB.

    Regards,

    U-SK

  • Hi,

    this looks very good so far, as this is the expected output without any device connected.

    The port state should change when you connect your sensor, even when it is not an Autosen device.

    For modification I would start modifying IOLink_autosenTask in ioLink_autosenTask.c where all the Autosen specific handling is implemented.

    You can set the define IOLINK_DEBUG to get much more output, especially when connecting your sensor.

    Best regards,

    Steffen Graf

  • Hi Steffen Graf,

    Thank you for your reply.

    When I connected JS-IOL-T10-EVB and run the demo, but port state and display were not changed.

    Where should I check firstly to confirm whether firmware works correctly?

    IOLINK_Stack_idkAM437x_a9hostTestApp_release.xa9fg is not CCS project, so is only method of debug  Printf Debug?

    If you find how to modify IOLink_autosenTask for other IO-Link device, please let me know.

    Regards,

    U-SK

  • Hi,

    that is strange, actually something should happen. Do you have any other IO-Link device for testing or can you connect a scope to the CQ line and check what is happening?

    You are right, this is not a CCS project, but you can create a project for AM437X and copy all files from the example in there to make debugging and modification easier.

    Best regards,

    Steffen Graf

  • Hi Steffen Graf,

     

    Thank you for your reply.

    I measured every CQ signal at M8 connector like following.

     

    Measured results are as follows.

    Names of every result is Parts number. 

    Measured_Results.pdf

    Is it work correctly?

    How about your firmware result?

    I connected all ports to JS-IOL-T10-EVB, but Tera Term display was not changed.

     

    Regards,

    U-SK

  • Hi,

    J11 - J14 looks good, if the IO-Link device JS-IOL-T10-EVB is not connected. Otherwise a response should be visible. What you see here is the wake up pulse of 80 us length followed by a sequence to communicate with the device in COM3, COM2 and COM1.

    The others signals are disturbed, where did you get the setup from? Is the AM437x IDK modified or a special IO-Link version, some wires should be visible on the bottom side.

    Best regards,

    Steffen Graf

  • Hi Steffen Graf,

    Thank you for your reply.

    And I'm sorry, I overlooked hardware modification of TMDSIDK437x described section 2.3.5 in following doccument.

    I will get back to you if modification of TMDSIDK437x is completed.

    If you find anything about software modification for JS-IOL-T10-EVB, please let me know.

    Regards,

    U-SK

  • Hi,

    okay the modification is necessary to get it running properly. Did you build the TIDA-010016 boards on your own and use the standard AM437x EVM? This is fine, therefore we provide the necessary data, but knowing this makes it easier to help. 

    For the software, I cannot provide you a step by step guide as I don't know your exact requirements in detail. Basically you have to modify the complete file to your needs. Simplest way is by replacing all the Autosen related code by something of your device.

    For example starting at the beginning:

    static uint32_t IOLink_autosenGetDevID(uint8_t *prodName)
    {
        uint32_t devID;
    
        if (strncmp((const char *)prodName,
                    IOLINK_AUTOSEN_PROD_NAME_AO001,
                    IOLINK_AUTOSEN_PROD_NAME_LEN) == 0)
        {
            devID = IOLINK_AUTOSEN_DEVICE_AO001;
        }
        else if (strncmp((const char *)prodName,
                         IOLINK_AUTOSEN_PROD_NAME_AD003,
                         IOLINK_AUTOSEN_PROD_NAME_LEN) == 0)
        {
            devID = IOLINK_AUTOSEN_DEVICE_AD003;
        }
        else
        {
            devID = IOLINK_AUTOSEN_DEVICE_NONE;
        }
    
        return (devID);
    }
    to something like that:
    static uint32_t IOLink_autosenGetDevID(uint8_t *prodName)
    {
        uint32_t devID;
    
        if (strncmp((const char *)prodName,
                    "Your Product name",
                    sizeof("Your Product name")) == 0)
        {
            devID = IOLINK_JS_IOL_T10_EVB;
        }
        else
        {
            devID = IOLINK_AUTOSEN_DEVICE_NONE;
        }
    
        return (devID);
    }

    Best regards,
    Steffen Graf