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.

MSPM0L1306: IDLE-LINE functioning

Part Number: MSPM0L1306
Other Parts Discussed in Thread: SYSCONFIG

Hi,

I would like to use the UART in IDLE line mode, but I cannot get the result indicated by the datasheet, the busy signal does not remain set while receiving data.

I tested several different configurations, on UART0 and UART1 in extend or main mode, I always have the same behavior.

Would it be possible to have a working example configuration ?

  • Hi,

    I will do the experiment from my side, please give more details.

  • What kinds of details do you want?

    I want to achieve exactly what is specified in the datasheet : 

    RX: The BUSY signal set during the receive of data and till first 10 idle bits are received.

    According to the datasheet it seems very simple to achieve, but I can't do it, that's why I'm asking you if it is possible to have a working configuration example.

  • Hi,

    Please provide the register you configure and the related Oscilloscope waveform.

    Let's try to rule out if the code or register configuration are correct firstly.

    B.R.

    Zoey

  • I use the syscfg to configure the register. This is an extract of ti_msp_dl_config.c

    static const DL_UART_Extend_ClockConfig gUART_0ClockConfig = {
        .clockSel    = DL_UART_EXTEND_CLOCK_BUSCLK,
        .divideRatio = DL_UART_EXTEND_CLOCK_DIVIDE_RATIO_1
    };

    static const DL_UART_Extend_Config gUART_0Config = {
        .mode        = DL_UART_EXTEND_MODE_IDLE_LINE,
        .direction   = DL_UART_EXTEND_DIRECTION_TX_RX,
        .flowControl = DL_UART_EXTEND_FLOW_CONTROL_NONE,
        .parity      = DL_UART_EXTEND_PARITY_NONE,
        .wordLength  = DL_UART_EXTEND_WORD_LENGTH_8_BITS,
        .stopBits    = DL_UART_EXTEND_STOP_BITS_ONE
    };
    SYSCONFIG_WEAK void SYSCFG_DL_UART_0_init(void)
    {
        DL_UART_Extend_setClockConfig(UART_0_INST, (DL_UART_Extend_ClockConfig *) &gUART_0ClockConfig);

        DL_UART_Extend_init(UART_0_INST, (DL_UART_Extend_Config *) &gUART_0Config);
        /*
         * Configure baud rate by setting oversampling and baud rate divisors.
         *  Target baud rate: 38400
         *  Actual baud rate: 38403.84
         */
        DL_UART_Extend_setOversampling(UART_0_INST, DL_UART_OVERSAMPLING_RATE_16X);
        DL_UART_Extend_setBaudRateDivisor(UART_0_INST, UART_0_IBRD_32_MHZ_38400_BAUD, UART_0_FBRD_32_MHZ_38400_BAUD);


        /* Configure Interrupts */
        DL_UART_Extend_enableInterrupt(UART_0_INST,
                                     DL_UART_EXTEND_INTERRUPT_EOT_DONE |
                                     DL_UART_EXTEND_INTERRUPT_RX |
                                     DL_UART_EXTEND_INTERRUPT_TX);


        /* Set the address mask and the address to match */
        DL_UART_Extend_setAddressMask(UART_0_INST, 255);
        DL_UART_Extend_setAddress(UART_0_INST, 0);

        DL_UART_Extend_enable(UART_0_INST);
    }
  • So now the phenomenon is that when you receive data through RXD, the busy signal(register) is not set, right?

  • Unfortunately I don't have time to put the manipulation back in place in order to output the signals. But I observed the busy signal that I output on a pin and I observed a return to low logic level between two bytes without waiting for the ten bits

  • it is active, but only during the byte reception time then returns to the low logic level

  • Thanks for your information. I got your point.

    The busy signal will return low logic immediately after receive data rather than wait for 10 idle bits. Am I correct?

    By the way, what version of Sysconfig do you use? I try to configurate the UART mode through Sysconfig, but some error occurs, then I just code in register level.

    If my understanding is right, and I will do a experiment tomorrow, and try to give you feedback

  • Yes, you are correct.

    I use the SDK 1.20.01.06, did you try the extend mode ? It seams that the setAdress and setMask are not avalable in main mode.

  • And in normal mode, the setMask and setAdress function is not included in our driverlib,which means you cannot call this function. That is why I want to ask you the version of Sysconfig and SDK, as you can configure it normally and experiment with it.

    If you suffer from this problem, please exclude the Sysconfig, and then try to modify the register value directly

  • I mean this two function is not included in driverlib, so we can not call this function

  • If you active extend configuration it will work, the two functions are included in dl_uart_extend.h . But yes, I guess It's a problem.

  • Thanks, and I will feedback this problem to our software team.

    Can you give me more information about your test:

    1.whether you have received address data

    2.what is the signal or how you receive idle-line protocol signal from master. In other word, how do you simulate the master

  •  DL_UART_Extend_setAddressMask(UART_0_INST, 255);
     DL_UART_Extend_setAddress(UART_0_INST, 0);
    What I do :
    I send a message of 14 bytes with the first one at 0x00
    But i tried different configuration such as :
    Adress at 0xF0 and mask at 0xFF
    Adress at 0xF0 and mask at 0x00
    Adress at 0x00 and mFFask at 0xFF
    Adress at 0x00 and mFFask at 0x00
    I have several eval board, so I put one in master and a other one in slave.
    Did you find a working configuration ?
  • Hi gajo,

    I am busy today, and I will answer you next week.

    Sorry for that

  • Hi

    I have done the test, and from My side everything goes well if I configure the Idle-line mode

    And the below is the result that I do not use Idle-line mode.

  • as I was not able to obtain the same results as you, would it be possible to share your configuration with me, to give me an example ?

    Using idle mode via syscfg I only got the result without Idle.

  • Hi

    Here is my test code:  https://tidrive.ext.ti.com/u/5L84hq6_OJz2vziR/8248da00-ce5a-4bfb-b6b4-0be06d4e6afc?l

    password:ED52y'ik