OpenEdv-开源电子网

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

串口调试助手发送格式的问题

[复制链接]

9

主题

29

帖子

0

精华

初级会员

Rank: 2

积分
103
金钱
103
注册时间
2015-1-30
在线时间
8 小时
发表于 2015-6-16 11:22:06 | 显示全部楼层 |阅读模式
5金钱
我用串口调试助手测试一个超声波探头是可以用的  二进制发送fc01a100009e,fc01b20000af,fc01c30000c0给探头就会返回距离。我现在用stm32 单片机模仿串口调试助手发送这些二进制给探头:定义u8 buf1[6]={0xfc,0x01,0xa1,0x00,0x00,0x9e},u8 buf2[6]={0xfc,0x01,0xb2,0x00,0x00,0xaf},u8 buf3[6]={0xfc,0x01,0xc3,0x00,0x00,0xc0}  然后通过串口一个字节一个字节发送给探头,发送确实成功了(HEX格式接收到fc 01 a1 00 00 9e fc 01 b2 00 00 af fc01 c3 00 00 c0 )   但是探头没反应 没有返回距离。所以我在想是不是发送格式出错了,希望各位指点,另附图,串口调试助手正确调试时的图。

最佳答案

查看完整内容[请看2#楼]

把 pc 当作探头,用串口软件看看。
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

58

主题

6294

帖子

1

精华

资深版主

Rank: 8Rank: 8

积分
11555
金钱
11555
注册时间
2014-4-1
在线时间
1317 小时
发表于 2015-6-16 11:22:07 | 显示全部楼层
把 pc 当作探头,用串口软件看看。
回复

使用道具 举报

9

主题

29

帖子

0

精华

初级会员

Rank: 2

积分
103
金钱
103
注册时间
2015-1-30
在线时间
8 小时
 楼主| 发表于 2015-6-16 11:53:23 | 显示全部楼层
回复【2楼】xuande:
---------------------------------
试过了,是可以的啊(HEX格式接收到fc 01 a1 00 00 9e fc 01 b2 00 00 af fc01 c3 00 00 c0 )
回复

使用道具 举报

1

主题

6

帖子

0

精华

新手上路

积分
32
金钱
32
注册时间
2015-6-16
在线时间
0 小时
发表于 2015-6-16 11:54:10 | 显示全部楼层
回复【2楼】xuande:
---------------------------------
明显是单片机的串口发送数据不正确啊
专注显示方案 http://ttmcu.taobao.com/
回复

使用道具 举报

1

主题

6

帖子

0

精华

新手上路

积分
32
金钱
32
注册时间
2015-6-16
在线时间
0 小时
发表于 2015-6-16 11:54:48 | 显示全部楼层
你这个电脑显示屏分辨率真小
专注显示方案 http://ttmcu.taobao.com/
回复

使用道具 举报

9

主题

29

帖子

0

精华

初级会员

Rank: 2

积分
103
金钱
103
注册时间
2015-1-30
在线时间
8 小时
 楼主| 发表于 2015-6-16 12:00:28 | 显示全部楼层
回复【4楼】wygabc414:
---------------------------------
大兄弟,哪儿错了啊?应该怎么发送,谢谢了。图片可能和截图工具有关
回复

使用道具 举报

5

主题

25

帖子

0

精华

初级会员

Rank: 2

积分
102
金钱
102
注册时间
2015-5-29
在线时间
10 小时
发表于 2015-6-16 13:55:45 | 显示全部楼层
我只想说楼主你STM32模仿串口助手发送HEX数据的时候是用printf()函数格式输出的吗?
 不过看楼主的情况貌似应该是的,你把程序里面串口发数据用usart_Send()函数发送试试。
回复

使用道具 举报

9

主题

29

帖子

0

精华

初级会员

Rank: 2

积分
103
金钱
103
注册时间
2015-1-30
在线时间
8 小时
 楼主| 发表于 2015-6-16 14:00:49 | 显示全部楼层

回复【7楼】少年梦:
---------------------------------
我是用的这个函数RS485_Send()就是USART2_Send()


void RS485_Send(u8 *buf,u8 len)
{
u8 t;
RS485_TX_EN; //设置为发送模式
   for(t=0;t<len;t++) //循环发送数据
{    
while(USART_GetFlagStatus(USART2, USART_FLAG_TC) == RESET);   
USART_SendData(USART2,buf[t]);

}  
 
while(USART_GetFlagStatus(USART2, USART_FLAG_TC) == RESET);
RS485_RX_CNT=0;   
RS485_RX_EN; //设置为接收模式
}>



main函数里是


定义了三个buf

u8 rs485buf[6]={0xfc,0x01,0xa1,0x00,0x00,0x9e};
 u8 rs485work[6]={0xfc,0x01,0xb2,0x00,0x00,0xaf};
 u8 rs485data[6]={0xfc,0x01,0xc3,0x00,0x00,0xc0};


调用是这个:

RS485_Send(rs485buf,6);
RS485_Send(rs485work,6);
 RS485_Send(rs485data,6);

回复

使用道具 举报

9

主题

29

帖子

0

精华

初级会员

Rank: 2

积分
103
金钱
103
注册时间
2015-1-30
在线时间
8 小时
 楼主| 发表于 2015-6-16 16:45:15 | 显示全部楼层
回复【4楼】wygabc414:
---------------------------------
请问我的发送格式哪儿出错了啊  能指点一下吗
回复

使用道具 举报

9

主题

29

帖子

0

精华

初级会员

Rank: 2

积分
103
金钱
103
注册时间
2015-1-30
在线时间
8 小时
 楼主| 发表于 2015-6-16 17:34:48 | 显示全部楼层
调试出来了,不过不知道怎么调试 出来的 = =!!  搞不清楚状况,反正格式是没有错误的。o(︶︿︶)o 唉  新手伤不起啊
回复

使用道具 举报

9

主题

29

帖子

0

精华

初级会员

Rank: 2

积分
103
金钱
103
注册时间
2015-1-30
在线时间
8 小时
 楼主| 发表于 2015-6-16 17:36:47 | 显示全部楼层
回复【4楼】wygabc414:
---------------------------------
大兄弟啊 我算看出来了 你是打广告的啊,我格式根本没错,可能是一些细节没做完美而已。
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-6-21 14:39

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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