本帖最后由 晓枫VS枯叶 于 2015-10-20 09:40 编辑
感谢二姨给的板子,中途比较忙,所以这次拖到最后才来分享
主要分享OV7725的图像采集和SPI LCD的显示
用的到外设有:
1. 模拟SCCB(类似I2C)
2. 硬件SPI驱动LCD
3. SDIO驱动TF卡
4. UART调试
5.TIMER进行帧率计算
本来开始用HAL库都写好了图像采集和显示的程序,但是发现cubemx创建出来的SDIO+FATFS在写数据是会出现CRC校验错误,最后放弃了HAL库,又采用了标准库进行采集。
本来准备用硬件的IIC来配置OV7725,但是貌似那个SCCB时序和IIC时序不同,一直导致硬件IIC卡死,遂采用了软件模拟SCCB时序,软件模拟还是很顺利的。而SPI方面看了一下数据手册,
SPI1的速度有45 Mbits/s,但是在cubemx里配置时却出现速度不能大于42Mbits/s
而我用的标准库配置时,把SPI1的分频参数强制设置为2(即速度为45 Mbits/s)时LCD也不能工作了,改成4(即速度为22.5 Mbits/s)时LCD工作正常,不知道这是SPI的问题还是LCD不支持
这么搞的速度,下次再找个FLASH芯片测试下,FLASH芯片的速度总能达到要求了。SPI驱动的LCD刷屏非常慢,即使在分辨率只有176*240的情况下还要110ms一屏(单色),这可能就是串
口屏的劣势所在了吧。
而SDIO所采用的48M时钟,我使用PLLSAI来提供,时钟配置如下所示,虽然用的标准库,毕竟cubemx上的时钟树配置比较简单,看起来也比较直观。
对应的标准库函数如下
RCC_PLLSAIConfig(8,384,8,2);
RCC_48MHzClockSourceConfig(RCC_48MHZCLKSource_PLLSAI);
RCC_SDIOClockSourceConfig(RCC_SDIOCLKSource_48MHZ);
RCC_PLLSAICmd(ENABLE);
这样配置对USB来说同样有效,这样在使用USB或SDIO时F446的主频同样可以跑在180M,这是在f429上的一些改进吧。
整体接线及实物图如下:
桌子比较乱见谅了...........本准备实现拍照功能的,但是由于我的SPI LCD是单向通信的,不能读LCD,所以就没有搞上去(现在还在考虑用那种方法),所以感觉TF卡在上面也成了摆设。
这是试用的F466还是很给力的,但是自己在途中遇到了两个问题:1.SPI1的速率问题、2.HAL库SDIO驱动TF卡,如果有人解决了,希望赐教一下,工程如下:
|