Skocz do zawartości

[C] [LPC2106] Komunikacja przez Bluetooth (UART) - mikrokontroler wysyła nieprawidłowy ciąg znaków


e-cma

Pomocna odpowiedź

Cześć,

Próbuję skomunikować się z mikrokontrolerem przez bluetooth podłączony do uarta. Na razie chcę chociaż móc wysyłać informacje z uc i odbierać je na komputerze, ale zamiast "Philips LPC" otrzymuję cały czas ciąg znaków, który w zapisie szesnastkowym wygląda tak: "80 80 F8 80 F8 80 F8 ".

Korzystam z mikrokontrolera NXP LPC2106 i modułu bluetooth HC-06

I takiego programu:


#include "LPC210x.h"
#include "cstdlib"


#define TEMT (1<<6) 
#define LINE_FEED 0xA 
#define CARRIAGE_RET 0xD 

static void Uart0Init() {
//Wybor RXD i TXD 
PINSEL0 |= TXD0_P00_SEL | RXD0_P01_SEL;

//Ustaw predkosci transmisji
U0LCR = (1<<7); //U0DLAB
//baudrate 9600	 czestotliwosc 16M
U0DLL = 105;
U0DLM = 0;

//Dlugosc 8 bit
U0LCR |= (1<<0) | (1<<1);

//Wlacz fifo
U0FCR = (1<<0);
//Wylacz przerwania i kasuj flagi przerwan
U0IER = 0;
U0IIR = 0;
//Wszystkie znaczniki odebrania znaku
U0LSR = 0;
U0LCR = (0<<7); //U0DLAB
}
//Nadawanie znaku
static void Uart0Puts(const char *str) {
//Wysylaj kolejne znaki
while(*str)
{
	//Czekaj az bedzie mozna zapisac do bufora nadajnika
	while (!(U0LSR & 0x20)); //Wyslij znak i przejdz do nast znaku
	U0THR = *str++;
}
}

//Odbior znaku
/*
static void Uart0Gets(char *str) {
char c;
char* strm;
do {

	while (!(U0LSR& 0x20& 0x20));
	c = U0RBR;

	*str++ = c;

	while (!(U0LSR& 0x20));
	U0THR = c;
} while (c != '\r');
strm=(str-1)
*strm = 0;
}*/

//Bufor odebranych znakow
//char buf[256];
/* Funkcja glowna main */
int main(){
char c[]="Philips LPC\n";
int k,i;
char x = 0x1;	
Uart0Init();
IODIR = (1<<20);

while(1)
{
		i=0; 
/* Keep Transmitting until Null character('\0') is reached */ 
		while(c[i]) 
		{
			U0THR=c[i]; 
			i++; 
		} 

	//U0THR=LINE_FEED; 
		//U0THR=CARRIAGE_RET; 

	/* Wait till U0THR and U0TSR are both empty */ 
		while(!(U0LSR & TEMT)){} 
	IOSET = (1<<20);
	for(k=0;k<1000000;++k);

	IOCLR =(1<<20);
	for(k=0;k<1000000;++k);
}	   
return 0;
}

Mógł by ktoś powiedzieć w którym miejscu robię błąd?

Z góry dzięki za pomoc

Link do komentarza
Share on other sites

Hello e-cma!

Looks like HC-06 wants 38400 UART baud rate, not 9600. This helped me to get rid of "80" and "F8" bytes with HC-05 module.

Best regards,
Andrej.

Link do komentarza
Share on other sites

Bądź aktywny - zaloguj się lub utwórz konto!

Tylko zarejestrowani użytkownicy mogą komentować zawartość tej strony

Utwórz konto w ~20 sekund!

Zarejestruj nowe konto, to proste!

Zarejestruj się »

Zaloguj się

Posiadasz własne konto? Użyj go!

Zaloguj się »
×
×
  • Utwórz nowe...

Ważne informacje

Ta strona używa ciasteczek (cookies), dzięki którym może działać lepiej. Więcej na ten temat znajdziesz w Polityce Prywatności.