Merge pull request #2433 from lymzzyh/master

[BSP][K210]Add LCD Camera driver
This commit is contained in:
Bernard Xiong authored and GitHub committed 2019-03-12 19:59:36 +08:00
commit 298ddc60ee
13 files changed
+2164 -2

No files matched your search

+74 -1
View File
@@ -65,7 +65,7 @@ CONFIG_RT_USING_DEVICE=y
CONFIG_RT_USING_CONSOLE=y
CONFIG_RT_CONSOLEBUF_SIZE=128
CONFIG_RT_CONSOLE_DEVICE_NAME="uarths"
CONFIG_RT_VER_NUM=0x40000
CONFIG_RT_VER_NUM=0x40001
CONFIG_ARCH_CPU_64BIT=y
CONFIG_ARCH_RISCV=y
CONFIG_ARCH_RISCV64=y
@@ -126,6 +126,7 @@ CONFIG_RT_USING_DEVICE_IPC=y
CONFIG_RT_PIPE_BUFSZ=512
CONFIG_RT_USING_SERIAL=y
CONFIG_RT_SERIAL_USING_DMA=y
CONFIG_RT_SERIAL_RB_BUFSZ=64
# CONFIG_RT_USING_CAN is not set
# CONFIG_RT_USING_HWTIMER is not set
# CONFIG_RT_USING_CPUTIME is not set
@@ -142,6 +143,7 @@ CONFIG_RT_SERIAL_USING_DMA=y
# CONFIG_RT_USING_SPI is not set
# CONFIG_RT_USING_WDT is not set
# CONFIG_RT_USING_AUDIO is not set
# CONFIG_RT_USING_SENSOR is not set
#
# Using WiFi
@@ -233,6 +235,7 @@ CONFIG_RT_USING_POSIX=y
# Wiced WiFi
#
# CONFIG_PKG_USING_WLAN_WICED is not set
# CONFIG_PKG_USING_RW007 is not set
# CONFIG_PKG_USING_COAP is not set
# CONFIG_PKG_USING_NOPOLL is not set
# CONFIG_PKG_USING_NETUTILS is not set
@@ -247,6 +250,8 @@ CONFIG_RT_USING_POSIX=y
# CONFIG_PKG_USING_ALI_IOTKIT is not set
# CONFIG_PKG_USING_AZURE is not set
# CONFIG_PKG_USING_TENCENT_IOTKIT is not set
# CONFIG_PKG_USING_NIMBLE is not set
# CONFIG_PKG_USING_OTA_DOWNLOADER is not set
#
# security packages
@@ -278,6 +283,7 @@ CONFIG_RT_USING_POSIX=y
# CONFIG_PKG_USING_RDB is not set
# CONFIG_PKG_USING_QRCODE is not set
# CONFIG_PKG_USING_ULOG_EASYFLASH is not set
# CONFIG_PKG_USING_ADBD is not set
#
# system packages
@@ -298,6 +304,18 @@ CONFIG_RT_USING_POSIX=y
#
# peripheral libraries and drivers
#
#
# sensors drivers
#
# CONFIG_PKG_USING_LSM6DSL is not set
# CONFIG_PKG_USING_LPS22HB is not set
# CONFIG_PKG_USING_HTS221 is not set
# CONFIG_PKG_USING_LSM303AGR is not set
# CONFIG_PKG_USING_BME280 is not set
# CONFIG_PKG_USING_BMA400 is not set
# CONFIG_PKG_USING_BMI160_BMX160 is not set
# CONFIG_PKG_USING_SPL0601 is not set
# CONFIG_PKG_USING_REALTEK_AMEBA is not set
# CONFIG_PKG_USING_SHT2X is not set
# CONFIG_PKG_USING_AHT10 is not set
@@ -308,6 +326,7 @@ CONFIG_RT_USING_POSIX=y
# CONFIG_PKG_USING_BUTTON is not set
# CONFIG_PKG_USING_MPU6XXX is not set
# CONFIG_PKG_USING_PCF8574 is not set
# CONFIG_PKG_USING_SX12XX is not set
CONFIG_PKG_USING_KENDRYTE_SDK=y
CONFIG_PKG_KENDRYTE_SDK_PATH="/packages/peripherals/kendryte-sdk"
CONFIG_PKG_USING_KENDRYTE_SDK_V052=y
@@ -337,12 +356,14 @@ CONFIG_PKG_KENDRYTE_SDK_VER="v0.5.2"
# CONFIG_PKG_USING_NETWORK_SAMPLES is not set
# CONFIG_PKG_USING_PERIPHERAL_SAMPLES is not set
# CONFIG_PKG_USING_HELLO is not set
# CONFIG_PKG_USING_VI is not set
#
# Privated Packages of RealThread
#
# CONFIG_PKG_USING_CODEC is not set
# CONFIG_PKG_USING_PLAYER is not set
# CONFIG_PKG_USING_MPLAYER is not set
# CONFIG_PKG_USING_PERSIMMON_SRC is not set
# CONFIG_PKG_USING_JS_PERSIMMON is not set
# CONFIG_PKG_USING_JERRYSCRIPT_WIN32 is not set
@@ -359,6 +380,44 @@ CONFIG_PKG_KENDRYTE_SDK_VER="v0.5.2"
# CONFIG_PKG_USING_RTINSIGHT is not set
# CONFIG_PKG_USING_SMARTCONFIG is not set
# CONFIG_PKG_USING_RTX is not set
# CONFIG_RT_USING_TESTCASE is not set
# CONFIG_PKG_USING_NGHTTP2 is not set
# CONFIG_PKG_USING_AVS is not set
# CONFIG_PKG_USING_STS is not set
# CONFIG_PKG_USING_DLMS is not set
#
# Test Packages of RealThread
#
#
# RT-Thread Senior Membership Packages
#
#
# system packages
#
# CONFIG_PKG_USING_FTL_SRC is not set
#
# IoT - internet of things
#
#
# Webnet: A web server package for rt-thread
#
#
# rtpkgs online packages
#
# CONFIG_PKG_USING_CSTRING is not set
# CONFIG_PKG_USING_ARGPARSE is not set
# CONFIG_PKG_USING_LIBBMPREAD is not set
# CONFIG_PKG_USING_LIBUTILS is not set
# CONFIG_PKG_USING_SAM is not set
# CONFIG_PKG_USING_LIBCALLBACK is not set
# CONFIG_PKG_USING_Z_EVENT is not set
# CONFIG_PKG_USING_LIBSTM32HAL is not set
CONFIG_BOARD_K210_EVB=y
CONFIG_BSP_USING_UART_HS=y
# CONFIG_BSP_USING_UART1 is not set
@@ -366,4 +425,18 @@ CONFIG_BSP_USING_UART_HS=y
# CONFIG_BSP_USING_UART3 is not set
# CONFIG_BSP_USING_I2C1 is not set
# CONFIG_BSP_USING_SPI1 is not set
CONFIG_BSP_USING_LCD=y
CONFIG_BSP_LCD_CS_PIN=6
CONFIG_BSP_LCD_WR_PIN=7
CONFIG_BSP_LCD_DC_PIN=8
CONFIG_BSP_LCD_X_MAX=240
CONFIG_BSP_LCD_Y_MAX=320
CONFIG_BSP_USING_CAMERA=y
CONFIG_BSP_CAMERA_SCCB_SDA_PIN=9
CONFIG_BSP_CAMERA_SCCB_SCLK_PIN=10
CONFIG_BSP_CAMERA_CMOS_RST_PIN=11
CONFIG_BSP_CAMERA_CMOS_VSYNC_PIN=12
CONFIG_BSP_CAMERA_CMOS_PWDN_PIN=13
CONFIG_BSP_CAMERA_CMOS_XCLK_PIN=14
CONFIG_BSP_CAMERA_CMOS_PCLK_PIN=15
CONFIG___STACKSIZE__=4096
+52
View File
@@ -23,3 +23,55 @@ config BSP_USING_SPI1
bool "Enable SPI1 (GPIO0/1)"
select RT_USING_SPI
default n
menuconfig BSP_USING_LCD
bool "Enable LCD on SPI0"
default n
if BSP_USING_LCD
config BSP_LCD_CS_PIN
int "CS pin number of 8080 interface"
default 6
config BSP_LCD_WR_PIN
int "DC pin number of 8080 interface"
default 7
config BSP_LCD_DC_PIN
int "DC pin number of 8080 interface"
default 8
config BSP_LCD_X_MAX
int "LCD Height"
default 240
config BSP_LCD_Y_MAX
int "LCD Width"
default 320
endif
menuconfig BSP_USING_CAMERA
bool "Enable Camera"
default n
if BSP_USING_CAMERA
config BSP_CAMERA_SCCB_SDA_PIN
int "SCCB SDA pin number for camera"
default 9
config BSP_CAMERA_SCCB_SCLK_PIN
int "SCCB SCLK pin number for camera"
default 10
config BSP_CAMERA_CMOS_RST_PIN
int "CMOS RST pin number for camera"
default 11
config BSP_CAMERA_CMOS_VSYNC_PIN
int "CMOS VSYNC pin number for camera"
default 12
config BSP_CAMERA_CMOS_PWDN_PIN
int "CMOS PWDN pin number for camera"
default 13
config BSP_CAMERA_CMOS_XCLK_PIN
int "CMOS XCLK pin number for camera"
default 14
config BSP_CAMERA_CMOS_PCLK_PIN
int "CMOS PCLK pin number for camera"
default 15
endif
+3
View File
@@ -10,6 +10,9 @@ drv_uart.c
''')
CPPPATH = [cwd]
if GetDepend('BSP_USING_LCD'):
src += ['drv_lcd.c']
if GetDepend('RT_USING_PIN'):
src += ['drv_gpio.c']
+9
View File
@@ -0,0 +1,9 @@
from building import *
cwd = GetCurrentDir()
src = Glob('*.c') + Glob('*.cpp')
CPPPATH = [cwd]
group = DefineGroup('camera', src, depend = ['BSP_USING_CAMERA'], CPPPATH = CPPPATH)
Return('group')
File diff suppressed because it is too large. Load diff
+51
View File
@@ -0,0 +1,51 @@
/* Copyright 2018 Canaan Inc.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
#ifndef _OV5640_H
#define _OV5640_H
#include <stdint.h>
#define OV5640_ID 0X5640
#define OV5640_ADDR 0X78
#define OV5640_CHIPIDH 0X300A
#define OV5640_CHIPIDL 0X300B
#define XSIZE 320
#define YSIZE 240
#define LCD_GRAM_ADDRESS 0x60020000
#define QQVGA_160_120 0
#define QCIF_176_144 1
#define QVGA_320_240 2
#define WQVGA_400_240 3
#define CIF_352_288 4
#define jpeg_buf_size (30*1024)
uint8_t ov5640_init(void);
void ov5640_flash_lamp(uint8_t sw);
void OV5640_Brightness(uint8_t bright);
void OV5640_Exposure(uint8_t exposure);
void OV5640_Light_Mode(uint8_t mode);
void OV5640_Color_Saturation(uint8_t sat);
void OV5640_Brightness(uint8_t bright);
void OV5640_Contrast(uint8_t contrast);
void OV5640_Sharpness(uint8_t sharp);
void OV5640_Special_Effects(uint8_t eft);
uint8_t OV5640_Focus_Init(void);
uint8_t OV5640_Auto_Focus(void);
#endif
File diff suppressed because it is too large. Load diff
File diff suppressed because it is too large. Load diff
+67
View File
@@ -0,0 +1,67 @@
#include <rtthread.h>
#include <fpioa.h>
#include <drv_io_config.h>
#include <sysctl.h>
#define HS_GPIO(n) (FUNC_GPIOHS0 + n)
static struct io_config
{
int io_num;
fpioa_function_t func;
} io_config[] =
{
#ifdef BSP_USING_LCD
{BSP_LCD_CS_PIN, FUNC_SPI0_SS0}, /* LCD CS PIN */
{BSP_LCD_WR_PIN, FUNC_SPI0_SCLK}, /* LCD WR PIN */
{BSP_LCD_DC_PIN, HS_GPIO(LCD_DC_PIN)}, /* LCD DC PIN */
#endif
#ifdef BSP_USING_CAMERA
{BSP_CAMERA_SCCB_SDA_PIN, FUNC_SCCB_SDA},
{BSP_CAMERA_SCCB_SCLK_PIN, FUNC_SCCB_SCLK},
{BSP_CAMERA_CMOS_RST_PIN, FUNC_CMOS_RST},
{BSP_CAMERA_CMOS_VSYNC_PIN, FUNC_CMOS_VSYNC},
{BSP_CAMERA_CMOS_PWDN_PIN, FUNC_CMOS_PWDN},
{BSP_CAMERA_CMOS_XCLK_PIN, FUNC_CMOS_XCLK},
{BSP_CAMERA_CMOS_PCLK_PIN, FUNC_CMOS_PCLK},
#endif
#ifdef BSP_USING_SPI1
{17, FUNC_CMOS_HREF},
{24, FUNC_SPI1_SS3},
{29, FUNC_SPI1_SCLK},
{30, FUNC_SPI1_D0},
{31, FUNC_SPI1_D1},
#ifdef BSP_USING_SPI1_AS_QSPI
{32, FUNC_SPI1_D2},
{33, FUNC_SPI1_D3},
#endif
#endif
#ifdef BSP_USING_SDCARD
{32, HS_GPIO(SD_CS_PIN)},
#endif
};
int io_config_init(void)
{
int count = sizeof(io_config) / sizeof(io_config[0]);
int i;
sysctl_set_power_mode(SYSCTL_POWER_BANK0, SYSCTL_POWER_V18);
sysctl_set_power_mode(SYSCTL_POWER_BANK1, SYSCTL_POWER_V18);
sysctl_set_power_mode(SYSCTL_POWER_BANK2, SYSCTL_POWER_V18);
for(i = 0; i < count; i++)
{
fpioa_set_function(io_config[i].io_num, io_config[i].func);
}
#if defined(BSP_USING_CAMERA) || defined(BSP_USING_LCD)
sysctl_set_spi0_dvp_data(1);
#endif
}
INIT_BOARD_EXPORT(io_config_init);
+17
View File
@@ -0,0 +1,17 @@
#ifndef __DRV_IO_CONFIG_H__
#define __DRV_IO_CONFIG_H__
enum HS_GPIO_CONFIG
{
#ifdef BSP_USING_LCD
LCD_DC_PIN = 0, /* LCD DC PIN */
#endif
#ifdef BSP_USING_SDCARD
SD_CS_PIN, /* SD_CS_PIN */
#endif
};
extern int io_config_init(void);
#endif
File diff suppressed because it is too large. Load diff
+15
View File
@@ -0,0 +1,15 @@
/*
* Copyright (c) 2006-2018, RT-Thread Development Team
*
* SPDX-License-Identifier: Apache-2.0
*
* Change Logs:
* Date Author Notes
* 2019-03-07 ZYH first version
*/
#ifndef DRV_LCD_H__
#define DRV_LCD_H__
int rt_hw_lcd_init(void);
#endif
+62 -1
View File
@@ -62,7 +62,7 @@
#define RT_USING_CONSOLE
#define RT_CONSOLEBUF_SIZE 128
#define RT_CONSOLE_DEVICE_NAME "uarths"
#define RT_VER_NUM 0x40000
#define RT_VER_NUM 0x40001
#define ARCH_CPU_64BIT
#define ARCH_RISCV
#define ARCH_RISCV64
@@ -118,6 +118,7 @@
#define RT_PIPE_BUFSZ 512
#define RT_USING_SERIAL
#define RT_SERIAL_USING_DMA
#define RT_SERIAL_RB_BUFSZ 64
/* RT_USING_CAN is not set */
/* RT_USING_HWTIMER is not set */
/* RT_USING_CPUTIME is not set */
@@ -134,6 +135,7 @@
/* RT_USING_SPI is not set */
/* RT_USING_WDT is not set */
/* RT_USING_AUDIO is not set */
/* RT_USING_SENSOR is not set */
/* Using WiFi */
@@ -207,6 +209,7 @@
/* Wiced WiFi */
/* PKG_USING_WLAN_WICED is not set */
/* PKG_USING_RW007 is not set */
/* PKG_USING_COAP is not set */
/* PKG_USING_NOPOLL is not set */
/* PKG_USING_NETUTILS is not set */
@@ -220,6 +223,8 @@
/* PKG_USING_ALI_IOTKIT is not set */
/* PKG_USING_AZURE is not set */
/* PKG_USING_TENCENT_IOTKIT is not set */
/* PKG_USING_NIMBLE is not set */
/* PKG_USING_OTA_DOWNLOADER is not set */
/* security packages */
@@ -247,6 +252,7 @@
/* PKG_USING_RDB is not set */
/* PKG_USING_QRCODE is not set */
/* PKG_USING_ULOG_EASYFLASH is not set */
/* PKG_USING_ADBD is not set */
/* system packages */
@@ -265,6 +271,16 @@
/* peripheral libraries and drivers */
/* sensors drivers */
/* PKG_USING_LSM6DSL is not set */
/* PKG_USING_LPS22HB is not set */
/* PKG_USING_HTS221 is not set */
/* PKG_USING_LSM303AGR is not set */
/* PKG_USING_BME280 is not set */
/* PKG_USING_BMA400 is not set */
/* PKG_USING_BMI160_BMX160 is not set */
/* PKG_USING_SPL0601 is not set */
/* PKG_USING_REALTEK_AMEBA is not set */
/* PKG_USING_SHT2X is not set */
/* PKG_USING_AHT10 is not set */
@@ -275,6 +291,7 @@
/* PKG_USING_BUTTON is not set */
/* PKG_USING_MPU6XXX is not set */
/* PKG_USING_PCF8574 is not set */
/* PKG_USING_SX12XX is not set */
#define PKG_USING_KENDRYTE_SDK
#define PKG_USING_KENDRYTE_SDK_V052
/* PKG_USING_KENDRYTE_SDK_LATEST_VERSION is not set */
@@ -300,11 +317,13 @@
/* PKG_USING_NETWORK_SAMPLES is not set */
/* PKG_USING_PERIPHERAL_SAMPLES is not set */
/* PKG_USING_HELLO is not set */
/* PKG_USING_VI is not set */
/* Privated Packages of RealThread */
/* PKG_USING_CODEC is not set */
/* PKG_USING_PLAYER is not set */
/* PKG_USING_MPLAYER is not set */
/* PKG_USING_PERSIMMON_SRC is not set */
/* PKG_USING_JS_PERSIMMON is not set */
/* PKG_USING_JERRYSCRIPT_WIN32 is not set */
@@ -320,6 +339,34 @@
/* PKG_USING_RTINSIGHT is not set */
/* PKG_USING_SMARTCONFIG is not set */
/* PKG_USING_RTX is not set */
/* RT_USING_TESTCASE is not set */
/* PKG_USING_NGHTTP2 is not set */
/* PKG_USING_AVS is not set */
/* PKG_USING_STS is not set */
/* PKG_USING_DLMS is not set */
/* Test Packages of RealThread */
/* RT-Thread Senior Membership Packages */
/* system packages */
/* PKG_USING_FTL_SRC is not set */
/* IoT - internet of things */
/* Webnet: A web server package for rt-thread */
/* rtpkgs online packages */
/* PKG_USING_CSTRING is not set */
/* PKG_USING_ARGPARSE is not set */
/* PKG_USING_LIBBMPREAD is not set */
/* PKG_USING_LIBUTILS is not set */
/* PKG_USING_SAM is not set */
/* PKG_USING_LIBCALLBACK is not set */
/* PKG_USING_Z_EVENT is not set */
/* PKG_USING_LIBSTM32HAL is not set */
#define BOARD_K210_EVB
#define BSP_USING_UART_HS
/* BSP_USING_UART1 is not set */
@@ -327,6 +374,20 @@
/* BSP_USING_UART3 is not set */
/* BSP_USING_I2C1 is not set */
/* BSP_USING_SPI1 is not set */
#define BSP_USING_LCD
#define BSP_LCD_CS_PIN 6
#define BSP_LCD_WR_PIN 7
#define BSP_LCD_DC_PIN 8
#define BSP_LCD_X_MAX 240
#define BSP_LCD_Y_MAX 320
#define BSP_USING_CAMERA
#define BSP_CAMERA_SCCB_SDA_PIN 9
#define BSP_CAMERA_SCCB_SCLK_PIN 10
#define BSP_CAMERA_CMOS_RST_PIN 11
#define BSP_CAMERA_CMOS_VSYNC_PIN 12
#define BSP_CAMERA_CMOS_PWDN_PIN 13
#define BSP_CAMERA_CMOS_XCLK_PIN 14
#define BSP_CAMERA_CMOS_PCLK_PIN 15
#define __STACKSIZE__ 4096
#endif