mirror of
https://gitee.com/seekfree/TC264_Library.git
synced 2026-06-03 19:32:55 +00:00
V3.2.8
新增凌瞳无MCU版本驱动
新增SBUS遥控器底层驱动
This commit is contained in:
@@ -1,3 +1,6 @@
|
|||||||
|
V3.2.8
|
||||||
|
<20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͫ<EFBFBD><CDAB>MCU<43>汾<EFBFBD><E6B1BE><EFBFBD><EFBFBD>
|
||||||
|
<20><><EFBFBD><EFBFBD>SBUSң<53><D2A3><EFBFBD><EFBFBD><EFBFBD>ײ<EFBFBD><D7B2><EFBFBD><EFBFBD><EFBFBD>
|
||||||
V3.2.7
|
V3.2.7
|
||||||
<20><><EFBFBD><EFBFBD>RTK "D" <20><>ͷЭ<CDB7><D0AD>
|
<20><><EFBFBD><EFBFBD>RTK "D" <20><>ͷЭ<CDB7><D0AD>
|
||||||
<20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ǻ<EFBFBD>ת<EFBFBD><D7AA><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>ֹ<EFBFBD><D6B9><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
<20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ǻ<EFBFBD>ת<EFBFBD><D7AA><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>ֹ<EFBFBD><D6B9><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
|
|||||||
@@ -100,6 +100,7 @@
|
|||||||
#include "zf_device_tft180.h"
|
#include "zf_device_tft180.h"
|
||||||
#include "zf_device_tsl1401.h"
|
#include "zf_device_tsl1401.h"
|
||||||
#include "zf_device_type.h"
|
#include "zf_device_type.h"
|
||||||
|
#include "zf_device_uart_receiver.h"
|
||||||
#include "zf_device_virtual_oscilloscope.h"
|
#include "zf_device_virtual_oscilloscope.h"
|
||||||
#include "zf_device_wifi_uart.h"
|
#include "zf_device_wifi_uart.h"
|
||||||
#include "zf_device_wifi_spi.h"
|
#include "zf_device_wifi_spi.h"
|
||||||
|
|||||||
Binary file not shown.
@@ -31,6 +31,7 @@
|
|||||||
* <20>ļ<DEB8>¼
|
* <20>ļ<DEB8>¼
|
||||||
* <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><>ע
|
* <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><>ע
|
||||||
* 2022-09-15 pudding first version
|
* 2022-09-15 pudding first version
|
||||||
|
* 2024-02-02 pudding <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͫ<EFBFBD><CDAB>̬<EFBFBD>⺯<EFBFBD><E2BAAF>
|
||||||
********************************************************************************************************************/
|
********************************************************************************************************************/
|
||||||
|
|
||||||
#ifndef _zf_device_config_h_
|
#ifndef _zf_device_config_h_
|
||||||
@@ -43,5 +44,10 @@ unsigned char mt9v03x_set_config_sccb (void *soft_iic_obj, short int b
|
|||||||
unsigned char mt9v03x_set_exposure_time_sccb (unsigned short int light);
|
unsigned char mt9v03x_set_exposure_time_sccb (unsigned short int light);
|
||||||
unsigned char mt9v03x_set_reg_sccb (unsigned char addr, unsigned short int data);
|
unsigned char mt9v03x_set_reg_sccb (unsigned char addr, unsigned short int data);
|
||||||
|
|
||||||
|
unsigned char scc8660_set_config_sccb (void *soft_iic_obj, short int buff[10][2]);
|
||||||
|
unsigned char scc8660_set_brightness_sccb (unsigned short int brightness);
|
||||||
|
unsigned char scc8660_set_manual_wb_sccb (unsigned short int manual_wb);
|
||||||
|
unsigned char scc8660_set_reg_sccb (unsigned char reg, unsigned short int data);
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|||||||
@@ -31,6 +31,7 @@
|
|||||||
* <20>ļ<DEB8>¼
|
* <20>ļ<DEB8>¼
|
||||||
* <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><>ע
|
* <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><>ע
|
||||||
* 2022-09-15 pudding first version
|
* 2022-09-15 pudding first version
|
||||||
|
* 2024-02-02 pudding <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>MCU<43><55>ͫ<EFBFBD><CDAB><EFBFBD><EFBFBD>
|
||||||
********************************************************************************************************************/
|
********************************************************************************************************************/
|
||||||
/*********************************************************************************************************************
|
/*********************************************************************************************************************
|
||||||
* <20><><EFBFBD>߶<EFBFBD><DFB6>壺
|
* <20><><EFBFBD>߶<EFBFBD><DFB6>壺
|
||||||
@@ -55,9 +56,12 @@
|
|||||||
#include "zf_driver_exti.h"
|
#include "zf_driver_exti.h"
|
||||||
#include "zf_driver_gpio.h"
|
#include "zf_driver_gpio.h"
|
||||||
#include "zf_driver_uart.h"
|
#include "zf_driver_uart.h"
|
||||||
|
#include "zf_driver_soft_iic.h"
|
||||||
#include "zf_device_camera.h"
|
#include "zf_device_camera.h"
|
||||||
#include "zf_device_scc8660.h"
|
|
||||||
#include "zf_device_type.h"
|
#include "zf_device_type.h"
|
||||||
|
#include "zf_device_config.h"
|
||||||
|
|
||||||
|
#include "zf_device_scc8660.h"
|
||||||
|
|
||||||
vuint8 scc8660_finish_flag = 0; // һ<><D2BB>ͼ<EFBFBD><CDBC><EFBFBD>ɼ<EFBFBD><C9BC><EFBFBD><EFBFBD>ɱ<EFBFBD>־λ
|
vuint8 scc8660_finish_flag = 0; // һ<><D2BB>ͼ<EFBFBD><CDBC><EFBFBD>ɼ<EFBFBD><C9BC><EFBFBD><EFBFBD>ɱ<EFBFBD>־λ
|
||||||
IFX_ALIGN(4) uint16 scc8660_image[SCC8660_H][SCC8660_W];
|
IFX_ALIGN(4) uint16 scc8660_image[SCC8660_H][SCC8660_W];
|
||||||
@@ -68,6 +72,7 @@ uint8 scc8660_lost_flag = 1;
|
|||||||
uint8 scc8660_dma_int_num; // <20><>ǰDMA<4D>жϴ<D0B6><CFB4><EFBFBD>
|
uint8 scc8660_dma_int_num; // <20><>ǰDMA<4D>жϴ<D0B6><CFB4><EFBFBD>
|
||||||
uint8 scc8660_dma_init_flag; // <20>Ƿ<EFBFBD><C7B7><EFBFBD>Ҫ<EFBFBD><D2AA><EFBFBD>³<EFBFBD>ʼ<EFBFBD><CABC>
|
uint8 scc8660_dma_init_flag; // <20>Ƿ<EFBFBD><C7B7><EFBFBD>Ҫ<EFBFBD><D2AA><EFBFBD>³<EFBFBD>ʼ<EFBFBD><CABC>
|
||||||
|
|
||||||
|
static scc8660_type_enum scc8660_type;
|
||||||
|
|
||||||
// <20><>Ҫ<EFBFBD><D2AA><EFBFBD>õ<EFBFBD><C3B5><EFBFBD><EFBFBD><EFBFBD>ͷ<EFBFBD><CDB7><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>IJ<DEB8><C4B2><EFBFBD>
|
// <20><>Ҫ<EFBFBD><D2AA><EFBFBD>õ<EFBFBD><C3B5><EFBFBD><EFBFBD><EFBFBD>ͷ<EFBFBD><CDB7><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>IJ<DEB8><C4B2><EFBFBD>
|
||||||
static int16 scc8660_set_confing_buffer[SCC8660_CONFIG_FINISH][2]=
|
static int16 scc8660_set_confing_buffer[SCC8660_CONFIG_FINISH][2]=
|
||||||
@@ -77,7 +82,7 @@ static int16 scc8660_set_confing_buffer[SCC8660_CONFIG_FINISH][2]=
|
|||||||
{SCC8660_AUTO_EXP, SCC8660_AUTO_EXP_DEF}, // <20>Զ<EFBFBD><D4B6>ع<EFBFBD>
|
{SCC8660_AUTO_EXP, SCC8660_AUTO_EXP_DEF}, // <20>Զ<EFBFBD><D4B6>ع<EFBFBD>
|
||||||
{SCC8660_BRIGHT, SCC8660_BRIGHT_DEF}, // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
{SCC8660_BRIGHT, SCC8660_BRIGHT_DEF}, // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
{SCC8660_FPS, SCC8660_FPS_DEF}, // ͼ<><CDBC>֡<EFBFBD><D6A1>
|
{SCC8660_FPS, SCC8660_FPS_DEF}, // ͼ<><CDBC>֡<EFBFBD><D6A1>
|
||||||
{SCC8660_SET_COL, SCC8660_W}, // ͼ<><CDBC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
{SCC8660_SET_COL, SCC8660_W * 4}, // ͼ<><CDBC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
{SCC8660_SET_ROW, SCC8660_H}, // ͼ<><CDBC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
{SCC8660_SET_ROW, SCC8660_H}, // ͼ<><CDBC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
{SCC8660_PCLK_DIV, SCC8660_PCLK_DIV_DEF}, // PCLK<4C><4B>Ƶϵ<C6B5><CFB5>
|
{SCC8660_PCLK_DIV, SCC8660_PCLK_DIV_DEF}, // PCLK<4C><4B>Ƶϵ<C6B5><CFB5>
|
||||||
{SCC8660_PCLK_MODE, SCC8660_PCLK_MODE_DEF}, // PCLKģʽ
|
{SCC8660_PCLK_MODE, SCC8660_PCLK_MODE_DEF}, // PCLKģʽ
|
||||||
@@ -214,71 +219,6 @@ static void scc8660_uart_callback (void)
|
|||||||
fifo_write_element(&camera_receiver_fifo, data);
|
fifo_write_element(&camera_receiver_fifo, data);
|
||||||
}
|
}
|
||||||
|
|
||||||
//-------------------------------------------------------------------------------------------------------------------
|
|
||||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> SCC8660<36><30><EFBFBD><EFBFBD>ͷ<EFBFBD><CDB7><EFBFBD>ж<EFBFBD>
|
|
||||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> void
|
|
||||||
// <20><><EFBFBD>ز<EFBFBD><D8B2><EFBFBD> void
|
|
||||||
// ʹ<><CAB9>ʾ<EFBFBD><CABE> scc8660_vsync_handler();
|
|
||||||
//-------------------------------------------------------------------------------------------------------------------
|
|
||||||
static void scc8660_vsync_handler(void)
|
|
||||||
{
|
|
||||||
exti_flag_clear(SCC8660_VSYNC_PIN);
|
|
||||||
scc8660_dma_int_num = 0;
|
|
||||||
if(scc8660_dma_init_flag || scc8660_lost_flag)
|
|
||||||
{
|
|
||||||
scc8660_dma_init_flag = 0;
|
|
||||||
IfxDma_resetChannel(&MODULE_DMA, SCC8660_DMA_CH);
|
|
||||||
scc8660_link_list_num = dma_init(SCC8660_DMA_CH,
|
|
||||||
SCC8660_DATA_ADD,
|
|
||||||
(uint8 *)scc8660_image[0],
|
|
||||||
SCC8660_PCLK_PIN,
|
|
||||||
EXTI_TRIGGER_RISING,
|
|
||||||
SCC8660_IMAGE_SIZE); // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƶ<EFBFBD><C6B5>300M <20><><EFBFBD><EFBFBD><EFBFBD>ڶ<EFBFBD><DAB6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ΪFALLING
|
|
||||||
dma_enable(SCC8660_DMA_CH);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
if(1 == scc8660_link_list_num)
|
|
||||||
{
|
|
||||||
dma_set_destination(SCC8660_DMA_CH, (uint8 *)scc8660_image[0]); // û<>в<EFBFBD><D0B2><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ӵ<EFBFBD><D3B4><EFBFBD>ģʽ <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ŀ<EFBFBD>ĵ<EFBFBD>ַ
|
|
||||||
}
|
|
||||||
dma_enable(SCC8660_DMA_CH);
|
|
||||||
}
|
|
||||||
scc8660_lost_flag = 1;
|
|
||||||
}
|
|
||||||
|
|
||||||
//-------------------------------------------------------------------------------------------------------------------
|
|
||||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> SCC8660<36><30><EFBFBD><EFBFBD>ͷDMA<4D><41><EFBFBD><EFBFBD><EFBFBD>ж<EFBFBD>
|
|
||||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> void
|
|
||||||
// <20><><EFBFBD>ز<EFBFBD><D8B2><EFBFBD> void
|
|
||||||
// ʹ<><CAB9>ʾ<EFBFBD><CABE> scc8660_dma_handler();
|
|
||||||
//-------------------------------------------------------------------------------------------------------------------
|
|
||||||
static void scc8660_dma_handler(void)
|
|
||||||
{
|
|
||||||
clear_dma_flag(SCC8660_DMA_CH);
|
|
||||||
|
|
||||||
if(IfxDma_getChannelTransactionRequestLost(&MODULE_DMA, SCC8660_DMA_CH)) // ͼ<><CDBC><EFBFBD><EFBFBD>λ<EFBFBD>ж<EFBFBD>
|
|
||||||
{
|
|
||||||
scc8660_finish_flag = 0;
|
|
||||||
dma_disable(SCC8660_DMA_CH);
|
|
||||||
IfxDma_clearChannelTransactionRequestLost(&MODULE_DMA, SCC8660_DMA_CH);
|
|
||||||
scc8660_dma_init_flag = 1;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
scc8660_dma_int_num++;
|
|
||||||
if(scc8660_dma_int_num >= scc8660_link_list_num)
|
|
||||||
{
|
|
||||||
// <20>ɼ<EFBFBD><C9BC><EFBFBD><EFBFBD><EFBFBD>
|
|
||||||
// һ<><D2BB>ͼ<EFBFBD><CDBC><EFBFBD>Ӳɼ<D3B2><C9BC><EFBFBD>ʼ<EFBFBD><CABC><EFBFBD>ɼ<EFBFBD><C9BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ3.8MS<EFBFBD><EFBFBD><EFBFBD><EFBFBD>(50FPS<50><53>188*120<32>ֱ<EFBFBD><D6B1><EFBFBD>)
|
|
||||||
scc8660_dma_int_num = 0;
|
|
||||||
scc8660_lost_flag = 0;
|
|
||||||
scc8660_finish_flag = 1;
|
|
||||||
dma_disable(SCC8660_DMA_CH);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
//-------------------------------------------------------------------------------------------------------------------
|
//-------------------------------------------------------------------------------------------------------------------
|
||||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD>ͷ ID
|
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD>ͷ ID
|
||||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> void
|
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> void
|
||||||
@@ -390,38 +330,46 @@ uint16 scc8660_get_version (void)
|
|||||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͼ<EFBFBD><CDBC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͼ<EFBFBD><CDBC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> data <20><>Ҫ<EFBFBD><D2AA><EFBFBD>õ<EFBFBD><C3B5><EFBFBD><EFBFBD><EFBFBD>ֵ
|
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> data <20><>Ҫ<EFBFBD><D2AA><EFBFBD>õ<EFBFBD><C3B5><EFBFBD><EFBFBD><EFBFBD>ֵ
|
||||||
// <20><><EFBFBD>ز<EFBFBD><D8B2><EFBFBD> uint8 1-ʧ<><CAA7> 0-<2D>ɹ<EFBFBD>
|
// <20><><EFBFBD>ز<EFBFBD><D8B2><EFBFBD> uint8 1-ʧ<><CAA7> 0-<2D>ɹ<EFBFBD>
|
||||||
// ʹ<><CAB9>ʾ<EFBFBD><CABE> scc8660_set_bright(data);
|
// ʹ<><CAB9>ʾ<EFBFBD><CABE> scc8660_set_brightness(data);
|
||||||
// <20><>ע<EFBFBD><D7A2>Ϣ <20><><EFBFBD>øú<C3B8><C3BA><EFBFBD>ǰ<EFBFBD><C7B0><EFBFBD>ȳ<EFBFBD>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͷ<EFBFBD><CDB7><EFBFBD>ô<EFBFBD><C3B4><EFBFBD> ͨ<><CDA8><EFBFBD>ú<EFBFBD><C3BA><EFBFBD><EFBFBD><EFBFBD><EFBFBD>õIJ<C3B5><C4B2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ᱻ51<35><31>Ƭ<EFBFBD><C6AC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
// <20><>ע<EFBFBD><D7A2>Ϣ <20><><EFBFBD>øú<C3B8><C3BA><EFBFBD>ǰ<EFBFBD><C7B0><EFBFBD>ȳ<EFBFBD>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͷ<EFBFBD><CDB7><EFBFBD>ô<EFBFBD><C3B4><EFBFBD> ͨ<><CDA8><EFBFBD>ú<EFBFBD><C3BA><EFBFBD><EFBFBD><EFBFBD><EFBFBD>õIJ<C3B5><C4B2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ᱻ51<35><31>Ƭ<EFBFBD><C6AC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
//-------------------------------------------------------------------------------------------------------------------
|
//-------------------------------------------------------------------------------------------------------------------
|
||||||
uint8 scc8660_set_bright (uint16 data)
|
uint8 scc8660_set_brightness (uint16 data)
|
||||||
{
|
{
|
||||||
uint8 return_state = 0;
|
uint8 return_state = 0;
|
||||||
uint8 uart_buffer[4];
|
|
||||||
uint16 temp;
|
|
||||||
uint16 timeout_count = 0;
|
|
||||||
uint32 uart_buffer_index = 0;
|
|
||||||
|
|
||||||
uart_buffer[0] = 0xA5;
|
if(SCC8660_UART == scc8660_type)
|
||||||
uart_buffer[1] = SCC8660_SET_BRIGHT;
|
|
||||||
uart_buffer[2] = data >> 8;
|
|
||||||
uart_buffer[3] = (uint8)data;
|
|
||||||
|
|
||||||
uart_write_buffer(SCC8660_COF_UART, uart_buffer, 4);
|
|
||||||
|
|
||||||
do
|
|
||||||
{
|
{
|
||||||
if(3 <= fifo_used(&camera_receiver_fifo))
|
uint8 uart_buffer[4];
|
||||||
|
uint16 temp;
|
||||||
|
uint16 timeout_count = 0;
|
||||||
|
uint32 uart_buffer_index = 0;
|
||||||
|
|
||||||
|
uart_buffer[0] = 0xA5;
|
||||||
|
uart_buffer[1] = SCC8660_SET_BRIGHT;
|
||||||
|
uart_buffer[2] = data >> 8;
|
||||||
|
uart_buffer[3] = (uint8)data;
|
||||||
|
|
||||||
|
uart_write_buffer(SCC8660_COF_UART, uart_buffer, 4);
|
||||||
|
|
||||||
|
do
|
||||||
{
|
{
|
||||||
uart_buffer_index = 3;
|
if(3 <= fifo_used(&camera_receiver_fifo))
|
||||||
fifo_read_buffer(&camera_receiver_fifo, uart_buffer, &uart_buffer_index, FIFO_READ_AND_CLEAN);
|
{
|
||||||
temp = uart_buffer[1] << 8 | uart_buffer[2];
|
uart_buffer_index = 3;
|
||||||
break;
|
fifo_read_buffer(&camera_receiver_fifo, uart_buffer, &uart_buffer_index, FIFO_READ_AND_CLEAN);
|
||||||
|
temp = uart_buffer[1] << 8 | uart_buffer[2];
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
system_delay_ms(1);
|
||||||
|
}while(SCC8660_INIT_TIMEOUT > timeout_count ++);
|
||||||
|
if((temp != data) || (SCC8660_INIT_TIMEOUT <= timeout_count))
|
||||||
|
{
|
||||||
|
return_state = 1;
|
||||||
}
|
}
|
||||||
system_delay_ms(1);
|
}
|
||||||
}while(SCC8660_INIT_TIMEOUT > timeout_count ++);
|
else
|
||||||
if((temp != data) || (SCC8660_INIT_TIMEOUT <= timeout_count))
|
|
||||||
{
|
{
|
||||||
return_state = 1;
|
return_state = scc8660_set_brightness_sccb(data);
|
||||||
}
|
}
|
||||||
return return_state;
|
return return_state;
|
||||||
}
|
}
|
||||||
@@ -436,32 +384,40 @@ uint8 scc8660_set_bright (uint16 data)
|
|||||||
uint8 scc8660_set_white_balance (uint16 data)
|
uint8 scc8660_set_white_balance (uint16 data)
|
||||||
{
|
{
|
||||||
uint8 return_state = 0;
|
uint8 return_state = 0;
|
||||||
uint8 uart_buffer[4];
|
|
||||||
uint16 temp;
|
|
||||||
uint16 timeout_count = 0;
|
|
||||||
uint32 uart_buffer_index = 0;
|
|
||||||
|
|
||||||
uart_buffer[0] = 0xA5;
|
if(SCC8660_UART == scc8660_type)
|
||||||
uart_buffer[1] = SCC8660_SET_MANUAL_WB;
|
|
||||||
uart_buffer[2] = data >> 8;
|
|
||||||
uart_buffer[3] = (uint8)data;
|
|
||||||
|
|
||||||
uart_write_buffer(SCC8660_COF_UART, uart_buffer, 4);
|
|
||||||
|
|
||||||
do
|
|
||||||
{
|
{
|
||||||
if(3 <= fifo_used(&camera_receiver_fifo))
|
uint8 uart_buffer[4];
|
||||||
|
uint16 temp;
|
||||||
|
uint16 timeout_count = 0;
|
||||||
|
uint32 uart_buffer_index = 0;
|
||||||
|
|
||||||
|
uart_buffer[0] = 0xA5;
|
||||||
|
uart_buffer[1] = SCC8660_SET_MANUAL_WB;
|
||||||
|
uart_buffer[2] = data >> 8;
|
||||||
|
uart_buffer[3] = (uint8)data;
|
||||||
|
|
||||||
|
uart_write_buffer(SCC8660_COF_UART, uart_buffer, 4);
|
||||||
|
|
||||||
|
do
|
||||||
{
|
{
|
||||||
uart_buffer_index = 3;
|
if(3 <= fifo_used(&camera_receiver_fifo))
|
||||||
fifo_read_buffer(&camera_receiver_fifo, uart_buffer, &uart_buffer_index, FIFO_READ_AND_CLEAN);
|
{
|
||||||
temp = uart_buffer[1] << 8 | uart_buffer[2];
|
uart_buffer_index = 3;
|
||||||
break;
|
fifo_read_buffer(&camera_receiver_fifo, uart_buffer, &uart_buffer_index, FIFO_READ_AND_CLEAN);
|
||||||
|
temp = uart_buffer[1] << 8 | uart_buffer[2];
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
system_delay_ms(1);
|
||||||
|
}while(SCC8660_INIT_TIMEOUT > timeout_count ++);
|
||||||
|
if((temp != data) || (SCC8660_INIT_TIMEOUT <= timeout_count))
|
||||||
|
{
|
||||||
|
return_state = 1;
|
||||||
}
|
}
|
||||||
system_delay_ms(1);
|
}
|
||||||
}while(SCC8660_INIT_TIMEOUT > timeout_count ++);
|
else
|
||||||
if((temp != data) || (SCC8660_INIT_TIMEOUT <= timeout_count))
|
|
||||||
{
|
{
|
||||||
return_state = 1;
|
return_state = scc8660_set_manual_wb_sccb(data);
|
||||||
}
|
}
|
||||||
return return_state;
|
return return_state;
|
||||||
}
|
}
|
||||||
@@ -477,43 +433,117 @@ uint8 scc8660_set_white_balance (uint16 data)
|
|||||||
uint8 scc8660_set_reg (uint8 addr, uint16 data)
|
uint8 scc8660_set_reg (uint8 addr, uint16 data)
|
||||||
{
|
{
|
||||||
uint8 return_state = 0;
|
uint8 return_state = 0;
|
||||||
uint8 uart_buffer[4];
|
|
||||||
uint16 temp;
|
|
||||||
uint16 timeout_count = 0;
|
|
||||||
uint32 uart_buffer_index = 0;
|
|
||||||
|
|
||||||
uart_buffer[0] = 0xA5;
|
if(SCC8660_UART == scc8660_type)
|
||||||
uart_buffer[1] = SCC8660_SET_REG_ADDR;
|
|
||||||
uart_buffer[2] = 0x00;
|
|
||||||
uart_buffer[3] = (uint8)addr;
|
|
||||||
uart_write_buffer(SCC8660_COF_UART, uart_buffer, 4);
|
|
||||||
|
|
||||||
system_delay_ms(10);
|
|
||||||
uart_buffer[0] = 0xA5;
|
|
||||||
uart_buffer[1] = SCC8660_SET_REG_DATA;
|
|
||||||
temp = data;
|
|
||||||
uart_buffer[2] = temp >> 8;
|
|
||||||
uart_buffer[3] = (uint8)temp;
|
|
||||||
uart_write_buffer(SCC8660_COF_UART, uart_buffer, 4);
|
|
||||||
|
|
||||||
do
|
|
||||||
{
|
{
|
||||||
if(3 <= fifo_used(&camera_receiver_fifo))
|
uint8 uart_buffer[4];
|
||||||
|
uint16 temp;
|
||||||
|
uint16 timeout_count = 0;
|
||||||
|
uint32 uart_buffer_index = 0;
|
||||||
|
|
||||||
|
uart_buffer[0] = 0xA5;
|
||||||
|
uart_buffer[1] = SCC8660_SET_REG_ADDR;
|
||||||
|
uart_buffer[2] = 0x00;
|
||||||
|
uart_buffer[3] = (uint8)addr;
|
||||||
|
uart_write_buffer(SCC8660_COF_UART, uart_buffer, 4);
|
||||||
|
|
||||||
|
system_delay_ms(10);
|
||||||
|
uart_buffer[0] = 0xA5;
|
||||||
|
uart_buffer[1] = SCC8660_SET_REG_DATA;
|
||||||
|
temp = data;
|
||||||
|
uart_buffer[2] = temp >> 8;
|
||||||
|
uart_buffer[3] = (uint8)temp;
|
||||||
|
uart_write_buffer(SCC8660_COF_UART, uart_buffer, 4);
|
||||||
|
|
||||||
|
do
|
||||||
{
|
{
|
||||||
uart_buffer_index = 3;
|
if(3 <= fifo_used(&camera_receiver_fifo))
|
||||||
fifo_read_buffer(&camera_receiver_fifo, uart_buffer, &uart_buffer_index, FIFO_READ_AND_CLEAN);
|
{
|
||||||
temp = uart_buffer[1] << 8 | uart_buffer[2];
|
uart_buffer_index = 3;
|
||||||
break;
|
fifo_read_buffer(&camera_receiver_fifo, uart_buffer, &uart_buffer_index, FIFO_READ_AND_CLEAN);
|
||||||
|
temp = uart_buffer[1] << 8 | uart_buffer[2];
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
system_delay_ms(1);
|
||||||
|
}while(SCC8660_INIT_TIMEOUT > timeout_count ++);
|
||||||
|
if((temp != data) || (SCC8660_INIT_TIMEOUT <= timeout_count))
|
||||||
|
{
|
||||||
|
return_state = 1;
|
||||||
}
|
}
|
||||||
system_delay_ms(1);
|
|
||||||
}while(SCC8660_INIT_TIMEOUT > timeout_count ++);
|
}
|
||||||
if((temp != data) || (SCC8660_INIT_TIMEOUT <= timeout_count))
|
else
|
||||||
{
|
{
|
||||||
return_state = 1;
|
return_state = scc8660_set_reg_sccb(addr, data);
|
||||||
}
|
}
|
||||||
return return_state;
|
return return_state;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//-------------------------------------------------------------------------------------------------------------------
|
||||||
|
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> SCC8660<36><30><EFBFBD><EFBFBD>ͷ<EFBFBD><CDB7><EFBFBD>ж<EFBFBD>
|
||||||
|
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> void
|
||||||
|
// <20><><EFBFBD>ز<EFBFBD><D8B2><EFBFBD> void
|
||||||
|
// ʹ<><CAB9>ʾ<EFBFBD><CABE> scc8660_vsync_handler();
|
||||||
|
//-------------------------------------------------------------------------------------------------------------------
|
||||||
|
static void scc8660_vsync_handler(void)
|
||||||
|
{
|
||||||
|
exti_flag_clear(SCC8660_VSYNC_PIN);
|
||||||
|
scc8660_dma_int_num = 0;
|
||||||
|
if(scc8660_dma_init_flag || scc8660_lost_flag)
|
||||||
|
{
|
||||||
|
scc8660_dma_init_flag = 0;
|
||||||
|
IfxDma_resetChannel(&MODULE_DMA, SCC8660_DMA_CH);
|
||||||
|
scc8660_link_list_num = dma_init(SCC8660_DMA_CH,
|
||||||
|
SCC8660_DATA_ADD,
|
||||||
|
(uint8 *)scc8660_image[0],
|
||||||
|
SCC8660_PCLK_PIN,
|
||||||
|
EXTI_TRIGGER_RISING,
|
||||||
|
SCC8660_IMAGE_SIZE);
|
||||||
|
dma_enable(SCC8660_DMA_CH);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
if(1 == scc8660_link_list_num)
|
||||||
|
{
|
||||||
|
dma_set_destination(SCC8660_DMA_CH, (uint8 *)scc8660_image[0]); // û<>в<EFBFBD><D0B2><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ӵ<EFBFBD><D3B4><EFBFBD>ģʽ <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ŀ<EFBFBD>ĵ<EFBFBD>ַ
|
||||||
|
}
|
||||||
|
dma_enable(SCC8660_DMA_CH);
|
||||||
|
}
|
||||||
|
scc8660_lost_flag = 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
//-------------------------------------------------------------------------------------------------------------------
|
||||||
|
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> SCC8660<36><30><EFBFBD><EFBFBD>ͷDMA<4D><41><EFBFBD><EFBFBD><EFBFBD>ж<EFBFBD>
|
||||||
|
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> void
|
||||||
|
// <20><><EFBFBD>ز<EFBFBD><D8B2><EFBFBD> void
|
||||||
|
// ʹ<><CAB9>ʾ<EFBFBD><CABE> scc8660_dma_handler();
|
||||||
|
//-------------------------------------------------------------------------------------------------------------------
|
||||||
|
static void scc8660_dma_handler(void)
|
||||||
|
{
|
||||||
|
clear_dma_flag(SCC8660_DMA_CH);
|
||||||
|
|
||||||
|
if(IfxDma_getChannelTransactionRequestLost(&MODULE_DMA, SCC8660_DMA_CH)) // ͼ<><CDBC><EFBFBD><EFBFBD>λ<EFBFBD>ж<EFBFBD>
|
||||||
|
{
|
||||||
|
scc8660_finish_flag = 0;
|
||||||
|
dma_disable(SCC8660_DMA_CH);
|
||||||
|
IfxDma_clearChannelTransactionRequestLost(&MODULE_DMA, SCC8660_DMA_CH);
|
||||||
|
scc8660_dma_init_flag = 1;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
scc8660_dma_int_num++;
|
||||||
|
if(scc8660_dma_int_num >= scc8660_link_list_num)
|
||||||
|
{
|
||||||
|
// <20>ɼ<EFBFBD><C9BC><EFBFBD><EFBFBD><EFBFBD>
|
||||||
|
// һ<><D2BB>ͼ<EFBFBD><CDBC><EFBFBD>Ӳɼ<D3B2><C9BC><EFBFBD>ʼ<EFBFBD><CABC><EFBFBD>ɼ<EFBFBD><C9BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ3.8MS<EFBFBD><EFBFBD><EFBFBD><EFBFBD>(50FPS<50><53>188*120<32>ֱ<EFBFBD><D6B1><EFBFBD>)
|
||||||
|
scc8660_dma_int_num = 0;
|
||||||
|
scc8660_lost_flag = 0;
|
||||||
|
scc8660_finish_flag = 1;
|
||||||
|
dma_disable(SCC8660_DMA_CH);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
//-------------------------------------------------------------------------------------------------------------------
|
//-------------------------------------------------------------------------------------------------------------------
|
||||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> SCC8660 <20><><EFBFBD><EFBFBD>ͷ<EFBFBD><CDB7>ʼ<EFBFBD><CABC>
|
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> SCC8660 <20><><EFBFBD><EFBFBD>ͷ<EFBFBD><CDB7>ʼ<EFBFBD><CABC>
|
||||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> void
|
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> void
|
||||||
@@ -524,51 +554,54 @@ uint8 scc8660_set_reg (uint8 addr, uint16 data)
|
|||||||
uint8 scc8660_init (void)
|
uint8 scc8660_init (void)
|
||||||
{
|
{
|
||||||
uint8 return_state = 0;
|
uint8 return_state = 0;
|
||||||
uint16 scc8660_version = 0;
|
soft_iic_info_struct scc8660_iic_struct;
|
||||||
|
|
||||||
|
// <20><>ʼ<EFBFBD><CABC>֮ǰ<D6AE><C7B0><EFBFBD>߳<EFBFBD><DFB3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
gpio_init(P02_0, GPO, GPIO_HIGH, GPO_PUSH_PULL);
|
gpio_init(P02_0, GPO, GPIO_HIGH, GPO_PUSH_PULL);
|
||||||
gpio_init(P02_1, GPO, GPIO_HIGH, GPO_PUSH_PULL);
|
gpio_init(P02_1, GPO, GPIO_HIGH, GPO_PUSH_PULL);
|
||||||
|
|
||||||
// <20><>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͷ
|
|
||||||
uart_init(SCC8660_COF_UART, SCC8660_COF_BAUR, SCC8660_COF_UART_RX, SCC8660_COF_UART_TX);
|
|
||||||
uart_rx_interrupt(SCC8660_COF_UART, 1);
|
|
||||||
|
|
||||||
system_delay_ms(200);
|
|
||||||
|
|
||||||
set_camera_type(CAMERA_COLOR, scc8660_vsync_handler, scc8660_dma_handler, scc8660_uart_callback); // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͷ<EFBFBD><CDB7><EFBFBD><EFBFBD>
|
|
||||||
camera_fifo_init();
|
|
||||||
do
|
do
|
||||||
{
|
{
|
||||||
// <20>ȴ<EFBFBD><C8B4><EFBFBD><EFBFBD><EFBFBD>ͷ<EFBFBD>ϵ<EFBFBD><CFB5><EFBFBD>ʼ<EFBFBD><CABC><EFBFBD>ɹ<EFBFBD> <20><>ʽ<EFBFBD><CABD><EFBFBD><EFBFBD><EFBFBD>֣<EFBFBD><D6A3><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD>ͨ<EFBFBD><CDA8><EFBFBD><EFBFBD>ȡ<EFBFBD><C8A1><EFBFBD>õķ<C3B5>ʽ <20><>ѡһ
|
system_delay_ms(200);
|
||||||
// system_delay_ms(1000); // <20><>ʱ<EFBFBD><CAB1>ʽ
|
set_camera_type(CAMERA_COLOR, scc8660_vsync_handler, scc8660_dma_handler, NULL); // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͷ<EFBFBD><CDB7><EFBFBD><EFBFBD>
|
||||||
scc8660_version = scc8660_get_version(); // <20><>ȡ<EFBFBD><C8A1><EFBFBD>õķ<C3B5>ʽ
|
// <20><><EFBFBD>ȳ<EFBFBD><C8B3><EFBFBD>SCCBͨѶ
|
||||||
if(scc8660_set_config(scc8660_set_confing_buffer))
|
scc8660_type = SCC8660_SCCB;
|
||||||
|
soft_iic_init(&scc8660_iic_struct, 0, SCC8660_COF_IIC_DELAY, SCC8660_COF_IIC_SCL, SCC8660_COF_IIC_SDA);
|
||||||
|
if(scc8660_set_config_sccb(&scc8660_iic_struct, scc8660_set_confing_buffer))
|
||||||
{
|
{
|
||||||
set_camera_type(NO_CAMERE, NULL, NULL, NULL);
|
// SCCBͨѶʧ<D1B6>ܣ<EFBFBD><DCA3><EFBFBD><EFBFBD>Դ<EFBFBD><D4B4><EFBFBD>ͨѶ
|
||||||
return_state = 1;
|
scc8660_type = SCC8660_UART;
|
||||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>˶<EFBFBD><CBB6><EFBFBD><EFBFBD><EFBFBD>Ϣ <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD>λ<EFBFBD><CEBB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
camera_fifo_init();
|
||||||
// <20><>ô<EFBFBD><EFBFBD><EFBFBD>Ǵ<EFBFBD><EFBFBD><EFBFBD>ͨ<EFBFBD>ų<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD>˳<EFBFBD><EFBFBD><EFBFBD>
|
set_camera_type(CAMERA_COLOR, scc8660_vsync_handler, scc8660_dma_handler, &scc8660_uart_callback); // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͷ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
// <20><><EFBFBD><EFBFBD>һ<EFBFBD>½<EFBFBD><C2BD><EFBFBD><EFBFBD><EFBFBD>û<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>û<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ܾ<EFBFBD><EFBFBD>ǻ<EFBFBD><EFBFBD><EFBFBD>
|
uart_init (SCC8660_COF_UART, SCC8660_COF_BAUR, SCC8660_COF_UART_RX, SCC8660_COF_UART_TX); //<2F><>ʼ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͷ
|
||||||
zf_log(0, "SCC8660 set config error.");
|
uart_rx_interrupt(SCC8660_COF_UART, 1);
|
||||||
break;
|
fifo_clear(&camera_receiver_fifo);
|
||||||
}
|
|
||||||
|
|
||||||
if(0 == return_state)
|
if(scc8660_set_config(scc8660_set_confing_buffer))
|
||||||
{
|
|
||||||
// <20><>ȡ<EFBFBD><C8A1><EFBFBD>ñ<EFBFBD><C3B1>ڲ鿴<DAB2><E9BFB4><EFBFBD><EFBFBD><EFBFBD>Ƿ<EFBFBD><C7B7><EFBFBD>ȷ
|
|
||||||
if(scc8660_get_config(scc8660_get_confing_buffer))
|
|
||||||
{
|
{
|
||||||
set_camera_type(NO_CAMERE, NULL, NULL, NULL);
|
|
||||||
return_state = 1;
|
|
||||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>˶<EFBFBD><CBB6><EFBFBD><EFBFBD><EFBFBD>Ϣ <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD>λ<EFBFBD><CEBB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>˶<EFBFBD><CBB6><EFBFBD><EFBFBD><EFBFBD>Ϣ <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD>λ<EFBFBD><CEBB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
// <20><>ô<EFBFBD><C3B4><EFBFBD>Ǵ<EFBFBD><EFBFBD><EFBFBD>ͨ<EFBFBD>ų<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD>˳<EFBFBD><EFBFBD><EFBFBD>
|
// <20><>ô<EFBFBD><C3B4><EFBFBD><EFBFBD>ͨ<EFBFBD>ų<EFBFBD><C5B3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD>˳<EFBFBD><CBB3><EFBFBD>
|
||||||
// <20><><EFBFBD><EFBFBD>һ<EFBFBD>½<EFBFBD><C2BD><EFBFBD><EFBFBD><EFBFBD>û<EFBFBD><C3BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>û<EFBFBD><C3BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ܾ<EFBFBD><DCBE>ǻ<EFBFBD><C7BB><EFBFBD>
|
// <20><><EFBFBD><EFBFBD>һ<EFBFBD>½<EFBFBD><C2BD><EFBFBD><EFBFBD><EFBFBD>û<EFBFBD><C3BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>û<EFBFBD><C3BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ܾ<EFBFBD><DCBE>ǻ<EFBFBD><C7BB><EFBFBD>
|
||||||
zf_log(0, "SCC8660 set config error.");
|
zf_log(0, "SCC8660 set config error.");
|
||||||
|
set_camera_type(NO_CAMERE, NULL, NULL, NULL);
|
||||||
|
return_state = 1;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
scc8660_link_list_num = camera_init(SCC8660_DATA_ADD, (uint8 *)scc8660_image[0], SCC8660_IMAGE_SIZE);
|
// <20><>ȡ<EFBFBD><C8A1><EFBFBD>ñ<EFBFBD><C3B1>ڲ鿴<DAB2><E9BFB4><EFBFBD><EFBFBD><EFBFBD>Ƿ<EFBFBD><C7B7><EFBFBD>ȷ
|
||||||
|
if(scc8660_get_config(scc8660_get_confing_buffer))
|
||||||
|
{
|
||||||
|
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>˶<EFBFBD><CBB6><EFBFBD><EFBFBD><EFBFBD>Ϣ <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD>λ<EFBFBD><CEBB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
|
// <20><>ô<EFBFBD><C3B4><EFBFBD>Ǵ<EFBFBD><C7B4><EFBFBD>ͨ<EFBFBD>ų<EFBFBD><C5B3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD>˳<EFBFBD><CBB3><EFBFBD>
|
||||||
|
// <20><><EFBFBD><EFBFBD>һ<EFBFBD>½<EFBFBD><C2BD><EFBFBD><EFBFBD><EFBFBD>û<EFBFBD><C3BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>û<EFBFBD><C3BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ܾ<EFBFBD><DCBE>ǻ<EFBFBD><C7BB><EFBFBD>
|
||||||
|
zf_log(0, "SCC8660 get config error.");
|
||||||
|
set_camera_type(NO_CAMERE, NULL, NULL, NULL);
|
||||||
|
return_state = 1;
|
||||||
|
break;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
scc8660_link_list_num = camera_init(SCC8660_DATA_ADD, (uint8 *)scc8660_image[0], SCC8660_IMAGE_SIZE);
|
||||||
}while(0);
|
}while(0);
|
||||||
|
|
||||||
return return_state;
|
return return_state;
|
||||||
|
|||||||
@@ -31,7 +31,7 @@
|
|||||||
* <20>ļ<DEB8>¼
|
* <20>ļ<DEB8>¼
|
||||||
* <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><>ע
|
* <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><>ע
|
||||||
* 2022-09-15 pudding first version
|
* 2022-09-15 pudding first version
|
||||||
* 2023-04-28 pudding <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ע<EFBFBD><EFBFBD>˵<EFBFBD><EFBFBD>
|
* 2024-02-02 pudding <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>MCU<EFBFBD><EFBFBD>ͫ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
********************************************************************************************************************/
|
********************************************************************************************************************/
|
||||||
/*********************************************************************************************************************
|
/*********************************************************************************************************************
|
||||||
* <20><><EFBFBD>߶<EFBFBD><DFB6>壺
|
* <20><><EFBFBD>߶<EFBFBD><DFB6>壺
|
||||||
@@ -59,35 +59,36 @@
|
|||||||
#define SCC8660_COF_UART_TX (UART1_RX_P02_3) // <20><>ͫ UART-TX <20><><EFBFBD><EFBFBD> Ҫ<><D2AA><EFBFBD>ڵ<EFBFBD>Ƭ<EFBFBD><C6AC> RX <20><>
|
#define SCC8660_COF_UART_TX (UART1_RX_P02_3) // <20><>ͫ UART-TX <20><><EFBFBD><EFBFBD> Ҫ<><D2AA><EFBFBD>ڵ<EFBFBD>Ƭ<EFBFBD><C6AC> RX <20><>
|
||||||
#define SCC8660_COF_UART_RX (UART1_TX_P02_2) // <20><>ͫ UART-RX <20><><EFBFBD><EFBFBD> Ҫ<><D2AA><EFBFBD>ڵ<EFBFBD>Ƭ<EFBFBD><C6AC> TX <20><>
|
#define SCC8660_COF_UART_RX (UART1_TX_P02_2) // <20><>ͫ UART-RX <20><><EFBFBD><EFBFBD> Ҫ<><D2AA><EFBFBD>ڵ<EFBFBD>Ƭ<EFBFBD><C6AC> TX <20><>
|
||||||
|
|
||||||
|
#define SCC8660_COF_IIC_DELAY (800) // <20><>ͫ IIC <20><>ʱ
|
||||||
|
#define SCC8660_COF_IIC_SCL (P02_3) // <20><>ͫ IIC-SCL <20><><EFBFBD><EFBFBD>
|
||||||
|
#define SCC8660_COF_IIC_SDA (P02_2) // <20><>ͫ IIC-SDA <20><><EFBFBD><EFBFBD>
|
||||||
|
|
||||||
#define SCC8660_DMA_CH (IfxDma_ChannelId_5)
|
#define SCC8660_DMA_CH (IfxDma_ChannelId_5)
|
||||||
|
|
||||||
#define SCC8660_PCLK_PIN (ERU_CH2_REQ14_P02_1) // PCLK <20><><EFBFBD><EFBFBD><EFBFBD>ź<EFBFBD> TIM_ETR <20><><EFBFBD>Ž<EFBFBD>ֹ<EFBFBD><D6B9><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
#define SCC8660_PCLK_PIN (ERU_CH2_REQ14_P02_1) // PCLK <20><><EFBFBD><EFBFBD><EFBFBD>ź<EFBFBD> TIM_ETR <20><><EFBFBD>Ž<EFBFBD>ֹ<EFBFBD><D6B9><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
|
|
||||||
#define SCC8660_VSYNC_PIN (ERU_CH3_REQ6_P02_0 ) // <20><><EFBFBD>ж<EFBFBD><D0B6><EFBFBD><EFBFBD><EFBFBD>
|
#define SCC8660_VSYNC_PIN (ERU_CH3_REQ6_P02_0 ) // <20><><EFBFBD>ж<EFBFBD><D0B6><EFBFBD><EFBFBD><EFBFBD>
|
||||||
|
|
||||||
#define SCC8660_DATA_PIN (P00_0) // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ֻ<><D6BB><EFBFBD><EFBFBD> GPIOx0 <20><><EFBFBD><EFBFBD> GPIOx8 <20><>ʼ <20><><EFBFBD><EFBFBD><EFBFBD>˸<EFBFBD><CBB8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> F0-F7
|
#define SCC8660_DATA_PIN (P00_0) // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ֻ<><D6BB><EFBFBD><EFBFBD> GPIOx0 <20><><EFBFBD><EFBFBD> GPIOx8 <20><>ʼ <20><><EFBFBD><EFBFBD><EFBFBD>˸<EFBFBD><CBB8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> F0-F7
|
||||||
#define SCC8660_DATA_ADD (get_port_in_addr(SCC8660_DATA_PIN))
|
#define SCC8660_DATA_ADD (get_port_in_addr(SCC8660_DATA_PIN))
|
||||||
|
|
||||||
#define SCC8660_INIT_TIMEOUT (0x00F0) // Ĭ<>ϵ<EFBFBD><CFB5><EFBFBD><EFBFBD><EFBFBD>ͷ<EFBFBD><CDB7>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD>ʱʱ<CAB1><CAB1> <20><><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA>λ
|
#define SCC8660_INIT_TIMEOUT (0x00F0) // Ĭ<>ϵ<EFBFBD><CFB5><EFBFBD><EFBFBD><EFBFBD>ͷ<EFBFBD><CDB7>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD>ʱʱ<CAB1><CAB1> <20><><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA>λ
|
||||||
//================================================<3D><><EFBFBD><EFBFBD> SCC8660 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>================================================
|
//================================================<3D><><EFBFBD><EFBFBD> SCC8660 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>================================================
|
||||||
|
|
||||||
//================================================<3D><><EFBFBD><EFBFBD> SCC8660 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>================================================
|
//================================================<3D><><EFBFBD><EFBFBD> SCC8660 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ã<EFBFBD><EFBFBD><EFBFBD>֧<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͫ<EFBFBD><EFBFBD>֡<EFBFBD>ʰ汾<EFBFBD><EFBFBD>===========================
|
||||||
#define SCC8660_W (160) // ʵ<EFBFBD><EFBFBD>ͼ<EFBFBD><EFBFBD><EFBFBD>ֱ<EFBFBD><EFBFBD>ʿ<EFBFBD><EFBFBD><EFBFBD> <20><>ѡ<EFBFBD><D1A1><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA>160 180
|
#define SCC8660_W (160) // ͼ<><CDBC><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>ѡ<EFBFBD><D1A1><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA>160 80 40
|
||||||
#define SCC8660_H (120) // ʵ<EFBFBD><EFBFBD>ͼ<EFBFBD><EFBFBD><EFBFBD>ֱ<EFBFBD><EFBFBD>ʸ߶<EFBFBD> <20><>ѡ<EFBFBD><D1A1><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA>120 160
|
#define SCC8660_H (120) // ͼ<><CDBC><EFBFBD>߶<EFBFBD> <20><>ѡ<EFBFBD><D1A1><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA>120 160 240
|
||||||
#define SCC8660_IMAGE_SIZE (SCC8660_W * 2 * SCC8660_H) // <20><><EFBFBD><EFBFBD>ͼ<EFBFBD><CDBC><EFBFBD><EFBFBD>С SCC8660_W*2*SCC8660_H <20><><EFBFBD>ܳ<EFBFBD><DCB3><EFBFBD> 65535
|
#define SCC8660_IMAGE_SIZE (SCC8660_W * 2 * SCC8660_H) // <20><><EFBFBD><EFBFBD>ͼ<EFBFBD><CDBC><EFBFBD><EFBFBD>С SCC8660_W*2*SCC8660_H <20><><EFBFBD>ܳ<EFBFBD><DCB3><EFBFBD> 65535
|
||||||
|
|
||||||
#define SCC8660_AUTO_EXP_DEF (0 ) // <20>Զ<EFBFBD><D4B6>ع<EFBFBD> Ĭ<>ϲ<EFBFBD><CFB2><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Զ<EFBFBD><D4B6>ع<EFBFBD><D8B9><EFBFBD><EFBFBD><EFBFBD> <20><>Χ [0-1] 0Ϊ<30>ر<EFBFBD>
|
#define SCC8660_AUTO_EXP_DEF (0 ) // <20>Զ<EFBFBD><D4B6>ع<EFBFBD> Ĭ<>ϲ<EFBFBD><CFB2><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Զ<EFBFBD><D4B6>ع<EFBFBD><D8B9><EFBFBD><EFBFBD><EFBFBD> <20><>Χ [0-1] 0Ϊ<30>ر<EFBFBD>
|
||||||
#define SCC8660_BRIGHT_DEF (300) // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ֶ<EFBFBD><D6B6>ع<EFBFBD>Ĭ<EFBFBD>ϣ<EFBFBD>300 <20>ֶ<EFBFBD><D6B6>ع<EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Χ0-65535 <20>Զ<EFBFBD><D4B6>ع<EFBFBD><D8B9>Ƽ<EFBFBD>ֵ<EFBFBD><D6B5>100 <20>Զ<EFBFBD><D4B6>ع<EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>÷<EFBFBD>Χ0-255
|
#define SCC8660_BRIGHT_DEF (500) // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ֶ<EFBFBD><D6B6>ع<EFBFBD>Ĭ<EFBFBD>ϣ<EFBFBD>300 <20>ֶ<EFBFBD><D6B6>ع<EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Χ0-65535 <20>Զ<EFBFBD><D4B6>ع<EFBFBD><D8B9>Ƽ<EFBFBD>ֵ<EFBFBD><D6B5>100 <20>Զ<EFBFBD><D4B6>ع<EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>÷<EFBFBD>Χ0-255
|
||||||
#define SCC8660_FPS_DEF (50 ) // ͼ<><CDBC>֡<EFBFBD><D6A1> Ĭ<>ϣ<EFBFBD>50 <20><>ѡ<EFBFBD><D1A1><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA>60 50 30 25<32><35> ʵ<><CAB5>֡<EFBFBD>ʻ<EFBFBD><CABB><EFBFBD>Ҫ<EFBFBD><D2AA>SCC8660_PCLK_DIV<49><56><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
#define SCC8660_FPS_DEF (50 ) // ͼ<><CDBC>֡<EFBFBD><D6A1> Ĭ<>ϣ<EFBFBD>50 <20><>ѡ<EFBFBD><D1A1><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA>60 50 30 25<32><35> ʵ<><CAB5>֡<EFBFBD>ʻ<EFBFBD><CABB><EFBFBD>Ҫ<EFBFBD><D2AA>SCC8660_PCLK_DIV<49><56><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
#define SCC8660_PCLK_DIV_DEF (5 ) // PCLK<4C><4B>Ƶϵ<C6B5><CFB5> Ĭ<>ϣ<EFBFBD>5 <20><>ѡ<EFBFBD><D1A1><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA><0:1/1> <1:2/3> <2:1/2> <3:1/3> <4:1/4> <5:1/8>
|
#define SCC8660_PCLK_DIV_DEF (2 ) // PCLK<4C><4B>Ƶϵ<C6B5><CFB5> Ĭ<>ϣ<EFBFBD>5 <20><>ѡ<EFBFBD><D1A1><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA><0:1/1> <1:2/3> <2:1/2> <3:1/3> <4:1/4> <5:1/8>
|
||||||
// <20><>Ƶϵ<C6B5><CFB5>Խ<EFBFBD><D4BD><EFBFBD><EFBFBD>PCLKƵ<4B><C6B5>Խ<EFBFBD>ͣ<EFBFBD><CDA3><EFBFBD><EFBFBD><EFBFBD>PCLK<4C><4B><EFBFBD>Լ<EFBFBD><D4BC><EFBFBD>DVP<56>ӿڵĸ<DAB5><C4B8>ţ<EFBFBD><C5A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>PCLKƵ<4B><C6B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ӱ<EFBFBD><D3B0>֡<EFBFBD>ʡ<EFBFBD><CAA1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>뱣<EFBFBD><EBB1A3>Ĭ<EFBFBD>ϡ<EFBFBD>
|
// <20><>Ƶϵ<C6B5><CFB5>Խ<EFBFBD><D4BD><EFBFBD><EFBFBD>PCLKƵ<4B><C6B5>Խ<EFBFBD>ͣ<EFBFBD><CDA3><EFBFBD><EFBFBD><EFBFBD>PCLK<4C><4B><EFBFBD>Լ<EFBFBD><D4BC><EFBFBD>DVP<56>ӿڵĸ<DAB5><C4B8>ţ<EFBFBD><C5A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>PCLKƵ<4B><C6B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ӱ<EFBFBD><D3B0>֡<EFBFBD>ʡ<EFBFBD><CAA1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>뱣<EFBFBD><EBB1A3>Ĭ<EFBFBD>ϡ<EFBFBD>
|
||||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>FPSΪ50֡<30><D6A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>pclk<6C><6B>Ƶϵ<C6B5><CFB5>ѡ<EFBFBD><D1A1><EFBFBD><EFBFBD>Ϊ5<CEAA><35><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͷ<EFBFBD><CDB7><EFBFBD><EFBFBD><EFBFBD><EFBFBD>֡<EFBFBD><D6A1>Ϊ50*<2A><>1/8<><38>=6.25֡
|
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>FPSΪ50֡<30><D6A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>pclk<6C><6B>Ƶϵ<C6B5><CFB5>ѡ<EFBFBD><D1A1><EFBFBD><EFBFBD>Ϊ5<CEAA><35><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͷ<EFBFBD><CDB7><EFBFBD><EFBFBD><EFBFBD><EFBFBD>֡<EFBFBD><D6A1>Ϊ50*<2A><>1/8<><38>=6.25֡
|
||||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>£<EFBFBD>SCC8660_PCLK_DIV<49><56><EFBFBD><EFBFBD>Խ<EFBFBD><D4BD>ͼ<EFBFBD><CDBC><EFBFBD><EFBFBD>Խ<EFBFBD><D4BD>
|
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>£<EFBFBD>SCC8660_PCLK_DIV<49><56><EFBFBD><EFBFBD>Խ<EFBFBD><D4BD>ͼ<EFBFBD><CDBC><EFBFBD><EFBFBD>Խ<EFBFBD><D4BD>
|
||||||
#define SCC8660_PCLK_MODE_DEF (0 ) // PCLKģʽ Ĭ<>ϣ<EFBFBD>0 <20><>ѡ<EFBFBD><D1A1><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA>[0,1] 0<><30><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ź<EFBFBD> 1<><31><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ź<EFBFBD> <ͨ<><CDA8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ0<CEAA><30><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʹ<EFBFBD><CAB9>STM32<33><32>DCMI<4D>ӿڲɼ<DAB2><C9BC><EFBFBD>Ҫ<EFBFBD><D2AA><EFBFBD><EFBFBD>Ϊ1>
|
#define SCC8660_PCLK_MODE_DEF (0 ) // PCLKģʽ Ĭ<EFBFBD>ϣ<EFBFBD>0 <20><>ѡ<EFBFBD><D1A1><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA>[0,1] 0<><30><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ź<EFBFBD> 1<><31><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ź<EFBFBD> <ͨ<><CDA8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ0<CEAA><30><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʹ<EFBFBD><CAB9>STM32<33><32>DCMI<4D>ӿڲɼ<DAB2><C9BC><EFBFBD>Ҫ<EFBFBD><D2AA><EFBFBD><EFBFBD>Ϊ1>
|
||||||
#define SCC8660_COLOR_MODE_DEF (1 ) // ͼ<><CDBC>ɫ<EFBFBD><C9AB>ģʽ Ĭ<>ϣ<EFBFBD>0 <20><>ѡ<EFBFBD><D1A1><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA>[0,1] 0<><30><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɫģʽ 1<><31><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ģʽ<C4A3><CABD>ɫ<EFBFBD>ʱ<EFBFBD><CAB1>Ͷ<EFBFBD><CDB6><EFBFBD><EFBFBD>ߣ<EFBFBD>
|
#define SCC8660_COLOR_MODE_DEF (0 ) // ͼ<><CDBC>ɫ<EFBFBD><C9AB>ģʽ Ĭ<>ϣ<EFBFBD>0 <20><>ѡ<EFBFBD><D1A1><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA>[0,1] 0<><30><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɫģʽ 1<><31><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ģʽ<C4A3><CABD>ɫ<EFBFBD>ʱ<EFBFBD><CAB1>Ͷ<EFBFBD><CDB6><EFBFBD><EFBFBD>ߣ<EFBFBD>
|
||||||
#define SCC8660_DATA_FORMAT_DEF (1 ) // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݸ<EFBFBD>ʽ Ĭ<>ϣ<EFBFBD>0 <20><>ѡ<EFBFBD><D1A1><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA>[0-3] 0<><30>RGB565 1<><31>RGB565(<28>ֽڽ<D6BD><DABD><EFBFBD>) 2<><32>YUV422(YUYV) 3<><33>YUV422(UYVY)
|
#define SCC8660_DATA_FORMAT_DEF (0 ) // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݸ<EFBFBD>ʽ Ĭ<>ϣ<EFBFBD>0 <20><>ѡ<EFBFBD><D1A1><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA>[0-3] 0<><30>RGB565 1<><31>RGB565(<28>ֽڽ<D6BD><DABD><EFBFBD>) 2<><32>YUV422(YUYV) 3<><33>YUV422(UYVY)
|
||||||
#define SCC8660_MANUAL_WB_DEF (0 ) // <20>ֶ<EFBFBD><D6B6><EFBFBD>ƽ<EFBFBD><C6BD> Ĭ<EFBFBD>ϣ<EFBFBD>0 <20><>ѡ<EFBFBD><D1A1><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA>[0,0x65-0xa0] 0<><30><EFBFBD>ر<EFBFBD><D8B1>ֶ<EFBFBD><D6B6><EFBFBD>ƽ<EFBFBD>⣬<EFBFBD><E2A3AC><EFBFBD><EFBFBD><EFBFBD>Զ<EFBFBD><D4B6><EFBFBD>ƽ<EFBFBD><C6BD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֶ<EFBFBD><D6B6><EFBFBD>ƽ<EFBFBD><C6BD> <20>ֶ<EFBFBD><D6B6><EFBFBD>ƽ<EFBFBD><C6BD>ʱ <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Χ0x65-0xa0
|
#define SCC8660_MANUAL_WB_DEF (0 ) // <20>ֶ<EFBFBD><D6B6><EFBFBD>ƽ<EFBFBD><C6BD> Ĭ<>ϣ<EFBFBD>0 <20><>ѡ<EFBFBD><D1A1><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA>[0,0x65-0xa0] 0<><30><EFBFBD>ر<EFBFBD><D8B1>ֶ<EFBFBD><D6B6><EFBFBD>ƽ<EFBFBD>⣬<EFBFBD><E2A3AC><EFBFBD><EFBFBD><EFBFBD>Զ<EFBFBD><D4B6><EFBFBD>ƽ<EFBFBD><C6BD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֶ<EFBFBD><D6B6><EFBFBD>ƽ<EFBFBD><C6BD> <20>ֶ<EFBFBD><D6B6><EFBFBD>ƽ<EFBFBD><C6BD>ʱ <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Χ0x65-0xa0
|
||||||
//================================================<3D><><EFBFBD><EFBFBD> SCC8660 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>================================================
|
//================================================<3D><><EFBFBD><EFBFBD> SCC8660 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ã<EFBFBD><EFBFBD><EFBFBD>֧<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͫ<EFBFBD><EFBFBD>֡<EFBFBD>ʰ汾<EFBFBD><EFBFBD>===========================
|
||||||
|
|
||||||
//===============================================<3D><><EFBFBD><EFBFBD> SCC8660 <20><><EFBFBD><EFBFBD><EFBFBD>ṹ<EFBFBD><E1B9B9>================================================
|
//===============================================<3D><><EFBFBD><EFBFBD> SCC8660 <20><><EFBFBD><EFBFBD><EFBFBD>ṹ<EFBFBD><E1B9B9>================================================
|
||||||
typedef enum
|
typedef enum
|
||||||
@@ -116,6 +117,14 @@ typedef enum
|
|||||||
}scc8660_cmd_enum;
|
}scc8660_cmd_enum;
|
||||||
//===============================================<3D><><EFBFBD><EFBFBD> SCC8660 <20><><EFBFBD><EFBFBD><EFBFBD>ṹ<EFBFBD><E1B9B9>================================================
|
//===============================================<3D><><EFBFBD><EFBFBD> SCC8660 <20><><EFBFBD><EFBFBD><EFBFBD>ṹ<EFBFBD><E1B9B9>================================================
|
||||||
|
|
||||||
|
//===============================================<3D><><EFBFBD><EFBFBD>ͷ<EFBFBD><CDB7><EFBFBD><EFBFBD>ö<EFBFBD><C3B6><EFBFBD><EFBFBD>=======================================================
|
||||||
|
typedef enum
|
||||||
|
{
|
||||||
|
SCC8660_UART,
|
||||||
|
SCC8660_SCCB,
|
||||||
|
}scc8660_type_enum;
|
||||||
|
//===============================================<3D><><EFBFBD><EFBFBD>ͷ<EFBFBD><CDB7><EFBFBD><EFBFBD>ö<EFBFBD><C3B6><EFBFBD><EFBFBD>=======================================================
|
||||||
|
|
||||||
//===============================================<3D><><EFBFBD><EFBFBD> SCC8660 ȫ<>ֱ<EFBFBD><D6B1><EFBFBD>=================================================
|
//===============================================<3D><><EFBFBD><EFBFBD> SCC8660 ȫ<>ֱ<EFBFBD><D6B1><EFBFBD>=================================================
|
||||||
extern vuint8 scc8660_finish_flag; // һ<><D2BB>ͼ<EFBFBD><CDBC><EFBFBD>ɼ<EFBFBD><C9BC><EFBFBD><EFBFBD>ɱ<EFBFBD>־λ
|
extern vuint8 scc8660_finish_flag; // һ<><D2BB>ͼ<EFBFBD><CDBC><EFBFBD>ɼ<EFBFBD><C9BC><EFBFBD><EFBFBD>ɱ<EFBFBD>־λ
|
||||||
extern uint16 scc8660_image[SCC8660_H][SCC8660_W]; // ͼ<><EFBFBD><F1B1A3B4><EFBFBD><EFBFBD><EFBFBD>
|
extern uint16 scc8660_image[SCC8660_H][SCC8660_W]; // ͼ<><EFBFBD><F1B1A3B4><EFBFBD><EFBFBD><EFBFBD>
|
||||||
|
|||||||
@@ -56,6 +56,7 @@ typedef enum
|
|||||||
WIRELESS_UART, // <20><><EFBFBD>ߴ<EFBFBD><DFB4><EFBFBD>
|
WIRELESS_UART, // <20><><EFBFBD>ߴ<EFBFBD><DFB4><EFBFBD>
|
||||||
BLUETOOTH_CH9141, // <20><><EFBFBD><EFBFBD> CH9141
|
BLUETOOTH_CH9141, // <20><><EFBFBD><EFBFBD> CH9141
|
||||||
WIFI_UART, // <20><><EFBFBD><EFBFBD> WiFi
|
WIFI_UART, // <20><><EFBFBD><EFBFBD> WiFi
|
||||||
|
RECEIVER_UART, // ǹʽң<CABD><D2A3><EFBFBD><EFBFBD>
|
||||||
}wireless_type_enum;
|
}wireless_type_enum;
|
||||||
|
|
||||||
typedef enum
|
typedef enum
|
||||||
|
|||||||
@@ -0,0 +1,134 @@
|
|||||||
|
/*********************************************************************************************************************
|
||||||
|
* TC264 Opensourec Library <20><><EFBFBD><EFBFBD>TC264 <20><>Դ<EFBFBD>⣩<EFBFBD><E2A3A9>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD>ڹٷ<DAB9> SDK <20>ӿڵĵ<DAB5><C4B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Դ<EFBFBD><D4B4>
|
||||||
|
* Copyright (c) 2022 SEEKFREE <20><><EFBFBD>ɿƼ<C9BF>
|
||||||
|
*
|
||||||
|
* <20><><EFBFBD>ļ<EFBFBD><C4BC><EFBFBD> TC264 <20><>Դ<EFBFBD><D4B4><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD>
|
||||||
|
*
|
||||||
|
* TC264 <20><>Դ<EFBFBD><D4B4> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
|
* <20><><EFBFBD><EFBFBD><EFBFBD>Ը<EFBFBD><D4B8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ᷢ<EFBFBD><E1B7A2><EFBFBD><EFBFBD> GPL<50><4C>GNU General Public License<73><65><EFBFBD><EFBFBD> GNUͨ<55>ù<EFBFBD><C3B9><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>֤<EFBFBD><D6A4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
|
* <20><> GPL <20>ĵ<EFBFBD>3<EFBFBD>棨<EFBFBD><E6A3A8> GPL3.0<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ѡ<EFBFBD><EFBFBD><EFBFBD>ģ<EFBFBD><EFBFBD>κκ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>İ汾<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>·<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>/<2F><><EFBFBD><EFBFBD><DEB8><EFBFBD>
|
||||||
|
*
|
||||||
|
* <20><><EFBFBD><EFBFBD>Դ<EFBFBD><D4B4><EFBFBD>ķ<EFBFBD><C4B7><EFBFBD><EFBFBD><EFBFBD>ϣ<EFBFBD><CFA3><EFBFBD><EFBFBD><EFBFBD>ܷ<EFBFBD><DCB7><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ã<EFBFBD><C3A3><EFBFBD><EFBFBD><EFBFBD>δ<EFBFBD><CEB4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>κεı<CEB5>֤
|
||||||
|
* <20><><EFBFBD><EFBFBD>û<EFBFBD><C3BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ի<EFBFBD><D4BB>ʺ<EFBFBD><CABA>ض<EFBFBD><D8B6><EFBFBD>;<EFBFBD>ı<EFBFBD>֤
|
||||||
|
* <20><><EFBFBD><EFBFBD>ϸ<EFBFBD><CFB8><EFBFBD><EFBFBD><EFBFBD>μ<EFBFBD> GPL
|
||||||
|
*
|
||||||
|
* <20><>Ӧ<EFBFBD><D3A6><EFBFBD><EFBFBD><EFBFBD>յ<EFBFBD><D5B5><EFBFBD><EFBFBD><EFBFBD>Դ<EFBFBD><D4B4><EFBFBD><EFBFBD>ͬʱ<CDAC>յ<EFBFBD>һ<EFBFBD><D2BB> GPL <20>ĸ<EFBFBD><C4B8><EFBFBD>
|
||||||
|
* <20><><EFBFBD><EFBFBD>û<EFBFBD>У<EFBFBD><D0A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><https://www.gnu.org/licenses/>
|
||||||
|
*
|
||||||
|
* <20><><EFBFBD><EFBFBD>ע<EFBFBD><D7A2><EFBFBD><EFBFBD>
|
||||||
|
* <20><><EFBFBD><EFBFBD>Դ<EFBFBD><D4B4>ʹ<EFBFBD><CAB9> GPL3.0 <20><>Դ<EFBFBD><D4B4><EFBFBD><EFBFBD>֤Э<D6A4><D0AD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA><EFBFBD>İ汾
|
||||||
|
* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ӣ<EFBFBD>İ<EFBFBD><C4B0><EFBFBD> libraries/doc <20>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD>µ<EFBFBD> GPL3_permission_statement.txt <20>ļ<EFBFBD><C4BC><EFBFBD>
|
||||||
|
* <20><><EFBFBD><EFBFBD>֤<EFBFBD><D6A4><EFBFBD><EFBFBD><EFBFBD><EFBFBD> libraries <20>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD>µ<EFBFBD> LICENSE <20>ļ<EFBFBD>
|
||||||
|
* <20><>ӭ<EFBFBD><D3AD>λʹ<CEBB>ò<EFBFBD><C3B2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><DEB8><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD>뱣<EFBFBD><EBB1A3><EFBFBD><EFBFBD><EFBFBD>ɿƼ<C9BF><C6BC>İ<EFBFBD>Ȩ<EFBFBD><C8A8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
|
*
|
||||||
|
* <20>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD><EFBFBD> zf_device_uart_receiver
|
||||||
|
* <20><>˾<EFBFBD><CBBE><EFBFBD><EFBFBD> <20>ɶ<EFBFBD><C9B6><EFBFBD><EFBFBD>ɿƼ<C9BF><C6BC><EFBFBD><EFBFBD><EFBFBD>˾
|
||||||
|
* <20>汾<EFBFBD><E6B1BE>Ϣ <20>鿴 libraries/doc <20>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD><EFBFBD> version <20>ļ<EFBFBD> <20>汾˵<E6B1BE><CBB5>
|
||||||
|
* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ADS v1.9.20
|
||||||
|
* <20><><EFBFBD><EFBFBD>ƽ̨ TC264D
|
||||||
|
* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> https://seekfree.taobao.com/
|
||||||
|
*
|
||||||
|
* <20>ļ<DEB8>¼
|
||||||
|
* <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><>ע
|
||||||
|
* 2022-11-04 JKS first version
|
||||||
|
********************************************************************************************************************/
|
||||||
|
/*********************************************************************************************************************
|
||||||
|
* <20><><EFBFBD>߶<EFBFBD><DFB6>壺
|
||||||
|
* ------------------------------------
|
||||||
|
* ģ<><C4A3><EFBFBD>ܽ<EFBFBD> <20><>Ƭ<EFBFBD><C6AC><EFBFBD>ܽ<EFBFBD>
|
||||||
|
* TXD <20>鿴 zf_device_uart_receiver.h <20><> UART_RECEVIER_RX_PIN <20>궨<EFBFBD><EAB6A8>
|
||||||
|
* GND <20><>Դ<EFBFBD><D4B4>
|
||||||
|
* 5V 5V<35><56>Դ
|
||||||
|
* ------------------------------------
|
||||||
|
********************************************************************************************************************/
|
||||||
|
|
||||||
|
#include "zf_device_type.h"
|
||||||
|
#include "zf_driver_uart.h"
|
||||||
|
#include "zf_driver_timer.h"
|
||||||
|
#include "zf_device_uart_receiver.h"
|
||||||
|
|
||||||
|
uart_receiver_struct uart_receiver ; // <20><><EFBFBD>ڽ<EFBFBD><DABD>ջ<EFBFBD>ͨ<EFBFBD><CDA8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>״̬
|
||||||
|
|
||||||
|
uint8 uart_receiver_data[REV_DATA_LEN] = {0}; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ԭʼ<D4AD><CABC><EFBFBD><EFBFBD>
|
||||||
|
|
||||||
|
//-------------------------------------------------------------------------------------------------------------------
|
||||||
|
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>ȡ<EFBFBD><C8A1><EFBFBD>ε<EFBFBD><CEB5><EFBFBD>uart_receiver_interval_time<6D><65><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
|
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> void
|
||||||
|
// <20><><EFBFBD>ز<EFBFBD><D8B2><EFBFBD> uint32 <20><><EFBFBD>شӿ<D8B4>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD><EFBFBD>ڵ<EFBFBD>ʱ<EFBFBD><CAB1>(<28><>λ1us)
|
||||||
|
// ʹ<><CAB9>ʾ<EFBFBD><CABE> uint32 time = uart_receiver_interval_time();
|
||||||
|
// <20><>ע<EFBFBD><D7A2>Ϣ <20>ڲ<EFBFBD><DAB2><EFBFBD><EFBFBD><EFBFBD>
|
||||||
|
//-------------------------------------------------------------------------------------------------------------------
|
||||||
|
static uint32 uart_receiver_interval_time (void)
|
||||||
|
{
|
||||||
|
static uint32 time_last = 0;
|
||||||
|
uint32 time, interval_time;
|
||||||
|
uint32 stm_clk;
|
||||||
|
|
||||||
|
stm_clk = IfxStm_getFrequency(IfxStm_getAddress((IfxStm_Index)(IfxCpu_getCoreId())));
|
||||||
|
|
||||||
|
time = IfxStm_getLower(IfxStm_getAddress((IfxStm_Index)(IfxCpu_getCoreId())));
|
||||||
|
interval_time = time - time_last;
|
||||||
|
time_last = time;
|
||||||
|
interval_time = (uint32)((uint64)interval_time * 1000000 / stm_clk);
|
||||||
|
|
||||||
|
return interval_time;
|
||||||
|
}
|
||||||
|
|
||||||
|
//-------------------------------------------------------------------------------------------------------------------
|
||||||
|
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> SBUS<55><53><EFBFBD>ݽ<EFBFBD><DDBD><EFBFBD>
|
||||||
|
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> *remote_data <20><><EFBFBD><EFBFBD>ң<EFBFBD><D2A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݵĵ<DDB5>ַ
|
||||||
|
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> *bufer ԭʼ<D4AD><CABC><EFBFBD><EFBFBD>
|
||||||
|
// <20><><EFBFBD>ز<EFBFBD><D8B2><EFBFBD> void
|
||||||
|
// ʹ<><CAB9>ʾ<EFBFBD><CABE>
|
||||||
|
// <20><>ע<EFBFBD><D7A2>Ϣ <20><>sbus<75><73><EFBFBD>ݽ<EFBFBD><DDBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>н<EFBFBD><D0BD><EFBFBD>
|
||||||
|
//-------------------------------------------------------------------------------------------------------------------
|
||||||
|
static void uart_receiver_analysis (uart_receiver_struct *remote_data,uint8 * buffer)
|
||||||
|
{
|
||||||
|
uint8 num = 0;
|
||||||
|
remote_data->channel[num++] = (buffer[1] |buffer[ 2] << 8 ) & 0x07FF;
|
||||||
|
remote_data->channel[num++] = (buffer[2] >> 3 | buffer[3] << 5 ) & 0x07FF;
|
||||||
|
remote_data->channel[num++] = (buffer[3] >> 6 | buffer[4] << 2 | buffer[5] << 10 ) & 0x07FF;
|
||||||
|
remote_data->channel[num++] = (buffer[5] >> 1 | buffer[6] << 7 ) & 0x07FF;
|
||||||
|
remote_data->channel[num++] = (buffer[6] >> 4 | buffer[7] << 4 ) & 0x07FF;
|
||||||
|
remote_data->channel[num++] = (buffer[7] >> 7 | buffer[8] << 1 | buffer[9] << 9 ) & 0x07FF;
|
||||||
|
remote_data->state = (SBUS_NORMAL_STATE == buffer[23]) ? 1 : 0;
|
||||||
|
uart_receiver.finsh_flag = 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
//-------------------------------------------------------------------------------------------------------------------
|
||||||
|
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>ڽ<EFBFBD><DABD>ջ<EFBFBD>ģ<EFBFBD><C4A3> <20><><EFBFBD><EFBFBD><EFBFBD>жϻص<CFBB><D8B5><EFBFBD><EFBFBD><EFBFBD>
|
||||||
|
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> void
|
||||||
|
// <20><><EFBFBD>ز<EFBFBD><D8B2><EFBFBD> void
|
||||||
|
// ʹ<><CAB9>ʾ<EFBFBD><CABE> uart_receiver_callback();
|
||||||
|
// <20><>ע<EFBFBD><D7A2>Ϣ <20>ú<EFBFBD><C3BA><EFBFBD><EFBFBD><EFBFBD> ISR <20>ļ<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>жϳ<D0B6><CFB3><EFBFBD>ͨ<EFBFBD><CDA8>uart_receiver_uart_handler<65><72><EFBFBD><EFBFBD>ָ<EFBFBD>뱻<EFBFBD><EBB1BB><EFBFBD><EFBFBD>
|
||||||
|
//-------------------------------------------------------------------------------------------------------------------
|
||||||
|
void uart_receiver_callback(void)
|
||||||
|
{
|
||||||
|
static vuint8 length = 0;
|
||||||
|
|
||||||
|
if (uart_receiver_interval_time() > 3000)
|
||||||
|
{
|
||||||
|
length = 0;
|
||||||
|
}
|
||||||
|
uart_receiver_data[length++] = uart_read_byte(UART_RECEVIER_UART_INDEX);
|
||||||
|
if ( (REV_DATA_LEN == length) // <20><><EFBFBD><EFBFBD>֡<EFBFBD><D6A1><EFBFBD><EFBFBD>֡ͷ<D6A1><CDB7>֡β<D6A1><CEB2><EFBFBD><EFBFBD>Э<EFBFBD><D0AD>
|
||||||
|
&& (FRAME_STAR == uart_receiver_data[0])
|
||||||
|
&& (FRAME_END == uart_receiver_data[24]))
|
||||||
|
{
|
||||||
|
uart_receiver_analysis(&uart_receiver, uart_receiver_data);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
//-------------------------------------------------------------------------------------------------------------------
|
||||||
|
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>ڽ<EFBFBD><DABD>ջ<EFBFBD><D5BB><EFBFBD>ʼ<EFBFBD><CABC>
|
||||||
|
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> void
|
||||||
|
// <20><><EFBFBD>ز<EFBFBD><D8B2><EFBFBD> void
|
||||||
|
// ʹ<><CAB9>ʾ<EFBFBD><CABE> uart_receiver_init();
|
||||||
|
//-------------------------------------------------------------------------------------------------------------------
|
||||||
|
void uart_receiver_init(void)
|
||||||
|
{
|
||||||
|
uart_sbus_init(UART_RECEVIER_UART_INDEX, SBUS_UART_BAUDRATE, UART_RECEVIER_TX_PIN, UART_RECEVIER_RX_PIN);
|
||||||
|
|
||||||
|
// <20><><EFBFBD>ô<EFBFBD><C3B4><EFBFBD><EFBFBD>жϻص<CFBB><D8B5><EFBFBD><EFBFBD><EFBFBD>
|
||||||
|
set_wireless_type(RECEIVER_UART, uart_receiver_callback);
|
||||||
|
}
|
||||||
@@ -0,0 +1,72 @@
|
|||||||
|
/*********************************************************************************************************************
|
||||||
|
* TC264 Opensourec Library <20><><EFBFBD><EFBFBD>TC264 <20><>Դ<EFBFBD>⣩<EFBFBD><E2A3A9>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD>ڹٷ<DAB9> SDK <20>ӿڵĵ<DAB5><C4B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Դ<EFBFBD><D4B4>
|
||||||
|
* Copyright (c) 2022 SEEKFREE <20><><EFBFBD>ɿƼ<C9BF>
|
||||||
|
*
|
||||||
|
* <20><><EFBFBD>ļ<EFBFBD><C4BC><EFBFBD> TC264 <20><>Դ<EFBFBD><D4B4><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD>
|
||||||
|
*
|
||||||
|
* TC264 <20><>Դ<EFBFBD><D4B4> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
|
* <20><><EFBFBD><EFBFBD><EFBFBD>Ը<EFBFBD><D4B8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ᷢ<EFBFBD><E1B7A2><EFBFBD><EFBFBD> GPL<50><4C>GNU General Public License<73><65><EFBFBD><EFBFBD> GNUͨ<55>ù<EFBFBD><C3B9><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>֤<EFBFBD><D6A4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
|
* <20><> GPL <20>ĵ<EFBFBD>3<EFBFBD>棨<EFBFBD><E6A3A8> GPL3.0<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ѡ<EFBFBD><EFBFBD><EFBFBD>ģ<EFBFBD><EFBFBD>κκ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>İ汾<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>·<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>/<2F><><EFBFBD><EFBFBD><DEB8><EFBFBD>
|
||||||
|
*
|
||||||
|
* <20><><EFBFBD><EFBFBD>Դ<EFBFBD><D4B4><EFBFBD>ķ<EFBFBD><C4B7><EFBFBD><EFBFBD><EFBFBD>ϣ<EFBFBD><CFA3><EFBFBD><EFBFBD><EFBFBD>ܷ<EFBFBD><DCB7><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ã<EFBFBD><C3A3><EFBFBD><EFBFBD><EFBFBD>δ<EFBFBD><CEB4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>κεı<CEB5>֤
|
||||||
|
* <20><><EFBFBD><EFBFBD>û<EFBFBD><C3BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ի<EFBFBD><D4BB>ʺ<EFBFBD><CABA>ض<EFBFBD><D8B6><EFBFBD>;<EFBFBD>ı<EFBFBD>֤
|
||||||
|
* <20><><EFBFBD><EFBFBD>ϸ<EFBFBD><CFB8><EFBFBD><EFBFBD><EFBFBD>μ<EFBFBD> GPL
|
||||||
|
*
|
||||||
|
* <20><>Ӧ<EFBFBD><D3A6><EFBFBD><EFBFBD><EFBFBD>յ<EFBFBD><D5B5><EFBFBD><EFBFBD><EFBFBD>Դ<EFBFBD><D4B4><EFBFBD><EFBFBD>ͬʱ<CDAC>յ<EFBFBD>һ<EFBFBD><D2BB> GPL <20>ĸ<EFBFBD><C4B8><EFBFBD>
|
||||||
|
* <20><><EFBFBD><EFBFBD>û<EFBFBD>У<EFBFBD><D0A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><https://www.gnu.org/licenses/>
|
||||||
|
*
|
||||||
|
* <20><><EFBFBD><EFBFBD>ע<EFBFBD><D7A2><EFBFBD><EFBFBD>
|
||||||
|
* <20><><EFBFBD><EFBFBD>Դ<EFBFBD><D4B4>ʹ<EFBFBD><CAB9> GPL3.0 <20><>Դ<EFBFBD><D4B4><EFBFBD><EFBFBD>֤Э<D6A4><D0AD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA><EFBFBD>İ汾
|
||||||
|
* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ӣ<EFBFBD>İ<EFBFBD><C4B0><EFBFBD> libraries/doc <20>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD>µ<EFBFBD> GPL3_permission_statement.txt <20>ļ<EFBFBD><C4BC><EFBFBD>
|
||||||
|
* <20><><EFBFBD><EFBFBD>֤<EFBFBD><D6A4><EFBFBD><EFBFBD><EFBFBD><EFBFBD> libraries <20>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD>µ<EFBFBD> LICENSE <20>ļ<EFBFBD>
|
||||||
|
* <20><>ӭ<EFBFBD><D3AD>λʹ<CEBB>ò<EFBFBD><C3B2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><DEB8><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD>뱣<EFBFBD><EBB1A3><EFBFBD><EFBFBD><EFBFBD>ɿƼ<C9BF><C6BC>İ<EFBFBD>Ȩ<EFBFBD><C8A8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
|
*
|
||||||
|
* <20>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD><EFBFBD> zf_device_uart_receiver
|
||||||
|
* <20><>˾<EFBFBD><CBBE><EFBFBD><EFBFBD> <20>ɶ<EFBFBD><C9B6><EFBFBD><EFBFBD>ɿƼ<C9BF><C6BC><EFBFBD><EFBFBD><EFBFBD>˾
|
||||||
|
* <20>汾<EFBFBD><E6B1BE>Ϣ <20>鿴 libraries/doc <20>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD><EFBFBD> version <20>ļ<EFBFBD> <20>汾˵<E6B1BE><CBB5>
|
||||||
|
* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ADS v1.9.20
|
||||||
|
* <20><><EFBFBD><EFBFBD>ƽ̨ TC264D
|
||||||
|
* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> https://seekfree.taobao.com/
|
||||||
|
*
|
||||||
|
* <20>ļ<DEB8>¼
|
||||||
|
* <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><>ע
|
||||||
|
* 2022-11-04 JKS first version
|
||||||
|
********************************************************************************************************************/
|
||||||
|
/*********************************************************************************************************************
|
||||||
|
* <20><><EFBFBD>߶<EFBFBD><DFB6>壺
|
||||||
|
* ------------------------------------
|
||||||
|
* ģ<><C4A3><EFBFBD>ܽ<EFBFBD> <20><>Ƭ<EFBFBD><C6AC><EFBFBD>ܽ<EFBFBD>
|
||||||
|
* TXD <20>鿴 zf_device_uart_receiver.h <20><> UART_RECEVIER_RX_PIN <20>궨<EFBFBD><EAB6A8>
|
||||||
|
* GND <20><>Դ<EFBFBD><D4B4>
|
||||||
|
* 5V 5V<35><56>Դ
|
||||||
|
* ------------------------------------
|
||||||
|
********************************************************************************************************************/
|
||||||
|
#ifndef _zf_device_uart_receiver_h
|
||||||
|
#define _zf_device_uart_receiver_h
|
||||||
|
|
||||||
|
#include "zf_common_typedef.h"
|
||||||
|
|
||||||
|
#define UART_RECEVIER_UART_INDEX UART_2 // <20><><EFBFBD>崮<EFBFBD>ڽ<EFBFBD><DABD>ջ<EFBFBD>ʹ<EFBFBD>õĴ<C3B5><C4B4><EFBFBD>
|
||||||
|
#define UART_RECEVIER_TX_PIN UART2_TX_P10_5 // ң<><D2A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ջ<EFBFBD>û<EFBFBD><C3BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ţ<EFBFBD><C5A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڴ<EFBFBD><DAB4>ڳ<EFBFBD>ʼ<EFBFBD><CABC>ʱռλʹ<CEBB><CAB9>
|
||||||
|
#define UART_RECEVIER_RX_PIN UART2_RX_P10_6 // <20><><EFBFBD>ڽ<EFBFBD><DABD>ջ<EFBFBD><D5BB><EFBFBD>TX<54><58><EFBFBD><EFBFBD> <20><><EFBFBD>ӵ<EFBFBD>Ƭ<EFBFBD><C6AC><EFBFBD><EFBFBD>RX<52><58><EFBFBD><EFBFBD>
|
||||||
|
#define SBUS_UART_BAUDRATE (100000) // ָ<><D6B8> SBUS <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʹ<EFBFBD>õĵĴ<C4B5><C4B4>ڲ<EFBFBD><DAB2><EFBFBD><EFBFBD><EFBFBD> (<28>û<EFBFBD><C3BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>)
|
||||||
|
#define UART_RECEVIER_CHANNEL_NUM ( 6 ) // <20><><EFBFBD><EFBFBD>ң<EFBFBD><D2A3><EFBFBD><EFBFBD>ͨ<EFBFBD><CDA8><EFBFBD><EFBFBD><EFBFBD><EFBFBD> (<28>û<EFBFBD><C3BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>)
|
||||||
|
|
||||||
|
#define REV_DATA_LEN ( 25 ) // SBUS֡<53><D6A1>
|
||||||
|
#define FRAME_STAR ( 0X0F ) // ֡ͷ<D6A1><CDB7>Ϣ
|
||||||
|
#define FRAME_END ( 0X00 ) // ֡β<D6A1><CEB2>Ϣ
|
||||||
|
#define SBUS_NORMAL_STATE ( 0X03 ) // <20><><EFBFBD><EFBFBD>״̬
|
||||||
|
#define SBUS_ABNORMAL_STATE ( 0X0F ) // ʧ<><CAA7>״̬
|
||||||
|
|
||||||
|
typedef struct
|
||||||
|
{
|
||||||
|
uint16 channel[UART_RECEVIER_CHANNEL_NUM]; // CH1-CH6ͨ<36><CDA8><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
|
uint8 state; // ң<><D2A3><EFBFBD><EFBFBD>״̬(1<><31>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾʧ<CABE><CAA7>)
|
||||||
|
uint8 finsh_flag; // 1<><31><EFBFBD><EFBFBD>ʾ<EFBFBD>ɹ<EFBFBD><C9B9><EFBFBD><EFBFBD>յ<EFBFBD>һ֡ң<D6A1><D2A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
|
}uart_receiver_struct;
|
||||||
|
|
||||||
|
extern uart_receiver_struct uart_receiver; // <20><><EFBFBD>ڽ<EFBFBD><DABD>ջ<EFBFBD>ͨ<EFBFBD><CDA8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>״̬
|
||||||
|
|
||||||
|
void uart_receiver_init(void);
|
||||||
|
|
||||||
|
#endif
|
||||||
@@ -404,6 +404,55 @@ void uart_rx_interrupt (uart_index_enum uart_n, uint32 status)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//-------------------------------------------------------------------------------------------------------------------
|
||||||
|
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> sbus<75><73>ʼ<EFBFBD><CABC>
|
||||||
|
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> uartn <20><><EFBFBD><EFBFBD>ͨ<EFBFBD><CDA8>(UART_0,UART_1,UART_2,UART_3)
|
||||||
|
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> baud <20><><EFBFBD>ڲ<EFBFBD><DAB2><EFBFBD><EFBFBD><EFBFBD>
|
||||||
|
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> tx_pin <20><><EFBFBD>ڷ<EFBFBD><DAB7><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ź<EFBFBD>
|
||||||
|
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> rx_pin <20><><EFBFBD>ڽ<EFBFBD><DABD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ź<EFBFBD>
|
||||||
|
// <20><><EFBFBD>ز<EFBFBD><D8B2><EFBFBD> void
|
||||||
|
// ʹ<><CAB9>ʾ<EFBFBD><CABE> uart_sbus_init(UART_2, 100000, UART2_TX_P10_5, UART2_RX_P10_6);
|
||||||
|
// <20><>ע<EFBFBD><D7A2>Ϣ
|
||||||
|
//-------------------------------------------------------------------------------------------------------------------
|
||||||
|
void uart_sbus_init (uart_index_enum uartn, uint32 baud, uart_tx_pin_enum tx_pin, uart_rx_pin_enum rx_pin)
|
||||||
|
{
|
||||||
|
|
||||||
|
boolean interrupt_state = disableInterrupts();
|
||||||
|
|
||||||
|
volatile Ifx_ASCLIN *moudle = IfxAsclin_getAddress((IfxAsclin_Index)uartn);
|
||||||
|
|
||||||
|
IfxAsclin_Asc_initModuleConfig(&uart_config, moudle); // <20><>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ýṹ<C3BD><E1B9B9>
|
||||||
|
|
||||||
|
uart_set_buffer(uartn); // <20><><EFBFBD>û<EFBFBD><C3BB><EFBFBD><EFBFBD><EFBFBD>
|
||||||
|
|
||||||
|
uart_set_interrupt_priority(uartn); // <20><><EFBFBD><EFBFBD><EFBFBD>ж<EFBFBD><D0B6><EFBFBD><EFBFBD>ȼ<EFBFBD>
|
||||||
|
|
||||||
|
uart_config.clockSource = IfxAsclin_ClockSource_ascFastClock; // ʹ<>ø<EFBFBD><C3B8><EFBFBD>ʱ<EFBFBD><CAB1> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>6.25M
|
||||||
|
uart_config.baudrate.prescaler = 4;
|
||||||
|
uart_config.baudrate.baudrate = (float32)baud;
|
||||||
|
uart_config.baudrate.oversampling = IfxAsclin_OversamplingFactor_8;
|
||||||
|
|
||||||
|
uart_config.frame.stopBit = IfxAsclin_StopBit_2; //ֹͣλ
|
||||||
|
uart_config.frame.parityType = IfxAsclin_ParityType_even; //żУ<C5BC><D0A3>
|
||||||
|
uart_config.frame.dataLength = IfxAsclin_DataLength_8;
|
||||||
|
uart_config.frame.parityBit = TRUE; //<2F><><EFBFBD><EFBFBD>У<EFBFBD><D0A3>
|
||||||
|
|
||||||
|
IfxAsclin_Asc_Pins pins; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
|
pins.cts = NULL;
|
||||||
|
pins.rts = NULL;
|
||||||
|
uart_mux(uartn, tx_pin, rx_pin, (uint32 *)&pins.tx, (uint32 *)&pins.rx);
|
||||||
|
pins.rxMode = IfxPort_InputMode_pullUp;
|
||||||
|
pins.txMode = IfxPort_OutputMode_pushPull;
|
||||||
|
pins.pinDriver = IfxPort_PadDriver_cmosAutomotiveSpeed1;
|
||||||
|
uart_config.pins = &pins;
|
||||||
|
|
||||||
|
IfxAsclin_Asc_initModule(uart_get_handle(uartn), &uart_config);
|
||||||
|
uart_rx_interrupt(uartn, 1);
|
||||||
|
uart_tx_interrupt(uartn, 0);
|
||||||
|
restoreInterrupts(interrupt_state);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
//-------------------------------------------------------------------------------------------------------------------
|
//-------------------------------------------------------------------------------------------------------------------
|
||||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>ڳ<EFBFBD>ʼ<EFBFBD><CABC>
|
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>ڳ<EFBFBD>ʼ<EFBFBD><CABC>
|
||||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> uartn <20><><EFBFBD><EFBFBD>ģ<EFBFBD><C4A3><EFBFBD><EFBFBD>(UART_0,UART_1,UART_2,UART_3)
|
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> uartn <20><><EFBFBD><EFBFBD>ģ<EFBFBD><C4A3><EFBFBD><EFBFBD>(UART_0,UART_1,UART_2,UART_3)
|
||||||
|
|||||||
@@ -125,6 +125,7 @@ uint8 uart_query_byte (uart_index_enum uartn, uint8 *dat);
|
|||||||
void uart_tx_interrupt (uart_index_enum uartn, uint32 status);
|
void uart_tx_interrupt (uart_index_enum uartn, uint32 status);
|
||||||
void uart_rx_interrupt (uart_index_enum uartn, uint32 status);
|
void uart_rx_interrupt (uart_index_enum uartn, uint32 status);
|
||||||
|
|
||||||
|
void uart_sbus_init (uart_index_enum uartn, uint32 baud, uart_tx_pin_enum tx_pin, uart_rx_pin_enum rx_pin);
|
||||||
void uart_init (uart_index_enum uartn, uint32 baud, uart_tx_pin_enum tx_pin, uart_rx_pin_enum rx_pin);
|
void uart_init (uart_index_enum uartn, uint32 baud, uart_tx_pin_enum tx_pin, uart_rx_pin_enum rx_pin);
|
||||||
//====================================================<3D><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>====================================================
|
//====================================================<3D><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>====================================================
|
||||||
|
|
||||||
|
|||||||
@@ -1,3 +1,6 @@
|
|||||||
|
V3.2.8
|
||||||
|
<20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͫ<EFBFBD><CDAB>MCU<43>汾<EFBFBD><E6B1BE><EFBFBD><EFBFBD>
|
||||||
|
<20><><EFBFBD><EFBFBD>SBUSң<53><D2A3><EFBFBD><EFBFBD><EFBFBD>ײ<EFBFBD><D7B2><EFBFBD><EFBFBD><EFBFBD>
|
||||||
V3.2.7
|
V3.2.7
|
||||||
<20><><EFBFBD><EFBFBD>RTK "D" <20><>ͷЭ<CDB7><D0AD>
|
<20><><EFBFBD><EFBFBD>RTK "D" <20><>ͷЭ<CDB7><D0AD>
|
||||||
<20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ǻ<EFBFBD>ת<EFBFBD><D7AA><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>ֹ<EFBFBD><D6B9><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
<20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ǻ<EFBFBD>ת<EFBFBD><D7AA><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>ֹ<EFBFBD><D6B9><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
|
|||||||
@@ -100,6 +100,7 @@
|
|||||||
#include "zf_device_tft180.h"
|
#include "zf_device_tft180.h"
|
||||||
#include "zf_device_tsl1401.h"
|
#include "zf_device_tsl1401.h"
|
||||||
#include "zf_device_type.h"
|
#include "zf_device_type.h"
|
||||||
|
#include "zf_device_uart_receiver.h"
|
||||||
#include "zf_device_virtual_oscilloscope.h"
|
#include "zf_device_virtual_oscilloscope.h"
|
||||||
#include "zf_device_wifi_uart.h"
|
#include "zf_device_wifi_uart.h"
|
||||||
#include "zf_device_wifi_spi.h"
|
#include "zf_device_wifi_spi.h"
|
||||||
|
|||||||
Binary file not shown.
@@ -31,6 +31,7 @@
|
|||||||
* <20>ļ<DEB8>¼
|
* <20>ļ<DEB8>¼
|
||||||
* <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><>ע
|
* <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><>ע
|
||||||
* 2022-09-15 pudding first version
|
* 2022-09-15 pudding first version
|
||||||
|
* 2024-02-02 pudding <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͫ<EFBFBD><CDAB>̬<EFBFBD>⺯<EFBFBD><E2BAAF>
|
||||||
********************************************************************************************************************/
|
********************************************************************************************************************/
|
||||||
|
|
||||||
#ifndef _zf_device_config_h_
|
#ifndef _zf_device_config_h_
|
||||||
@@ -43,5 +44,10 @@ unsigned char mt9v03x_set_config_sccb (void *soft_iic_obj, short int b
|
|||||||
unsigned char mt9v03x_set_exposure_time_sccb (unsigned short int light);
|
unsigned char mt9v03x_set_exposure_time_sccb (unsigned short int light);
|
||||||
unsigned char mt9v03x_set_reg_sccb (unsigned char addr, unsigned short int data);
|
unsigned char mt9v03x_set_reg_sccb (unsigned char addr, unsigned short int data);
|
||||||
|
|
||||||
|
unsigned char scc8660_set_config_sccb (void *soft_iic_obj, short int buff[10][2]);
|
||||||
|
unsigned char scc8660_set_brightness_sccb (unsigned short int brightness);
|
||||||
|
unsigned char scc8660_set_manual_wb_sccb (unsigned short int manual_wb);
|
||||||
|
unsigned char scc8660_set_reg_sccb (unsigned char reg, unsigned short int data);
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|||||||
@@ -31,6 +31,7 @@
|
|||||||
* <20>ļ<DEB8>¼
|
* <20>ļ<DEB8>¼
|
||||||
* <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><>ע
|
* <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><>ע
|
||||||
* 2022-09-15 pudding first version
|
* 2022-09-15 pudding first version
|
||||||
|
* 2024-02-02 pudding <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>MCU<43><55>ͫ<EFBFBD><CDAB><EFBFBD><EFBFBD>
|
||||||
********************************************************************************************************************/
|
********************************************************************************************************************/
|
||||||
/*********************************************************************************************************************
|
/*********************************************************************************************************************
|
||||||
* <20><><EFBFBD>߶<EFBFBD><DFB6>壺
|
* <20><><EFBFBD>߶<EFBFBD><DFB6>壺
|
||||||
@@ -55,9 +56,12 @@
|
|||||||
#include "zf_driver_exti.h"
|
#include "zf_driver_exti.h"
|
||||||
#include "zf_driver_gpio.h"
|
#include "zf_driver_gpio.h"
|
||||||
#include "zf_driver_uart.h"
|
#include "zf_driver_uart.h"
|
||||||
|
#include "zf_driver_soft_iic.h"
|
||||||
#include "zf_device_camera.h"
|
#include "zf_device_camera.h"
|
||||||
#include "zf_device_scc8660.h"
|
|
||||||
#include "zf_device_type.h"
|
#include "zf_device_type.h"
|
||||||
|
#include "zf_device_config.h"
|
||||||
|
|
||||||
|
#include "zf_device_scc8660.h"
|
||||||
|
|
||||||
vuint8 scc8660_finish_flag = 0; // һ<><D2BB>ͼ<EFBFBD><CDBC><EFBFBD>ɼ<EFBFBD><C9BC><EFBFBD><EFBFBD>ɱ<EFBFBD>־λ
|
vuint8 scc8660_finish_flag = 0; // һ<><D2BB>ͼ<EFBFBD><CDBC><EFBFBD>ɼ<EFBFBD><C9BC><EFBFBD><EFBFBD>ɱ<EFBFBD>־λ
|
||||||
IFX_ALIGN(4) uint16 scc8660_image[SCC8660_H][SCC8660_W];
|
IFX_ALIGN(4) uint16 scc8660_image[SCC8660_H][SCC8660_W];
|
||||||
@@ -68,6 +72,7 @@ uint8 scc8660_lost_flag = 1;
|
|||||||
uint8 scc8660_dma_int_num; // <20><>ǰDMA<4D>жϴ<D0B6><CFB4><EFBFBD>
|
uint8 scc8660_dma_int_num; // <20><>ǰDMA<4D>жϴ<D0B6><CFB4><EFBFBD>
|
||||||
uint8 scc8660_dma_init_flag; // <20>Ƿ<EFBFBD><C7B7><EFBFBD>Ҫ<EFBFBD><D2AA><EFBFBD>³<EFBFBD>ʼ<EFBFBD><CABC>
|
uint8 scc8660_dma_init_flag; // <20>Ƿ<EFBFBD><C7B7><EFBFBD>Ҫ<EFBFBD><D2AA><EFBFBD>³<EFBFBD>ʼ<EFBFBD><CABC>
|
||||||
|
|
||||||
|
static scc8660_type_enum scc8660_type;
|
||||||
|
|
||||||
// <20><>Ҫ<EFBFBD><D2AA><EFBFBD>õ<EFBFBD><C3B5><EFBFBD><EFBFBD><EFBFBD>ͷ<EFBFBD><CDB7><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>IJ<DEB8><C4B2><EFBFBD>
|
// <20><>Ҫ<EFBFBD><D2AA><EFBFBD>õ<EFBFBD><C3B5><EFBFBD><EFBFBD><EFBFBD>ͷ<EFBFBD><CDB7><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>IJ<DEB8><C4B2><EFBFBD>
|
||||||
static int16 scc8660_set_confing_buffer[SCC8660_CONFIG_FINISH][2]=
|
static int16 scc8660_set_confing_buffer[SCC8660_CONFIG_FINISH][2]=
|
||||||
@@ -77,7 +82,7 @@ static int16 scc8660_set_confing_buffer[SCC8660_CONFIG_FINISH][2]=
|
|||||||
{SCC8660_AUTO_EXP, SCC8660_AUTO_EXP_DEF}, // <20>Զ<EFBFBD><D4B6>ع<EFBFBD>
|
{SCC8660_AUTO_EXP, SCC8660_AUTO_EXP_DEF}, // <20>Զ<EFBFBD><D4B6>ع<EFBFBD>
|
||||||
{SCC8660_BRIGHT, SCC8660_BRIGHT_DEF}, // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
{SCC8660_BRIGHT, SCC8660_BRIGHT_DEF}, // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
{SCC8660_FPS, SCC8660_FPS_DEF}, // ͼ<><CDBC>֡<EFBFBD><D6A1>
|
{SCC8660_FPS, SCC8660_FPS_DEF}, // ͼ<><CDBC>֡<EFBFBD><D6A1>
|
||||||
{SCC8660_SET_COL, SCC8660_W}, // ͼ<><CDBC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
{SCC8660_SET_COL, SCC8660_W * 4}, // ͼ<><CDBC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
{SCC8660_SET_ROW, SCC8660_H}, // ͼ<><CDBC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
{SCC8660_SET_ROW, SCC8660_H}, // ͼ<><CDBC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
{SCC8660_PCLK_DIV, SCC8660_PCLK_DIV_DEF}, // PCLK<4C><4B>Ƶϵ<C6B5><CFB5>
|
{SCC8660_PCLK_DIV, SCC8660_PCLK_DIV_DEF}, // PCLK<4C><4B>Ƶϵ<C6B5><CFB5>
|
||||||
{SCC8660_PCLK_MODE, SCC8660_PCLK_MODE_DEF}, // PCLKģʽ
|
{SCC8660_PCLK_MODE, SCC8660_PCLK_MODE_DEF}, // PCLKģʽ
|
||||||
@@ -214,71 +219,6 @@ static void scc8660_uart_callback (void)
|
|||||||
fifo_write_element(&camera_receiver_fifo, data);
|
fifo_write_element(&camera_receiver_fifo, data);
|
||||||
}
|
}
|
||||||
|
|
||||||
//-------------------------------------------------------------------------------------------------------------------
|
|
||||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> SCC8660<36><30><EFBFBD><EFBFBD>ͷ<EFBFBD><CDB7><EFBFBD>ж<EFBFBD>
|
|
||||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> void
|
|
||||||
// <20><><EFBFBD>ز<EFBFBD><D8B2><EFBFBD> void
|
|
||||||
// ʹ<><CAB9>ʾ<EFBFBD><CABE> scc8660_vsync_handler();
|
|
||||||
//-------------------------------------------------------------------------------------------------------------------
|
|
||||||
static void scc8660_vsync_handler(void)
|
|
||||||
{
|
|
||||||
exti_flag_clear(SCC8660_VSYNC_PIN);
|
|
||||||
scc8660_dma_int_num = 0;
|
|
||||||
if(scc8660_dma_init_flag || scc8660_lost_flag)
|
|
||||||
{
|
|
||||||
scc8660_dma_init_flag = 0;
|
|
||||||
IfxDma_resetChannel(&MODULE_DMA, SCC8660_DMA_CH);
|
|
||||||
scc8660_link_list_num = dma_init(SCC8660_DMA_CH,
|
|
||||||
SCC8660_DATA_ADD,
|
|
||||||
(uint8 *)scc8660_image[0],
|
|
||||||
SCC8660_PCLK_PIN,
|
|
||||||
EXTI_TRIGGER_RISING,
|
|
||||||
SCC8660_IMAGE_SIZE); // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƶ<EFBFBD><C6B5>300M <20><><EFBFBD><EFBFBD><EFBFBD>ڶ<EFBFBD><DAB6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ΪFALLING
|
|
||||||
dma_enable(SCC8660_DMA_CH);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
if(1 == scc8660_link_list_num)
|
|
||||||
{
|
|
||||||
dma_set_destination(SCC8660_DMA_CH, (uint8 *)scc8660_image[0]); // û<>в<EFBFBD><D0B2><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ӵ<EFBFBD><D3B4><EFBFBD>ģʽ <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ŀ<EFBFBD>ĵ<EFBFBD>ַ
|
|
||||||
}
|
|
||||||
dma_enable(SCC8660_DMA_CH);
|
|
||||||
}
|
|
||||||
scc8660_lost_flag = 1;
|
|
||||||
}
|
|
||||||
|
|
||||||
//-------------------------------------------------------------------------------------------------------------------
|
|
||||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> SCC8660<36><30><EFBFBD><EFBFBD>ͷDMA<4D><41><EFBFBD><EFBFBD><EFBFBD>ж<EFBFBD>
|
|
||||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> void
|
|
||||||
// <20><><EFBFBD>ز<EFBFBD><D8B2><EFBFBD> void
|
|
||||||
// ʹ<><CAB9>ʾ<EFBFBD><CABE> scc8660_dma_handler();
|
|
||||||
//-------------------------------------------------------------------------------------------------------------------
|
|
||||||
static void scc8660_dma_handler(void)
|
|
||||||
{
|
|
||||||
clear_dma_flag(SCC8660_DMA_CH);
|
|
||||||
|
|
||||||
if(IfxDma_getChannelTransactionRequestLost(&MODULE_DMA, SCC8660_DMA_CH)) // ͼ<><CDBC><EFBFBD><EFBFBD>λ<EFBFBD>ж<EFBFBD>
|
|
||||||
{
|
|
||||||
scc8660_finish_flag = 0;
|
|
||||||
dma_disable(SCC8660_DMA_CH);
|
|
||||||
IfxDma_clearChannelTransactionRequestLost(&MODULE_DMA, SCC8660_DMA_CH);
|
|
||||||
scc8660_dma_init_flag = 1;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
scc8660_dma_int_num++;
|
|
||||||
if(scc8660_dma_int_num >= scc8660_link_list_num)
|
|
||||||
{
|
|
||||||
// <20>ɼ<EFBFBD><C9BC><EFBFBD><EFBFBD><EFBFBD>
|
|
||||||
// һ<><D2BB>ͼ<EFBFBD><CDBC><EFBFBD>Ӳɼ<D3B2><C9BC><EFBFBD>ʼ<EFBFBD><CABC><EFBFBD>ɼ<EFBFBD><C9BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ3.8MS<EFBFBD><EFBFBD><EFBFBD><EFBFBD>(50FPS<50><53>188*120<32>ֱ<EFBFBD><D6B1><EFBFBD>)
|
|
||||||
scc8660_dma_int_num = 0;
|
|
||||||
scc8660_lost_flag = 0;
|
|
||||||
scc8660_finish_flag = 1;
|
|
||||||
dma_disable(SCC8660_DMA_CH);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
//-------------------------------------------------------------------------------------------------------------------
|
//-------------------------------------------------------------------------------------------------------------------
|
||||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD>ͷ ID
|
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD>ͷ ID
|
||||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> void
|
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> void
|
||||||
@@ -390,38 +330,46 @@ uint16 scc8660_get_version (void)
|
|||||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͼ<EFBFBD><CDBC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͼ<EFBFBD><CDBC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> data <20><>Ҫ<EFBFBD><D2AA><EFBFBD>õ<EFBFBD><C3B5><EFBFBD><EFBFBD><EFBFBD>ֵ
|
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> data <20><>Ҫ<EFBFBD><D2AA><EFBFBD>õ<EFBFBD><C3B5><EFBFBD><EFBFBD><EFBFBD>ֵ
|
||||||
// <20><><EFBFBD>ز<EFBFBD><D8B2><EFBFBD> uint8 1-ʧ<><CAA7> 0-<2D>ɹ<EFBFBD>
|
// <20><><EFBFBD>ز<EFBFBD><D8B2><EFBFBD> uint8 1-ʧ<><CAA7> 0-<2D>ɹ<EFBFBD>
|
||||||
// ʹ<><CAB9>ʾ<EFBFBD><CABE> scc8660_set_bright(data);
|
// ʹ<><CAB9>ʾ<EFBFBD><CABE> scc8660_set_brightness(data);
|
||||||
// <20><>ע<EFBFBD><D7A2>Ϣ <20><><EFBFBD>øú<C3B8><C3BA><EFBFBD>ǰ<EFBFBD><C7B0><EFBFBD>ȳ<EFBFBD>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͷ<EFBFBD><CDB7><EFBFBD>ô<EFBFBD><C3B4><EFBFBD> ͨ<><CDA8><EFBFBD>ú<EFBFBD><C3BA><EFBFBD><EFBFBD><EFBFBD><EFBFBD>õIJ<C3B5><C4B2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ᱻ51<35><31>Ƭ<EFBFBD><C6AC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
// <20><>ע<EFBFBD><D7A2>Ϣ <20><><EFBFBD>øú<C3B8><C3BA><EFBFBD>ǰ<EFBFBD><C7B0><EFBFBD>ȳ<EFBFBD>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͷ<EFBFBD><CDB7><EFBFBD>ô<EFBFBD><C3B4><EFBFBD> ͨ<><CDA8><EFBFBD>ú<EFBFBD><C3BA><EFBFBD><EFBFBD><EFBFBD><EFBFBD>õIJ<C3B5><C4B2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ᱻ51<35><31>Ƭ<EFBFBD><C6AC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
//-------------------------------------------------------------------------------------------------------------------
|
//-------------------------------------------------------------------------------------------------------------------
|
||||||
uint8 scc8660_set_bright (uint16 data)
|
uint8 scc8660_set_brightness (uint16 data)
|
||||||
{
|
{
|
||||||
uint8 return_state = 0;
|
uint8 return_state = 0;
|
||||||
uint8 uart_buffer[4];
|
|
||||||
uint16 temp;
|
|
||||||
uint16 timeout_count = 0;
|
|
||||||
uint32 uart_buffer_index = 0;
|
|
||||||
|
|
||||||
uart_buffer[0] = 0xA5;
|
if(SCC8660_UART == scc8660_type)
|
||||||
uart_buffer[1] = SCC8660_SET_BRIGHT;
|
|
||||||
uart_buffer[2] = data >> 8;
|
|
||||||
uart_buffer[3] = (uint8)data;
|
|
||||||
|
|
||||||
uart_write_buffer(SCC8660_COF_UART, uart_buffer, 4);
|
|
||||||
|
|
||||||
do
|
|
||||||
{
|
{
|
||||||
if(3 <= fifo_used(&camera_receiver_fifo))
|
uint8 uart_buffer[4];
|
||||||
|
uint16 temp;
|
||||||
|
uint16 timeout_count = 0;
|
||||||
|
uint32 uart_buffer_index = 0;
|
||||||
|
|
||||||
|
uart_buffer[0] = 0xA5;
|
||||||
|
uart_buffer[1] = SCC8660_SET_BRIGHT;
|
||||||
|
uart_buffer[2] = data >> 8;
|
||||||
|
uart_buffer[3] = (uint8)data;
|
||||||
|
|
||||||
|
uart_write_buffer(SCC8660_COF_UART, uart_buffer, 4);
|
||||||
|
|
||||||
|
do
|
||||||
{
|
{
|
||||||
uart_buffer_index = 3;
|
if(3 <= fifo_used(&camera_receiver_fifo))
|
||||||
fifo_read_buffer(&camera_receiver_fifo, uart_buffer, &uart_buffer_index, FIFO_READ_AND_CLEAN);
|
{
|
||||||
temp = uart_buffer[1] << 8 | uart_buffer[2];
|
uart_buffer_index = 3;
|
||||||
break;
|
fifo_read_buffer(&camera_receiver_fifo, uart_buffer, &uart_buffer_index, FIFO_READ_AND_CLEAN);
|
||||||
|
temp = uart_buffer[1] << 8 | uart_buffer[2];
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
system_delay_ms(1);
|
||||||
|
}while(SCC8660_INIT_TIMEOUT > timeout_count ++);
|
||||||
|
if((temp != data) || (SCC8660_INIT_TIMEOUT <= timeout_count))
|
||||||
|
{
|
||||||
|
return_state = 1;
|
||||||
}
|
}
|
||||||
system_delay_ms(1);
|
}
|
||||||
}while(SCC8660_INIT_TIMEOUT > timeout_count ++);
|
else
|
||||||
if((temp != data) || (SCC8660_INIT_TIMEOUT <= timeout_count))
|
|
||||||
{
|
{
|
||||||
return_state = 1;
|
return_state = scc8660_set_brightness_sccb(data);
|
||||||
}
|
}
|
||||||
return return_state;
|
return return_state;
|
||||||
}
|
}
|
||||||
@@ -436,32 +384,40 @@ uint8 scc8660_set_bright (uint16 data)
|
|||||||
uint8 scc8660_set_white_balance (uint16 data)
|
uint8 scc8660_set_white_balance (uint16 data)
|
||||||
{
|
{
|
||||||
uint8 return_state = 0;
|
uint8 return_state = 0;
|
||||||
uint8 uart_buffer[4];
|
|
||||||
uint16 temp;
|
|
||||||
uint16 timeout_count = 0;
|
|
||||||
uint32 uart_buffer_index = 0;
|
|
||||||
|
|
||||||
uart_buffer[0] = 0xA5;
|
if(SCC8660_UART == scc8660_type)
|
||||||
uart_buffer[1] = SCC8660_SET_MANUAL_WB;
|
|
||||||
uart_buffer[2] = data >> 8;
|
|
||||||
uart_buffer[3] = (uint8)data;
|
|
||||||
|
|
||||||
uart_write_buffer(SCC8660_COF_UART, uart_buffer, 4);
|
|
||||||
|
|
||||||
do
|
|
||||||
{
|
{
|
||||||
if(3 <= fifo_used(&camera_receiver_fifo))
|
uint8 uart_buffer[4];
|
||||||
|
uint16 temp;
|
||||||
|
uint16 timeout_count = 0;
|
||||||
|
uint32 uart_buffer_index = 0;
|
||||||
|
|
||||||
|
uart_buffer[0] = 0xA5;
|
||||||
|
uart_buffer[1] = SCC8660_SET_MANUAL_WB;
|
||||||
|
uart_buffer[2] = data >> 8;
|
||||||
|
uart_buffer[3] = (uint8)data;
|
||||||
|
|
||||||
|
uart_write_buffer(SCC8660_COF_UART, uart_buffer, 4);
|
||||||
|
|
||||||
|
do
|
||||||
{
|
{
|
||||||
uart_buffer_index = 3;
|
if(3 <= fifo_used(&camera_receiver_fifo))
|
||||||
fifo_read_buffer(&camera_receiver_fifo, uart_buffer, &uart_buffer_index, FIFO_READ_AND_CLEAN);
|
{
|
||||||
temp = uart_buffer[1] << 8 | uart_buffer[2];
|
uart_buffer_index = 3;
|
||||||
break;
|
fifo_read_buffer(&camera_receiver_fifo, uart_buffer, &uart_buffer_index, FIFO_READ_AND_CLEAN);
|
||||||
|
temp = uart_buffer[1] << 8 | uart_buffer[2];
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
system_delay_ms(1);
|
||||||
|
}while(SCC8660_INIT_TIMEOUT > timeout_count ++);
|
||||||
|
if((temp != data) || (SCC8660_INIT_TIMEOUT <= timeout_count))
|
||||||
|
{
|
||||||
|
return_state = 1;
|
||||||
}
|
}
|
||||||
system_delay_ms(1);
|
}
|
||||||
}while(SCC8660_INIT_TIMEOUT > timeout_count ++);
|
else
|
||||||
if((temp != data) || (SCC8660_INIT_TIMEOUT <= timeout_count))
|
|
||||||
{
|
{
|
||||||
return_state = 1;
|
return_state = scc8660_set_manual_wb_sccb(data);
|
||||||
}
|
}
|
||||||
return return_state;
|
return return_state;
|
||||||
}
|
}
|
||||||
@@ -477,43 +433,117 @@ uint8 scc8660_set_white_balance (uint16 data)
|
|||||||
uint8 scc8660_set_reg (uint8 addr, uint16 data)
|
uint8 scc8660_set_reg (uint8 addr, uint16 data)
|
||||||
{
|
{
|
||||||
uint8 return_state = 0;
|
uint8 return_state = 0;
|
||||||
uint8 uart_buffer[4];
|
|
||||||
uint16 temp;
|
|
||||||
uint16 timeout_count = 0;
|
|
||||||
uint32 uart_buffer_index = 0;
|
|
||||||
|
|
||||||
uart_buffer[0] = 0xA5;
|
if(SCC8660_UART == scc8660_type)
|
||||||
uart_buffer[1] = SCC8660_SET_REG_ADDR;
|
|
||||||
uart_buffer[2] = 0x00;
|
|
||||||
uart_buffer[3] = (uint8)addr;
|
|
||||||
uart_write_buffer(SCC8660_COF_UART, uart_buffer, 4);
|
|
||||||
|
|
||||||
system_delay_ms(10);
|
|
||||||
uart_buffer[0] = 0xA5;
|
|
||||||
uart_buffer[1] = SCC8660_SET_REG_DATA;
|
|
||||||
temp = data;
|
|
||||||
uart_buffer[2] = temp >> 8;
|
|
||||||
uart_buffer[3] = (uint8)temp;
|
|
||||||
uart_write_buffer(SCC8660_COF_UART, uart_buffer, 4);
|
|
||||||
|
|
||||||
do
|
|
||||||
{
|
{
|
||||||
if(3 <= fifo_used(&camera_receiver_fifo))
|
uint8 uart_buffer[4];
|
||||||
|
uint16 temp;
|
||||||
|
uint16 timeout_count = 0;
|
||||||
|
uint32 uart_buffer_index = 0;
|
||||||
|
|
||||||
|
uart_buffer[0] = 0xA5;
|
||||||
|
uart_buffer[1] = SCC8660_SET_REG_ADDR;
|
||||||
|
uart_buffer[2] = 0x00;
|
||||||
|
uart_buffer[3] = (uint8)addr;
|
||||||
|
uart_write_buffer(SCC8660_COF_UART, uart_buffer, 4);
|
||||||
|
|
||||||
|
system_delay_ms(10);
|
||||||
|
uart_buffer[0] = 0xA5;
|
||||||
|
uart_buffer[1] = SCC8660_SET_REG_DATA;
|
||||||
|
temp = data;
|
||||||
|
uart_buffer[2] = temp >> 8;
|
||||||
|
uart_buffer[3] = (uint8)temp;
|
||||||
|
uart_write_buffer(SCC8660_COF_UART, uart_buffer, 4);
|
||||||
|
|
||||||
|
do
|
||||||
{
|
{
|
||||||
uart_buffer_index = 3;
|
if(3 <= fifo_used(&camera_receiver_fifo))
|
||||||
fifo_read_buffer(&camera_receiver_fifo, uart_buffer, &uart_buffer_index, FIFO_READ_AND_CLEAN);
|
{
|
||||||
temp = uart_buffer[1] << 8 | uart_buffer[2];
|
uart_buffer_index = 3;
|
||||||
break;
|
fifo_read_buffer(&camera_receiver_fifo, uart_buffer, &uart_buffer_index, FIFO_READ_AND_CLEAN);
|
||||||
|
temp = uart_buffer[1] << 8 | uart_buffer[2];
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
system_delay_ms(1);
|
||||||
|
}while(SCC8660_INIT_TIMEOUT > timeout_count ++);
|
||||||
|
if((temp != data) || (SCC8660_INIT_TIMEOUT <= timeout_count))
|
||||||
|
{
|
||||||
|
return_state = 1;
|
||||||
}
|
}
|
||||||
system_delay_ms(1);
|
|
||||||
}while(SCC8660_INIT_TIMEOUT > timeout_count ++);
|
}
|
||||||
if((temp != data) || (SCC8660_INIT_TIMEOUT <= timeout_count))
|
else
|
||||||
{
|
{
|
||||||
return_state = 1;
|
return_state = scc8660_set_reg_sccb(addr, data);
|
||||||
}
|
}
|
||||||
return return_state;
|
return return_state;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//-------------------------------------------------------------------------------------------------------------------
|
||||||
|
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> SCC8660<36><30><EFBFBD><EFBFBD>ͷ<EFBFBD><CDB7><EFBFBD>ж<EFBFBD>
|
||||||
|
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> void
|
||||||
|
// <20><><EFBFBD>ز<EFBFBD><D8B2><EFBFBD> void
|
||||||
|
// ʹ<><CAB9>ʾ<EFBFBD><CABE> scc8660_vsync_handler();
|
||||||
|
//-------------------------------------------------------------------------------------------------------------------
|
||||||
|
static void scc8660_vsync_handler(void)
|
||||||
|
{
|
||||||
|
exti_flag_clear(SCC8660_VSYNC_PIN);
|
||||||
|
scc8660_dma_int_num = 0;
|
||||||
|
if(scc8660_dma_init_flag || scc8660_lost_flag)
|
||||||
|
{
|
||||||
|
scc8660_dma_init_flag = 0;
|
||||||
|
IfxDma_resetChannel(&MODULE_DMA, SCC8660_DMA_CH);
|
||||||
|
scc8660_link_list_num = dma_init(SCC8660_DMA_CH,
|
||||||
|
SCC8660_DATA_ADD,
|
||||||
|
(uint8 *)scc8660_image[0],
|
||||||
|
SCC8660_PCLK_PIN,
|
||||||
|
EXTI_TRIGGER_RISING,
|
||||||
|
SCC8660_IMAGE_SIZE);
|
||||||
|
dma_enable(SCC8660_DMA_CH);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
if(1 == scc8660_link_list_num)
|
||||||
|
{
|
||||||
|
dma_set_destination(SCC8660_DMA_CH, (uint8 *)scc8660_image[0]); // û<>в<EFBFBD><D0B2><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ӵ<EFBFBD><D3B4><EFBFBD>ģʽ <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ŀ<EFBFBD>ĵ<EFBFBD>ַ
|
||||||
|
}
|
||||||
|
dma_enable(SCC8660_DMA_CH);
|
||||||
|
}
|
||||||
|
scc8660_lost_flag = 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
//-------------------------------------------------------------------------------------------------------------------
|
||||||
|
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> SCC8660<36><30><EFBFBD><EFBFBD>ͷDMA<4D><41><EFBFBD><EFBFBD><EFBFBD>ж<EFBFBD>
|
||||||
|
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> void
|
||||||
|
// <20><><EFBFBD>ز<EFBFBD><D8B2><EFBFBD> void
|
||||||
|
// ʹ<><CAB9>ʾ<EFBFBD><CABE> scc8660_dma_handler();
|
||||||
|
//-------------------------------------------------------------------------------------------------------------------
|
||||||
|
static void scc8660_dma_handler(void)
|
||||||
|
{
|
||||||
|
clear_dma_flag(SCC8660_DMA_CH);
|
||||||
|
|
||||||
|
if(IfxDma_getChannelTransactionRequestLost(&MODULE_DMA, SCC8660_DMA_CH)) // ͼ<><CDBC><EFBFBD><EFBFBD>λ<EFBFBD>ж<EFBFBD>
|
||||||
|
{
|
||||||
|
scc8660_finish_flag = 0;
|
||||||
|
dma_disable(SCC8660_DMA_CH);
|
||||||
|
IfxDma_clearChannelTransactionRequestLost(&MODULE_DMA, SCC8660_DMA_CH);
|
||||||
|
scc8660_dma_init_flag = 1;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
scc8660_dma_int_num++;
|
||||||
|
if(scc8660_dma_int_num >= scc8660_link_list_num)
|
||||||
|
{
|
||||||
|
// <20>ɼ<EFBFBD><C9BC><EFBFBD><EFBFBD><EFBFBD>
|
||||||
|
// һ<><D2BB>ͼ<EFBFBD><CDBC><EFBFBD>Ӳɼ<D3B2><C9BC><EFBFBD>ʼ<EFBFBD><CABC><EFBFBD>ɼ<EFBFBD><C9BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ3.8MS<EFBFBD><EFBFBD><EFBFBD><EFBFBD>(50FPS<50><53>188*120<32>ֱ<EFBFBD><D6B1><EFBFBD>)
|
||||||
|
scc8660_dma_int_num = 0;
|
||||||
|
scc8660_lost_flag = 0;
|
||||||
|
scc8660_finish_flag = 1;
|
||||||
|
dma_disable(SCC8660_DMA_CH);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
//-------------------------------------------------------------------------------------------------------------------
|
//-------------------------------------------------------------------------------------------------------------------
|
||||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> SCC8660 <20><><EFBFBD><EFBFBD>ͷ<EFBFBD><CDB7>ʼ<EFBFBD><CABC>
|
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> SCC8660 <20><><EFBFBD><EFBFBD>ͷ<EFBFBD><CDB7>ʼ<EFBFBD><CABC>
|
||||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> void
|
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> void
|
||||||
@@ -524,51 +554,54 @@ uint8 scc8660_set_reg (uint8 addr, uint16 data)
|
|||||||
uint8 scc8660_init (void)
|
uint8 scc8660_init (void)
|
||||||
{
|
{
|
||||||
uint8 return_state = 0;
|
uint8 return_state = 0;
|
||||||
uint16 scc8660_version = 0;
|
soft_iic_info_struct scc8660_iic_struct;
|
||||||
|
|
||||||
|
// <20><>ʼ<EFBFBD><CABC>֮ǰ<D6AE><C7B0><EFBFBD>߳<EFBFBD><DFB3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
gpio_init(P02_0, GPO, GPIO_HIGH, GPO_PUSH_PULL);
|
gpio_init(P02_0, GPO, GPIO_HIGH, GPO_PUSH_PULL);
|
||||||
gpio_init(P02_1, GPO, GPIO_HIGH, GPO_PUSH_PULL);
|
gpio_init(P02_1, GPO, GPIO_HIGH, GPO_PUSH_PULL);
|
||||||
|
|
||||||
// <20><>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͷ
|
|
||||||
uart_init(SCC8660_COF_UART, SCC8660_COF_BAUR, SCC8660_COF_UART_RX, SCC8660_COF_UART_TX);
|
|
||||||
uart_rx_interrupt(SCC8660_COF_UART, 1);
|
|
||||||
|
|
||||||
system_delay_ms(200);
|
|
||||||
|
|
||||||
set_camera_type(CAMERA_COLOR, scc8660_vsync_handler, scc8660_dma_handler, scc8660_uart_callback); // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͷ<EFBFBD><CDB7><EFBFBD><EFBFBD>
|
|
||||||
camera_fifo_init();
|
|
||||||
do
|
do
|
||||||
{
|
{
|
||||||
// <20>ȴ<EFBFBD><C8B4><EFBFBD><EFBFBD><EFBFBD>ͷ<EFBFBD>ϵ<EFBFBD><CFB5><EFBFBD>ʼ<EFBFBD><CABC><EFBFBD>ɹ<EFBFBD> <20><>ʽ<EFBFBD><CABD><EFBFBD><EFBFBD><EFBFBD>֣<EFBFBD><D6A3><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD>ͨ<EFBFBD><CDA8><EFBFBD><EFBFBD>ȡ<EFBFBD><C8A1><EFBFBD>õķ<C3B5>ʽ <20><>ѡһ
|
system_delay_ms(200);
|
||||||
// system_delay_ms(1000); // <20><>ʱ<EFBFBD><CAB1>ʽ
|
set_camera_type(CAMERA_COLOR, scc8660_vsync_handler, scc8660_dma_handler, NULL); // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͷ<EFBFBD><CDB7><EFBFBD><EFBFBD>
|
||||||
scc8660_version = scc8660_get_version(); // <20><>ȡ<EFBFBD><C8A1><EFBFBD>õķ<C3B5>ʽ
|
// <20><><EFBFBD>ȳ<EFBFBD><C8B3><EFBFBD>SCCBͨѶ
|
||||||
if(scc8660_set_config(scc8660_set_confing_buffer))
|
scc8660_type = SCC8660_SCCB;
|
||||||
|
soft_iic_init(&scc8660_iic_struct, 0, SCC8660_COF_IIC_DELAY, SCC8660_COF_IIC_SCL, SCC8660_COF_IIC_SDA);
|
||||||
|
if(scc8660_set_config_sccb(&scc8660_iic_struct, scc8660_set_confing_buffer))
|
||||||
{
|
{
|
||||||
set_camera_type(NO_CAMERE, NULL, NULL, NULL);
|
// SCCBͨѶʧ<D1B6>ܣ<EFBFBD><DCA3><EFBFBD><EFBFBD>Դ<EFBFBD><D4B4><EFBFBD>ͨѶ
|
||||||
return_state = 1;
|
scc8660_type = SCC8660_UART;
|
||||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>˶<EFBFBD><CBB6><EFBFBD><EFBFBD><EFBFBD>Ϣ <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD>λ<EFBFBD><CEBB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
camera_fifo_init();
|
||||||
// <20><>ô<EFBFBD><EFBFBD><EFBFBD>Ǵ<EFBFBD><EFBFBD><EFBFBD>ͨ<EFBFBD>ų<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD>˳<EFBFBD><EFBFBD><EFBFBD>
|
set_camera_type(CAMERA_COLOR, scc8660_vsync_handler, scc8660_dma_handler, &scc8660_uart_callback); // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͷ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
// <20><><EFBFBD><EFBFBD>һ<EFBFBD>½<EFBFBD><C2BD><EFBFBD><EFBFBD><EFBFBD>û<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>û<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ܾ<EFBFBD><EFBFBD>ǻ<EFBFBD><EFBFBD><EFBFBD>
|
uart_init (SCC8660_COF_UART, SCC8660_COF_BAUR, SCC8660_COF_UART_RX, SCC8660_COF_UART_TX); //<2F><>ʼ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͷ
|
||||||
zf_log(0, "SCC8660 set config error.");
|
uart_rx_interrupt(SCC8660_COF_UART, 1);
|
||||||
break;
|
fifo_clear(&camera_receiver_fifo);
|
||||||
}
|
|
||||||
|
|
||||||
if(0 == return_state)
|
if(scc8660_set_config(scc8660_set_confing_buffer))
|
||||||
{
|
|
||||||
// <20><>ȡ<EFBFBD><C8A1><EFBFBD>ñ<EFBFBD><C3B1>ڲ鿴<DAB2><E9BFB4><EFBFBD><EFBFBD><EFBFBD>Ƿ<EFBFBD><C7B7><EFBFBD>ȷ
|
|
||||||
if(scc8660_get_config(scc8660_get_confing_buffer))
|
|
||||||
{
|
{
|
||||||
set_camera_type(NO_CAMERE, NULL, NULL, NULL);
|
|
||||||
return_state = 1;
|
|
||||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>˶<EFBFBD><CBB6><EFBFBD><EFBFBD><EFBFBD>Ϣ <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD>λ<EFBFBD><CEBB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>˶<EFBFBD><CBB6><EFBFBD><EFBFBD><EFBFBD>Ϣ <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD>λ<EFBFBD><CEBB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
// <20><>ô<EFBFBD><C3B4><EFBFBD>Ǵ<EFBFBD><EFBFBD><EFBFBD>ͨ<EFBFBD>ų<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD>˳<EFBFBD><EFBFBD><EFBFBD>
|
// <20><>ô<EFBFBD><C3B4><EFBFBD><EFBFBD>ͨ<EFBFBD>ų<EFBFBD><C5B3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD>˳<EFBFBD><CBB3><EFBFBD>
|
||||||
// <20><><EFBFBD><EFBFBD>һ<EFBFBD>½<EFBFBD><C2BD><EFBFBD><EFBFBD><EFBFBD>û<EFBFBD><C3BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>û<EFBFBD><C3BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ܾ<EFBFBD><DCBE>ǻ<EFBFBD><C7BB><EFBFBD>
|
// <20><><EFBFBD><EFBFBD>һ<EFBFBD>½<EFBFBD><C2BD><EFBFBD><EFBFBD><EFBFBD>û<EFBFBD><C3BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>û<EFBFBD><C3BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ܾ<EFBFBD><DCBE>ǻ<EFBFBD><C7BB><EFBFBD>
|
||||||
zf_log(0, "SCC8660 set config error.");
|
zf_log(0, "SCC8660 set config error.");
|
||||||
|
set_camera_type(NO_CAMERE, NULL, NULL, NULL);
|
||||||
|
return_state = 1;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
scc8660_link_list_num = camera_init(SCC8660_DATA_ADD, (uint8 *)scc8660_image[0], SCC8660_IMAGE_SIZE);
|
// <20><>ȡ<EFBFBD><C8A1><EFBFBD>ñ<EFBFBD><C3B1>ڲ鿴<DAB2><E9BFB4><EFBFBD><EFBFBD><EFBFBD>Ƿ<EFBFBD><C7B7><EFBFBD>ȷ
|
||||||
|
if(scc8660_get_config(scc8660_get_confing_buffer))
|
||||||
|
{
|
||||||
|
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>˶<EFBFBD><CBB6><EFBFBD><EFBFBD><EFBFBD>Ϣ <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD>λ<EFBFBD><CEBB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
|
// <20><>ô<EFBFBD><C3B4><EFBFBD>Ǵ<EFBFBD><C7B4><EFBFBD>ͨ<EFBFBD>ų<EFBFBD><C5B3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD>˳<EFBFBD><CBB3><EFBFBD>
|
||||||
|
// <20><><EFBFBD><EFBFBD>һ<EFBFBD>½<EFBFBD><C2BD><EFBFBD><EFBFBD><EFBFBD>û<EFBFBD><C3BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>û<EFBFBD><C3BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ܾ<EFBFBD><DCBE>ǻ<EFBFBD><C7BB><EFBFBD>
|
||||||
|
zf_log(0, "SCC8660 get config error.");
|
||||||
|
set_camera_type(NO_CAMERE, NULL, NULL, NULL);
|
||||||
|
return_state = 1;
|
||||||
|
break;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
scc8660_link_list_num = camera_init(SCC8660_DATA_ADD, (uint8 *)scc8660_image[0], SCC8660_IMAGE_SIZE);
|
||||||
}while(0);
|
}while(0);
|
||||||
|
|
||||||
return return_state;
|
return return_state;
|
||||||
|
|||||||
@@ -31,7 +31,7 @@
|
|||||||
* <20>ļ<DEB8>¼
|
* <20>ļ<DEB8>¼
|
||||||
* <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><>ע
|
* <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><>ע
|
||||||
* 2022-09-15 pudding first version
|
* 2022-09-15 pudding first version
|
||||||
* 2023-04-28 pudding <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ע<EFBFBD><EFBFBD>˵<EFBFBD><EFBFBD>
|
* 2024-02-02 pudding <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>MCU<EFBFBD><EFBFBD>ͫ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
********************************************************************************************************************/
|
********************************************************************************************************************/
|
||||||
/*********************************************************************************************************************
|
/*********************************************************************************************************************
|
||||||
* <20><><EFBFBD>߶<EFBFBD><DFB6>壺
|
* <20><><EFBFBD>߶<EFBFBD><DFB6>壺
|
||||||
@@ -59,35 +59,36 @@
|
|||||||
#define SCC8660_COF_UART_TX (UART1_RX_P02_3) // <20><>ͫ UART-TX <20><><EFBFBD><EFBFBD> Ҫ<><D2AA><EFBFBD>ڵ<EFBFBD>Ƭ<EFBFBD><C6AC> RX <20><>
|
#define SCC8660_COF_UART_TX (UART1_RX_P02_3) // <20><>ͫ UART-TX <20><><EFBFBD><EFBFBD> Ҫ<><D2AA><EFBFBD>ڵ<EFBFBD>Ƭ<EFBFBD><C6AC> RX <20><>
|
||||||
#define SCC8660_COF_UART_RX (UART1_TX_P02_2) // <20><>ͫ UART-RX <20><><EFBFBD><EFBFBD> Ҫ<><D2AA><EFBFBD>ڵ<EFBFBD>Ƭ<EFBFBD><C6AC> TX <20><>
|
#define SCC8660_COF_UART_RX (UART1_TX_P02_2) // <20><>ͫ UART-RX <20><><EFBFBD><EFBFBD> Ҫ<><D2AA><EFBFBD>ڵ<EFBFBD>Ƭ<EFBFBD><C6AC> TX <20><>
|
||||||
|
|
||||||
|
#define SCC8660_COF_IIC_DELAY (800) // <20><>ͫ IIC <20><>ʱ
|
||||||
|
#define SCC8660_COF_IIC_SCL (P02_3) // <20><>ͫ IIC-SCL <20><><EFBFBD><EFBFBD>
|
||||||
|
#define SCC8660_COF_IIC_SDA (P02_2) // <20><>ͫ IIC-SDA <20><><EFBFBD><EFBFBD>
|
||||||
|
|
||||||
#define SCC8660_DMA_CH (IfxDma_ChannelId_5)
|
#define SCC8660_DMA_CH (IfxDma_ChannelId_5)
|
||||||
|
|
||||||
#define SCC8660_PCLK_PIN (ERU_CH2_REQ14_P02_1) // PCLK <20><><EFBFBD><EFBFBD><EFBFBD>ź<EFBFBD> TIM_ETR <20><><EFBFBD>Ž<EFBFBD>ֹ<EFBFBD><D6B9><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
#define SCC8660_PCLK_PIN (ERU_CH2_REQ14_P02_1) // PCLK <20><><EFBFBD><EFBFBD><EFBFBD>ź<EFBFBD> TIM_ETR <20><><EFBFBD>Ž<EFBFBD>ֹ<EFBFBD><D6B9><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
|
|
||||||
#define SCC8660_VSYNC_PIN (ERU_CH3_REQ6_P02_0 ) // <20><><EFBFBD>ж<EFBFBD><D0B6><EFBFBD><EFBFBD><EFBFBD>
|
#define SCC8660_VSYNC_PIN (ERU_CH3_REQ6_P02_0 ) // <20><><EFBFBD>ж<EFBFBD><D0B6><EFBFBD><EFBFBD><EFBFBD>
|
||||||
|
|
||||||
#define SCC8660_DATA_PIN (P00_0) // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ֻ<><D6BB><EFBFBD><EFBFBD> GPIOx0 <20><><EFBFBD><EFBFBD> GPIOx8 <20><>ʼ <20><><EFBFBD><EFBFBD><EFBFBD>˸<EFBFBD><CBB8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> F0-F7
|
#define SCC8660_DATA_PIN (P00_0) // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ֻ<><D6BB><EFBFBD><EFBFBD> GPIOx0 <20><><EFBFBD><EFBFBD> GPIOx8 <20><>ʼ <20><><EFBFBD><EFBFBD><EFBFBD>˸<EFBFBD><CBB8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> F0-F7
|
||||||
#define SCC8660_DATA_ADD (get_port_in_addr(SCC8660_DATA_PIN))
|
#define SCC8660_DATA_ADD (get_port_in_addr(SCC8660_DATA_PIN))
|
||||||
|
|
||||||
#define SCC8660_INIT_TIMEOUT (0x00F0) // Ĭ<>ϵ<EFBFBD><CFB5><EFBFBD><EFBFBD><EFBFBD>ͷ<EFBFBD><CDB7>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD>ʱʱ<CAB1><CAB1> <20><><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA>λ
|
#define SCC8660_INIT_TIMEOUT (0x00F0) // Ĭ<>ϵ<EFBFBD><CFB5><EFBFBD><EFBFBD><EFBFBD>ͷ<EFBFBD><CDB7>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD>ʱʱ<CAB1><CAB1> <20><><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA>λ
|
||||||
//================================================<3D><><EFBFBD><EFBFBD> SCC8660 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>================================================
|
//================================================<3D><><EFBFBD><EFBFBD> SCC8660 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>================================================
|
||||||
|
|
||||||
//================================================<3D><><EFBFBD><EFBFBD> SCC8660 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>================================================
|
//================================================<3D><><EFBFBD><EFBFBD> SCC8660 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ã<EFBFBD><EFBFBD><EFBFBD>֧<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͫ<EFBFBD><EFBFBD>֡<EFBFBD>ʰ汾<EFBFBD><EFBFBD>===========================
|
||||||
#define SCC8660_W (160) // ʵ<EFBFBD><EFBFBD>ͼ<EFBFBD><EFBFBD><EFBFBD>ֱ<EFBFBD><EFBFBD>ʿ<EFBFBD><EFBFBD><EFBFBD> <20><>ѡ<EFBFBD><D1A1><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA>160 180
|
#define SCC8660_W (160) // ͼ<><CDBC><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>ѡ<EFBFBD><D1A1><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA>160 80 40
|
||||||
#define SCC8660_H (120) // ʵ<EFBFBD><EFBFBD>ͼ<EFBFBD><EFBFBD><EFBFBD>ֱ<EFBFBD><EFBFBD>ʸ߶<EFBFBD> <20><>ѡ<EFBFBD><D1A1><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA>120 160
|
#define SCC8660_H (120) // ͼ<><CDBC><EFBFBD>߶<EFBFBD> <20><>ѡ<EFBFBD><D1A1><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA>120 160 240
|
||||||
#define SCC8660_IMAGE_SIZE (SCC8660_W * 2 * SCC8660_H) // <20><><EFBFBD><EFBFBD>ͼ<EFBFBD><CDBC><EFBFBD><EFBFBD>С SCC8660_W*2*SCC8660_H <20><><EFBFBD>ܳ<EFBFBD><DCB3><EFBFBD> 65535
|
#define SCC8660_IMAGE_SIZE (SCC8660_W * 2 * SCC8660_H) // <20><><EFBFBD><EFBFBD>ͼ<EFBFBD><CDBC><EFBFBD><EFBFBD>С SCC8660_W*2*SCC8660_H <20><><EFBFBD>ܳ<EFBFBD><DCB3><EFBFBD> 65535
|
||||||
|
|
||||||
#define SCC8660_AUTO_EXP_DEF (0 ) // <20>Զ<EFBFBD><D4B6>ع<EFBFBD> Ĭ<>ϲ<EFBFBD><CFB2><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Զ<EFBFBD><D4B6>ع<EFBFBD><D8B9><EFBFBD><EFBFBD><EFBFBD> <20><>Χ [0-1] 0Ϊ<30>ر<EFBFBD>
|
#define SCC8660_AUTO_EXP_DEF (0 ) // <20>Զ<EFBFBD><D4B6>ع<EFBFBD> Ĭ<>ϲ<EFBFBD><CFB2><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Զ<EFBFBD><D4B6>ع<EFBFBD><D8B9><EFBFBD><EFBFBD><EFBFBD> <20><>Χ [0-1] 0Ϊ<30>ر<EFBFBD>
|
||||||
#define SCC8660_BRIGHT_DEF (300) // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ֶ<EFBFBD><D6B6>ع<EFBFBD>Ĭ<EFBFBD>ϣ<EFBFBD>300 <20>ֶ<EFBFBD><D6B6>ع<EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Χ0-65535 <20>Զ<EFBFBD><D4B6>ع<EFBFBD><D8B9>Ƽ<EFBFBD>ֵ<EFBFBD><D6B5>100 <20>Զ<EFBFBD><D4B6>ع<EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>÷<EFBFBD>Χ0-255
|
#define SCC8660_BRIGHT_DEF (500) // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ֶ<EFBFBD><D6B6>ع<EFBFBD>Ĭ<EFBFBD>ϣ<EFBFBD>300 <20>ֶ<EFBFBD><D6B6>ع<EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Χ0-65535 <20>Զ<EFBFBD><D4B6>ع<EFBFBD><D8B9>Ƽ<EFBFBD>ֵ<EFBFBD><D6B5>100 <20>Զ<EFBFBD><D4B6>ع<EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>÷<EFBFBD>Χ0-255
|
||||||
#define SCC8660_FPS_DEF (50 ) // ͼ<><CDBC>֡<EFBFBD><D6A1> Ĭ<>ϣ<EFBFBD>50 <20><>ѡ<EFBFBD><D1A1><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA>60 50 30 25<32><35> ʵ<><CAB5>֡<EFBFBD>ʻ<EFBFBD><CABB><EFBFBD>Ҫ<EFBFBD><D2AA>SCC8660_PCLK_DIV<49><56><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
#define SCC8660_FPS_DEF (50 ) // ͼ<><CDBC>֡<EFBFBD><D6A1> Ĭ<>ϣ<EFBFBD>50 <20><>ѡ<EFBFBD><D1A1><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA>60 50 30 25<32><35> ʵ<><CAB5>֡<EFBFBD>ʻ<EFBFBD><CABB><EFBFBD>Ҫ<EFBFBD><D2AA>SCC8660_PCLK_DIV<49><56><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
#define SCC8660_PCLK_DIV_DEF (5 ) // PCLK<4C><4B>Ƶϵ<C6B5><CFB5> Ĭ<>ϣ<EFBFBD>5 <20><>ѡ<EFBFBD><D1A1><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA><0:1/1> <1:2/3> <2:1/2> <3:1/3> <4:1/4> <5:1/8>
|
#define SCC8660_PCLK_DIV_DEF (2 ) // PCLK<4C><4B>Ƶϵ<C6B5><CFB5> Ĭ<>ϣ<EFBFBD>5 <20><>ѡ<EFBFBD><D1A1><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA><0:1/1> <1:2/3> <2:1/2> <3:1/3> <4:1/4> <5:1/8>
|
||||||
// <20><>Ƶϵ<C6B5><CFB5>Խ<EFBFBD><D4BD><EFBFBD><EFBFBD>PCLKƵ<4B><C6B5>Խ<EFBFBD>ͣ<EFBFBD><CDA3><EFBFBD><EFBFBD><EFBFBD>PCLK<4C><4B><EFBFBD>Լ<EFBFBD><D4BC><EFBFBD>DVP<56>ӿڵĸ<DAB5><C4B8>ţ<EFBFBD><C5A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>PCLKƵ<4B><C6B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ӱ<EFBFBD><D3B0>֡<EFBFBD>ʡ<EFBFBD><CAA1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>뱣<EFBFBD><EBB1A3>Ĭ<EFBFBD>ϡ<EFBFBD>
|
// <20><>Ƶϵ<C6B5><CFB5>Խ<EFBFBD><D4BD><EFBFBD><EFBFBD>PCLKƵ<4B><C6B5>Խ<EFBFBD>ͣ<EFBFBD><CDA3><EFBFBD><EFBFBD><EFBFBD>PCLK<4C><4B><EFBFBD>Լ<EFBFBD><D4BC><EFBFBD>DVP<56>ӿڵĸ<DAB5><C4B8>ţ<EFBFBD><C5A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>PCLKƵ<4B><C6B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ӱ<EFBFBD><D3B0>֡<EFBFBD>ʡ<EFBFBD><CAA1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>뱣<EFBFBD><EBB1A3>Ĭ<EFBFBD>ϡ<EFBFBD>
|
||||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>FPSΪ50֡<30><D6A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>pclk<6C><6B>Ƶϵ<C6B5><CFB5>ѡ<EFBFBD><D1A1><EFBFBD><EFBFBD>Ϊ5<CEAA><35><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͷ<EFBFBD><CDB7><EFBFBD><EFBFBD><EFBFBD><EFBFBD>֡<EFBFBD><D6A1>Ϊ50*<2A><>1/8<><38>=6.25֡
|
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>FPSΪ50֡<30><D6A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>pclk<6C><6B>Ƶϵ<C6B5><CFB5>ѡ<EFBFBD><D1A1><EFBFBD><EFBFBD>Ϊ5<CEAA><35><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͷ<EFBFBD><CDB7><EFBFBD><EFBFBD><EFBFBD><EFBFBD>֡<EFBFBD><D6A1>Ϊ50*<2A><>1/8<><38>=6.25֡
|
||||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>£<EFBFBD>SCC8660_PCLK_DIV<49><56><EFBFBD><EFBFBD>Խ<EFBFBD><D4BD>ͼ<EFBFBD><CDBC><EFBFBD><EFBFBD>Խ<EFBFBD><D4BD>
|
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>£<EFBFBD>SCC8660_PCLK_DIV<49><56><EFBFBD><EFBFBD>Խ<EFBFBD><D4BD>ͼ<EFBFBD><CDBC><EFBFBD><EFBFBD>Խ<EFBFBD><D4BD>
|
||||||
#define SCC8660_PCLK_MODE_DEF (0 ) // PCLKģʽ Ĭ<>ϣ<EFBFBD>0 <20><>ѡ<EFBFBD><D1A1><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA>[0,1] 0<><30><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ź<EFBFBD> 1<><31><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ź<EFBFBD> <ͨ<><CDA8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ0<CEAA><30><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʹ<EFBFBD><CAB9>STM32<33><32>DCMI<4D>ӿڲɼ<DAB2><C9BC><EFBFBD>Ҫ<EFBFBD><D2AA><EFBFBD><EFBFBD>Ϊ1>
|
#define SCC8660_PCLK_MODE_DEF (0 ) // PCLKģʽ Ĭ<EFBFBD>ϣ<EFBFBD>0 <20><>ѡ<EFBFBD><D1A1><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA>[0,1] 0<><30><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ź<EFBFBD> 1<><31><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ź<EFBFBD> <ͨ<><CDA8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ0<CEAA><30><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʹ<EFBFBD><CAB9>STM32<33><32>DCMI<4D>ӿڲɼ<DAB2><C9BC><EFBFBD>Ҫ<EFBFBD><D2AA><EFBFBD><EFBFBD>Ϊ1>
|
||||||
#define SCC8660_COLOR_MODE_DEF (1 ) // ͼ<><CDBC>ɫ<EFBFBD><C9AB>ģʽ Ĭ<>ϣ<EFBFBD>0 <20><>ѡ<EFBFBD><D1A1><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA>[0,1] 0<><30><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɫģʽ 1<><31><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ģʽ<C4A3><CABD>ɫ<EFBFBD>ʱ<EFBFBD><CAB1>Ͷ<EFBFBD><CDB6><EFBFBD><EFBFBD>ߣ<EFBFBD>
|
#define SCC8660_COLOR_MODE_DEF (0 ) // ͼ<><CDBC>ɫ<EFBFBD><C9AB>ģʽ Ĭ<>ϣ<EFBFBD>0 <20><>ѡ<EFBFBD><D1A1><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA>[0,1] 0<><30><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɫģʽ 1<><31><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ģʽ<C4A3><CABD>ɫ<EFBFBD>ʱ<EFBFBD><CAB1>Ͷ<EFBFBD><CDB6><EFBFBD><EFBFBD>ߣ<EFBFBD>
|
||||||
#define SCC8660_DATA_FORMAT_DEF (1 ) // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݸ<EFBFBD>ʽ Ĭ<>ϣ<EFBFBD>0 <20><>ѡ<EFBFBD><D1A1><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA>[0-3] 0<><30>RGB565 1<><31>RGB565(<28>ֽڽ<D6BD><DABD><EFBFBD>) 2<><32>YUV422(YUYV) 3<><33>YUV422(UYVY)
|
#define SCC8660_DATA_FORMAT_DEF (0 ) // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݸ<EFBFBD>ʽ Ĭ<>ϣ<EFBFBD>0 <20><>ѡ<EFBFBD><D1A1><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA>[0-3] 0<><30>RGB565 1<><31>RGB565(<28>ֽڽ<D6BD><DABD><EFBFBD>) 2<><32>YUV422(YUYV) 3<><33>YUV422(UYVY)
|
||||||
#define SCC8660_MANUAL_WB_DEF (0 ) // <20>ֶ<EFBFBD><D6B6><EFBFBD>ƽ<EFBFBD><C6BD> Ĭ<EFBFBD>ϣ<EFBFBD>0 <20><>ѡ<EFBFBD><D1A1><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA>[0,0x65-0xa0] 0<><30><EFBFBD>ر<EFBFBD><D8B1>ֶ<EFBFBD><D6B6><EFBFBD>ƽ<EFBFBD>⣬<EFBFBD><E2A3AC><EFBFBD><EFBFBD><EFBFBD>Զ<EFBFBD><D4B6><EFBFBD>ƽ<EFBFBD><C6BD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֶ<EFBFBD><D6B6><EFBFBD>ƽ<EFBFBD><C6BD> <20>ֶ<EFBFBD><D6B6><EFBFBD>ƽ<EFBFBD><C6BD>ʱ <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Χ0x65-0xa0
|
#define SCC8660_MANUAL_WB_DEF (0 ) // <20>ֶ<EFBFBD><D6B6><EFBFBD>ƽ<EFBFBD><C6BD> Ĭ<>ϣ<EFBFBD>0 <20><>ѡ<EFBFBD><D1A1><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA>[0,0x65-0xa0] 0<><30><EFBFBD>ر<EFBFBD><D8B1>ֶ<EFBFBD><D6B6><EFBFBD>ƽ<EFBFBD>⣬<EFBFBD><E2A3AC><EFBFBD><EFBFBD><EFBFBD>Զ<EFBFBD><D4B6><EFBFBD>ƽ<EFBFBD><C6BD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֶ<EFBFBD><D6B6><EFBFBD>ƽ<EFBFBD><C6BD> <20>ֶ<EFBFBD><D6B6><EFBFBD>ƽ<EFBFBD><C6BD>ʱ <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Χ0x65-0xa0
|
||||||
//================================================<3D><><EFBFBD><EFBFBD> SCC8660 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>================================================
|
//================================================<3D><><EFBFBD><EFBFBD> SCC8660 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ã<EFBFBD><EFBFBD><EFBFBD>֧<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͫ<EFBFBD><EFBFBD>֡<EFBFBD>ʰ汾<EFBFBD><EFBFBD>===========================
|
||||||
|
|
||||||
//===============================================<3D><><EFBFBD><EFBFBD> SCC8660 <20><><EFBFBD><EFBFBD><EFBFBD>ṹ<EFBFBD><E1B9B9>================================================
|
//===============================================<3D><><EFBFBD><EFBFBD> SCC8660 <20><><EFBFBD><EFBFBD><EFBFBD>ṹ<EFBFBD><E1B9B9>================================================
|
||||||
typedef enum
|
typedef enum
|
||||||
@@ -116,6 +117,14 @@ typedef enum
|
|||||||
}scc8660_cmd_enum;
|
}scc8660_cmd_enum;
|
||||||
//===============================================<3D><><EFBFBD><EFBFBD> SCC8660 <20><><EFBFBD><EFBFBD><EFBFBD>ṹ<EFBFBD><E1B9B9>================================================
|
//===============================================<3D><><EFBFBD><EFBFBD> SCC8660 <20><><EFBFBD><EFBFBD><EFBFBD>ṹ<EFBFBD><E1B9B9>================================================
|
||||||
|
|
||||||
|
//===============================================<3D><><EFBFBD><EFBFBD>ͷ<EFBFBD><CDB7><EFBFBD><EFBFBD>ö<EFBFBD><C3B6><EFBFBD><EFBFBD>=======================================================
|
||||||
|
typedef enum
|
||||||
|
{
|
||||||
|
SCC8660_UART,
|
||||||
|
SCC8660_SCCB,
|
||||||
|
}scc8660_type_enum;
|
||||||
|
//===============================================<3D><><EFBFBD><EFBFBD>ͷ<EFBFBD><CDB7><EFBFBD><EFBFBD>ö<EFBFBD><C3B6><EFBFBD><EFBFBD>=======================================================
|
||||||
|
|
||||||
//===============================================<3D><><EFBFBD><EFBFBD> SCC8660 ȫ<>ֱ<EFBFBD><D6B1><EFBFBD>=================================================
|
//===============================================<3D><><EFBFBD><EFBFBD> SCC8660 ȫ<>ֱ<EFBFBD><D6B1><EFBFBD>=================================================
|
||||||
extern vuint8 scc8660_finish_flag; // һ<><D2BB>ͼ<EFBFBD><CDBC><EFBFBD>ɼ<EFBFBD><C9BC><EFBFBD><EFBFBD>ɱ<EFBFBD>־λ
|
extern vuint8 scc8660_finish_flag; // һ<><D2BB>ͼ<EFBFBD><CDBC><EFBFBD>ɼ<EFBFBD><C9BC><EFBFBD><EFBFBD>ɱ<EFBFBD>־λ
|
||||||
extern uint16 scc8660_image[SCC8660_H][SCC8660_W]; // ͼ<><EFBFBD><F1B1A3B4><EFBFBD><EFBFBD><EFBFBD>
|
extern uint16 scc8660_image[SCC8660_H][SCC8660_W]; // ͼ<><EFBFBD><F1B1A3B4><EFBFBD><EFBFBD><EFBFBD>
|
||||||
|
|||||||
@@ -56,6 +56,7 @@ typedef enum
|
|||||||
WIRELESS_UART, // <20><><EFBFBD>ߴ<EFBFBD><DFB4><EFBFBD>
|
WIRELESS_UART, // <20><><EFBFBD>ߴ<EFBFBD><DFB4><EFBFBD>
|
||||||
BLUETOOTH_CH9141, // <20><><EFBFBD><EFBFBD> CH9141
|
BLUETOOTH_CH9141, // <20><><EFBFBD><EFBFBD> CH9141
|
||||||
WIFI_UART, // <20><><EFBFBD><EFBFBD> WiFi
|
WIFI_UART, // <20><><EFBFBD><EFBFBD> WiFi
|
||||||
|
RECEIVER_UART, // ǹʽң<CABD><D2A3><EFBFBD><EFBFBD>
|
||||||
}wireless_type_enum;
|
}wireless_type_enum;
|
||||||
|
|
||||||
typedef enum
|
typedef enum
|
||||||
|
|||||||
@@ -0,0 +1,134 @@
|
|||||||
|
/*********************************************************************************************************************
|
||||||
|
* TC264 Opensourec Library <20><><EFBFBD><EFBFBD>TC264 <20><>Դ<EFBFBD>⣩<EFBFBD><E2A3A9>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD>ڹٷ<DAB9> SDK <20>ӿڵĵ<DAB5><C4B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Դ<EFBFBD><D4B4>
|
||||||
|
* Copyright (c) 2022 SEEKFREE <20><><EFBFBD>ɿƼ<C9BF>
|
||||||
|
*
|
||||||
|
* <20><><EFBFBD>ļ<EFBFBD><C4BC><EFBFBD> TC264 <20><>Դ<EFBFBD><D4B4><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD>
|
||||||
|
*
|
||||||
|
* TC264 <20><>Դ<EFBFBD><D4B4> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
|
* <20><><EFBFBD><EFBFBD><EFBFBD>Ը<EFBFBD><D4B8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ᷢ<EFBFBD><E1B7A2><EFBFBD><EFBFBD> GPL<50><4C>GNU General Public License<73><65><EFBFBD><EFBFBD> GNUͨ<55>ù<EFBFBD><C3B9><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>֤<EFBFBD><D6A4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
|
* <20><> GPL <20>ĵ<EFBFBD>3<EFBFBD>棨<EFBFBD><E6A3A8> GPL3.0<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ѡ<EFBFBD><EFBFBD><EFBFBD>ģ<EFBFBD><EFBFBD>κκ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>İ汾<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>·<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>/<2F><><EFBFBD><EFBFBD><DEB8><EFBFBD>
|
||||||
|
*
|
||||||
|
* <20><><EFBFBD><EFBFBD>Դ<EFBFBD><D4B4><EFBFBD>ķ<EFBFBD><C4B7><EFBFBD><EFBFBD><EFBFBD>ϣ<EFBFBD><CFA3><EFBFBD><EFBFBD><EFBFBD>ܷ<EFBFBD><DCB7><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ã<EFBFBD><C3A3><EFBFBD><EFBFBD><EFBFBD>δ<EFBFBD><CEB4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>κεı<CEB5>֤
|
||||||
|
* <20><><EFBFBD><EFBFBD>û<EFBFBD><C3BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ի<EFBFBD><D4BB>ʺ<EFBFBD><CABA>ض<EFBFBD><D8B6><EFBFBD>;<EFBFBD>ı<EFBFBD>֤
|
||||||
|
* <20><><EFBFBD><EFBFBD>ϸ<EFBFBD><CFB8><EFBFBD><EFBFBD><EFBFBD>μ<EFBFBD> GPL
|
||||||
|
*
|
||||||
|
* <20><>Ӧ<EFBFBD><D3A6><EFBFBD><EFBFBD><EFBFBD>յ<EFBFBD><D5B5><EFBFBD><EFBFBD><EFBFBD>Դ<EFBFBD><D4B4><EFBFBD><EFBFBD>ͬʱ<CDAC>յ<EFBFBD>һ<EFBFBD><D2BB> GPL <20>ĸ<EFBFBD><C4B8><EFBFBD>
|
||||||
|
* <20><><EFBFBD><EFBFBD>û<EFBFBD>У<EFBFBD><D0A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><https://www.gnu.org/licenses/>
|
||||||
|
*
|
||||||
|
* <20><><EFBFBD><EFBFBD>ע<EFBFBD><D7A2><EFBFBD><EFBFBD>
|
||||||
|
* <20><><EFBFBD><EFBFBD>Դ<EFBFBD><D4B4>ʹ<EFBFBD><CAB9> GPL3.0 <20><>Դ<EFBFBD><D4B4><EFBFBD><EFBFBD>֤Э<D6A4><D0AD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA><EFBFBD>İ汾
|
||||||
|
* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ӣ<EFBFBD>İ<EFBFBD><C4B0><EFBFBD> libraries/doc <20>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD>µ<EFBFBD> GPL3_permission_statement.txt <20>ļ<EFBFBD><C4BC><EFBFBD>
|
||||||
|
* <20><><EFBFBD><EFBFBD>֤<EFBFBD><D6A4><EFBFBD><EFBFBD><EFBFBD><EFBFBD> libraries <20>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD>µ<EFBFBD> LICENSE <20>ļ<EFBFBD>
|
||||||
|
* <20><>ӭ<EFBFBD><D3AD>λʹ<CEBB>ò<EFBFBD><C3B2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><DEB8><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD>뱣<EFBFBD><EBB1A3><EFBFBD><EFBFBD><EFBFBD>ɿƼ<C9BF><C6BC>İ<EFBFBD>Ȩ<EFBFBD><C8A8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
|
*
|
||||||
|
* <20>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD><EFBFBD> zf_device_uart_receiver
|
||||||
|
* <20><>˾<EFBFBD><CBBE><EFBFBD><EFBFBD> <20>ɶ<EFBFBD><C9B6><EFBFBD><EFBFBD>ɿƼ<C9BF><C6BC><EFBFBD><EFBFBD><EFBFBD>˾
|
||||||
|
* <20>汾<EFBFBD><E6B1BE>Ϣ <20>鿴 libraries/doc <20>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD><EFBFBD> version <20>ļ<EFBFBD> <20>汾˵<E6B1BE><CBB5>
|
||||||
|
* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ADS v1.9.20
|
||||||
|
* <20><><EFBFBD><EFBFBD>ƽ̨ TC264D
|
||||||
|
* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> https://seekfree.taobao.com/
|
||||||
|
*
|
||||||
|
* <20>ļ<DEB8>¼
|
||||||
|
* <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><>ע
|
||||||
|
* 2022-11-04 JKS first version
|
||||||
|
********************************************************************************************************************/
|
||||||
|
/*********************************************************************************************************************
|
||||||
|
* <20><><EFBFBD>߶<EFBFBD><DFB6>壺
|
||||||
|
* ------------------------------------
|
||||||
|
* ģ<><C4A3><EFBFBD>ܽ<EFBFBD> <20><>Ƭ<EFBFBD><C6AC><EFBFBD>ܽ<EFBFBD>
|
||||||
|
* TXD <20>鿴 zf_device_uart_receiver.h <20><> UART_RECEVIER_RX_PIN <20>궨<EFBFBD><EAB6A8>
|
||||||
|
* GND <20><>Դ<EFBFBD><D4B4>
|
||||||
|
* 5V 5V<35><56>Դ
|
||||||
|
* ------------------------------------
|
||||||
|
********************************************************************************************************************/
|
||||||
|
|
||||||
|
#include "zf_device_type.h"
|
||||||
|
#include "zf_driver_uart.h"
|
||||||
|
#include "zf_driver_timer.h"
|
||||||
|
#include "zf_device_uart_receiver.h"
|
||||||
|
|
||||||
|
uart_receiver_struct uart_receiver ; // <20><><EFBFBD>ڽ<EFBFBD><DABD>ջ<EFBFBD>ͨ<EFBFBD><CDA8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>״̬
|
||||||
|
|
||||||
|
uint8 uart_receiver_data[REV_DATA_LEN] = {0}; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ԭʼ<D4AD><CABC><EFBFBD><EFBFBD>
|
||||||
|
|
||||||
|
//-------------------------------------------------------------------------------------------------------------------
|
||||||
|
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>ȡ<EFBFBD><C8A1><EFBFBD>ε<EFBFBD><CEB5><EFBFBD>uart_receiver_interval_time<6D><65><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
|
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> void
|
||||||
|
// <20><><EFBFBD>ز<EFBFBD><D8B2><EFBFBD> uint32 <20><><EFBFBD>شӿ<D8B4>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD><EFBFBD>ڵ<EFBFBD>ʱ<EFBFBD><CAB1>(<28><>λ1us)
|
||||||
|
// ʹ<><CAB9>ʾ<EFBFBD><CABE> uint32 time = uart_receiver_interval_time();
|
||||||
|
// <20><>ע<EFBFBD><D7A2>Ϣ <20>ڲ<EFBFBD><DAB2><EFBFBD><EFBFBD><EFBFBD>
|
||||||
|
//-------------------------------------------------------------------------------------------------------------------
|
||||||
|
static uint32 uart_receiver_interval_time (void)
|
||||||
|
{
|
||||||
|
static uint32 time_last = 0;
|
||||||
|
uint32 time, interval_time;
|
||||||
|
uint32 stm_clk;
|
||||||
|
|
||||||
|
stm_clk = IfxStm_getFrequency(IfxStm_getAddress((IfxStm_Index)(IfxCpu_getCoreId())));
|
||||||
|
|
||||||
|
time = IfxStm_getLower(IfxStm_getAddress((IfxStm_Index)(IfxCpu_getCoreId())));
|
||||||
|
interval_time = time - time_last;
|
||||||
|
time_last = time;
|
||||||
|
interval_time = (uint32)((uint64)interval_time * 1000000 / stm_clk);
|
||||||
|
|
||||||
|
return interval_time;
|
||||||
|
}
|
||||||
|
|
||||||
|
//-------------------------------------------------------------------------------------------------------------------
|
||||||
|
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> SBUS<55><53><EFBFBD>ݽ<EFBFBD><DDBD><EFBFBD>
|
||||||
|
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> *remote_data <20><><EFBFBD><EFBFBD>ң<EFBFBD><D2A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݵĵ<DDB5>ַ
|
||||||
|
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> *bufer ԭʼ<D4AD><CABC><EFBFBD><EFBFBD>
|
||||||
|
// <20><><EFBFBD>ز<EFBFBD><D8B2><EFBFBD> void
|
||||||
|
// ʹ<><CAB9>ʾ<EFBFBD><CABE>
|
||||||
|
// <20><>ע<EFBFBD><D7A2>Ϣ <20><>sbus<75><73><EFBFBD>ݽ<EFBFBD><DDBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>н<EFBFBD><D0BD><EFBFBD>
|
||||||
|
//-------------------------------------------------------------------------------------------------------------------
|
||||||
|
static void uart_receiver_analysis (uart_receiver_struct *remote_data,uint8 * buffer)
|
||||||
|
{
|
||||||
|
uint8 num = 0;
|
||||||
|
remote_data->channel[num++] = (buffer[1] |buffer[ 2] << 8 ) & 0x07FF;
|
||||||
|
remote_data->channel[num++] = (buffer[2] >> 3 | buffer[3] << 5 ) & 0x07FF;
|
||||||
|
remote_data->channel[num++] = (buffer[3] >> 6 | buffer[4] << 2 | buffer[5] << 10 ) & 0x07FF;
|
||||||
|
remote_data->channel[num++] = (buffer[5] >> 1 | buffer[6] << 7 ) & 0x07FF;
|
||||||
|
remote_data->channel[num++] = (buffer[6] >> 4 | buffer[7] << 4 ) & 0x07FF;
|
||||||
|
remote_data->channel[num++] = (buffer[7] >> 7 | buffer[8] << 1 | buffer[9] << 9 ) & 0x07FF;
|
||||||
|
remote_data->state = (SBUS_NORMAL_STATE == buffer[23]) ? 1 : 0;
|
||||||
|
uart_receiver.finsh_flag = 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
//-------------------------------------------------------------------------------------------------------------------
|
||||||
|
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>ڽ<EFBFBD><DABD>ջ<EFBFBD>ģ<EFBFBD><C4A3> <20><><EFBFBD><EFBFBD><EFBFBD>жϻص<CFBB><D8B5><EFBFBD><EFBFBD><EFBFBD>
|
||||||
|
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> void
|
||||||
|
// <20><><EFBFBD>ز<EFBFBD><D8B2><EFBFBD> void
|
||||||
|
// ʹ<><CAB9>ʾ<EFBFBD><CABE> uart_receiver_callback();
|
||||||
|
// <20><>ע<EFBFBD><D7A2>Ϣ <20>ú<EFBFBD><C3BA><EFBFBD><EFBFBD><EFBFBD> ISR <20>ļ<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>жϳ<D0B6><CFB3><EFBFBD>ͨ<EFBFBD><CDA8>uart_receiver_uart_handler<65><72><EFBFBD><EFBFBD>ָ<EFBFBD>뱻<EFBFBD><EBB1BB><EFBFBD><EFBFBD>
|
||||||
|
//-------------------------------------------------------------------------------------------------------------------
|
||||||
|
void uart_receiver_callback(void)
|
||||||
|
{
|
||||||
|
static vuint8 length = 0;
|
||||||
|
|
||||||
|
if (uart_receiver_interval_time() > 3000)
|
||||||
|
{
|
||||||
|
length = 0;
|
||||||
|
}
|
||||||
|
uart_receiver_data[length++] = uart_read_byte(UART_RECEVIER_UART_INDEX);
|
||||||
|
if ( (REV_DATA_LEN == length) // <20><><EFBFBD><EFBFBD>֡<EFBFBD><D6A1><EFBFBD><EFBFBD>֡ͷ<D6A1><CDB7>֡β<D6A1><CEB2><EFBFBD><EFBFBD>Э<EFBFBD><D0AD>
|
||||||
|
&& (FRAME_STAR == uart_receiver_data[0])
|
||||||
|
&& (FRAME_END == uart_receiver_data[24]))
|
||||||
|
{
|
||||||
|
uart_receiver_analysis(&uart_receiver, uart_receiver_data);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
//-------------------------------------------------------------------------------------------------------------------
|
||||||
|
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>ڽ<EFBFBD><DABD>ջ<EFBFBD><D5BB><EFBFBD>ʼ<EFBFBD><CABC>
|
||||||
|
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> void
|
||||||
|
// <20><><EFBFBD>ز<EFBFBD><D8B2><EFBFBD> void
|
||||||
|
// ʹ<><CAB9>ʾ<EFBFBD><CABE> uart_receiver_init();
|
||||||
|
//-------------------------------------------------------------------------------------------------------------------
|
||||||
|
void uart_receiver_init(void)
|
||||||
|
{
|
||||||
|
uart_sbus_init(UART_RECEVIER_UART_INDEX, SBUS_UART_BAUDRATE, UART_RECEVIER_TX_PIN, UART_RECEVIER_RX_PIN);
|
||||||
|
|
||||||
|
// <20><><EFBFBD>ô<EFBFBD><C3B4><EFBFBD><EFBFBD>жϻص<CFBB><D8B5><EFBFBD><EFBFBD><EFBFBD>
|
||||||
|
set_wireless_type(RECEIVER_UART, uart_receiver_callback);
|
||||||
|
}
|
||||||
@@ -0,0 +1,72 @@
|
|||||||
|
/*********************************************************************************************************************
|
||||||
|
* TC264 Opensourec Library <20><><EFBFBD><EFBFBD>TC264 <20><>Դ<EFBFBD>⣩<EFBFBD><E2A3A9>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD>ڹٷ<DAB9> SDK <20>ӿڵĵ<DAB5><C4B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Դ<EFBFBD><D4B4>
|
||||||
|
* Copyright (c) 2022 SEEKFREE <20><><EFBFBD>ɿƼ<C9BF>
|
||||||
|
*
|
||||||
|
* <20><><EFBFBD>ļ<EFBFBD><C4BC><EFBFBD> TC264 <20><>Դ<EFBFBD><D4B4><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD>
|
||||||
|
*
|
||||||
|
* TC264 <20><>Դ<EFBFBD><D4B4> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
|
* <20><><EFBFBD><EFBFBD><EFBFBD>Ը<EFBFBD><D4B8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ᷢ<EFBFBD><E1B7A2><EFBFBD><EFBFBD> GPL<50><4C>GNU General Public License<73><65><EFBFBD><EFBFBD> GNUͨ<55>ù<EFBFBD><C3B9><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>֤<EFBFBD><D6A4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
|
* <20><> GPL <20>ĵ<EFBFBD>3<EFBFBD>棨<EFBFBD><E6A3A8> GPL3.0<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ѡ<EFBFBD><EFBFBD><EFBFBD>ģ<EFBFBD><EFBFBD>κκ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>İ汾<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>·<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>/<2F><><EFBFBD><EFBFBD><DEB8><EFBFBD>
|
||||||
|
*
|
||||||
|
* <20><><EFBFBD><EFBFBD>Դ<EFBFBD><D4B4><EFBFBD>ķ<EFBFBD><C4B7><EFBFBD><EFBFBD><EFBFBD>ϣ<EFBFBD><CFA3><EFBFBD><EFBFBD><EFBFBD>ܷ<EFBFBD><DCB7><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ã<EFBFBD><C3A3><EFBFBD><EFBFBD><EFBFBD>δ<EFBFBD><CEB4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>κεı<CEB5>֤
|
||||||
|
* <20><><EFBFBD><EFBFBD>û<EFBFBD><C3BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ի<EFBFBD><D4BB>ʺ<EFBFBD><CABA>ض<EFBFBD><D8B6><EFBFBD>;<EFBFBD>ı<EFBFBD>֤
|
||||||
|
* <20><><EFBFBD><EFBFBD>ϸ<EFBFBD><CFB8><EFBFBD><EFBFBD><EFBFBD>μ<EFBFBD> GPL
|
||||||
|
*
|
||||||
|
* <20><>Ӧ<EFBFBD><D3A6><EFBFBD><EFBFBD><EFBFBD>յ<EFBFBD><D5B5><EFBFBD><EFBFBD><EFBFBD>Դ<EFBFBD><D4B4><EFBFBD><EFBFBD>ͬʱ<CDAC>յ<EFBFBD>һ<EFBFBD><D2BB> GPL <20>ĸ<EFBFBD><C4B8><EFBFBD>
|
||||||
|
* <20><><EFBFBD><EFBFBD>û<EFBFBD>У<EFBFBD><D0A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><https://www.gnu.org/licenses/>
|
||||||
|
*
|
||||||
|
* <20><><EFBFBD><EFBFBD>ע<EFBFBD><D7A2><EFBFBD><EFBFBD>
|
||||||
|
* <20><><EFBFBD><EFBFBD>Դ<EFBFBD><D4B4>ʹ<EFBFBD><CAB9> GPL3.0 <20><>Դ<EFBFBD><D4B4><EFBFBD><EFBFBD>֤Э<D6A4><D0AD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA><EFBFBD>İ汾
|
||||||
|
* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ӣ<EFBFBD>İ<EFBFBD><C4B0><EFBFBD> libraries/doc <20>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD>µ<EFBFBD> GPL3_permission_statement.txt <20>ļ<EFBFBD><C4BC><EFBFBD>
|
||||||
|
* <20><><EFBFBD><EFBFBD>֤<EFBFBD><D6A4><EFBFBD><EFBFBD><EFBFBD><EFBFBD> libraries <20>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD>µ<EFBFBD> LICENSE <20>ļ<EFBFBD>
|
||||||
|
* <20><>ӭ<EFBFBD><D3AD>λʹ<CEBB>ò<EFBFBD><C3B2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><DEB8><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD>뱣<EFBFBD><EBB1A3><EFBFBD><EFBFBD><EFBFBD>ɿƼ<C9BF><C6BC>İ<EFBFBD>Ȩ<EFBFBD><C8A8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
|
*
|
||||||
|
* <20>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD><EFBFBD> zf_device_uart_receiver
|
||||||
|
* <20><>˾<EFBFBD><CBBE><EFBFBD><EFBFBD> <20>ɶ<EFBFBD><C9B6><EFBFBD><EFBFBD>ɿƼ<C9BF><C6BC><EFBFBD><EFBFBD><EFBFBD>˾
|
||||||
|
* <20>汾<EFBFBD><E6B1BE>Ϣ <20>鿴 libraries/doc <20>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD><EFBFBD> version <20>ļ<EFBFBD> <20>汾˵<E6B1BE><CBB5>
|
||||||
|
* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ADS v1.9.20
|
||||||
|
* <20><><EFBFBD><EFBFBD>ƽ̨ TC264D
|
||||||
|
* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> https://seekfree.taobao.com/
|
||||||
|
*
|
||||||
|
* <20>ļ<DEB8>¼
|
||||||
|
* <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><>ע
|
||||||
|
* 2022-11-04 JKS first version
|
||||||
|
********************************************************************************************************************/
|
||||||
|
/*********************************************************************************************************************
|
||||||
|
* <20><><EFBFBD>߶<EFBFBD><DFB6>壺
|
||||||
|
* ------------------------------------
|
||||||
|
* ģ<><C4A3><EFBFBD>ܽ<EFBFBD> <20><>Ƭ<EFBFBD><C6AC><EFBFBD>ܽ<EFBFBD>
|
||||||
|
* TXD <20>鿴 zf_device_uart_receiver.h <20><> UART_RECEVIER_RX_PIN <20>궨<EFBFBD><EAB6A8>
|
||||||
|
* GND <20><>Դ<EFBFBD><D4B4>
|
||||||
|
* 5V 5V<35><56>Դ
|
||||||
|
* ------------------------------------
|
||||||
|
********************************************************************************************************************/
|
||||||
|
#ifndef _zf_device_uart_receiver_h
|
||||||
|
#define _zf_device_uart_receiver_h
|
||||||
|
|
||||||
|
#include "zf_common_typedef.h"
|
||||||
|
|
||||||
|
#define UART_RECEVIER_UART_INDEX UART_2 // <20><><EFBFBD>崮<EFBFBD>ڽ<EFBFBD><DABD>ջ<EFBFBD>ʹ<EFBFBD>õĴ<C3B5><C4B4><EFBFBD>
|
||||||
|
#define UART_RECEVIER_TX_PIN UART2_TX_P10_5 // ң<><D2A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ջ<EFBFBD>û<EFBFBD><C3BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ţ<EFBFBD><C5A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڴ<EFBFBD><DAB4>ڳ<EFBFBD>ʼ<EFBFBD><CABC>ʱռλʹ<CEBB><CAB9>
|
||||||
|
#define UART_RECEVIER_RX_PIN UART2_RX_P10_6 // <20><><EFBFBD>ڽ<EFBFBD><DABD>ջ<EFBFBD><D5BB><EFBFBD>TX<54><58><EFBFBD><EFBFBD> <20><><EFBFBD>ӵ<EFBFBD>Ƭ<EFBFBD><C6AC><EFBFBD><EFBFBD>RX<52><58><EFBFBD><EFBFBD>
|
||||||
|
#define SBUS_UART_BAUDRATE (100000) // ָ<><D6B8> SBUS <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʹ<EFBFBD>õĵĴ<C4B5><C4B4>ڲ<EFBFBD><DAB2><EFBFBD><EFBFBD><EFBFBD> (<28>û<EFBFBD><C3BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>)
|
||||||
|
#define UART_RECEVIER_CHANNEL_NUM ( 6 ) // <20><><EFBFBD><EFBFBD>ң<EFBFBD><D2A3><EFBFBD><EFBFBD>ͨ<EFBFBD><CDA8><EFBFBD><EFBFBD><EFBFBD><EFBFBD> (<28>û<EFBFBD><C3BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>)
|
||||||
|
|
||||||
|
#define REV_DATA_LEN ( 25 ) // SBUS֡<53><D6A1>
|
||||||
|
#define FRAME_STAR ( 0X0F ) // ֡ͷ<D6A1><CDB7>Ϣ
|
||||||
|
#define FRAME_END ( 0X00 ) // ֡β<D6A1><CEB2>Ϣ
|
||||||
|
#define SBUS_NORMAL_STATE ( 0X03 ) // <20><><EFBFBD><EFBFBD>״̬
|
||||||
|
#define SBUS_ABNORMAL_STATE ( 0X0F ) // ʧ<><CAA7>״̬
|
||||||
|
|
||||||
|
typedef struct
|
||||||
|
{
|
||||||
|
uint16 channel[UART_RECEVIER_CHANNEL_NUM]; // CH1-CH6ͨ<36><CDA8><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
|
uint8 state; // ң<><D2A3><EFBFBD><EFBFBD>״̬(1<><31>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾʧ<CABE><CAA7>)
|
||||||
|
uint8 finsh_flag; // 1<><31><EFBFBD><EFBFBD>ʾ<EFBFBD>ɹ<EFBFBD><C9B9><EFBFBD><EFBFBD>յ<EFBFBD>һ֡ң<D6A1><D2A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
|
}uart_receiver_struct;
|
||||||
|
|
||||||
|
extern uart_receiver_struct uart_receiver; // <20><><EFBFBD>ڽ<EFBFBD><DABD>ջ<EFBFBD>ͨ<EFBFBD><CDA8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>״̬
|
||||||
|
|
||||||
|
void uart_receiver_init(void);
|
||||||
|
|
||||||
|
#endif
|
||||||
@@ -404,6 +404,55 @@ void uart_rx_interrupt (uart_index_enum uart_n, uint32 status)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//-------------------------------------------------------------------------------------------------------------------
|
||||||
|
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> sbus<75><73>ʼ<EFBFBD><CABC>
|
||||||
|
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> uartn <20><><EFBFBD><EFBFBD>ͨ<EFBFBD><CDA8>(UART_0,UART_1,UART_2,UART_3)
|
||||||
|
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> baud <20><><EFBFBD>ڲ<EFBFBD><DAB2><EFBFBD><EFBFBD><EFBFBD>
|
||||||
|
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> tx_pin <20><><EFBFBD>ڷ<EFBFBD><DAB7><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ź<EFBFBD>
|
||||||
|
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> rx_pin <20><><EFBFBD>ڽ<EFBFBD><DABD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ź<EFBFBD>
|
||||||
|
// <20><><EFBFBD>ز<EFBFBD><D8B2><EFBFBD> void
|
||||||
|
// ʹ<><CAB9>ʾ<EFBFBD><CABE> uart_sbus_init(UART_2, 100000, UART2_TX_P10_5, UART2_RX_P10_6);
|
||||||
|
// <20><>ע<EFBFBD><D7A2>Ϣ
|
||||||
|
//-------------------------------------------------------------------------------------------------------------------
|
||||||
|
void uart_sbus_init (uart_index_enum uartn, uint32 baud, uart_tx_pin_enum tx_pin, uart_rx_pin_enum rx_pin)
|
||||||
|
{
|
||||||
|
|
||||||
|
boolean interrupt_state = disableInterrupts();
|
||||||
|
|
||||||
|
volatile Ifx_ASCLIN *moudle = IfxAsclin_getAddress((IfxAsclin_Index)uartn);
|
||||||
|
|
||||||
|
IfxAsclin_Asc_initModuleConfig(&uart_config, moudle); // <20><>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ýṹ<C3BD><E1B9B9>
|
||||||
|
|
||||||
|
uart_set_buffer(uartn); // <20><><EFBFBD>û<EFBFBD><C3BB><EFBFBD><EFBFBD><EFBFBD>
|
||||||
|
|
||||||
|
uart_set_interrupt_priority(uartn); // <20><><EFBFBD><EFBFBD><EFBFBD>ж<EFBFBD><D0B6><EFBFBD><EFBFBD>ȼ<EFBFBD>
|
||||||
|
|
||||||
|
uart_config.clockSource = IfxAsclin_ClockSource_ascFastClock; // ʹ<>ø<EFBFBD><C3B8><EFBFBD>ʱ<EFBFBD><CAB1> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>6.25M
|
||||||
|
uart_config.baudrate.prescaler = 4;
|
||||||
|
uart_config.baudrate.baudrate = (float32)baud;
|
||||||
|
uart_config.baudrate.oversampling = IfxAsclin_OversamplingFactor_8;
|
||||||
|
|
||||||
|
uart_config.frame.stopBit = IfxAsclin_StopBit_2; //ֹͣλ
|
||||||
|
uart_config.frame.parityType = IfxAsclin_ParityType_even; //żУ<C5BC><D0A3>
|
||||||
|
uart_config.frame.dataLength = IfxAsclin_DataLength_8;
|
||||||
|
uart_config.frame.parityBit = TRUE; //<2F><><EFBFBD><EFBFBD>У<EFBFBD><D0A3>
|
||||||
|
|
||||||
|
IfxAsclin_Asc_Pins pins; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
|
pins.cts = NULL;
|
||||||
|
pins.rts = NULL;
|
||||||
|
uart_mux(uartn, tx_pin, rx_pin, (uint32 *)&pins.tx, (uint32 *)&pins.rx);
|
||||||
|
pins.rxMode = IfxPort_InputMode_pullUp;
|
||||||
|
pins.txMode = IfxPort_OutputMode_pushPull;
|
||||||
|
pins.pinDriver = IfxPort_PadDriver_cmosAutomotiveSpeed1;
|
||||||
|
uart_config.pins = &pins;
|
||||||
|
|
||||||
|
IfxAsclin_Asc_initModule(uart_get_handle(uartn), &uart_config);
|
||||||
|
uart_rx_interrupt(uartn, 1);
|
||||||
|
uart_tx_interrupt(uartn, 0);
|
||||||
|
restoreInterrupts(interrupt_state);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
//-------------------------------------------------------------------------------------------------------------------
|
//-------------------------------------------------------------------------------------------------------------------
|
||||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>ڳ<EFBFBD>ʼ<EFBFBD><CABC>
|
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>ڳ<EFBFBD>ʼ<EFBFBD><CABC>
|
||||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> uartn <20><><EFBFBD><EFBFBD>ģ<EFBFBD><C4A3><EFBFBD><EFBFBD>(UART_0,UART_1,UART_2,UART_3)
|
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> uartn <20><><EFBFBD><EFBFBD>ģ<EFBFBD><C4A3><EFBFBD><EFBFBD>(UART_0,UART_1,UART_2,UART_3)
|
||||||
|
|||||||
@@ -125,6 +125,7 @@ uint8 uart_query_byte (uart_index_enum uartn, uint8 *dat);
|
|||||||
void uart_tx_interrupt (uart_index_enum uartn, uint32 status);
|
void uart_tx_interrupt (uart_index_enum uartn, uint32 status);
|
||||||
void uart_rx_interrupt (uart_index_enum uartn, uint32 status);
|
void uart_rx_interrupt (uart_index_enum uartn, uint32 status);
|
||||||
|
|
||||||
|
void uart_sbus_init (uart_index_enum uartn, uint32 baud, uart_tx_pin_enum tx_pin, uart_rx_pin_enum rx_pin);
|
||||||
void uart_init (uart_index_enum uartn, uint32 baud, uart_tx_pin_enum tx_pin, uart_rx_pin_enum rx_pin);
|
void uart_init (uart_index_enum uartn, uint32 baud, uart_tx_pin_enum tx_pin, uart_rx_pin_enum rx_pin);
|
||||||
//====================================================<3D><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>====================================================
|
//====================================================<3D><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>====================================================
|
||||||
|
|
||||||
|
|||||||
@@ -80,7 +80,7 @@ uint8 fifo_get_data[64];
|
|||||||
uint8 get_data = 0; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݱ<EFBFBD><DDB1><EFBFBD>
|
uint8 get_data = 0; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݱ<EFBFBD><DDB1><EFBFBD>
|
||||||
uint32 fifo_data_count = 0; // fifo <20><><EFBFBD>ݸ<EFBFBD><DDB8><EFBFBD>
|
uint32 fifo_data_count = 0; // fifo <20><><EFBFBD>ݸ<EFBFBD><DDB8><EFBFBD>
|
||||||
|
|
||||||
fifo_obj_struct uart_data_fifo;
|
fifo_struct uart_data_fifo;
|
||||||
|
|
||||||
int core0_main(void)
|
int core0_main(void)
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -1,3 +1,6 @@
|
|||||||
|
V3.2.8
|
||||||
|
<20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͫ<EFBFBD><CDAB>MCU<43>汾<EFBFBD><E6B1BE><EFBFBD><EFBFBD>
|
||||||
|
<20><><EFBFBD><EFBFBD>SBUSң<53><D2A3><EFBFBD><EFBFBD><EFBFBD>ײ<EFBFBD><D7B2><EFBFBD><EFBFBD><EFBFBD>
|
||||||
V3.2.7
|
V3.2.7
|
||||||
<20><><EFBFBD><EFBFBD>RTK "D" <20><>ͷЭ<CDB7><D0AD>
|
<20><><EFBFBD><EFBFBD>RTK "D" <20><>ͷЭ<CDB7><D0AD>
|
||||||
<20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ǻ<EFBFBD>ת<EFBFBD><D7AA><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>ֹ<EFBFBD><D6B9><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
<20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ǻ<EFBFBD>ת<EFBFBD><D7AA><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>ֹ<EFBFBD><D6B9><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
|
|||||||
@@ -100,6 +100,7 @@
|
|||||||
#include "zf_device_tft180.h"
|
#include "zf_device_tft180.h"
|
||||||
#include "zf_device_tsl1401.h"
|
#include "zf_device_tsl1401.h"
|
||||||
#include "zf_device_type.h"
|
#include "zf_device_type.h"
|
||||||
|
#include "zf_device_uart_receiver.h"
|
||||||
#include "zf_device_virtual_oscilloscope.h"
|
#include "zf_device_virtual_oscilloscope.h"
|
||||||
#include "zf_device_wifi_uart.h"
|
#include "zf_device_wifi_uart.h"
|
||||||
#include "zf_device_wifi_spi.h"
|
#include "zf_device_wifi_spi.h"
|
||||||
|
|||||||
Binary file not shown.
@@ -31,6 +31,7 @@
|
|||||||
* <20>ļ<DEB8>¼
|
* <20>ļ<DEB8>¼
|
||||||
* <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><>ע
|
* <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><>ע
|
||||||
* 2022-09-15 pudding first version
|
* 2022-09-15 pudding first version
|
||||||
|
* 2024-02-02 pudding <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͫ<EFBFBD><CDAB>̬<EFBFBD>⺯<EFBFBD><E2BAAF>
|
||||||
********************************************************************************************************************/
|
********************************************************************************************************************/
|
||||||
|
|
||||||
#ifndef _zf_device_config_h_
|
#ifndef _zf_device_config_h_
|
||||||
@@ -43,5 +44,10 @@ unsigned char mt9v03x_set_config_sccb (void *soft_iic_obj, short int b
|
|||||||
unsigned char mt9v03x_set_exposure_time_sccb (unsigned short int light);
|
unsigned char mt9v03x_set_exposure_time_sccb (unsigned short int light);
|
||||||
unsigned char mt9v03x_set_reg_sccb (unsigned char addr, unsigned short int data);
|
unsigned char mt9v03x_set_reg_sccb (unsigned char addr, unsigned short int data);
|
||||||
|
|
||||||
|
unsigned char scc8660_set_config_sccb (void *soft_iic_obj, short int buff[10][2]);
|
||||||
|
unsigned char scc8660_set_brightness_sccb (unsigned short int brightness);
|
||||||
|
unsigned char scc8660_set_manual_wb_sccb (unsigned short int manual_wb);
|
||||||
|
unsigned char scc8660_set_reg_sccb (unsigned char reg, unsigned short int data);
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|||||||
@@ -31,6 +31,7 @@
|
|||||||
* <20>ļ<DEB8>¼
|
* <20>ļ<DEB8>¼
|
||||||
* <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><>ע
|
* <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><>ע
|
||||||
* 2022-09-15 pudding first version
|
* 2022-09-15 pudding first version
|
||||||
|
* 2024-02-02 pudding <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>MCU<43><55>ͫ<EFBFBD><CDAB><EFBFBD><EFBFBD>
|
||||||
********************************************************************************************************************/
|
********************************************************************************************************************/
|
||||||
/*********************************************************************************************************************
|
/*********************************************************************************************************************
|
||||||
* <20><><EFBFBD>߶<EFBFBD><DFB6>壺
|
* <20><><EFBFBD>߶<EFBFBD><DFB6>壺
|
||||||
@@ -55,9 +56,12 @@
|
|||||||
#include "zf_driver_exti.h"
|
#include "zf_driver_exti.h"
|
||||||
#include "zf_driver_gpio.h"
|
#include "zf_driver_gpio.h"
|
||||||
#include "zf_driver_uart.h"
|
#include "zf_driver_uart.h"
|
||||||
|
#include "zf_driver_soft_iic.h"
|
||||||
#include "zf_device_camera.h"
|
#include "zf_device_camera.h"
|
||||||
#include "zf_device_scc8660.h"
|
|
||||||
#include "zf_device_type.h"
|
#include "zf_device_type.h"
|
||||||
|
#include "zf_device_config.h"
|
||||||
|
|
||||||
|
#include "zf_device_scc8660.h"
|
||||||
|
|
||||||
vuint8 scc8660_finish_flag = 0; // һ<><D2BB>ͼ<EFBFBD><CDBC><EFBFBD>ɼ<EFBFBD><C9BC><EFBFBD><EFBFBD>ɱ<EFBFBD>־λ
|
vuint8 scc8660_finish_flag = 0; // һ<><D2BB>ͼ<EFBFBD><CDBC><EFBFBD>ɼ<EFBFBD><C9BC><EFBFBD><EFBFBD>ɱ<EFBFBD>־λ
|
||||||
IFX_ALIGN(4) uint16 scc8660_image[SCC8660_H][SCC8660_W];
|
IFX_ALIGN(4) uint16 scc8660_image[SCC8660_H][SCC8660_W];
|
||||||
@@ -68,6 +72,7 @@ uint8 scc8660_lost_flag = 1;
|
|||||||
uint8 scc8660_dma_int_num; // <20><>ǰDMA<4D>жϴ<D0B6><CFB4><EFBFBD>
|
uint8 scc8660_dma_int_num; // <20><>ǰDMA<4D>жϴ<D0B6><CFB4><EFBFBD>
|
||||||
uint8 scc8660_dma_init_flag; // <20>Ƿ<EFBFBD><C7B7><EFBFBD>Ҫ<EFBFBD><D2AA><EFBFBD>³<EFBFBD>ʼ<EFBFBD><CABC>
|
uint8 scc8660_dma_init_flag; // <20>Ƿ<EFBFBD><C7B7><EFBFBD>Ҫ<EFBFBD><D2AA><EFBFBD>³<EFBFBD>ʼ<EFBFBD><CABC>
|
||||||
|
|
||||||
|
static scc8660_type_enum scc8660_type;
|
||||||
|
|
||||||
// <20><>Ҫ<EFBFBD><D2AA><EFBFBD>õ<EFBFBD><C3B5><EFBFBD><EFBFBD><EFBFBD>ͷ<EFBFBD><CDB7><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>IJ<DEB8><C4B2><EFBFBD>
|
// <20><>Ҫ<EFBFBD><D2AA><EFBFBD>õ<EFBFBD><C3B5><EFBFBD><EFBFBD><EFBFBD>ͷ<EFBFBD><CDB7><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>IJ<DEB8><C4B2><EFBFBD>
|
||||||
static int16 scc8660_set_confing_buffer[SCC8660_CONFIG_FINISH][2]=
|
static int16 scc8660_set_confing_buffer[SCC8660_CONFIG_FINISH][2]=
|
||||||
@@ -77,7 +82,7 @@ static int16 scc8660_set_confing_buffer[SCC8660_CONFIG_FINISH][2]=
|
|||||||
{SCC8660_AUTO_EXP, SCC8660_AUTO_EXP_DEF}, // <20>Զ<EFBFBD><D4B6>ع<EFBFBD>
|
{SCC8660_AUTO_EXP, SCC8660_AUTO_EXP_DEF}, // <20>Զ<EFBFBD><D4B6>ع<EFBFBD>
|
||||||
{SCC8660_BRIGHT, SCC8660_BRIGHT_DEF}, // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
{SCC8660_BRIGHT, SCC8660_BRIGHT_DEF}, // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
{SCC8660_FPS, SCC8660_FPS_DEF}, // ͼ<><CDBC>֡<EFBFBD><D6A1>
|
{SCC8660_FPS, SCC8660_FPS_DEF}, // ͼ<><CDBC>֡<EFBFBD><D6A1>
|
||||||
{SCC8660_SET_COL, SCC8660_W}, // ͼ<><CDBC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
{SCC8660_SET_COL, SCC8660_W * 4}, // ͼ<><CDBC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
{SCC8660_SET_ROW, SCC8660_H}, // ͼ<><CDBC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
{SCC8660_SET_ROW, SCC8660_H}, // ͼ<><CDBC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
{SCC8660_PCLK_DIV, SCC8660_PCLK_DIV_DEF}, // PCLK<4C><4B>Ƶϵ<C6B5><CFB5>
|
{SCC8660_PCLK_DIV, SCC8660_PCLK_DIV_DEF}, // PCLK<4C><4B>Ƶϵ<C6B5><CFB5>
|
||||||
{SCC8660_PCLK_MODE, SCC8660_PCLK_MODE_DEF}, // PCLKģʽ
|
{SCC8660_PCLK_MODE, SCC8660_PCLK_MODE_DEF}, // PCLKģʽ
|
||||||
@@ -214,71 +219,6 @@ static void scc8660_uart_callback (void)
|
|||||||
fifo_write_element(&camera_receiver_fifo, data);
|
fifo_write_element(&camera_receiver_fifo, data);
|
||||||
}
|
}
|
||||||
|
|
||||||
//-------------------------------------------------------------------------------------------------------------------
|
|
||||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> SCC8660<36><30><EFBFBD><EFBFBD>ͷ<EFBFBD><CDB7><EFBFBD>ж<EFBFBD>
|
|
||||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> void
|
|
||||||
// <20><><EFBFBD>ز<EFBFBD><D8B2><EFBFBD> void
|
|
||||||
// ʹ<><CAB9>ʾ<EFBFBD><CABE> scc8660_vsync_handler();
|
|
||||||
//-------------------------------------------------------------------------------------------------------------------
|
|
||||||
static void scc8660_vsync_handler(void)
|
|
||||||
{
|
|
||||||
exti_flag_clear(SCC8660_VSYNC_PIN);
|
|
||||||
scc8660_dma_int_num = 0;
|
|
||||||
if(scc8660_dma_init_flag || scc8660_lost_flag)
|
|
||||||
{
|
|
||||||
scc8660_dma_init_flag = 0;
|
|
||||||
IfxDma_resetChannel(&MODULE_DMA, SCC8660_DMA_CH);
|
|
||||||
scc8660_link_list_num = dma_init(SCC8660_DMA_CH,
|
|
||||||
SCC8660_DATA_ADD,
|
|
||||||
(uint8 *)scc8660_image[0],
|
|
||||||
SCC8660_PCLK_PIN,
|
|
||||||
EXTI_TRIGGER_RISING,
|
|
||||||
SCC8660_IMAGE_SIZE); // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƶ<EFBFBD><C6B5>300M <20><><EFBFBD><EFBFBD><EFBFBD>ڶ<EFBFBD><DAB6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ΪFALLING
|
|
||||||
dma_enable(SCC8660_DMA_CH);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
if(1 == scc8660_link_list_num)
|
|
||||||
{
|
|
||||||
dma_set_destination(SCC8660_DMA_CH, (uint8 *)scc8660_image[0]); // û<>в<EFBFBD><D0B2><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ӵ<EFBFBD><D3B4><EFBFBD>ģʽ <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ŀ<EFBFBD>ĵ<EFBFBD>ַ
|
|
||||||
}
|
|
||||||
dma_enable(SCC8660_DMA_CH);
|
|
||||||
}
|
|
||||||
scc8660_lost_flag = 1;
|
|
||||||
}
|
|
||||||
|
|
||||||
//-------------------------------------------------------------------------------------------------------------------
|
|
||||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> SCC8660<36><30><EFBFBD><EFBFBD>ͷDMA<4D><41><EFBFBD><EFBFBD><EFBFBD>ж<EFBFBD>
|
|
||||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> void
|
|
||||||
// <20><><EFBFBD>ز<EFBFBD><D8B2><EFBFBD> void
|
|
||||||
// ʹ<><CAB9>ʾ<EFBFBD><CABE> scc8660_dma_handler();
|
|
||||||
//-------------------------------------------------------------------------------------------------------------------
|
|
||||||
static void scc8660_dma_handler(void)
|
|
||||||
{
|
|
||||||
clear_dma_flag(SCC8660_DMA_CH);
|
|
||||||
|
|
||||||
if(IfxDma_getChannelTransactionRequestLost(&MODULE_DMA, SCC8660_DMA_CH)) // ͼ<><CDBC><EFBFBD><EFBFBD>λ<EFBFBD>ж<EFBFBD>
|
|
||||||
{
|
|
||||||
scc8660_finish_flag = 0;
|
|
||||||
dma_disable(SCC8660_DMA_CH);
|
|
||||||
IfxDma_clearChannelTransactionRequestLost(&MODULE_DMA, SCC8660_DMA_CH);
|
|
||||||
scc8660_dma_init_flag = 1;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
scc8660_dma_int_num++;
|
|
||||||
if(scc8660_dma_int_num >= scc8660_link_list_num)
|
|
||||||
{
|
|
||||||
// <20>ɼ<EFBFBD><C9BC><EFBFBD><EFBFBD><EFBFBD>
|
|
||||||
// һ<><D2BB>ͼ<EFBFBD><CDBC><EFBFBD>Ӳɼ<D3B2><C9BC><EFBFBD>ʼ<EFBFBD><CABC><EFBFBD>ɼ<EFBFBD><C9BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ3.8MS<EFBFBD><EFBFBD><EFBFBD><EFBFBD>(50FPS<50><53>188*120<32>ֱ<EFBFBD><D6B1><EFBFBD>)
|
|
||||||
scc8660_dma_int_num = 0;
|
|
||||||
scc8660_lost_flag = 0;
|
|
||||||
scc8660_finish_flag = 1;
|
|
||||||
dma_disable(SCC8660_DMA_CH);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
//-------------------------------------------------------------------------------------------------------------------
|
//-------------------------------------------------------------------------------------------------------------------
|
||||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD>ͷ ID
|
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD>ͷ ID
|
||||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> void
|
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> void
|
||||||
@@ -390,38 +330,46 @@ uint16 scc8660_get_version (void)
|
|||||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͼ<EFBFBD><CDBC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͼ<EFBFBD><CDBC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> data <20><>Ҫ<EFBFBD><D2AA><EFBFBD>õ<EFBFBD><C3B5><EFBFBD><EFBFBD><EFBFBD>ֵ
|
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> data <20><>Ҫ<EFBFBD><D2AA><EFBFBD>õ<EFBFBD><C3B5><EFBFBD><EFBFBD><EFBFBD>ֵ
|
||||||
// <20><><EFBFBD>ز<EFBFBD><D8B2><EFBFBD> uint8 1-ʧ<><CAA7> 0-<2D>ɹ<EFBFBD>
|
// <20><><EFBFBD>ز<EFBFBD><D8B2><EFBFBD> uint8 1-ʧ<><CAA7> 0-<2D>ɹ<EFBFBD>
|
||||||
// ʹ<><CAB9>ʾ<EFBFBD><CABE> scc8660_set_bright(data);
|
// ʹ<><CAB9>ʾ<EFBFBD><CABE> scc8660_set_brightness(data);
|
||||||
// <20><>ע<EFBFBD><D7A2>Ϣ <20><><EFBFBD>øú<C3B8><C3BA><EFBFBD>ǰ<EFBFBD><C7B0><EFBFBD>ȳ<EFBFBD>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͷ<EFBFBD><CDB7><EFBFBD>ô<EFBFBD><C3B4><EFBFBD> ͨ<><CDA8><EFBFBD>ú<EFBFBD><C3BA><EFBFBD><EFBFBD><EFBFBD><EFBFBD>õIJ<C3B5><C4B2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ᱻ51<35><31>Ƭ<EFBFBD><C6AC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
// <20><>ע<EFBFBD><D7A2>Ϣ <20><><EFBFBD>øú<C3B8><C3BA><EFBFBD>ǰ<EFBFBD><C7B0><EFBFBD>ȳ<EFBFBD>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͷ<EFBFBD><CDB7><EFBFBD>ô<EFBFBD><C3B4><EFBFBD> ͨ<><CDA8><EFBFBD>ú<EFBFBD><C3BA><EFBFBD><EFBFBD><EFBFBD><EFBFBD>õIJ<C3B5><C4B2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ᱻ51<35><31>Ƭ<EFBFBD><C6AC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
//-------------------------------------------------------------------------------------------------------------------
|
//-------------------------------------------------------------------------------------------------------------------
|
||||||
uint8 scc8660_set_bright (uint16 data)
|
uint8 scc8660_set_brightness (uint16 data)
|
||||||
{
|
{
|
||||||
uint8 return_state = 0;
|
uint8 return_state = 0;
|
||||||
uint8 uart_buffer[4];
|
|
||||||
uint16 temp;
|
|
||||||
uint16 timeout_count = 0;
|
|
||||||
uint32 uart_buffer_index = 0;
|
|
||||||
|
|
||||||
uart_buffer[0] = 0xA5;
|
if(SCC8660_UART == scc8660_type)
|
||||||
uart_buffer[1] = SCC8660_SET_BRIGHT;
|
|
||||||
uart_buffer[2] = data >> 8;
|
|
||||||
uart_buffer[3] = (uint8)data;
|
|
||||||
|
|
||||||
uart_write_buffer(SCC8660_COF_UART, uart_buffer, 4);
|
|
||||||
|
|
||||||
do
|
|
||||||
{
|
{
|
||||||
if(3 <= fifo_used(&camera_receiver_fifo))
|
uint8 uart_buffer[4];
|
||||||
|
uint16 temp;
|
||||||
|
uint16 timeout_count = 0;
|
||||||
|
uint32 uart_buffer_index = 0;
|
||||||
|
|
||||||
|
uart_buffer[0] = 0xA5;
|
||||||
|
uart_buffer[1] = SCC8660_SET_BRIGHT;
|
||||||
|
uart_buffer[2] = data >> 8;
|
||||||
|
uart_buffer[3] = (uint8)data;
|
||||||
|
|
||||||
|
uart_write_buffer(SCC8660_COF_UART, uart_buffer, 4);
|
||||||
|
|
||||||
|
do
|
||||||
{
|
{
|
||||||
uart_buffer_index = 3;
|
if(3 <= fifo_used(&camera_receiver_fifo))
|
||||||
fifo_read_buffer(&camera_receiver_fifo, uart_buffer, &uart_buffer_index, FIFO_READ_AND_CLEAN);
|
{
|
||||||
temp = uart_buffer[1] << 8 | uart_buffer[2];
|
uart_buffer_index = 3;
|
||||||
break;
|
fifo_read_buffer(&camera_receiver_fifo, uart_buffer, &uart_buffer_index, FIFO_READ_AND_CLEAN);
|
||||||
|
temp = uart_buffer[1] << 8 | uart_buffer[2];
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
system_delay_ms(1);
|
||||||
|
}while(SCC8660_INIT_TIMEOUT > timeout_count ++);
|
||||||
|
if((temp != data) || (SCC8660_INIT_TIMEOUT <= timeout_count))
|
||||||
|
{
|
||||||
|
return_state = 1;
|
||||||
}
|
}
|
||||||
system_delay_ms(1);
|
}
|
||||||
}while(SCC8660_INIT_TIMEOUT > timeout_count ++);
|
else
|
||||||
if((temp != data) || (SCC8660_INIT_TIMEOUT <= timeout_count))
|
|
||||||
{
|
{
|
||||||
return_state = 1;
|
return_state = scc8660_set_brightness_sccb(data);
|
||||||
}
|
}
|
||||||
return return_state;
|
return return_state;
|
||||||
}
|
}
|
||||||
@@ -436,32 +384,40 @@ uint8 scc8660_set_bright (uint16 data)
|
|||||||
uint8 scc8660_set_white_balance (uint16 data)
|
uint8 scc8660_set_white_balance (uint16 data)
|
||||||
{
|
{
|
||||||
uint8 return_state = 0;
|
uint8 return_state = 0;
|
||||||
uint8 uart_buffer[4];
|
|
||||||
uint16 temp;
|
|
||||||
uint16 timeout_count = 0;
|
|
||||||
uint32 uart_buffer_index = 0;
|
|
||||||
|
|
||||||
uart_buffer[0] = 0xA5;
|
if(SCC8660_UART == scc8660_type)
|
||||||
uart_buffer[1] = SCC8660_SET_MANUAL_WB;
|
|
||||||
uart_buffer[2] = data >> 8;
|
|
||||||
uart_buffer[3] = (uint8)data;
|
|
||||||
|
|
||||||
uart_write_buffer(SCC8660_COF_UART, uart_buffer, 4);
|
|
||||||
|
|
||||||
do
|
|
||||||
{
|
{
|
||||||
if(3 <= fifo_used(&camera_receiver_fifo))
|
uint8 uart_buffer[4];
|
||||||
|
uint16 temp;
|
||||||
|
uint16 timeout_count = 0;
|
||||||
|
uint32 uart_buffer_index = 0;
|
||||||
|
|
||||||
|
uart_buffer[0] = 0xA5;
|
||||||
|
uart_buffer[1] = SCC8660_SET_MANUAL_WB;
|
||||||
|
uart_buffer[2] = data >> 8;
|
||||||
|
uart_buffer[3] = (uint8)data;
|
||||||
|
|
||||||
|
uart_write_buffer(SCC8660_COF_UART, uart_buffer, 4);
|
||||||
|
|
||||||
|
do
|
||||||
{
|
{
|
||||||
uart_buffer_index = 3;
|
if(3 <= fifo_used(&camera_receiver_fifo))
|
||||||
fifo_read_buffer(&camera_receiver_fifo, uart_buffer, &uart_buffer_index, FIFO_READ_AND_CLEAN);
|
{
|
||||||
temp = uart_buffer[1] << 8 | uart_buffer[2];
|
uart_buffer_index = 3;
|
||||||
break;
|
fifo_read_buffer(&camera_receiver_fifo, uart_buffer, &uart_buffer_index, FIFO_READ_AND_CLEAN);
|
||||||
|
temp = uart_buffer[1] << 8 | uart_buffer[2];
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
system_delay_ms(1);
|
||||||
|
}while(SCC8660_INIT_TIMEOUT > timeout_count ++);
|
||||||
|
if((temp != data) || (SCC8660_INIT_TIMEOUT <= timeout_count))
|
||||||
|
{
|
||||||
|
return_state = 1;
|
||||||
}
|
}
|
||||||
system_delay_ms(1);
|
}
|
||||||
}while(SCC8660_INIT_TIMEOUT > timeout_count ++);
|
else
|
||||||
if((temp != data) || (SCC8660_INIT_TIMEOUT <= timeout_count))
|
|
||||||
{
|
{
|
||||||
return_state = 1;
|
return_state = scc8660_set_manual_wb_sccb(data);
|
||||||
}
|
}
|
||||||
return return_state;
|
return return_state;
|
||||||
}
|
}
|
||||||
@@ -477,43 +433,117 @@ uint8 scc8660_set_white_balance (uint16 data)
|
|||||||
uint8 scc8660_set_reg (uint8 addr, uint16 data)
|
uint8 scc8660_set_reg (uint8 addr, uint16 data)
|
||||||
{
|
{
|
||||||
uint8 return_state = 0;
|
uint8 return_state = 0;
|
||||||
uint8 uart_buffer[4];
|
|
||||||
uint16 temp;
|
|
||||||
uint16 timeout_count = 0;
|
|
||||||
uint32 uart_buffer_index = 0;
|
|
||||||
|
|
||||||
uart_buffer[0] = 0xA5;
|
if(SCC8660_UART == scc8660_type)
|
||||||
uart_buffer[1] = SCC8660_SET_REG_ADDR;
|
|
||||||
uart_buffer[2] = 0x00;
|
|
||||||
uart_buffer[3] = (uint8)addr;
|
|
||||||
uart_write_buffer(SCC8660_COF_UART, uart_buffer, 4);
|
|
||||||
|
|
||||||
system_delay_ms(10);
|
|
||||||
uart_buffer[0] = 0xA5;
|
|
||||||
uart_buffer[1] = SCC8660_SET_REG_DATA;
|
|
||||||
temp = data;
|
|
||||||
uart_buffer[2] = temp >> 8;
|
|
||||||
uart_buffer[3] = (uint8)temp;
|
|
||||||
uart_write_buffer(SCC8660_COF_UART, uart_buffer, 4);
|
|
||||||
|
|
||||||
do
|
|
||||||
{
|
{
|
||||||
if(3 <= fifo_used(&camera_receiver_fifo))
|
uint8 uart_buffer[4];
|
||||||
|
uint16 temp;
|
||||||
|
uint16 timeout_count = 0;
|
||||||
|
uint32 uart_buffer_index = 0;
|
||||||
|
|
||||||
|
uart_buffer[0] = 0xA5;
|
||||||
|
uart_buffer[1] = SCC8660_SET_REG_ADDR;
|
||||||
|
uart_buffer[2] = 0x00;
|
||||||
|
uart_buffer[3] = (uint8)addr;
|
||||||
|
uart_write_buffer(SCC8660_COF_UART, uart_buffer, 4);
|
||||||
|
|
||||||
|
system_delay_ms(10);
|
||||||
|
uart_buffer[0] = 0xA5;
|
||||||
|
uart_buffer[1] = SCC8660_SET_REG_DATA;
|
||||||
|
temp = data;
|
||||||
|
uart_buffer[2] = temp >> 8;
|
||||||
|
uart_buffer[3] = (uint8)temp;
|
||||||
|
uart_write_buffer(SCC8660_COF_UART, uart_buffer, 4);
|
||||||
|
|
||||||
|
do
|
||||||
{
|
{
|
||||||
uart_buffer_index = 3;
|
if(3 <= fifo_used(&camera_receiver_fifo))
|
||||||
fifo_read_buffer(&camera_receiver_fifo, uart_buffer, &uart_buffer_index, FIFO_READ_AND_CLEAN);
|
{
|
||||||
temp = uart_buffer[1] << 8 | uart_buffer[2];
|
uart_buffer_index = 3;
|
||||||
break;
|
fifo_read_buffer(&camera_receiver_fifo, uart_buffer, &uart_buffer_index, FIFO_READ_AND_CLEAN);
|
||||||
|
temp = uart_buffer[1] << 8 | uart_buffer[2];
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
system_delay_ms(1);
|
||||||
|
}while(SCC8660_INIT_TIMEOUT > timeout_count ++);
|
||||||
|
if((temp != data) || (SCC8660_INIT_TIMEOUT <= timeout_count))
|
||||||
|
{
|
||||||
|
return_state = 1;
|
||||||
}
|
}
|
||||||
system_delay_ms(1);
|
|
||||||
}while(SCC8660_INIT_TIMEOUT > timeout_count ++);
|
}
|
||||||
if((temp != data) || (SCC8660_INIT_TIMEOUT <= timeout_count))
|
else
|
||||||
{
|
{
|
||||||
return_state = 1;
|
return_state = scc8660_set_reg_sccb(addr, data);
|
||||||
}
|
}
|
||||||
return return_state;
|
return return_state;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//-------------------------------------------------------------------------------------------------------------------
|
||||||
|
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> SCC8660<36><30><EFBFBD><EFBFBD>ͷ<EFBFBD><CDB7><EFBFBD>ж<EFBFBD>
|
||||||
|
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> void
|
||||||
|
// <20><><EFBFBD>ز<EFBFBD><D8B2><EFBFBD> void
|
||||||
|
// ʹ<><CAB9>ʾ<EFBFBD><CABE> scc8660_vsync_handler();
|
||||||
|
//-------------------------------------------------------------------------------------------------------------------
|
||||||
|
static void scc8660_vsync_handler(void)
|
||||||
|
{
|
||||||
|
exti_flag_clear(SCC8660_VSYNC_PIN);
|
||||||
|
scc8660_dma_int_num = 0;
|
||||||
|
if(scc8660_dma_init_flag || scc8660_lost_flag)
|
||||||
|
{
|
||||||
|
scc8660_dma_init_flag = 0;
|
||||||
|
IfxDma_resetChannel(&MODULE_DMA, SCC8660_DMA_CH);
|
||||||
|
scc8660_link_list_num = dma_init(SCC8660_DMA_CH,
|
||||||
|
SCC8660_DATA_ADD,
|
||||||
|
(uint8 *)scc8660_image[0],
|
||||||
|
SCC8660_PCLK_PIN,
|
||||||
|
EXTI_TRIGGER_RISING,
|
||||||
|
SCC8660_IMAGE_SIZE);
|
||||||
|
dma_enable(SCC8660_DMA_CH);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
if(1 == scc8660_link_list_num)
|
||||||
|
{
|
||||||
|
dma_set_destination(SCC8660_DMA_CH, (uint8 *)scc8660_image[0]); // û<>в<EFBFBD><D0B2><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ӵ<EFBFBD><D3B4><EFBFBD>ģʽ <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ŀ<EFBFBD>ĵ<EFBFBD>ַ
|
||||||
|
}
|
||||||
|
dma_enable(SCC8660_DMA_CH);
|
||||||
|
}
|
||||||
|
scc8660_lost_flag = 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
//-------------------------------------------------------------------------------------------------------------------
|
||||||
|
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> SCC8660<36><30><EFBFBD><EFBFBD>ͷDMA<4D><41><EFBFBD><EFBFBD><EFBFBD>ж<EFBFBD>
|
||||||
|
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> void
|
||||||
|
// <20><><EFBFBD>ز<EFBFBD><D8B2><EFBFBD> void
|
||||||
|
// ʹ<><CAB9>ʾ<EFBFBD><CABE> scc8660_dma_handler();
|
||||||
|
//-------------------------------------------------------------------------------------------------------------------
|
||||||
|
static void scc8660_dma_handler(void)
|
||||||
|
{
|
||||||
|
clear_dma_flag(SCC8660_DMA_CH);
|
||||||
|
|
||||||
|
if(IfxDma_getChannelTransactionRequestLost(&MODULE_DMA, SCC8660_DMA_CH)) // ͼ<><CDBC><EFBFBD><EFBFBD>λ<EFBFBD>ж<EFBFBD>
|
||||||
|
{
|
||||||
|
scc8660_finish_flag = 0;
|
||||||
|
dma_disable(SCC8660_DMA_CH);
|
||||||
|
IfxDma_clearChannelTransactionRequestLost(&MODULE_DMA, SCC8660_DMA_CH);
|
||||||
|
scc8660_dma_init_flag = 1;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
scc8660_dma_int_num++;
|
||||||
|
if(scc8660_dma_int_num >= scc8660_link_list_num)
|
||||||
|
{
|
||||||
|
// <20>ɼ<EFBFBD><C9BC><EFBFBD><EFBFBD><EFBFBD>
|
||||||
|
// һ<><D2BB>ͼ<EFBFBD><CDBC><EFBFBD>Ӳɼ<D3B2><C9BC><EFBFBD>ʼ<EFBFBD><CABC><EFBFBD>ɼ<EFBFBD><C9BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ3.8MS<EFBFBD><EFBFBD><EFBFBD><EFBFBD>(50FPS<50><53>188*120<32>ֱ<EFBFBD><D6B1><EFBFBD>)
|
||||||
|
scc8660_dma_int_num = 0;
|
||||||
|
scc8660_lost_flag = 0;
|
||||||
|
scc8660_finish_flag = 1;
|
||||||
|
dma_disable(SCC8660_DMA_CH);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
//-------------------------------------------------------------------------------------------------------------------
|
//-------------------------------------------------------------------------------------------------------------------
|
||||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> SCC8660 <20><><EFBFBD><EFBFBD>ͷ<EFBFBD><CDB7>ʼ<EFBFBD><CABC>
|
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> SCC8660 <20><><EFBFBD><EFBFBD>ͷ<EFBFBD><CDB7>ʼ<EFBFBD><CABC>
|
||||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> void
|
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> void
|
||||||
@@ -524,51 +554,54 @@ uint8 scc8660_set_reg (uint8 addr, uint16 data)
|
|||||||
uint8 scc8660_init (void)
|
uint8 scc8660_init (void)
|
||||||
{
|
{
|
||||||
uint8 return_state = 0;
|
uint8 return_state = 0;
|
||||||
uint16 scc8660_version = 0;
|
soft_iic_info_struct scc8660_iic_struct;
|
||||||
|
|
||||||
|
// <20><>ʼ<EFBFBD><CABC>֮ǰ<D6AE><C7B0><EFBFBD>߳<EFBFBD><DFB3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
gpio_init(P02_0, GPO, GPIO_HIGH, GPO_PUSH_PULL);
|
gpio_init(P02_0, GPO, GPIO_HIGH, GPO_PUSH_PULL);
|
||||||
gpio_init(P02_1, GPO, GPIO_HIGH, GPO_PUSH_PULL);
|
gpio_init(P02_1, GPO, GPIO_HIGH, GPO_PUSH_PULL);
|
||||||
|
|
||||||
// <20><>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͷ
|
|
||||||
uart_init(SCC8660_COF_UART, SCC8660_COF_BAUR, SCC8660_COF_UART_RX, SCC8660_COF_UART_TX);
|
|
||||||
uart_rx_interrupt(SCC8660_COF_UART, 1);
|
|
||||||
|
|
||||||
system_delay_ms(200);
|
|
||||||
|
|
||||||
set_camera_type(CAMERA_COLOR, scc8660_vsync_handler, scc8660_dma_handler, scc8660_uart_callback); // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͷ<EFBFBD><CDB7><EFBFBD><EFBFBD>
|
|
||||||
camera_fifo_init();
|
|
||||||
do
|
do
|
||||||
{
|
{
|
||||||
// <20>ȴ<EFBFBD><C8B4><EFBFBD><EFBFBD><EFBFBD>ͷ<EFBFBD>ϵ<EFBFBD><CFB5><EFBFBD>ʼ<EFBFBD><CABC><EFBFBD>ɹ<EFBFBD> <20><>ʽ<EFBFBD><CABD><EFBFBD><EFBFBD><EFBFBD>֣<EFBFBD><D6A3><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD>ͨ<EFBFBD><CDA8><EFBFBD><EFBFBD>ȡ<EFBFBD><C8A1><EFBFBD>õķ<C3B5>ʽ <20><>ѡһ
|
system_delay_ms(200);
|
||||||
// system_delay_ms(1000); // <20><>ʱ<EFBFBD><CAB1>ʽ
|
set_camera_type(CAMERA_COLOR, scc8660_vsync_handler, scc8660_dma_handler, NULL); // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͷ<EFBFBD><CDB7><EFBFBD><EFBFBD>
|
||||||
scc8660_version = scc8660_get_version(); // <20><>ȡ<EFBFBD><C8A1><EFBFBD>õķ<C3B5>ʽ
|
// <20><><EFBFBD>ȳ<EFBFBD><C8B3><EFBFBD>SCCBͨѶ
|
||||||
if(scc8660_set_config(scc8660_set_confing_buffer))
|
scc8660_type = SCC8660_SCCB;
|
||||||
|
soft_iic_init(&scc8660_iic_struct, 0, SCC8660_COF_IIC_DELAY, SCC8660_COF_IIC_SCL, SCC8660_COF_IIC_SDA);
|
||||||
|
if(scc8660_set_config_sccb(&scc8660_iic_struct, scc8660_set_confing_buffer))
|
||||||
{
|
{
|
||||||
set_camera_type(NO_CAMERE, NULL, NULL, NULL);
|
// SCCBͨѶʧ<D1B6>ܣ<EFBFBD><DCA3><EFBFBD><EFBFBD>Դ<EFBFBD><D4B4><EFBFBD>ͨѶ
|
||||||
return_state = 1;
|
scc8660_type = SCC8660_UART;
|
||||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>˶<EFBFBD><CBB6><EFBFBD><EFBFBD><EFBFBD>Ϣ <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD>λ<EFBFBD><CEBB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
camera_fifo_init();
|
||||||
// <20><>ô<EFBFBD><EFBFBD><EFBFBD>Ǵ<EFBFBD><EFBFBD><EFBFBD>ͨ<EFBFBD>ų<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD>˳<EFBFBD><EFBFBD><EFBFBD>
|
set_camera_type(CAMERA_COLOR, scc8660_vsync_handler, scc8660_dma_handler, &scc8660_uart_callback); // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͷ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
// <20><><EFBFBD><EFBFBD>һ<EFBFBD>½<EFBFBD><C2BD><EFBFBD><EFBFBD><EFBFBD>û<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>û<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ܾ<EFBFBD><EFBFBD>ǻ<EFBFBD><EFBFBD><EFBFBD>
|
uart_init (SCC8660_COF_UART, SCC8660_COF_BAUR, SCC8660_COF_UART_RX, SCC8660_COF_UART_TX); //<2F><>ʼ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͷ
|
||||||
zf_log(0, "SCC8660 set config error.");
|
uart_rx_interrupt(SCC8660_COF_UART, 1);
|
||||||
break;
|
fifo_clear(&camera_receiver_fifo);
|
||||||
}
|
|
||||||
|
|
||||||
if(0 == return_state)
|
if(scc8660_set_config(scc8660_set_confing_buffer))
|
||||||
{
|
|
||||||
// <20><>ȡ<EFBFBD><C8A1><EFBFBD>ñ<EFBFBD><C3B1>ڲ鿴<DAB2><E9BFB4><EFBFBD><EFBFBD><EFBFBD>Ƿ<EFBFBD><C7B7><EFBFBD>ȷ
|
|
||||||
if(scc8660_get_config(scc8660_get_confing_buffer))
|
|
||||||
{
|
{
|
||||||
set_camera_type(NO_CAMERE, NULL, NULL, NULL);
|
|
||||||
return_state = 1;
|
|
||||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>˶<EFBFBD><CBB6><EFBFBD><EFBFBD><EFBFBD>Ϣ <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD>λ<EFBFBD><CEBB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>˶<EFBFBD><CBB6><EFBFBD><EFBFBD><EFBFBD>Ϣ <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD>λ<EFBFBD><CEBB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
// <20><>ô<EFBFBD><C3B4><EFBFBD>Ǵ<EFBFBD><EFBFBD><EFBFBD>ͨ<EFBFBD>ų<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD>˳<EFBFBD><EFBFBD><EFBFBD>
|
// <20><>ô<EFBFBD><C3B4><EFBFBD><EFBFBD>ͨ<EFBFBD>ų<EFBFBD><C5B3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD>˳<EFBFBD><CBB3><EFBFBD>
|
||||||
// <20><><EFBFBD><EFBFBD>һ<EFBFBD>½<EFBFBD><C2BD><EFBFBD><EFBFBD><EFBFBD>û<EFBFBD><C3BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>û<EFBFBD><C3BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ܾ<EFBFBD><DCBE>ǻ<EFBFBD><C7BB><EFBFBD>
|
// <20><><EFBFBD><EFBFBD>һ<EFBFBD>½<EFBFBD><C2BD><EFBFBD><EFBFBD><EFBFBD>û<EFBFBD><C3BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>û<EFBFBD><C3BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ܾ<EFBFBD><DCBE>ǻ<EFBFBD><C7BB><EFBFBD>
|
||||||
zf_log(0, "SCC8660 set config error.");
|
zf_log(0, "SCC8660 set config error.");
|
||||||
|
set_camera_type(NO_CAMERE, NULL, NULL, NULL);
|
||||||
|
return_state = 1;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
scc8660_link_list_num = camera_init(SCC8660_DATA_ADD, (uint8 *)scc8660_image[0], SCC8660_IMAGE_SIZE);
|
// <20><>ȡ<EFBFBD><C8A1><EFBFBD>ñ<EFBFBD><C3B1>ڲ鿴<DAB2><E9BFB4><EFBFBD><EFBFBD><EFBFBD>Ƿ<EFBFBD><C7B7><EFBFBD>ȷ
|
||||||
|
if(scc8660_get_config(scc8660_get_confing_buffer))
|
||||||
|
{
|
||||||
|
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>˶<EFBFBD><CBB6><EFBFBD><EFBFBD><EFBFBD>Ϣ <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD>λ<EFBFBD><CEBB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
|
// <20><>ô<EFBFBD><C3B4><EFBFBD>Ǵ<EFBFBD><C7B4><EFBFBD>ͨ<EFBFBD>ų<EFBFBD><C5B3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD>˳<EFBFBD><CBB3><EFBFBD>
|
||||||
|
// <20><><EFBFBD><EFBFBD>һ<EFBFBD>½<EFBFBD><C2BD><EFBFBD><EFBFBD><EFBFBD>û<EFBFBD><C3BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>û<EFBFBD><C3BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ܾ<EFBFBD><DCBE>ǻ<EFBFBD><C7BB><EFBFBD>
|
||||||
|
zf_log(0, "SCC8660 get config error.");
|
||||||
|
set_camera_type(NO_CAMERE, NULL, NULL, NULL);
|
||||||
|
return_state = 1;
|
||||||
|
break;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
scc8660_link_list_num = camera_init(SCC8660_DATA_ADD, (uint8 *)scc8660_image[0], SCC8660_IMAGE_SIZE);
|
||||||
}while(0);
|
}while(0);
|
||||||
|
|
||||||
return return_state;
|
return return_state;
|
||||||
|
|||||||
@@ -31,7 +31,7 @@
|
|||||||
* <20>ļ<DEB8>¼
|
* <20>ļ<DEB8>¼
|
||||||
* <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><>ע
|
* <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><>ע
|
||||||
* 2022-09-15 pudding first version
|
* 2022-09-15 pudding first version
|
||||||
* 2023-04-28 pudding <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ע<EFBFBD><EFBFBD>˵<EFBFBD><EFBFBD>
|
* 2024-02-02 pudding <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>MCU<EFBFBD><EFBFBD>ͫ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
********************************************************************************************************************/
|
********************************************************************************************************************/
|
||||||
/*********************************************************************************************************************
|
/*********************************************************************************************************************
|
||||||
* <20><><EFBFBD>߶<EFBFBD><DFB6>壺
|
* <20><><EFBFBD>߶<EFBFBD><DFB6>壺
|
||||||
@@ -59,35 +59,36 @@
|
|||||||
#define SCC8660_COF_UART_TX (UART1_RX_P02_3) // <20><>ͫ UART-TX <20><><EFBFBD><EFBFBD> Ҫ<><D2AA><EFBFBD>ڵ<EFBFBD>Ƭ<EFBFBD><C6AC> RX <20><>
|
#define SCC8660_COF_UART_TX (UART1_RX_P02_3) // <20><>ͫ UART-TX <20><><EFBFBD><EFBFBD> Ҫ<><D2AA><EFBFBD>ڵ<EFBFBD>Ƭ<EFBFBD><C6AC> RX <20><>
|
||||||
#define SCC8660_COF_UART_RX (UART1_TX_P02_2) // <20><>ͫ UART-RX <20><><EFBFBD><EFBFBD> Ҫ<><D2AA><EFBFBD>ڵ<EFBFBD>Ƭ<EFBFBD><C6AC> TX <20><>
|
#define SCC8660_COF_UART_RX (UART1_TX_P02_2) // <20><>ͫ UART-RX <20><><EFBFBD><EFBFBD> Ҫ<><D2AA><EFBFBD>ڵ<EFBFBD>Ƭ<EFBFBD><C6AC> TX <20><>
|
||||||
|
|
||||||
|
#define SCC8660_COF_IIC_DELAY (800) // <20><>ͫ IIC <20><>ʱ
|
||||||
|
#define SCC8660_COF_IIC_SCL (P02_3) // <20><>ͫ IIC-SCL <20><><EFBFBD><EFBFBD>
|
||||||
|
#define SCC8660_COF_IIC_SDA (P02_2) // <20><>ͫ IIC-SDA <20><><EFBFBD><EFBFBD>
|
||||||
|
|
||||||
#define SCC8660_DMA_CH (IfxDma_ChannelId_5)
|
#define SCC8660_DMA_CH (IfxDma_ChannelId_5)
|
||||||
|
|
||||||
#define SCC8660_PCLK_PIN (ERU_CH2_REQ14_P02_1) // PCLK <20><><EFBFBD><EFBFBD><EFBFBD>ź<EFBFBD> TIM_ETR <20><><EFBFBD>Ž<EFBFBD>ֹ<EFBFBD><D6B9><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
#define SCC8660_PCLK_PIN (ERU_CH2_REQ14_P02_1) // PCLK <20><><EFBFBD><EFBFBD><EFBFBD>ź<EFBFBD> TIM_ETR <20><><EFBFBD>Ž<EFBFBD>ֹ<EFBFBD><D6B9><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
|
|
||||||
#define SCC8660_VSYNC_PIN (ERU_CH3_REQ6_P02_0 ) // <20><><EFBFBD>ж<EFBFBD><D0B6><EFBFBD><EFBFBD><EFBFBD>
|
#define SCC8660_VSYNC_PIN (ERU_CH3_REQ6_P02_0 ) // <20><><EFBFBD>ж<EFBFBD><D0B6><EFBFBD><EFBFBD><EFBFBD>
|
||||||
|
|
||||||
#define SCC8660_DATA_PIN (P00_0) // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ֻ<><D6BB><EFBFBD><EFBFBD> GPIOx0 <20><><EFBFBD><EFBFBD> GPIOx8 <20><>ʼ <20><><EFBFBD><EFBFBD><EFBFBD>˸<EFBFBD><CBB8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> F0-F7
|
#define SCC8660_DATA_PIN (P00_0) // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ֻ<><D6BB><EFBFBD><EFBFBD> GPIOx0 <20><><EFBFBD><EFBFBD> GPIOx8 <20><>ʼ <20><><EFBFBD><EFBFBD><EFBFBD>˸<EFBFBD><CBB8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> F0-F7
|
||||||
#define SCC8660_DATA_ADD (get_port_in_addr(SCC8660_DATA_PIN))
|
#define SCC8660_DATA_ADD (get_port_in_addr(SCC8660_DATA_PIN))
|
||||||
|
|
||||||
#define SCC8660_INIT_TIMEOUT (0x00F0) // Ĭ<>ϵ<EFBFBD><CFB5><EFBFBD><EFBFBD><EFBFBD>ͷ<EFBFBD><CDB7>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD>ʱʱ<CAB1><CAB1> <20><><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA>λ
|
#define SCC8660_INIT_TIMEOUT (0x00F0) // Ĭ<>ϵ<EFBFBD><CFB5><EFBFBD><EFBFBD><EFBFBD>ͷ<EFBFBD><CDB7>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD>ʱʱ<CAB1><CAB1> <20><><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA>λ
|
||||||
//================================================<3D><><EFBFBD><EFBFBD> SCC8660 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>================================================
|
//================================================<3D><><EFBFBD><EFBFBD> SCC8660 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>================================================
|
||||||
|
|
||||||
//================================================<3D><><EFBFBD><EFBFBD> SCC8660 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>================================================
|
//================================================<3D><><EFBFBD><EFBFBD> SCC8660 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ã<EFBFBD><EFBFBD><EFBFBD>֧<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͫ<EFBFBD><EFBFBD>֡<EFBFBD>ʰ汾<EFBFBD><EFBFBD>===========================
|
||||||
#define SCC8660_W (160) // ʵ<EFBFBD><EFBFBD>ͼ<EFBFBD><EFBFBD><EFBFBD>ֱ<EFBFBD><EFBFBD>ʿ<EFBFBD><EFBFBD><EFBFBD> <20><>ѡ<EFBFBD><D1A1><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA>160 180
|
#define SCC8660_W (160) // ͼ<><CDBC><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>ѡ<EFBFBD><D1A1><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA>160 80 40
|
||||||
#define SCC8660_H (120) // ʵ<EFBFBD><EFBFBD>ͼ<EFBFBD><EFBFBD><EFBFBD>ֱ<EFBFBD><EFBFBD>ʸ߶<EFBFBD> <20><>ѡ<EFBFBD><D1A1><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA>120 160
|
#define SCC8660_H (120) // ͼ<><CDBC><EFBFBD>߶<EFBFBD> <20><>ѡ<EFBFBD><D1A1><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA>120 160 240
|
||||||
#define SCC8660_IMAGE_SIZE (SCC8660_W * 2 * SCC8660_H) // <20><><EFBFBD><EFBFBD>ͼ<EFBFBD><CDBC><EFBFBD><EFBFBD>С SCC8660_W*2*SCC8660_H <20><><EFBFBD>ܳ<EFBFBD><DCB3><EFBFBD> 65535
|
#define SCC8660_IMAGE_SIZE (SCC8660_W * 2 * SCC8660_H) // <20><><EFBFBD><EFBFBD>ͼ<EFBFBD><CDBC><EFBFBD><EFBFBD>С SCC8660_W*2*SCC8660_H <20><><EFBFBD>ܳ<EFBFBD><DCB3><EFBFBD> 65535
|
||||||
|
|
||||||
#define SCC8660_AUTO_EXP_DEF (0 ) // <20>Զ<EFBFBD><D4B6>ع<EFBFBD> Ĭ<>ϲ<EFBFBD><CFB2><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Զ<EFBFBD><D4B6>ع<EFBFBD><D8B9><EFBFBD><EFBFBD><EFBFBD> <20><>Χ [0-1] 0Ϊ<30>ر<EFBFBD>
|
#define SCC8660_AUTO_EXP_DEF (0 ) // <20>Զ<EFBFBD><D4B6>ع<EFBFBD> Ĭ<>ϲ<EFBFBD><CFB2><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Զ<EFBFBD><D4B6>ع<EFBFBD><D8B9><EFBFBD><EFBFBD><EFBFBD> <20><>Χ [0-1] 0Ϊ<30>ر<EFBFBD>
|
||||||
#define SCC8660_BRIGHT_DEF (300) // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ֶ<EFBFBD><D6B6>ع<EFBFBD>Ĭ<EFBFBD>ϣ<EFBFBD>300 <20>ֶ<EFBFBD><D6B6>ع<EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Χ0-65535 <20>Զ<EFBFBD><D4B6>ع<EFBFBD><D8B9>Ƽ<EFBFBD>ֵ<EFBFBD><D6B5>100 <20>Զ<EFBFBD><D4B6>ع<EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>÷<EFBFBD>Χ0-255
|
#define SCC8660_BRIGHT_DEF (500) // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ֶ<EFBFBD><D6B6>ع<EFBFBD>Ĭ<EFBFBD>ϣ<EFBFBD>300 <20>ֶ<EFBFBD><D6B6>ع<EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Χ0-65535 <20>Զ<EFBFBD><D4B6>ع<EFBFBD><D8B9>Ƽ<EFBFBD>ֵ<EFBFBD><D6B5>100 <20>Զ<EFBFBD><D4B6>ع<EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>÷<EFBFBD>Χ0-255
|
||||||
#define SCC8660_FPS_DEF (50 ) // ͼ<><CDBC>֡<EFBFBD><D6A1> Ĭ<>ϣ<EFBFBD>50 <20><>ѡ<EFBFBD><D1A1><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA>60 50 30 25<32><35> ʵ<><CAB5>֡<EFBFBD>ʻ<EFBFBD><CABB><EFBFBD>Ҫ<EFBFBD><D2AA>SCC8660_PCLK_DIV<49><56><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
#define SCC8660_FPS_DEF (50 ) // ͼ<><CDBC>֡<EFBFBD><D6A1> Ĭ<>ϣ<EFBFBD>50 <20><>ѡ<EFBFBD><D1A1><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA>60 50 30 25<32><35> ʵ<><CAB5>֡<EFBFBD>ʻ<EFBFBD><CABB><EFBFBD>Ҫ<EFBFBD><D2AA>SCC8660_PCLK_DIV<49><56><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
#define SCC8660_PCLK_DIV_DEF (5 ) // PCLK<4C><4B>Ƶϵ<C6B5><CFB5> Ĭ<>ϣ<EFBFBD>5 <20><>ѡ<EFBFBD><D1A1><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA><0:1/1> <1:2/3> <2:1/2> <3:1/3> <4:1/4> <5:1/8>
|
#define SCC8660_PCLK_DIV_DEF (2 ) // PCLK<4C><4B>Ƶϵ<C6B5><CFB5> Ĭ<>ϣ<EFBFBD>5 <20><>ѡ<EFBFBD><D1A1><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA><0:1/1> <1:2/3> <2:1/2> <3:1/3> <4:1/4> <5:1/8>
|
||||||
// <20><>Ƶϵ<C6B5><CFB5>Խ<EFBFBD><D4BD><EFBFBD><EFBFBD>PCLKƵ<4B><C6B5>Խ<EFBFBD>ͣ<EFBFBD><CDA3><EFBFBD><EFBFBD><EFBFBD>PCLK<4C><4B><EFBFBD>Լ<EFBFBD><D4BC><EFBFBD>DVP<56>ӿڵĸ<DAB5><C4B8>ţ<EFBFBD><C5A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>PCLKƵ<4B><C6B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ӱ<EFBFBD><D3B0>֡<EFBFBD>ʡ<EFBFBD><CAA1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>뱣<EFBFBD><EBB1A3>Ĭ<EFBFBD>ϡ<EFBFBD>
|
// <20><>Ƶϵ<C6B5><CFB5>Խ<EFBFBD><D4BD><EFBFBD><EFBFBD>PCLKƵ<4B><C6B5>Խ<EFBFBD>ͣ<EFBFBD><CDA3><EFBFBD><EFBFBD><EFBFBD>PCLK<4C><4B><EFBFBD>Լ<EFBFBD><D4BC><EFBFBD>DVP<56>ӿڵĸ<DAB5><C4B8>ţ<EFBFBD><C5A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>PCLKƵ<4B><C6B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ӱ<EFBFBD><D3B0>֡<EFBFBD>ʡ<EFBFBD><CAA1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>뱣<EFBFBD><EBB1A3>Ĭ<EFBFBD>ϡ<EFBFBD>
|
||||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>FPSΪ50֡<30><D6A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>pclk<6C><6B>Ƶϵ<C6B5><CFB5>ѡ<EFBFBD><D1A1><EFBFBD><EFBFBD>Ϊ5<CEAA><35><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͷ<EFBFBD><CDB7><EFBFBD><EFBFBD><EFBFBD><EFBFBD>֡<EFBFBD><D6A1>Ϊ50*<2A><>1/8<><38>=6.25֡
|
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>FPSΪ50֡<30><D6A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>pclk<6C><6B>Ƶϵ<C6B5><CFB5>ѡ<EFBFBD><D1A1><EFBFBD><EFBFBD>Ϊ5<CEAA><35><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͷ<EFBFBD><CDB7><EFBFBD><EFBFBD><EFBFBD><EFBFBD>֡<EFBFBD><D6A1>Ϊ50*<2A><>1/8<><38>=6.25֡
|
||||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>£<EFBFBD>SCC8660_PCLK_DIV<49><56><EFBFBD><EFBFBD>Խ<EFBFBD><D4BD>ͼ<EFBFBD><CDBC><EFBFBD><EFBFBD>Խ<EFBFBD><D4BD>
|
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>£<EFBFBD>SCC8660_PCLK_DIV<49><56><EFBFBD><EFBFBD>Խ<EFBFBD><D4BD>ͼ<EFBFBD><CDBC><EFBFBD><EFBFBD>Խ<EFBFBD><D4BD>
|
||||||
#define SCC8660_PCLK_MODE_DEF (0 ) // PCLKģʽ Ĭ<>ϣ<EFBFBD>0 <20><>ѡ<EFBFBD><D1A1><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA>[0,1] 0<><30><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ź<EFBFBD> 1<><31><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ź<EFBFBD> <ͨ<><CDA8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ0<CEAA><30><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʹ<EFBFBD><CAB9>STM32<33><32>DCMI<4D>ӿڲɼ<DAB2><C9BC><EFBFBD>Ҫ<EFBFBD><D2AA><EFBFBD><EFBFBD>Ϊ1>
|
#define SCC8660_PCLK_MODE_DEF (0 ) // PCLKģʽ Ĭ<EFBFBD>ϣ<EFBFBD>0 <20><>ѡ<EFBFBD><D1A1><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA>[0,1] 0<><30><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ź<EFBFBD> 1<><31><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ź<EFBFBD> <ͨ<><CDA8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ0<CEAA><30><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʹ<EFBFBD><CAB9>STM32<33><32>DCMI<4D>ӿڲɼ<DAB2><C9BC><EFBFBD>Ҫ<EFBFBD><D2AA><EFBFBD><EFBFBD>Ϊ1>
|
||||||
#define SCC8660_COLOR_MODE_DEF (1 ) // ͼ<><CDBC>ɫ<EFBFBD><C9AB>ģʽ Ĭ<>ϣ<EFBFBD>0 <20><>ѡ<EFBFBD><D1A1><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA>[0,1] 0<><30><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɫģʽ 1<><31><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ģʽ<C4A3><CABD>ɫ<EFBFBD>ʱ<EFBFBD><CAB1>Ͷ<EFBFBD><CDB6><EFBFBD><EFBFBD>ߣ<EFBFBD>
|
#define SCC8660_COLOR_MODE_DEF (0 ) // ͼ<><CDBC>ɫ<EFBFBD><C9AB>ģʽ Ĭ<>ϣ<EFBFBD>0 <20><>ѡ<EFBFBD><D1A1><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA>[0,1] 0<><30><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɫģʽ 1<><31><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ģʽ<C4A3><CABD>ɫ<EFBFBD>ʱ<EFBFBD><CAB1>Ͷ<EFBFBD><CDB6><EFBFBD><EFBFBD>ߣ<EFBFBD>
|
||||||
#define SCC8660_DATA_FORMAT_DEF (1 ) // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݸ<EFBFBD>ʽ Ĭ<>ϣ<EFBFBD>0 <20><>ѡ<EFBFBD><D1A1><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA>[0-3] 0<><30>RGB565 1<><31>RGB565(<28>ֽڽ<D6BD><DABD><EFBFBD>) 2<><32>YUV422(YUYV) 3<><33>YUV422(UYVY)
|
#define SCC8660_DATA_FORMAT_DEF (0 ) // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݸ<EFBFBD>ʽ Ĭ<>ϣ<EFBFBD>0 <20><>ѡ<EFBFBD><D1A1><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA>[0-3] 0<><30>RGB565 1<><31>RGB565(<28>ֽڽ<D6BD><DABD><EFBFBD>) 2<><32>YUV422(YUYV) 3<><33>YUV422(UYVY)
|
||||||
#define SCC8660_MANUAL_WB_DEF (0 ) // <20>ֶ<EFBFBD><D6B6><EFBFBD>ƽ<EFBFBD><C6BD> Ĭ<EFBFBD>ϣ<EFBFBD>0 <20><>ѡ<EFBFBD><D1A1><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA>[0,0x65-0xa0] 0<><30><EFBFBD>ر<EFBFBD><D8B1>ֶ<EFBFBD><D6B6><EFBFBD>ƽ<EFBFBD>⣬<EFBFBD><E2A3AC><EFBFBD><EFBFBD><EFBFBD>Զ<EFBFBD><D4B6><EFBFBD>ƽ<EFBFBD><C6BD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֶ<EFBFBD><D6B6><EFBFBD>ƽ<EFBFBD><C6BD> <20>ֶ<EFBFBD><D6B6><EFBFBD>ƽ<EFBFBD><C6BD>ʱ <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Χ0x65-0xa0
|
#define SCC8660_MANUAL_WB_DEF (0 ) // <20>ֶ<EFBFBD><D6B6><EFBFBD>ƽ<EFBFBD><C6BD> Ĭ<>ϣ<EFBFBD>0 <20><>ѡ<EFBFBD><D1A1><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA>[0,0x65-0xa0] 0<><30><EFBFBD>ر<EFBFBD><D8B1>ֶ<EFBFBD><D6B6><EFBFBD>ƽ<EFBFBD>⣬<EFBFBD><E2A3AC><EFBFBD><EFBFBD><EFBFBD>Զ<EFBFBD><D4B6><EFBFBD>ƽ<EFBFBD><C6BD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֶ<EFBFBD><D6B6><EFBFBD>ƽ<EFBFBD><C6BD> <20>ֶ<EFBFBD><D6B6><EFBFBD>ƽ<EFBFBD><C6BD>ʱ <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Χ0x65-0xa0
|
||||||
//================================================<3D><><EFBFBD><EFBFBD> SCC8660 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>================================================
|
//================================================<3D><><EFBFBD><EFBFBD> SCC8660 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ã<EFBFBD><EFBFBD><EFBFBD>֧<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͫ<EFBFBD><EFBFBD>֡<EFBFBD>ʰ汾<EFBFBD><EFBFBD>===========================
|
||||||
|
|
||||||
//===============================================<3D><><EFBFBD><EFBFBD> SCC8660 <20><><EFBFBD><EFBFBD><EFBFBD>ṹ<EFBFBD><E1B9B9>================================================
|
//===============================================<3D><><EFBFBD><EFBFBD> SCC8660 <20><><EFBFBD><EFBFBD><EFBFBD>ṹ<EFBFBD><E1B9B9>================================================
|
||||||
typedef enum
|
typedef enum
|
||||||
@@ -116,6 +117,14 @@ typedef enum
|
|||||||
}scc8660_cmd_enum;
|
}scc8660_cmd_enum;
|
||||||
//===============================================<3D><><EFBFBD><EFBFBD> SCC8660 <20><><EFBFBD><EFBFBD><EFBFBD>ṹ<EFBFBD><E1B9B9>================================================
|
//===============================================<3D><><EFBFBD><EFBFBD> SCC8660 <20><><EFBFBD><EFBFBD><EFBFBD>ṹ<EFBFBD><E1B9B9>================================================
|
||||||
|
|
||||||
|
//===============================================<3D><><EFBFBD><EFBFBD>ͷ<EFBFBD><CDB7><EFBFBD><EFBFBD>ö<EFBFBD><C3B6><EFBFBD><EFBFBD>=======================================================
|
||||||
|
typedef enum
|
||||||
|
{
|
||||||
|
SCC8660_UART,
|
||||||
|
SCC8660_SCCB,
|
||||||
|
}scc8660_type_enum;
|
||||||
|
//===============================================<3D><><EFBFBD><EFBFBD>ͷ<EFBFBD><CDB7><EFBFBD><EFBFBD>ö<EFBFBD><C3B6><EFBFBD><EFBFBD>=======================================================
|
||||||
|
|
||||||
//===============================================<3D><><EFBFBD><EFBFBD> SCC8660 ȫ<>ֱ<EFBFBD><D6B1><EFBFBD>=================================================
|
//===============================================<3D><><EFBFBD><EFBFBD> SCC8660 ȫ<>ֱ<EFBFBD><D6B1><EFBFBD>=================================================
|
||||||
extern vuint8 scc8660_finish_flag; // һ<><D2BB>ͼ<EFBFBD><CDBC><EFBFBD>ɼ<EFBFBD><C9BC><EFBFBD><EFBFBD>ɱ<EFBFBD>־λ
|
extern vuint8 scc8660_finish_flag; // һ<><D2BB>ͼ<EFBFBD><CDBC><EFBFBD>ɼ<EFBFBD><C9BC><EFBFBD><EFBFBD>ɱ<EFBFBD>־λ
|
||||||
extern uint16 scc8660_image[SCC8660_H][SCC8660_W]; // ͼ<><EFBFBD><F1B1A3B4><EFBFBD><EFBFBD><EFBFBD>
|
extern uint16 scc8660_image[SCC8660_H][SCC8660_W]; // ͼ<><EFBFBD><F1B1A3B4><EFBFBD><EFBFBD><EFBFBD>
|
||||||
|
|||||||
@@ -56,6 +56,7 @@ typedef enum
|
|||||||
WIRELESS_UART, // <20><><EFBFBD>ߴ<EFBFBD><DFB4><EFBFBD>
|
WIRELESS_UART, // <20><><EFBFBD>ߴ<EFBFBD><DFB4><EFBFBD>
|
||||||
BLUETOOTH_CH9141, // <20><><EFBFBD><EFBFBD> CH9141
|
BLUETOOTH_CH9141, // <20><><EFBFBD><EFBFBD> CH9141
|
||||||
WIFI_UART, // <20><><EFBFBD><EFBFBD> WiFi
|
WIFI_UART, // <20><><EFBFBD><EFBFBD> WiFi
|
||||||
|
RECEIVER_UART, // ǹʽң<CABD><D2A3><EFBFBD><EFBFBD>
|
||||||
}wireless_type_enum;
|
}wireless_type_enum;
|
||||||
|
|
||||||
typedef enum
|
typedef enum
|
||||||
|
|||||||
@@ -0,0 +1,134 @@
|
|||||||
|
/*********************************************************************************************************************
|
||||||
|
* TC264 Opensourec Library <20><><EFBFBD><EFBFBD>TC264 <20><>Դ<EFBFBD>⣩<EFBFBD><E2A3A9>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD>ڹٷ<DAB9> SDK <20>ӿڵĵ<DAB5><C4B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Դ<EFBFBD><D4B4>
|
||||||
|
* Copyright (c) 2022 SEEKFREE <20><><EFBFBD>ɿƼ<C9BF>
|
||||||
|
*
|
||||||
|
* <20><><EFBFBD>ļ<EFBFBD><C4BC><EFBFBD> TC264 <20><>Դ<EFBFBD><D4B4><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD>
|
||||||
|
*
|
||||||
|
* TC264 <20><>Դ<EFBFBD><D4B4> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
|
* <20><><EFBFBD><EFBFBD><EFBFBD>Ը<EFBFBD><D4B8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ᷢ<EFBFBD><E1B7A2><EFBFBD><EFBFBD> GPL<50><4C>GNU General Public License<73><65><EFBFBD><EFBFBD> GNUͨ<55>ù<EFBFBD><C3B9><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>֤<EFBFBD><D6A4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
|
* <20><> GPL <20>ĵ<EFBFBD>3<EFBFBD>棨<EFBFBD><E6A3A8> GPL3.0<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ѡ<EFBFBD><EFBFBD><EFBFBD>ģ<EFBFBD><EFBFBD>κκ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>İ汾<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>·<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>/<2F><><EFBFBD><EFBFBD><DEB8><EFBFBD>
|
||||||
|
*
|
||||||
|
* <20><><EFBFBD><EFBFBD>Դ<EFBFBD><D4B4><EFBFBD>ķ<EFBFBD><C4B7><EFBFBD><EFBFBD><EFBFBD>ϣ<EFBFBD><CFA3><EFBFBD><EFBFBD><EFBFBD>ܷ<EFBFBD><DCB7><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ã<EFBFBD><C3A3><EFBFBD><EFBFBD><EFBFBD>δ<EFBFBD><CEB4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>κεı<CEB5>֤
|
||||||
|
* <20><><EFBFBD><EFBFBD>û<EFBFBD><C3BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ի<EFBFBD><D4BB>ʺ<EFBFBD><CABA>ض<EFBFBD><D8B6><EFBFBD>;<EFBFBD>ı<EFBFBD>֤
|
||||||
|
* <20><><EFBFBD><EFBFBD>ϸ<EFBFBD><CFB8><EFBFBD><EFBFBD><EFBFBD>μ<EFBFBD> GPL
|
||||||
|
*
|
||||||
|
* <20><>Ӧ<EFBFBD><D3A6><EFBFBD><EFBFBD><EFBFBD>յ<EFBFBD><D5B5><EFBFBD><EFBFBD><EFBFBD>Դ<EFBFBD><D4B4><EFBFBD><EFBFBD>ͬʱ<CDAC>յ<EFBFBD>һ<EFBFBD><D2BB> GPL <20>ĸ<EFBFBD><C4B8><EFBFBD>
|
||||||
|
* <20><><EFBFBD><EFBFBD>û<EFBFBD>У<EFBFBD><D0A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><https://www.gnu.org/licenses/>
|
||||||
|
*
|
||||||
|
* <20><><EFBFBD><EFBFBD>ע<EFBFBD><D7A2><EFBFBD><EFBFBD>
|
||||||
|
* <20><><EFBFBD><EFBFBD>Դ<EFBFBD><D4B4>ʹ<EFBFBD><CAB9> GPL3.0 <20><>Դ<EFBFBD><D4B4><EFBFBD><EFBFBD>֤Э<D6A4><D0AD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA><EFBFBD>İ汾
|
||||||
|
* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ӣ<EFBFBD>İ<EFBFBD><C4B0><EFBFBD> libraries/doc <20>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD>µ<EFBFBD> GPL3_permission_statement.txt <20>ļ<EFBFBD><C4BC><EFBFBD>
|
||||||
|
* <20><><EFBFBD><EFBFBD>֤<EFBFBD><D6A4><EFBFBD><EFBFBD><EFBFBD><EFBFBD> libraries <20>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD>µ<EFBFBD> LICENSE <20>ļ<EFBFBD>
|
||||||
|
* <20><>ӭ<EFBFBD><D3AD>λʹ<CEBB>ò<EFBFBD><C3B2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><DEB8><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD>뱣<EFBFBD><EBB1A3><EFBFBD><EFBFBD><EFBFBD>ɿƼ<C9BF><C6BC>İ<EFBFBD>Ȩ<EFBFBD><C8A8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
|
*
|
||||||
|
* <20>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD><EFBFBD> zf_device_uart_receiver
|
||||||
|
* <20><>˾<EFBFBD><CBBE><EFBFBD><EFBFBD> <20>ɶ<EFBFBD><C9B6><EFBFBD><EFBFBD>ɿƼ<C9BF><C6BC><EFBFBD><EFBFBD><EFBFBD>˾
|
||||||
|
* <20>汾<EFBFBD><E6B1BE>Ϣ <20>鿴 libraries/doc <20>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD><EFBFBD> version <20>ļ<EFBFBD> <20>汾˵<E6B1BE><CBB5>
|
||||||
|
* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ADS v1.9.20
|
||||||
|
* <20><><EFBFBD><EFBFBD>ƽ̨ TC264D
|
||||||
|
* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> https://seekfree.taobao.com/
|
||||||
|
*
|
||||||
|
* <20>ļ<DEB8>¼
|
||||||
|
* <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><>ע
|
||||||
|
* 2022-11-04 JKS first version
|
||||||
|
********************************************************************************************************************/
|
||||||
|
/*********************************************************************************************************************
|
||||||
|
* <20><><EFBFBD>߶<EFBFBD><DFB6>壺
|
||||||
|
* ------------------------------------
|
||||||
|
* ģ<><C4A3><EFBFBD>ܽ<EFBFBD> <20><>Ƭ<EFBFBD><C6AC><EFBFBD>ܽ<EFBFBD>
|
||||||
|
* TXD <20>鿴 zf_device_uart_receiver.h <20><> UART_RECEVIER_RX_PIN <20>궨<EFBFBD><EAB6A8>
|
||||||
|
* GND <20><>Դ<EFBFBD><D4B4>
|
||||||
|
* 5V 5V<35><56>Դ
|
||||||
|
* ------------------------------------
|
||||||
|
********************************************************************************************************************/
|
||||||
|
|
||||||
|
#include "zf_device_type.h"
|
||||||
|
#include "zf_driver_uart.h"
|
||||||
|
#include "zf_driver_timer.h"
|
||||||
|
#include "zf_device_uart_receiver.h"
|
||||||
|
|
||||||
|
uart_receiver_struct uart_receiver ; // <20><><EFBFBD>ڽ<EFBFBD><DABD>ջ<EFBFBD>ͨ<EFBFBD><CDA8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>״̬
|
||||||
|
|
||||||
|
uint8 uart_receiver_data[REV_DATA_LEN] = {0}; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ԭʼ<D4AD><CABC><EFBFBD><EFBFBD>
|
||||||
|
|
||||||
|
//-------------------------------------------------------------------------------------------------------------------
|
||||||
|
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>ȡ<EFBFBD><C8A1><EFBFBD>ε<EFBFBD><CEB5><EFBFBD>uart_receiver_interval_time<6D><65><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
|
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> void
|
||||||
|
// <20><><EFBFBD>ز<EFBFBD><D8B2><EFBFBD> uint32 <20><><EFBFBD>شӿ<D8B4>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD><EFBFBD>ڵ<EFBFBD>ʱ<EFBFBD><CAB1>(<28><>λ1us)
|
||||||
|
// ʹ<><CAB9>ʾ<EFBFBD><CABE> uint32 time = uart_receiver_interval_time();
|
||||||
|
// <20><>ע<EFBFBD><D7A2>Ϣ <20>ڲ<EFBFBD><DAB2><EFBFBD><EFBFBD><EFBFBD>
|
||||||
|
//-------------------------------------------------------------------------------------------------------------------
|
||||||
|
static uint32 uart_receiver_interval_time (void)
|
||||||
|
{
|
||||||
|
static uint32 time_last = 0;
|
||||||
|
uint32 time, interval_time;
|
||||||
|
uint32 stm_clk;
|
||||||
|
|
||||||
|
stm_clk = IfxStm_getFrequency(IfxStm_getAddress((IfxStm_Index)(IfxCpu_getCoreId())));
|
||||||
|
|
||||||
|
time = IfxStm_getLower(IfxStm_getAddress((IfxStm_Index)(IfxCpu_getCoreId())));
|
||||||
|
interval_time = time - time_last;
|
||||||
|
time_last = time;
|
||||||
|
interval_time = (uint32)((uint64)interval_time * 1000000 / stm_clk);
|
||||||
|
|
||||||
|
return interval_time;
|
||||||
|
}
|
||||||
|
|
||||||
|
//-------------------------------------------------------------------------------------------------------------------
|
||||||
|
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> SBUS<55><53><EFBFBD>ݽ<EFBFBD><DDBD><EFBFBD>
|
||||||
|
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> *remote_data <20><><EFBFBD><EFBFBD>ң<EFBFBD><D2A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݵĵ<DDB5>ַ
|
||||||
|
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> *bufer ԭʼ<D4AD><CABC><EFBFBD><EFBFBD>
|
||||||
|
// <20><><EFBFBD>ز<EFBFBD><D8B2><EFBFBD> void
|
||||||
|
// ʹ<><CAB9>ʾ<EFBFBD><CABE>
|
||||||
|
// <20><>ע<EFBFBD><D7A2>Ϣ <20><>sbus<75><73><EFBFBD>ݽ<EFBFBD><DDBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>н<EFBFBD><D0BD><EFBFBD>
|
||||||
|
//-------------------------------------------------------------------------------------------------------------------
|
||||||
|
static void uart_receiver_analysis (uart_receiver_struct *remote_data,uint8 * buffer)
|
||||||
|
{
|
||||||
|
uint8 num = 0;
|
||||||
|
remote_data->channel[num++] = (buffer[1] |buffer[ 2] << 8 ) & 0x07FF;
|
||||||
|
remote_data->channel[num++] = (buffer[2] >> 3 | buffer[3] << 5 ) & 0x07FF;
|
||||||
|
remote_data->channel[num++] = (buffer[3] >> 6 | buffer[4] << 2 | buffer[5] << 10 ) & 0x07FF;
|
||||||
|
remote_data->channel[num++] = (buffer[5] >> 1 | buffer[6] << 7 ) & 0x07FF;
|
||||||
|
remote_data->channel[num++] = (buffer[6] >> 4 | buffer[7] << 4 ) & 0x07FF;
|
||||||
|
remote_data->channel[num++] = (buffer[7] >> 7 | buffer[8] << 1 | buffer[9] << 9 ) & 0x07FF;
|
||||||
|
remote_data->state = (SBUS_NORMAL_STATE == buffer[23]) ? 1 : 0;
|
||||||
|
uart_receiver.finsh_flag = 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
//-------------------------------------------------------------------------------------------------------------------
|
||||||
|
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>ڽ<EFBFBD><DABD>ջ<EFBFBD>ģ<EFBFBD><C4A3> <20><><EFBFBD><EFBFBD><EFBFBD>жϻص<CFBB><D8B5><EFBFBD><EFBFBD><EFBFBD>
|
||||||
|
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> void
|
||||||
|
// <20><><EFBFBD>ز<EFBFBD><D8B2><EFBFBD> void
|
||||||
|
// ʹ<><CAB9>ʾ<EFBFBD><CABE> uart_receiver_callback();
|
||||||
|
// <20><>ע<EFBFBD><D7A2>Ϣ <20>ú<EFBFBD><C3BA><EFBFBD><EFBFBD><EFBFBD> ISR <20>ļ<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>жϳ<D0B6><CFB3><EFBFBD>ͨ<EFBFBD><CDA8>uart_receiver_uart_handler<65><72><EFBFBD><EFBFBD>ָ<EFBFBD>뱻<EFBFBD><EBB1BB><EFBFBD><EFBFBD>
|
||||||
|
//-------------------------------------------------------------------------------------------------------------------
|
||||||
|
void uart_receiver_callback(void)
|
||||||
|
{
|
||||||
|
static vuint8 length = 0;
|
||||||
|
|
||||||
|
if (uart_receiver_interval_time() > 3000)
|
||||||
|
{
|
||||||
|
length = 0;
|
||||||
|
}
|
||||||
|
uart_receiver_data[length++] = uart_read_byte(UART_RECEVIER_UART_INDEX);
|
||||||
|
if ( (REV_DATA_LEN == length) // <20><><EFBFBD><EFBFBD>֡<EFBFBD><D6A1><EFBFBD><EFBFBD>֡ͷ<D6A1><CDB7>֡β<D6A1><CEB2><EFBFBD><EFBFBD>Э<EFBFBD><D0AD>
|
||||||
|
&& (FRAME_STAR == uart_receiver_data[0])
|
||||||
|
&& (FRAME_END == uart_receiver_data[24]))
|
||||||
|
{
|
||||||
|
uart_receiver_analysis(&uart_receiver, uart_receiver_data);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
//-------------------------------------------------------------------------------------------------------------------
|
||||||
|
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>ڽ<EFBFBD><DABD>ջ<EFBFBD><D5BB><EFBFBD>ʼ<EFBFBD><CABC>
|
||||||
|
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> void
|
||||||
|
// <20><><EFBFBD>ز<EFBFBD><D8B2><EFBFBD> void
|
||||||
|
// ʹ<><CAB9>ʾ<EFBFBD><CABE> uart_receiver_init();
|
||||||
|
//-------------------------------------------------------------------------------------------------------------------
|
||||||
|
void uart_receiver_init(void)
|
||||||
|
{
|
||||||
|
uart_sbus_init(UART_RECEVIER_UART_INDEX, SBUS_UART_BAUDRATE, UART_RECEVIER_TX_PIN, UART_RECEVIER_RX_PIN);
|
||||||
|
|
||||||
|
// <20><><EFBFBD>ô<EFBFBD><C3B4><EFBFBD><EFBFBD>жϻص<CFBB><D8B5><EFBFBD><EFBFBD><EFBFBD>
|
||||||
|
set_wireless_type(RECEIVER_UART, uart_receiver_callback);
|
||||||
|
}
|
||||||
@@ -0,0 +1,72 @@
|
|||||||
|
/*********************************************************************************************************************
|
||||||
|
* TC264 Opensourec Library <20><><EFBFBD><EFBFBD>TC264 <20><>Դ<EFBFBD>⣩<EFBFBD><E2A3A9>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD>ڹٷ<DAB9> SDK <20>ӿڵĵ<DAB5><C4B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Դ<EFBFBD><D4B4>
|
||||||
|
* Copyright (c) 2022 SEEKFREE <20><><EFBFBD>ɿƼ<C9BF>
|
||||||
|
*
|
||||||
|
* <20><><EFBFBD>ļ<EFBFBD><C4BC><EFBFBD> TC264 <20><>Դ<EFBFBD><D4B4><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD>
|
||||||
|
*
|
||||||
|
* TC264 <20><>Դ<EFBFBD><D4B4> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
|
* <20><><EFBFBD><EFBFBD><EFBFBD>Ը<EFBFBD><D4B8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ᷢ<EFBFBD><E1B7A2><EFBFBD><EFBFBD> GPL<50><4C>GNU General Public License<73><65><EFBFBD><EFBFBD> GNUͨ<55>ù<EFBFBD><C3B9><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>֤<EFBFBD><D6A4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
|
* <20><> GPL <20>ĵ<EFBFBD>3<EFBFBD>棨<EFBFBD><E6A3A8> GPL3.0<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ѡ<EFBFBD><EFBFBD><EFBFBD>ģ<EFBFBD><EFBFBD>κκ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>İ汾<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>·<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>/<2F><><EFBFBD><EFBFBD><DEB8><EFBFBD>
|
||||||
|
*
|
||||||
|
* <20><><EFBFBD><EFBFBD>Դ<EFBFBD><D4B4><EFBFBD>ķ<EFBFBD><C4B7><EFBFBD><EFBFBD><EFBFBD>ϣ<EFBFBD><CFA3><EFBFBD><EFBFBD><EFBFBD>ܷ<EFBFBD><DCB7><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ã<EFBFBD><C3A3><EFBFBD><EFBFBD><EFBFBD>δ<EFBFBD><CEB4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>κεı<CEB5>֤
|
||||||
|
* <20><><EFBFBD><EFBFBD>û<EFBFBD><C3BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ի<EFBFBD><D4BB>ʺ<EFBFBD><CABA>ض<EFBFBD><D8B6><EFBFBD>;<EFBFBD>ı<EFBFBD>֤
|
||||||
|
* <20><><EFBFBD><EFBFBD>ϸ<EFBFBD><CFB8><EFBFBD><EFBFBD><EFBFBD>μ<EFBFBD> GPL
|
||||||
|
*
|
||||||
|
* <20><>Ӧ<EFBFBD><D3A6><EFBFBD><EFBFBD><EFBFBD>յ<EFBFBD><D5B5><EFBFBD><EFBFBD><EFBFBD>Դ<EFBFBD><D4B4><EFBFBD><EFBFBD>ͬʱ<CDAC>յ<EFBFBD>һ<EFBFBD><D2BB> GPL <20>ĸ<EFBFBD><C4B8><EFBFBD>
|
||||||
|
* <20><><EFBFBD><EFBFBD>û<EFBFBD>У<EFBFBD><D0A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><https://www.gnu.org/licenses/>
|
||||||
|
*
|
||||||
|
* <20><><EFBFBD><EFBFBD>ע<EFBFBD><D7A2><EFBFBD><EFBFBD>
|
||||||
|
* <20><><EFBFBD><EFBFBD>Դ<EFBFBD><D4B4>ʹ<EFBFBD><CAB9> GPL3.0 <20><>Դ<EFBFBD><D4B4><EFBFBD><EFBFBD>֤Э<D6A4><D0AD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA><EFBFBD>İ汾
|
||||||
|
* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ӣ<EFBFBD>İ<EFBFBD><C4B0><EFBFBD> libraries/doc <20>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD>µ<EFBFBD> GPL3_permission_statement.txt <20>ļ<EFBFBD><C4BC><EFBFBD>
|
||||||
|
* <20><><EFBFBD><EFBFBD>֤<EFBFBD><D6A4><EFBFBD><EFBFBD><EFBFBD><EFBFBD> libraries <20>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD>µ<EFBFBD> LICENSE <20>ļ<EFBFBD>
|
||||||
|
* <20><>ӭ<EFBFBD><D3AD>λʹ<CEBB>ò<EFBFBD><C3B2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><DEB8><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD>뱣<EFBFBD><EBB1A3><EFBFBD><EFBFBD><EFBFBD>ɿƼ<C9BF><C6BC>İ<EFBFBD>Ȩ<EFBFBD><C8A8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
|
*
|
||||||
|
* <20>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD><EFBFBD> zf_device_uart_receiver
|
||||||
|
* <20><>˾<EFBFBD><CBBE><EFBFBD><EFBFBD> <20>ɶ<EFBFBD><C9B6><EFBFBD><EFBFBD>ɿƼ<C9BF><C6BC><EFBFBD><EFBFBD><EFBFBD>˾
|
||||||
|
* <20>汾<EFBFBD><E6B1BE>Ϣ <20>鿴 libraries/doc <20>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD><EFBFBD> version <20>ļ<EFBFBD> <20>汾˵<E6B1BE><CBB5>
|
||||||
|
* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ADS v1.9.20
|
||||||
|
* <20><><EFBFBD><EFBFBD>ƽ̨ TC264D
|
||||||
|
* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> https://seekfree.taobao.com/
|
||||||
|
*
|
||||||
|
* <20>ļ<DEB8>¼
|
||||||
|
* <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><>ע
|
||||||
|
* 2022-11-04 JKS first version
|
||||||
|
********************************************************************************************************************/
|
||||||
|
/*********************************************************************************************************************
|
||||||
|
* <20><><EFBFBD>߶<EFBFBD><DFB6>壺
|
||||||
|
* ------------------------------------
|
||||||
|
* ģ<><C4A3><EFBFBD>ܽ<EFBFBD> <20><>Ƭ<EFBFBD><C6AC><EFBFBD>ܽ<EFBFBD>
|
||||||
|
* TXD <20>鿴 zf_device_uart_receiver.h <20><> UART_RECEVIER_RX_PIN <20>궨<EFBFBD><EAB6A8>
|
||||||
|
* GND <20><>Դ<EFBFBD><D4B4>
|
||||||
|
* 5V 5V<35><56>Դ
|
||||||
|
* ------------------------------------
|
||||||
|
********************************************************************************************************************/
|
||||||
|
#ifndef _zf_device_uart_receiver_h
|
||||||
|
#define _zf_device_uart_receiver_h
|
||||||
|
|
||||||
|
#include "zf_common_typedef.h"
|
||||||
|
|
||||||
|
#define UART_RECEVIER_UART_INDEX UART_2 // <20><><EFBFBD>崮<EFBFBD>ڽ<EFBFBD><DABD>ջ<EFBFBD>ʹ<EFBFBD>õĴ<C3B5><C4B4><EFBFBD>
|
||||||
|
#define UART_RECEVIER_TX_PIN UART2_TX_P10_5 // ң<><D2A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ջ<EFBFBD>û<EFBFBD><C3BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ţ<EFBFBD><C5A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڴ<EFBFBD><DAB4>ڳ<EFBFBD>ʼ<EFBFBD><CABC>ʱռλʹ<CEBB><CAB9>
|
||||||
|
#define UART_RECEVIER_RX_PIN UART2_RX_P10_6 // <20><><EFBFBD>ڽ<EFBFBD><DABD>ջ<EFBFBD><D5BB><EFBFBD>TX<54><58><EFBFBD><EFBFBD> <20><><EFBFBD>ӵ<EFBFBD>Ƭ<EFBFBD><C6AC><EFBFBD><EFBFBD>RX<52><58><EFBFBD><EFBFBD>
|
||||||
|
#define SBUS_UART_BAUDRATE (100000) // ָ<><D6B8> SBUS <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʹ<EFBFBD>õĵĴ<C4B5><C4B4>ڲ<EFBFBD><DAB2><EFBFBD><EFBFBD><EFBFBD> (<28>û<EFBFBD><C3BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>)
|
||||||
|
#define UART_RECEVIER_CHANNEL_NUM ( 6 ) // <20><><EFBFBD><EFBFBD>ң<EFBFBD><D2A3><EFBFBD><EFBFBD>ͨ<EFBFBD><CDA8><EFBFBD><EFBFBD><EFBFBD><EFBFBD> (<28>û<EFBFBD><C3BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>)
|
||||||
|
|
||||||
|
#define REV_DATA_LEN ( 25 ) // SBUS֡<53><D6A1>
|
||||||
|
#define FRAME_STAR ( 0X0F ) // ֡ͷ<D6A1><CDB7>Ϣ
|
||||||
|
#define FRAME_END ( 0X00 ) // ֡β<D6A1><CEB2>Ϣ
|
||||||
|
#define SBUS_NORMAL_STATE ( 0X03 ) // <20><><EFBFBD><EFBFBD>״̬
|
||||||
|
#define SBUS_ABNORMAL_STATE ( 0X0F ) // ʧ<><CAA7>״̬
|
||||||
|
|
||||||
|
typedef struct
|
||||||
|
{
|
||||||
|
uint16 channel[UART_RECEVIER_CHANNEL_NUM]; // CH1-CH6ͨ<36><CDA8><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
|
uint8 state; // ң<><D2A3><EFBFBD><EFBFBD>״̬(1<><31>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾʧ<CABE><CAA7>)
|
||||||
|
uint8 finsh_flag; // 1<><31><EFBFBD><EFBFBD>ʾ<EFBFBD>ɹ<EFBFBD><C9B9><EFBFBD><EFBFBD>յ<EFBFBD>һ֡ң<D6A1><D2A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
|
}uart_receiver_struct;
|
||||||
|
|
||||||
|
extern uart_receiver_struct uart_receiver; // <20><><EFBFBD>ڽ<EFBFBD><DABD>ջ<EFBFBD>ͨ<EFBFBD><CDA8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>״̬
|
||||||
|
|
||||||
|
void uart_receiver_init(void);
|
||||||
|
|
||||||
|
#endif
|
||||||
@@ -404,6 +404,55 @@ void uart_rx_interrupt (uart_index_enum uart_n, uint32 status)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//-------------------------------------------------------------------------------------------------------------------
|
||||||
|
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> sbus<75><73>ʼ<EFBFBD><CABC>
|
||||||
|
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> uartn <20><><EFBFBD><EFBFBD>ͨ<EFBFBD><CDA8>(UART_0,UART_1,UART_2,UART_3)
|
||||||
|
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> baud <20><><EFBFBD>ڲ<EFBFBD><DAB2><EFBFBD><EFBFBD><EFBFBD>
|
||||||
|
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> tx_pin <20><><EFBFBD>ڷ<EFBFBD><DAB7><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ź<EFBFBD>
|
||||||
|
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> rx_pin <20><><EFBFBD>ڽ<EFBFBD><DABD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ź<EFBFBD>
|
||||||
|
// <20><><EFBFBD>ز<EFBFBD><D8B2><EFBFBD> void
|
||||||
|
// ʹ<><CAB9>ʾ<EFBFBD><CABE> uart_sbus_init(UART_2, 100000, UART2_TX_P10_5, UART2_RX_P10_6);
|
||||||
|
// <20><>ע<EFBFBD><D7A2>Ϣ
|
||||||
|
//-------------------------------------------------------------------------------------------------------------------
|
||||||
|
void uart_sbus_init (uart_index_enum uartn, uint32 baud, uart_tx_pin_enum tx_pin, uart_rx_pin_enum rx_pin)
|
||||||
|
{
|
||||||
|
|
||||||
|
boolean interrupt_state = disableInterrupts();
|
||||||
|
|
||||||
|
volatile Ifx_ASCLIN *moudle = IfxAsclin_getAddress((IfxAsclin_Index)uartn);
|
||||||
|
|
||||||
|
IfxAsclin_Asc_initModuleConfig(&uart_config, moudle); // <20><>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ýṹ<C3BD><E1B9B9>
|
||||||
|
|
||||||
|
uart_set_buffer(uartn); // <20><><EFBFBD>û<EFBFBD><C3BB><EFBFBD><EFBFBD><EFBFBD>
|
||||||
|
|
||||||
|
uart_set_interrupt_priority(uartn); // <20><><EFBFBD><EFBFBD><EFBFBD>ж<EFBFBD><D0B6><EFBFBD><EFBFBD>ȼ<EFBFBD>
|
||||||
|
|
||||||
|
uart_config.clockSource = IfxAsclin_ClockSource_ascFastClock; // ʹ<>ø<EFBFBD><C3B8><EFBFBD>ʱ<EFBFBD><CAB1> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>6.25M
|
||||||
|
uart_config.baudrate.prescaler = 4;
|
||||||
|
uart_config.baudrate.baudrate = (float32)baud;
|
||||||
|
uart_config.baudrate.oversampling = IfxAsclin_OversamplingFactor_8;
|
||||||
|
|
||||||
|
uart_config.frame.stopBit = IfxAsclin_StopBit_2; //ֹͣλ
|
||||||
|
uart_config.frame.parityType = IfxAsclin_ParityType_even; //żУ<C5BC><D0A3>
|
||||||
|
uart_config.frame.dataLength = IfxAsclin_DataLength_8;
|
||||||
|
uart_config.frame.parityBit = TRUE; //<2F><><EFBFBD><EFBFBD>У<EFBFBD><D0A3>
|
||||||
|
|
||||||
|
IfxAsclin_Asc_Pins pins; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
|
pins.cts = NULL;
|
||||||
|
pins.rts = NULL;
|
||||||
|
uart_mux(uartn, tx_pin, rx_pin, (uint32 *)&pins.tx, (uint32 *)&pins.rx);
|
||||||
|
pins.rxMode = IfxPort_InputMode_pullUp;
|
||||||
|
pins.txMode = IfxPort_OutputMode_pushPull;
|
||||||
|
pins.pinDriver = IfxPort_PadDriver_cmosAutomotiveSpeed1;
|
||||||
|
uart_config.pins = &pins;
|
||||||
|
|
||||||
|
IfxAsclin_Asc_initModule(uart_get_handle(uartn), &uart_config);
|
||||||
|
uart_rx_interrupt(uartn, 1);
|
||||||
|
uart_tx_interrupt(uartn, 0);
|
||||||
|
restoreInterrupts(interrupt_state);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
//-------------------------------------------------------------------------------------------------------------------
|
//-------------------------------------------------------------------------------------------------------------------
|
||||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>ڳ<EFBFBD>ʼ<EFBFBD><CABC>
|
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>ڳ<EFBFBD>ʼ<EFBFBD><CABC>
|
||||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> uartn <20><><EFBFBD><EFBFBD>ģ<EFBFBD><C4A3><EFBFBD><EFBFBD>(UART_0,UART_1,UART_2,UART_3)
|
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> uartn <20><><EFBFBD><EFBFBD>ģ<EFBFBD><C4A3><EFBFBD><EFBFBD>(UART_0,UART_1,UART_2,UART_3)
|
||||||
|
|||||||
@@ -125,6 +125,7 @@ uint8 uart_query_byte (uart_index_enum uartn, uint8 *dat);
|
|||||||
void uart_tx_interrupt (uart_index_enum uartn, uint32 status);
|
void uart_tx_interrupt (uart_index_enum uartn, uint32 status);
|
||||||
void uart_rx_interrupt (uart_index_enum uartn, uint32 status);
|
void uart_rx_interrupt (uart_index_enum uartn, uint32 status);
|
||||||
|
|
||||||
|
void uart_sbus_init (uart_index_enum uartn, uint32 baud, uart_tx_pin_enum tx_pin, uart_rx_pin_enum rx_pin);
|
||||||
void uart_init (uart_index_enum uartn, uint32 baud, uart_tx_pin_enum tx_pin, uart_rx_pin_enum rx_pin);
|
void uart_init (uart_index_enum uartn, uint32 baud, uart_tx_pin_enum tx_pin, uart_rx_pin_enum rx_pin);
|
||||||
//====================================================<3D><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>====================================================
|
//====================================================<3D><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>====================================================
|
||||||
|
|
||||||
|
|||||||
@@ -1,3 +1,6 @@
|
|||||||
|
V3.2.8
|
||||||
|
<20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͫ<EFBFBD><CDAB>MCU<43>汾<EFBFBD><E6B1BE><EFBFBD><EFBFBD>
|
||||||
|
<20><><EFBFBD><EFBFBD>SBUSң<53><D2A3><EFBFBD><EFBFBD><EFBFBD>ײ<EFBFBD><D7B2><EFBFBD><EFBFBD><EFBFBD>
|
||||||
V3.2.7
|
V3.2.7
|
||||||
<20><><EFBFBD><EFBFBD>RTK "D" <20><>ͷЭ<CDB7><D0AD>
|
<20><><EFBFBD><EFBFBD>RTK "D" <20><>ͷЭ<CDB7><D0AD>
|
||||||
<20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ǻ<EFBFBD>ת<EFBFBD><D7AA><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>ֹ<EFBFBD><D6B9><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
<20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ǻ<EFBFBD>ת<EFBFBD><D7AA><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>ֹ<EFBFBD><D6B9><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
|
|||||||
@@ -100,6 +100,7 @@
|
|||||||
#include "zf_device_tft180.h"
|
#include "zf_device_tft180.h"
|
||||||
#include "zf_device_tsl1401.h"
|
#include "zf_device_tsl1401.h"
|
||||||
#include "zf_device_type.h"
|
#include "zf_device_type.h"
|
||||||
|
#include "zf_device_uart_receiver.h"
|
||||||
#include "zf_device_virtual_oscilloscope.h"
|
#include "zf_device_virtual_oscilloscope.h"
|
||||||
#include "zf_device_wifi_uart.h"
|
#include "zf_device_wifi_uart.h"
|
||||||
#include "zf_device_wifi_spi.h"
|
#include "zf_device_wifi_spi.h"
|
||||||
|
|||||||
Binary file not shown.
@@ -31,6 +31,7 @@
|
|||||||
* <20>ļ<DEB8>¼
|
* <20>ļ<DEB8>¼
|
||||||
* <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><>ע
|
* <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><>ע
|
||||||
* 2022-09-15 pudding first version
|
* 2022-09-15 pudding first version
|
||||||
|
* 2024-02-02 pudding <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͫ<EFBFBD><CDAB>̬<EFBFBD>⺯<EFBFBD><E2BAAF>
|
||||||
********************************************************************************************************************/
|
********************************************************************************************************************/
|
||||||
|
|
||||||
#ifndef _zf_device_config_h_
|
#ifndef _zf_device_config_h_
|
||||||
@@ -43,5 +44,10 @@ unsigned char mt9v03x_set_config_sccb (void *soft_iic_obj, short int b
|
|||||||
unsigned char mt9v03x_set_exposure_time_sccb (unsigned short int light);
|
unsigned char mt9v03x_set_exposure_time_sccb (unsigned short int light);
|
||||||
unsigned char mt9v03x_set_reg_sccb (unsigned char addr, unsigned short int data);
|
unsigned char mt9v03x_set_reg_sccb (unsigned char addr, unsigned short int data);
|
||||||
|
|
||||||
|
unsigned char scc8660_set_config_sccb (void *soft_iic_obj, short int buff[10][2]);
|
||||||
|
unsigned char scc8660_set_brightness_sccb (unsigned short int brightness);
|
||||||
|
unsigned char scc8660_set_manual_wb_sccb (unsigned short int manual_wb);
|
||||||
|
unsigned char scc8660_set_reg_sccb (unsigned char reg, unsigned short int data);
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|||||||
@@ -31,6 +31,7 @@
|
|||||||
* <20>ļ<DEB8>¼
|
* <20>ļ<DEB8>¼
|
||||||
* <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><>ע
|
* <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><>ע
|
||||||
* 2022-09-15 pudding first version
|
* 2022-09-15 pudding first version
|
||||||
|
* 2024-02-02 pudding <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>MCU<43><55>ͫ<EFBFBD><CDAB><EFBFBD><EFBFBD>
|
||||||
********************************************************************************************************************/
|
********************************************************************************************************************/
|
||||||
/*********************************************************************************************************************
|
/*********************************************************************************************************************
|
||||||
* <20><><EFBFBD>߶<EFBFBD><DFB6>壺
|
* <20><><EFBFBD>߶<EFBFBD><DFB6>壺
|
||||||
@@ -55,9 +56,12 @@
|
|||||||
#include "zf_driver_exti.h"
|
#include "zf_driver_exti.h"
|
||||||
#include "zf_driver_gpio.h"
|
#include "zf_driver_gpio.h"
|
||||||
#include "zf_driver_uart.h"
|
#include "zf_driver_uart.h"
|
||||||
|
#include "zf_driver_soft_iic.h"
|
||||||
#include "zf_device_camera.h"
|
#include "zf_device_camera.h"
|
||||||
#include "zf_device_scc8660.h"
|
|
||||||
#include "zf_device_type.h"
|
#include "zf_device_type.h"
|
||||||
|
#include "zf_device_config.h"
|
||||||
|
|
||||||
|
#include "zf_device_scc8660.h"
|
||||||
|
|
||||||
vuint8 scc8660_finish_flag = 0; // һ<><D2BB>ͼ<EFBFBD><CDBC><EFBFBD>ɼ<EFBFBD><C9BC><EFBFBD><EFBFBD>ɱ<EFBFBD>־λ
|
vuint8 scc8660_finish_flag = 0; // һ<><D2BB>ͼ<EFBFBD><CDBC><EFBFBD>ɼ<EFBFBD><C9BC><EFBFBD><EFBFBD>ɱ<EFBFBD>־λ
|
||||||
IFX_ALIGN(4) uint16 scc8660_image[SCC8660_H][SCC8660_W];
|
IFX_ALIGN(4) uint16 scc8660_image[SCC8660_H][SCC8660_W];
|
||||||
@@ -68,6 +72,7 @@ uint8 scc8660_lost_flag = 1;
|
|||||||
uint8 scc8660_dma_int_num; // <20><>ǰDMA<4D>жϴ<D0B6><CFB4><EFBFBD>
|
uint8 scc8660_dma_int_num; // <20><>ǰDMA<4D>жϴ<D0B6><CFB4><EFBFBD>
|
||||||
uint8 scc8660_dma_init_flag; // <20>Ƿ<EFBFBD><C7B7><EFBFBD>Ҫ<EFBFBD><D2AA><EFBFBD>³<EFBFBD>ʼ<EFBFBD><CABC>
|
uint8 scc8660_dma_init_flag; // <20>Ƿ<EFBFBD><C7B7><EFBFBD>Ҫ<EFBFBD><D2AA><EFBFBD>³<EFBFBD>ʼ<EFBFBD><CABC>
|
||||||
|
|
||||||
|
static scc8660_type_enum scc8660_type;
|
||||||
|
|
||||||
// <20><>Ҫ<EFBFBD><D2AA><EFBFBD>õ<EFBFBD><C3B5><EFBFBD><EFBFBD><EFBFBD>ͷ<EFBFBD><CDB7><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>IJ<DEB8><C4B2><EFBFBD>
|
// <20><>Ҫ<EFBFBD><D2AA><EFBFBD>õ<EFBFBD><C3B5><EFBFBD><EFBFBD><EFBFBD>ͷ<EFBFBD><CDB7><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>IJ<DEB8><C4B2><EFBFBD>
|
||||||
static int16 scc8660_set_confing_buffer[SCC8660_CONFIG_FINISH][2]=
|
static int16 scc8660_set_confing_buffer[SCC8660_CONFIG_FINISH][2]=
|
||||||
@@ -77,7 +82,7 @@ static int16 scc8660_set_confing_buffer[SCC8660_CONFIG_FINISH][2]=
|
|||||||
{SCC8660_AUTO_EXP, SCC8660_AUTO_EXP_DEF}, // <20>Զ<EFBFBD><D4B6>ع<EFBFBD>
|
{SCC8660_AUTO_EXP, SCC8660_AUTO_EXP_DEF}, // <20>Զ<EFBFBD><D4B6>ع<EFBFBD>
|
||||||
{SCC8660_BRIGHT, SCC8660_BRIGHT_DEF}, // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
{SCC8660_BRIGHT, SCC8660_BRIGHT_DEF}, // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
{SCC8660_FPS, SCC8660_FPS_DEF}, // ͼ<><CDBC>֡<EFBFBD><D6A1>
|
{SCC8660_FPS, SCC8660_FPS_DEF}, // ͼ<><CDBC>֡<EFBFBD><D6A1>
|
||||||
{SCC8660_SET_COL, SCC8660_W}, // ͼ<><CDBC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
{SCC8660_SET_COL, SCC8660_W * 4}, // ͼ<><CDBC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
{SCC8660_SET_ROW, SCC8660_H}, // ͼ<><CDBC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
{SCC8660_SET_ROW, SCC8660_H}, // ͼ<><CDBC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
{SCC8660_PCLK_DIV, SCC8660_PCLK_DIV_DEF}, // PCLK<4C><4B>Ƶϵ<C6B5><CFB5>
|
{SCC8660_PCLK_DIV, SCC8660_PCLK_DIV_DEF}, // PCLK<4C><4B>Ƶϵ<C6B5><CFB5>
|
||||||
{SCC8660_PCLK_MODE, SCC8660_PCLK_MODE_DEF}, // PCLKģʽ
|
{SCC8660_PCLK_MODE, SCC8660_PCLK_MODE_DEF}, // PCLKģʽ
|
||||||
@@ -214,71 +219,6 @@ static void scc8660_uart_callback (void)
|
|||||||
fifo_write_element(&camera_receiver_fifo, data);
|
fifo_write_element(&camera_receiver_fifo, data);
|
||||||
}
|
}
|
||||||
|
|
||||||
//-------------------------------------------------------------------------------------------------------------------
|
|
||||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> SCC8660<36><30><EFBFBD><EFBFBD>ͷ<EFBFBD><CDB7><EFBFBD>ж<EFBFBD>
|
|
||||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> void
|
|
||||||
// <20><><EFBFBD>ز<EFBFBD><D8B2><EFBFBD> void
|
|
||||||
// ʹ<><CAB9>ʾ<EFBFBD><CABE> scc8660_vsync_handler();
|
|
||||||
//-------------------------------------------------------------------------------------------------------------------
|
|
||||||
static void scc8660_vsync_handler(void)
|
|
||||||
{
|
|
||||||
exti_flag_clear(SCC8660_VSYNC_PIN);
|
|
||||||
scc8660_dma_int_num = 0;
|
|
||||||
if(scc8660_dma_init_flag || scc8660_lost_flag)
|
|
||||||
{
|
|
||||||
scc8660_dma_init_flag = 0;
|
|
||||||
IfxDma_resetChannel(&MODULE_DMA, SCC8660_DMA_CH);
|
|
||||||
scc8660_link_list_num = dma_init(SCC8660_DMA_CH,
|
|
||||||
SCC8660_DATA_ADD,
|
|
||||||
(uint8 *)scc8660_image[0],
|
|
||||||
SCC8660_PCLK_PIN,
|
|
||||||
EXTI_TRIGGER_RISING,
|
|
||||||
SCC8660_IMAGE_SIZE); // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƶ<EFBFBD><C6B5>300M <20><><EFBFBD><EFBFBD><EFBFBD>ڶ<EFBFBD><DAB6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ΪFALLING
|
|
||||||
dma_enable(SCC8660_DMA_CH);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
if(1 == scc8660_link_list_num)
|
|
||||||
{
|
|
||||||
dma_set_destination(SCC8660_DMA_CH, (uint8 *)scc8660_image[0]); // û<>в<EFBFBD><D0B2><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ӵ<EFBFBD><D3B4><EFBFBD>ģʽ <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ŀ<EFBFBD>ĵ<EFBFBD>ַ
|
|
||||||
}
|
|
||||||
dma_enable(SCC8660_DMA_CH);
|
|
||||||
}
|
|
||||||
scc8660_lost_flag = 1;
|
|
||||||
}
|
|
||||||
|
|
||||||
//-------------------------------------------------------------------------------------------------------------------
|
|
||||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> SCC8660<36><30><EFBFBD><EFBFBD>ͷDMA<4D><41><EFBFBD><EFBFBD><EFBFBD>ж<EFBFBD>
|
|
||||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> void
|
|
||||||
// <20><><EFBFBD>ز<EFBFBD><D8B2><EFBFBD> void
|
|
||||||
// ʹ<><CAB9>ʾ<EFBFBD><CABE> scc8660_dma_handler();
|
|
||||||
//-------------------------------------------------------------------------------------------------------------------
|
|
||||||
static void scc8660_dma_handler(void)
|
|
||||||
{
|
|
||||||
clear_dma_flag(SCC8660_DMA_CH);
|
|
||||||
|
|
||||||
if(IfxDma_getChannelTransactionRequestLost(&MODULE_DMA, SCC8660_DMA_CH)) // ͼ<><CDBC><EFBFBD><EFBFBD>λ<EFBFBD>ж<EFBFBD>
|
|
||||||
{
|
|
||||||
scc8660_finish_flag = 0;
|
|
||||||
dma_disable(SCC8660_DMA_CH);
|
|
||||||
IfxDma_clearChannelTransactionRequestLost(&MODULE_DMA, SCC8660_DMA_CH);
|
|
||||||
scc8660_dma_init_flag = 1;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
scc8660_dma_int_num++;
|
|
||||||
if(scc8660_dma_int_num >= scc8660_link_list_num)
|
|
||||||
{
|
|
||||||
// <20>ɼ<EFBFBD><C9BC><EFBFBD><EFBFBD><EFBFBD>
|
|
||||||
// һ<><D2BB>ͼ<EFBFBD><CDBC><EFBFBD>Ӳɼ<D3B2><C9BC><EFBFBD>ʼ<EFBFBD><CABC><EFBFBD>ɼ<EFBFBD><C9BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ3.8MS<EFBFBD><EFBFBD><EFBFBD><EFBFBD>(50FPS<50><53>188*120<32>ֱ<EFBFBD><D6B1><EFBFBD>)
|
|
||||||
scc8660_dma_int_num = 0;
|
|
||||||
scc8660_lost_flag = 0;
|
|
||||||
scc8660_finish_flag = 1;
|
|
||||||
dma_disable(SCC8660_DMA_CH);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
//-------------------------------------------------------------------------------------------------------------------
|
//-------------------------------------------------------------------------------------------------------------------
|
||||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD>ͷ ID
|
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD>ͷ ID
|
||||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> void
|
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> void
|
||||||
@@ -390,38 +330,46 @@ uint16 scc8660_get_version (void)
|
|||||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͼ<EFBFBD><CDBC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͼ<EFBFBD><CDBC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> data <20><>Ҫ<EFBFBD><D2AA><EFBFBD>õ<EFBFBD><C3B5><EFBFBD><EFBFBD><EFBFBD>ֵ
|
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> data <20><>Ҫ<EFBFBD><D2AA><EFBFBD>õ<EFBFBD><C3B5><EFBFBD><EFBFBD><EFBFBD>ֵ
|
||||||
// <20><><EFBFBD>ز<EFBFBD><D8B2><EFBFBD> uint8 1-ʧ<><CAA7> 0-<2D>ɹ<EFBFBD>
|
// <20><><EFBFBD>ز<EFBFBD><D8B2><EFBFBD> uint8 1-ʧ<><CAA7> 0-<2D>ɹ<EFBFBD>
|
||||||
// ʹ<><CAB9>ʾ<EFBFBD><CABE> scc8660_set_bright(data);
|
// ʹ<><CAB9>ʾ<EFBFBD><CABE> scc8660_set_brightness(data);
|
||||||
// <20><>ע<EFBFBD><D7A2>Ϣ <20><><EFBFBD>øú<C3B8><C3BA><EFBFBD>ǰ<EFBFBD><C7B0><EFBFBD>ȳ<EFBFBD>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͷ<EFBFBD><CDB7><EFBFBD>ô<EFBFBD><C3B4><EFBFBD> ͨ<><CDA8><EFBFBD>ú<EFBFBD><C3BA><EFBFBD><EFBFBD><EFBFBD><EFBFBD>õIJ<C3B5><C4B2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ᱻ51<35><31>Ƭ<EFBFBD><C6AC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
// <20><>ע<EFBFBD><D7A2>Ϣ <20><><EFBFBD>øú<C3B8><C3BA><EFBFBD>ǰ<EFBFBD><C7B0><EFBFBD>ȳ<EFBFBD>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͷ<EFBFBD><CDB7><EFBFBD>ô<EFBFBD><C3B4><EFBFBD> ͨ<><CDA8><EFBFBD>ú<EFBFBD><C3BA><EFBFBD><EFBFBD><EFBFBD><EFBFBD>õIJ<C3B5><C4B2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ᱻ51<35><31>Ƭ<EFBFBD><C6AC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
//-------------------------------------------------------------------------------------------------------------------
|
//-------------------------------------------------------------------------------------------------------------------
|
||||||
uint8 scc8660_set_bright (uint16 data)
|
uint8 scc8660_set_brightness (uint16 data)
|
||||||
{
|
{
|
||||||
uint8 return_state = 0;
|
uint8 return_state = 0;
|
||||||
uint8 uart_buffer[4];
|
|
||||||
uint16 temp;
|
|
||||||
uint16 timeout_count = 0;
|
|
||||||
uint32 uart_buffer_index = 0;
|
|
||||||
|
|
||||||
uart_buffer[0] = 0xA5;
|
if(SCC8660_UART == scc8660_type)
|
||||||
uart_buffer[1] = SCC8660_SET_BRIGHT;
|
|
||||||
uart_buffer[2] = data >> 8;
|
|
||||||
uart_buffer[3] = (uint8)data;
|
|
||||||
|
|
||||||
uart_write_buffer(SCC8660_COF_UART, uart_buffer, 4);
|
|
||||||
|
|
||||||
do
|
|
||||||
{
|
{
|
||||||
if(3 <= fifo_used(&camera_receiver_fifo))
|
uint8 uart_buffer[4];
|
||||||
|
uint16 temp;
|
||||||
|
uint16 timeout_count = 0;
|
||||||
|
uint32 uart_buffer_index = 0;
|
||||||
|
|
||||||
|
uart_buffer[0] = 0xA5;
|
||||||
|
uart_buffer[1] = SCC8660_SET_BRIGHT;
|
||||||
|
uart_buffer[2] = data >> 8;
|
||||||
|
uart_buffer[3] = (uint8)data;
|
||||||
|
|
||||||
|
uart_write_buffer(SCC8660_COF_UART, uart_buffer, 4);
|
||||||
|
|
||||||
|
do
|
||||||
{
|
{
|
||||||
uart_buffer_index = 3;
|
if(3 <= fifo_used(&camera_receiver_fifo))
|
||||||
fifo_read_buffer(&camera_receiver_fifo, uart_buffer, &uart_buffer_index, FIFO_READ_AND_CLEAN);
|
{
|
||||||
temp = uart_buffer[1] << 8 | uart_buffer[2];
|
uart_buffer_index = 3;
|
||||||
break;
|
fifo_read_buffer(&camera_receiver_fifo, uart_buffer, &uart_buffer_index, FIFO_READ_AND_CLEAN);
|
||||||
|
temp = uart_buffer[1] << 8 | uart_buffer[2];
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
system_delay_ms(1);
|
||||||
|
}while(SCC8660_INIT_TIMEOUT > timeout_count ++);
|
||||||
|
if((temp != data) || (SCC8660_INIT_TIMEOUT <= timeout_count))
|
||||||
|
{
|
||||||
|
return_state = 1;
|
||||||
}
|
}
|
||||||
system_delay_ms(1);
|
}
|
||||||
}while(SCC8660_INIT_TIMEOUT > timeout_count ++);
|
else
|
||||||
if((temp != data) || (SCC8660_INIT_TIMEOUT <= timeout_count))
|
|
||||||
{
|
{
|
||||||
return_state = 1;
|
return_state = scc8660_set_brightness_sccb(data);
|
||||||
}
|
}
|
||||||
return return_state;
|
return return_state;
|
||||||
}
|
}
|
||||||
@@ -436,32 +384,40 @@ uint8 scc8660_set_bright (uint16 data)
|
|||||||
uint8 scc8660_set_white_balance (uint16 data)
|
uint8 scc8660_set_white_balance (uint16 data)
|
||||||
{
|
{
|
||||||
uint8 return_state = 0;
|
uint8 return_state = 0;
|
||||||
uint8 uart_buffer[4];
|
|
||||||
uint16 temp;
|
|
||||||
uint16 timeout_count = 0;
|
|
||||||
uint32 uart_buffer_index = 0;
|
|
||||||
|
|
||||||
uart_buffer[0] = 0xA5;
|
if(SCC8660_UART == scc8660_type)
|
||||||
uart_buffer[1] = SCC8660_SET_MANUAL_WB;
|
|
||||||
uart_buffer[2] = data >> 8;
|
|
||||||
uart_buffer[3] = (uint8)data;
|
|
||||||
|
|
||||||
uart_write_buffer(SCC8660_COF_UART, uart_buffer, 4);
|
|
||||||
|
|
||||||
do
|
|
||||||
{
|
{
|
||||||
if(3 <= fifo_used(&camera_receiver_fifo))
|
uint8 uart_buffer[4];
|
||||||
|
uint16 temp;
|
||||||
|
uint16 timeout_count = 0;
|
||||||
|
uint32 uart_buffer_index = 0;
|
||||||
|
|
||||||
|
uart_buffer[0] = 0xA5;
|
||||||
|
uart_buffer[1] = SCC8660_SET_MANUAL_WB;
|
||||||
|
uart_buffer[2] = data >> 8;
|
||||||
|
uart_buffer[3] = (uint8)data;
|
||||||
|
|
||||||
|
uart_write_buffer(SCC8660_COF_UART, uart_buffer, 4);
|
||||||
|
|
||||||
|
do
|
||||||
{
|
{
|
||||||
uart_buffer_index = 3;
|
if(3 <= fifo_used(&camera_receiver_fifo))
|
||||||
fifo_read_buffer(&camera_receiver_fifo, uart_buffer, &uart_buffer_index, FIFO_READ_AND_CLEAN);
|
{
|
||||||
temp = uart_buffer[1] << 8 | uart_buffer[2];
|
uart_buffer_index = 3;
|
||||||
break;
|
fifo_read_buffer(&camera_receiver_fifo, uart_buffer, &uart_buffer_index, FIFO_READ_AND_CLEAN);
|
||||||
|
temp = uart_buffer[1] << 8 | uart_buffer[2];
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
system_delay_ms(1);
|
||||||
|
}while(SCC8660_INIT_TIMEOUT > timeout_count ++);
|
||||||
|
if((temp != data) || (SCC8660_INIT_TIMEOUT <= timeout_count))
|
||||||
|
{
|
||||||
|
return_state = 1;
|
||||||
}
|
}
|
||||||
system_delay_ms(1);
|
}
|
||||||
}while(SCC8660_INIT_TIMEOUT > timeout_count ++);
|
else
|
||||||
if((temp != data) || (SCC8660_INIT_TIMEOUT <= timeout_count))
|
|
||||||
{
|
{
|
||||||
return_state = 1;
|
return_state = scc8660_set_manual_wb_sccb(data);
|
||||||
}
|
}
|
||||||
return return_state;
|
return return_state;
|
||||||
}
|
}
|
||||||
@@ -477,43 +433,117 @@ uint8 scc8660_set_white_balance (uint16 data)
|
|||||||
uint8 scc8660_set_reg (uint8 addr, uint16 data)
|
uint8 scc8660_set_reg (uint8 addr, uint16 data)
|
||||||
{
|
{
|
||||||
uint8 return_state = 0;
|
uint8 return_state = 0;
|
||||||
uint8 uart_buffer[4];
|
|
||||||
uint16 temp;
|
|
||||||
uint16 timeout_count = 0;
|
|
||||||
uint32 uart_buffer_index = 0;
|
|
||||||
|
|
||||||
uart_buffer[0] = 0xA5;
|
if(SCC8660_UART == scc8660_type)
|
||||||
uart_buffer[1] = SCC8660_SET_REG_ADDR;
|
|
||||||
uart_buffer[2] = 0x00;
|
|
||||||
uart_buffer[3] = (uint8)addr;
|
|
||||||
uart_write_buffer(SCC8660_COF_UART, uart_buffer, 4);
|
|
||||||
|
|
||||||
system_delay_ms(10);
|
|
||||||
uart_buffer[0] = 0xA5;
|
|
||||||
uart_buffer[1] = SCC8660_SET_REG_DATA;
|
|
||||||
temp = data;
|
|
||||||
uart_buffer[2] = temp >> 8;
|
|
||||||
uart_buffer[3] = (uint8)temp;
|
|
||||||
uart_write_buffer(SCC8660_COF_UART, uart_buffer, 4);
|
|
||||||
|
|
||||||
do
|
|
||||||
{
|
{
|
||||||
if(3 <= fifo_used(&camera_receiver_fifo))
|
uint8 uart_buffer[4];
|
||||||
|
uint16 temp;
|
||||||
|
uint16 timeout_count = 0;
|
||||||
|
uint32 uart_buffer_index = 0;
|
||||||
|
|
||||||
|
uart_buffer[0] = 0xA5;
|
||||||
|
uart_buffer[1] = SCC8660_SET_REG_ADDR;
|
||||||
|
uart_buffer[2] = 0x00;
|
||||||
|
uart_buffer[3] = (uint8)addr;
|
||||||
|
uart_write_buffer(SCC8660_COF_UART, uart_buffer, 4);
|
||||||
|
|
||||||
|
system_delay_ms(10);
|
||||||
|
uart_buffer[0] = 0xA5;
|
||||||
|
uart_buffer[1] = SCC8660_SET_REG_DATA;
|
||||||
|
temp = data;
|
||||||
|
uart_buffer[2] = temp >> 8;
|
||||||
|
uart_buffer[3] = (uint8)temp;
|
||||||
|
uart_write_buffer(SCC8660_COF_UART, uart_buffer, 4);
|
||||||
|
|
||||||
|
do
|
||||||
{
|
{
|
||||||
uart_buffer_index = 3;
|
if(3 <= fifo_used(&camera_receiver_fifo))
|
||||||
fifo_read_buffer(&camera_receiver_fifo, uart_buffer, &uart_buffer_index, FIFO_READ_AND_CLEAN);
|
{
|
||||||
temp = uart_buffer[1] << 8 | uart_buffer[2];
|
uart_buffer_index = 3;
|
||||||
break;
|
fifo_read_buffer(&camera_receiver_fifo, uart_buffer, &uart_buffer_index, FIFO_READ_AND_CLEAN);
|
||||||
|
temp = uart_buffer[1] << 8 | uart_buffer[2];
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
system_delay_ms(1);
|
||||||
|
}while(SCC8660_INIT_TIMEOUT > timeout_count ++);
|
||||||
|
if((temp != data) || (SCC8660_INIT_TIMEOUT <= timeout_count))
|
||||||
|
{
|
||||||
|
return_state = 1;
|
||||||
}
|
}
|
||||||
system_delay_ms(1);
|
|
||||||
}while(SCC8660_INIT_TIMEOUT > timeout_count ++);
|
}
|
||||||
if((temp != data) || (SCC8660_INIT_TIMEOUT <= timeout_count))
|
else
|
||||||
{
|
{
|
||||||
return_state = 1;
|
return_state = scc8660_set_reg_sccb(addr, data);
|
||||||
}
|
}
|
||||||
return return_state;
|
return return_state;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//-------------------------------------------------------------------------------------------------------------------
|
||||||
|
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> SCC8660<36><30><EFBFBD><EFBFBD>ͷ<EFBFBD><CDB7><EFBFBD>ж<EFBFBD>
|
||||||
|
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> void
|
||||||
|
// <20><><EFBFBD>ز<EFBFBD><D8B2><EFBFBD> void
|
||||||
|
// ʹ<><CAB9>ʾ<EFBFBD><CABE> scc8660_vsync_handler();
|
||||||
|
//-------------------------------------------------------------------------------------------------------------------
|
||||||
|
static void scc8660_vsync_handler(void)
|
||||||
|
{
|
||||||
|
exti_flag_clear(SCC8660_VSYNC_PIN);
|
||||||
|
scc8660_dma_int_num = 0;
|
||||||
|
if(scc8660_dma_init_flag || scc8660_lost_flag)
|
||||||
|
{
|
||||||
|
scc8660_dma_init_flag = 0;
|
||||||
|
IfxDma_resetChannel(&MODULE_DMA, SCC8660_DMA_CH);
|
||||||
|
scc8660_link_list_num = dma_init(SCC8660_DMA_CH,
|
||||||
|
SCC8660_DATA_ADD,
|
||||||
|
(uint8 *)scc8660_image[0],
|
||||||
|
SCC8660_PCLK_PIN,
|
||||||
|
EXTI_TRIGGER_RISING,
|
||||||
|
SCC8660_IMAGE_SIZE);
|
||||||
|
dma_enable(SCC8660_DMA_CH);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
if(1 == scc8660_link_list_num)
|
||||||
|
{
|
||||||
|
dma_set_destination(SCC8660_DMA_CH, (uint8 *)scc8660_image[0]); // û<>в<EFBFBD><D0B2><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ӵ<EFBFBD><D3B4><EFBFBD>ģʽ <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ŀ<EFBFBD>ĵ<EFBFBD>ַ
|
||||||
|
}
|
||||||
|
dma_enable(SCC8660_DMA_CH);
|
||||||
|
}
|
||||||
|
scc8660_lost_flag = 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
//-------------------------------------------------------------------------------------------------------------------
|
||||||
|
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> SCC8660<36><30><EFBFBD><EFBFBD>ͷDMA<4D><41><EFBFBD><EFBFBD><EFBFBD>ж<EFBFBD>
|
||||||
|
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> void
|
||||||
|
// <20><><EFBFBD>ز<EFBFBD><D8B2><EFBFBD> void
|
||||||
|
// ʹ<><CAB9>ʾ<EFBFBD><CABE> scc8660_dma_handler();
|
||||||
|
//-------------------------------------------------------------------------------------------------------------------
|
||||||
|
static void scc8660_dma_handler(void)
|
||||||
|
{
|
||||||
|
clear_dma_flag(SCC8660_DMA_CH);
|
||||||
|
|
||||||
|
if(IfxDma_getChannelTransactionRequestLost(&MODULE_DMA, SCC8660_DMA_CH)) // ͼ<><CDBC><EFBFBD><EFBFBD>λ<EFBFBD>ж<EFBFBD>
|
||||||
|
{
|
||||||
|
scc8660_finish_flag = 0;
|
||||||
|
dma_disable(SCC8660_DMA_CH);
|
||||||
|
IfxDma_clearChannelTransactionRequestLost(&MODULE_DMA, SCC8660_DMA_CH);
|
||||||
|
scc8660_dma_init_flag = 1;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
scc8660_dma_int_num++;
|
||||||
|
if(scc8660_dma_int_num >= scc8660_link_list_num)
|
||||||
|
{
|
||||||
|
// <20>ɼ<EFBFBD><C9BC><EFBFBD><EFBFBD><EFBFBD>
|
||||||
|
// һ<><D2BB>ͼ<EFBFBD><CDBC><EFBFBD>Ӳɼ<D3B2><C9BC><EFBFBD>ʼ<EFBFBD><CABC><EFBFBD>ɼ<EFBFBD><C9BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ3.8MS<EFBFBD><EFBFBD><EFBFBD><EFBFBD>(50FPS<50><53>188*120<32>ֱ<EFBFBD><D6B1><EFBFBD>)
|
||||||
|
scc8660_dma_int_num = 0;
|
||||||
|
scc8660_lost_flag = 0;
|
||||||
|
scc8660_finish_flag = 1;
|
||||||
|
dma_disable(SCC8660_DMA_CH);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
//-------------------------------------------------------------------------------------------------------------------
|
//-------------------------------------------------------------------------------------------------------------------
|
||||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> SCC8660 <20><><EFBFBD><EFBFBD>ͷ<EFBFBD><CDB7>ʼ<EFBFBD><CABC>
|
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> SCC8660 <20><><EFBFBD><EFBFBD>ͷ<EFBFBD><CDB7>ʼ<EFBFBD><CABC>
|
||||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> void
|
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> void
|
||||||
@@ -524,51 +554,54 @@ uint8 scc8660_set_reg (uint8 addr, uint16 data)
|
|||||||
uint8 scc8660_init (void)
|
uint8 scc8660_init (void)
|
||||||
{
|
{
|
||||||
uint8 return_state = 0;
|
uint8 return_state = 0;
|
||||||
uint16 scc8660_version = 0;
|
soft_iic_info_struct scc8660_iic_struct;
|
||||||
|
|
||||||
|
// <20><>ʼ<EFBFBD><CABC>֮ǰ<D6AE><C7B0><EFBFBD>߳<EFBFBD><DFB3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
gpio_init(P02_0, GPO, GPIO_HIGH, GPO_PUSH_PULL);
|
gpio_init(P02_0, GPO, GPIO_HIGH, GPO_PUSH_PULL);
|
||||||
gpio_init(P02_1, GPO, GPIO_HIGH, GPO_PUSH_PULL);
|
gpio_init(P02_1, GPO, GPIO_HIGH, GPO_PUSH_PULL);
|
||||||
|
|
||||||
// <20><>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͷ
|
|
||||||
uart_init(SCC8660_COF_UART, SCC8660_COF_BAUR, SCC8660_COF_UART_RX, SCC8660_COF_UART_TX);
|
|
||||||
uart_rx_interrupt(SCC8660_COF_UART, 1);
|
|
||||||
|
|
||||||
system_delay_ms(200);
|
|
||||||
|
|
||||||
set_camera_type(CAMERA_COLOR, scc8660_vsync_handler, scc8660_dma_handler, scc8660_uart_callback); // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͷ<EFBFBD><CDB7><EFBFBD><EFBFBD>
|
|
||||||
camera_fifo_init();
|
|
||||||
do
|
do
|
||||||
{
|
{
|
||||||
// <20>ȴ<EFBFBD><C8B4><EFBFBD><EFBFBD><EFBFBD>ͷ<EFBFBD>ϵ<EFBFBD><CFB5><EFBFBD>ʼ<EFBFBD><CABC><EFBFBD>ɹ<EFBFBD> <20><>ʽ<EFBFBD><CABD><EFBFBD><EFBFBD><EFBFBD>֣<EFBFBD><D6A3><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD>ͨ<EFBFBD><CDA8><EFBFBD><EFBFBD>ȡ<EFBFBD><C8A1><EFBFBD>õķ<C3B5>ʽ <20><>ѡһ
|
system_delay_ms(200);
|
||||||
// system_delay_ms(1000); // <20><>ʱ<EFBFBD><CAB1>ʽ
|
set_camera_type(CAMERA_COLOR, scc8660_vsync_handler, scc8660_dma_handler, NULL); // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͷ<EFBFBD><CDB7><EFBFBD><EFBFBD>
|
||||||
scc8660_version = scc8660_get_version(); // <20><>ȡ<EFBFBD><C8A1><EFBFBD>õķ<C3B5>ʽ
|
// <20><><EFBFBD>ȳ<EFBFBD><C8B3><EFBFBD>SCCBͨѶ
|
||||||
if(scc8660_set_config(scc8660_set_confing_buffer))
|
scc8660_type = SCC8660_SCCB;
|
||||||
|
soft_iic_init(&scc8660_iic_struct, 0, SCC8660_COF_IIC_DELAY, SCC8660_COF_IIC_SCL, SCC8660_COF_IIC_SDA);
|
||||||
|
if(scc8660_set_config_sccb(&scc8660_iic_struct, scc8660_set_confing_buffer))
|
||||||
{
|
{
|
||||||
set_camera_type(NO_CAMERE, NULL, NULL, NULL);
|
// SCCBͨѶʧ<D1B6>ܣ<EFBFBD><DCA3><EFBFBD><EFBFBD>Դ<EFBFBD><D4B4><EFBFBD>ͨѶ
|
||||||
return_state = 1;
|
scc8660_type = SCC8660_UART;
|
||||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>˶<EFBFBD><CBB6><EFBFBD><EFBFBD><EFBFBD>Ϣ <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD>λ<EFBFBD><CEBB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
camera_fifo_init();
|
||||||
// <20><>ô<EFBFBD><EFBFBD><EFBFBD>Ǵ<EFBFBD><EFBFBD><EFBFBD>ͨ<EFBFBD>ų<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD>˳<EFBFBD><EFBFBD><EFBFBD>
|
set_camera_type(CAMERA_COLOR, scc8660_vsync_handler, scc8660_dma_handler, &scc8660_uart_callback); // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͷ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
// <20><><EFBFBD><EFBFBD>һ<EFBFBD>½<EFBFBD><C2BD><EFBFBD><EFBFBD><EFBFBD>û<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>û<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ܾ<EFBFBD><EFBFBD>ǻ<EFBFBD><EFBFBD><EFBFBD>
|
uart_init (SCC8660_COF_UART, SCC8660_COF_BAUR, SCC8660_COF_UART_RX, SCC8660_COF_UART_TX); //<2F><>ʼ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͷ
|
||||||
zf_log(0, "SCC8660 set config error.");
|
uart_rx_interrupt(SCC8660_COF_UART, 1);
|
||||||
break;
|
fifo_clear(&camera_receiver_fifo);
|
||||||
}
|
|
||||||
|
|
||||||
if(0 == return_state)
|
if(scc8660_set_config(scc8660_set_confing_buffer))
|
||||||
{
|
|
||||||
// <20><>ȡ<EFBFBD><C8A1><EFBFBD>ñ<EFBFBD><C3B1>ڲ鿴<DAB2><E9BFB4><EFBFBD><EFBFBD><EFBFBD>Ƿ<EFBFBD><C7B7><EFBFBD>ȷ
|
|
||||||
if(scc8660_get_config(scc8660_get_confing_buffer))
|
|
||||||
{
|
{
|
||||||
set_camera_type(NO_CAMERE, NULL, NULL, NULL);
|
|
||||||
return_state = 1;
|
|
||||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>˶<EFBFBD><CBB6><EFBFBD><EFBFBD><EFBFBD>Ϣ <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD>λ<EFBFBD><CEBB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>˶<EFBFBD><CBB6><EFBFBD><EFBFBD><EFBFBD>Ϣ <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD>λ<EFBFBD><CEBB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
// <20><>ô<EFBFBD><C3B4><EFBFBD>Ǵ<EFBFBD><EFBFBD><EFBFBD>ͨ<EFBFBD>ų<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD>˳<EFBFBD><EFBFBD><EFBFBD>
|
// <20><>ô<EFBFBD><C3B4><EFBFBD><EFBFBD>ͨ<EFBFBD>ų<EFBFBD><C5B3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD>˳<EFBFBD><CBB3><EFBFBD>
|
||||||
// <20><><EFBFBD><EFBFBD>һ<EFBFBD>½<EFBFBD><C2BD><EFBFBD><EFBFBD><EFBFBD>û<EFBFBD><C3BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>û<EFBFBD><C3BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ܾ<EFBFBD><DCBE>ǻ<EFBFBD><C7BB><EFBFBD>
|
// <20><><EFBFBD><EFBFBD>һ<EFBFBD>½<EFBFBD><C2BD><EFBFBD><EFBFBD><EFBFBD>û<EFBFBD><C3BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>û<EFBFBD><C3BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ܾ<EFBFBD><DCBE>ǻ<EFBFBD><C7BB><EFBFBD>
|
||||||
zf_log(0, "SCC8660 set config error.");
|
zf_log(0, "SCC8660 set config error.");
|
||||||
|
set_camera_type(NO_CAMERE, NULL, NULL, NULL);
|
||||||
|
return_state = 1;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
scc8660_link_list_num = camera_init(SCC8660_DATA_ADD, (uint8 *)scc8660_image[0], SCC8660_IMAGE_SIZE);
|
// <20><>ȡ<EFBFBD><C8A1><EFBFBD>ñ<EFBFBD><C3B1>ڲ鿴<DAB2><E9BFB4><EFBFBD><EFBFBD><EFBFBD>Ƿ<EFBFBD><C7B7><EFBFBD>ȷ
|
||||||
|
if(scc8660_get_config(scc8660_get_confing_buffer))
|
||||||
|
{
|
||||||
|
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>˶<EFBFBD><CBB6><EFBFBD><EFBFBD><EFBFBD>Ϣ <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD>λ<EFBFBD><CEBB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
|
// <20><>ô<EFBFBD><C3B4><EFBFBD>Ǵ<EFBFBD><C7B4><EFBFBD>ͨ<EFBFBD>ų<EFBFBD><C5B3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD>˳<EFBFBD><CBB3><EFBFBD>
|
||||||
|
// <20><><EFBFBD><EFBFBD>һ<EFBFBD>½<EFBFBD><C2BD><EFBFBD><EFBFBD><EFBFBD>û<EFBFBD><C3BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>û<EFBFBD><C3BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ܾ<EFBFBD><DCBE>ǻ<EFBFBD><C7BB><EFBFBD>
|
||||||
|
zf_log(0, "SCC8660 get config error.");
|
||||||
|
set_camera_type(NO_CAMERE, NULL, NULL, NULL);
|
||||||
|
return_state = 1;
|
||||||
|
break;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
scc8660_link_list_num = camera_init(SCC8660_DATA_ADD, (uint8 *)scc8660_image[0], SCC8660_IMAGE_SIZE);
|
||||||
}while(0);
|
}while(0);
|
||||||
|
|
||||||
return return_state;
|
return return_state;
|
||||||
|
|||||||
@@ -31,7 +31,7 @@
|
|||||||
* <20>ļ<DEB8>¼
|
* <20>ļ<DEB8>¼
|
||||||
* <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><>ע
|
* <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><>ע
|
||||||
* 2022-09-15 pudding first version
|
* 2022-09-15 pudding first version
|
||||||
* 2023-04-28 pudding <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ע<EFBFBD><EFBFBD>˵<EFBFBD><EFBFBD>
|
* 2024-02-02 pudding <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>MCU<EFBFBD><EFBFBD>ͫ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
********************************************************************************************************************/
|
********************************************************************************************************************/
|
||||||
/*********************************************************************************************************************
|
/*********************************************************************************************************************
|
||||||
* <20><><EFBFBD>߶<EFBFBD><DFB6>壺
|
* <20><><EFBFBD>߶<EFBFBD><DFB6>壺
|
||||||
@@ -59,35 +59,36 @@
|
|||||||
#define SCC8660_COF_UART_TX (UART1_RX_P02_3) // <20><>ͫ UART-TX <20><><EFBFBD><EFBFBD> Ҫ<><D2AA><EFBFBD>ڵ<EFBFBD>Ƭ<EFBFBD><C6AC> RX <20><>
|
#define SCC8660_COF_UART_TX (UART1_RX_P02_3) // <20><>ͫ UART-TX <20><><EFBFBD><EFBFBD> Ҫ<><D2AA><EFBFBD>ڵ<EFBFBD>Ƭ<EFBFBD><C6AC> RX <20><>
|
||||||
#define SCC8660_COF_UART_RX (UART1_TX_P02_2) // <20><>ͫ UART-RX <20><><EFBFBD><EFBFBD> Ҫ<><D2AA><EFBFBD>ڵ<EFBFBD>Ƭ<EFBFBD><C6AC> TX <20><>
|
#define SCC8660_COF_UART_RX (UART1_TX_P02_2) // <20><>ͫ UART-RX <20><><EFBFBD><EFBFBD> Ҫ<><D2AA><EFBFBD>ڵ<EFBFBD>Ƭ<EFBFBD><C6AC> TX <20><>
|
||||||
|
|
||||||
|
#define SCC8660_COF_IIC_DELAY (800) // <20><>ͫ IIC <20><>ʱ
|
||||||
|
#define SCC8660_COF_IIC_SCL (P02_3) // <20><>ͫ IIC-SCL <20><><EFBFBD><EFBFBD>
|
||||||
|
#define SCC8660_COF_IIC_SDA (P02_2) // <20><>ͫ IIC-SDA <20><><EFBFBD><EFBFBD>
|
||||||
|
|
||||||
#define SCC8660_DMA_CH (IfxDma_ChannelId_5)
|
#define SCC8660_DMA_CH (IfxDma_ChannelId_5)
|
||||||
|
|
||||||
#define SCC8660_PCLK_PIN (ERU_CH2_REQ14_P02_1) // PCLK <20><><EFBFBD><EFBFBD><EFBFBD>ź<EFBFBD> TIM_ETR <20><><EFBFBD>Ž<EFBFBD>ֹ<EFBFBD><D6B9><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
#define SCC8660_PCLK_PIN (ERU_CH2_REQ14_P02_1) // PCLK <20><><EFBFBD><EFBFBD><EFBFBD>ź<EFBFBD> TIM_ETR <20><><EFBFBD>Ž<EFBFBD>ֹ<EFBFBD><D6B9><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
|
|
||||||
#define SCC8660_VSYNC_PIN (ERU_CH3_REQ6_P02_0 ) // <20><><EFBFBD>ж<EFBFBD><D0B6><EFBFBD><EFBFBD><EFBFBD>
|
#define SCC8660_VSYNC_PIN (ERU_CH3_REQ6_P02_0 ) // <20><><EFBFBD>ж<EFBFBD><D0B6><EFBFBD><EFBFBD><EFBFBD>
|
||||||
|
|
||||||
#define SCC8660_DATA_PIN (P00_0) // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ֻ<><D6BB><EFBFBD><EFBFBD> GPIOx0 <20><><EFBFBD><EFBFBD> GPIOx8 <20><>ʼ <20><><EFBFBD><EFBFBD><EFBFBD>˸<EFBFBD><CBB8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> F0-F7
|
#define SCC8660_DATA_PIN (P00_0) // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ֻ<><D6BB><EFBFBD><EFBFBD> GPIOx0 <20><><EFBFBD><EFBFBD> GPIOx8 <20><>ʼ <20><><EFBFBD><EFBFBD><EFBFBD>˸<EFBFBD><CBB8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> F0-F7
|
||||||
#define SCC8660_DATA_ADD (get_port_in_addr(SCC8660_DATA_PIN))
|
#define SCC8660_DATA_ADD (get_port_in_addr(SCC8660_DATA_PIN))
|
||||||
|
|
||||||
#define SCC8660_INIT_TIMEOUT (0x00F0) // Ĭ<>ϵ<EFBFBD><CFB5><EFBFBD><EFBFBD><EFBFBD>ͷ<EFBFBD><CDB7>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD>ʱʱ<CAB1><CAB1> <20><><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA>λ
|
#define SCC8660_INIT_TIMEOUT (0x00F0) // Ĭ<>ϵ<EFBFBD><CFB5><EFBFBD><EFBFBD><EFBFBD>ͷ<EFBFBD><CDB7>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD>ʱʱ<CAB1><CAB1> <20><><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA>λ
|
||||||
//================================================<3D><><EFBFBD><EFBFBD> SCC8660 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>================================================
|
//================================================<3D><><EFBFBD><EFBFBD> SCC8660 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>================================================
|
||||||
|
|
||||||
//================================================<3D><><EFBFBD><EFBFBD> SCC8660 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>================================================
|
//================================================<3D><><EFBFBD><EFBFBD> SCC8660 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ã<EFBFBD><EFBFBD><EFBFBD>֧<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͫ<EFBFBD><EFBFBD>֡<EFBFBD>ʰ汾<EFBFBD><EFBFBD>===========================
|
||||||
#define SCC8660_W (160) // ʵ<EFBFBD><EFBFBD>ͼ<EFBFBD><EFBFBD><EFBFBD>ֱ<EFBFBD><EFBFBD>ʿ<EFBFBD><EFBFBD><EFBFBD> <20><>ѡ<EFBFBD><D1A1><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA>160 180
|
#define SCC8660_W (160) // ͼ<><CDBC><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>ѡ<EFBFBD><D1A1><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA>160 80 40
|
||||||
#define SCC8660_H (120) // ʵ<EFBFBD><EFBFBD>ͼ<EFBFBD><EFBFBD><EFBFBD>ֱ<EFBFBD><EFBFBD>ʸ߶<EFBFBD> <20><>ѡ<EFBFBD><D1A1><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA>120 160
|
#define SCC8660_H (120) // ͼ<><CDBC><EFBFBD>߶<EFBFBD> <20><>ѡ<EFBFBD><D1A1><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA>120 160 240
|
||||||
#define SCC8660_IMAGE_SIZE (SCC8660_W * 2 * SCC8660_H) // <20><><EFBFBD><EFBFBD>ͼ<EFBFBD><CDBC><EFBFBD><EFBFBD>С SCC8660_W*2*SCC8660_H <20><><EFBFBD>ܳ<EFBFBD><DCB3><EFBFBD> 65535
|
#define SCC8660_IMAGE_SIZE (SCC8660_W * 2 * SCC8660_H) // <20><><EFBFBD><EFBFBD>ͼ<EFBFBD><CDBC><EFBFBD><EFBFBD>С SCC8660_W*2*SCC8660_H <20><><EFBFBD>ܳ<EFBFBD><DCB3><EFBFBD> 65535
|
||||||
|
|
||||||
#define SCC8660_AUTO_EXP_DEF (0 ) // <20>Զ<EFBFBD><D4B6>ع<EFBFBD> Ĭ<>ϲ<EFBFBD><CFB2><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Զ<EFBFBD><D4B6>ع<EFBFBD><D8B9><EFBFBD><EFBFBD><EFBFBD> <20><>Χ [0-1] 0Ϊ<30>ر<EFBFBD>
|
#define SCC8660_AUTO_EXP_DEF (0 ) // <20>Զ<EFBFBD><D4B6>ع<EFBFBD> Ĭ<>ϲ<EFBFBD><CFB2><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Զ<EFBFBD><D4B6>ع<EFBFBD><D8B9><EFBFBD><EFBFBD><EFBFBD> <20><>Χ [0-1] 0Ϊ<30>ر<EFBFBD>
|
||||||
#define SCC8660_BRIGHT_DEF (300) // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ֶ<EFBFBD><D6B6>ع<EFBFBD>Ĭ<EFBFBD>ϣ<EFBFBD>300 <20>ֶ<EFBFBD><D6B6>ع<EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Χ0-65535 <20>Զ<EFBFBD><D4B6>ع<EFBFBD><D8B9>Ƽ<EFBFBD>ֵ<EFBFBD><D6B5>100 <20>Զ<EFBFBD><D4B6>ع<EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>÷<EFBFBD>Χ0-255
|
#define SCC8660_BRIGHT_DEF (500) // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ֶ<EFBFBD><D6B6>ع<EFBFBD>Ĭ<EFBFBD>ϣ<EFBFBD>300 <20>ֶ<EFBFBD><D6B6>ع<EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Χ0-65535 <20>Զ<EFBFBD><D4B6>ع<EFBFBD><D8B9>Ƽ<EFBFBD>ֵ<EFBFBD><D6B5>100 <20>Զ<EFBFBD><D4B6>ع<EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>÷<EFBFBD>Χ0-255
|
||||||
#define SCC8660_FPS_DEF (50 ) // ͼ<><CDBC>֡<EFBFBD><D6A1> Ĭ<>ϣ<EFBFBD>50 <20><>ѡ<EFBFBD><D1A1><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA>60 50 30 25<32><35> ʵ<><CAB5>֡<EFBFBD>ʻ<EFBFBD><CABB><EFBFBD>Ҫ<EFBFBD><D2AA>SCC8660_PCLK_DIV<49><56><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
#define SCC8660_FPS_DEF (50 ) // ͼ<><CDBC>֡<EFBFBD><D6A1> Ĭ<>ϣ<EFBFBD>50 <20><>ѡ<EFBFBD><D1A1><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA>60 50 30 25<32><35> ʵ<><CAB5>֡<EFBFBD>ʻ<EFBFBD><CABB><EFBFBD>Ҫ<EFBFBD><D2AA>SCC8660_PCLK_DIV<49><56><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
#define SCC8660_PCLK_DIV_DEF (5 ) // PCLK<4C><4B>Ƶϵ<C6B5><CFB5> Ĭ<>ϣ<EFBFBD>5 <20><>ѡ<EFBFBD><D1A1><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA><0:1/1> <1:2/3> <2:1/2> <3:1/3> <4:1/4> <5:1/8>
|
#define SCC8660_PCLK_DIV_DEF (2 ) // PCLK<4C><4B>Ƶϵ<C6B5><CFB5> Ĭ<>ϣ<EFBFBD>5 <20><>ѡ<EFBFBD><D1A1><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA><0:1/1> <1:2/3> <2:1/2> <3:1/3> <4:1/4> <5:1/8>
|
||||||
// <20><>Ƶϵ<C6B5><CFB5>Խ<EFBFBD><D4BD><EFBFBD><EFBFBD>PCLKƵ<4B><C6B5>Խ<EFBFBD>ͣ<EFBFBD><CDA3><EFBFBD><EFBFBD><EFBFBD>PCLK<4C><4B><EFBFBD>Լ<EFBFBD><D4BC><EFBFBD>DVP<56>ӿڵĸ<DAB5><C4B8>ţ<EFBFBD><C5A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>PCLKƵ<4B><C6B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ӱ<EFBFBD><D3B0>֡<EFBFBD>ʡ<EFBFBD><CAA1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>뱣<EFBFBD><EBB1A3>Ĭ<EFBFBD>ϡ<EFBFBD>
|
// <20><>Ƶϵ<C6B5><CFB5>Խ<EFBFBD><D4BD><EFBFBD><EFBFBD>PCLKƵ<4B><C6B5>Խ<EFBFBD>ͣ<EFBFBD><CDA3><EFBFBD><EFBFBD><EFBFBD>PCLK<4C><4B><EFBFBD>Լ<EFBFBD><D4BC><EFBFBD>DVP<56>ӿڵĸ<DAB5><C4B8>ţ<EFBFBD><C5A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>PCLKƵ<4B><C6B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ӱ<EFBFBD><D3B0>֡<EFBFBD>ʡ<EFBFBD><CAA1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>뱣<EFBFBD><EBB1A3>Ĭ<EFBFBD>ϡ<EFBFBD>
|
||||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>FPSΪ50֡<30><D6A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>pclk<6C><6B>Ƶϵ<C6B5><CFB5>ѡ<EFBFBD><D1A1><EFBFBD><EFBFBD>Ϊ5<CEAA><35><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͷ<EFBFBD><CDB7><EFBFBD><EFBFBD><EFBFBD><EFBFBD>֡<EFBFBD><D6A1>Ϊ50*<2A><>1/8<><38>=6.25֡
|
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>FPSΪ50֡<30><D6A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>pclk<6C><6B>Ƶϵ<C6B5><CFB5>ѡ<EFBFBD><D1A1><EFBFBD><EFBFBD>Ϊ5<CEAA><35><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͷ<EFBFBD><CDB7><EFBFBD><EFBFBD><EFBFBD><EFBFBD>֡<EFBFBD><D6A1>Ϊ50*<2A><>1/8<><38>=6.25֡
|
||||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>£<EFBFBD>SCC8660_PCLK_DIV<49><56><EFBFBD><EFBFBD>Խ<EFBFBD><D4BD>ͼ<EFBFBD><CDBC><EFBFBD><EFBFBD>Խ<EFBFBD><D4BD>
|
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>£<EFBFBD>SCC8660_PCLK_DIV<49><56><EFBFBD><EFBFBD>Խ<EFBFBD><D4BD>ͼ<EFBFBD><CDBC><EFBFBD><EFBFBD>Խ<EFBFBD><D4BD>
|
||||||
#define SCC8660_PCLK_MODE_DEF (0 ) // PCLKģʽ Ĭ<>ϣ<EFBFBD>0 <20><>ѡ<EFBFBD><D1A1><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA>[0,1] 0<><30><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ź<EFBFBD> 1<><31><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ź<EFBFBD> <ͨ<><CDA8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ0<CEAA><30><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʹ<EFBFBD><CAB9>STM32<33><32>DCMI<4D>ӿڲɼ<DAB2><C9BC><EFBFBD>Ҫ<EFBFBD><D2AA><EFBFBD><EFBFBD>Ϊ1>
|
#define SCC8660_PCLK_MODE_DEF (0 ) // PCLKģʽ Ĭ<EFBFBD>ϣ<EFBFBD>0 <20><>ѡ<EFBFBD><D1A1><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA>[0,1] 0<><30><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ź<EFBFBD> 1<><31><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ź<EFBFBD> <ͨ<><CDA8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ0<CEAA><30><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʹ<EFBFBD><CAB9>STM32<33><32>DCMI<4D>ӿڲɼ<DAB2><C9BC><EFBFBD>Ҫ<EFBFBD><D2AA><EFBFBD><EFBFBD>Ϊ1>
|
||||||
#define SCC8660_COLOR_MODE_DEF (1 ) // ͼ<><CDBC>ɫ<EFBFBD><C9AB>ģʽ Ĭ<>ϣ<EFBFBD>0 <20><>ѡ<EFBFBD><D1A1><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA>[0,1] 0<><30><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɫģʽ 1<><31><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ģʽ<C4A3><CABD>ɫ<EFBFBD>ʱ<EFBFBD><CAB1>Ͷ<EFBFBD><CDB6><EFBFBD><EFBFBD>ߣ<EFBFBD>
|
#define SCC8660_COLOR_MODE_DEF (0 ) // ͼ<><CDBC>ɫ<EFBFBD><C9AB>ģʽ Ĭ<>ϣ<EFBFBD>0 <20><>ѡ<EFBFBD><D1A1><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA>[0,1] 0<><30><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɫģʽ 1<><31><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ģʽ<C4A3><CABD>ɫ<EFBFBD>ʱ<EFBFBD><CAB1>Ͷ<EFBFBD><CDB6><EFBFBD><EFBFBD>ߣ<EFBFBD>
|
||||||
#define SCC8660_DATA_FORMAT_DEF (1 ) // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݸ<EFBFBD>ʽ Ĭ<>ϣ<EFBFBD>0 <20><>ѡ<EFBFBD><D1A1><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA>[0-3] 0<><30>RGB565 1<><31>RGB565(<28>ֽڽ<D6BD><DABD><EFBFBD>) 2<><32>YUV422(YUYV) 3<><33>YUV422(UYVY)
|
#define SCC8660_DATA_FORMAT_DEF (0 ) // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݸ<EFBFBD>ʽ Ĭ<>ϣ<EFBFBD>0 <20><>ѡ<EFBFBD><D1A1><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA>[0-3] 0<><30>RGB565 1<><31>RGB565(<28>ֽڽ<D6BD><DABD><EFBFBD>) 2<><32>YUV422(YUYV) 3<><33>YUV422(UYVY)
|
||||||
#define SCC8660_MANUAL_WB_DEF (0 ) // <20>ֶ<EFBFBD><D6B6><EFBFBD>ƽ<EFBFBD><C6BD> Ĭ<EFBFBD>ϣ<EFBFBD>0 <20><>ѡ<EFBFBD><D1A1><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA>[0,0x65-0xa0] 0<><30><EFBFBD>ر<EFBFBD><D8B1>ֶ<EFBFBD><D6B6><EFBFBD>ƽ<EFBFBD>⣬<EFBFBD><E2A3AC><EFBFBD><EFBFBD><EFBFBD>Զ<EFBFBD><D4B6><EFBFBD>ƽ<EFBFBD><C6BD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֶ<EFBFBD><D6B6><EFBFBD>ƽ<EFBFBD><C6BD> <20>ֶ<EFBFBD><D6B6><EFBFBD>ƽ<EFBFBD><C6BD>ʱ <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Χ0x65-0xa0
|
#define SCC8660_MANUAL_WB_DEF (0 ) // <20>ֶ<EFBFBD><D6B6><EFBFBD>ƽ<EFBFBD><C6BD> Ĭ<>ϣ<EFBFBD>0 <20><>ѡ<EFBFBD><D1A1><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA>[0,0x65-0xa0] 0<><30><EFBFBD>ر<EFBFBD><D8B1>ֶ<EFBFBD><D6B6><EFBFBD>ƽ<EFBFBD>⣬<EFBFBD><E2A3AC><EFBFBD><EFBFBD><EFBFBD>Զ<EFBFBD><D4B6><EFBFBD>ƽ<EFBFBD><C6BD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֶ<EFBFBD><D6B6><EFBFBD>ƽ<EFBFBD><C6BD> <20>ֶ<EFBFBD><D6B6><EFBFBD>ƽ<EFBFBD><C6BD>ʱ <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Χ0x65-0xa0
|
||||||
//================================================<3D><><EFBFBD><EFBFBD> SCC8660 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>================================================
|
//================================================<3D><><EFBFBD><EFBFBD> SCC8660 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ã<EFBFBD><EFBFBD><EFBFBD>֧<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͫ<EFBFBD><EFBFBD>֡<EFBFBD>ʰ汾<EFBFBD><EFBFBD>===========================
|
||||||
|
|
||||||
//===============================================<3D><><EFBFBD><EFBFBD> SCC8660 <20><><EFBFBD><EFBFBD><EFBFBD>ṹ<EFBFBD><E1B9B9>================================================
|
//===============================================<3D><><EFBFBD><EFBFBD> SCC8660 <20><><EFBFBD><EFBFBD><EFBFBD>ṹ<EFBFBD><E1B9B9>================================================
|
||||||
typedef enum
|
typedef enum
|
||||||
@@ -116,6 +117,14 @@ typedef enum
|
|||||||
}scc8660_cmd_enum;
|
}scc8660_cmd_enum;
|
||||||
//===============================================<3D><><EFBFBD><EFBFBD> SCC8660 <20><><EFBFBD><EFBFBD><EFBFBD>ṹ<EFBFBD><E1B9B9>================================================
|
//===============================================<3D><><EFBFBD><EFBFBD> SCC8660 <20><><EFBFBD><EFBFBD><EFBFBD>ṹ<EFBFBD><E1B9B9>================================================
|
||||||
|
|
||||||
|
//===============================================<3D><><EFBFBD><EFBFBD>ͷ<EFBFBD><CDB7><EFBFBD><EFBFBD>ö<EFBFBD><C3B6><EFBFBD><EFBFBD>=======================================================
|
||||||
|
typedef enum
|
||||||
|
{
|
||||||
|
SCC8660_UART,
|
||||||
|
SCC8660_SCCB,
|
||||||
|
}scc8660_type_enum;
|
||||||
|
//===============================================<3D><><EFBFBD><EFBFBD>ͷ<EFBFBD><CDB7><EFBFBD><EFBFBD>ö<EFBFBD><C3B6><EFBFBD><EFBFBD>=======================================================
|
||||||
|
|
||||||
//===============================================<3D><><EFBFBD><EFBFBD> SCC8660 ȫ<>ֱ<EFBFBD><D6B1><EFBFBD>=================================================
|
//===============================================<3D><><EFBFBD><EFBFBD> SCC8660 ȫ<>ֱ<EFBFBD><D6B1><EFBFBD>=================================================
|
||||||
extern vuint8 scc8660_finish_flag; // һ<><D2BB>ͼ<EFBFBD><CDBC><EFBFBD>ɼ<EFBFBD><C9BC><EFBFBD><EFBFBD>ɱ<EFBFBD>־λ
|
extern vuint8 scc8660_finish_flag; // һ<><D2BB>ͼ<EFBFBD><CDBC><EFBFBD>ɼ<EFBFBD><C9BC><EFBFBD><EFBFBD>ɱ<EFBFBD>־λ
|
||||||
extern uint16 scc8660_image[SCC8660_H][SCC8660_W]; // ͼ<><EFBFBD><F1B1A3B4><EFBFBD><EFBFBD><EFBFBD>
|
extern uint16 scc8660_image[SCC8660_H][SCC8660_W]; // ͼ<><EFBFBD><F1B1A3B4><EFBFBD><EFBFBD><EFBFBD>
|
||||||
|
|||||||
@@ -56,6 +56,7 @@ typedef enum
|
|||||||
WIRELESS_UART, // <20><><EFBFBD>ߴ<EFBFBD><DFB4><EFBFBD>
|
WIRELESS_UART, // <20><><EFBFBD>ߴ<EFBFBD><DFB4><EFBFBD>
|
||||||
BLUETOOTH_CH9141, // <20><><EFBFBD><EFBFBD> CH9141
|
BLUETOOTH_CH9141, // <20><><EFBFBD><EFBFBD> CH9141
|
||||||
WIFI_UART, // <20><><EFBFBD><EFBFBD> WiFi
|
WIFI_UART, // <20><><EFBFBD><EFBFBD> WiFi
|
||||||
|
RECEIVER_UART, // ǹʽң<CABD><D2A3><EFBFBD><EFBFBD>
|
||||||
}wireless_type_enum;
|
}wireless_type_enum;
|
||||||
|
|
||||||
typedef enum
|
typedef enum
|
||||||
|
|||||||
@@ -0,0 +1,134 @@
|
|||||||
|
/*********************************************************************************************************************
|
||||||
|
* TC264 Opensourec Library <20><><EFBFBD><EFBFBD>TC264 <20><>Դ<EFBFBD>⣩<EFBFBD><E2A3A9>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD>ڹٷ<DAB9> SDK <20>ӿڵĵ<DAB5><C4B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Դ<EFBFBD><D4B4>
|
||||||
|
* Copyright (c) 2022 SEEKFREE <20><><EFBFBD>ɿƼ<C9BF>
|
||||||
|
*
|
||||||
|
* <20><><EFBFBD>ļ<EFBFBD><C4BC><EFBFBD> TC264 <20><>Դ<EFBFBD><D4B4><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD>
|
||||||
|
*
|
||||||
|
* TC264 <20><>Դ<EFBFBD><D4B4> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
|
* <20><><EFBFBD><EFBFBD><EFBFBD>Ը<EFBFBD><D4B8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ᷢ<EFBFBD><E1B7A2><EFBFBD><EFBFBD> GPL<50><4C>GNU General Public License<73><65><EFBFBD><EFBFBD> GNUͨ<55>ù<EFBFBD><C3B9><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>֤<EFBFBD><D6A4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
|
* <20><> GPL <20>ĵ<EFBFBD>3<EFBFBD>棨<EFBFBD><E6A3A8> GPL3.0<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ѡ<EFBFBD><EFBFBD><EFBFBD>ģ<EFBFBD><EFBFBD>κκ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>İ汾<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>·<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>/<2F><><EFBFBD><EFBFBD><DEB8><EFBFBD>
|
||||||
|
*
|
||||||
|
* <20><><EFBFBD><EFBFBD>Դ<EFBFBD><D4B4><EFBFBD>ķ<EFBFBD><C4B7><EFBFBD><EFBFBD><EFBFBD>ϣ<EFBFBD><CFA3><EFBFBD><EFBFBD><EFBFBD>ܷ<EFBFBD><DCB7><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ã<EFBFBD><C3A3><EFBFBD><EFBFBD><EFBFBD>δ<EFBFBD><CEB4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>κεı<CEB5>֤
|
||||||
|
* <20><><EFBFBD><EFBFBD>û<EFBFBD><C3BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ի<EFBFBD><D4BB>ʺ<EFBFBD><CABA>ض<EFBFBD><D8B6><EFBFBD>;<EFBFBD>ı<EFBFBD>֤
|
||||||
|
* <20><><EFBFBD><EFBFBD>ϸ<EFBFBD><CFB8><EFBFBD><EFBFBD><EFBFBD>μ<EFBFBD> GPL
|
||||||
|
*
|
||||||
|
* <20><>Ӧ<EFBFBD><D3A6><EFBFBD><EFBFBD><EFBFBD>յ<EFBFBD><D5B5><EFBFBD><EFBFBD><EFBFBD>Դ<EFBFBD><D4B4><EFBFBD><EFBFBD>ͬʱ<CDAC>յ<EFBFBD>һ<EFBFBD><D2BB> GPL <20>ĸ<EFBFBD><C4B8><EFBFBD>
|
||||||
|
* <20><><EFBFBD><EFBFBD>û<EFBFBD>У<EFBFBD><D0A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><https://www.gnu.org/licenses/>
|
||||||
|
*
|
||||||
|
* <20><><EFBFBD><EFBFBD>ע<EFBFBD><D7A2><EFBFBD><EFBFBD>
|
||||||
|
* <20><><EFBFBD><EFBFBD>Դ<EFBFBD><D4B4>ʹ<EFBFBD><CAB9> GPL3.0 <20><>Դ<EFBFBD><D4B4><EFBFBD><EFBFBD>֤Э<D6A4><D0AD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA><EFBFBD>İ汾
|
||||||
|
* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ӣ<EFBFBD>İ<EFBFBD><C4B0><EFBFBD> libraries/doc <20>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD>µ<EFBFBD> GPL3_permission_statement.txt <20>ļ<EFBFBD><C4BC><EFBFBD>
|
||||||
|
* <20><><EFBFBD><EFBFBD>֤<EFBFBD><D6A4><EFBFBD><EFBFBD><EFBFBD><EFBFBD> libraries <20>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD>µ<EFBFBD> LICENSE <20>ļ<EFBFBD>
|
||||||
|
* <20><>ӭ<EFBFBD><D3AD>λʹ<CEBB>ò<EFBFBD><C3B2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><DEB8><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD>뱣<EFBFBD><EBB1A3><EFBFBD><EFBFBD><EFBFBD>ɿƼ<C9BF><C6BC>İ<EFBFBD>Ȩ<EFBFBD><C8A8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
|
*
|
||||||
|
* <20>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD><EFBFBD> zf_device_uart_receiver
|
||||||
|
* <20><>˾<EFBFBD><CBBE><EFBFBD><EFBFBD> <20>ɶ<EFBFBD><C9B6><EFBFBD><EFBFBD>ɿƼ<C9BF><C6BC><EFBFBD><EFBFBD><EFBFBD>˾
|
||||||
|
* <20>汾<EFBFBD><E6B1BE>Ϣ <20>鿴 libraries/doc <20>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD><EFBFBD> version <20>ļ<EFBFBD> <20>汾˵<E6B1BE><CBB5>
|
||||||
|
* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ADS v1.9.20
|
||||||
|
* <20><><EFBFBD><EFBFBD>ƽ̨ TC264D
|
||||||
|
* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> https://seekfree.taobao.com/
|
||||||
|
*
|
||||||
|
* <20>ļ<DEB8>¼
|
||||||
|
* <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><>ע
|
||||||
|
* 2022-11-04 JKS first version
|
||||||
|
********************************************************************************************************************/
|
||||||
|
/*********************************************************************************************************************
|
||||||
|
* <20><><EFBFBD>߶<EFBFBD><DFB6>壺
|
||||||
|
* ------------------------------------
|
||||||
|
* ģ<><C4A3><EFBFBD>ܽ<EFBFBD> <20><>Ƭ<EFBFBD><C6AC><EFBFBD>ܽ<EFBFBD>
|
||||||
|
* TXD <20>鿴 zf_device_uart_receiver.h <20><> UART_RECEVIER_RX_PIN <20>궨<EFBFBD><EAB6A8>
|
||||||
|
* GND <20><>Դ<EFBFBD><D4B4>
|
||||||
|
* 5V 5V<35><56>Դ
|
||||||
|
* ------------------------------------
|
||||||
|
********************************************************************************************************************/
|
||||||
|
|
||||||
|
#include "zf_device_type.h"
|
||||||
|
#include "zf_driver_uart.h"
|
||||||
|
#include "zf_driver_timer.h"
|
||||||
|
#include "zf_device_uart_receiver.h"
|
||||||
|
|
||||||
|
uart_receiver_struct uart_receiver ; // <20><><EFBFBD>ڽ<EFBFBD><DABD>ջ<EFBFBD>ͨ<EFBFBD><CDA8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>״̬
|
||||||
|
|
||||||
|
uint8 uart_receiver_data[REV_DATA_LEN] = {0}; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ԭʼ<D4AD><CABC><EFBFBD><EFBFBD>
|
||||||
|
|
||||||
|
//-------------------------------------------------------------------------------------------------------------------
|
||||||
|
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>ȡ<EFBFBD><C8A1><EFBFBD>ε<EFBFBD><CEB5><EFBFBD>uart_receiver_interval_time<6D><65><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
|
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> void
|
||||||
|
// <20><><EFBFBD>ز<EFBFBD><D8B2><EFBFBD> uint32 <20><><EFBFBD>شӿ<D8B4>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD><EFBFBD>ڵ<EFBFBD>ʱ<EFBFBD><CAB1>(<28><>λ1us)
|
||||||
|
// ʹ<><CAB9>ʾ<EFBFBD><CABE> uint32 time = uart_receiver_interval_time();
|
||||||
|
// <20><>ע<EFBFBD><D7A2>Ϣ <20>ڲ<EFBFBD><DAB2><EFBFBD><EFBFBD><EFBFBD>
|
||||||
|
//-------------------------------------------------------------------------------------------------------------------
|
||||||
|
static uint32 uart_receiver_interval_time (void)
|
||||||
|
{
|
||||||
|
static uint32 time_last = 0;
|
||||||
|
uint32 time, interval_time;
|
||||||
|
uint32 stm_clk;
|
||||||
|
|
||||||
|
stm_clk = IfxStm_getFrequency(IfxStm_getAddress((IfxStm_Index)(IfxCpu_getCoreId())));
|
||||||
|
|
||||||
|
time = IfxStm_getLower(IfxStm_getAddress((IfxStm_Index)(IfxCpu_getCoreId())));
|
||||||
|
interval_time = time - time_last;
|
||||||
|
time_last = time;
|
||||||
|
interval_time = (uint32)((uint64)interval_time * 1000000 / stm_clk);
|
||||||
|
|
||||||
|
return interval_time;
|
||||||
|
}
|
||||||
|
|
||||||
|
//-------------------------------------------------------------------------------------------------------------------
|
||||||
|
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> SBUS<55><53><EFBFBD>ݽ<EFBFBD><DDBD><EFBFBD>
|
||||||
|
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> *remote_data <20><><EFBFBD><EFBFBD>ң<EFBFBD><D2A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݵĵ<DDB5>ַ
|
||||||
|
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> *bufer ԭʼ<D4AD><CABC><EFBFBD><EFBFBD>
|
||||||
|
// <20><><EFBFBD>ز<EFBFBD><D8B2><EFBFBD> void
|
||||||
|
// ʹ<><CAB9>ʾ<EFBFBD><CABE>
|
||||||
|
// <20><>ע<EFBFBD><D7A2>Ϣ <20><>sbus<75><73><EFBFBD>ݽ<EFBFBD><DDBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>н<EFBFBD><D0BD><EFBFBD>
|
||||||
|
//-------------------------------------------------------------------------------------------------------------------
|
||||||
|
static void uart_receiver_analysis (uart_receiver_struct *remote_data,uint8 * buffer)
|
||||||
|
{
|
||||||
|
uint8 num = 0;
|
||||||
|
remote_data->channel[num++] = (buffer[1] |buffer[ 2] << 8 ) & 0x07FF;
|
||||||
|
remote_data->channel[num++] = (buffer[2] >> 3 | buffer[3] << 5 ) & 0x07FF;
|
||||||
|
remote_data->channel[num++] = (buffer[3] >> 6 | buffer[4] << 2 | buffer[5] << 10 ) & 0x07FF;
|
||||||
|
remote_data->channel[num++] = (buffer[5] >> 1 | buffer[6] << 7 ) & 0x07FF;
|
||||||
|
remote_data->channel[num++] = (buffer[6] >> 4 | buffer[7] << 4 ) & 0x07FF;
|
||||||
|
remote_data->channel[num++] = (buffer[7] >> 7 | buffer[8] << 1 | buffer[9] << 9 ) & 0x07FF;
|
||||||
|
remote_data->state = (SBUS_NORMAL_STATE == buffer[23]) ? 1 : 0;
|
||||||
|
uart_receiver.finsh_flag = 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
//-------------------------------------------------------------------------------------------------------------------
|
||||||
|
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>ڽ<EFBFBD><DABD>ջ<EFBFBD>ģ<EFBFBD><C4A3> <20><><EFBFBD><EFBFBD><EFBFBD>жϻص<CFBB><D8B5><EFBFBD><EFBFBD><EFBFBD>
|
||||||
|
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> void
|
||||||
|
// <20><><EFBFBD>ز<EFBFBD><D8B2><EFBFBD> void
|
||||||
|
// ʹ<><CAB9>ʾ<EFBFBD><CABE> uart_receiver_callback();
|
||||||
|
// <20><>ע<EFBFBD><D7A2>Ϣ <20>ú<EFBFBD><C3BA><EFBFBD><EFBFBD><EFBFBD> ISR <20>ļ<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>жϳ<D0B6><CFB3><EFBFBD>ͨ<EFBFBD><CDA8>uart_receiver_uart_handler<65><72><EFBFBD><EFBFBD>ָ<EFBFBD>뱻<EFBFBD><EBB1BB><EFBFBD><EFBFBD>
|
||||||
|
//-------------------------------------------------------------------------------------------------------------------
|
||||||
|
void uart_receiver_callback(void)
|
||||||
|
{
|
||||||
|
static vuint8 length = 0;
|
||||||
|
|
||||||
|
if (uart_receiver_interval_time() > 3000)
|
||||||
|
{
|
||||||
|
length = 0;
|
||||||
|
}
|
||||||
|
uart_receiver_data[length++] = uart_read_byte(UART_RECEVIER_UART_INDEX);
|
||||||
|
if ( (REV_DATA_LEN == length) // <20><><EFBFBD><EFBFBD>֡<EFBFBD><D6A1><EFBFBD><EFBFBD>֡ͷ<D6A1><CDB7>֡β<D6A1><CEB2><EFBFBD><EFBFBD>Э<EFBFBD><D0AD>
|
||||||
|
&& (FRAME_STAR == uart_receiver_data[0])
|
||||||
|
&& (FRAME_END == uart_receiver_data[24]))
|
||||||
|
{
|
||||||
|
uart_receiver_analysis(&uart_receiver, uart_receiver_data);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
//-------------------------------------------------------------------------------------------------------------------
|
||||||
|
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>ڽ<EFBFBD><DABD>ջ<EFBFBD><D5BB><EFBFBD>ʼ<EFBFBD><CABC>
|
||||||
|
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> void
|
||||||
|
// <20><><EFBFBD>ز<EFBFBD><D8B2><EFBFBD> void
|
||||||
|
// ʹ<><CAB9>ʾ<EFBFBD><CABE> uart_receiver_init();
|
||||||
|
//-------------------------------------------------------------------------------------------------------------------
|
||||||
|
void uart_receiver_init(void)
|
||||||
|
{
|
||||||
|
uart_sbus_init(UART_RECEVIER_UART_INDEX, SBUS_UART_BAUDRATE, UART_RECEVIER_TX_PIN, UART_RECEVIER_RX_PIN);
|
||||||
|
|
||||||
|
// <20><><EFBFBD>ô<EFBFBD><C3B4><EFBFBD><EFBFBD>жϻص<CFBB><D8B5><EFBFBD><EFBFBD><EFBFBD>
|
||||||
|
set_wireless_type(RECEIVER_UART, uart_receiver_callback);
|
||||||
|
}
|
||||||
@@ -0,0 +1,72 @@
|
|||||||
|
/*********************************************************************************************************************
|
||||||
|
* TC264 Opensourec Library <20><><EFBFBD><EFBFBD>TC264 <20><>Դ<EFBFBD>⣩<EFBFBD><E2A3A9>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD>ڹٷ<DAB9> SDK <20>ӿڵĵ<DAB5><C4B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Դ<EFBFBD><D4B4>
|
||||||
|
* Copyright (c) 2022 SEEKFREE <20><><EFBFBD>ɿƼ<C9BF>
|
||||||
|
*
|
||||||
|
* <20><><EFBFBD>ļ<EFBFBD><C4BC><EFBFBD> TC264 <20><>Դ<EFBFBD><D4B4><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD>
|
||||||
|
*
|
||||||
|
* TC264 <20><>Դ<EFBFBD><D4B4> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
|
* <20><><EFBFBD><EFBFBD><EFBFBD>Ը<EFBFBD><D4B8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ᷢ<EFBFBD><E1B7A2><EFBFBD><EFBFBD> GPL<50><4C>GNU General Public License<73><65><EFBFBD><EFBFBD> GNUͨ<55>ù<EFBFBD><C3B9><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>֤<EFBFBD><D6A4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
|
* <20><> GPL <20>ĵ<EFBFBD>3<EFBFBD>棨<EFBFBD><E6A3A8> GPL3.0<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ѡ<EFBFBD><EFBFBD><EFBFBD>ģ<EFBFBD><EFBFBD>κκ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>İ汾<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>·<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>/<2F><><EFBFBD><EFBFBD><DEB8><EFBFBD>
|
||||||
|
*
|
||||||
|
* <20><><EFBFBD><EFBFBD>Դ<EFBFBD><D4B4><EFBFBD>ķ<EFBFBD><C4B7><EFBFBD><EFBFBD><EFBFBD>ϣ<EFBFBD><CFA3><EFBFBD><EFBFBD><EFBFBD>ܷ<EFBFBD><DCB7><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ã<EFBFBD><C3A3><EFBFBD><EFBFBD><EFBFBD>δ<EFBFBD><CEB4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>κεı<CEB5>֤
|
||||||
|
* <20><><EFBFBD><EFBFBD>û<EFBFBD><C3BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ի<EFBFBD><D4BB>ʺ<EFBFBD><CABA>ض<EFBFBD><D8B6><EFBFBD>;<EFBFBD>ı<EFBFBD>֤
|
||||||
|
* <20><><EFBFBD><EFBFBD>ϸ<EFBFBD><CFB8><EFBFBD><EFBFBD><EFBFBD>μ<EFBFBD> GPL
|
||||||
|
*
|
||||||
|
* <20><>Ӧ<EFBFBD><D3A6><EFBFBD><EFBFBD><EFBFBD>յ<EFBFBD><D5B5><EFBFBD><EFBFBD><EFBFBD>Դ<EFBFBD><D4B4><EFBFBD><EFBFBD>ͬʱ<CDAC>յ<EFBFBD>һ<EFBFBD><D2BB> GPL <20>ĸ<EFBFBD><C4B8><EFBFBD>
|
||||||
|
* <20><><EFBFBD><EFBFBD>û<EFBFBD>У<EFBFBD><D0A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><https://www.gnu.org/licenses/>
|
||||||
|
*
|
||||||
|
* <20><><EFBFBD><EFBFBD>ע<EFBFBD><D7A2><EFBFBD><EFBFBD>
|
||||||
|
* <20><><EFBFBD><EFBFBD>Դ<EFBFBD><D4B4>ʹ<EFBFBD><CAB9> GPL3.0 <20><>Դ<EFBFBD><D4B4><EFBFBD><EFBFBD>֤Э<D6A4><D0AD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA><EFBFBD>İ汾
|
||||||
|
* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ӣ<EFBFBD>İ<EFBFBD><C4B0><EFBFBD> libraries/doc <20>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD>µ<EFBFBD> GPL3_permission_statement.txt <20>ļ<EFBFBD><C4BC><EFBFBD>
|
||||||
|
* <20><><EFBFBD><EFBFBD>֤<EFBFBD><D6A4><EFBFBD><EFBFBD><EFBFBD><EFBFBD> libraries <20>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD>µ<EFBFBD> LICENSE <20>ļ<EFBFBD>
|
||||||
|
* <20><>ӭ<EFBFBD><D3AD>λʹ<CEBB>ò<EFBFBD><C3B2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><DEB8><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD>뱣<EFBFBD><EBB1A3><EFBFBD><EFBFBD><EFBFBD>ɿƼ<C9BF><C6BC>İ<EFBFBD>Ȩ<EFBFBD><C8A8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
|
*
|
||||||
|
* <20>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD><EFBFBD> zf_device_uart_receiver
|
||||||
|
* <20><>˾<EFBFBD><CBBE><EFBFBD><EFBFBD> <20>ɶ<EFBFBD><C9B6><EFBFBD><EFBFBD>ɿƼ<C9BF><C6BC><EFBFBD><EFBFBD><EFBFBD>˾
|
||||||
|
* <20>汾<EFBFBD><E6B1BE>Ϣ <20>鿴 libraries/doc <20>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD><EFBFBD> version <20>ļ<EFBFBD> <20>汾˵<E6B1BE><CBB5>
|
||||||
|
* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ADS v1.9.20
|
||||||
|
* <20><><EFBFBD><EFBFBD>ƽ̨ TC264D
|
||||||
|
* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> https://seekfree.taobao.com/
|
||||||
|
*
|
||||||
|
* <20>ļ<DEB8>¼
|
||||||
|
* <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><>ע
|
||||||
|
* 2022-11-04 JKS first version
|
||||||
|
********************************************************************************************************************/
|
||||||
|
/*********************************************************************************************************************
|
||||||
|
* <20><><EFBFBD>߶<EFBFBD><DFB6>壺
|
||||||
|
* ------------------------------------
|
||||||
|
* ģ<><C4A3><EFBFBD>ܽ<EFBFBD> <20><>Ƭ<EFBFBD><C6AC><EFBFBD>ܽ<EFBFBD>
|
||||||
|
* TXD <20>鿴 zf_device_uart_receiver.h <20><> UART_RECEVIER_RX_PIN <20>궨<EFBFBD><EAB6A8>
|
||||||
|
* GND <20><>Դ<EFBFBD><D4B4>
|
||||||
|
* 5V 5V<35><56>Դ
|
||||||
|
* ------------------------------------
|
||||||
|
********************************************************************************************************************/
|
||||||
|
#ifndef _zf_device_uart_receiver_h
|
||||||
|
#define _zf_device_uart_receiver_h
|
||||||
|
|
||||||
|
#include "zf_common_typedef.h"
|
||||||
|
|
||||||
|
#define UART_RECEVIER_UART_INDEX UART_2 // <20><><EFBFBD>崮<EFBFBD>ڽ<EFBFBD><DABD>ջ<EFBFBD>ʹ<EFBFBD>õĴ<C3B5><C4B4><EFBFBD>
|
||||||
|
#define UART_RECEVIER_TX_PIN UART2_TX_P10_5 // ң<><D2A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ջ<EFBFBD>û<EFBFBD><C3BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ţ<EFBFBD><C5A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڴ<EFBFBD><DAB4>ڳ<EFBFBD>ʼ<EFBFBD><CABC>ʱռλʹ<CEBB><CAB9>
|
||||||
|
#define UART_RECEVIER_RX_PIN UART2_RX_P10_6 // <20><><EFBFBD>ڽ<EFBFBD><DABD>ջ<EFBFBD><D5BB><EFBFBD>TX<54><58><EFBFBD><EFBFBD> <20><><EFBFBD>ӵ<EFBFBD>Ƭ<EFBFBD><C6AC><EFBFBD><EFBFBD>RX<52><58><EFBFBD><EFBFBD>
|
||||||
|
#define SBUS_UART_BAUDRATE (100000) // ָ<><D6B8> SBUS <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʹ<EFBFBD>õĵĴ<C4B5><C4B4>ڲ<EFBFBD><DAB2><EFBFBD><EFBFBD><EFBFBD> (<28>û<EFBFBD><C3BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>)
|
||||||
|
#define UART_RECEVIER_CHANNEL_NUM ( 6 ) // <20><><EFBFBD><EFBFBD>ң<EFBFBD><D2A3><EFBFBD><EFBFBD>ͨ<EFBFBD><CDA8><EFBFBD><EFBFBD><EFBFBD><EFBFBD> (<28>û<EFBFBD><C3BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>)
|
||||||
|
|
||||||
|
#define REV_DATA_LEN ( 25 ) // SBUS֡<53><D6A1>
|
||||||
|
#define FRAME_STAR ( 0X0F ) // ֡ͷ<D6A1><CDB7>Ϣ
|
||||||
|
#define FRAME_END ( 0X00 ) // ֡β<D6A1><CEB2>Ϣ
|
||||||
|
#define SBUS_NORMAL_STATE ( 0X03 ) // <20><><EFBFBD><EFBFBD>״̬
|
||||||
|
#define SBUS_ABNORMAL_STATE ( 0X0F ) // ʧ<><CAA7>״̬
|
||||||
|
|
||||||
|
typedef struct
|
||||||
|
{
|
||||||
|
uint16 channel[UART_RECEVIER_CHANNEL_NUM]; // CH1-CH6ͨ<36><CDA8><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
|
uint8 state; // ң<><D2A3><EFBFBD><EFBFBD>״̬(1<><31>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾʧ<CABE><CAA7>)
|
||||||
|
uint8 finsh_flag; // 1<><31><EFBFBD><EFBFBD>ʾ<EFBFBD>ɹ<EFBFBD><C9B9><EFBFBD><EFBFBD>յ<EFBFBD>һ֡ң<D6A1><D2A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
|
}uart_receiver_struct;
|
||||||
|
|
||||||
|
extern uart_receiver_struct uart_receiver; // <20><><EFBFBD>ڽ<EFBFBD><DABD>ջ<EFBFBD>ͨ<EFBFBD><CDA8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>״̬
|
||||||
|
|
||||||
|
void uart_receiver_init(void);
|
||||||
|
|
||||||
|
#endif
|
||||||
@@ -404,6 +404,55 @@ void uart_rx_interrupt (uart_index_enum uart_n, uint32 status)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//-------------------------------------------------------------------------------------------------------------------
|
||||||
|
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> sbus<75><73>ʼ<EFBFBD><CABC>
|
||||||
|
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> uartn <20><><EFBFBD><EFBFBD>ͨ<EFBFBD><CDA8>(UART_0,UART_1,UART_2,UART_3)
|
||||||
|
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> baud <20><><EFBFBD>ڲ<EFBFBD><DAB2><EFBFBD><EFBFBD><EFBFBD>
|
||||||
|
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> tx_pin <20><><EFBFBD>ڷ<EFBFBD><DAB7><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ź<EFBFBD>
|
||||||
|
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> rx_pin <20><><EFBFBD>ڽ<EFBFBD><DABD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ź<EFBFBD>
|
||||||
|
// <20><><EFBFBD>ز<EFBFBD><D8B2><EFBFBD> void
|
||||||
|
// ʹ<><CAB9>ʾ<EFBFBD><CABE> uart_sbus_init(UART_2, 100000, UART2_TX_P10_5, UART2_RX_P10_6);
|
||||||
|
// <20><>ע<EFBFBD><D7A2>Ϣ
|
||||||
|
//-------------------------------------------------------------------------------------------------------------------
|
||||||
|
void uart_sbus_init (uart_index_enum uartn, uint32 baud, uart_tx_pin_enum tx_pin, uart_rx_pin_enum rx_pin)
|
||||||
|
{
|
||||||
|
|
||||||
|
boolean interrupt_state = disableInterrupts();
|
||||||
|
|
||||||
|
volatile Ifx_ASCLIN *moudle = IfxAsclin_getAddress((IfxAsclin_Index)uartn);
|
||||||
|
|
||||||
|
IfxAsclin_Asc_initModuleConfig(&uart_config, moudle); // <20><>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ýṹ<C3BD><E1B9B9>
|
||||||
|
|
||||||
|
uart_set_buffer(uartn); // <20><><EFBFBD>û<EFBFBD><C3BB><EFBFBD><EFBFBD><EFBFBD>
|
||||||
|
|
||||||
|
uart_set_interrupt_priority(uartn); // <20><><EFBFBD><EFBFBD><EFBFBD>ж<EFBFBD><D0B6><EFBFBD><EFBFBD>ȼ<EFBFBD>
|
||||||
|
|
||||||
|
uart_config.clockSource = IfxAsclin_ClockSource_ascFastClock; // ʹ<>ø<EFBFBD><C3B8><EFBFBD>ʱ<EFBFBD><CAB1> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>6.25M
|
||||||
|
uart_config.baudrate.prescaler = 4;
|
||||||
|
uart_config.baudrate.baudrate = (float32)baud;
|
||||||
|
uart_config.baudrate.oversampling = IfxAsclin_OversamplingFactor_8;
|
||||||
|
|
||||||
|
uart_config.frame.stopBit = IfxAsclin_StopBit_2; //ֹͣλ
|
||||||
|
uart_config.frame.parityType = IfxAsclin_ParityType_even; //żУ<C5BC><D0A3>
|
||||||
|
uart_config.frame.dataLength = IfxAsclin_DataLength_8;
|
||||||
|
uart_config.frame.parityBit = TRUE; //<2F><><EFBFBD><EFBFBD>У<EFBFBD><D0A3>
|
||||||
|
|
||||||
|
IfxAsclin_Asc_Pins pins; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
|
pins.cts = NULL;
|
||||||
|
pins.rts = NULL;
|
||||||
|
uart_mux(uartn, tx_pin, rx_pin, (uint32 *)&pins.tx, (uint32 *)&pins.rx);
|
||||||
|
pins.rxMode = IfxPort_InputMode_pullUp;
|
||||||
|
pins.txMode = IfxPort_OutputMode_pushPull;
|
||||||
|
pins.pinDriver = IfxPort_PadDriver_cmosAutomotiveSpeed1;
|
||||||
|
uart_config.pins = &pins;
|
||||||
|
|
||||||
|
IfxAsclin_Asc_initModule(uart_get_handle(uartn), &uart_config);
|
||||||
|
uart_rx_interrupt(uartn, 1);
|
||||||
|
uart_tx_interrupt(uartn, 0);
|
||||||
|
restoreInterrupts(interrupt_state);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
//-------------------------------------------------------------------------------------------------------------------
|
//-------------------------------------------------------------------------------------------------------------------
|
||||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>ڳ<EFBFBD>ʼ<EFBFBD><CABC>
|
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>ڳ<EFBFBD>ʼ<EFBFBD><CABC>
|
||||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> uartn <20><><EFBFBD><EFBFBD>ģ<EFBFBD><C4A3><EFBFBD><EFBFBD>(UART_0,UART_1,UART_2,UART_3)
|
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> uartn <20><><EFBFBD><EFBFBD>ģ<EFBFBD><C4A3><EFBFBD><EFBFBD>(UART_0,UART_1,UART_2,UART_3)
|
||||||
|
|||||||
@@ -125,6 +125,7 @@ uint8 uart_query_byte (uart_index_enum uartn, uint8 *dat);
|
|||||||
void uart_tx_interrupt (uart_index_enum uartn, uint32 status);
|
void uart_tx_interrupt (uart_index_enum uartn, uint32 status);
|
||||||
void uart_rx_interrupt (uart_index_enum uartn, uint32 status);
|
void uart_rx_interrupt (uart_index_enum uartn, uint32 status);
|
||||||
|
|
||||||
|
void uart_sbus_init (uart_index_enum uartn, uint32 baud, uart_tx_pin_enum tx_pin, uart_rx_pin_enum rx_pin);
|
||||||
void uart_init (uart_index_enum uartn, uint32 baud, uart_tx_pin_enum tx_pin, uart_rx_pin_enum rx_pin);
|
void uart_init (uart_index_enum uartn, uint32 baud, uart_tx_pin_enum tx_pin, uart_rx_pin_enum rx_pin);
|
||||||
//====================================================<3D><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>====================================================
|
//====================================================<3D><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>====================================================
|
||||||
|
|
||||||
|
|||||||
@@ -1,3 +1,6 @@
|
|||||||
|
V3.2.8
|
||||||
|
<20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͫ<EFBFBD><CDAB>MCU<43>汾<EFBFBD><E6B1BE><EFBFBD><EFBFBD>
|
||||||
|
<20><><EFBFBD><EFBFBD>SBUSң<53><D2A3><EFBFBD><EFBFBD><EFBFBD>ײ<EFBFBD><D7B2><EFBFBD><EFBFBD><EFBFBD>
|
||||||
V3.2.7
|
V3.2.7
|
||||||
<20><><EFBFBD><EFBFBD>RTK "D" <20><>ͷЭ<CDB7><D0AD>
|
<20><><EFBFBD><EFBFBD>RTK "D" <20><>ͷЭ<CDB7><D0AD>
|
||||||
<20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ǻ<EFBFBD>ת<EFBFBD><D7AA><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>ֹ<EFBFBD><D6B9><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
<20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ǻ<EFBFBD>ת<EFBFBD><D7AA><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>ֹ<EFBFBD><D6B9><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
|
|||||||
@@ -100,6 +100,7 @@
|
|||||||
#include "zf_device_tft180.h"
|
#include "zf_device_tft180.h"
|
||||||
#include "zf_device_tsl1401.h"
|
#include "zf_device_tsl1401.h"
|
||||||
#include "zf_device_type.h"
|
#include "zf_device_type.h"
|
||||||
|
#include "zf_device_uart_receiver.h"
|
||||||
#include "zf_device_virtual_oscilloscope.h"
|
#include "zf_device_virtual_oscilloscope.h"
|
||||||
#include "zf_device_wifi_uart.h"
|
#include "zf_device_wifi_uart.h"
|
||||||
#include "zf_device_wifi_spi.h"
|
#include "zf_device_wifi_spi.h"
|
||||||
|
|||||||
Binary file not shown.
@@ -31,6 +31,7 @@
|
|||||||
* <20>ļ<DEB8>¼
|
* <20>ļ<DEB8>¼
|
||||||
* <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><>ע
|
* <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><>ע
|
||||||
* 2022-09-15 pudding first version
|
* 2022-09-15 pudding first version
|
||||||
|
* 2024-02-02 pudding <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͫ<EFBFBD><CDAB>̬<EFBFBD>⺯<EFBFBD><E2BAAF>
|
||||||
********************************************************************************************************************/
|
********************************************************************************************************************/
|
||||||
|
|
||||||
#ifndef _zf_device_config_h_
|
#ifndef _zf_device_config_h_
|
||||||
@@ -43,5 +44,10 @@ unsigned char mt9v03x_set_config_sccb (void *soft_iic_obj, short int b
|
|||||||
unsigned char mt9v03x_set_exposure_time_sccb (unsigned short int light);
|
unsigned char mt9v03x_set_exposure_time_sccb (unsigned short int light);
|
||||||
unsigned char mt9v03x_set_reg_sccb (unsigned char addr, unsigned short int data);
|
unsigned char mt9v03x_set_reg_sccb (unsigned char addr, unsigned short int data);
|
||||||
|
|
||||||
|
unsigned char scc8660_set_config_sccb (void *soft_iic_obj, short int buff[10][2]);
|
||||||
|
unsigned char scc8660_set_brightness_sccb (unsigned short int brightness);
|
||||||
|
unsigned char scc8660_set_manual_wb_sccb (unsigned short int manual_wb);
|
||||||
|
unsigned char scc8660_set_reg_sccb (unsigned char reg, unsigned short int data);
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|||||||
@@ -31,6 +31,7 @@
|
|||||||
* <20>ļ<DEB8>¼
|
* <20>ļ<DEB8>¼
|
||||||
* <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><>ע
|
* <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><>ע
|
||||||
* 2022-09-15 pudding first version
|
* 2022-09-15 pudding first version
|
||||||
|
* 2024-02-02 pudding <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>MCU<43><55>ͫ<EFBFBD><CDAB><EFBFBD><EFBFBD>
|
||||||
********************************************************************************************************************/
|
********************************************************************************************************************/
|
||||||
/*********************************************************************************************************************
|
/*********************************************************************************************************************
|
||||||
* <20><><EFBFBD>߶<EFBFBD><DFB6>壺
|
* <20><><EFBFBD>߶<EFBFBD><DFB6>壺
|
||||||
@@ -55,9 +56,12 @@
|
|||||||
#include "zf_driver_exti.h"
|
#include "zf_driver_exti.h"
|
||||||
#include "zf_driver_gpio.h"
|
#include "zf_driver_gpio.h"
|
||||||
#include "zf_driver_uart.h"
|
#include "zf_driver_uart.h"
|
||||||
|
#include "zf_driver_soft_iic.h"
|
||||||
#include "zf_device_camera.h"
|
#include "zf_device_camera.h"
|
||||||
#include "zf_device_scc8660.h"
|
|
||||||
#include "zf_device_type.h"
|
#include "zf_device_type.h"
|
||||||
|
#include "zf_device_config.h"
|
||||||
|
|
||||||
|
#include "zf_device_scc8660.h"
|
||||||
|
|
||||||
vuint8 scc8660_finish_flag = 0; // һ<><D2BB>ͼ<EFBFBD><CDBC><EFBFBD>ɼ<EFBFBD><C9BC><EFBFBD><EFBFBD>ɱ<EFBFBD>־λ
|
vuint8 scc8660_finish_flag = 0; // һ<><D2BB>ͼ<EFBFBD><CDBC><EFBFBD>ɼ<EFBFBD><C9BC><EFBFBD><EFBFBD>ɱ<EFBFBD>־λ
|
||||||
IFX_ALIGN(4) uint16 scc8660_image[SCC8660_H][SCC8660_W];
|
IFX_ALIGN(4) uint16 scc8660_image[SCC8660_H][SCC8660_W];
|
||||||
@@ -68,6 +72,7 @@ uint8 scc8660_lost_flag = 1;
|
|||||||
uint8 scc8660_dma_int_num; // <20><>ǰDMA<4D>жϴ<D0B6><CFB4><EFBFBD>
|
uint8 scc8660_dma_int_num; // <20><>ǰDMA<4D>жϴ<D0B6><CFB4><EFBFBD>
|
||||||
uint8 scc8660_dma_init_flag; // <20>Ƿ<EFBFBD><C7B7><EFBFBD>Ҫ<EFBFBD><D2AA><EFBFBD>³<EFBFBD>ʼ<EFBFBD><CABC>
|
uint8 scc8660_dma_init_flag; // <20>Ƿ<EFBFBD><C7B7><EFBFBD>Ҫ<EFBFBD><D2AA><EFBFBD>³<EFBFBD>ʼ<EFBFBD><CABC>
|
||||||
|
|
||||||
|
static scc8660_type_enum scc8660_type;
|
||||||
|
|
||||||
// <20><>Ҫ<EFBFBD><D2AA><EFBFBD>õ<EFBFBD><C3B5><EFBFBD><EFBFBD><EFBFBD>ͷ<EFBFBD><CDB7><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>IJ<DEB8><C4B2><EFBFBD>
|
// <20><>Ҫ<EFBFBD><D2AA><EFBFBD>õ<EFBFBD><C3B5><EFBFBD><EFBFBD><EFBFBD>ͷ<EFBFBD><CDB7><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>IJ<DEB8><C4B2><EFBFBD>
|
||||||
static int16 scc8660_set_confing_buffer[SCC8660_CONFIG_FINISH][2]=
|
static int16 scc8660_set_confing_buffer[SCC8660_CONFIG_FINISH][2]=
|
||||||
@@ -77,7 +82,7 @@ static int16 scc8660_set_confing_buffer[SCC8660_CONFIG_FINISH][2]=
|
|||||||
{SCC8660_AUTO_EXP, SCC8660_AUTO_EXP_DEF}, // <20>Զ<EFBFBD><D4B6>ع<EFBFBD>
|
{SCC8660_AUTO_EXP, SCC8660_AUTO_EXP_DEF}, // <20>Զ<EFBFBD><D4B6>ع<EFBFBD>
|
||||||
{SCC8660_BRIGHT, SCC8660_BRIGHT_DEF}, // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
{SCC8660_BRIGHT, SCC8660_BRIGHT_DEF}, // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
{SCC8660_FPS, SCC8660_FPS_DEF}, // ͼ<><CDBC>֡<EFBFBD><D6A1>
|
{SCC8660_FPS, SCC8660_FPS_DEF}, // ͼ<><CDBC>֡<EFBFBD><D6A1>
|
||||||
{SCC8660_SET_COL, SCC8660_W}, // ͼ<><CDBC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
{SCC8660_SET_COL, SCC8660_W * 4}, // ͼ<><CDBC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
{SCC8660_SET_ROW, SCC8660_H}, // ͼ<><CDBC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
{SCC8660_SET_ROW, SCC8660_H}, // ͼ<><CDBC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
{SCC8660_PCLK_DIV, SCC8660_PCLK_DIV_DEF}, // PCLK<4C><4B>Ƶϵ<C6B5><CFB5>
|
{SCC8660_PCLK_DIV, SCC8660_PCLK_DIV_DEF}, // PCLK<4C><4B>Ƶϵ<C6B5><CFB5>
|
||||||
{SCC8660_PCLK_MODE, SCC8660_PCLK_MODE_DEF}, // PCLKģʽ
|
{SCC8660_PCLK_MODE, SCC8660_PCLK_MODE_DEF}, // PCLKģʽ
|
||||||
@@ -214,71 +219,6 @@ static void scc8660_uart_callback (void)
|
|||||||
fifo_write_element(&camera_receiver_fifo, data);
|
fifo_write_element(&camera_receiver_fifo, data);
|
||||||
}
|
}
|
||||||
|
|
||||||
//-------------------------------------------------------------------------------------------------------------------
|
|
||||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> SCC8660<36><30><EFBFBD><EFBFBD>ͷ<EFBFBD><CDB7><EFBFBD>ж<EFBFBD>
|
|
||||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> void
|
|
||||||
// <20><><EFBFBD>ز<EFBFBD><D8B2><EFBFBD> void
|
|
||||||
// ʹ<><CAB9>ʾ<EFBFBD><CABE> scc8660_vsync_handler();
|
|
||||||
//-------------------------------------------------------------------------------------------------------------------
|
|
||||||
static void scc8660_vsync_handler(void)
|
|
||||||
{
|
|
||||||
exti_flag_clear(SCC8660_VSYNC_PIN);
|
|
||||||
scc8660_dma_int_num = 0;
|
|
||||||
if(scc8660_dma_init_flag || scc8660_lost_flag)
|
|
||||||
{
|
|
||||||
scc8660_dma_init_flag = 0;
|
|
||||||
IfxDma_resetChannel(&MODULE_DMA, SCC8660_DMA_CH);
|
|
||||||
scc8660_link_list_num = dma_init(SCC8660_DMA_CH,
|
|
||||||
SCC8660_DATA_ADD,
|
|
||||||
(uint8 *)scc8660_image[0],
|
|
||||||
SCC8660_PCLK_PIN,
|
|
||||||
EXTI_TRIGGER_RISING,
|
|
||||||
SCC8660_IMAGE_SIZE); // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƶ<EFBFBD><C6B5>300M <20><><EFBFBD><EFBFBD><EFBFBD>ڶ<EFBFBD><DAB6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ΪFALLING
|
|
||||||
dma_enable(SCC8660_DMA_CH);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
if(1 == scc8660_link_list_num)
|
|
||||||
{
|
|
||||||
dma_set_destination(SCC8660_DMA_CH, (uint8 *)scc8660_image[0]); // û<>в<EFBFBD><D0B2><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ӵ<EFBFBD><D3B4><EFBFBD>ģʽ <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ŀ<EFBFBD>ĵ<EFBFBD>ַ
|
|
||||||
}
|
|
||||||
dma_enable(SCC8660_DMA_CH);
|
|
||||||
}
|
|
||||||
scc8660_lost_flag = 1;
|
|
||||||
}
|
|
||||||
|
|
||||||
//-------------------------------------------------------------------------------------------------------------------
|
|
||||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> SCC8660<36><30><EFBFBD><EFBFBD>ͷDMA<4D><41><EFBFBD><EFBFBD><EFBFBD>ж<EFBFBD>
|
|
||||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> void
|
|
||||||
// <20><><EFBFBD>ز<EFBFBD><D8B2><EFBFBD> void
|
|
||||||
// ʹ<><CAB9>ʾ<EFBFBD><CABE> scc8660_dma_handler();
|
|
||||||
//-------------------------------------------------------------------------------------------------------------------
|
|
||||||
static void scc8660_dma_handler(void)
|
|
||||||
{
|
|
||||||
clear_dma_flag(SCC8660_DMA_CH);
|
|
||||||
|
|
||||||
if(IfxDma_getChannelTransactionRequestLost(&MODULE_DMA, SCC8660_DMA_CH)) // ͼ<><CDBC><EFBFBD><EFBFBD>λ<EFBFBD>ж<EFBFBD>
|
|
||||||
{
|
|
||||||
scc8660_finish_flag = 0;
|
|
||||||
dma_disable(SCC8660_DMA_CH);
|
|
||||||
IfxDma_clearChannelTransactionRequestLost(&MODULE_DMA, SCC8660_DMA_CH);
|
|
||||||
scc8660_dma_init_flag = 1;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
scc8660_dma_int_num++;
|
|
||||||
if(scc8660_dma_int_num >= scc8660_link_list_num)
|
|
||||||
{
|
|
||||||
// <20>ɼ<EFBFBD><C9BC><EFBFBD><EFBFBD><EFBFBD>
|
|
||||||
// һ<><D2BB>ͼ<EFBFBD><CDBC><EFBFBD>Ӳɼ<D3B2><C9BC><EFBFBD>ʼ<EFBFBD><CABC><EFBFBD>ɼ<EFBFBD><C9BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ3.8MS<EFBFBD><EFBFBD><EFBFBD><EFBFBD>(50FPS<50><53>188*120<32>ֱ<EFBFBD><D6B1><EFBFBD>)
|
|
||||||
scc8660_dma_int_num = 0;
|
|
||||||
scc8660_lost_flag = 0;
|
|
||||||
scc8660_finish_flag = 1;
|
|
||||||
dma_disable(SCC8660_DMA_CH);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
//-------------------------------------------------------------------------------------------------------------------
|
//-------------------------------------------------------------------------------------------------------------------
|
||||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD>ͷ ID
|
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD>ͷ ID
|
||||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> void
|
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> void
|
||||||
@@ -390,38 +330,46 @@ uint16 scc8660_get_version (void)
|
|||||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͼ<EFBFBD><CDBC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͼ<EFBFBD><CDBC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> data <20><>Ҫ<EFBFBD><D2AA><EFBFBD>õ<EFBFBD><C3B5><EFBFBD><EFBFBD><EFBFBD>ֵ
|
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> data <20><>Ҫ<EFBFBD><D2AA><EFBFBD>õ<EFBFBD><C3B5><EFBFBD><EFBFBD><EFBFBD>ֵ
|
||||||
// <20><><EFBFBD>ز<EFBFBD><D8B2><EFBFBD> uint8 1-ʧ<><CAA7> 0-<2D>ɹ<EFBFBD>
|
// <20><><EFBFBD>ز<EFBFBD><D8B2><EFBFBD> uint8 1-ʧ<><CAA7> 0-<2D>ɹ<EFBFBD>
|
||||||
// ʹ<><CAB9>ʾ<EFBFBD><CABE> scc8660_set_bright(data);
|
// ʹ<><CAB9>ʾ<EFBFBD><CABE> scc8660_set_brightness(data);
|
||||||
// <20><>ע<EFBFBD><D7A2>Ϣ <20><><EFBFBD>øú<C3B8><C3BA><EFBFBD>ǰ<EFBFBD><C7B0><EFBFBD>ȳ<EFBFBD>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͷ<EFBFBD><CDB7><EFBFBD>ô<EFBFBD><C3B4><EFBFBD> ͨ<><CDA8><EFBFBD>ú<EFBFBD><C3BA><EFBFBD><EFBFBD><EFBFBD><EFBFBD>õIJ<C3B5><C4B2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ᱻ51<35><31>Ƭ<EFBFBD><C6AC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
// <20><>ע<EFBFBD><D7A2>Ϣ <20><><EFBFBD>øú<C3B8><C3BA><EFBFBD>ǰ<EFBFBD><C7B0><EFBFBD>ȳ<EFBFBD>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͷ<EFBFBD><CDB7><EFBFBD>ô<EFBFBD><C3B4><EFBFBD> ͨ<><CDA8><EFBFBD>ú<EFBFBD><C3BA><EFBFBD><EFBFBD><EFBFBD><EFBFBD>õIJ<C3B5><C4B2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ᱻ51<35><31>Ƭ<EFBFBD><C6AC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
//-------------------------------------------------------------------------------------------------------------------
|
//-------------------------------------------------------------------------------------------------------------------
|
||||||
uint8 scc8660_set_bright (uint16 data)
|
uint8 scc8660_set_brightness (uint16 data)
|
||||||
{
|
{
|
||||||
uint8 return_state = 0;
|
uint8 return_state = 0;
|
||||||
uint8 uart_buffer[4];
|
|
||||||
uint16 temp;
|
|
||||||
uint16 timeout_count = 0;
|
|
||||||
uint32 uart_buffer_index = 0;
|
|
||||||
|
|
||||||
uart_buffer[0] = 0xA5;
|
if(SCC8660_UART == scc8660_type)
|
||||||
uart_buffer[1] = SCC8660_SET_BRIGHT;
|
|
||||||
uart_buffer[2] = data >> 8;
|
|
||||||
uart_buffer[3] = (uint8)data;
|
|
||||||
|
|
||||||
uart_write_buffer(SCC8660_COF_UART, uart_buffer, 4);
|
|
||||||
|
|
||||||
do
|
|
||||||
{
|
{
|
||||||
if(3 <= fifo_used(&camera_receiver_fifo))
|
uint8 uart_buffer[4];
|
||||||
|
uint16 temp;
|
||||||
|
uint16 timeout_count = 0;
|
||||||
|
uint32 uart_buffer_index = 0;
|
||||||
|
|
||||||
|
uart_buffer[0] = 0xA5;
|
||||||
|
uart_buffer[1] = SCC8660_SET_BRIGHT;
|
||||||
|
uart_buffer[2] = data >> 8;
|
||||||
|
uart_buffer[3] = (uint8)data;
|
||||||
|
|
||||||
|
uart_write_buffer(SCC8660_COF_UART, uart_buffer, 4);
|
||||||
|
|
||||||
|
do
|
||||||
{
|
{
|
||||||
uart_buffer_index = 3;
|
if(3 <= fifo_used(&camera_receiver_fifo))
|
||||||
fifo_read_buffer(&camera_receiver_fifo, uart_buffer, &uart_buffer_index, FIFO_READ_AND_CLEAN);
|
{
|
||||||
temp = uart_buffer[1] << 8 | uart_buffer[2];
|
uart_buffer_index = 3;
|
||||||
break;
|
fifo_read_buffer(&camera_receiver_fifo, uart_buffer, &uart_buffer_index, FIFO_READ_AND_CLEAN);
|
||||||
|
temp = uart_buffer[1] << 8 | uart_buffer[2];
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
system_delay_ms(1);
|
||||||
|
}while(SCC8660_INIT_TIMEOUT > timeout_count ++);
|
||||||
|
if((temp != data) || (SCC8660_INIT_TIMEOUT <= timeout_count))
|
||||||
|
{
|
||||||
|
return_state = 1;
|
||||||
}
|
}
|
||||||
system_delay_ms(1);
|
}
|
||||||
}while(SCC8660_INIT_TIMEOUT > timeout_count ++);
|
else
|
||||||
if((temp != data) || (SCC8660_INIT_TIMEOUT <= timeout_count))
|
|
||||||
{
|
{
|
||||||
return_state = 1;
|
return_state = scc8660_set_brightness_sccb(data);
|
||||||
}
|
}
|
||||||
return return_state;
|
return return_state;
|
||||||
}
|
}
|
||||||
@@ -436,32 +384,40 @@ uint8 scc8660_set_bright (uint16 data)
|
|||||||
uint8 scc8660_set_white_balance (uint16 data)
|
uint8 scc8660_set_white_balance (uint16 data)
|
||||||
{
|
{
|
||||||
uint8 return_state = 0;
|
uint8 return_state = 0;
|
||||||
uint8 uart_buffer[4];
|
|
||||||
uint16 temp;
|
|
||||||
uint16 timeout_count = 0;
|
|
||||||
uint32 uart_buffer_index = 0;
|
|
||||||
|
|
||||||
uart_buffer[0] = 0xA5;
|
if(SCC8660_UART == scc8660_type)
|
||||||
uart_buffer[1] = SCC8660_SET_MANUAL_WB;
|
|
||||||
uart_buffer[2] = data >> 8;
|
|
||||||
uart_buffer[3] = (uint8)data;
|
|
||||||
|
|
||||||
uart_write_buffer(SCC8660_COF_UART, uart_buffer, 4);
|
|
||||||
|
|
||||||
do
|
|
||||||
{
|
{
|
||||||
if(3 <= fifo_used(&camera_receiver_fifo))
|
uint8 uart_buffer[4];
|
||||||
|
uint16 temp;
|
||||||
|
uint16 timeout_count = 0;
|
||||||
|
uint32 uart_buffer_index = 0;
|
||||||
|
|
||||||
|
uart_buffer[0] = 0xA5;
|
||||||
|
uart_buffer[1] = SCC8660_SET_MANUAL_WB;
|
||||||
|
uart_buffer[2] = data >> 8;
|
||||||
|
uart_buffer[3] = (uint8)data;
|
||||||
|
|
||||||
|
uart_write_buffer(SCC8660_COF_UART, uart_buffer, 4);
|
||||||
|
|
||||||
|
do
|
||||||
{
|
{
|
||||||
uart_buffer_index = 3;
|
if(3 <= fifo_used(&camera_receiver_fifo))
|
||||||
fifo_read_buffer(&camera_receiver_fifo, uart_buffer, &uart_buffer_index, FIFO_READ_AND_CLEAN);
|
{
|
||||||
temp = uart_buffer[1] << 8 | uart_buffer[2];
|
uart_buffer_index = 3;
|
||||||
break;
|
fifo_read_buffer(&camera_receiver_fifo, uart_buffer, &uart_buffer_index, FIFO_READ_AND_CLEAN);
|
||||||
|
temp = uart_buffer[1] << 8 | uart_buffer[2];
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
system_delay_ms(1);
|
||||||
|
}while(SCC8660_INIT_TIMEOUT > timeout_count ++);
|
||||||
|
if((temp != data) || (SCC8660_INIT_TIMEOUT <= timeout_count))
|
||||||
|
{
|
||||||
|
return_state = 1;
|
||||||
}
|
}
|
||||||
system_delay_ms(1);
|
}
|
||||||
}while(SCC8660_INIT_TIMEOUT > timeout_count ++);
|
else
|
||||||
if((temp != data) || (SCC8660_INIT_TIMEOUT <= timeout_count))
|
|
||||||
{
|
{
|
||||||
return_state = 1;
|
return_state = scc8660_set_manual_wb_sccb(data);
|
||||||
}
|
}
|
||||||
return return_state;
|
return return_state;
|
||||||
}
|
}
|
||||||
@@ -477,43 +433,117 @@ uint8 scc8660_set_white_balance (uint16 data)
|
|||||||
uint8 scc8660_set_reg (uint8 addr, uint16 data)
|
uint8 scc8660_set_reg (uint8 addr, uint16 data)
|
||||||
{
|
{
|
||||||
uint8 return_state = 0;
|
uint8 return_state = 0;
|
||||||
uint8 uart_buffer[4];
|
|
||||||
uint16 temp;
|
|
||||||
uint16 timeout_count = 0;
|
|
||||||
uint32 uart_buffer_index = 0;
|
|
||||||
|
|
||||||
uart_buffer[0] = 0xA5;
|
if(SCC8660_UART == scc8660_type)
|
||||||
uart_buffer[1] = SCC8660_SET_REG_ADDR;
|
|
||||||
uart_buffer[2] = 0x00;
|
|
||||||
uart_buffer[3] = (uint8)addr;
|
|
||||||
uart_write_buffer(SCC8660_COF_UART, uart_buffer, 4);
|
|
||||||
|
|
||||||
system_delay_ms(10);
|
|
||||||
uart_buffer[0] = 0xA5;
|
|
||||||
uart_buffer[1] = SCC8660_SET_REG_DATA;
|
|
||||||
temp = data;
|
|
||||||
uart_buffer[2] = temp >> 8;
|
|
||||||
uart_buffer[3] = (uint8)temp;
|
|
||||||
uart_write_buffer(SCC8660_COF_UART, uart_buffer, 4);
|
|
||||||
|
|
||||||
do
|
|
||||||
{
|
{
|
||||||
if(3 <= fifo_used(&camera_receiver_fifo))
|
uint8 uart_buffer[4];
|
||||||
|
uint16 temp;
|
||||||
|
uint16 timeout_count = 0;
|
||||||
|
uint32 uart_buffer_index = 0;
|
||||||
|
|
||||||
|
uart_buffer[0] = 0xA5;
|
||||||
|
uart_buffer[1] = SCC8660_SET_REG_ADDR;
|
||||||
|
uart_buffer[2] = 0x00;
|
||||||
|
uart_buffer[3] = (uint8)addr;
|
||||||
|
uart_write_buffer(SCC8660_COF_UART, uart_buffer, 4);
|
||||||
|
|
||||||
|
system_delay_ms(10);
|
||||||
|
uart_buffer[0] = 0xA5;
|
||||||
|
uart_buffer[1] = SCC8660_SET_REG_DATA;
|
||||||
|
temp = data;
|
||||||
|
uart_buffer[2] = temp >> 8;
|
||||||
|
uart_buffer[3] = (uint8)temp;
|
||||||
|
uart_write_buffer(SCC8660_COF_UART, uart_buffer, 4);
|
||||||
|
|
||||||
|
do
|
||||||
{
|
{
|
||||||
uart_buffer_index = 3;
|
if(3 <= fifo_used(&camera_receiver_fifo))
|
||||||
fifo_read_buffer(&camera_receiver_fifo, uart_buffer, &uart_buffer_index, FIFO_READ_AND_CLEAN);
|
{
|
||||||
temp = uart_buffer[1] << 8 | uart_buffer[2];
|
uart_buffer_index = 3;
|
||||||
break;
|
fifo_read_buffer(&camera_receiver_fifo, uart_buffer, &uart_buffer_index, FIFO_READ_AND_CLEAN);
|
||||||
|
temp = uart_buffer[1] << 8 | uart_buffer[2];
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
system_delay_ms(1);
|
||||||
|
}while(SCC8660_INIT_TIMEOUT > timeout_count ++);
|
||||||
|
if((temp != data) || (SCC8660_INIT_TIMEOUT <= timeout_count))
|
||||||
|
{
|
||||||
|
return_state = 1;
|
||||||
}
|
}
|
||||||
system_delay_ms(1);
|
|
||||||
}while(SCC8660_INIT_TIMEOUT > timeout_count ++);
|
}
|
||||||
if((temp != data) || (SCC8660_INIT_TIMEOUT <= timeout_count))
|
else
|
||||||
{
|
{
|
||||||
return_state = 1;
|
return_state = scc8660_set_reg_sccb(addr, data);
|
||||||
}
|
}
|
||||||
return return_state;
|
return return_state;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//-------------------------------------------------------------------------------------------------------------------
|
||||||
|
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> SCC8660<36><30><EFBFBD><EFBFBD>ͷ<EFBFBD><CDB7><EFBFBD>ж<EFBFBD>
|
||||||
|
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> void
|
||||||
|
// <20><><EFBFBD>ز<EFBFBD><D8B2><EFBFBD> void
|
||||||
|
// ʹ<><CAB9>ʾ<EFBFBD><CABE> scc8660_vsync_handler();
|
||||||
|
//-------------------------------------------------------------------------------------------------------------------
|
||||||
|
static void scc8660_vsync_handler(void)
|
||||||
|
{
|
||||||
|
exti_flag_clear(SCC8660_VSYNC_PIN);
|
||||||
|
scc8660_dma_int_num = 0;
|
||||||
|
if(scc8660_dma_init_flag || scc8660_lost_flag)
|
||||||
|
{
|
||||||
|
scc8660_dma_init_flag = 0;
|
||||||
|
IfxDma_resetChannel(&MODULE_DMA, SCC8660_DMA_CH);
|
||||||
|
scc8660_link_list_num = dma_init(SCC8660_DMA_CH,
|
||||||
|
SCC8660_DATA_ADD,
|
||||||
|
(uint8 *)scc8660_image[0],
|
||||||
|
SCC8660_PCLK_PIN,
|
||||||
|
EXTI_TRIGGER_RISING,
|
||||||
|
SCC8660_IMAGE_SIZE);
|
||||||
|
dma_enable(SCC8660_DMA_CH);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
if(1 == scc8660_link_list_num)
|
||||||
|
{
|
||||||
|
dma_set_destination(SCC8660_DMA_CH, (uint8 *)scc8660_image[0]); // û<>в<EFBFBD><D0B2><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ӵ<EFBFBD><D3B4><EFBFBD>ģʽ <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ŀ<EFBFBD>ĵ<EFBFBD>ַ
|
||||||
|
}
|
||||||
|
dma_enable(SCC8660_DMA_CH);
|
||||||
|
}
|
||||||
|
scc8660_lost_flag = 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
//-------------------------------------------------------------------------------------------------------------------
|
||||||
|
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> SCC8660<36><30><EFBFBD><EFBFBD>ͷDMA<4D><41><EFBFBD><EFBFBD><EFBFBD>ж<EFBFBD>
|
||||||
|
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> void
|
||||||
|
// <20><><EFBFBD>ز<EFBFBD><D8B2><EFBFBD> void
|
||||||
|
// ʹ<><CAB9>ʾ<EFBFBD><CABE> scc8660_dma_handler();
|
||||||
|
//-------------------------------------------------------------------------------------------------------------------
|
||||||
|
static void scc8660_dma_handler(void)
|
||||||
|
{
|
||||||
|
clear_dma_flag(SCC8660_DMA_CH);
|
||||||
|
|
||||||
|
if(IfxDma_getChannelTransactionRequestLost(&MODULE_DMA, SCC8660_DMA_CH)) // ͼ<><CDBC><EFBFBD><EFBFBD>λ<EFBFBD>ж<EFBFBD>
|
||||||
|
{
|
||||||
|
scc8660_finish_flag = 0;
|
||||||
|
dma_disable(SCC8660_DMA_CH);
|
||||||
|
IfxDma_clearChannelTransactionRequestLost(&MODULE_DMA, SCC8660_DMA_CH);
|
||||||
|
scc8660_dma_init_flag = 1;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
scc8660_dma_int_num++;
|
||||||
|
if(scc8660_dma_int_num >= scc8660_link_list_num)
|
||||||
|
{
|
||||||
|
// <20>ɼ<EFBFBD><C9BC><EFBFBD><EFBFBD><EFBFBD>
|
||||||
|
// һ<><D2BB>ͼ<EFBFBD><CDBC><EFBFBD>Ӳɼ<D3B2><C9BC><EFBFBD>ʼ<EFBFBD><CABC><EFBFBD>ɼ<EFBFBD><C9BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ3.8MS<EFBFBD><EFBFBD><EFBFBD><EFBFBD>(50FPS<50><53>188*120<32>ֱ<EFBFBD><D6B1><EFBFBD>)
|
||||||
|
scc8660_dma_int_num = 0;
|
||||||
|
scc8660_lost_flag = 0;
|
||||||
|
scc8660_finish_flag = 1;
|
||||||
|
dma_disable(SCC8660_DMA_CH);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
//-------------------------------------------------------------------------------------------------------------------
|
//-------------------------------------------------------------------------------------------------------------------
|
||||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> SCC8660 <20><><EFBFBD><EFBFBD>ͷ<EFBFBD><CDB7>ʼ<EFBFBD><CABC>
|
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> SCC8660 <20><><EFBFBD><EFBFBD>ͷ<EFBFBD><CDB7>ʼ<EFBFBD><CABC>
|
||||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> void
|
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> void
|
||||||
@@ -524,51 +554,54 @@ uint8 scc8660_set_reg (uint8 addr, uint16 data)
|
|||||||
uint8 scc8660_init (void)
|
uint8 scc8660_init (void)
|
||||||
{
|
{
|
||||||
uint8 return_state = 0;
|
uint8 return_state = 0;
|
||||||
uint16 scc8660_version = 0;
|
soft_iic_info_struct scc8660_iic_struct;
|
||||||
|
|
||||||
|
// <20><>ʼ<EFBFBD><CABC>֮ǰ<D6AE><C7B0><EFBFBD>߳<EFBFBD><DFB3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
gpio_init(P02_0, GPO, GPIO_HIGH, GPO_PUSH_PULL);
|
gpio_init(P02_0, GPO, GPIO_HIGH, GPO_PUSH_PULL);
|
||||||
gpio_init(P02_1, GPO, GPIO_HIGH, GPO_PUSH_PULL);
|
gpio_init(P02_1, GPO, GPIO_HIGH, GPO_PUSH_PULL);
|
||||||
|
|
||||||
// <20><>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͷ
|
|
||||||
uart_init(SCC8660_COF_UART, SCC8660_COF_BAUR, SCC8660_COF_UART_RX, SCC8660_COF_UART_TX);
|
|
||||||
uart_rx_interrupt(SCC8660_COF_UART, 1);
|
|
||||||
|
|
||||||
system_delay_ms(200);
|
|
||||||
|
|
||||||
set_camera_type(CAMERA_COLOR, scc8660_vsync_handler, scc8660_dma_handler, scc8660_uart_callback); // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͷ<EFBFBD><CDB7><EFBFBD><EFBFBD>
|
|
||||||
camera_fifo_init();
|
|
||||||
do
|
do
|
||||||
{
|
{
|
||||||
// <20>ȴ<EFBFBD><C8B4><EFBFBD><EFBFBD><EFBFBD>ͷ<EFBFBD>ϵ<EFBFBD><CFB5><EFBFBD>ʼ<EFBFBD><CABC><EFBFBD>ɹ<EFBFBD> <20><>ʽ<EFBFBD><CABD><EFBFBD><EFBFBD><EFBFBD>֣<EFBFBD><D6A3><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD>ͨ<EFBFBD><CDA8><EFBFBD><EFBFBD>ȡ<EFBFBD><C8A1><EFBFBD>õķ<C3B5>ʽ <20><>ѡһ
|
system_delay_ms(200);
|
||||||
// system_delay_ms(1000); // <20><>ʱ<EFBFBD><CAB1>ʽ
|
set_camera_type(CAMERA_COLOR, scc8660_vsync_handler, scc8660_dma_handler, NULL); // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͷ<EFBFBD><CDB7><EFBFBD><EFBFBD>
|
||||||
scc8660_version = scc8660_get_version(); // <20><>ȡ<EFBFBD><C8A1><EFBFBD>õķ<C3B5>ʽ
|
// <20><><EFBFBD>ȳ<EFBFBD><C8B3><EFBFBD>SCCBͨѶ
|
||||||
if(scc8660_set_config(scc8660_set_confing_buffer))
|
scc8660_type = SCC8660_SCCB;
|
||||||
|
soft_iic_init(&scc8660_iic_struct, 0, SCC8660_COF_IIC_DELAY, SCC8660_COF_IIC_SCL, SCC8660_COF_IIC_SDA);
|
||||||
|
if(scc8660_set_config_sccb(&scc8660_iic_struct, scc8660_set_confing_buffer))
|
||||||
{
|
{
|
||||||
set_camera_type(NO_CAMERE, NULL, NULL, NULL);
|
// SCCBͨѶʧ<D1B6>ܣ<EFBFBD><DCA3><EFBFBD><EFBFBD>Դ<EFBFBD><D4B4><EFBFBD>ͨѶ
|
||||||
return_state = 1;
|
scc8660_type = SCC8660_UART;
|
||||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>˶<EFBFBD><CBB6><EFBFBD><EFBFBD><EFBFBD>Ϣ <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD>λ<EFBFBD><CEBB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
camera_fifo_init();
|
||||||
// <20><>ô<EFBFBD><EFBFBD><EFBFBD>Ǵ<EFBFBD><EFBFBD><EFBFBD>ͨ<EFBFBD>ų<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD>˳<EFBFBD><EFBFBD><EFBFBD>
|
set_camera_type(CAMERA_COLOR, scc8660_vsync_handler, scc8660_dma_handler, &scc8660_uart_callback); // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͷ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
// <20><><EFBFBD><EFBFBD>һ<EFBFBD>½<EFBFBD><C2BD><EFBFBD><EFBFBD><EFBFBD>û<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>û<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ܾ<EFBFBD><EFBFBD>ǻ<EFBFBD><EFBFBD><EFBFBD>
|
uart_init (SCC8660_COF_UART, SCC8660_COF_BAUR, SCC8660_COF_UART_RX, SCC8660_COF_UART_TX); //<2F><>ʼ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͷ
|
||||||
zf_log(0, "SCC8660 set config error.");
|
uart_rx_interrupt(SCC8660_COF_UART, 1);
|
||||||
break;
|
fifo_clear(&camera_receiver_fifo);
|
||||||
}
|
|
||||||
|
|
||||||
if(0 == return_state)
|
if(scc8660_set_config(scc8660_set_confing_buffer))
|
||||||
{
|
|
||||||
// <20><>ȡ<EFBFBD><C8A1><EFBFBD>ñ<EFBFBD><C3B1>ڲ鿴<DAB2><E9BFB4><EFBFBD><EFBFBD><EFBFBD>Ƿ<EFBFBD><C7B7><EFBFBD>ȷ
|
|
||||||
if(scc8660_get_config(scc8660_get_confing_buffer))
|
|
||||||
{
|
{
|
||||||
set_camera_type(NO_CAMERE, NULL, NULL, NULL);
|
|
||||||
return_state = 1;
|
|
||||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>˶<EFBFBD><CBB6><EFBFBD><EFBFBD><EFBFBD>Ϣ <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD>λ<EFBFBD><CEBB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>˶<EFBFBD><CBB6><EFBFBD><EFBFBD><EFBFBD>Ϣ <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD>λ<EFBFBD><CEBB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
// <20><>ô<EFBFBD><C3B4><EFBFBD>Ǵ<EFBFBD><EFBFBD><EFBFBD>ͨ<EFBFBD>ų<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD>˳<EFBFBD><EFBFBD><EFBFBD>
|
// <20><>ô<EFBFBD><C3B4><EFBFBD><EFBFBD>ͨ<EFBFBD>ų<EFBFBD><C5B3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD>˳<EFBFBD><CBB3><EFBFBD>
|
||||||
// <20><><EFBFBD><EFBFBD>һ<EFBFBD>½<EFBFBD><C2BD><EFBFBD><EFBFBD><EFBFBD>û<EFBFBD><C3BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>û<EFBFBD><C3BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ܾ<EFBFBD><DCBE>ǻ<EFBFBD><C7BB><EFBFBD>
|
// <20><><EFBFBD><EFBFBD>һ<EFBFBD>½<EFBFBD><C2BD><EFBFBD><EFBFBD><EFBFBD>û<EFBFBD><C3BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>û<EFBFBD><C3BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ܾ<EFBFBD><DCBE>ǻ<EFBFBD><C7BB><EFBFBD>
|
||||||
zf_log(0, "SCC8660 set config error.");
|
zf_log(0, "SCC8660 set config error.");
|
||||||
|
set_camera_type(NO_CAMERE, NULL, NULL, NULL);
|
||||||
|
return_state = 1;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
scc8660_link_list_num = camera_init(SCC8660_DATA_ADD, (uint8 *)scc8660_image[0], SCC8660_IMAGE_SIZE);
|
// <20><>ȡ<EFBFBD><C8A1><EFBFBD>ñ<EFBFBD><C3B1>ڲ鿴<DAB2><E9BFB4><EFBFBD><EFBFBD><EFBFBD>Ƿ<EFBFBD><C7B7><EFBFBD>ȷ
|
||||||
|
if(scc8660_get_config(scc8660_get_confing_buffer))
|
||||||
|
{
|
||||||
|
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>˶<EFBFBD><CBB6><EFBFBD><EFBFBD><EFBFBD>Ϣ <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD>λ<EFBFBD><CEBB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
|
// <20><>ô<EFBFBD><C3B4><EFBFBD>Ǵ<EFBFBD><C7B4><EFBFBD>ͨ<EFBFBD>ų<EFBFBD><C5B3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD>˳<EFBFBD><CBB3><EFBFBD>
|
||||||
|
// <20><><EFBFBD><EFBFBD>һ<EFBFBD>½<EFBFBD><C2BD><EFBFBD><EFBFBD><EFBFBD>û<EFBFBD><C3BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>û<EFBFBD><C3BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ܾ<EFBFBD><DCBE>ǻ<EFBFBD><C7BB><EFBFBD>
|
||||||
|
zf_log(0, "SCC8660 get config error.");
|
||||||
|
set_camera_type(NO_CAMERE, NULL, NULL, NULL);
|
||||||
|
return_state = 1;
|
||||||
|
break;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
scc8660_link_list_num = camera_init(SCC8660_DATA_ADD, (uint8 *)scc8660_image[0], SCC8660_IMAGE_SIZE);
|
||||||
}while(0);
|
}while(0);
|
||||||
|
|
||||||
return return_state;
|
return return_state;
|
||||||
|
|||||||
@@ -31,7 +31,7 @@
|
|||||||
* <20>ļ<DEB8>¼
|
* <20>ļ<DEB8>¼
|
||||||
* <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><>ע
|
* <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><>ע
|
||||||
* 2022-09-15 pudding first version
|
* 2022-09-15 pudding first version
|
||||||
* 2023-04-28 pudding <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ע<EFBFBD><EFBFBD>˵<EFBFBD><EFBFBD>
|
* 2024-02-02 pudding <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>MCU<EFBFBD><EFBFBD>ͫ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
********************************************************************************************************************/
|
********************************************************************************************************************/
|
||||||
/*********************************************************************************************************************
|
/*********************************************************************************************************************
|
||||||
* <20><><EFBFBD>߶<EFBFBD><DFB6>壺
|
* <20><><EFBFBD>߶<EFBFBD><DFB6>壺
|
||||||
@@ -59,35 +59,36 @@
|
|||||||
#define SCC8660_COF_UART_TX (UART1_RX_P02_3) // <20><>ͫ UART-TX <20><><EFBFBD><EFBFBD> Ҫ<><D2AA><EFBFBD>ڵ<EFBFBD>Ƭ<EFBFBD><C6AC> RX <20><>
|
#define SCC8660_COF_UART_TX (UART1_RX_P02_3) // <20><>ͫ UART-TX <20><><EFBFBD><EFBFBD> Ҫ<><D2AA><EFBFBD>ڵ<EFBFBD>Ƭ<EFBFBD><C6AC> RX <20><>
|
||||||
#define SCC8660_COF_UART_RX (UART1_TX_P02_2) // <20><>ͫ UART-RX <20><><EFBFBD><EFBFBD> Ҫ<><D2AA><EFBFBD>ڵ<EFBFBD>Ƭ<EFBFBD><C6AC> TX <20><>
|
#define SCC8660_COF_UART_RX (UART1_TX_P02_2) // <20><>ͫ UART-RX <20><><EFBFBD><EFBFBD> Ҫ<><D2AA><EFBFBD>ڵ<EFBFBD>Ƭ<EFBFBD><C6AC> TX <20><>
|
||||||
|
|
||||||
|
#define SCC8660_COF_IIC_DELAY (800) // <20><>ͫ IIC <20><>ʱ
|
||||||
|
#define SCC8660_COF_IIC_SCL (P02_3) // <20><>ͫ IIC-SCL <20><><EFBFBD><EFBFBD>
|
||||||
|
#define SCC8660_COF_IIC_SDA (P02_2) // <20><>ͫ IIC-SDA <20><><EFBFBD><EFBFBD>
|
||||||
|
|
||||||
#define SCC8660_DMA_CH (IfxDma_ChannelId_5)
|
#define SCC8660_DMA_CH (IfxDma_ChannelId_5)
|
||||||
|
|
||||||
#define SCC8660_PCLK_PIN (ERU_CH2_REQ14_P02_1) // PCLK <20><><EFBFBD><EFBFBD><EFBFBD>ź<EFBFBD> TIM_ETR <20><><EFBFBD>Ž<EFBFBD>ֹ<EFBFBD><D6B9><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
#define SCC8660_PCLK_PIN (ERU_CH2_REQ14_P02_1) // PCLK <20><><EFBFBD><EFBFBD><EFBFBD>ź<EFBFBD> TIM_ETR <20><><EFBFBD>Ž<EFBFBD>ֹ<EFBFBD><D6B9><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
|
|
||||||
#define SCC8660_VSYNC_PIN (ERU_CH3_REQ6_P02_0 ) // <20><><EFBFBD>ж<EFBFBD><D0B6><EFBFBD><EFBFBD><EFBFBD>
|
#define SCC8660_VSYNC_PIN (ERU_CH3_REQ6_P02_0 ) // <20><><EFBFBD>ж<EFBFBD><D0B6><EFBFBD><EFBFBD><EFBFBD>
|
||||||
|
|
||||||
#define SCC8660_DATA_PIN (P00_0) // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ֻ<><D6BB><EFBFBD><EFBFBD> GPIOx0 <20><><EFBFBD><EFBFBD> GPIOx8 <20><>ʼ <20><><EFBFBD><EFBFBD><EFBFBD>˸<EFBFBD><CBB8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> F0-F7
|
#define SCC8660_DATA_PIN (P00_0) // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ֻ<><D6BB><EFBFBD><EFBFBD> GPIOx0 <20><><EFBFBD><EFBFBD> GPIOx8 <20><>ʼ <20><><EFBFBD><EFBFBD><EFBFBD>˸<EFBFBD><CBB8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> F0-F7
|
||||||
#define SCC8660_DATA_ADD (get_port_in_addr(SCC8660_DATA_PIN))
|
#define SCC8660_DATA_ADD (get_port_in_addr(SCC8660_DATA_PIN))
|
||||||
|
|
||||||
#define SCC8660_INIT_TIMEOUT (0x00F0) // Ĭ<>ϵ<EFBFBD><CFB5><EFBFBD><EFBFBD><EFBFBD>ͷ<EFBFBD><CDB7>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD>ʱʱ<CAB1><CAB1> <20><><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA>λ
|
#define SCC8660_INIT_TIMEOUT (0x00F0) // Ĭ<>ϵ<EFBFBD><CFB5><EFBFBD><EFBFBD><EFBFBD>ͷ<EFBFBD><CDB7>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD>ʱʱ<CAB1><CAB1> <20><><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA>λ
|
||||||
//================================================<3D><><EFBFBD><EFBFBD> SCC8660 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>================================================
|
//================================================<3D><><EFBFBD><EFBFBD> SCC8660 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>================================================
|
||||||
|
|
||||||
//================================================<3D><><EFBFBD><EFBFBD> SCC8660 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>================================================
|
//================================================<3D><><EFBFBD><EFBFBD> SCC8660 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ã<EFBFBD><EFBFBD><EFBFBD>֧<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͫ<EFBFBD><EFBFBD>֡<EFBFBD>ʰ汾<EFBFBD><EFBFBD>===========================
|
||||||
#define SCC8660_W (160) // ʵ<EFBFBD><EFBFBD>ͼ<EFBFBD><EFBFBD><EFBFBD>ֱ<EFBFBD><EFBFBD>ʿ<EFBFBD><EFBFBD><EFBFBD> <20><>ѡ<EFBFBD><D1A1><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA>160 180
|
#define SCC8660_W (160) // ͼ<><CDBC><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>ѡ<EFBFBD><D1A1><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA>160 80 40
|
||||||
#define SCC8660_H (120) // ʵ<EFBFBD><EFBFBD>ͼ<EFBFBD><EFBFBD><EFBFBD>ֱ<EFBFBD><EFBFBD>ʸ߶<EFBFBD> <20><>ѡ<EFBFBD><D1A1><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA>120 160
|
#define SCC8660_H (120) // ͼ<><CDBC><EFBFBD>߶<EFBFBD> <20><>ѡ<EFBFBD><D1A1><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA>120 160 240
|
||||||
#define SCC8660_IMAGE_SIZE (SCC8660_W * 2 * SCC8660_H) // <20><><EFBFBD><EFBFBD>ͼ<EFBFBD><CDBC><EFBFBD><EFBFBD>С SCC8660_W*2*SCC8660_H <20><><EFBFBD>ܳ<EFBFBD><DCB3><EFBFBD> 65535
|
#define SCC8660_IMAGE_SIZE (SCC8660_W * 2 * SCC8660_H) // <20><><EFBFBD><EFBFBD>ͼ<EFBFBD><CDBC><EFBFBD><EFBFBD>С SCC8660_W*2*SCC8660_H <20><><EFBFBD>ܳ<EFBFBD><DCB3><EFBFBD> 65535
|
||||||
|
|
||||||
#define SCC8660_AUTO_EXP_DEF (0 ) // <20>Զ<EFBFBD><D4B6>ع<EFBFBD> Ĭ<>ϲ<EFBFBD><CFB2><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Զ<EFBFBD><D4B6>ع<EFBFBD><D8B9><EFBFBD><EFBFBD><EFBFBD> <20><>Χ [0-1] 0Ϊ<30>ر<EFBFBD>
|
#define SCC8660_AUTO_EXP_DEF (0 ) // <20>Զ<EFBFBD><D4B6>ع<EFBFBD> Ĭ<>ϲ<EFBFBD><CFB2><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Զ<EFBFBD><D4B6>ع<EFBFBD><D8B9><EFBFBD><EFBFBD><EFBFBD> <20><>Χ [0-1] 0Ϊ<30>ر<EFBFBD>
|
||||||
#define SCC8660_BRIGHT_DEF (300) // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ֶ<EFBFBD><D6B6>ع<EFBFBD>Ĭ<EFBFBD>ϣ<EFBFBD>300 <20>ֶ<EFBFBD><D6B6>ع<EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Χ0-65535 <20>Զ<EFBFBD><D4B6>ع<EFBFBD><D8B9>Ƽ<EFBFBD>ֵ<EFBFBD><D6B5>100 <20>Զ<EFBFBD><D4B6>ع<EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>÷<EFBFBD>Χ0-255
|
#define SCC8660_BRIGHT_DEF (500) // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ֶ<EFBFBD><D6B6>ع<EFBFBD>Ĭ<EFBFBD>ϣ<EFBFBD>300 <20>ֶ<EFBFBD><D6B6>ع<EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Χ0-65535 <20>Զ<EFBFBD><D4B6>ع<EFBFBD><D8B9>Ƽ<EFBFBD>ֵ<EFBFBD><D6B5>100 <20>Զ<EFBFBD><D4B6>ع<EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>÷<EFBFBD>Χ0-255
|
||||||
#define SCC8660_FPS_DEF (50 ) // ͼ<><CDBC>֡<EFBFBD><D6A1> Ĭ<>ϣ<EFBFBD>50 <20><>ѡ<EFBFBD><D1A1><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA>60 50 30 25<32><35> ʵ<><CAB5>֡<EFBFBD>ʻ<EFBFBD><CABB><EFBFBD>Ҫ<EFBFBD><D2AA>SCC8660_PCLK_DIV<49><56><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
#define SCC8660_FPS_DEF (50 ) // ͼ<><CDBC>֡<EFBFBD><D6A1> Ĭ<>ϣ<EFBFBD>50 <20><>ѡ<EFBFBD><D1A1><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA>60 50 30 25<32><35> ʵ<><CAB5>֡<EFBFBD>ʻ<EFBFBD><CABB><EFBFBD>Ҫ<EFBFBD><D2AA>SCC8660_PCLK_DIV<49><56><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
#define SCC8660_PCLK_DIV_DEF (5 ) // PCLK<4C><4B>Ƶϵ<C6B5><CFB5> Ĭ<>ϣ<EFBFBD>5 <20><>ѡ<EFBFBD><D1A1><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA><0:1/1> <1:2/3> <2:1/2> <3:1/3> <4:1/4> <5:1/8>
|
#define SCC8660_PCLK_DIV_DEF (2 ) // PCLK<4C><4B>Ƶϵ<C6B5><CFB5> Ĭ<>ϣ<EFBFBD>5 <20><>ѡ<EFBFBD><D1A1><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA><0:1/1> <1:2/3> <2:1/2> <3:1/3> <4:1/4> <5:1/8>
|
||||||
// <20><>Ƶϵ<C6B5><CFB5>Խ<EFBFBD><D4BD><EFBFBD><EFBFBD>PCLKƵ<4B><C6B5>Խ<EFBFBD>ͣ<EFBFBD><CDA3><EFBFBD><EFBFBD><EFBFBD>PCLK<4C><4B><EFBFBD>Լ<EFBFBD><D4BC><EFBFBD>DVP<56>ӿڵĸ<DAB5><C4B8>ţ<EFBFBD><C5A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>PCLKƵ<4B><C6B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ӱ<EFBFBD><D3B0>֡<EFBFBD>ʡ<EFBFBD><CAA1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>뱣<EFBFBD><EBB1A3>Ĭ<EFBFBD>ϡ<EFBFBD>
|
// <20><>Ƶϵ<C6B5><CFB5>Խ<EFBFBD><D4BD><EFBFBD><EFBFBD>PCLKƵ<4B><C6B5>Խ<EFBFBD>ͣ<EFBFBD><CDA3><EFBFBD><EFBFBD><EFBFBD>PCLK<4C><4B><EFBFBD>Լ<EFBFBD><D4BC><EFBFBD>DVP<56>ӿڵĸ<DAB5><C4B8>ţ<EFBFBD><C5A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>PCLKƵ<4B><C6B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ӱ<EFBFBD><D3B0>֡<EFBFBD>ʡ<EFBFBD><CAA1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>뱣<EFBFBD><EBB1A3>Ĭ<EFBFBD>ϡ<EFBFBD>
|
||||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>FPSΪ50֡<30><D6A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>pclk<6C><6B>Ƶϵ<C6B5><CFB5>ѡ<EFBFBD><D1A1><EFBFBD><EFBFBD>Ϊ5<CEAA><35><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͷ<EFBFBD><CDB7><EFBFBD><EFBFBD><EFBFBD><EFBFBD>֡<EFBFBD><D6A1>Ϊ50*<2A><>1/8<><38>=6.25֡
|
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>FPSΪ50֡<30><D6A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>pclk<6C><6B>Ƶϵ<C6B5><CFB5>ѡ<EFBFBD><D1A1><EFBFBD><EFBFBD>Ϊ5<CEAA><35><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͷ<EFBFBD><CDB7><EFBFBD><EFBFBD><EFBFBD><EFBFBD>֡<EFBFBD><D6A1>Ϊ50*<2A><>1/8<><38>=6.25֡
|
||||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>£<EFBFBD>SCC8660_PCLK_DIV<49><56><EFBFBD><EFBFBD>Խ<EFBFBD><D4BD>ͼ<EFBFBD><CDBC><EFBFBD><EFBFBD>Խ<EFBFBD><D4BD>
|
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>£<EFBFBD>SCC8660_PCLK_DIV<49><56><EFBFBD><EFBFBD>Խ<EFBFBD><D4BD>ͼ<EFBFBD><CDBC><EFBFBD><EFBFBD>Խ<EFBFBD><D4BD>
|
||||||
#define SCC8660_PCLK_MODE_DEF (0 ) // PCLKģʽ Ĭ<>ϣ<EFBFBD>0 <20><>ѡ<EFBFBD><D1A1><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA>[0,1] 0<><30><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ź<EFBFBD> 1<><31><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ź<EFBFBD> <ͨ<><CDA8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ0<CEAA><30><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʹ<EFBFBD><CAB9>STM32<33><32>DCMI<4D>ӿڲɼ<DAB2><C9BC><EFBFBD>Ҫ<EFBFBD><D2AA><EFBFBD><EFBFBD>Ϊ1>
|
#define SCC8660_PCLK_MODE_DEF (0 ) // PCLKģʽ Ĭ<EFBFBD>ϣ<EFBFBD>0 <20><>ѡ<EFBFBD><D1A1><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA>[0,1] 0<><30><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ź<EFBFBD> 1<><31><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ź<EFBFBD> <ͨ<><CDA8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ0<CEAA><30><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʹ<EFBFBD><CAB9>STM32<33><32>DCMI<4D>ӿڲɼ<DAB2><C9BC><EFBFBD>Ҫ<EFBFBD><D2AA><EFBFBD><EFBFBD>Ϊ1>
|
||||||
#define SCC8660_COLOR_MODE_DEF (1 ) // ͼ<><CDBC>ɫ<EFBFBD><C9AB>ģʽ Ĭ<>ϣ<EFBFBD>0 <20><>ѡ<EFBFBD><D1A1><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA>[0,1] 0<><30><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɫģʽ 1<><31><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ģʽ<C4A3><CABD>ɫ<EFBFBD>ʱ<EFBFBD><CAB1>Ͷ<EFBFBD><CDB6><EFBFBD><EFBFBD>ߣ<EFBFBD>
|
#define SCC8660_COLOR_MODE_DEF (0 ) // ͼ<><CDBC>ɫ<EFBFBD><C9AB>ģʽ Ĭ<>ϣ<EFBFBD>0 <20><>ѡ<EFBFBD><D1A1><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA>[0,1] 0<><30><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɫģʽ 1<><31><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ģʽ<C4A3><CABD>ɫ<EFBFBD>ʱ<EFBFBD><CAB1>Ͷ<EFBFBD><CDB6><EFBFBD><EFBFBD>ߣ<EFBFBD>
|
||||||
#define SCC8660_DATA_FORMAT_DEF (1 ) // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݸ<EFBFBD>ʽ Ĭ<>ϣ<EFBFBD>0 <20><>ѡ<EFBFBD><D1A1><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA>[0-3] 0<><30>RGB565 1<><31>RGB565(<28>ֽڽ<D6BD><DABD><EFBFBD>) 2<><32>YUV422(YUYV) 3<><33>YUV422(UYVY)
|
#define SCC8660_DATA_FORMAT_DEF (0 ) // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݸ<EFBFBD>ʽ Ĭ<>ϣ<EFBFBD>0 <20><>ѡ<EFBFBD><D1A1><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA>[0-3] 0<><30>RGB565 1<><31>RGB565(<28>ֽڽ<D6BD><DABD><EFBFBD>) 2<><32>YUV422(YUYV) 3<><33>YUV422(UYVY)
|
||||||
#define SCC8660_MANUAL_WB_DEF (0 ) // <20>ֶ<EFBFBD><D6B6><EFBFBD>ƽ<EFBFBD><C6BD> Ĭ<EFBFBD>ϣ<EFBFBD>0 <20><>ѡ<EFBFBD><D1A1><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA>[0,0x65-0xa0] 0<><30><EFBFBD>ر<EFBFBD><D8B1>ֶ<EFBFBD><D6B6><EFBFBD>ƽ<EFBFBD>⣬<EFBFBD><E2A3AC><EFBFBD><EFBFBD><EFBFBD>Զ<EFBFBD><D4B6><EFBFBD>ƽ<EFBFBD><C6BD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֶ<EFBFBD><D6B6><EFBFBD>ƽ<EFBFBD><C6BD> <20>ֶ<EFBFBD><D6B6><EFBFBD>ƽ<EFBFBD><C6BD>ʱ <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Χ0x65-0xa0
|
#define SCC8660_MANUAL_WB_DEF (0 ) // <20>ֶ<EFBFBD><D6B6><EFBFBD>ƽ<EFBFBD><C6BD> Ĭ<>ϣ<EFBFBD>0 <20><>ѡ<EFBFBD><D1A1><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA>[0,0x65-0xa0] 0<><30><EFBFBD>ر<EFBFBD><D8B1>ֶ<EFBFBD><D6B6><EFBFBD>ƽ<EFBFBD>⣬<EFBFBD><E2A3AC><EFBFBD><EFBFBD><EFBFBD>Զ<EFBFBD><D4B6><EFBFBD>ƽ<EFBFBD><C6BD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֶ<EFBFBD><D6B6><EFBFBD>ƽ<EFBFBD><C6BD> <20>ֶ<EFBFBD><D6B6><EFBFBD>ƽ<EFBFBD><C6BD>ʱ <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Χ0x65-0xa0
|
||||||
//================================================<3D><><EFBFBD><EFBFBD> SCC8660 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>================================================
|
//================================================<3D><><EFBFBD><EFBFBD> SCC8660 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ã<EFBFBD><EFBFBD><EFBFBD>֧<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͫ<EFBFBD><EFBFBD>֡<EFBFBD>ʰ汾<EFBFBD><EFBFBD>===========================
|
||||||
|
|
||||||
//===============================================<3D><><EFBFBD><EFBFBD> SCC8660 <20><><EFBFBD><EFBFBD><EFBFBD>ṹ<EFBFBD><E1B9B9>================================================
|
//===============================================<3D><><EFBFBD><EFBFBD> SCC8660 <20><><EFBFBD><EFBFBD><EFBFBD>ṹ<EFBFBD><E1B9B9>================================================
|
||||||
typedef enum
|
typedef enum
|
||||||
@@ -116,6 +117,14 @@ typedef enum
|
|||||||
}scc8660_cmd_enum;
|
}scc8660_cmd_enum;
|
||||||
//===============================================<3D><><EFBFBD><EFBFBD> SCC8660 <20><><EFBFBD><EFBFBD><EFBFBD>ṹ<EFBFBD><E1B9B9>================================================
|
//===============================================<3D><><EFBFBD><EFBFBD> SCC8660 <20><><EFBFBD><EFBFBD><EFBFBD>ṹ<EFBFBD><E1B9B9>================================================
|
||||||
|
|
||||||
|
//===============================================<3D><><EFBFBD><EFBFBD>ͷ<EFBFBD><CDB7><EFBFBD><EFBFBD>ö<EFBFBD><C3B6><EFBFBD><EFBFBD>=======================================================
|
||||||
|
typedef enum
|
||||||
|
{
|
||||||
|
SCC8660_UART,
|
||||||
|
SCC8660_SCCB,
|
||||||
|
}scc8660_type_enum;
|
||||||
|
//===============================================<3D><><EFBFBD><EFBFBD>ͷ<EFBFBD><CDB7><EFBFBD><EFBFBD>ö<EFBFBD><C3B6><EFBFBD><EFBFBD>=======================================================
|
||||||
|
|
||||||
//===============================================<3D><><EFBFBD><EFBFBD> SCC8660 ȫ<>ֱ<EFBFBD><D6B1><EFBFBD>=================================================
|
//===============================================<3D><><EFBFBD><EFBFBD> SCC8660 ȫ<>ֱ<EFBFBD><D6B1><EFBFBD>=================================================
|
||||||
extern vuint8 scc8660_finish_flag; // һ<><D2BB>ͼ<EFBFBD><CDBC><EFBFBD>ɼ<EFBFBD><C9BC><EFBFBD><EFBFBD>ɱ<EFBFBD>־λ
|
extern vuint8 scc8660_finish_flag; // һ<><D2BB>ͼ<EFBFBD><CDBC><EFBFBD>ɼ<EFBFBD><C9BC><EFBFBD><EFBFBD>ɱ<EFBFBD>־λ
|
||||||
extern uint16 scc8660_image[SCC8660_H][SCC8660_W]; // ͼ<><EFBFBD><F1B1A3B4><EFBFBD><EFBFBD><EFBFBD>
|
extern uint16 scc8660_image[SCC8660_H][SCC8660_W]; // ͼ<><EFBFBD><F1B1A3B4><EFBFBD><EFBFBD><EFBFBD>
|
||||||
|
|||||||
@@ -56,6 +56,7 @@ typedef enum
|
|||||||
WIRELESS_UART, // <20><><EFBFBD>ߴ<EFBFBD><DFB4><EFBFBD>
|
WIRELESS_UART, // <20><><EFBFBD>ߴ<EFBFBD><DFB4><EFBFBD>
|
||||||
BLUETOOTH_CH9141, // <20><><EFBFBD><EFBFBD> CH9141
|
BLUETOOTH_CH9141, // <20><><EFBFBD><EFBFBD> CH9141
|
||||||
WIFI_UART, // <20><><EFBFBD><EFBFBD> WiFi
|
WIFI_UART, // <20><><EFBFBD><EFBFBD> WiFi
|
||||||
|
RECEIVER_UART, // ǹʽң<CABD><D2A3><EFBFBD><EFBFBD>
|
||||||
}wireless_type_enum;
|
}wireless_type_enum;
|
||||||
|
|
||||||
typedef enum
|
typedef enum
|
||||||
|
|||||||
@@ -0,0 +1,134 @@
|
|||||||
|
/*********************************************************************************************************************
|
||||||
|
* TC264 Opensourec Library <20><><EFBFBD><EFBFBD>TC264 <20><>Դ<EFBFBD>⣩<EFBFBD><E2A3A9>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD>ڹٷ<DAB9> SDK <20>ӿڵĵ<DAB5><C4B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Դ<EFBFBD><D4B4>
|
||||||
|
* Copyright (c) 2022 SEEKFREE <20><><EFBFBD>ɿƼ<C9BF>
|
||||||
|
*
|
||||||
|
* <20><><EFBFBD>ļ<EFBFBD><C4BC><EFBFBD> TC264 <20><>Դ<EFBFBD><D4B4><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD>
|
||||||
|
*
|
||||||
|
* TC264 <20><>Դ<EFBFBD><D4B4> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
|
* <20><><EFBFBD><EFBFBD><EFBFBD>Ը<EFBFBD><D4B8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ᷢ<EFBFBD><E1B7A2><EFBFBD><EFBFBD> GPL<50><4C>GNU General Public License<73><65><EFBFBD><EFBFBD> GNUͨ<55>ù<EFBFBD><C3B9><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>֤<EFBFBD><D6A4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
|
* <20><> GPL <20>ĵ<EFBFBD>3<EFBFBD>棨<EFBFBD><E6A3A8> GPL3.0<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ѡ<EFBFBD><EFBFBD><EFBFBD>ģ<EFBFBD><EFBFBD>κκ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>İ汾<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>·<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>/<2F><><EFBFBD><EFBFBD><DEB8><EFBFBD>
|
||||||
|
*
|
||||||
|
* <20><><EFBFBD><EFBFBD>Դ<EFBFBD><D4B4><EFBFBD>ķ<EFBFBD><C4B7><EFBFBD><EFBFBD><EFBFBD>ϣ<EFBFBD><CFA3><EFBFBD><EFBFBD><EFBFBD>ܷ<EFBFBD><DCB7><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ã<EFBFBD><C3A3><EFBFBD><EFBFBD><EFBFBD>δ<EFBFBD><CEB4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>κεı<CEB5>֤
|
||||||
|
* <20><><EFBFBD><EFBFBD>û<EFBFBD><C3BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ի<EFBFBD><D4BB>ʺ<EFBFBD><CABA>ض<EFBFBD><D8B6><EFBFBD>;<EFBFBD>ı<EFBFBD>֤
|
||||||
|
* <20><><EFBFBD><EFBFBD>ϸ<EFBFBD><CFB8><EFBFBD><EFBFBD><EFBFBD>μ<EFBFBD> GPL
|
||||||
|
*
|
||||||
|
* <20><>Ӧ<EFBFBD><D3A6><EFBFBD><EFBFBD><EFBFBD>յ<EFBFBD><D5B5><EFBFBD><EFBFBD><EFBFBD>Դ<EFBFBD><D4B4><EFBFBD><EFBFBD>ͬʱ<CDAC>յ<EFBFBD>һ<EFBFBD><D2BB> GPL <20>ĸ<EFBFBD><C4B8><EFBFBD>
|
||||||
|
* <20><><EFBFBD><EFBFBD>û<EFBFBD>У<EFBFBD><D0A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><https://www.gnu.org/licenses/>
|
||||||
|
*
|
||||||
|
* <20><><EFBFBD><EFBFBD>ע<EFBFBD><D7A2><EFBFBD><EFBFBD>
|
||||||
|
* <20><><EFBFBD><EFBFBD>Դ<EFBFBD><D4B4>ʹ<EFBFBD><CAB9> GPL3.0 <20><>Դ<EFBFBD><D4B4><EFBFBD><EFBFBD>֤Э<D6A4><D0AD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA><EFBFBD>İ汾
|
||||||
|
* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ӣ<EFBFBD>İ<EFBFBD><C4B0><EFBFBD> libraries/doc <20>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD>µ<EFBFBD> GPL3_permission_statement.txt <20>ļ<EFBFBD><C4BC><EFBFBD>
|
||||||
|
* <20><><EFBFBD><EFBFBD>֤<EFBFBD><D6A4><EFBFBD><EFBFBD><EFBFBD><EFBFBD> libraries <20>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD>µ<EFBFBD> LICENSE <20>ļ<EFBFBD>
|
||||||
|
* <20><>ӭ<EFBFBD><D3AD>λʹ<CEBB>ò<EFBFBD><C3B2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><DEB8><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD>뱣<EFBFBD><EBB1A3><EFBFBD><EFBFBD><EFBFBD>ɿƼ<C9BF><C6BC>İ<EFBFBD>Ȩ<EFBFBD><C8A8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
|
*
|
||||||
|
* <20>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD><EFBFBD> zf_device_uart_receiver
|
||||||
|
* <20><>˾<EFBFBD><CBBE><EFBFBD><EFBFBD> <20>ɶ<EFBFBD><C9B6><EFBFBD><EFBFBD>ɿƼ<C9BF><C6BC><EFBFBD><EFBFBD><EFBFBD>˾
|
||||||
|
* <20>汾<EFBFBD><E6B1BE>Ϣ <20>鿴 libraries/doc <20>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD><EFBFBD> version <20>ļ<EFBFBD> <20>汾˵<E6B1BE><CBB5>
|
||||||
|
* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ADS v1.9.20
|
||||||
|
* <20><><EFBFBD><EFBFBD>ƽ̨ TC264D
|
||||||
|
* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> https://seekfree.taobao.com/
|
||||||
|
*
|
||||||
|
* <20>ļ<DEB8>¼
|
||||||
|
* <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><>ע
|
||||||
|
* 2022-11-04 JKS first version
|
||||||
|
********************************************************************************************************************/
|
||||||
|
/*********************************************************************************************************************
|
||||||
|
* <20><><EFBFBD>߶<EFBFBD><DFB6>壺
|
||||||
|
* ------------------------------------
|
||||||
|
* ģ<><C4A3><EFBFBD>ܽ<EFBFBD> <20><>Ƭ<EFBFBD><C6AC><EFBFBD>ܽ<EFBFBD>
|
||||||
|
* TXD <20>鿴 zf_device_uart_receiver.h <20><> UART_RECEVIER_RX_PIN <20>궨<EFBFBD><EAB6A8>
|
||||||
|
* GND <20><>Դ<EFBFBD><D4B4>
|
||||||
|
* 5V 5V<35><56>Դ
|
||||||
|
* ------------------------------------
|
||||||
|
********************************************************************************************************************/
|
||||||
|
|
||||||
|
#include "zf_device_type.h"
|
||||||
|
#include "zf_driver_uart.h"
|
||||||
|
#include "zf_driver_timer.h"
|
||||||
|
#include "zf_device_uart_receiver.h"
|
||||||
|
|
||||||
|
uart_receiver_struct uart_receiver ; // <20><><EFBFBD>ڽ<EFBFBD><DABD>ջ<EFBFBD>ͨ<EFBFBD><CDA8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>״̬
|
||||||
|
|
||||||
|
uint8 uart_receiver_data[REV_DATA_LEN] = {0}; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ԭʼ<D4AD><CABC><EFBFBD><EFBFBD>
|
||||||
|
|
||||||
|
//-------------------------------------------------------------------------------------------------------------------
|
||||||
|
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>ȡ<EFBFBD><C8A1><EFBFBD>ε<EFBFBD><CEB5><EFBFBD>uart_receiver_interval_time<6D><65><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
|
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> void
|
||||||
|
// <20><><EFBFBD>ز<EFBFBD><D8B2><EFBFBD> uint32 <20><><EFBFBD>شӿ<D8B4>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD><EFBFBD>ڵ<EFBFBD>ʱ<EFBFBD><CAB1>(<28><>λ1us)
|
||||||
|
// ʹ<><CAB9>ʾ<EFBFBD><CABE> uint32 time = uart_receiver_interval_time();
|
||||||
|
// <20><>ע<EFBFBD><D7A2>Ϣ <20>ڲ<EFBFBD><DAB2><EFBFBD><EFBFBD><EFBFBD>
|
||||||
|
//-------------------------------------------------------------------------------------------------------------------
|
||||||
|
static uint32 uart_receiver_interval_time (void)
|
||||||
|
{
|
||||||
|
static uint32 time_last = 0;
|
||||||
|
uint32 time, interval_time;
|
||||||
|
uint32 stm_clk;
|
||||||
|
|
||||||
|
stm_clk = IfxStm_getFrequency(IfxStm_getAddress((IfxStm_Index)(IfxCpu_getCoreId())));
|
||||||
|
|
||||||
|
time = IfxStm_getLower(IfxStm_getAddress((IfxStm_Index)(IfxCpu_getCoreId())));
|
||||||
|
interval_time = time - time_last;
|
||||||
|
time_last = time;
|
||||||
|
interval_time = (uint32)((uint64)interval_time * 1000000 / stm_clk);
|
||||||
|
|
||||||
|
return interval_time;
|
||||||
|
}
|
||||||
|
|
||||||
|
//-------------------------------------------------------------------------------------------------------------------
|
||||||
|
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> SBUS<55><53><EFBFBD>ݽ<EFBFBD><DDBD><EFBFBD>
|
||||||
|
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> *remote_data <20><><EFBFBD><EFBFBD>ң<EFBFBD><D2A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݵĵ<DDB5>ַ
|
||||||
|
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> *bufer ԭʼ<D4AD><CABC><EFBFBD><EFBFBD>
|
||||||
|
// <20><><EFBFBD>ز<EFBFBD><D8B2><EFBFBD> void
|
||||||
|
// ʹ<><CAB9>ʾ<EFBFBD><CABE>
|
||||||
|
// <20><>ע<EFBFBD><D7A2>Ϣ <20><>sbus<75><73><EFBFBD>ݽ<EFBFBD><DDBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>н<EFBFBD><D0BD><EFBFBD>
|
||||||
|
//-------------------------------------------------------------------------------------------------------------------
|
||||||
|
static void uart_receiver_analysis (uart_receiver_struct *remote_data,uint8 * buffer)
|
||||||
|
{
|
||||||
|
uint8 num = 0;
|
||||||
|
remote_data->channel[num++] = (buffer[1] |buffer[ 2] << 8 ) & 0x07FF;
|
||||||
|
remote_data->channel[num++] = (buffer[2] >> 3 | buffer[3] << 5 ) & 0x07FF;
|
||||||
|
remote_data->channel[num++] = (buffer[3] >> 6 | buffer[4] << 2 | buffer[5] << 10 ) & 0x07FF;
|
||||||
|
remote_data->channel[num++] = (buffer[5] >> 1 | buffer[6] << 7 ) & 0x07FF;
|
||||||
|
remote_data->channel[num++] = (buffer[6] >> 4 | buffer[7] << 4 ) & 0x07FF;
|
||||||
|
remote_data->channel[num++] = (buffer[7] >> 7 | buffer[8] << 1 | buffer[9] << 9 ) & 0x07FF;
|
||||||
|
remote_data->state = (SBUS_NORMAL_STATE == buffer[23]) ? 1 : 0;
|
||||||
|
uart_receiver.finsh_flag = 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
//-------------------------------------------------------------------------------------------------------------------
|
||||||
|
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>ڽ<EFBFBD><DABD>ջ<EFBFBD>ģ<EFBFBD><C4A3> <20><><EFBFBD><EFBFBD><EFBFBD>жϻص<CFBB><D8B5><EFBFBD><EFBFBD><EFBFBD>
|
||||||
|
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> void
|
||||||
|
// <20><><EFBFBD>ز<EFBFBD><D8B2><EFBFBD> void
|
||||||
|
// ʹ<><CAB9>ʾ<EFBFBD><CABE> uart_receiver_callback();
|
||||||
|
// <20><>ע<EFBFBD><D7A2>Ϣ <20>ú<EFBFBD><C3BA><EFBFBD><EFBFBD><EFBFBD> ISR <20>ļ<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>жϳ<D0B6><CFB3><EFBFBD>ͨ<EFBFBD><CDA8>uart_receiver_uart_handler<65><72><EFBFBD><EFBFBD>ָ<EFBFBD>뱻<EFBFBD><EBB1BB><EFBFBD><EFBFBD>
|
||||||
|
//-------------------------------------------------------------------------------------------------------------------
|
||||||
|
void uart_receiver_callback(void)
|
||||||
|
{
|
||||||
|
static vuint8 length = 0;
|
||||||
|
|
||||||
|
if (uart_receiver_interval_time() > 3000)
|
||||||
|
{
|
||||||
|
length = 0;
|
||||||
|
}
|
||||||
|
uart_receiver_data[length++] = uart_read_byte(UART_RECEVIER_UART_INDEX);
|
||||||
|
if ( (REV_DATA_LEN == length) // <20><><EFBFBD><EFBFBD>֡<EFBFBD><D6A1><EFBFBD><EFBFBD>֡ͷ<D6A1><CDB7>֡β<D6A1><CEB2><EFBFBD><EFBFBD>Э<EFBFBD><D0AD>
|
||||||
|
&& (FRAME_STAR == uart_receiver_data[0])
|
||||||
|
&& (FRAME_END == uart_receiver_data[24]))
|
||||||
|
{
|
||||||
|
uart_receiver_analysis(&uart_receiver, uart_receiver_data);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
//-------------------------------------------------------------------------------------------------------------------
|
||||||
|
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>ڽ<EFBFBD><DABD>ջ<EFBFBD><D5BB><EFBFBD>ʼ<EFBFBD><CABC>
|
||||||
|
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> void
|
||||||
|
// <20><><EFBFBD>ز<EFBFBD><D8B2><EFBFBD> void
|
||||||
|
// ʹ<><CAB9>ʾ<EFBFBD><CABE> uart_receiver_init();
|
||||||
|
//-------------------------------------------------------------------------------------------------------------------
|
||||||
|
void uart_receiver_init(void)
|
||||||
|
{
|
||||||
|
uart_sbus_init(UART_RECEVIER_UART_INDEX, SBUS_UART_BAUDRATE, UART_RECEVIER_TX_PIN, UART_RECEVIER_RX_PIN);
|
||||||
|
|
||||||
|
// <20><><EFBFBD>ô<EFBFBD><C3B4><EFBFBD><EFBFBD>жϻص<CFBB><D8B5><EFBFBD><EFBFBD><EFBFBD>
|
||||||
|
set_wireless_type(RECEIVER_UART, uart_receiver_callback);
|
||||||
|
}
|
||||||
@@ -0,0 +1,72 @@
|
|||||||
|
/*********************************************************************************************************************
|
||||||
|
* TC264 Opensourec Library <20><><EFBFBD><EFBFBD>TC264 <20><>Դ<EFBFBD>⣩<EFBFBD><E2A3A9>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD>ڹٷ<DAB9> SDK <20>ӿڵĵ<DAB5><C4B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Դ<EFBFBD><D4B4>
|
||||||
|
* Copyright (c) 2022 SEEKFREE <20><><EFBFBD>ɿƼ<C9BF>
|
||||||
|
*
|
||||||
|
* <20><><EFBFBD>ļ<EFBFBD><C4BC><EFBFBD> TC264 <20><>Դ<EFBFBD><D4B4><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD>
|
||||||
|
*
|
||||||
|
* TC264 <20><>Դ<EFBFBD><D4B4> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
|
* <20><><EFBFBD><EFBFBD><EFBFBD>Ը<EFBFBD><D4B8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ᷢ<EFBFBD><E1B7A2><EFBFBD><EFBFBD> GPL<50><4C>GNU General Public License<73><65><EFBFBD><EFBFBD> GNUͨ<55>ù<EFBFBD><C3B9><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>֤<EFBFBD><D6A4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
|
* <20><> GPL <20>ĵ<EFBFBD>3<EFBFBD>棨<EFBFBD><E6A3A8> GPL3.0<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ѡ<EFBFBD><EFBFBD><EFBFBD>ģ<EFBFBD><EFBFBD>κκ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>İ汾<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>·<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>/<2F><><EFBFBD><EFBFBD><DEB8><EFBFBD>
|
||||||
|
*
|
||||||
|
* <20><><EFBFBD><EFBFBD>Դ<EFBFBD><D4B4><EFBFBD>ķ<EFBFBD><C4B7><EFBFBD><EFBFBD><EFBFBD>ϣ<EFBFBD><CFA3><EFBFBD><EFBFBD><EFBFBD>ܷ<EFBFBD><DCB7><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ã<EFBFBD><C3A3><EFBFBD><EFBFBD><EFBFBD>δ<EFBFBD><CEB4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>κεı<CEB5>֤
|
||||||
|
* <20><><EFBFBD><EFBFBD>û<EFBFBD><C3BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ի<EFBFBD><D4BB>ʺ<EFBFBD><CABA>ض<EFBFBD><D8B6><EFBFBD>;<EFBFBD>ı<EFBFBD>֤
|
||||||
|
* <20><><EFBFBD><EFBFBD>ϸ<EFBFBD><CFB8><EFBFBD><EFBFBD><EFBFBD>μ<EFBFBD> GPL
|
||||||
|
*
|
||||||
|
* <20><>Ӧ<EFBFBD><D3A6><EFBFBD><EFBFBD><EFBFBD>յ<EFBFBD><D5B5><EFBFBD><EFBFBD><EFBFBD>Դ<EFBFBD><D4B4><EFBFBD><EFBFBD>ͬʱ<CDAC>յ<EFBFBD>һ<EFBFBD><D2BB> GPL <20>ĸ<EFBFBD><C4B8><EFBFBD>
|
||||||
|
* <20><><EFBFBD><EFBFBD>û<EFBFBD>У<EFBFBD><D0A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><https://www.gnu.org/licenses/>
|
||||||
|
*
|
||||||
|
* <20><><EFBFBD><EFBFBD>ע<EFBFBD><D7A2><EFBFBD><EFBFBD>
|
||||||
|
* <20><><EFBFBD><EFBFBD>Դ<EFBFBD><D4B4>ʹ<EFBFBD><CAB9> GPL3.0 <20><>Դ<EFBFBD><D4B4><EFBFBD><EFBFBD>֤Э<D6A4><D0AD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA><EFBFBD>İ汾
|
||||||
|
* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ӣ<EFBFBD>İ<EFBFBD><C4B0><EFBFBD> libraries/doc <20>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD>µ<EFBFBD> GPL3_permission_statement.txt <20>ļ<EFBFBD><C4BC><EFBFBD>
|
||||||
|
* <20><><EFBFBD><EFBFBD>֤<EFBFBD><D6A4><EFBFBD><EFBFBD><EFBFBD><EFBFBD> libraries <20>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD>µ<EFBFBD> LICENSE <20>ļ<EFBFBD>
|
||||||
|
* <20><>ӭ<EFBFBD><D3AD>λʹ<CEBB>ò<EFBFBD><C3B2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><DEB8><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD>뱣<EFBFBD><EBB1A3><EFBFBD><EFBFBD><EFBFBD>ɿƼ<C9BF><C6BC>İ<EFBFBD>Ȩ<EFBFBD><C8A8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
|
*
|
||||||
|
* <20>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD><EFBFBD> zf_device_uart_receiver
|
||||||
|
* <20><>˾<EFBFBD><CBBE><EFBFBD><EFBFBD> <20>ɶ<EFBFBD><C9B6><EFBFBD><EFBFBD>ɿƼ<C9BF><C6BC><EFBFBD><EFBFBD><EFBFBD>˾
|
||||||
|
* <20>汾<EFBFBD><E6B1BE>Ϣ <20>鿴 libraries/doc <20>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD><EFBFBD> version <20>ļ<EFBFBD> <20>汾˵<E6B1BE><CBB5>
|
||||||
|
* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ADS v1.9.20
|
||||||
|
* <20><><EFBFBD><EFBFBD>ƽ̨ TC264D
|
||||||
|
* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> https://seekfree.taobao.com/
|
||||||
|
*
|
||||||
|
* <20>ļ<DEB8>¼
|
||||||
|
* <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><>ע
|
||||||
|
* 2022-11-04 JKS first version
|
||||||
|
********************************************************************************************************************/
|
||||||
|
/*********************************************************************************************************************
|
||||||
|
* <20><><EFBFBD>߶<EFBFBD><DFB6>壺
|
||||||
|
* ------------------------------------
|
||||||
|
* ģ<><C4A3><EFBFBD>ܽ<EFBFBD> <20><>Ƭ<EFBFBD><C6AC><EFBFBD>ܽ<EFBFBD>
|
||||||
|
* TXD <20>鿴 zf_device_uart_receiver.h <20><> UART_RECEVIER_RX_PIN <20>궨<EFBFBD><EAB6A8>
|
||||||
|
* GND <20><>Դ<EFBFBD><D4B4>
|
||||||
|
* 5V 5V<35><56>Դ
|
||||||
|
* ------------------------------------
|
||||||
|
********************************************************************************************************************/
|
||||||
|
#ifndef _zf_device_uart_receiver_h
|
||||||
|
#define _zf_device_uart_receiver_h
|
||||||
|
|
||||||
|
#include "zf_common_typedef.h"
|
||||||
|
|
||||||
|
#define UART_RECEVIER_UART_INDEX UART_2 // <20><><EFBFBD>崮<EFBFBD>ڽ<EFBFBD><DABD>ջ<EFBFBD>ʹ<EFBFBD>õĴ<C3B5><C4B4><EFBFBD>
|
||||||
|
#define UART_RECEVIER_TX_PIN UART2_TX_P10_5 // ң<><D2A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ջ<EFBFBD>û<EFBFBD><C3BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ţ<EFBFBD><C5A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڴ<EFBFBD><DAB4>ڳ<EFBFBD>ʼ<EFBFBD><CABC>ʱռλʹ<CEBB><CAB9>
|
||||||
|
#define UART_RECEVIER_RX_PIN UART2_RX_P10_6 // <20><><EFBFBD>ڽ<EFBFBD><DABD>ջ<EFBFBD><D5BB><EFBFBD>TX<54><58><EFBFBD><EFBFBD> <20><><EFBFBD>ӵ<EFBFBD>Ƭ<EFBFBD><C6AC><EFBFBD><EFBFBD>RX<52><58><EFBFBD><EFBFBD>
|
||||||
|
#define SBUS_UART_BAUDRATE (100000) // ָ<><D6B8> SBUS <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʹ<EFBFBD>õĵĴ<C4B5><C4B4>ڲ<EFBFBD><DAB2><EFBFBD><EFBFBD><EFBFBD> (<28>û<EFBFBD><C3BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>)
|
||||||
|
#define UART_RECEVIER_CHANNEL_NUM ( 6 ) // <20><><EFBFBD><EFBFBD>ң<EFBFBD><D2A3><EFBFBD><EFBFBD>ͨ<EFBFBD><CDA8><EFBFBD><EFBFBD><EFBFBD><EFBFBD> (<28>û<EFBFBD><C3BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>)
|
||||||
|
|
||||||
|
#define REV_DATA_LEN ( 25 ) // SBUS֡<53><D6A1>
|
||||||
|
#define FRAME_STAR ( 0X0F ) // ֡ͷ<D6A1><CDB7>Ϣ
|
||||||
|
#define FRAME_END ( 0X00 ) // ֡β<D6A1><CEB2>Ϣ
|
||||||
|
#define SBUS_NORMAL_STATE ( 0X03 ) // <20><><EFBFBD><EFBFBD>״̬
|
||||||
|
#define SBUS_ABNORMAL_STATE ( 0X0F ) // ʧ<><CAA7>״̬
|
||||||
|
|
||||||
|
typedef struct
|
||||||
|
{
|
||||||
|
uint16 channel[UART_RECEVIER_CHANNEL_NUM]; // CH1-CH6ͨ<36><CDA8><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
|
uint8 state; // ң<><D2A3><EFBFBD><EFBFBD>״̬(1<><31>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾʧ<CABE><CAA7>)
|
||||||
|
uint8 finsh_flag; // 1<><31><EFBFBD><EFBFBD>ʾ<EFBFBD>ɹ<EFBFBD><C9B9><EFBFBD><EFBFBD>յ<EFBFBD>һ֡ң<D6A1><D2A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
|
}uart_receiver_struct;
|
||||||
|
|
||||||
|
extern uart_receiver_struct uart_receiver; // <20><><EFBFBD>ڽ<EFBFBD><DABD>ջ<EFBFBD>ͨ<EFBFBD><CDA8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>״̬
|
||||||
|
|
||||||
|
void uart_receiver_init(void);
|
||||||
|
|
||||||
|
#endif
|
||||||
@@ -404,6 +404,55 @@ void uart_rx_interrupt (uart_index_enum uart_n, uint32 status)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//-------------------------------------------------------------------------------------------------------------------
|
||||||
|
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> sbus<75><73>ʼ<EFBFBD><CABC>
|
||||||
|
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> uartn <20><><EFBFBD><EFBFBD>ͨ<EFBFBD><CDA8>(UART_0,UART_1,UART_2,UART_3)
|
||||||
|
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> baud <20><><EFBFBD>ڲ<EFBFBD><DAB2><EFBFBD><EFBFBD><EFBFBD>
|
||||||
|
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> tx_pin <20><><EFBFBD>ڷ<EFBFBD><DAB7><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ź<EFBFBD>
|
||||||
|
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> rx_pin <20><><EFBFBD>ڽ<EFBFBD><DABD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ź<EFBFBD>
|
||||||
|
// <20><><EFBFBD>ز<EFBFBD><D8B2><EFBFBD> void
|
||||||
|
// ʹ<><CAB9>ʾ<EFBFBD><CABE> uart_sbus_init(UART_2, 100000, UART2_TX_P10_5, UART2_RX_P10_6);
|
||||||
|
// <20><>ע<EFBFBD><D7A2>Ϣ
|
||||||
|
//-------------------------------------------------------------------------------------------------------------------
|
||||||
|
void uart_sbus_init (uart_index_enum uartn, uint32 baud, uart_tx_pin_enum tx_pin, uart_rx_pin_enum rx_pin)
|
||||||
|
{
|
||||||
|
|
||||||
|
boolean interrupt_state = disableInterrupts();
|
||||||
|
|
||||||
|
volatile Ifx_ASCLIN *moudle = IfxAsclin_getAddress((IfxAsclin_Index)uartn);
|
||||||
|
|
||||||
|
IfxAsclin_Asc_initModuleConfig(&uart_config, moudle); // <20><>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ýṹ<C3BD><E1B9B9>
|
||||||
|
|
||||||
|
uart_set_buffer(uartn); // <20><><EFBFBD>û<EFBFBD><C3BB><EFBFBD><EFBFBD><EFBFBD>
|
||||||
|
|
||||||
|
uart_set_interrupt_priority(uartn); // <20><><EFBFBD><EFBFBD><EFBFBD>ж<EFBFBD><D0B6><EFBFBD><EFBFBD>ȼ<EFBFBD>
|
||||||
|
|
||||||
|
uart_config.clockSource = IfxAsclin_ClockSource_ascFastClock; // ʹ<>ø<EFBFBD><C3B8><EFBFBD>ʱ<EFBFBD><CAB1> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>6.25M
|
||||||
|
uart_config.baudrate.prescaler = 4;
|
||||||
|
uart_config.baudrate.baudrate = (float32)baud;
|
||||||
|
uart_config.baudrate.oversampling = IfxAsclin_OversamplingFactor_8;
|
||||||
|
|
||||||
|
uart_config.frame.stopBit = IfxAsclin_StopBit_2; //ֹͣλ
|
||||||
|
uart_config.frame.parityType = IfxAsclin_ParityType_even; //żУ<C5BC><D0A3>
|
||||||
|
uart_config.frame.dataLength = IfxAsclin_DataLength_8;
|
||||||
|
uart_config.frame.parityBit = TRUE; //<2F><><EFBFBD><EFBFBD>У<EFBFBD><D0A3>
|
||||||
|
|
||||||
|
IfxAsclin_Asc_Pins pins; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
|
pins.cts = NULL;
|
||||||
|
pins.rts = NULL;
|
||||||
|
uart_mux(uartn, tx_pin, rx_pin, (uint32 *)&pins.tx, (uint32 *)&pins.rx);
|
||||||
|
pins.rxMode = IfxPort_InputMode_pullUp;
|
||||||
|
pins.txMode = IfxPort_OutputMode_pushPull;
|
||||||
|
pins.pinDriver = IfxPort_PadDriver_cmosAutomotiveSpeed1;
|
||||||
|
uart_config.pins = &pins;
|
||||||
|
|
||||||
|
IfxAsclin_Asc_initModule(uart_get_handle(uartn), &uart_config);
|
||||||
|
uart_rx_interrupt(uartn, 1);
|
||||||
|
uart_tx_interrupt(uartn, 0);
|
||||||
|
restoreInterrupts(interrupt_state);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
//-------------------------------------------------------------------------------------------------------------------
|
//-------------------------------------------------------------------------------------------------------------------
|
||||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>ڳ<EFBFBD>ʼ<EFBFBD><CABC>
|
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>ڳ<EFBFBD>ʼ<EFBFBD><CABC>
|
||||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> uartn <20><><EFBFBD><EFBFBD>ģ<EFBFBD><C4A3><EFBFBD><EFBFBD>(UART_0,UART_1,UART_2,UART_3)
|
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> uartn <20><><EFBFBD><EFBFBD>ģ<EFBFBD><C4A3><EFBFBD><EFBFBD>(UART_0,UART_1,UART_2,UART_3)
|
||||||
|
|||||||
@@ -125,6 +125,7 @@ uint8 uart_query_byte (uart_index_enum uartn, uint8 *dat);
|
|||||||
void uart_tx_interrupt (uart_index_enum uartn, uint32 status);
|
void uart_tx_interrupt (uart_index_enum uartn, uint32 status);
|
||||||
void uart_rx_interrupt (uart_index_enum uartn, uint32 status);
|
void uart_rx_interrupt (uart_index_enum uartn, uint32 status);
|
||||||
|
|
||||||
|
void uart_sbus_init (uart_index_enum uartn, uint32 baud, uart_tx_pin_enum tx_pin, uart_rx_pin_enum rx_pin);
|
||||||
void uart_init (uart_index_enum uartn, uint32 baud, uart_tx_pin_enum tx_pin, uart_rx_pin_enum rx_pin);
|
void uart_init (uart_index_enum uartn, uint32 baud, uart_tx_pin_enum tx_pin, uart_rx_pin_enum rx_pin);
|
||||||
//====================================================<3D><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>====================================================
|
//====================================================<3D><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>====================================================
|
||||||
|
|
||||||
|
|||||||
@@ -1,3 +1,6 @@
|
|||||||
|
V3.2.8
|
||||||
|
<20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͫ<EFBFBD><CDAB>MCU<43>汾<EFBFBD><E6B1BE><EFBFBD><EFBFBD>
|
||||||
|
<20><><EFBFBD><EFBFBD>SBUSң<53><D2A3><EFBFBD><EFBFBD><EFBFBD>ײ<EFBFBD><D7B2><EFBFBD><EFBFBD><EFBFBD>
|
||||||
V3.2.7
|
V3.2.7
|
||||||
<20><><EFBFBD><EFBFBD>RTK "D" <20><>ͷЭ<CDB7><D0AD>
|
<20><><EFBFBD><EFBFBD>RTK "D" <20><>ͷЭ<CDB7><D0AD>
|
||||||
<20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ǻ<EFBFBD>ת<EFBFBD><D7AA><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>ֹ<EFBFBD><D6B9><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
<20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ǻ<EFBFBD>ת<EFBFBD><D7AA><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>ֹ<EFBFBD><D6B9><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
|
|||||||
@@ -100,6 +100,7 @@
|
|||||||
#include "zf_device_tft180.h"
|
#include "zf_device_tft180.h"
|
||||||
#include "zf_device_tsl1401.h"
|
#include "zf_device_tsl1401.h"
|
||||||
#include "zf_device_type.h"
|
#include "zf_device_type.h"
|
||||||
|
#include "zf_device_uart_receiver.h"
|
||||||
#include "zf_device_virtual_oscilloscope.h"
|
#include "zf_device_virtual_oscilloscope.h"
|
||||||
#include "zf_device_wifi_uart.h"
|
#include "zf_device_wifi_uart.h"
|
||||||
#include "zf_device_wifi_spi.h"
|
#include "zf_device_wifi_spi.h"
|
||||||
|
|||||||
Binary file not shown.
@@ -31,6 +31,7 @@
|
|||||||
* <20>ļ<DEB8>¼
|
* <20>ļ<DEB8>¼
|
||||||
* <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><>ע
|
* <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><>ע
|
||||||
* 2022-09-15 pudding first version
|
* 2022-09-15 pudding first version
|
||||||
|
* 2024-02-02 pudding <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͫ<EFBFBD><CDAB>̬<EFBFBD>⺯<EFBFBD><E2BAAF>
|
||||||
********************************************************************************************************************/
|
********************************************************************************************************************/
|
||||||
|
|
||||||
#ifndef _zf_device_config_h_
|
#ifndef _zf_device_config_h_
|
||||||
@@ -43,5 +44,10 @@ unsigned char mt9v03x_set_config_sccb (void *soft_iic_obj, short int b
|
|||||||
unsigned char mt9v03x_set_exposure_time_sccb (unsigned short int light);
|
unsigned char mt9v03x_set_exposure_time_sccb (unsigned short int light);
|
||||||
unsigned char mt9v03x_set_reg_sccb (unsigned char addr, unsigned short int data);
|
unsigned char mt9v03x_set_reg_sccb (unsigned char addr, unsigned short int data);
|
||||||
|
|
||||||
|
unsigned char scc8660_set_config_sccb (void *soft_iic_obj, short int buff[10][2]);
|
||||||
|
unsigned char scc8660_set_brightness_sccb (unsigned short int brightness);
|
||||||
|
unsigned char scc8660_set_manual_wb_sccb (unsigned short int manual_wb);
|
||||||
|
unsigned char scc8660_set_reg_sccb (unsigned char reg, unsigned short int data);
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|||||||
@@ -31,6 +31,7 @@
|
|||||||
* <20>ļ<DEB8>¼
|
* <20>ļ<DEB8>¼
|
||||||
* <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><>ע
|
* <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><>ע
|
||||||
* 2022-09-15 pudding first version
|
* 2022-09-15 pudding first version
|
||||||
|
* 2024-02-02 pudding <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>MCU<43><55>ͫ<EFBFBD><CDAB><EFBFBD><EFBFBD>
|
||||||
********************************************************************************************************************/
|
********************************************************************************************************************/
|
||||||
/*********************************************************************************************************************
|
/*********************************************************************************************************************
|
||||||
* <20><><EFBFBD>߶<EFBFBD><DFB6>壺
|
* <20><><EFBFBD>߶<EFBFBD><DFB6>壺
|
||||||
@@ -55,9 +56,12 @@
|
|||||||
#include "zf_driver_exti.h"
|
#include "zf_driver_exti.h"
|
||||||
#include "zf_driver_gpio.h"
|
#include "zf_driver_gpio.h"
|
||||||
#include "zf_driver_uart.h"
|
#include "zf_driver_uart.h"
|
||||||
|
#include "zf_driver_soft_iic.h"
|
||||||
#include "zf_device_camera.h"
|
#include "zf_device_camera.h"
|
||||||
#include "zf_device_scc8660.h"
|
|
||||||
#include "zf_device_type.h"
|
#include "zf_device_type.h"
|
||||||
|
#include "zf_device_config.h"
|
||||||
|
|
||||||
|
#include "zf_device_scc8660.h"
|
||||||
|
|
||||||
vuint8 scc8660_finish_flag = 0; // һ<><D2BB>ͼ<EFBFBD><CDBC><EFBFBD>ɼ<EFBFBD><C9BC><EFBFBD><EFBFBD>ɱ<EFBFBD>־λ
|
vuint8 scc8660_finish_flag = 0; // һ<><D2BB>ͼ<EFBFBD><CDBC><EFBFBD>ɼ<EFBFBD><C9BC><EFBFBD><EFBFBD>ɱ<EFBFBD>־λ
|
||||||
IFX_ALIGN(4) uint16 scc8660_image[SCC8660_H][SCC8660_W];
|
IFX_ALIGN(4) uint16 scc8660_image[SCC8660_H][SCC8660_W];
|
||||||
@@ -68,6 +72,7 @@ uint8 scc8660_lost_flag = 1;
|
|||||||
uint8 scc8660_dma_int_num; // <20><>ǰDMA<4D>жϴ<D0B6><CFB4><EFBFBD>
|
uint8 scc8660_dma_int_num; // <20><>ǰDMA<4D>жϴ<D0B6><CFB4><EFBFBD>
|
||||||
uint8 scc8660_dma_init_flag; // <20>Ƿ<EFBFBD><C7B7><EFBFBD>Ҫ<EFBFBD><D2AA><EFBFBD>³<EFBFBD>ʼ<EFBFBD><CABC>
|
uint8 scc8660_dma_init_flag; // <20>Ƿ<EFBFBD><C7B7><EFBFBD>Ҫ<EFBFBD><D2AA><EFBFBD>³<EFBFBD>ʼ<EFBFBD><CABC>
|
||||||
|
|
||||||
|
static scc8660_type_enum scc8660_type;
|
||||||
|
|
||||||
// <20><>Ҫ<EFBFBD><D2AA><EFBFBD>õ<EFBFBD><C3B5><EFBFBD><EFBFBD><EFBFBD>ͷ<EFBFBD><CDB7><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>IJ<DEB8><C4B2><EFBFBD>
|
// <20><>Ҫ<EFBFBD><D2AA><EFBFBD>õ<EFBFBD><C3B5><EFBFBD><EFBFBD><EFBFBD>ͷ<EFBFBD><CDB7><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>IJ<DEB8><C4B2><EFBFBD>
|
||||||
static int16 scc8660_set_confing_buffer[SCC8660_CONFIG_FINISH][2]=
|
static int16 scc8660_set_confing_buffer[SCC8660_CONFIG_FINISH][2]=
|
||||||
@@ -77,7 +82,7 @@ static int16 scc8660_set_confing_buffer[SCC8660_CONFIG_FINISH][2]=
|
|||||||
{SCC8660_AUTO_EXP, SCC8660_AUTO_EXP_DEF}, // <20>Զ<EFBFBD><D4B6>ع<EFBFBD>
|
{SCC8660_AUTO_EXP, SCC8660_AUTO_EXP_DEF}, // <20>Զ<EFBFBD><D4B6>ع<EFBFBD>
|
||||||
{SCC8660_BRIGHT, SCC8660_BRIGHT_DEF}, // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
{SCC8660_BRIGHT, SCC8660_BRIGHT_DEF}, // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
{SCC8660_FPS, SCC8660_FPS_DEF}, // ͼ<><CDBC>֡<EFBFBD><D6A1>
|
{SCC8660_FPS, SCC8660_FPS_DEF}, // ͼ<><CDBC>֡<EFBFBD><D6A1>
|
||||||
{SCC8660_SET_COL, SCC8660_W}, // ͼ<><CDBC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
{SCC8660_SET_COL, SCC8660_W * 4}, // ͼ<><CDBC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
{SCC8660_SET_ROW, SCC8660_H}, // ͼ<><CDBC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
{SCC8660_SET_ROW, SCC8660_H}, // ͼ<><CDBC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
{SCC8660_PCLK_DIV, SCC8660_PCLK_DIV_DEF}, // PCLK<4C><4B>Ƶϵ<C6B5><CFB5>
|
{SCC8660_PCLK_DIV, SCC8660_PCLK_DIV_DEF}, // PCLK<4C><4B>Ƶϵ<C6B5><CFB5>
|
||||||
{SCC8660_PCLK_MODE, SCC8660_PCLK_MODE_DEF}, // PCLKģʽ
|
{SCC8660_PCLK_MODE, SCC8660_PCLK_MODE_DEF}, // PCLKģʽ
|
||||||
@@ -214,71 +219,6 @@ static void scc8660_uart_callback (void)
|
|||||||
fifo_write_element(&camera_receiver_fifo, data);
|
fifo_write_element(&camera_receiver_fifo, data);
|
||||||
}
|
}
|
||||||
|
|
||||||
//-------------------------------------------------------------------------------------------------------------------
|
|
||||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> SCC8660<36><30><EFBFBD><EFBFBD>ͷ<EFBFBD><CDB7><EFBFBD>ж<EFBFBD>
|
|
||||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> void
|
|
||||||
// <20><><EFBFBD>ز<EFBFBD><D8B2><EFBFBD> void
|
|
||||||
// ʹ<><CAB9>ʾ<EFBFBD><CABE> scc8660_vsync_handler();
|
|
||||||
//-------------------------------------------------------------------------------------------------------------------
|
|
||||||
static void scc8660_vsync_handler(void)
|
|
||||||
{
|
|
||||||
exti_flag_clear(SCC8660_VSYNC_PIN);
|
|
||||||
scc8660_dma_int_num = 0;
|
|
||||||
if(scc8660_dma_init_flag || scc8660_lost_flag)
|
|
||||||
{
|
|
||||||
scc8660_dma_init_flag = 0;
|
|
||||||
IfxDma_resetChannel(&MODULE_DMA, SCC8660_DMA_CH);
|
|
||||||
scc8660_link_list_num = dma_init(SCC8660_DMA_CH,
|
|
||||||
SCC8660_DATA_ADD,
|
|
||||||
(uint8 *)scc8660_image[0],
|
|
||||||
SCC8660_PCLK_PIN,
|
|
||||||
EXTI_TRIGGER_RISING,
|
|
||||||
SCC8660_IMAGE_SIZE); // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƶ<EFBFBD><C6B5>300M <20><><EFBFBD><EFBFBD><EFBFBD>ڶ<EFBFBD><DAB6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ΪFALLING
|
|
||||||
dma_enable(SCC8660_DMA_CH);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
if(1 == scc8660_link_list_num)
|
|
||||||
{
|
|
||||||
dma_set_destination(SCC8660_DMA_CH, (uint8 *)scc8660_image[0]); // û<>в<EFBFBD><D0B2><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ӵ<EFBFBD><D3B4><EFBFBD>ģʽ <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ŀ<EFBFBD>ĵ<EFBFBD>ַ
|
|
||||||
}
|
|
||||||
dma_enable(SCC8660_DMA_CH);
|
|
||||||
}
|
|
||||||
scc8660_lost_flag = 1;
|
|
||||||
}
|
|
||||||
|
|
||||||
//-------------------------------------------------------------------------------------------------------------------
|
|
||||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> SCC8660<36><30><EFBFBD><EFBFBD>ͷDMA<4D><41><EFBFBD><EFBFBD><EFBFBD>ж<EFBFBD>
|
|
||||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> void
|
|
||||||
// <20><><EFBFBD>ز<EFBFBD><D8B2><EFBFBD> void
|
|
||||||
// ʹ<><CAB9>ʾ<EFBFBD><CABE> scc8660_dma_handler();
|
|
||||||
//-------------------------------------------------------------------------------------------------------------------
|
|
||||||
static void scc8660_dma_handler(void)
|
|
||||||
{
|
|
||||||
clear_dma_flag(SCC8660_DMA_CH);
|
|
||||||
|
|
||||||
if(IfxDma_getChannelTransactionRequestLost(&MODULE_DMA, SCC8660_DMA_CH)) // ͼ<><CDBC><EFBFBD><EFBFBD>λ<EFBFBD>ж<EFBFBD>
|
|
||||||
{
|
|
||||||
scc8660_finish_flag = 0;
|
|
||||||
dma_disable(SCC8660_DMA_CH);
|
|
||||||
IfxDma_clearChannelTransactionRequestLost(&MODULE_DMA, SCC8660_DMA_CH);
|
|
||||||
scc8660_dma_init_flag = 1;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
scc8660_dma_int_num++;
|
|
||||||
if(scc8660_dma_int_num >= scc8660_link_list_num)
|
|
||||||
{
|
|
||||||
// <20>ɼ<EFBFBD><C9BC><EFBFBD><EFBFBD><EFBFBD>
|
|
||||||
// һ<><D2BB>ͼ<EFBFBD><CDBC><EFBFBD>Ӳɼ<D3B2><C9BC><EFBFBD>ʼ<EFBFBD><CABC><EFBFBD>ɼ<EFBFBD><C9BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ3.8MS<EFBFBD><EFBFBD><EFBFBD><EFBFBD>(50FPS<50><53>188*120<32>ֱ<EFBFBD><D6B1><EFBFBD>)
|
|
||||||
scc8660_dma_int_num = 0;
|
|
||||||
scc8660_lost_flag = 0;
|
|
||||||
scc8660_finish_flag = 1;
|
|
||||||
dma_disable(SCC8660_DMA_CH);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
//-------------------------------------------------------------------------------------------------------------------
|
//-------------------------------------------------------------------------------------------------------------------
|
||||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD>ͷ ID
|
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD>ͷ ID
|
||||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> void
|
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> void
|
||||||
@@ -390,38 +330,46 @@ uint16 scc8660_get_version (void)
|
|||||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͼ<EFBFBD><CDBC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͼ<EFBFBD><CDBC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> data <20><>Ҫ<EFBFBD><D2AA><EFBFBD>õ<EFBFBD><C3B5><EFBFBD><EFBFBD><EFBFBD>ֵ
|
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> data <20><>Ҫ<EFBFBD><D2AA><EFBFBD>õ<EFBFBD><C3B5><EFBFBD><EFBFBD><EFBFBD>ֵ
|
||||||
// <20><><EFBFBD>ز<EFBFBD><D8B2><EFBFBD> uint8 1-ʧ<><CAA7> 0-<2D>ɹ<EFBFBD>
|
// <20><><EFBFBD>ز<EFBFBD><D8B2><EFBFBD> uint8 1-ʧ<><CAA7> 0-<2D>ɹ<EFBFBD>
|
||||||
// ʹ<><CAB9>ʾ<EFBFBD><CABE> scc8660_set_bright(data);
|
// ʹ<><CAB9>ʾ<EFBFBD><CABE> scc8660_set_brightness(data);
|
||||||
// <20><>ע<EFBFBD><D7A2>Ϣ <20><><EFBFBD>øú<C3B8><C3BA><EFBFBD>ǰ<EFBFBD><C7B0><EFBFBD>ȳ<EFBFBD>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͷ<EFBFBD><CDB7><EFBFBD>ô<EFBFBD><C3B4><EFBFBD> ͨ<><CDA8><EFBFBD>ú<EFBFBD><C3BA><EFBFBD><EFBFBD><EFBFBD><EFBFBD>õIJ<C3B5><C4B2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ᱻ51<35><31>Ƭ<EFBFBD><C6AC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
// <20><>ע<EFBFBD><D7A2>Ϣ <20><><EFBFBD>øú<C3B8><C3BA><EFBFBD>ǰ<EFBFBD><C7B0><EFBFBD>ȳ<EFBFBD>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͷ<EFBFBD><CDB7><EFBFBD>ô<EFBFBD><C3B4><EFBFBD> ͨ<><CDA8><EFBFBD>ú<EFBFBD><C3BA><EFBFBD><EFBFBD><EFBFBD><EFBFBD>õIJ<C3B5><C4B2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ᱻ51<35><31>Ƭ<EFBFBD><C6AC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
//-------------------------------------------------------------------------------------------------------------------
|
//-------------------------------------------------------------------------------------------------------------------
|
||||||
uint8 scc8660_set_bright (uint16 data)
|
uint8 scc8660_set_brightness (uint16 data)
|
||||||
{
|
{
|
||||||
uint8 return_state = 0;
|
uint8 return_state = 0;
|
||||||
uint8 uart_buffer[4];
|
|
||||||
uint16 temp;
|
|
||||||
uint16 timeout_count = 0;
|
|
||||||
uint32 uart_buffer_index = 0;
|
|
||||||
|
|
||||||
uart_buffer[0] = 0xA5;
|
if(SCC8660_UART == scc8660_type)
|
||||||
uart_buffer[1] = SCC8660_SET_BRIGHT;
|
|
||||||
uart_buffer[2] = data >> 8;
|
|
||||||
uart_buffer[3] = (uint8)data;
|
|
||||||
|
|
||||||
uart_write_buffer(SCC8660_COF_UART, uart_buffer, 4);
|
|
||||||
|
|
||||||
do
|
|
||||||
{
|
{
|
||||||
if(3 <= fifo_used(&camera_receiver_fifo))
|
uint8 uart_buffer[4];
|
||||||
|
uint16 temp;
|
||||||
|
uint16 timeout_count = 0;
|
||||||
|
uint32 uart_buffer_index = 0;
|
||||||
|
|
||||||
|
uart_buffer[0] = 0xA5;
|
||||||
|
uart_buffer[1] = SCC8660_SET_BRIGHT;
|
||||||
|
uart_buffer[2] = data >> 8;
|
||||||
|
uart_buffer[3] = (uint8)data;
|
||||||
|
|
||||||
|
uart_write_buffer(SCC8660_COF_UART, uart_buffer, 4);
|
||||||
|
|
||||||
|
do
|
||||||
{
|
{
|
||||||
uart_buffer_index = 3;
|
if(3 <= fifo_used(&camera_receiver_fifo))
|
||||||
fifo_read_buffer(&camera_receiver_fifo, uart_buffer, &uart_buffer_index, FIFO_READ_AND_CLEAN);
|
{
|
||||||
temp = uart_buffer[1] << 8 | uart_buffer[2];
|
uart_buffer_index = 3;
|
||||||
break;
|
fifo_read_buffer(&camera_receiver_fifo, uart_buffer, &uart_buffer_index, FIFO_READ_AND_CLEAN);
|
||||||
|
temp = uart_buffer[1] << 8 | uart_buffer[2];
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
system_delay_ms(1);
|
||||||
|
}while(SCC8660_INIT_TIMEOUT > timeout_count ++);
|
||||||
|
if((temp != data) || (SCC8660_INIT_TIMEOUT <= timeout_count))
|
||||||
|
{
|
||||||
|
return_state = 1;
|
||||||
}
|
}
|
||||||
system_delay_ms(1);
|
}
|
||||||
}while(SCC8660_INIT_TIMEOUT > timeout_count ++);
|
else
|
||||||
if((temp != data) || (SCC8660_INIT_TIMEOUT <= timeout_count))
|
|
||||||
{
|
{
|
||||||
return_state = 1;
|
return_state = scc8660_set_brightness_sccb(data);
|
||||||
}
|
}
|
||||||
return return_state;
|
return return_state;
|
||||||
}
|
}
|
||||||
@@ -436,32 +384,40 @@ uint8 scc8660_set_bright (uint16 data)
|
|||||||
uint8 scc8660_set_white_balance (uint16 data)
|
uint8 scc8660_set_white_balance (uint16 data)
|
||||||
{
|
{
|
||||||
uint8 return_state = 0;
|
uint8 return_state = 0;
|
||||||
uint8 uart_buffer[4];
|
|
||||||
uint16 temp;
|
|
||||||
uint16 timeout_count = 0;
|
|
||||||
uint32 uart_buffer_index = 0;
|
|
||||||
|
|
||||||
uart_buffer[0] = 0xA5;
|
if(SCC8660_UART == scc8660_type)
|
||||||
uart_buffer[1] = SCC8660_SET_MANUAL_WB;
|
|
||||||
uart_buffer[2] = data >> 8;
|
|
||||||
uart_buffer[3] = (uint8)data;
|
|
||||||
|
|
||||||
uart_write_buffer(SCC8660_COF_UART, uart_buffer, 4);
|
|
||||||
|
|
||||||
do
|
|
||||||
{
|
{
|
||||||
if(3 <= fifo_used(&camera_receiver_fifo))
|
uint8 uart_buffer[4];
|
||||||
|
uint16 temp;
|
||||||
|
uint16 timeout_count = 0;
|
||||||
|
uint32 uart_buffer_index = 0;
|
||||||
|
|
||||||
|
uart_buffer[0] = 0xA5;
|
||||||
|
uart_buffer[1] = SCC8660_SET_MANUAL_WB;
|
||||||
|
uart_buffer[2] = data >> 8;
|
||||||
|
uart_buffer[3] = (uint8)data;
|
||||||
|
|
||||||
|
uart_write_buffer(SCC8660_COF_UART, uart_buffer, 4);
|
||||||
|
|
||||||
|
do
|
||||||
{
|
{
|
||||||
uart_buffer_index = 3;
|
if(3 <= fifo_used(&camera_receiver_fifo))
|
||||||
fifo_read_buffer(&camera_receiver_fifo, uart_buffer, &uart_buffer_index, FIFO_READ_AND_CLEAN);
|
{
|
||||||
temp = uart_buffer[1] << 8 | uart_buffer[2];
|
uart_buffer_index = 3;
|
||||||
break;
|
fifo_read_buffer(&camera_receiver_fifo, uart_buffer, &uart_buffer_index, FIFO_READ_AND_CLEAN);
|
||||||
|
temp = uart_buffer[1] << 8 | uart_buffer[2];
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
system_delay_ms(1);
|
||||||
|
}while(SCC8660_INIT_TIMEOUT > timeout_count ++);
|
||||||
|
if((temp != data) || (SCC8660_INIT_TIMEOUT <= timeout_count))
|
||||||
|
{
|
||||||
|
return_state = 1;
|
||||||
}
|
}
|
||||||
system_delay_ms(1);
|
}
|
||||||
}while(SCC8660_INIT_TIMEOUT > timeout_count ++);
|
else
|
||||||
if((temp != data) || (SCC8660_INIT_TIMEOUT <= timeout_count))
|
|
||||||
{
|
{
|
||||||
return_state = 1;
|
return_state = scc8660_set_manual_wb_sccb(data);
|
||||||
}
|
}
|
||||||
return return_state;
|
return return_state;
|
||||||
}
|
}
|
||||||
@@ -477,43 +433,117 @@ uint8 scc8660_set_white_balance (uint16 data)
|
|||||||
uint8 scc8660_set_reg (uint8 addr, uint16 data)
|
uint8 scc8660_set_reg (uint8 addr, uint16 data)
|
||||||
{
|
{
|
||||||
uint8 return_state = 0;
|
uint8 return_state = 0;
|
||||||
uint8 uart_buffer[4];
|
|
||||||
uint16 temp;
|
|
||||||
uint16 timeout_count = 0;
|
|
||||||
uint32 uart_buffer_index = 0;
|
|
||||||
|
|
||||||
uart_buffer[0] = 0xA5;
|
if(SCC8660_UART == scc8660_type)
|
||||||
uart_buffer[1] = SCC8660_SET_REG_ADDR;
|
|
||||||
uart_buffer[2] = 0x00;
|
|
||||||
uart_buffer[3] = (uint8)addr;
|
|
||||||
uart_write_buffer(SCC8660_COF_UART, uart_buffer, 4);
|
|
||||||
|
|
||||||
system_delay_ms(10);
|
|
||||||
uart_buffer[0] = 0xA5;
|
|
||||||
uart_buffer[1] = SCC8660_SET_REG_DATA;
|
|
||||||
temp = data;
|
|
||||||
uart_buffer[2] = temp >> 8;
|
|
||||||
uart_buffer[3] = (uint8)temp;
|
|
||||||
uart_write_buffer(SCC8660_COF_UART, uart_buffer, 4);
|
|
||||||
|
|
||||||
do
|
|
||||||
{
|
{
|
||||||
if(3 <= fifo_used(&camera_receiver_fifo))
|
uint8 uart_buffer[4];
|
||||||
|
uint16 temp;
|
||||||
|
uint16 timeout_count = 0;
|
||||||
|
uint32 uart_buffer_index = 0;
|
||||||
|
|
||||||
|
uart_buffer[0] = 0xA5;
|
||||||
|
uart_buffer[1] = SCC8660_SET_REG_ADDR;
|
||||||
|
uart_buffer[2] = 0x00;
|
||||||
|
uart_buffer[3] = (uint8)addr;
|
||||||
|
uart_write_buffer(SCC8660_COF_UART, uart_buffer, 4);
|
||||||
|
|
||||||
|
system_delay_ms(10);
|
||||||
|
uart_buffer[0] = 0xA5;
|
||||||
|
uart_buffer[1] = SCC8660_SET_REG_DATA;
|
||||||
|
temp = data;
|
||||||
|
uart_buffer[2] = temp >> 8;
|
||||||
|
uart_buffer[3] = (uint8)temp;
|
||||||
|
uart_write_buffer(SCC8660_COF_UART, uart_buffer, 4);
|
||||||
|
|
||||||
|
do
|
||||||
{
|
{
|
||||||
uart_buffer_index = 3;
|
if(3 <= fifo_used(&camera_receiver_fifo))
|
||||||
fifo_read_buffer(&camera_receiver_fifo, uart_buffer, &uart_buffer_index, FIFO_READ_AND_CLEAN);
|
{
|
||||||
temp = uart_buffer[1] << 8 | uart_buffer[2];
|
uart_buffer_index = 3;
|
||||||
break;
|
fifo_read_buffer(&camera_receiver_fifo, uart_buffer, &uart_buffer_index, FIFO_READ_AND_CLEAN);
|
||||||
|
temp = uart_buffer[1] << 8 | uart_buffer[2];
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
system_delay_ms(1);
|
||||||
|
}while(SCC8660_INIT_TIMEOUT > timeout_count ++);
|
||||||
|
if((temp != data) || (SCC8660_INIT_TIMEOUT <= timeout_count))
|
||||||
|
{
|
||||||
|
return_state = 1;
|
||||||
}
|
}
|
||||||
system_delay_ms(1);
|
|
||||||
}while(SCC8660_INIT_TIMEOUT > timeout_count ++);
|
}
|
||||||
if((temp != data) || (SCC8660_INIT_TIMEOUT <= timeout_count))
|
else
|
||||||
{
|
{
|
||||||
return_state = 1;
|
return_state = scc8660_set_reg_sccb(addr, data);
|
||||||
}
|
}
|
||||||
return return_state;
|
return return_state;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//-------------------------------------------------------------------------------------------------------------------
|
||||||
|
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> SCC8660<36><30><EFBFBD><EFBFBD>ͷ<EFBFBD><CDB7><EFBFBD>ж<EFBFBD>
|
||||||
|
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> void
|
||||||
|
// <20><><EFBFBD>ز<EFBFBD><D8B2><EFBFBD> void
|
||||||
|
// ʹ<><CAB9>ʾ<EFBFBD><CABE> scc8660_vsync_handler();
|
||||||
|
//-------------------------------------------------------------------------------------------------------------------
|
||||||
|
static void scc8660_vsync_handler(void)
|
||||||
|
{
|
||||||
|
exti_flag_clear(SCC8660_VSYNC_PIN);
|
||||||
|
scc8660_dma_int_num = 0;
|
||||||
|
if(scc8660_dma_init_flag || scc8660_lost_flag)
|
||||||
|
{
|
||||||
|
scc8660_dma_init_flag = 0;
|
||||||
|
IfxDma_resetChannel(&MODULE_DMA, SCC8660_DMA_CH);
|
||||||
|
scc8660_link_list_num = dma_init(SCC8660_DMA_CH,
|
||||||
|
SCC8660_DATA_ADD,
|
||||||
|
(uint8 *)scc8660_image[0],
|
||||||
|
SCC8660_PCLK_PIN,
|
||||||
|
EXTI_TRIGGER_RISING,
|
||||||
|
SCC8660_IMAGE_SIZE);
|
||||||
|
dma_enable(SCC8660_DMA_CH);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
if(1 == scc8660_link_list_num)
|
||||||
|
{
|
||||||
|
dma_set_destination(SCC8660_DMA_CH, (uint8 *)scc8660_image[0]); // û<>в<EFBFBD><D0B2><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ӵ<EFBFBD><D3B4><EFBFBD>ģʽ <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ŀ<EFBFBD>ĵ<EFBFBD>ַ
|
||||||
|
}
|
||||||
|
dma_enable(SCC8660_DMA_CH);
|
||||||
|
}
|
||||||
|
scc8660_lost_flag = 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
//-------------------------------------------------------------------------------------------------------------------
|
||||||
|
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> SCC8660<36><30><EFBFBD><EFBFBD>ͷDMA<4D><41><EFBFBD><EFBFBD><EFBFBD>ж<EFBFBD>
|
||||||
|
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> void
|
||||||
|
// <20><><EFBFBD>ز<EFBFBD><D8B2><EFBFBD> void
|
||||||
|
// ʹ<><CAB9>ʾ<EFBFBD><CABE> scc8660_dma_handler();
|
||||||
|
//-------------------------------------------------------------------------------------------------------------------
|
||||||
|
static void scc8660_dma_handler(void)
|
||||||
|
{
|
||||||
|
clear_dma_flag(SCC8660_DMA_CH);
|
||||||
|
|
||||||
|
if(IfxDma_getChannelTransactionRequestLost(&MODULE_DMA, SCC8660_DMA_CH)) // ͼ<><CDBC><EFBFBD><EFBFBD>λ<EFBFBD>ж<EFBFBD>
|
||||||
|
{
|
||||||
|
scc8660_finish_flag = 0;
|
||||||
|
dma_disable(SCC8660_DMA_CH);
|
||||||
|
IfxDma_clearChannelTransactionRequestLost(&MODULE_DMA, SCC8660_DMA_CH);
|
||||||
|
scc8660_dma_init_flag = 1;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
scc8660_dma_int_num++;
|
||||||
|
if(scc8660_dma_int_num >= scc8660_link_list_num)
|
||||||
|
{
|
||||||
|
// <20>ɼ<EFBFBD><C9BC><EFBFBD><EFBFBD><EFBFBD>
|
||||||
|
// һ<><D2BB>ͼ<EFBFBD><CDBC><EFBFBD>Ӳɼ<D3B2><C9BC><EFBFBD>ʼ<EFBFBD><CABC><EFBFBD>ɼ<EFBFBD><C9BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ3.8MS<EFBFBD><EFBFBD><EFBFBD><EFBFBD>(50FPS<50><53>188*120<32>ֱ<EFBFBD><D6B1><EFBFBD>)
|
||||||
|
scc8660_dma_int_num = 0;
|
||||||
|
scc8660_lost_flag = 0;
|
||||||
|
scc8660_finish_flag = 1;
|
||||||
|
dma_disable(SCC8660_DMA_CH);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
//-------------------------------------------------------------------------------------------------------------------
|
//-------------------------------------------------------------------------------------------------------------------
|
||||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> SCC8660 <20><><EFBFBD><EFBFBD>ͷ<EFBFBD><CDB7>ʼ<EFBFBD><CABC>
|
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> SCC8660 <20><><EFBFBD><EFBFBD>ͷ<EFBFBD><CDB7>ʼ<EFBFBD><CABC>
|
||||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> void
|
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> void
|
||||||
@@ -524,51 +554,54 @@ uint8 scc8660_set_reg (uint8 addr, uint16 data)
|
|||||||
uint8 scc8660_init (void)
|
uint8 scc8660_init (void)
|
||||||
{
|
{
|
||||||
uint8 return_state = 0;
|
uint8 return_state = 0;
|
||||||
uint16 scc8660_version = 0;
|
soft_iic_info_struct scc8660_iic_struct;
|
||||||
|
|
||||||
|
// <20><>ʼ<EFBFBD><CABC>֮ǰ<D6AE><C7B0><EFBFBD>߳<EFBFBD><DFB3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
gpio_init(P02_0, GPO, GPIO_HIGH, GPO_PUSH_PULL);
|
gpio_init(P02_0, GPO, GPIO_HIGH, GPO_PUSH_PULL);
|
||||||
gpio_init(P02_1, GPO, GPIO_HIGH, GPO_PUSH_PULL);
|
gpio_init(P02_1, GPO, GPIO_HIGH, GPO_PUSH_PULL);
|
||||||
|
|
||||||
// <20><>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͷ
|
|
||||||
uart_init(SCC8660_COF_UART, SCC8660_COF_BAUR, SCC8660_COF_UART_RX, SCC8660_COF_UART_TX);
|
|
||||||
uart_rx_interrupt(SCC8660_COF_UART, 1);
|
|
||||||
|
|
||||||
system_delay_ms(200);
|
|
||||||
|
|
||||||
set_camera_type(CAMERA_COLOR, scc8660_vsync_handler, scc8660_dma_handler, scc8660_uart_callback); // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͷ<EFBFBD><CDB7><EFBFBD><EFBFBD>
|
|
||||||
camera_fifo_init();
|
|
||||||
do
|
do
|
||||||
{
|
{
|
||||||
// <20>ȴ<EFBFBD><C8B4><EFBFBD><EFBFBD><EFBFBD>ͷ<EFBFBD>ϵ<EFBFBD><CFB5><EFBFBD>ʼ<EFBFBD><CABC><EFBFBD>ɹ<EFBFBD> <20><>ʽ<EFBFBD><CABD><EFBFBD><EFBFBD><EFBFBD>֣<EFBFBD><D6A3><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD>ͨ<EFBFBD><CDA8><EFBFBD><EFBFBD>ȡ<EFBFBD><C8A1><EFBFBD>õķ<C3B5>ʽ <20><>ѡһ
|
system_delay_ms(200);
|
||||||
// system_delay_ms(1000); // <20><>ʱ<EFBFBD><CAB1>ʽ
|
set_camera_type(CAMERA_COLOR, scc8660_vsync_handler, scc8660_dma_handler, NULL); // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͷ<EFBFBD><CDB7><EFBFBD><EFBFBD>
|
||||||
scc8660_version = scc8660_get_version(); // <20><>ȡ<EFBFBD><C8A1><EFBFBD>õķ<C3B5>ʽ
|
// <20><><EFBFBD>ȳ<EFBFBD><C8B3><EFBFBD>SCCBͨѶ
|
||||||
if(scc8660_set_config(scc8660_set_confing_buffer))
|
scc8660_type = SCC8660_SCCB;
|
||||||
|
soft_iic_init(&scc8660_iic_struct, 0, SCC8660_COF_IIC_DELAY, SCC8660_COF_IIC_SCL, SCC8660_COF_IIC_SDA);
|
||||||
|
if(scc8660_set_config_sccb(&scc8660_iic_struct, scc8660_set_confing_buffer))
|
||||||
{
|
{
|
||||||
set_camera_type(NO_CAMERE, NULL, NULL, NULL);
|
// SCCBͨѶʧ<D1B6>ܣ<EFBFBD><DCA3><EFBFBD><EFBFBD>Դ<EFBFBD><D4B4><EFBFBD>ͨѶ
|
||||||
return_state = 1;
|
scc8660_type = SCC8660_UART;
|
||||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>˶<EFBFBD><CBB6><EFBFBD><EFBFBD><EFBFBD>Ϣ <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD>λ<EFBFBD><CEBB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
camera_fifo_init();
|
||||||
// <20><>ô<EFBFBD><EFBFBD><EFBFBD>Ǵ<EFBFBD><EFBFBD><EFBFBD>ͨ<EFBFBD>ų<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD>˳<EFBFBD><EFBFBD><EFBFBD>
|
set_camera_type(CAMERA_COLOR, scc8660_vsync_handler, scc8660_dma_handler, &scc8660_uart_callback); // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͷ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
// <20><><EFBFBD><EFBFBD>һ<EFBFBD>½<EFBFBD><C2BD><EFBFBD><EFBFBD><EFBFBD>û<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>û<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ܾ<EFBFBD><EFBFBD>ǻ<EFBFBD><EFBFBD><EFBFBD>
|
uart_init (SCC8660_COF_UART, SCC8660_COF_BAUR, SCC8660_COF_UART_RX, SCC8660_COF_UART_TX); //<2F><>ʼ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͷ
|
||||||
zf_log(0, "SCC8660 set config error.");
|
uart_rx_interrupt(SCC8660_COF_UART, 1);
|
||||||
break;
|
fifo_clear(&camera_receiver_fifo);
|
||||||
}
|
|
||||||
|
|
||||||
if(0 == return_state)
|
if(scc8660_set_config(scc8660_set_confing_buffer))
|
||||||
{
|
|
||||||
// <20><>ȡ<EFBFBD><C8A1><EFBFBD>ñ<EFBFBD><C3B1>ڲ鿴<DAB2><E9BFB4><EFBFBD><EFBFBD><EFBFBD>Ƿ<EFBFBD><C7B7><EFBFBD>ȷ
|
|
||||||
if(scc8660_get_config(scc8660_get_confing_buffer))
|
|
||||||
{
|
{
|
||||||
set_camera_type(NO_CAMERE, NULL, NULL, NULL);
|
|
||||||
return_state = 1;
|
|
||||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>˶<EFBFBD><CBB6><EFBFBD><EFBFBD><EFBFBD>Ϣ <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD>λ<EFBFBD><CEBB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>˶<EFBFBD><CBB6><EFBFBD><EFBFBD><EFBFBD>Ϣ <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD>λ<EFBFBD><CEBB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
// <20><>ô<EFBFBD><C3B4><EFBFBD>Ǵ<EFBFBD><EFBFBD><EFBFBD>ͨ<EFBFBD>ų<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD>˳<EFBFBD><EFBFBD><EFBFBD>
|
// <20><>ô<EFBFBD><C3B4><EFBFBD><EFBFBD>ͨ<EFBFBD>ų<EFBFBD><C5B3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD>˳<EFBFBD><CBB3><EFBFBD>
|
||||||
// <20><><EFBFBD><EFBFBD>һ<EFBFBD>½<EFBFBD><C2BD><EFBFBD><EFBFBD><EFBFBD>û<EFBFBD><C3BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>û<EFBFBD><C3BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ܾ<EFBFBD><DCBE>ǻ<EFBFBD><C7BB><EFBFBD>
|
// <20><><EFBFBD><EFBFBD>һ<EFBFBD>½<EFBFBD><C2BD><EFBFBD><EFBFBD><EFBFBD>û<EFBFBD><C3BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>û<EFBFBD><C3BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ܾ<EFBFBD><DCBE>ǻ<EFBFBD><C7BB><EFBFBD>
|
||||||
zf_log(0, "SCC8660 set config error.");
|
zf_log(0, "SCC8660 set config error.");
|
||||||
|
set_camera_type(NO_CAMERE, NULL, NULL, NULL);
|
||||||
|
return_state = 1;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
scc8660_link_list_num = camera_init(SCC8660_DATA_ADD, (uint8 *)scc8660_image[0], SCC8660_IMAGE_SIZE);
|
// <20><>ȡ<EFBFBD><C8A1><EFBFBD>ñ<EFBFBD><C3B1>ڲ鿴<DAB2><E9BFB4><EFBFBD><EFBFBD><EFBFBD>Ƿ<EFBFBD><C7B7><EFBFBD>ȷ
|
||||||
|
if(scc8660_get_config(scc8660_get_confing_buffer))
|
||||||
|
{
|
||||||
|
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>˶<EFBFBD><CBB6><EFBFBD><EFBFBD><EFBFBD>Ϣ <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD>λ<EFBFBD><CEBB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
|
// <20><>ô<EFBFBD><C3B4><EFBFBD>Ǵ<EFBFBD><C7B4><EFBFBD>ͨ<EFBFBD>ų<EFBFBD><C5B3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD>˳<EFBFBD><CBB3><EFBFBD>
|
||||||
|
// <20><><EFBFBD><EFBFBD>һ<EFBFBD>½<EFBFBD><C2BD><EFBFBD><EFBFBD><EFBFBD>û<EFBFBD><C3BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>û<EFBFBD><C3BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ܾ<EFBFBD><DCBE>ǻ<EFBFBD><C7BB><EFBFBD>
|
||||||
|
zf_log(0, "SCC8660 get config error.");
|
||||||
|
set_camera_type(NO_CAMERE, NULL, NULL, NULL);
|
||||||
|
return_state = 1;
|
||||||
|
break;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
scc8660_link_list_num = camera_init(SCC8660_DATA_ADD, (uint8 *)scc8660_image[0], SCC8660_IMAGE_SIZE);
|
||||||
}while(0);
|
}while(0);
|
||||||
|
|
||||||
return return_state;
|
return return_state;
|
||||||
|
|||||||
@@ -31,7 +31,7 @@
|
|||||||
* <20>ļ<DEB8>¼
|
* <20>ļ<DEB8>¼
|
||||||
* <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><>ע
|
* <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><>ע
|
||||||
* 2022-09-15 pudding first version
|
* 2022-09-15 pudding first version
|
||||||
* 2023-04-28 pudding <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ע<EFBFBD><EFBFBD>˵<EFBFBD><EFBFBD>
|
* 2024-02-02 pudding <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>MCU<EFBFBD><EFBFBD>ͫ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
********************************************************************************************************************/
|
********************************************************************************************************************/
|
||||||
/*********************************************************************************************************************
|
/*********************************************************************************************************************
|
||||||
* <20><><EFBFBD>߶<EFBFBD><DFB6>壺
|
* <20><><EFBFBD>߶<EFBFBD><DFB6>壺
|
||||||
@@ -59,35 +59,36 @@
|
|||||||
#define SCC8660_COF_UART_TX (UART1_RX_P02_3) // <20><>ͫ UART-TX <20><><EFBFBD><EFBFBD> Ҫ<><D2AA><EFBFBD>ڵ<EFBFBD>Ƭ<EFBFBD><C6AC> RX <20><>
|
#define SCC8660_COF_UART_TX (UART1_RX_P02_3) // <20><>ͫ UART-TX <20><><EFBFBD><EFBFBD> Ҫ<><D2AA><EFBFBD>ڵ<EFBFBD>Ƭ<EFBFBD><C6AC> RX <20><>
|
||||||
#define SCC8660_COF_UART_RX (UART1_TX_P02_2) // <20><>ͫ UART-RX <20><><EFBFBD><EFBFBD> Ҫ<><D2AA><EFBFBD>ڵ<EFBFBD>Ƭ<EFBFBD><C6AC> TX <20><>
|
#define SCC8660_COF_UART_RX (UART1_TX_P02_2) // <20><>ͫ UART-RX <20><><EFBFBD><EFBFBD> Ҫ<><D2AA><EFBFBD>ڵ<EFBFBD>Ƭ<EFBFBD><C6AC> TX <20><>
|
||||||
|
|
||||||
|
#define SCC8660_COF_IIC_DELAY (800) // <20><>ͫ IIC <20><>ʱ
|
||||||
|
#define SCC8660_COF_IIC_SCL (P02_3) // <20><>ͫ IIC-SCL <20><><EFBFBD><EFBFBD>
|
||||||
|
#define SCC8660_COF_IIC_SDA (P02_2) // <20><>ͫ IIC-SDA <20><><EFBFBD><EFBFBD>
|
||||||
|
|
||||||
#define SCC8660_DMA_CH (IfxDma_ChannelId_5)
|
#define SCC8660_DMA_CH (IfxDma_ChannelId_5)
|
||||||
|
|
||||||
#define SCC8660_PCLK_PIN (ERU_CH2_REQ14_P02_1) // PCLK <20><><EFBFBD><EFBFBD><EFBFBD>ź<EFBFBD> TIM_ETR <20><><EFBFBD>Ž<EFBFBD>ֹ<EFBFBD><D6B9><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
#define SCC8660_PCLK_PIN (ERU_CH2_REQ14_P02_1) // PCLK <20><><EFBFBD><EFBFBD><EFBFBD>ź<EFBFBD> TIM_ETR <20><><EFBFBD>Ž<EFBFBD>ֹ<EFBFBD><D6B9><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
|
|
||||||
#define SCC8660_VSYNC_PIN (ERU_CH3_REQ6_P02_0 ) // <20><><EFBFBD>ж<EFBFBD><D0B6><EFBFBD><EFBFBD><EFBFBD>
|
#define SCC8660_VSYNC_PIN (ERU_CH3_REQ6_P02_0 ) // <20><><EFBFBD>ж<EFBFBD><D0B6><EFBFBD><EFBFBD><EFBFBD>
|
||||||
|
|
||||||
#define SCC8660_DATA_PIN (P00_0) // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ֻ<><D6BB><EFBFBD><EFBFBD> GPIOx0 <20><><EFBFBD><EFBFBD> GPIOx8 <20><>ʼ <20><><EFBFBD><EFBFBD><EFBFBD>˸<EFBFBD><CBB8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> F0-F7
|
#define SCC8660_DATA_PIN (P00_0) // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ֻ<><D6BB><EFBFBD><EFBFBD> GPIOx0 <20><><EFBFBD><EFBFBD> GPIOx8 <20><>ʼ <20><><EFBFBD><EFBFBD><EFBFBD>˸<EFBFBD><CBB8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> F0-F7
|
||||||
#define SCC8660_DATA_ADD (get_port_in_addr(SCC8660_DATA_PIN))
|
#define SCC8660_DATA_ADD (get_port_in_addr(SCC8660_DATA_PIN))
|
||||||
|
|
||||||
#define SCC8660_INIT_TIMEOUT (0x00F0) // Ĭ<>ϵ<EFBFBD><CFB5><EFBFBD><EFBFBD><EFBFBD>ͷ<EFBFBD><CDB7>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD>ʱʱ<CAB1><CAB1> <20><><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA>λ
|
#define SCC8660_INIT_TIMEOUT (0x00F0) // Ĭ<>ϵ<EFBFBD><CFB5><EFBFBD><EFBFBD><EFBFBD>ͷ<EFBFBD><CDB7>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD>ʱʱ<CAB1><CAB1> <20><><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA>λ
|
||||||
//================================================<3D><><EFBFBD><EFBFBD> SCC8660 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>================================================
|
//================================================<3D><><EFBFBD><EFBFBD> SCC8660 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>================================================
|
||||||
|
|
||||||
//================================================<3D><><EFBFBD><EFBFBD> SCC8660 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>================================================
|
//================================================<3D><><EFBFBD><EFBFBD> SCC8660 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ã<EFBFBD><EFBFBD><EFBFBD>֧<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͫ<EFBFBD><EFBFBD>֡<EFBFBD>ʰ汾<EFBFBD><EFBFBD>===========================
|
||||||
#define SCC8660_W (160) // ʵ<EFBFBD><EFBFBD>ͼ<EFBFBD><EFBFBD><EFBFBD>ֱ<EFBFBD><EFBFBD>ʿ<EFBFBD><EFBFBD><EFBFBD> <20><>ѡ<EFBFBD><D1A1><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA>160 180
|
#define SCC8660_W (160) // ͼ<><CDBC><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>ѡ<EFBFBD><D1A1><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA>160 80 40
|
||||||
#define SCC8660_H (120) // ʵ<EFBFBD><EFBFBD>ͼ<EFBFBD><EFBFBD><EFBFBD>ֱ<EFBFBD><EFBFBD>ʸ߶<EFBFBD> <20><>ѡ<EFBFBD><D1A1><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA>120 160
|
#define SCC8660_H (120) // ͼ<><CDBC><EFBFBD>߶<EFBFBD> <20><>ѡ<EFBFBD><D1A1><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA>120 160 240
|
||||||
#define SCC8660_IMAGE_SIZE (SCC8660_W * 2 * SCC8660_H) // <20><><EFBFBD><EFBFBD>ͼ<EFBFBD><CDBC><EFBFBD><EFBFBD>С SCC8660_W*2*SCC8660_H <20><><EFBFBD>ܳ<EFBFBD><DCB3><EFBFBD> 65535
|
#define SCC8660_IMAGE_SIZE (SCC8660_W * 2 * SCC8660_H) // <20><><EFBFBD><EFBFBD>ͼ<EFBFBD><CDBC><EFBFBD><EFBFBD>С SCC8660_W*2*SCC8660_H <20><><EFBFBD>ܳ<EFBFBD><DCB3><EFBFBD> 65535
|
||||||
|
|
||||||
#define SCC8660_AUTO_EXP_DEF (0 ) // <20>Զ<EFBFBD><D4B6>ع<EFBFBD> Ĭ<>ϲ<EFBFBD><CFB2><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Զ<EFBFBD><D4B6>ع<EFBFBD><D8B9><EFBFBD><EFBFBD><EFBFBD> <20><>Χ [0-1] 0Ϊ<30>ر<EFBFBD>
|
#define SCC8660_AUTO_EXP_DEF (0 ) // <20>Զ<EFBFBD><D4B6>ع<EFBFBD> Ĭ<>ϲ<EFBFBD><CFB2><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Զ<EFBFBD><D4B6>ع<EFBFBD><D8B9><EFBFBD><EFBFBD><EFBFBD> <20><>Χ [0-1] 0Ϊ<30>ر<EFBFBD>
|
||||||
#define SCC8660_BRIGHT_DEF (300) // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ֶ<EFBFBD><D6B6>ع<EFBFBD>Ĭ<EFBFBD>ϣ<EFBFBD>300 <20>ֶ<EFBFBD><D6B6>ع<EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Χ0-65535 <20>Զ<EFBFBD><D4B6>ع<EFBFBD><D8B9>Ƽ<EFBFBD>ֵ<EFBFBD><D6B5>100 <20>Զ<EFBFBD><D4B6>ع<EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>÷<EFBFBD>Χ0-255
|
#define SCC8660_BRIGHT_DEF (500) // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ֶ<EFBFBD><D6B6>ع<EFBFBD>Ĭ<EFBFBD>ϣ<EFBFBD>300 <20>ֶ<EFBFBD><D6B6>ع<EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Χ0-65535 <20>Զ<EFBFBD><D4B6>ع<EFBFBD><D8B9>Ƽ<EFBFBD>ֵ<EFBFBD><D6B5>100 <20>Զ<EFBFBD><D4B6>ع<EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>÷<EFBFBD>Χ0-255
|
||||||
#define SCC8660_FPS_DEF (50 ) // ͼ<><CDBC>֡<EFBFBD><D6A1> Ĭ<>ϣ<EFBFBD>50 <20><>ѡ<EFBFBD><D1A1><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA>60 50 30 25<32><35> ʵ<><CAB5>֡<EFBFBD>ʻ<EFBFBD><CABB><EFBFBD>Ҫ<EFBFBD><D2AA>SCC8660_PCLK_DIV<49><56><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
#define SCC8660_FPS_DEF (50 ) // ͼ<><CDBC>֡<EFBFBD><D6A1> Ĭ<>ϣ<EFBFBD>50 <20><>ѡ<EFBFBD><D1A1><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA>60 50 30 25<32><35> ʵ<><CAB5>֡<EFBFBD>ʻ<EFBFBD><CABB><EFBFBD>Ҫ<EFBFBD><D2AA>SCC8660_PCLK_DIV<49><56><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
#define SCC8660_PCLK_DIV_DEF (5 ) // PCLK<4C><4B>Ƶϵ<C6B5><CFB5> Ĭ<>ϣ<EFBFBD>5 <20><>ѡ<EFBFBD><D1A1><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA><0:1/1> <1:2/3> <2:1/2> <3:1/3> <4:1/4> <5:1/8>
|
#define SCC8660_PCLK_DIV_DEF (2 ) // PCLK<4C><4B>Ƶϵ<C6B5><CFB5> Ĭ<>ϣ<EFBFBD>5 <20><>ѡ<EFBFBD><D1A1><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA><0:1/1> <1:2/3> <2:1/2> <3:1/3> <4:1/4> <5:1/8>
|
||||||
// <20><>Ƶϵ<C6B5><CFB5>Խ<EFBFBD><D4BD><EFBFBD><EFBFBD>PCLKƵ<4B><C6B5>Խ<EFBFBD>ͣ<EFBFBD><CDA3><EFBFBD><EFBFBD><EFBFBD>PCLK<4C><4B><EFBFBD>Լ<EFBFBD><D4BC><EFBFBD>DVP<56>ӿڵĸ<DAB5><C4B8>ţ<EFBFBD><C5A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>PCLKƵ<4B><C6B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ӱ<EFBFBD><D3B0>֡<EFBFBD>ʡ<EFBFBD><CAA1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>뱣<EFBFBD><EBB1A3>Ĭ<EFBFBD>ϡ<EFBFBD>
|
// <20><>Ƶϵ<C6B5><CFB5>Խ<EFBFBD><D4BD><EFBFBD><EFBFBD>PCLKƵ<4B><C6B5>Խ<EFBFBD>ͣ<EFBFBD><CDA3><EFBFBD><EFBFBD><EFBFBD>PCLK<4C><4B><EFBFBD>Լ<EFBFBD><D4BC><EFBFBD>DVP<56>ӿڵĸ<DAB5><C4B8>ţ<EFBFBD><C5A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>PCLKƵ<4B><C6B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ӱ<EFBFBD><D3B0>֡<EFBFBD>ʡ<EFBFBD><CAA1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>뱣<EFBFBD><EBB1A3>Ĭ<EFBFBD>ϡ<EFBFBD>
|
||||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>FPSΪ50֡<30><D6A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>pclk<6C><6B>Ƶϵ<C6B5><CFB5>ѡ<EFBFBD><D1A1><EFBFBD><EFBFBD>Ϊ5<CEAA><35><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͷ<EFBFBD><CDB7><EFBFBD><EFBFBD><EFBFBD><EFBFBD>֡<EFBFBD><D6A1>Ϊ50*<2A><>1/8<><38>=6.25֡
|
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>FPSΪ50֡<30><D6A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>pclk<6C><6B>Ƶϵ<C6B5><CFB5>ѡ<EFBFBD><D1A1><EFBFBD><EFBFBD>Ϊ5<CEAA><35><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͷ<EFBFBD><CDB7><EFBFBD><EFBFBD><EFBFBD><EFBFBD>֡<EFBFBD><D6A1>Ϊ50*<2A><>1/8<><38>=6.25֡
|
||||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>£<EFBFBD>SCC8660_PCLK_DIV<49><56><EFBFBD><EFBFBD>Խ<EFBFBD><D4BD>ͼ<EFBFBD><CDBC><EFBFBD><EFBFBD>Խ<EFBFBD><D4BD>
|
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>£<EFBFBD>SCC8660_PCLK_DIV<49><56><EFBFBD><EFBFBD>Խ<EFBFBD><D4BD>ͼ<EFBFBD><CDBC><EFBFBD><EFBFBD>Խ<EFBFBD><D4BD>
|
||||||
#define SCC8660_PCLK_MODE_DEF (0 ) // PCLKģʽ Ĭ<>ϣ<EFBFBD>0 <20><>ѡ<EFBFBD><D1A1><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA>[0,1] 0<><30><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ź<EFBFBD> 1<><31><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ź<EFBFBD> <ͨ<><CDA8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ0<CEAA><30><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʹ<EFBFBD><CAB9>STM32<33><32>DCMI<4D>ӿڲɼ<DAB2><C9BC><EFBFBD>Ҫ<EFBFBD><D2AA><EFBFBD><EFBFBD>Ϊ1>
|
#define SCC8660_PCLK_MODE_DEF (0 ) // PCLKģʽ Ĭ<EFBFBD>ϣ<EFBFBD>0 <20><>ѡ<EFBFBD><D1A1><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA>[0,1] 0<><30><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ź<EFBFBD> 1<><31><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ź<EFBFBD> <ͨ<><CDA8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ0<CEAA><30><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʹ<EFBFBD><CAB9>STM32<33><32>DCMI<4D>ӿڲɼ<DAB2><C9BC><EFBFBD>Ҫ<EFBFBD><D2AA><EFBFBD><EFBFBD>Ϊ1>
|
||||||
#define SCC8660_COLOR_MODE_DEF (1 ) // ͼ<><CDBC>ɫ<EFBFBD><C9AB>ģʽ Ĭ<>ϣ<EFBFBD>0 <20><>ѡ<EFBFBD><D1A1><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA>[0,1] 0<><30><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɫģʽ 1<><31><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ģʽ<C4A3><CABD>ɫ<EFBFBD>ʱ<EFBFBD><CAB1>Ͷ<EFBFBD><CDB6><EFBFBD><EFBFBD>ߣ<EFBFBD>
|
#define SCC8660_COLOR_MODE_DEF (0 ) // ͼ<><CDBC>ɫ<EFBFBD><C9AB>ģʽ Ĭ<>ϣ<EFBFBD>0 <20><>ѡ<EFBFBD><D1A1><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA>[0,1] 0<><30><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɫģʽ 1<><31><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ģʽ<C4A3><CABD>ɫ<EFBFBD>ʱ<EFBFBD><CAB1>Ͷ<EFBFBD><CDB6><EFBFBD><EFBFBD>ߣ<EFBFBD>
|
||||||
#define SCC8660_DATA_FORMAT_DEF (1 ) // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݸ<EFBFBD>ʽ Ĭ<>ϣ<EFBFBD>0 <20><>ѡ<EFBFBD><D1A1><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA>[0-3] 0<><30>RGB565 1<><31>RGB565(<28>ֽڽ<D6BD><DABD><EFBFBD>) 2<><32>YUV422(YUYV) 3<><33>YUV422(UYVY)
|
#define SCC8660_DATA_FORMAT_DEF (0 ) // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݸ<EFBFBD>ʽ Ĭ<>ϣ<EFBFBD>0 <20><>ѡ<EFBFBD><D1A1><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA>[0-3] 0<><30>RGB565 1<><31>RGB565(<28>ֽڽ<D6BD><DABD><EFBFBD>) 2<><32>YUV422(YUYV) 3<><33>YUV422(UYVY)
|
||||||
#define SCC8660_MANUAL_WB_DEF (0 ) // <20>ֶ<EFBFBD><D6B6><EFBFBD>ƽ<EFBFBD><C6BD> Ĭ<EFBFBD>ϣ<EFBFBD>0 <20><>ѡ<EFBFBD><D1A1><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA>[0,0x65-0xa0] 0<><30><EFBFBD>ر<EFBFBD><D8B1>ֶ<EFBFBD><D6B6><EFBFBD>ƽ<EFBFBD>⣬<EFBFBD><E2A3AC><EFBFBD><EFBFBD><EFBFBD>Զ<EFBFBD><D4B6><EFBFBD>ƽ<EFBFBD><C6BD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֶ<EFBFBD><D6B6><EFBFBD>ƽ<EFBFBD><C6BD> <20>ֶ<EFBFBD><D6B6><EFBFBD>ƽ<EFBFBD><C6BD>ʱ <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Χ0x65-0xa0
|
#define SCC8660_MANUAL_WB_DEF (0 ) // <20>ֶ<EFBFBD><D6B6><EFBFBD>ƽ<EFBFBD><C6BD> Ĭ<>ϣ<EFBFBD>0 <20><>ѡ<EFBFBD><D1A1><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA>[0,0x65-0xa0] 0<><30><EFBFBD>ر<EFBFBD><D8B1>ֶ<EFBFBD><D6B6><EFBFBD>ƽ<EFBFBD>⣬<EFBFBD><E2A3AC><EFBFBD><EFBFBD><EFBFBD>Զ<EFBFBD><D4B6><EFBFBD>ƽ<EFBFBD><C6BD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֶ<EFBFBD><D6B6><EFBFBD>ƽ<EFBFBD><C6BD> <20>ֶ<EFBFBD><D6B6><EFBFBD>ƽ<EFBFBD><C6BD>ʱ <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Χ0x65-0xa0
|
||||||
//================================================<3D><><EFBFBD><EFBFBD> SCC8660 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>================================================
|
//================================================<3D><><EFBFBD><EFBFBD> SCC8660 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ã<EFBFBD><EFBFBD><EFBFBD>֧<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͫ<EFBFBD><EFBFBD>֡<EFBFBD>ʰ汾<EFBFBD><EFBFBD>===========================
|
||||||
|
|
||||||
//===============================================<3D><><EFBFBD><EFBFBD> SCC8660 <20><><EFBFBD><EFBFBD><EFBFBD>ṹ<EFBFBD><E1B9B9>================================================
|
//===============================================<3D><><EFBFBD><EFBFBD> SCC8660 <20><><EFBFBD><EFBFBD><EFBFBD>ṹ<EFBFBD><E1B9B9>================================================
|
||||||
typedef enum
|
typedef enum
|
||||||
@@ -116,6 +117,14 @@ typedef enum
|
|||||||
}scc8660_cmd_enum;
|
}scc8660_cmd_enum;
|
||||||
//===============================================<3D><><EFBFBD><EFBFBD> SCC8660 <20><><EFBFBD><EFBFBD><EFBFBD>ṹ<EFBFBD><E1B9B9>================================================
|
//===============================================<3D><><EFBFBD><EFBFBD> SCC8660 <20><><EFBFBD><EFBFBD><EFBFBD>ṹ<EFBFBD><E1B9B9>================================================
|
||||||
|
|
||||||
|
//===============================================<3D><><EFBFBD><EFBFBD>ͷ<EFBFBD><CDB7><EFBFBD><EFBFBD>ö<EFBFBD><C3B6><EFBFBD><EFBFBD>=======================================================
|
||||||
|
typedef enum
|
||||||
|
{
|
||||||
|
SCC8660_UART,
|
||||||
|
SCC8660_SCCB,
|
||||||
|
}scc8660_type_enum;
|
||||||
|
//===============================================<3D><><EFBFBD><EFBFBD>ͷ<EFBFBD><CDB7><EFBFBD><EFBFBD>ö<EFBFBD><C3B6><EFBFBD><EFBFBD>=======================================================
|
||||||
|
|
||||||
//===============================================<3D><><EFBFBD><EFBFBD> SCC8660 ȫ<>ֱ<EFBFBD><D6B1><EFBFBD>=================================================
|
//===============================================<3D><><EFBFBD><EFBFBD> SCC8660 ȫ<>ֱ<EFBFBD><D6B1><EFBFBD>=================================================
|
||||||
extern vuint8 scc8660_finish_flag; // һ<><D2BB>ͼ<EFBFBD><CDBC><EFBFBD>ɼ<EFBFBD><C9BC><EFBFBD><EFBFBD>ɱ<EFBFBD>־λ
|
extern vuint8 scc8660_finish_flag; // һ<><D2BB>ͼ<EFBFBD><CDBC><EFBFBD>ɼ<EFBFBD><C9BC><EFBFBD><EFBFBD>ɱ<EFBFBD>־λ
|
||||||
extern uint16 scc8660_image[SCC8660_H][SCC8660_W]; // ͼ<><EFBFBD><F1B1A3B4><EFBFBD><EFBFBD><EFBFBD>
|
extern uint16 scc8660_image[SCC8660_H][SCC8660_W]; // ͼ<><EFBFBD><F1B1A3B4><EFBFBD><EFBFBD><EFBFBD>
|
||||||
|
|||||||
@@ -56,6 +56,7 @@ typedef enum
|
|||||||
WIRELESS_UART, // <20><><EFBFBD>ߴ<EFBFBD><DFB4><EFBFBD>
|
WIRELESS_UART, // <20><><EFBFBD>ߴ<EFBFBD><DFB4><EFBFBD>
|
||||||
BLUETOOTH_CH9141, // <20><><EFBFBD><EFBFBD> CH9141
|
BLUETOOTH_CH9141, // <20><><EFBFBD><EFBFBD> CH9141
|
||||||
WIFI_UART, // <20><><EFBFBD><EFBFBD> WiFi
|
WIFI_UART, // <20><><EFBFBD><EFBFBD> WiFi
|
||||||
|
RECEIVER_UART, // ǹʽң<CABD><D2A3><EFBFBD><EFBFBD>
|
||||||
}wireless_type_enum;
|
}wireless_type_enum;
|
||||||
|
|
||||||
typedef enum
|
typedef enum
|
||||||
|
|||||||
@@ -0,0 +1,134 @@
|
|||||||
|
/*********************************************************************************************************************
|
||||||
|
* TC264 Opensourec Library <20><><EFBFBD><EFBFBD>TC264 <20><>Դ<EFBFBD>⣩<EFBFBD><E2A3A9>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD>ڹٷ<DAB9> SDK <20>ӿڵĵ<DAB5><C4B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Դ<EFBFBD><D4B4>
|
||||||
|
* Copyright (c) 2022 SEEKFREE <20><><EFBFBD>ɿƼ<C9BF>
|
||||||
|
*
|
||||||
|
* <20><><EFBFBD>ļ<EFBFBD><C4BC><EFBFBD> TC264 <20><>Դ<EFBFBD><D4B4><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD>
|
||||||
|
*
|
||||||
|
* TC264 <20><>Դ<EFBFBD><D4B4> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
|
* <20><><EFBFBD><EFBFBD><EFBFBD>Ը<EFBFBD><D4B8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ᷢ<EFBFBD><E1B7A2><EFBFBD><EFBFBD> GPL<50><4C>GNU General Public License<73><65><EFBFBD><EFBFBD> GNUͨ<55>ù<EFBFBD><C3B9><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>֤<EFBFBD><D6A4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
|
* <20><> GPL <20>ĵ<EFBFBD>3<EFBFBD>棨<EFBFBD><E6A3A8> GPL3.0<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ѡ<EFBFBD><EFBFBD><EFBFBD>ģ<EFBFBD><EFBFBD>κκ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>İ汾<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>·<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>/<2F><><EFBFBD><EFBFBD><DEB8><EFBFBD>
|
||||||
|
*
|
||||||
|
* <20><><EFBFBD><EFBFBD>Դ<EFBFBD><D4B4><EFBFBD>ķ<EFBFBD><C4B7><EFBFBD><EFBFBD><EFBFBD>ϣ<EFBFBD><CFA3><EFBFBD><EFBFBD><EFBFBD>ܷ<EFBFBD><DCB7><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ã<EFBFBD><C3A3><EFBFBD><EFBFBD><EFBFBD>δ<EFBFBD><CEB4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>κεı<CEB5>֤
|
||||||
|
* <20><><EFBFBD><EFBFBD>û<EFBFBD><C3BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ի<EFBFBD><D4BB>ʺ<EFBFBD><CABA>ض<EFBFBD><D8B6><EFBFBD>;<EFBFBD>ı<EFBFBD>֤
|
||||||
|
* <20><><EFBFBD><EFBFBD>ϸ<EFBFBD><CFB8><EFBFBD><EFBFBD><EFBFBD>μ<EFBFBD> GPL
|
||||||
|
*
|
||||||
|
* <20><>Ӧ<EFBFBD><D3A6><EFBFBD><EFBFBD><EFBFBD>յ<EFBFBD><D5B5><EFBFBD><EFBFBD><EFBFBD>Դ<EFBFBD><D4B4><EFBFBD><EFBFBD>ͬʱ<CDAC>յ<EFBFBD>һ<EFBFBD><D2BB> GPL <20>ĸ<EFBFBD><C4B8><EFBFBD>
|
||||||
|
* <20><><EFBFBD><EFBFBD>û<EFBFBD>У<EFBFBD><D0A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><https://www.gnu.org/licenses/>
|
||||||
|
*
|
||||||
|
* <20><><EFBFBD><EFBFBD>ע<EFBFBD><D7A2><EFBFBD><EFBFBD>
|
||||||
|
* <20><><EFBFBD><EFBFBD>Դ<EFBFBD><D4B4>ʹ<EFBFBD><CAB9> GPL3.0 <20><>Դ<EFBFBD><D4B4><EFBFBD><EFBFBD>֤Э<D6A4><D0AD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA><EFBFBD>İ汾
|
||||||
|
* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ӣ<EFBFBD>İ<EFBFBD><C4B0><EFBFBD> libraries/doc <20>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD>µ<EFBFBD> GPL3_permission_statement.txt <20>ļ<EFBFBD><C4BC><EFBFBD>
|
||||||
|
* <20><><EFBFBD><EFBFBD>֤<EFBFBD><D6A4><EFBFBD><EFBFBD><EFBFBD><EFBFBD> libraries <20>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD>µ<EFBFBD> LICENSE <20>ļ<EFBFBD>
|
||||||
|
* <20><>ӭ<EFBFBD><D3AD>λʹ<CEBB>ò<EFBFBD><C3B2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><DEB8><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD>뱣<EFBFBD><EBB1A3><EFBFBD><EFBFBD><EFBFBD>ɿƼ<C9BF><C6BC>İ<EFBFBD>Ȩ<EFBFBD><C8A8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
|
*
|
||||||
|
* <20>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD><EFBFBD> zf_device_uart_receiver
|
||||||
|
* <20><>˾<EFBFBD><CBBE><EFBFBD><EFBFBD> <20>ɶ<EFBFBD><C9B6><EFBFBD><EFBFBD>ɿƼ<C9BF><C6BC><EFBFBD><EFBFBD><EFBFBD>˾
|
||||||
|
* <20>汾<EFBFBD><E6B1BE>Ϣ <20>鿴 libraries/doc <20>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD><EFBFBD> version <20>ļ<EFBFBD> <20>汾˵<E6B1BE><CBB5>
|
||||||
|
* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ADS v1.9.20
|
||||||
|
* <20><><EFBFBD><EFBFBD>ƽ̨ TC264D
|
||||||
|
* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> https://seekfree.taobao.com/
|
||||||
|
*
|
||||||
|
* <20>ļ<DEB8>¼
|
||||||
|
* <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><>ע
|
||||||
|
* 2022-11-04 JKS first version
|
||||||
|
********************************************************************************************************************/
|
||||||
|
/*********************************************************************************************************************
|
||||||
|
* <20><><EFBFBD>߶<EFBFBD><DFB6>壺
|
||||||
|
* ------------------------------------
|
||||||
|
* ģ<><C4A3><EFBFBD>ܽ<EFBFBD> <20><>Ƭ<EFBFBD><C6AC><EFBFBD>ܽ<EFBFBD>
|
||||||
|
* TXD <20>鿴 zf_device_uart_receiver.h <20><> UART_RECEVIER_RX_PIN <20>궨<EFBFBD><EAB6A8>
|
||||||
|
* GND <20><>Դ<EFBFBD><D4B4>
|
||||||
|
* 5V 5V<35><56>Դ
|
||||||
|
* ------------------------------------
|
||||||
|
********************************************************************************************************************/
|
||||||
|
|
||||||
|
#include "zf_device_type.h"
|
||||||
|
#include "zf_driver_uart.h"
|
||||||
|
#include "zf_driver_timer.h"
|
||||||
|
#include "zf_device_uart_receiver.h"
|
||||||
|
|
||||||
|
uart_receiver_struct uart_receiver ; // <20><><EFBFBD>ڽ<EFBFBD><DABD>ջ<EFBFBD>ͨ<EFBFBD><CDA8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>״̬
|
||||||
|
|
||||||
|
uint8 uart_receiver_data[REV_DATA_LEN] = {0}; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ԭʼ<D4AD><CABC><EFBFBD><EFBFBD>
|
||||||
|
|
||||||
|
//-------------------------------------------------------------------------------------------------------------------
|
||||||
|
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>ȡ<EFBFBD><C8A1><EFBFBD>ε<EFBFBD><CEB5><EFBFBD>uart_receiver_interval_time<6D><65><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
|
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> void
|
||||||
|
// <20><><EFBFBD>ز<EFBFBD><D8B2><EFBFBD> uint32 <20><><EFBFBD>شӿ<D8B4>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD><EFBFBD>ڵ<EFBFBD>ʱ<EFBFBD><CAB1>(<28><>λ1us)
|
||||||
|
// ʹ<><CAB9>ʾ<EFBFBD><CABE> uint32 time = uart_receiver_interval_time();
|
||||||
|
// <20><>ע<EFBFBD><D7A2>Ϣ <20>ڲ<EFBFBD><DAB2><EFBFBD><EFBFBD><EFBFBD>
|
||||||
|
//-------------------------------------------------------------------------------------------------------------------
|
||||||
|
static uint32 uart_receiver_interval_time (void)
|
||||||
|
{
|
||||||
|
static uint32 time_last = 0;
|
||||||
|
uint32 time, interval_time;
|
||||||
|
uint32 stm_clk;
|
||||||
|
|
||||||
|
stm_clk = IfxStm_getFrequency(IfxStm_getAddress((IfxStm_Index)(IfxCpu_getCoreId())));
|
||||||
|
|
||||||
|
time = IfxStm_getLower(IfxStm_getAddress((IfxStm_Index)(IfxCpu_getCoreId())));
|
||||||
|
interval_time = time - time_last;
|
||||||
|
time_last = time;
|
||||||
|
interval_time = (uint32)((uint64)interval_time * 1000000 / stm_clk);
|
||||||
|
|
||||||
|
return interval_time;
|
||||||
|
}
|
||||||
|
|
||||||
|
//-------------------------------------------------------------------------------------------------------------------
|
||||||
|
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> SBUS<55><53><EFBFBD>ݽ<EFBFBD><DDBD><EFBFBD>
|
||||||
|
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> *remote_data <20><><EFBFBD><EFBFBD>ң<EFBFBD><D2A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݵĵ<DDB5>ַ
|
||||||
|
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> *bufer ԭʼ<D4AD><CABC><EFBFBD><EFBFBD>
|
||||||
|
// <20><><EFBFBD>ز<EFBFBD><D8B2><EFBFBD> void
|
||||||
|
// ʹ<><CAB9>ʾ<EFBFBD><CABE>
|
||||||
|
// <20><>ע<EFBFBD><D7A2>Ϣ <20><>sbus<75><73><EFBFBD>ݽ<EFBFBD><DDBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>н<EFBFBD><D0BD><EFBFBD>
|
||||||
|
//-------------------------------------------------------------------------------------------------------------------
|
||||||
|
static void uart_receiver_analysis (uart_receiver_struct *remote_data,uint8 * buffer)
|
||||||
|
{
|
||||||
|
uint8 num = 0;
|
||||||
|
remote_data->channel[num++] = (buffer[1] |buffer[ 2] << 8 ) & 0x07FF;
|
||||||
|
remote_data->channel[num++] = (buffer[2] >> 3 | buffer[3] << 5 ) & 0x07FF;
|
||||||
|
remote_data->channel[num++] = (buffer[3] >> 6 | buffer[4] << 2 | buffer[5] << 10 ) & 0x07FF;
|
||||||
|
remote_data->channel[num++] = (buffer[5] >> 1 | buffer[6] << 7 ) & 0x07FF;
|
||||||
|
remote_data->channel[num++] = (buffer[6] >> 4 | buffer[7] << 4 ) & 0x07FF;
|
||||||
|
remote_data->channel[num++] = (buffer[7] >> 7 | buffer[8] << 1 | buffer[9] << 9 ) & 0x07FF;
|
||||||
|
remote_data->state = (SBUS_NORMAL_STATE == buffer[23]) ? 1 : 0;
|
||||||
|
uart_receiver.finsh_flag = 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
//-------------------------------------------------------------------------------------------------------------------
|
||||||
|
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>ڽ<EFBFBD><DABD>ջ<EFBFBD>ģ<EFBFBD><C4A3> <20><><EFBFBD><EFBFBD><EFBFBD>жϻص<CFBB><D8B5><EFBFBD><EFBFBD><EFBFBD>
|
||||||
|
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> void
|
||||||
|
// <20><><EFBFBD>ز<EFBFBD><D8B2><EFBFBD> void
|
||||||
|
// ʹ<><CAB9>ʾ<EFBFBD><CABE> uart_receiver_callback();
|
||||||
|
// <20><>ע<EFBFBD><D7A2>Ϣ <20>ú<EFBFBD><C3BA><EFBFBD><EFBFBD><EFBFBD> ISR <20>ļ<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>жϳ<D0B6><CFB3><EFBFBD>ͨ<EFBFBD><CDA8>uart_receiver_uart_handler<65><72><EFBFBD><EFBFBD>ָ<EFBFBD>뱻<EFBFBD><EBB1BB><EFBFBD><EFBFBD>
|
||||||
|
//-------------------------------------------------------------------------------------------------------------------
|
||||||
|
void uart_receiver_callback(void)
|
||||||
|
{
|
||||||
|
static vuint8 length = 0;
|
||||||
|
|
||||||
|
if (uart_receiver_interval_time() > 3000)
|
||||||
|
{
|
||||||
|
length = 0;
|
||||||
|
}
|
||||||
|
uart_receiver_data[length++] = uart_read_byte(UART_RECEVIER_UART_INDEX);
|
||||||
|
if ( (REV_DATA_LEN == length) // <20><><EFBFBD><EFBFBD>֡<EFBFBD><D6A1><EFBFBD><EFBFBD>֡ͷ<D6A1><CDB7>֡β<D6A1><CEB2><EFBFBD><EFBFBD>Э<EFBFBD><D0AD>
|
||||||
|
&& (FRAME_STAR == uart_receiver_data[0])
|
||||||
|
&& (FRAME_END == uart_receiver_data[24]))
|
||||||
|
{
|
||||||
|
uart_receiver_analysis(&uart_receiver, uart_receiver_data);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
//-------------------------------------------------------------------------------------------------------------------
|
||||||
|
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>ڽ<EFBFBD><DABD>ջ<EFBFBD><D5BB><EFBFBD>ʼ<EFBFBD><CABC>
|
||||||
|
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> void
|
||||||
|
// <20><><EFBFBD>ز<EFBFBD><D8B2><EFBFBD> void
|
||||||
|
// ʹ<><CAB9>ʾ<EFBFBD><CABE> uart_receiver_init();
|
||||||
|
//-------------------------------------------------------------------------------------------------------------------
|
||||||
|
void uart_receiver_init(void)
|
||||||
|
{
|
||||||
|
uart_sbus_init(UART_RECEVIER_UART_INDEX, SBUS_UART_BAUDRATE, UART_RECEVIER_TX_PIN, UART_RECEVIER_RX_PIN);
|
||||||
|
|
||||||
|
// <20><><EFBFBD>ô<EFBFBD><C3B4><EFBFBD><EFBFBD>жϻص<CFBB><D8B5><EFBFBD><EFBFBD><EFBFBD>
|
||||||
|
set_wireless_type(RECEIVER_UART, uart_receiver_callback);
|
||||||
|
}
|
||||||
@@ -0,0 +1,72 @@
|
|||||||
|
/*********************************************************************************************************************
|
||||||
|
* TC264 Opensourec Library <20><><EFBFBD><EFBFBD>TC264 <20><>Դ<EFBFBD>⣩<EFBFBD><E2A3A9>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD>ڹٷ<DAB9> SDK <20>ӿڵĵ<DAB5><C4B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Դ<EFBFBD><D4B4>
|
||||||
|
* Copyright (c) 2022 SEEKFREE <20><><EFBFBD>ɿƼ<C9BF>
|
||||||
|
*
|
||||||
|
* <20><><EFBFBD>ļ<EFBFBD><C4BC><EFBFBD> TC264 <20><>Դ<EFBFBD><D4B4><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD>
|
||||||
|
*
|
||||||
|
* TC264 <20><>Դ<EFBFBD><D4B4> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
|
* <20><><EFBFBD><EFBFBD><EFBFBD>Ը<EFBFBD><D4B8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ᷢ<EFBFBD><E1B7A2><EFBFBD><EFBFBD> GPL<50><4C>GNU General Public License<73><65><EFBFBD><EFBFBD> GNUͨ<55>ù<EFBFBD><C3B9><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>֤<EFBFBD><D6A4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
|
* <20><> GPL <20>ĵ<EFBFBD>3<EFBFBD>棨<EFBFBD><E6A3A8> GPL3.0<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ѡ<EFBFBD><EFBFBD><EFBFBD>ģ<EFBFBD><EFBFBD>κκ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>İ汾<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>·<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>/<2F><><EFBFBD><EFBFBD><DEB8><EFBFBD>
|
||||||
|
*
|
||||||
|
* <20><><EFBFBD><EFBFBD>Դ<EFBFBD><D4B4><EFBFBD>ķ<EFBFBD><C4B7><EFBFBD><EFBFBD><EFBFBD>ϣ<EFBFBD><CFA3><EFBFBD><EFBFBD><EFBFBD>ܷ<EFBFBD><DCB7><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ã<EFBFBD><C3A3><EFBFBD><EFBFBD><EFBFBD>δ<EFBFBD><CEB4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>κεı<CEB5>֤
|
||||||
|
* <20><><EFBFBD><EFBFBD>û<EFBFBD><C3BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ի<EFBFBD><D4BB>ʺ<EFBFBD><CABA>ض<EFBFBD><D8B6><EFBFBD>;<EFBFBD>ı<EFBFBD>֤
|
||||||
|
* <20><><EFBFBD><EFBFBD>ϸ<EFBFBD><CFB8><EFBFBD><EFBFBD><EFBFBD>μ<EFBFBD> GPL
|
||||||
|
*
|
||||||
|
* <20><>Ӧ<EFBFBD><D3A6><EFBFBD><EFBFBD><EFBFBD>յ<EFBFBD><D5B5><EFBFBD><EFBFBD><EFBFBD>Դ<EFBFBD><D4B4><EFBFBD><EFBFBD>ͬʱ<CDAC>յ<EFBFBD>һ<EFBFBD><D2BB> GPL <20>ĸ<EFBFBD><C4B8><EFBFBD>
|
||||||
|
* <20><><EFBFBD><EFBFBD>û<EFBFBD>У<EFBFBD><D0A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><https://www.gnu.org/licenses/>
|
||||||
|
*
|
||||||
|
* <20><><EFBFBD><EFBFBD>ע<EFBFBD><D7A2><EFBFBD><EFBFBD>
|
||||||
|
* <20><><EFBFBD><EFBFBD>Դ<EFBFBD><D4B4>ʹ<EFBFBD><CAB9> GPL3.0 <20><>Դ<EFBFBD><D4B4><EFBFBD><EFBFBD>֤Э<D6A4><D0AD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA><EFBFBD>İ汾
|
||||||
|
* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ӣ<EFBFBD>İ<EFBFBD><C4B0><EFBFBD> libraries/doc <20>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD>µ<EFBFBD> GPL3_permission_statement.txt <20>ļ<EFBFBD><C4BC><EFBFBD>
|
||||||
|
* <20><><EFBFBD><EFBFBD>֤<EFBFBD><D6A4><EFBFBD><EFBFBD><EFBFBD><EFBFBD> libraries <20>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD>µ<EFBFBD> LICENSE <20>ļ<EFBFBD>
|
||||||
|
* <20><>ӭ<EFBFBD><D3AD>λʹ<CEBB>ò<EFBFBD><C3B2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><DEB8><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD>뱣<EFBFBD><EBB1A3><EFBFBD><EFBFBD><EFBFBD>ɿƼ<C9BF><C6BC>İ<EFBFBD>Ȩ<EFBFBD><C8A8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
|
*
|
||||||
|
* <20>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD><EFBFBD> zf_device_uart_receiver
|
||||||
|
* <20><>˾<EFBFBD><CBBE><EFBFBD><EFBFBD> <20>ɶ<EFBFBD><C9B6><EFBFBD><EFBFBD>ɿƼ<C9BF><C6BC><EFBFBD><EFBFBD><EFBFBD>˾
|
||||||
|
* <20>汾<EFBFBD><E6B1BE>Ϣ <20>鿴 libraries/doc <20>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD><EFBFBD> version <20>ļ<EFBFBD> <20>汾˵<E6B1BE><CBB5>
|
||||||
|
* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ADS v1.9.20
|
||||||
|
* <20><><EFBFBD><EFBFBD>ƽ̨ TC264D
|
||||||
|
* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> https://seekfree.taobao.com/
|
||||||
|
*
|
||||||
|
* <20>ļ<DEB8>¼
|
||||||
|
* <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><>ע
|
||||||
|
* 2022-11-04 JKS first version
|
||||||
|
********************************************************************************************************************/
|
||||||
|
/*********************************************************************************************************************
|
||||||
|
* <20><><EFBFBD>߶<EFBFBD><DFB6>壺
|
||||||
|
* ------------------------------------
|
||||||
|
* ģ<><C4A3><EFBFBD>ܽ<EFBFBD> <20><>Ƭ<EFBFBD><C6AC><EFBFBD>ܽ<EFBFBD>
|
||||||
|
* TXD <20>鿴 zf_device_uart_receiver.h <20><> UART_RECEVIER_RX_PIN <20>궨<EFBFBD><EAB6A8>
|
||||||
|
* GND <20><>Դ<EFBFBD><D4B4>
|
||||||
|
* 5V 5V<35><56>Դ
|
||||||
|
* ------------------------------------
|
||||||
|
********************************************************************************************************************/
|
||||||
|
#ifndef _zf_device_uart_receiver_h
|
||||||
|
#define _zf_device_uart_receiver_h
|
||||||
|
|
||||||
|
#include "zf_common_typedef.h"
|
||||||
|
|
||||||
|
#define UART_RECEVIER_UART_INDEX UART_2 // <20><><EFBFBD>崮<EFBFBD>ڽ<EFBFBD><DABD>ջ<EFBFBD>ʹ<EFBFBD>õĴ<C3B5><C4B4><EFBFBD>
|
||||||
|
#define UART_RECEVIER_TX_PIN UART2_TX_P10_5 // ң<><D2A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ջ<EFBFBD>û<EFBFBD><C3BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ţ<EFBFBD><C5A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڴ<EFBFBD><DAB4>ڳ<EFBFBD>ʼ<EFBFBD><CABC>ʱռλʹ<CEBB><CAB9>
|
||||||
|
#define UART_RECEVIER_RX_PIN UART2_RX_P10_6 // <20><><EFBFBD>ڽ<EFBFBD><DABD>ջ<EFBFBD><D5BB><EFBFBD>TX<54><58><EFBFBD><EFBFBD> <20><><EFBFBD>ӵ<EFBFBD>Ƭ<EFBFBD><C6AC><EFBFBD><EFBFBD>RX<52><58><EFBFBD><EFBFBD>
|
||||||
|
#define SBUS_UART_BAUDRATE (100000) // ָ<><D6B8> SBUS <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʹ<EFBFBD>õĵĴ<C4B5><C4B4>ڲ<EFBFBD><DAB2><EFBFBD><EFBFBD><EFBFBD> (<28>û<EFBFBD><C3BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>)
|
||||||
|
#define UART_RECEVIER_CHANNEL_NUM ( 6 ) // <20><><EFBFBD><EFBFBD>ң<EFBFBD><D2A3><EFBFBD><EFBFBD>ͨ<EFBFBD><CDA8><EFBFBD><EFBFBD><EFBFBD><EFBFBD> (<28>û<EFBFBD><C3BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>)
|
||||||
|
|
||||||
|
#define REV_DATA_LEN ( 25 ) // SBUS֡<53><D6A1>
|
||||||
|
#define FRAME_STAR ( 0X0F ) // ֡ͷ<D6A1><CDB7>Ϣ
|
||||||
|
#define FRAME_END ( 0X00 ) // ֡β<D6A1><CEB2>Ϣ
|
||||||
|
#define SBUS_NORMAL_STATE ( 0X03 ) // <20><><EFBFBD><EFBFBD>״̬
|
||||||
|
#define SBUS_ABNORMAL_STATE ( 0X0F ) // ʧ<><CAA7>״̬
|
||||||
|
|
||||||
|
typedef struct
|
||||||
|
{
|
||||||
|
uint16 channel[UART_RECEVIER_CHANNEL_NUM]; // CH1-CH6ͨ<36><CDA8><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
|
uint8 state; // ң<><D2A3><EFBFBD><EFBFBD>״̬(1<><31>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾʧ<CABE><CAA7>)
|
||||||
|
uint8 finsh_flag; // 1<><31><EFBFBD><EFBFBD>ʾ<EFBFBD>ɹ<EFBFBD><C9B9><EFBFBD><EFBFBD>յ<EFBFBD>һ֡ң<D6A1><D2A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
|
}uart_receiver_struct;
|
||||||
|
|
||||||
|
extern uart_receiver_struct uart_receiver; // <20><><EFBFBD>ڽ<EFBFBD><DABD>ջ<EFBFBD>ͨ<EFBFBD><CDA8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>״̬
|
||||||
|
|
||||||
|
void uart_receiver_init(void);
|
||||||
|
|
||||||
|
#endif
|
||||||
@@ -404,6 +404,55 @@ void uart_rx_interrupt (uart_index_enum uart_n, uint32 status)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//-------------------------------------------------------------------------------------------------------------------
|
||||||
|
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> sbus<75><73>ʼ<EFBFBD><CABC>
|
||||||
|
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> uartn <20><><EFBFBD><EFBFBD>ͨ<EFBFBD><CDA8>(UART_0,UART_1,UART_2,UART_3)
|
||||||
|
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> baud <20><><EFBFBD>ڲ<EFBFBD><DAB2><EFBFBD><EFBFBD><EFBFBD>
|
||||||
|
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> tx_pin <20><><EFBFBD>ڷ<EFBFBD><DAB7><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ź<EFBFBD>
|
||||||
|
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> rx_pin <20><><EFBFBD>ڽ<EFBFBD><DABD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ź<EFBFBD>
|
||||||
|
// <20><><EFBFBD>ز<EFBFBD><D8B2><EFBFBD> void
|
||||||
|
// ʹ<><CAB9>ʾ<EFBFBD><CABE> uart_sbus_init(UART_2, 100000, UART2_TX_P10_5, UART2_RX_P10_6);
|
||||||
|
// <20><>ע<EFBFBD><D7A2>Ϣ
|
||||||
|
//-------------------------------------------------------------------------------------------------------------------
|
||||||
|
void uart_sbus_init (uart_index_enum uartn, uint32 baud, uart_tx_pin_enum tx_pin, uart_rx_pin_enum rx_pin)
|
||||||
|
{
|
||||||
|
|
||||||
|
boolean interrupt_state = disableInterrupts();
|
||||||
|
|
||||||
|
volatile Ifx_ASCLIN *moudle = IfxAsclin_getAddress((IfxAsclin_Index)uartn);
|
||||||
|
|
||||||
|
IfxAsclin_Asc_initModuleConfig(&uart_config, moudle); // <20><>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ýṹ<C3BD><E1B9B9>
|
||||||
|
|
||||||
|
uart_set_buffer(uartn); // <20><><EFBFBD>û<EFBFBD><C3BB><EFBFBD><EFBFBD><EFBFBD>
|
||||||
|
|
||||||
|
uart_set_interrupt_priority(uartn); // <20><><EFBFBD><EFBFBD><EFBFBD>ж<EFBFBD><D0B6><EFBFBD><EFBFBD>ȼ<EFBFBD>
|
||||||
|
|
||||||
|
uart_config.clockSource = IfxAsclin_ClockSource_ascFastClock; // ʹ<>ø<EFBFBD><C3B8><EFBFBD>ʱ<EFBFBD><CAB1> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>6.25M
|
||||||
|
uart_config.baudrate.prescaler = 4;
|
||||||
|
uart_config.baudrate.baudrate = (float32)baud;
|
||||||
|
uart_config.baudrate.oversampling = IfxAsclin_OversamplingFactor_8;
|
||||||
|
|
||||||
|
uart_config.frame.stopBit = IfxAsclin_StopBit_2; //ֹͣλ
|
||||||
|
uart_config.frame.parityType = IfxAsclin_ParityType_even; //żУ<C5BC><D0A3>
|
||||||
|
uart_config.frame.dataLength = IfxAsclin_DataLength_8;
|
||||||
|
uart_config.frame.parityBit = TRUE; //<2F><><EFBFBD><EFBFBD>У<EFBFBD><D0A3>
|
||||||
|
|
||||||
|
IfxAsclin_Asc_Pins pins; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
|
pins.cts = NULL;
|
||||||
|
pins.rts = NULL;
|
||||||
|
uart_mux(uartn, tx_pin, rx_pin, (uint32 *)&pins.tx, (uint32 *)&pins.rx);
|
||||||
|
pins.rxMode = IfxPort_InputMode_pullUp;
|
||||||
|
pins.txMode = IfxPort_OutputMode_pushPull;
|
||||||
|
pins.pinDriver = IfxPort_PadDriver_cmosAutomotiveSpeed1;
|
||||||
|
uart_config.pins = &pins;
|
||||||
|
|
||||||
|
IfxAsclin_Asc_initModule(uart_get_handle(uartn), &uart_config);
|
||||||
|
uart_rx_interrupt(uartn, 1);
|
||||||
|
uart_tx_interrupt(uartn, 0);
|
||||||
|
restoreInterrupts(interrupt_state);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
//-------------------------------------------------------------------------------------------------------------------
|
//-------------------------------------------------------------------------------------------------------------------
|
||||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>ڳ<EFBFBD>ʼ<EFBFBD><CABC>
|
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>ڳ<EFBFBD>ʼ<EFBFBD><CABC>
|
||||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> uartn <20><><EFBFBD><EFBFBD>ģ<EFBFBD><C4A3><EFBFBD><EFBFBD>(UART_0,UART_1,UART_2,UART_3)
|
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> uartn <20><><EFBFBD><EFBFBD>ģ<EFBFBD><C4A3><EFBFBD><EFBFBD>(UART_0,UART_1,UART_2,UART_3)
|
||||||
|
|||||||
@@ -125,6 +125,7 @@ uint8 uart_query_byte (uart_index_enum uartn, uint8 *dat);
|
|||||||
void uart_tx_interrupt (uart_index_enum uartn, uint32 status);
|
void uart_tx_interrupt (uart_index_enum uartn, uint32 status);
|
||||||
void uart_rx_interrupt (uart_index_enum uartn, uint32 status);
|
void uart_rx_interrupt (uart_index_enum uartn, uint32 status);
|
||||||
|
|
||||||
|
void uart_sbus_init (uart_index_enum uartn, uint32 baud, uart_tx_pin_enum tx_pin, uart_rx_pin_enum rx_pin);
|
||||||
void uart_init (uart_index_enum uartn, uint32 baud, uart_tx_pin_enum tx_pin, uart_rx_pin_enum rx_pin);
|
void uart_init (uart_index_enum uartn, uint32 baud, uart_tx_pin_enum tx_pin, uart_rx_pin_enum rx_pin);
|
||||||
//====================================================<3D><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>====================================================
|
//====================================================<3D><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>====================================================
|
||||||
|
|
||||||
|
|||||||
@@ -1,3 +1,6 @@
|
|||||||
|
V3.2.8
|
||||||
|
<20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͫ<EFBFBD><CDAB>MCU<43>汾<EFBFBD><E6B1BE><EFBFBD><EFBFBD>
|
||||||
|
<20><><EFBFBD><EFBFBD>SBUSң<53><D2A3><EFBFBD><EFBFBD><EFBFBD>ײ<EFBFBD><D7B2><EFBFBD><EFBFBD><EFBFBD>
|
||||||
V3.2.7
|
V3.2.7
|
||||||
<20><><EFBFBD><EFBFBD>RTK "D" <20><>ͷЭ<CDB7><D0AD>
|
<20><><EFBFBD><EFBFBD>RTK "D" <20><>ͷЭ<CDB7><D0AD>
|
||||||
<20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ǻ<EFBFBD>ת<EFBFBD><D7AA><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>ֹ<EFBFBD><D6B9><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
<20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ǻ<EFBFBD>ת<EFBFBD><D7AA><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>ֹ<EFBFBD><D6B9><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
|
|||||||
@@ -100,6 +100,7 @@
|
|||||||
#include "zf_device_tft180.h"
|
#include "zf_device_tft180.h"
|
||||||
#include "zf_device_tsl1401.h"
|
#include "zf_device_tsl1401.h"
|
||||||
#include "zf_device_type.h"
|
#include "zf_device_type.h"
|
||||||
|
#include "zf_device_uart_receiver.h"
|
||||||
#include "zf_device_virtual_oscilloscope.h"
|
#include "zf_device_virtual_oscilloscope.h"
|
||||||
#include "zf_device_wifi_uart.h"
|
#include "zf_device_wifi_uart.h"
|
||||||
#include "zf_device_wifi_spi.h"
|
#include "zf_device_wifi_spi.h"
|
||||||
|
|||||||
Binary file not shown.
@@ -31,6 +31,7 @@
|
|||||||
* <20>ļ<DEB8>¼
|
* <20>ļ<DEB8>¼
|
||||||
* <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><>ע
|
* <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><>ע
|
||||||
* 2022-09-15 pudding first version
|
* 2022-09-15 pudding first version
|
||||||
|
* 2024-02-02 pudding <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͫ<EFBFBD><CDAB>̬<EFBFBD>⺯<EFBFBD><E2BAAF>
|
||||||
********************************************************************************************************************/
|
********************************************************************************************************************/
|
||||||
|
|
||||||
#ifndef _zf_device_config_h_
|
#ifndef _zf_device_config_h_
|
||||||
@@ -43,5 +44,10 @@ unsigned char mt9v03x_set_config_sccb (void *soft_iic_obj, short int b
|
|||||||
unsigned char mt9v03x_set_exposure_time_sccb (unsigned short int light);
|
unsigned char mt9v03x_set_exposure_time_sccb (unsigned short int light);
|
||||||
unsigned char mt9v03x_set_reg_sccb (unsigned char addr, unsigned short int data);
|
unsigned char mt9v03x_set_reg_sccb (unsigned char addr, unsigned short int data);
|
||||||
|
|
||||||
|
unsigned char scc8660_set_config_sccb (void *soft_iic_obj, short int buff[10][2]);
|
||||||
|
unsigned char scc8660_set_brightness_sccb (unsigned short int brightness);
|
||||||
|
unsigned char scc8660_set_manual_wb_sccb (unsigned short int manual_wb);
|
||||||
|
unsigned char scc8660_set_reg_sccb (unsigned char reg, unsigned short int data);
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|||||||
@@ -31,6 +31,7 @@
|
|||||||
* <20>ļ<DEB8>¼
|
* <20>ļ<DEB8>¼
|
||||||
* <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><>ע
|
* <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><>ע
|
||||||
* 2022-09-15 pudding first version
|
* 2022-09-15 pudding first version
|
||||||
|
* 2024-02-02 pudding <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>MCU<43><55>ͫ<EFBFBD><CDAB><EFBFBD><EFBFBD>
|
||||||
********************************************************************************************************************/
|
********************************************************************************************************************/
|
||||||
/*********************************************************************************************************************
|
/*********************************************************************************************************************
|
||||||
* <20><><EFBFBD>߶<EFBFBD><DFB6>壺
|
* <20><><EFBFBD>߶<EFBFBD><DFB6>壺
|
||||||
@@ -55,9 +56,12 @@
|
|||||||
#include "zf_driver_exti.h"
|
#include "zf_driver_exti.h"
|
||||||
#include "zf_driver_gpio.h"
|
#include "zf_driver_gpio.h"
|
||||||
#include "zf_driver_uart.h"
|
#include "zf_driver_uart.h"
|
||||||
|
#include "zf_driver_soft_iic.h"
|
||||||
#include "zf_device_camera.h"
|
#include "zf_device_camera.h"
|
||||||
#include "zf_device_scc8660.h"
|
|
||||||
#include "zf_device_type.h"
|
#include "zf_device_type.h"
|
||||||
|
#include "zf_device_config.h"
|
||||||
|
|
||||||
|
#include "zf_device_scc8660.h"
|
||||||
|
|
||||||
vuint8 scc8660_finish_flag = 0; // һ<><D2BB>ͼ<EFBFBD><CDBC><EFBFBD>ɼ<EFBFBD><C9BC><EFBFBD><EFBFBD>ɱ<EFBFBD>־λ
|
vuint8 scc8660_finish_flag = 0; // һ<><D2BB>ͼ<EFBFBD><CDBC><EFBFBD>ɼ<EFBFBD><C9BC><EFBFBD><EFBFBD>ɱ<EFBFBD>־λ
|
||||||
IFX_ALIGN(4) uint16 scc8660_image[SCC8660_H][SCC8660_W];
|
IFX_ALIGN(4) uint16 scc8660_image[SCC8660_H][SCC8660_W];
|
||||||
@@ -68,6 +72,7 @@ uint8 scc8660_lost_flag = 1;
|
|||||||
uint8 scc8660_dma_int_num; // <20><>ǰDMA<4D>жϴ<D0B6><CFB4><EFBFBD>
|
uint8 scc8660_dma_int_num; // <20><>ǰDMA<4D>жϴ<D0B6><CFB4><EFBFBD>
|
||||||
uint8 scc8660_dma_init_flag; // <20>Ƿ<EFBFBD><C7B7><EFBFBD>Ҫ<EFBFBD><D2AA><EFBFBD>³<EFBFBD>ʼ<EFBFBD><CABC>
|
uint8 scc8660_dma_init_flag; // <20>Ƿ<EFBFBD><C7B7><EFBFBD>Ҫ<EFBFBD><D2AA><EFBFBD>³<EFBFBD>ʼ<EFBFBD><CABC>
|
||||||
|
|
||||||
|
static scc8660_type_enum scc8660_type;
|
||||||
|
|
||||||
// <20><>Ҫ<EFBFBD><D2AA><EFBFBD>õ<EFBFBD><C3B5><EFBFBD><EFBFBD><EFBFBD>ͷ<EFBFBD><CDB7><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>IJ<DEB8><C4B2><EFBFBD>
|
// <20><>Ҫ<EFBFBD><D2AA><EFBFBD>õ<EFBFBD><C3B5><EFBFBD><EFBFBD><EFBFBD>ͷ<EFBFBD><CDB7><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>IJ<DEB8><C4B2><EFBFBD>
|
||||||
static int16 scc8660_set_confing_buffer[SCC8660_CONFIG_FINISH][2]=
|
static int16 scc8660_set_confing_buffer[SCC8660_CONFIG_FINISH][2]=
|
||||||
@@ -77,7 +82,7 @@ static int16 scc8660_set_confing_buffer[SCC8660_CONFIG_FINISH][2]=
|
|||||||
{SCC8660_AUTO_EXP, SCC8660_AUTO_EXP_DEF}, // <20>Զ<EFBFBD><D4B6>ع<EFBFBD>
|
{SCC8660_AUTO_EXP, SCC8660_AUTO_EXP_DEF}, // <20>Զ<EFBFBD><D4B6>ع<EFBFBD>
|
||||||
{SCC8660_BRIGHT, SCC8660_BRIGHT_DEF}, // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
{SCC8660_BRIGHT, SCC8660_BRIGHT_DEF}, // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
{SCC8660_FPS, SCC8660_FPS_DEF}, // ͼ<><CDBC>֡<EFBFBD><D6A1>
|
{SCC8660_FPS, SCC8660_FPS_DEF}, // ͼ<><CDBC>֡<EFBFBD><D6A1>
|
||||||
{SCC8660_SET_COL, SCC8660_W}, // ͼ<><CDBC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
{SCC8660_SET_COL, SCC8660_W * 4}, // ͼ<><CDBC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
{SCC8660_SET_ROW, SCC8660_H}, // ͼ<><CDBC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
{SCC8660_SET_ROW, SCC8660_H}, // ͼ<><CDBC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
{SCC8660_PCLK_DIV, SCC8660_PCLK_DIV_DEF}, // PCLK<4C><4B>Ƶϵ<C6B5><CFB5>
|
{SCC8660_PCLK_DIV, SCC8660_PCLK_DIV_DEF}, // PCLK<4C><4B>Ƶϵ<C6B5><CFB5>
|
||||||
{SCC8660_PCLK_MODE, SCC8660_PCLK_MODE_DEF}, // PCLKģʽ
|
{SCC8660_PCLK_MODE, SCC8660_PCLK_MODE_DEF}, // PCLKģʽ
|
||||||
@@ -214,71 +219,6 @@ static void scc8660_uart_callback (void)
|
|||||||
fifo_write_element(&camera_receiver_fifo, data);
|
fifo_write_element(&camera_receiver_fifo, data);
|
||||||
}
|
}
|
||||||
|
|
||||||
//-------------------------------------------------------------------------------------------------------------------
|
|
||||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> SCC8660<36><30><EFBFBD><EFBFBD>ͷ<EFBFBD><CDB7><EFBFBD>ж<EFBFBD>
|
|
||||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> void
|
|
||||||
// <20><><EFBFBD>ز<EFBFBD><D8B2><EFBFBD> void
|
|
||||||
// ʹ<><CAB9>ʾ<EFBFBD><CABE> scc8660_vsync_handler();
|
|
||||||
//-------------------------------------------------------------------------------------------------------------------
|
|
||||||
static void scc8660_vsync_handler(void)
|
|
||||||
{
|
|
||||||
exti_flag_clear(SCC8660_VSYNC_PIN);
|
|
||||||
scc8660_dma_int_num = 0;
|
|
||||||
if(scc8660_dma_init_flag || scc8660_lost_flag)
|
|
||||||
{
|
|
||||||
scc8660_dma_init_flag = 0;
|
|
||||||
IfxDma_resetChannel(&MODULE_DMA, SCC8660_DMA_CH);
|
|
||||||
scc8660_link_list_num = dma_init(SCC8660_DMA_CH,
|
|
||||||
SCC8660_DATA_ADD,
|
|
||||||
(uint8 *)scc8660_image[0],
|
|
||||||
SCC8660_PCLK_PIN,
|
|
||||||
EXTI_TRIGGER_RISING,
|
|
||||||
SCC8660_IMAGE_SIZE); // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƶ<EFBFBD><C6B5>300M <20><><EFBFBD><EFBFBD><EFBFBD>ڶ<EFBFBD><DAB6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ΪFALLING
|
|
||||||
dma_enable(SCC8660_DMA_CH);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
if(1 == scc8660_link_list_num)
|
|
||||||
{
|
|
||||||
dma_set_destination(SCC8660_DMA_CH, (uint8 *)scc8660_image[0]); // û<>в<EFBFBD><D0B2><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ӵ<EFBFBD><D3B4><EFBFBD>ģʽ <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ŀ<EFBFBD>ĵ<EFBFBD>ַ
|
|
||||||
}
|
|
||||||
dma_enable(SCC8660_DMA_CH);
|
|
||||||
}
|
|
||||||
scc8660_lost_flag = 1;
|
|
||||||
}
|
|
||||||
|
|
||||||
//-------------------------------------------------------------------------------------------------------------------
|
|
||||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> SCC8660<36><30><EFBFBD><EFBFBD>ͷDMA<4D><41><EFBFBD><EFBFBD><EFBFBD>ж<EFBFBD>
|
|
||||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> void
|
|
||||||
// <20><><EFBFBD>ز<EFBFBD><D8B2><EFBFBD> void
|
|
||||||
// ʹ<><CAB9>ʾ<EFBFBD><CABE> scc8660_dma_handler();
|
|
||||||
//-------------------------------------------------------------------------------------------------------------------
|
|
||||||
static void scc8660_dma_handler(void)
|
|
||||||
{
|
|
||||||
clear_dma_flag(SCC8660_DMA_CH);
|
|
||||||
|
|
||||||
if(IfxDma_getChannelTransactionRequestLost(&MODULE_DMA, SCC8660_DMA_CH)) // ͼ<><CDBC><EFBFBD><EFBFBD>λ<EFBFBD>ж<EFBFBD>
|
|
||||||
{
|
|
||||||
scc8660_finish_flag = 0;
|
|
||||||
dma_disable(SCC8660_DMA_CH);
|
|
||||||
IfxDma_clearChannelTransactionRequestLost(&MODULE_DMA, SCC8660_DMA_CH);
|
|
||||||
scc8660_dma_init_flag = 1;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
scc8660_dma_int_num++;
|
|
||||||
if(scc8660_dma_int_num >= scc8660_link_list_num)
|
|
||||||
{
|
|
||||||
// <20>ɼ<EFBFBD><C9BC><EFBFBD><EFBFBD><EFBFBD>
|
|
||||||
// һ<><D2BB>ͼ<EFBFBD><CDBC><EFBFBD>Ӳɼ<D3B2><C9BC><EFBFBD>ʼ<EFBFBD><CABC><EFBFBD>ɼ<EFBFBD><C9BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ3.8MS<EFBFBD><EFBFBD><EFBFBD><EFBFBD>(50FPS<50><53>188*120<32>ֱ<EFBFBD><D6B1><EFBFBD>)
|
|
||||||
scc8660_dma_int_num = 0;
|
|
||||||
scc8660_lost_flag = 0;
|
|
||||||
scc8660_finish_flag = 1;
|
|
||||||
dma_disable(SCC8660_DMA_CH);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
//-------------------------------------------------------------------------------------------------------------------
|
//-------------------------------------------------------------------------------------------------------------------
|
||||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD>ͷ ID
|
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD>ͷ ID
|
||||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> void
|
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> void
|
||||||
@@ -390,38 +330,46 @@ uint16 scc8660_get_version (void)
|
|||||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͼ<EFBFBD><CDBC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͼ<EFBFBD><CDBC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> data <20><>Ҫ<EFBFBD><D2AA><EFBFBD>õ<EFBFBD><C3B5><EFBFBD><EFBFBD><EFBFBD>ֵ
|
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> data <20><>Ҫ<EFBFBD><D2AA><EFBFBD>õ<EFBFBD><C3B5><EFBFBD><EFBFBD><EFBFBD>ֵ
|
||||||
// <20><><EFBFBD>ز<EFBFBD><D8B2><EFBFBD> uint8 1-ʧ<><CAA7> 0-<2D>ɹ<EFBFBD>
|
// <20><><EFBFBD>ز<EFBFBD><D8B2><EFBFBD> uint8 1-ʧ<><CAA7> 0-<2D>ɹ<EFBFBD>
|
||||||
// ʹ<><CAB9>ʾ<EFBFBD><CABE> scc8660_set_bright(data);
|
// ʹ<><CAB9>ʾ<EFBFBD><CABE> scc8660_set_brightness(data);
|
||||||
// <20><>ע<EFBFBD><D7A2>Ϣ <20><><EFBFBD>øú<C3B8><C3BA><EFBFBD>ǰ<EFBFBD><C7B0><EFBFBD>ȳ<EFBFBD>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͷ<EFBFBD><CDB7><EFBFBD>ô<EFBFBD><C3B4><EFBFBD> ͨ<><CDA8><EFBFBD>ú<EFBFBD><C3BA><EFBFBD><EFBFBD><EFBFBD><EFBFBD>õIJ<C3B5><C4B2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ᱻ51<35><31>Ƭ<EFBFBD><C6AC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
// <20><>ע<EFBFBD><D7A2>Ϣ <20><><EFBFBD>øú<C3B8><C3BA><EFBFBD>ǰ<EFBFBD><C7B0><EFBFBD>ȳ<EFBFBD>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͷ<EFBFBD><CDB7><EFBFBD>ô<EFBFBD><C3B4><EFBFBD> ͨ<><CDA8><EFBFBD>ú<EFBFBD><C3BA><EFBFBD><EFBFBD><EFBFBD><EFBFBD>õIJ<C3B5><C4B2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ᱻ51<35><31>Ƭ<EFBFBD><C6AC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
//-------------------------------------------------------------------------------------------------------------------
|
//-------------------------------------------------------------------------------------------------------------------
|
||||||
uint8 scc8660_set_bright (uint16 data)
|
uint8 scc8660_set_brightness (uint16 data)
|
||||||
{
|
{
|
||||||
uint8 return_state = 0;
|
uint8 return_state = 0;
|
||||||
uint8 uart_buffer[4];
|
|
||||||
uint16 temp;
|
|
||||||
uint16 timeout_count = 0;
|
|
||||||
uint32 uart_buffer_index = 0;
|
|
||||||
|
|
||||||
uart_buffer[0] = 0xA5;
|
if(SCC8660_UART == scc8660_type)
|
||||||
uart_buffer[1] = SCC8660_SET_BRIGHT;
|
|
||||||
uart_buffer[2] = data >> 8;
|
|
||||||
uart_buffer[3] = (uint8)data;
|
|
||||||
|
|
||||||
uart_write_buffer(SCC8660_COF_UART, uart_buffer, 4);
|
|
||||||
|
|
||||||
do
|
|
||||||
{
|
{
|
||||||
if(3 <= fifo_used(&camera_receiver_fifo))
|
uint8 uart_buffer[4];
|
||||||
|
uint16 temp;
|
||||||
|
uint16 timeout_count = 0;
|
||||||
|
uint32 uart_buffer_index = 0;
|
||||||
|
|
||||||
|
uart_buffer[0] = 0xA5;
|
||||||
|
uart_buffer[1] = SCC8660_SET_BRIGHT;
|
||||||
|
uart_buffer[2] = data >> 8;
|
||||||
|
uart_buffer[3] = (uint8)data;
|
||||||
|
|
||||||
|
uart_write_buffer(SCC8660_COF_UART, uart_buffer, 4);
|
||||||
|
|
||||||
|
do
|
||||||
{
|
{
|
||||||
uart_buffer_index = 3;
|
if(3 <= fifo_used(&camera_receiver_fifo))
|
||||||
fifo_read_buffer(&camera_receiver_fifo, uart_buffer, &uart_buffer_index, FIFO_READ_AND_CLEAN);
|
{
|
||||||
temp = uart_buffer[1] << 8 | uart_buffer[2];
|
uart_buffer_index = 3;
|
||||||
break;
|
fifo_read_buffer(&camera_receiver_fifo, uart_buffer, &uart_buffer_index, FIFO_READ_AND_CLEAN);
|
||||||
|
temp = uart_buffer[1] << 8 | uart_buffer[2];
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
system_delay_ms(1);
|
||||||
|
}while(SCC8660_INIT_TIMEOUT > timeout_count ++);
|
||||||
|
if((temp != data) || (SCC8660_INIT_TIMEOUT <= timeout_count))
|
||||||
|
{
|
||||||
|
return_state = 1;
|
||||||
}
|
}
|
||||||
system_delay_ms(1);
|
}
|
||||||
}while(SCC8660_INIT_TIMEOUT > timeout_count ++);
|
else
|
||||||
if((temp != data) || (SCC8660_INIT_TIMEOUT <= timeout_count))
|
|
||||||
{
|
{
|
||||||
return_state = 1;
|
return_state = scc8660_set_brightness_sccb(data);
|
||||||
}
|
}
|
||||||
return return_state;
|
return return_state;
|
||||||
}
|
}
|
||||||
@@ -436,32 +384,40 @@ uint8 scc8660_set_bright (uint16 data)
|
|||||||
uint8 scc8660_set_white_balance (uint16 data)
|
uint8 scc8660_set_white_balance (uint16 data)
|
||||||
{
|
{
|
||||||
uint8 return_state = 0;
|
uint8 return_state = 0;
|
||||||
uint8 uart_buffer[4];
|
|
||||||
uint16 temp;
|
|
||||||
uint16 timeout_count = 0;
|
|
||||||
uint32 uart_buffer_index = 0;
|
|
||||||
|
|
||||||
uart_buffer[0] = 0xA5;
|
if(SCC8660_UART == scc8660_type)
|
||||||
uart_buffer[1] = SCC8660_SET_MANUAL_WB;
|
|
||||||
uart_buffer[2] = data >> 8;
|
|
||||||
uart_buffer[3] = (uint8)data;
|
|
||||||
|
|
||||||
uart_write_buffer(SCC8660_COF_UART, uart_buffer, 4);
|
|
||||||
|
|
||||||
do
|
|
||||||
{
|
{
|
||||||
if(3 <= fifo_used(&camera_receiver_fifo))
|
uint8 uart_buffer[4];
|
||||||
|
uint16 temp;
|
||||||
|
uint16 timeout_count = 0;
|
||||||
|
uint32 uart_buffer_index = 0;
|
||||||
|
|
||||||
|
uart_buffer[0] = 0xA5;
|
||||||
|
uart_buffer[1] = SCC8660_SET_MANUAL_WB;
|
||||||
|
uart_buffer[2] = data >> 8;
|
||||||
|
uart_buffer[3] = (uint8)data;
|
||||||
|
|
||||||
|
uart_write_buffer(SCC8660_COF_UART, uart_buffer, 4);
|
||||||
|
|
||||||
|
do
|
||||||
{
|
{
|
||||||
uart_buffer_index = 3;
|
if(3 <= fifo_used(&camera_receiver_fifo))
|
||||||
fifo_read_buffer(&camera_receiver_fifo, uart_buffer, &uart_buffer_index, FIFO_READ_AND_CLEAN);
|
{
|
||||||
temp = uart_buffer[1] << 8 | uart_buffer[2];
|
uart_buffer_index = 3;
|
||||||
break;
|
fifo_read_buffer(&camera_receiver_fifo, uart_buffer, &uart_buffer_index, FIFO_READ_AND_CLEAN);
|
||||||
|
temp = uart_buffer[1] << 8 | uart_buffer[2];
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
system_delay_ms(1);
|
||||||
|
}while(SCC8660_INIT_TIMEOUT > timeout_count ++);
|
||||||
|
if((temp != data) || (SCC8660_INIT_TIMEOUT <= timeout_count))
|
||||||
|
{
|
||||||
|
return_state = 1;
|
||||||
}
|
}
|
||||||
system_delay_ms(1);
|
}
|
||||||
}while(SCC8660_INIT_TIMEOUT > timeout_count ++);
|
else
|
||||||
if((temp != data) || (SCC8660_INIT_TIMEOUT <= timeout_count))
|
|
||||||
{
|
{
|
||||||
return_state = 1;
|
return_state = scc8660_set_manual_wb_sccb(data);
|
||||||
}
|
}
|
||||||
return return_state;
|
return return_state;
|
||||||
}
|
}
|
||||||
@@ -477,43 +433,117 @@ uint8 scc8660_set_white_balance (uint16 data)
|
|||||||
uint8 scc8660_set_reg (uint8 addr, uint16 data)
|
uint8 scc8660_set_reg (uint8 addr, uint16 data)
|
||||||
{
|
{
|
||||||
uint8 return_state = 0;
|
uint8 return_state = 0;
|
||||||
uint8 uart_buffer[4];
|
|
||||||
uint16 temp;
|
|
||||||
uint16 timeout_count = 0;
|
|
||||||
uint32 uart_buffer_index = 0;
|
|
||||||
|
|
||||||
uart_buffer[0] = 0xA5;
|
if(SCC8660_UART == scc8660_type)
|
||||||
uart_buffer[1] = SCC8660_SET_REG_ADDR;
|
|
||||||
uart_buffer[2] = 0x00;
|
|
||||||
uart_buffer[3] = (uint8)addr;
|
|
||||||
uart_write_buffer(SCC8660_COF_UART, uart_buffer, 4);
|
|
||||||
|
|
||||||
system_delay_ms(10);
|
|
||||||
uart_buffer[0] = 0xA5;
|
|
||||||
uart_buffer[1] = SCC8660_SET_REG_DATA;
|
|
||||||
temp = data;
|
|
||||||
uart_buffer[2] = temp >> 8;
|
|
||||||
uart_buffer[3] = (uint8)temp;
|
|
||||||
uart_write_buffer(SCC8660_COF_UART, uart_buffer, 4);
|
|
||||||
|
|
||||||
do
|
|
||||||
{
|
{
|
||||||
if(3 <= fifo_used(&camera_receiver_fifo))
|
uint8 uart_buffer[4];
|
||||||
|
uint16 temp;
|
||||||
|
uint16 timeout_count = 0;
|
||||||
|
uint32 uart_buffer_index = 0;
|
||||||
|
|
||||||
|
uart_buffer[0] = 0xA5;
|
||||||
|
uart_buffer[1] = SCC8660_SET_REG_ADDR;
|
||||||
|
uart_buffer[2] = 0x00;
|
||||||
|
uart_buffer[3] = (uint8)addr;
|
||||||
|
uart_write_buffer(SCC8660_COF_UART, uart_buffer, 4);
|
||||||
|
|
||||||
|
system_delay_ms(10);
|
||||||
|
uart_buffer[0] = 0xA5;
|
||||||
|
uart_buffer[1] = SCC8660_SET_REG_DATA;
|
||||||
|
temp = data;
|
||||||
|
uart_buffer[2] = temp >> 8;
|
||||||
|
uart_buffer[3] = (uint8)temp;
|
||||||
|
uart_write_buffer(SCC8660_COF_UART, uart_buffer, 4);
|
||||||
|
|
||||||
|
do
|
||||||
{
|
{
|
||||||
uart_buffer_index = 3;
|
if(3 <= fifo_used(&camera_receiver_fifo))
|
||||||
fifo_read_buffer(&camera_receiver_fifo, uart_buffer, &uart_buffer_index, FIFO_READ_AND_CLEAN);
|
{
|
||||||
temp = uart_buffer[1] << 8 | uart_buffer[2];
|
uart_buffer_index = 3;
|
||||||
break;
|
fifo_read_buffer(&camera_receiver_fifo, uart_buffer, &uart_buffer_index, FIFO_READ_AND_CLEAN);
|
||||||
|
temp = uart_buffer[1] << 8 | uart_buffer[2];
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
system_delay_ms(1);
|
||||||
|
}while(SCC8660_INIT_TIMEOUT > timeout_count ++);
|
||||||
|
if((temp != data) || (SCC8660_INIT_TIMEOUT <= timeout_count))
|
||||||
|
{
|
||||||
|
return_state = 1;
|
||||||
}
|
}
|
||||||
system_delay_ms(1);
|
|
||||||
}while(SCC8660_INIT_TIMEOUT > timeout_count ++);
|
}
|
||||||
if((temp != data) || (SCC8660_INIT_TIMEOUT <= timeout_count))
|
else
|
||||||
{
|
{
|
||||||
return_state = 1;
|
return_state = scc8660_set_reg_sccb(addr, data);
|
||||||
}
|
}
|
||||||
return return_state;
|
return return_state;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//-------------------------------------------------------------------------------------------------------------------
|
||||||
|
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> SCC8660<36><30><EFBFBD><EFBFBD>ͷ<EFBFBD><CDB7><EFBFBD>ж<EFBFBD>
|
||||||
|
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> void
|
||||||
|
// <20><><EFBFBD>ز<EFBFBD><D8B2><EFBFBD> void
|
||||||
|
// ʹ<><CAB9>ʾ<EFBFBD><CABE> scc8660_vsync_handler();
|
||||||
|
//-------------------------------------------------------------------------------------------------------------------
|
||||||
|
static void scc8660_vsync_handler(void)
|
||||||
|
{
|
||||||
|
exti_flag_clear(SCC8660_VSYNC_PIN);
|
||||||
|
scc8660_dma_int_num = 0;
|
||||||
|
if(scc8660_dma_init_flag || scc8660_lost_flag)
|
||||||
|
{
|
||||||
|
scc8660_dma_init_flag = 0;
|
||||||
|
IfxDma_resetChannel(&MODULE_DMA, SCC8660_DMA_CH);
|
||||||
|
scc8660_link_list_num = dma_init(SCC8660_DMA_CH,
|
||||||
|
SCC8660_DATA_ADD,
|
||||||
|
(uint8 *)scc8660_image[0],
|
||||||
|
SCC8660_PCLK_PIN,
|
||||||
|
EXTI_TRIGGER_RISING,
|
||||||
|
SCC8660_IMAGE_SIZE);
|
||||||
|
dma_enable(SCC8660_DMA_CH);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
if(1 == scc8660_link_list_num)
|
||||||
|
{
|
||||||
|
dma_set_destination(SCC8660_DMA_CH, (uint8 *)scc8660_image[0]); // û<>в<EFBFBD><D0B2><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ӵ<EFBFBD><D3B4><EFBFBD>ģʽ <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ŀ<EFBFBD>ĵ<EFBFBD>ַ
|
||||||
|
}
|
||||||
|
dma_enable(SCC8660_DMA_CH);
|
||||||
|
}
|
||||||
|
scc8660_lost_flag = 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
//-------------------------------------------------------------------------------------------------------------------
|
||||||
|
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> SCC8660<36><30><EFBFBD><EFBFBD>ͷDMA<4D><41><EFBFBD><EFBFBD><EFBFBD>ж<EFBFBD>
|
||||||
|
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> void
|
||||||
|
// <20><><EFBFBD>ز<EFBFBD><D8B2><EFBFBD> void
|
||||||
|
// ʹ<><CAB9>ʾ<EFBFBD><CABE> scc8660_dma_handler();
|
||||||
|
//-------------------------------------------------------------------------------------------------------------------
|
||||||
|
static void scc8660_dma_handler(void)
|
||||||
|
{
|
||||||
|
clear_dma_flag(SCC8660_DMA_CH);
|
||||||
|
|
||||||
|
if(IfxDma_getChannelTransactionRequestLost(&MODULE_DMA, SCC8660_DMA_CH)) // ͼ<><CDBC><EFBFBD><EFBFBD>λ<EFBFBD>ж<EFBFBD>
|
||||||
|
{
|
||||||
|
scc8660_finish_flag = 0;
|
||||||
|
dma_disable(SCC8660_DMA_CH);
|
||||||
|
IfxDma_clearChannelTransactionRequestLost(&MODULE_DMA, SCC8660_DMA_CH);
|
||||||
|
scc8660_dma_init_flag = 1;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
scc8660_dma_int_num++;
|
||||||
|
if(scc8660_dma_int_num >= scc8660_link_list_num)
|
||||||
|
{
|
||||||
|
// <20>ɼ<EFBFBD><C9BC><EFBFBD><EFBFBD><EFBFBD>
|
||||||
|
// һ<><D2BB>ͼ<EFBFBD><CDBC><EFBFBD>Ӳɼ<D3B2><C9BC><EFBFBD>ʼ<EFBFBD><CABC><EFBFBD>ɼ<EFBFBD><C9BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ3.8MS<EFBFBD><EFBFBD><EFBFBD><EFBFBD>(50FPS<50><53>188*120<32>ֱ<EFBFBD><D6B1><EFBFBD>)
|
||||||
|
scc8660_dma_int_num = 0;
|
||||||
|
scc8660_lost_flag = 0;
|
||||||
|
scc8660_finish_flag = 1;
|
||||||
|
dma_disable(SCC8660_DMA_CH);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
//-------------------------------------------------------------------------------------------------------------------
|
//-------------------------------------------------------------------------------------------------------------------
|
||||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> SCC8660 <20><><EFBFBD><EFBFBD>ͷ<EFBFBD><CDB7>ʼ<EFBFBD><CABC>
|
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> SCC8660 <20><><EFBFBD><EFBFBD>ͷ<EFBFBD><CDB7>ʼ<EFBFBD><CABC>
|
||||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> void
|
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> void
|
||||||
@@ -524,51 +554,54 @@ uint8 scc8660_set_reg (uint8 addr, uint16 data)
|
|||||||
uint8 scc8660_init (void)
|
uint8 scc8660_init (void)
|
||||||
{
|
{
|
||||||
uint8 return_state = 0;
|
uint8 return_state = 0;
|
||||||
uint16 scc8660_version = 0;
|
soft_iic_info_struct scc8660_iic_struct;
|
||||||
|
|
||||||
|
// <20><>ʼ<EFBFBD><CABC>֮ǰ<D6AE><C7B0><EFBFBD>߳<EFBFBD><DFB3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
gpio_init(P02_0, GPO, GPIO_HIGH, GPO_PUSH_PULL);
|
gpio_init(P02_0, GPO, GPIO_HIGH, GPO_PUSH_PULL);
|
||||||
gpio_init(P02_1, GPO, GPIO_HIGH, GPO_PUSH_PULL);
|
gpio_init(P02_1, GPO, GPIO_HIGH, GPO_PUSH_PULL);
|
||||||
|
|
||||||
// <20><>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͷ
|
|
||||||
uart_init(SCC8660_COF_UART, SCC8660_COF_BAUR, SCC8660_COF_UART_RX, SCC8660_COF_UART_TX);
|
|
||||||
uart_rx_interrupt(SCC8660_COF_UART, 1);
|
|
||||||
|
|
||||||
system_delay_ms(200);
|
|
||||||
|
|
||||||
set_camera_type(CAMERA_COLOR, scc8660_vsync_handler, scc8660_dma_handler, scc8660_uart_callback); // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͷ<EFBFBD><CDB7><EFBFBD><EFBFBD>
|
|
||||||
camera_fifo_init();
|
|
||||||
do
|
do
|
||||||
{
|
{
|
||||||
// <20>ȴ<EFBFBD><C8B4><EFBFBD><EFBFBD><EFBFBD>ͷ<EFBFBD>ϵ<EFBFBD><CFB5><EFBFBD>ʼ<EFBFBD><CABC><EFBFBD>ɹ<EFBFBD> <20><>ʽ<EFBFBD><CABD><EFBFBD><EFBFBD><EFBFBD>֣<EFBFBD><D6A3><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD>ͨ<EFBFBD><CDA8><EFBFBD><EFBFBD>ȡ<EFBFBD><C8A1><EFBFBD>õķ<C3B5>ʽ <20><>ѡһ
|
system_delay_ms(200);
|
||||||
// system_delay_ms(1000); // <20><>ʱ<EFBFBD><CAB1>ʽ
|
set_camera_type(CAMERA_COLOR, scc8660_vsync_handler, scc8660_dma_handler, NULL); // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͷ<EFBFBD><CDB7><EFBFBD><EFBFBD>
|
||||||
scc8660_version = scc8660_get_version(); // <20><>ȡ<EFBFBD><C8A1><EFBFBD>õķ<C3B5>ʽ
|
// <20><><EFBFBD>ȳ<EFBFBD><C8B3><EFBFBD>SCCBͨѶ
|
||||||
if(scc8660_set_config(scc8660_set_confing_buffer))
|
scc8660_type = SCC8660_SCCB;
|
||||||
|
soft_iic_init(&scc8660_iic_struct, 0, SCC8660_COF_IIC_DELAY, SCC8660_COF_IIC_SCL, SCC8660_COF_IIC_SDA);
|
||||||
|
if(scc8660_set_config_sccb(&scc8660_iic_struct, scc8660_set_confing_buffer))
|
||||||
{
|
{
|
||||||
set_camera_type(NO_CAMERE, NULL, NULL, NULL);
|
// SCCBͨѶʧ<D1B6>ܣ<EFBFBD><DCA3><EFBFBD><EFBFBD>Դ<EFBFBD><D4B4><EFBFBD>ͨѶ
|
||||||
return_state = 1;
|
scc8660_type = SCC8660_UART;
|
||||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>˶<EFBFBD><CBB6><EFBFBD><EFBFBD><EFBFBD>Ϣ <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD>λ<EFBFBD><CEBB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
camera_fifo_init();
|
||||||
// <20><>ô<EFBFBD><EFBFBD><EFBFBD>Ǵ<EFBFBD><EFBFBD><EFBFBD>ͨ<EFBFBD>ų<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD>˳<EFBFBD><EFBFBD><EFBFBD>
|
set_camera_type(CAMERA_COLOR, scc8660_vsync_handler, scc8660_dma_handler, &scc8660_uart_callback); // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͷ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
// <20><><EFBFBD><EFBFBD>һ<EFBFBD>½<EFBFBD><C2BD><EFBFBD><EFBFBD><EFBFBD>û<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>û<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ܾ<EFBFBD><EFBFBD>ǻ<EFBFBD><EFBFBD><EFBFBD>
|
uart_init (SCC8660_COF_UART, SCC8660_COF_BAUR, SCC8660_COF_UART_RX, SCC8660_COF_UART_TX); //<2F><>ʼ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͷ
|
||||||
zf_log(0, "SCC8660 set config error.");
|
uart_rx_interrupt(SCC8660_COF_UART, 1);
|
||||||
break;
|
fifo_clear(&camera_receiver_fifo);
|
||||||
}
|
|
||||||
|
|
||||||
if(0 == return_state)
|
if(scc8660_set_config(scc8660_set_confing_buffer))
|
||||||
{
|
|
||||||
// <20><>ȡ<EFBFBD><C8A1><EFBFBD>ñ<EFBFBD><C3B1>ڲ鿴<DAB2><E9BFB4><EFBFBD><EFBFBD><EFBFBD>Ƿ<EFBFBD><C7B7><EFBFBD>ȷ
|
|
||||||
if(scc8660_get_config(scc8660_get_confing_buffer))
|
|
||||||
{
|
{
|
||||||
set_camera_type(NO_CAMERE, NULL, NULL, NULL);
|
|
||||||
return_state = 1;
|
|
||||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>˶<EFBFBD><CBB6><EFBFBD><EFBFBD><EFBFBD>Ϣ <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD>λ<EFBFBD><CEBB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>˶<EFBFBD><CBB6><EFBFBD><EFBFBD><EFBFBD>Ϣ <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD>λ<EFBFBD><CEBB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
// <20><>ô<EFBFBD><C3B4><EFBFBD>Ǵ<EFBFBD><EFBFBD><EFBFBD>ͨ<EFBFBD>ų<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD>˳<EFBFBD><EFBFBD><EFBFBD>
|
// <20><>ô<EFBFBD><C3B4><EFBFBD><EFBFBD>ͨ<EFBFBD>ų<EFBFBD><C5B3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD>˳<EFBFBD><CBB3><EFBFBD>
|
||||||
// <20><><EFBFBD><EFBFBD>һ<EFBFBD>½<EFBFBD><C2BD><EFBFBD><EFBFBD><EFBFBD>û<EFBFBD><C3BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>û<EFBFBD><C3BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ܾ<EFBFBD><DCBE>ǻ<EFBFBD><C7BB><EFBFBD>
|
// <20><><EFBFBD><EFBFBD>һ<EFBFBD>½<EFBFBD><C2BD><EFBFBD><EFBFBD><EFBFBD>û<EFBFBD><C3BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>û<EFBFBD><C3BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ܾ<EFBFBD><DCBE>ǻ<EFBFBD><C7BB><EFBFBD>
|
||||||
zf_log(0, "SCC8660 set config error.");
|
zf_log(0, "SCC8660 set config error.");
|
||||||
|
set_camera_type(NO_CAMERE, NULL, NULL, NULL);
|
||||||
|
return_state = 1;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
scc8660_link_list_num = camera_init(SCC8660_DATA_ADD, (uint8 *)scc8660_image[0], SCC8660_IMAGE_SIZE);
|
// <20><>ȡ<EFBFBD><C8A1><EFBFBD>ñ<EFBFBD><C3B1>ڲ鿴<DAB2><E9BFB4><EFBFBD><EFBFBD><EFBFBD>Ƿ<EFBFBD><C7B7><EFBFBD>ȷ
|
||||||
|
if(scc8660_get_config(scc8660_get_confing_buffer))
|
||||||
|
{
|
||||||
|
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>˶<EFBFBD><CBB6><EFBFBD><EFBFBD><EFBFBD>Ϣ <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD>λ<EFBFBD><CEBB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
|
// <20><>ô<EFBFBD><C3B4><EFBFBD>Ǵ<EFBFBD><C7B4><EFBFBD>ͨ<EFBFBD>ų<EFBFBD><C5B3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD>˳<EFBFBD><CBB3><EFBFBD>
|
||||||
|
// <20><><EFBFBD><EFBFBD>һ<EFBFBD>½<EFBFBD><C2BD><EFBFBD><EFBFBD><EFBFBD>û<EFBFBD><C3BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>û<EFBFBD><C3BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ܾ<EFBFBD><DCBE>ǻ<EFBFBD><C7BB><EFBFBD>
|
||||||
|
zf_log(0, "SCC8660 get config error.");
|
||||||
|
set_camera_type(NO_CAMERE, NULL, NULL, NULL);
|
||||||
|
return_state = 1;
|
||||||
|
break;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
scc8660_link_list_num = camera_init(SCC8660_DATA_ADD, (uint8 *)scc8660_image[0], SCC8660_IMAGE_SIZE);
|
||||||
}while(0);
|
}while(0);
|
||||||
|
|
||||||
return return_state;
|
return return_state;
|
||||||
|
|||||||
@@ -31,7 +31,7 @@
|
|||||||
* <20>ļ<DEB8>¼
|
* <20>ļ<DEB8>¼
|
||||||
* <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><>ע
|
* <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><>ע
|
||||||
* 2022-09-15 pudding first version
|
* 2022-09-15 pudding first version
|
||||||
* 2023-04-28 pudding <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ע<EFBFBD><EFBFBD>˵<EFBFBD><EFBFBD>
|
* 2024-02-02 pudding <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>MCU<EFBFBD><EFBFBD>ͫ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
********************************************************************************************************************/
|
********************************************************************************************************************/
|
||||||
/*********************************************************************************************************************
|
/*********************************************************************************************************************
|
||||||
* <20><><EFBFBD>߶<EFBFBD><DFB6>壺
|
* <20><><EFBFBD>߶<EFBFBD><DFB6>壺
|
||||||
@@ -59,35 +59,36 @@
|
|||||||
#define SCC8660_COF_UART_TX (UART1_RX_P02_3) // <20><>ͫ UART-TX <20><><EFBFBD><EFBFBD> Ҫ<><D2AA><EFBFBD>ڵ<EFBFBD>Ƭ<EFBFBD><C6AC> RX <20><>
|
#define SCC8660_COF_UART_TX (UART1_RX_P02_3) // <20><>ͫ UART-TX <20><><EFBFBD><EFBFBD> Ҫ<><D2AA><EFBFBD>ڵ<EFBFBD>Ƭ<EFBFBD><C6AC> RX <20><>
|
||||||
#define SCC8660_COF_UART_RX (UART1_TX_P02_2) // <20><>ͫ UART-RX <20><><EFBFBD><EFBFBD> Ҫ<><D2AA><EFBFBD>ڵ<EFBFBD>Ƭ<EFBFBD><C6AC> TX <20><>
|
#define SCC8660_COF_UART_RX (UART1_TX_P02_2) // <20><>ͫ UART-RX <20><><EFBFBD><EFBFBD> Ҫ<><D2AA><EFBFBD>ڵ<EFBFBD>Ƭ<EFBFBD><C6AC> TX <20><>
|
||||||
|
|
||||||
|
#define SCC8660_COF_IIC_DELAY (800) // <20><>ͫ IIC <20><>ʱ
|
||||||
|
#define SCC8660_COF_IIC_SCL (P02_3) // <20><>ͫ IIC-SCL <20><><EFBFBD><EFBFBD>
|
||||||
|
#define SCC8660_COF_IIC_SDA (P02_2) // <20><>ͫ IIC-SDA <20><><EFBFBD><EFBFBD>
|
||||||
|
|
||||||
#define SCC8660_DMA_CH (IfxDma_ChannelId_5)
|
#define SCC8660_DMA_CH (IfxDma_ChannelId_5)
|
||||||
|
|
||||||
#define SCC8660_PCLK_PIN (ERU_CH2_REQ14_P02_1) // PCLK <20><><EFBFBD><EFBFBD><EFBFBD>ź<EFBFBD> TIM_ETR <20><><EFBFBD>Ž<EFBFBD>ֹ<EFBFBD><D6B9><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
#define SCC8660_PCLK_PIN (ERU_CH2_REQ14_P02_1) // PCLK <20><><EFBFBD><EFBFBD><EFBFBD>ź<EFBFBD> TIM_ETR <20><><EFBFBD>Ž<EFBFBD>ֹ<EFBFBD><D6B9><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
|
|
||||||
#define SCC8660_VSYNC_PIN (ERU_CH3_REQ6_P02_0 ) // <20><><EFBFBD>ж<EFBFBD><D0B6><EFBFBD><EFBFBD><EFBFBD>
|
#define SCC8660_VSYNC_PIN (ERU_CH3_REQ6_P02_0 ) // <20><><EFBFBD>ж<EFBFBD><D0B6><EFBFBD><EFBFBD><EFBFBD>
|
||||||
|
|
||||||
#define SCC8660_DATA_PIN (P00_0) // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ֻ<><D6BB><EFBFBD><EFBFBD> GPIOx0 <20><><EFBFBD><EFBFBD> GPIOx8 <20><>ʼ <20><><EFBFBD><EFBFBD><EFBFBD>˸<EFBFBD><CBB8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> F0-F7
|
#define SCC8660_DATA_PIN (P00_0) // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ֻ<><D6BB><EFBFBD><EFBFBD> GPIOx0 <20><><EFBFBD><EFBFBD> GPIOx8 <20><>ʼ <20><><EFBFBD><EFBFBD><EFBFBD>˸<EFBFBD><CBB8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> F0-F7
|
||||||
#define SCC8660_DATA_ADD (get_port_in_addr(SCC8660_DATA_PIN))
|
#define SCC8660_DATA_ADD (get_port_in_addr(SCC8660_DATA_PIN))
|
||||||
|
|
||||||
#define SCC8660_INIT_TIMEOUT (0x00F0) // Ĭ<>ϵ<EFBFBD><CFB5><EFBFBD><EFBFBD><EFBFBD>ͷ<EFBFBD><CDB7>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD>ʱʱ<CAB1><CAB1> <20><><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA>λ
|
#define SCC8660_INIT_TIMEOUT (0x00F0) // Ĭ<>ϵ<EFBFBD><CFB5><EFBFBD><EFBFBD><EFBFBD>ͷ<EFBFBD><CDB7>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD>ʱʱ<CAB1><CAB1> <20><><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA>λ
|
||||||
//================================================<3D><><EFBFBD><EFBFBD> SCC8660 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>================================================
|
//================================================<3D><><EFBFBD><EFBFBD> SCC8660 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>================================================
|
||||||
|
|
||||||
//================================================<3D><><EFBFBD><EFBFBD> SCC8660 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>================================================
|
//================================================<3D><><EFBFBD><EFBFBD> SCC8660 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ã<EFBFBD><EFBFBD><EFBFBD>֧<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͫ<EFBFBD><EFBFBD>֡<EFBFBD>ʰ汾<EFBFBD><EFBFBD>===========================
|
||||||
#define SCC8660_W (160) // ʵ<EFBFBD><EFBFBD>ͼ<EFBFBD><EFBFBD><EFBFBD>ֱ<EFBFBD><EFBFBD>ʿ<EFBFBD><EFBFBD><EFBFBD> <20><>ѡ<EFBFBD><D1A1><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA>160 180
|
#define SCC8660_W (160) // ͼ<><CDBC><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>ѡ<EFBFBD><D1A1><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA>160 80 40
|
||||||
#define SCC8660_H (120) // ʵ<EFBFBD><EFBFBD>ͼ<EFBFBD><EFBFBD><EFBFBD>ֱ<EFBFBD><EFBFBD>ʸ߶<EFBFBD> <20><>ѡ<EFBFBD><D1A1><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA>120 160
|
#define SCC8660_H (120) // ͼ<><CDBC><EFBFBD>߶<EFBFBD> <20><>ѡ<EFBFBD><D1A1><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA>120 160 240
|
||||||
#define SCC8660_IMAGE_SIZE (SCC8660_W * 2 * SCC8660_H) // <20><><EFBFBD><EFBFBD>ͼ<EFBFBD><CDBC><EFBFBD><EFBFBD>С SCC8660_W*2*SCC8660_H <20><><EFBFBD>ܳ<EFBFBD><DCB3><EFBFBD> 65535
|
#define SCC8660_IMAGE_SIZE (SCC8660_W * 2 * SCC8660_H) // <20><><EFBFBD><EFBFBD>ͼ<EFBFBD><CDBC><EFBFBD><EFBFBD>С SCC8660_W*2*SCC8660_H <20><><EFBFBD>ܳ<EFBFBD><DCB3><EFBFBD> 65535
|
||||||
|
|
||||||
#define SCC8660_AUTO_EXP_DEF (0 ) // <20>Զ<EFBFBD><D4B6>ع<EFBFBD> Ĭ<>ϲ<EFBFBD><CFB2><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Զ<EFBFBD><D4B6>ع<EFBFBD><D8B9><EFBFBD><EFBFBD><EFBFBD> <20><>Χ [0-1] 0Ϊ<30>ر<EFBFBD>
|
#define SCC8660_AUTO_EXP_DEF (0 ) // <20>Զ<EFBFBD><D4B6>ع<EFBFBD> Ĭ<>ϲ<EFBFBD><CFB2><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Զ<EFBFBD><D4B6>ع<EFBFBD><D8B9><EFBFBD><EFBFBD><EFBFBD> <20><>Χ [0-1] 0Ϊ<30>ر<EFBFBD>
|
||||||
#define SCC8660_BRIGHT_DEF (300) // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ֶ<EFBFBD><D6B6>ع<EFBFBD>Ĭ<EFBFBD>ϣ<EFBFBD>300 <20>ֶ<EFBFBD><D6B6>ع<EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Χ0-65535 <20>Զ<EFBFBD><D4B6>ع<EFBFBD><D8B9>Ƽ<EFBFBD>ֵ<EFBFBD><D6B5>100 <20>Զ<EFBFBD><D4B6>ع<EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>÷<EFBFBD>Χ0-255
|
#define SCC8660_BRIGHT_DEF (500) // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ֶ<EFBFBD><D6B6>ع<EFBFBD>Ĭ<EFBFBD>ϣ<EFBFBD>300 <20>ֶ<EFBFBD><D6B6>ع<EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Χ0-65535 <20>Զ<EFBFBD><D4B6>ع<EFBFBD><D8B9>Ƽ<EFBFBD>ֵ<EFBFBD><D6B5>100 <20>Զ<EFBFBD><D4B6>ع<EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>÷<EFBFBD>Χ0-255
|
||||||
#define SCC8660_FPS_DEF (50 ) // ͼ<><CDBC>֡<EFBFBD><D6A1> Ĭ<>ϣ<EFBFBD>50 <20><>ѡ<EFBFBD><D1A1><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA>60 50 30 25<32><35> ʵ<><CAB5>֡<EFBFBD>ʻ<EFBFBD><CABB><EFBFBD>Ҫ<EFBFBD><D2AA>SCC8660_PCLK_DIV<49><56><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
#define SCC8660_FPS_DEF (50 ) // ͼ<><CDBC>֡<EFBFBD><D6A1> Ĭ<>ϣ<EFBFBD>50 <20><>ѡ<EFBFBD><D1A1><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA>60 50 30 25<32><35> ʵ<><CAB5>֡<EFBFBD>ʻ<EFBFBD><CABB><EFBFBD>Ҫ<EFBFBD><D2AA>SCC8660_PCLK_DIV<49><56><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
#define SCC8660_PCLK_DIV_DEF (5 ) // PCLK<4C><4B>Ƶϵ<C6B5><CFB5> Ĭ<>ϣ<EFBFBD>5 <20><>ѡ<EFBFBD><D1A1><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA><0:1/1> <1:2/3> <2:1/2> <3:1/3> <4:1/4> <5:1/8>
|
#define SCC8660_PCLK_DIV_DEF (2 ) // PCLK<4C><4B>Ƶϵ<C6B5><CFB5> Ĭ<>ϣ<EFBFBD>5 <20><>ѡ<EFBFBD><D1A1><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA><0:1/1> <1:2/3> <2:1/2> <3:1/3> <4:1/4> <5:1/8>
|
||||||
// <20><>Ƶϵ<C6B5><CFB5>Խ<EFBFBD><D4BD><EFBFBD><EFBFBD>PCLKƵ<4B><C6B5>Խ<EFBFBD>ͣ<EFBFBD><CDA3><EFBFBD><EFBFBD><EFBFBD>PCLK<4C><4B><EFBFBD>Լ<EFBFBD><D4BC><EFBFBD>DVP<56>ӿڵĸ<DAB5><C4B8>ţ<EFBFBD><C5A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>PCLKƵ<4B><C6B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ӱ<EFBFBD><D3B0>֡<EFBFBD>ʡ<EFBFBD><CAA1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>뱣<EFBFBD><EBB1A3>Ĭ<EFBFBD>ϡ<EFBFBD>
|
// <20><>Ƶϵ<C6B5><CFB5>Խ<EFBFBD><D4BD><EFBFBD><EFBFBD>PCLKƵ<4B><C6B5>Խ<EFBFBD>ͣ<EFBFBD><CDA3><EFBFBD><EFBFBD><EFBFBD>PCLK<4C><4B><EFBFBD>Լ<EFBFBD><D4BC><EFBFBD>DVP<56>ӿڵĸ<DAB5><C4B8>ţ<EFBFBD><C5A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>PCLKƵ<4B><C6B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ӱ<EFBFBD><D3B0>֡<EFBFBD>ʡ<EFBFBD><CAA1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>뱣<EFBFBD><EBB1A3>Ĭ<EFBFBD>ϡ<EFBFBD>
|
||||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>FPSΪ50֡<30><D6A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>pclk<6C><6B>Ƶϵ<C6B5><CFB5>ѡ<EFBFBD><D1A1><EFBFBD><EFBFBD>Ϊ5<CEAA><35><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͷ<EFBFBD><CDB7><EFBFBD><EFBFBD><EFBFBD><EFBFBD>֡<EFBFBD><D6A1>Ϊ50*<2A><>1/8<><38>=6.25֡
|
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>FPSΪ50֡<30><D6A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>pclk<6C><6B>Ƶϵ<C6B5><CFB5>ѡ<EFBFBD><D1A1><EFBFBD><EFBFBD>Ϊ5<CEAA><35><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͷ<EFBFBD><CDB7><EFBFBD><EFBFBD><EFBFBD><EFBFBD>֡<EFBFBD><D6A1>Ϊ50*<2A><>1/8<><38>=6.25֡
|
||||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>£<EFBFBD>SCC8660_PCLK_DIV<49><56><EFBFBD><EFBFBD>Խ<EFBFBD><D4BD>ͼ<EFBFBD><CDBC><EFBFBD><EFBFBD>Խ<EFBFBD><D4BD>
|
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>£<EFBFBD>SCC8660_PCLK_DIV<49><56><EFBFBD><EFBFBD>Խ<EFBFBD><D4BD>ͼ<EFBFBD><CDBC><EFBFBD><EFBFBD>Խ<EFBFBD><D4BD>
|
||||||
#define SCC8660_PCLK_MODE_DEF (0 ) // PCLKģʽ Ĭ<>ϣ<EFBFBD>0 <20><>ѡ<EFBFBD><D1A1><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA>[0,1] 0<><30><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ź<EFBFBD> 1<><31><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ź<EFBFBD> <ͨ<><CDA8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ0<CEAA><30><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʹ<EFBFBD><CAB9>STM32<33><32>DCMI<4D>ӿڲɼ<DAB2><C9BC><EFBFBD>Ҫ<EFBFBD><D2AA><EFBFBD><EFBFBD>Ϊ1>
|
#define SCC8660_PCLK_MODE_DEF (0 ) // PCLKģʽ Ĭ<EFBFBD>ϣ<EFBFBD>0 <20><>ѡ<EFBFBD><D1A1><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA>[0,1] 0<><30><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ź<EFBFBD> 1<><31><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ź<EFBFBD> <ͨ<><CDA8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ0<CEAA><30><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʹ<EFBFBD><CAB9>STM32<33><32>DCMI<4D>ӿڲɼ<DAB2><C9BC><EFBFBD>Ҫ<EFBFBD><D2AA><EFBFBD><EFBFBD>Ϊ1>
|
||||||
#define SCC8660_COLOR_MODE_DEF (1 ) // ͼ<><CDBC>ɫ<EFBFBD><C9AB>ģʽ Ĭ<>ϣ<EFBFBD>0 <20><>ѡ<EFBFBD><D1A1><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA>[0,1] 0<><30><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɫģʽ 1<><31><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ģʽ<C4A3><CABD>ɫ<EFBFBD>ʱ<EFBFBD><CAB1>Ͷ<EFBFBD><CDB6><EFBFBD><EFBFBD>ߣ<EFBFBD>
|
#define SCC8660_COLOR_MODE_DEF (0 ) // ͼ<><CDBC>ɫ<EFBFBD><C9AB>ģʽ Ĭ<>ϣ<EFBFBD>0 <20><>ѡ<EFBFBD><D1A1><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA>[0,1] 0<><30><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɫģʽ 1<><31><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ģʽ<C4A3><CABD>ɫ<EFBFBD>ʱ<EFBFBD><CAB1>Ͷ<EFBFBD><CDB6><EFBFBD><EFBFBD>ߣ<EFBFBD>
|
||||||
#define SCC8660_DATA_FORMAT_DEF (1 ) // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݸ<EFBFBD>ʽ Ĭ<>ϣ<EFBFBD>0 <20><>ѡ<EFBFBD><D1A1><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA>[0-3] 0<><30>RGB565 1<><31>RGB565(<28>ֽڽ<D6BD><DABD><EFBFBD>) 2<><32>YUV422(YUYV) 3<><33>YUV422(UYVY)
|
#define SCC8660_DATA_FORMAT_DEF (0 ) // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݸ<EFBFBD>ʽ Ĭ<>ϣ<EFBFBD>0 <20><>ѡ<EFBFBD><D1A1><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA>[0-3] 0<><30>RGB565 1<><31>RGB565(<28>ֽڽ<D6BD><DABD><EFBFBD>) 2<><32>YUV422(YUYV) 3<><33>YUV422(UYVY)
|
||||||
#define SCC8660_MANUAL_WB_DEF (0 ) // <20>ֶ<EFBFBD><D6B6><EFBFBD>ƽ<EFBFBD><C6BD> Ĭ<EFBFBD>ϣ<EFBFBD>0 <20><>ѡ<EFBFBD><D1A1><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA>[0,0x65-0xa0] 0<><30><EFBFBD>ر<EFBFBD><D8B1>ֶ<EFBFBD><D6B6><EFBFBD>ƽ<EFBFBD>⣬<EFBFBD><E2A3AC><EFBFBD><EFBFBD><EFBFBD>Զ<EFBFBD><D4B6><EFBFBD>ƽ<EFBFBD><C6BD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֶ<EFBFBD><D6B6><EFBFBD>ƽ<EFBFBD><C6BD> <20>ֶ<EFBFBD><D6B6><EFBFBD>ƽ<EFBFBD><C6BD>ʱ <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Χ0x65-0xa0
|
#define SCC8660_MANUAL_WB_DEF (0 ) // <20>ֶ<EFBFBD><D6B6><EFBFBD>ƽ<EFBFBD><C6BD> Ĭ<>ϣ<EFBFBD>0 <20><>ѡ<EFBFBD><D1A1><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA>[0,0x65-0xa0] 0<><30><EFBFBD>ر<EFBFBD><D8B1>ֶ<EFBFBD><D6B6><EFBFBD>ƽ<EFBFBD>⣬<EFBFBD><E2A3AC><EFBFBD><EFBFBD><EFBFBD>Զ<EFBFBD><D4B6><EFBFBD>ƽ<EFBFBD><C6BD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֶ<EFBFBD><D6B6><EFBFBD>ƽ<EFBFBD><C6BD> <20>ֶ<EFBFBD><D6B6><EFBFBD>ƽ<EFBFBD><C6BD>ʱ <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Χ0x65-0xa0
|
||||||
//================================================<3D><><EFBFBD><EFBFBD> SCC8660 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>================================================
|
//================================================<3D><><EFBFBD><EFBFBD> SCC8660 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ã<EFBFBD><EFBFBD><EFBFBD>֧<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͫ<EFBFBD><EFBFBD>֡<EFBFBD>ʰ汾<EFBFBD><EFBFBD>===========================
|
||||||
|
|
||||||
//===============================================<3D><><EFBFBD><EFBFBD> SCC8660 <20><><EFBFBD><EFBFBD><EFBFBD>ṹ<EFBFBD><E1B9B9>================================================
|
//===============================================<3D><><EFBFBD><EFBFBD> SCC8660 <20><><EFBFBD><EFBFBD><EFBFBD>ṹ<EFBFBD><E1B9B9>================================================
|
||||||
typedef enum
|
typedef enum
|
||||||
@@ -116,6 +117,14 @@ typedef enum
|
|||||||
}scc8660_cmd_enum;
|
}scc8660_cmd_enum;
|
||||||
//===============================================<3D><><EFBFBD><EFBFBD> SCC8660 <20><><EFBFBD><EFBFBD><EFBFBD>ṹ<EFBFBD><E1B9B9>================================================
|
//===============================================<3D><><EFBFBD><EFBFBD> SCC8660 <20><><EFBFBD><EFBFBD><EFBFBD>ṹ<EFBFBD><E1B9B9>================================================
|
||||||
|
|
||||||
|
//===============================================<3D><><EFBFBD><EFBFBD>ͷ<EFBFBD><CDB7><EFBFBD><EFBFBD>ö<EFBFBD><C3B6><EFBFBD><EFBFBD>=======================================================
|
||||||
|
typedef enum
|
||||||
|
{
|
||||||
|
SCC8660_UART,
|
||||||
|
SCC8660_SCCB,
|
||||||
|
}scc8660_type_enum;
|
||||||
|
//===============================================<3D><><EFBFBD><EFBFBD>ͷ<EFBFBD><CDB7><EFBFBD><EFBFBD>ö<EFBFBD><C3B6><EFBFBD><EFBFBD>=======================================================
|
||||||
|
|
||||||
//===============================================<3D><><EFBFBD><EFBFBD> SCC8660 ȫ<>ֱ<EFBFBD><D6B1><EFBFBD>=================================================
|
//===============================================<3D><><EFBFBD><EFBFBD> SCC8660 ȫ<>ֱ<EFBFBD><D6B1><EFBFBD>=================================================
|
||||||
extern vuint8 scc8660_finish_flag; // һ<><D2BB>ͼ<EFBFBD><CDBC><EFBFBD>ɼ<EFBFBD><C9BC><EFBFBD><EFBFBD>ɱ<EFBFBD>־λ
|
extern vuint8 scc8660_finish_flag; // һ<><D2BB>ͼ<EFBFBD><CDBC><EFBFBD>ɼ<EFBFBD><C9BC><EFBFBD><EFBFBD>ɱ<EFBFBD>־λ
|
||||||
extern uint16 scc8660_image[SCC8660_H][SCC8660_W]; // ͼ<><EFBFBD><F1B1A3B4><EFBFBD><EFBFBD><EFBFBD>
|
extern uint16 scc8660_image[SCC8660_H][SCC8660_W]; // ͼ<><EFBFBD><F1B1A3B4><EFBFBD><EFBFBD><EFBFBD>
|
||||||
|
|||||||
@@ -56,6 +56,7 @@ typedef enum
|
|||||||
WIRELESS_UART, // <20><><EFBFBD>ߴ<EFBFBD><DFB4><EFBFBD>
|
WIRELESS_UART, // <20><><EFBFBD>ߴ<EFBFBD><DFB4><EFBFBD>
|
||||||
BLUETOOTH_CH9141, // <20><><EFBFBD><EFBFBD> CH9141
|
BLUETOOTH_CH9141, // <20><><EFBFBD><EFBFBD> CH9141
|
||||||
WIFI_UART, // <20><><EFBFBD><EFBFBD> WiFi
|
WIFI_UART, // <20><><EFBFBD><EFBFBD> WiFi
|
||||||
|
RECEIVER_UART, // ǹʽң<CABD><D2A3><EFBFBD><EFBFBD>
|
||||||
}wireless_type_enum;
|
}wireless_type_enum;
|
||||||
|
|
||||||
typedef enum
|
typedef enum
|
||||||
|
|||||||
@@ -0,0 +1,134 @@
|
|||||||
|
/*********************************************************************************************************************
|
||||||
|
* TC264 Opensourec Library <20><><EFBFBD><EFBFBD>TC264 <20><>Դ<EFBFBD>⣩<EFBFBD><E2A3A9>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD>ڹٷ<DAB9> SDK <20>ӿڵĵ<DAB5><C4B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Դ<EFBFBD><D4B4>
|
||||||
|
* Copyright (c) 2022 SEEKFREE <20><><EFBFBD>ɿƼ<C9BF>
|
||||||
|
*
|
||||||
|
* <20><><EFBFBD>ļ<EFBFBD><C4BC><EFBFBD> TC264 <20><>Դ<EFBFBD><D4B4><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD>
|
||||||
|
*
|
||||||
|
* TC264 <20><>Դ<EFBFBD><D4B4> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
|
* <20><><EFBFBD><EFBFBD><EFBFBD>Ը<EFBFBD><D4B8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ᷢ<EFBFBD><E1B7A2><EFBFBD><EFBFBD> GPL<50><4C>GNU General Public License<73><65><EFBFBD><EFBFBD> GNUͨ<55>ù<EFBFBD><C3B9><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>֤<EFBFBD><D6A4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
|
* <20><> GPL <20>ĵ<EFBFBD>3<EFBFBD>棨<EFBFBD><E6A3A8> GPL3.0<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ѡ<EFBFBD><EFBFBD><EFBFBD>ģ<EFBFBD><EFBFBD>κκ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>İ汾<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>·<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>/<2F><><EFBFBD><EFBFBD><DEB8><EFBFBD>
|
||||||
|
*
|
||||||
|
* <20><><EFBFBD><EFBFBD>Դ<EFBFBD><D4B4><EFBFBD>ķ<EFBFBD><C4B7><EFBFBD><EFBFBD><EFBFBD>ϣ<EFBFBD><CFA3><EFBFBD><EFBFBD><EFBFBD>ܷ<EFBFBD><DCB7><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ã<EFBFBD><C3A3><EFBFBD><EFBFBD><EFBFBD>δ<EFBFBD><CEB4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>κεı<CEB5>֤
|
||||||
|
* <20><><EFBFBD><EFBFBD>û<EFBFBD><C3BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ի<EFBFBD><D4BB>ʺ<EFBFBD><CABA>ض<EFBFBD><D8B6><EFBFBD>;<EFBFBD>ı<EFBFBD>֤
|
||||||
|
* <20><><EFBFBD><EFBFBD>ϸ<EFBFBD><CFB8><EFBFBD><EFBFBD><EFBFBD>μ<EFBFBD> GPL
|
||||||
|
*
|
||||||
|
* <20><>Ӧ<EFBFBD><D3A6><EFBFBD><EFBFBD><EFBFBD>յ<EFBFBD><D5B5><EFBFBD><EFBFBD><EFBFBD>Դ<EFBFBD><D4B4><EFBFBD><EFBFBD>ͬʱ<CDAC>յ<EFBFBD>һ<EFBFBD><D2BB> GPL <20>ĸ<EFBFBD><C4B8><EFBFBD>
|
||||||
|
* <20><><EFBFBD><EFBFBD>û<EFBFBD>У<EFBFBD><D0A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><https://www.gnu.org/licenses/>
|
||||||
|
*
|
||||||
|
* <20><><EFBFBD><EFBFBD>ע<EFBFBD><D7A2><EFBFBD><EFBFBD>
|
||||||
|
* <20><><EFBFBD><EFBFBD>Դ<EFBFBD><D4B4>ʹ<EFBFBD><CAB9> GPL3.0 <20><>Դ<EFBFBD><D4B4><EFBFBD><EFBFBD>֤Э<D6A4><D0AD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA><EFBFBD>İ汾
|
||||||
|
* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ӣ<EFBFBD>İ<EFBFBD><C4B0><EFBFBD> libraries/doc <20>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD>µ<EFBFBD> GPL3_permission_statement.txt <20>ļ<EFBFBD><C4BC><EFBFBD>
|
||||||
|
* <20><><EFBFBD><EFBFBD>֤<EFBFBD><D6A4><EFBFBD><EFBFBD><EFBFBD><EFBFBD> libraries <20>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD>µ<EFBFBD> LICENSE <20>ļ<EFBFBD>
|
||||||
|
* <20><>ӭ<EFBFBD><D3AD>λʹ<CEBB>ò<EFBFBD><C3B2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><DEB8><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD>뱣<EFBFBD><EBB1A3><EFBFBD><EFBFBD><EFBFBD>ɿƼ<C9BF><C6BC>İ<EFBFBD>Ȩ<EFBFBD><C8A8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
|
*
|
||||||
|
* <20>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD><EFBFBD> zf_device_uart_receiver
|
||||||
|
* <20><>˾<EFBFBD><CBBE><EFBFBD><EFBFBD> <20>ɶ<EFBFBD><C9B6><EFBFBD><EFBFBD>ɿƼ<C9BF><C6BC><EFBFBD><EFBFBD><EFBFBD>˾
|
||||||
|
* <20>汾<EFBFBD><E6B1BE>Ϣ <20>鿴 libraries/doc <20>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD><EFBFBD> version <20>ļ<EFBFBD> <20>汾˵<E6B1BE><CBB5>
|
||||||
|
* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ADS v1.9.20
|
||||||
|
* <20><><EFBFBD><EFBFBD>ƽ̨ TC264D
|
||||||
|
* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> https://seekfree.taobao.com/
|
||||||
|
*
|
||||||
|
* <20>ļ<DEB8>¼
|
||||||
|
* <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><>ע
|
||||||
|
* 2022-11-04 JKS first version
|
||||||
|
********************************************************************************************************************/
|
||||||
|
/*********************************************************************************************************************
|
||||||
|
* <20><><EFBFBD>߶<EFBFBD><DFB6>壺
|
||||||
|
* ------------------------------------
|
||||||
|
* ģ<><C4A3><EFBFBD>ܽ<EFBFBD> <20><>Ƭ<EFBFBD><C6AC><EFBFBD>ܽ<EFBFBD>
|
||||||
|
* TXD <20>鿴 zf_device_uart_receiver.h <20><> UART_RECEVIER_RX_PIN <20>궨<EFBFBD><EAB6A8>
|
||||||
|
* GND <20><>Դ<EFBFBD><D4B4>
|
||||||
|
* 5V 5V<35><56>Դ
|
||||||
|
* ------------------------------------
|
||||||
|
********************************************************************************************************************/
|
||||||
|
|
||||||
|
#include "zf_device_type.h"
|
||||||
|
#include "zf_driver_uart.h"
|
||||||
|
#include "zf_driver_timer.h"
|
||||||
|
#include "zf_device_uart_receiver.h"
|
||||||
|
|
||||||
|
uart_receiver_struct uart_receiver ; // <20><><EFBFBD>ڽ<EFBFBD><DABD>ջ<EFBFBD>ͨ<EFBFBD><CDA8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>״̬
|
||||||
|
|
||||||
|
uint8 uart_receiver_data[REV_DATA_LEN] = {0}; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ԭʼ<D4AD><CABC><EFBFBD><EFBFBD>
|
||||||
|
|
||||||
|
//-------------------------------------------------------------------------------------------------------------------
|
||||||
|
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>ȡ<EFBFBD><C8A1><EFBFBD>ε<EFBFBD><CEB5><EFBFBD>uart_receiver_interval_time<6D><65><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
|
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> void
|
||||||
|
// <20><><EFBFBD>ز<EFBFBD><D8B2><EFBFBD> uint32 <20><><EFBFBD>شӿ<D8B4>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD><EFBFBD>ڵ<EFBFBD>ʱ<EFBFBD><CAB1>(<28><>λ1us)
|
||||||
|
// ʹ<><CAB9>ʾ<EFBFBD><CABE> uint32 time = uart_receiver_interval_time();
|
||||||
|
// <20><>ע<EFBFBD><D7A2>Ϣ <20>ڲ<EFBFBD><DAB2><EFBFBD><EFBFBD><EFBFBD>
|
||||||
|
//-------------------------------------------------------------------------------------------------------------------
|
||||||
|
static uint32 uart_receiver_interval_time (void)
|
||||||
|
{
|
||||||
|
static uint32 time_last = 0;
|
||||||
|
uint32 time, interval_time;
|
||||||
|
uint32 stm_clk;
|
||||||
|
|
||||||
|
stm_clk = IfxStm_getFrequency(IfxStm_getAddress((IfxStm_Index)(IfxCpu_getCoreId())));
|
||||||
|
|
||||||
|
time = IfxStm_getLower(IfxStm_getAddress((IfxStm_Index)(IfxCpu_getCoreId())));
|
||||||
|
interval_time = time - time_last;
|
||||||
|
time_last = time;
|
||||||
|
interval_time = (uint32)((uint64)interval_time * 1000000 / stm_clk);
|
||||||
|
|
||||||
|
return interval_time;
|
||||||
|
}
|
||||||
|
|
||||||
|
//-------------------------------------------------------------------------------------------------------------------
|
||||||
|
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> SBUS<55><53><EFBFBD>ݽ<EFBFBD><DDBD><EFBFBD>
|
||||||
|
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> *remote_data <20><><EFBFBD><EFBFBD>ң<EFBFBD><D2A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݵĵ<DDB5>ַ
|
||||||
|
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> *bufer ԭʼ<D4AD><CABC><EFBFBD><EFBFBD>
|
||||||
|
// <20><><EFBFBD>ز<EFBFBD><D8B2><EFBFBD> void
|
||||||
|
// ʹ<><CAB9>ʾ<EFBFBD><CABE>
|
||||||
|
// <20><>ע<EFBFBD><D7A2>Ϣ <20><>sbus<75><73><EFBFBD>ݽ<EFBFBD><DDBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>н<EFBFBD><D0BD><EFBFBD>
|
||||||
|
//-------------------------------------------------------------------------------------------------------------------
|
||||||
|
static void uart_receiver_analysis (uart_receiver_struct *remote_data,uint8 * buffer)
|
||||||
|
{
|
||||||
|
uint8 num = 0;
|
||||||
|
remote_data->channel[num++] = (buffer[1] |buffer[ 2] << 8 ) & 0x07FF;
|
||||||
|
remote_data->channel[num++] = (buffer[2] >> 3 | buffer[3] << 5 ) & 0x07FF;
|
||||||
|
remote_data->channel[num++] = (buffer[3] >> 6 | buffer[4] << 2 | buffer[5] << 10 ) & 0x07FF;
|
||||||
|
remote_data->channel[num++] = (buffer[5] >> 1 | buffer[6] << 7 ) & 0x07FF;
|
||||||
|
remote_data->channel[num++] = (buffer[6] >> 4 | buffer[7] << 4 ) & 0x07FF;
|
||||||
|
remote_data->channel[num++] = (buffer[7] >> 7 | buffer[8] << 1 | buffer[9] << 9 ) & 0x07FF;
|
||||||
|
remote_data->state = (SBUS_NORMAL_STATE == buffer[23]) ? 1 : 0;
|
||||||
|
uart_receiver.finsh_flag = 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
//-------------------------------------------------------------------------------------------------------------------
|
||||||
|
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>ڽ<EFBFBD><DABD>ջ<EFBFBD>ģ<EFBFBD><C4A3> <20><><EFBFBD><EFBFBD><EFBFBD>жϻص<CFBB><D8B5><EFBFBD><EFBFBD><EFBFBD>
|
||||||
|
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> void
|
||||||
|
// <20><><EFBFBD>ز<EFBFBD><D8B2><EFBFBD> void
|
||||||
|
// ʹ<><CAB9>ʾ<EFBFBD><CABE> uart_receiver_callback();
|
||||||
|
// <20><>ע<EFBFBD><D7A2>Ϣ <20>ú<EFBFBD><C3BA><EFBFBD><EFBFBD><EFBFBD> ISR <20>ļ<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>жϳ<D0B6><CFB3><EFBFBD>ͨ<EFBFBD><CDA8>uart_receiver_uart_handler<65><72><EFBFBD><EFBFBD>ָ<EFBFBD>뱻<EFBFBD><EBB1BB><EFBFBD><EFBFBD>
|
||||||
|
//-------------------------------------------------------------------------------------------------------------------
|
||||||
|
void uart_receiver_callback(void)
|
||||||
|
{
|
||||||
|
static vuint8 length = 0;
|
||||||
|
|
||||||
|
if (uart_receiver_interval_time() > 3000)
|
||||||
|
{
|
||||||
|
length = 0;
|
||||||
|
}
|
||||||
|
uart_receiver_data[length++] = uart_read_byte(UART_RECEVIER_UART_INDEX);
|
||||||
|
if ( (REV_DATA_LEN == length) // <20><><EFBFBD><EFBFBD>֡<EFBFBD><D6A1><EFBFBD><EFBFBD>֡ͷ<D6A1><CDB7>֡β<D6A1><CEB2><EFBFBD><EFBFBD>Э<EFBFBD><D0AD>
|
||||||
|
&& (FRAME_STAR == uart_receiver_data[0])
|
||||||
|
&& (FRAME_END == uart_receiver_data[24]))
|
||||||
|
{
|
||||||
|
uart_receiver_analysis(&uart_receiver, uart_receiver_data);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
//-------------------------------------------------------------------------------------------------------------------
|
||||||
|
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>ڽ<EFBFBD><DABD>ջ<EFBFBD><D5BB><EFBFBD>ʼ<EFBFBD><CABC>
|
||||||
|
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> void
|
||||||
|
// <20><><EFBFBD>ز<EFBFBD><D8B2><EFBFBD> void
|
||||||
|
// ʹ<><CAB9>ʾ<EFBFBD><CABE> uart_receiver_init();
|
||||||
|
//-------------------------------------------------------------------------------------------------------------------
|
||||||
|
void uart_receiver_init(void)
|
||||||
|
{
|
||||||
|
uart_sbus_init(UART_RECEVIER_UART_INDEX, SBUS_UART_BAUDRATE, UART_RECEVIER_TX_PIN, UART_RECEVIER_RX_PIN);
|
||||||
|
|
||||||
|
// <20><><EFBFBD>ô<EFBFBD><C3B4><EFBFBD><EFBFBD>жϻص<CFBB><D8B5><EFBFBD><EFBFBD><EFBFBD>
|
||||||
|
set_wireless_type(RECEIVER_UART, uart_receiver_callback);
|
||||||
|
}
|
||||||
@@ -0,0 +1,72 @@
|
|||||||
|
/*********************************************************************************************************************
|
||||||
|
* TC264 Opensourec Library <20><><EFBFBD><EFBFBD>TC264 <20><>Դ<EFBFBD>⣩<EFBFBD><E2A3A9>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD>ڹٷ<DAB9> SDK <20>ӿڵĵ<DAB5><C4B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Դ<EFBFBD><D4B4>
|
||||||
|
* Copyright (c) 2022 SEEKFREE <20><><EFBFBD>ɿƼ<C9BF>
|
||||||
|
*
|
||||||
|
* <20><><EFBFBD>ļ<EFBFBD><C4BC><EFBFBD> TC264 <20><>Դ<EFBFBD><D4B4><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD>
|
||||||
|
*
|
||||||
|
* TC264 <20><>Դ<EFBFBD><D4B4> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
|
* <20><><EFBFBD><EFBFBD><EFBFBD>Ը<EFBFBD><D4B8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ᷢ<EFBFBD><E1B7A2><EFBFBD><EFBFBD> GPL<50><4C>GNU General Public License<73><65><EFBFBD><EFBFBD> GNUͨ<55>ù<EFBFBD><C3B9><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>֤<EFBFBD><D6A4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
|
* <20><> GPL <20>ĵ<EFBFBD>3<EFBFBD>棨<EFBFBD><E6A3A8> GPL3.0<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ѡ<EFBFBD><EFBFBD><EFBFBD>ģ<EFBFBD><EFBFBD>κκ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>İ汾<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>·<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>/<2F><><EFBFBD><EFBFBD><DEB8><EFBFBD>
|
||||||
|
*
|
||||||
|
* <20><><EFBFBD><EFBFBD>Դ<EFBFBD><D4B4><EFBFBD>ķ<EFBFBD><C4B7><EFBFBD><EFBFBD><EFBFBD>ϣ<EFBFBD><CFA3><EFBFBD><EFBFBD><EFBFBD>ܷ<EFBFBD><DCB7><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ã<EFBFBD><C3A3><EFBFBD><EFBFBD><EFBFBD>δ<EFBFBD><CEB4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>κεı<CEB5>֤
|
||||||
|
* <20><><EFBFBD><EFBFBD>û<EFBFBD><C3BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ի<EFBFBD><D4BB>ʺ<EFBFBD><CABA>ض<EFBFBD><D8B6><EFBFBD>;<EFBFBD>ı<EFBFBD>֤
|
||||||
|
* <20><><EFBFBD><EFBFBD>ϸ<EFBFBD><CFB8><EFBFBD><EFBFBD><EFBFBD>μ<EFBFBD> GPL
|
||||||
|
*
|
||||||
|
* <20><>Ӧ<EFBFBD><D3A6><EFBFBD><EFBFBD><EFBFBD>յ<EFBFBD><D5B5><EFBFBD><EFBFBD><EFBFBD>Դ<EFBFBD><D4B4><EFBFBD><EFBFBD>ͬʱ<CDAC>յ<EFBFBD>һ<EFBFBD><D2BB> GPL <20>ĸ<EFBFBD><C4B8><EFBFBD>
|
||||||
|
* <20><><EFBFBD><EFBFBD>û<EFBFBD>У<EFBFBD><D0A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><https://www.gnu.org/licenses/>
|
||||||
|
*
|
||||||
|
* <20><><EFBFBD><EFBFBD>ע<EFBFBD><D7A2><EFBFBD><EFBFBD>
|
||||||
|
* <20><><EFBFBD><EFBFBD>Դ<EFBFBD><D4B4>ʹ<EFBFBD><CAB9> GPL3.0 <20><>Դ<EFBFBD><D4B4><EFBFBD><EFBFBD>֤Э<D6A4><D0AD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA><EFBFBD>İ汾
|
||||||
|
* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ӣ<EFBFBD>İ<EFBFBD><C4B0><EFBFBD> libraries/doc <20>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD>µ<EFBFBD> GPL3_permission_statement.txt <20>ļ<EFBFBD><C4BC><EFBFBD>
|
||||||
|
* <20><><EFBFBD><EFBFBD>֤<EFBFBD><D6A4><EFBFBD><EFBFBD><EFBFBD><EFBFBD> libraries <20>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD>µ<EFBFBD> LICENSE <20>ļ<EFBFBD>
|
||||||
|
* <20><>ӭ<EFBFBD><D3AD>λʹ<CEBB>ò<EFBFBD><C3B2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><DEB8><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD>뱣<EFBFBD><EBB1A3><EFBFBD><EFBFBD><EFBFBD>ɿƼ<C9BF><C6BC>İ<EFBFBD>Ȩ<EFBFBD><C8A8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
|
*
|
||||||
|
* <20>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD><EFBFBD> zf_device_uart_receiver
|
||||||
|
* <20><>˾<EFBFBD><CBBE><EFBFBD><EFBFBD> <20>ɶ<EFBFBD><C9B6><EFBFBD><EFBFBD>ɿƼ<C9BF><C6BC><EFBFBD><EFBFBD><EFBFBD>˾
|
||||||
|
* <20>汾<EFBFBD><E6B1BE>Ϣ <20>鿴 libraries/doc <20>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD><EFBFBD> version <20>ļ<EFBFBD> <20>汾˵<E6B1BE><CBB5>
|
||||||
|
* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ADS v1.9.20
|
||||||
|
* <20><><EFBFBD><EFBFBD>ƽ̨ TC264D
|
||||||
|
* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> https://seekfree.taobao.com/
|
||||||
|
*
|
||||||
|
* <20>ļ<DEB8>¼
|
||||||
|
* <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><>ע
|
||||||
|
* 2022-11-04 JKS first version
|
||||||
|
********************************************************************************************************************/
|
||||||
|
/*********************************************************************************************************************
|
||||||
|
* <20><><EFBFBD>߶<EFBFBD><DFB6>壺
|
||||||
|
* ------------------------------------
|
||||||
|
* ģ<><C4A3><EFBFBD>ܽ<EFBFBD> <20><>Ƭ<EFBFBD><C6AC><EFBFBD>ܽ<EFBFBD>
|
||||||
|
* TXD <20>鿴 zf_device_uart_receiver.h <20><> UART_RECEVIER_RX_PIN <20>궨<EFBFBD><EAB6A8>
|
||||||
|
* GND <20><>Դ<EFBFBD><D4B4>
|
||||||
|
* 5V 5V<35><56>Դ
|
||||||
|
* ------------------------------------
|
||||||
|
********************************************************************************************************************/
|
||||||
|
#ifndef _zf_device_uart_receiver_h
|
||||||
|
#define _zf_device_uart_receiver_h
|
||||||
|
|
||||||
|
#include "zf_common_typedef.h"
|
||||||
|
|
||||||
|
#define UART_RECEVIER_UART_INDEX UART_2 // <20><><EFBFBD>崮<EFBFBD>ڽ<EFBFBD><DABD>ջ<EFBFBD>ʹ<EFBFBD>õĴ<C3B5><C4B4><EFBFBD>
|
||||||
|
#define UART_RECEVIER_TX_PIN UART2_TX_P10_5 // ң<><D2A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ջ<EFBFBD>û<EFBFBD><C3BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ţ<EFBFBD><C5A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڴ<EFBFBD><DAB4>ڳ<EFBFBD>ʼ<EFBFBD><CABC>ʱռλʹ<CEBB><CAB9>
|
||||||
|
#define UART_RECEVIER_RX_PIN UART2_RX_P10_6 // <20><><EFBFBD>ڽ<EFBFBD><DABD>ջ<EFBFBD><D5BB><EFBFBD>TX<54><58><EFBFBD><EFBFBD> <20><><EFBFBD>ӵ<EFBFBD>Ƭ<EFBFBD><C6AC><EFBFBD><EFBFBD>RX<52><58><EFBFBD><EFBFBD>
|
||||||
|
#define SBUS_UART_BAUDRATE (100000) // ָ<><D6B8> SBUS <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʹ<EFBFBD>õĵĴ<C4B5><C4B4>ڲ<EFBFBD><DAB2><EFBFBD><EFBFBD><EFBFBD> (<28>û<EFBFBD><C3BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>)
|
||||||
|
#define UART_RECEVIER_CHANNEL_NUM ( 6 ) // <20><><EFBFBD><EFBFBD>ң<EFBFBD><D2A3><EFBFBD><EFBFBD>ͨ<EFBFBD><CDA8><EFBFBD><EFBFBD><EFBFBD><EFBFBD> (<28>û<EFBFBD><C3BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>)
|
||||||
|
|
||||||
|
#define REV_DATA_LEN ( 25 ) // SBUS֡<53><D6A1>
|
||||||
|
#define FRAME_STAR ( 0X0F ) // ֡ͷ<D6A1><CDB7>Ϣ
|
||||||
|
#define FRAME_END ( 0X00 ) // ֡β<D6A1><CEB2>Ϣ
|
||||||
|
#define SBUS_NORMAL_STATE ( 0X03 ) // <20><><EFBFBD><EFBFBD>״̬
|
||||||
|
#define SBUS_ABNORMAL_STATE ( 0X0F ) // ʧ<><CAA7>״̬
|
||||||
|
|
||||||
|
typedef struct
|
||||||
|
{
|
||||||
|
uint16 channel[UART_RECEVIER_CHANNEL_NUM]; // CH1-CH6ͨ<36><CDA8><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
|
uint8 state; // ң<><D2A3><EFBFBD><EFBFBD>״̬(1<><31>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾʧ<CABE><CAA7>)
|
||||||
|
uint8 finsh_flag; // 1<><31><EFBFBD><EFBFBD>ʾ<EFBFBD>ɹ<EFBFBD><C9B9><EFBFBD><EFBFBD>յ<EFBFBD>һ֡ң<D6A1><D2A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
|
}uart_receiver_struct;
|
||||||
|
|
||||||
|
extern uart_receiver_struct uart_receiver; // <20><><EFBFBD>ڽ<EFBFBD><DABD>ջ<EFBFBD>ͨ<EFBFBD><CDA8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>״̬
|
||||||
|
|
||||||
|
void uart_receiver_init(void);
|
||||||
|
|
||||||
|
#endif
|
||||||
@@ -404,6 +404,55 @@ void uart_rx_interrupt (uart_index_enum uart_n, uint32 status)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//-------------------------------------------------------------------------------------------------------------------
|
||||||
|
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> sbus<75><73>ʼ<EFBFBD><CABC>
|
||||||
|
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> uartn <20><><EFBFBD><EFBFBD>ͨ<EFBFBD><CDA8>(UART_0,UART_1,UART_2,UART_3)
|
||||||
|
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> baud <20><><EFBFBD>ڲ<EFBFBD><DAB2><EFBFBD><EFBFBD><EFBFBD>
|
||||||
|
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> tx_pin <20><><EFBFBD>ڷ<EFBFBD><DAB7><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ź<EFBFBD>
|
||||||
|
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> rx_pin <20><><EFBFBD>ڽ<EFBFBD><DABD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ź<EFBFBD>
|
||||||
|
// <20><><EFBFBD>ز<EFBFBD><D8B2><EFBFBD> void
|
||||||
|
// ʹ<><CAB9>ʾ<EFBFBD><CABE> uart_sbus_init(UART_2, 100000, UART2_TX_P10_5, UART2_RX_P10_6);
|
||||||
|
// <20><>ע<EFBFBD><D7A2>Ϣ
|
||||||
|
//-------------------------------------------------------------------------------------------------------------------
|
||||||
|
void uart_sbus_init (uart_index_enum uartn, uint32 baud, uart_tx_pin_enum tx_pin, uart_rx_pin_enum rx_pin)
|
||||||
|
{
|
||||||
|
|
||||||
|
boolean interrupt_state = disableInterrupts();
|
||||||
|
|
||||||
|
volatile Ifx_ASCLIN *moudle = IfxAsclin_getAddress((IfxAsclin_Index)uartn);
|
||||||
|
|
||||||
|
IfxAsclin_Asc_initModuleConfig(&uart_config, moudle); // <20><>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ýṹ<C3BD><E1B9B9>
|
||||||
|
|
||||||
|
uart_set_buffer(uartn); // <20><><EFBFBD>û<EFBFBD><C3BB><EFBFBD><EFBFBD><EFBFBD>
|
||||||
|
|
||||||
|
uart_set_interrupt_priority(uartn); // <20><><EFBFBD><EFBFBD><EFBFBD>ж<EFBFBD><D0B6><EFBFBD><EFBFBD>ȼ<EFBFBD>
|
||||||
|
|
||||||
|
uart_config.clockSource = IfxAsclin_ClockSource_ascFastClock; // ʹ<>ø<EFBFBD><C3B8><EFBFBD>ʱ<EFBFBD><CAB1> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>6.25M
|
||||||
|
uart_config.baudrate.prescaler = 4;
|
||||||
|
uart_config.baudrate.baudrate = (float32)baud;
|
||||||
|
uart_config.baudrate.oversampling = IfxAsclin_OversamplingFactor_8;
|
||||||
|
|
||||||
|
uart_config.frame.stopBit = IfxAsclin_StopBit_2; //ֹͣλ
|
||||||
|
uart_config.frame.parityType = IfxAsclin_ParityType_even; //żУ<C5BC><D0A3>
|
||||||
|
uart_config.frame.dataLength = IfxAsclin_DataLength_8;
|
||||||
|
uart_config.frame.parityBit = TRUE; //<2F><><EFBFBD><EFBFBD>У<EFBFBD><D0A3>
|
||||||
|
|
||||||
|
IfxAsclin_Asc_Pins pins; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
|
pins.cts = NULL;
|
||||||
|
pins.rts = NULL;
|
||||||
|
uart_mux(uartn, tx_pin, rx_pin, (uint32 *)&pins.tx, (uint32 *)&pins.rx);
|
||||||
|
pins.rxMode = IfxPort_InputMode_pullUp;
|
||||||
|
pins.txMode = IfxPort_OutputMode_pushPull;
|
||||||
|
pins.pinDriver = IfxPort_PadDriver_cmosAutomotiveSpeed1;
|
||||||
|
uart_config.pins = &pins;
|
||||||
|
|
||||||
|
IfxAsclin_Asc_initModule(uart_get_handle(uartn), &uart_config);
|
||||||
|
uart_rx_interrupt(uartn, 1);
|
||||||
|
uart_tx_interrupt(uartn, 0);
|
||||||
|
restoreInterrupts(interrupt_state);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
//-------------------------------------------------------------------------------------------------------------------
|
//-------------------------------------------------------------------------------------------------------------------
|
||||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>ڳ<EFBFBD>ʼ<EFBFBD><CABC>
|
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>ڳ<EFBFBD>ʼ<EFBFBD><CABC>
|
||||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> uartn <20><><EFBFBD><EFBFBD>ģ<EFBFBD><C4A3><EFBFBD><EFBFBD>(UART_0,UART_1,UART_2,UART_3)
|
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> uartn <20><><EFBFBD><EFBFBD>ģ<EFBFBD><C4A3><EFBFBD><EFBFBD>(UART_0,UART_1,UART_2,UART_3)
|
||||||
|
|||||||
@@ -125,6 +125,7 @@ uint8 uart_query_byte (uart_index_enum uartn, uint8 *dat);
|
|||||||
void uart_tx_interrupt (uart_index_enum uartn, uint32 status);
|
void uart_tx_interrupt (uart_index_enum uartn, uint32 status);
|
||||||
void uart_rx_interrupt (uart_index_enum uartn, uint32 status);
|
void uart_rx_interrupt (uart_index_enum uartn, uint32 status);
|
||||||
|
|
||||||
|
void uart_sbus_init (uart_index_enum uartn, uint32 baud, uart_tx_pin_enum tx_pin, uart_rx_pin_enum rx_pin);
|
||||||
void uart_init (uart_index_enum uartn, uint32 baud, uart_tx_pin_enum tx_pin, uart_rx_pin_enum rx_pin);
|
void uart_init (uart_index_enum uartn, uint32 baud, uart_tx_pin_enum tx_pin, uart_rx_pin_enum rx_pin);
|
||||||
//====================================================<3D><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>====================================================
|
//====================================================<3D><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>====================================================
|
||||||
|
|
||||||
|
|||||||
@@ -1,3 +1,6 @@
|
|||||||
|
V3.2.8
|
||||||
|
<20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͫ<EFBFBD><CDAB>MCU<43>汾<EFBFBD><E6B1BE><EFBFBD><EFBFBD>
|
||||||
|
<20><><EFBFBD><EFBFBD>SBUSң<53><D2A3><EFBFBD><EFBFBD><EFBFBD>ײ<EFBFBD><D7B2><EFBFBD><EFBFBD><EFBFBD>
|
||||||
V3.2.7
|
V3.2.7
|
||||||
<20><><EFBFBD><EFBFBD>RTK "D" <20><>ͷЭ<CDB7><D0AD>
|
<20><><EFBFBD><EFBFBD>RTK "D" <20><>ͷЭ<CDB7><D0AD>
|
||||||
<20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ǻ<EFBFBD>ת<EFBFBD><D7AA><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>ֹ<EFBFBD><D6B9><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
<20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ǻ<EFBFBD>ת<EFBFBD><D7AA><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>ֹ<EFBFBD><D6B9><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
|
|||||||
@@ -100,6 +100,7 @@
|
|||||||
#include "zf_device_tft180.h"
|
#include "zf_device_tft180.h"
|
||||||
#include "zf_device_tsl1401.h"
|
#include "zf_device_tsl1401.h"
|
||||||
#include "zf_device_type.h"
|
#include "zf_device_type.h"
|
||||||
|
#include "zf_device_uart_receiver.h"
|
||||||
#include "zf_device_virtual_oscilloscope.h"
|
#include "zf_device_virtual_oscilloscope.h"
|
||||||
#include "zf_device_wifi_uart.h"
|
#include "zf_device_wifi_uart.h"
|
||||||
#include "zf_device_wifi_spi.h"
|
#include "zf_device_wifi_spi.h"
|
||||||
|
|||||||
Binary file not shown.
@@ -31,6 +31,7 @@
|
|||||||
* <20>ļ<DEB8>¼
|
* <20>ļ<DEB8>¼
|
||||||
* <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><>ע
|
* <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><>ע
|
||||||
* 2022-09-15 pudding first version
|
* 2022-09-15 pudding first version
|
||||||
|
* 2024-02-02 pudding <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͫ<EFBFBD><CDAB>̬<EFBFBD>⺯<EFBFBD><E2BAAF>
|
||||||
********************************************************************************************************************/
|
********************************************************************************************************************/
|
||||||
|
|
||||||
#ifndef _zf_device_config_h_
|
#ifndef _zf_device_config_h_
|
||||||
@@ -43,5 +44,10 @@ unsigned char mt9v03x_set_config_sccb (void *soft_iic_obj, short int b
|
|||||||
unsigned char mt9v03x_set_exposure_time_sccb (unsigned short int light);
|
unsigned char mt9v03x_set_exposure_time_sccb (unsigned short int light);
|
||||||
unsigned char mt9v03x_set_reg_sccb (unsigned char addr, unsigned short int data);
|
unsigned char mt9v03x_set_reg_sccb (unsigned char addr, unsigned short int data);
|
||||||
|
|
||||||
|
unsigned char scc8660_set_config_sccb (void *soft_iic_obj, short int buff[10][2]);
|
||||||
|
unsigned char scc8660_set_brightness_sccb (unsigned short int brightness);
|
||||||
|
unsigned char scc8660_set_manual_wb_sccb (unsigned short int manual_wb);
|
||||||
|
unsigned char scc8660_set_reg_sccb (unsigned char reg, unsigned short int data);
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|||||||
@@ -31,6 +31,7 @@
|
|||||||
* <20>ļ<DEB8>¼
|
* <20>ļ<DEB8>¼
|
||||||
* <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><>ע
|
* <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><>ע
|
||||||
* 2022-09-15 pudding first version
|
* 2022-09-15 pudding first version
|
||||||
|
* 2024-02-02 pudding <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>MCU<43><55>ͫ<EFBFBD><CDAB><EFBFBD><EFBFBD>
|
||||||
********************************************************************************************************************/
|
********************************************************************************************************************/
|
||||||
/*********************************************************************************************************************
|
/*********************************************************************************************************************
|
||||||
* <20><><EFBFBD>߶<EFBFBD><DFB6>壺
|
* <20><><EFBFBD>߶<EFBFBD><DFB6>壺
|
||||||
@@ -55,9 +56,12 @@
|
|||||||
#include "zf_driver_exti.h"
|
#include "zf_driver_exti.h"
|
||||||
#include "zf_driver_gpio.h"
|
#include "zf_driver_gpio.h"
|
||||||
#include "zf_driver_uart.h"
|
#include "zf_driver_uart.h"
|
||||||
|
#include "zf_driver_soft_iic.h"
|
||||||
#include "zf_device_camera.h"
|
#include "zf_device_camera.h"
|
||||||
#include "zf_device_scc8660.h"
|
|
||||||
#include "zf_device_type.h"
|
#include "zf_device_type.h"
|
||||||
|
#include "zf_device_config.h"
|
||||||
|
|
||||||
|
#include "zf_device_scc8660.h"
|
||||||
|
|
||||||
vuint8 scc8660_finish_flag = 0; // һ<><D2BB>ͼ<EFBFBD><CDBC><EFBFBD>ɼ<EFBFBD><C9BC><EFBFBD><EFBFBD>ɱ<EFBFBD>־λ
|
vuint8 scc8660_finish_flag = 0; // һ<><D2BB>ͼ<EFBFBD><CDBC><EFBFBD>ɼ<EFBFBD><C9BC><EFBFBD><EFBFBD>ɱ<EFBFBD>־λ
|
||||||
IFX_ALIGN(4) uint16 scc8660_image[SCC8660_H][SCC8660_W];
|
IFX_ALIGN(4) uint16 scc8660_image[SCC8660_H][SCC8660_W];
|
||||||
@@ -68,6 +72,7 @@ uint8 scc8660_lost_flag = 1;
|
|||||||
uint8 scc8660_dma_int_num; // <20><>ǰDMA<4D>жϴ<D0B6><CFB4><EFBFBD>
|
uint8 scc8660_dma_int_num; // <20><>ǰDMA<4D>жϴ<D0B6><CFB4><EFBFBD>
|
||||||
uint8 scc8660_dma_init_flag; // <20>Ƿ<EFBFBD><C7B7><EFBFBD>Ҫ<EFBFBD><D2AA><EFBFBD>³<EFBFBD>ʼ<EFBFBD><CABC>
|
uint8 scc8660_dma_init_flag; // <20>Ƿ<EFBFBD><C7B7><EFBFBD>Ҫ<EFBFBD><D2AA><EFBFBD>³<EFBFBD>ʼ<EFBFBD><CABC>
|
||||||
|
|
||||||
|
static scc8660_type_enum scc8660_type;
|
||||||
|
|
||||||
// <20><>Ҫ<EFBFBD><D2AA><EFBFBD>õ<EFBFBD><C3B5><EFBFBD><EFBFBD><EFBFBD>ͷ<EFBFBD><CDB7><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>IJ<DEB8><C4B2><EFBFBD>
|
// <20><>Ҫ<EFBFBD><D2AA><EFBFBD>õ<EFBFBD><C3B5><EFBFBD><EFBFBD><EFBFBD>ͷ<EFBFBD><CDB7><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>IJ<DEB8><C4B2><EFBFBD>
|
||||||
static int16 scc8660_set_confing_buffer[SCC8660_CONFIG_FINISH][2]=
|
static int16 scc8660_set_confing_buffer[SCC8660_CONFIG_FINISH][2]=
|
||||||
@@ -77,7 +82,7 @@ static int16 scc8660_set_confing_buffer[SCC8660_CONFIG_FINISH][2]=
|
|||||||
{SCC8660_AUTO_EXP, SCC8660_AUTO_EXP_DEF}, // <20>Զ<EFBFBD><D4B6>ع<EFBFBD>
|
{SCC8660_AUTO_EXP, SCC8660_AUTO_EXP_DEF}, // <20>Զ<EFBFBD><D4B6>ع<EFBFBD>
|
||||||
{SCC8660_BRIGHT, SCC8660_BRIGHT_DEF}, // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
{SCC8660_BRIGHT, SCC8660_BRIGHT_DEF}, // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
{SCC8660_FPS, SCC8660_FPS_DEF}, // ͼ<><CDBC>֡<EFBFBD><D6A1>
|
{SCC8660_FPS, SCC8660_FPS_DEF}, // ͼ<><CDBC>֡<EFBFBD><D6A1>
|
||||||
{SCC8660_SET_COL, SCC8660_W}, // ͼ<><CDBC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
{SCC8660_SET_COL, SCC8660_W * 4}, // ͼ<><CDBC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
{SCC8660_SET_ROW, SCC8660_H}, // ͼ<><CDBC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
{SCC8660_SET_ROW, SCC8660_H}, // ͼ<><CDBC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
{SCC8660_PCLK_DIV, SCC8660_PCLK_DIV_DEF}, // PCLK<4C><4B>Ƶϵ<C6B5><CFB5>
|
{SCC8660_PCLK_DIV, SCC8660_PCLK_DIV_DEF}, // PCLK<4C><4B>Ƶϵ<C6B5><CFB5>
|
||||||
{SCC8660_PCLK_MODE, SCC8660_PCLK_MODE_DEF}, // PCLKģʽ
|
{SCC8660_PCLK_MODE, SCC8660_PCLK_MODE_DEF}, // PCLKģʽ
|
||||||
@@ -214,71 +219,6 @@ static void scc8660_uart_callback (void)
|
|||||||
fifo_write_element(&camera_receiver_fifo, data);
|
fifo_write_element(&camera_receiver_fifo, data);
|
||||||
}
|
}
|
||||||
|
|
||||||
//-------------------------------------------------------------------------------------------------------------------
|
|
||||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> SCC8660<36><30><EFBFBD><EFBFBD>ͷ<EFBFBD><CDB7><EFBFBD>ж<EFBFBD>
|
|
||||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> void
|
|
||||||
// <20><><EFBFBD>ز<EFBFBD><D8B2><EFBFBD> void
|
|
||||||
// ʹ<><CAB9>ʾ<EFBFBD><CABE> scc8660_vsync_handler();
|
|
||||||
//-------------------------------------------------------------------------------------------------------------------
|
|
||||||
static void scc8660_vsync_handler(void)
|
|
||||||
{
|
|
||||||
exti_flag_clear(SCC8660_VSYNC_PIN);
|
|
||||||
scc8660_dma_int_num = 0;
|
|
||||||
if(scc8660_dma_init_flag || scc8660_lost_flag)
|
|
||||||
{
|
|
||||||
scc8660_dma_init_flag = 0;
|
|
||||||
IfxDma_resetChannel(&MODULE_DMA, SCC8660_DMA_CH);
|
|
||||||
scc8660_link_list_num = dma_init(SCC8660_DMA_CH,
|
|
||||||
SCC8660_DATA_ADD,
|
|
||||||
(uint8 *)scc8660_image[0],
|
|
||||||
SCC8660_PCLK_PIN,
|
|
||||||
EXTI_TRIGGER_RISING,
|
|
||||||
SCC8660_IMAGE_SIZE); // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƶ<EFBFBD><C6B5>300M <20><><EFBFBD><EFBFBD><EFBFBD>ڶ<EFBFBD><DAB6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ΪFALLING
|
|
||||||
dma_enable(SCC8660_DMA_CH);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
if(1 == scc8660_link_list_num)
|
|
||||||
{
|
|
||||||
dma_set_destination(SCC8660_DMA_CH, (uint8 *)scc8660_image[0]); // û<>в<EFBFBD><D0B2><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ӵ<EFBFBD><D3B4><EFBFBD>ģʽ <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ŀ<EFBFBD>ĵ<EFBFBD>ַ
|
|
||||||
}
|
|
||||||
dma_enable(SCC8660_DMA_CH);
|
|
||||||
}
|
|
||||||
scc8660_lost_flag = 1;
|
|
||||||
}
|
|
||||||
|
|
||||||
//-------------------------------------------------------------------------------------------------------------------
|
|
||||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> SCC8660<36><30><EFBFBD><EFBFBD>ͷDMA<4D><41><EFBFBD><EFBFBD><EFBFBD>ж<EFBFBD>
|
|
||||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> void
|
|
||||||
// <20><><EFBFBD>ز<EFBFBD><D8B2><EFBFBD> void
|
|
||||||
// ʹ<><CAB9>ʾ<EFBFBD><CABE> scc8660_dma_handler();
|
|
||||||
//-------------------------------------------------------------------------------------------------------------------
|
|
||||||
static void scc8660_dma_handler(void)
|
|
||||||
{
|
|
||||||
clear_dma_flag(SCC8660_DMA_CH);
|
|
||||||
|
|
||||||
if(IfxDma_getChannelTransactionRequestLost(&MODULE_DMA, SCC8660_DMA_CH)) // ͼ<><CDBC><EFBFBD><EFBFBD>λ<EFBFBD>ж<EFBFBD>
|
|
||||||
{
|
|
||||||
scc8660_finish_flag = 0;
|
|
||||||
dma_disable(SCC8660_DMA_CH);
|
|
||||||
IfxDma_clearChannelTransactionRequestLost(&MODULE_DMA, SCC8660_DMA_CH);
|
|
||||||
scc8660_dma_init_flag = 1;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
scc8660_dma_int_num++;
|
|
||||||
if(scc8660_dma_int_num >= scc8660_link_list_num)
|
|
||||||
{
|
|
||||||
// <20>ɼ<EFBFBD><C9BC><EFBFBD><EFBFBD><EFBFBD>
|
|
||||||
// һ<><D2BB>ͼ<EFBFBD><CDBC><EFBFBD>Ӳɼ<D3B2><C9BC><EFBFBD>ʼ<EFBFBD><CABC><EFBFBD>ɼ<EFBFBD><C9BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ3.8MS<EFBFBD><EFBFBD><EFBFBD><EFBFBD>(50FPS<50><53>188*120<32>ֱ<EFBFBD><D6B1><EFBFBD>)
|
|
||||||
scc8660_dma_int_num = 0;
|
|
||||||
scc8660_lost_flag = 0;
|
|
||||||
scc8660_finish_flag = 1;
|
|
||||||
dma_disable(SCC8660_DMA_CH);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
//-------------------------------------------------------------------------------------------------------------------
|
//-------------------------------------------------------------------------------------------------------------------
|
||||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD>ͷ ID
|
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD>ͷ ID
|
||||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> void
|
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> void
|
||||||
@@ -390,38 +330,46 @@ uint16 scc8660_get_version (void)
|
|||||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͼ<EFBFBD><CDBC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͼ<EFBFBD><CDBC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> data <20><>Ҫ<EFBFBD><D2AA><EFBFBD>õ<EFBFBD><C3B5><EFBFBD><EFBFBD><EFBFBD>ֵ
|
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> data <20><>Ҫ<EFBFBD><D2AA><EFBFBD>õ<EFBFBD><C3B5><EFBFBD><EFBFBD><EFBFBD>ֵ
|
||||||
// <20><><EFBFBD>ز<EFBFBD><D8B2><EFBFBD> uint8 1-ʧ<><CAA7> 0-<2D>ɹ<EFBFBD>
|
// <20><><EFBFBD>ز<EFBFBD><D8B2><EFBFBD> uint8 1-ʧ<><CAA7> 0-<2D>ɹ<EFBFBD>
|
||||||
// ʹ<><CAB9>ʾ<EFBFBD><CABE> scc8660_set_bright(data);
|
// ʹ<><CAB9>ʾ<EFBFBD><CABE> scc8660_set_brightness(data);
|
||||||
// <20><>ע<EFBFBD><D7A2>Ϣ <20><><EFBFBD>øú<C3B8><C3BA><EFBFBD>ǰ<EFBFBD><C7B0><EFBFBD>ȳ<EFBFBD>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͷ<EFBFBD><CDB7><EFBFBD>ô<EFBFBD><C3B4><EFBFBD> ͨ<><CDA8><EFBFBD>ú<EFBFBD><C3BA><EFBFBD><EFBFBD><EFBFBD><EFBFBD>õIJ<C3B5><C4B2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ᱻ51<35><31>Ƭ<EFBFBD><C6AC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
// <20><>ע<EFBFBD><D7A2>Ϣ <20><><EFBFBD>øú<C3B8><C3BA><EFBFBD>ǰ<EFBFBD><C7B0><EFBFBD>ȳ<EFBFBD>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͷ<EFBFBD><CDB7><EFBFBD>ô<EFBFBD><C3B4><EFBFBD> ͨ<><CDA8><EFBFBD>ú<EFBFBD><C3BA><EFBFBD><EFBFBD><EFBFBD><EFBFBD>õIJ<C3B5><C4B2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ᱻ51<35><31>Ƭ<EFBFBD><C6AC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
//-------------------------------------------------------------------------------------------------------------------
|
//-------------------------------------------------------------------------------------------------------------------
|
||||||
uint8 scc8660_set_bright (uint16 data)
|
uint8 scc8660_set_brightness (uint16 data)
|
||||||
{
|
{
|
||||||
uint8 return_state = 0;
|
uint8 return_state = 0;
|
||||||
uint8 uart_buffer[4];
|
|
||||||
uint16 temp;
|
|
||||||
uint16 timeout_count = 0;
|
|
||||||
uint32 uart_buffer_index = 0;
|
|
||||||
|
|
||||||
uart_buffer[0] = 0xA5;
|
if(SCC8660_UART == scc8660_type)
|
||||||
uart_buffer[1] = SCC8660_SET_BRIGHT;
|
|
||||||
uart_buffer[2] = data >> 8;
|
|
||||||
uart_buffer[3] = (uint8)data;
|
|
||||||
|
|
||||||
uart_write_buffer(SCC8660_COF_UART, uart_buffer, 4);
|
|
||||||
|
|
||||||
do
|
|
||||||
{
|
{
|
||||||
if(3 <= fifo_used(&camera_receiver_fifo))
|
uint8 uart_buffer[4];
|
||||||
|
uint16 temp;
|
||||||
|
uint16 timeout_count = 0;
|
||||||
|
uint32 uart_buffer_index = 0;
|
||||||
|
|
||||||
|
uart_buffer[0] = 0xA5;
|
||||||
|
uart_buffer[1] = SCC8660_SET_BRIGHT;
|
||||||
|
uart_buffer[2] = data >> 8;
|
||||||
|
uart_buffer[3] = (uint8)data;
|
||||||
|
|
||||||
|
uart_write_buffer(SCC8660_COF_UART, uart_buffer, 4);
|
||||||
|
|
||||||
|
do
|
||||||
{
|
{
|
||||||
uart_buffer_index = 3;
|
if(3 <= fifo_used(&camera_receiver_fifo))
|
||||||
fifo_read_buffer(&camera_receiver_fifo, uart_buffer, &uart_buffer_index, FIFO_READ_AND_CLEAN);
|
{
|
||||||
temp = uart_buffer[1] << 8 | uart_buffer[2];
|
uart_buffer_index = 3;
|
||||||
break;
|
fifo_read_buffer(&camera_receiver_fifo, uart_buffer, &uart_buffer_index, FIFO_READ_AND_CLEAN);
|
||||||
|
temp = uart_buffer[1] << 8 | uart_buffer[2];
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
system_delay_ms(1);
|
||||||
|
}while(SCC8660_INIT_TIMEOUT > timeout_count ++);
|
||||||
|
if((temp != data) || (SCC8660_INIT_TIMEOUT <= timeout_count))
|
||||||
|
{
|
||||||
|
return_state = 1;
|
||||||
}
|
}
|
||||||
system_delay_ms(1);
|
}
|
||||||
}while(SCC8660_INIT_TIMEOUT > timeout_count ++);
|
else
|
||||||
if((temp != data) || (SCC8660_INIT_TIMEOUT <= timeout_count))
|
|
||||||
{
|
{
|
||||||
return_state = 1;
|
return_state = scc8660_set_brightness_sccb(data);
|
||||||
}
|
}
|
||||||
return return_state;
|
return return_state;
|
||||||
}
|
}
|
||||||
@@ -436,32 +384,40 @@ uint8 scc8660_set_bright (uint16 data)
|
|||||||
uint8 scc8660_set_white_balance (uint16 data)
|
uint8 scc8660_set_white_balance (uint16 data)
|
||||||
{
|
{
|
||||||
uint8 return_state = 0;
|
uint8 return_state = 0;
|
||||||
uint8 uart_buffer[4];
|
|
||||||
uint16 temp;
|
|
||||||
uint16 timeout_count = 0;
|
|
||||||
uint32 uart_buffer_index = 0;
|
|
||||||
|
|
||||||
uart_buffer[0] = 0xA5;
|
if(SCC8660_UART == scc8660_type)
|
||||||
uart_buffer[1] = SCC8660_SET_MANUAL_WB;
|
|
||||||
uart_buffer[2] = data >> 8;
|
|
||||||
uart_buffer[3] = (uint8)data;
|
|
||||||
|
|
||||||
uart_write_buffer(SCC8660_COF_UART, uart_buffer, 4);
|
|
||||||
|
|
||||||
do
|
|
||||||
{
|
{
|
||||||
if(3 <= fifo_used(&camera_receiver_fifo))
|
uint8 uart_buffer[4];
|
||||||
|
uint16 temp;
|
||||||
|
uint16 timeout_count = 0;
|
||||||
|
uint32 uart_buffer_index = 0;
|
||||||
|
|
||||||
|
uart_buffer[0] = 0xA5;
|
||||||
|
uart_buffer[1] = SCC8660_SET_MANUAL_WB;
|
||||||
|
uart_buffer[2] = data >> 8;
|
||||||
|
uart_buffer[3] = (uint8)data;
|
||||||
|
|
||||||
|
uart_write_buffer(SCC8660_COF_UART, uart_buffer, 4);
|
||||||
|
|
||||||
|
do
|
||||||
{
|
{
|
||||||
uart_buffer_index = 3;
|
if(3 <= fifo_used(&camera_receiver_fifo))
|
||||||
fifo_read_buffer(&camera_receiver_fifo, uart_buffer, &uart_buffer_index, FIFO_READ_AND_CLEAN);
|
{
|
||||||
temp = uart_buffer[1] << 8 | uart_buffer[2];
|
uart_buffer_index = 3;
|
||||||
break;
|
fifo_read_buffer(&camera_receiver_fifo, uart_buffer, &uart_buffer_index, FIFO_READ_AND_CLEAN);
|
||||||
|
temp = uart_buffer[1] << 8 | uart_buffer[2];
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
system_delay_ms(1);
|
||||||
|
}while(SCC8660_INIT_TIMEOUT > timeout_count ++);
|
||||||
|
if((temp != data) || (SCC8660_INIT_TIMEOUT <= timeout_count))
|
||||||
|
{
|
||||||
|
return_state = 1;
|
||||||
}
|
}
|
||||||
system_delay_ms(1);
|
}
|
||||||
}while(SCC8660_INIT_TIMEOUT > timeout_count ++);
|
else
|
||||||
if((temp != data) || (SCC8660_INIT_TIMEOUT <= timeout_count))
|
|
||||||
{
|
{
|
||||||
return_state = 1;
|
return_state = scc8660_set_manual_wb_sccb(data);
|
||||||
}
|
}
|
||||||
return return_state;
|
return return_state;
|
||||||
}
|
}
|
||||||
@@ -477,43 +433,117 @@ uint8 scc8660_set_white_balance (uint16 data)
|
|||||||
uint8 scc8660_set_reg (uint8 addr, uint16 data)
|
uint8 scc8660_set_reg (uint8 addr, uint16 data)
|
||||||
{
|
{
|
||||||
uint8 return_state = 0;
|
uint8 return_state = 0;
|
||||||
uint8 uart_buffer[4];
|
|
||||||
uint16 temp;
|
|
||||||
uint16 timeout_count = 0;
|
|
||||||
uint32 uart_buffer_index = 0;
|
|
||||||
|
|
||||||
uart_buffer[0] = 0xA5;
|
if(SCC8660_UART == scc8660_type)
|
||||||
uart_buffer[1] = SCC8660_SET_REG_ADDR;
|
|
||||||
uart_buffer[2] = 0x00;
|
|
||||||
uart_buffer[3] = (uint8)addr;
|
|
||||||
uart_write_buffer(SCC8660_COF_UART, uart_buffer, 4);
|
|
||||||
|
|
||||||
system_delay_ms(10);
|
|
||||||
uart_buffer[0] = 0xA5;
|
|
||||||
uart_buffer[1] = SCC8660_SET_REG_DATA;
|
|
||||||
temp = data;
|
|
||||||
uart_buffer[2] = temp >> 8;
|
|
||||||
uart_buffer[3] = (uint8)temp;
|
|
||||||
uart_write_buffer(SCC8660_COF_UART, uart_buffer, 4);
|
|
||||||
|
|
||||||
do
|
|
||||||
{
|
{
|
||||||
if(3 <= fifo_used(&camera_receiver_fifo))
|
uint8 uart_buffer[4];
|
||||||
|
uint16 temp;
|
||||||
|
uint16 timeout_count = 0;
|
||||||
|
uint32 uart_buffer_index = 0;
|
||||||
|
|
||||||
|
uart_buffer[0] = 0xA5;
|
||||||
|
uart_buffer[1] = SCC8660_SET_REG_ADDR;
|
||||||
|
uart_buffer[2] = 0x00;
|
||||||
|
uart_buffer[3] = (uint8)addr;
|
||||||
|
uart_write_buffer(SCC8660_COF_UART, uart_buffer, 4);
|
||||||
|
|
||||||
|
system_delay_ms(10);
|
||||||
|
uart_buffer[0] = 0xA5;
|
||||||
|
uart_buffer[1] = SCC8660_SET_REG_DATA;
|
||||||
|
temp = data;
|
||||||
|
uart_buffer[2] = temp >> 8;
|
||||||
|
uart_buffer[3] = (uint8)temp;
|
||||||
|
uart_write_buffer(SCC8660_COF_UART, uart_buffer, 4);
|
||||||
|
|
||||||
|
do
|
||||||
{
|
{
|
||||||
uart_buffer_index = 3;
|
if(3 <= fifo_used(&camera_receiver_fifo))
|
||||||
fifo_read_buffer(&camera_receiver_fifo, uart_buffer, &uart_buffer_index, FIFO_READ_AND_CLEAN);
|
{
|
||||||
temp = uart_buffer[1] << 8 | uart_buffer[2];
|
uart_buffer_index = 3;
|
||||||
break;
|
fifo_read_buffer(&camera_receiver_fifo, uart_buffer, &uart_buffer_index, FIFO_READ_AND_CLEAN);
|
||||||
|
temp = uart_buffer[1] << 8 | uart_buffer[2];
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
system_delay_ms(1);
|
||||||
|
}while(SCC8660_INIT_TIMEOUT > timeout_count ++);
|
||||||
|
if((temp != data) || (SCC8660_INIT_TIMEOUT <= timeout_count))
|
||||||
|
{
|
||||||
|
return_state = 1;
|
||||||
}
|
}
|
||||||
system_delay_ms(1);
|
|
||||||
}while(SCC8660_INIT_TIMEOUT > timeout_count ++);
|
}
|
||||||
if((temp != data) || (SCC8660_INIT_TIMEOUT <= timeout_count))
|
else
|
||||||
{
|
{
|
||||||
return_state = 1;
|
return_state = scc8660_set_reg_sccb(addr, data);
|
||||||
}
|
}
|
||||||
return return_state;
|
return return_state;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//-------------------------------------------------------------------------------------------------------------------
|
||||||
|
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> SCC8660<36><30><EFBFBD><EFBFBD>ͷ<EFBFBD><CDB7><EFBFBD>ж<EFBFBD>
|
||||||
|
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> void
|
||||||
|
// <20><><EFBFBD>ز<EFBFBD><D8B2><EFBFBD> void
|
||||||
|
// ʹ<><CAB9>ʾ<EFBFBD><CABE> scc8660_vsync_handler();
|
||||||
|
//-------------------------------------------------------------------------------------------------------------------
|
||||||
|
static void scc8660_vsync_handler(void)
|
||||||
|
{
|
||||||
|
exti_flag_clear(SCC8660_VSYNC_PIN);
|
||||||
|
scc8660_dma_int_num = 0;
|
||||||
|
if(scc8660_dma_init_flag || scc8660_lost_flag)
|
||||||
|
{
|
||||||
|
scc8660_dma_init_flag = 0;
|
||||||
|
IfxDma_resetChannel(&MODULE_DMA, SCC8660_DMA_CH);
|
||||||
|
scc8660_link_list_num = dma_init(SCC8660_DMA_CH,
|
||||||
|
SCC8660_DATA_ADD,
|
||||||
|
(uint8 *)scc8660_image[0],
|
||||||
|
SCC8660_PCLK_PIN,
|
||||||
|
EXTI_TRIGGER_RISING,
|
||||||
|
SCC8660_IMAGE_SIZE);
|
||||||
|
dma_enable(SCC8660_DMA_CH);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
if(1 == scc8660_link_list_num)
|
||||||
|
{
|
||||||
|
dma_set_destination(SCC8660_DMA_CH, (uint8 *)scc8660_image[0]); // û<>в<EFBFBD><D0B2><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ӵ<EFBFBD><D3B4><EFBFBD>ģʽ <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ŀ<EFBFBD>ĵ<EFBFBD>ַ
|
||||||
|
}
|
||||||
|
dma_enable(SCC8660_DMA_CH);
|
||||||
|
}
|
||||||
|
scc8660_lost_flag = 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
//-------------------------------------------------------------------------------------------------------------------
|
||||||
|
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> SCC8660<36><30><EFBFBD><EFBFBD>ͷDMA<4D><41><EFBFBD><EFBFBD><EFBFBD>ж<EFBFBD>
|
||||||
|
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> void
|
||||||
|
// <20><><EFBFBD>ز<EFBFBD><D8B2><EFBFBD> void
|
||||||
|
// ʹ<><CAB9>ʾ<EFBFBD><CABE> scc8660_dma_handler();
|
||||||
|
//-------------------------------------------------------------------------------------------------------------------
|
||||||
|
static void scc8660_dma_handler(void)
|
||||||
|
{
|
||||||
|
clear_dma_flag(SCC8660_DMA_CH);
|
||||||
|
|
||||||
|
if(IfxDma_getChannelTransactionRequestLost(&MODULE_DMA, SCC8660_DMA_CH)) // ͼ<><CDBC><EFBFBD><EFBFBD>λ<EFBFBD>ж<EFBFBD>
|
||||||
|
{
|
||||||
|
scc8660_finish_flag = 0;
|
||||||
|
dma_disable(SCC8660_DMA_CH);
|
||||||
|
IfxDma_clearChannelTransactionRequestLost(&MODULE_DMA, SCC8660_DMA_CH);
|
||||||
|
scc8660_dma_init_flag = 1;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
scc8660_dma_int_num++;
|
||||||
|
if(scc8660_dma_int_num >= scc8660_link_list_num)
|
||||||
|
{
|
||||||
|
// <20>ɼ<EFBFBD><C9BC><EFBFBD><EFBFBD><EFBFBD>
|
||||||
|
// һ<><D2BB>ͼ<EFBFBD><CDBC><EFBFBD>Ӳɼ<D3B2><C9BC><EFBFBD>ʼ<EFBFBD><CABC><EFBFBD>ɼ<EFBFBD><C9BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ3.8MS<EFBFBD><EFBFBD><EFBFBD><EFBFBD>(50FPS<50><53>188*120<32>ֱ<EFBFBD><D6B1><EFBFBD>)
|
||||||
|
scc8660_dma_int_num = 0;
|
||||||
|
scc8660_lost_flag = 0;
|
||||||
|
scc8660_finish_flag = 1;
|
||||||
|
dma_disable(SCC8660_DMA_CH);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
//-------------------------------------------------------------------------------------------------------------------
|
//-------------------------------------------------------------------------------------------------------------------
|
||||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> SCC8660 <20><><EFBFBD><EFBFBD>ͷ<EFBFBD><CDB7>ʼ<EFBFBD><CABC>
|
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> SCC8660 <20><><EFBFBD><EFBFBD>ͷ<EFBFBD><CDB7>ʼ<EFBFBD><CABC>
|
||||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> void
|
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> void
|
||||||
@@ -524,51 +554,54 @@ uint8 scc8660_set_reg (uint8 addr, uint16 data)
|
|||||||
uint8 scc8660_init (void)
|
uint8 scc8660_init (void)
|
||||||
{
|
{
|
||||||
uint8 return_state = 0;
|
uint8 return_state = 0;
|
||||||
uint16 scc8660_version = 0;
|
soft_iic_info_struct scc8660_iic_struct;
|
||||||
|
|
||||||
|
// <20><>ʼ<EFBFBD><CABC>֮ǰ<D6AE><C7B0><EFBFBD>߳<EFBFBD><DFB3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
gpio_init(P02_0, GPO, GPIO_HIGH, GPO_PUSH_PULL);
|
gpio_init(P02_0, GPO, GPIO_HIGH, GPO_PUSH_PULL);
|
||||||
gpio_init(P02_1, GPO, GPIO_HIGH, GPO_PUSH_PULL);
|
gpio_init(P02_1, GPO, GPIO_HIGH, GPO_PUSH_PULL);
|
||||||
|
|
||||||
// <20><>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͷ
|
|
||||||
uart_init(SCC8660_COF_UART, SCC8660_COF_BAUR, SCC8660_COF_UART_RX, SCC8660_COF_UART_TX);
|
|
||||||
uart_rx_interrupt(SCC8660_COF_UART, 1);
|
|
||||||
|
|
||||||
system_delay_ms(200);
|
|
||||||
|
|
||||||
set_camera_type(CAMERA_COLOR, scc8660_vsync_handler, scc8660_dma_handler, scc8660_uart_callback); // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͷ<EFBFBD><CDB7><EFBFBD><EFBFBD>
|
|
||||||
camera_fifo_init();
|
|
||||||
do
|
do
|
||||||
{
|
{
|
||||||
// <20>ȴ<EFBFBD><C8B4><EFBFBD><EFBFBD><EFBFBD>ͷ<EFBFBD>ϵ<EFBFBD><CFB5><EFBFBD>ʼ<EFBFBD><CABC><EFBFBD>ɹ<EFBFBD> <20><>ʽ<EFBFBD><CABD><EFBFBD><EFBFBD><EFBFBD>֣<EFBFBD><D6A3><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD>ͨ<EFBFBD><CDA8><EFBFBD><EFBFBD>ȡ<EFBFBD><C8A1><EFBFBD>õķ<C3B5>ʽ <20><>ѡһ
|
system_delay_ms(200);
|
||||||
// system_delay_ms(1000); // <20><>ʱ<EFBFBD><CAB1>ʽ
|
set_camera_type(CAMERA_COLOR, scc8660_vsync_handler, scc8660_dma_handler, NULL); // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͷ<EFBFBD><CDB7><EFBFBD><EFBFBD>
|
||||||
scc8660_version = scc8660_get_version(); // <20><>ȡ<EFBFBD><C8A1><EFBFBD>õķ<C3B5>ʽ
|
// <20><><EFBFBD>ȳ<EFBFBD><C8B3><EFBFBD>SCCBͨѶ
|
||||||
if(scc8660_set_config(scc8660_set_confing_buffer))
|
scc8660_type = SCC8660_SCCB;
|
||||||
|
soft_iic_init(&scc8660_iic_struct, 0, SCC8660_COF_IIC_DELAY, SCC8660_COF_IIC_SCL, SCC8660_COF_IIC_SDA);
|
||||||
|
if(scc8660_set_config_sccb(&scc8660_iic_struct, scc8660_set_confing_buffer))
|
||||||
{
|
{
|
||||||
set_camera_type(NO_CAMERE, NULL, NULL, NULL);
|
// SCCBͨѶʧ<D1B6>ܣ<EFBFBD><DCA3><EFBFBD><EFBFBD>Դ<EFBFBD><D4B4><EFBFBD>ͨѶ
|
||||||
return_state = 1;
|
scc8660_type = SCC8660_UART;
|
||||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>˶<EFBFBD><CBB6><EFBFBD><EFBFBD><EFBFBD>Ϣ <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD>λ<EFBFBD><CEBB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
camera_fifo_init();
|
||||||
// <20><>ô<EFBFBD><EFBFBD><EFBFBD>Ǵ<EFBFBD><EFBFBD><EFBFBD>ͨ<EFBFBD>ų<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD>˳<EFBFBD><EFBFBD><EFBFBD>
|
set_camera_type(CAMERA_COLOR, scc8660_vsync_handler, scc8660_dma_handler, &scc8660_uart_callback); // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͷ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
// <20><><EFBFBD><EFBFBD>һ<EFBFBD>½<EFBFBD><C2BD><EFBFBD><EFBFBD><EFBFBD>û<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>û<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ܾ<EFBFBD><EFBFBD>ǻ<EFBFBD><EFBFBD><EFBFBD>
|
uart_init (SCC8660_COF_UART, SCC8660_COF_BAUR, SCC8660_COF_UART_RX, SCC8660_COF_UART_TX); //<2F><>ʼ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͷ
|
||||||
zf_log(0, "SCC8660 set config error.");
|
uart_rx_interrupt(SCC8660_COF_UART, 1);
|
||||||
break;
|
fifo_clear(&camera_receiver_fifo);
|
||||||
}
|
|
||||||
|
|
||||||
if(0 == return_state)
|
if(scc8660_set_config(scc8660_set_confing_buffer))
|
||||||
{
|
|
||||||
// <20><>ȡ<EFBFBD><C8A1><EFBFBD>ñ<EFBFBD><C3B1>ڲ鿴<DAB2><E9BFB4><EFBFBD><EFBFBD><EFBFBD>Ƿ<EFBFBD><C7B7><EFBFBD>ȷ
|
|
||||||
if(scc8660_get_config(scc8660_get_confing_buffer))
|
|
||||||
{
|
{
|
||||||
set_camera_type(NO_CAMERE, NULL, NULL, NULL);
|
|
||||||
return_state = 1;
|
|
||||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>˶<EFBFBD><CBB6><EFBFBD><EFBFBD><EFBFBD>Ϣ <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD>λ<EFBFBD><CEBB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>˶<EFBFBD><CBB6><EFBFBD><EFBFBD><EFBFBD>Ϣ <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD>λ<EFBFBD><CEBB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
// <20><>ô<EFBFBD><C3B4><EFBFBD>Ǵ<EFBFBD><EFBFBD><EFBFBD>ͨ<EFBFBD>ų<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD>˳<EFBFBD><EFBFBD><EFBFBD>
|
// <20><>ô<EFBFBD><C3B4><EFBFBD><EFBFBD>ͨ<EFBFBD>ų<EFBFBD><C5B3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD>˳<EFBFBD><CBB3><EFBFBD>
|
||||||
// <20><><EFBFBD><EFBFBD>һ<EFBFBD>½<EFBFBD><C2BD><EFBFBD><EFBFBD><EFBFBD>û<EFBFBD><C3BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>û<EFBFBD><C3BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ܾ<EFBFBD><DCBE>ǻ<EFBFBD><C7BB><EFBFBD>
|
// <20><><EFBFBD><EFBFBD>һ<EFBFBD>½<EFBFBD><C2BD><EFBFBD><EFBFBD><EFBFBD>û<EFBFBD><C3BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>û<EFBFBD><C3BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ܾ<EFBFBD><DCBE>ǻ<EFBFBD><C7BB><EFBFBD>
|
||||||
zf_log(0, "SCC8660 set config error.");
|
zf_log(0, "SCC8660 set config error.");
|
||||||
|
set_camera_type(NO_CAMERE, NULL, NULL, NULL);
|
||||||
|
return_state = 1;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
scc8660_link_list_num = camera_init(SCC8660_DATA_ADD, (uint8 *)scc8660_image[0], SCC8660_IMAGE_SIZE);
|
// <20><>ȡ<EFBFBD><C8A1><EFBFBD>ñ<EFBFBD><C3B1>ڲ鿴<DAB2><E9BFB4><EFBFBD><EFBFBD><EFBFBD>Ƿ<EFBFBD><C7B7><EFBFBD>ȷ
|
||||||
|
if(scc8660_get_config(scc8660_get_confing_buffer))
|
||||||
|
{
|
||||||
|
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>˶<EFBFBD><CBB6><EFBFBD><EFBFBD><EFBFBD>Ϣ <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD>λ<EFBFBD><CEBB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
|
// <20><>ô<EFBFBD><C3B4><EFBFBD>Ǵ<EFBFBD><C7B4><EFBFBD>ͨ<EFBFBD>ų<EFBFBD><C5B3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD>˳<EFBFBD><CBB3><EFBFBD>
|
||||||
|
// <20><><EFBFBD><EFBFBD>һ<EFBFBD>½<EFBFBD><C2BD><EFBFBD><EFBFBD><EFBFBD>û<EFBFBD><C3BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>û<EFBFBD><C3BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ܾ<EFBFBD><DCBE>ǻ<EFBFBD><C7BB><EFBFBD>
|
||||||
|
zf_log(0, "SCC8660 get config error.");
|
||||||
|
set_camera_type(NO_CAMERE, NULL, NULL, NULL);
|
||||||
|
return_state = 1;
|
||||||
|
break;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
scc8660_link_list_num = camera_init(SCC8660_DATA_ADD, (uint8 *)scc8660_image[0], SCC8660_IMAGE_SIZE);
|
||||||
}while(0);
|
}while(0);
|
||||||
|
|
||||||
return return_state;
|
return return_state;
|
||||||
|
|||||||
@@ -31,7 +31,7 @@
|
|||||||
* <20>ļ<DEB8>¼
|
* <20>ļ<DEB8>¼
|
||||||
* <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><>ע
|
* <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><>ע
|
||||||
* 2022-09-15 pudding first version
|
* 2022-09-15 pudding first version
|
||||||
* 2023-04-28 pudding <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ע<EFBFBD><EFBFBD>˵<EFBFBD><EFBFBD>
|
* 2024-02-02 pudding <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>MCU<EFBFBD><EFBFBD>ͫ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
********************************************************************************************************************/
|
********************************************************************************************************************/
|
||||||
/*********************************************************************************************************************
|
/*********************************************************************************************************************
|
||||||
* <20><><EFBFBD>߶<EFBFBD><DFB6>壺
|
* <20><><EFBFBD>߶<EFBFBD><DFB6>壺
|
||||||
@@ -59,35 +59,36 @@
|
|||||||
#define SCC8660_COF_UART_TX (UART1_RX_P02_3) // <20><>ͫ UART-TX <20><><EFBFBD><EFBFBD> Ҫ<><D2AA><EFBFBD>ڵ<EFBFBD>Ƭ<EFBFBD><C6AC> RX <20><>
|
#define SCC8660_COF_UART_TX (UART1_RX_P02_3) // <20><>ͫ UART-TX <20><><EFBFBD><EFBFBD> Ҫ<><D2AA><EFBFBD>ڵ<EFBFBD>Ƭ<EFBFBD><C6AC> RX <20><>
|
||||||
#define SCC8660_COF_UART_RX (UART1_TX_P02_2) // <20><>ͫ UART-RX <20><><EFBFBD><EFBFBD> Ҫ<><D2AA><EFBFBD>ڵ<EFBFBD>Ƭ<EFBFBD><C6AC> TX <20><>
|
#define SCC8660_COF_UART_RX (UART1_TX_P02_2) // <20><>ͫ UART-RX <20><><EFBFBD><EFBFBD> Ҫ<><D2AA><EFBFBD>ڵ<EFBFBD>Ƭ<EFBFBD><C6AC> TX <20><>
|
||||||
|
|
||||||
|
#define SCC8660_COF_IIC_DELAY (800) // <20><>ͫ IIC <20><>ʱ
|
||||||
|
#define SCC8660_COF_IIC_SCL (P02_3) // <20><>ͫ IIC-SCL <20><><EFBFBD><EFBFBD>
|
||||||
|
#define SCC8660_COF_IIC_SDA (P02_2) // <20><>ͫ IIC-SDA <20><><EFBFBD><EFBFBD>
|
||||||
|
|
||||||
#define SCC8660_DMA_CH (IfxDma_ChannelId_5)
|
#define SCC8660_DMA_CH (IfxDma_ChannelId_5)
|
||||||
|
|
||||||
#define SCC8660_PCLK_PIN (ERU_CH2_REQ14_P02_1) // PCLK <20><><EFBFBD><EFBFBD><EFBFBD>ź<EFBFBD> TIM_ETR <20><><EFBFBD>Ž<EFBFBD>ֹ<EFBFBD><D6B9><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
#define SCC8660_PCLK_PIN (ERU_CH2_REQ14_P02_1) // PCLK <20><><EFBFBD><EFBFBD><EFBFBD>ź<EFBFBD> TIM_ETR <20><><EFBFBD>Ž<EFBFBD>ֹ<EFBFBD><D6B9><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
|
|
||||||
#define SCC8660_VSYNC_PIN (ERU_CH3_REQ6_P02_0 ) // <20><><EFBFBD>ж<EFBFBD><D0B6><EFBFBD><EFBFBD><EFBFBD>
|
#define SCC8660_VSYNC_PIN (ERU_CH3_REQ6_P02_0 ) // <20><><EFBFBD>ж<EFBFBD><D0B6><EFBFBD><EFBFBD><EFBFBD>
|
||||||
|
|
||||||
#define SCC8660_DATA_PIN (P00_0) // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ֻ<><D6BB><EFBFBD><EFBFBD> GPIOx0 <20><><EFBFBD><EFBFBD> GPIOx8 <20><>ʼ <20><><EFBFBD><EFBFBD><EFBFBD>˸<EFBFBD><CBB8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> F0-F7
|
#define SCC8660_DATA_PIN (P00_0) // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ֻ<><D6BB><EFBFBD><EFBFBD> GPIOx0 <20><><EFBFBD><EFBFBD> GPIOx8 <20><>ʼ <20><><EFBFBD><EFBFBD><EFBFBD>˸<EFBFBD><CBB8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> F0-F7
|
||||||
#define SCC8660_DATA_ADD (get_port_in_addr(SCC8660_DATA_PIN))
|
#define SCC8660_DATA_ADD (get_port_in_addr(SCC8660_DATA_PIN))
|
||||||
|
|
||||||
#define SCC8660_INIT_TIMEOUT (0x00F0) // Ĭ<>ϵ<EFBFBD><CFB5><EFBFBD><EFBFBD><EFBFBD>ͷ<EFBFBD><CDB7>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD>ʱʱ<CAB1><CAB1> <20><><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA>λ
|
#define SCC8660_INIT_TIMEOUT (0x00F0) // Ĭ<>ϵ<EFBFBD><CFB5><EFBFBD><EFBFBD><EFBFBD>ͷ<EFBFBD><CDB7>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD>ʱʱ<CAB1><CAB1> <20><><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA>λ
|
||||||
//================================================<3D><><EFBFBD><EFBFBD> SCC8660 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>================================================
|
//================================================<3D><><EFBFBD><EFBFBD> SCC8660 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>================================================
|
||||||
|
|
||||||
//================================================<3D><><EFBFBD><EFBFBD> SCC8660 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>================================================
|
//================================================<3D><><EFBFBD><EFBFBD> SCC8660 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ã<EFBFBD><EFBFBD><EFBFBD>֧<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͫ<EFBFBD><EFBFBD>֡<EFBFBD>ʰ汾<EFBFBD><EFBFBD>===========================
|
||||||
#define SCC8660_W (160) // ʵ<EFBFBD><EFBFBD>ͼ<EFBFBD><EFBFBD><EFBFBD>ֱ<EFBFBD><EFBFBD>ʿ<EFBFBD><EFBFBD><EFBFBD> <20><>ѡ<EFBFBD><D1A1><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA>160 180
|
#define SCC8660_W (160) // ͼ<><CDBC><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>ѡ<EFBFBD><D1A1><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA>160 80 40
|
||||||
#define SCC8660_H (120) // ʵ<EFBFBD><EFBFBD>ͼ<EFBFBD><EFBFBD><EFBFBD>ֱ<EFBFBD><EFBFBD>ʸ߶<EFBFBD> <20><>ѡ<EFBFBD><D1A1><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA>120 160
|
#define SCC8660_H (120) // ͼ<><CDBC><EFBFBD>߶<EFBFBD> <20><>ѡ<EFBFBD><D1A1><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA>120 160 240
|
||||||
#define SCC8660_IMAGE_SIZE (SCC8660_W * 2 * SCC8660_H) // <20><><EFBFBD><EFBFBD>ͼ<EFBFBD><CDBC><EFBFBD><EFBFBD>С SCC8660_W*2*SCC8660_H <20><><EFBFBD>ܳ<EFBFBD><DCB3><EFBFBD> 65535
|
#define SCC8660_IMAGE_SIZE (SCC8660_W * 2 * SCC8660_H) // <20><><EFBFBD><EFBFBD>ͼ<EFBFBD><CDBC><EFBFBD><EFBFBD>С SCC8660_W*2*SCC8660_H <20><><EFBFBD>ܳ<EFBFBD><DCB3><EFBFBD> 65535
|
||||||
|
|
||||||
#define SCC8660_AUTO_EXP_DEF (0 ) // <20>Զ<EFBFBD><D4B6>ع<EFBFBD> Ĭ<>ϲ<EFBFBD><CFB2><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Զ<EFBFBD><D4B6>ع<EFBFBD><D8B9><EFBFBD><EFBFBD><EFBFBD> <20><>Χ [0-1] 0Ϊ<30>ر<EFBFBD>
|
#define SCC8660_AUTO_EXP_DEF (0 ) // <20>Զ<EFBFBD><D4B6>ع<EFBFBD> Ĭ<>ϲ<EFBFBD><CFB2><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Զ<EFBFBD><D4B6>ع<EFBFBD><D8B9><EFBFBD><EFBFBD><EFBFBD> <20><>Χ [0-1] 0Ϊ<30>ر<EFBFBD>
|
||||||
#define SCC8660_BRIGHT_DEF (300) // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ֶ<EFBFBD><D6B6>ع<EFBFBD>Ĭ<EFBFBD>ϣ<EFBFBD>300 <20>ֶ<EFBFBD><D6B6>ع<EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Χ0-65535 <20>Զ<EFBFBD><D4B6>ع<EFBFBD><D8B9>Ƽ<EFBFBD>ֵ<EFBFBD><D6B5>100 <20>Զ<EFBFBD><D4B6>ع<EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>÷<EFBFBD>Χ0-255
|
#define SCC8660_BRIGHT_DEF (500) // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ֶ<EFBFBD><D6B6>ع<EFBFBD>Ĭ<EFBFBD>ϣ<EFBFBD>300 <20>ֶ<EFBFBD><D6B6>ع<EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Χ0-65535 <20>Զ<EFBFBD><D4B6>ع<EFBFBD><D8B9>Ƽ<EFBFBD>ֵ<EFBFBD><D6B5>100 <20>Զ<EFBFBD><D4B6>ع<EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>÷<EFBFBD>Χ0-255
|
||||||
#define SCC8660_FPS_DEF (50 ) // ͼ<><CDBC>֡<EFBFBD><D6A1> Ĭ<>ϣ<EFBFBD>50 <20><>ѡ<EFBFBD><D1A1><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA>60 50 30 25<32><35> ʵ<><CAB5>֡<EFBFBD>ʻ<EFBFBD><CABB><EFBFBD>Ҫ<EFBFBD><D2AA>SCC8660_PCLK_DIV<49><56><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
#define SCC8660_FPS_DEF (50 ) // ͼ<><CDBC>֡<EFBFBD><D6A1> Ĭ<>ϣ<EFBFBD>50 <20><>ѡ<EFBFBD><D1A1><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA>60 50 30 25<32><35> ʵ<><CAB5>֡<EFBFBD>ʻ<EFBFBD><CABB><EFBFBD>Ҫ<EFBFBD><D2AA>SCC8660_PCLK_DIV<49><56><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
#define SCC8660_PCLK_DIV_DEF (5 ) // PCLK<4C><4B>Ƶϵ<C6B5><CFB5> Ĭ<>ϣ<EFBFBD>5 <20><>ѡ<EFBFBD><D1A1><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA><0:1/1> <1:2/3> <2:1/2> <3:1/3> <4:1/4> <5:1/8>
|
#define SCC8660_PCLK_DIV_DEF (2 ) // PCLK<4C><4B>Ƶϵ<C6B5><CFB5> Ĭ<>ϣ<EFBFBD>5 <20><>ѡ<EFBFBD><D1A1><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA><0:1/1> <1:2/3> <2:1/2> <3:1/3> <4:1/4> <5:1/8>
|
||||||
// <20><>Ƶϵ<C6B5><CFB5>Խ<EFBFBD><D4BD><EFBFBD><EFBFBD>PCLKƵ<4B><C6B5>Խ<EFBFBD>ͣ<EFBFBD><CDA3><EFBFBD><EFBFBD><EFBFBD>PCLK<4C><4B><EFBFBD>Լ<EFBFBD><D4BC><EFBFBD>DVP<56>ӿڵĸ<DAB5><C4B8>ţ<EFBFBD><C5A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>PCLKƵ<4B><C6B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ӱ<EFBFBD><D3B0>֡<EFBFBD>ʡ<EFBFBD><CAA1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>뱣<EFBFBD><EBB1A3>Ĭ<EFBFBD>ϡ<EFBFBD>
|
// <20><>Ƶϵ<C6B5><CFB5>Խ<EFBFBD><D4BD><EFBFBD><EFBFBD>PCLKƵ<4B><C6B5>Խ<EFBFBD>ͣ<EFBFBD><CDA3><EFBFBD><EFBFBD><EFBFBD>PCLK<4C><4B><EFBFBD>Լ<EFBFBD><D4BC><EFBFBD>DVP<56>ӿڵĸ<DAB5><C4B8>ţ<EFBFBD><C5A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>PCLKƵ<4B><C6B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ӱ<EFBFBD><D3B0>֡<EFBFBD>ʡ<EFBFBD><CAA1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>뱣<EFBFBD><EBB1A3>Ĭ<EFBFBD>ϡ<EFBFBD>
|
||||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>FPSΪ50֡<30><D6A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>pclk<6C><6B>Ƶϵ<C6B5><CFB5>ѡ<EFBFBD><D1A1><EFBFBD><EFBFBD>Ϊ5<CEAA><35><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͷ<EFBFBD><CDB7><EFBFBD><EFBFBD><EFBFBD><EFBFBD>֡<EFBFBD><D6A1>Ϊ50*<2A><>1/8<><38>=6.25֡
|
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>FPSΪ50֡<30><D6A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>pclk<6C><6B>Ƶϵ<C6B5><CFB5>ѡ<EFBFBD><D1A1><EFBFBD><EFBFBD>Ϊ5<CEAA><35><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͷ<EFBFBD><CDB7><EFBFBD><EFBFBD><EFBFBD><EFBFBD>֡<EFBFBD><D6A1>Ϊ50*<2A><>1/8<><38>=6.25֡
|
||||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>£<EFBFBD>SCC8660_PCLK_DIV<49><56><EFBFBD><EFBFBD>Խ<EFBFBD><D4BD>ͼ<EFBFBD><CDBC><EFBFBD><EFBFBD>Խ<EFBFBD><D4BD>
|
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>£<EFBFBD>SCC8660_PCLK_DIV<49><56><EFBFBD><EFBFBD>Խ<EFBFBD><D4BD>ͼ<EFBFBD><CDBC><EFBFBD><EFBFBD>Խ<EFBFBD><D4BD>
|
||||||
#define SCC8660_PCLK_MODE_DEF (0 ) // PCLKģʽ Ĭ<>ϣ<EFBFBD>0 <20><>ѡ<EFBFBD><D1A1><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA>[0,1] 0<><30><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ź<EFBFBD> 1<><31><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ź<EFBFBD> <ͨ<><CDA8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ0<CEAA><30><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʹ<EFBFBD><CAB9>STM32<33><32>DCMI<4D>ӿڲɼ<DAB2><C9BC><EFBFBD>Ҫ<EFBFBD><D2AA><EFBFBD><EFBFBD>Ϊ1>
|
#define SCC8660_PCLK_MODE_DEF (0 ) // PCLKģʽ Ĭ<EFBFBD>ϣ<EFBFBD>0 <20><>ѡ<EFBFBD><D1A1><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA>[0,1] 0<><30><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ź<EFBFBD> 1<><31><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ź<EFBFBD> <ͨ<><CDA8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ0<CEAA><30><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʹ<EFBFBD><CAB9>STM32<33><32>DCMI<4D>ӿڲɼ<DAB2><C9BC><EFBFBD>Ҫ<EFBFBD><D2AA><EFBFBD><EFBFBD>Ϊ1>
|
||||||
#define SCC8660_COLOR_MODE_DEF (1 ) // ͼ<><CDBC>ɫ<EFBFBD><C9AB>ģʽ Ĭ<>ϣ<EFBFBD>0 <20><>ѡ<EFBFBD><D1A1><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA>[0,1] 0<><30><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɫģʽ 1<><31><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ģʽ<C4A3><CABD>ɫ<EFBFBD>ʱ<EFBFBD><CAB1>Ͷ<EFBFBD><CDB6><EFBFBD><EFBFBD>ߣ<EFBFBD>
|
#define SCC8660_COLOR_MODE_DEF (0 ) // ͼ<><CDBC>ɫ<EFBFBD><C9AB>ģʽ Ĭ<>ϣ<EFBFBD>0 <20><>ѡ<EFBFBD><D1A1><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA>[0,1] 0<><30><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɫģʽ 1<><31><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ģʽ<C4A3><CABD>ɫ<EFBFBD>ʱ<EFBFBD><CAB1>Ͷ<EFBFBD><CDB6><EFBFBD><EFBFBD>ߣ<EFBFBD>
|
||||||
#define SCC8660_DATA_FORMAT_DEF (1 ) // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݸ<EFBFBD>ʽ Ĭ<>ϣ<EFBFBD>0 <20><>ѡ<EFBFBD><D1A1><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA>[0-3] 0<><30>RGB565 1<><31>RGB565(<28>ֽڽ<D6BD><DABD><EFBFBD>) 2<><32>YUV422(YUYV) 3<><33>YUV422(UYVY)
|
#define SCC8660_DATA_FORMAT_DEF (0 ) // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݸ<EFBFBD>ʽ Ĭ<>ϣ<EFBFBD>0 <20><>ѡ<EFBFBD><D1A1><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA>[0-3] 0<><30>RGB565 1<><31>RGB565(<28>ֽڽ<D6BD><DABD><EFBFBD>) 2<><32>YUV422(YUYV) 3<><33>YUV422(UYVY)
|
||||||
#define SCC8660_MANUAL_WB_DEF (0 ) // <20>ֶ<EFBFBD><D6B6><EFBFBD>ƽ<EFBFBD><C6BD> Ĭ<EFBFBD>ϣ<EFBFBD>0 <20><>ѡ<EFBFBD><D1A1><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA>[0,0x65-0xa0] 0<><30><EFBFBD>ر<EFBFBD><D8B1>ֶ<EFBFBD><D6B6><EFBFBD>ƽ<EFBFBD>⣬<EFBFBD><E2A3AC><EFBFBD><EFBFBD><EFBFBD>Զ<EFBFBD><D4B6><EFBFBD>ƽ<EFBFBD><C6BD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֶ<EFBFBD><D6B6><EFBFBD>ƽ<EFBFBD><C6BD> <20>ֶ<EFBFBD><D6B6><EFBFBD>ƽ<EFBFBD><C6BD>ʱ <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Χ0x65-0xa0
|
#define SCC8660_MANUAL_WB_DEF (0 ) // <20>ֶ<EFBFBD><D6B6><EFBFBD>ƽ<EFBFBD><C6BD> Ĭ<>ϣ<EFBFBD>0 <20><>ѡ<EFBFBD><D1A1><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA>[0,0x65-0xa0] 0<><30><EFBFBD>ر<EFBFBD><D8B1>ֶ<EFBFBD><D6B6><EFBFBD>ƽ<EFBFBD>⣬<EFBFBD><E2A3AC><EFBFBD><EFBFBD><EFBFBD>Զ<EFBFBD><D4B6><EFBFBD>ƽ<EFBFBD><C6BD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֶ<EFBFBD><D6B6><EFBFBD>ƽ<EFBFBD><C6BD> <20>ֶ<EFBFBD><D6B6><EFBFBD>ƽ<EFBFBD><C6BD>ʱ <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Χ0x65-0xa0
|
||||||
//================================================<3D><><EFBFBD><EFBFBD> SCC8660 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>================================================
|
//================================================<3D><><EFBFBD><EFBFBD> SCC8660 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ã<EFBFBD><EFBFBD><EFBFBD>֧<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͫ<EFBFBD><EFBFBD>֡<EFBFBD>ʰ汾<EFBFBD><EFBFBD>===========================
|
||||||
|
|
||||||
//===============================================<3D><><EFBFBD><EFBFBD> SCC8660 <20><><EFBFBD><EFBFBD><EFBFBD>ṹ<EFBFBD><E1B9B9>================================================
|
//===============================================<3D><><EFBFBD><EFBFBD> SCC8660 <20><><EFBFBD><EFBFBD><EFBFBD>ṹ<EFBFBD><E1B9B9>================================================
|
||||||
typedef enum
|
typedef enum
|
||||||
@@ -116,6 +117,14 @@ typedef enum
|
|||||||
}scc8660_cmd_enum;
|
}scc8660_cmd_enum;
|
||||||
//===============================================<3D><><EFBFBD><EFBFBD> SCC8660 <20><><EFBFBD><EFBFBD><EFBFBD>ṹ<EFBFBD><E1B9B9>================================================
|
//===============================================<3D><><EFBFBD><EFBFBD> SCC8660 <20><><EFBFBD><EFBFBD><EFBFBD>ṹ<EFBFBD><E1B9B9>================================================
|
||||||
|
|
||||||
|
//===============================================<3D><><EFBFBD><EFBFBD>ͷ<EFBFBD><CDB7><EFBFBD><EFBFBD>ö<EFBFBD><C3B6><EFBFBD><EFBFBD>=======================================================
|
||||||
|
typedef enum
|
||||||
|
{
|
||||||
|
SCC8660_UART,
|
||||||
|
SCC8660_SCCB,
|
||||||
|
}scc8660_type_enum;
|
||||||
|
//===============================================<3D><><EFBFBD><EFBFBD>ͷ<EFBFBD><CDB7><EFBFBD><EFBFBD>ö<EFBFBD><C3B6><EFBFBD><EFBFBD>=======================================================
|
||||||
|
|
||||||
//===============================================<3D><><EFBFBD><EFBFBD> SCC8660 ȫ<>ֱ<EFBFBD><D6B1><EFBFBD>=================================================
|
//===============================================<3D><><EFBFBD><EFBFBD> SCC8660 ȫ<>ֱ<EFBFBD><D6B1><EFBFBD>=================================================
|
||||||
extern vuint8 scc8660_finish_flag; // һ<><D2BB>ͼ<EFBFBD><CDBC><EFBFBD>ɼ<EFBFBD><C9BC><EFBFBD><EFBFBD>ɱ<EFBFBD>־λ
|
extern vuint8 scc8660_finish_flag; // һ<><D2BB>ͼ<EFBFBD><CDBC><EFBFBD>ɼ<EFBFBD><C9BC><EFBFBD><EFBFBD>ɱ<EFBFBD>־λ
|
||||||
extern uint16 scc8660_image[SCC8660_H][SCC8660_W]; // ͼ<><EFBFBD><F1B1A3B4><EFBFBD><EFBFBD><EFBFBD>
|
extern uint16 scc8660_image[SCC8660_H][SCC8660_W]; // ͼ<><EFBFBD><F1B1A3B4><EFBFBD><EFBFBD><EFBFBD>
|
||||||
|
|||||||
@@ -56,6 +56,7 @@ typedef enum
|
|||||||
WIRELESS_UART, // <20><><EFBFBD>ߴ<EFBFBD><DFB4><EFBFBD>
|
WIRELESS_UART, // <20><><EFBFBD>ߴ<EFBFBD><DFB4><EFBFBD>
|
||||||
BLUETOOTH_CH9141, // <20><><EFBFBD><EFBFBD> CH9141
|
BLUETOOTH_CH9141, // <20><><EFBFBD><EFBFBD> CH9141
|
||||||
WIFI_UART, // <20><><EFBFBD><EFBFBD> WiFi
|
WIFI_UART, // <20><><EFBFBD><EFBFBD> WiFi
|
||||||
|
RECEIVER_UART, // ǹʽң<CABD><D2A3><EFBFBD><EFBFBD>
|
||||||
}wireless_type_enum;
|
}wireless_type_enum;
|
||||||
|
|
||||||
typedef enum
|
typedef enum
|
||||||
|
|||||||
@@ -0,0 +1,134 @@
|
|||||||
|
/*********************************************************************************************************************
|
||||||
|
* TC264 Opensourec Library <20><><EFBFBD><EFBFBD>TC264 <20><>Դ<EFBFBD>⣩<EFBFBD><E2A3A9>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD>ڹٷ<DAB9> SDK <20>ӿڵĵ<DAB5><C4B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Դ<EFBFBD><D4B4>
|
||||||
|
* Copyright (c) 2022 SEEKFREE <20><><EFBFBD>ɿƼ<C9BF>
|
||||||
|
*
|
||||||
|
* <20><><EFBFBD>ļ<EFBFBD><C4BC><EFBFBD> TC264 <20><>Դ<EFBFBD><D4B4><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD>
|
||||||
|
*
|
||||||
|
* TC264 <20><>Դ<EFBFBD><D4B4> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
|
* <20><><EFBFBD><EFBFBD><EFBFBD>Ը<EFBFBD><D4B8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ᷢ<EFBFBD><E1B7A2><EFBFBD><EFBFBD> GPL<50><4C>GNU General Public License<73><65><EFBFBD><EFBFBD> GNUͨ<55>ù<EFBFBD><C3B9><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>֤<EFBFBD><D6A4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
|
* <20><> GPL <20>ĵ<EFBFBD>3<EFBFBD>棨<EFBFBD><E6A3A8> GPL3.0<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ѡ<EFBFBD><EFBFBD><EFBFBD>ģ<EFBFBD><EFBFBD>κκ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>İ汾<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>·<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>/<2F><><EFBFBD><EFBFBD><DEB8><EFBFBD>
|
||||||
|
*
|
||||||
|
* <20><><EFBFBD><EFBFBD>Դ<EFBFBD><D4B4><EFBFBD>ķ<EFBFBD><C4B7><EFBFBD><EFBFBD><EFBFBD>ϣ<EFBFBD><CFA3><EFBFBD><EFBFBD><EFBFBD>ܷ<EFBFBD><DCB7><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ã<EFBFBD><C3A3><EFBFBD><EFBFBD><EFBFBD>δ<EFBFBD><CEB4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>κεı<CEB5>֤
|
||||||
|
* <20><><EFBFBD><EFBFBD>û<EFBFBD><C3BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ի<EFBFBD><D4BB>ʺ<EFBFBD><CABA>ض<EFBFBD><D8B6><EFBFBD>;<EFBFBD>ı<EFBFBD>֤
|
||||||
|
* <20><><EFBFBD><EFBFBD>ϸ<EFBFBD><CFB8><EFBFBD><EFBFBD><EFBFBD>μ<EFBFBD> GPL
|
||||||
|
*
|
||||||
|
* <20><>Ӧ<EFBFBD><D3A6><EFBFBD><EFBFBD><EFBFBD>յ<EFBFBD><D5B5><EFBFBD><EFBFBD><EFBFBD>Դ<EFBFBD><D4B4><EFBFBD><EFBFBD>ͬʱ<CDAC>յ<EFBFBD>һ<EFBFBD><D2BB> GPL <20>ĸ<EFBFBD><C4B8><EFBFBD>
|
||||||
|
* <20><><EFBFBD><EFBFBD>û<EFBFBD>У<EFBFBD><D0A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><https://www.gnu.org/licenses/>
|
||||||
|
*
|
||||||
|
* <20><><EFBFBD><EFBFBD>ע<EFBFBD><D7A2><EFBFBD><EFBFBD>
|
||||||
|
* <20><><EFBFBD><EFBFBD>Դ<EFBFBD><D4B4>ʹ<EFBFBD><CAB9> GPL3.0 <20><>Դ<EFBFBD><D4B4><EFBFBD><EFBFBD>֤Э<D6A4><D0AD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA><EFBFBD>İ汾
|
||||||
|
* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ӣ<EFBFBD>İ<EFBFBD><C4B0><EFBFBD> libraries/doc <20>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD>µ<EFBFBD> GPL3_permission_statement.txt <20>ļ<EFBFBD><C4BC><EFBFBD>
|
||||||
|
* <20><><EFBFBD><EFBFBD>֤<EFBFBD><D6A4><EFBFBD><EFBFBD><EFBFBD><EFBFBD> libraries <20>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD>µ<EFBFBD> LICENSE <20>ļ<EFBFBD>
|
||||||
|
* <20><>ӭ<EFBFBD><D3AD>λʹ<CEBB>ò<EFBFBD><C3B2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><DEB8><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD>뱣<EFBFBD><EBB1A3><EFBFBD><EFBFBD><EFBFBD>ɿƼ<C9BF><C6BC>İ<EFBFBD>Ȩ<EFBFBD><C8A8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
|
*
|
||||||
|
* <20>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD><EFBFBD> zf_device_uart_receiver
|
||||||
|
* <20><>˾<EFBFBD><CBBE><EFBFBD><EFBFBD> <20>ɶ<EFBFBD><C9B6><EFBFBD><EFBFBD>ɿƼ<C9BF><C6BC><EFBFBD><EFBFBD><EFBFBD>˾
|
||||||
|
* <20>汾<EFBFBD><E6B1BE>Ϣ <20>鿴 libraries/doc <20>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD><EFBFBD> version <20>ļ<EFBFBD> <20>汾˵<E6B1BE><CBB5>
|
||||||
|
* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ADS v1.9.20
|
||||||
|
* <20><><EFBFBD><EFBFBD>ƽ̨ TC264D
|
||||||
|
* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> https://seekfree.taobao.com/
|
||||||
|
*
|
||||||
|
* <20>ļ<DEB8>¼
|
||||||
|
* <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><>ע
|
||||||
|
* 2022-11-04 JKS first version
|
||||||
|
********************************************************************************************************************/
|
||||||
|
/*********************************************************************************************************************
|
||||||
|
* <20><><EFBFBD>߶<EFBFBD><DFB6>壺
|
||||||
|
* ------------------------------------
|
||||||
|
* ģ<><C4A3><EFBFBD>ܽ<EFBFBD> <20><>Ƭ<EFBFBD><C6AC><EFBFBD>ܽ<EFBFBD>
|
||||||
|
* TXD <20>鿴 zf_device_uart_receiver.h <20><> UART_RECEVIER_RX_PIN <20>궨<EFBFBD><EAB6A8>
|
||||||
|
* GND <20><>Դ<EFBFBD><D4B4>
|
||||||
|
* 5V 5V<35><56>Դ
|
||||||
|
* ------------------------------------
|
||||||
|
********************************************************************************************************************/
|
||||||
|
|
||||||
|
#include "zf_device_type.h"
|
||||||
|
#include "zf_driver_uart.h"
|
||||||
|
#include "zf_driver_timer.h"
|
||||||
|
#include "zf_device_uart_receiver.h"
|
||||||
|
|
||||||
|
uart_receiver_struct uart_receiver ; // <20><><EFBFBD>ڽ<EFBFBD><DABD>ջ<EFBFBD>ͨ<EFBFBD><CDA8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>״̬
|
||||||
|
|
||||||
|
uint8 uart_receiver_data[REV_DATA_LEN] = {0}; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ԭʼ<D4AD><CABC><EFBFBD><EFBFBD>
|
||||||
|
|
||||||
|
//-------------------------------------------------------------------------------------------------------------------
|
||||||
|
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>ȡ<EFBFBD><C8A1><EFBFBD>ε<EFBFBD><CEB5><EFBFBD>uart_receiver_interval_time<6D><65><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
|
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> void
|
||||||
|
// <20><><EFBFBD>ز<EFBFBD><D8B2><EFBFBD> uint32 <20><><EFBFBD>شӿ<D8B4>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD><EFBFBD>ڵ<EFBFBD>ʱ<EFBFBD><CAB1>(<28><>λ1us)
|
||||||
|
// ʹ<><CAB9>ʾ<EFBFBD><CABE> uint32 time = uart_receiver_interval_time();
|
||||||
|
// <20><>ע<EFBFBD><D7A2>Ϣ <20>ڲ<EFBFBD><DAB2><EFBFBD><EFBFBD><EFBFBD>
|
||||||
|
//-------------------------------------------------------------------------------------------------------------------
|
||||||
|
static uint32 uart_receiver_interval_time (void)
|
||||||
|
{
|
||||||
|
static uint32 time_last = 0;
|
||||||
|
uint32 time, interval_time;
|
||||||
|
uint32 stm_clk;
|
||||||
|
|
||||||
|
stm_clk = IfxStm_getFrequency(IfxStm_getAddress((IfxStm_Index)(IfxCpu_getCoreId())));
|
||||||
|
|
||||||
|
time = IfxStm_getLower(IfxStm_getAddress((IfxStm_Index)(IfxCpu_getCoreId())));
|
||||||
|
interval_time = time - time_last;
|
||||||
|
time_last = time;
|
||||||
|
interval_time = (uint32)((uint64)interval_time * 1000000 / stm_clk);
|
||||||
|
|
||||||
|
return interval_time;
|
||||||
|
}
|
||||||
|
|
||||||
|
//-------------------------------------------------------------------------------------------------------------------
|
||||||
|
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> SBUS<55><53><EFBFBD>ݽ<EFBFBD><DDBD><EFBFBD>
|
||||||
|
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> *remote_data <20><><EFBFBD><EFBFBD>ң<EFBFBD><D2A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݵĵ<DDB5>ַ
|
||||||
|
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> *bufer ԭʼ<D4AD><CABC><EFBFBD><EFBFBD>
|
||||||
|
// <20><><EFBFBD>ز<EFBFBD><D8B2><EFBFBD> void
|
||||||
|
// ʹ<><CAB9>ʾ<EFBFBD><CABE>
|
||||||
|
// <20><>ע<EFBFBD><D7A2>Ϣ <20><>sbus<75><73><EFBFBD>ݽ<EFBFBD><DDBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>н<EFBFBD><D0BD><EFBFBD>
|
||||||
|
//-------------------------------------------------------------------------------------------------------------------
|
||||||
|
static void uart_receiver_analysis (uart_receiver_struct *remote_data,uint8 * buffer)
|
||||||
|
{
|
||||||
|
uint8 num = 0;
|
||||||
|
remote_data->channel[num++] = (buffer[1] |buffer[ 2] << 8 ) & 0x07FF;
|
||||||
|
remote_data->channel[num++] = (buffer[2] >> 3 | buffer[3] << 5 ) & 0x07FF;
|
||||||
|
remote_data->channel[num++] = (buffer[3] >> 6 | buffer[4] << 2 | buffer[5] << 10 ) & 0x07FF;
|
||||||
|
remote_data->channel[num++] = (buffer[5] >> 1 | buffer[6] << 7 ) & 0x07FF;
|
||||||
|
remote_data->channel[num++] = (buffer[6] >> 4 | buffer[7] << 4 ) & 0x07FF;
|
||||||
|
remote_data->channel[num++] = (buffer[7] >> 7 | buffer[8] << 1 | buffer[9] << 9 ) & 0x07FF;
|
||||||
|
remote_data->state = (SBUS_NORMAL_STATE == buffer[23]) ? 1 : 0;
|
||||||
|
uart_receiver.finsh_flag = 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
//-------------------------------------------------------------------------------------------------------------------
|
||||||
|
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>ڽ<EFBFBD><DABD>ջ<EFBFBD>ģ<EFBFBD><C4A3> <20><><EFBFBD><EFBFBD><EFBFBD>жϻص<CFBB><D8B5><EFBFBD><EFBFBD><EFBFBD>
|
||||||
|
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> void
|
||||||
|
// <20><><EFBFBD>ز<EFBFBD><D8B2><EFBFBD> void
|
||||||
|
// ʹ<><CAB9>ʾ<EFBFBD><CABE> uart_receiver_callback();
|
||||||
|
// <20><>ע<EFBFBD><D7A2>Ϣ <20>ú<EFBFBD><C3BA><EFBFBD><EFBFBD><EFBFBD> ISR <20>ļ<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>жϳ<D0B6><CFB3><EFBFBD>ͨ<EFBFBD><CDA8>uart_receiver_uart_handler<65><72><EFBFBD><EFBFBD>ָ<EFBFBD>뱻<EFBFBD><EBB1BB><EFBFBD><EFBFBD>
|
||||||
|
//-------------------------------------------------------------------------------------------------------------------
|
||||||
|
void uart_receiver_callback(void)
|
||||||
|
{
|
||||||
|
static vuint8 length = 0;
|
||||||
|
|
||||||
|
if (uart_receiver_interval_time() > 3000)
|
||||||
|
{
|
||||||
|
length = 0;
|
||||||
|
}
|
||||||
|
uart_receiver_data[length++] = uart_read_byte(UART_RECEVIER_UART_INDEX);
|
||||||
|
if ( (REV_DATA_LEN == length) // <20><><EFBFBD><EFBFBD>֡<EFBFBD><D6A1><EFBFBD><EFBFBD>֡ͷ<D6A1><CDB7>֡β<D6A1><CEB2><EFBFBD><EFBFBD>Э<EFBFBD><D0AD>
|
||||||
|
&& (FRAME_STAR == uart_receiver_data[0])
|
||||||
|
&& (FRAME_END == uart_receiver_data[24]))
|
||||||
|
{
|
||||||
|
uart_receiver_analysis(&uart_receiver, uart_receiver_data);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
//-------------------------------------------------------------------------------------------------------------------
|
||||||
|
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>ڽ<EFBFBD><DABD>ջ<EFBFBD><D5BB><EFBFBD>ʼ<EFBFBD><CABC>
|
||||||
|
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> void
|
||||||
|
// <20><><EFBFBD>ز<EFBFBD><D8B2><EFBFBD> void
|
||||||
|
// ʹ<><CAB9>ʾ<EFBFBD><CABE> uart_receiver_init();
|
||||||
|
//-------------------------------------------------------------------------------------------------------------------
|
||||||
|
void uart_receiver_init(void)
|
||||||
|
{
|
||||||
|
uart_sbus_init(UART_RECEVIER_UART_INDEX, SBUS_UART_BAUDRATE, UART_RECEVIER_TX_PIN, UART_RECEVIER_RX_PIN);
|
||||||
|
|
||||||
|
// <20><><EFBFBD>ô<EFBFBD><C3B4><EFBFBD><EFBFBD>жϻص<CFBB><D8B5><EFBFBD><EFBFBD><EFBFBD>
|
||||||
|
set_wireless_type(RECEIVER_UART, uart_receiver_callback);
|
||||||
|
}
|
||||||
@@ -0,0 +1,72 @@
|
|||||||
|
/*********************************************************************************************************************
|
||||||
|
* TC264 Opensourec Library <20><><EFBFBD><EFBFBD>TC264 <20><>Դ<EFBFBD>⣩<EFBFBD><E2A3A9>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD>ڹٷ<DAB9> SDK <20>ӿڵĵ<DAB5><C4B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Դ<EFBFBD><D4B4>
|
||||||
|
* Copyright (c) 2022 SEEKFREE <20><><EFBFBD>ɿƼ<C9BF>
|
||||||
|
*
|
||||||
|
* <20><><EFBFBD>ļ<EFBFBD><C4BC><EFBFBD> TC264 <20><>Դ<EFBFBD><D4B4><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD>
|
||||||
|
*
|
||||||
|
* TC264 <20><>Դ<EFBFBD><D4B4> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
|
* <20><><EFBFBD><EFBFBD><EFBFBD>Ը<EFBFBD><D4B8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ᷢ<EFBFBD><E1B7A2><EFBFBD><EFBFBD> GPL<50><4C>GNU General Public License<73><65><EFBFBD><EFBFBD> GNUͨ<55>ù<EFBFBD><C3B9><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>֤<EFBFBD><D6A4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
|
* <20><> GPL <20>ĵ<EFBFBD>3<EFBFBD>棨<EFBFBD><E6A3A8> GPL3.0<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ѡ<EFBFBD><EFBFBD><EFBFBD>ģ<EFBFBD><EFBFBD>κκ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>İ汾<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>·<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>/<2F><><EFBFBD><EFBFBD><DEB8><EFBFBD>
|
||||||
|
*
|
||||||
|
* <20><><EFBFBD><EFBFBD>Դ<EFBFBD><D4B4><EFBFBD>ķ<EFBFBD><C4B7><EFBFBD><EFBFBD><EFBFBD>ϣ<EFBFBD><CFA3><EFBFBD><EFBFBD><EFBFBD>ܷ<EFBFBD><DCB7><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ã<EFBFBD><C3A3><EFBFBD><EFBFBD><EFBFBD>δ<EFBFBD><CEB4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>κεı<CEB5>֤
|
||||||
|
* <20><><EFBFBD><EFBFBD>û<EFBFBD><C3BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ի<EFBFBD><D4BB>ʺ<EFBFBD><CABA>ض<EFBFBD><D8B6><EFBFBD>;<EFBFBD>ı<EFBFBD>֤
|
||||||
|
* <20><><EFBFBD><EFBFBD>ϸ<EFBFBD><CFB8><EFBFBD><EFBFBD><EFBFBD>μ<EFBFBD> GPL
|
||||||
|
*
|
||||||
|
* <20><>Ӧ<EFBFBD><D3A6><EFBFBD><EFBFBD><EFBFBD>յ<EFBFBD><D5B5><EFBFBD><EFBFBD><EFBFBD>Դ<EFBFBD><D4B4><EFBFBD><EFBFBD>ͬʱ<CDAC>յ<EFBFBD>һ<EFBFBD><D2BB> GPL <20>ĸ<EFBFBD><C4B8><EFBFBD>
|
||||||
|
* <20><><EFBFBD><EFBFBD>û<EFBFBD>У<EFBFBD><D0A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><https://www.gnu.org/licenses/>
|
||||||
|
*
|
||||||
|
* <20><><EFBFBD><EFBFBD>ע<EFBFBD><D7A2><EFBFBD><EFBFBD>
|
||||||
|
* <20><><EFBFBD><EFBFBD>Դ<EFBFBD><D4B4>ʹ<EFBFBD><CAB9> GPL3.0 <20><>Դ<EFBFBD><D4B4><EFBFBD><EFBFBD>֤Э<D6A4><D0AD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA><EFBFBD>İ汾
|
||||||
|
* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ӣ<EFBFBD>İ<EFBFBD><C4B0><EFBFBD> libraries/doc <20>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD>µ<EFBFBD> GPL3_permission_statement.txt <20>ļ<EFBFBD><C4BC><EFBFBD>
|
||||||
|
* <20><><EFBFBD><EFBFBD>֤<EFBFBD><D6A4><EFBFBD><EFBFBD><EFBFBD><EFBFBD> libraries <20>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD>µ<EFBFBD> LICENSE <20>ļ<EFBFBD>
|
||||||
|
* <20><>ӭ<EFBFBD><D3AD>λʹ<CEBB>ò<EFBFBD><C3B2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><DEB8><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD>뱣<EFBFBD><EBB1A3><EFBFBD><EFBFBD><EFBFBD>ɿƼ<C9BF><C6BC>İ<EFBFBD>Ȩ<EFBFBD><C8A8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
|
*
|
||||||
|
* <20>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD><EFBFBD> zf_device_uart_receiver
|
||||||
|
* <20><>˾<EFBFBD><CBBE><EFBFBD><EFBFBD> <20>ɶ<EFBFBD><C9B6><EFBFBD><EFBFBD>ɿƼ<C9BF><C6BC><EFBFBD><EFBFBD><EFBFBD>˾
|
||||||
|
* <20>汾<EFBFBD><E6B1BE>Ϣ <20>鿴 libraries/doc <20>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD><EFBFBD> version <20>ļ<EFBFBD> <20>汾˵<E6B1BE><CBB5>
|
||||||
|
* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ADS v1.9.20
|
||||||
|
* <20><><EFBFBD><EFBFBD>ƽ̨ TC264D
|
||||||
|
* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> https://seekfree.taobao.com/
|
||||||
|
*
|
||||||
|
* <20>ļ<DEB8>¼
|
||||||
|
* <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><>ע
|
||||||
|
* 2022-11-04 JKS first version
|
||||||
|
********************************************************************************************************************/
|
||||||
|
/*********************************************************************************************************************
|
||||||
|
* <20><><EFBFBD>߶<EFBFBD><DFB6>壺
|
||||||
|
* ------------------------------------
|
||||||
|
* ģ<><C4A3><EFBFBD>ܽ<EFBFBD> <20><>Ƭ<EFBFBD><C6AC><EFBFBD>ܽ<EFBFBD>
|
||||||
|
* TXD <20>鿴 zf_device_uart_receiver.h <20><> UART_RECEVIER_RX_PIN <20>궨<EFBFBD><EAB6A8>
|
||||||
|
* GND <20><>Դ<EFBFBD><D4B4>
|
||||||
|
* 5V 5V<35><56>Դ
|
||||||
|
* ------------------------------------
|
||||||
|
********************************************************************************************************************/
|
||||||
|
#ifndef _zf_device_uart_receiver_h
|
||||||
|
#define _zf_device_uart_receiver_h
|
||||||
|
|
||||||
|
#include "zf_common_typedef.h"
|
||||||
|
|
||||||
|
#define UART_RECEVIER_UART_INDEX UART_2 // <20><><EFBFBD>崮<EFBFBD>ڽ<EFBFBD><DABD>ջ<EFBFBD>ʹ<EFBFBD>õĴ<C3B5><C4B4><EFBFBD>
|
||||||
|
#define UART_RECEVIER_TX_PIN UART2_TX_P10_5 // ң<><D2A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ջ<EFBFBD>û<EFBFBD><C3BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ţ<EFBFBD><C5A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڴ<EFBFBD><DAB4>ڳ<EFBFBD>ʼ<EFBFBD><CABC>ʱռλʹ<CEBB><CAB9>
|
||||||
|
#define UART_RECEVIER_RX_PIN UART2_RX_P10_6 // <20><><EFBFBD>ڽ<EFBFBD><DABD>ջ<EFBFBD><D5BB><EFBFBD>TX<54><58><EFBFBD><EFBFBD> <20><><EFBFBD>ӵ<EFBFBD>Ƭ<EFBFBD><C6AC><EFBFBD><EFBFBD>RX<52><58><EFBFBD><EFBFBD>
|
||||||
|
#define SBUS_UART_BAUDRATE (100000) // ָ<><D6B8> SBUS <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʹ<EFBFBD>õĵĴ<C4B5><C4B4>ڲ<EFBFBD><DAB2><EFBFBD><EFBFBD><EFBFBD> (<28>û<EFBFBD><C3BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>)
|
||||||
|
#define UART_RECEVIER_CHANNEL_NUM ( 6 ) // <20><><EFBFBD><EFBFBD>ң<EFBFBD><D2A3><EFBFBD><EFBFBD>ͨ<EFBFBD><CDA8><EFBFBD><EFBFBD><EFBFBD><EFBFBD> (<28>û<EFBFBD><C3BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>)
|
||||||
|
|
||||||
|
#define REV_DATA_LEN ( 25 ) // SBUS֡<53><D6A1>
|
||||||
|
#define FRAME_STAR ( 0X0F ) // ֡ͷ<D6A1><CDB7>Ϣ
|
||||||
|
#define FRAME_END ( 0X00 ) // ֡β<D6A1><CEB2>Ϣ
|
||||||
|
#define SBUS_NORMAL_STATE ( 0X03 ) // <20><><EFBFBD><EFBFBD>״̬
|
||||||
|
#define SBUS_ABNORMAL_STATE ( 0X0F ) // ʧ<><CAA7>״̬
|
||||||
|
|
||||||
|
typedef struct
|
||||||
|
{
|
||||||
|
uint16 channel[UART_RECEVIER_CHANNEL_NUM]; // CH1-CH6ͨ<36><CDA8><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
|
uint8 state; // ң<><D2A3><EFBFBD><EFBFBD>״̬(1<><31>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾʧ<CABE><CAA7>)
|
||||||
|
uint8 finsh_flag; // 1<><31><EFBFBD><EFBFBD>ʾ<EFBFBD>ɹ<EFBFBD><C9B9><EFBFBD><EFBFBD>յ<EFBFBD>һ֡ң<D6A1><D2A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
|
}uart_receiver_struct;
|
||||||
|
|
||||||
|
extern uart_receiver_struct uart_receiver; // <20><><EFBFBD>ڽ<EFBFBD><DABD>ջ<EFBFBD>ͨ<EFBFBD><CDA8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>״̬
|
||||||
|
|
||||||
|
void uart_receiver_init(void);
|
||||||
|
|
||||||
|
#endif
|
||||||
@@ -404,6 +404,55 @@ void uart_rx_interrupt (uart_index_enum uart_n, uint32 status)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//-------------------------------------------------------------------------------------------------------------------
|
||||||
|
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> sbus<75><73>ʼ<EFBFBD><CABC>
|
||||||
|
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> uartn <20><><EFBFBD><EFBFBD>ͨ<EFBFBD><CDA8>(UART_0,UART_1,UART_2,UART_3)
|
||||||
|
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> baud <20><><EFBFBD>ڲ<EFBFBD><DAB2><EFBFBD><EFBFBD><EFBFBD>
|
||||||
|
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> tx_pin <20><><EFBFBD>ڷ<EFBFBD><DAB7><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ź<EFBFBD>
|
||||||
|
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> rx_pin <20><><EFBFBD>ڽ<EFBFBD><DABD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ź<EFBFBD>
|
||||||
|
// <20><><EFBFBD>ز<EFBFBD><D8B2><EFBFBD> void
|
||||||
|
// ʹ<><CAB9>ʾ<EFBFBD><CABE> uart_sbus_init(UART_2, 100000, UART2_TX_P10_5, UART2_RX_P10_6);
|
||||||
|
// <20><>ע<EFBFBD><D7A2>Ϣ
|
||||||
|
//-------------------------------------------------------------------------------------------------------------------
|
||||||
|
void uart_sbus_init (uart_index_enum uartn, uint32 baud, uart_tx_pin_enum tx_pin, uart_rx_pin_enum rx_pin)
|
||||||
|
{
|
||||||
|
|
||||||
|
boolean interrupt_state = disableInterrupts();
|
||||||
|
|
||||||
|
volatile Ifx_ASCLIN *moudle = IfxAsclin_getAddress((IfxAsclin_Index)uartn);
|
||||||
|
|
||||||
|
IfxAsclin_Asc_initModuleConfig(&uart_config, moudle); // <20><>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ýṹ<C3BD><E1B9B9>
|
||||||
|
|
||||||
|
uart_set_buffer(uartn); // <20><><EFBFBD>û<EFBFBD><C3BB><EFBFBD><EFBFBD><EFBFBD>
|
||||||
|
|
||||||
|
uart_set_interrupt_priority(uartn); // <20><><EFBFBD><EFBFBD><EFBFBD>ж<EFBFBD><D0B6><EFBFBD><EFBFBD>ȼ<EFBFBD>
|
||||||
|
|
||||||
|
uart_config.clockSource = IfxAsclin_ClockSource_ascFastClock; // ʹ<>ø<EFBFBD><C3B8><EFBFBD>ʱ<EFBFBD><CAB1> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>6.25M
|
||||||
|
uart_config.baudrate.prescaler = 4;
|
||||||
|
uart_config.baudrate.baudrate = (float32)baud;
|
||||||
|
uart_config.baudrate.oversampling = IfxAsclin_OversamplingFactor_8;
|
||||||
|
|
||||||
|
uart_config.frame.stopBit = IfxAsclin_StopBit_2; //ֹͣλ
|
||||||
|
uart_config.frame.parityType = IfxAsclin_ParityType_even; //żУ<C5BC><D0A3>
|
||||||
|
uart_config.frame.dataLength = IfxAsclin_DataLength_8;
|
||||||
|
uart_config.frame.parityBit = TRUE; //<2F><><EFBFBD><EFBFBD>У<EFBFBD><D0A3>
|
||||||
|
|
||||||
|
IfxAsclin_Asc_Pins pins; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
|
pins.cts = NULL;
|
||||||
|
pins.rts = NULL;
|
||||||
|
uart_mux(uartn, tx_pin, rx_pin, (uint32 *)&pins.tx, (uint32 *)&pins.rx);
|
||||||
|
pins.rxMode = IfxPort_InputMode_pullUp;
|
||||||
|
pins.txMode = IfxPort_OutputMode_pushPull;
|
||||||
|
pins.pinDriver = IfxPort_PadDriver_cmosAutomotiveSpeed1;
|
||||||
|
uart_config.pins = &pins;
|
||||||
|
|
||||||
|
IfxAsclin_Asc_initModule(uart_get_handle(uartn), &uart_config);
|
||||||
|
uart_rx_interrupt(uartn, 1);
|
||||||
|
uart_tx_interrupt(uartn, 0);
|
||||||
|
restoreInterrupts(interrupt_state);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
//-------------------------------------------------------------------------------------------------------------------
|
//-------------------------------------------------------------------------------------------------------------------
|
||||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>ڳ<EFBFBD>ʼ<EFBFBD><CABC>
|
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>ڳ<EFBFBD>ʼ<EFBFBD><CABC>
|
||||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> uartn <20><><EFBFBD><EFBFBD>ģ<EFBFBD><C4A3><EFBFBD><EFBFBD>(UART_0,UART_1,UART_2,UART_3)
|
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> uartn <20><><EFBFBD><EFBFBD>ģ<EFBFBD><C4A3><EFBFBD><EFBFBD>(UART_0,UART_1,UART_2,UART_3)
|
||||||
|
|||||||
@@ -125,6 +125,7 @@ uint8 uart_query_byte (uart_index_enum uartn, uint8 *dat);
|
|||||||
void uart_tx_interrupt (uart_index_enum uartn, uint32 status);
|
void uart_tx_interrupt (uart_index_enum uartn, uint32 status);
|
||||||
void uart_rx_interrupt (uart_index_enum uartn, uint32 status);
|
void uart_rx_interrupt (uart_index_enum uartn, uint32 status);
|
||||||
|
|
||||||
|
void uart_sbus_init (uart_index_enum uartn, uint32 baud, uart_tx_pin_enum tx_pin, uart_rx_pin_enum rx_pin);
|
||||||
void uart_init (uart_index_enum uartn, uint32 baud, uart_tx_pin_enum tx_pin, uart_rx_pin_enum rx_pin);
|
void uart_init (uart_index_enum uartn, uint32 baud, uart_tx_pin_enum tx_pin, uart_rx_pin_enum rx_pin);
|
||||||
//====================================================<3D><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>====================================================
|
//====================================================<3D><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>====================================================
|
||||||
|
|
||||||
|
|||||||
@@ -1,3 +1,6 @@
|
|||||||
|
V3.2.8
|
||||||
|
<20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͫ<EFBFBD><CDAB>MCU<43>汾<EFBFBD><E6B1BE><EFBFBD><EFBFBD>
|
||||||
|
<20><><EFBFBD><EFBFBD>SBUSң<53><D2A3><EFBFBD><EFBFBD><EFBFBD>ײ<EFBFBD><D7B2><EFBFBD><EFBFBD><EFBFBD>
|
||||||
V3.2.7
|
V3.2.7
|
||||||
<20><><EFBFBD><EFBFBD>RTK "D" <20><>ͷЭ<CDB7><D0AD>
|
<20><><EFBFBD><EFBFBD>RTK "D" <20><>ͷЭ<CDB7><D0AD>
|
||||||
<20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ǻ<EFBFBD>ת<EFBFBD><D7AA><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>ֹ<EFBFBD><D6B9><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
<20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ǻ<EFBFBD>ת<EFBFBD><D7AA><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>ֹ<EFBFBD><D6B9><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
|
|||||||
@@ -100,6 +100,7 @@
|
|||||||
#include "zf_device_tft180.h"
|
#include "zf_device_tft180.h"
|
||||||
#include "zf_device_tsl1401.h"
|
#include "zf_device_tsl1401.h"
|
||||||
#include "zf_device_type.h"
|
#include "zf_device_type.h"
|
||||||
|
#include "zf_device_uart_receiver.h"
|
||||||
#include "zf_device_virtual_oscilloscope.h"
|
#include "zf_device_virtual_oscilloscope.h"
|
||||||
#include "zf_device_wifi_uart.h"
|
#include "zf_device_wifi_uart.h"
|
||||||
#include "zf_device_wifi_spi.h"
|
#include "zf_device_wifi_spi.h"
|
||||||
|
|||||||
Binary file not shown.
@@ -31,6 +31,7 @@
|
|||||||
* <20>ļ<DEB8>¼
|
* <20>ļ<DEB8>¼
|
||||||
* <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><>ע
|
* <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><>ע
|
||||||
* 2022-09-15 pudding first version
|
* 2022-09-15 pudding first version
|
||||||
|
* 2024-02-02 pudding <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͫ<EFBFBD><CDAB>̬<EFBFBD>⺯<EFBFBD><E2BAAF>
|
||||||
********************************************************************************************************************/
|
********************************************************************************************************************/
|
||||||
|
|
||||||
#ifndef _zf_device_config_h_
|
#ifndef _zf_device_config_h_
|
||||||
@@ -43,5 +44,10 @@ unsigned char mt9v03x_set_config_sccb (void *soft_iic_obj, short int b
|
|||||||
unsigned char mt9v03x_set_exposure_time_sccb (unsigned short int light);
|
unsigned char mt9v03x_set_exposure_time_sccb (unsigned short int light);
|
||||||
unsigned char mt9v03x_set_reg_sccb (unsigned char addr, unsigned short int data);
|
unsigned char mt9v03x_set_reg_sccb (unsigned char addr, unsigned short int data);
|
||||||
|
|
||||||
|
unsigned char scc8660_set_config_sccb (void *soft_iic_obj, short int buff[10][2]);
|
||||||
|
unsigned char scc8660_set_brightness_sccb (unsigned short int brightness);
|
||||||
|
unsigned char scc8660_set_manual_wb_sccb (unsigned short int manual_wb);
|
||||||
|
unsigned char scc8660_set_reg_sccb (unsigned char reg, unsigned short int data);
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|||||||
@@ -31,6 +31,7 @@
|
|||||||
* <20>ļ<DEB8>¼
|
* <20>ļ<DEB8>¼
|
||||||
* <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><>ע
|
* <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><>ע
|
||||||
* 2022-09-15 pudding first version
|
* 2022-09-15 pudding first version
|
||||||
|
* 2024-02-02 pudding <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>MCU<43><55>ͫ<EFBFBD><CDAB><EFBFBD><EFBFBD>
|
||||||
********************************************************************************************************************/
|
********************************************************************************************************************/
|
||||||
/*********************************************************************************************************************
|
/*********************************************************************************************************************
|
||||||
* <20><><EFBFBD>߶<EFBFBD><DFB6>壺
|
* <20><><EFBFBD>߶<EFBFBD><DFB6>壺
|
||||||
@@ -55,9 +56,12 @@
|
|||||||
#include "zf_driver_exti.h"
|
#include "zf_driver_exti.h"
|
||||||
#include "zf_driver_gpio.h"
|
#include "zf_driver_gpio.h"
|
||||||
#include "zf_driver_uart.h"
|
#include "zf_driver_uart.h"
|
||||||
|
#include "zf_driver_soft_iic.h"
|
||||||
#include "zf_device_camera.h"
|
#include "zf_device_camera.h"
|
||||||
#include "zf_device_scc8660.h"
|
|
||||||
#include "zf_device_type.h"
|
#include "zf_device_type.h"
|
||||||
|
#include "zf_device_config.h"
|
||||||
|
|
||||||
|
#include "zf_device_scc8660.h"
|
||||||
|
|
||||||
vuint8 scc8660_finish_flag = 0; // һ<><D2BB>ͼ<EFBFBD><CDBC><EFBFBD>ɼ<EFBFBD><C9BC><EFBFBD><EFBFBD>ɱ<EFBFBD>־λ
|
vuint8 scc8660_finish_flag = 0; // һ<><D2BB>ͼ<EFBFBD><CDBC><EFBFBD>ɼ<EFBFBD><C9BC><EFBFBD><EFBFBD>ɱ<EFBFBD>־λ
|
||||||
IFX_ALIGN(4) uint16 scc8660_image[SCC8660_H][SCC8660_W];
|
IFX_ALIGN(4) uint16 scc8660_image[SCC8660_H][SCC8660_W];
|
||||||
@@ -68,6 +72,7 @@ uint8 scc8660_lost_flag = 1;
|
|||||||
uint8 scc8660_dma_int_num; // <20><>ǰDMA<4D>жϴ<D0B6><CFB4><EFBFBD>
|
uint8 scc8660_dma_int_num; // <20><>ǰDMA<4D>жϴ<D0B6><CFB4><EFBFBD>
|
||||||
uint8 scc8660_dma_init_flag; // <20>Ƿ<EFBFBD><C7B7><EFBFBD>Ҫ<EFBFBD><D2AA><EFBFBD>³<EFBFBD>ʼ<EFBFBD><CABC>
|
uint8 scc8660_dma_init_flag; // <20>Ƿ<EFBFBD><C7B7><EFBFBD>Ҫ<EFBFBD><D2AA><EFBFBD>³<EFBFBD>ʼ<EFBFBD><CABC>
|
||||||
|
|
||||||
|
static scc8660_type_enum scc8660_type;
|
||||||
|
|
||||||
// <20><>Ҫ<EFBFBD><D2AA><EFBFBD>õ<EFBFBD><C3B5><EFBFBD><EFBFBD><EFBFBD>ͷ<EFBFBD><CDB7><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>IJ<DEB8><C4B2><EFBFBD>
|
// <20><>Ҫ<EFBFBD><D2AA><EFBFBD>õ<EFBFBD><C3B5><EFBFBD><EFBFBD><EFBFBD>ͷ<EFBFBD><CDB7><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>IJ<DEB8><C4B2><EFBFBD>
|
||||||
static int16 scc8660_set_confing_buffer[SCC8660_CONFIG_FINISH][2]=
|
static int16 scc8660_set_confing_buffer[SCC8660_CONFIG_FINISH][2]=
|
||||||
@@ -77,7 +82,7 @@ static int16 scc8660_set_confing_buffer[SCC8660_CONFIG_FINISH][2]=
|
|||||||
{SCC8660_AUTO_EXP, SCC8660_AUTO_EXP_DEF}, // <20>Զ<EFBFBD><D4B6>ع<EFBFBD>
|
{SCC8660_AUTO_EXP, SCC8660_AUTO_EXP_DEF}, // <20>Զ<EFBFBD><D4B6>ع<EFBFBD>
|
||||||
{SCC8660_BRIGHT, SCC8660_BRIGHT_DEF}, // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
{SCC8660_BRIGHT, SCC8660_BRIGHT_DEF}, // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
{SCC8660_FPS, SCC8660_FPS_DEF}, // ͼ<><CDBC>֡<EFBFBD><D6A1>
|
{SCC8660_FPS, SCC8660_FPS_DEF}, // ͼ<><CDBC>֡<EFBFBD><D6A1>
|
||||||
{SCC8660_SET_COL, SCC8660_W}, // ͼ<><CDBC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
{SCC8660_SET_COL, SCC8660_W * 4}, // ͼ<><CDBC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
{SCC8660_SET_ROW, SCC8660_H}, // ͼ<><CDBC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
{SCC8660_SET_ROW, SCC8660_H}, // ͼ<><CDBC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
{SCC8660_PCLK_DIV, SCC8660_PCLK_DIV_DEF}, // PCLK<4C><4B>Ƶϵ<C6B5><CFB5>
|
{SCC8660_PCLK_DIV, SCC8660_PCLK_DIV_DEF}, // PCLK<4C><4B>Ƶϵ<C6B5><CFB5>
|
||||||
{SCC8660_PCLK_MODE, SCC8660_PCLK_MODE_DEF}, // PCLKģʽ
|
{SCC8660_PCLK_MODE, SCC8660_PCLK_MODE_DEF}, // PCLKģʽ
|
||||||
@@ -214,71 +219,6 @@ static void scc8660_uart_callback (void)
|
|||||||
fifo_write_element(&camera_receiver_fifo, data);
|
fifo_write_element(&camera_receiver_fifo, data);
|
||||||
}
|
}
|
||||||
|
|
||||||
//-------------------------------------------------------------------------------------------------------------------
|
|
||||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> SCC8660<36><30><EFBFBD><EFBFBD>ͷ<EFBFBD><CDB7><EFBFBD>ж<EFBFBD>
|
|
||||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> void
|
|
||||||
// <20><><EFBFBD>ز<EFBFBD><D8B2><EFBFBD> void
|
|
||||||
// ʹ<><CAB9>ʾ<EFBFBD><CABE> scc8660_vsync_handler();
|
|
||||||
//-------------------------------------------------------------------------------------------------------------------
|
|
||||||
static void scc8660_vsync_handler(void)
|
|
||||||
{
|
|
||||||
exti_flag_clear(SCC8660_VSYNC_PIN);
|
|
||||||
scc8660_dma_int_num = 0;
|
|
||||||
if(scc8660_dma_init_flag || scc8660_lost_flag)
|
|
||||||
{
|
|
||||||
scc8660_dma_init_flag = 0;
|
|
||||||
IfxDma_resetChannel(&MODULE_DMA, SCC8660_DMA_CH);
|
|
||||||
scc8660_link_list_num = dma_init(SCC8660_DMA_CH,
|
|
||||||
SCC8660_DATA_ADD,
|
|
||||||
(uint8 *)scc8660_image[0],
|
|
||||||
SCC8660_PCLK_PIN,
|
|
||||||
EXTI_TRIGGER_RISING,
|
|
||||||
SCC8660_IMAGE_SIZE); // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƶ<EFBFBD><C6B5>300M <20><><EFBFBD><EFBFBD><EFBFBD>ڶ<EFBFBD><DAB6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ΪFALLING
|
|
||||||
dma_enable(SCC8660_DMA_CH);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
if(1 == scc8660_link_list_num)
|
|
||||||
{
|
|
||||||
dma_set_destination(SCC8660_DMA_CH, (uint8 *)scc8660_image[0]); // û<>в<EFBFBD><D0B2><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ӵ<EFBFBD><D3B4><EFBFBD>ģʽ <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ŀ<EFBFBD>ĵ<EFBFBD>ַ
|
|
||||||
}
|
|
||||||
dma_enable(SCC8660_DMA_CH);
|
|
||||||
}
|
|
||||||
scc8660_lost_flag = 1;
|
|
||||||
}
|
|
||||||
|
|
||||||
//-------------------------------------------------------------------------------------------------------------------
|
|
||||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> SCC8660<36><30><EFBFBD><EFBFBD>ͷDMA<4D><41><EFBFBD><EFBFBD><EFBFBD>ж<EFBFBD>
|
|
||||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> void
|
|
||||||
// <20><><EFBFBD>ز<EFBFBD><D8B2><EFBFBD> void
|
|
||||||
// ʹ<><CAB9>ʾ<EFBFBD><CABE> scc8660_dma_handler();
|
|
||||||
//-------------------------------------------------------------------------------------------------------------------
|
|
||||||
static void scc8660_dma_handler(void)
|
|
||||||
{
|
|
||||||
clear_dma_flag(SCC8660_DMA_CH);
|
|
||||||
|
|
||||||
if(IfxDma_getChannelTransactionRequestLost(&MODULE_DMA, SCC8660_DMA_CH)) // ͼ<><CDBC><EFBFBD><EFBFBD>λ<EFBFBD>ж<EFBFBD>
|
|
||||||
{
|
|
||||||
scc8660_finish_flag = 0;
|
|
||||||
dma_disable(SCC8660_DMA_CH);
|
|
||||||
IfxDma_clearChannelTransactionRequestLost(&MODULE_DMA, SCC8660_DMA_CH);
|
|
||||||
scc8660_dma_init_flag = 1;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
scc8660_dma_int_num++;
|
|
||||||
if(scc8660_dma_int_num >= scc8660_link_list_num)
|
|
||||||
{
|
|
||||||
// <20>ɼ<EFBFBD><C9BC><EFBFBD><EFBFBD><EFBFBD>
|
|
||||||
// һ<><D2BB>ͼ<EFBFBD><CDBC><EFBFBD>Ӳɼ<D3B2><C9BC><EFBFBD>ʼ<EFBFBD><CABC><EFBFBD>ɼ<EFBFBD><C9BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ3.8MS<EFBFBD><EFBFBD><EFBFBD><EFBFBD>(50FPS<50><53>188*120<32>ֱ<EFBFBD><D6B1><EFBFBD>)
|
|
||||||
scc8660_dma_int_num = 0;
|
|
||||||
scc8660_lost_flag = 0;
|
|
||||||
scc8660_finish_flag = 1;
|
|
||||||
dma_disable(SCC8660_DMA_CH);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
//-------------------------------------------------------------------------------------------------------------------
|
//-------------------------------------------------------------------------------------------------------------------
|
||||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD>ͷ ID
|
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD>ͷ ID
|
||||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> void
|
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> void
|
||||||
@@ -390,38 +330,46 @@ uint16 scc8660_get_version (void)
|
|||||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͼ<EFBFBD><CDBC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͼ<EFBFBD><CDBC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> data <20><>Ҫ<EFBFBD><D2AA><EFBFBD>õ<EFBFBD><C3B5><EFBFBD><EFBFBD><EFBFBD>ֵ
|
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> data <20><>Ҫ<EFBFBD><D2AA><EFBFBD>õ<EFBFBD><C3B5><EFBFBD><EFBFBD><EFBFBD>ֵ
|
||||||
// <20><><EFBFBD>ز<EFBFBD><D8B2><EFBFBD> uint8 1-ʧ<><CAA7> 0-<2D>ɹ<EFBFBD>
|
// <20><><EFBFBD>ز<EFBFBD><D8B2><EFBFBD> uint8 1-ʧ<><CAA7> 0-<2D>ɹ<EFBFBD>
|
||||||
// ʹ<><CAB9>ʾ<EFBFBD><CABE> scc8660_set_bright(data);
|
// ʹ<><CAB9>ʾ<EFBFBD><CABE> scc8660_set_brightness(data);
|
||||||
// <20><>ע<EFBFBD><D7A2>Ϣ <20><><EFBFBD>øú<C3B8><C3BA><EFBFBD>ǰ<EFBFBD><C7B0><EFBFBD>ȳ<EFBFBD>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͷ<EFBFBD><CDB7><EFBFBD>ô<EFBFBD><C3B4><EFBFBD> ͨ<><CDA8><EFBFBD>ú<EFBFBD><C3BA><EFBFBD><EFBFBD><EFBFBD><EFBFBD>õIJ<C3B5><C4B2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ᱻ51<35><31>Ƭ<EFBFBD><C6AC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
// <20><>ע<EFBFBD><D7A2>Ϣ <20><><EFBFBD>øú<C3B8><C3BA><EFBFBD>ǰ<EFBFBD><C7B0><EFBFBD>ȳ<EFBFBD>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͷ<EFBFBD><CDB7><EFBFBD>ô<EFBFBD><C3B4><EFBFBD> ͨ<><CDA8><EFBFBD>ú<EFBFBD><C3BA><EFBFBD><EFBFBD><EFBFBD><EFBFBD>õIJ<C3B5><C4B2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ᱻ51<35><31>Ƭ<EFBFBD><C6AC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
//-------------------------------------------------------------------------------------------------------------------
|
//-------------------------------------------------------------------------------------------------------------------
|
||||||
uint8 scc8660_set_bright (uint16 data)
|
uint8 scc8660_set_brightness (uint16 data)
|
||||||
{
|
{
|
||||||
uint8 return_state = 0;
|
uint8 return_state = 0;
|
||||||
uint8 uart_buffer[4];
|
|
||||||
uint16 temp;
|
|
||||||
uint16 timeout_count = 0;
|
|
||||||
uint32 uart_buffer_index = 0;
|
|
||||||
|
|
||||||
uart_buffer[0] = 0xA5;
|
if(SCC8660_UART == scc8660_type)
|
||||||
uart_buffer[1] = SCC8660_SET_BRIGHT;
|
|
||||||
uart_buffer[2] = data >> 8;
|
|
||||||
uart_buffer[3] = (uint8)data;
|
|
||||||
|
|
||||||
uart_write_buffer(SCC8660_COF_UART, uart_buffer, 4);
|
|
||||||
|
|
||||||
do
|
|
||||||
{
|
{
|
||||||
if(3 <= fifo_used(&camera_receiver_fifo))
|
uint8 uart_buffer[4];
|
||||||
|
uint16 temp;
|
||||||
|
uint16 timeout_count = 0;
|
||||||
|
uint32 uart_buffer_index = 0;
|
||||||
|
|
||||||
|
uart_buffer[0] = 0xA5;
|
||||||
|
uart_buffer[1] = SCC8660_SET_BRIGHT;
|
||||||
|
uart_buffer[2] = data >> 8;
|
||||||
|
uart_buffer[3] = (uint8)data;
|
||||||
|
|
||||||
|
uart_write_buffer(SCC8660_COF_UART, uart_buffer, 4);
|
||||||
|
|
||||||
|
do
|
||||||
{
|
{
|
||||||
uart_buffer_index = 3;
|
if(3 <= fifo_used(&camera_receiver_fifo))
|
||||||
fifo_read_buffer(&camera_receiver_fifo, uart_buffer, &uart_buffer_index, FIFO_READ_AND_CLEAN);
|
{
|
||||||
temp = uart_buffer[1] << 8 | uart_buffer[2];
|
uart_buffer_index = 3;
|
||||||
break;
|
fifo_read_buffer(&camera_receiver_fifo, uart_buffer, &uart_buffer_index, FIFO_READ_AND_CLEAN);
|
||||||
|
temp = uart_buffer[1] << 8 | uart_buffer[2];
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
system_delay_ms(1);
|
||||||
|
}while(SCC8660_INIT_TIMEOUT > timeout_count ++);
|
||||||
|
if((temp != data) || (SCC8660_INIT_TIMEOUT <= timeout_count))
|
||||||
|
{
|
||||||
|
return_state = 1;
|
||||||
}
|
}
|
||||||
system_delay_ms(1);
|
}
|
||||||
}while(SCC8660_INIT_TIMEOUT > timeout_count ++);
|
else
|
||||||
if((temp != data) || (SCC8660_INIT_TIMEOUT <= timeout_count))
|
|
||||||
{
|
{
|
||||||
return_state = 1;
|
return_state = scc8660_set_brightness_sccb(data);
|
||||||
}
|
}
|
||||||
return return_state;
|
return return_state;
|
||||||
}
|
}
|
||||||
@@ -436,32 +384,40 @@ uint8 scc8660_set_bright (uint16 data)
|
|||||||
uint8 scc8660_set_white_balance (uint16 data)
|
uint8 scc8660_set_white_balance (uint16 data)
|
||||||
{
|
{
|
||||||
uint8 return_state = 0;
|
uint8 return_state = 0;
|
||||||
uint8 uart_buffer[4];
|
|
||||||
uint16 temp;
|
|
||||||
uint16 timeout_count = 0;
|
|
||||||
uint32 uart_buffer_index = 0;
|
|
||||||
|
|
||||||
uart_buffer[0] = 0xA5;
|
if(SCC8660_UART == scc8660_type)
|
||||||
uart_buffer[1] = SCC8660_SET_MANUAL_WB;
|
|
||||||
uart_buffer[2] = data >> 8;
|
|
||||||
uart_buffer[3] = (uint8)data;
|
|
||||||
|
|
||||||
uart_write_buffer(SCC8660_COF_UART, uart_buffer, 4);
|
|
||||||
|
|
||||||
do
|
|
||||||
{
|
{
|
||||||
if(3 <= fifo_used(&camera_receiver_fifo))
|
uint8 uart_buffer[4];
|
||||||
|
uint16 temp;
|
||||||
|
uint16 timeout_count = 0;
|
||||||
|
uint32 uart_buffer_index = 0;
|
||||||
|
|
||||||
|
uart_buffer[0] = 0xA5;
|
||||||
|
uart_buffer[1] = SCC8660_SET_MANUAL_WB;
|
||||||
|
uart_buffer[2] = data >> 8;
|
||||||
|
uart_buffer[3] = (uint8)data;
|
||||||
|
|
||||||
|
uart_write_buffer(SCC8660_COF_UART, uart_buffer, 4);
|
||||||
|
|
||||||
|
do
|
||||||
{
|
{
|
||||||
uart_buffer_index = 3;
|
if(3 <= fifo_used(&camera_receiver_fifo))
|
||||||
fifo_read_buffer(&camera_receiver_fifo, uart_buffer, &uart_buffer_index, FIFO_READ_AND_CLEAN);
|
{
|
||||||
temp = uart_buffer[1] << 8 | uart_buffer[2];
|
uart_buffer_index = 3;
|
||||||
break;
|
fifo_read_buffer(&camera_receiver_fifo, uart_buffer, &uart_buffer_index, FIFO_READ_AND_CLEAN);
|
||||||
|
temp = uart_buffer[1] << 8 | uart_buffer[2];
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
system_delay_ms(1);
|
||||||
|
}while(SCC8660_INIT_TIMEOUT > timeout_count ++);
|
||||||
|
if((temp != data) || (SCC8660_INIT_TIMEOUT <= timeout_count))
|
||||||
|
{
|
||||||
|
return_state = 1;
|
||||||
}
|
}
|
||||||
system_delay_ms(1);
|
}
|
||||||
}while(SCC8660_INIT_TIMEOUT > timeout_count ++);
|
else
|
||||||
if((temp != data) || (SCC8660_INIT_TIMEOUT <= timeout_count))
|
|
||||||
{
|
{
|
||||||
return_state = 1;
|
return_state = scc8660_set_manual_wb_sccb(data);
|
||||||
}
|
}
|
||||||
return return_state;
|
return return_state;
|
||||||
}
|
}
|
||||||
@@ -477,43 +433,117 @@ uint8 scc8660_set_white_balance (uint16 data)
|
|||||||
uint8 scc8660_set_reg (uint8 addr, uint16 data)
|
uint8 scc8660_set_reg (uint8 addr, uint16 data)
|
||||||
{
|
{
|
||||||
uint8 return_state = 0;
|
uint8 return_state = 0;
|
||||||
uint8 uart_buffer[4];
|
|
||||||
uint16 temp;
|
|
||||||
uint16 timeout_count = 0;
|
|
||||||
uint32 uart_buffer_index = 0;
|
|
||||||
|
|
||||||
uart_buffer[0] = 0xA5;
|
if(SCC8660_UART == scc8660_type)
|
||||||
uart_buffer[1] = SCC8660_SET_REG_ADDR;
|
|
||||||
uart_buffer[2] = 0x00;
|
|
||||||
uart_buffer[3] = (uint8)addr;
|
|
||||||
uart_write_buffer(SCC8660_COF_UART, uart_buffer, 4);
|
|
||||||
|
|
||||||
system_delay_ms(10);
|
|
||||||
uart_buffer[0] = 0xA5;
|
|
||||||
uart_buffer[1] = SCC8660_SET_REG_DATA;
|
|
||||||
temp = data;
|
|
||||||
uart_buffer[2] = temp >> 8;
|
|
||||||
uart_buffer[3] = (uint8)temp;
|
|
||||||
uart_write_buffer(SCC8660_COF_UART, uart_buffer, 4);
|
|
||||||
|
|
||||||
do
|
|
||||||
{
|
{
|
||||||
if(3 <= fifo_used(&camera_receiver_fifo))
|
uint8 uart_buffer[4];
|
||||||
|
uint16 temp;
|
||||||
|
uint16 timeout_count = 0;
|
||||||
|
uint32 uart_buffer_index = 0;
|
||||||
|
|
||||||
|
uart_buffer[0] = 0xA5;
|
||||||
|
uart_buffer[1] = SCC8660_SET_REG_ADDR;
|
||||||
|
uart_buffer[2] = 0x00;
|
||||||
|
uart_buffer[3] = (uint8)addr;
|
||||||
|
uart_write_buffer(SCC8660_COF_UART, uart_buffer, 4);
|
||||||
|
|
||||||
|
system_delay_ms(10);
|
||||||
|
uart_buffer[0] = 0xA5;
|
||||||
|
uart_buffer[1] = SCC8660_SET_REG_DATA;
|
||||||
|
temp = data;
|
||||||
|
uart_buffer[2] = temp >> 8;
|
||||||
|
uart_buffer[3] = (uint8)temp;
|
||||||
|
uart_write_buffer(SCC8660_COF_UART, uart_buffer, 4);
|
||||||
|
|
||||||
|
do
|
||||||
{
|
{
|
||||||
uart_buffer_index = 3;
|
if(3 <= fifo_used(&camera_receiver_fifo))
|
||||||
fifo_read_buffer(&camera_receiver_fifo, uart_buffer, &uart_buffer_index, FIFO_READ_AND_CLEAN);
|
{
|
||||||
temp = uart_buffer[1] << 8 | uart_buffer[2];
|
uart_buffer_index = 3;
|
||||||
break;
|
fifo_read_buffer(&camera_receiver_fifo, uart_buffer, &uart_buffer_index, FIFO_READ_AND_CLEAN);
|
||||||
|
temp = uart_buffer[1] << 8 | uart_buffer[2];
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
system_delay_ms(1);
|
||||||
|
}while(SCC8660_INIT_TIMEOUT > timeout_count ++);
|
||||||
|
if((temp != data) || (SCC8660_INIT_TIMEOUT <= timeout_count))
|
||||||
|
{
|
||||||
|
return_state = 1;
|
||||||
}
|
}
|
||||||
system_delay_ms(1);
|
|
||||||
}while(SCC8660_INIT_TIMEOUT > timeout_count ++);
|
}
|
||||||
if((temp != data) || (SCC8660_INIT_TIMEOUT <= timeout_count))
|
else
|
||||||
{
|
{
|
||||||
return_state = 1;
|
return_state = scc8660_set_reg_sccb(addr, data);
|
||||||
}
|
}
|
||||||
return return_state;
|
return return_state;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//-------------------------------------------------------------------------------------------------------------------
|
||||||
|
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> SCC8660<36><30><EFBFBD><EFBFBD>ͷ<EFBFBD><CDB7><EFBFBD>ж<EFBFBD>
|
||||||
|
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> void
|
||||||
|
// <20><><EFBFBD>ز<EFBFBD><D8B2><EFBFBD> void
|
||||||
|
// ʹ<><CAB9>ʾ<EFBFBD><CABE> scc8660_vsync_handler();
|
||||||
|
//-------------------------------------------------------------------------------------------------------------------
|
||||||
|
static void scc8660_vsync_handler(void)
|
||||||
|
{
|
||||||
|
exti_flag_clear(SCC8660_VSYNC_PIN);
|
||||||
|
scc8660_dma_int_num = 0;
|
||||||
|
if(scc8660_dma_init_flag || scc8660_lost_flag)
|
||||||
|
{
|
||||||
|
scc8660_dma_init_flag = 0;
|
||||||
|
IfxDma_resetChannel(&MODULE_DMA, SCC8660_DMA_CH);
|
||||||
|
scc8660_link_list_num = dma_init(SCC8660_DMA_CH,
|
||||||
|
SCC8660_DATA_ADD,
|
||||||
|
(uint8 *)scc8660_image[0],
|
||||||
|
SCC8660_PCLK_PIN,
|
||||||
|
EXTI_TRIGGER_RISING,
|
||||||
|
SCC8660_IMAGE_SIZE);
|
||||||
|
dma_enable(SCC8660_DMA_CH);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
if(1 == scc8660_link_list_num)
|
||||||
|
{
|
||||||
|
dma_set_destination(SCC8660_DMA_CH, (uint8 *)scc8660_image[0]); // û<>в<EFBFBD><D0B2><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ӵ<EFBFBD><D3B4><EFBFBD>ģʽ <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ŀ<EFBFBD>ĵ<EFBFBD>ַ
|
||||||
|
}
|
||||||
|
dma_enable(SCC8660_DMA_CH);
|
||||||
|
}
|
||||||
|
scc8660_lost_flag = 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
//-------------------------------------------------------------------------------------------------------------------
|
||||||
|
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> SCC8660<36><30><EFBFBD><EFBFBD>ͷDMA<4D><41><EFBFBD><EFBFBD><EFBFBD>ж<EFBFBD>
|
||||||
|
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> void
|
||||||
|
// <20><><EFBFBD>ز<EFBFBD><D8B2><EFBFBD> void
|
||||||
|
// ʹ<><CAB9>ʾ<EFBFBD><CABE> scc8660_dma_handler();
|
||||||
|
//-------------------------------------------------------------------------------------------------------------------
|
||||||
|
static void scc8660_dma_handler(void)
|
||||||
|
{
|
||||||
|
clear_dma_flag(SCC8660_DMA_CH);
|
||||||
|
|
||||||
|
if(IfxDma_getChannelTransactionRequestLost(&MODULE_DMA, SCC8660_DMA_CH)) // ͼ<><CDBC><EFBFBD><EFBFBD>λ<EFBFBD>ж<EFBFBD>
|
||||||
|
{
|
||||||
|
scc8660_finish_flag = 0;
|
||||||
|
dma_disable(SCC8660_DMA_CH);
|
||||||
|
IfxDma_clearChannelTransactionRequestLost(&MODULE_DMA, SCC8660_DMA_CH);
|
||||||
|
scc8660_dma_init_flag = 1;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
scc8660_dma_int_num++;
|
||||||
|
if(scc8660_dma_int_num >= scc8660_link_list_num)
|
||||||
|
{
|
||||||
|
// <20>ɼ<EFBFBD><C9BC><EFBFBD><EFBFBD><EFBFBD>
|
||||||
|
// һ<><D2BB>ͼ<EFBFBD><CDBC><EFBFBD>Ӳɼ<D3B2><C9BC><EFBFBD>ʼ<EFBFBD><CABC><EFBFBD>ɼ<EFBFBD><C9BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ3.8MS<EFBFBD><EFBFBD><EFBFBD><EFBFBD>(50FPS<50><53>188*120<32>ֱ<EFBFBD><D6B1><EFBFBD>)
|
||||||
|
scc8660_dma_int_num = 0;
|
||||||
|
scc8660_lost_flag = 0;
|
||||||
|
scc8660_finish_flag = 1;
|
||||||
|
dma_disable(SCC8660_DMA_CH);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
//-------------------------------------------------------------------------------------------------------------------
|
//-------------------------------------------------------------------------------------------------------------------
|
||||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> SCC8660 <20><><EFBFBD><EFBFBD>ͷ<EFBFBD><CDB7>ʼ<EFBFBD><CABC>
|
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> SCC8660 <20><><EFBFBD><EFBFBD>ͷ<EFBFBD><CDB7>ʼ<EFBFBD><CABC>
|
||||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> void
|
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> void
|
||||||
@@ -524,51 +554,54 @@ uint8 scc8660_set_reg (uint8 addr, uint16 data)
|
|||||||
uint8 scc8660_init (void)
|
uint8 scc8660_init (void)
|
||||||
{
|
{
|
||||||
uint8 return_state = 0;
|
uint8 return_state = 0;
|
||||||
uint16 scc8660_version = 0;
|
soft_iic_info_struct scc8660_iic_struct;
|
||||||
|
|
||||||
|
// <20><>ʼ<EFBFBD><CABC>֮ǰ<D6AE><C7B0><EFBFBD>߳<EFBFBD><DFB3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
gpio_init(P02_0, GPO, GPIO_HIGH, GPO_PUSH_PULL);
|
gpio_init(P02_0, GPO, GPIO_HIGH, GPO_PUSH_PULL);
|
||||||
gpio_init(P02_1, GPO, GPIO_HIGH, GPO_PUSH_PULL);
|
gpio_init(P02_1, GPO, GPIO_HIGH, GPO_PUSH_PULL);
|
||||||
|
|
||||||
// <20><>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͷ
|
|
||||||
uart_init(SCC8660_COF_UART, SCC8660_COF_BAUR, SCC8660_COF_UART_RX, SCC8660_COF_UART_TX);
|
|
||||||
uart_rx_interrupt(SCC8660_COF_UART, 1);
|
|
||||||
|
|
||||||
system_delay_ms(200);
|
|
||||||
|
|
||||||
set_camera_type(CAMERA_COLOR, scc8660_vsync_handler, scc8660_dma_handler, scc8660_uart_callback); // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͷ<EFBFBD><CDB7><EFBFBD><EFBFBD>
|
|
||||||
camera_fifo_init();
|
|
||||||
do
|
do
|
||||||
{
|
{
|
||||||
// <20>ȴ<EFBFBD><C8B4><EFBFBD><EFBFBD><EFBFBD>ͷ<EFBFBD>ϵ<EFBFBD><CFB5><EFBFBD>ʼ<EFBFBD><CABC><EFBFBD>ɹ<EFBFBD> <20><>ʽ<EFBFBD><CABD><EFBFBD><EFBFBD><EFBFBD>֣<EFBFBD><D6A3><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD>ͨ<EFBFBD><CDA8><EFBFBD><EFBFBD>ȡ<EFBFBD><C8A1><EFBFBD>õķ<C3B5>ʽ <20><>ѡһ
|
system_delay_ms(200);
|
||||||
// system_delay_ms(1000); // <20><>ʱ<EFBFBD><CAB1>ʽ
|
set_camera_type(CAMERA_COLOR, scc8660_vsync_handler, scc8660_dma_handler, NULL); // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͷ<EFBFBD><CDB7><EFBFBD><EFBFBD>
|
||||||
scc8660_version = scc8660_get_version(); // <20><>ȡ<EFBFBD><C8A1><EFBFBD>õķ<C3B5>ʽ
|
// <20><><EFBFBD>ȳ<EFBFBD><C8B3><EFBFBD>SCCBͨѶ
|
||||||
if(scc8660_set_config(scc8660_set_confing_buffer))
|
scc8660_type = SCC8660_SCCB;
|
||||||
|
soft_iic_init(&scc8660_iic_struct, 0, SCC8660_COF_IIC_DELAY, SCC8660_COF_IIC_SCL, SCC8660_COF_IIC_SDA);
|
||||||
|
if(scc8660_set_config_sccb(&scc8660_iic_struct, scc8660_set_confing_buffer))
|
||||||
{
|
{
|
||||||
set_camera_type(NO_CAMERE, NULL, NULL, NULL);
|
// SCCBͨѶʧ<D1B6>ܣ<EFBFBD><DCA3><EFBFBD><EFBFBD>Դ<EFBFBD><D4B4><EFBFBD>ͨѶ
|
||||||
return_state = 1;
|
scc8660_type = SCC8660_UART;
|
||||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>˶<EFBFBD><CBB6><EFBFBD><EFBFBD><EFBFBD>Ϣ <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD>λ<EFBFBD><CEBB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
camera_fifo_init();
|
||||||
// <20><>ô<EFBFBD><EFBFBD><EFBFBD>Ǵ<EFBFBD><EFBFBD><EFBFBD>ͨ<EFBFBD>ų<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD>˳<EFBFBD><EFBFBD><EFBFBD>
|
set_camera_type(CAMERA_COLOR, scc8660_vsync_handler, scc8660_dma_handler, &scc8660_uart_callback); // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͷ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
// <20><><EFBFBD><EFBFBD>һ<EFBFBD>½<EFBFBD><C2BD><EFBFBD><EFBFBD><EFBFBD>û<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>û<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ܾ<EFBFBD><EFBFBD>ǻ<EFBFBD><EFBFBD><EFBFBD>
|
uart_init (SCC8660_COF_UART, SCC8660_COF_BAUR, SCC8660_COF_UART_RX, SCC8660_COF_UART_TX); //<2F><>ʼ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͷ
|
||||||
zf_log(0, "SCC8660 set config error.");
|
uart_rx_interrupt(SCC8660_COF_UART, 1);
|
||||||
break;
|
fifo_clear(&camera_receiver_fifo);
|
||||||
}
|
|
||||||
|
|
||||||
if(0 == return_state)
|
if(scc8660_set_config(scc8660_set_confing_buffer))
|
||||||
{
|
|
||||||
// <20><>ȡ<EFBFBD><C8A1><EFBFBD>ñ<EFBFBD><C3B1>ڲ鿴<DAB2><E9BFB4><EFBFBD><EFBFBD><EFBFBD>Ƿ<EFBFBD><C7B7><EFBFBD>ȷ
|
|
||||||
if(scc8660_get_config(scc8660_get_confing_buffer))
|
|
||||||
{
|
{
|
||||||
set_camera_type(NO_CAMERE, NULL, NULL, NULL);
|
|
||||||
return_state = 1;
|
|
||||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>˶<EFBFBD><CBB6><EFBFBD><EFBFBD><EFBFBD>Ϣ <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD>λ<EFBFBD><CEBB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>˶<EFBFBD><CBB6><EFBFBD><EFBFBD><EFBFBD>Ϣ <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD>λ<EFBFBD><CEBB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
// <20><>ô<EFBFBD><C3B4><EFBFBD>Ǵ<EFBFBD><EFBFBD><EFBFBD>ͨ<EFBFBD>ų<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD>˳<EFBFBD><EFBFBD><EFBFBD>
|
// <20><>ô<EFBFBD><C3B4><EFBFBD><EFBFBD>ͨ<EFBFBD>ų<EFBFBD><C5B3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD>˳<EFBFBD><CBB3><EFBFBD>
|
||||||
// <20><><EFBFBD><EFBFBD>һ<EFBFBD>½<EFBFBD><C2BD><EFBFBD><EFBFBD><EFBFBD>û<EFBFBD><C3BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>û<EFBFBD><C3BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ܾ<EFBFBD><DCBE>ǻ<EFBFBD><C7BB><EFBFBD>
|
// <20><><EFBFBD><EFBFBD>һ<EFBFBD>½<EFBFBD><C2BD><EFBFBD><EFBFBD><EFBFBD>û<EFBFBD><C3BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>û<EFBFBD><C3BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ܾ<EFBFBD><DCBE>ǻ<EFBFBD><C7BB><EFBFBD>
|
||||||
zf_log(0, "SCC8660 set config error.");
|
zf_log(0, "SCC8660 set config error.");
|
||||||
|
set_camera_type(NO_CAMERE, NULL, NULL, NULL);
|
||||||
|
return_state = 1;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
scc8660_link_list_num = camera_init(SCC8660_DATA_ADD, (uint8 *)scc8660_image[0], SCC8660_IMAGE_SIZE);
|
// <20><>ȡ<EFBFBD><C8A1><EFBFBD>ñ<EFBFBD><C3B1>ڲ鿴<DAB2><E9BFB4><EFBFBD><EFBFBD><EFBFBD>Ƿ<EFBFBD><C7B7><EFBFBD>ȷ
|
||||||
|
if(scc8660_get_config(scc8660_get_confing_buffer))
|
||||||
|
{
|
||||||
|
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>˶<EFBFBD><CBB6><EFBFBD><EFBFBD><EFBFBD>Ϣ <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD>λ<EFBFBD><CEBB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
|
// <20><>ô<EFBFBD><C3B4><EFBFBD>Ǵ<EFBFBD><C7B4><EFBFBD>ͨ<EFBFBD>ų<EFBFBD><C5B3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD>˳<EFBFBD><CBB3><EFBFBD>
|
||||||
|
// <20><><EFBFBD><EFBFBD>һ<EFBFBD>½<EFBFBD><C2BD><EFBFBD><EFBFBD><EFBFBD>û<EFBFBD><C3BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>û<EFBFBD><C3BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ܾ<EFBFBD><DCBE>ǻ<EFBFBD><C7BB><EFBFBD>
|
||||||
|
zf_log(0, "SCC8660 get config error.");
|
||||||
|
set_camera_type(NO_CAMERE, NULL, NULL, NULL);
|
||||||
|
return_state = 1;
|
||||||
|
break;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
scc8660_link_list_num = camera_init(SCC8660_DATA_ADD, (uint8 *)scc8660_image[0], SCC8660_IMAGE_SIZE);
|
||||||
}while(0);
|
}while(0);
|
||||||
|
|
||||||
return return_state;
|
return return_state;
|
||||||
|
|||||||
@@ -31,7 +31,7 @@
|
|||||||
* <20>ļ<DEB8>¼
|
* <20>ļ<DEB8>¼
|
||||||
* <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><>ע
|
* <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><>ע
|
||||||
* 2022-09-15 pudding first version
|
* 2022-09-15 pudding first version
|
||||||
* 2023-04-28 pudding <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ע<EFBFBD><EFBFBD>˵<EFBFBD><EFBFBD>
|
* 2024-02-02 pudding <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>MCU<EFBFBD><EFBFBD>ͫ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
********************************************************************************************************************/
|
********************************************************************************************************************/
|
||||||
/*********************************************************************************************************************
|
/*********************************************************************************************************************
|
||||||
* <20><><EFBFBD>߶<EFBFBD><DFB6>壺
|
* <20><><EFBFBD>߶<EFBFBD><DFB6>壺
|
||||||
@@ -59,35 +59,36 @@
|
|||||||
#define SCC8660_COF_UART_TX (UART1_RX_P02_3) // <20><>ͫ UART-TX <20><><EFBFBD><EFBFBD> Ҫ<><D2AA><EFBFBD>ڵ<EFBFBD>Ƭ<EFBFBD><C6AC> RX <20><>
|
#define SCC8660_COF_UART_TX (UART1_RX_P02_3) // <20><>ͫ UART-TX <20><><EFBFBD><EFBFBD> Ҫ<><D2AA><EFBFBD>ڵ<EFBFBD>Ƭ<EFBFBD><C6AC> RX <20><>
|
||||||
#define SCC8660_COF_UART_RX (UART1_TX_P02_2) // <20><>ͫ UART-RX <20><><EFBFBD><EFBFBD> Ҫ<><D2AA><EFBFBD>ڵ<EFBFBD>Ƭ<EFBFBD><C6AC> TX <20><>
|
#define SCC8660_COF_UART_RX (UART1_TX_P02_2) // <20><>ͫ UART-RX <20><><EFBFBD><EFBFBD> Ҫ<><D2AA><EFBFBD>ڵ<EFBFBD>Ƭ<EFBFBD><C6AC> TX <20><>
|
||||||
|
|
||||||
|
#define SCC8660_COF_IIC_DELAY (800) // <20><>ͫ IIC <20><>ʱ
|
||||||
|
#define SCC8660_COF_IIC_SCL (P02_3) // <20><>ͫ IIC-SCL <20><><EFBFBD><EFBFBD>
|
||||||
|
#define SCC8660_COF_IIC_SDA (P02_2) // <20><>ͫ IIC-SDA <20><><EFBFBD><EFBFBD>
|
||||||
|
|
||||||
#define SCC8660_DMA_CH (IfxDma_ChannelId_5)
|
#define SCC8660_DMA_CH (IfxDma_ChannelId_5)
|
||||||
|
|
||||||
#define SCC8660_PCLK_PIN (ERU_CH2_REQ14_P02_1) // PCLK <20><><EFBFBD><EFBFBD><EFBFBD>ź<EFBFBD> TIM_ETR <20><><EFBFBD>Ž<EFBFBD>ֹ<EFBFBD><D6B9><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
#define SCC8660_PCLK_PIN (ERU_CH2_REQ14_P02_1) // PCLK <20><><EFBFBD><EFBFBD><EFBFBD>ź<EFBFBD> TIM_ETR <20><><EFBFBD>Ž<EFBFBD>ֹ<EFBFBD><D6B9><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
|
|
||||||
#define SCC8660_VSYNC_PIN (ERU_CH3_REQ6_P02_0 ) // <20><><EFBFBD>ж<EFBFBD><D0B6><EFBFBD><EFBFBD><EFBFBD>
|
#define SCC8660_VSYNC_PIN (ERU_CH3_REQ6_P02_0 ) // <20><><EFBFBD>ж<EFBFBD><D0B6><EFBFBD><EFBFBD><EFBFBD>
|
||||||
|
|
||||||
#define SCC8660_DATA_PIN (P00_0) // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ֻ<><D6BB><EFBFBD><EFBFBD> GPIOx0 <20><><EFBFBD><EFBFBD> GPIOx8 <20><>ʼ <20><><EFBFBD><EFBFBD><EFBFBD>˸<EFBFBD><CBB8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> F0-F7
|
#define SCC8660_DATA_PIN (P00_0) // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ֻ<><D6BB><EFBFBD><EFBFBD> GPIOx0 <20><><EFBFBD><EFBFBD> GPIOx8 <20><>ʼ <20><><EFBFBD><EFBFBD><EFBFBD>˸<EFBFBD><CBB8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> F0-F7
|
||||||
#define SCC8660_DATA_ADD (get_port_in_addr(SCC8660_DATA_PIN))
|
#define SCC8660_DATA_ADD (get_port_in_addr(SCC8660_DATA_PIN))
|
||||||
|
|
||||||
#define SCC8660_INIT_TIMEOUT (0x00F0) // Ĭ<>ϵ<EFBFBD><CFB5><EFBFBD><EFBFBD><EFBFBD>ͷ<EFBFBD><CDB7>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD>ʱʱ<CAB1><CAB1> <20><><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA>λ
|
#define SCC8660_INIT_TIMEOUT (0x00F0) // Ĭ<>ϵ<EFBFBD><CFB5><EFBFBD><EFBFBD><EFBFBD>ͷ<EFBFBD><CDB7>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD>ʱʱ<CAB1><CAB1> <20><><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA>λ
|
||||||
//================================================<3D><><EFBFBD><EFBFBD> SCC8660 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>================================================
|
//================================================<3D><><EFBFBD><EFBFBD> SCC8660 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>================================================
|
||||||
|
|
||||||
//================================================<3D><><EFBFBD><EFBFBD> SCC8660 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>================================================
|
//================================================<3D><><EFBFBD><EFBFBD> SCC8660 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ã<EFBFBD><EFBFBD><EFBFBD>֧<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͫ<EFBFBD><EFBFBD>֡<EFBFBD>ʰ汾<EFBFBD><EFBFBD>===========================
|
||||||
#define SCC8660_W (160) // ʵ<EFBFBD><EFBFBD>ͼ<EFBFBD><EFBFBD><EFBFBD>ֱ<EFBFBD><EFBFBD>ʿ<EFBFBD><EFBFBD><EFBFBD> <20><>ѡ<EFBFBD><D1A1><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA>160 180
|
#define SCC8660_W (160) // ͼ<><CDBC><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>ѡ<EFBFBD><D1A1><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA>160 80 40
|
||||||
#define SCC8660_H (120) // ʵ<EFBFBD><EFBFBD>ͼ<EFBFBD><EFBFBD><EFBFBD>ֱ<EFBFBD><EFBFBD>ʸ߶<EFBFBD> <20><>ѡ<EFBFBD><D1A1><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA>120 160
|
#define SCC8660_H (120) // ͼ<><CDBC><EFBFBD>߶<EFBFBD> <20><>ѡ<EFBFBD><D1A1><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA>120 160 240
|
||||||
#define SCC8660_IMAGE_SIZE (SCC8660_W * 2 * SCC8660_H) // <20><><EFBFBD><EFBFBD>ͼ<EFBFBD><CDBC><EFBFBD><EFBFBD>С SCC8660_W*2*SCC8660_H <20><><EFBFBD>ܳ<EFBFBD><DCB3><EFBFBD> 65535
|
#define SCC8660_IMAGE_SIZE (SCC8660_W * 2 * SCC8660_H) // <20><><EFBFBD><EFBFBD>ͼ<EFBFBD><CDBC><EFBFBD><EFBFBD>С SCC8660_W*2*SCC8660_H <20><><EFBFBD>ܳ<EFBFBD><DCB3><EFBFBD> 65535
|
||||||
|
|
||||||
#define SCC8660_AUTO_EXP_DEF (0 ) // <20>Զ<EFBFBD><D4B6>ع<EFBFBD> Ĭ<>ϲ<EFBFBD><CFB2><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Զ<EFBFBD><D4B6>ع<EFBFBD><D8B9><EFBFBD><EFBFBD><EFBFBD> <20><>Χ [0-1] 0Ϊ<30>ر<EFBFBD>
|
#define SCC8660_AUTO_EXP_DEF (0 ) // <20>Զ<EFBFBD><D4B6>ع<EFBFBD> Ĭ<>ϲ<EFBFBD><CFB2><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Զ<EFBFBD><D4B6>ع<EFBFBD><D8B9><EFBFBD><EFBFBD><EFBFBD> <20><>Χ [0-1] 0Ϊ<30>ر<EFBFBD>
|
||||||
#define SCC8660_BRIGHT_DEF (300) // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ֶ<EFBFBD><D6B6>ع<EFBFBD>Ĭ<EFBFBD>ϣ<EFBFBD>300 <20>ֶ<EFBFBD><D6B6>ع<EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Χ0-65535 <20>Զ<EFBFBD><D4B6>ع<EFBFBD><D8B9>Ƽ<EFBFBD>ֵ<EFBFBD><D6B5>100 <20>Զ<EFBFBD><D4B6>ع<EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>÷<EFBFBD>Χ0-255
|
#define SCC8660_BRIGHT_DEF (500) // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ֶ<EFBFBD><D6B6>ع<EFBFBD>Ĭ<EFBFBD>ϣ<EFBFBD>300 <20>ֶ<EFBFBD><D6B6>ع<EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Χ0-65535 <20>Զ<EFBFBD><D4B6>ع<EFBFBD><D8B9>Ƽ<EFBFBD>ֵ<EFBFBD><D6B5>100 <20>Զ<EFBFBD><D4B6>ع<EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>÷<EFBFBD>Χ0-255
|
||||||
#define SCC8660_FPS_DEF (50 ) // ͼ<><CDBC>֡<EFBFBD><D6A1> Ĭ<>ϣ<EFBFBD>50 <20><>ѡ<EFBFBD><D1A1><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA>60 50 30 25<32><35> ʵ<><CAB5>֡<EFBFBD>ʻ<EFBFBD><CABB><EFBFBD>Ҫ<EFBFBD><D2AA>SCC8660_PCLK_DIV<49><56><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
#define SCC8660_FPS_DEF (50 ) // ͼ<><CDBC>֡<EFBFBD><D6A1> Ĭ<>ϣ<EFBFBD>50 <20><>ѡ<EFBFBD><D1A1><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA>60 50 30 25<32><35> ʵ<><CAB5>֡<EFBFBD>ʻ<EFBFBD><CABB><EFBFBD>Ҫ<EFBFBD><D2AA>SCC8660_PCLK_DIV<49><56><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
#define SCC8660_PCLK_DIV_DEF (5 ) // PCLK<4C><4B>Ƶϵ<C6B5><CFB5> Ĭ<>ϣ<EFBFBD>5 <20><>ѡ<EFBFBD><D1A1><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA><0:1/1> <1:2/3> <2:1/2> <3:1/3> <4:1/4> <5:1/8>
|
#define SCC8660_PCLK_DIV_DEF (2 ) // PCLK<4C><4B>Ƶϵ<C6B5><CFB5> Ĭ<>ϣ<EFBFBD>5 <20><>ѡ<EFBFBD><D1A1><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA><0:1/1> <1:2/3> <2:1/2> <3:1/3> <4:1/4> <5:1/8>
|
||||||
// <20><>Ƶϵ<C6B5><CFB5>Խ<EFBFBD><D4BD><EFBFBD><EFBFBD>PCLKƵ<4B><C6B5>Խ<EFBFBD>ͣ<EFBFBD><CDA3><EFBFBD><EFBFBD><EFBFBD>PCLK<4C><4B><EFBFBD>Լ<EFBFBD><D4BC><EFBFBD>DVP<56>ӿڵĸ<DAB5><C4B8>ţ<EFBFBD><C5A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>PCLKƵ<4B><C6B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ӱ<EFBFBD><D3B0>֡<EFBFBD>ʡ<EFBFBD><CAA1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>뱣<EFBFBD><EBB1A3>Ĭ<EFBFBD>ϡ<EFBFBD>
|
// <20><>Ƶϵ<C6B5><CFB5>Խ<EFBFBD><D4BD><EFBFBD><EFBFBD>PCLKƵ<4B><C6B5>Խ<EFBFBD>ͣ<EFBFBD><CDA3><EFBFBD><EFBFBD><EFBFBD>PCLK<4C><4B><EFBFBD>Լ<EFBFBD><D4BC><EFBFBD>DVP<56>ӿڵĸ<DAB5><C4B8>ţ<EFBFBD><C5A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>PCLKƵ<4B><C6B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ӱ<EFBFBD><D3B0>֡<EFBFBD>ʡ<EFBFBD><CAA1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>뱣<EFBFBD><EBB1A3>Ĭ<EFBFBD>ϡ<EFBFBD>
|
||||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>FPSΪ50֡<30><D6A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>pclk<6C><6B>Ƶϵ<C6B5><CFB5>ѡ<EFBFBD><D1A1><EFBFBD><EFBFBD>Ϊ5<CEAA><35><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͷ<EFBFBD><CDB7><EFBFBD><EFBFBD><EFBFBD><EFBFBD>֡<EFBFBD><D6A1>Ϊ50*<2A><>1/8<><38>=6.25֡
|
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>FPSΪ50֡<30><D6A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>pclk<6C><6B>Ƶϵ<C6B5><CFB5>ѡ<EFBFBD><D1A1><EFBFBD><EFBFBD>Ϊ5<CEAA><35><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͷ<EFBFBD><CDB7><EFBFBD><EFBFBD><EFBFBD><EFBFBD>֡<EFBFBD><D6A1>Ϊ50*<2A><>1/8<><38>=6.25֡
|
||||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>£<EFBFBD>SCC8660_PCLK_DIV<49><56><EFBFBD><EFBFBD>Խ<EFBFBD><D4BD>ͼ<EFBFBD><CDBC><EFBFBD><EFBFBD>Խ<EFBFBD><D4BD>
|
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>£<EFBFBD>SCC8660_PCLK_DIV<49><56><EFBFBD><EFBFBD>Խ<EFBFBD><D4BD>ͼ<EFBFBD><CDBC><EFBFBD><EFBFBD>Խ<EFBFBD><D4BD>
|
||||||
#define SCC8660_PCLK_MODE_DEF (0 ) // PCLKģʽ Ĭ<>ϣ<EFBFBD>0 <20><>ѡ<EFBFBD><D1A1><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA>[0,1] 0<><30><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ź<EFBFBD> 1<><31><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ź<EFBFBD> <ͨ<><CDA8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ0<CEAA><30><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʹ<EFBFBD><CAB9>STM32<33><32>DCMI<4D>ӿڲɼ<DAB2><C9BC><EFBFBD>Ҫ<EFBFBD><D2AA><EFBFBD><EFBFBD>Ϊ1>
|
#define SCC8660_PCLK_MODE_DEF (0 ) // PCLKģʽ Ĭ<EFBFBD>ϣ<EFBFBD>0 <20><>ѡ<EFBFBD><D1A1><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA>[0,1] 0<><30><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ź<EFBFBD> 1<><31><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ź<EFBFBD> <ͨ<><CDA8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ0<CEAA><30><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʹ<EFBFBD><CAB9>STM32<33><32>DCMI<4D>ӿڲɼ<DAB2><C9BC><EFBFBD>Ҫ<EFBFBD><D2AA><EFBFBD><EFBFBD>Ϊ1>
|
||||||
#define SCC8660_COLOR_MODE_DEF (1 ) // ͼ<><CDBC>ɫ<EFBFBD><C9AB>ģʽ Ĭ<>ϣ<EFBFBD>0 <20><>ѡ<EFBFBD><D1A1><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA>[0,1] 0<><30><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɫģʽ 1<><31><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ģʽ<C4A3><CABD>ɫ<EFBFBD>ʱ<EFBFBD><CAB1>Ͷ<EFBFBD><CDB6><EFBFBD><EFBFBD>ߣ<EFBFBD>
|
#define SCC8660_COLOR_MODE_DEF (0 ) // ͼ<><CDBC>ɫ<EFBFBD><C9AB>ģʽ Ĭ<>ϣ<EFBFBD>0 <20><>ѡ<EFBFBD><D1A1><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA>[0,1] 0<><30><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɫģʽ 1<><31><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ģʽ<C4A3><CABD>ɫ<EFBFBD>ʱ<EFBFBD><CAB1>Ͷ<EFBFBD><CDB6><EFBFBD><EFBFBD>ߣ<EFBFBD>
|
||||||
#define SCC8660_DATA_FORMAT_DEF (1 ) // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݸ<EFBFBD>ʽ Ĭ<>ϣ<EFBFBD>0 <20><>ѡ<EFBFBD><D1A1><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA>[0-3] 0<><30>RGB565 1<><31>RGB565(<28>ֽڽ<D6BD><DABD><EFBFBD>) 2<><32>YUV422(YUYV) 3<><33>YUV422(UYVY)
|
#define SCC8660_DATA_FORMAT_DEF (0 ) // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݸ<EFBFBD>ʽ Ĭ<>ϣ<EFBFBD>0 <20><>ѡ<EFBFBD><D1A1><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA>[0-3] 0<><30>RGB565 1<><31>RGB565(<28>ֽڽ<D6BD><DABD><EFBFBD>) 2<><32>YUV422(YUYV) 3<><33>YUV422(UYVY)
|
||||||
#define SCC8660_MANUAL_WB_DEF (0 ) // <20>ֶ<EFBFBD><D6B6><EFBFBD>ƽ<EFBFBD><C6BD> Ĭ<EFBFBD>ϣ<EFBFBD>0 <20><>ѡ<EFBFBD><D1A1><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA>[0,0x65-0xa0] 0<><30><EFBFBD>ر<EFBFBD><D8B1>ֶ<EFBFBD><D6B6><EFBFBD>ƽ<EFBFBD>⣬<EFBFBD><E2A3AC><EFBFBD><EFBFBD><EFBFBD>Զ<EFBFBD><D4B6><EFBFBD>ƽ<EFBFBD><C6BD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֶ<EFBFBD><D6B6><EFBFBD>ƽ<EFBFBD><C6BD> <20>ֶ<EFBFBD><D6B6><EFBFBD>ƽ<EFBFBD><C6BD>ʱ <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Χ0x65-0xa0
|
#define SCC8660_MANUAL_WB_DEF (0 ) // <20>ֶ<EFBFBD><D6B6><EFBFBD>ƽ<EFBFBD><C6BD> Ĭ<>ϣ<EFBFBD>0 <20><>ѡ<EFBFBD><D1A1><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA>[0,0x65-0xa0] 0<><30><EFBFBD>ر<EFBFBD><D8B1>ֶ<EFBFBD><D6B6><EFBFBD>ƽ<EFBFBD>⣬<EFBFBD><E2A3AC><EFBFBD><EFBFBD><EFBFBD>Զ<EFBFBD><D4B6><EFBFBD>ƽ<EFBFBD><C6BD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֶ<EFBFBD><D6B6><EFBFBD>ƽ<EFBFBD><C6BD> <20>ֶ<EFBFBD><D6B6><EFBFBD>ƽ<EFBFBD><C6BD>ʱ <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Χ0x65-0xa0
|
||||||
//================================================<3D><><EFBFBD><EFBFBD> SCC8660 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>================================================
|
//================================================<3D><><EFBFBD><EFBFBD> SCC8660 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ã<EFBFBD><EFBFBD><EFBFBD>֧<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͫ<EFBFBD><EFBFBD>֡<EFBFBD>ʰ汾<EFBFBD><EFBFBD>===========================
|
||||||
|
|
||||||
//===============================================<3D><><EFBFBD><EFBFBD> SCC8660 <20><><EFBFBD><EFBFBD><EFBFBD>ṹ<EFBFBD><E1B9B9>================================================
|
//===============================================<3D><><EFBFBD><EFBFBD> SCC8660 <20><><EFBFBD><EFBFBD><EFBFBD>ṹ<EFBFBD><E1B9B9>================================================
|
||||||
typedef enum
|
typedef enum
|
||||||
@@ -116,6 +117,14 @@ typedef enum
|
|||||||
}scc8660_cmd_enum;
|
}scc8660_cmd_enum;
|
||||||
//===============================================<3D><><EFBFBD><EFBFBD> SCC8660 <20><><EFBFBD><EFBFBD><EFBFBD>ṹ<EFBFBD><E1B9B9>================================================
|
//===============================================<3D><><EFBFBD><EFBFBD> SCC8660 <20><><EFBFBD><EFBFBD><EFBFBD>ṹ<EFBFBD><E1B9B9>================================================
|
||||||
|
|
||||||
|
//===============================================<3D><><EFBFBD><EFBFBD>ͷ<EFBFBD><CDB7><EFBFBD><EFBFBD>ö<EFBFBD><C3B6><EFBFBD><EFBFBD>=======================================================
|
||||||
|
typedef enum
|
||||||
|
{
|
||||||
|
SCC8660_UART,
|
||||||
|
SCC8660_SCCB,
|
||||||
|
}scc8660_type_enum;
|
||||||
|
//===============================================<3D><><EFBFBD><EFBFBD>ͷ<EFBFBD><CDB7><EFBFBD><EFBFBD>ö<EFBFBD><C3B6><EFBFBD><EFBFBD>=======================================================
|
||||||
|
|
||||||
//===============================================<3D><><EFBFBD><EFBFBD> SCC8660 ȫ<>ֱ<EFBFBD><D6B1><EFBFBD>=================================================
|
//===============================================<3D><><EFBFBD><EFBFBD> SCC8660 ȫ<>ֱ<EFBFBD><D6B1><EFBFBD>=================================================
|
||||||
extern vuint8 scc8660_finish_flag; // һ<><D2BB>ͼ<EFBFBD><CDBC><EFBFBD>ɼ<EFBFBD><C9BC><EFBFBD><EFBFBD>ɱ<EFBFBD>־λ
|
extern vuint8 scc8660_finish_flag; // һ<><D2BB>ͼ<EFBFBD><CDBC><EFBFBD>ɼ<EFBFBD><C9BC><EFBFBD><EFBFBD>ɱ<EFBFBD>־λ
|
||||||
extern uint16 scc8660_image[SCC8660_H][SCC8660_W]; // ͼ<><EFBFBD><F1B1A3B4><EFBFBD><EFBFBD><EFBFBD>
|
extern uint16 scc8660_image[SCC8660_H][SCC8660_W]; // ͼ<><EFBFBD><F1B1A3B4><EFBFBD><EFBFBD><EFBFBD>
|
||||||
|
|||||||
@@ -56,6 +56,7 @@ typedef enum
|
|||||||
WIRELESS_UART, // <20><><EFBFBD>ߴ<EFBFBD><DFB4><EFBFBD>
|
WIRELESS_UART, // <20><><EFBFBD>ߴ<EFBFBD><DFB4><EFBFBD>
|
||||||
BLUETOOTH_CH9141, // <20><><EFBFBD><EFBFBD> CH9141
|
BLUETOOTH_CH9141, // <20><><EFBFBD><EFBFBD> CH9141
|
||||||
WIFI_UART, // <20><><EFBFBD><EFBFBD> WiFi
|
WIFI_UART, // <20><><EFBFBD><EFBFBD> WiFi
|
||||||
|
RECEIVER_UART, // ǹʽң<CABD><D2A3><EFBFBD><EFBFBD>
|
||||||
}wireless_type_enum;
|
}wireless_type_enum;
|
||||||
|
|
||||||
typedef enum
|
typedef enum
|
||||||
|
|||||||
@@ -0,0 +1,134 @@
|
|||||||
|
/*********************************************************************************************************************
|
||||||
|
* TC264 Opensourec Library <20><><EFBFBD><EFBFBD>TC264 <20><>Դ<EFBFBD>⣩<EFBFBD><E2A3A9>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD>ڹٷ<DAB9> SDK <20>ӿڵĵ<DAB5><C4B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Դ<EFBFBD><D4B4>
|
||||||
|
* Copyright (c) 2022 SEEKFREE <20><><EFBFBD>ɿƼ<C9BF>
|
||||||
|
*
|
||||||
|
* <20><><EFBFBD>ļ<EFBFBD><C4BC><EFBFBD> TC264 <20><>Դ<EFBFBD><D4B4><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD>
|
||||||
|
*
|
||||||
|
* TC264 <20><>Դ<EFBFBD><D4B4> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
|
* <20><><EFBFBD><EFBFBD><EFBFBD>Ը<EFBFBD><D4B8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ᷢ<EFBFBD><E1B7A2><EFBFBD><EFBFBD> GPL<50><4C>GNU General Public License<73><65><EFBFBD><EFBFBD> GNUͨ<55>ù<EFBFBD><C3B9><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>֤<EFBFBD><D6A4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
|
* <20><> GPL <20>ĵ<EFBFBD>3<EFBFBD>棨<EFBFBD><E6A3A8> GPL3.0<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ѡ<EFBFBD><EFBFBD><EFBFBD>ģ<EFBFBD><EFBFBD>κκ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>İ汾<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>·<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>/<2F><><EFBFBD><EFBFBD><DEB8><EFBFBD>
|
||||||
|
*
|
||||||
|
* <20><><EFBFBD><EFBFBD>Դ<EFBFBD><D4B4><EFBFBD>ķ<EFBFBD><C4B7><EFBFBD><EFBFBD><EFBFBD>ϣ<EFBFBD><CFA3><EFBFBD><EFBFBD><EFBFBD>ܷ<EFBFBD><DCB7><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ã<EFBFBD><C3A3><EFBFBD><EFBFBD><EFBFBD>δ<EFBFBD><CEB4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>κεı<CEB5>֤
|
||||||
|
* <20><><EFBFBD><EFBFBD>û<EFBFBD><C3BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ի<EFBFBD><D4BB>ʺ<EFBFBD><CABA>ض<EFBFBD><D8B6><EFBFBD>;<EFBFBD>ı<EFBFBD>֤
|
||||||
|
* <20><><EFBFBD><EFBFBD>ϸ<EFBFBD><CFB8><EFBFBD><EFBFBD><EFBFBD>μ<EFBFBD> GPL
|
||||||
|
*
|
||||||
|
* <20><>Ӧ<EFBFBD><D3A6><EFBFBD><EFBFBD><EFBFBD>յ<EFBFBD><D5B5><EFBFBD><EFBFBD><EFBFBD>Դ<EFBFBD><D4B4><EFBFBD><EFBFBD>ͬʱ<CDAC>յ<EFBFBD>һ<EFBFBD><D2BB> GPL <20>ĸ<EFBFBD><C4B8><EFBFBD>
|
||||||
|
* <20><><EFBFBD><EFBFBD>û<EFBFBD>У<EFBFBD><D0A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><https://www.gnu.org/licenses/>
|
||||||
|
*
|
||||||
|
* <20><><EFBFBD><EFBFBD>ע<EFBFBD><D7A2><EFBFBD><EFBFBD>
|
||||||
|
* <20><><EFBFBD><EFBFBD>Դ<EFBFBD><D4B4>ʹ<EFBFBD><CAB9> GPL3.0 <20><>Դ<EFBFBD><D4B4><EFBFBD><EFBFBD>֤Э<D6A4><D0AD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA><EFBFBD>İ汾
|
||||||
|
* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ӣ<EFBFBD>İ<EFBFBD><C4B0><EFBFBD> libraries/doc <20>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD>µ<EFBFBD> GPL3_permission_statement.txt <20>ļ<EFBFBD><C4BC><EFBFBD>
|
||||||
|
* <20><><EFBFBD><EFBFBD>֤<EFBFBD><D6A4><EFBFBD><EFBFBD><EFBFBD><EFBFBD> libraries <20>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD>µ<EFBFBD> LICENSE <20>ļ<EFBFBD>
|
||||||
|
* <20><>ӭ<EFBFBD><D3AD>λʹ<CEBB>ò<EFBFBD><C3B2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><DEB8><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD>뱣<EFBFBD><EBB1A3><EFBFBD><EFBFBD><EFBFBD>ɿƼ<C9BF><C6BC>İ<EFBFBD>Ȩ<EFBFBD><C8A8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
|
*
|
||||||
|
* <20>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD><EFBFBD> zf_device_uart_receiver
|
||||||
|
* <20><>˾<EFBFBD><CBBE><EFBFBD><EFBFBD> <20>ɶ<EFBFBD><C9B6><EFBFBD><EFBFBD>ɿƼ<C9BF><C6BC><EFBFBD><EFBFBD><EFBFBD>˾
|
||||||
|
* <20>汾<EFBFBD><E6B1BE>Ϣ <20>鿴 libraries/doc <20>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD><EFBFBD> version <20>ļ<EFBFBD> <20>汾˵<E6B1BE><CBB5>
|
||||||
|
* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ADS v1.9.20
|
||||||
|
* <20><><EFBFBD><EFBFBD>ƽ̨ TC264D
|
||||||
|
* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> https://seekfree.taobao.com/
|
||||||
|
*
|
||||||
|
* <20>ļ<DEB8>¼
|
||||||
|
* <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><>ע
|
||||||
|
* 2022-11-04 JKS first version
|
||||||
|
********************************************************************************************************************/
|
||||||
|
/*********************************************************************************************************************
|
||||||
|
* <20><><EFBFBD>߶<EFBFBD><DFB6>壺
|
||||||
|
* ------------------------------------
|
||||||
|
* ģ<><C4A3><EFBFBD>ܽ<EFBFBD> <20><>Ƭ<EFBFBD><C6AC><EFBFBD>ܽ<EFBFBD>
|
||||||
|
* TXD <20>鿴 zf_device_uart_receiver.h <20><> UART_RECEVIER_RX_PIN <20>궨<EFBFBD><EAB6A8>
|
||||||
|
* GND <20><>Դ<EFBFBD><D4B4>
|
||||||
|
* 5V 5V<35><56>Դ
|
||||||
|
* ------------------------------------
|
||||||
|
********************************************************************************************************************/
|
||||||
|
|
||||||
|
#include "zf_device_type.h"
|
||||||
|
#include "zf_driver_uart.h"
|
||||||
|
#include "zf_driver_timer.h"
|
||||||
|
#include "zf_device_uart_receiver.h"
|
||||||
|
|
||||||
|
uart_receiver_struct uart_receiver ; // <20><><EFBFBD>ڽ<EFBFBD><DABD>ջ<EFBFBD>ͨ<EFBFBD><CDA8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>״̬
|
||||||
|
|
||||||
|
uint8 uart_receiver_data[REV_DATA_LEN] = {0}; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ԭʼ<D4AD><CABC><EFBFBD><EFBFBD>
|
||||||
|
|
||||||
|
//-------------------------------------------------------------------------------------------------------------------
|
||||||
|
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>ȡ<EFBFBD><C8A1><EFBFBD>ε<EFBFBD><CEB5><EFBFBD>uart_receiver_interval_time<6D><65><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
|
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> void
|
||||||
|
// <20><><EFBFBD>ز<EFBFBD><D8B2><EFBFBD> uint32 <20><><EFBFBD>شӿ<D8B4>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD><EFBFBD>ڵ<EFBFBD>ʱ<EFBFBD><CAB1>(<28><>λ1us)
|
||||||
|
// ʹ<><CAB9>ʾ<EFBFBD><CABE> uint32 time = uart_receiver_interval_time();
|
||||||
|
// <20><>ע<EFBFBD><D7A2>Ϣ <20>ڲ<EFBFBD><DAB2><EFBFBD><EFBFBD><EFBFBD>
|
||||||
|
//-------------------------------------------------------------------------------------------------------------------
|
||||||
|
static uint32 uart_receiver_interval_time (void)
|
||||||
|
{
|
||||||
|
static uint32 time_last = 0;
|
||||||
|
uint32 time, interval_time;
|
||||||
|
uint32 stm_clk;
|
||||||
|
|
||||||
|
stm_clk = IfxStm_getFrequency(IfxStm_getAddress((IfxStm_Index)(IfxCpu_getCoreId())));
|
||||||
|
|
||||||
|
time = IfxStm_getLower(IfxStm_getAddress((IfxStm_Index)(IfxCpu_getCoreId())));
|
||||||
|
interval_time = time - time_last;
|
||||||
|
time_last = time;
|
||||||
|
interval_time = (uint32)((uint64)interval_time * 1000000 / stm_clk);
|
||||||
|
|
||||||
|
return interval_time;
|
||||||
|
}
|
||||||
|
|
||||||
|
//-------------------------------------------------------------------------------------------------------------------
|
||||||
|
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> SBUS<55><53><EFBFBD>ݽ<EFBFBD><DDBD><EFBFBD>
|
||||||
|
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> *remote_data <20><><EFBFBD><EFBFBD>ң<EFBFBD><D2A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݵĵ<DDB5>ַ
|
||||||
|
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> *bufer ԭʼ<D4AD><CABC><EFBFBD><EFBFBD>
|
||||||
|
// <20><><EFBFBD>ز<EFBFBD><D8B2><EFBFBD> void
|
||||||
|
// ʹ<><CAB9>ʾ<EFBFBD><CABE>
|
||||||
|
// <20><>ע<EFBFBD><D7A2>Ϣ <20><>sbus<75><73><EFBFBD>ݽ<EFBFBD><DDBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>н<EFBFBD><D0BD><EFBFBD>
|
||||||
|
//-------------------------------------------------------------------------------------------------------------------
|
||||||
|
static void uart_receiver_analysis (uart_receiver_struct *remote_data,uint8 * buffer)
|
||||||
|
{
|
||||||
|
uint8 num = 0;
|
||||||
|
remote_data->channel[num++] = (buffer[1] |buffer[ 2] << 8 ) & 0x07FF;
|
||||||
|
remote_data->channel[num++] = (buffer[2] >> 3 | buffer[3] << 5 ) & 0x07FF;
|
||||||
|
remote_data->channel[num++] = (buffer[3] >> 6 | buffer[4] << 2 | buffer[5] << 10 ) & 0x07FF;
|
||||||
|
remote_data->channel[num++] = (buffer[5] >> 1 | buffer[6] << 7 ) & 0x07FF;
|
||||||
|
remote_data->channel[num++] = (buffer[6] >> 4 | buffer[7] << 4 ) & 0x07FF;
|
||||||
|
remote_data->channel[num++] = (buffer[7] >> 7 | buffer[8] << 1 | buffer[9] << 9 ) & 0x07FF;
|
||||||
|
remote_data->state = (SBUS_NORMAL_STATE == buffer[23]) ? 1 : 0;
|
||||||
|
uart_receiver.finsh_flag = 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
//-------------------------------------------------------------------------------------------------------------------
|
||||||
|
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>ڽ<EFBFBD><DABD>ջ<EFBFBD>ģ<EFBFBD><C4A3> <20><><EFBFBD><EFBFBD><EFBFBD>жϻص<CFBB><D8B5><EFBFBD><EFBFBD><EFBFBD>
|
||||||
|
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> void
|
||||||
|
// <20><><EFBFBD>ز<EFBFBD><D8B2><EFBFBD> void
|
||||||
|
// ʹ<><CAB9>ʾ<EFBFBD><CABE> uart_receiver_callback();
|
||||||
|
// <20><>ע<EFBFBD><D7A2>Ϣ <20>ú<EFBFBD><C3BA><EFBFBD><EFBFBD><EFBFBD> ISR <20>ļ<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>жϳ<D0B6><CFB3><EFBFBD>ͨ<EFBFBD><CDA8>uart_receiver_uart_handler<65><72><EFBFBD><EFBFBD>ָ<EFBFBD>뱻<EFBFBD><EBB1BB><EFBFBD><EFBFBD>
|
||||||
|
//-------------------------------------------------------------------------------------------------------------------
|
||||||
|
void uart_receiver_callback(void)
|
||||||
|
{
|
||||||
|
static vuint8 length = 0;
|
||||||
|
|
||||||
|
if (uart_receiver_interval_time() > 3000)
|
||||||
|
{
|
||||||
|
length = 0;
|
||||||
|
}
|
||||||
|
uart_receiver_data[length++] = uart_read_byte(UART_RECEVIER_UART_INDEX);
|
||||||
|
if ( (REV_DATA_LEN == length) // <20><><EFBFBD><EFBFBD>֡<EFBFBD><D6A1><EFBFBD><EFBFBD>֡ͷ<D6A1><CDB7>֡β<D6A1><CEB2><EFBFBD><EFBFBD>Э<EFBFBD><D0AD>
|
||||||
|
&& (FRAME_STAR == uart_receiver_data[0])
|
||||||
|
&& (FRAME_END == uart_receiver_data[24]))
|
||||||
|
{
|
||||||
|
uart_receiver_analysis(&uart_receiver, uart_receiver_data);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
//-------------------------------------------------------------------------------------------------------------------
|
||||||
|
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>ڽ<EFBFBD><DABD>ջ<EFBFBD><D5BB><EFBFBD>ʼ<EFBFBD><CABC>
|
||||||
|
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> void
|
||||||
|
// <20><><EFBFBD>ز<EFBFBD><D8B2><EFBFBD> void
|
||||||
|
// ʹ<><CAB9>ʾ<EFBFBD><CABE> uart_receiver_init();
|
||||||
|
//-------------------------------------------------------------------------------------------------------------------
|
||||||
|
void uart_receiver_init(void)
|
||||||
|
{
|
||||||
|
uart_sbus_init(UART_RECEVIER_UART_INDEX, SBUS_UART_BAUDRATE, UART_RECEVIER_TX_PIN, UART_RECEVIER_RX_PIN);
|
||||||
|
|
||||||
|
// <20><><EFBFBD>ô<EFBFBD><C3B4><EFBFBD><EFBFBD>жϻص<CFBB><D8B5><EFBFBD><EFBFBD><EFBFBD>
|
||||||
|
set_wireless_type(RECEIVER_UART, uart_receiver_callback);
|
||||||
|
}
|
||||||
@@ -0,0 +1,72 @@
|
|||||||
|
/*********************************************************************************************************************
|
||||||
|
* TC264 Opensourec Library <20><><EFBFBD><EFBFBD>TC264 <20><>Դ<EFBFBD>⣩<EFBFBD><E2A3A9>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD>ڹٷ<DAB9> SDK <20>ӿڵĵ<DAB5><C4B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Դ<EFBFBD><D4B4>
|
||||||
|
* Copyright (c) 2022 SEEKFREE <20><><EFBFBD>ɿƼ<C9BF>
|
||||||
|
*
|
||||||
|
* <20><><EFBFBD>ļ<EFBFBD><C4BC><EFBFBD> TC264 <20><>Դ<EFBFBD><D4B4><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD>
|
||||||
|
*
|
||||||
|
* TC264 <20><>Դ<EFBFBD><D4B4> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
|
* <20><><EFBFBD><EFBFBD><EFBFBD>Ը<EFBFBD><D4B8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ᷢ<EFBFBD><E1B7A2><EFBFBD><EFBFBD> GPL<50><4C>GNU General Public License<73><65><EFBFBD><EFBFBD> GNUͨ<55>ù<EFBFBD><C3B9><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>֤<EFBFBD><D6A4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
|
* <20><> GPL <20>ĵ<EFBFBD>3<EFBFBD>棨<EFBFBD><E6A3A8> GPL3.0<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ѡ<EFBFBD><EFBFBD><EFBFBD>ģ<EFBFBD><EFBFBD>κκ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>İ汾<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>·<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>/<2F><><EFBFBD><EFBFBD><DEB8><EFBFBD>
|
||||||
|
*
|
||||||
|
* <20><><EFBFBD><EFBFBD>Դ<EFBFBD><D4B4><EFBFBD>ķ<EFBFBD><C4B7><EFBFBD><EFBFBD><EFBFBD>ϣ<EFBFBD><CFA3><EFBFBD><EFBFBD><EFBFBD>ܷ<EFBFBD><DCB7><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ã<EFBFBD><C3A3><EFBFBD><EFBFBD><EFBFBD>δ<EFBFBD><CEB4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>κεı<CEB5>֤
|
||||||
|
* <20><><EFBFBD><EFBFBD>û<EFBFBD><C3BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ի<EFBFBD><D4BB>ʺ<EFBFBD><CABA>ض<EFBFBD><D8B6><EFBFBD>;<EFBFBD>ı<EFBFBD>֤
|
||||||
|
* <20><><EFBFBD><EFBFBD>ϸ<EFBFBD><CFB8><EFBFBD><EFBFBD><EFBFBD>μ<EFBFBD> GPL
|
||||||
|
*
|
||||||
|
* <20><>Ӧ<EFBFBD><D3A6><EFBFBD><EFBFBD><EFBFBD>յ<EFBFBD><D5B5><EFBFBD><EFBFBD><EFBFBD>Դ<EFBFBD><D4B4><EFBFBD><EFBFBD>ͬʱ<CDAC>յ<EFBFBD>һ<EFBFBD><D2BB> GPL <20>ĸ<EFBFBD><C4B8><EFBFBD>
|
||||||
|
* <20><><EFBFBD><EFBFBD>û<EFBFBD>У<EFBFBD><D0A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><https://www.gnu.org/licenses/>
|
||||||
|
*
|
||||||
|
* <20><><EFBFBD><EFBFBD>ע<EFBFBD><D7A2><EFBFBD><EFBFBD>
|
||||||
|
* <20><><EFBFBD><EFBFBD>Դ<EFBFBD><D4B4>ʹ<EFBFBD><CAB9> GPL3.0 <20><>Դ<EFBFBD><D4B4><EFBFBD><EFBFBD>֤Э<D6A4><D0AD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA><EFBFBD>İ汾
|
||||||
|
* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ӣ<EFBFBD>İ<EFBFBD><C4B0><EFBFBD> libraries/doc <20>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD>µ<EFBFBD> GPL3_permission_statement.txt <20>ļ<EFBFBD><C4BC><EFBFBD>
|
||||||
|
* <20><><EFBFBD><EFBFBD>֤<EFBFBD><D6A4><EFBFBD><EFBFBD><EFBFBD><EFBFBD> libraries <20>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD>µ<EFBFBD> LICENSE <20>ļ<EFBFBD>
|
||||||
|
* <20><>ӭ<EFBFBD><D3AD>λʹ<CEBB>ò<EFBFBD><C3B2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><DEB8><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD>뱣<EFBFBD><EBB1A3><EFBFBD><EFBFBD><EFBFBD>ɿƼ<C9BF><C6BC>İ<EFBFBD>Ȩ<EFBFBD><C8A8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
|
*
|
||||||
|
* <20>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD><EFBFBD> zf_device_uart_receiver
|
||||||
|
* <20><>˾<EFBFBD><CBBE><EFBFBD><EFBFBD> <20>ɶ<EFBFBD><C9B6><EFBFBD><EFBFBD>ɿƼ<C9BF><C6BC><EFBFBD><EFBFBD><EFBFBD>˾
|
||||||
|
* <20>汾<EFBFBD><E6B1BE>Ϣ <20>鿴 libraries/doc <20>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD><EFBFBD> version <20>ļ<EFBFBD> <20>汾˵<E6B1BE><CBB5>
|
||||||
|
* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ADS v1.9.20
|
||||||
|
* <20><><EFBFBD><EFBFBD>ƽ̨ TC264D
|
||||||
|
* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> https://seekfree.taobao.com/
|
||||||
|
*
|
||||||
|
* <20>ļ<DEB8>¼
|
||||||
|
* <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><>ע
|
||||||
|
* 2022-11-04 JKS first version
|
||||||
|
********************************************************************************************************************/
|
||||||
|
/*********************************************************************************************************************
|
||||||
|
* <20><><EFBFBD>߶<EFBFBD><DFB6>壺
|
||||||
|
* ------------------------------------
|
||||||
|
* ģ<><C4A3><EFBFBD>ܽ<EFBFBD> <20><>Ƭ<EFBFBD><C6AC><EFBFBD>ܽ<EFBFBD>
|
||||||
|
* TXD <20>鿴 zf_device_uart_receiver.h <20><> UART_RECEVIER_RX_PIN <20>궨<EFBFBD><EAB6A8>
|
||||||
|
* GND <20><>Դ<EFBFBD><D4B4>
|
||||||
|
* 5V 5V<35><56>Դ
|
||||||
|
* ------------------------------------
|
||||||
|
********************************************************************************************************************/
|
||||||
|
#ifndef _zf_device_uart_receiver_h
|
||||||
|
#define _zf_device_uart_receiver_h
|
||||||
|
|
||||||
|
#include "zf_common_typedef.h"
|
||||||
|
|
||||||
|
#define UART_RECEVIER_UART_INDEX UART_2 // <20><><EFBFBD>崮<EFBFBD>ڽ<EFBFBD><DABD>ջ<EFBFBD>ʹ<EFBFBD>õĴ<C3B5><C4B4><EFBFBD>
|
||||||
|
#define UART_RECEVIER_TX_PIN UART2_TX_P10_5 // ң<><D2A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ջ<EFBFBD>û<EFBFBD><C3BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ţ<EFBFBD><C5A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڴ<EFBFBD><DAB4>ڳ<EFBFBD>ʼ<EFBFBD><CABC>ʱռλʹ<CEBB><CAB9>
|
||||||
|
#define UART_RECEVIER_RX_PIN UART2_RX_P10_6 // <20><><EFBFBD>ڽ<EFBFBD><DABD>ջ<EFBFBD><D5BB><EFBFBD>TX<54><58><EFBFBD><EFBFBD> <20><><EFBFBD>ӵ<EFBFBD>Ƭ<EFBFBD><C6AC><EFBFBD><EFBFBD>RX<52><58><EFBFBD><EFBFBD>
|
||||||
|
#define SBUS_UART_BAUDRATE (100000) // ָ<><D6B8> SBUS <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʹ<EFBFBD>õĵĴ<C4B5><C4B4>ڲ<EFBFBD><DAB2><EFBFBD><EFBFBD><EFBFBD> (<28>û<EFBFBD><C3BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>)
|
||||||
|
#define UART_RECEVIER_CHANNEL_NUM ( 6 ) // <20><><EFBFBD><EFBFBD>ң<EFBFBD><D2A3><EFBFBD><EFBFBD>ͨ<EFBFBD><CDA8><EFBFBD><EFBFBD><EFBFBD><EFBFBD> (<28>û<EFBFBD><C3BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>)
|
||||||
|
|
||||||
|
#define REV_DATA_LEN ( 25 ) // SBUS֡<53><D6A1>
|
||||||
|
#define FRAME_STAR ( 0X0F ) // ֡ͷ<D6A1><CDB7>Ϣ
|
||||||
|
#define FRAME_END ( 0X00 ) // ֡β<D6A1><CEB2>Ϣ
|
||||||
|
#define SBUS_NORMAL_STATE ( 0X03 ) // <20><><EFBFBD><EFBFBD>״̬
|
||||||
|
#define SBUS_ABNORMAL_STATE ( 0X0F ) // ʧ<><CAA7>״̬
|
||||||
|
|
||||||
|
typedef struct
|
||||||
|
{
|
||||||
|
uint16 channel[UART_RECEVIER_CHANNEL_NUM]; // CH1-CH6ͨ<36><CDA8><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
|
uint8 state; // ң<><D2A3><EFBFBD><EFBFBD>״̬(1<><31>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾʧ<CABE><CAA7>)
|
||||||
|
uint8 finsh_flag; // 1<><31><EFBFBD><EFBFBD>ʾ<EFBFBD>ɹ<EFBFBD><C9B9><EFBFBD><EFBFBD>յ<EFBFBD>һ֡ң<D6A1><D2A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
|
}uart_receiver_struct;
|
||||||
|
|
||||||
|
extern uart_receiver_struct uart_receiver; // <20><><EFBFBD>ڽ<EFBFBD><DABD>ջ<EFBFBD>ͨ<EFBFBD><CDA8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>״̬
|
||||||
|
|
||||||
|
void uart_receiver_init(void);
|
||||||
|
|
||||||
|
#endif
|
||||||
@@ -404,6 +404,55 @@ void uart_rx_interrupt (uart_index_enum uart_n, uint32 status)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//-------------------------------------------------------------------------------------------------------------------
|
||||||
|
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> sbus<75><73>ʼ<EFBFBD><CABC>
|
||||||
|
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> uartn <20><><EFBFBD><EFBFBD>ͨ<EFBFBD><CDA8>(UART_0,UART_1,UART_2,UART_3)
|
||||||
|
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> baud <20><><EFBFBD>ڲ<EFBFBD><DAB2><EFBFBD><EFBFBD><EFBFBD>
|
||||||
|
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> tx_pin <20><><EFBFBD>ڷ<EFBFBD><DAB7><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ź<EFBFBD>
|
||||||
|
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> rx_pin <20><><EFBFBD>ڽ<EFBFBD><DABD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ź<EFBFBD>
|
||||||
|
// <20><><EFBFBD>ز<EFBFBD><D8B2><EFBFBD> void
|
||||||
|
// ʹ<><CAB9>ʾ<EFBFBD><CABE> uart_sbus_init(UART_2, 100000, UART2_TX_P10_5, UART2_RX_P10_6);
|
||||||
|
// <20><>ע<EFBFBD><D7A2>Ϣ
|
||||||
|
//-------------------------------------------------------------------------------------------------------------------
|
||||||
|
void uart_sbus_init (uart_index_enum uartn, uint32 baud, uart_tx_pin_enum tx_pin, uart_rx_pin_enum rx_pin)
|
||||||
|
{
|
||||||
|
|
||||||
|
boolean interrupt_state = disableInterrupts();
|
||||||
|
|
||||||
|
volatile Ifx_ASCLIN *moudle = IfxAsclin_getAddress((IfxAsclin_Index)uartn);
|
||||||
|
|
||||||
|
IfxAsclin_Asc_initModuleConfig(&uart_config, moudle); // <20><>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ýṹ<C3BD><E1B9B9>
|
||||||
|
|
||||||
|
uart_set_buffer(uartn); // <20><><EFBFBD>û<EFBFBD><C3BB><EFBFBD><EFBFBD><EFBFBD>
|
||||||
|
|
||||||
|
uart_set_interrupt_priority(uartn); // <20><><EFBFBD><EFBFBD><EFBFBD>ж<EFBFBD><D0B6><EFBFBD><EFBFBD>ȼ<EFBFBD>
|
||||||
|
|
||||||
|
uart_config.clockSource = IfxAsclin_ClockSource_ascFastClock; // ʹ<>ø<EFBFBD><C3B8><EFBFBD>ʱ<EFBFBD><CAB1> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>6.25M
|
||||||
|
uart_config.baudrate.prescaler = 4;
|
||||||
|
uart_config.baudrate.baudrate = (float32)baud;
|
||||||
|
uart_config.baudrate.oversampling = IfxAsclin_OversamplingFactor_8;
|
||||||
|
|
||||||
|
uart_config.frame.stopBit = IfxAsclin_StopBit_2; //ֹͣλ
|
||||||
|
uart_config.frame.parityType = IfxAsclin_ParityType_even; //żУ<C5BC><D0A3>
|
||||||
|
uart_config.frame.dataLength = IfxAsclin_DataLength_8;
|
||||||
|
uart_config.frame.parityBit = TRUE; //<2F><><EFBFBD><EFBFBD>У<EFBFBD><D0A3>
|
||||||
|
|
||||||
|
IfxAsclin_Asc_Pins pins; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
|
pins.cts = NULL;
|
||||||
|
pins.rts = NULL;
|
||||||
|
uart_mux(uartn, tx_pin, rx_pin, (uint32 *)&pins.tx, (uint32 *)&pins.rx);
|
||||||
|
pins.rxMode = IfxPort_InputMode_pullUp;
|
||||||
|
pins.txMode = IfxPort_OutputMode_pushPull;
|
||||||
|
pins.pinDriver = IfxPort_PadDriver_cmosAutomotiveSpeed1;
|
||||||
|
uart_config.pins = &pins;
|
||||||
|
|
||||||
|
IfxAsclin_Asc_initModule(uart_get_handle(uartn), &uart_config);
|
||||||
|
uart_rx_interrupt(uartn, 1);
|
||||||
|
uart_tx_interrupt(uartn, 0);
|
||||||
|
restoreInterrupts(interrupt_state);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
//-------------------------------------------------------------------------------------------------------------------
|
//-------------------------------------------------------------------------------------------------------------------
|
||||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>ڳ<EFBFBD>ʼ<EFBFBD><CABC>
|
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>ڳ<EFBFBD>ʼ<EFBFBD><CABC>
|
||||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> uartn <20><><EFBFBD><EFBFBD>ģ<EFBFBD><C4A3><EFBFBD><EFBFBD>(UART_0,UART_1,UART_2,UART_3)
|
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> uartn <20><><EFBFBD><EFBFBD>ģ<EFBFBD><C4A3><EFBFBD><EFBFBD>(UART_0,UART_1,UART_2,UART_3)
|
||||||
|
|||||||
@@ -125,6 +125,7 @@ uint8 uart_query_byte (uart_index_enum uartn, uint8 *dat);
|
|||||||
void uart_tx_interrupt (uart_index_enum uartn, uint32 status);
|
void uart_tx_interrupt (uart_index_enum uartn, uint32 status);
|
||||||
void uart_rx_interrupt (uart_index_enum uartn, uint32 status);
|
void uart_rx_interrupt (uart_index_enum uartn, uint32 status);
|
||||||
|
|
||||||
|
void uart_sbus_init (uart_index_enum uartn, uint32 baud, uart_tx_pin_enum tx_pin, uart_rx_pin_enum rx_pin);
|
||||||
void uart_init (uart_index_enum uartn, uint32 baud, uart_tx_pin_enum tx_pin, uart_rx_pin_enum rx_pin);
|
void uart_init (uart_index_enum uartn, uint32 baud, uart_tx_pin_enum tx_pin, uart_rx_pin_enum rx_pin);
|
||||||
//====================================================<3D><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>====================================================
|
//====================================================<3D><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>====================================================
|
||||||
|
|
||||||
|
|||||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user