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

 

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二氧化碳传感器资料

 

 

 

 

 

 

 

 

有需要请加QQ:1447491726,进行详细的技术交流,共同进步。

 

评论 11
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

大师兄电子工作室

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值