Witam,
Mam problem z połączeniem mojego modułu Meshnetics poprzez UART z PC. Mówiąc dokładnie, mój układ nic nie wysyła do terminala PC. Poniżej przedstawiam schemat mojego połączenia:
Wiem, że od razu zasugerujecie, że PIN-y RXD i TXD powinny być ze sobą połączone. W module Meshnetics-a są jeszcze połączenia wewnętrzne z siedzącym w układzie procesorem Atmega 1281 i zgodnie z dokumentacją modułu, tak właśnie należy podłączać piny (TXD - TXD i RXD - RXD).
Hyper terminal (bo jego używam do połączenia z układem), łączy się z moim układem na porcie COM3 i nic więcej. Dla sprawdzenia połączyłem PIN-y TXD i RXD w FTDI i to co wysłałem z terminalu otrzymałem na nim. Wynika z tego, że PIN RXD modułu MEshnetics nie wykazuje kompletnie żadnej aktywności. Oto kod jaki napisąłem do obsługi UART dla tego modułu:
Polecenia otwierania portu i wysyłania danych wykonywane są w funkcji obsługi timera. Wiem, że ta funkcja się wykonuje bo zapala diodę w takich odstępach czasu w jakich powinna. Funkcja HAL_WriteUsart zwraca wartość 7, choć teoretycznie powinna 8 (funkcja zwraca wartości: -1 jeśli błąd, <0 ilość poprawnie wysłanych bajtów). Mam również 2-gi moduł ale sytuacja jest ta sama. Może ktoś z Was miał taki problem i wie co może być przyczyną? Bo ja już wyczerpałem pomysły
Pozdrawiam
Mam problem z połączeniem mojego modułu Meshnetics poprzez UART z PC. Mówiąc dokładnie, mój układ nic nie wysyła do terminala PC. Poniżej przedstawiam schemat mojego połączenia:
Wiem, że od razu zasugerujecie, że PIN-y RXD i TXD powinny być ze sobą połączone. W module Meshnetics-a są jeszcze połączenia wewnętrzne z siedzącym w układzie procesorem Atmega 1281 i zgodnie z dokumentacją modułu, tak właśnie należy podłączać piny (TXD - TXD i RXD - RXD).
Hyper terminal (bo jego używam do połączenia z układem), łączy się z moim układem na porcie COM3 i nic więcej. Dla sprawdzenia połączyłem PIN-y TXD i RXD w FTDI i to co wysłałem z terminalu otrzymałem na nim. Wynika z tego, że PIN RXD modułu MEshnetics nie wykazuje kompletnie żadnej aktywności. Oto kod jaki napisąłem do obsługi UART dla tego modułu:
static uint8_t usartTxBuffer[8] = "burak287";
HAL_UsartDescriptor_t appUsartDescriptor = {
.tty = USART_CHANNEL_1,
.mode = USART_MODE_ASYNC,
.baudrate = USART_BAUDRATE_38400,
.dataLength = USART_DATA8,
.parity = USART_PARITY_NONE,
.stopbits = USART_STOPBIT_1,
.rxBuffer = NULL,
.rxBufferLength = 0,
.txBuffer = usartTxBuffer,
.txBufferLength = 8,
.rxCallback = NULL,
.txCallback = NULL,
.flowControl = USART_FLOW_CONTROL_NONE,
};
/***************************************
TIMER DEFINITION
***************************************/
void SensorTimerFired(void)
{
appState = APP_I2C_TASK;
if (test==7)
{
GPIO_8_make_out();
GPIO_8_set();
} else {
GPIO_8_clr();
}
HAL_OpenUsart(&appUsartDescriptor);
test = HAL_WriteUsart(&appUsartDescriptor, usartTxBuffer, 8);
HAL_CloseUsart(&appUsartDescriptor);
SYS_PostTask(APL_TASK_ID);
}
Polecenia otwierania portu i wysyłania danych wykonywane są w funkcji obsługi timera. Wiem, że ta funkcja się wykonuje bo zapala diodę w takich odstępach czasu w jakich powinna. Funkcja HAL_WriteUsart zwraca wartość 7, choć teoretycznie powinna 8 (funkcja zwraca wartości: -1 jeśli błąd, <0 ilość poprawnie wysłanych bajtów). Mam również 2-gi moduł ale sytuacja jest ta sama. Może ktoś z Was miał taki problem i wie co może być przyczyną? Bo ja już wyczerpałem pomysły
Pozdrawiam
