发送应用程序帮助

⚠️
大家好. .谢谢你来到论坛。令人兴奋的消息!我们现在正在转移到新的论坛平台,它将提供更好的功能,包含在主对话网站中。所有岗位和账户都已迁移。我们现在只接受新论坛的流量-请在上面发布任何新帖子//www.xmece.com/support.我们将在未来几天修复bug /优化搜索和标记。
11个帖子/ 0个新帖子
最后发表
Krixen
离线
最后看到:3年10个月前
加入:2015-09-28 16:27
发送应用程序帮助

使用SDK5.0.4,我试图使用UART2通过红外收发器发送IrDa,但设置有困难。

程序是什么?我只改变了两件事:

1)改变了这一行:GPIO_ConfigurePin(UART2_GPIO_PORT, UART2_TX_PIN, OUTPUT, PID_UART2_IRDA_TX, false);/ /更改为发送

2)改变了这个:SetWord32(UART2_MCR_REG, UART_AFCE|UART_RTS|0x40);// |0x40设置UART_SIRE位为1。

我还需要做什么吗?谢谢!

设备:
MT_dialog
离线
最后看到:4个月1天前
工作人员
加入:2015-06-08 34
嗨Krixen,

嗨Krixen,

不幸的是,没有使用IrDA的例子,我可以给你作为参考,尽管你已经完成的配置是足够的,你已经正确设置MCR寄存器,其余的配置是类似于标准UART配置,IrDA的问题是在580的UART有一个相当显著的波特率错误,所以如果你试图建立一个通信,你应该尝试以较低的波特率低于115200或甚至低于57600。

由于MT_dialog

Krixen
离线
最后看到:3年10个月前
加入:2015-09-28 16:27
你好,

你好,

谢谢你的反馈,我离开办公室很久了,现在回来了。

问题是,当我切换到UART IrDa时,我在传输线路上看到任何东西。我还能看到0到VCC的波动吗,它看起来像红外线收发器发射的方波吗?

MT_dialog
离线
最后看到:4个月1天前
工作人员
加入:2015-06-08 34
嗨Krixen,

嗨Krixen,

是的,如果你设置了IrDa功能,你应该看到脉冲在TX线上,只要你发送数据偏离航向。

由于MT_dialog

Krixen
离线
最后看到:3年10个月前
加入:2015-09-28 16:27
你还在用uart吗

你仍然使用uart写(或printf)函数,它应该吐出IrDa SIR数据格式?或者我需要调用其他函数吗?

我问这个的原因是因为当我改变两个寄存器(从原来的帖子)时,我看到Tx行上什么都没有。它看起来像一条稍微嘈杂的线但是它几乎总是0伏。我也没有看到什么在接收方,尽管这是预期与Tx方没有什么。

MT_dialog
离线
最后看到:4个月1天前
工作人员
加入:2015-06-08 34
嗨Krixen,

嗨Krixen,

没有,没有专用的API来使用IrDa,与UART的驱动程序,hw能够在IrDa模式下运行,没有任何额外的配置。也许你已经错误配置了UART本身,例如,如果你使用任何已经UART的例子,如uart2_async的例子,你做这些改变(上面提到的),你仍然看到只是0伏在线路上没有脉冲?

由于MT_dialog

Krixen
离线
最后看到:3年10个月前
加入:2015-09-28 16:27
你好再次,

你好再次,

我使用common_uart.c,这里是我的UART设置:

//选择UART设置
#define UART_BAUDRATE_115K2 // Baudrate in bits/s: {9K6, 14K4, 19K2, 28K8, 38K4, 57K6, 115K2}
#define UART2_DATALENGTH UART_CHARFORMAT_8 //数据长度:{5,6,7,8}
#define UART2_PARITY UART_PARITY_NONE //奇偶校验:{UART_PARITY_NONE, UART_PARITY_EVEN, UART_PARITY_ODD}
#define UART2_STOPBITS UART_STOPBITS_1 //停止位:{UART_STOPBITS_1, UART_STOPBITS_2}
#define uart2_flowcontrol_disabled //流量控制:{UART_FLOWCONTROL_DISABLED, UART_FLOWCONTROL_ENABLED}

我使用这个函数每次打印一个字节:

空白printf_byte (char ch)

//以十六进制格式打印一个字节
字符b;
b = ((0xF0 & ch) >> 4);
B += (B < 10) ?48: 55;

uart2_write ((uint8_t *)和乙1 NULL);
uart2_finish_transfers ();
b = (0xF & ch);
B += (B < 10) ?48: 55;
uart2_write ((uint8_t *)和乙1 NULL);
uart2_finish_transfers ();

我也尝试激活流量控制,但那也不工作,所以我再次禁用它。看到我遗漏了什么或做对了什么吗?

MT_dialog
离线
最后看到:4个月1天前
工作人员
加入:2015-06-08 34
嗨Krixen,

嗨Krixen,

是否能够看到数据打印在UART(正常UART没有IrDa)与您正在使用的fw ?

由于MT_dialog

Krixen
离线
最后看到:3年10个月前
加入:2015-09-28 16:27
是的,我能看到正常的东西

是的,我能够看到正常的UART,只有当我切换这两个寄存器时,我看不到任何东西。

附注:我是否需要流控制?

Krixen
离线
最后看到:3年10个月前
加入:2015-09-28 16:27
你好,

你好,

再来看看我们能不能解决这个问题。谢谢你!

MT_dialog
离线
最后看到:4个月1天前
工作人员
加入:2015-06-08 34
嗨Krixen,

嗨Krixen,

否您不需要使用流量控制,只需使用相应的位设置的UART的常规设置(以上面提到的原因为低波特率),以使IRDA和相应的引脚能够成为适当的功能。如果您这样做并使用打印功能,请使用示波器看到TX线上的脉冲(不是噪声),如果不是,那么我假设您的设置应该存在电气问题。

由于MT_dialog