OpenEdv-开源电子网

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

发送长串16进制指令

[复制链接]

2

主题

4

帖子

0

精华

新手入门

积分
32
金钱
32
注册时间
2014-6-12
在线时间
0 小时
发表于 2014-8-3 16:58:02 | 显示全部楼层 |阅读模式
5金钱
       现有一个继电器,通过串口接收16进制指令来控制,如:开第一路 指令为  0x01,0x05,0x00,0x10,0xFF,0x00,0x8D,0xFF;关第一路 指令为关第一路0x01,0x05,0x00,0x10,0x00,0x00,0xCC,0x0F。
     
    现在我将 stm32开发板 串口2 连接到 继电器串口 ,就是希望通过 stm32串口2 发送指令 来控制继电器 的开关。
   
   使用 串口调试工具能正确接受指令 01 05 00 10 FF 00 8D FF。并且通过 串口调试工具 发送 该指令 也能够 控制继电器。 但是 直接通过 stm32 发送指令 给继电器,就是无法控制。  实在是找不出问题 在哪儿,希望大家 能够帮帮我这个新手 , 谢谢!!

最佳答案

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

回复【5楼】dianexiong: --------------------------------- 1 要转换成 相同的电平标准 232/ TTL,  baidu下 就知道, , 单片机之间相连,直接管脚连一起就行了[TTL]。 2 收发 RX TX ,要交叉,  比如 设备1 的RX要接 设备2 的TX, 设备1 的TX要接 设备2 的RX, 如果 你两个设备 同时接电脑 ...
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

36

主题

1263

帖子

1

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
1612
金钱
1612
注册时间
2012-6-15
在线时间
39 小时
发表于 2014-8-3 16:58:03 | 显示全部楼层
回复【5楼】dianexiong:
---------------------------------
1 要转换成 相同的电平标准 232/ TTL,  baidu下 就知道, , 单片机之间相连,直接管脚连一起就行了[TTL]。
2 收发 RX TX ,要交叉,  比如 设备1 的RX要接 设备2 的TX, 设备1 的TX要接 设备2 的RX, 如果 你两个设备 同时接电脑都可以, 那么它们之间直接连接的话 就需要交叉下接口,否则不正常。

如:直接连接的话  单片机 USART1 的 A9 A10,  分别跟对方的PA10,PA9 连接。 GND 要共地
如果有 232 芯片的话, 就 TX->RX    RX->TX, 同样共地
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2014-8-3 23:48:57 | 显示全部楼层
是不是电平匹配的问题?
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

36

主题

1263

帖子

1

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
1612
金钱
1612
注册时间
2012-6-15
在线时间
39 小时
发表于 2014-8-4 10:33:21 | 显示全部楼层
1 收发脚 互换了吗? 考虑是否交叉。
2 电平是否都是很统一标准的? 5V 和3.3v 有的芯片识别 可能会出问题。
3 查看数据格式是否完全正确
回复

使用道具 举报

0

主题

77

帖子

0

精华

初级会员

Rank: 2

积分
144
金钱
144
注册时间
2014-6-7
在线时间
7 小时
发表于 2014-8-4 10:37:12 | 显示全部楼层
接线 
TTL不能直接接232
波特率
回复

使用道具 举报

2

主题

4

帖子

0

精华

新手入门

积分
32
金钱
32
注册时间
2014-6-12
在线时间
0 小时
 楼主| 发表于 2014-8-4 17:03:21 | 显示全部楼层
回复【3楼】aleda303:
---------------------------------
不好意思 我是新手,才开始学这个,还有很多不太懂。所以有很多不清楚 想问的更详细些。
关于第一点:这个收发脚互换,貌似会造成输出数据 混乱

关于第三点:串口发送一连串 16进制 数据 ,我是这么实现的:应该不会有问题吧,
        USART_ClearFlag(USART2,USART_FLAG_TC);

        USART_SendData(USART2,0x01);
while(USART_GetFlagStatus(USART2,USART_FLAG_TC)!=SET);//等待发送结束

USART_SendData(USART2,0x05);
while(USART_GetFlagStatus(USART2,USART_FLAG_TC)!=SET);//等待发送结束

USART_SendData(USART2,0x00);
while(USART_GetFlagStatus(USART2,USART_FLAG_TC)!=SET);//等待发送结束 

USART_SendData(USART2,0x10);
while(USART_GetFlagStatus(USART2,USART_FLAG_TC)!=SET);//等待发送结束

USART_SendData(USART2,0xFF);
while(USART_GetFlagStatus(USART2,USART_FLAG_TC)!=SET);//等待发送结束

USART_SendData(USART2,0x00);
while(USART_GetFlagStatus(USART2,USART_FLAG_TC)!=SET);//等待发送结束

USART_SendData(USART2,0x8D);
while(USART_GetFlagStatus(USART2,USART_FLAG_TC)!=SET);//等待发送结束

USART_SendData(USART2,0xFF);
while(USART_GetFlagStatus(USART2,USART_FLAG_TC)!=SET);//等待发送结束
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2014-8-4 18:59:36 | 显示全部楼层
回复【5楼】dianexiong:
---------------------------------
可以的。
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

2

主题

4

帖子

0

精华

新手入门

积分
32
金钱
32
注册时间
2014-6-12
在线时间
0 小时
 楼主| 发表于 2014-8-5 15:21:27 | 显示全部楼层
回复【7楼】aleda303:
--------------------------------- 
嗯  嘿嘿 谢谢!!
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-7-4 11:56

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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