1、处理器与外部设备通信的两种方式:
1.并行通信-传输原理:数据各个位同时传输。优点:速度快。缺点:占用引脚资源多。
2.串行通信-传输原理:数据按位顺序传输。优点:占用引脚资源少。缺点:速度相对较慢。
2、串行通信按照数据传送方向,分为:
1.单工:数据传输只支持数据在一个方向上传输 。
2.半双工:允许数据在两个方向上传输,但是在某一时刻,只允许数据在一个方向上传输,它实际上是一种切换方向的单工通信;
3.全双工:允许数据同时在两个方向上传输,因此全双工通信是两个单工通信方式的结合,它要求发送设备和接收设备都有独立的接收和发送能力。
3、串行通信的通信方式 :
1.同步通信:带时钟同步信号传输,根据时钟信号传输。-SPI,IIC通信接口
2.异步通信:不带时钟同步信号,需规定波特率来通信。-UART(通用异步收发器),单总线
4、STM32的串口通信接口 :
1.UART:通用异步收发器
UART异步通信方式特点:
全双工异步通信。
分数波特率发生器系统,提供精确的波特率。-发送和接受共用的可编程波特率,最高可达4.5Mbits/s 可编程的数据字长度(8位或者9位);
可配置的停止位(支持1或者2位停止位);
可配置的使用DMA多缓冲器通信。
单独的发送器和接收器使能位。
检测标志:① 接受缓冲器 ②发送缓冲器空 ③传输结束标志 多个带标志的中断源。
触发中断。 其他:校验控制,四个错误检测标志。
2.USART:通用同步异步收发器
5、UART异步通信方式引脚连接方法:
-RXD:数据输入引脚。数据接受。 -TXD:数据发送引脚。数据发送。
6、串口通信过程:
7、STM32串口异步通信需要定义的参数:
起始位 数据位(8位或者9位) 奇偶校验位(第9位) 停止位(1,15,2位) 波特率设置
8、USATR框图:
9、常用的串口相关寄存器:
1.USART_SR状态寄存器
2.USART_DR数据寄存器
3.USART_BRR波特率寄存器
波特率计算方法:
10、串口配置的一般步骤:
串口时钟使能,GPIO时钟使能:RCC_APB2PeriphClockCmd();
串口复位:USART_DeInit(); 这一步不是必须的
GPIO端口模式设置:GPIO_Init(); 模式设置为GPIO_Mode_AF_PP
串口参数初始化:USART_Init();
开启中断并且初始化NVIC(如果需要开启中断才需要这个步骤) NVIC_Init(); USART_ITConfig();
使能串口:USART_Cmd();
编写中断处理函数:USARTx_IRQHandler();
串口数据收发: void USART_SendData();//发送数据到串口,DR uint16_t USART_ReceiveData();//接受数据,从DR读取接受到的数据
串口传输状态获取: FlagStatus USART_GetFlagStatus(USART_TypeDef* USARTx, uint16_t USART_FLAG); void USART_ClearITPendingBit(USART_TypeDef* USARTx, uint16_t USART_IT);
关键字:STM32F1 串口通信 数据传送方向
引用地址:
STM32F1串口通信总结
推荐阅读最新更新时间:2024-11-18 22:03
利用单片机串口实现与PC机的并行通信
引 言 单片机作为嵌入式系统的一种,已在自动化控制以及家电产品等领域得到了广泛的应用。常见的单片机系统都具备一个串行口(如80C51系列),有的还具备了两个串行口(如DS80C320系列)甚至多个串行口。随着单片机技术的成熟,单片机异步串行通信已经广泛应用于点对点通信以及单片机对PC机的通信中。 串行通信虽然有其自身优点:如适合长距离通信,有一定的纠错能力等,但并行通信在短距离(数米范围内)传输过程中的优点是显而易见的。首先串行通信时要设置串口数据,如:串口号(Com1、Com2或者其他串口)、波特率、数据位数、停止位、校验位等等。而且单片机与PC机的串口数据必须一一对等,否则不能传输。而并行传输时,无需上述过程。其次,P
[单片机]
Atmega32简单的串口通信
最近因为做东西,又重新写了一下AVR,在这整理一下 串口通信是这个是比较常用的部分,Atmega32只有一个串口,USART 基本串口编程只需要写两部分,串口的初始化与串口数据接收 串口初始化: 设置波特率,波特率可以通过设置波特率发生寄存器UBRR来确定, UBRR为两字节16位的寄存器,可分为UBRRH和UBRRH,计算公式: UBRRH= (F_CPU/BAUD/16 -1)/256 UBRRL =(F_CPU/BAUD/16 -1)%256 串口的使能,通过写USART控制和状态寄存器B-USARTB,接收使能、发送使能、接收中断使能(可根据需要进行使能)。 使能语句:UCSRB |=(1 R
[单片机]
msp432快速入门第十三节之串口通信
(一)MSP432串口介绍 MSP432P401R并没有专用的串口设备,要使用EUSC模块配置成UART模式,串口通信非常便捷易用,它在嵌入式设备中是最为常见的一种接口,在这里我们把MSP432的串口配置成8in1的模式,8位数据,1位停止位,没有流控选择,波特率为9600,发送方式是直接发送,接收方式是中断接收。 需要注意的是仅仅有EUSCA支持被配置成串口模式。 (二)配置串口 首先打开TI的串口回环(call back)例程,然后参照其进行配置,之后进行测试即可: (1)初始化串口 需要注意的是串口时钟选择了SMCLK,之前的例子中SMCLK已经被配置成12MHz,那么我们需要获取特定波特率的分频数等等,
[单片机]
关于MSP430单片机串口通信丢失数据
研究摸索了接近一个星期,把所遇到的问题写出来以供参考。 最开始看一个官方的串口收发数据的示例,然后自己操作后收发数据老是会丢失一个数据,然后看User’s Guide,取消了函数收发的方法直接用寄存器操作,问题解决。 接下来写一个组帧协议,收发完全正常。但是看上去非常的杂乱就想美化一下,就开始写函数,进行函数调用。好了,这下问题又来了,数据又会丢失。 接近一个星期的思前想后,发现不是自己写的代码有问题,是官方示例的波特率配置问题。大家都知道波特率表示每秒钟传送的码元符号的个数,是衡量数据传输速率的指标,它用单位时间内载波调制状态改变的次数来表示。晶振为1MHz波特率为15200,我自己改成了9600,问题解决。如何配置
[单片机]
通过stm32cubemax配置与mpu6050通信兵读取数据,将数据串口打印
通过stm32cubemax完成配置,与mpu6050通信并读取数据,将数据通过串口打印出来 单片机源程序如下: /* USER CODE END Header */ /* Includes ------------------------------------------------------------------*/ #include main.h #include i2c.h #include stm32f4xx_hal.h #include usart.h #include gpio.h #include stdio.h /* Private includes -----------------
[单片机]
PC/104标准四串口通信板设计
1 引言 PC/104嵌入式控制PC出现于80年代末,并于1992年形成IEEEP966.1标准,它既继承了所有的PC资源,又在结构、体积、功耗、可靠性等方面重新进行了设计,使之与IBM PC完全兼容,并具有了体积小、功耗低、工作温度范围宽、可靠性高等特点。PC/104嵌入式控制PC采用了独特的“自栈式”总线连接,模块化结构,使用起来灵活方便。它所采用的面向对象的硬件设计方法使得在PC/104标准上开发的扩展模块具有更强的通用性和更长的生命期。同台式PC机一样,PC/104嵌入式控制PC也提供两个RS-232串行口。串行通信端口在数据通信中一直扮演极重要的角色,它不仅没有因为时代的进步而被淘汰,反而在规格上愈来愈向其极限挑战。常
[单片机]
上位机串口的通信编程
上位机串口通信主要介绍通信串口的初始化和串口缓冲区数据的读取,因为此处只是作为指令来读取,数据量小,所以缓冲区数据的读取为有数据接收便触发串口的数据接收事件。
[单片机]
STM32F1(Cortex M3内核)位带操作
本文参考《STM32_参考手册》2.3.2 位段 《CM3权威指南》第五章 存储器系统 Cortex M3内核有两个位带区,对应的是片上RAM区和片上外设的最低的1MB地址范围,而位带别名区里面的每个字对应位带区的一个比特,也就是对位带别名区的一个字的操作相当于对位带区对应一个位的置零或者置一。Cortex M3的位带区和位带别名区如下图所示。 从位带区到位带别名区有如下的映射关系: bit_word_addr =bit_band_base + (byte_offset×32) + (bit_number×4) 其中:bit_word_addr是别名存储器区中字的地址,它映射到某个目标位。
[单片机]