在线时间97 小时
UID384705
注册时间2017-3-8
NXP金币0
TA的每日心情 | 开心 2019-7-20 09:11 |
---|
签到天数: 7 天 连续签到: 1 天 [LV.3]偶尔看看II
高级会员

- 积分
- 642
- 最后登录
- 2019-12-2
|
PM2.5/PM10传感器是串口接口,通信协议处理简单。协议处理如下图所示,传感器0.8~1.2s之间会主动发送7个字节数据,数据格式为:0xAA(头),PM2.5H,PM2.5L,PM10H,PM10L,checkdata,oxff(尾)。不需要主机去获取,传感器有个使能接口,高电平使能,低电平关闭。
- void HLPM025K3_Init(void){
-
- uint32_t Fdiv;
- LPC_SC->PCONP|=(1<<24);//打开串口2功率外设
- LPC_PINCON->PINSEL0 |= (1<<20); //设置P0.10 串口功能管脚
- LPC_PINCON->PINSEL0 |= (1<<22); //设置P0.11 串口功能管脚
- LPC_UART2->LCR = 0x83; // 8 bits, 无校验, 1 个停止位
- Fdiv = (25000000/16)/ 9600 ; // 设置波特, Fpclk: 18MHz
- LPC_UART2->DLM = Fdiv/256;
- LPC_UART2->DLL = (Fdiv%256)+1;
- LPC_UART2->LCR = 0x03; // 锁定波特率
- LPC_UART2->FCR = 0x07; //使能TX与 RX 并初始化FIFO. */
- LPC_UART2->IER = 0x01; //使能接收中断
- NVIC_EnableIRQ(UART2_IRQn);//使能中断
-
- }
复制代码- //协议数据处理
- void get_data(void){
-
- uint16_t PM25=0,PM10=0;
- if(data_length>6){
- if((rx_buffer[0] == 0xAA)&&(rx_buffer[6] == 0xFF))//判断头和尾是否为0XAA,0XFF
- {
- //判断校验值 checkdata=PM2.5H+PM2.5L+PM10H+PM10L
- if(rx_buffer[5] == ((rx_buffer[1] + rx_buffer[2] + rx_buffer[3] + rx_buffer[4])&0xFF))
- {
- PM25=((rx_buffer[1]<<8) | rx_buffer[2]);
-
- PM10=((rx_buffer[3]<<8) | rx_buffer[4]);
- PM25_show(PM25,PM10);
- Clear();//清空缓冲
-
- }
- }
-
-
- }
- }
复制代码
【12】LPC1768_PM2_5PM10显示.rar
(112.24 KB, 下载次数: 4)
|
|