OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 3147|回复: 9

求助,基于485通信,温湿度采集。

[复制链接]

70

主题

275

帖子

0

精华

高级会员

Rank: 4

积分
729
金钱
729
注册时间
2017-6-20
在线时间
188 小时
发表于 2017-7-23 17:53:54 来自手机 | 显示全部楼层 |阅读模式
自己做了一个温湿度采集模块,用485转232和电脑串口调试都能正常收发,开发板也能正常收发。可是将开发板和采集模块连起来,却不能正常收发了。请大神帮忙给看一下,小弟先谢谢了。下面附上程序:
这是主程序里面的:   sendconfig_buff();                           //发送配置传感器的函数,定义在下面
                            RS485_Receive_Data(rs485buf,len);       //485的接收程序,就是咱实验里面定义好的,我直接拿来用的
                           for(j=0;j<6;j++)
                        {   
                          buff3[j]=rs485buf[j]-'0';                          //buff[] 是我定义的一个u32类型的,rs485buf[j]是一个u8类型的,两个都是含有六个元素。
                          LCD_ShowxNum(20*j+100,100,buff3[j],4,16,1);
                        }

这个是sendconfig_buff()的定义: u8 modbusbuff[6]={0x01,0x03,0x01,0x01,0x31,0x88};
                                              void sendconfig_buff()
                                             {  
                                                RS485_Send_Data(modbusbuff,6);

                                             }
说明:因为温湿度采集器的协议就是发送一个16进制的数据帧:0x01,0x03,0x01,0x01,0x31,0x88;
                                                     它就应该返回一个:01  03 02  8c  36 7b  01 ;
这已经通过串口调试过了,可以返回。
总结:现在主要的原因就是,在主函数里,开发板可以发送数据帧0x01,0x03,0x01,0x01,0x31,0x88;但是程序停在了上面RS485_Receive_Data(rs485buf,len);  这里就不在运行了,所以在屏幕上没显示,请大家帮帮我。   
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

9

主题

162

帖子

0

精华

高级会员

Rank: 4

积分
936
金钱
936
注册时间
2017-3-23
在线时间
256 小时
发表于 2017-7-24 08:36:38 | 显示全部楼层
把开发板,采集模块,和电脑的串口都接在一起再调试看看。
回复 支持 反对

使用道具 举报

70

主题

275

帖子

0

精华

高级会员

Rank: 4

积分
729
金钱
729
注册时间
2017-6-20
在线时间
188 小时
 楼主| 发表于 2017-7-24 08:47:33 来自手机 | 显示全部楼层
未知1908 发表于 2017-7-24 08:36
把开发板,采集模块,和电脑的串口都接在一起再调试看看。

好,我试一下
回复 支持 反对

使用道具 举报

18

主题

155

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
4005
金钱
4005
注册时间
2016-7-8
在线时间
830 小时
发表于 2017-7-24 09:13:21 | 显示全部楼层
好像是收不到485返回的数据
回复 支持 反对

使用道具 举报

9

主题

162

帖子

0

精华

高级会员

Rank: 4

积分
936
金钱
936
注册时间
2017-3-23
在线时间
256 小时
发表于 2017-7-24 09:44:00 | 显示全部楼层

接在一起后,单片机先发指令,看看电脑能不能收到单片机发的指令和模块返回的数据,如果可以就是单片机接收那边出了问题,如果不可以就是发送出了问题。
回复 支持 反对

使用道具 举报

70

主题

275

帖子

0

精华

高级会员

Rank: 4

积分
729
金钱
729
注册时间
2017-6-20
在线时间
188 小时
 楼主| 发表于 2017-7-24 14:20:44 来自手机 | 显示全部楼层
未知1908 发表于 2017-7-24 09:44
接在一起后,单片机先发指令,看看电脑能不能收到单片机发的指令和模块返回的数据,如果可以就是单片机接 ...

我试了一下,电脑能电收到我开发板发送的指令,数据采集模块也能发回一个数据,可是开发板却接受不了数据,整个程序就停在rs485_receive_data这里了
回复 支持 反对

使用道具 举报

70

主题

275

帖子

0

精华

高级会员

Rank: 4

积分
729
金钱
729
注册时间
2017-6-20
在线时间
188 小时
 楼主| 发表于 2017-7-24 14:22:07 来自手机 | 显示全部楼层
yanzhuangsongqi 发表于 2017-7-24 09:13
好像是收不到485返回的数据

对啊,开发板和数据采集模块都能正常收发,可开发板收不到数据采集模块发来的数据
回复 支持 反对

使用道具 举报

9

主题

162

帖子

0

精华

高级会员

Rank: 4

积分
936
金钱
936
注册时间
2017-3-23
在线时间
256 小时
发表于 2017-7-24 16:26:29 | 显示全部楼层
本帖最后由 未知1908 于 2017-7-24 16:32 编辑
天天mdk 发表于 2017-7-24 14:22
对啊,开发板和数据采集模块都能正常收发,可开发板收不到数据采集模块发来的数据

不知道你用的是什么芯片,有些芯片是要有引脚来控制TX和RX的。比如MAX3485
也可以量一下,接收的时候,单片机引脚上有没有波形。如果有,那就是你串口接收程序有问题了
回复 支持 反对

使用道具 举报

70

主题

275

帖子

0

精华

高级会员

Rank: 4

积分
729
金钱
729
注册时间
2017-6-20
在线时间
188 小时
 楼主| 发表于 2017-7-24 16:37:51 | 显示全部楼层
谢谢大家了,这个问题 我已经解决了,是RS485_Recieve_DATA里面那个指针变量  我给弄错了,应该定义成变量,结果定义了一个指针,所以没法实现数据长度的传送。希望大家也有遇到这种问题的可以看到我这个帖子。还有再次感谢给我回复帖子的兄弟们
回复 支持 反对

使用道具 举报

4

主题

73

帖子

0

精华

高级会员

Rank: 4

积分
895
金钱
895
注册时间
2017-7-28
在线时间
139 小时
发表于 2017-10-26 21:51:21 | 显示全部楼层
天天mdk 发表于 2017-7-24 16:37
谢谢大家了,这个问题 我已经解决了,是RS485_Recieve_DATA里面那个指针变量  我给弄错了,应该定义成变量 ...

你好 请问能分享一下你的修改之后的代码吗,我也遇到了一样的问题!!
回复 支持 反对

使用道具 举报

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

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-7-23 03:58

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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