总结——调试STM32F103ZET6及外围传感器_MAQ400空气质量(异味)数显模块
来源:互联网 发布:淘宝刚开店卖什么好呢 编辑:程序博客网 时间:2024/04/20 03:09
1.概述
模块型号为MAQ400系列,UART输出,使用USART1,上电后需要预热60s后输出数据才稳定。
2.接线
正极(引脚2)接5V,负极(引脚1)接GND,TXD接STM32的RXD(PA10)。
3.调试关键问题
(1)波特率9600,数据位8位,停止位1位,校验位无。
(2)通信为主动上传式每间隔1s发送一次浓度值,命令行格式:
起始位(0xFF) 起始位(0xFF) 地址位(0x01) 气体名称(0x27) 气体浓度高位 气体浓度低位 小数点位 单位 校验位
(3)举例:FF FF 01 1B 00 BB 02 05 DE
气体浓度值=0x00*256+0xBB = 187,小数点为2 位,则实际浓度为1.87mg/m3
(4)校验和计算:(uint8_t)( buff[2] + buff[3] + buff[4] + buff[5] + buff[6] + buff[7])
(5)STM32的USART在接收期间,数据的最低有效位首先从RX脚移进接收移位寄存器,当接收到8位数据后,移位寄存器的值赋给接收数据寄存器(RDR),读数据寄存器中的数据USART_DR本质就是读USART内部的RDR寄存器,当移位寄存器的内容被转移到RDR中后RXNE被置位,此时如果USART_CR1寄存器中的RXNEIE为1,则产生中断,软件中读USART_DR寄存器完成对RXNE位的清除。
(6)串口1中断处理函数,返回气体浓度值:
//空气质量传感器上传数据时就会触发串口1中断void USART1_IRQHandler(void) //串口1中断服务程序{//串口收到的9位数据:起始位(0xFF) 起始位(0xFF) 地址位(0x01) 气体名称(0x27) 气体浓度高位 气体浓度低位 小数点位 单位 校验位u8 checksum = 0;//校验和if(USART_GetITStatus(USART1, USART_IT_RXNE) != RESET) //接收中断(接收到的数据必须是0x0d 0x0a结尾){//(USART1->DR);//读取接收到的数据USART_RX_BUF_1[i++] = USART_ReceiveData(USART1);//读取起始位0xFFif(i == 9)i = 0;//当接收到第9个字符后,从数组USART_RX_BUF_1的开头开始写checksum = USART_RX_BUF_1[2] + USART_RX_BUF_1[3] + USART_RX_BUF_1[4] + USART_RX_BUF_1[5] + USART_RX_BUF_1[6] + USART_RX_BUF_1[7];//校验和if(checksum == USART_RX_BUF_1[8])//证明接收到的数据是正确的gasData = (USART_RX_BUF_1[4] * 256 + USART_RX_BUF_1[5]) / pow(10, USART_RX_BUF_1[6]); } }
(7)代码地址
4.附:MAQ400资料
0 0
- 总结——调试STM32F103ZET6及外围传感器_MAQ400空气质量(异味)数显模块
- 总结——调试STM32F103ZET6及外围传感器_电路图设计问题+SHT10温湿度传感器
- 总结——调试STM32F103ZET6及外围传感器_MH-Z14A二氧化碳传感器
- 总结——调试STM32F103ZET6及外围传感器_氧气传感器
- 总结——调试STM32F103ZET6及外围传感器_PM2.5传感器
- 总结——调试STM32F103ZET6及外围传感器_电路图设计问题+SHT10温湿度传感器
- GSM模块TC35及外围电路设计
- 传感器——ATGM332D 北斗定位模块
- 转载:异味代码到底有多糟糕?——衡量代码异味的影响
- arduino传感器数据即插即采方案及数据分析——SD卡模块、大气压模块、双温度计模块与PM2.5模块
- 20170716——调试NRF51822蓝牙模块总结
- 20170717——NRF51822蓝牙模块调试成功总结
- STM32F103ZET6学习总结……
- GPRS 模块调试总结
- 无线模块调试总结
- 空气质量
- 空气质量
- 传感器调试
- 1639: [Usaco2007 Mar]Monthly Expense 月度开支
- uva1121 Subsequence
- 使用行为树(Behavior Tree)实现游戏AI
- 数据结构实验之链表二:逆序建立链表
- TypeError: ‘NoneType’ object is not iterable
- 总结——调试STM32F103ZET6及外围传感器_MAQ400空气质量(异味)数显模块
- 在Ubuntu中创建网桥
- Mysql5.7版本,服务无法启动。
- 大型网站架构技术概要
- 数据结构实验之链表三:链表的逆置
- 【二次开发】如何使用C#进行CATIA二次开发
- binary search tree interview
- 初学者之CSS学习(二)CSS选择器
- WebService SOAP WSDL UDDI 使用php的curl、PHP5的SoapClient实现同步