首页 > 其他分享 >OLED

OLED

时间:2024-09-08 13:35:44浏览次数:10  
标签:SRAM OLED FSMC LCD MPU 设置 数据

OLED:有机发光二极管,又称为有机激光显示

ASCII字符:http://c.biancheng.net/c/ascii/
内码:计算机使用的二进制字符编码,就叫内码,简称编码。
将字符显示在OLED上: 1,显示字符,必须先有其点阵数据,点阵数据的集合,叫做字库 2,单片机根据点阵数据按取模方向进行描点还原,就能显示字符 3,ASCII字符宽度 = 汉字宽度的一半
ASCII字库制作:PCtoLCD2002.exe软件
OLED基本驱动实现: 1,确定IO连接关系:开发板OLED接口原理图 2,初始化IO口 3,编写8080接口函数:oled_wr_byte 4,编写OLED初始化函数:oled_init 5,编写OLED画点函数:oled_draw_point
内存保护单元:MPU
MPU的功能: 1.设置不同存储区域的存储器访问权限(特权级、用户级) 2.设置存储器(内存和外设)属性(可缓存、可缓冲、可共享)
设置内存区域的访问权限: MPU_REGION_NO_ACCESS:无访问(特权级&用户级都不可访问) MPU_REGION_PRIV_RW:仅支持特权级读写访问 MPU_REGION_PRIV_RW_URO:禁止用户写访问(特权可读写访问) MPU_REGION_FULL_ACCESS:全访问(特权级&用户级都可访问) MPU_REGION_PRIV_RO:仅支持特权读访问 MPU_REGION_PRIV_RO_URO:只读(特权&用户都不可以写)
配置内存区域的访问属性 三种内存类型: Normal memory(ROM、FLASH、SRAM):CPU以最高效的方式加载和存储字节、半字和字, CPU对于这种内存区的加载或存储不一定要按照程序代码的顺序执行 Device memory(外设):加载和存储要严格按照次序进行,确保寄存器按照正确顺序设置 Strongly ordered memory:程序完全按照代码顺序执行,CPU会等待当前加载存储执行完毕后才执行下一条指令,导致性能下降。

Cache(高级缓存)是提升STM32性能的关键一步 Cache支持4种基本操作:1,使能;2,禁止; 3,清空; 4,无效化 读操作:CPU要读取的SRAM区数据在Cache中已经加载好,叫读命中(Cache hit);如果Cache里面没有,这就是读Cache Miss。 写操作:CPU要写的SRAM区数据在Cache中已经开辟了对应的区域,这就叫写命中(Cache hit);如果Cache里面没有开辟对应的区域怎么办,这就是所谓的写Cache Miss。
Cache hit:直接从cache中读出数据即可 Cache miss:     两种处理方式:     read through:直接从内存中读出,不用cache     read allocate:把数据从内存加载到cache,再从cache读取
MPU基本配置步骤 1、禁止MPU:void HAL_MPU_Disable(); 2、配置某个区域的MPU保护参数:通过调用HAL_MPU_ConfigRegion()函数去设置 3、使能MPU:void HAL_MPU_Enable(); 4、编写MemManage中断服务函数:void MemManage_Handler(void)
LCD接口分类 MCU(≤800*480):带SRAM,无需频繁刷新,无需大内存,驱动简单 RGB(≤1280*800):不带SRAM,需要实时刷新,需要大内存,驱动稍微复杂 MIPI(4K):不带SRAM,支持分辨率高,省电,大部分手机屏用此接口
LCD驱动原理:驱动LCD驱动芯片
LCD驱动基本知识: 1,8080时序,LCD驱动芯片一般使用8080时序控制,实现数据写入/读取 2,初始化序列(数组),屏厂提供,用于初始化特定屏幕,不同屏幕厂家不完全相同! 3,画点函数、读点函数(非必需),基于这两个函数可以实现各种绘图功能!
8080并口模式 8个数据引脚和5个控制引脚 引脚说明: 1.CS(片选):选中器件,低电平有效,先选中,后操作 2.WR(写):写信号,上升沿有效,用于数据/命令写入 3.RD(读):读信号,上升沿有效,用于数据/命令读取 4.RS(数据/命令):表示当前是读写数据还是命令,也叫DC信号 5.D[15:0](数据线):双向数据线,可以写入/读取驱动IC数据
英特尔总线:并口总线时序,常用于屏幕驱动IC的访问
8080时序--写时序 在WR上升沿,使数据写入到SSD1306里 设置DC引脚电平:数据类型(高:数据;低:命令)->CS引脚拉低:选中SSD1306->WR拉低:写数据->准备数据:数据线->WR拉高:数据写到SSD1306->释放CS->释放DC引脚
LCD驱动芯片简介:6条指令即可完成对LCD的基本使用 1.0XD3(读ID):用于读取LCD控制器的ID,区分型号用 2.0X36(访问控制):设置GRAM读写方向,控制显示方向 3.0X2A(列地址):一般用于设置X坐标 4.0X2B(页地址):一般用于设置Y坐标 5.0X2C(写GRAM):用于往LCD写GRAM数据 6.0X2E(读GRAM):用于读取LCD的GRAM数据
LCD基本驱动实现 1,确定IO连接关系 2,初始化IO口、初始化FSMC外设 3,编写读写接口函数:lcd_wr_data、lcd_wr_regno、lcd_write_reg、lcd_rd_data 4,编写LCD初始化函数:lcd_init 5,编写LCD画和读点函数:lcd_draw_point
硬件IO连接关系 1.LCD_RST(RESET):LCD复位引脚,连接MCU复位脚,一起复位 2.LCD_BL(PC10):LCD背光引脚,控制LCD背光亮灭,高电平亮 3.LCD_CS(PC9):LCD片选,选中LCD,低电平有效 4.LCD_WR(PC7):LCD写信号,上升沿有效,用于数据/命令写入 5.LCD_RD(PC6):LCD读信号,上升沿有效,用于数据/命令读取 6.LCD_RS(PC8):LCD数据/命令线,表示当前是读写数据还是命令 7.LCD_D0~D15(PB0~PB15):LCD数据线,16位,一次可以写入一个像素
FSMC简介:灵活的静态存储控制器 用途:用于驱动SRAM,NOR FLASH,NAND FLASH及PC卡类型的存储器
FSMC通信引脚介绍 1.FSMC_NE[x](输出):片选引脚,x=1…4,每个对应不同的内存块 2.FSMC_CLK(输出):时钟(同步突发模式使用) 3.FSMC_A[25:0](输出):地址总线 4.FSMC_D[15:0](输出/输入):双向数据总线 5.FSMC_NOE(输出):输出使能(“N”表明低电平有效信号) 6.FSMC_NWE(输出):写使能 7.FSMC_NWAIT(输入):NOR闪存要求FSMC等待的信号 8.FSMC_NADV(输出):地址、数据线复用时作锁存信号
LCD的RS信号线与地址线关系:8080接口中RS(数据/命令选择线),用FSMC的某根A地址线进行替换 当FSMC_A10为高电平时(即RS为高电平),FSMC_D[15:0]被理解为数据 当FSMC_A10为低电平时(即RS为低电平),FSMC_D[15:0]被理解为命令
FSMC相关寄存器介绍 1.FSMC_BCR4(片选控制寄存器):包含存储器块的信息(存储器类型/数据宽度等) 2.FSMC_BTR4(片选时序寄存器):设置读操作时序参数(ADDSET/DATAST) 3.FSMC_BWTR4(写时序寄存器):设置写操作时序参数(ADDSET/DATAST)
SRAM/NOR闪存片选控制寄存器(FSMC_BCRx) EXTMOD:扩展模式使能位,控制是否允许读写不同的时序。读和写用不同的时序,该位设置为1 WREN:写使能位。该位设置1 MWID[1:0]:存储器数据总线宽度。00,表示8位数据模式;01表示16位数据模式;10和11保留。 MTYP[1:0]:存储器类型。00表示SRAM、ROM;01表示PSRAM;10表示NOR FLASH;11保留。 MBKEN:存储块使能位。该位设置1
SRAM/NOR闪存片选时序寄存器(FSMC_BTRx) ACCMOD[1:0]:访问模式。     00:模式A;     01:模式B;     10:模式C;     11:模式D。 DATAST[7:0]:数据保持时间,等于DATAST(+1)个HCLK时钟周期,DATAST最大为255。     对于ILI9341来说,其实就是RD低电平持续时间,最小为355ns。     对于F1,一个HCLK = 13.9ns(1/72M),设置为15     对于F4,一个HCLK = 6ns(1/168M),设置为60 ADDSET[3:0]:地址建立时间。表示ADDSET(+1)个HCLK时钟周期,ADDSET最大为15。     对于ILI9341来说,相当于RD高电平持续时间,为90ns。     F1即使设置为0,RD也有超过90ns的高电平,这里设置为1。F4对该位设置为15。
SRAM/NOR闪存写时序寄存器(FSMC_BWTRx) ACCMOD[1:0]:访问模式。     00:模式A;     01:模式B;     10:模式C;     11:模式D。 DATAST[7:0]:数据保持时间,等于DATAST(+1)个HCLK时钟周期,DATAST最大为255。     对于ILI9341来说,其实就是WR低电平持续时间,最小为15ns。     对于F1,一个HCLK = 13.9ns,设置为3     对于F4,一个HCLK = 6ns,设置为9 ADDSET[3:0]:地址建立时间。表示ADDSET(+1)个HCLK时钟周期,ADDSET最大为15。     对于ILI9341来说,相当于WR高电平持续时间,为15ns。     F1即使设置为1,WR也有超过15ns的高电平,这里设置为1。     F4对该位设置为8。
ST官方提供的寄存器定义对应关系如下: BTCR[0]对应FSMC_BCR1,BTCR[1]对应FSMC_BTR1 BTCR[2]对应FSMC_BCR2,BTCR[3]对应FSMC_BTR2 BTCR[4]对应FSMC_BCR3,BTCR[5]对应FSMC_BTR3 BTCR[6]对应FSMC_BCR4,BTCR[7]对应FSMC_BTR4
FSMC_BWTRx则组合成BWTR[7]寄存器组,他们的对应关系如下: BWTR[0]对应FSMC_BWTR1,BWTR[2]对应FSMC_BWTR2, BWTR[4]对应FSMC_BWTR3,BWTR[6]对应FSMC_BWTR4, BWTR[1]、BWTR[3]和BWTR[5]保留,没有用到
FSMC相关HAL库函数简介 HAL_StatusTypeDef HAL_SRAM_Init ( SRAM_HandleTypeDef *hsram, FSMC_NORSRAM_TimingTypeDef *Timing,FSMC_NORSRAM_TimingTypeDef *ExtTiming )
为什么需要外部SRAM:跑算法、跑GUI
SRAM 读写操作步骤 1、设置地址信号线:发出要访问的存储器目标地址 2、控制片选信号:选中器件 3、决定数据操作方式:     读操作,控制读使能信号OE表示读数据     写操作,控制写使能信号WE表示写数据 4、设置获取数据方式:掩码信号BLE和BHE指示要访问目标地址的高、低字节部分 5、获取数据:     读过程,存储器通过数据线向主机输出目标地址数据     写过程,使用数据线向存储器目标地址写入目标数据
FSMC,灵活的静态存储控制器,能驱动SRAM、NOR/NAND Flash等存储器。
SRAM驱动步骤 1、配置FSMC:使能FSMC时钟,并配置FSMC相关的IO(复用输出)及其时钟使能 2、设置FSMC相关参数:设置Bank1第三区的存储器 工作模式、位宽和读写时序参数 3、进行数据访问:根据区域,决定操作外部内存的首地址
为什么需要外部SDRAM:LTDC驱动RGB屏、跑算法、跑GUI
NAND FLASH:非易失性存储器,其内部采用非线性宏单位模式,为固态大容量内存的实现提供了廉价有效的解决方案。
RGB接口:24根颜色数据线(RGB各占8根即RGB888,1600W色)
USMART:串口调试组件,可以大大提高代码调试效率 USMART可以直接通过串口调用用户编写的函数,随意修改函数参数
USMART主要特点: 1,可以调用绝大部分用户直接编写的函数 2,占用资源少(最小:4KB FLASH, 72B SRAM) 3,支持参数类型多(整数(10/16)、字符串、函数指针等) 4,支持函数返回值显示且可对格式进行设置 5,支持函数执行时间计算 不支持浮点数参数
USMART原理: 通过对比用户输入字符串和本地函数名,用函数指针实现调用不同的函数
USMART组成: usmart .c/h:核心文件,用于处理命令以及对外部交互 usmart_config.c:函数管理文件,用于添加用户需要USMART管理的函数 usmart_port.c/h:移植文件,用于USMART移植 usmart_str.c/h:字符串处理文件,用于字符串转换、参数获取等
USMART扫描函数:void usmart_scan(void);
USMART移植: 获取USMART组件->添加到工程->适配硬件->添加执行函数:usmart_config.c->通过串口交互
RTC:实时时钟(Real Time Clock,RTC),本质是一个计数器,计数频率常为秒,专门用来记录时间。

标签:SRAM,OLED,FSMC,LCD,MPU,设置,数据
From: https://www.cnblogs.com/aQxiong/p/18402791

相关文章

  • 【STM32+HAL库】---- 硬件IIC驱动0.96OLED
    硬件开发板:STM32G0B1RET6软件平台:cubemax+keil+VScode内容原著声明代码借鉴学习于以下文章:STM32使用硬件IIC驱动0.96寸4针IOLED显示器(HAL库)1新建cubemax工程1.1配置系统时钟RCC1.2配置引脚1.3导出工程略…2代码2.1OLED_IIC_Config.h/*************......
  • 基于STM32F407ZGT6用BH1750在OLED显示屏上显示光照数据,根据光照强度控制小灯亮灭(路灯
    占空比:高电平占整个电平周期的持续时长,从而控制小灯的亮度,小灯亮度的控制需用定时器的输出比较功能。PWM部分可以参考这篇文章PWM——基于STM32F407ZGT6开发板-CSDN博客此外我们还需要了解IIC的工作原理1.pwm.c   #include"public.h"/*pwm控制led实现呼吸灯1.......
  • OLED显示屏详解(IIC协议0.96寸 STM32)
     目录 一、介绍 二、模块原理1.原理图2.工作原理:SSD1306显存与命令三、程序设计main.c文件oled.h文件oled.c文件四、实验效果 五、资料获取项目分享一、介绍        OLED是有机发光二极管,又称为有机电激光显示(OrganicElectroluminescenceDisplay......
  • STM32学习记录-03-OLED显示屏(调试)
    1OLED简介OLED(OrganicLightEmittingDiode):有机发光二极管OLED显示屏:性能优异的新型显示屏,具有功耗低、相应速度快、宽视角、轻薄柔韧等特点0.96寸OLED模块:小巧玲珑、占用接口少、简单易用,是电子设计中非常常见的显示屏模块(4行16列)供电:3~5.5V,通信协议:I2C(4针脚)/SPI(7针脚),分......
  • 在线仿真平台+C语言实现:STM32驱动0.96寸OLED屏幕显示DHT11温湿度传感器测量值
    这里推荐一款由深圳航天科技创新研究院推出的在线电路仿真软件,该软件不仅具备原理图绘制与代码编写功能,还支持在线编译代码、上传自定义代码以及进行仿真模拟,此外还能在线生成并允许下载.bin和.hex文件。官网地址如下:Document进入网页后先注册一个账号。  注册完账号后即可......
  • 0.96寸(128*64) OLED(SSD1306) 中英显示篇
    总线接口模式(现使用的比较多的是4线SPI控制和I2C控制,接下来将以I2C控制为例子)I2C总线数据格式(数据的转换是在I2C协议线中的SCL为低时,进行数据调整)内容数据映射的分布图(I2C的读写时序就不重复造轮子嘞,接下来对屏幕显示的驱动细节做一些要点的总结和整理)当前......
  • 基于STM32-OLED多级菜单(LCD等等屏幕均可移植)
    一,内容概括:不使用长篇大论1:多级菜单介绍2:实现思路3:代码编写4:总结二,正文1.多级菜单介绍:想必大家看到这里,也知道多级菜单大概是什么;对于还不太清楚的朋友说明以下,多级菜单就是将一块屏幕原本只能显示一种内容,扩展到可以显示很多内容。依据自己的设定显示内容。2.实现思路......
  • ESP32-S3+1.3寸OLED+SH1106
    简介:事情就是为了看大一点的屏幕,买了1.3寸的OLED屏幕(4pin),结果发现是SH1106驱动。试了很多方法,终于点亮了这个oled。资料下载:1.首先就是下载普中资料:普中科技-各型号产品资料下载链接_公司新闻_新闻资讯_深圳市普中科技有限公司(prechin.cn)2.根据型号,我直接是ESP32-S3,下......
  • T-SQL——关于安装 Mcrosoft.ACE.oledb.16.0出现的32位和64位的冲突问题
    目录1.关于安装Access数据引擎:microsoft.ACE.oledb.16.0(或者:microsoft.ACE.oledb.12.0)2.关于MSSM界面导入,选择目标时候,没有SQLServerNativeClient11.0shanzm-2024年7月31日10:47:241.关于安装Access数据引擎:microsoft.ACE.oledb.16.0(或者:microsoft.ACE.oledb.12.0)公司......
  • 1325、基于51单片机电能表电压电流功率因数等多参数OLED显示设计(程序+原理图+参考论
    毕设帮助、开题指导、技术解答(有偿)见文未  目录方案选择单片机的选择一、设计功能二、实物图单片机模块设计三、原理图四、程序源码资料包括:需要完整的资料可以点击下面的名片加下我,找我要资源压缩包的百度网盘下载地址及提取码。方案选择单片机的选择方案一......