嵌入式Linux裸机开发(七)UART串口、IIC、SPI通信

news2024/11/17 2:42:48

系列文章目录


文章目录

  • 系列文章目录
  • 前言
  • UART串口通信
    • 介绍
    • UART配置
  • IIC
    • 介绍
    • I.MX6U 的 I2C
  • SPI
    • 介绍
    • I.MX6U ECSPI
  • 结语


前言

大概学完这三种通信后,之后就先去学系统移植,其他的先暂时放下


UART串口通信

介绍

串口全称叫做串行接口,通常也叫做 COM 接口。
UART:(Universal Asynchronous Receiver/Trasmitter)通用异步串行收发器。
USART:(Universal Synchronous/Asynchronous Receiver/Transmitter)通用同步/异步串行收发器,相比 UART多了一根时钟线,一般 USART 是可以作为 UART使用的(不使用同步功能)。

详细参考:
在这里插入图片描述

UART配置

  • 设置时钟源:寄存器 CCM_CSCDR1 的 UART_CLK_SEL,0:pll3_80m(80MHz,常用),1:osc_clk(24M)
  • 设置分频器:寄存器 CCM_CSCDR1 的 UART_CLK_PODF,可设置 0~63,分别对应 1 ~ 64 分频,一般1分频。
  • 初始化,设置 UART1 的寄存器 UART1_UCR1~UART1_UCR3,包括波特率,奇偶校验、停止位、数据位等等。
  • 使能,寄存器 UART1_UCR1 的 UARTEN为 1
  • 编写数据收发函数

波特率:
在这里插入图片描述
Ref Freq:经过分频以后进入 UART 的最终时钟频率。(UARTx_UFCR的RFDIV,010:1分频)
UBMR:寄存器 UARTx_UBMR 中的值。
UBIR:寄存器 UARTx_UBIR 中的值。

设置 UBIR=71, UBMR=3124,就是115200

寄存器 UARTx_URXD 和 UARTx_UTXD为UART 的接收和发送数据寄存器

这里有个电路用的不错,我们通常在板子电源去除的时候,如果这个时候还插着USB转TTL,会引入微弱的3.3v电压,可能会影响芯片启动:
在这里插入图片描述
这里设计 IN应该是开关控制,接在3.3上直接上电打开,掉电关闭。

正点原子封装的函数:

在这里插入图片描述
这里Makefile发生了一些变化,加了一些数学库链接和内联函数冲突解决方法

IIC

介绍

起始:在 SCL 为高电平的时候, SDA 出现下降沿
在这里插入图片描述
停止:SCL 位高电平的时候, SDA出现上升沿
在这里插入图片描述
数据传输: SCL 高电平期间, SDA 上的数据稳定,SCL 低电平时数据可变
在这里插入图片描述
发送完8位数据后,需要从机给主机一个应答信号,从机通过将 SDA 拉低来表示发出应答信号,表示通信成功。

IIC各种读写时序就不赘述了。

I.MX6U 的 I2C

标准模式:数据传输速率最高是 100Kbits/s
快速模式:数据传输速率最高为 400Kbits/s。

I2Cx_IADR(x=1~4)寄存器:地址寄存器
I2Cx_IADR 只有 ADR(bit7:1)位:I2C 从设备地址数据
寄存器 I2Cx_IFDR 也只有 IC(bit5:0):设置 I2C 的波特率,I2C 的时钟源可以选
择 IPG_CLK_ROOT=66MHz
在这里插入图片描述
我们要设置 I2C的波特率为 100KHz,那么 IC就可以设置为 0X15,也就是 640 分频。 66000000/640=103.125KHz≈100KHz

之后尝试做项目的时候参考吧:
在这里插入图片描述

SPI

介绍

SPI 全称是 Serial Perripheral Interface,串行外围设备接口。
I2C 最多 400KHz,但是 SPI 可以到达几十 MHz。

①、 CS/SS, Slave Select/Chip Select,这个是片选信号线
②、 SCK, Serial Clock,串行时钟
③、 MOSI/SDO, Master Out Slave In/Serial Data Output
④、 MISO/SDI, Master In Slave Out/Serial Data Input

在这里插入图片描述
更详细的介绍看:FPGA学习笔记(九)SPI学习总结及stm32的HAL库下SPI配置

I.MX6U ECSPI

I.MX6U 的 SPI 外设叫做 ECSPI,全称是 Enhanced Configurable Serial Peripheral Interface,和标准的没啥区别

ECSPIx_CONREG寄存器:控制寄存器
ECSPIx_CONFIGREG:配置寄存器
ECSPIx_PERIODREG:采样周期寄存器
寄存器 CSCDR2 的位 ECSPI_CLK_SEL :选择时钟源
寄存器 CSCDR2 的位 ECSPI_CLK_PODF:分频
ECSPIx_STATREG:状态寄存器

参考手册:
在这里插入图片描述
开发的时候还是参考他控制icm20608 这个6 轴 MEMS 传感器, 3 轴加速度和 3 轴陀螺仪,支持 I2C 和 SPI 两种协议,使用 I2C 接口的话通信速度最高可以达到400KHz,使用 SPI 接口的话通信速度最高可达到 8MHz
在这里插入图片描述

结语

暂时先到这里,学的很粗糙,但是有了一个大概的概念,后续再深入学习,直接先学系统移植

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

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

相关文章

Maven创建父子工程详解

引言 在微服务盛行的当下,我们创建的工程基本都是父子工程,我们通过父工程来引入jar,定义统一的版本号等,这样我们在子工程中就可以直接引用后使用了,而不需要去重复的声明版本号等,这样会更方便对整个项目…

Linux中Locate命令查找不全

Locate locate(locate) 命令用来查找文件或目录。 locate命令要比find -name快得多,原因在于它不搜索具体目录,而是搜索一个数据库/var/lib/mlocate/mlocate.db 。这个数据库中含有本地所有文件信息。Linux系统会自动创建这个数据库,并且每天…

【ElasticSearch】深入探索 DSL 查询语法,实现对文档不同程度的检索,以及对搜索结果的排序、分页和高亮操作

文章目录 前言一、Elasticsearch DSL Query 的分类二、全文检索查询2.1 match 查询2.2 multi_match 查询 三、精确查询3.1 term 查询3.2 range 查询 四、地理坐标查询4.1 geo_bounding_box 查询4.2 geo_distance 查询 五、复合查询5.1 function score 查询5.2 boolean 查询 六、…

2023年中国溶瘤病毒药物上市产品、研发现状及行业市场规模前景[图]

溶瘤病毒(Oncolyticvirus),是一类具有复制能力的肿瘤杀伤型病毒,溶瘤病毒根据所采用的毒株类型可以被分为天然病毒株(野生型病毒株)和基因改造病毒株两类,溶瘤病毒的种类也从最初的疱疹病毒发展…

使用c++视觉处理----canny 边缘检测、sobel边缘检测、scharr 滤波边缘检测

使用c视觉处理canny 边缘检测、sobel边缘检测、scharr 滤波边缘检测 #include <opencv2/opencv.hpp>int main() {// 读取图像cv::Mat image cv::imread("1.jpg", cv::IMREAD_GRAYSCALE); // 转为灰度图像if (image.empty()) {std::cerr << "无法加…

网络-网络状态网络速度

文章目录 前言一、网络状态二、网络速度 前言 本文主要记录如何监听网络状态和网络速度。 一、网络状态 获取当前网络状态: navigator.onLine // true:在线 false:离线监听事件&#xff1a;online&#xff08;联网&#xff09; 和 offline&#xff08;断网&#xff09; windo…

全国A级旅游景区清单数据(2023年更新)

全国A级旅游景区清单数据&#xff08;2023年更新&#xff09; 1.样本量&#xff1a;14847条 2.来源&#xff1a;政府公布资料 3.指标&#xff1a;景区名称、等级、所属省份、所属城市、所属区县、地址、当前等级评定时间、相关文件发布时间、坐标(GCJ02)Lng、坐标(GCJ02)Lat…

【Redis实战】分布式锁

分布式锁 synchronized只能保证单个JVM内部的线程互斥&#xff0c;不能保证集群模式下的多个JVM的线程互斥。 分布式锁原理 每个JVM内部都有自己的锁监视器&#xff0c;但是跨JVM&#xff0c;就会有多个锁监视器&#xff0c;就会有多个线程获取到锁&#xff0c;不能实现多JV…

分享一份关于 Rust 编程的学习指南

Rust是一种现代的系统级编程语言&#xff0c;以其注重内存安全、性能和并发性而闻名。学习Rust可以是一段有回报的旅程&#xff0c;为您打开构建强大高效应用的机会。无论您是经验丰富的开发者还是完全的初学者&#xff0c;本指南将通过精选的资源和技巧帮助您踏上Rust编程之旅…

【angular】实现简单的angular国际化(i18n)

文章目录 目标过程运行参考 目标 实现简单的angular国际化。本博客实现中文版和法语版。 将Hello i18n!变为中文版&#xff1a;你好 i18n!或法语版:Bonjour l’i18n !。 过程 创建一个项目&#xff1a; ng new i18nDemo在集成终端中打开。 添加本地化包&#xff1a; ng a…

景联文科技:3D点云标注应用场景和专业平台

3D点云技术之所以得到广泛发展和应用&#xff0c;主要是因为它能够以一种直观、真实和全面的方式来表示和获取现实世界中的三维信息。 3D点云的优势&#xff1a; 真实感和立体感&#xff1a;3D点云数据能够呈现物体的真实感和立体感&#xff0c;使观察者能够更直观地理解物体的…

Springboot整合阿里云OSS进行上传单个图片,多个图片,删除图片功能

1. 导入OSS依赖 <!-- 阿里云oss依赖 --><dependency><groupId>com.aliyun.oss</groupId><artifactId>aliyun-sdk-oss</artifactId><version>3.10.2</version></dependency> 2. 进行OSS配置 package com.example.sushe…

[GAMES101]透视投影变换矩阵中为什么需要改变z值

透视投影需要保证&#xff0c;1.变换矩阵内的元素是常数&#xff0c;2.相对深度值不变&#xff08;绝对值不重要&#xff09;&#xff1b;若再加上变换后zNear和zFar平面上的点依旧在zNear和zFar平面上这两个条件&#xff08;实际上并不一定需要满足这两个条件&#xff09;&…

机器人制作开源方案 | 扫地机器人

1. 功能描述 扫地机器人是现代家庭清洁的得力助手&#xff0c;能够自主规划清扫路径&#xff0c;避开障碍物&#xff0c;有效覆盖整个清洁区域。扫地机器人的出现极大地减轻了家庭清洁的负担&#xff0c;节省了时间和精力&#xff0c;它可以定期清理地面&#xff0c;确保家居环…

043:mapboxGL鼠标点击提示source属性信息

第043个 点击查看专栏目录 本示例的目的是介绍演示如何在vue+mapbox中通过鼠标点击提示source属性信息。这里用到了popup弹窗,用到了click事件,用到了鼠标样式的变化等功能。 直接复制下面的 vue+mapbox源代码,操作2分钟即可运行实现效果 文章目录 示例效果配置方式示例源…

正点原子嵌入式linux驱动开发——Busybox根文件系统构建

前面已经移植了TF-A、Uboot和Linux kernel&#xff0c;就剩最后一个 rootfs(根文件系统)了&#xff0c;本章就来学习一下根文件系统的组成以及如何构建根文件系统。这是Linux系统移植的最后一步&#xff0c;根文件系统构建好以后就意味着拥有了一个完整的、可以运行的最小系统 …

【C语言】求解数独 求数独的解的个数 多解数独算法

目录 什么是数独&#xff1f; 数独的解法&#xff1f; 数独DFS算法详解 1. 初始化条件 2. 填入已初始化的数独表 3. 填数独 4. 拓展问题 请问删掉数独中的哪两个数可以使得数独的解最大&#xff1f; 删除的是哪两个数&#xff1f; 最终代码 main函数&#xff08;如何执行…

前端-uniapp-开发指南

美团外卖微信小程序开发 uniapp-美团外卖微信小程序开发P1 成果展示P2外卖小程序后端&#xff0c;学习给小程序写http接口P3 主界面配置P4 首页组件拆分P13 外卖列表布局筛选组件商家 布局测试数据创建样式 请求商家外卖数据封装请求并发请求 uni-app框架调用https接口 开发小程…

UE4和C++ 开发-C++绑定widget的方式和初始化UI

C绑定widget的方式有两种&#xff0c;一种是使用meta (BindWidget)&#xff0c;一种是使用GetWidgetFromName(TEXT("")),两种方式都可以。一、meta BindWidget方式 注意这种绑定的方式UMG里面的空间名称需要与C里面声明的变量名称相同 Btn_StartU 二、GetWidge…

成都瀚网科技有限公司:怎么优化抖店体验分?

近年来&#xff0c;抖音电商平台凭借强大的用户基础和广阔的销售渠道吸引了越来越多的商家入驻。然而&#xff0c;对于新手卖家来说&#xff0c;提高抖店经验值却成了一件头疼的事情。那么&#xff0c;如何优化抖店体验分呢&#xff1f;本文将从产品质量、服务态度、运营策略等…