OpenEdv-开源电子网

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

求助一个问题,我想用这个STM32板子实现485通信,有一些问题不明白。

[复制链接]

6

主题

10

帖子

0

精华

初级会员

Rank: 2

积分
54
金钱
54
注册时间
2012-4-24
在线时间
0 小时
发表于 2012-7-19 19:15:18 | 显示全部楼层 |阅读模式
我自己外接了一个MAX485的芯片,是不是可以只用一个IO口就可以传输信号呢?
一个IO口,经过MAX485之后就变成了一高一低2个信号。

我想实现的功能是用STM32控制外部的485接口的外设,相关的通信协议应该怎么做呢?发送和接受数据等等。



由于正点原子的例程里面没有485的。
原子哥如果可以的话把代码可不可以发我一个。感激不尽。

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

使用道具 举报

6

主题

10

帖子

0

精华

初级会员

Rank: 2

积分
54
金钱
54
注册时间
2012-4-24
在线时间
0 小时
 楼主| 发表于 2012-7-19 19:15:57 | 显示全部楼层
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2012-7-19 19:32:08 | 显示全部楼层
回复【楼主位】冠希学STM32:
---------------------------------
485是AB信号差分传输的.
你只要有一个IO控制收发,其他和串口一模一样.
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

6

主题

10

帖子

0

精华

初级会员

Rank: 2

积分
54
金钱
54
注册时间
2012-4-24
在线时间
0 小时
 楼主| 发表于 2012-7-19 19:45:44 | 显示全部楼层
回复【3楼】正点原子:
---------------------------------
假如说我是用PA11口控制收发。波特率9600.PA11口并没有复用USART啊。
请问那应该设置哪些东西呢?
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2012-7-20 00:31:09 | 显示全部楼层
回复【4楼】冠希学STM32:
---------------------------------
485芯片.RE和DE接在一起记为X
然后发送端,设置X为1.
接收端,设置X为0.
然后就当成串口用就是了.只是是单工的...
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

4

主题

39

帖子

0

精华

初级会员

Rank: 2

积分
75
金钱
75
注册时间
2014-4-24
在线时间
0 小时
发表于 2014-6-9 14:51:53 | 显示全部楼层
回复【5楼】正点原子:
---------------------------------
原子哥,你有没有用过RY485这个芯片,它是一个无极性、不区分AB的485芯片,它可以自动识别发送还是接收,不需要接到IO口上进行高低电平设置,但是目前的问题是,我不知道在程序中怎么判断发送还是接收
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2014-6-9 22:35:57 | 显示全部楼层
回复【6楼】小崔:
---------------------------------
没用过.
这个好处理吧,你就完全当成一个全双工串口来用就是了,只是如果你正在接受数据,就不要去发送数据了.
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

4

主题

39

帖子

0

精华

初级会员

Rank: 2

积分
75
金钱
75
注册时间
2014-4-24
在线时间
0 小时
发表于 2014-6-10 14:26:46 | 显示全部楼层
回复【7楼】正点原子:
---------------------------------
原子哥,STM32是不是不能同时发送和接收数据?它只有一个数据寄存器USART_DR,如果同时发送和接受,数据会不会紊乱啊?
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2014-6-10 23:15:19 | 显示全部楼层
回复【8楼】小崔:
---------------------------------
可以的
USART->DR,实际上是有2个寄存器的
TDR
RDR
读的时候,读USART->RDR;
写的时候,写USART->TDR;
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

4

主题

39

帖子

0

精华

初级会员

Rank: 2

积分
75
金钱
75
注册时间
2014-4-24
在线时间
0 小时
发表于 2014-6-11 08:47:16 | 显示全部楼层
回复【9楼】正点原子:
---------------------------------
谢谢原子哥,我也在datasheet上看到确实是由这两个寄存器组成,但是在stm32f10x_usart.c文件中,这样写USARTx->TDR = (Data & (uint16_t)0x01FF);会出错,说没有TDR和RDR,提示错误是..\STM32F10x_FWLib\src\stm32f10x_usart.c(599): error:  #136: struct "<unnamed>" has no field "TDR",难道说不是在这边修改?
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2014-6-11 20:47:33 | 显示全部楼层
回复【10楼】小崔:
---------------------------------
这两个是"隐型"的...
对应到C语言代码
你不用考虑TDR还是RDR,硬件自动处理了.
读DR,硬件就会返回RDR给你.
写DR,硬件就会写到TDR去.
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

4

主题

39

帖子

0

精华

初级会员

Rank: 2

积分
75
金钱
75
注册时间
2014-4-24
在线时间
0 小时
发表于 2014-6-12 09:34:15 | 显示全部楼层
回复【11楼】正点原子:
---------------------------------
哦,明白了,谢谢原子哥的耐心指点
回复 支持 反对

使用道具 举报

2

主题

7

帖子

0

精华

初级会员

Rank: 2

积分
90
金钱
90
注册时间
2016-3-4
在线时间
21 小时
发表于 2016-3-4 13:08:04 | 显示全部楼层
原子哥,我在STM32中文参考手册中看到,对于串口2的读写转换的IO口是PA4,如果用重映像功能的话可以用PD7。但是在在485通信代码中,您好像没使用重映像就直接使用PD7作为操控读/写转换的IO口了,这样可以吗?
回复 支持 反对

使用道具 举报

2

主题

7

帖子

0

精华

初级会员

Rank: 2

积分
90
金钱
90
注册时间
2016-3-4
在线时间
21 小时
发表于 2016-3-4 13:13:02 | 显示全部楼层
正点原子 发表于 2014-6-11 20:47
回复【10楼】小崔:
---------------------------------
这两个是"隐型"的...
对应到C语言代码
你不用考虑TD ...


原子哥,我在STM32中文参考手册中看到,对于串口2的读写转换的IO口是PA4,如果用重映像功能的话可以用PD7。但是在在485通信代码中,您好像没使用重映像就直接使用PD7作为操控读/写转换的IO口了,这样可以吗?
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2016-3-6 22:40:06 | 显示全部楼层
tieshou200 发表于 2016-3-4 13:13
原子哥,我在STM32中文参考手册中看到,对于串口2的读写转换的IO口是PA4,如果用重映像功能的话可以用P ...

如果支持重映射的话,可以使用
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-6-20 13:49

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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