今天翻出买来就一直吃灰的一个STM32F030小板子玩了一下。
接了个SPI flash和一个ILI9341屏幕,存了点图片,又来刷屏了。。。
STM32F030F4P6只有一个SPI,flash和LCD都接在这个SPI上。LCD的MISO没接。
CPU运行在40MHz,这样SPI时钟可以设置到10MHz,正好到ILI9341能接受的最大频率了。
ILI9341和Flash片选都选中,这样读Flash和写LCD可以同时进行了。然后用DMA把刚从flash读出的数据直接写到ILI9341里。
图片是RGB565的,分辨率128×128,8MB的flash只能存256张,刷的速度大概是38fps。6秒多就没了。
http://v.youku.com/v_show/id_XMTYyMTk2NDc4OA==.html
代码:
STM32F030F4-SPI.rar
(40.08 KB, 下载次数: 443)
2016-6-27 00:11 上传
点击文件名下载附件
本来想一帧一帧刷,控制到24fps的,后来感觉好像也没多少意思,就开Circular mode了,连续刷。。。
uint32_t Direction; /*!< Specifies if the data will be transferred from memory to peripheral,
from memory to memory or from peripheral to memory.
This parameter can be a value of @ref DMA_Data_transfer_direction */
我用的cubemx,只能是外围到内存,内存到外围,内存到内存的设置,你这个是外围到外围,的确新奇, 是不是因为SPI的特殊性,输入输出都是在DR。 看SPI的介绍说RX只能在通道2,TX只能在3。你这搞到一个通道在cubemx里面怎么设置的?
DMA1_Channel3 -> CNDTR = 128 * 128;
DMA1_Channel3 -> CMAR = (uint32_t)&SPI1 -> DR;
DMA1_Channel3 -> CPAR = (uint32_t)&SPI1 -> DR;
DMA1_Channel3 -> CCR = DMA_CCR_PSIZE_0 |
DMA_CCR_MSIZE_0 |
DMA_CCR_CIRC |
DMA_CCR_EN;
不知哪位高手能作答一下。LZ的这种方法刷图片确实快好多。
一周热门 更多>