USART基础知识点复习

电子说

1.3w人已加入

描述

    本文解答三问题:

1 串口是什么,

2 串口数据从哪里来,

3 串口数据去向何方。

术语:

1 formula  对应公式

2 parity  even奇校验   odd偶校验

3 TXE  发送数据寄存器空  (Transmit data register empty)

4 TC 发送完成 (Transmission complete)

5 RXNE 读数据寄存器非空 read data register not empty

6 abandon  放弃

串口通讯中物理层:

1 规定数据传输介质

协议层:

1 规定传输的形式,统一双方的数据打包方式,解包标准

电平标准:

1 TTL  电平为3.3V  0v 

2 RS232 +15v 到-15v 

3 485 电平   +2-+6 表示1,-2--6 表示0

232标准串口 主要用于工业设备直接通信

1 高低电平标准较高,用于抗干扰,以及抗静电  使用峰峰值  进行抗干扰  

2 max3232   sp3232  转换芯片上有独立的供电接口

3 DB9端口上  大头开始的端口为1脚,对于公头 2/3 分别为  R/T  对于母头2/3为T/R

串口校验位

1 奇校验   数据1 对应的数量不为奇数,校验位,补充一位1

2 偶校验   数据1对应的数据量不为偶数,校验位,补充一位1

3 无校验   数据位中不包含校验位

串口模式:

对应两种模式,发送模式,以及接收模式 硬件控制流,

异步发送数据,数据发送帧中插入有效的标志位

polarity极性         phase相位

 时钟极性: 

1   0 总线空闲时CK引脚上保持低电平           

1 总线空闲时CK引脚上保持高电平

2 部分串口上不支持时钟极性的配置方式

    时钟相位 :

1   0 :在时钟的第一个边沿进行数据采集

2   1:在时钟的第二个边沿进行数据采集

总结:

时钟中极性以及相位:方式保持一致即可,主机需要适配从机上通讯方式

LBCL:最后一位时钟脉冲

1  0 最后一位数据的时钟脉冲不从CK输出

2  1 最后一位的时钟脉冲会从CK输出

deInit复位寄存器数值

编程之前,需要对库中使用到函数进行查看,否则会导致编程中出现 不知道如何使用函数这种问题

串口初始化:

1 BSP   Board Support Package 板极支持包   硬件设计相关的代码都被封装在BSP中,代码层次设计,进行抽象  单独设计

2 使用条件编译,定义头文件,主要用来防止多个文件中重复对此头文件进行调用,之后对应变量被重复定义使用

3 串口模式可以进行设置,可发送可接收,可两者同时操作

4 数据发送,调用库中发送单字节的函数进行数据筹备,之后,通过while函数,对数据发送缓冲区是否为空进行判断,非set为真

后期串口上数据处理,都需要进行检查

5 定义变量一定要写上变量初始数值,防止变量初始化之后,对应的数值不正确 且很难找到问题点

6 字符串中进行最后一位数据判断,可以对数据进行提取,之后判定数据是否为  ''判断字符串中对应数据是否发送完成

7 printf函数是一个标准的c语言函数  使用此函数需要使用  stdio.h头文件

8 printf函数 会使用到fputc这个函数,代码中需要对fputc函数进行实现,之后,可正常使用print函数进行数据打印输出

串口通讯

10 putchar函数也可以正常使用    putchar(‘A’);  C语言中标准库对应的操作方式

11 进行数据发送,不勾选16进制数据显示的情况下,部分数据不能正常显示

串口号进行切换

1 使用宏定义对不同的串口进行区分,开启指定宏定义实现串口中通讯需求

2 不同的串口,需要使能的时钟不同

3 中断函数名,来自启动文件

串口数据接收:

1 串口接收中断参数配置,开始对抢占优先级进行配置

2  后续串口上数据交互,必须对寄存器标志进行判断  发送数据,接收数据标志

3 使用getchar函数, 单片机上可以接收外部数据

4 C语言中常规数据收发的方式,在单片机中需要进行特殊处理,考虑到实际工控应用,单片机中数据处理 需要进行合理的解析

5 串口中发送的数据 需要区分是字符还是数字

6 串口参数进行配置中,需要先对芯片中资源以及 拥有的IO 进行统计

7 IO 重映射 主要针对芯片上IO合理布局做出的决策

8 数据寄存器  DR   一个数据发送寄存器 TDR  和一个接收数据寄存器RDR  一个地址对应两个物理内存

9 寄存器中,使用0  /  1映射到实际的数字上  设备上端口不够使用的情况下,可使用此种方法

10 单片机中时钟为外设工作的心脏,要是时钟不工作,外设上也就不会正常运转

11 串口使能开启,需要 UE =1     TE = 1   发送数据时,对应数据流向为 DMA或者 cpu 两种渠道

12 波特率  每秒钟要发送多少数据 【二进制位】

串口中寄存器说明

串口通讯

TXE 用来判断数据   发送数据寄存器   先将数据放置到发送数据寄存器中,之后将数据移动到发送移位寄存器中  对应到寄存器为txc 为数据传输标志位

TC 标志位对应的是数据发送完成  

串口上时钟进行计算,需要先确定时钟来源

串口通讯

定时器以及串口上使用时钟, 分别挂载在APB1  APB2

备注:

1 后续设备使用GD32芯片,可以考虑提升芯片上串口波特率  ,或者使用同步串口进行数据传输

2 单片机中对小数进行表示,精度为bit位对应有效数据分之1    波特率寄存器表示精度 1 / 16 

3 计算出波特率对应数值,小数部分数值 /  1 / 16 对应数值为  小数部分对应的转化数字,实际数据 / 精度  = 数量级

4 波特率相关参数计算,可以使用宏定义 ,使用公式 自己进行计算,最终实现赋值

祝各位:前程似锦。

  审核编辑:汤梓红
 
打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分