module Bluetooth SPBT2632C2A
J'ai un module Bluetooth que j'utilise en "Cable Replacement"
c'est à dire en protocole SPP pour relier un microcontrôleur (ou équivalent) au PC équipé de BT.
http://www.st.com/web/en/catalog/sense_power/FM1968/CL1976/SC1324/PF253470?s_searchtype=keyword#
http://fr.farnell.com/stmicroelectronics/spbt2632c2a-at2/module-bluetooth-class-2/dp/2428785
C'est un module intéressant car il est petit, antenne pcb intégré, pas trop cher (19 USD), bien que sur ebay y a encore des modules moins chers...
et surtout on peut le souder à la main, car il a des pins du type : demi pad
pas comme le module LMX9838 qui est en LGA et donc où on doit avoir un four à refusion pour le souder...
Il s'alimente en 3.3V où même 2.5 V mais est tolérant à 5V sur ses pins RX, TX, RTS, CTS (que j'ai câblé à la masse car je n'utilise pas de contrôle de flux matériel, _je sais, c'est pas bien ;-) mais c'est plus simple : 3 fils suffisent après avec le host.
Il est livré par défaut en 115200 bds
mais j'ai voulu le reprogrammer en 9600 bds en envoyant des commandes AT depuis le host (microcontrôleur dspic)
je ne comprenais pas pourquoi il n'entrait pas en séquence de commande ("Escape sequence" ou séquence d'échappement ne marchait pas)
En fait il faut vraiment envoyer, sans les caractères \r\n ni de " "
^#^$^%
et attendre 2s
puis envoyer des ordres comme le passage par défaut en 9600 bds (c'est ce que je voulais) : AT+AB ChangeDefaultBaud 9600
puis repasser en mode mode Bypass (câble replacement)
alors qd on allume par défaut il est en 9600 (au lieu de 115200) et aussi en mode Bypass, c'est à dire câble replacement
un bout de code, la séquence en commentaire ne doit être faite qu'une seule fois pour sa reprogrammation
void InitUART ()
{
U1MODE = 0x8000; // enable UART1, 8 bits, 1 stop bit, no parity, RX normal
U1STA = 0x0000;
U1BRG = ((FCY/16)/BAUD) - 1; // set baud rate
RXPtr = &InData[0]; // point to first char in receive buffer
Flags.CheckRX = 0; // clear rx and tx flags
_U1RXIF = 0; // clear interrupt flag
_U1RXIE = 1; // enable RX interrupt
_U1TXIF = 0; // clear interrupt flag
Flags.SendTX = 0;
Flags.SendData = 0; // clear flag
SeqComm=SeqCommMax;
_UTXEN = 1; // Initiate transmission
//// Reprogram default Baud of St SPBT2632C2A (ONCE only)
// TXPtr =&"^#^$^%";
// SendMsg();
//DelayNmSec(10000);
//// TXPtr =&"AT+AB ChangeBaud 9600\r\n";
// TXPtr =&"AT+AB ChangeDefaultBaud 9600\r\n";
// SendMsg();
// TXPtr =&"AT+AB Bypass\r\n";
// SendMsg();
c'est à dire en protocole SPP pour relier un microcontrôleur (ou équivalent) au PC équipé de BT.
http://www.st.com/web/en/catalog/sense_power/FM1968/CL1976/SC1324/PF253470?s_searchtype=keyword#
http://fr.farnell.com/stmicroelectronics/spbt2632c2a-at2/module-bluetooth-class-2/dp/2428785
et surtout on peut le souder à la main, car il a des pins du type : demi pad
pas comme le module LMX9838 qui est en LGA et donc où on doit avoir un four à refusion pour le souder...
Il s'alimente en 3.3V où même 2.5 V mais est tolérant à 5V sur ses pins RX, TX, RTS, CTS (que j'ai câblé à la masse car je n'utilise pas de contrôle de flux matériel, _je sais, c'est pas bien ;-) mais c'est plus simple : 3 fils suffisent après avec le host.
Il est livré par défaut en 115200 bds
mais j'ai voulu le reprogrammer en 9600 bds en envoyant des commandes AT depuis le host (microcontrôleur dspic)
je ne comprenais pas pourquoi il n'entrait pas en séquence de commande ("Escape sequence" ou séquence d'échappement ne marchait pas)
En fait il faut vraiment envoyer, sans les caractères \r\n ni de " "
^#^$^%
et attendre 2s
puis envoyer des ordres comme le passage par défaut en 9600 bds (c'est ce que je voulais) : AT+AB ChangeDefaultBaud 9600
puis repasser en mode mode Bypass (câble replacement)
alors qd on allume par défaut il est en 9600 (au lieu de 115200) et aussi en mode Bypass, c'est à dire câble replacement
un bout de code, la séquence en commentaire ne doit être faite qu'une seule fois pour sa reprogrammation
void InitUART ()
{
U1MODE = 0x8000; // enable UART1, 8 bits, 1 stop bit, no parity, RX normal
U1STA = 0x0000;
U1BRG = ((FCY/16)/BAUD) - 1; // set baud rate
RXPtr = &InData[0]; // point to first char in receive buffer
Flags.CheckRX = 0; // clear rx and tx flags
_U1RXIF = 0; // clear interrupt flag
_U1RXIE = 1; // enable RX interrupt
_U1TXIF = 0; // clear interrupt flag
Flags.SendTX = 0;
Flags.SendData = 0; // clear flag
SeqComm=SeqCommMax;
_UTXEN = 1; // Initiate transmission
//// Reprogram default Baud of St SPBT2632C2A (ONCE only)
// TXPtr =&"^#^$^%";
// SendMsg();
//DelayNmSec(10000);
//// TXPtr =&"AT+AB ChangeBaud 9600\r\n";
// TXPtr =&"AT+AB ChangeDefaultBaud 9600\r\n";
// SendMsg();
// TXPtr =&"AT+AB Bypass\r\n";
// SendMsg();
--
Commentaires
Enregistrer un commentaire