TA的每日心情 | 开心 2019-6-20 14:08 |
---|
签到天数: 43 天 连续签到: 1 天 [LV.5]常住居民I
|
本帖最后由 mabo124 于 2018-7-1 22:11 编辑
近期又朝着自己的目标(设计一个基于RT1052的数字照相机系统)一步一步得前进,现在总结一下工作。
目前实现了一个通过按键来设定选择照相机功能(参考野火的按键和ov6540例程),但是因为mini RT1052只有2个按键可供选择(mode键和wakeup键),我又偷懒没有外接按键电路(主要考虑系统将以触摸形式表达按键形式的功能选择,所以没有采用该外接物理按键方式,如果不得不用的话,可以考虑外接基于iic的zlg7290/基于spi的zlg7289数码管键盘模块),所以只用了一个mode键来表达一个选择拍照特效模式的功能,其他模式的选择与该方式实现相似。这里我主要总结我学习时,觉得需注意的事项。
1. 按键初始化
gpio_pin_config_t key_config; // GPIO结构体初始化
key_config.direction = kGPIO_DigitalInput; //输入模式
key_config.outputLogic = 1;
key_config.interruptMode = kGPIO_NoIntmode; //不使用中断
GPIO_PinInit(CORE_BOARD_MODE_KEY_GPIO, CORE_BOARD_MODE_KEY_GPIO_PIN, &key_config); // mode按键
2. 摄像头初始化
图1 摄像头接口
根据如图1所示,mini底板原理图并且参照fsl_iomuxc.h文件可以查看每一个引脚的功能定义以及其所在组的其它复用功能(随着频繁的访问使用,慢慢对这些引脚的复用功能也会逐渐掌握的)。这里摄像头引脚可以分为3类:GPIO接口、LPI2C接口和CSI接口。GPIO接口分别为PDN和RST;IIC接口分别为:SCL和SDA;CSI接口分别为:D0~D7、VSYNC、HSYNC、CLKIN和PCLK。注意事项是RST引脚为低电平时,用于复位整个传感器芯片;PDN用于控制芯片进入低功耗模式。所以初始化时需要将PDN和RST引脚均设置为高电平。代码如下示:
GPIO_PinInit(GPIO1, 0, &pinConfig);
GPIO_PinInit(GPIO1, 1, &pinConfig);
这里由上面原理图可以看到PDN和RST分别连接USB_OTG2_ID和USB_OTG1_ID引脚(复用USB_OTG功能),查看fsl_iomuxc.h文件可知它们GPIO功能引脚名分别对应IOMUXC_GPIO_AD_B0_00_GPIO1_IO00和IOMUXC_GPIO_AD_B0_00_GPIO1_IO01引脚,所以使用GPIO_PinInit函数时,GPIO组名对应GPIO1,引脚名分别为0(PDN)和1(RST)。
typedef struct _gpio_pin_config
{
gpio_pin_direction_t direction; /*!< Specifies the pin direction. */
uint8_t outputLogic; /*!< Set a default output logic, which has no use in input */
gpio_interrupt_mode_t interruptMode; /*!< Specifies the pin interrupt mode, a value of @ref gpio_interrupt_mode_t. */
} gpio_pin_config_t;
3. LCD初始化部分
这里为了将摄像头采集来的图像数据显示到LCD上,开辟了4个缓冲队列,分别用于活动显示区和非活动显示区。
如果实现数字照相机系统,那么当非活动显示区处于将要活动时,便可以截取出来作为一副图片并将其保存到SD卡/SPI FLASH中。
4. 键控OV5640的实现
通过检测mode键按下的次数,依次调用OV5640_SpecialEffects(uint8_t mode)来设置图片特效功能。
5. 视频效果 ov6540提供了9个特效效果,所以依次按mode键9次,可以相应设置9个不同效果。
|
|