STMCU小助手
发布时间:2022-5-3 22:12
|
一、串口传输协议 1. 传输方式 串口通信的数据由发送设备通过自身的TXD接口传输到接收设备得RXD接口, 一个字符一个字符地传输,每个字符一位一位地传输,并且传输一个字符时,总是以“起始位”开始,以“停止位”结束,字符之间没有固定的时间间隔要求。 每一个字符的前面都有一位起始位(低电平),字符本身由8位数据位组成,接着字符后面是一位校验位(检验位可以是奇校验、偶校验或无校验位),最后是一位或一位半或二位停止位,停止位后面是不定长的空闲位,停止位和空闲位都规定为高电平。具体如下图所示。 实际传输时每一位的信号宽度与波特率有关,波特率越高,宽度越小,在进行传输之前,双方一定要使用同一个波特率设置。
波特率 波特率:每秒钟传输的数据位数(bit)。 波特率的单位是每秒比特数(bps),串口典型的传输波特率600bps,1200bps,2400bps,4800bps,9600bps,19200bps等。 以波特率9600bps为例:1秒钟传输9600位(bit)数据,所以传输1位(bit)数据需要1000000us/9600=104us。 空闲位 空闲位:处于逻辑“1”状态,高电平,每个字符之间都会有一段空闲位,表示当前线路上没有数据传输。 起始位 起始位:处于逻辑”0”状态,低电平,表示数据传输的开始。 数据位 数据位:一般是8位数据位(低位在前,高位在后),传输有效数据。 校验位 校验位:校验方法有奇校验(odd)、偶校验(even)以及无(noparity),用来校验数据传送的正确性。 停止位 停止位:一个字符数据的结束标志,可以是1位、1.5位、2位的高电平,表示数据传输的结束。 二、I/O口模拟串口通信----延时法 这次以波特率9600bps,1位起始位,8位数据位,无校验位,1位停止位的传输方式为例,实现模拟串口通信。 具体程序如下: Uart1sim.c
Uart1sim.h
注意1: 利用延时的方法模拟串口通信,有一些弊端,当程序的中断时间过长的时候,收发都会有影响。 注意2: 由于接收是引脚的低电平检测触发,当程序的运行周期过长的时候,有可能出现接收不到的现象。 |
基于STM32F103的I2C主从机通信
OpenBLT移植到STM32F103战舰开发板上适用于所有STM32F103系列的Bootloader
TFT LCD 与 FSMC 的硬件连接大容量 STM32F10xxx FSMC 接口
单片机:初学者该了解的STM32F103基础知识
2025软件工具兔哥知道
STM32之继电器模块
STM32固件库分享,超全系列整理
【MCU实战经验】基于STM32F103的二轮平衡车(6轴上位机 源代...
经验分享 | USART接收的数据怎么错位啦?
10张图带你完全掌握STM32 GPIO,从入门到精通,收藏就够了!
微信公众号
手机版