本帖最后由 湛·无双 于 2016-11-13 17:52 编辑
在做整套控制系统之前,需要有一个人机接口来实现数据的显示和控制功能,因此思索了许久,并且找到了以前的一块2.2寸的液晶屏,发现是基于SPI接口的,并且分辨率也比较可观,足足有240x320大小,并且也是淘宝上通用的一款液晶屏。
F412ZGT6的APB2总线时钟频率和系统时钟是一样的,都工作在100MHz下,因此使用SPI1接口可以轻松达到50Mbit/s,相比于以前的F407等经典系列的45Mbit/s,F429系列的42Mbit/s,F446系列的45Mbit/s,以及F469系列的45Mbit/s,都要快,可以说是达到了目前F4系列中SPI速度的最高值,有了这么快的速度刚开始觉得屏幕能不能承受得住。所以还是觉得通过实验来证明吧!
首先是选用什么样的底层驱动,目前ST公司主推HAL库,以前学习STM32的时候使用标准库习惯了,猛的转移到HAL库上不是特别的适应,所以干脆以前刚开始学习的时候参考正点原子的寄存器形式,这次也采用寄存器的形式进行开发。拿着原子哥发布的F429系列的寄存器库进行移植,包含有串口、延时、GPIO初始化、中断还有SPI接口,刚开始的时候直接复制进去发现GPIO能用,串口的波特率死活调不对,最后发现才知道,原子哥开放的接口是PLL的倍频与降频,对于系统时钟如何映射到APB还有AHB直接固定死了,好家伙,终于找到原因了,直接在程序里面强行更改APB分频和AHB值,这下波特率就对应上了,可以进一步去调试了。
然后就是下载液晶屏的资料,还有DEMO程序,底层的逐步移植,完成了初步的界面显示。
首先是硬件接口设计:选用了SPI1接口,这样对应的是
PB3=>SCK
PB4=>MISO
PB5=>MOSI
PB1=>CS(软件控制)
然后是复位、命令数据端口:
PC2=>RST
PA2=>D/C
所以按照上面的方式进行硬件连接后,进行软件开发,就能实现对液晶屏的操作。然后就是按照实物把板子与屏幕的线连好,同样记得连接VCC和GND。
|
|
|
|
楼主是用寄存器操作的啊?我想知道用HAL库怎么搞 ,寄存器实在是太累。
|
|
|
|
|
其实我自己也才发现,这个芯片也可以用标准库进行开发,因此,这样所具有的开发方式就有了三种,寄存器+标准库+HAL库,你觉得哪个用着合适就用哪种,相比来说,我个人更比较偏向于使用标准库,早起的ST开发都是这种方式。
|
|
|
|
|
湛·无双 发表于 2016-11-15 22:29
其实我自己也才发现,这个芯片也可以用标准库进行开发,因此,这样所具有的开发方式就有了三种,寄存器+标准库+HAL库,你觉得哪个用着合适就用哪种,相比来说,我个人更比较偏向于使用标准库,早起的ST开发都是这种方式。 ...
标准库没有找到这是很大的问题。
|
|
|
|
|
本帖最后由 湛·无双 于 2016-11-17 10:34 编辑
上官梦舞 发表于 2016-11-17 08:26
标准库没有找到这是很大的问题。
来,我给你上传个用标准库建立的工程。
|
|
|
|
|
嗯,这个屏幕在淘宝上卖得还是比较多的,采用了SPI接口,节省了IO口,但是刷新的速度就降下去了,所以高速的SPI接口对于刷新速度的提升很重要。
|
|
|
|
|
也不算是高手,我也是学习的时间不是很长,有很多也是参考别人的。
|
|
|
|
|
嗯,那看来你学得已经相当不错了,我本来也想用emWin的,但是觉得我要实现的功能不多,还是自己写个简单的显示就行了。
|
|
|
|
|