本帖最后由 QQSD 于 2017-8-13 15:49 编辑
自从接到板子后,一直在不断的学习之中。
最近学习了spi协议和TFT屏幕,结合上次学过的知识设计了一个屏幕亮度调节器。
首先说一下spi协议。
什么是SPI? SPI是串行外设接口(Serial Peripheral Interface)的缩写。是 Motorola 公司推出的一 种同步串行接口技术,是一种高速的,全双工,同步的 通信总线。 2、SPI优点
支持全双工通信
通信简单
数据传输速率块 3、缺点
没有指定的流控制,没有应答机制确认是否接收到数据,所以跟IIC总线协议比较在数据 可靠性上有一定的缺陷。 4、特点
1):高速、同步、全双工、非差分、总线式
2):主从机通信模式 5、协议通信时序详解
1):SPI的通信原理很简单,它以主从方式工作,这种模式通常有一个主设备和一个或多
个从设备,需要至少4根线,事实上3根也可以(单向传输时)。也是所有基于SPI的设备共 有的,它们是SDI(数据输入)、SDO(数据输出)、SCLK(时钟)、CS(片选)。
(1)SDO/MOSI – 主设备数据输出,从设备数据输入;
(2)SDI/MISO – 主设备数据输入,从设备数据输出;
(3)SCLK – 时钟信号,由主设备产生;
(4)CS/SS – 从设备使能信号,由主设备控制。当有多个从设备的时候,因为每个从设备上都有一个片选引脚接入到主设备机中,当我们的主设备和某个从设备通信时将需要将从设备对应的片选引脚电平拉低或者是拉高。
然后是TFT屏幕的驱动,网上有许多TFT屏幕的驱动程序,不过大都是F1的TFT屏幕程序。本小白本着借鉴的原则移植到了F4。
看一下效果吧!
本亮度调节器的原理图
本屏幕调节器带有手动调节和自动调节功能!用到的知识不多,但是需要一定的C语言内功,灵活运用指针数组来实现亮度调节。我设计了6个按钮,左边三个起调节作用,第一个为根据外界自动调亮度,第二个按钮为增加亮度,第三个为减少亮度。本作品采用spwm调节屏幕亮度。右边三个按钮暂无作用,留着以后想玩再玩。
详细程序和原理图可以私聊我。
|