- 博客(100)
- 收藏
- 关注
原创 OpenCV入门(十一)——图像平滑技术
关于图像采样数字图像的获取途径有很多方式,通常可利用图像采样在连续图像上进行数字化。采样点之间形成的集合关系就是栅格,栅格间无限小的采样点对应于图像中的像素点。图像变换上的采样就是将图像分辨率改变的过程,采样分为上采样和下采样。上采样为:指将图分辨率扩大。下采样为:图像的分辨率缩小。OPenCV常见的图像缩放有两种方式: 几何变换中提供的resize函数。 基于分辨率理论的图像金字塔pyrDown与pyrUp。 0x01 最近邻插值最近邻插值是最简单的图像处理的方.
2022-05-12 23:40:52
2638
原创 OpenCV入门(十)——图像分割技术
0x01 FloodFill分割FloodFill泛洪填充算法是在很多图形绘制软件中常用的填充算法,通常来说是自动选中与种子像素相关的区域,利用指定的颜色进行区域颜色替换,可用于标记或分离图形的某些部分。比如windows系统中的图像编辑软件中的油漆桶这一功能,或者是Photoshop的魔术棒选择工具,都是通过FloorFill泛洪填充来改进和延伸的。(一)原理从一个点开始遍历附近的像素点,填充成新的颜色,直到封闭区域内的所有像素点都被填充成新颜色为止。(二)常见方法4邻域像素填充法、8
2022-05-09 23:10:05
4703
原创 OpenCV入门(九)——图像分割技术之分水岭分割
图像分割是利用图像特征灰度、颜色、纹理和形状等将图像中特定的具有独特性质的区域进行划分,进而实现感兴趣的目标的提取。根据分割成因可以分为连续分割和非连续分割。连续分割是指将具有同一灰度级或相同特征的像素划分为不同区域,常见的分割方法有**区域生成、阈值分割及聚类分割**等。非连续分割是利用像素值突变特性来呈现不同边界区域以实现图像分割,常见的分割方法有**点线检测、边缘及能量**等。## 0x01 分水岭分割(一)分水岭分割分水岭分割是基于自然的启发算法来模拟水流通过地形起伏的现象从而研究总结出
2022-05-07 22:31:34
7302
1
原创 OpenCV入门(八)——形态学技术
目录0x01 腐蚀膨胀操作0x02 开闭运算操作0x03 形态学梯度0x04 形态学Top-Hat0x05 用在哪?角点提取、车牌提取数学形态学是基于集合论的图像处理方法,最早出现于生物学的形态与结构中,图像处理中的形态学操作用于图像预处理操作(去噪、形状简化)、图像增强(骨架提取、细化、凸包及物体标记)、物体背景分割及物体形态量化等场景中。数学形态学利用点集的性质、积分几何集及拓扑学理论对物体像素集进行变换。那么操作有如下: 腐蚀与膨胀操作 开闭运算操作及实
2022-05-05 22:25:42
3123
原创 OpenCV入门(七)——车牌区域检测
对于一幅RGB图像,我们先将其转为HSI颜色空间,HSI分别是什么: H:Hue 色调(描述纯色的属性) S:Saturation 饱和度(指纯色被白色稀释的程度的度量,其值越大,色彩纯度越高) I:Illumination 亮度(描述光照的强度) 那么对于一幅RGB的图像,RGB到底要怎么转换为HSI:关于HSI分离:cv::Mat srcImage = cv::imread("./image/cheche.jpg");// 转换成hsv cv::..
2022-05-04 16:49:40
3475
原创 OpenCv入门(六)——几何检测
0x01 了解霍夫变换霍夫变换是要从图像钟识别几何形状的基本图像处理方法之一。经典的霍夫变换用来检测图像中的直线,改进的霍夫变换扩展到识别任意形状的物体(椭圆、圆等等)。优势在于它不受图行旋转的影响,易于进行几何图行的快速变换。经典的霍夫变换用于检测图像中的直线,其原理是利用坐标空间变换将两个坐标进行相应的转换,或通过直线映射到另一坐标空间的点形成的峰值。从而把检测任意形状的问题转化为统计峰值的问题。基本原理如下:以直线检测为例,每个像素坐标点经过空间变换都编程对直线特质有贡献的统一度量。
2022-05-02 00:38:08
4242
原创 OpenCv入门(五)——改进边缘算法Canny
原理:通过图像信号函数的极大值来判定图像的边缘像素点。最优边缘检测主要以下面三个参数为评判标准:低错误率:标识出尽可能多的实际边缘以及减少噪声产生。高定位性:表示出边缘要与图像中的实际边缘尽可能接近。最小响应:图像的边缘标记具有唯一性,虚假响应边缘应该得到最大抑制。(一)Canny的原理检测步骤: 消除噪声 边缘检测的算法主要是基于图像强度的一阶和二阶微分操作,但导数通常对噪声很敏感,边缘检测算法常常需要根据图像源的数据进行预处理操作,因此必须采用滤波器来改善与噪声.
2022-04-29 20:21:59
5609
原创 OpenCV入门(四)——边缘检测
边缘检测的概念:检测识别出图像图像中亮度变化剧烈的像素点构成的集合。目标物体形成边缘存在以下几种情形: 目标物呈现在图像上的不同物体平面上,深度不连续。 目标物本身平面不同,表面方向不连续。 目标物材料不均匀,表面反射光不同。 目标物受外部场景光影响不一。 根据边缘形成的原理,对图像的各像素点进行求微分或二阶微分可以检测出灰度变化明显的点。通常情况下边缘检测分为以下三个类型: 一阶微分为基础的边缘检测:通过计算图像的梯度值来检测图像边缘。 Sobel算子
2022-04-28 00:55:48
7375
1
原创 OpenCv入门(三)——阈值化处理
在图像处理中,处理灰度图像的计算量要小于处理彩色图像,而二值化图像(只含灰度值0或1)的计算复杂度更优于以上两者,因此二值化操作在数字图像处理中有着不可或缺的实用价值。一幅图像包括目标、背景以及噪声,想要直接提取出目标物体,通常是采用灰度变换阈值化操作。图像的阈值化操作就是利用图像像素点分布的规律,设定阈值进行像素点分割,进而得到图像的二值化图像。图像阈值化操作: OTSU 固定阈值 自适应阈值 双阈值 半阈值化 0x01 OTSU算法步...
2022-04-23 16:08:37
3734
原创 OpenCv入门(二)——仿射变换和透视变换
为什么要图像重映射?我们可以把每个像素的位置重新映射到新的位置,这可用来创建图像特效,或者修正因镜片等原因导致的图像扭曲。如何实现?使用OpenCv的remap函数,首先需要定义在重映射处理中使用的映射参数,然后把映射参数应用到输入图像。很明显,定义映射参数的方式将决定产生的效果。这里定义一个转换函数,在图像上创建波浪形效果:// 重映射图像,创建波浪形效果void wave(const cv::Mat &image, cv::Mat &result) { // 映射
2022-04-21 12:45:26
5524
1
原创 OpenCV入门(一)
关于如何安装opencv,如何配置环境,这些网上有太多关于这方面的资料了,在这只是我的一些入门笔记: 编译环境:Visual Studio 2019 编程语言:Cpp 0x01 OpenCv的基础知识(一)OpenCv库分为多个模块: opencv_core模块包含库的核心功能 opencv_imgproc模块包含主要的图像处理函数 opencv_highgui模块提供了读写图像和视频的函数以及一些用户交互函数 在网上下下来的opencv,安装后所生成的
2022-04-19 19:33:35
2738
原创 关于算法的学习以及一些总结(二)——数据结构
0x01 链表链表可以分为:单链表、双链表。 单链表主要用于邻接表(存储图和树) 双链表主要用于优化某些问题。 当我们想用普通的构建链表的形式去创建节点时,往往会超出时间的限制,所以以下的算法的都是基于数组来实现的(万物皆可用数组实现)。也就是下图的这个意思:所以我们需要声明两个数组去表达我们这个链表。那就先看看题目一吧:单链表实现一个单链表,链表初始为空,支持三种操作: 向链表头插入一个数; 删除第 k 个插入的数后面的数; 在第 k..
2022-04-16 16:41:03
866
3
原创 关于算法的学习以及一些总结(一)
0x01 基础算法之快速排序快速排序顾名思义就是使其可以快速的从小到大排序,按排序后的数组输出。题型:给定你一个长度为 n的整数数列。请你使用快速排序对这个数列按照从小到大进行排序。并将排好序的数列按顺序输出。输入格式输入共两行,第一行包含整数 n。第二行包含 n 个整数(所有整数均在 1∼1091∼109 范围内),表示整个数列。输出格式输出共一行,包含 n 个整数,表示排好序的数列。数据范围1≤n≤1000001≤n≤100000输入样例:53
2022-04-05 16:45:41
3024
原创 scrcpy源码阅读及在Ubuntu上的实现(三)——使用ZeroMQ传输yuv数据并使用Python订阅
目录0x01 什么是ZeroMQ?0x02 ZeroMQ的消息模型0x03 回到任务0x04 封装我们的yuv图像以及发布者0x05 使用Python订阅ZeroMQ的发布0x06 需要注意的在上一篇博客已经实现了对于yuv数据的输出实现。那么现在就使用ZeroMQ发布到本机网络端口,并且使用Python+OpenCV订阅出来吧。0x01 什么是ZeroMQ?ZeroMQ(简称ZMQ)是一个基于消息队列的多线程网络库,其对套接字类型、连接处理、帧、甚至路由的底层细节进行抽
2022-04-01 17:09:25
3311
原创 Scrcpy源码的阅读及在Ubuntu上的实现(二)——获取手机屏幕yuv数据
之前在使用scrcpy的时候走了不少弯路,但是也加深了自己对scrcpy的理解吧,那么现在就开始实现功能:在运行scrcpy的时候可能会遇到这个问题:先运行这个:meson x --buildtype=release --strip -Db_lto=true 这一步的编译看似没有什么问题,他会在scrcpy/x中生成如下文件:但是你们打开后可以发现server文件中是空的,少了一些文件,并且在执行ninja -Cx中会遇到:~/scrcpy$ ninja -Cx nin.
2022-03-31 16:52:20
4362
3
原创 scrcpy源码阅读及在Ubuntu上的实现(一)——了解原理
那开篇就问问为什么需要研究这个源码吧:在移动互联网的时代下,手机的功能是日益增加的,要使工作变得更加的高效,那么键盘鼠标其实是必不可少的。在许多软件的架构中,其实并没有提供对应的桌面版本,也不兼容基于x86架构的Android模拟器,按照这样下来,那我们就只能使用投屏工具了。scrcpy就是众多投屏软件中最具特色的一款,作为一款开源的软件,它拥有极佳的性能和丰富的功能,但是这款软件最气的地方在于他不可以输入中文!!看看能不能通过对源码的学习来改善这个问题吧。环境说明: Ubuntu20.0
2022-03-23 22:22:13
9094
1
原创 Liunx 与 CMake (二)——从改错开始
目标:要使得lightssd文件夹中可以在CMake下正确的编译,源程序是没有错误的,是CMakeLists.txt这个文件存在部分错误。先看看文件的框架:./lightssdp|-CMakeFiles|-include/ |-4个后缀为.h的文件|-sample/ |-Makefile |-ssdp_clie.c|-src/ |-Makefile |-各种后缀为.o、.c、.h文件|-CMakeCache.txt|-cmake_install.cmake|-CMakeLi
2022-03-20 12:22:08
739
原创 算法学习Day3——算法基础
一、快速排序(思想:分治)(1)确定分界点x常用确定分界点方法: Q[L]左边界的点 Q[(R-L)/2]中间的点 Q[R]有边界的点 随机点 (2)调整区间:划分为两个区间,使小于等于x的数都划分在左边,使大于等于x的数都划分在右边。(3)递归:递归处理左右两边的值。暴力求解:有一个简单的做法,但是比较消耗空间。是规定一个数字x,以及初始化两个空的数组,将小于x的值存放在数组a中,大于等于x的值存放于数组b中,之后遍历完后再将ab两个数组的值
2022-03-17 19:28:59
585
原创 Linux 与 Cmake (一)——了解CMake
我使用的是Ubuntu20.04.1进行学习。一、那就先使用Linux编写一个C开始吧:Hello World!(1)在Terminal中编写C语言程序,进行编译调试。首先先熟悉一下Linux的基本操作命令吧:Linux命令的名称 作用 mkdir 新建文件夹 cd 更改当前的工作目录 ls 列出文件夹下包含的文件信息 pwd 查看当前工作目录 cp 拷贝文件 rm 删除文件或文件夹 mv 移动文件 cat 查
2022-03-14 16:30:47
3282
原创 Python+scrcpy+pyminitouch实现自动化(四)——实现语音识别自动打卡机器人
首先要去网上下载一个想要实现自动化的软件,下载对应的apk后拖拉到虚拟器的页面即可实现自动下载。以上是对于AS打开的模拟器进行的下载安装,由于我找不到关于x86的企业微信,所以我就换了逍遥模拟器,对于AS的模拟器只能是基于Google Play或者是Google APIS的。具体可参考这篇博客:android studio中AVD模拟器添加APK文件的方法_xuzhimolol的博客-CSDN博客_android studio 虚拟机安装apk。 下载逍遥模拟器:【逍遥安卓模拟器】安卓..
2022-03-11 20:03:44
8776
1
原创 Python+scrcpy+pyminitouch实现自动化(三)——实现触摸
在上次使用pyminitouch的时候出现了这个问题:AssertionError: minitouch did not work.之后我就开始努力解决这个问题,去网上搜罗了minitouch的使用方法。在上一篇文章中我已经把minitouch push到手机上了。关于minitouch工具的文章:STF 框架之 minitouch 工具 · TesterHome,在里面已经介绍的很详细了。 minitouch:提供一个socket接口用来在Android设备上的多点触摸以及手势。它能
2022-03-10 21:39:26
8734
原创 算法学习Day2——C之二分查找与动态规划
二分查找:第一个错误版本题目:思路:划清左右边界,算出分界线, 在某条分界线上,如果这条分界线为true,则分界线左边都是true;那么把左边界设为中线部分,因为第一个错误的地方肯定在于中线的右侧,区间为[mid,right]。如果这条分界线为false,那么错误肯定位于左边,那么把right设置为mid,第一个错误的区间肯定位于[left,mid]。这种方式不断地缩小查询的空间: 时间复杂度O(log n),n为给定长度/数量 空间复杂度O(1),只需要保持常数空间 .
2022-03-07 17:06:26
801
原创 算法学习Day1——C之哈希表
思想:使用哈希函数将键映射到存储桶。 想要插入一个新的键,哈希函数将决定该键该分配到哪个桶中,并将该键存储在相应的桶中。想要搜索一个键的时候,哈希表使用哈希函数来查找相应的桶,并在特定的桶中进行搜索。 设计哈希函数:取决于键值的范围和桶的数量。完美的哈希函数可以使键和桶之间的一对一映射。在大多数情况下,哈希函数并不完美,会产生哈希冲突。 冲突解决:在同一个桶中存在了多个键。 如何解决冲突? 链表:将相同的哈希值的元素都放入这一链表当中。 开放地..
2022-03-03 22:55:40
1580
原创 Liunx学习笔记(一)
一、Linux操作系统原理 操作系统(Operating System,OS)是控制其他程序运行、管理系统资源并为用户提供操作界面的系统软件的集合。 操作系统是一个庞大的管理控制程序,大致包括5个方面的管理功能:进程与处理机管理、作业管理、存储管理、设备管理、文件管理。 所有的操作系统都具有并发性、共享性、虚拟性和不确定性四个基本特征。 (一)Linux操作系统(1)Linux系统的组成Linux操作系统一般包含4个主要部分:内核、shell、文件系统和应用程序。其中,
2022-02-25 12:30:02
334
原创 Python+scrcpy+pyminitouch实现自动化(二)——pyminitouch的安装
一、什么是pyminitouch?minitouch是openstf基于ndk + Android开发的用于模拟人类点击行为的操作库。这个库以高稳定性、反应快著称,比起adb操作与uiautomator(两分钟搞懂UiAutomator自动化测试框架 - 知乎)都要更灵敏,被广泛应用于Android设备的精细操作。然而它的使用与其安装方式都较为繁琐,无法定位打元素,使得它在自动化的应用领域上远远比不上uiautomator。它的体验感也较为一般,么此都要给手机重复安装指定版本的minitouch、建
2022-02-22 14:42:17
4785
2
原创 Python+scrcpy+pyminitouch实现自动化(一)——scrcpy的安装
一、什么是scrpy?是一种通过adb调试的方式来将手机屏幕投到电脑上,并且可以通过电脑控制Andorid设备,也可以通过Wifi连接,相当于隔空投屏,而且也不需要root权限,不需要再手机里面安装任何程序。adb(Android Debug Bridge),是Android SDK中的一个工具,使用adb可以直接操作管理Android模拟器或者真实的Android设备,起到调试桥的作用。adb工具包一般只是一个压缩文件,不需要安装,只需要解压就可以使用了,解压后有三个必须文件adb.exe动态链接
2022-02-20 19:53:48
10847
2
原创 Python+Appium+百度sdk(三)--语音识别控制
这次的目标是继上次的健康时报打卡机器人,现在要实现语音控制。一、部署工作使用的是百度智能云:具体操作文档https://ai.baidu.com/ai-doc/SPEECH/Gk38lyqzo入门者看着新手指南就可以了。之后进入百度智能云登录账号后领取可以实现语音识别的额度:之后点击创建任务:之后就获取了语音识别的AppID、API Key、Secret Key:点击隔壁的技术文档:之后点击下载SDK:下载Python SDK:注意看...
2022-02-16 19:27:49
4460
原创 使用电容屏做一个小画板——应用层(三)
在上一节中,中断里存放了检测按下的xy轴的数据,里面有两个处理的函数:/*** @brief Touch_Button_Down 按键被按下时调用的函数,由触摸屏调用* @param x 触摸位置的x坐标* @param y 触摸位置的y坐标* @retval 无*/void Touch_Button_Down(uint16_t x,uint16_t y){ uint8_t i; for(i=0;i<BUTTON_NUM;i++) { /* 触摸到了...
2022-02-11 00:11:08
1572
1
原创 使用电容触摸屏做画板——软件IIC(二)
使用电容触摸屏时发现硬件IIC会使电容触摸屏卡死,经过调试发现软件IIC更加好用,那么下面就了解一下软件IIC叭。IIC协议: 通讯的起始和停止信号 有效数据 响应信号 具体参考博客:STM32F429入门(二十):IIC通讯协议(硬件)_Alkaid2000的博客-CSDN博客_stm32 硬件iic 对于SCL与SDA两条线,我们可以使用gpio输出的方式进行控制: (1)模拟起始信号:SCL为高电平、SDA由..
2022-02-10 22:55:11
5653
原创 使用电容触摸屏做一个画板--原理(一)
一、什么是触摸屏触摸屏又称触控面板,它是一种把触摸位置转化成坐标数据的输入设备,根据触摸屏的检测原理,主要分为电阻式触摸屏和电容式触摸屏。 电阻式触摸屏:造价便宜,能适应较恶劣的环境,但它只支持单点触控(一次只能检测面板上的一个触摸位置),触摸时需要一定的压力,使用久了容易造成表面磨损,影响寿命。 电容式触摸屏:具有支持多点触控、检测精度高的特点,电容屏通过与导电物体产生的电容效应来检测触摸动作,只能感应导电物体的触摸,湿度较大或屏幕表面有水珠时会影响电容屏的检测效果。 区分电阻屏与
2022-02-09 16:08:47
3190
原创 LTDC-DMA2D显示屏显示-编码标准(三)
一、字符编码由于计算机只能识别0和1,文字也只能以0和1的形式在计算机里存储,所以我们需要对文字进行编码才能让计算机处理,编码的过程就是规定特定的01数字串来表示特定的文字,最简单的字符编码例子是ASCII码。 ASCII码(0~255) 在程序设计中使用ASCII编码表约定了一些控制字符、英文及数字。它们在存储器中,本质也是二进制数,只是我们约定这些二进制数可以表示某些特殊意义。 ASCII码分为两部分: 第一部分是控制字符或通讯专用字符(编码0~31) 它们并没有特定的
2022-02-09 13:45:56
1548
1
原创 LTDC-DMA2D液晶显示 代码详解(二)
使用以下结构体的具体原理需要参考LTDC-DMA2D液晶显示(一)一、LTDC初始化结构体typedef struct{ uint32_t LTDC_HSPolarity; //配置行同步信号HSYNC的极性 uint32_t LTDC_VSPolarity; //配置垂直同步信号VSYNC的极性 uint32_t LTDC_DEPolarity; //配置数据使能信号DE的极性
2022-02-03 21:34:18
2341
原创 LTDC-DMA2D液晶显示原理(一)
一、了解显示器常见的显示器有CRT显示器、液晶显示器、LED点阵显示器及OLED显示器。(1)液晶显示器LCD(Liquid Crystal Display)LCD 显示器具有功耗低、体积小、承载的信息量大及不伤眼的优点,因而它成为了现在的主流电子显示设备,其中包括电视、电脑显示器、手机屏幕及各种嵌入式设备的显示器。液晶是一种介于固体和液体之间的特殊物质,它是一种有机化合物,常态下呈液态, 但是它的分子排列却和固体晶体一样非常规则,因此取名液晶。如果给液晶施加电场,会改变它的分子排列,从而改
2022-02-02 17:40:43
2405
原创 FMC——扩展外部SDRAM
STM32控制器芯片内部有一定大小的SRAM及FLASH作为内存和程序存储空间,但当程序较大,内存和程序空间不足时,就需要在STM32芯片的外部扩展存储器了。市场上SDRAM的价格普遍比SRAM性价比要高一些,所以正常电脑扩展的内存,那些内存条都是由SDRAM集成的。给STM32芯片扩展内存与给PC扩展内存的原理是一样的,只是PC上一般以内存条的形式扩展,内存条实质是由多个内存颗粒(即SDRAM芯片)组成的通用标准模块,而STM32直接与SDRAM芯片连接。一、SDRAM控制原理下面以型号I
2022-02-01 21:46:57
2308
1
原创 汇编原来是这样(一)
汇编原来是这样(一)(一)基础知识一、机器语言 机器语言是机器指令的集合。 机器指令展开来讲就是一台机器可以正确执行的命令。(只有0和1) 比如堆栈指令:0101 0000(PUSH AX) 二、汇编语言的产生以及组成 汇编语言的主体是汇编指令。 汇编指令与机器指令的差别在于指令的表示方法上。汇编指令是机器指令便于记忆的书写格式。 汇编指令是机器指令的助记符。 例如:机器指令:1000100111011000操作:寄存器BX内容送
2021-12-09 18:57:53
1369
原创 Python游戏项目--外星人入侵(一)
一、安装Pygame在终端输入:pip install --user pygame二、开始游戏项目(1)创建Pygame窗口及响应用户输入创建一个名为alien_invasion.py的文件,是程序主要运行的文件。import sysimport pygameclass AlienInvasion: def __init__(self): pygame.init() # 初始化游戏并创建游戏资源 self.screen = py
2021-11-22 13:27:32
7506
4
原创 Python + Appium 自动化测试(二):实战
最近一直在忙比赛,从电赛到下个星期的省赛,这一个月真的过的好漫长....最后电赛只拿了省级的奖项,有点不甘心吧,但是还是有好多需要学习的地方,希望自己以后能够更好地面对这些挑战吧!!一、连接手机 通过USB线连接Android手机和电脑,打开手机的开发者模式,开启USB调试模式。 win+R打开cmd输入命令:adb devices,显示连接手机的udid即为连接成功: 二、获取测试手机及被测app的相应信息(即capability配置内容) platformName:声明
2021-11-19 01:05:56
4217
原创 Python+Appnium环境搭建(一)
最近想跟老师学学自动化测试框架,但是这些软件的安装也确实是挺费时费力的,下面我将我今天遇到的种种挫折写下来,还有解决这些问题的方法:我们最后安装的软件有如下:一、Appium环境搭建流程(1)JDK环境配置官网网址:Java Downloads | Oracle有些安装在SDK中的工具,比如查看app界面元素的uiautomatorviewer需要JDK才可以运行。它的安装比较简单,需要注意的是安装后需要去环境变量改一下配置。接下来,右击我的电脑-->属性-->高级.
2021-10-17 14:42:01
1639
2
原创 STM32F429入门(二十二):SPI-FatFs文件系统
使用文件系统可以更好地管理FLASH的存储空间。小型存储器如EEPROM可以直接存储,但是对于FLASH、SD卡等这些大容量的设备时,就需要文件系统来管理。一、初识文件系统当需要记录字符时,可以把这些文字转换成ASCII码,存储在数据中,然后调用SPI_FLASH_BufferWrite函数,把数组内容写入到SPI FLASH芯片的指定地址上,在需要的时候从该地址把数据读取出来,再对读出来的数据以ASCII码的格式进行解读。缺陷: 难以记录有效数据的位置 难以确定存储介质的剩余空
2021-10-13 17:55:57
4767
原创 STM32F429入门(二十一):SPI协议及SPI读写FLASH
IIC主要用于通讯速率一般的场合,而SPI一般用于较高速的场合。一、SPI协议简介SPI 协议是由摩托罗拉公司提出的通讯协议(Serial Peripheral Interface),即串行外围设 备接口,是一种高速全双工的通信总线。它被广泛地使用在 ADC、LCD 等设备与 MCU 间, 要求通讯速率较高的场合。(一)物理层SPI 通讯使用 3 条总线及片选线,3 条总线分别为 SCK、MOSI、MISO,片选线为SS,它们的作用介绍如下: SS:从设备选择信号线,常称为片选信.
2021-10-07 22:54:48
17234
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅