OpenEdv-开源电子网

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

关于串口通信和485通信问题,求助

[复制链接]

1

主题

6

帖子

0

精华

新手上路

积分
32
金钱
32
注册时间
2013-6-27
在线时间
0 小时
发表于 2013-6-27 10:17:32 | 显示全部楼层 |阅读模式
用的是开发板的USART2
用了寄存器版的实验24-485实验的串口初始化函数
收发函数是自己写的
实现效果就是收到电脑串口发送的数据后返回给电脑串口,即收什么返回什么
下载后实验发现
1--电脑接开发板的串口通信,结果正常,收到什么就返回什么
2--电脑接开发板的485口,结果是返回数据多了一位0x00。
举例:电脑发送11 22 33 44 55,使用开发板串口,程序返回11 22 33 44 55
         电脑发送11 22 33 44 55,使用开发板485口,程序返回11 22 33 44 55 00

想问下原子哥为什么

附:开发板485芯片后面的120欧姆匹配电阻被我去掉了,因为以前遇到过接匹配电阻后数据多一位0x00的情况。

正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2013-6-27 10:47:29 | 显示全部楼层
你的485是哪两个设备连接?
电脑没有485吧...用了转换模块?
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

1

主题

6

帖子

0

精华

新手上路

积分
32
金钱
32
注册时间
2013-6-27
在线时间
0 小时
 楼主| 发表于 2013-6-27 10:51:59 | 显示全部楼层

电脑接开发板的485口是先接232转485模块的

主要是232是正确的,但用了485就会多一位0x00
回复 支持 反对

使用道具 举报

1

主题

6

帖子

0

精华

新手上路

积分
32
金钱
32
注册时间
2013-6-27
在线时间
0 小时
 楼主| 发表于 2013-6-27 10:53:14 | 显示全部楼层
用示波器看波形也是接收比发送多了一个0x00
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2013-6-27 11:01:00 | 显示全部楼层
在485发送数据的时候,RS485_TX_EN设置之后,加入一点延时(10ms左右)试试吧.
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

1

主题

6

帖子

0

精华

新手上路

积分
32
金钱
32
注册时间
2013-6-27
在线时间
0 小时
 楼主| 发表于 2013-6-27 11:18:14 | 显示全部楼层
还是不行
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2013-6-27 15:06:23 | 显示全部楼层
那就怪了
你干脆做成2个485对接试试,直接不用stm32来控制了,直接电脑-->串口-->485-->485-->串口-->电脑.
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

1

主题

6

帖子

0

精华

新手上路

积分
32
金钱
32
注册时间
2013-6-27
在线时间
0 小时
 楼主| 发表于 2013-7-1 15:10:10 | 显示全部楼层
我现在就是用你说的方法在用
stm32出来是232----转成485-----485----转为232---电脑串口监视。没有多00,实在是奇怪 !

另外问原子哥个问题
main{
init();
while(1){
    if(条件1)
       函数1;
     else if(条件2)
     函数2;
    }

还有一个串口中断函数。
当正在执行函数1或函数2时,程序怎样才能被串口中断函数打断。
我现在在函数2中等待串口的数据是等不到的,只有当退出函数2时,串口中断才开始执行
回复 支持 反对

使用道具 举报

1

主题

6

帖子

0

精华

新手上路

积分
32
金钱
32
注册时间
2013-6-27
在线时间
0 小时
 楼主| 发表于 2013-7-2 17:10:44 | 显示全部楼层
中断问题已找到
程序循环有问题,进了死循环

485问题还未找到
回复 支持 反对

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-7-18 09:20

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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