第九部分 :1.STM32之通信接口《精讲》(USART,I2C,SPI,CAN,USB)
本芯片使用的是STM32F103C8T6型号
STM32F103C8T6是STM32F1系列中的一种较常用的低成本ARM Cortex-M3内核MCU,具有丰富的通信接口,包括USART、SPI、I2C等。下面是该芯片上通信接口的管脚分布、每个接口的工作模式、常用应用场景和注意事项。
1. USART (通用同步/异步收发器)
管脚分布
- USART1:TX (PA9), RX (PA10)
- USART2:TX (PA2), RX (PA3)
工作模式
- 异步模式:标准UART,用于点对点通信,常用于串口调试、与传感器通信。
- 同步模式:较少使用,支持同步数据传输。
- 多处理器模式:可用于连接多个设备的主从通信。
时钟与电平
- 时钟:PCLK2 (USART1) 或 PCLK1 (USART2)
- 电平:3.3V TTL电平
应用场景和注意事项
- 应用场景:常用于串口调试、蓝牙模块通信(如HC-05)、GPS模块通信(如Ublox)、WIFI模块(如ESP8266)。
- 注意事项:确保波特率一致。接收和发送的数据量大时,建议使用DMA减少CPU占用;同时,需要注意线缆长度和接收缓冲区溢出问题。
应用示例
- 串口调试:将开发板的USART1连接到PC的串口(通过USB转串口模块)进行调试。
- 蓝牙通信:通过USART2连接蓝牙模块进行无线数据传输。
2. SPI (串行外设接口)
管脚分布
- SPI1:SCK (PA5), MISO (PA6), MOSI (PA7), NSS (PA4)
工作模式
- 主模式:MCU作为主设备控制从设备的数据传输,支持点对多的通信。
- 从模式:MCU作为从设备接收主设备的指令,常用于与MCU、DSP等其他主机通信。
时钟与电平
- 时钟:PCLK2 (SPI1)
- 电平:3.3V TTL电平
应用场景和注意事项
- 应用场景:常用于连接Flash存储器、传感器(如MPU6050加速度计)、显示屏(如OLED)等。
- 注意事项:SPI总线支持点对多通信,但需要用片选(NSS)信号选择从设备,注意信号线的干扰,尤其在高频率下。此外,SPI通信没有确认机制,需处理好数据错误或丢失问题。
应用示例
- 外部Flash:通过SPI连接W25Qxx等Flash存储器进行数据读写。
- 显示屏驱动:驱动OLED或TFT屏幕来显示内容。
3. I2C (集成电路间接口)
管脚分布
- I2C1:SCL (PB6), SDA (PB7)
工作模式
- 主模式:MCU作为主设备发起数据传输,支持点对多通信。
- 从模式:MCU作为从设备响应主设备的请求,常用于从属设备设计。
时钟与电平
- 时钟:PCLK1
- 电平:3.3V TTL电平,需要上拉电阻
应用场景和注意事项
- 应用场景:广泛用于传感器(如BMP280气压传感器、DS3231 RTC芯片)、LCD显示屏(如1602 LCD)等设备。
- 注意事项:I2C是半双工通信,支持多个设备共用总线,因此需要设置唯一地址。电平转换器可以用于跨电压I2C通信。需要注意上拉电阻的选择,一般3.3k-10kΩ。
应用示例
- RTC时钟模块:通过I2C读取DS3231等时钟芯片的数据。
- 环境传感器:连接BMP280、DHT12等传感器采集环境数据。
4. CAN (控制器局域网)
STM32F103C8T6并没有内置CAN控制器,因此通常不支持CAN总线通信。如果需要使用CAN通信,可以选择带有CAN模块的STM32F103系列,如STM32F103CBT6(其硬件和引脚分布稍有不同)。
5. USB
管脚分布
- USB:DM (PA11), DP (PA12)
工作模式
- 设备模式:支持USB Device模式,可以作为USB从设备连接到计算机。
时钟与电平
- 时钟:USB时钟
- 电平:3.3V差分信号
应用场景和注意事项
- 应用场景:常用于USB通信,包括USB串口、USB HID(如键盘鼠标)、USB音频、USB存储器等。
- 注意事项:USB需要正确配置端点和描述符,且电路设计上注意信号的抗干扰处理。外部时钟需要满足48MHz的时钟精度要求。
应用示例
- USB串口:使用USB CDC类将STM32板识别为USB串口,便于调试和通信。
- USB键盘:将STM32板模拟为USB HID设备,实现键盘或鼠标的控制。
总结
STM32F103C8T6具有丰富的通信接口,能够满足不同的应用需求:
- USART:适合点对点通信,适用于调试和低速无线模块通信。
- SPI:适合高速点对多通信,广泛应用于传感器、存储、显示等场景。
- I2C:适合中低速点对多通信,常用于传感器和LCD等模块。
- USB:支持将MCU作为USB从设备连接到PC,便于通信和调试。
在设计中需要根据具体应用场景选择合适的接口,并关注各接口的电平、速率、抗干扰等设计要求。
USART和UART区别?
USART(Universal Synchronous/Asynchronous Receiver Transmitter)和UART(Universal Asynchronous Receiver Transmitter)都是串行通信接口,用于设备间的串行数据传输。它们的区别主要在于通信模式的支持:
1. 通信模式
- USART:支持同步和异步两种通信模式。
- 在异步模式下,USART和UART几乎一样,不需要时钟线,仅通过数据线传输数据,使用波特率来同步传输速率。
- 在同步模式下,USART会使用一个时钟信号(通常是主设备提供的)同步数据的发送和接收,这种模式下需要三条线路(TX、RX、时钟线)。同步模式通常用于需要更高传输速率的场景。
- UART:仅支持异步通信模式。它不支持同步时钟信号,即无同步时钟线,主要通过设定一致的波特率来确保通信双方的同步。
2. 传输速率
- USART的同步模式可以更高效地传输数据,传输速率可达到主机时钟频率的一半甚至更高(比如在SPI模式下可以达到几兆比特每秒的传输速率)。
- UART由于只能异步工作,速率通常受到波特率限制,通常在9600到115200之间,更高的波特率会增加数据丢失的风险。
3. 硬件支持
- USART和UART接口在硬件上非常相似,许多微控制器中的USART模块都可以通过配置成异步模式,以兼容UART设备。
- 在很多微控制器中,比如STM32,USART模块可以灵活配置为UART兼容模式,但UART接口无法配置为支持同步模式的USART。
4. 应用场景
- USART适合用于需要同步通信的场景,例如与SPI设备通信,数据通信速率要求较高时的场合。
- UART更常用于标准的异步串口通信,如与PC通信、蓝牙模块通信、GPS模块通信等,不依赖时钟信号,连接简单,应用广泛。
总结
- USART 是支持同步和异步两种通信模式的接口,兼具更灵活的应用场景。
- UART 只支持异步通信,应用上更为简单广泛。
对于大多数应用场景,如果只是进行普通串口通信(如调试),USART和UART在异步模式下没有本质差别,因此可以通用。而在同步数据传输需求较高的场景下(如与SPI设备进行高速数据传输),USART的同步模式优势会更明显。
STM32F103C8T6(48引脚封装)具有以下通信接口和方式:
通信接口数量
-
USART/UART:3个接口
- USART1:TX (PA9), RX (PA10)
- USART2:TX (PA2), RX (PA3)
- USART3:TX (PB10), RX (PB11)
-
SPI:2个接口
- SPI1:SCK (PA5), MISO (PA6), MOSI (PA7), NSS (PA4)
- SPI2:SCK (PB13), MISO (PB14), MOSI (PB15), NSS (PB12)
-
I2C:2个接口
- I2C1:SCL (PB6), SDA (PB7)
- I2C2:SCL (PB10), SDA (PB11)
-
USB:1个接口
- USB:DM (PA11), DP (PA12)
STM32F103C8T6的CAN接口信息
- CAN1接口管脚:
- RX:PA11
- TX:PA12
因此,STM32F103C8T6(48引脚)具备以下通信接口:
- USART/UART:3个
- SPI:2个
- I2C:2个
- USB:1个
- CAN:1个
总结
- 通信接口总数量:9个
- 支持的通信方式数量:5种(USART/UART、SPI、I2C、USB、CAN)
实验编程和实例 请看下一节!!!!!!!!!!!!!!!!!!!!!!
相关文章:
第九部分 :1.STM32之通信接口《精讲》(USART,I2C,SPI,CAN,USB)
本芯片使用的是STM32F103C8T6型号 STM32F103C8T6是STM32F1系列中的一种较常用的低成本ARM Cortex-M3内核MCU,具有丰富的通信接口,包括USART、SPI、I2C等。下面是该芯片上通信接口的管脚分布、每个接口的工作模式、常用应用场景和注意事项。 1. USART (通…...
5. langgraph中的react agent使用 (从零构建一个react agent)
1. 定义 Agent 状态 首先,我们需要定义 Agent 的状态,这包括 Agent 所持有的消息。 from typing import (Annotated,Sequence,TypedDict, ) from langchain_core.messages import BaseMessage from langgraph.graph.message import add_messagesclass …...
uniapp vue3的下拉刷新和上拉加载
开启页面的下拉刷新,注意这个不是可滚动视图的下拉刷新. 一般页面建议使用页面外的,不要使用scroll-view里面的下拉刷新. pages: "pages": [ {"path": "pages/index/index","style": {"navigationBarTitleText": "首…...
STM32设计井下瓦斯检测联网WIFI加Zigbee多路节点协调器传输
目录 目录 前言 一、本设计主要实现哪些很“开门”功能? 二、电路设计原理图 1.电路图采用Altium Designer进行设计: 2.实物展示图片 三、程序源代码设计 四、获取资料内容 前言 本系统基于STM32微控制器和Zigbee无线通信技术,设计了…...
Vue 3 中的原生事件监听与组件事件处理详解
Vue 3 中的原生事件监听与组件事件处理完全指南 在 Vue 3 中,事件监听和事件处理是组件交互中的关键部分。Vue 提供了一套简单而强大的事件处理机制,可以方便地监听 DOM 原生事件和组件自定义事件。本篇文章将详细介绍 Vue 3 中事件的使用,包…...
Flink Source 详解
Flink Source 详解 原文 flip-27 FLIP-27 介绍了新版本Source 接口定义及架构 相比于SourceFunction,新版本的Source更具灵活性,原因是将“splits数据获取”与真“正数据获取”逻辑进行了分离 重要部件 Source 作为工厂类,会创建以下两…...
2024年了,TCP分析工具有哪些?
TCP分析工具广泛应用于网络调试、性能分析和协议学习。以下是一些常用的TCP分析工具,它们各有特点,适用于不同的场景: Wireshark - 这是一个非常强大的网络协议分析器,支持图形界面,可以捕获和分析TCP流量,…...
SRP 实现 Cook-Torrance BRDF
写的很乱! BRDF(Bidirectional Reflectance Distribution Function)全称双向反射分布函数。辐射量单位非常多,这里为方便直观理解,会用非常不严谨的光照强度来解释说明。 BRDF光照模型,上反射率公式&#…...
MySQL慢日志
慢查询日志顾名思义就是查询慢的sql语句可以记录到一个日志文件里,至于有多慢才会被记录,默认是10秒,但也可以通过系统配置来更改,慢日志在做系统优化时是一个非常好用的工具 #是否开启慢日志 show variables like slow_query_log…...
Flutter网络通信-封装Dio
前言 dio 是一个强大的 Dart HTTP 请求库,支持全局配置、Restful API、FormData、拦截器、 请求取消、Cookie 管理、文件上传/下载、超时以及自定义适配器等。 Dio的pub地址为:dio | Dart package 封装要求 能够使用get、post、put、patch、delete、…...
matlab 读取csv
需要跳过第一行表头等信息 1、读取整个文件 csvread(FILENAME)%文件路径 文件名2、指定起始位置 csvread(FILENAME, R, C)%从文件的第R行和第C列开始读取数据 逗号分开3、指定数据范围 csvread(FILENAME, R, C, [R1 C1 R2 C2])%读取从(R1, C1)到(R2, C2)范围内的数据注意&am…...
网络层9——虚拟专用网VPN和网络地址转换NAT
目录 一、为什么有虚拟专用网? 二、如何理解“虚拟专用网”? 三、IP隧道技术实现虚拟专用网 四、网络地址变换 一、为什么有虚拟专用网? 第一,IPv4只有32位,最多有40亿个全球唯一的IP地址数量不够,无法…...
开源科学工程技术软件介绍 – EDA工具KLayout
link 今天向各位知友介绍的 KLayout是一款由德国团队开发的开源EDA工具。 KLayout是使用C开发的,用户界面基于Qt。它支持Windows、MacOS和Linux操作系统。安装程序可以从下面的网址下载: https://www.klayout.de/build.html KLayout图形用户界面&…...
【网络安全】Cookie SameSite属性
未经许可,不得转载。 文章目录 背景CSRF 攻击SameSite 属性StrictLaxNone背景 为了有效防止 CSRF 攻击并保护用户隐私,Chrome 从 51 版本开始引入了 SameSite 属性,专门用于限制第三方 Cookie 的使用,进而减少安全风险。 CSRF 攻击 跨站请求伪造(CSRF)攻击是指恶意网站…...
Linux 命令 | 每日一学,文本处理三剑客之awk命令实践
[ 知识是人生的灯塔,只有不断学习,才能照亮前行的道路 ] 0x00 前言简述 描述:前面作者已经介绍了文本处理三剑客中的 grep 与 sed 文本处理工具,今天将介绍其最后一个且非常强大的 awk 文本处理输出工具,它可以非常方便…...
RabbitMQ的工作队列在Spring Boot中实现(详解常⽤的⼯作模式)
上文着重介绍RabbitMQ 七种工作模式介绍RabbitMQ 七种工作模式介绍_rabbitmq 工作模式-CSDN博客 本篇讲解如何在Spring环境下进⾏RabbitMQ的开发.(只演⽰部分常⽤的⼯作模式) 目录 引⼊依赖 一.工作队列模式 二.Publish/Subscribe(发布订阅模式) …...
【web前端笔记】vue3 + vite的前端项目中,使用import.meta.glob()方法实现全局注册组件的通用代码
目录 1.1、如何读取所有文件 1.2、通用代码 1.3、在main.js引入 这篇文章介绍一下,在vue3和vite搭建的项目中,如何将【src/components】目录下所有的【*.vue】文件,当做一个组件全局注册到Vue对象里面。 1.1、如何读取所有文件 在vue3和vite搭建的项目里面,它给我们提…...
保险行业建立知识管理系统:提高效率和安全性的策略
在保险行业,知识管理系统(KMS)的建立对于提高工作效率和保障数据安全性至关重要。保险公司需要在复杂的生态系统中航行,这个生态系统由不断发展的法规、错综复杂的保单和投保人不断变化的需求所定义。以下是一些关键策略ÿ…...
小程序如何完成订阅
小程序如何完成订阅 参考相关文档实践问题处理授权弹窗不再触发引导用户重新授权 参考相关文档 微信小程序实现订阅消息推送的实现步骤 发送订阅消息 小程序订阅消息(用户通过弹窗订阅)开发指南 实践 我们需要先选这一个模板,具体流程参考…...
JS学习日记(jQuery库)
前言 今天先更新jQuery库的介绍,它是一个用来帮助快速开发的工具 介绍 jQuery是一个快速,小型且功能丰富的JavaScript库,jQuery设计宗旨是“write less,do more”,即倡导写更少的代码,做更多的事…...
Uni-APP+Vue3+鸿蒙 开发菜鸟流程
参考文档 文档中心 运行和发行 | uni-app官网 AppGallery Connect DCloud开发者中心 环境要求 Vue3jdk 17 Java Downloads | Oracle 中国 【鸿蒙开发工具内置jdk17,本地不使用17会报jdk版本不一致问题】 开发工具 HBuilderDevEco Studio【目前只下载这一个就…...
Linux的基本用法
Linux的基本用法涵盖多个方面,包括用户登录、系统操作、文件和目录管理、系统工具使用等。以下是对Linux基本用法的详细介绍: 一、用户登录与系统操作 用户登录 普通用户登录:选择用户名并输入密码。超级用户(root)登…...
如何找出爬取网站的来源IP呢?
1.背景 最近网站数据库性能很不稳定,查询性能在某段时间很慢,服务器CPU也很高,平常时间很低,感觉被爬虫恶意搞了,因此我分析了一下最近的nginx访问日志 2.方法 找出访问量最大20个ip [root100 nginx]# cat liuhaih…...
Java爬虫(Jsoup)详解
文章目录 Java爬虫(Jsoup)详解一、引言二、Jsoup 快速入门1、Jsoup 简介1.1、添加依赖 2、解析 HTML 文档2.1、解析 HTML 字符串2.2、从 URL 加载 Document2.3、解析 body 片断 三、数据抽取1、使用 DOM 方法遍历文档3.1、获取元素 2、使用选择器语法查找…...
力扣周赛:第424场周赛
👨🎓作者简介:爱好技术和算法的研究生 🌌上期文章:力扣周赛:第422场周赛 📚订阅专栏:力扣周赛 希望文章对你们有所帮助 第一道题模拟题,第二道题经典拆分数组/线段树都…...
预处理(1)(手绘)
大家好,今天给大家分享一下编译器预处理阶段,那么我们来看看。 上面是一些预处理阶段的知识,那么明天给大家讲讲宏吧。 今天分享就到这里,谢谢大家!!...
利用OpenAI进行测试需求分析——从电商网站需求到测试用例的生成
在软件测试工程师的日常工作中,需求分析是测试工作中的关键步骤。需求文档决定了测试覆盖的范围和测试策略,而测试用例的编写往往依赖于需求的准确理解。传统手工分析需求耗时长,尤其在面对大量需求和复杂逻辑时容易遗漏细节。本文将以电商网…...
深入探索:Scrapy深度爬取策略与实践
标题:深入探索:Scrapy深度爬取策略与实践 引言 在数据驱动的时代,深度爬取成为了获取丰富信息的重要手段。Scrapy,作为一个强大的Python爬虫框架,提供了多种工具和设置来帮助我们实现深度爬取。本文将详细介绍如何在…...
《生成式 AI》课程 第3講:訓練不了人工智慧嗎?你可以訓練你自己
资料来自李宏毅老师《生成式 AI》课程,如有侵权请通知下线 Introduction to Generative AI 2024 Spring 摘要 这一系列的作业是为 2024 年春季的《生成式 AI》课程设计的,共包含十个作业。每个作业都对应一个具体的主题,例如真假难辨的世界…...
如何编译 Cesium 源码
如何编译 Cesium 源码 Cesium 是一个开源的 JavaScript 库,用于构建 3D 地球和地图应用程序。它提供了一套强大的 API 和工具,使开发者能够创建丰富的地理空间应用。本文将指导您如何从 GitHub 下载 Cesium 源码,并在本地进行编译。 TilesB…...
廊坊网站建设推广/电脑培训学校
当表单嵌套在modal或者是在v-else里面的时候,即一开始表单的元素display为none的时候。refs里面是没有uForm的。所以再onReady里面设置是无效的。这时候利用nextTrick,监听当表单出现时,且dom更新结束时,再设置规则 watch: {modal…...
wordpress主题租房/seo全网优化推广
nodejs 框架安装生成app下载nodejs解压到opt目录$ cd /usr/local/bin$ sudo ln -s /opt/node-v5.1.0-linux-x64/bin/node$ sudo ln -s /opt ...GitHub入门之一:使用github下载项目git作为目前比较流行的版本控制系统,被各个互联网公司广泛使用着.目前国外的网站有Gi…...
网站地图怎么设置/汕头seo关键词排名
介绍OSPF 开放最短路径优先 (OSPF) 协议是一种链路状态路由协议,旨在替代距离矢量路由协议 RIP。OSPF 是一种无类路由协议,它使用区域概念实现可扩展性。RFC 2328 将 OSPF 度量定义为一个独立的值,该值称为开销。 Cisco IOS 使用带宽作为 OSP…...
音乐应用网站模板/西安网站关键词优化费用
求素数只需要到i*i<x for(int i2; i*i<x i) 1、素数,所以没有1,从2开始。 2、一个数如果不是素数,最大的因子该是小于等于x/2,在大根本没法除。 3、进一步确定到根号x,一个数如果不是素数,意味着一定…...
网站开发兼职/服装市场调研报告范文
一、背景 在开发的过程中有时候需要获取最上层的activity。 二、获取方式 通过RunningTaskInfo的topActivity获取当前Activity实例。通过该种方式获取的Activity,只能保证其已经执行了Activity.onCreate方法,不能保证是否执行了Activity.onResume方法…...
学网站建设好吗/武汉seo网站
javascript里的这两个定时器函数,大家一定耳熟能详: setTimeout("函数()",毫秒)就是开启一个计时器,指定毫秒后执行该函数一次。 有关定时器,javascript还有另一个类似的函数,setInterval("函数()&quo…...