| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 嵌入式 -> STM32—串口协议、串口外设 -> 正文阅读 |
|
[嵌入式]STM32—串口协议、串口外设 |
STM32—串口协议、串口外设文章目录10.1 串口协议10.1.1 通信接口
以下列出的仅是最常用、最简单的配置
10.1.2 串口通信
10.1.3 硬件电路
10.1.4 电平标准电平标准是数据1和数据0的表达方式,是传输线缆中人为规定的电压与数据的对应关系,串口常用的电平标准有如下三种:
10.1.5 串口参数及时序
10.1.6 串口时序10.2 串口外设10.2.1 USART简介
10.2.2 USART框图引脚:
USART的引脚分配如下表,注意,只有USART1挂载到APB2高速总线上,其他的串口都是在APB1总线。 数据寄存器:USART_DR,是一个对应两个寄存器(USART_TDR和USART_RDR),寄存器的低9位[0:8]位数据有效,由USART_CR1的M位设置,当M = 0时,表示8个数据位(最常用),M = 1时表示9个数据位(很少用)。因为有两个寄存器,所以TX和RX可以同时收发。 接下来是发送和接收的具体流程: USART_CR1寄存器 USART_CR1:UE USART使能 TE 发送使能 RE 接收使能 发送具体过程: USART_SR: TXE 发送数据寄存器空,当TDR寄存器中的数据被硬件转移到移位寄存器中时,该位置1;当为0时,表示数据还没有转移到移位寄存器,这时DMA不能再往里传数据了。 USART_CR1:TXEIE 发送缓冲区空中断使能,当为1时,TDR为空(TXE = 1)就会产生中断。 USART_SR: TC 发送完成,此时移位寄存器为空,全部数据已通过移位寄存器发送完成,这里判断的是移位寄存器。 USART_CR1:TCIE 发送完成使能,当发送完成TC = 1时,产生USART1中断。 数据由CPU从内存中读取,或DMA传送,然后放到数据寄存器TDR中(寄存器USART_SR的TXE位置0),然后放到发送移位寄存器中(此时发送数据寄存器为空,TXE = 1),然后当发送移位寄存器把全部数据移位发出去后, 接收具体过程: USART_SR: RXNE 读寄存器非空 USART_CR1:RXNEIE 接收缓冲区非空中断使能 数据一位一位的从RX转移到移位寄存器,然后移位寄存器八数据传送到接受数据寄存器RDR,此时RXNE标志位置1,如果我们检测到RXNE为1,就可以从RDR中读数据。读取USART_DR数据寄存器,RXNE位会清零。 波特率 BSART_BRR寄存器,分频器分为整数部分+小数部分 波特率如何产生? 计算方式如下: 目标波特率115200,使用USART1(72M),计算过程如下,整数部分很好计算,主要是小数部分。可以想象,小数的最大值为1,用4位二进制描述,则分为16′,每份1/16,我们的 小数部分 / (1 / 16) = 小数部分 * 16,就能知道占据了多少份。 USARTDIV(分频因子) = 72 000 000 / 16 / 115200 = 39.0625 整数部分DIV_Mantissa = 39 = 0X27,小数部分 = 0.0625 * 16 = 0X01,则应设置为0x271 串口空闲检测(非常有用): 10.2.3 USART基本结构10.2.4 数据帧字长 停止位 10.2.5 起始位侦测(了解即可)10.2.6 数据采样(了解即可)10.2.7 波特率发生器
例如配置9600的波特率:9600=72M / (16*DIV),DIV=468.75,转换到二进制为整数部分(000111010100),小数部分(1100)
给那些看完的朋友,奖励一个 赤赤博客-后端+前端,觉得不错的话可以推荐给身边的朋友哟! |
|
嵌入式 最新文章 |
基于高精度单片机开发红外测温仪方案 |
89C51单片机与DAC0832 |
基于51单片机宠物自动投料喂食器控制系统仿 |
《痞子衡嵌入式半月刊》 第 68 期 |
多思计组实验实验七 简单模型机实验 |
CSC7720 |
启明智显分享| ESP32学习笔记参考--PWM(脉冲 |
STM32初探 |
STM32 总结 |
【STM32】CubeMX例程四---定时器中断(附工 |
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/25 22:33:50- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |