RA4M2通过ADC实现电压和内部温度测量,并可以通过LCD显示出来。如果将RA4M2通过串口与蓝牙模块通信,可以通过蓝牙透传方式将ADC测量数据发给手机,手机通过小程序或专用APP将数据展示出来。
对于蓝牙模块来说,在通过串口使用AT指令完成工作模式等基本配置后,可以无需进行蓝牙针对性编程,MCU可以串口直接将数据透传到手机。
一、数据交换格式定义
先定义透传数据交换格式,方便MCU和手机传递ADC数据。
数据由16字节表示:
uint8_t four_ADC_UpdateCharData[16]
| 第一个四字节 |
第二个四字节 |
第三个四字节 |
第四个四字节 |
|---|
| 保留 |
ADC采集电压 |
参考电压 |
内部温度 |
void formatSendData(uint32_t x,uint8_t pos)
{
uint8_t i;
a_ADC_UpdateCharData[0] = (x >> 24) & 0xFF;
a_ADC_UpdateCharData[1] = (x >> 16) & 0xFF;
a_ADC_UpdateCharData[2] = (x >> 8) & 0xFF;
a_ADC_UpdateCharData[3] = x & 0xFF;
for(i=0;i<4;i++)
{
four_ADC_UpdateCharData[pos*4+i]=a_ADC_UpdateCharData[i];
}
}
二、MCU端程序
ADC采集
void read_adc_value(void)
{
uint16_t adc_data;
double a0;
int32_t cal127;
uint8_t buf[30]={0};
R_ADC_ScanStart(&g_adc4_ctrl);
while (!scan_complete_flag)
{
;
}
scan_complete_flag = false;
formatSendData(3300,0);
R_ADC_Read(&g_adc4_ctrl, ADC_CHANNEL_4, &adc_data);
a0 = (double)(adc_data*3.3/4095);
cal127=a0*1000;
formatSendData(cal127,1);
sprintf((char*)buf,"%05.2f",a0);
GUI_WriteASCII_BIG(60,5,buf,VGA_WHITE,VGA_RED);
R_ADC_Read(&g_adc4_ctrl, ADC_CHANNEL_VOLT, &adc_data);
a0 = (double)(adc_data*3.3/4095);
cal127=a0*1000;
formatSendData(cal127,2);
sprintf((char*)buf,"%05.2f",a0);
GUI_WriteASCII_BIG(60,55,buf,VGA_WHITE,VGA_GREEN);
R_ADC_Read(&g_adc4_ctrl, ADC_CHANNEL_TEMPERATURE, &adc_data);
double temperature = ADCTEMP_AS_C(adc_data);
sprintf((char*)buf,"%05.2f",temperature);
cal127=1000*temperature;
formatSendData(cal127,3);
GUI_WriteASCII_BIG(60,105,buf,VGA_WHITE,VGA_BLUE);
for (int i = 0; i < 16; i++) {
printf("%c", four_ADC_UpdateCharData[i]);
}
printf("\r\n");
}
采集电压:
R_ADC_Read(&g_adc4_ctrl, ADC_CHANNEL_4, &adc_data);
采集参考电压:
R_ADC_Read(&g_adc4_ctrl, ADC_CHANNEL_VOLT, &adc_data);
采集内部温度:
R_ADC_Read(&g_adc4_ctrl, ADC_CHANNEL_TEMPERATURE, &adc_data);
printf已经重定向串口,并且串口与蓝牙模块连接,通过以下程序将采集的数据输出到蓝牙模块:
for (int i = 0; i < 16; i++) {
printf("%c", four_ADC_UpdateCharData[i]); // %02X 表示2位十六进制,不足补零
}
printf("\r\n");
三、通过小程序处理蓝牙接收到的数据
小程序实现略。思路是小程序扫描蓝牙设备,进行连接。连接成功后,自动获得所有蓝牙特征值,如果是透传notify特征值,则进行订阅。订阅完成后,在MCU每次发送透传数据后,手机会收到16字节交换数据,进行解析并在手机屏显示。


