IRDA应用程序帮助

⚠️
嗨,...感谢您来论坛。令人兴奋的消息!我们现在正在迁至我们的新论坛平台,将提供更好的功能,并包含在主对话框网站中。所有帖子和帐户都已迁移。我们现在只接受新论坛上的流量 - 请发布任何新线程https://www.dialog-seminile.com/support.。我们将在未来几天修复错误/优化搜索和标记。
11个帖子/ 0新
最后一篇
克瑞克
离线
最后一次露面:3年8个月前
加入:2015-09-28 16:27
IRDA应用程序帮助

使用SDK5.0.4我正在尝试使用UART2通过IR收发器将IRDA传输,并且难以设置它。

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

1)改变了这一行:GPIO_CONFIGUREPIN(UART2_GPIO_PORT,UART2_TX_PIN,OUTPUT,PID_UART2_IRDA_TX,FALSE);//改为Irda

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

还有什么需要做的吗?谢谢!

设备:
mt_dialog.
离线
最后一次露面:2个月4天前
职员
加入:2015-06-08 11:34
嗨krixen,

嗨krixen,

不幸的是,在使用IRDA时,我可以给您作为参考,尽管您完成的配置足够并且您已正确设置MCR寄存器,但REST配置与标准UART配置相似,IRDA的问题是类似的是580中的UART具有相当大的波特率错误,因此如果您试图建立通信,您应该尝试低于115200甚至低于57600的讨论。

谢谢mt_dialog.

克瑞克
离线
最后一次露面:3年8个月前
加入:2015-09-28 16:27
你好,

你好,

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

问题是,当我切换到UART IRDA时,我在发射行中看到任何内容。如果我仍然看到0到VCC的波动,它应该看起来像一个方波进入IR收发器的发射吗?

mt_dialog.
离线
最后一次露面:2个月4天前
职员
加入:2015-06-08 11:34
嗨krixen,

嗨krixen,

是的,如果您设置IRDA功能,只要您在违约时,只要在TX线上看到脉冲。

谢谢mt_dialog.

克瑞克
离线
最后一次露面:3年8个月前
加入:2015-09-28 16:27
你还在使用uart吗?

您仍然使用UART Write(或PrintF)功能,它应该吐出IRDA SIR数据格式吗?或者我需要调用其他一些功能吗?

我问这是因为我在更改2寄存器(从原始帖子中)时,我在我的TX线上看到了什么。它看起来像一个略微嘈杂的线,但总是在0volts。我也看到了接收方面的任何东西,尽管预计TX侧没有任何东西。

mt_dialog.
离线
最后一次露面:2个月4天前
职员
加入:2015-06-08 11:34
嗨krixen,

嗨krixen,

不,没有专用API才能使用IRDA,使用UART的驱动程序HW能够在IRDA模式下运行,而无需任何其他配置。也许你已经错误地配置了UART本身,例如,如果使用任何AllReady UART示例,如UART2_ASYNC示例,并且您将这些更改(上面提到),您还是在线上看到0伏并没有脉冲?

谢谢mt_dialog.

克瑞克
离线
最后一次露面:3年8个月前
加入:2015-09-28 16:27
再次问好,

再次问好,

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

//选择UART设置
#define uart2_baudrate uart_baudrate_115k2 // baudrate in bits / s:{9k6,14k4,19k2,28k8,38k4,57k6,115k2}
#define uart2_datalength uart_charformat_8 // datalength中位数:{5,6,7,8}
#define uart2_parity uart_parity_none // parity:{uart_parity_none,uart_parity_even,uart_parity_odd}
#define uart2_stopbits uart_stopbits_1 //停止位:{uart_stopbits_1,uart_stopbits_2}
#define uart2_flowcontrol uart_flowcontrol_disabled // flow control:{uart_flowcontrol_disabled,uart_flowcontrol_enabled}

我正在使用此函数一次打印一个字节:

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

UART2_WRITE((uint8_t *)&b,1,null);
UART2_FINISH_TRANSFERS();
B =(0xF&CH);
B + =(B <10)?48:55;
UART2_WRITE((uint8_t *)&b,1,null);
UART2_FINISH_TRANSFERS();
}

我还尝试激活FlowControl,但这要么不起作用,所以我再次禁用它。看到我缺少或正确做的任何东西?

mt_dialog.
离线
最后一次露面:2个月4天前
职员
加入:2015-06-08 11:34
嗨krixen,

嗨krixen,

在UART(正常UART NO IRDA)上使用您使用的FW打印时,能够看到数据?

谢谢mt_dialog.

克瑞克
离线
最后一次露面:3年8个月前
加入:2015-09-28 16:27
是的,我能看到正常

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

作为侧面注意:我是否需要流量控制?

克瑞克
离线
最后一次露面:3年8个月前
加入:2015-09-28 16:27
你好,

你好,

只需回顾一下即可查看我们是否可以解决这个问题。谢谢你

mt_dialog.
离线
最后一次露面:2个月4天前
职员
加入:2015-06-08 11:34
嗨krixen,

嗨krixen,

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

谢谢mt_dialog.