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

注解目录

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 时间投人到更有意义的事情中去。

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

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

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

2023 鹏程杯

前言 笔者没有参加此次比赛,由于团队后面会复现此次比赛,所以笔者在此进行复现记录。 silent 考点: 栈溢出 ret2csu 栈迁移 保护: 开了 Full RELRO 和 NX, 禁掉了 execve/execveat 系统调用 漏洞分析 一个裸的栈溢出, 但是没有输出函数可以泄漏 …

C语言--有 n 个人围成一圈,顺序排号。 从第 1 个人开始报数,从 1 到 3 报数,凡是报到 3 的人退出圈子,问最后留下的是原来的第几号?

今天小编给大家分享以下约瑟夫环问题的处理。 一.题目描述 有 n 个人围成一圈,顺序排号。 从第 1 个人开始报数,从 1 到 3 报数,凡是报到 3 的人退出圈子,问最后留下的是原来的第几号? 这是一个典型的约瑟夫环的问题。 二.思路分析 难点一:我们如何表示人退出圈…

基于Springboot的地方美食分享网站(有报告)。Javaee项目,springboot项目。

演示视频: 基于Springboot的地方美食分享网站(有报告)。Javaee项目,springboot项目。 前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网站。 项目介绍: 采用…

BUUCTF snake 1

BUUCTF:https://buuoj.cn/challenges 题目描述: 下载附件,解压得到一张snake的图片。 密文: 这里有一张蛇的图片,本人害怕不敢放,想看自己下载附件解压。(吐槽一下,我做这道题,全…

微信小程序开发学习——页面布局、初始导航栏与跳转

1.盒模型 要求实现效果如图所示: 所有WXML元素都可以看作盒子,在WXSS中"box model”这一术语是用来设计和布局时使用盒模型本质上是一个盒子,封装周围的WXML元素它包括: 边距,边框,填充和实际内容,模…

腾讯云服务器公网带宽速度怎么样?上传下载实测!

腾讯云服务器公网带宽下载速度计算,1M公网带宽下载速度是128KB/秒,5M带宽下载速度是512KB/s,腾讯云10M带宽下载速度是1.25M/秒,腾讯云百科txybk.com来详细说下腾讯云服务器不同公网带宽实际下载速度以及对应的上传速度对照表&…

【数据挖掘 机器学习 | 时间序列】时间序列必备工具箱: 自相关与偏相关检验

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

JVM的运行时数据区

Java虚拟机(JVM)的运行时数据区是程序在运行过程中使用的内存区域,主要包括以下几个部分: 程序计数器虚拟机栈本地方法栈堆方法区运行时常量池直接内存 不同的虚拟机实现可能会略有差异。这些区域协同工作,支持Java…

游戏数据分析必知必会

游戏的分类 按端分类:端游(steam),页游(4399),手游(手机,pad)按盈利模式分类:付费游戏(一次买断,后续购买其它剧情或者包…

优质好文链接

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

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

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

算法设计与分析【期中+期末复习知识点总结】(持续更新)

第1章:算法概述 算法:具有输入、输出、确定性、有限性。 程序(算法数据结构程序):具有输入、输出、确定性(注意:程序可以不满足有限性,如操作系统是在无限循环中执行的程序&#x…

接口调用微信公众号群发功能,绕过微信自身限制

微信群发功能要求要微信认证。微信认证要求要企业账号、而且需要认证费用。 本篇文章教大家非微信认证账号如何群发公众号信息 本篇文章基于python语言开发,其他的语言一样的方式,不需要拘泥于语言 注意事项: 要求有微信公众平台登陆状态,也就是Cookie数据, 如何通过Py…

基于SSM的在线投稿系统设计与实现

末尾获取源码 开发语言:Java Java开发工具:JDK1.8 后端框架:SSM 前端:Vue 数据库:MySQL5.7和Navicat管理工具结合 服务器:Tomcat8.5 开发软件:IDEA / Eclipse 是否Maven项目:是 目录…

计算机的发展

硬件的发展 第一台电子数字计算机:ENIAC(1946),作者:冯诺依曼,逻辑元件:电子管 bug:小虫子,会影响打点 Intel: 机器字长:计算机一次整数运算所能…

OpenAI变天:也许会有另一个OpenAI要崛起?

本周五,OpenAI发布重磅声明,创始人兼CEO山姆奥特曼辞任OpenAI,并退出董事会。总裁Greg Brockman(格雷格布罗克曼)将辞去董事会主席一职,但将继续在公司担任职务,向CEO汇报。 作为吃瓜群众&#…

Linux(4):Linux文件与目录管理

目录与路径 相对路径在进行软件或软件安装时非常有用,更加方便。利用相对路径的写法必须要确认目前的路径才能正确的去到想要去的目录。 绝对路径的正确度要比相对路径好,因此,在写程序(shell scripts)来管理系统的条…

公司会倒闭,但大模型肯定不会

咋玩抖音的我,前几天在抖音上发了一张图片,没想到竟然有1000多的播放量。 当然这个播放量不算高,甚至在抖音的体系里属于很低的,但是比我预料的可能只有个位数的播放量是高了不少。 这张图片是我用某国产 AI 软件生成的&#xff…