本文解答三问题:
1 串口是什么,
2 串口数据从哪里来,
3 串口数据去向何方。
术语:
1formula 对应公式
2parity even奇校验 odd偶校验
3TXE 发送数据寄存器空 (Transmitdataregisterempty)
4TC发送完成 (Transmissioncomplete)
5RXNE读数据寄存器非空readdataregisternotempty
6 abandon 放弃
串口通讯中物理层:
1规定数据传输介质
协议层:
1规定传输的形式,统一双方的数据打包方式,解包标准
电平标准:
1TTL 电平为3.3V 0v
2RS232 +15v到-15v
3 485电平 +2-+6表示1,-2--6表示0
1高低电平标准较高,用于抗干扰,以及抗静电 使用峰峰值 进行抗干扰
3DB9端口上 大头开始的端口为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复位寄存器数值
编程之前,需要对库中使用到函数进行查看,否则会导致编程中出现不知道如何使用函数这种问题
串口初始化:
1BSP BoardSupport Package板极支持包 硬件设计相关的代码都被封装在BSP中,代码层次设计,进行抽象 单独设计
2使用条件编译,定义头文件,主要用来防止多个文件中重复对此头文件进行调用,之后对应变量被重复定义使用
3串口模式可以进行设置,可发送可接收,可两者同时操作
4数据发送,调用库中发送单字节的函数进行数据筹备,之后,通过while函数,对数据发送缓冲区是否为空进行判断,非set为真
后期串口上数据处理,都需要进行检查
5定义变量一定要写上变量初始数值,防止变量初始化之后,对应的数值不正确且很难找到问题点
6字符串中进行最后一位数据判断,可以对数据进行提取,之后判定数据是否为 ''判断字符串中对应数据是否发送完成
7printf函数是一个标准的c语言函数 使用此函数需要使用 stdio.h头文件
8printf函数会使用到fputc这个函数,代码中需要对fputc函数进行实现,之后,可正常使用print函数进行数据打印输出
10 putchar函数也可以正常使用 putchar(‘A’); C语言中标准库对应的操作方式
11进行数据发送,不勾选16进制数据显示的情况下,部分数据不能正常显示
串口号进行切换
1使用宏定义对不同的串口进行区分,开启指定宏定义实现串口中通讯需求
2不同的串口,需要使能的时钟不同
3中断函数名,来自启动文件
4串口数据接收:
1串口接收中断参数配置,开始对抢占优先级进行配置
2后续串口上数据交互,必须对寄存器标志进行判断 发送数据,接收数据标志
3使用getchar函数,单片机上可以接收外部数据
4 C语言中常规数据收发的方式,在单片机中需要进行特殊处理,考虑到实际工控应用,单片机中数据处理需要进行合理的解析
5串口中发送的数据需要区分是字符还是数字
6串口参数进行配置中,需要先对芯片中资源以及拥有的IO进行统计
7IO重映射主要针对芯片上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 波特率相关参数计算,可以使用宏定义 ,使用公式自己进行计算,最终实现赋值
祝各位:前程似锦。
-
串口通讯
+关注
关注
1文章
260浏览量
24934 -
USART
+关注
关注
1文章
195浏览量
30861
原文标题:USART 基础知识点复习
文章出处:【微信号:自豪三王,微信公众号:自豪三王】欢迎添加关注!文章转载请注明出处。
发布评论请先 登录
相关推荐
评论