振南技术干货集:CPU,你省省心吧!(2)

news2025/1/12 19:00:11

注解目录

1、石油测井仪器

1.1 背景知识

(了解一下石油行业。石油到底是怎么找到的?)

1.2 测井数据采传的实现

1.2.1 最直接的初级方案

1.2.2 加入 DMA 的优化方案

(看看一般工程师与高手在技术实现上到底有什么区别。充分利用硬件资源。)

2、巧驱摄像头

2.1 摄像头时序分析

2.2 使用 DCMI+DMA

2.3 自搭外部电路

(图像一闪而过,普通单片机你抓得住吗?那我们就给他配个“龙抓手”,硬件 FIFO。)

3、M0 单片机巧驱 7 寸液晶大屏

(CPU 就算跑冒烟也刷不过来。让 CPU 省省心,来看看振南的方法是否足够巧妙。)

M0 单片机巧驱 7 寸液晶大屏

通过上面几个实例,大家应该知道振南所谓“巧驱”的路数了吧,对,就是多让硬件说话,我们要做“软硬兼施”的工程师。

如果我问大家:“我能用51 或 MO 单片机,驱动 7 寸大屏液晶(800 * 480),如图 6.10 所示,并且流畅播放视频,你信不信?”你一定会说:“不太可能吧,刷屏速率不够。”但我既然这么问,那振南一定是已经实现了,这里我就把实现过程给大家讲一下。


图6.10 7寸 TFT液晶模块

先来看原理图,如图6.11~6.14所示。


图6.11 巧驱7寸液晶屏原理图之 MCU部分


图6.12 巧驱7寸液晶屏原理图之74HC595串转并部分

基本的实现逻辑如图 6.15 所示。

仔细观察上面的原理图与逻辑框图,估计很多人已经明白了振南的意思,振南再给出配套的流程图,逻辑就更清晰了,如图 6.16 所示。

两片 74HC595 用于将 16 位串行数据转换为并行,与 TFT 液晶的 16 位数据接口相连。74HC595 的串行数据输人同时与 MCU 的两个 GPIO 以及 spiFlash 的两个串行数据端口相连。当 spiFlash 失能时(即 CS 置高),其数据端口呈现高阻,此时 74HC595 可由 MCU 操作


图6.13 巧驱7寸液晶屏原理图之八进制计数与时序调理部分


图6.14 巧驱7寸液晶屏原理图之spiFlash与7寸 TFT接口部分


图6.15 巧驱7寸液晶屏之基本实现逻辑框图

而当 MCU 的 GPIO 设置为高阻时,两片 74HC595 可分别接收来自 spiFlash 的双位串行数据。这样的复用设计,可以使 MCU 对 TFT 液晶进行预先的初始化,使其工作在纯像素数据写入的模式;而在高速数据写人的阶段,MCU 退出而让 TFT 接收来自 spiFlash 的数据。两片 74HC595 实现串转并的要点在于 LC锁存信号的产生,每产生 8个 SCK 脉冲,则自动产生一个 LC上升沿,这是时序生成与逻辑调理的一部分。实现的根本在于 74HC161与74HC27 的组合运用,如图 6.13 所示。首先对 74HC161 复位清零,此时[Q2:Q0]= 000.74HC27 是三输人或非门,其输出 1Y,即 595-LC 为1;时钟的输人后[Q2:Q]随之自增 001、


图6.16 巧驱7寸液晶屏的基本流程图

在 010 之前 595-LC 均为 0,而 8 个时钟之后,595-LC 将变为 1,即产生了上升沿。010......这里振南给 595-LC 增加了两级 74HC1G32 作为缓冲,为的是增加一些延时,以使 74HC595的存锁数据输出更稳定。

然后是液晶的 WR信号的产生:从图 6.12 中可以看到.WR 信号是一个 GPIO 与8 位计数器输出最高位 Q2 的或非非(没错,是或非非)。当 Q2 为0 时,WR 受控于 GPIO,此时可用于 MCU 对 TFT 预先进行初始化操作。当GPIO 为0时,WR 受控于 Q2,每 8 个时钟会产生-个下降沿(前面那个或非非是为了推迟一下这个下降沿,以使 16 位并行数据写入液晶更稳定)并维持 4 个时钟周期。

基本的要点已经描述清楚了。至于时钟的产生,唯一的要求是要产生特定数量的时钟,而不能是连续不断的。比如一顿图像的数据量为 800 * 480 半字,我们要输出 3 072 000 个时钟才能让一顿图像显示到液晶上。所以我们不能用 MCO 或者是 PWM,而要用 SPI,如果是 8位 SPI,要写384 000 次,如果是 16 位 SPI,则要写 192 00 次。当然,为了节省更多的 CPU资源,我们可以使用 DMA。当时钟不断地产生,一帧帧的图像显示到液晶上时,视频就流畅地播放出来了。

我曾经把我这个“巧驱大”的实验讲给了我的同事听,他们在赞叹的同时,还说:“你不做FPGA 真是浪费了!”其实我是做过一段时间的 FPGA 的,那还是在 2007 年在 Intel 中国研究院实习工作的时候。

好了,本章用 3 个实例阐述了本章最开头的那句话:CPU 时间是宝贵的,我们要把有限的CPU 时间投人到更有意义的事情中去。

在实际开发中,充分地利用硬件资源,自行灵活扩展一些硬件电路,通常可以达到意想不到的效果,甚至可以化不可能为可能。

永远记住:我们很多时候做的是嵌入式软件的工作,但归根结底我们搞的还是硬件。

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

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

相关文章

[Linux] PXE批量装机

一、PXE批量装机简介 1.1 常见的三种系统安装方式 u启动安装:在U盘中下载相关的安装系统及镜像文件,u盘插机安装 光驱安装:将带有所需系统的光盘放进电脑服务器中,按照官方引导装机 网络下载安装:在网上下载相关镜…

【数据挖掘 机器学习 | 时间序列】时间序列必学模型: ARIMA超详细讲解

🤵‍♂️ 个人主页: AI_magician 📡主页地址: 作者简介:CSDN内容合伙人,全栈领域优质创作者。 👨‍💻景愿:旨在于能和更多的热爱计算机的伙伴一起成长!!&…

获取文章分类详情

CategoryController GetMapping("/detail")public Result<Category> detail(Integer id){Category c categoryService.findById(id);return Result.success(c);} CategoryService //根据id查询分类信息Category findById(Integer id); CategoryServiceImpl …

谈谈 MySQL 事务隔离级别

程序员的公众号&#xff1a;源1024&#xff0c;获取更多资料&#xff0c;无加密无套路&#xff01; 最近整理了一份大厂面试资料《史上最全大厂面试题》&#xff0c;Springboot、微服务、算法、数据结构、Zookeeper、Mybatis、Dubbo、linux、Kafka、Elasticsearch、数据库等等 …

MATLAB画图分辨率、图像大小研究

MATLAB画图分辨率、图像大小研究 Figure属性中 InnerPosition Position OuterPosition区别画图与打印的分辨率和图像大小研究首先明确两个概念&#xff1a;MATLAB实操画图 Figure属性中 InnerPosition Position OuterPosition区别 在画图的时候&#xff0c;我们经常需要设置Fi…

记录一次较为完整的服务打包发布流程

文章目录 1. Spring Boot编程2. 打包成jar服务3. 使用Docker Compose发布服务 1. Spring Boot编程 使用Spring Initializr 选择基本工具 导入常用工具 配置多环境 参考https://blog.csdn.net/qq_37992410/article/details/121008415&#xff0c; https://blog.csdn.net/xiao…

mongodb——原理简介,docker单机部署

MongoDB noSQL数据库 特点 数据文件存储格式为 BSON &#xff08;JSON 的扩展&#xff09; &#xff5b;“name”&#xff1a;“joe”&#xff5d;这是 BSON 的例子&#xff0c;其中"name"是键&#xff0c;"joe"是值。键值对组成了 BSON 格式。面向集合…

【开源】基于Vue和SpringBoot的康复中心管理系统

项目编号&#xff1a; S 056 &#xff0c;文末获取源码。 \color{red}{项目编号&#xff1a;S056&#xff0c;文末获取源码。} 项目编号&#xff1a;S056&#xff0c;文末获取源码。 目录 一、摘要1.1 项目介绍1.2 项目录屏 二、功能模块2.1 普通用户模块2.2 护工模块2.3 管理员…

C++之谓词

C之谓词 一元谓词 #include<iostream> using namespace std; #include<vector> #include<algorithm> //仿函数 返回值类型是boo1数据类型&#xff0c;称为谓词 //一元谓词class GreaterFive { public:bool operator()(int val){return val > 5;} };void …

Windows 下 Sublime Text 2.0.2 下载及配置

1 下载地址&#xff1a; https://www.sublimetext.com/2 Sublime Text 2.0.2 (此版本选择了 portable version)&#xff0c;直接解压就可以使用。 https://download.sublimetext.com/Sublime Text 2.0.2.zip 2 配置Python相关环境 (前提 Pyhon 已加入环境变量) 2.1 新建 py …

Java 某市教育局综合信息管理平台

1) 项目简介 “互联网智慧教育”管理平台&#xff0c;实现全市教育信息系统集中建设和教育数据在云平台的汇集&#xff0c;在全市中小学整体实现电子班牌、家校通等功能&#xff0c;选取部分重点学校进行一卡通系统试点建设&#xff0c;实现智能化门禁、道闸、实体卡等功能…

【小黑送书—第八期】>>别再吐槽大学教材了,来看看这些网友强推的数学神作!

导读&#xff1a;关于大学数学教材的吐槽似乎从来没停止过。有人慨叹&#xff1a;数学教材晦涩难懂。错&#xff01;难懂&#xff0c;起码还可以读懂。数学教材你根本读不懂&#xff1b;也有人说&#xff1a;数学教材简直就是天书。 数学教材有好有坏&#xff0c;这话不假&…

实验三 页面置换算法

一. 实验目的&#xff1a; 1、熟悉虚存管理的各种页面淘汰算法 二、实验环境&#xff1a; 硬件环境&#xff1a;计算机一台&#xff0c;局域网环境&#xff1b; 软件环境&#xff1a;Windows XP及以上版本 Professional操作系统平台&#xff0c;Visual C 6.0专业版或企业版…

企业计算机服务器中了mallox勒索病毒怎么解决,勒索病毒解密文件恢复

随着科技技术的不断发展&#xff0c;网络技术得到了快速提升&#xff0c;但网络安全威胁也不断增加&#xff0c;近期&#xff0c;云天数据恢复中心陆续接到很多企业的求助信息&#xff0c;企业的计算机服务器遭到了mallox勒索病毒攻击&#xff0c;导致企业的所有业务中断&#…

网站被攻击怎么办

随着互联网的普及和网络攻击的日益增多&#xff0c;网站安全成为了众多企业和个人必须面对的重要问题。为了保护网站和用户数据的安全&#xff0c;内容分发网络&#xff08;CDN&#xff09;成为了一种有效的解决方案。本文将介绍CDN在保护网站安全、抵御网络攻击方面的作用和应…

C++之函数对象

C之函数对象 #include<iostream> using namespace std; #include<string> ///函数对象 (仿函数) //函数对象在使用时&#xff0c;可以像普通函数那样调用&#xff0c;可以有参数&#xff0c;可以有返回值 //函数对象超出普通函数的概念&#xff0c;函数对象可以有自…

优质好文链接

文章目录 1.开放源码有利于系统安全2.yum源配置&#xff0c;这一篇就够了&#xff01;(包括本地&#xff0c;网络&#xff0c;本地共享yum源)3.rpm包是什么4.SSH是什么意思&#xff1f;有什么功能&#xff1f; 1.开放源码有利于系统安全 开放源码有利于系统安全 2.yum源配置…

SQL零基础入门教程,贼拉详细!贼拉简单! 速通数据库期末考!(七)

LEFT JOIN LEFT JOIN 同样用于关联两个表&#xff0c;ON 关键字后指定两个表共有的字段作为匹配条件&#xff0c;与 INNER JOIN 不同的地方在于匹配不上的数据行&#xff0c;INNER JOIN 对两表匹配不上的数据行不返回结果&#xff0c;而 LEFT JOIN 只对右表&#xff08;table2…

80C51单片机的七种寻址方式

首先理解这样的等式 地址是20H的寄存器中&#xff0c;存放的内容是01H (20H)#01H 符号指令的书写格式 单个操作数的指令&#xff1a; 操作助记符 [目的操作数] 两个操作数的指令&#xff1a; 操作助记符[目的操作数],[源操作数] 描述符号 Rn(n0~7)当前工作寄存器组中的寄…