STM32基础学习笔记-SPI通讯协议协议面试基础题8

第八章、SPI : LCD屏

1、LCD是什么 ?发光原理 ?

1.LCD:液晶显示

当有电流的时候,液晶层中的物质会有序排列

没有电流的时候,无序排列,光不可以透过

当像素点只有黑/白色的时候,灰度图(非黑即白)

三原色RGB:红绿蓝

一个像素点内部是由三个灯组成的

16位真彩色 24位真彩色

16位,就是有16个比特位,R占5位,绿色占5位,蓝色占5位;;;24位分别占8位,24位颜色更加丰富

2.lcd的发光原理

上电,液晶层有序

然后16位真彩色

128*128个像素点(横向纵向都是128个像素点)

lcd的本质也是一个外设,要和单片机进行通讯;

在通讯的时候,有

3.两种通讯方式

第一种是和单片机直接相连,没有低于20个引脚(单片机也需要提供20多个引脚与之相连)

引脚分类:控制引脚;数据传输引脚(数据引脚);接着是地址引脚;还有其他的引脚… 这种通讯方式十分浪费引脚。正常使用第二种通讯方式:

间接相连: lcd控制芯片;;;lcd和控制芯片相连接,控制芯片再和单片机相连接(单片机当主机,控制芯片当从机)----lcd厂商生产lcd的时候,将控制芯片一般都是和lcd一块生产打包组装; 迪文屏,喜欢用uart进行通讯;;;;;我们学习SPI通讯;

OLED用I2C进行通讯

2、16位真彩色 ?24位真彩色 ?

**16位真彩色:**每个像素使用16位来表示颜色,通常采用5-6-5格式,即5位用于红色,6位用于绿色,5位用于蓝色。这样可以表示的颜色总数为 (2^{16} = 65,536) 种颜色。

**24位真彩色:**每个像素使用24位来表示颜色,通常采用8-8-8格式,即8位用于红色,8位用于绿色,8位用于蓝色。这样可以表示的颜色总数为 (2^{24} = 16,777,216) 种颜色。

3、SPI是什么 ?电路 ? 什么主从模式 ?

**主设备:**控制通信的设备,生成时钟信号,发起数据传输。

**从设备:**响应主设备的请求,接收或发送数据。

4、三线制和四线制的区别 ?

(CC/SS)上面加个横线,横线代表低电平有效):片选线

SPI是三线制还是四线制?:如果主机从机都有两个通道两重身份,那么就是四线制;;;如果要么是主往从发要么从往主发,就是三线制;;;;

第二种说法就是,四线制有CSS,三线制没有CSS;

四线制(SCLK,MOSI,MISO,CC)

这是全双工,两个引脚起不同的作用,所以是串行(区分串行还是并行,要看多个引脚执行功能的时候,是同步发还是不同步发)

5、通讯原理

6、SPI 的优缺点

优点:

高速传输:SPI支持较高的传输速率,通常比I2C快,适合需要快速数据传输的应用。

全双工通信:SPI可以同时进行数据的发送和接收,提高了通信效率。

简单的硬件连接:SPI只需要少量的引脚(通常是4个),连接简单。

灵活的时钟频率:SPI的时钟频率可以根据需要进行调整,适应不同的应用场景。

多设备支持:可以通过选择不同的片选信号(CS)来连接多个从设备。

缺点:

引脚占用多:每增加一个从设备,需要额外的片选引脚,导致引脚占用增加。

无硬件地址:SPI没有内置的设备地址机制,所有设备都需要通过片选信号来选择,增加了复杂性。

不支持多主机:SPI通常是单主机的协议,多个主机之间的协调需要额外的设计。

无错误检测机制:SPI协议本身不提供错误检测和纠正机制,需在应用层实现。

7、lcd的通讯协议:SPI

**SPI:**看一个通讯协议,主要看:

看硬件的接线 通讯分类(全半同步异步串行并行)

接线主要是一主多从:SCLK线(时钟线);主机往从机发的线,从机往主机发送的线;这三根线是一根线分出去的

还有一根线叫做片选线,一个主机,很多个从机,每根片选线都是独立相连的;

从机往主机发送的线: MOSI(主发从收。。tx) MISO(主收从发。。rx):I是进,M是主,S是从,O是输出 (TX和RX是uart中的定义,这儿不能使用,所以用MOSI这两个名字定义)

通信协议:

8、极性和相位(SPI里独有的协议)

1.极性

时钟线处于空闲时的状态:0是低电平;

空闲的时候,如果处于1的话,就是高电平;

2.相位

写入/读取数据的时机(时钟线 上/下沿的奇偶沿 0是奇,1是偶)

极性为1,代表高电平的时候没有信号;此时相位=1时,就是在偶数沿(2.4.6.8.10)边沿写入数据

而如果相位是0,那就是在奇数边沿写入数据;;;

3.四种通讯协议

根据极性和相位两两组合就可以得到四种通讯协议;

0/0 0/1 1/0 1/1

00 空闲为低,读写在奇

01 空闲在低,读写在偶

10 空闲为高,读写为奇

11 空闲为高,读写为偶

不需要我们去写,直接通过API调用别人的函数就行

cubemx配置一些引脚,见图

lcd函数:

init初始化函数;;;clear清屏函数

DrawFont GBK16 显示ascll码函数 drawfont 1616显示中文

函数就是初始化先,用lcd-init,然后用一种颜色清屏(清屏函数),设置延时,再用另一种颜色,再设置延时;屏幕换颜色实验操作基本完成。

9、实验

移植步骤

1、写项目框架: printf移植框架

2、 移植 lcd 的 .c/.h 到项目中

3、 配置 MX 中gpio 重命名 (时钟频率不能太高 16M)

4、 汉字/ 图片 取模工具使用、数组

Lcd_Init();

Lcd_Clear(RED); // 屏幕初始化

Gui_DrawFont_GBK16(10,10,BLUE,BLACK,(uint8_t *)“HELLO”); // 打印ASCLL

char str[40];

sprintf(str,“%d.%d”,10,98);

Gui_DrawFont_GBK16(50,50,BLUE,BLACK,(uint8_t *)str); // 打印拼接字符

extern const char hqyj16[][32];

Gui_DrawFont_1616(0,0,RED,BLACK,hqyj16); // 打印汉字

extern const unsigned char gImage_rr[32768]; // 打印图片

showimage(gImage_rr);

首先把重定向函数复制进来;

#include “stdio.h”

#include “string.h”

__ASM (".global __use_no_semihosting");    struct FILE {int handle; };FILE __stdout;void _sys_exit(int x) { x = x; }void _ttywrch(int ch){ ch = ch;}                                                                                  int fputc(int ch, FILE *f)    {uint8_t temp[1] = {ch};HAL_UART_Transmit(&huart1, temp, 1, 2);return ch;}

utc(int ch, FILE *f)

{uint8_t temp[1] = {ch};HAL_UART_Transmit(&huart1, temp, 1, 2);return ch;}

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

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

相关文章

windows C++-同步数据结构与 Windows API

将并发运行时提供的同步数据结构的行为与 Windows API 提供的同步数据结构的行为进行比较。 并发运行时提供的同步数据结构遵循协作线程模型。 在协作线程模型中,同步基元显式将其处理资源传递给其他线程。 这与抢占式线程模型不同,其中处理资源由控制调…

RtspServer:轻量级RTSP服务器和推流器

文章目录 项目概述技术分析支持的编码格式传输方式心跳检测机制RTSP 推流安全性 架构分析RtspServer 整体架构流程分析1. 客户端连接和会话建立2. 媒体数据传输3. 心跳检测和连接维护 xop 基础库项目介绍功能特性xop 整体架构 应用场景社区问题收集与解答问题一:刚开…

【YOLO学习】YOLOv1详解

文章目录 1. 概述2. 算法流程3. 网络结构4. 损失函数 1. 概述 1. YOLO 的全称是 You Only Look Once: Unified, Real-Time Object Detection。YOLOv1 的核心思想就是利用整张图作为网络的输入,直接在输出层回归 bounding box 的位置和 bounding box 所属的类别。简单…

【AI创作组】Matlab中进行符号计算

提示:代码一定要自己运行过才算数…… 1. 符号计算工具箱介绍 1.1 工具箱功能 MATLAB的符号计算工具箱,即Symbolic Math Toolbox,是一套强大的数学软件工具,它使得MATLAB具备了符号运算的能力。该工具箱提供了一系列函数,用于求解、绘制和操作符号数学方程。用户可以直接…

深度学习之表示学习 - 半监督解释因果关系篇

序言 在深度学习的广阔领域中,表示学习( Representation Learning \text{Representation Learning} Representation Learning)与半监督学习( Semi-supervised Learning \text{Semi-supervised Learning} Semi-supervised Learnin…

C++:deque的底层原理

一、deque是是双端队列。 deque(双端队列):是一种双开口的"连续"空间的数据结构,双开口的含义是:可以在头尾两端进行插入和删除操作,且时间复杂度为O(1),与vector比较,头插效率高,不…

spring里面内置的非常实用的工具

一 、请求数据记录 Spring Boot提供了一个内置的日志记录解决方案,通过 AbstractRequestLoggingFilter 可以记录请求的详细信息。 AbstractRequestLoggingFilter 有两个不同的实现类,我们常用的是 CommonsRequestLoggingFilter。 通过 CommonsRequestL…

AlDente Pro for Mac电池健康保护工具

AlDente Pro for Mac 是一款适用于 Mac 的实用电池健康保护工具。以下是它的主要特点和优势: 软件下载地址 一、保护电池寿命的原理 锂离子和聚合物电池(如 Mac 笔记本中的电池)在 30% 到 80% 之间运行时使用寿命最长。始终将电池电量保持…

网关基础知识

1.网关路由 网关:就是网络的关口,负责请求的路由、转发、身份校验。 在SpringCloud中网关的实现包括两种: 1.Spring Cloud Gateway Spring官方出品 基于WebFlux响应式编程 无需调优即可获得优异性能 2.Netflix Zuul Netflix出品 基于Ser…

快递物流短信API接口代码

官网:快递鸟 API参数 用户信息类 一.短信模版 1.接口说明 使用快递鸟短信功能时,预先设置好短信模板和对应的发送规则,快递鸟短信API将根据设置的好的模板和规则,进行短信的发送和反馈。 (1)仅支持Json格式。 (2)请求指令810…

vulnhub(13):Digitalworld.local JOY(ftp 的未授权文件读写漏洞、文件覆盖提权)

端口 nmap主机发现 nmap -sn 192.168.72.0/24 ​ Nmap scan report for 192.168.72.171 Host is up (0.00020s latency). ​ 171是新出现的机器,他就是靶机 nmap端口扫描 nmap -Pn 192.168.72.171 -p- --min-rate 10000 -oA nmap/scan 扫描开放端口保存到 nmap/sca…

Python | Leetcode Python题解之第435题无重叠区间

题目: 题解: class Solution:def eraseOverlapIntervals(self, intervals: List[List[int]]) -> int:if not intervals:return 0intervals.sort(keylambda x: x[1])n len(intervals)right intervals[0][1]ans 1for i in range(1, n):if intervals…

网络资源模板--Android Studio 垃圾分类App

目录 一、项目演示 二、项目测试环境 三、项目详情 四、完整的项目源码 一、项目演示 网络资源模板--垃圾分类App 二、项目测试环境 三、项目详情 登陆注册 设置点击监听器:当用户点击注册按钮时触发事件。获取用户输入:从输入框获取用户名和密码&a…

springboot 接口接收及响应xml数据

1.实体类 import javax.xml.bind.annotation.XmlAccessType; import javax.xml.bind.annotation.XmlAccessorType; import javax.xml.bind.annotation.XmlElement; import javax.xml.bind.annotation.XmlRootElement;XmlRootElement XmlAccessorType(XmlAccessType.FIELD) // …

【SpringBoot详细教程】-03-整合Junit【持续更新】

JUnit是一个用于Java编程语言的测试框架。它支持自动化单元测试,可以帮助开发人员测试代码的正确性和健壮性。JUnit提供了一组注解、断言和测试运行器,可以方便地编写和运行单元测试。 SpringBoot 整合 junit 特别简单,分为以下三步完成 在…

网络安全等级保护 | 规范企业网络系统安全使用 | 天锐股份助力等保制度落地

在当今数字化高速发展的时代,网络安全对于企业的重要性日益凸显。而近年来,数据泄露、网络攻击等安全事件频发,给企业和个人带来了前所未有的挑战。在这一背景下,网络安全等级保护制度(简称“等保”)作为国…

经颅磁刺激技术,脑科学研究——精神患者治疗方案

经颅磁刺激(Transcranial Magnetic Stimulation ,TMS)技术是一种利用脉冲磁场作用于中枢神经系统(主要是大脑),改变皮层神经细胞的膜电位,使之产生感应电流,影响脑内代谢和神经电活动…

Qt QFileDialog使用方法

头文件 #include <QFileDialog> 成员名称返回值说明getExistingDirectoryQString返回用户选中的文件夹路径getExistingDirectoryUrlQUrl与QFileDialog::getExistingDirectory()的主要区别来自于为用户提供的选择远程目录的能力getOpenFileNameQString返回用户选中的文件…

基于深度学习的树叶识别系统的设计与实现(pyqt5 python3.9 yolov8 10000张数据集)

&#x1f497;博主介绍&#x1f497;&#xff1a;✌在职Java研发工程师、专注于程序设计、源码分享、技术交流、专注于Java技术领域和毕业设计✌ 温馨提示&#xff1a;文末有 CSDN 平台官方提供的老师 Wechat / QQ 名片 :) Java精品实战案例《700套》 2025最新毕业设计选题推荐…

解锁微软录屏工具:2024 开启屏幕录制新时代

现在快节奏的生活环境&#xff0c;录屏工具已成为不可或缺的记录利器&#xff0c;其应用范围广泛。若你正对windows自带录屏功能充满好奇&#xff0c;渴望掌握其操作方法&#xff0c;或是寻求更多专业、便捷的录屏软件选项&#xff0c;那么就请继续阅读吧。 1.福昕录屏大师 链…