总结——调试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二氧化碳传感器资料
相关文章推荐
- 总结——调试STM32F103ZET6及外围传感器_MAQ400空气质量(异味)数显模块
- 总结——调试STM32F103ZET6及外围传感器_氧气传感器
- 总结——调试STM32F103ZET6及外围传感器_电路图设计问题+SHT10温湿度传感器
- 总结——调试STM32F103ZET6及外围传感器_电路图设计问题+SHT10温湿度传感器
- 总结——调试STM32F103ZET6及外围传感器_PM2.5传感器
- 图像传感器调试经验总结
- STM32F103 bootloader下载调试过程总结
- STM32F103ZET6学习总结……
- STM32F103程序调试过程问题总结
- 调试经验总结-VC下的错误对话框
- S3c2410软件调试总结
- S3c2410软件调试总结
- 关于VPM642的调试问题的总结
- [iphonedev] 一句话总结.GDB为啥不输出调试信息了?
- S3c2410软件调试总结(转载)、启动代码分析大杂烩
- S3c2410软件调试总结、启动代码分析大杂烩
- S3c2410软件调试总结
- 调试经验总结-VC下的错误对话框(陆续更新5.5.2008)
- linux平台调试技术总结。
- javascript在vs2003中调试随笔和javascript使用小总结[转载]