我把ESL的USB通信修改成了UART接口来和外部的MCU通信,UART使用的是非DMA的模式。UART RX中断开启,TX不使用中断,采用查询的方式发送,发现当RF和UART都持续接受数据时,UART的数据会混乱,如果RF不接受数据,则UART正常。
询问贵公司的FAE,回复是UART和RF是不能全双工工作的。
如果是这样那UART和RF就只能分时工作了,即uart开启时RF关闭,RF开启时UART关闭。
测试时,当我认为UART接收某个指令时,调用RF关闭函数。函数如下:
void gataway_close(void)
{
IRQ_Disable();
IRQ_RfIrqSrcClrAll();
IRQ_DisableType(FLD_IRQ_ZB_RT_EN);
IRQ_RfIrqDisable(FLD_RF_IRQ_RX | FLD_RF_IRQ_TX);
IRQ_Enable();
}
发现RF确实没有在工作了,但是UART输出数据没问题,但是如果UART输入的数据打印出来,发现UART接受数据错乱。
比如发送: AD BA 00 01 06 01 02 03 04 05 06 00 15 1C 03 00 31 32 33 CD CD
UART实际接受的数据为 CD CD AD BA 00 01 06 01 02 03 04 05 06 00 15 1C 03 00 31 32 33
这会是因为什么呢?
如果RF要与UART分时工作,有什么可以参考的示例吗?
感谢!