首页 > 其他分享 >串口接收与转发

串口接收与转发

时间:2023-12-28 11:56:56浏览次数:34  
标签:电容 引脚 串口 低电平 STM32 IO 转发 接收 外设

STM32F107的内核是ARM Cortex-M3,主频是72MHz. RAM是20K的SRAM,ROM是64K的FLASH。供电范围是2.0~3.6V,标准是3.3V.

STM32是ST公司基于ARM公司生产的Cortex-M内核这个MCU根据自身需要完善外围电路所开发的32位单片机。

ARM生产的内核有Cortex-A系列,Application,手机领域&苹果基于ARM架构的M1芯片。Cortex-R系列是实时性较高的场景,Cortex-M系列是MCU领域。

应用STM32的过程本质上是:学习STM32的外设,通过程序配置外设,从而完成我们想要的功能。

(外设,Peripheral,片上资源)

位于Cortex-M3内核里面的外设是NVIC和SysTick.(NVIC中断,SysTick系统定时器)

NVIC,管理中断。

SysTick,给操作系统提供定时服务,即提供定时进行任务切换的功能。也可以用来实现delay函数。

 并不是每个型号都拥有所有外设。具体的需要查看对应的数据手册。

 命名规则:引脚数、闪存容量、封装。

芯片的系统结构

 要知道自己需要用的外设挂载在哪个总线上。

DMA:举例外设ADC模数转换,配置为连续模式,1ms转换一次,转换完的数据必须转运出来,否则数据就会被覆盖丢失。如果让CPU处理,就每隔1ms要转运一次数据,效率低。DMA就像小秘书,具备数据搬运的工作权限,DMA通过DMA总线连接到总线矩阵上,拥有和CPU一样的总线控制权,用于访问其余外设。当其余外设需要DMA搬运数据时,外设就会通过请求线发送DMA请求。随后DMA就会获得总线控制权,访问并且转运数据。整个过程不需要CPU的参与,CPU可以专心处理其他工作。

芯片的引脚定义

 STM32F107VCT6(100脚,256Kb的FLASH)

 引脚编号:小黑点左边的是1号引脚,随后逆时针递增。

 

 

控制芯片工作:引脚定义和时序图。

类型:S代表电源,I代表输入,O代表输出,IO代表输入输出。

IO口电平代表IO口能容忍的电压。FT代表可以tolerate 5V.其余只能3.3V。如果对于只能容忍3.3V的引脚,只有5V的电压,就需要加装电平转换电路。

主功能是上电后默认的功能。默认复用功能是IO口上同时连接的外设功能引脚。在IO配置中指定是GPIO还是AFIO。

重定义:如果有两个功能同时复用在一个IO口上,而确实需要用到这两个功能,那么就需要将其中一个复用功能重映射在其他端口上。(重映射的端口必须满足引脚定义表格所提供的重定义功能)

 STM32F107VCT6的引脚简要说明:

 VBAT,备用电池供电引脚,在这个引脚可以接一个3V的电池。当系统电源断电,备用电池可以给内部的RTC时钟和备份寄存器提供电源。

TAMPER,侵入检测,用于保障数据安全。如果产品的安全性比较高,可以在外壳加一些防拆的触点接在电路引脚上,强拆会导致触点接触断开,引起的电平变化会触发STM32的侵入检测,清空数据以保证安全。

RTC,输出RTC校准时钟,RTC闹钟脉冲或者秒脉冲。

IO口,根据程序输出或读取高低电平。

OSC32_IN\OSC_OUT,接32.768KHz的RTC晶振。

OSC_IN\OSC_OUT,系统的主晶振,一般是8MHz。(芯片内部锁相环可以对这个8MH倍频最终产生72MHz作为系统主时钟)

NRST,低电平复位。

VSSA\VDDA,表示内部模拟部分的电源,比如ADC、RC振荡器等。VSS是负极,接GND;VDD是正极,接3.3V。

WKUP,是IO口的默认复用功能,用于唤醒处于待机模式的STM32.

BOOT,是IO口的第二主功能,用于配置启动模式。优先使用主功能只有IO口的引脚,以免不必要的配置。

VSS_1\VDD_1,VSS_2\VDD_2,VSS_3\VDD_3,是系统的主电源口,STM32内部采用了分区供电的方式,供电口比较多,使用时把VDD都接GND,VSS都接上3.3V就行。

另有一些IO口的主功能是调试端口。调试分SWD和JTAG两种调试方式,SWD是两根线,分别是SWDIO和SWCLK,调试方式是STLink;JTAG是五根线,分别是JTMS、JTCK、JTDI、JTDO、NJTRST,调试方式是JLink. 用SWD方式的时候,未被用到的另外三个端口是需要在程序中配置为普通IO口的,不配置的话是不会用作IO口的。

BOOT启动配置

两根引脚:BOOT0和BOOT1。作用是指定程序开始运行的位置。一般程序都是在FLASH程序存储器开始执行,但经BOOT启动配置可以让程序在别的地方开始执行,实现需要的特殊功能。在STM32F10xxx中,可以配置三种不同的启动模式:1. BOOT1为未定态X,BOOT0为低电平0,启动模式就是主闪存存储器,即配置主闪存存储器为启动区域;2. BOOT1为低电平0,BOOT0为高电平1,启动模式为系统存储器;3.BOOT1为高电平1,BOOT0为高电平1,启动模式为内置SRAM. 其中模式1是最常用的。模式2应用于串口下载程序,系统存储器中是一段BootLoader程序,用于接收串口的数据,刷新到主闪存中。串口下载模式的应用场景是,如果引脚中的调试端口全部配置为IO口,不能从引脚下载程序,就需要用串口的方式下载程序。如果没有STLink也没有JLink,就可以用串口下载程序。模式3主要用于程序调试,应用场景相对较少。值得注意的是,每次进行BOOT配置是需要重启的。这是由于BOOT引脚的值在SYSCLK的第四个时钟被锁存,其后无关。(对应到引脚是指:与BOOT有关的引脚只在SYSCLK的第四个时钟之前作为BOOT使用,其余时候都是作为IO口使用)

要想让STM32正常工作,首先就需要把电源和最小系统部分的电路连接好。

STM32的最小系统板

1. STM32及供电部分:3个分区供电的主电源和模拟部分电源都连接供电引脚。3V3和GND之间会接一个滤波电容以确保稳定供电。(遇到供电习惯性加几个滤波电容是好习惯。)对于需要用到TC,Real Time Clock 和备份寄存器的情况,要接备用电池的VBAT,选用一个3V的纽扣电池,正极接VBAT,负极接GND;不需要VBAT可以直接悬空。

2. 晶振:STM32的主晶振一般都是8MHz,经过内部锁相环倍频,得到72MHz的主频。另外还需要接20pF的启震电容,电容的另一端接地。

3. 如果需要RTC功能,就还需要一个32.768KHz的晶振,即OSC320,之所以是32.768KHz,是由于32768是2的15次方。内部RTC经过2的15次方分频生成1s的时间信号。

4. 复位电路:1个10K电阻和0.1uF电容,用来给单片机提供NRST复位信号。复位电路在上电的瞬间,电容是没有电的,电源通过电阻开始向电容充电,此时电容呈现的是短路状态,给出的NRST就是低电平。当电容逐渐充满电,电容就相当于断电,NRST被电拉为高电平。复位电路在上电瞬间的波形就是先低电平、然后再逐渐高电平。复位电路在电容左边并联一个按键,提供手动复位的功能,按下按键电容被放电,手动生成URST的低电平,单片机复位;按键松手后,NRST回归为高电平,单片机工作。

 

 

 

 

——————20231228

标签:电容,引脚,串口,低电平,STM32,IO,转发,接收,外设
From: https://www.cnblogs.com/Sichg/p/17932217.html

相关文章

  • 前端发送请求的时候 Content-Type 内容分类, django后端分别怎么接收
    前端发送请求时,常见的Content-Type内容类型包括:application/x-www-form-urlencoded这是最常见的内容类型,用于发送键值对形式的数据。数据被编码为URL查询字符串格式。Django后端可以通过request.POST来接收这些参数。multipart/form-data通常用于文件上传的表......
  • 03 CP2104串口驱动安装
    1概述串口是最常用的一种调试工具,开发过程中我们经常会使用串口输出一些调试信息,在LINUX下也会用串口控制台控制LINUX系统。目前的串口,大部分都是USB转串口。CP2104是一款非常稳定好用的USB转串口芯片。接下来我们看下如何进行驱动安装。2软件下载登录米联客技术论坛https://......
  • spring MVC 后端 接收 前端 批量添加的数据(简单示例)
    <%@pagecontentType="text/html;charset=UTF-8"language="java"%><html><head>  <title>Title</title></head><body><scriptsrc="${pageScope.request.ContextPath}/js/jquery-3.3.1.min.js&qu......
  • 03 RS485串口程序收发环路设计
    软件版本:VIVADO2021.1操作系统:WIN1064bit硬件平台:适用XILINXA7/K7/Z7/ZU/KU系列FPGA登录米联客(MiLianKe)FPGA社区-www.uisrc.com观看免费视频课程、在线答疑解惑!1概述在前面的课程中,我们已经学习了UART串口程序的设计,在工业场合为了提高串口的抗干扰能力,以及传输距离,RS48......
  • 02 串口程序收发环路设计
    软件版本:VIVADO2021.1操作系统:WIN1064bit硬件平台:适用XILINXA7/K7/Z7/ZU/KU系列FPGA登录米联客(MiLianKe)FPGA社区-www.uisrc.com观看免费视频课程、在线答疑解惑!1概述常用的异步串行通信包含,UART、RS232、RS485。初学者可能搞不清几个名词区别,这里就做一个简单介绍。UA......
  • stm32学习总结:4、Proteus8+STM32CubeMX+MDK仿真串口收发
    stm32学习总结:4、Proteus8+STM32CubeMX+MDK仿真串口收发文章目录stm32学习总结:4、Proteus8+STM32CubeMX+MDK仿真串口收发一、前言二、资料收集三、STM32CubeMX配置串口1、配置开启USART12、设置usart中断优先级3、配置外设独立生成.c和.h四、MDK串口收发代码(中断回调接收后发送接......
  • 基于python的cat1模块的AT指令串口通信解析
    一前记使用cat1模块做产品的过程中,遇到了不少问题。其中很重要的一个就是怎么测试单个模块的好坏。这里笔者专门写了一个工具,来测试cat1模块的是否好用,这里做一个分享吧。 二源码解析这个是一个完全可以工作的程序,只需要改成你的模块的即可;#-*-coding:utf-......
  • Linux (8) unbound配置转发域
    《WindowsAzurePlatform系列文章目录》本文介绍如何使用AzureLinux设置unbound本地转发和转发域。1.我们可以通过下面的命令,安装unboundyuminstallunbound-y2.启动unboundsystemctlstartunbound3.设置开机自动启动:systemctlenableunbo......
  • Jedis串读(转发https://heapdump.cn/article/5092763解Bug之路-串包Bug)
    解Bug之路-串包Bug笔者很热衷于解决Bug,同时比较擅长(网络/协议)部分,所以经常被唤去解决一些网络IO方面的Bug。现在就挑一个案例出来,写出分析思路,以飨读者,希望读者在以后的工作中能够少踩点坑。串包Bug现场前置故障Redis超时由于某个系统大量的hget、hset操作将Redis拖垮,通过......
  • 用户输入url,前端如何接收数据
    获得用户输入的URL:你可以使用一个表单,然后通过一个statehook(例如:useState)来获取和存储用户输入的URL。const[url,setUrl]=useState('');consthandleChange=(event)=>{setUrl(event.target.value);};return<inputtype="text"onChange={handleChange}......