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.

CC2642R-Q1: CC2642 does not have a LIN interface. Can we use software to simulate the LIN interface through UART?

Part Number: CC2642R-Q1
Other Parts Discussed in Thread: CC2340R5-Q1, CC2340R5

Hi TI Team

Because CC2642 does not have a LIN interface. Can we use software to simulate the LIN interface through UART?

How to implement it as LIN master and slave, how to design the hardware and software, is there any information to share?

Same Question  about LIN Interface of CC2340Q1 

Thanks~

FII Qin

  • Hi Fll Qin,

    It is possible to emulate LIN using the UART on our devices but you'll need to work with a LIN transceiver to translate to the appropriate voltages etc. We have an older reference design showing TLIN + CC2640R2 here: https://www.ti.com/tool/TIDA-01632. However, we do not have publicly available software at this time. 

    While this is for the CC2640R2, it's very similar to the CC2642 and I have seen CC2642 be used with LIN as well. 

    The same can be true for the CC2340R5-Q1. 

  • Hi Evan,

    Thank you  for you reply!

    Whether to include LIN slavre code in  the SimpleLink Academy CC2640R2 SDK ?Can you provide the SDK for my  reference,thanks!

  • Hi Evan

    You said: However, we do not have publicly available software at this time.

    ===》Do you know how can we get these software?That will help a lot in SW development.

    Other question is: Could we update FW via LIN Interface(UART->LIN) of CC264x/CC2340 ??

    Qin

  • Part Number: CC2642R-Q1

    Hi Evan,

              Can you provide other UART to LIN driver similar to CC2340 chip' UART2  for reference.thanks!

     

  • Hi 

    We just want to refer to the LIN part of the driver. We don’t need to do TOF and AOA. Can we provide a separate LIN interface driver?

    Qin

  • Hi, 

    Merging the new thread you made with this one. Please refrain from making multiple threads on the same topic. The driver we used was built as an example internally. Most customers end up using a third party like Vector or others or develop it on their own, to develop the driver to their own requirements. I can see if we can find the internal example from years back, but it won't be super applicable to the CC2340R5 device because the underlying UART driver has changed some in the past. 

  • Evan

    Thanks,A driver template for uart- -> LIN is used as a reference. It will always be faster than our own development. Please help,thanks

    Qin

  • Hi evan

    Do you have a good news?

  • Part Number: CC2642R-Q1

    Hi,Evan:

    Thanks for you help. Now we are begining to develope the LIN drive ,but when I try to modify the line driver  register like this:

    * ======== UART2Support_enableInts ========
    * Function to enable receive, receive timeout, and error interrupts
    */
    void UART2Support_enableInts(UART2_Handle handle)
    {
    UART2LPF3_Object *object = handle->object;
    UART2LPF3_HWAttrs const *hwAttrs = handle->hwAttrs;

    if (object->eventCallback)
    {
    if (object->eventMask & UART2_EVENT_OVERRUN)
    {
    UARTClearInt(hwAttrs->baseAddr, UART_INT_OE);
    UARTEnableInt(hwAttrs->baseAddr, UART_INT_OE);
    }


    if (object->eventMask & UART2_EVENT_BREAK) 
    {
    UARTClearInt(hwAttrs->baseAddr, UART_INT_BE);
    UARTEnableInt(hwAttrs->baseAddr, UART_INT_BE);
    }
    }
    UARTEnableInt(hwAttrs->baseAddr, UART_INT_RT);
    }

     Anything is  happan. Is It all right that I try to do.I want to get the interrupt of break erorr. Can you guide me ,thanks!

  • Hi,Evan:

    Thanks for you help. Now we are begining to develope the LIN drive ,but when I try to modify the line driver  register like this:

    * ======== UART2Support_enableInts ========
    * Function to enable receive, receive timeout, and error interrupts
    */
    void UART2Support_enableInts(UART2_Handle handle)
    {
    UART2LPF3_Object *object = handle->object;
    UART2LPF3_HWAttrs const *hwAttrs = handle->hwAttrs;

    if (object->eventCallback)
    {
    if (object->eventMask & UART2_EVENT_OVERRUN)
    {
    UARTClearInt(hwAttrs->baseAddr, UART_INT_OE);
    UARTEnableInt(hwAttrs->baseAddr, UART_INT_OE);
    }


    if (object->eventMask & UART2_EVENT_BREAK) 
    {
    UARTClearInt(hwAttrs->baseAddr, UART_INT_BE);
    UARTEnableInt(hwAttrs->baseAddr, UART_INT_BE);
    }
    }
    UARTEnableInt(hwAttrs->baseAddr, UART_INT_RT);
    }

     Anything is  happan. Is It all right that I try to do.I want to get the interrupt of break erorr. Can you guide me ,thanks!

  • User,

    Please STOP creating multiple threads for the same question. This creates double work for my team. I have been sick and am the only person that is familiar with your question, so please have patience as I track down the contents you are requesting. I am hoping to have feedback for you with the source code of that driver by tomorrow. Appreciate your patience. 

  • Even

    Got it and thank you 

    Take care