TC35661蓝牙芯片要正常使用的话,必须先要进行一系列配置,GD32F芯片通过串口和该蓝牙芯片相连,首先需要通过串口将配置命令一条一条的写进去。这些命令就是所谓的 HCI Command。
如果不写程序,单纯就可以通过串口助手发送这些命令即可完成初始化,
大致分为几个阶段 : HCI命令 –> MNG配置 –> SPP 配置
主要是配置MAC地址、设备类型、配对密钥、链路密钥、射频参数等。
这些都涉及到具体的蓝牙协议了,本文就不详细描述了。
下面会放上具体的代码地址。本文主要探讨和C51单片机交互的部分,即初始化完成之后如何通过串口和51单片机交互,也即如何完成数据透传。
GD32F芯片,和蓝牙交互的部分利用了USART3,和单片机交互的利用了USART1,还是直接放上相关部分代码:
#define TX_STR_SIZE 128
volatile uint8_t Uart1_pos=0;
char rx_char[TX_STR_SIZE] = {0x0};
uint8_t count = 0;
uint8_t uart1_is_rx_buffer_empty(void)
{
return !(Uart1_RcvCnt - Uart1_pos);
}
uint8_t uart1_read(void)
{
uint8_t c;
c = Uart1_Buff[Uart1_pos++];
if(Uart1_RcvCnt == Uart1_pos){
Uart1_RcvCnt = Uart1_pos = 0;
}
return c;
}
/** 处理单片机发来的消息,然后通过蓝牙发送出去 **/
/** 单片机 --> 手机 ,主要通过该函数进行透传 **/
void msg_process(void)
{
while(!uart1_is_rx_buffer_empty()&& count < TX_STR_SIZE)
rx_char[count++] = uart1_read();
if(count >= TX_STR_SIZE)
{
count = 0;
return;
}
if(count > 0 && rx_char[count-1] == ':')
{
rx_char[count-1] = 0x0 ;