首页 > 其他分享 >GPIO模拟串口TX与RX,波特率115200

GPIO模拟串口TX与RX,波特率115200

时间:2023-02-04 12:01:45浏览次数:46  
标签:tmp 115200 0x01 串口 波特率 bit byte bit1 bit0


使用单片机的GPIO口去模拟串口的TX与RX进行数据的发送和接收处理,里面主要需要关注的和使用的为:GPIO的初始化,时钟频率的设置,引脚中断的设置。

模拟串口的TX:

首先初始化对应的GPIO口。
然后以115200的波特率对数据进行发送。

首先按照串口数据的格式,将要发送的1字节数据以起始位加结束位的形式进行封装:
u8 byte = 0x01;
u8 bit[10] = {0};
bit[0] = 0;//起始位
bit[1] = (byte & 0x01)? tmp_bit1 : tmp_bit0;
bit[2] = ((byte>>1) & 0x01)? tmp_bit1 : tmp_bit0;
bit[3] = ((byte>>2) & 0x01)? tmp_bit1 : tmp_bit0;
bit[4] = ((byte>>3) & 0x01)? tmp_bit1 : tmp_bit0;
bit[5] = ((byte>>4) & 0x01)? tmp_bit1 : tmp_bit0;
bit[6] = ((byte>>5) & 0x01)? tmp_bit1 : tmp_bit0;
bit[7] = ((byte>>6) & 0x01)? tmp_bit1 : tmp_bit0;
bit[8] = ((byte>>7) & 0x01)? tmp_bit1 : tmp_bit0;
bit[9] = 1;//结束位

形成一个8:1:1的数据格式
然后就是将封装好的数据bit按照115200的时序写入到对应IO的寄存器上就可以完成一个字节数据的发送。其中15200的时序就是每8us的时间间隔发送1比特的数据。
对于时序的使用可以使用硬件定时器或者空指令(空指令指的是空运行一条语句,一般运行一条语句的时间为1/系统时钟频率,所以根据语句的时间可以间隔一个发送1位比特数据时间)。

模拟串口的RX:

首先初始化对应的GPIO口。
然后以115200的波特率对数据进行接收。
在接收数据时我们可以通过引脚的中断判断起始位数据。然后对数据位进行时序接收。

在接收数据时我们可以通过引脚的中断判断起始位数据。然后对数据位进行时序接收。
后面将接收到的bit位数据拼接为1个字节的数据。
for(unsigned char i = 0;i < 8;i++)
{
Byte |= Bit[i] << i;
}

其中时序的判断依然是可以使用时钟频率使用空指令去间隔。如果在不能使用中断的情况下可以直接去监听当前引脚上的电平,来完成对起始位的判断。

标签:tmp,115200,0x01,串口,波特率,bit,byte,bit1,bit0
From: https://blog.51cto.com/u_15427821/6037096

相关文章

  • GP232RL国产USB串口如何兼容FT232RL开发资料
    GP232RL是最新加入ftdi系列usb接口集成电路设备的设备。232r是一个usb到串行uart接口,带有可选的时钟发生器输出,以及新的ftdichip-idTM安全加密器特性。此外,还提......
  • 复制粘贴:USB转串口 FT232/PL2303/CH340 比较
    现在笔记本上很少带有串口了,而串口又是做电子设计必备的通讯接口之一,好在USB转串口比较方便,市面上常用的USB转串口芯片有很多,最常见的有FT232、PL2303、CH340三种,这三种我......
  • STM32CubeMX | STM32使用HAL库DMA+空闲中断实现串口不定长数据接收
    STM32CubeMX|STM32使用HAL库DMA+空闲中断实现串口不定长数据接收环境:STM32CubeIDESTM32F103RBWIN10HAL库V1.8首先配置串口:开启串口中断:开启DMA接收:配置中断分组:取消自动生......
  • 启明智显4.3寸串口屏应用于壁挂炉方案
    由于寒潮反复侵袭,消费者对于热水与供暖的需求日益高涨,壁挂炉作为冬季家庭采暖设备,不同于一般空调或者燃气热水器,壁挂炉具备多种功能,实用性更强,作用面更广,因其兼备供热水供......
  • esp32笔记[2]-串口打印
    ██████╗███████╗██████╗██╗██╗███████╗██╔═══██╗██╔════╝██╔══██╗╚██╗██╔╝██╔═══......
  • STM32F407IGHX与Ubuntu20.04串口通信
    STM32F407IGHX与Ubuntu20.04串口通信为了让RobomasterC板(这块板用的是STM32F407IGHX的芯片)能与上位机进行通讯。我最近翻了不少博客和CSDN文章,看到了很多文章存在一些......
  • Linux串口编程
    在嵌入式应用领域中,串口是最为常见的一种硬件通信接口。因为其具备协议简单,硬件电路精简等优势使得串口基本成为MCU、计算机或嵌入式产品的标配接口。本文仅介绍在Linux系......
  • STM32F401 Proteus 仿真 串口两种发送方式 编译用GCC ,寄存器配置方式
    用的proteus8.9中文版,STM32F401可能是支持的最复杂的MCU了吧,就用这个做实验了。编译器用GCC,在proteus中安装调试都很方便,编程实验用寄存器配置方式,因为仅仅是学习,简单直......
  • 振弦采集模块配置工具VMTool通用串口调试模块
    振弦采集模块配置工具VMTool通用串口调试模块VMTool扩展功能双击主界面右侧扩展工具条可实现扩展功能区的显示与隐藏切换。扩展功能包括串口调试、MODBUS、实时曲线及数......
  • 串口调试助手的数据保存问题
    提问: 本人在做FPGA的数据采集系统,采集到的数据通过串口发送给串口调试助手,现在用的是可以显示波形的VOFA+,但是保存数据为csv文件时,数据只有一列,不像示波器保存的数据有时......