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.

[参考译文] TM4C129XNCZAD:SIR Rx 引脚不工作

Guru**** 2424570 points


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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/817266/tm4c129xnczad-sir-rx-pin-does-not-work

器件型号:TM4C129XNCZAD

您好!

我正在尝试使用 UART 的 SIR 功能从 PC5发送8位数据、并通过 PC4接收相同的数据。 引脚 PC5与红外发射器相连、引脚 PC4与光电晶体管相连。 我已成功使用 IR 无线发送和接收数据。 但是、接收到的数据无法在 UART 接收缓冲区中捕获。 所连接的是我在 PC4和 PC5上捕获的 IR 信号、以证明该信号已成功传输。 我还附上了我的代码供参考。 希望在这个论坛上听取专家的一些建议。 谢谢。

#include
#include
#include "sysctl.h"
#include "clock.h"
#include "gpio.h"
#include "UART.h"

char rxData = 0x00;
int j;

空 uartHandler()

UARTIntClear (UART7_BASE、UART_INT_RX);

//IF (UARTIntStatus (UART7_BASE、TRUE)& UART_INT_RX)
//{
rxData = UARTCharGetNonBlocking (UART7_BASE);
for (j=0;j<7000000;j++);

//}


int main (空)

  int i;
  int32_t ui32SysClock;

  ui32SysClock = ClockFquencySet (120000000);

  SysCtlPeripheralEnable (SYSCTL_Periph_UART7);
  SysCtlPeripheralEnable (SYSCTL_Periph_GPIOC);

  while (!SysCtlPeripheralReady (SYSCTL_Periph_UART7));
  while (!SysCtlPeripheralReady (SYSCTL_Periph_GPIOC));

  GPIOPinConfigure (GPIO_PC5_U7TX);
  GPIOPinConfigure (GPIO_PC4_U7RX);
  GPIOPinTypeUART (GPIO_PORTC_AHB_BASE、GPIO_PIN_5);//Tx
  GPIOPinTypeUART (GPIO_PORTC_AHB_BASE、GPIO_PIN_4);//Rx

  UARTEnableSIR (UART7_BASE、0);
  //UARTDisableSIR (UART7_BASE);
  UARTConfigSetExpClk (UART7_BASE、ui32SysClock、2400、(UART_CONFIG_WLEN_8 | UART_CONFIG_STOP_ONE | UART_CONFIG_PAR_NONE));

  UARTFIFODisable (UART7_BASE);
  UARTIntRegister (UART7_BASE、uartHandler);
  UARTIntEnable (UART7_BASE、UART_INT_RX);

  while (1)
  {
    UARTCharPut (UART7_BASE、0x21);
    while (UARTBusy (UART7_BASE));
    for (i=0;i<7000000;i++);
    rxData = UARTCharGetNonBlocking (UART7_BASE);
    for (j=0;j<7000000;j++);
  }

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

    大家好、

    再次阅读数据表后、我设法使其正常工作。我被半双工字触发、并决定使用另一个 UART、例如 UART5 Rx 引脚来接收传输的数据。 我成功收到了它! 不确定这是不是解决问题的方法。 如果有其他解决办法解决这个问题,我仍希望得到答复。 谢谢!

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

    您好!

     您对半双工意味着您无法同时发送和接收的理解是正确的。 您需要使用两个 UART 同时发送和接收数据。  

     请参阅以下数据表摘录。  

    19.3.4串行红外(SIR)
    UART 外设包括一个 IrDA 串行红外(SIR)编码器/解码器模块。 IrDA SIR 模块
    提供在异步 UART 数据流和半双工之间进行转换的功能
    串行 SIR 接口。 片上不执行任何模拟处理。 SIR 区块的作用是
    为 UART 提供数字编码输出和解码输入。 启用后、SIR 模块
    SIR 协议使用 UnTx 和 UnRx 引脚。 这些信号应连接到红外信号
    用于实现 IrDA SIR 物理层链路的收发器。 SIR 模块可以接收和发送、
    但它仅为半双工、因此不能同时执行这两种操作。