Ta strona używa ciasteczek (plików cookies), dzięki którym może działać lepiej. Dowiedz się więcejRozumiem i akceptuję

STM32F103 Nucleo + HC-06 brak komunikacji w RealTerm

Autor Wiadomość
swift 



Posty: 3
Wysłany: 10-09-2017, 13:15   STM32F103 Nucleo + HC-06 brak komunikacji w RealTerm

Witam. Mam problem z prawidłową komunikacją pomiędzy portem szeregowym w komputerze i programem Realterm a płytką Nucleo połączoną z modułem bluetooth HC-06. Po ustawieniu w Realterm odpowiednich wartości i otwarciu portu dioda w module zaczyna sygnalizować połączenie, w Realterm zapalają się CTS i DSR, niestety program nie otrzymuje żadnych danych.
Kod źródłowy:

Kod programu: Zaznacz cały
#include "stm32f10x.h"


void sendchar(char c)
{
    while(!USART_GetFlagStatus(USART3,USART_FLAG_TXE));
    USART_SendData(USART3,c);
}

int main(void)
{

    RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC|RCC_APB2Periph_AFIO,ENABLE);
    RCC_APB1PeriphClockCmd(RCC_APB1Periph_USART3,ENABLE);


    GPIO_InitTypeDef gpio;
    GPIO_StructInit(&gpio);
    gpio.GPIO_Mode=GPIO_Mode_AF_PP;
    gpio.GPIO_Pin=1<<10;
    GPIO_Init(GPIOC,&gpio);
    gpio.GPIO_Mode=GPIO_Mode_IN_FLOATING;
    gpio.GPIO_Pin=1<<11;
    GPIO_Init(GPIOC,&gpio);

    GPIO_PinRemapConfig(GPIO_PartialRemap_USART3,ENABLE);

    USART_InitTypeDef uart;
    USART_StructInit(&uart);
    uart.USART_HardwareFlowControl=USART_HardwareFlowControl_None;
    uart.USART_Parity=USART_Parity_No;
    uart.USART_StopBits=USART_StopBits_1;
    uart.USART_WordLength=USART_WordLength_8b;
    uart.USART_BaudRate=9600;
    USART_Init(USART3,&uart);
    USART_Cmd(USART3,ENABLE);

    char x='x';
    for(;;)
    {
        sendchar(x);
    }
}

Polecany artykuł » Druk 3D w olbrzymiej skali!


Postaw piwo autorowi tego posta
 
 
simba92 




Posty: 37
Otrzymał 17 piw(a)
Skąd: Bydgoszcz
Programuję w:
C
Wysłany: 12-09-2017, 13:44   

Jak dokładnie realizujesz komunikacje ? tzn do Nucleo masz podłączony moduł bluetooth HC-06 i od strony portu szeregowego konwerter usb-uart i HC 06 ? i zamierzasz nadawać coś z terminala RealTerm ???

Postaw piwo autorowi tego posta
 
 
swift 



Posty: 3
Wysłany: 12-09-2017, 15:27   

Do pinów uart Nucleo jest podłączony HC-06, a w laptopie dodałem urządzenie Bluetooth HC-06 i został mu przydzielony port szeregowy. Tak, finalnie chciałbym nadawać z terminala Realterm.

Postaw piwo autorowi tego posta
 
 
simba92 




Posty: 37
Otrzymał 17 piw(a)
Skąd: Bydgoszcz
Programuję w:
C
Wysłany: 12-09-2017, 20:47   

Realizowałem ostatnio z powodzeniem komunikacje bluetooth tylko, że od strony komputera miałem konwerter usb uart podłączony z modułem HC06 jako slave, a od strony nucleo moduł HC05 jako master i wszystko działa. W Twoim przypadku HC - 06 jest slavem, a PC masterem, wiec trzeba to wszystko sparować, żeby działało. Po za tym w konfiguracji UARTA w kodzie brakuje ustawienia pola trybu wysyłania i odbierania danych. tzn.
Kod programu: Zaznacz cały
 uart.USART_Mode = USART_Mode_Rx | USART_Mode_Tx;
. Może trzeba jeszcze skonfigurować moduł HC 06 w trybie AT, jak dobrze pamiętam domyślnie prędkość transmisji jest wartość 9600 baud rate (sprawdź w dokumentacji lub inna). Oba urządzenia muszą pracować na tej samej prędkości transmisji. Oprócz tego wysyłając coś do HC 06 nie używa się znaków CR LF z realterm lub tylko któryś ze znaków, testowałem i pamiętam, że to też miało znaczenie. Dioda modułu Hc 06 po sparowaniu świeci sygnałem ciągłym, czekając na sparowanie migocze.

Warto przeczytać » Filtr Kalmana w praktyce - 3 przykłady z kodami!


Ostatnio zmieniony przez simba92 12-09-2017, 20:57, w całości zmieniany 2 razy  
Postaw piwo autorowi tego posta
 
 
swift 



Posty: 3
Wysłany: 13-09-2017, 16:05   

Użyłem górnej części płytki Nucleo, żeby skorzystać z niej jak z konwertera usb-uart, ale po odpaleniu terminala na ekranie odbieram tylko jakieś śmieci. W ten tryb AT też nijak wejść nie potrafię.. wejście EN spięte z 3.3V, wysyłać komendę AT próbowałem zarówno po Bluetooth jak i tym konwerterze i żadnego odzewu. A przy otwarciu portu w komputerze dioda u mnie zmienia stan z migotania na przerwa-2 mignięcia-przerwa.

Postaw piwo autorowi tego posta
 
 
GAndaLF 



Posty: 277
Pomógł: 6 razy
Otrzymał 67 piw(a)
Skąd: Koszalin/Gdańsk
Programuję w:
C, ASM
Należę do:
SKALP
Wysłany: 16-09-2017, 02:53   

Prawdopodobnie HC-06 masz ustawiony na inny baudrate niż 9600. Musisz wysyłać komendę AT na kolejnych wspieranych baudratach i zobaczyć na którym dostajesz odpowiedź. Ja u siebie wysyłałem komendy AT z PC przy użyciu konwertera USB-UART


walczę jak lew, padam jak mucha
Postaw piwo autorowi tego posta
 
 
Wyświetl posty z ostatnich:   
Odpowiedz do tematu
Nie możesz pisać nowych tematów
Nie możesz odpowiadać w tematach
Nie możesz zmieniać swoich postów
Nie możesz usuwać swoich postów
Nie możesz głosować w ankietach
Nie możesz załączać plików na tym forum
Możesz ściągać załączniki na tym forum
Wersja do druku

Skocz do:  

Nie rozwiązałeś swojego problemu? Zobacz podobne tematy: [C] Sterowanie serwo... Funkcja "CONFIG... Programy w c - mobil... JTAG dla procesora A...
lub przeszukaj forum po wybranych tagach: brak, hc06, komunikacji, nucleo, realterm, stm32f103


Powered by phpBB modified by Przemo © 2003 phpBB Group
Popularne kursy: Arduinopodstawy elektroniki