第九部分 :1.STM32之通信接口《精讲》(USART,I2C,SPI,CAN,USB)

news2024/11/18 23:31:19

本芯片使用的是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. 硬件支持

  • USARTUART接口在硬件上非常相似,许多微控制器中的USART模块都可以通过配置成异步模式,以兼容UART设备。
  • 在很多微控制器中,比如STM32,USART模块可以灵活配置为UART兼容模式,但UART接口无法配置为支持同步模式的USART。

4. 应用场景

  • USART适合用于需要同步通信的场景,例如与SPI设备通信,数据通信速率要求较高时的场合。
  • UART更常用于标准的异步串口通信,如与PC通信、蓝牙模块通信、GPS模块通信等,不依赖时钟信号,连接简单,应用广泛。

总结

  • USART支持同步和异步两种通信模式的接口,兼具更灵活的应用场景。
  • UART 只支持异步通信,应用上更为简单广泛。

对于大多数应用场景,如果只是进行普通串口通信(如调试),USART和UART在异步模式下没有本质差别,因此可以通用。而在同步数据传输需求较高的场景下(如与SPI设备进行高速数据传输),USART的同步模式优势会更明显。

 

STM32F103C8T6(48引脚封装)具有以下通信接口和方式:

通信接口数量

  1. USART/UART:3个接口

    • USART1:TX (PA9), RX (PA10)
    • USART2:TX (PA2), RX (PA3)
    • USART3:TX (PB10), RX (PB11)
  2. SPI:2个接口

    • SPI1:SCK (PA5), MISO (PA6), MOSI (PA7), NSS (PA4)
    • SPI2:SCK (PB13), MISO (PB14), MOSI (PB15), NSS (PB12)
  3. I2C:2个接口

    • I2C1:SCL (PB6), SDA (PB7)
    • I2C2:SCL (PB10), SDA (PB11)
  4. USB:1个接口

    • USB:DM (PA11), DP (PA12)

STM32F103C8T6的CAN接口信息

  1. CAN1接口管脚:
    • RX:PA11
    • TX:PA12

因此,STM32F103C8T6(48引脚)具备以下通信接口:

  1. USART/UART:3个
  2. SPI:2个
  3. I2C:2个
  4. USB:1个
  5. CAN:1个

总结

  • 通信接口总数量:9个
  • 支持的通信方式数量:5种(USART/UART、SPI、I2C、USB、CAN)

实验编程和实例 请看下一节!!!!!!!!!!!!!!!!!!!!!!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2243066.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【计算机网络】协议定制

一、结构化数据传输流程 这里涉及协议定制、序列化/反序列化的知识 对于序列化和反序列化,有现成的解决方案:①json ②probuff ③xml 二、理解发送接收函数 我们调用的所有发送/接收函数,根本就不是把数据发送到网络中!本质都是…

WebRTC视频 02 - 视频采集类 VideoCaptureModule

WebRTC视频 01 - 视频采集整体架构 WebRTC视频 02 - 视频采集类 VideoCaptureModule(本文) WebRTC视频 03 - 视频采集类 VideoCaptureDS 上篇 WebRTC视频 04 - 视频采集类 VideoCaptureDS 中篇 WebRTC视频 05 - 视频采集类 VideoCaptureDS 下篇 一、前言…

解决Windows远程桌面 “为安全考虑,已锁定该用户账户,原因是登录尝试或密码更改尝试过多。请稍后片刻再重试,或与系统管理员或技术支持联系“问题

当我们远程连接服务器连接不上并提示“为安全考虑,已锁定该用户账户,原因是登录尝试或密码更改尝试过多。请稍候片刻再重试,或与系统管理员或技术支持联系”时,根本原因是当前计算机远程连接时输入了过多的错误密码,触…

企业BI工具如何选择?主流5款BI工具多维对比

数据大爆炸时代,企业数据爆发式增长,来自产品、运营、价值链以及外部的数据都成指数级增长趋势。利用大数据分析实现精细化运营,驱动业务增长是企业的理想蓝图。而BI工具能够整合、分析并可视化复杂的数据集,帮助管理层和决策者快…

Sping全面复习

Spring框架是一个功能强大且广泛使用的Java平台,它通过提供全面的基础设施支持,使得开发人员能够轻松构建高效、可移植、易于测试的代码。Spring的核心特性包括依赖注入(DI)、面向切面编程(AOP)和事件驱动模…

深挖C++赋值

详解赋值 const int a 10; int b a;&a 0x000000b7c6afef34 {56496} &a 0x000000b7c6afef34 {10} 3. &b 0x000000b7c6afef54 {10} 总结: int a 10 是指在内存中(栈)中创建一个int (4 byte)大小的空间…

vue项目使用eslint+prettier管理项目格式化

代码格式化、规范化说明 使用eslintprettier进行格式化,vscode中需要安装插件ESLint、Prettier - Code formatter,且格式化程序选择为后者(vue文件、js文件要分别设置) 对于eslint规则,在格式化时不会全部自动调整&…

让空间计算触手可及,VR手套何以点石成金?

引言 如何让一位母亲与她去世的小女儿“重逢”?韩国MBC电视台《I Met You》节目实现了一个“不可能”心愿。 在空旷的绿幕中,母亲Jang Ji-sung透过VR头显,看到了三年前因白血病去世的女儿Nayeon。当她伸出双手,居然能摸到女儿的…

多模态简述

多模态学习概念 【多模态简述-哔哩哔哩】 https://b23.tv/UrUyfln 定义: 模态:事物表达或感知的方式 多模态:研究异构和相互连接数据的科学,涵盖了从原始的器官信号到抽象概念的多种模态 语音和语言是理解人物交互的关键模态&am…

RabbitMQ-死信队列(golang)

1、概念 死信(Dead Letter),字面上可以理解为未被消费者成功消费的信息,正常来说,生产者将消息放入到队列中,消费者从队列获取消息,并进行处理,但是由于某种原因,队列中的…

第8章利用CSS制作导航菜单

8.1 水平顶部导航栏 8.1.1 简单水平导航栏的设计与实现 8.1.1.1导航栏的创建 <nav>标签是 HIML5 新增的文档结构标签&#xff0c;用于标记导航栏&#xff0c;以便后续与网站的其他内整合&#xff0c;所以常用<nav>标签在页面上创建导航栏菜单区域。 例如,在<na…

「人眼视觉不再是视频消费的唯一形式」丨智能编解码和 AI 视频生成专场回顾@RTE2024

你是否想过&#xff0c;未来你看到的电影预告片、广告&#xff0c;甚至新闻报道&#xff0c;都可能完全由 AI 生成&#xff1f; 在人工智能迅猛发展的今天&#xff0c;视频技术正经历着一场前所未有的变革。从智能编解码到虚拟数字人&#xff0c;再到 AI 驱动的视频生成&#…

C++:哈希拓展-位图

目录 一.问题导入 二.什么是位图? 2.1如何确定目标数在哪个比特位? 2.2如何存放高低位 2.3位图模拟代码实现 2.3.1如何标记一个数 2.3.2如何重置标记 2.3.3如何检查一个数是否被标记 整体代码实现 标准库的Bitset 库中的bitset的缺陷 简单应用 一.问题导入 这道…

nacos-operator在k8s集群上部署nacos-server2.4.3版本踩坑实录

文章目录 操作步骤1. 拉取仓库代码2. 安装nacos-operator3. 安装nacos-server 坑点一坑点二nacos-ui页面访问同一集群环境下微服务连接nacos地址配置待办参考文档 操作步骤 1. 拉取仓库代码 &#xff08;这一步主要用到代码中的相关yml文件&#xff0c;稍加修改用于部署容器&…

Python爬虫----python爬虫基础

一、python爬虫基础-爬虫简介 1、现实生活中实际爬虫有哪些&#xff1f; 2、什么是网络爬虫&#xff1f; 3、什么是通用爬虫和聚焦爬虫&#xff1f; 4、为什么要用python写爬虫程序 5、环境和工具 二、python爬虫基础-http协议和chrome抓包工具 1、什么是http和https协议…

从北美火到中国,大数据洞察品牌“STANLEY”的突围之路

保守直筒大头的“硬汉”外形&#xff0c;以百变颜色踩中时尚命脉&#xff0c;与各路大牌“梦幻联动”&#xff0c;不少时尚弄潮儿没能逃过其“真香”诱惑。 这就是今年以来从北美火到中国的STANLEY&#xff0c;在“巨无霸”水杯中突围出属于自己的一条路。 最近STANLEY又整活…

Java结合ElasticSearch根据查询关键字,高亮显示全文数据。

由于es高亮显示机制的问题。当全文内容过多&#xff0c;且搜索中标又少时&#xff0c;就会出现高亮结果无法覆盖全文。因此需要根据需求手动替换。 1.根据es的ik分词器获取搜索词的分词结果。 es部分&#xff1a; //中文分词解析 post /_analyze {"analyzer":"…

Python绘制雪花

文章目录 系列目录写在前面技术需求完整代码代码分析1. 代码初始化部分分析2. 雪花绘制核心逻辑分析3. 窗口保持部分分析4. 美学与几何特点总结 写在后面 系列目录 序号直达链接爱心系列1Python制作一个无法拒绝的表白界面2Python满屏飘字表白代码3Python无限弹窗满屏表白代码4…

Linux性能优化之火焰图简介

Linux 火焰图&#xff08;Flame Graph&#xff09;是一种可视化工具&#xff0c;用于分析程序性能问题&#xff0c;尤其是 CPU 使用情况。它展示了程序中函数调用的层次结构和各个调用栈占用的时间比例。 以下是详细介绍&#xff0c;包括火焰图的工作原理、生成步骤和实际使用中…

Axure设计之文本编辑器制作教程

文本编辑器是一个功能强大的工具&#xff0c;允许用户在图形界面中创建和编辑文本的格式和布局&#xff0c;如字体样式、大小、颜色、对齐方式等&#xff0c;在Web端实际项目中&#xff0c;文本编辑器的使用非常频繁。以下是在Axure中模拟web端富文本编辑器&#xff0c;来制作文…