A little more SAMA5/OV2640 logic
This commit is contained in:
parent
4b01f0fdab
commit
77cf855260
@ -2228,37 +2228,42 @@ OV2640 Camera Interface
|
||||
|
||||
SAMA5D3x PIN SAMA5D3x-EK OV2640
|
||||
PIO PER SIGNAL ISI Socket J11
|
||||
---- --- ------------- --- ------------ ------------
|
||||
1 VDDISI
|
||||
2 GND
|
||||
3 VDDISI
|
||||
4 GND
|
||||
PE28 ? ? 5 ZB_SLPTR
|
||||
PE29 ? ? 6 ZB_RST
|
||||
PC27 B TWI1_CK 7 TWCK1
|
||||
PC26 B TWI1_D 8 TWD1
|
||||
9 GND
|
||||
PD31 B PCK1 (ISI_MCK) 10 ISI_MCK
|
||||
11 GND
|
||||
PA30 C ISI_VSYNC 12 ISI_VSYNC
|
||||
13 GND
|
||||
PA31 C ISI_HSYNC 14 ISI_HSYNC
|
||||
15 GND
|
||||
PC30 C ISI_PCK 16 ISI_PCK
|
||||
17 GND
|
||||
PA16 C ISI_D0 18 ISI_D0
|
||||
PA17 C ISI_D1 19 ISI_D1
|
||||
PA18 C ISI_D2 20 ISI_D2
|
||||
PA19 C ISI_D3 21 ISI_D3
|
||||
PA20 C ISI_D4 22 ISI_D4
|
||||
PA21 C ISI_D5 23 ISI_D5
|
||||
PA22 C ISI_D6 24 ISI_D6
|
||||
PA23 C ISI_D7 25 ISI_D7
|
||||
PC29 C ISI_D8 26 ISI_D8
|
||||
PC28 C ISI_D9 27 ISI_D9
|
||||
PC27 C ISI_D10 28 ISI_D10
|
||||
PC26 C ISI_D11 29 ISI_D11
|
||||
30 GND
|
||||
---- --- ------------- --- ------------ ----------------------------------------
|
||||
--- 1 VDDISI ---
|
||||
--- 2 GND ---
|
||||
--- 3 VDDISI ---
|
||||
--- 4 GND ---
|
||||
PE28 ? ? 5 ZB_SLPTR ???
|
||||
PE29 ? ? 6 ZB_RST C6 RESETB Reset mode (?)
|
||||
PC27 B TWI1_CK 7 TWCK1 C2 SIO_C SCCB serial interface clock input
|
||||
PC26 B TWI1_D 8 TWD1 C1 SIO_D SCCB serial interface data I/O
|
||||
--- 9 GND ---
|
||||
PD31 B PCK1 (ISI_MCK) 10 ISI_MCK C4 XVCLK System clock input (?)
|
||||
--- 11 GND ---
|
||||
PA30 C ISI_VSYNC 12 ISI_VSYNC D2 VSYNC Vertical synchronization
|
||||
--- 13 GND ---
|
||||
PA31 C ISI_HSYNC 14 ISI_HSYNC C3 HREF Horizontal reference output (?)
|
||||
--- 15 GND ---
|
||||
PC30 C ISI_PCK 16 ISI_PCK E3 PCLK Pixel clock output
|
||||
--- 17 GND ---
|
||||
PA16 C ISI_D0 18 ISI_D0 E2 Y0 Video port output bit[0]
|
||||
PA17 C ISI_D1 19 ISI_D1 E1 Y1 Video port output bit[1]
|
||||
PA18 C ISI_D2 20 ISI_D2 F3 Y2 Video port output bit[2]
|
||||
PA19 C ISI_D3 21 ISI_D3 G3 Y3 Video port output bit[3]
|
||||
PA20 C ISI_D4 22 ISI_D4 F4 Y4 Video port output bit[4]
|
||||
PA21 C ISI_D5 23 ISI_D5 G4 Y5 Video port output bit[5]
|
||||
PA22 C ISI_D6 24 ISI_D6 E5 Y6 Video port output bit[6]
|
||||
PA23 C ISI_D7 25 ISI_D7 G5 Y7 Video port output bit[7]
|
||||
PC29 C ISI_D8 26 ISI_D8 F5 Y8 Video port output bit[8]
|
||||
PC28 C ISI_D9 27 ISI_D9 G6 Y9 Video port output bit[9]
|
||||
PC27 C ISI_D10 28 ISI_D10 ---
|
||||
PC26 C ISI_D11 29 ISI_D11 ---
|
||||
--- 30 GND ---
|
||||
|
||||
??? ?? A2 EXPST_B Snapshot exposure start trigger
|
||||
??? ?? A6 STROBE Flash control output
|
||||
??? ?? B2 FREX Snapshot trigger
|
||||
??? ?? B6 PWDN Power-down mode enable
|
||||
|
||||
I2S Audio Support
|
||||
=================
|
||||
|
@ -488,63 +488,7 @@ CONFIG_DISABLE_MOUNTPOINT=y
|
||||
#
|
||||
# Graphics Support
|
||||
#
|
||||
CONFIG_NX=y
|
||||
CONFIG_NX_NPLANES=1
|
||||
# CONFIG_NX_WRITEONLY is not set
|
||||
|
||||
#
|
||||
# Supported Pixel Depths
|
||||
#
|
||||
CONFIG_NX_DISABLE_1BPP=y
|
||||
CONFIG_NX_DISABLE_2BPP=y
|
||||
CONFIG_NX_DISABLE_4BPP=y
|
||||
CONFIG_NX_DISABLE_8BPP=y
|
||||
# CONFIG_NX_DISABLE_16BPP is not set
|
||||
CONFIG_NX_DISABLE_24BPP=y
|
||||
CONFIG_NX_DISABLE_32BPP=y
|
||||
CONFIG_NX_PACKEDMSFIRST=y
|
||||
|
||||
#
|
||||
# Input Devices
|
||||
#
|
||||
# CONFIG_NX_MOUSE is not set
|
||||
# CONFIG_NX_KBD is not set
|
||||
|
||||
#
|
||||
# Framed Window Borders
|
||||
#
|
||||
CONFIG_NXTK_BORDERWIDTH=3
|
||||
CONFIG_NXTK_DEFAULT_BORDERCOLORS=y
|
||||
# CONFIG_NXTK_AUTORAISE is not set
|
||||
|
||||
#
|
||||
# Font Selections
|
||||
#
|
||||
CONFIG_NXFONTS_CHARBITS=7
|
||||
# CONFIG_NXFONT_MONO5X8 is not set
|
||||
# CONFIG_NXFONT_SANS17X22 is not set
|
||||
# CONFIG_NXFONT_SANS20X26 is not set
|
||||
# CONFIG_NXFONT_SANS23X27 is not set
|
||||
# CONFIG_NXFONT_SANS22X29 is not set
|
||||
# CONFIG_NXFONT_SANS28X37 is not set
|
||||
# CONFIG_NXFONT_SANS39X48 is not set
|
||||
CONFIG_NXFONT_SANS17X23B=y
|
||||
# CONFIG_NXFONT_SANS20X27B is not set
|
||||
# CONFIG_NXFONT_SANS22X29B is not set
|
||||
# CONFIG_NXFONT_SANS28X37B is not set
|
||||
# CONFIG_NXFONT_SANS40X49B is not set
|
||||
# CONFIG_NXFONT_SERIF22X29 is not set
|
||||
# CONFIG_NXFONT_SERIF29X37 is not set
|
||||
# CONFIG_NXFONT_SERIF38X48 is not set
|
||||
# CONFIG_NXFONT_SERIF22X28B is not set
|
||||
# CONFIG_NXFONT_SERIF27X38B is not set
|
||||
# CONFIG_NXFONT_SERIF38X49B is not set
|
||||
# CONFIG_NXCONSOLE is not set
|
||||
|
||||
#
|
||||
# NX Multi-user only options
|
||||
#
|
||||
# CONFIG_NX_MULTIUSER is not set
|
||||
# CONFIG_NX is not set
|
||||
|
||||
#
|
||||
# Memory Management
|
||||
|
@ -51,6 +51,9 @@
|
||||
#include "sam_periphclks.h"
|
||||
#include "sam_lcd.h"
|
||||
#include "sam_pck.h"
|
||||
#include "sam_pio.h"
|
||||
#include "chip/sam_pinmap.h"
|
||||
|
||||
#include "sama5d3x-ek.h"
|
||||
|
||||
#ifdef HAVE_CAMERA
|
||||
@ -58,7 +61,9 @@
|
||||
/****************************************************************************
|
||||
* Definitions
|
||||
****************************************************************************/
|
||||
/* Configuration ************************************************************/
|
||||
/* Typical OV2640 XVCLK is 24MHz */
|
||||
|
||||
#define OV2640_FREQUENCY 24000000
|
||||
|
||||
/****************************************************************************
|
||||
* Private Data
|
||||
@ -97,11 +102,57 @@ static inline FAR struct fb_vtable_s *ov2640_lcd_initialize(void)
|
||||
|
||||
/****************************************************************************
|
||||
* Name: ov2640_camera_initialize
|
||||
*
|
||||
* Description:
|
||||
* Initialize the OV2640 camera in the correct mode of operation
|
||||
*
|
||||
* OV2640 Camera Interface
|
||||
*
|
||||
* SAMA5D3x PIN SAMA5D3x-EK OV2640
|
||||
* PIO PER SIGNAL ISI Socket J11
|
||||
* ---- --- ------------- --- ------------ ----------------------------------------
|
||||
* --- 1 VDDISI ---
|
||||
* --- 2 GND ---
|
||||
* --- 3 VDDISI ---
|
||||
* --- 4 GND ---
|
||||
* PE28 ? ? 5 ZB_SLPTR ???
|
||||
* PE29 ? ? 6 ZB_RST C6 RESETB Reset mode (?)
|
||||
* PC27 B TWI1_CK 7 TWCK1 C2 SIO_C SCCB serial interface clock input
|
||||
* PC26 B TWI1_D 8 TWD1 C1 SIO_D SCCB serial interface data I/O
|
||||
* --- 9 GND ---
|
||||
* PD31 B PCK1 (ISI_MCK) 10 ISI_MCK C4 XVCLK System clock input (?)
|
||||
* --- 11 GND ---
|
||||
* PA30 C ISI_VSYNC 12 ISI_VSYNC D2 VSYNC Vertical synchronization
|
||||
* --- 13 GND ---
|
||||
* PA31 C ISI_HSYNC 14 ISI_HSYNC C3 HREF Horizontal reference output (?)
|
||||
* --- 15 GND ---
|
||||
* PC30 C ISI_PCK 16 ISI_PCK E3 PCLK Pixel clock output
|
||||
* --- 17 GND ---
|
||||
* PA16 C ISI_D0 18 ISI_D0 E2 Y0 Video port output bit[0]
|
||||
* PA17 C ISI_D1 19 ISI_D1 E1 Y1 Video port output bit[1]
|
||||
* PA18 C ISI_D2 20 ISI_D2 F3 Y2 Video port output bit[2]
|
||||
* PA19 C ISI_D3 21 ISI_D3 G3 Y3 Video port output bit[3]
|
||||
* PA20 C ISI_D4 22 ISI_D4 F4 Y4 Video port output bit[4]
|
||||
* PA21 C ISI_D5 23 ISI_D5 G4 Y5 Video port output bit[5]
|
||||
* PA22 C ISI_D6 24 ISI_D6 E5 Y6 Video port output bit[6]
|
||||
* PA23 C ISI_D7 25 ISI_D7 G5 Y7 Video port output bit[7]
|
||||
* PC29 C ISI_D8 26 ISI_D8 F5 Y8 Video port output bit[8]
|
||||
* PC28 C ISI_D9 27 ISI_D9 G6 Y9 Video port output bit[9]
|
||||
* PC27 C ISI_D10 28 ISI_D10 ---
|
||||
* PC26 C ISI_D11 29 ISI_D11 ---
|
||||
* --- 30 GND ---
|
||||
*
|
||||
* ??? ?? A2 EXPST_B Snapshot exposure start trigger
|
||||
* ??? ?? A6 STROBE Flash control output
|
||||
* ??? ?? B2 FREX Snapshot trigger
|
||||
* ??? ?? B6 PWDN Power-down mode enable
|
||||
*
|
||||
****************************************************************************/
|
||||
|
||||
static inline int ov2640_camera_initialize(void)
|
||||
{
|
||||
FAR struct i2c_dev_s *i2c;
|
||||
uint32_t actual;
|
||||
int ret;
|
||||
|
||||
/* Get the I2C driver that interfaces with the camers (OV2640_BUS)*/
|
||||
@ -109,7 +160,7 @@ static inline int ov2640_camera_initialize(void)
|
||||
i2c = up_i2cinitialize(OV2640_BUS);
|
||||
if (!i2c)
|
||||
{
|
||||
fdbg("ERROR: Failed to initialize TWI%d\n", OV2640_BUS);
|
||||
gdbg("ERROR: Failed to initialize TWI%d\n", OV2640_BUS);
|
||||
return EXIT_FAILURE;
|
||||
}
|
||||
|
||||
@ -117,6 +168,39 @@ static inline int ov2640_camera_initialize(void)
|
||||
|
||||
sam_isi_enableclk();
|
||||
|
||||
/* Configure OV2640 pins
|
||||
*
|
||||
* ISI:
|
||||
* - HSYNC, VSYNC, PCK
|
||||
* - 8 data bits for 8-bit color
|
||||
* PCK
|
||||
* - PCK1 provides OV2640 system clock
|
||||
*/
|
||||
|
||||
sam_configpio(PIO_ISI_HSYNC);
|
||||
sam_configpio(PIO_ISI_VSYNC);
|
||||
sam_configpio(PIO_ISI_PCK);
|
||||
|
||||
sam_configpio(PIO_ISI_D0);
|
||||
sam_configpio(PIO_ISI_D1);
|
||||
sam_configpio(PIO_ISI_D2);
|
||||
sam_configpio(PIO_ISI_D3);
|
||||
sam_configpio(PIO_ISI_D4);
|
||||
sam_configpio(PIO_ISI_D5);
|
||||
sam_configpio(PIO_ISI_D6);
|
||||
sam_configpio(PIO_ISI_D7);
|
||||
|
||||
sam_configpio(PIO_PMC_PCK1);
|
||||
|
||||
/* Configure and enable the PCK1 output */
|
||||
|
||||
actual = sam_pck_configure(PCK1, OV2640_FREQUENCY);
|
||||
gvdbg("Desired PCK1 frequency: %ld Actual: %ld\n",
|
||||
(long)OV2640_FREQUENCY, (long)actual);
|
||||
|
||||
sam_pck_enable(PCK1, true);
|
||||
|
||||
/* Configure the ISI peripheral */
|
||||
#warning Missing Logic
|
||||
|
||||
/* Initialize the OV2640 camera */
|
||||
@ -124,7 +208,7 @@ static inline int ov2640_camera_initialize(void)
|
||||
ret = ov2640_initialize(i2c);
|
||||
if (ret < 0)
|
||||
{
|
||||
fdbg("ERROR: Failed to initialize the OV2640: %d\n", ret);
|
||||
gdbg("ERROR: Failed to initialize the OV2640: %d\n", ret);
|
||||
return EXIT_FAILURE;
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user