OpenEdv-开源电子网

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

请问大神,战舰V3上的USART1可以与外界的进行UART通讯吗,我这边有一个传感器,是使用UART传输数据的。

[复制链接]

18

主题

79

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
302
金钱
302
注册时间
2016-10-1
在线时间
77 小时
发表于 2016-10-19 10:04:32 | 显示全部楼层 |阅读模式
请问大神,战舰V3上的USART1可以与外界的进行UART通讯吗,我这边有一个传感器,是使用UART传输数据的。
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

头像被屏蔽

345

主题

422

帖子

0

精华

禁止访问

积分
1250
金钱
1250
注册时间
2016-10-14
在线时间
33 小时
发表于 2016-10-20 10:16:48 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
回复 支持 反对

使用道具 举报

8

主题

83

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
238
金钱
238
注册时间
2016-4-4
在线时间
31 小时
发表于 2016-10-19 21:16:59 | 显示全部楼层
你参考下吧,我这款传感器比较简单,上电就会自动发数据
回复 支持 1 反对 0

使用道具 举报

头像被屏蔽

345

主题

422

帖子

0

精华

禁止访问

积分
1250
金钱
1250
注册时间
2016-10-14
在线时间
33 小时
发表于 2016-10-20 09:28:50 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
回复 支持 1 反对 0

使用道具 举报

头像被屏蔽

345

主题

422

帖子

0

精华

禁止访问

积分
1250
金钱
1250
注册时间
2016-10-14
在线时间
33 小时
发表于 2016-10-19 14:28:57 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
回复 支持 反对

使用道具 举报

18

主题

79

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
302
金钱
302
注册时间
2016-10-1
在线时间
77 小时
 楼主| 发表于 2016-10-19 20:23:33 | 显示全部楼层
s8088 发表于 2016-10-19 14:28
当然可以咯,不过你要写服务程序

能不能给个例子呢,,,,,跪求
回复 支持 反对

使用道具 举报

8

主题

83

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
238
金钱
238
注册时间
2016-4-4
在线时间
31 小时
发表于 2016-10-19 21:08:58 | 显示全部楼层
直接在串口中断里面接收传感器的数据就行,把接收到的数据放到数组里里面。
回复 支持 反对

使用道具 举报

8

主题

83

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
238
金钱
238
注册时间
2016-4-4
在线时间
31 小时
发表于 2016-10-19 21:11:55 | 显示全部楼层
首先你要了解你的传感器的驱动代码,然后直接在中断姐收函数里面调用读取传感器数据的函数
回复 支持 反对

使用道具 举报

8

主题

83

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
238
金钱
238
注册时间
2016-4-4
在线时间
31 小时
发表于 2016-10-19 21:19:39 | 显示全部楼层
回复 支持 反对

使用道具 举报

18

主题

79

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
302
金钱
302
注册时间
2016-10-1
在线时间
77 小时
 楼主| 发表于 2016-10-20 10:01:31 | 显示全部楼层
wscs1993 发表于 2016-10-19 21:11
首先你要了解你的传感器的驱动代码,然后直接在中断姐收函数里面调用读取传感器数据的函数

传感器的驱动代码是0xa5 0x2c 0xe1 0xaa 0xbb 0xcc 0xdd,      请问应该如何发送给传感器呢,您看一下我的程序:
u8 Start[U]={0xa5,0x2c,0xe1,0xaa,0xbb,0xcc,0xdd};
u8 Scan[M]={0xa5,0x22,0xe1,0xaa,0xbb,0xcc,0xdd};
void Start_Scan()//开始扫描请求
{
        USART_ClearFlag(USART1,USART_FLAG_TC);               
        for(h=0;h<7;h++)
        {
                        USART_SendData(USART1, Start[h]);
                        while(USART_GetFlagStatus(USART1,USART_FLAG_TC)!=1);
        }
        delay_ms(1000);
        for(g=0;g<7;g++)
        {
                        USART_SendData(USART1, Scan[g]);
                        while(USART_GetFlagStatus(USART1,USART_FLAG_TC)!=1);
        }
}
-----------------------不过这样发没有反应啊。亲能帮忙解答一下吗
回复 支持 反对

使用道具 举报

18

主题

79

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
302
金钱
302
注册时间
2016-10-1
在线时间
77 小时
 楼主| 发表于 2016-10-20 10:04:25 | 显示全部楼层
s8088 发表于 2016-10-20 09:28
例程里面有的,不过传感器的串口协议可能不一样,你需要将例程做相应修改

传感器的串口请求报文是0xa5 0x2c 0xe1 0xaa 0xbb 0xcc 0xdd,   延时100ms,然后再发送0xa5 0x22 0xe1 0xaa 0xbb 0xcc 0xdd   请问应该如何发送给传感器呢,您看一下我的程序:
u8 Start[U]={0xa5,0x2c,0xe1,0xaa,0xbb,0xcc,0xdd};
u8 Scan[M]={0xa5,0x22,0xe1,0xaa,0xbb,0xcc,0xdd};
void Start_Scan()//开始扫描请求
{
        USART_ClearFlag(USART1,USART_FLAG_TC);               
        for(h=0;h<7;h++)
        {
                        USART_SendData(USART1, Start[h]);
                        while(USART_GetFlagStatus(USART1,USART_FLAG_TC)!=1);
        }
        delay_ms(1000);
        for(g=0;g<7;g++)
        {
                        USART_SendData(USART1, Scan[g]);
                        while(USART_GetFlagStatus(USART1,USART_FLAG_TC)!=1);
        }
}
-----------------------不过这样发没有反应啊。亲能帮忙解答一下吗
回复 支持 反对

使用道具 举报

18

主题

79

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
302
金钱
302
注册时间
2016-10-1
在线时间
77 小时
 楼主| 发表于 2016-10-21 11:08:19 | 显示全部楼层
s8088 发表于 2016-10-20 10:16
肯定么反应了。你这个是传感器的指令代码,。你发一个指令命令传感器干什么。不同的指令代表不同的任务, ...

奥奥,这么回事啊,收益了,非常感谢,您能推荐我一些资料吗,或者有什么具体的例子吗
回复 支持 反对

使用道具 举报

头像被屏蔽

345

主题

422

帖子

0

精华

禁止访问

积分
1250
金钱
1250
注册时间
2016-10-14
在线时间
33 小时
发表于 2016-10-21 11:27:40 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
回复 支持 反对

使用道具 举报

18

主题

79

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
302
金钱
302
注册时间
2016-10-1
在线时间
77 小时
 楼主| 发表于 2016-10-21 12:44:56 | 显示全部楼层
s8088 发表于 2016-10-21 11:27
你先看一下传感器的串口协议,看看它的数据结构,一般是由开始字节起始位,(对方要检测到这个起始位才 ...

您好,非常感谢您不遗余力的为我解释,我真的非常收益,再次感谢您的耐心的解答,不过我用串口助手给传感器发送0xa5 0x2c 0xe1 0xaa 0xbb 0xcc 0xdd之后传感器是有反应的,会有数据回馈,但是我用开发版给传感器依次发送这一串命令后,传感器却没有反应,应该如何监控呢?再次感谢您!
回复 支持 反对

使用道具 举报

15

主题

184

帖子

0

精华

高级会员

Rank: 4

积分
647
金钱
647
注册时间
2014-4-29
在线时间
299 小时
发表于 2016-10-21 13:11:49 | 显示全部楼层
开发板上芯片的串口信号通过CH340芯片转换成usb信号后才连到电脑上的。你的硬件线路是怎么连的呢?板子的跳线怎么跳的?传感器出来的接口是排针还是usb座?线序是怎么样的?
回复 支持 反对

使用道具 举报

18

主题

79

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
302
金钱
302
注册时间
2016-10-1
在线时间
77 小时
 楼主| 发表于 2016-10-21 13:55:28 | 显示全部楼层
xianshasaman 发表于 2016-10-21 13:11
开发板上芯片的串口信号通过CH340芯片转换成usb信号后才连到电脑上的。你的硬件线路是怎么连的呢?板子的跳 ...

您好,很感谢您的解答,我用的是战舰版的USART1,传感器出来的接口是排阵分别是+5V  RXD  TXD  GND,我把开发版同CH340芯片连接的跳线帽取下,将传感器的RXD和TXD分别接接TX,RX,+5V接+5V地接地。是这样的,然后通过上面那个程序把请求报文发送过去,但是传感器没有反应!再次感谢您的解答!
回复 支持 反对

使用道具 举报

15

主题

184

帖子

0

精华

高级会员

Rank: 4

积分
647
金钱
647
注册时间
2014-4-29
在线时间
299 小时
发表于 2016-10-21 14:42:24 | 显示全部楼层
chenghuayou 发表于 2016-10-21 13:55
您好,很感谢您的解答,我用的是战舰版的USART1,传感器出来的接口是排阵分别是+5V  RXD  TXD  GND,我把 ...

你的传感器出来的信号是5v的电平吗?单片机的肯定是3.3的,最好测试一下,电平如果不一致需要接个转换电平的芯片或者别的方法。
还有信号线接没接上拉?我以前用过的一种芯片的串口需要空闲时的上拉电平,否则一上电串口缓存就满了,当时也没细究是什么原因,如果找不到别的原因可以试试。
最好还是先用示波器看看信号到底对不对
回复 支持 反对

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-5-24 06:21

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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