使用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。
还有什么需要做的吗?谢谢!
设备:
嗨krixen,
不幸的是,在使用IRDA时,我可以给您作为参考,尽管您完成的配置足够并且您已正确设置MCR寄存器,但REST配置与标准UART配置相似,IRDA的问题是类似的是580中的UART具有相当大的波特率错误,因此如果您试图建立通信,您应该尝试低于115200甚至低于57600的讨论。
谢谢mt_dialog.
你好,
谢谢你的反馈,我很久就离开了办公室,我回来了。
问题是,当我切换到UART IRDA时,我在发射行中看到任何内容。如果我仍然看到0到VCC的波动,它应该看起来像一个方波进入IR收发器的发射吗?
嗨krixen,
是的,如果您设置IRDA功能,只要您在违约时,只要在TX线上看到脉冲。
谢谢mt_dialog.
您仍然使用UART Write(或PrintF)功能,它应该吐出IRDA SIR数据格式吗?或者我需要调用其他一些功能吗?
我问这是因为我在更改2寄存器(从原始帖子中)时,我在我的TX线上看到了什么。它看起来像一个略微嘈杂的线,但总是在0volts。我也看到了接收方面的任何东西,尽管预计TX侧没有任何东西。
嗨krixen,
不,没有专用API才能使用IRDA,使用UART的驱动程序HW能够在IRDA模式下运行,而无需任何其他配置。也许你已经错误地配置了UART本身,例如,如果使用任何AllReady UART示例,如UART2_ASYNC示例,并且您将这些更改(上面提到),您还是在线上看到0伏并没有脉冲?
谢谢mt_dialog.
再次问好,
我正在使用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)
{
// print a Byte in hex format
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,但这要么不起作用,所以我再次禁用它。看到我缺少或正确做的任何东西?
嗨krixen,
时能够看到数据打印在UART(没有rmal UART no IrDa) with the fw that you are using ?
谢谢mt_dialog.
是的,我能够看到正常的UART,只有当我切换那两个我没有看到任何东西的寄存器时才。
作为侧面注意:我是否需要流量控制?
你好,
只需回顾一下即可查看我们是否可以解决此问题。谢谢你
嗨krixen,
No you dont need to use flow control, just a regular setup of the UART (in low baud rate for the reasons mentioned above) with the corresponding bit set in order to enable the IrDa and the corresponding pins to the appropriate functionallity. If you do that and use a printing function you should see pulses (not noise) on the Tx line by using an oscilloscope, if not then i assume that there should be an electrical problem with your setup.
谢谢mt_dialog.