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.

[参考译文] TM4C1294NCPDT:从9位 UART 获取地址帧

Guru**** 2330840 points
请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/595485/tm4c1294ncpdt-get-address-frame-from-9-bit-uart

器件型号:TM4C1294NCPDT

大家好、

我在线程接头中提到的某些 CPU 之间开发 RS485通信。 由于地址检测和后续数据流的硬件支持、我想使用9位 UART 模式。

我的问题是、我看到了一个设置地址掩码的选项、允许用户设置设备监听的多个地址、但如何获取捕获的地址? 如何发现发件人在我的地址中寻址的地址?

对此,

Norbert

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    尊敬的 Nobert:
    当存在地址匹配时、您将得到一个中断。 如果您只有一个地址、匹配的地址将是您存储在 UART9BITADDR 中的地址。 如果您有一个地址范围、那么您将设置 UART9BITAMASK 来过滤要接收的有效地址。 您可以使用 UARTCharGet 来读取发件人输出的地址。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、Charles、

    在我被读出的某个地方,呼叫者无法读取地址字节,我在开发过程中也遇到过这种情况。 所以、这是这个问题的初始想法。

    我的应用使用适当的 TivaWare 库函数发送地址字节、而不是发送后续数据:

    uint32_t intState = MAP_UARTIntStatus (MODBUS_UART、TRUE);
    MAP_UARTIntClear (MODBUS_UART、intState);
    if (intState & UART_INT_9BIT){
    _receivedPDU.Reset ();
    
    
    }while (MAP_UARTUS_UART、intState);if (UARTUS_SIZE
    
    
    
    
    = UART_UART_UART1_STREAM)={_SIZE (UART_UART_UART1_SIZE = UART_UART_UART_UART_UART1_ST_SIZE
    )}(= UART1_SIZE = UART_UART_UART_UART1_SIZE = UART_UART_UART_UART_UART 1:0;
    }
    }
    
    if (((intState & UART_INT_RT)&&(_receivedPDV.function ()!= PDU::未知)){
    xSemaphoreGiveFromISR (_receiveSemore、NULL);
    }
    
    

    上面是我的 UART 中断例程:您可以看到、当我获得9BIT 中断时、会有一些初始化工作、而不是我尝试获取数据。 每次在读取周期中放入断点时,我都看不到设备地址。

    此致、

    Norbert