引用halibote523的原贴
STM中FSMC的讲解
对于TFT液晶的驱动理解会更加深刻
大家可能在STM中看到FSMC,那么STM是什么呢??他有什么好处呢??
现在就我的一些理解简单的讲解一下!
FSMC翻译过来就是灵活的静态存储器控制器,是用来驱动外部总线的。
关于外部总线,你可以想象一下51的外部总线,STM32的FSMC实际上跟51的外部总线是一样的,只不过性能更好,速度更快。
至于总线的优势,可以举个51外部总线的例子,51单片机驱动1864或者1602液晶,如果用IO口模拟液晶的时序,需要用指令分别控制RS,WR,EN控制线还有数据线;但是如果用的是外部总线,从汇编指令上来讲,只需要一条MOVX指令就解决问题了。二者的速度一目了然!
在一些TFT液晶的操作用经常用得到,并且非常的好用!(以一个TFT为例)
TFT的数据接口为:D0-D15或者D0-D8.
TFT的控制线有:复位信号RST,片选CS,输出使能RD(读信号),写信号WE以及RS信号。
于STM32连线为: RST->GPIO, CS->NEx, RD->NOE, WE->RW, RS->A0(或者其他任何一条地址线)
关键的一点就在于这个RS信号(我只说关键的这一点):
一般TFT的地址线只有1个RS.
以控制芯片的TFT为例.RS=0的时候一般是写命令,RS=1的时候是写数据,把TFT作为只有2个地址的存储器对待.
RS接到哪一个地址线都是可以的。假如RS接到A0,而片选为NE4,总线宽度8位.
那么可以定义
#define Bank1_SRAM4_ADDR ((u32)0x6C000000)
#define LCD_DATA_ADDR (Bank1_SRAM4_ADDR + 1)
#define LCD_CMD_ADDR (Bank1_SRAM4_ADDR + 0)
那么写命令数据就是直接往LCD_CMD_ADDR写数据:(假设cmd,data为16位,而我的TFT数据接口是8位)
LCD_WRITE_CMD(unsigned short cmd) //写命令到TFT,16位要写2次
{
*(vu8*)LCD_CMD_ADDR=(cmd>>8);
*(vu8*)LCD_CMD_ADDR=(cmd);
}
写数据就是直接往LCD_DATA_ADDR写数据:
LCD_WRITE_DATA(unsigned short Data) //写数据到TFT
{
*(vu8*)LCD_DATA_ADDR=(Data>>8);
*(vu8*)LCD_DATA_ADDR=(Data);
}
至于RD,WE,RS,CS信号都已经是FSMC控制器自动产生的,不用理会,不过当然是FSMC及GPIO初始化要正确.而RST信号还是需要通过操作GPIO来完成的.
这是最基本的2个操作。而那些什么设置X,Y,设置窗口,设置亮度,设置。。。。都是由这2个操作组合完成的。
72M HZ,320*240刷单色屏速度在 32fps左右.
55楼
花了快一个星期,查阅参考书,参阅网上相关程序,终于弄出了ADC的实验
试验用到了STM32的PC3口,也就是ADC_IN13,在这里要晾一晾我发现的PCB板上的一个小错误(硬件上没太大影响)。在PCB板上画圈的那个地方
本来PC0—PC3应该和ADC_IN10—ADC_IN13一一对应的,但,PCB板的丝印却成了图上的那样,再来看看原理图
所以说,这里有一点小小的问题,还好,我查了下PCB,没有太大的问题,但要注意一点:实际的电路板虽然把丝印给搞混了,但真正的PC0—PC3没有标错,也就是只要把PCB板上的ADC_IN10——ADC_IN13给反序标到PCB板上即可
试验用到了STM32的PC3口,也就是ADC_IN13,在这里要晾一晾我发现的PCB板上的一个小错误(硬件上没太大影响)。在PCB板上画圈的那个地方
本来PC0—PC3应该和ADC_IN10—ADC_IN13一一对应的,但,PCB板的丝印却成了图上的那样,再来看看原理图
所以说,这里有一点小小的问题,还好,我查了下PCB,没有太大的问题,但要注意一点:实际的电路板虽然把丝印给搞混了,但真正的PC0—PC3没有标错,也就是只要把PCB板上的ADC_IN10——ADC_IN13给反序标到PCB板上即可
回复
有奖活动 | |
---|---|
【有奖活动】分享技术经验,兑换京东卡 | |
话不多说,快进群! | |
请大声喊出:我要开发板! | |
【有奖活动】EEPW网站征稿正在进行时,欢迎踊跃投稿啦 | |
奖!发布技术笔记,技术评测贴换取您心仪的礼品 | |
打赏了!打赏了!打赏了! |
打赏帖 | |
---|---|
【笔记】生成报错synthdesignERROR被打赏50分 | |
【STM32H7S78-DK评测】LTDC+DMA2D驱动RGBLCD屏幕被打赏50分 | |
【STM32H7S78-DK评测】Coremark基准测试被打赏50分 | |
【STM32H7S78-DK评测】浮点数计算性能测试被打赏50分 | |
【STM32H7S78-DK评测】Execute in place(XIP)模式学习笔记被打赏50分 | |
每周了解几个硬件知识+buckboost电路(五)被打赏10分 | |
【换取逻辑分析仪】RA8 PMU 模块功能寄存器功能说明被打赏20分 | |
野火启明6M5适配SPI被打赏20分 | |
NUCLEO-U083RC学习历程2-串口输出测试被打赏20分 | |
【笔记】STM32CUBEIDE的Noruletomaketarget编译问题被打赏50分 |