历史上的今天
今天是:2025年04月09日(星期三)
2019年04月09日 | STM32的数据传输外设:USART、I2C、SPI三种常见接口的学习
2019-04-09 来源:eefocus
一、USART串行接口
串行接口分为异步串行接口和同步串行接口两种,其中异步串行接口统称为通用异步收发器接口UART,具有同步功能的UART(包含时钟信号SCLK)称为通用同步/异步收发器接口USART。
USART的电气特性标准包括RS-232C、RS422、RS423和RS485等,其中RS-232C是最常见的串行通信接口(台式机的显示器与主机的连接线好像就是RS232吧)
RS232有9个引脚,当然最常用的只有三个:RXD(接收数据)、TXD(发送数据)、GND(用来共地);而RS232的主要指标有两个:数据速率和数据格式。数据速率就是我们设置的波特率,而数据格式便是我们设置的起始位、数据位、校验位、停止位;
因为UART是挂载在APB1上的,所以我们使用其传输数据的时候,要先开启相应的时钟。但是不要忘了,UART是需要用到GPIO接口的,所以我们还需要开启GPIO的时钟,并且先初始化GPIO接口,再初始化USART。
至于USART使用哪些GPIO引脚,我就不赘述了,网上随便一查就能知道。
当我们程序需要对USART进行操作的时候,我们若通过寄存器进行操作的话,那么通过查询USART寄存器的表便可以慢慢书写下来,而通过库函数的话,通过正点原子的例程也可以很清楚的学习到。
我们只需要知道在我们的主函数里先使用初始化函数,将USART初始化完成,然后接收数据的话通过串口中断来完成,根据项目设置的接收结束标志,把接收结束标志位置1,在主函数中通过查询该标志位的真假来完成接收。
而发送的话,我们既可以用重定向printf来发送数据(但是我不建议实时系统或者系统资源比较小的时候使用,因为该方法会使程序耗费的资源大大增加);也可以通过自己写发送函数,通过传入字符串指针,通过对指针的查询,来逐字节输出到USART->DR,再查询USART->SR来判断是否发送成功,从而发送下一字节。
二、I2C内部集成总线接口
内部集成电路总线接口I2C是通信控制领域广泛采用的一种标准,连接在总线上的每一个设备都有唯一的7/10位地址。
I2C采用一根双向串行数据线SDA和一根双向串行时钟线SCL实现主/从设备间的多主串行通信。
而I2C所要学习的也正是其各个时期的时序以及数据线的高低电平变动:
I2C总线在传输数据的过程中一共有三种信号:开始信号、结束信号、应答信号。
开始信号:SCL为高电平时,SDA由高电平向低电平跳变,开始传输数据。
结束信号:SCL为高电平时,SDA由低电平向高电平跳变,结束传输数据。
应答信号:接收数据的IC在接收到8bit的数据后,向发送数据的IC发出一个特定的低电平脉冲,表示已经接收到数据。例如CPU向受控单元发出一个信号后,等待受控单元发出一个应答信号,CPU接收到应答信号则再根据实际情况决定是否发送下一个信号;若没有接收到应答信号,则可以判断受控单元出现了故障。
这三种信号里,起始信号是必须需要的,而结束信号和应答信号都可以视情况不要。

而使用I2C的时候肯定是要先初始化,初始化的时候我们先初始化GPIO的时钟,然后根据时序图来写出起始信号,结束信号与应答信号,而向从IC写数据与读数据,这些函数在正点原子里都有写,我就不占篇幅赘述啦。
三、SPI串行设备接口
SPI在工业控制领域的应用也可以说是非常多的,SPI可以实现主设备或从设备协议,并且它是一种典型的全双工数据传输方式,其传输的正确性通过串行时钟SCK来保证。当配置为主设备时,SPI可以连接多达16个独立的从设备,发送数据和接收数据寄存器的宽度可以设置为8位或者16位。
SPI使用四根线来实现串行通信:两根数据线、一根时钟线、一根控制线
主出从入MOSI:主设备输出数据,从设备输入数据
主入从出MISO:主设备输入数据,从设备输出数据
串行时钟SCK:主设备输出,从设备输入,用于同步数据位
从设备选择NSS:主设备输出,从设备输入,用来选择哪一个从设备与主机通信。
并且SPI的接口时序也由两个很重要的参数决定:时钟极性与时钟相位
时钟极性为0时初始电平是低电平,为1时初始电平是高电平;时钟相位为0时第一个边沿采集数据,为1时第二个边沿采集数据。

上一篇:STM32 I2C 难点
史海拾趣
|
随着全球信息化的发展,数字农业成为了现代农业发展的新潮流。 数字农业是一个集信息化、数字化、网络化、自动化等多种现代高新技术为一体的计算机管理和应用系统。它对农业生产中的现象、过程进行模拟,达到合理利用农业资源,降低生产成本,改 ...… 查看全部问答> |
|
Fiber Optic Communication Systems Fiber Optic Communication Systems Fiber-Optic Communication Systems, 3rd Edition Govind P. Agrawal ISBN: 978-0-471-21571-4 Hardcover 576 pages June 2002 目录: Preface. 1. Introduction. 1.1 Historical Perspective. 1. ...… 查看全部问答> |
|
记得前几天有个网友问我有没有最好的办法找个XXID回复过的帖子,发表过的帖子呢!我看了一下目前咱们论坛只支持查资料搜索某个ID发表的帖子, 但是回复过的我没有发现,各版主有没有找到办法呢?… 查看全部问答> |
|
如题, 俺现在已经能够准确地分拆它的每个视频单元(CELL),但我需要的是按章节(Charpter)来进行分拆, 这需要解析它的IFO文件, 有没有朋友熟悉这方面的, 提点一下, 不胜感谢!… 查看全部问答> |
|
我用板子带的线(一头公,一头母)进行传输都可以。 但我自己买的两根线(一根线为全公,一根线为全母),连接后传输,就连不通了。 难道线有232和485之分吗? 我要求的是PC端和板子间传输,板子的串口也是232的。… 查看全部问答> |
|
我做pc上位机程序 通过串口与51单片机通信 涉及到通行协议不太明白怎么弄。 请问如果自定义pc与单片机通信的协议 要定义些什么啊 不太清楚 能详细点最好 谢谢… 查看全部问答> |
|
环境:S3C2440+EVC4.0+SP4+PB5.0 NAND Flash 问题: 添加了Hive-Based Registryz组件,添加FAT File System组件 platform.reg 如下: ; HIVE BOOT SECTION [HKEY_LOCAL_MACHINE\\i ...… 查看全部问答> |




