单片机--SPI协议

news2024/11/18 12:19:27

目录

【1】SPI协议

1.SPI协议

2.SPI时序

【2】LCD液晶显示屏

【3】点亮LCD显示屏

图片显示

汉字显示


【1】SPI协议

1.SPI协议

SPI(Serial Peripheral Interface)是 摩托罗拉公司(Motorola)首先提出的全双工同步串行外设接口,采用主从模式(Master、Slave)架构。

时钟由Master控制,在时钟移位脉冲下,数据按位传输,高位在前,低位在后(MSB first);

SPI接口有2根单向数据线,为全双工通信。 

 SPI总线被广泛地使用在FLASH、ADC、LCD等设备与MCU间,要求通讯速率较高的场合。

SPI模式通常有一个主设备和一个或多个从设备,需要至少4根线,事实上3根也可以(单向传输时)。也是所有基于SPI的设备共有的,它们是MISO(主设备数据输入)、MOSI(主设备数据输出)、SCLK(时钟)、CS(片选)。

(1)MISO– Master Input Slave Output,主设备数据输入,从设备数据输出;

(2)MOSI– Master Output Slave Input,主设备数据输出,从设备数据输入;

(3)SCLK – Serial Clock,时钟信号,由主设备产生;

(4)CS – Chip Select,从设备使能信号,由主设备控制。

2.SPI时序

起始信号:NSS信号线由高变低,是SPI通讯的起始信号

结束信号:NSS信号由低变高,是SPI通讯的停止信号

数据传输:SPI使用MOSI及MISO信号线来传输数据,使用SCK信号线进行数据同步。MOSI及MISO数据线在SCK的每个时钟周期传输一位数据高位在前低位在后,且数据输入输出是同时进行的。SPI每次数据传输可以 8 位或 16 位为单位,每次传输的单位数不受限制。

SPI通信模式图:

 

总结:

SPI有四种通信模式:

当CPHA为0,是SCK时钟线为奇数边沿采样

(1)CPOL=0,空闲状态是时钟为低电平

(2)CPOL=1,空闲状态是时钟为高电平

当CPHA为1,是SCK时钟线为偶数边沿采样

(1)CPOL=0,空闲状态是时钟为低电平

(2)CPOL=1,空闲状态是时钟为高电平

数据线被采样,都是等待数据线变化稳定半个时钟周期进行采样。

【2】LCD液晶显示屏

液晶的形成:

某些物质在熔融状态或被溶剂溶解之后,尽管失去固态物质的刚性,却获得了液体的易流动性,并保留着部分晶态物质分子的各向异性有序排列,形成一种兼有晶体和液体的部分性质的中间态,这种由固态向液态转化过程中存在的取向有序流体称为液晶。

物理特点:通电时导通,排列变得有秩序,使光线容易通过;不通电时排列混乱,阻止光线通过

液晶显示屏内部构造:

颜色深度:

 ① R,G,B三基色组合形成各种颜色。

②能显示的颜色数由RGB的数字信号的位数来决定。

例如,以3位数字信号来表示颜色深度

 RGB24表示的意思是(24位真彩色)

         R:8     

        G:8     

        B:8

  所以根据公式得到显示的颜色深度是2^8*2^8*2^8

  STM32G030开发板板载的显示屏是RGB16也称为RGB565

   颜色深度: 2^5 * 2^6 *2^5

  由一个16位的数据控制一个像素点的颜色显示正红色:  1111 1000 0000 0000

【3】点亮LCD显示屏

1.查看原理图

    底板原理图

打开STM32CubeMX新建工程配置对应引脚

将驱动文件放到工程目录下

图片显示

1.使用画图工具修改图片为像素128*128 ,取消纵横比

 2.图片保存为BMP格式

 3.取模工具打开,配置16位真彩色,大小128*128

 

4.保存并复制生成的数组,放到程序中 

使用函数显示图片

 运行效果

汉字显示

1.  打开汉字取模软件

定义一个char类型的二维数组,并初始化为汉字字模数据

调用汉字显示函数,按要求传递参数即可。

运行效果

 

  

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

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

相关文章

webpack核心原理

背景 Webpack 特别难学!!! 时至 5.0 版本之后,Webpack 功能集变得非常庞大,包括:模块打包、代码分割、按需加载、HMR、Tree-shaking、文件监听、sourcemap、Module Federation、devServer、DLL、多进程等…

传感云智慧公厕综合解决方案,实现公厕精细化管理

随着国家“公厕革命”建设工作的持续推动与科技创新技术的不断进步,人们对“方便”与“卫生”的要求越来越高,智慧公厕已然成为智慧城市建设规范下的公共厕所新形态,不仅可以解决传统公厕的脏乱差、异味和管理难题,同时可以为用户…

前端 之 FormData对象进阶

一、进阶知识 在前一篇博客中,我讲解了FormData对象的基础概念、相关方法和基本用法,本篇博客我将讲解一些FormDate对象相关的进阶知识,主要包含FormData与其他对象结合使用的各类场景,以及一些使用技巧。 1、FormData对象、JSO…

在一个不小但很美的公司里工作

在这个公司里学到了什么 电商交易前业务:商品,库存,物流,会员 ; 电商广告部分业务: 网红,联盟; 并且对这些业务里的核心流程,核心技术 有过总结。核心技术问题采用对应…

HTTP.sys远程代码执行

本文转载与:https://blog.csdn.net/weixin_47723270/article/details/129472716 01 漏洞描述 HTTP.sys是Microsoft Windows处理HTTP请求的内核驱动程序,为了优化IIS服务器性能,从IIS6.0引入,IIS服务进程依赖HTTP.sys。HTTP.sys远程…

keycloak异常关闭报错username ‘admin‘ already added时卡死无法重启的问题处理

问题现象 使用docker部署keycloak服务,使用docker-compose进行配置管理,配置如下: keycloak:image: jboss/keycloak:16.1.0 container_name: keycloakcommand:[-b,0.0.0.0,-Dkeycloak.migration.actionimport,-Dkeycloak.migration.provider…

UE5中如何新建C++类?

UE5 插件开发指南 前言0.如何在UE编辑器内创建C++类?1.如何在UE编辑器外创建C++类?前言 这个问题应该细分成两个问题: (1)如何在编辑器内创建C++类? (2)如何在编辑器外创建C++类? 问题(1)主要针对那些可以在编辑器内继承并创建的类,然而有些内是无法在编辑内继承的,必须在…

overflow属性的常用值详解

什么是overflow 在CSS中,overflow是“溢出”的意思,该属性规定当内容溢出元素框时发生的事情,设置内容是否会被修剪,溢出部分是否会被隐藏;例如当属性值设置为“visible”则内容不会被修剪,为“hidden”则内…

软件测试用例包括_白盒测试用例

测试用例分层 每个测试用例都有1个或多个测试步骤(List[step]),每个测试步骤对应一个API请求或其他用例的引用。 从上图分析,我们可以看到testsuite中包含了3个测试用例,testcase1中有4个请求和一个步骤teststep12&am…

LeetCode:25. K 个一组翻转链表

25. K 个一组翻转链表 1)题目2)思路3)代码4)结果 1)题目 给你链表的头节点 head ,每 k 个节点一组进行翻转,请你返回修改后的链表。 k 是一个正整数,它的值小于或等于链表的长度。…

研发工程师玩转Kubernetes——通过文件创建Pod

在《研发工程师玩转Kubernetes——部署应用》中,我们使用kubectl run命令启动了一个可以在kubernetes集群内部访问的nginx——它不可以通过物理机访问。而我们使用文件创建时,则可以通过设置相关参数,让nginx可以通过物理机地址访问。 创建P…

【社工】NodeJS 应用仓库钓鱼

前言 城堡总是从内部攻破的。再强大的系统,也得通过人来控制。如果将入侵直接从人这个环节发起,那么再坚固的防线,也都成为摆设。 下面分享一个例子,利用应用仓库,渗透到开发人员的系统中。 应用仓库 应用仓库对于开…

手写决策树算法——基于决策树的XX联盟游戏胜负预测

机器学习 基于决策树的 XX联盟游戏胜负预测 作者:李俊才 (jcLee95):https://blog.csdn.net/qq_28550263?spm1001.2101.3001.5343 邮箱 :291148484163.com 本文地址:https://blog.csdn.net/qq_28550263/ar…

用Powerpoint (PPT)制作并导出矢量图、高分辨率图

论文写作时经常需要导入矢量图,正规军都是用AI或者Inkscape,但是PPT更加适合小白用户,或者一些简单的构图需求,而且不得不承认PPT的某些功能是真的香,例如:简单的对齐、文字插入和格式修改等等。但是PPT是不…

Ansys仿真TDR

1、TDR测量的原理: 2、时域反射计TDR的电路仿真 打开Ansys的TDR电路例程,单端电路和TDR源的设置如下图所示,被测的DUT为4段传输线和一个电容,一个电感。 TDR测的结果如下: 信号到负载电容的时间为1.5ns,然…

Cesium源码分享--气泡窗

Cesium气泡窗插件 在线api文档说明 在线体验地址 更多案例地址 免费gis数据 ps:如果可以的话,希望大家能给我个star,好让我有更新下去的动力; 实现原理: Cesium和我们平时常见的leaflet、ol以及arcgis api是不一样…

组合数学公式

1、8个相同的球放进4个相同的盒子里,每盒至少一个,有几种方法 ? 公式:球相同,盒相同,拆分公式。 P4(8)P1(4)P2(4)P3(4)P4(4) 1211 5 2、8个相同的球放进4个不同的盒子里,每盒至少一个&#xff…

GPT学习笔记-聚类(clustering)

1. 什么是clustering 聚类是一种非常有用的无监督学习技术,它的主要目的是发现数据的内在结构和模式。在许多实际应用中,我们可能没有明确的目标变量或预测目标,但我们仍希望了解数据的组织方式,或者找出数据中的特定模式或组。这…

如何构造HTTP请求

直接通过浏览器地址栏 具体的流程,直接通过浏览器地址栏,输入一个url >构造出一个GET请求 html中,一些特殊标签,也会触发GET请求 1) link 2) script 3) img 4) a以上的几个标签都会触发Get请求了. form表单,可以触发GET和POST请求 form 的重要参数: action: 构造的 HTT…

【Redis面试点总结】

1、缓存 1.1、穿透 查询一个空数据,mysql也查不到也不会写入缓存可能导致多次请求数据库 方案一:缓存设空即可(可能发生数据不一致就是这条数据有了但此时缓存是空,消耗内存) 方案二:布隆过滤器&#x…