您的位置:首页 > 其它

总结——调试STM32F103ZET6及外围传感器_MH-Z14A二氧化碳传感器

2016-11-13 16:47 423 查看

1.概述

模块为MH-Z14A二氧化碳传感器,UART输出,使用USART2。

2.接线

正极(引脚1)接P5的3脚5V,负极(引脚3)接P5的5脚GND,RXD(引脚11)接P5的6脚TXD,TXD(引脚19)接P5的7脚RXD。

3.调试关键问题

(1)波特率9600,数据位8位,停止位1位,校验位无。
(2)通信方式:STM32通过US2_TX发送读取CO2浓度的指令,传感器通过US2_RX返回浓度数据。

(3)读取气体浓度值命令

0xFF  0x01  0x86  0x00  0x00  0x00  0x00
 0x00  0x79

返回值

0xFF  0x86  HIGH  LOW    -        -         -         -     校验值

气体浓度值= HIGH * 256 + LOW

(4)校验和计算

<1>从Byte1 加至Byte7: 0x01 + 0x86 + 0x00 + 0x00 + 0x00 + 0x00 + 0x00 = 0x87

<2>取反:0xFF - 0x87 = 0x78

<3>对取反后加1:0x78 + 0x01 = 0x79

char getCheckSum(char *packet)
{
char i, checksum;
for( i = 1; i < 8; i++)
{
checksum += packet[i];
}
checksum = 0xff – checksum;
checksum += 1;
return checksum;
}


(5)一开始使用USART_SendData函数向串口发送命令数据:

for(i = 0; i < 9; i++)//发送读取CO2气体浓度指令,发送完一个字节后必须延时一段时间传感器才能正确接收到指令
{
USART_SendData(USART2,CO2TxBuffer[i]);
delay_ms(100);
}


发现发送读取CO2气体浓度指令,发送完一个字节后必须延时一段时间传感器才能正确接收到指令,共发送9字节。

后来发现有专门的发送数据函数USART_SendData_Length(USART2,CO2TxBuffer,9):

void USART_SendData_Length(USART_TypeDef* USARTx, u8* Data,u16 length)
{
/* Check the parameters */

u16 i;
for(i=0;i<length;i++)
{
USART_SendData(USARTx, Data[i]);//向串口发送数据
while(USART_GetFlagStatus(USARTx,USART_FLAG_TC)!=SET);//等待发送结束
}
(6)串口2中断处理函数,更新CO2气体浓度数据CO2Data:

void USART2_IRQHandler(void)                //串口2中断服务程序
{
char i, checksum = 0;
if(USART_GetITStatus(USART2, USART_IT_RXNE) != RESET) //接收中断
{
USART_RX_BUF_2[USART2Count++]  = USART_ReceiveData(USART2);//读取9字节到USART_RX_BUF_2
if(USART2Count == 9)
USART2Count = 0;//当接收到第9个字符后,从数组USART_RX_BUF_1的开头开始写

//计算校验和
//1、从Byte1 加至Byte7: 0x01 + 0x86 + 0x00 + 0x00 + 0x00 + 0x00 + 0x00 = 0x87
//2、取反:0xFF - 0x87 = 0x78
//3、对取反后加1:0x78 + 0x01 = 0x79
for( i = 1; i < 8; i++)
{
checksum += USART_RX_BUF_2[i];
}
checksum = 0xff - checksum;
checksum += 1;
}
if(checksum == USART_RX_BUF_2[8])//证明接收到的数据是正确的
CO2Data = USART_RX_BUF_2[2] * 256 + USART_RX_BUF_2[3];

}
(7)代码地址

4.MH-Z14A二氧化碳传感器资料









内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: