对比uart iic spi 三种总线的使用

1.uart串口通信

        1.1uart的通信总线方式

        1.2查询开发板和数据手册对需要进行修改的串口进行设置

        例如STM32MP157aaa

1.设置8bit数据位
2.设置无校验位
3.设置1bit停止位
4.设置波特率为115200
5.设置16倍过采样
7.使能发送器  TE
8.使能接收器  RE
9.使能串口   UE10.发送数据:判断发送数据寄存器是否为空  TXE==1为空则向发送数据寄存器写入,不为空则等待等待发送完成TC==1,此时发送结束11.接收数据判断接收数据寄存器不为空 RXNE==1不为空可以读取

         完成这些设置后通过手册进行对寄存器的设置

2.iic通信

        2.1iic

       I2C总线是PHLIPS公司在八十年代初推出的一种串行的半双工总线,主要用于连接整体电路。 I2C总线为两线制,只有两根双向信号线。一根是数据线SDA,另一根是 时钟线SCL。 IIC支持多主机多从机通信和一主机多从机通信

        2.2iic硬件连接方式

        I2C总线上传送的数据信号是广义的,既包括地址信号,又包括真正的数据信号。 主机在起始信号后必须传送一个从机的地址(7位),第8位是数据的传送方向位(R/W),用“0”表示主机发送数据(W),“1”表示主机接收数据(R)。总线上的每个从机都将这7位地址码与自己的地址进行比较,如果相同,则认为自己被主机寻址,根据R/W位将自己定为发送器或接收器。

        2.3iic的信号

        iic总线是一种同步通信总线,也就表示通信双方的通信过程要在各种时钟信号的作用下实现:

        起始信号、终止信号、应答信号、非应答信号、数据接收和发送信号

        I2C总线进行数据传送时,时钟信号为高电平期间,数据线上的数据必须保持稳定,只有在时钟线上的信号为低电平期间,数据线上的高电平或低电平状态才允许变化。

        一个时钟周期,接收方和发送发完成了一位数据的接收和发送

        起始信号:SCL线为高电平期间,SDA线由高电平向低电平的变化表示起始信号

        终止信号:SCL线为高电平期间,SDA线由低电平向高电平的变化表示终止信号

        应答信号:接收方接到数据了,还可以进行下一次8bit数据的接收

        非应答信号:接收方接收到数据了,不想进行下一次数据的接收

        2.4iic主机和从机通信过程分析

        主机发起起始信号

        主机发送7bit从机地址+1bit读写标志

        从机回应应答信号

        发送方发送数据

        接收方应答

        发送方发送数据

        接收方应答

        .....

        主机发起终止信号,通信结束

2.5 主机读取从机发送的数据

        主机读取从机一个字节的数据

        主机发送起始信号

        主机发送7bit从机地址+1bit写标志

        从机回应应答

        主机发送8bit从机寄存器地址

        从机回应应答

        主机发起重复起始信号

        主机发送7bit从机地址+1bit读标志

        从机回应应答信号

        从机发送8bit数据

        主机回应非应答信号

        主机发起终止信号

3.spi总线

       SPI,是一种高速的,全双工,同步的通信总线,并且在芯片的管脚上只占用四根线,节约了芯片的管脚,同时为PCB的布局上节省空间,提供方便,正是出于这种简单易用的特性,现在越来越多的芯片集成了这种通信协议。 SPI接口主要应用在 EEPROM,FLASH,实时时钟,AD转换器,还有数字信号处理器和数字信号解码器之间。 OLED 数码管、LCD SPI总线支持一主机多从机通信

        3.1spi的基本连线

 

3.2四线制连线 

        当一个SPI主机和多个从机进行通信时,会通过片选线 选择和哪一个从机进行通信

        3.3 SPI的三线制接线

        当单主机单从机进行SPI通信时不需要片选线选择和哪一个从机进行通信,所以在进行连接时只需SCK\MOSI\MISO三根线就可以完成通信

 

3.4SPI主从机通信需要通过两个时钟特征进行约定:

        时钟极性(CPOL):空闲状态下时钟线电平的高低

                时钟极性为1:空闲状态下时钟线保持高电平

                时钟极性为0:空闲状态下时钟线保持低电平

        时钟相位(CPHA):通信进行数据采样(数据读取)在时钟前沿还是时钟后沿

                时钟相位为1:在时钟后沿进行数据采样,在时钟前沿进行数据输出

                时钟相位为0:在时钟前沿进行数据采样,时钟后沿进行数据输出

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【玩转 Postman 接口测试与开发2_016】第13章:在 Postman 中实现契约测试(Contract Testing)与 API 接口验证(上)

《API Testing and Development with Postman》最新第二版封面 文章目录 第十三章 契约测试与 API 接口验证1 契约测试的概念2 契约测试的工作原理3 契约测试的分类4 DeepSeek 给出的契约测试相关背景5 契约测试在 Postman 中的创建方法6 API 实例的基本用法7 API 实例的类型实…

java-(Oracle)-Oracle,plsqldev,Sql语法,Oracle函数

卸载好注册表,然后安装11g 每次在执行orderby的时候相当于是做了全排序,思考全排序的效率 会比较耗费系统的资源,因此选择在业务不太繁忙的时候进行 --给表添加注释 comment on table emp is 雇员表 --给列添加注释; comment on column emp.empno is 雇员工号;select empno,en…

尚硅谷课程【笔记】——大数据之Shell【一】

课程视频:【【尚硅谷】Shell脚本从入门到实战】 一、Shell概述 为什么要学习Shell? 1)需要看懂运维人员的Shell程序 2)偶尔编写一些简单的Shell程序来管理集群、提高开发效率 什么是Shell? 1)Shell是一…

pytorch实现长短期记忆网络 (LSTM)

人工智能例子汇总:AI常见的算法和例子-CSDN博客 LSTM 通过 记忆单元(cell) 和 三个门控机制(遗忘门、输入门、输出门)来控制信息流: 记忆单元(Cell State) 负责存储长期信息&…

CDDIS从2025年2月开始数据迁移

CDDIS 将从 2025 年 2 月开始将我们的网站从 cddis.nasa.gov 迁移到 earthdata.nasa.gov,并于 2025 年 6 月结束。 期间可能对GAMIT联网数据下载造成影响。

【Redis】主从模式,哨兵,集群

主从复制 单点问题: 在分布式系统中,如果某个服务器程序,只有一个节点(也就是一个物理服务器)来部署这个服务器程序的话,那么可能会出现以下问题: 1.可用性问题:如果这个机器挂了…

华为云kubernetes部署deepseek r1、ollama和open-webui(已踩过坑)

1 概述 ollama是一个管理大模型的一个中间层,通过它你可以下载并管理deepseek R1、llama3等大模型。 open-webui是一个web界面(界面设计受到chatgpt启发),可以集成ollama API、 OpenAI的 API。 用常见的web应用架构来类比&#x…

在Mac mini M4上部署DeepSeek R1本地大模型

在Mac mini M4上部署DeepSeek R1本地大模型 安装ollama 本地部署,我们可以通过Ollama来进行安装 Ollama 官方版:【点击前往】 Web UI 控制端【点击安装】 如何在MacOS上更换Ollama的模型位置 默认安装时,OLLAMA_MODELS 位置在"~/.o…

CSS 背景与边框:从基础到高级应用

CSS 背景与边框:从基础到高级应用 1. CSS 背景样式1.1 背景颜色示例代码:设置背景颜色 1.2 背景图像示例代码:设置背景图像 1.3 控制背景平铺行为示例代码:控制背景平铺 1.4 调整背景图像大小示例代码:调整背景图像大小…

数据思维错题知识点整理(复习)

小的知识点整理 目前常见的数据采集方案有什么。 埋点、可视化埋点、无埋点(无埋点并不是字面意思不埋点,其实也是一种埋点,只是让开发人员完全无感知,直接嵌入sdk,然后每个元素都能查看他们的情况,后续开…

PyQt4学习笔记2】QMainWindow

目录 一、创建 QMainWindow 组件 1. 创建工具栏 2. 创建停靠窗口 3. 设置状态栏 4. 设置中央窗口部件 二、QMainWindow 的主要方法 1. addToolBar() 2. addDockWidget() 3. setStatusBar() 4. setCentralWidget() 5. menuBar() 6. saveState() 和 restoreState() 三、QMainWind…

Linux:文件系统(软硬链接)

目录 inode ext2文件系统 Block Group 超级块(Super Block) GDT(Group Descriptor Table) 块位图(Block Bitmap) inode位图(Inode Bitmap) i节点表(inode Tabl…

ubuntu22.40安装及配置静态ip解决重启后配置失效

遇到这种错误,断网安装即可! 在Ubuntu中配置静态IP地址的步骤如下。根据你使用的Ubuntu版本(如 Netplan 或传统的 ifupdown),配置方法有所不同。以下是基于 Netplan 的配置方法(适用于Ubuntu 17.10及更高版…

手写MVVM框架-实现简单的数据代理

MVVM框架最显著的特点就是虚拟dom和响应式的数据、我们以Vue为例,分别实现data、computed、created、methods以及虚拟dom。 这一章我们先实现简单的响应式,修改数据之后在控制台打印。 我们将该框架命名为MiniVue。 首先我们需要创建MiniVue的类(src/co…

ESLint

ESLint ESLint 是一个针对 JS 的代码风格检查工具,当不满足其要求的风格时,会给予警告或错误。 官网:https://eslint.org/ 中文网:https://eslint.nodejs.cn/ 安装使用 在你的项目中安装 ESLint 包: npm install -…

kaggle视频行为分析1st and Future - Player Contact Detection

这次比赛的目标是检测美式橄榄球NFL比赛中球员经历的外部接触。您将使用视频和球员追踪数据来识别发生接触的时刻,以帮助提高球员的安全。两种接触,一种是人与人的,另一种是人与地面,不包括脚底和地面的,跟我之前做的这…

Chapter 6 -Fine-tuning for classification

Chapter 6 -Fine-tuning for classification 本章内容涵盖 引入不同的LLM微调方法准备用于文本分类的数据集修改预训练的 LLM 进行微调微调 LLM 以识别垃圾邮件评估微调LLM分类器的准确性使用微调的 LLM 对新数据进行分类 现在,我们将通过在大语言模型上对特定目标任…

【从零开始的LeetCode-算法】922. 按奇偶排序数组 II

给定一个非负整数数组 nums, nums 中一半整数是 奇数 ,一半整数是 偶数 。 对数组进行排序,以便当 nums[i] 为奇数时,i 也是 奇数 ;当 nums[i] 为偶数时, i 也是 偶数 。 你可以返回 任何满足上述条件的…

python 小游戏:扫雷

目录 1. 前言 2. 准备工作 3. 生成雷区 4. 鼠标点击扫雷 5. 胜利 or 失败 6. 游戏效果展示 7. 完整代码 1. 前言 本文使用 Pygame 实现的简化版扫雷游戏。 如上图所示,游戏包括基本的扫雷功能:生成雷区、左键点击扫雷、右键标记地雷、显示数字提示…

安全策略实验报告

1.实验拓扑图 2.实验需求 vlan2属于办公区,vlan3生产区 办公区pc在工作日时间可以正常访问OAserver,i其他时间不允许 办公区pc可以在任意时间访问Web server 生产区pc可以在任意时间访问OA server但不能访问web server 特例:生产区pc可以…