野火电子论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 10636|回复: 4

串口收发数据问题

[复制链接]
发表于 2017-4-21 16:02:44 | 显示全部楼层 |阅读模式
火哥,我买了一个气体传感器,通过串口2读它的数据,然后送到PC串口助手上显示(指南者串口1),有几个问题请教一下。请问:1.传感器的TX接串口2的RX,RX接TX?这样对吗。

2.程序配置时是不是只需要配置串口1的TX和串口2的RX?然后利用串口2的中断服务函数读取串口2的值并保存在定义的数组里,在发送至串口1显示?
3.这个传感器是每隔1s主动上传浓度值,共有9个字符,其中第四五个为我需要的浓度数据,请问我要怎么才能将这两位提取出来?我现在脑袋思路有点混乱。。。
谢谢!

传感器协议

传感器协议
回复

使用道具 举报

发表于 2017-4-21 17:46:59 | 显示全部楼层
是这样接线,串口接收到数据缓存到一个大数组,遍历数组检查起始字节和结束字节,得出数据包,然后在数据包内偏移
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-4-21 18:05:49 | 显示全部楼层

  1. void CO_USART_IRQHandler(void)  //串口2中断服务函数
  2. {        
  3.         uint8_t Res;                    //用来暂存接收到的数据
  4.         uint8_t USART_RX_BUF[9];        //用来保存接受到的数据
  5.         static char USART_RX_STA=0,start=0;   //标志符
  6.         
  7.         if(USART_GetITStatus(CO_USARTx,USART_IT_RXNE)!=RESET)   //接收中断
  8.          {        
  9.                 Res = USART_ReceiveData(CO_USARTx);          //读取接收的数据
  10.                  
  11.                 if(Res == 0XFF)                             //判断首位OXFF
  12.                 {
  13.                         USART_RX_STA = 0;                         //数组从0开始保存数据
  14.                         start = 1;                              
  15.                 }
  16.                
  17.     if(start == 1)                            //确定读到了首位0XFF
  18.                 {
  19.                         USART_RX_BUF[USART_RX_STA] = Res;       //开始保存数据
  20.                         USART_RX_STA++;
  21.                         
  22.                         if(USART_RX_STA >=9 && USART_RX_BUF[1] == 0X04)  //判断全部读取完
  23.                         {
  24.                                 printf("CO浓度:%d\n",(USART_RX_BUF[4]*256+USART_RX_BUF[5])*0.1);  //串口1 打印浓度值
  25.                                 start = 0;                                                         //重新开始接收
  26.                                 USART_RX_STA = 0;
  27.                                 USART_RX_BUF[0] = 0;
  28.                         }
  29.                 }
  30.                
  31.          }         
  32. }

复制代码
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-4-21 18:08:25 | 显示全部楼层
@flyleaf 火哥,你帮我看下我这个中断服务函数有问题没 ,我下到开发板上并没有反应,,也不知道是不是传感器的问题
回复 支持 反对

使用道具 举报

发表于 2017-4-22 08:55:13 | 显示全部楼层
一只小蝌蚪 发表于 2017-4-21 18:08
@flyleaf 火哥,你帮我看下我这个中断服务函数有问题没 ,我下到开发板上并没有反应,,也不知道是不是传感 ...

没反应就先不要加这么多条件,一步步调试,先直接把收到的数据打印出来,确认正常了再添加处理
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

联系站长|手机版|野火电子官网|野火淘宝店铺|野火电子论坛 ( 粤ICP备14069197号 ) 大学生ARM嵌入式2群

GMT+8, 2024-9-29 10:17 , Processed in 0.034264 second(s), 26 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表