OpenEdv-开源电子网

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

求助,485传感器的测试问题!

[复制链接]

4

主题

73

帖子

0

精华

高级会员

Rank: 4

积分
895
金钱
895
注册时间
2017-7-28
在线时间
139 小时
发表于 2017-10-27 15:27:11 | 显示全部楼层 |阅读模式
20金钱
如题,用原子战舰的485通信例程改的代码无法测试传感器,不知道测试485设备的时候代码上应该注意什么?
#include "led.h"
#include "delay.h"
#include "key.h"
#include "sys.h"
#include "lcd.h"
#include "usart.h"         
#include "rs485.h"       
void sendconfig_buff(void);
u8 modbusbuff[8]={0x01,0x03,0x00,0x00,0x00,0x01,0x84,0x0A};

u32 buff3[8]={0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00};
// rs485buf
int main(void)
{         
        u8 key;

        u8 i=0,t=0,j=0;
        u8 cnt=0;
        u8 len=7;
        u8 rs485buf[8]={0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00};
         
        delay_init();                   
        NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);
        uart_init(9600);         
        LED_Init();                                 
        LCD_Init();                          
        KEY_Init();                                 
        RS485_Init(9600);       
        POINT_COLOR=RED;//éèÖÃ×ÖìåÎaoìé«
        LCD_ShowString(30,130,200,16,16,"KEY0:Send");       

        POINT_COLOR=BLUE;//éèÖÃ×ÖìåÎaà¶é«          
        LCD_ShowString(30,150,200,16,16,"Count:");                       
        LCD_ShowString(30,170,200,16,16,"Send Data:");               
        LCD_ShowString(30,210,200,16,16,"Receive Data:");
        delay_ms(200);                                                                  
        while(1)
        {       
                key=KEY_Scan(0);
                if(key==KEY0_PRES)
                {
                        LED0=!LED0;
                        sendconfig_buff();                       
                         for(j=0;j<8;j++)
                        {   
                             LCD_ShowxNum(20*j+50,300,(modbusbuff[j]),15,16,1);                                         
                         }
                                                         
                  delay_ms(50);
      RS485_Receive_Data(rs485buf,len);   
                       
      for(j=0;j<8;j++)
         {   
//          buff3[j]=rs485buf[j]-'0';
                buff3[j]=rs485buf[j];  
         //  LCD_ShowxNum(30*j+100,100,buff3[j],8,16,1);
                 LCD_ShowxNum(150,20*j+100,(buff3[j]),10,16,1);                                         
         }
                }
        else
                                {}
        }
}
void sendconfig_buff(void)
{
           RS485_Send_Data(modbusbuff,8);
}         

求助吧友,这个传感器24V供电,接线都没问题,在电脑上用串口助手调试是有正确读数返回的,但是用单片机和模块相连就不行了;之前看到吧友说  RS485_Receive_Data(u8 *buf,u8 *len)的参数中要把len去掉,直接用变量,两种方法我都试了 还是没效果。谁能帮帮忙?感激不尽!                           



没有数据读取到

没有数据读取到
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

16

主题

64

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
201
金钱
201
注册时间
2014-9-23
在线时间
15 小时
发表于 2017-10-27 15:49:34 | 显示全部楼层
波特率  校验  停止位 要对应,最好抓下总线的数据  看看传感器有没有应答你,我有写过寄存器版本的代码  要吗 ?
回复

使用道具 举报

32

主题

171

帖子

0

精华

高级会员

Rank: 4

积分
697
金钱
697
注册时间
2017-1-7
在线时间
75 小时
发表于 2017-10-27 17:28:08 | 显示全部楼层
485发送数据和接受数据的时候需要转换电平,转换完之后,延时几百us再接受或者发送数据
回复

使用道具 举报

4

主题

73

帖子

0

精华

高级会员

Rank: 4

积分
895
金钱
895
注册时间
2017-7-28
在线时间
139 小时
 楼主| 发表于 2017-10-27 20:09:25 | 显示全部楼层
有你就足够 发表于 2017-10-27 15:49
波特率  校验  停止位 要对应,最好抓下总线的数据  看看传感器有没有应答你,我有写过寄存器版本的代码   ...

当然要啊 ,太谢谢了!   我加你qq还是?
回复

使用道具 举报

4

主题

73

帖子

0

精华

高级会员

Rank: 4

积分
895
金钱
895
注册时间
2017-7-28
在线时间
139 小时
 楼主| 发表于 2017-10-27 20:59:39 | 显示全部楼层
Jevin乐动 发表于 2017-10-27 17:28
485发送数据和接受数据的时候需要转换电平,转换完之后,延时几百us再接受或者发送数据

传输每个字节的时候都需要延时吗  还是一段命令结尾延时一下?
回复

使用道具 举报

32

主题

171

帖子

0

精华

高级会员

Rank: 4

积分
697
金钱
697
注册时间
2017-1-7
在线时间
75 小时
发表于 2017-10-27 21:01:28 | 显示全部楼层
要改变485的接受和发送状态的时候,改变一下电平,然后延时一下就可以了。接受字节用if(USART_GetFlagStatus(USART2, USART_FLAG_RXNE) == RESET)判断一下就可以
回复

使用道具 举报

4

主题

73

帖子

0

精华

高级会员

Rank: 4

积分
895
金钱
895
注册时间
2017-7-28
在线时间
139 小时
 楼主| 发表于 2017-10-28 08:54:02 | 显示全部楼层
有你就足够 发表于 2017-10-27 15:49
波特率  校验  停止位 要对应,最好抓下总线的数据  看看传感器有没有应答你,我有写过寄存器版本的代码   ...

有一个很奇怪的现象,我按一次按键,示波器上只有一个脉冲信号,貌似是正确的信号没有全发出去,代码上也检查不出来。。。。
F81FB201E95FB3C91314BD9E6C7D944F.png
回复

使用道具 举报

4

主题

73

帖子

0

精华

高级会员

Rank: 4

积分
895
金钱
895
注册时间
2017-7-28
在线时间
139 小时
 楼主| 发表于 2017-10-28 09:17:48 | 显示全部楼层
顶         
回复

使用道具 举报

4

主题

73

帖子

0

精华

高级会员

Rank: 4

积分
895
金钱
895
注册时间
2017-7-28
在线时间
139 小时
 楼主| 发表于 2017-10-28 11:06:06 | 显示全部楼层
像图中这样发送一次(发送8个字节),用示波器看会有8个方波,换言之,和我发送的字节没有关系,不知道这是什么原因,有人遇到过吗?
带冒号.png
3CA1BEEF6BABF87B5635578A444C0811.png
回复

使用道具 举报

4

主题

73

帖子

0

精华

高级会员

Rank: 4

积分
895
金钱
895
注册时间
2017-7-28
在线时间
139 小时
 楼主| 发表于 2017-10-28 11:16:44 | 显示全部楼层
求助!     
回复

使用道具 举报

16

主题

64

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
201
金钱
201
注册时间
2014-9-23
在线时间
15 小时
发表于 2017-11-2 08:44:04 | 显示全部楼层
你这个波形可能是上电瞬间产生的
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-6-8 17:25

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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