大家好,我是st。
今天主要和大家聊一聊,如何使用串口进行通信的方法。
第一:串口的基本简介
串口又叫做串行接口,通常叫做com接口,串行接口指的是数据一个一个的顺序传输,通信线路简单。使用两条线即可实现双向通信,一条用于发送,一条用于接收。
uart作为串口的一种,其工作原理也是将数据一位一位的进行传输,发送和接收各用一条线,因此通过 uart 接口与外界相连最少只需要三条线:txd(发送)、rxd(接收)和 gnd(地线)。
各个为含义如下:
空闲位:数据线在空闲状态的时候为逻辑“1”状态,也就是高电平,表示没有数据线空闲,没有数据传输。
起始位:当要传输数据的时候先传输一个逻辑“0”,也就是将数据线拉低,表示开始数据传输。
数据位:数据位就是实际要传输的数据,数据位数可选择 5~8 位,我们一般都是按照字节传输数据的,一个字节 8 位,因此数据位通常是 8 位的。低位在前,先传输,高位最后传输。
奇偶校验位:这是对数据中“1”的位数进行奇偶校验用的,可以不使用奇偶校验功能。停止位:数据传输完成标志位,停止位的位数可以选择 1 位、1.5 位或 2 位高电平,一般都选择 1 位停止位。
波特率:波特率就是 uart 数据传输的速率,也就是每秒传输的数据位数,一般选择 9600、19200、115200 等。
第二:uart的特点
①、兼容 tia/eia-232f 标准,速度最高可到 5mbit/s。
②、支持串行 ir 接口,兼容 irda,最高可到 115.2kbit/s。
③、支持 9 位或者多节点模式(rs-485)。
④、1 或 2 位停止位。
⑤、可编程的奇偶校验(奇校验和偶校验)。
⑥、自动波特率检测(最高支持 115.2kbit/s)。
接下来看一下uart几个重要的寄存器,第一个就是 uart 的控制寄存器 1,即uartx_ucr1(x=1~8)。
第二个寄存器uartx_ufcr、uartx_ubir和uartx_ubmr,寄存器uartx_ufcr中要用的是位rfdiv(bit9:7),用来设置参考
通过这三个寄存器可以设置uart的波特率,波特率的计算公式为:
ref freq:经过分频以后进入 uart 的最终时钟频率。
ubmr:寄存器 uartx_ubmr 中的值。
ubir:寄存器 uartx_ubir 中的值。
通过 uartx_ufcr 的 rfdiv 位、uartx_ubmr 和 uartx_ubir 这三者的配合即可得
到我们想要的波特率。比如现在要设置 uart 波特率为 115200,那么可以设置 rfdiv 为
5(0b101),也就是 1 分频,因此 ref freq=80mhz。设置 ubir=71,ubmr=3124,根据上面的
公式可以得到:
第三:uart的配置步骤
1、设置 uart1 的时钟源
设置 uart 的时钟源为 pll3_80m,设置寄存器 ccm_cscdr1 的 uart_clk_sel 位为 0
即可。
2、初始化 uart1
初始化 uart1 所使用 io,设置 uart1 的寄存器 uart1_ucr1~uart1_ucr3,设置内
容包括波特率,奇偶校验、停止位、数据位等等。
4、使能 uart1
uart1 初始化完成以后就可以使能 uart1 了,设置寄存器 uart1_ucr1 的位 uarten
为 1。
5、编写 uart1 数据收发函数
编写两个函数用于 uart1 的数据收发操作。
第四:代码基本实现
先实现串口的头文件的基写法:
#ifndef _bsp_uart_h#define _bsp_uart_h//函数声明void uart_init(void);void uart_to_init(void);void uart_disable(uart_type *base);void uart_enable((uart_type *base);#endif
函数声明中,继续编写对应的源文件内容:
#include uart.h//初始化串口1,波特率为115200void uart_init(void){ //初始化串口io uart_io_init(); /* 2、初始化 uart1 */ uart_disable(uart1); /* 先关闭 uart1 */ uart_softreset(uart1); /* 软件复位 uart1 */ uart1->ucr1 = 0; /* 先清除 ucr1 寄存器 */ uart1->ucr1 &= ~(1
总结:实现串口的基本功能,对后面利用串口来调试程序,具有重要的实践意义。
滴滴或在日本推网络送餐服务,与Uber展开激烈竞争
软件无线电在CDMA接收中的应用
瑞萨电子开发出首款用于汽车实时应用的40nm工艺嵌入式闪存技术
使用 Portainer 进行 Docker 可视化管理
SMT贴片加工中焊锡膏、锡膏、助焊膏的区别与联系
Linux中裸机串口通信的基本方法
可用于指导农户施加氮肥的植物养分测定仪
千元5G手机:6+128GB仅1498元
小米MIX3高清渲染图外泄
北斗导航芯片的高精度技术突破,物联网将成为下一个发展的热潮
《2023协作机器人产业发展蓝皮书》即将发布!
有感的智能家居需要从哪里开始入手
小米11预订火爆!1小时内预定量达到17058台
浅谈PIC16F685的低功耗倾角测量仪的设计
腾讯启动B计划将全面拥抱产业互联网
SiC相对于Si有哪些优势?
德豪联姻雷士前景受质疑 7.4亿补贴掩盖危机
AVL和罗德与施瓦茨宣布就在环仿真测试领域展开战略合作
荣耀8A和小米Play哪个最值得买
海天雄电子DJ-335X工业主板规格