打印

STM32F USART电平反向

[复制链接]
3729|16
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
tionsa|  楼主 | 2010-7-26 09:50 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
请教下各位DX, 我想把发送USART的时候,开始位为低电平,停止位为高电平修改为开始位为高电平,停止位为低电平.该如何操作.我这么做的目的是为了跟我这边的时序配合.
另此方法得从软件看如何修改设置,硬件已经确定了的.谢谢。
沙发
香水城| | 2010-7-26 09:57 | 只看该作者
怎么可能有这样的电平反向?这样改完之后就不是UART了。

使用特权

评论回复
板凳
tionsa|  楼主 | 2010-7-26 10:02 | 只看该作者
谢谢回复.
情况是这样的。
数据0时间共1.28us, H电平占360ns,L电平占920ns.
数据1时间共1.28us, H电平占960ns,L电平占320ns.
由于这个时间比较特别,用SPI无法做到,所以我就想到用UART设置波特率后满足这个时序要求.根据我这个情况,楼上的有什么建议? (在线等).

使用特权

评论回复
地板
香水城| | 2010-7-26 10:41 | 只看该作者
我暂时没有什么好建议,但是你不妨谈谈如果能够实现USART电平反向,你打算怎么实现?

使用特权

评论回复
5
tionsa|  楼主 | 2010-7-26 10:44 | 只看该作者
我按照一为128ns来发送,然后高和低分别是3和7,算进停止位.这样先发H,在L. 数据格式的话
就是1个开始位+8个数据+1停止位.
这样数据0 就是 1个开始位. 0xC0,和1个停止位.这样发送的。

使用特权

评论回复
6
香水城| | 2010-7-26 10:53 | 只看该作者
如果是这样的话,为什么不能用SPI实现?

如果不能用SPI模块实现,也不能用USART模块的同步方式实现吗?

使用特权

评论回复
7
tionsa|  楼主 | 2010-7-26 10:58 | 只看该作者
SPI那个分频系数不是只有固定的几个选项吗? 可以任意指定?

使用特权

评论回复
8
香水城| | 2010-7-26 11:00 | 只看该作者
那么你就用USART模块的同步方式实现,USART可以比较精细地设置波特率。

使用特权

评论回复
9
tionsa|  楼主 | 2010-7-26 11:04 | 只看该作者
但是你那个时序要求是先发高电平,在发低电平,这样的话,如果软件设置不了的话,我得外部加一个反相器才行

使用特权

评论回复
10
香水城| | 2010-7-26 11:17 | 只看该作者
先发高电平,在发低电平,正好发送完一个字节后是低电平呀。

你先试试USART模块的同步方式,如果不行只能再一个反相器了。

另一个实现办法是使用定时器+DMA实现,把相应的时序计算好放在内存中,再使用DMA逐个送到定时器的寄存器中,通过改变PWM输出的占空比实现。

使用特权

评论回复
11
tionsa|  楼主 | 2010-7-26 11:22 | 只看该作者
那定时器的中断就需要多少时间呢.  这个STM32F的定时器产生不了这个中断.我上次只能到4us

使用特权

评论回复
12
香水城| | 2010-7-26 12:32 | 只看该作者
那定时器的中断就需要多少时间呢.  这个STM32F的定时器产生不了这个中断.我上次只能到4us
tionsa 发表于 2010-7-26 11:22


用中断当然会有问题,所以我才建议你用DMA。

使用特权

评论回复
13
McuPlayer| | 2010-7-26 14:12 | 只看该作者
用上DMA可以纳秒级别了,别老想着中断服务程序

使用特权

评论回复
14
tionsa|  楼主 | 2010-7-27 09:11 | 只看该作者
楼上的能给仔细说说,或者给个例程我看看吗

使用特权

评论回复
15
yzzly| | 2010-7-27 10:15 | 只看该作者
接口都是标准的,怎么搞的这么复杂?

使用特权

评论回复
16
香水城| | 2010-7-27 10:33 | 只看该作者
STM32固件库中有使用DMA操作USART发送与接收的例子。

使用特权

评论回复
17
tionsa|  楼主 | 2010-7-27 17:51 | 只看该作者
好的,谢谢

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

18

主题

45

帖子

0

粉丝