使用FSMC驱动LCD以及数据线偏移的问题

2023-05-16


FSMC的理解


使用FSMC功能将8080接口的LCD当外部RAM来使用(数据传给LCD时没经过内部SRAM,所以一帧图片很大也可以直接传),根据STM的地址分配图可以看出外部RAM的地址由0x60000000开始到0x9FFFFFFF结束,一共1G内存,将其平分为了4个块,每个块256M字节,其中每个块的时序不同来支持多种外部存储器。8080接口的LCD时序和第一块的时序相接近,第一个块里面又分为4个区,每个区大小为64M字节,都有独立的寄存器对所连接的存储器进行配置,每个区的32位地址中的低28位[27:0]不同,其中的高位[27:26]是来区分4个区的,低位[25:0]有个名字叫HADDR[25:0],外部RAM的地址就是通过HADDR[25:0]来给的,可是LCD写数据之后其内部地址是自动递增的,所以不需要发地址给LCD,则地址线目前不使用,8080接口与FSMC的第一个块的接口之间的差别只有一个数据/命令线和地址线,所以我们可以使用地址线中的一根线来代替数据/命令线,然后通过FSMC给不同的地址写数据来改变地址线上的那根数据/命令线的高低电平,达到读写数据或者读写命令的要求,在通过FSMC给地址时,地址就是按区的地址或上被改变的其中一根地址线(数据/命令线),来决定FSMC的时序和数据或命令。
这是将外部RAM地址分为4个块的图:
地址分为块
这是将第一个块分为4个区的图:
块分为区
关于A0对齐A1或者A0对齐A2的问题:
这是FSMC驱动LCD的规定:
关于A0对齐A1或者A0对齐A2的问题

这是三星公司的ARM芯片s3c2440与1片128KB的SRAM芯片的连接原理图:三星公司的ARM芯片s3c2440与1片128KB的SRAM芯片的连接原理图
初学者可能会有几个疑问,为什么SRAM芯片的A0地址引脚连接的是ARM芯片的A1引脚呢?那什么情况下SRAM芯片的A0连接ARM芯片的A0引脚呢?
首先,我们分析一下图中的 SRAM芯片,该芯片有A0-A15一共16根地址线,有D0-D15一共16根数据线,故其存储空间为 2^16 * 16 bit = 2^17 * 8 bit = 2^17 byte = 128KB
我们知道,要寻址 128KB 需要 17 根地址线(128 = 2^17 ),然而SRAM芯片的地址引脚却只有16根,ARM端该如何给地址线呢?
由图可以看出,SRAM芯片的数据总线是16位宽,即一次传输2个字节的数据。因此,我们可以这样理解,即一个地址空间其实对应着2个字节的数据,实际上真正的寻址空间只有64KB而已,16根地址线足够。这样ARM端并不需要将17根地址线全部连接到SRAM芯片上,只需要给出高16位地址(A1~A16),然后,SRAM芯片即根据这16根地址找到对应的地址空间,将该地址空间的2个字节发送到数据总线上,然后ARM端根据未连接到SRAM芯片的A0的电平,来决定具体是取高字节,还是低字节。
由这些分析可以推出一个规律,即 ARM端的地址线到底是 A0 、A1 还是 A2 连接 存储芯片的 A0,取决于存储系统的数据总线位宽,如果是 8位则A0->A0,如果是16位则A1->A0,如果是32位则A2->A0。(这段话这在别处看到搬过来的)

8080接口
/*******************
CS:片选
WR:写使能
RD:读使能
D[15:0]:16位双向数据线
RST:复位
RS(DC):命令/数据(0读写命令,1读写数据)
*******************/

FSMC接口
/*******************
地址线:A0-A18
数据线:D0-D15
写信号:WE
读信号:OE
片选信号:CS
*******************/

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用FSMC驱动LCD以及数据线偏移的问题 的相关文章

  • 20190226-LCD_GUI

    LCD GUI 这里需要先剃度填色 xff0c 然后再显示汉字 xff0c 最后在显示符号和数字 xff0c 否则会被覆盖 xff0c 显示不出来汉字或者数字符号
  • 设备树学习之(十二)LCD驱动

    开发板 xff1a tiny4412SDK 43 S702 43 4GB Flash 要移植的内核版本 xff1a Linux 4 4 0 xff08 支持device tree xff09 u boot版本 xff1a 友善之臂自带的 U
  • micropython 8266 驱动 12864G 液晶LCD屏幕

    1 xff0c 接线顺序 引脚定义 cs 61 Pin 4 片选 reset 61 Pin 5 复位 rs 61 Pin 16 数据 指令 1数据 0 指令 DC sda 61 Pin 13 数据信号 sck 61 Pin 14 时钟信号
  • 步进电机控制与LCD显示L297与L298

    步进电机控制与LCD显示L297与L298 上次介绍了PWM和L298结合的电机调速 xff01 接下来介绍L297与L298结合的例子 xff01 PWM电机调速 下面是L297的简介 xff1a L297是步进电机专用控制器 xff0c
  • 基于STM32F411使用SPI+DMA驱动LCD

    先看效果 F411CE 硬件SPI xff0b DMA驱动LCD 基于HAL库 其实HAL库我用不太习惯 xff0c 一直也是用的标准库 但HAL库确实是好上手一些 xff0c 就迅速创建一个新的template 这次就当尝试一下吧 xff
  • IMX6ULL + SPI LCD(驱动IC ILI9341)显示简单的QT界面

    1 硬件 xff1a 使用正点原子的IMX6ULL Linux开发板 开发板底板原理图版本 xff1a V2 1 核心板原理图版本 xff1a V1 6 LCD xff1a MSP2402 IC ILI9341 2 查找可用引脚 开发板上引
  • FMC/FSMC/EXMC总线NORFlash/PSRAM接口(异步-复用-不突发/同步-复用-突发)

    请勿转载 目录 1 简介 1 1 框图 1 2 接口定义 1 3 读写时序图 时序配置参数 1 4 PSRAM控制器异步工作模式分类 1 5 PSRAM寄存器配置 1 5 1 控制寄存器BCR 1 5 2 片选时序寄存器BTR 1 5 3
  • LCD与LED液晶显示屏的区别

    什么是LCD LCD是液晶显示屏Liquid Crystal Display的全称 xff0c 主要有TFT UFB TFD STN等几种类型的液晶显示屏无法定位程序输入点于动态链接库上 笔记本液晶屏常用的是TFT TFT xff08 Th
  • 使用FSMC驱动LCD以及数据线偏移的问题

    FSMC的理解 使用FSMC功能将8080接口的LCD当外部RAM来使用 xff08 数据传给LCD时没经过内部SRAM xff0c 所以一帧图片很大也可以直接传 xff09 xff0c 根据STM的地址分配图可以看出外部RAM的地址由0x
  • Android中LCD背光驱动

    分类 Linux驱动 Android系统 2013 06 17 16 28 287人阅读 评论 0 收藏 举报 目录 Android的Setting Android的背光JNI层 Android的背光HAL层 Linux的背光内核层 Lin
  • STM32使用SRAM扩展内存

    目录 一 SRAM介绍 二 STM32F103系列的FSMC模块 三 初始化配置及数据访问 四 使全局变量定义在外部SRAM中的方法 五 参考文章及资料 一 SRAM介绍 SRAM Static Random Access Memory 即
  • STM32芯片--FSMC外设扩展外部SRAM

    这里写自定义目录标题 一 为什么要扩展外部SRAM 二 什么是SRAM 简介 存储器型号 容量 原理框图 引脚配置 通讯方式 读写特性 读取数据时序图 读取数据的时序要求 写入数据时序图 写入数据的时序要求 三 什么是FSMC外设 简介 F
  • LCD 亮度相关(背光) 正负压相关

    LCD 亮度相关 背光 kernel msm 3 18 drivers video msm mdss mdss fb c 调用led classdev register 注册lcd backlight sys class leds lcd
  • STM32 基础系列教程 45 - FSMC_LCD_Touch

    前言 上一节我们完成了用 STM32F4的 FSMC接口来控制 TFTLCD的显示的操作 其实正点原子的探索者F4开发板带的屏幕支持触摸操作 笔者用的是4 3寸的电容触摸屏 本节我们继续实验 来完成基于STM32的触摸屏的实验 关于触摸屏的
  • 我所理解的DRM显示框架

    什么是DRM DRM全称是DirectRenderingManager 是linux主流的一种显示框架 支持多图层合成 为用户图层提供统一的API libdrm 来访问GPU 实现统一管理 它是为了解决多个程序对video card访问协同
  • Linux 帧缓冲子系统详解:LCD介绍、framebuffer驱动框架、LCD驱动源码分析

    1 LCD显示屏基础知识介绍 请看博客 嵌入式开发 S5PV210 LCD显示器 2 内核帧缓冲子系统 2 1 功能介绍 1 帧缓冲 framebuffer 是 Linux 为显示设备提供的一个接口 它把显示设备描述成一个缓冲 区 允许应用
  • 基于s5pv-210开发板 LCD驱动

    lcd硬件原理 利用液晶制成的显示器称为 LCD 依据驱动方式可分为静态驱动 简单矩阵驱动以及主动矩阵驱动 3 种 其中 简单矩阵型又可再细分扭转向列型 TN 和超扭转式向列型 STN 两种 而主动矩阵型则以薄膜式晶体管型 TFT 为主流
  • LCD DRM驱动框架分析一

    本文是基于rk3566 rk3568平台 从概念和框架上对LCD DRM驱动框架进行分析 一 DRM Direct Rendering Manager 简介 DRM 是 Linux 目前主流的图形显示框架 相比 FB 架构 DRM 更能适应
  • STM32的FSMC地址线对应关系通俗易懂解读和和驱动TFT-LCD的原理

    STM32的FSMC地址线对应关系通俗易懂解读和和驱动TFT LCD的原理 当 Bank接的是 8 位宽度存储器的时候 HADDR 25 0 对应FSMC A 25 0 当 Bank接的是 16 位宽度存储器的时候 HADDR 25 1 对
  • 如何获得 (lcd) 显示屏对角线的实际尺寸,即它是 17 英寸还是 19 英寸或其他?

    这对我很有用 因为我必须在屏幕上以正确的尺寸映射对象 如果我使用分辨率为 1280x1024 的 19 lcd 和正常的 96dpi 设置 那么为了映射正确的 1 英寸正方形 我必须编写这样的 xaml

随机推荐

  • Qt Quick 之 QML 与 C++ 混合编程详解

    Qt Quick 技术的引入 xff0c 使得你能够快速构建 UI xff0c 具有动画 各种绚丽效果的 UI 都不在话下 但它不是万能的 xff0c 也有很多局限性 xff0c 原来 Qt 的一些技术 xff0c 比如低阶的网络编程如 Q
  • 漫谈程序员系列:一张图道尽程序员的出路

    推背图 相传由唐太宗时期的司天监李淳风和袁天罡合著 xff08 此两人其实是超级武学高手 xff0c 参见小椴的 开唐 xff09 xff0c 推算大唐以后中国两千多年的国运盛衰 xff0c 在中国七大预言书中居首 xff0c 是当之无愧的
  • 漫谈程序员系列:咦,你也在混日子啊

    戳你一下 xff0c 疼吗 xff1f 混日子的定义 来自百度百科的定义 xff1a 生活等方面过得不怎么好 xff0c 无目标 xff0c 混混沌沌 混日子 xff1a 即没有理想 xff0c 没有抱负 xff0c 糊里糊涂地生活 也指工
  • QtAndroid详解(1):QAndroidJniObject

    Qt 5 3之后 xff0c 新增了 QtAndroid 名字空间 xff0c 内有下列四个方法 xff1a QAndroidJniObject AndroidActivity int androidSdkVersion void star
  • freeSWITCH安装、配置与局域网测试

    这次来说说 freeSWITCH 的安装和配置 1 安装 freeSWITCH 下载页面 xff1a https freeswitch org confluence display FREESWITCH Installation 我们 Wi
  • 就 3 点,提升工作效率

    要想提高工作效率 xff0c 不论你看什么书 xff0c 看什么文章 xff0c 用什么工具 xff0c 只有下面这三点最重要 xff1a 动力剖析自己 xff0c 找到改善的切入点付诸行动并且坚持 目标驱动 有目标才能高效 我们爬山 xf
  • Python3 下 ROS 的使用 cv_bridge

    Python 3 下 ROSmsg 转 cv2 项目中用到的 Tensorflow2 4 的环境 xff0c 该环境只支持python3 版本 xff0c 项目中遇到不少需要和 ROS 交互的地方 xff0c 所以不断探索 python3
  • 深度图和RGB图对齐

    深度图 canny RGB canny Alignment xff1a code span class token function import span cv2 span class token function import span
  • 认识romfs文件系统

    1 1 什么是romfs romfs 是一个只读文件系统 xff0c 主要用在 mainly for initial RAM disks of installation disks 使用romfs 文件系统可以构造出一个最小的内核 xff0
  • Livox Lidar 特征提取方式总结

    传统的 旋转式雷达 xff0c 激光固定在雷达的旋转部件上 xff0c 依靠转子的转动而获得360的旋转视野 xff0c 由于旋转部件的存在 xff0c 为了获得更加精准的数据 xff0c 需要跟多的人工校准和更复杂的设计 xff0c 也因
  • C++ 菜鸟之路 (四) boost::thread 多线程全解析

    boost thread 的一般用法 boost thread的几个函数 锁 lock 函数多线程函数的限制 官方解释 xff1a http www cplusplus com reference thread thread joinabl
  • ROS 之 advertise 详解

    在学习过程中接触到如下的一段话 span class hljs comment ROS handles span ros span class hljs tag NodeHandle span node tf span class hljs
  • Linux 下 openMP 效率并未提升的解决方案

    OpenMP 正确观察计算时间OpenMP 经验总结 xff08 1 xff09 openmp 线程使用范围 xff08 2 xff09 openmp 多层嵌套的问题 OpenMP 正确观察计算时间 在使用 openmp的过程中 xff0c
  • C++ Yaml文件解析安装及使用 yaml-cpp

    C 43 43 Yaml文件解析安装及使用 安装 yaml cpp克隆官方库编译 yaml cpp 示例代码robot cpprobot yaml编译 robot cpp运行结果 难点分析与总结什么是 a 与 so 文件静态链接库 a 与动
  • 点云数据格式解析 sensor_msgs::PointCloud2

    在使用多线激光的时候需要总是会碰到点云数据 xff0c 这里简单的接受一下点云数据 xff0c 并堆数据结构进行分析 xff0c 方便自己后期对点云特征数据进行处理 文章目录 Rviz中的点云数据点云数据结构分析点云数据 python 解析
  • Arduino 读取GPS 数据发送解析并发布ROS topic(二)

    Arduino 读取GPS 数据发送解析并发布ROS topic 一 https blog csdn net Fourier Legend article details 84107494 概述 本部分将主要讲将串口接受到的数据 xff0c
  • LOAM进行点云地图创建

    3D激光点云数据处理入门 xff08 一 xff09 使用LOAM进行点云地图创建 LOAM 原理简述topic关系算法分析算法伪代码 LOAM 建图实践创建你的 ROS Workspace下载LOAM Package下载数据包运行 LOA
  • ROS - teb_local_planner 参数总结

    参考官方教程 http wiki ros org teb local planner Tutorials 全英文看着有点累 在此总结一下调试的过程和小小的经验 安装 teb local planner sudo apt get instal
  • 路径规划算法(2) - A*寻路算法 python实现及解析

    代码 span class token comment coding 61 utf 8 span span class token keyword import span math span class token comment 启发距离
  • 使用FSMC驱动LCD以及数据线偏移的问题

    FSMC的理解 使用FSMC功能将8080接口的LCD当外部RAM来使用 xff08 数据传给LCD时没经过内部SRAM xff0c 所以一帧图片很大也可以直接传 xff09 xff0c 根据STM的地址分配图可以看出外部RAM的地址由0x