STM32 + CPLD + OV7670 + LCD, 无拖影30fps,但是有一个小问题请教前辈
CPLD控制将OV7670的图像发送给LCD。问题在于如果我手不拿着摄像头,图像的色彩就会乱七八糟的,如果用手拿着(尤其是时钟线),图像就没有问题。我在想是否真是因为时钟线的问题,是过长导致的吗?有没有什么解决方法?
http://cache.amobbs.com/bbs_upload782111/files_39/ourdev_638228BBCBCO.jpg
手拿着时钟线就没问题。 (原文件名:DSCN2614.jpg)
http://cache.amobbs.com/bbs_upload782111/files_39/ourdev_638229WOXZJV.jpg
不拿着图像就变成这个样子。 (原文件名:DSCN2616.jpg) 接触不好?换根线试试 时序很敏感 得保证等长的数据线 还有就是干扰 @tedden
换了线也不行
@kingboy100
那么我是不是只能做成PCB了?我感觉24MHz的频率应该还不算高,但我没有经验,不知道会不会有外部干扰。
请问要用等长的数据线是为什么? 24Mhz应该不低了吧... 我记得有人手工焊过60MHz的数字电路,所以我想应该是有解决方法的,做成PCB消耗有点大。 加电容,跟手拿一样 知道是怎么回事了,是CPLD上的程序有点缺陷,改进后整体图像不会有问题了,偶尔会有一些零星的色彩错误的点,手拿着就完美了。:)
附上VHDL源程序,很容易看懂的。
library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
ENTITY MCU_CPLD_LCD IS
PORT(
MCU_BUS: IN STD_LOGIC_VECTOR(15 DOWNTO 0);
MCU_WR, MCU_RS, MCU_RD, MCU_CS, MCU_RST: IN BIT;
SEL: IN BIT;
LCD_BUS: OUT STD_LOGIC_VECTOR(15 DOWNTO 0);
LCD_WR, LCD_RS, LCD_RD, LCD_CS, LCD_RST: OUT BIT;
CAM_BUS: IN STD_LOGIC_VECTOR(7 DOWNTO 0);
HREF: IN BIT;
PCLK: IN STD_LOGIC
);
END MCU_CPLD_LCD;
ARCHITECTURE MAIN OF MCU_CPLD_LCD IS
SIGNAL WR: BIT;
SIGNAL BUF: STD_LOGIC_VECTOR(7 DOWNTO 0);
SIGNAL BUFFER_BUS: STD_LOGIC_VECTOR(15 DOWNTO 0);
BEGIN
-- SEL = 0 -> LCD_BUS and LCD_WR are directly connected to MCU for configuration
-- SEL = 1 -> LCD_BUS and LCD_WR are fed according to PCLK by CPLD
WITH SEL SELECT
LCD_BUS <= MCU_BUS WHEN '0',
BUFFER_BUS WHEN OTHERS;
WITH SEL SELECT
LCD_WR <= MCU_WR WHEN '0',
WR OR (NOT HREF) WHEN OTHERS;
--RISING EDGE OF PCLK
-- First byte: write the byte to the buffer
-- Second byte: write the buffer and current camera bus data to LCD bus
--FALLING EDGE OF PCLK
-- First byte: WR = 1
-- Second byte: WR = 0
PROCESS(PCLK)
BEGIN
--Very important! Must set WR when HREF is low
IF(HREF = '0') THEN
WR <= '1';
ELSIF(RISING_EDGE(PCLK)) THEN
IF(WR = '1') THEN
BUF <= CAM_BUS;
ELSE
BUFFER_BUS(15 DOWNTO 8) <= BUF;
BUFFER_BUS(7 DOWNTO 0) <= CAM_BUS;
END IF;
ELSIF (FALLING_EDGE(PCLK)) THEN
WR <= NOT WR;
END IF;
END PROCESS;
LCD_CS <= MCU_CS;
LCD_RS <= MCU_RS;
LCD_RD <= MCU_RD;
LCD_RST <= MCU_RST;
END MAIN; @again
加了一个30pF的电容从PCLK到地,基本完美了。 地线问题。各个板都要两两接地。 hehe !!!!!! 有没有CPLD板的原理图? mark 楼主,能不能提供一下你的OV7670的配置文件,我的显示时拖影好厉害。 mark了 mark 学习,学习 楼主会不会开源? {:victory:}{:victory:}{:victory:}{:victory:} 干扰严重啊... 也有可能是CPLD驱动 过冲问题
页:
[1]