Tx LPC2148 с Xbee в режиме API с Rx Xbee с реле не работает

Я начал работать на lpc2148 с xbee серии 2. На стороне передачи я использую lpc2148 с координатором xbee в режиме API, а на стороне Rx я использую xbee на Shield в режиме маршрутизатора AT. Я хочу, чтобы 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);
 }  
 }  

я не могу получить какие-либо сообщения или данные на моей стороне Rx. Напряжение распиновки D3 все еще низкое. Подскажите пожалуйста по этому пункту...

Эта программа отлично работает с Arduino, используя функцию Serial.write.

С уважением, Виджай


person VijayAndroid    schedule 29.03.2014    source источник


Ответы (1)


Вы используете правильную скорость передачи данных? Вы уверены, что правильно подключили TX/RX и не перепутали их? Если у вас включено аппаратное управление потоком, подается ли сигнал RTS в XBee? Модуль XBee включается и получает достаточный ток?

Если вы отслеживаете сигнал передачи XBee на другом устройстве (компьютер через кабель FTDI TTL-to-USB), видите ли вы байты при запуске (я полагаю, что он отправляет статус модема во время запуска)? Если вы отслеживаете сигнал передачи LPC2148, видите ли вы поток байтов, который, по вашему мнению, вы отправляете (подтверждая, что вы правильно управляете UART1)?

Можете ли вы сказать, получает ли модуль XBee ваши запросы, возможно, переключая ATD0 между высоким и низким выходным сигналом и проверяя с помощью светодиода или области? Есть ли у вас какое-либо оборудование, которое вы можете использовать для мониторинга последовательного потока между двумя устройствами, чтобы увидеть, отправляет ли он байты, которые, по вашему мнению, вы отправляете? Вы уверены, что он вычисляет правильную контрольную сумму (как-нибудь сбросьте байты и попробуйте запустить их через X-CTU, чтобы увидеть, работают ли они).

Если вы собираетесь осуществлять много коммуникаций между LPC2148 и модулем XBee, вы можете попробовать портировать этот Хост-библиотека ANSI C XBee с открытым исходным кодом для платформы. Он включает в себя несколько уровней обработки кадров XBee, что должно уменьшить количество программного обеспечения, которое вам нужно написать.

person tomlogic    schedule 30.03.2014
comment
Хотя это не дает прямого ответа на вопрос, я чувствую, что это помогает ОП сузить причину их проблемы. Другому пользователю, ищущему SO для аналогичной проблемы, будут полезны те же инструкции. Он начинался как комментарий, но быстро разросся. Должен ли я разбить его на несколько комментариев и удалить это как ответ? - person tomlogic; 03.04.2014