Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/api/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
带有Xbee的Tx LPC2148处于API模式,带有继电器的Rx Xbee不工作_Api_Xbee - Fatal编程技术网

带有Xbee的Tx LPC2148处于API模式,带有继电器的Rx Xbee不工作

带有Xbee的Tx LPC2148处于API模式,带有继电器的Rx Xbee不工作,api,xbee,Api,Xbee,我开始使用xbee系列2开发lpc2148。 在传输端,我在API模式下使用lpc2148和xbee协调器, 在Rx端,我在路由器AT模式下使用屏蔽上的xbee。 我想让XBee激活一个D3引脚,可以用来打开Rx端的继电器 API帧格式如下,代码使用c程序编写 在这里输入代码 #define Delimeter 0x7E void Init_UART1(void) //This function setups UART1 { unsigned in

我开始使用xbee系列2开发lpc2148。 在传输端,我在API模式下使用lpc2148和xbee协调器, 在Rx端,我在路由器AT模式下使用屏蔽上的xbee。 我想让XBee激活一个D3引脚,可以用来打开Rx端的继电器

API帧格式如下,代码使用c程序编写

在这里输入代码

#define Delimeter    0x7E 

void  Init_UART1(void)                 //This function setups UART1
{  
unsigned int Baud16;
U1LCR = 0x83;                   // DLAB = 1
Baud16 = (Fpclk / 16) / UART_BPS;  
U1DLM = Baud16 / 256;                           
U1DLL = Baud16 % 256;                       
U1LCR = 0x03;
} 

void main() { 

 Init_UART1();
 LED1_ON();
 setRemoteState(0x5);//AD3 config DOUT HIGH
 Delay(25);
 LED1_OFF();
 setRemoteState(0x4);//AD3 config DOUT LOW
 Delay(25);

 void setRemoteState (char value) {

 UART1_Write(Delimeter);//start byte
 UART1_Write(0);//high part of length
 UART1_Write(0X10);//low part of length
 UART1_Write(0X17);//remote AT command 
 UART1_Write(0X0);//frame id 0 for no reply
 UART1_Write(0X0);
 UART1_Write(0X0);
 UART1_Write(0X0);
 UART1_Write(0X0);
 UART1_Write(0X0);
 UART1_Write(0X0);
 UART1_Write(0XFF);// broadcast
 UART1_Write(0XFF);// broadcast
 UART1_Write(0XFF);
 UART1_Write(0XFE);
 UART1_Write(0X02);//apply changes immediately on remote
 UART1_Write('D');//writing on AD3 pin
 UART1_Write('3');
 UART1_Write(value);
 sum = 0x17 + 0xFF + 0xFF + 0xFF + 0xFE + 0x02 + 'D' + '3' + value;
 UART1_Write(0xFF - (0xFF & sum));//checksum

 Delay(25);
 }  
 }  
我无法在接收端获得任何通信或数据。D3引脚体积仍然很低。 请在这一点上给予指导

该程序使用Serial.write函数与arduino配合运行良好

问候,,
Vijay

您使用的波特率是否正确?你确定你正确连接了TX/RX,并且没有越过它们吗?如果您启用了硬件流控制,是否断言进入XBee的RTS信号?XBee模块是否已通电并接收到足够的电流

如果您在另一台设备(通过FTDI的TTL至USB电缆)上监控XBee传输信号,您是否在启动时看到字节(我相信它在启动时发送调制解调器状态)?如果您监控LPC2148传输信号,是否看到您认为正在发送的字节流(确认您正确驱动UART1)

您是否可以通过在高输出和低输出之间切换
ATD0
,并使用LED或示波器检查,来判断XBee模块是否正在接收您的请求?您是否有任何硬件可以用来监视两个设备之间的串行流,以查看它是否正在发送您认为正在发送的字节?您确定它正在计算正确的校验和(以某种方式转储字节,并尝试通过X-CTU运行它们,以查看它们是否工作)


如果要在LPC2148和XBee模块之间进行大量通信,您可能需要尝试将其移植到平台。它包括多个XBee帧处理层,可以减少您需要编写的软件量。

虽然它不能直接回答问题,但我觉得这可以引导OP缩小问题的原因。另一个用户搜索类似问题时,也会从相同的说明中受益。它一开始只是一个评论,但很快就变得太大了。我是否应该将其分解为多个注释并将其作为答案删除?