微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > ARM技术讨论 > usart总结

usart总结

时间:10-02 整理:3721RD 点击:
USART是两线全双工数据传输。


usart的时钟是通过设置波特率来设置的,要是两方的时钟一样,及设置相同的波特率,是传输信息正确,当usart基本配置好以后,TX所对应的IO口为高电平,而在开始工作起始位时为低电平,



波特率的设置


在配置的时候要先配置GPIO口,及其相对应的模式,及要用到的GPIO口



如下:


然后配置基本的GPIO口:


发送直接用库函数就能发送数据,在发送前必须判断发送数据寄存器空标志位 ,只有标志位为一时,代表发送寄存器中有数据,才能发送,如下:


接受数据则要设置中断,当有数据传送过来时,程序就马上会跳到中断中,来接收数据,


并在stm32f10x_it.c中写入接收程序,


以上为非DMA模式。
如果要用DMA模式的情况下,就要配置地址





通过基地址和地址偏移可以算出地址,
如果为USART1的话,则地址为0x40013804
在配置USART的话,就要开启接收和发送的DMA功能
基本配置如下:


对于发送的DMA配置过程在中文参考手册中有说明


大概也就是对开启dma相应通道



其基本配置为如下:


对于接收的DMA配置过程在中文参考手册中有说明:


如下为程序配置:



注:在DMA配置中,接收为循环模式并且在开始就要打开,发送则要根据情况设置。

接下来就是多级通信了,在多级通信中,没有接受任务的机子就要设置成静默模式,该位是由 USART_CR1寄存器中的RWU位来设置,


硬件连接方法很简单,主机的TX输出与从机的RX端口直接相连,从机TX端口要经过与非门与主机RX端口连接
在设置中,要先将从机设置为静默模式,并设置地址标记唤醒 或空闲总线唤醒
空闲总线唤醒特点:
空闲帧唤醒可以同时唤醒所有从机,在从机处于静默模式时发送空闲帧(即所有位均为1的数据),唤醒多个从机,开始动作,实现多个从机同步工作,而不能去单独去选择为那台机子发送数据,其时序图为:


地址标记唤醒特点:
地址唤醒可以唤醒单个从机,不同地址唤醒不同从机,在从机静默时发送地址帧,从机自动对比地址,如果地址配对正确则该从机唤醒,否则继续进入静默。这样只有被寻址者才被激活,来接收随后的数据,这样就可以减少由未被寻址的接收机器参与带来的多余的USART服务开销,其时序图为:


其工作原理为在发送数据前,要先发送一个地址,然后从机自动校验是否与自己的地址相同,如果相同则从静默模式唤醒,并开始接收数据,如若地址不匹配则从机再次进入静默模式。这种模式下,MSB为1的字节被认为是地址,否则被认为是数据(MSB一般为数据传送的最高位,8位传送则MSB为第八位;9位传送则MSB为第九位)。在一个地址字节中,目标接收者的地址放在低4位。
而程序基本配置为(主要为从机):



主机的话就是要在发送前先发送一个地址。

好难啊

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top