DIY智能插座(四) -- 蓝牙POS编码

2019-07-14 02:17发布

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 ;//读到分隔符后,将':'修改为'