完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
|
|
相关推荐
1个回答
|
|
一、通信相关知识
在计算机设备与设备之间或集成威廉希尔官方网站 之间常常需要进行数据传输(通信)。 1.按数据传送的方式,通信可分为串行通信与并行通信两种方式: ⚫ 并行通信:数据各个位同时传输。 ⚫ 串行通信:数据按位顺序一位一位的传输。 ——在数据传输速率相同的情况下,很明显,因为一次可传输多个数据位的数据 ,并行通信传输的数据量要大得多。 ——而串行通信则可以节省数据线的硬件成本(特别是远距离时)以及PCB 的布线面积。 ——并行传输对同步要求较高,而且信号干扰的问题会显著影响通信性能。现在随着通信速率的提高,越来越多的应用场合采用高速率的串行传输。 2.根据数据通信的方向,通信又分为全双工、半双工及单工通信。 ⚫单工:数据传输只支持数据在一个方向上传输,在任何时刻都只能进行一个方向的通信。即一个固定为发送设备,另一个固定为接收设备。 ⚫半双工:两个设备之间可以收发数据,但不能在同一时刻进行。允许数据在两个方向上传输,但是,在某一时刻,只允许数据在一个方向上传输,它实际上是一种可以切换方向的单工通信; ⚫全双工:在同一时刻,两个设备之间可以同时收发数据。允许数据同时在两个方向上传输,因此,全双工通信是两个单工通信方式的结合,它要求发送设备和接收设备都有独立的接收和发送能力。 3. 根据通信的数据同步方式,又分为同步通信和异步通信两种 同步通信和异步通信可以根据通信过程中是否有使用到时钟信号进行简单的区分。 ⚫ 同步通信:带时钟同步信号传输;例如SPI,IIC通信接口。 在同步通信中,收发设备双方会使用一根信号线表示时钟信号,在时钟信号的驱动下双方进行协调,同步数据。通信中通常双方会统一规定在时钟信号的上升沿或下降沿对数据线进行采样。 ⚫ 异步通信:不带时钟同步信号。例如:UART,单总线。 在异步通信中,通信双方要做好约定,如直接在数据信号中穿插一些信号位,或者把主体数据进行打包,以数据帧的格式传输数据,约定数据的传输速率等。 4.通信速率 衡量通信性能的一个非常重要的参数就是通信速率,通常以比特率(Bitrate)来表示,即每秒钟传输的二进制位数,单位为比特每秒bit/s(bps),人们常常直接以波特率来表示比特率。 串口波特率/比特率:9600bps,就是每秒中传输9600bit。 波特率的常用值有2400、9600、19200、115200。 波特率越大,传输速率越快。 二、STM32串口 ⚫ UART(Universal Asynchronous Receiver/Transmitter)通用异步收发器 ⚫ USART(Universal Synchronous/Asynchronous Receiver/Transmitter)通用同步异步收发器 大容量STM32F10x系列芯片,包含3个USARTx(x=1~3)和2个UARTx(x=4、5) 我们平时用的串口通信基本都是UART(全双工异步通信) 1.UART引脚连接方法 1)芯片连接芯片 对于两个芯片之间的连接,两个芯片GND共地,同时TXD和RXD交叉连接。这里的交叉连接的意思就是,一个芯片发送数据,另一个芯片接受数据,芯片1的RxD连接芯片2的TXD,芯片2的RXD连接芯片1的TXD。这样,两个芯片之间就可以进行TTL电平通信。 2)芯片连接PC 芯片常用TTL电平电平标准,PC机常用RS232的电平标准。 相比TTL电平,RS-232可以使用-15V 表示逻辑1,+15V 表示逻辑0,增加了串口通信的远距离传输及抗干扰能力。 若是芯片与PC机相连,除了共地之外,就不能这样直接交叉连接了。尽管PC机和芯片都有TXD和RXD引脚,但是通常PC机通常使用的都是RS232通讯标准,芯片采用的是 TTL电平,所以需要连接一个RS232转换器将TTL电平转换成 PC可以识别的RS232电平,再交叉连接。 3) 芯片与芯片通过DB9接口连接 两个芯片通过RS232标准COM口(也成DB9接口)连接时,需要进行两次TTL电平和RS323电平的转换。 4)USB转TTL串口芯片 2.UART异步通信方式特点: ⚫ 全双工异步通信。 ⚫ 分数波特率发生器系统,提供精确的波特率。发送和接受共用的可编程波特率,最高可达4.5Mbits/s ⚫ 可编程的数据字长度(8位或者9位); ⚫ 可配置的停止位(支持1或者2位停止位); ⚫ 可配置的使用DMA多缓冲器通信。 ⚫ 单独的发送器和接收器使能位。 ⚫ 检测标志:① 接受缓冲器 ②发送缓冲器空 ③传输结束标志 ⚫ 多个带标志的中断源。触发中断。 ⚫ 其他:校验控制,四个错误检测标志。 3.串口通信过程 1) 数据接收过程 外部设备将数据发送到串行输入移位寄存器,串行输入移位寄存器在将数据传送到输入数据缓冲器,CPU在从输入数据缓冲器中读出数据。 2)数据发送过程 CPU将要发送的数据写入输出数据缓冲器,输出数据缓冲器在将数据写入串行输出移位寄存器,串行移位寄存器在将数据输出到外部设备。 4.STM32串口异步通信需要定义的参数 1) 波特率设置:异步通讯中由于没有时钟信号所以两个通讯设备之间需要约定好波特率 2) 起始位:串口通信的一个数据包从起始信号开始,数据包的起始信号由一个逻辑0 的数据位表示,通信双方要约定一致。 3) 停止位:串口通信的一个数据包直到停止信号结束,而数据包的停止信号可由0.5、1、1.5 或2 个逻辑1 的数据位表示,只要双方约定一致即可。 4) 有效数据位(8位) 5) 奇偶校验位(第9位) :在有效数据之后,有一个可选的数据校验位。校验控制使能后可选择奇校验(odd)或偶校验(even)。 补充: 奇偶校验(Parity Check)是一种校验代码传输正确性的方法。根据被传输的一组二进制代码的数位中“1”的个数是奇数或偶数来进行校验。采用奇数的称为奇校验,反之,称为偶校验。采用何种校验是事先规定好的。通常专门设置一个奇偶校验位,用它使这组代码中“1”的个数为奇数或偶数。若用奇校验,则当接收端收到这组代码时,校验“1”的个数是否为奇数,从而确定传输代码的正确性。 三、常用串口寄存器 1.USART_SR状态寄存器 串口的状态可以通过状态寄存器 USART_SR 读取: (1)RXNE(读数据寄存器非空),当该位被置 1 的时候,就是提示已经有数据被接收到了,并且可以读出来了。这时候我们要做的就是尽快去读取 USART_DR,通过读 USART_DR 可以将该位清零,也可以向该位写 0,直接清除。 (2)TC(发送完成),当该位被置位的时候,表示 USART_DR 内的数据已经被发送完成了。如果设置了这个位的中断,则会产生中断。该位也有两种清零方式: 1)读 USART_SR,写USART_DR; 2)直接向该位写 0。 2.USART_DR数据寄存器 3.USART_BRR波特率寄存器 4.USART_CR1控制寄存器 1 四、串口库函数配置 1.串口时钟使能, GPIO 时钟使能 RCC_APB2PeriphClockCmd(); |
|
|
|
只有小组成员才能发言,加入小组>>
3322 浏览 9 评论
3000 浏览 16 评论
3497 浏览 1 评论
9070 浏览 16 评论
4090 浏览 18 评论
1190浏览 3评论
612浏览 2评论
const uint16_t Tab[10]={0}; const uint16_t *p; p = Tab;//报错是怎么回事?
603浏览 2评论
用NUC131单片机UART3作为打印口,但printf没有输出东西是什么原因?
2341浏览 2评论
NUC980DK61YC启动随机性出现Err-DDR是为什么?
1899浏览 2评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-28 04:47 , Processed in 1.169812 second(s), Total 78, Slave 59 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (威廉希尔官方网站 图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号