mirror of
https://gitee.com/seekfree/TC264_Library.git
synced 2026-06-03 19:32:55 +00:00
1 增加角度编码器例程,2 增加枪式遥控器例程,3逐飞助手库跟新V2,4 增加SCC8660部分例程
This commit is contained in:
Binary file not shown.
@@ -1,3 +1,13 @@
|
||||
V3.4.4
|
||||
<20><><EFBFBD><EFBFBD>SCC8660<36><30><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʽ
|
||||
<20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ָ<EFBFBD><D6B8><EFBFBD>V2<56><32><EFBFBD><EFBFBD>
|
||||
<20><EFBFBD>ips200<30><30>ʾscc8660<36><30><EFBFBD><EFBFBD>ͷ<EFBFBD><CDB7>ʽ
|
||||
<20><EFBFBD>ips114<31><34>ʾscc8660<36><30><EFBFBD><EFBFBD>ͷ<EFBFBD><CDB7>ʽ
|
||||
V3.4.3
|
||||
<09><><EFBFBD><EFBFBD>660RC<52><43><EFBFBD><EFBFBD>
|
||||
V3.4.2
|
||||
<09><EFBFBD>printf<74>ض<EFBFBD><D8B6><EFBFBD><EFBFBD>еĺ궨<C4BA><EAB6A8>
|
||||
<09><><EFBFBD><EFBFBD>WIFI_SPI<50><49><EFBFBD><EFBFBD>
|
||||
V3.4.1
|
||||
<09>Ĵ<DEB8><C4B4>ڷ<EFBFBD><DAB7><EFBFBD><EFBFBD><EFBFBD><EFBFBD>麯<EFBFBD><E9BAAF><EFBFBD>еķ<D0B5><C4B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
<09><EFBFBD>ips200proע<6F><D7A2>
|
||||
|
||||
@@ -91,6 +91,7 @@
|
||||
#include "zf_device_imu660ra.h"
|
||||
#include "zf_device_imu660rb.h"
|
||||
#include "zf_device_imu660rx.h"
|
||||
#include "zf_device_imu660rc.h"
|
||||
#include "zf_device_imu963ra.h"
|
||||
#include "zf_device_ips114.h"
|
||||
#include "zf_device_ips200.h"
|
||||
|
||||
@@ -45,7 +45,7 @@
|
||||
//-------------------------------------------------------------------------------------------------------------------
|
||||
int fputc(int ch, FILE *stream)
|
||||
{
|
||||
uart_write_byte(DEBUG_UART_INDEX, (char)ch);
|
||||
uart_write_byte(PRINTF_USE_UART, (char)ch);
|
||||
|
||||
return (ch);
|
||||
}
|
||||
@@ -71,7 +71,7 @@ int _write(int fd, char *buf, int len)
|
||||
int fgetc(FILE *f)
|
||||
{
|
||||
#if PRINTF_OUTPUT_TYPE == 0
|
||||
return uart_read_byte(DEBUG_UART_INDEX);
|
||||
return uart_read_byte(PRINTF_USE_UART);
|
||||
#else
|
||||
uint8 buf;
|
||||
wifi_spi_read_buffer(&buf, 1);
|
||||
|
||||
@@ -1,20 +1,20 @@
|
||||
/*********************************************************************************************************************
|
||||
* 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>
|
||||
* RT1064DVL6A Opensourec Library <20><><EFBFBD><EFBFBD>RT1064DVL6A <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><C4BC><EFBFBD> RT1064DVL6A <20><>Դ<EFBFBD><D4B4><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD>
|
||||
*
|
||||
* RT1064DVL6A <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>
|
||||
@@ -24,423 +24,519 @@
|
||||
* <20>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD><EFBFBD> seekfree_assistant
|
||||
* <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.10.2
|
||||
* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ADS v1.9.4
|
||||
* <20><><EFBFBD><EFBFBD>ƽ̨ TC264D
|
||||
* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> https://seekfree.taobao.com/
|
||||
*
|
||||
*
|
||||
* <20>ļ<DEB8>¼
|
||||
* <20><><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>ע
|
||||
* 2024-01-01 pudding first version
|
||||
* <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><>ע
|
||||
* 2024-1-11 SeekFree first version
|
||||
********************************************************************************************************************/
|
||||
|
||||
#include "zf_common_debug.h"
|
||||
|
||||
#include "seekfree_assistant.h"
|
||||
|
||||
// ͨ<><CDA8><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ö<EFBFBD><C3B6>
|
||||
typedef enum
|
||||
{
|
||||
SEEKFREE_ASSISTANT_SEND_CCD_CMD = 0x01 ,
|
||||
SEEKFREE_ASSISTANT_SEND_CAMERA_CMD ,
|
||||
SEEKFREE_ASSISTANT_SEND_CAMERA_BOUNDARY_CMD ,
|
||||
SEEKFREE_ASSISTANT_SEND_CAMERA_RECTANGULAR_CMD ,
|
||||
|
||||
extern uint32 seekfree_assistant_transfer (const uint8 *buff, uint32 length);
|
||||
extern uint32 seekfree_assistant_receive (uint8 *buff, uint32 length);
|
||||
SEEKFREE_ASSISTANT_SEND_OSCILLOSCOPE_CMD = 0x10 ,
|
||||
|
||||
#if (1 == SEEKFREE_ASSISTANT_SET_PARAMETR_ENABLE)
|
||||
SEEKFREE_ASSISTANT_RECEIVE_DEBUG_PARAM_CMD = 0x20 ,
|
||||
}seekfree_assistant_cmd_type_enum;
|
||||
|
||||
#define SEEKFREE_ASSISTANT_SEND_HEAD ( 0xAA ) // <20><>Ƭ<EFBFBD><C6AC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>λ<EFBFBD><CEBB><EFBFBD><EFBFBD><EFBFBD>͵<EFBFBD>֡ͷ
|
||||
#define SEEKFREE_ASSISTANT_RECEIVE_HEAD ( 0x55 ) // <20><>λ<EFBFBD><CEBB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƭ<EFBFBD><C6AC><EFBFBD><EFBFBD><EFBFBD>͵<EFBFBD>֡ͷ
|
||||
|
||||
// <20><><EFBFBD>ݷ<EFBFBD><DDB7>ͺ<EFBFBD><CDBA><EFBFBD>ָ<EFBFBD><D6B8><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
extern uint32 seekfree_assistant_transfer (const uint8 *buff, uint32 length);
|
||||
seekfree_assistant_transfer_callback_function seekfree_assistant_transfer_callback = seekfree_assistant_transfer;
|
||||
|
||||
// <20><><EFBFBD>ݽ<EFBFBD><DDBD>պ<EFBFBD><D5BA><EFBFBD>ָ<EFBFBD><D6B8><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
extern uint32 seekfree_assistant_receive (uint8 *buff, uint32 length);
|
||||
seekfree_assistant_receive_callback_function seekfree_assistant_receive_callback = seekfree_assistant_receive;
|
||||
|
||||
#if (SEEKFREE_ASSISTANT_DEBUG_PARAM_ENABLE)
|
||||
#include "zf_common_fifo.h"
|
||||
static uint8 seekfree_assistant_buffer[SEEKFREE_ASSISTANT_BUFFER_SIZE]; // FIFO<46><4F><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
static fifo_struct seekfree_assistant_fifo = // FIFO<46>ṹ<EFBFBD><E1B9B9>
|
||||
static uint8 seekfree_assistant_debug_param_buffer[SEEKFREE_ASSISTANT_DEBUG_PARAM_BUFFER_SIZE];
|
||||
static fifo_struct seekfree_assistant_debug_param_fifo =
|
||||
{
|
||||
.buffer = seekfree_assistant_buffer,
|
||||
.buffer = seekfree_assistant_debug_param_buffer,
|
||||
.execution = FIFO_IDLE,
|
||||
.type = FIFO_DATA_8BIT,
|
||||
.head = 0,
|
||||
.end = 0,
|
||||
.size = SEEKFREE_ASSISTANT_BUFFER_SIZE,
|
||||
.max = SEEKFREE_ASSISTANT_BUFFER_SIZE,
|
||||
};
|
||||
.size = SEEKFREE_ASSISTANT_DEBUG_PARAM_BUFFER_SIZE,
|
||||
.max = SEEKFREE_ASSISTANT_DEBUG_PARAM_BUFFER_SIZE,
|
||||
};
|
||||
#endif
|
||||
|
||||
static seekfree_assistant_camera_struct seekfree_assistant_camera_data; // ͼ<><CDBC><EFBFBD><EFBFBD>λ<EFBFBD><CEBB>Э<EFBFBD><D0AD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
static seekfree_assistant_camera_dot_struct seekfree_assistant_camera_dot_data; // ͼ<><CDBC><EFBFBD><EFBFBD>λ<EFBFBD><CEBB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Э<EFBFBD><D0AD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
static seekfree_assistant_camera_buffer_struct seekfree_assistant_camera_buffer; // ͼ<><CDBC><EFBFBD>Լ<EFBFBD><D4BC>߽绺<DFBD><E7BBBA><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ
|
||||
|
||||
seekfree_assistant_transfer_callback_function seekfree_assistant_transfer_callback = seekfree_assistant_transfer; // <20><><EFBFBD>ݷ<EFBFBD><DDB7>ͺ<EFBFBD><CDBA><EFBFBD>ָ<EFBFBD><D6B8>
|
||||
seekfree_assistant_receive_callback_function seekfree_assistant_receive_callback = seekfree_assistant_receive; // <20><><EFBFBD>ݽ<EFBFBD><DDBD>պ<EFBFBD><D5BA><EFBFBD>ָ<EFBFBD><D6B8>
|
||||
|
||||
seekfree_assistant_oscilloscope_struct seekfree_assistant_oscilloscope_data; // <20><><EFBFBD><EFBFBD>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
float seekfree_assistant_parameter[SEEKFREE_ASSISTANT_SET_PARAMETR_COUNT] = {0}; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>յ<EFBFBD><D5B5>IJ<EFBFBD><C4B2><EFBFBD>
|
||||
vuint8 seekfree_assistant_parameter_update_flag[SEEKFREE_ASSISTANT_SET_PARAMETR_COUNT] = {0}; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>±<EFBFBD>־λ
|
||||
|
||||
//-------------------------------------------------------------------------------------------------------------------
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͺ<EFBFBD><CDBA><EFBFBD>
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> *buffer <20><>ҪУ<D2AA><D0A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݵ<EFBFBD>ַ
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> length У<>鳤<EFBFBD><E9B3A4>
|
||||
// <20><><EFBFBD>ز<EFBFBD><D8B2><EFBFBD> uint8 <20><>ֵ
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> *buffer <EFBFBD><EFBFBD>ҪУ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݵ<EFBFBD>ַ
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> length У<EFBFBD>鳤<EFBFBD><EFBFBD>
|
||||
// <20><><EFBFBD>ز<EFBFBD><D8B2><EFBFBD> uint8 <EFBFBD><EFBFBD>ֵ
|
||||
// ʹ<><CAB9>ʾ<EFBFBD><CABE>
|
||||
//-------------------------------------------------------------------------------------------------------------------
|
||||
static uint8 seekfree_assistant_sum (uint8 *buffer, uint32 length)
|
||||
static uint8 seekfree_assistant_sum (void *buffer, uint32 length)
|
||||
{
|
||||
uint8 temp_sum = 0;
|
||||
uint8 *ptr = (uint8 *)buffer;
|
||||
|
||||
while(length--)
|
||||
{
|
||||
temp_sum += *buffer++;
|
||||
temp_sum += *ptr ++;
|
||||
}
|
||||
|
||||
return temp_sum;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------------------------------------------------------
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ͼ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͺ<EFBFBD><EFBFBD><EFBFBD>
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> camera_type <20><><EFBFBD><EFBFBD>ͷ<EFBFBD><CDB7><EFBFBD><EFBFBD>
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> *image_addr ͼ<><CDBC><EFBFBD><EFBFBD>ַ
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> boundary_num ͼ<><CDBC><EFBFBD>а<EFBFBD><D0B0><EFBFBD><EFBFBD>߽<EFBFBD><DFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> width ͼ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> height ͼ<EFBFBD><EFBFBD><EFBFBD>߶<EFBFBD>
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> CCD ͼ<><CDBC> <20><EFBFBD><EFBFBD><EFBFBD>
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> *ccd_obj CCD <20><><EFBFBD>ݽṹ<EFBFBD><EFBFBD>
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> data_type <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> seekfree_assistant_data_type_enum
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> channel_index CCD ͨ<EFBFBD><EFBFBD>
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> channel_color ͨ<EFBFBD><EFBFBD>Ҫʹ<EFBFBD>õ<EFBFBD><EFBFBD><EFBFBD>ɫ
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> data_lenght CCD <20><><EFBFBD>ݳ<EFBFBD><DDB3><EFBFBD>
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> *data_buffer CCD <20><><EFBFBD>ݻ<EFBFBD><DDBB><EFBFBD><EFBFBD><EFBFBD>
|
||||
// <20><><EFBFBD>ز<EFBFBD><D8B2><EFBFBD> void
|
||||
// ʹ<><CAB9>ʾ<EFBFBD><CABE>
|
||||
// ʹ<><CAB9>ʾ<EFBFBD><CABE> seekfree_assistant_ccd_config(ccd_obj, data_type, channel_index, channel_color, data_lenght, data_buffer);
|
||||
//-------------------------------------------------------------------------------------------------------------------
|
||||
void seekfree_assistant_camera_data_send (seekfree_assistant_image_type_enum camera_type, void *image_addr, uint8 boundary_num, uint16 width, uint16 height)
|
||||
void seekfree_assistant_ccd_config (
|
||||
seekfree_assistant_ccd_struct *ccd_obj,
|
||||
seekfree_assistant_data_type_enum data_type,
|
||||
uint8 channel_index,
|
||||
uint16 channel_color,
|
||||
uint16 data_lenght,
|
||||
void *data_buffer)
|
||||
{
|
||||
uint32 image_size = 0;
|
||||
zf_assert(NULL != ccd_obj);
|
||||
zf_assert(NULL != data_buffer);
|
||||
|
||||
seekfree_assistant_camera_data.head = SEEKFREE_ASSISTANT_SEND_HEAD;
|
||||
seekfree_assistant_camera_data.function = SEEKFREE_ASSISTANT_CAMERA_FUNCTION;
|
||||
seekfree_assistant_camera_data.camera_type = (camera_type << 5) | ((image_addr != NULL ? 0 : 1) << 4) | boundary_num;
|
||||
// д<><D0B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ<EFBFBD><CFA2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Э<EFBFBD>鲿<EFBFBD><E9B2BF>
|
||||
seekfree_assistant_camera_data.length = sizeof(seekfree_assistant_camera_struct);
|
||||
seekfree_assistant_camera_data.image_width = width;
|
||||
seekfree_assistant_camera_data.image_height = height;
|
||||
memset(ccd_obj, 0, sizeof(seekfree_assistant_ccd_struct));
|
||||
ccd_obj->config.head = SEEKFREE_ASSISTANT_SEND_HEAD;
|
||||
ccd_obj->config.cmd = SEEKFREE_ASSISTANT_SEND_CCD_CMD;
|
||||
ccd_obj->config.channel_index = channel_index;
|
||||
|
||||
// <20><><EFBFBD>ȷ<EFBFBD><C8B7><EFBFBD>֡ͷ<D6A1><CDB7><EFBFBD><EFBFBD><EFBFBD>ܡ<EFBFBD><DCA1><EFBFBD><EFBFBD><EFBFBD>ͷ<EFBFBD><CDB7><EFBFBD>͡<EFBFBD><CDA1>Լ<EFBFBD><D4BC><EFBFBD><EFBFBD>ȸ߶ȵ<DFB6><C8B5><EFBFBD>Ϣ
|
||||
seekfree_assistant_transfer_callback((const uint8 *)&seekfree_assistant_camera_data, sizeof(seekfree_assistant_camera_struct));
|
||||
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͷ<EFBFBD><CDB7><EFBFBD>ͼ<EFBFBD><CDBC><EFBFBD>ͼ<EFBFBD><CDBC><EFBFBD><EFBFBD>С
|
||||
switch(camera_type)
|
||||
uint16 data_max = 256;
|
||||
uint8 loop_count = SEEKFREE_ASSISTANT_CCD_RESOLUTION_DEFAULT;
|
||||
loop_count = (2 >= loop_count) ? (loop_count) : (2);
|
||||
for(uint8 i = 0; loop_count > i; i ++)
|
||||
{
|
||||
case SEEKFREE_ASSISTANT_OV7725_BIN:
|
||||
{
|
||||
image_size = width * height / 8;
|
||||
}break;
|
||||
|
||||
case SEEKFREE_ASSISTANT_MT9V03X:
|
||||
{
|
||||
image_size = width * height;
|
||||
}break;
|
||||
|
||||
case SEEKFREE_ASSISTANT_SCC8660:
|
||||
{
|
||||
image_size = width * height * 2;
|
||||
}break;
|
||||
data_max *= 4;
|
||||
}
|
||||
|
||||
// <20><><EFBFBD><EFBFBD>ͼ<EFBFBD><CDBC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
if(NULL != image_addr)
|
||||
#if (SEEKFREE_ASSISTANT_STC_DATA_ENABLE)
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> STC <20><>ô<EFBFBD><C3B4>С<EFBFBD>˷<EFBFBD>һ<EFBFBD><D2BB>
|
||||
ccd_obj->config.data_lenght_buffer[0] = (uint8)((data_lenght >> 8) & 0x00FF);
|
||||
ccd_obj->config.data_lenght_buffer[1] = (uint8)((data_lenght >> 0) & 0x00FF);
|
||||
ccd_obj->config.channel_color_buffer[0] = (uint8)((channel_color >> 8) & 0x00FF);
|
||||
ccd_obj->config.channel_color_buffer[1] = (uint8)((channel_color >> 0) & 0x00FF);
|
||||
ccd_obj->config.channel_data_max[0] = (uint8)((data_max >> 8) & 0x00FF);
|
||||
ccd_obj->config.channel_data_max[1] = (uint8)((data_max >> 0) & 0x00FF);
|
||||
#else
|
||||
ccd_obj->config.data_lenght_buffer[0] = (uint8)((data_lenght >> 0) & 0x00FF);
|
||||
ccd_obj->config.data_lenght_buffer[1] = (uint8)((data_lenght >> 8) & 0x00FF);
|
||||
ccd_obj->config.channel_color_buffer[0] = (uint8)((channel_color >> 0) & 0x00FF);
|
||||
ccd_obj->config.channel_color_buffer[1] = (uint8)((channel_color >> 8) & 0x00FF);
|
||||
ccd_obj->config.channel_data_max[0] = (uint8)((data_max >> 0) & 0x00FF);
|
||||
ccd_obj->config.channel_data_max[1] = (uint8)((data_max >> 8) & 0x00FF);
|
||||
#endif
|
||||
|
||||
if( SEEKFREE_ASSISTANT_STC_DATA_ENABLE
|
||||
&& SEEKFREE_ASSISTANT_DATA_TYPE_UINT16 == data_type)
|
||||
{ // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> uint16 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> STC <20><>Ƭ<EFBFBD><C6AC> <20><>ô<EFBFBD><C3B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ 0x02
|
||||
ccd_obj->config.data_type = data_type + 1;
|
||||
}
|
||||
else
|
||||
{ // <20><><EFBFBD><EFBFBD><EFBFBD>Ļ<EFBFBD><C4BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> uint8 <20><><EFBFBD>ݻ<EFBFBD><DDBB><EFBFBD> uint16 <20><><EFBFBD><EFBFBD>
|
||||
ccd_obj->config.data_type = data_type;
|
||||
}
|
||||
|
||||
// <20><>¼ʵ<C2BC><CAB5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֽ<EFBFBD><D6BD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> uint16 <20><><EFBFBD><EFBFBD>Ҫ<EFBFBD><D2AA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݳ<EFBFBD><DDB3><EFBFBD>
|
||||
ccd_obj->buffer_byte_size = data_lenght * ((data_type) ? (2) : (1));
|
||||
// Ȼ<><C8BB><EFBFBD><EFBFBD>¼<EFBFBD><C2BC>Ӧ<EFBFBD><D3A6><EFBFBD>ݻ<EFBFBD><DDBB><EFBFBD><EFBFBD><EFBFBD>
|
||||
ccd_obj->data_buffer = data_buffer;
|
||||
|
||||
// <20><>У<EFBFBD><D0A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
ccd_obj->config.check_sum = SEEKFREE_ASSISTANT_SEND_HEAD;
|
||||
ccd_obj->config.check_sum += seekfree_assistant_sum(
|
||||
&(ccd_obj->config.cmd),
|
||||
sizeof(ccd_obj->config) - 2);
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------------------------------------------------------
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> CCD ͼ<><CDBC> <20><><EFBFBD>ͺ<EFBFBD><CDBA><EFBFBD>
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> *ccd_obj CCD <20><><EFBFBD>ݽṹ<DDBD><E1B9B9>
|
||||
// <20><><EFBFBD>ز<EFBFBD><D8B2><EFBFBD> void
|
||||
// ʹ<><CAB9>ʾ<EFBFBD><CABE> seekfree_assistant_ccd_send(ccd_obj);
|
||||
//-------------------------------------------------------------------------------------------------------------------
|
||||
void seekfree_assistant_ccd_send (seekfree_assistant_ccd_struct *ccd_obj)
|
||||
{
|
||||
seekfree_assistant_transfer_callback(
|
||||
(const uint8 *)ccd_obj,
|
||||
sizeof(ccd_obj->config));
|
||||
seekfree_assistant_transfer_callback(
|
||||
(const uint8 *)(ccd_obj->data_buffer),
|
||||
ccd_obj->buffer_byte_size);
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------------------------------------------------------
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> CAMERA ͼ<><CDBC> <20><><EFBFBD><EFBFBD>
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> *camera_obj CAMERA <20><><EFBFBD>ݽṹ<DDBD><E1B9B9>
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> camera_type CAMERA <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> seekfree_assistant_camera_type_enum
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> image_width CAMERA ͼ<><CDBC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> image_height CAMERA ͼ<><CDBC><EFBFBD>߶<EFBFBD>
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> *data_buffer CAMERA ͼ<><EFBFBD><F1BBBAB3><EFBFBD>
|
||||
// <20><><EFBFBD>ز<EFBFBD><D8B2><EFBFBD> void
|
||||
// ʹ<><CAB9>ʾ<EFBFBD><CABE> seekfree_assistant_camera_config(camera_obj, camera_type, image_width, image_height, data_buffer);
|
||||
//-------------------------------------------------------------------------------------------------------------------
|
||||
void seekfree_assistant_camera_config (
|
||||
seekfree_assistant_camera_struct *camera_obj,
|
||||
seekfree_assistant_camera_type_enum camera_type,
|
||||
uint16 image_width,
|
||||
uint16 image_height,
|
||||
void *data_buffer)
|
||||
{
|
||||
zf_assert(NULL != camera_obj);
|
||||
|
||||
memset(camera_obj, 0, sizeof(seekfree_assistant_camera_struct));
|
||||
camera_obj->config.head = SEEKFREE_ASSISTANT_SEND_HEAD;
|
||||
camera_obj->config.cmd = SEEKFREE_ASSISTANT_SEND_CAMERA_CMD;
|
||||
camera_obj->config.camera_type = camera_type;
|
||||
|
||||
#if (SEEKFREE_ASSISTANT_STC_DATA_ENABLE)
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> STC <20><>ô<EFBFBD><C3B4>С<EFBFBD>˷<EFBFBD>һ<EFBFBD><D2BB>
|
||||
camera_obj->config.image_width_buffer[0] = (uint8)((image_width >> 8) & 0x00FF);
|
||||
camera_obj->config.image_width_buffer[1] = (uint8)((image_width >> 0) & 0x00FF);
|
||||
camera_obj->config.image_height_buffer[0] = (uint8)((image_height >> 8) & 0x00FF);
|
||||
camera_obj->config.image_height_buffer[1] = (uint8)((image_height >> 0) & 0x00FF);
|
||||
#else
|
||||
camera_obj->config.image_width_buffer[0] = (uint8)((image_width >> 0) & 0x00FF);
|
||||
camera_obj->config.image_width_buffer[1] = (uint8)((image_width >> 8) & 0x00FF);
|
||||
camera_obj->config.image_height_buffer[0] = (uint8)((image_height >> 0) & 0x00FF);
|
||||
camera_obj->config.image_height_buffer[1] = (uint8)((image_height >> 8) & 0x00FF);
|
||||
#endif
|
||||
|
||||
if( SEEKFREE_ASSISTANT_STC_DATA_ENABLE
|
||||
&& SEEKFREE_ASSISTANT_CAMERA_TYPE_RGB565 == camera_type
|
||||
&& NULL != data_buffer)
|
||||
{
|
||||
seekfree_assistant_transfer_callback(image_addr, image_size);
|
||||
camera_obj->config.data_type = 0x02;
|
||||
}
|
||||
else
|
||||
{
|
||||
camera_obj->config.data_type = (NULL == data_buffer) ? (0x00) : (0x01);
|
||||
}
|
||||
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> RGB565 ͼ<><CDBC> <20><>ô<EFBFBD><C3B4><EFBFBD><EFBFBD><EFBFBD>ֽ<EFBFBD><D6BD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
camera_obj->buffer_byte_size =
|
||||
image_width * image_height
|
||||
* ((SEEKFREE_ASSISTANT_CAMERA_TYPE_RGB565 == camera_type) ? (2) : (1));
|
||||
camera_obj->buffer_byte_size =
|
||||
(SEEKFREE_ASSISTANT_CAMERA_TYPE_BINARY == camera_type)
|
||||
? (camera_obj->buffer_byte_size / 8)
|
||||
: (camera_obj->buffer_byte_size);
|
||||
camera_obj->data_buffer = data_buffer;
|
||||
|
||||
// <20><>У<EFBFBD><D0A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
camera_obj->config.check_sum = SEEKFREE_ASSISTANT_SEND_HEAD;
|
||||
camera_obj->config.check_sum += seekfree_assistant_sum(
|
||||
&(camera_obj->config.cmd),
|
||||
sizeof(camera_obj->config) - 2);
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------------------------------------------------------
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> CAMERA ͼ<><CDBC> <20><><EFBFBD>ͺ<EFBFBD><CDBA><EFBFBD>
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> *camera_obj CAMERA <20><><EFBFBD>ݽṹ<DDBD><E1B9B9>
|
||||
// <20><><EFBFBD>ز<EFBFBD><D8B2><EFBFBD> void
|
||||
// ʹ<><CAB9>ʾ<EFBFBD><CABE> seekfree_assistant_camera_send(camera_obj);
|
||||
//-------------------------------------------------------------------------------------------------------------------
|
||||
void seekfree_assistant_camera_send (seekfree_assistant_camera_struct *camera_obj)
|
||||
{
|
||||
seekfree_assistant_transfer_callback(
|
||||
(const uint8 *)camera_obj,
|
||||
sizeof(camera_obj->config));
|
||||
if(NULL != camera_obj->data_buffer)
|
||||
{
|
||||
seekfree_assistant_transfer_callback(
|
||||
(const uint8 *)(camera_obj->data_buffer),
|
||||
camera_obj->buffer_byte_size);
|
||||
}
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------------------------------------------------------
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ͼ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ƺ<EFBFBD><EFBFBD><EFBFBD>
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> boundary_id <20><><EFBFBD><EFBFBD>ID
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> dot_num <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> *dot_x <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ַ
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> *dot_y <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ַ
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> width ͼ<><CDBC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> height ͼ<><CDBC><EFBFBD>߶<EFBFBD>
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> CAMERA <20><><EFBFBD><EFBFBD> <20><EFBFBD><EFBFBD><EFBFBD>
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> *camera_boundary_obj CAMERA <20><><EFBFBD><EFBFBD> <20><><EFBFBD>ݽṹ<DDBD><E1B9B9>
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> data_type <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> seekfree_assistant_data_type_enum
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> color Ҫʹ<D2AA>õ<EFBFBD><C3B5><EFBFBD>ɫ
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> boundary_lenght CAMERA <20><><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> *data_buffer CAMERA <20><><EFBFBD><EFBFBD> ͼ<><EFBFBD><EFBFBD><EFBFBD>
|
||||
// <20><><EFBFBD>ز<EFBFBD><D8B2><EFBFBD> void
|
||||
// ʹ<><CAB9>ʾ<EFBFBD><CABE>
|
||||
// ʹ<><CAB9>ʾ<EFBFBD><CABE> seekfree_assistant_camera_boundary_config(camera_boundary_obj, data_type, color, boundary_lenght, data_buffer);
|
||||
//-------------------------------------------------------------------------------------------------------------------
|
||||
void seekfree_assistant_camera_dot_send (seekfree_assistant_camera_buffer_struct *buffer)
|
||||
void seekfree_assistant_camera_boundary_config (
|
||||
seekfree_assistant_camera_boundary_struct *camera_boundary_obj,
|
||||
seekfree_assistant_data_type_enum data_type,
|
||||
uint16 color,
|
||||
uint16 boundary_lenght,
|
||||
void *data_buffer)
|
||||
{
|
||||
uint8 i;
|
||||
uint16 dot_bytes = 0; // <20><><EFBFBD>ֽ<EFBFBD><D6BD><EFBFBD><EFBFBD><EFBFBD>
|
||||
zf_assert(NULL != camera_boundary_obj);
|
||||
zf_assert(NULL != data_buffer);
|
||||
|
||||
dot_bytes = seekfree_assistant_camera_dot_data.dot_num;
|
||||
memset(camera_boundary_obj, 0, sizeof(seekfree_assistant_camera_boundary_struct));
|
||||
camera_boundary_obj->config.head = SEEKFREE_ASSISTANT_SEND_HEAD;
|
||||
camera_boundary_obj->config.cmd = SEEKFREE_ASSISTANT_SEND_CAMERA_BOUNDARY_CMD;
|
||||
|
||||
if(seekfree_assistant_camera_dot_data.dot_type & (1 << 5))
|
||||
{
|
||||
dot_bytes *= 2;
|
||||
if( SEEKFREE_ASSISTANT_STC_DATA_ENABLE
|
||||
&& SEEKFREE_ASSISTANT_DATA_TYPE_UINT16 == data_type)
|
||||
{ // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> uint16 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> STC <20><>Ƭ<EFBFBD><C6AC> <20><>ô<EFBFBD><C3B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ 0x02
|
||||
camera_boundary_obj->config.data_type = data_type + 1;
|
||||
}
|
||||
else
|
||||
{ // <20><><EFBFBD><EFBFBD><EFBFBD>Ļ<EFBFBD><C4BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> uint8 <20><><EFBFBD>ݻ<EFBFBD><DDBB><EFBFBD> uint16 <20><><EFBFBD><EFBFBD>
|
||||
camera_boundary_obj->config.data_type = data_type;
|
||||
}
|
||||
|
||||
// <20><><EFBFBD>ȷ<EFBFBD><C8B7><EFBFBD>֡ͷ<D6A1><CDB7><EFBFBD><EFBFBD><EFBFBD>ܡ<EFBFBD><DCA1>߽<EFBFBD><DFBD><EFBFBD><EFBFBD>š<EFBFBD><C5A1><EFBFBD><EFBFBD>곤<EFBFBD>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
seekfree_assistant_transfer_callback((const uint8 *)&seekfree_assistant_camera_dot_data, sizeof(seekfree_assistant_camera_dot_struct));
|
||||
#if (SEEKFREE_ASSISTANT_STC_DATA_ENABLE)
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> STC <20><>ô<EFBFBD><C3B4>С<EFBFBD>˷<EFBFBD>һ<EFBFBD><D2BB>
|
||||
camera_boundary_obj->config.boundary_lenght_buffer[0] = (uint8)((boundary_lenght >> 8) & 0x00FF);
|
||||
camera_boundary_obj->config.boundary_lenght_buffer[1] = (uint8)((boundary_lenght >> 0) & 0x00FF);
|
||||
camera_boundary_obj->config.color_buffer[0] = (uint8)((color >> 8) & 0x00FF);
|
||||
camera_boundary_obj->config.color_buffer[1] = (uint8)((color >> 0) & 0x00FF);
|
||||
#else
|
||||
camera_boundary_obj->config.boundary_lenght_buffer[0] = (uint8)((boundary_lenght >> 0) & 0x00FF);
|
||||
camera_boundary_obj->config.boundary_lenght_buffer[1] = (uint8)((boundary_lenght >> 8) & 0x00FF);
|
||||
camera_boundary_obj->config.color_buffer[0] = (uint8)((color >> 0) & 0x00FF);
|
||||
camera_boundary_obj->config.color_buffer[1] = (uint8)((color >> 8) & 0x00FF);
|
||||
#endif
|
||||
|
||||
for(i=0; i < SEEKFREE_ASSISTANT_CAMERA_MAX_BOUNDARY; i++)
|
||||
{
|
||||
// <20>ж<EFBFBD><D0B6>Ƿ<EFBFBD><C7B7><EFBFBD><EFBFBD>ͺ<EFBFBD><CDBA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
if(NULL != buffer->boundary_x[i])
|
||||
{
|
||||
seekfree_assistant_transfer_callback((const uint8 *)buffer->boundary_x[i], dot_bytes);
|
||||
}
|
||||
camera_boundary_obj->buffer_byte_size =
|
||||
boundary_lenght * 2
|
||||
* ((SEEKFREE_ASSISTANT_DATA_TYPE_UINT8 == data_type) ? (1) : (2));
|
||||
camera_boundary_obj->data_buffer = data_buffer;
|
||||
|
||||
// <20>ж<EFBFBD><EFBFBD>Ƿ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
if(NULL != buffer->boundary_y[i])
|
||||
{
|
||||
// <20><><EFBFBD><EFBFBD>û<EFBFBD><C3BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݣ<EFBFBD><DDA3><EFBFBD><EFBFBD><EFBFBD>ʾÿһ<C3BF><D2BB>ֻ<EFBFBD><D6BB>һ<EFBFBD><D2BB><EFBFBD>߽<EFBFBD>
|
||||
// ָ<><D6B8><EFBFBD>˺<EFBFBD><CBBA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݣ<EFBFBD><DDA3><EFBFBD><EFBFBD>ַ<EFBFBD>ʽ<EFBFBD><CABD><EFBFBD><EFBFBD>ʵ<EFBFBD><CAB5>ͬһ<CDAC>ж<EFBFBD><D0B6><EFBFBD><EFBFBD>߽<EFBFBD><DFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>㷨<EFBFBD>ܹ<EFBFBD><DCB9><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>䡣
|
||||
seekfree_assistant_transfer_callback((const uint8 *)buffer->boundary_y[i], dot_bytes);
|
||||
}
|
||||
}
|
||||
// <20><>У<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
camera_boundary_obj->config.check_sum = SEEKFREE_ASSISTANT_SEND_HEAD;
|
||||
camera_boundary_obj->config.check_sum += seekfree_assistant_sum(
|
||||
&(camera_boundary_obj->config.cmd),
|
||||
sizeof(camera_boundary_obj->config) - 2);
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------------------------------------------------------
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͺ<EFBFBD><EFBFBD><EFBFBD>
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> CAMERA <20><><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD>ͺ<EFBFBD><EFBFBD><EFBFBD>
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> *camera_boundary_obj CAMERA <20><><EFBFBD><EFBFBD> <20><><EFBFBD>ݽṹ<DDBD><E1B9B9>
|
||||
// <20><><EFBFBD>ز<EFBFBD><D8B2><EFBFBD> void
|
||||
// ʹ<><CAB9>ʾ<EFBFBD><CABE> seekfree_assistant_camera_boundary_send(camera_boundary_obj);
|
||||
//-------------------------------------------------------------------------------------------------------------------
|
||||
void seekfree_assistant_camera_boundary_send (seekfree_assistant_camera_boundary_struct *camera_boundary_obj)
|
||||
{
|
||||
seekfree_assistant_transfer_callback(
|
||||
(const uint8 *)camera_boundary_obj,
|
||||
sizeof(camera_boundary_obj->config));
|
||||
seekfree_assistant_transfer_callback(
|
||||
(const uint8 *)(camera_boundary_obj->data_buffer),
|
||||
camera_boundary_obj->buffer_byte_size);
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------------------------------------------------------
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> CAMERA <20><><EFBFBD>ο<EFBFBD><CEBF><EFBFBD> <20><><EFBFBD>ͺ<EFBFBD><CDBA><EFBFBD>
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> x X <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> y Y <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> width <20><><EFBFBD>ο<EFBFBD><CEBF><EFBFBD>
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> height <20><><EFBFBD>θ߶<CEB8>
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> color <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɫ
|
||||
// <20><><EFBFBD>ز<EFBFBD><D8B2><EFBFBD> void
|
||||
// ʹ<><CAB9>ʾ<EFBFBD><CABE> seekfree_assistant_camera_rectangular_send(x, y, width, height, color);
|
||||
//-------------------------------------------------------------------------------------------------------------------
|
||||
void seekfree_assistant_camera_rectangular_send (uint16 x, uint16 y, uint16 width, uint16 height, uint16 color)
|
||||
{
|
||||
seekfree_assistant_camera_rectangular_struct camera_rectangular_obj;
|
||||
memset(&camera_rectangular_obj, 0, sizeof(seekfree_assistant_camera_rectangular_struct));
|
||||
camera_rectangular_obj.head = SEEKFREE_ASSISTANT_SEND_HEAD;
|
||||
camera_rectangular_obj.cmd = SEEKFREE_ASSISTANT_SEND_CAMERA_RECTANGULAR_CMD;
|
||||
|
||||
#if (SEEKFREE_ASSISTANT_STC_DATA_ENABLE)
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> STC <20><>ô<EFBFBD><C3B4>С<EFBFBD>˷<EFBFBD>һ<EFBFBD><D2BB>
|
||||
camera_rectangular_obj.x_axis_buffer[0] = (uint8)((x >> 8) & 0x00FF);
|
||||
camera_rectangular_obj.x_axis_buffer[1] = (uint8)((x >> 0) & 0x00FF);
|
||||
camera_rectangular_obj.y_axis_buffer[0] = (uint8)((y >> 8) & 0x00FF);
|
||||
camera_rectangular_obj.y_axis_buffer[1] = (uint8)((y >> 0) & 0x00FF);
|
||||
camera_rectangular_obj.width_buffer[0] = (uint8)((width >> 8) & 0x00FF);
|
||||
camera_rectangular_obj.width_buffer[1] = (uint8)((width >> 0) & 0x00FF);
|
||||
camera_rectangular_obj.height_buffer[0] = (uint8)((height >> 8) & 0x00FF);
|
||||
camera_rectangular_obj.height_buffer[1] = (uint8)((height >> 0) & 0x00FF);
|
||||
camera_rectangular_obj.color_buffer[0] = (uint8)((color >> 8) & 0x00FF);
|
||||
camera_rectangular_obj.color_buffer[1] = (uint8)((color >> 0) & 0x00FF);
|
||||
#else
|
||||
camera_rectangular_obj.x_axis_buffer[0] = (uint8)((x >> 0) & 0x00FF);
|
||||
camera_rectangular_obj.x_axis_buffer[1] = (uint8)((x >> 8) & 0x00FF);
|
||||
camera_rectangular_obj.y_axis_buffer[0] = (uint8)((y >> 0) & 0x00FF);
|
||||
camera_rectangular_obj.y_axis_buffer[1] = (uint8)((y >> 8) & 0x00FF);
|
||||
camera_rectangular_obj.width_buffer[0] = (uint8)((width >> 0) & 0x00FF);
|
||||
camera_rectangular_obj.width_buffer[1] = (uint8)((width >> 8) & 0x00FF);
|
||||
camera_rectangular_obj.height_buffer[0] = (uint8)((height >> 0) & 0x00FF);
|
||||
camera_rectangular_obj.height_buffer[1] = (uint8)((height >> 8) & 0x00FF);
|
||||
camera_rectangular_obj.color_buffer[0] = (uint8)((color >> 0) & 0x00FF);
|
||||
camera_rectangular_obj.color_buffer[1] = (uint8)((color >> 8) & 0x00FF);
|
||||
#endif
|
||||
|
||||
// <20><>У<EFBFBD><D0A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
camera_rectangular_obj.check_sum = SEEKFREE_ASSISTANT_SEND_HEAD;
|
||||
camera_rectangular_obj.check_sum += seekfree_assistant_sum(
|
||||
&(camera_rectangular_obj.cmd),
|
||||
sizeof(camera_rectangular_obj) - 2);
|
||||
|
||||
seekfree_assistant_transfer_callback(
|
||||
(const uint8 *)&camera_rectangular_obj,
|
||||
sizeof(camera_rectangular_obj));
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------------------------------------------------------
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> *oscilloscope_obj ʾ<><CABE><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݽṹ<DDBD><E1B9B9>
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> channel_max <20><><EFBFBD><EFBFBD>ͨ<EFBFBD><CDA8><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>Χ<EFBFBD><CEA7> [1, SEEKFREE_ASSISTANT_OSCILLOSCOPE_MAX] <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Χ<EFBFBD><CEA7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><DEB5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Χ
|
||||
// <20><><EFBFBD>ز<EFBFBD><D8B2><EFBFBD> void
|
||||
// ʹ<><CAB9>ʾ<EFBFBD><CABE> seekfree_assistant_oscilloscope_config(oscilloscope_obj, SEEKFREE_ASSISTANT_OSCILLOSCOPE_MAX);
|
||||
//-------------------------------------------------------------------------------------------------------------------
|
||||
void seekfree_assistant_oscilloscope_config (
|
||||
seekfree_assistant_oscilloscope_struct *oscilloscope_obj,
|
||||
uint8 channel_max,
|
||||
void *data_buffer)
|
||||
{
|
||||
zf_assert(NULL != oscilloscope_obj);
|
||||
zf_assert(NULL != data_buffer);
|
||||
|
||||
memset(oscilloscope_obj, 0, sizeof(seekfree_assistant_oscilloscope_struct));
|
||||
oscilloscope_obj->config.head = SEEKFREE_ASSISTANT_SEND_HEAD;
|
||||
oscilloscope_obj->config.cmd = SEEKFREE_ASSISTANT_SEND_OSCILLOSCOPE_CMD;
|
||||
oscilloscope_obj->config.channel_max =
|
||||
(SEEKFREE_ASSISTANT_OSCILLOSCOPE_MAX <= channel_max)
|
||||
? (SEEKFREE_ASSISTANT_OSCILLOSCOPE_MAX)
|
||||
: ((0 == channel_max) ? (1) : (channel_max));
|
||||
oscilloscope_obj->config.data_type = (SEEKFREE_ASSISTANT_STC_DATA_ENABLE) ? (0x01) : (0x00);
|
||||
oscilloscope_obj->buffer_byte_size = oscilloscope_obj->config.channel_max * 4;
|
||||
oscilloscope_obj->data_buffer = data_buffer;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------------------------------------------------------
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD> <20><><EFBFBD>ͺ<EFBFBD><CDBA><EFBFBD>
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> *seekfree_assistant_oscilloscope ʾ<><CABE><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݽṹ<DDBD><E1B9B9>
|
||||
// <20><><EFBFBD>ز<EFBFBD><D8B2><EFBFBD> void
|
||||
// ʹ<><CAB9>ʾ<EFBFBD><CABE> seekfree_assistant_oscilloscope_send(&seekfree_assistant_oscilloscope_data);
|
||||
//-------------------------------------------------------------------------------------------------------------------
|
||||
void seekfree_assistant_oscilloscope_send (seekfree_assistant_oscilloscope_struct *seekfree_assistant_oscilloscope)
|
||||
void seekfree_assistant_oscilloscope_send (seekfree_assistant_oscilloscope_struct *oscilloscope_obj)
|
||||
{
|
||||
uint8 packet_size;
|
||||
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>λ<EFBFBD><CEBB><EFBFBD><EFBFBD>
|
||||
seekfree_assistant_oscilloscope->channel_num &= 0x0f;
|
||||
|
||||
zf_assert(SEEKFREE_ASSISTANT_SET_OSCILLOSCOPE_COUNT >= seekfree_assistant_oscilloscope->channel_num);
|
||||
|
||||
// ֡ͷ
|
||||
seekfree_assistant_oscilloscope->head = SEEKFREE_ASSISTANT_SEND_HEAD;
|
||||
|
||||
// д<><D0B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ
|
||||
packet_size = sizeof(seekfree_assistant_oscilloscope_struct) - (SEEKFREE_ASSISTANT_SET_OSCILLOSCOPE_COUNT - seekfree_assistant_oscilloscope->channel_num) * 4;
|
||||
seekfree_assistant_oscilloscope->length = packet_size;
|
||||
|
||||
// д<>빦<EFBFBD><EBB9A6><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͨ<EFBFBD><CDA8><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
seekfree_assistant_oscilloscope->channel_num |= SEEKFREE_ASSISTANT_CAMERA_OSCILLOSCOPE;
|
||||
|
||||
// <20><>У<EFBFBD><D0A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
seekfree_assistant_oscilloscope->check_sum = 0;
|
||||
seekfree_assistant_oscilloscope->check_sum = seekfree_assistant_sum((uint8 *)seekfree_assistant_oscilloscope, packet_size);
|
||||
oscilloscope_obj->config.check_sum = SEEKFREE_ASSISTANT_SEND_HEAD;
|
||||
oscilloscope_obj->config.check_sum += seekfree_assistant_sum(
|
||||
&(oscilloscope_obj->config.cmd),
|
||||
sizeof(oscilloscope_obj->config) - 2);
|
||||
oscilloscope_obj->config.check_sum += seekfree_assistant_sum(
|
||||
(oscilloscope_obj->data_buffer),
|
||||
oscilloscope_obj->buffer_byte_size);
|
||||
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD>ڵ<EFBFBD><DAB5>ñ<EFBFBD><C3B1><EFBFBD><EFBFBD><EFBFBD>֮ǰ<D6AE><C7B0><EFBFBD><EFBFBD><EFBFBD>û<EFBFBD><C3BB><EFBFBD><EFBFBD><EFBFBD>Ҫ<EFBFBD><D2AA><EFBFBD>͵<EFBFBD><CDB5><EFBFBD><EFBFBD><EFBFBD>д<EFBFBD><D0B4>seekfree_assistant_oscilloscope_data.data[]
|
||||
|
||||
seekfree_assistant_transfer_callback((const uint8 *)seekfree_assistant_oscilloscope, packet_size);
|
||||
seekfree_assistant_transfer_callback(
|
||||
(const uint8 *)oscilloscope_obj,
|
||||
sizeof(oscilloscope_obj->config));
|
||||
seekfree_assistant_transfer_callback(
|
||||
(const uint8 *)(oscilloscope_obj->data_buffer),
|
||||
oscilloscope_obj->buffer_byte_size);
|
||||
}
|
||||
|
||||
#if (SEEKFREE_ASSISTANT_DEBUG_PARAM_ENABLE)
|
||||
//-------------------------------------------------------------------------------------------------------------------
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͼ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ<EFBFBD><EFBFBD><EFBFBD>ú<EFBFBD><EFBFBD><EFBFBD>
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> camera_type ͼ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> image_addr ͼ<><CDBC><EFBFBD><EFBFBD>ַ <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>NULL<4C><4C><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾֻ<CABE><D6BB><EFBFBD>ͱ<EFBFBD><CDB1><EFBFBD><EFBFBD><EFBFBD>Ϣ<EFBFBD><CFA2><EFBFBD><EFBFBD>λ<EFBFBD><CEBB>
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> width ͼ<><CDBC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> height ͼ<><CDBC><EFBFBD>߶<EFBFBD>
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>ʾ<EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD>ͺ<EFBFBD><EFBFBD><EFBFBD>
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> *debug_param_obj ʾ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݽṹ<EFBFBD><EFBFBD>
|
||||
// <20><><EFBFBD>ز<EFBFBD><D8B2><EFBFBD> void
|
||||
// ʹ<><CAB9>ʾ<EFBFBD><CABE> seekfree_assistant_camera_information_config(SEEKFREE_ASSISTANT_MT9V03X, mt9v03x_image[0], MT9V03X_W, MT9V03X_H);
|
||||
// <20><>ע<EFBFBD><D7A2>Ϣ
|
||||
// ʹ<><CAB9>ʾ<EFBFBD><CABE> seekfree_assistant_oscilloscope_send(&seekfree_assistant_oscilloscope_data);
|
||||
//-------------------------------------------------------------------------------------------------------------------
|
||||
void seekfree_assistant_camera_information_config (seekfree_assistant_image_type_enum camera_type, void *image_addr, uint16 width, uint16 height)
|
||||
void seekfree_assistant_debug_param_analysis (seekfree_assistant_debug_param_struct *debug_param_obj)
|
||||
{
|
||||
seekfree_assistant_camera_dot_data.head = SEEKFREE_ASSISTANT_SEND_HEAD;
|
||||
seekfree_assistant_camera_dot_data.function = SEEKFREE_ASSISTANT_CAMERA_DOT_FUNCTION;
|
||||
// д<><D0B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ
|
||||
seekfree_assistant_camera_dot_data.length = sizeof(seekfree_assistant_camera_dot_struct);
|
||||
zf_assert(NULL != debug_param_obj);
|
||||
|
||||
seekfree_assistant_camera_buffer.camera_type = camera_type;
|
||||
seekfree_assistant_camera_buffer.image_addr = image_addr;
|
||||
seekfree_assistant_camera_buffer.width = width;
|
||||
seekfree_assistant_camera_buffer.height = height;
|
||||
}
|
||||
seekfree_assistant_debug_param_cmd_struct debug_param_cmd_obj; // <20>½<EFBFBD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD>ݰ<EFBFBD>
|
||||
uint8 *debug_param_cmd_pointer = (uint8 *)&debug_param_cmd_obj; // <20><>һ<EFBFBD><D2BB>ָ<EFBFBD><D6B8>ָ<EFBFBD><D6B8><EFBFBD><EFBFBD><EFBFBD>ݰ<EFBFBD><DDB0><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
uint8 temp_sum = 0xFF; // У<><D0A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD>
|
||||
uint32 read_length = 0; // <20><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD>
|
||||
|
||||
//-------------------------------------------------------------------------------------------------------------------
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͼ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>߷<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ú<EFBFBD><EFBFBD><EFBFBD>
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> boundary_type <20>߽<EFBFBD><DFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> dot_num һ<><D2BB><EFBFBD>߽<EFBFBD><DFBD>ж<EFBFBD><D0B6>ٸ<EFBFBD><D9B8><EFBFBD>
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> dot_x1 <20><><EFBFBD>ű<EFBFBD><C5B1><EFBFBD>1<EFBFBD><31><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ĵ<EFBFBD>ַ <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>NULL<4C><4C><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD><EFBFBD>ͱ<EFBFBD><CDB1><EFBFBD>1
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> dot_x2 <20><><EFBFBD>ű<EFBFBD><C5B1><EFBFBD>2<EFBFBD><32><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ĵ<EFBFBD>ַ <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>NULL<4C><4C><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD><EFBFBD>ͱ<EFBFBD><CDB1><EFBFBD>2
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> dot_x3 <20><><EFBFBD>ű<EFBFBD><C5B1><EFBFBD>3<EFBFBD><33><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ĵ<EFBFBD>ַ <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>NULL<4C><4C><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD><EFBFBD>ͱ<EFBFBD><CDB1><EFBFBD>3
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> dot_y1 <20><><EFBFBD>ű<EFBFBD><C5B1><EFBFBD>1<EFBFBD><31><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ĵ<EFBFBD>ַ <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>NULL<4C><4C><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD><EFBFBD>ͱ<EFBFBD><CDB1><EFBFBD>1
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> dot_y2 <20><><EFBFBD>ű<EFBFBD><C5B1><EFBFBD>2<EFBFBD><32><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ĵ<EFBFBD>ַ <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>NULL<4C><4C><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD><EFBFBD>ͱ<EFBFBD><CDB1><EFBFBD>2
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> dot_y3 <20><><EFBFBD>ű<EFBFBD><C5B1><EFBFBD>3<EFBFBD><33><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ĵ<EFBFBD>ַ <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>NULL<4C><4C><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD><EFBFBD>ͱ<EFBFBD><CDB1><EFBFBD>3
|
||||
// <20><><EFBFBD>ز<EFBFBD><D8B2><EFBFBD> void
|
||||
// ʹ<><CAB9>ʾ<EFBFBD><CABE> seekfree_assistant_camera_config(X_BOUNDARY, MT9V03X_H, x1_boundary, x2_boundary, x3_boundary, NULL, NULL, NULL); // ͼ<><CDBC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ߣ<EFBFBD><DFA3><EFBFBD><EFBFBD><EFBFBD>ֻ<EFBFBD>к<EFBFBD><D0BA><EFBFBD><EFBFBD><EFBFBD>
|
||||
// ʹ<><CAB9>ʾ<EFBFBD><CABE> seekfree_assistant_camera_config(Y_BOUNDARY, MT9V03X_W, NULL, NULL, NULL, y1_boundary, y2_boundary, y3_boundary); // ͼ<><CDBC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ߣ<EFBFBD><DFA3><EFBFBD><EFBFBD><EFBFBD>ֻ<EFBFBD><D6BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
// ʹ<><CAB9>ʾ<EFBFBD><CABE> seekfree_assistant_camera_config(XY_BOUNDARY, 160, xy_x1_boundary, xy_x2_boundary, xy_x3_boundary, xy_y1_boundary, xy_y2_boundary, xy_y3_boundary); // ͼ<><CDBC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ߣ<EFBFBD><DFA3><EFBFBD><EFBFBD>߰<EFBFBD><DFB0><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
// <20><>ע<EFBFBD><D7A2>Ϣ
|
||||
//-------------------------------------------------------------------------------------------------------------------
|
||||
void seekfree_assistant_camera_boundary_config (seekfree_assistant_boundary_type_enum boundary_type, uint16 dot_num, void *dot_x1, void *dot_x2, void *dot_x3, void *dot_y1, void *dot_y2, void *dot_y3)
|
||||
{
|
||||
uint8 i = 0;
|
||||
uint8 boundary_num = 0;
|
||||
uint8 boundary_data_type = 0;
|
||||
|
||||
// <20><><EFBFBD><EFBFBD>ͼ<EFBFBD><CDBC><EFBFBD><EFBFBD><EFBFBD>ͻ<EFBFBD><CDBB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƿ<EFBFBD><EFBFBD><D7BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20><><EFBFBD>ô˺<C3B4><CBBA><EFBFBD>֮ǰ<D6AE><C7B0>Ҫ<EFBFBD>ȵ<EFBFBD><C8B5><EFBFBD>seekfree_assistant_camera_config<69><67><EFBFBD>ú<EFBFBD>ͼ<EFBFBD><CDBC><EFBFBD><EFBFBD>Ϣ
|
||||
zf_assert(0 != seekfree_assistant_camera_buffer.camera_type);
|
||||
|
||||
seekfree_assistant_camera_dot_data.dot_num = dot_num;
|
||||
seekfree_assistant_camera_dot_data.valid_flag = 0;
|
||||
for(i = 0; i < 3; i++)
|
||||
{
|
||||
seekfree_assistant_camera_buffer.boundary_x[i] = NULL;
|
||||
seekfree_assistant_camera_buffer.boundary_y[i] = NULL;
|
||||
}
|
||||
|
||||
switch(boundary_type)
|
||||
{
|
||||
case X_BOUNDARY:
|
||||
{
|
||||
if(NULL != dot_x1)
|
||||
{
|
||||
boundary_num++;
|
||||
seekfree_assistant_camera_dot_data.valid_flag |= 1 << 0;
|
||||
seekfree_assistant_camera_buffer.boundary_x[i++] = dot_x1;
|
||||
}
|
||||
if(NULL != dot_x2)
|
||||
{
|
||||
boundary_num++;
|
||||
seekfree_assistant_camera_dot_data.valid_flag |= 1 << 1;
|
||||
seekfree_assistant_camera_buffer.boundary_x[i++] = dot_x2;
|
||||
}
|
||||
if(NULL != dot_x3)
|
||||
{
|
||||
boundary_num++;
|
||||
seekfree_assistant_camera_dot_data.valid_flag |= 1 << 2;
|
||||
seekfree_assistant_camera_buffer.boundary_x[i++] = dot_x3;
|
||||
}
|
||||
|
||||
if(255 < seekfree_assistant_camera_buffer.height)
|
||||
{
|
||||
boundary_data_type = 1;
|
||||
}
|
||||
}break;
|
||||
|
||||
case Y_BOUNDARY:
|
||||
{
|
||||
if(NULL != dot_y1)
|
||||
{
|
||||
boundary_num++;
|
||||
seekfree_assistant_camera_dot_data.valid_flag |= 1 << 0;
|
||||
seekfree_assistant_camera_buffer.boundary_y[i++] = dot_y1;
|
||||
}
|
||||
if(NULL != dot_y2)
|
||||
{
|
||||
boundary_num++;
|
||||
seekfree_assistant_camera_dot_data.valid_flag |= 1 << 1;
|
||||
seekfree_assistant_camera_buffer.boundary_y[i++] = dot_y2;
|
||||
}
|
||||
if(NULL != dot_y3)
|
||||
{
|
||||
boundary_num++;
|
||||
seekfree_assistant_camera_dot_data.valid_flag |= 1 << 2;
|
||||
seekfree_assistant_camera_buffer.boundary_y[i++] = dot_y3;
|
||||
}
|
||||
|
||||
if(255 < seekfree_assistant_camera_buffer.width)
|
||||
{
|
||||
boundary_data_type = 1;
|
||||
}
|
||||
}break;
|
||||
|
||||
case XY_BOUNDARY:
|
||||
{
|
||||
if((NULL != dot_x1) && (NULL != dot_y1))
|
||||
{
|
||||
boundary_num++;
|
||||
seekfree_assistant_camera_dot_data.valid_flag |= 1 << 0;
|
||||
seekfree_assistant_camera_buffer.boundary_x[i] = dot_x1;
|
||||
seekfree_assistant_camera_buffer.boundary_y[i++] = dot_y1;
|
||||
}
|
||||
if((NULL != dot_x2) && (NULL != dot_y2))
|
||||
{
|
||||
boundary_num++;
|
||||
seekfree_assistant_camera_dot_data.valid_flag |= 1 << 1;
|
||||
seekfree_assistant_camera_buffer.boundary_x[i] = dot_x2;
|
||||
seekfree_assistant_camera_buffer.boundary_y[i++] = dot_y2;
|
||||
}
|
||||
if((NULL != dot_x3) && (NULL != dot_y3))
|
||||
{
|
||||
boundary_num++;
|
||||
seekfree_assistant_camera_dot_data.valid_flag |= 1 << 2;
|
||||
seekfree_assistant_camera_buffer.boundary_x[i] = dot_x3;
|
||||
seekfree_assistant_camera_buffer.boundary_y[i++] = dot_y3;
|
||||
}
|
||||
|
||||
if((255 < seekfree_assistant_camera_buffer.width) || (255 < seekfree_assistant_camera_buffer.height))
|
||||
{
|
||||
boundary_data_type = 1;
|
||||
}
|
||||
}break;
|
||||
|
||||
case NO_BOUNDARY:break;
|
||||
}
|
||||
|
||||
seekfree_assistant_camera_dot_data.dot_type = (boundary_type << 6) | (boundary_data_type << 5) | boundary_num;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------------------------------------------------------
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ַ<EFBFBD><D6B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͷͼ<CDB7><CDBC>
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> void
|
||||
// <20><><EFBFBD>ز<EFBFBD><D8B2><EFBFBD> void
|
||||
// ʹ<><CAB9>ʾ<EFBFBD><CABE>
|
||||
// <20><>ע<EFBFBD><D7A2>Ϣ <20>ڵ<EFBFBD><DAB5><EFBFBD>ͼ<EFBFBD><CDBC><EFBFBD><EFBFBD><EFBFBD>ͺ<EFBFBD><CDBA><EFBFBD>֮ǰ<D6AE><C7B0><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ص<EFBFBD><D8B5><EFBFBD>һ<EFBFBD><D2BB>seekfree_assistant_camera_config<69><67><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ӧ<EFBFBD>IJ<EFBFBD><C4B2><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ú<EFBFBD>
|
||||
//-------------------------------------------------------------------------------------------------------------------
|
||||
void seekfree_assistant_camera_send (void)
|
||||
{
|
||||
// <20><><EFBFBD><EFBFBD>ͼ<EFBFBD><CDBC><EFBFBD><EFBFBD><EFBFBD>ͻ<EFBFBD><CDBB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƿ<EFBFBD><EFBFBD><D7BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
zf_assert(0 != seekfree_assistant_camera_buffer.camera_type);
|
||||
|
||||
seekfree_assistant_camera_data_send(seekfree_assistant_camera_buffer.camera_type, seekfree_assistant_camera_buffer.image_addr, seekfree_assistant_camera_dot_data.dot_type & 0x0f, seekfree_assistant_camera_buffer.width, seekfree_assistant_camera_buffer.height);
|
||||
|
||||
if(seekfree_assistant_camera_dot_data.dot_type & 0x0f)
|
||||
{
|
||||
seekfree_assistant_camera_dot_send(&seekfree_assistant_camera_buffer);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
//-------------------------------------------------------------------------------------------------------------------
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֽ<EFBFBD><D6BD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>յ<EFBFBD><D5B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> void
|
||||
// <20><><EFBFBD>ز<EFBFBD><D8B2><EFBFBD> void
|
||||
// ʹ<><CAB9>ʾ<EFBFBD><CABE> <20><><EFBFBD><EFBFBD>ֻ<EFBFBD><D6BB>Ҫ<EFBFBD>ŵ<EFBFBD><C5B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>е<EFBFBD>PIT<49>жϻ<D0B6><CFBB><EFBFBD><EFBFBD><EFBFBD>ѭ<EFBFBD><D1AD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
//-------------------------------------------------------------------------------------------------------------------
|
||||
#if (1 == SEEKFREE_ASSISTANT_SET_PARAMETR_ENABLE)
|
||||
void seekfree_assistant_data_analysis (void)
|
||||
{
|
||||
uint8 temp_sum;
|
||||
uint32 read_length;
|
||||
seekfree_assistant_parameter_struct *receive_packet;
|
||||
|
||||
// <20><><EFBFBD><EFBFBD>ʹ<EFBFBD><CAB9>uint32<33><32><EFBFBD>ж<EFBFBD><D0B6>壬Ŀ<E5A3AC><C4BF><EFBFBD><EFBFBD>Ϊ<EFBFBD>˱<EFBFBD>֤<EFBFBD><D6A4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֽڶ<D6BD><DAB6><EFBFBD>
|
||||
uint32 temp_buffer[SEEKFREE_ASSISTANT_BUFFER_SIZE / 4];
|
||||
|
||||
// <20><><EFBFBD>Զ<EFBFBD>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD>, <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Զ<EFBFBD><D4B6><EFBFBD><EFBFBD>Ĵ<EFBFBD><C4B4>䷽ʽ<E4B7BD><CABD><EFBFBD>ӽ<EFBFBD><D3BD>ջص<D5BB><D8B5>ж<EFBFBD>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD>
|
||||
read_length = seekfree_assistant_receive_callback((uint8 *)temp_buffer, SEEKFREE_ASSISTANT_BUFFER_SIZE);
|
||||
// <20><><EFBFBD>Զ<EFBFBD>ȡһ<C8A1><D2BB><EFBFBD><EFBFBD><EFBFBD>ݰ<EFBFBD>
|
||||
// <20><><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>
|
||||
read_length = seekfree_assistant_receive_callback(
|
||||
debug_param_cmd_pointer,
|
||||
sizeof(seekfree_assistant_debug_param_cmd_struct));
|
||||
if(read_length)
|
||||
{
|
||||
// <20><><EFBFBD><EFBFBD>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>д<EFBFBD><D0B4>FIFO
|
||||
fifo_write_buffer(&seekfree_assistant_fifo, (uint8 *)temp_buffer, read_length);
|
||||
{ // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>д<EFBFBD><D0B4>FIFO
|
||||
fifo_write_buffer(
|
||||
&seekfree_assistant_debug_param_fifo,
|
||||
debug_param_cmd_pointer,
|
||||
read_length);
|
||||
}
|
||||
|
||||
while(sizeof(seekfree_assistant_parameter_struct) <= fifo_used(&seekfree_assistant_fifo))
|
||||
{
|
||||
read_length = sizeof(seekfree_assistant_parameter_struct);
|
||||
fifo_read_buffer(&seekfree_assistant_fifo, (uint8 *)temp_buffer, &read_length, FIFO_READ_ONLY);
|
||||
while( sizeof(seekfree_assistant_debug_param_cmd_struct)
|
||||
<= fifo_used(&seekfree_assistant_debug_param_fifo))
|
||||
{ // <20><><EFBFBD><EFBFBD> FIFO <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD>ݰ<EFBFBD> <20><>ô<EFBFBD>ͽ<EFBFBD><CDBD>н<EFBFBD><D0BD><EFBFBD>
|
||||
// ֱ<>Ӷ<EFBFBD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD>ݰ<EFBFBD><DDB0><EFBFBD><EFBFBD><EFBFBD>
|
||||
read_length = sizeof(seekfree_assistant_debug_param_cmd_struct);
|
||||
fifo_read_buffer(
|
||||
&seekfree_assistant_debug_param_fifo,
|
||||
debug_param_cmd_pointer,
|
||||
&read_length,
|
||||
FIFO_READ_ONLY);
|
||||
|
||||
if(SEEKFREE_ASSISTANT_RECEIVE_HEAD != ((uint8 *)temp_buffer)[0])
|
||||
{
|
||||
// û<EFBFBD><EFBFBD>֡ͷ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>FIFO<EFBFBD><EFBFBD>ȥ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
read_length = 1;
|
||||
}
|
||||
else
|
||||
{
|
||||
// <20>ҵ<EFBFBD>֡ͷ
|
||||
receive_packet = (seekfree_assistant_parameter_struct *)temp_buffer;
|
||||
temp_sum = receive_packet->check_sum;
|
||||
receive_packet->check_sum = 0;
|
||||
if(temp_sum == seekfree_assistant_sum((uint8 *)temp_buffer, sizeof(seekfree_assistant_parameter_struct)))
|
||||
{
|
||||
// <20><>У<EFBFBD><D0A3><EFBFBD>ɹ<EFBFBD><C9B9><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
seekfree_assistant_parameter[receive_packet->channel - 1] = receive_packet->data;
|
||||
seekfree_assistant_parameter_update_flag[receive_packet->channel - 1] = 1;
|
||||
if( SEEKFREE_ASSISTANT_RECEIVE_HEAD == debug_param_cmd_pointer[0]
|
||||
&& SEEKFREE_ASSISTANT_RECEIVE_DEBUG_PARAM_CMD == debug_param_cmd_pointer[2])
|
||||
{ // ֱ<EFBFBD><EFBFBD>ƥ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>֡ͷ <20><><EFBFBD>ҹ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ҳƥ<EFBFBD><EFBFBD>
|
||||
temp_sum = debug_param_cmd_obj.check_sum; // <20><>ȡ<EFBFBD><C8A1><EFBFBD>ݰ<EFBFBD><DDB0><EFBFBD>У<EFBFBD><D0A3><EFBFBD><EFBFBD>
|
||||
debug_param_cmd_obj.check_sum = 0; // <20><><EFBFBD>հ<EFBFBD><D5B0><EFBFBD>У<EFBFBD><D0A3><EFBFBD><EFBFBD>ֵ <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>У<EFBFBD><D0A3><EFBFBD><EFBFBD>
|
||||
if( temp_sum == seekfree_assistant_sum(debug_param_cmd_pointer, sizeof(seekfree_assistant_debug_param_cmd_struct)))
|
||||
{ // <20><>У<EFBFBD><D0A3><EFBFBD>ɹ<EFBFBD><C9B9><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
debug_param_obj->data[debug_param_cmd_obj.channel_index - 1] = debug_param_cmd_obj.dat.data_float;
|
||||
#if (SEEKFREE_ASSISTANT_STC_DATA_ENABLE)
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> STC <20><>ô<EFBFBD><C3B4>С<EFBFBD>˷<EFBFBD>һ<EFBFBD><D2BB>
|
||||
debug_param_obj->dat.data_buffer[0] ^= debug_param_obj->dat.data_buffer[3];
|
||||
debug_param_obj->dat.data_buffer[3] ^= debug_param_obj->dat.data_buffer[0];
|
||||
debug_param_obj->dat.data_buffer[0] ^= debug_param_obj->dat.data_buffer[3];
|
||||
debug_param_obj->dat.data_buffer[1] ^= debug_param_obj->dat.data_buffer[2];
|
||||
debug_param_obj->dat.data_buffer[2] ^= debug_param_obj->dat.data_buffer[1];
|
||||
debug_param_obj->dat.data_buffer[1] ^= debug_param_obj->dat.data_buffer[2];
|
||||
#endif
|
||||
debug_param_obj->update_flag[debug_param_cmd_obj.channel_index - 1] = 1;
|
||||
temp_sum = 0x00;
|
||||
}
|
||||
else
|
||||
{
|
||||
read_length = 1;
|
||||
{ // <20><><EFBFBD><EFBFBD>У<EFBFBD><D0A3><EFBFBD><EFBFBD>ƥ<EFBFBD><C6A5><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>λ<EFBFBD><CEBB>ʱУ<CAB1><D0A3><EFBFBD><EFBFBD>Ϊ 0xFF <20><>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
temp_sum = 0xFF;
|
||||
}
|
||||
}
|
||||
else
|
||||
{ // <20><><EFBFBD><EFBFBD>ƥ<EFBFBD>䲻<EFBFBD><E4B2BB>֡ͷ<D6A1><EFBFBD><CDB9><EFBFBD><EFBFBD><EFBFBD> <20><>λ<EFBFBD><CEBB>ʱУ<CAB1><D0A3><EFBFBD><EFBFBD>Ϊ 0xFF <20><>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
temp_sum = 0xFF;
|
||||
}
|
||||
|
||||
if(0xFF == temp_sum)
|
||||
{ // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱУ<CAB1><D0A3><EFBFBD><EFBFBD>Ϊ 0xFF <20><>ô<EFBFBD><C3B4><EFBFBD>ǽ<EFBFBD><C7BD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ѱ<EFBFBD><D1B0><EFBFBD><EFBFBD>һ<EFBFBD><D2BB>֡ͷ
|
||||
for(read_length = 1; sizeof(seekfree_assistant_debug_param_cmd_struct) > read_length; read_length ++)
|
||||
{ // <20><>Ϊ<EFBFBD><CEAA>ȡ<EFBFBD><C8A1>һ<EFBFBD><D2BB><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD>
|
||||
if(SEEKFREE_ASSISTANT_RECEIVE_HEAD == debug_param_cmd_pointer[read_length])
|
||||
{ // <20>ҵ<EFBFBD><D2B5>¸<EFBFBD>֡ͷ<D6A1><CDB7><EFBFBD>˳<EFBFBD>
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʹ<EFBFBD>õ<EFBFBD><C3B5><EFBFBD><EFBFBD><EFBFBD>
|
||||
fifo_read_buffer(&seekfree_assistant_fifo, (uint8 *)temp_buffer, &read_length, FIFO_READ_AND_CLEAN);
|
||||
fifo_read_buffer(
|
||||
&seekfree_assistant_debug_param_fifo,
|
||||
debug_param_cmd_pointer,
|
||||
&read_length,
|
||||
FIFO_READ_AND_CLEAN);
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -1,20 +1,20 @@
|
||||
/*********************************************************************************************************************
|
||||
* 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>
|
||||
* RT1064DVL6A Opensourec Library <20><><EFBFBD><EFBFBD>RT1064DVL6A <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><C4BC><EFBFBD> RT1064DVL6A <20><>Դ<EFBFBD><D4B4><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD>
|
||||
*
|
||||
* RT1064DVL6A <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>
|
||||
@@ -24,142 +24,292 @@
|
||||
* <20>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD><EFBFBD> seekfree_assistant
|
||||
* <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.10.2
|
||||
* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ADS v1.9.4
|
||||
* <20><><EFBFBD><EFBFBD>ƽ̨ TC264D
|
||||
* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> https://seekfree.taobao.com/
|
||||
*
|
||||
*
|
||||
* <20>ļ<DEB8>¼
|
||||
* <20><><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>ע
|
||||
* 2024-01-01 pudding first version
|
||||
* <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><>ע
|
||||
* 2024-1-11 SeekFree first version
|
||||
********************************************************************************************************************/
|
||||
#ifndef _seekfree_assistant_h_
|
||||
#define _seekfree_assistant_h_
|
||||
|
||||
|
||||
#include "zf_common_typedef.h"
|
||||
|
||||
// CCD <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ö<EFBFBD><C3B6>
|
||||
typedef enum
|
||||
{
|
||||
SEEKFREE_ASSISTANT_DATA_TYPE_UINT8 ,
|
||||
SEEKFREE_ASSISTANT_DATA_TYPE_UINT16 ,
|
||||
}seekfree_assistant_data_type_enum;
|
||||
|
||||
// 1<EFBFBD><EFBFBD>ʹ<EFBFBD>ܲ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڵĹ<EFBFBD><EFBFBD><EFBFBD> 0<><30><EFBFBD>رղ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڵĹ<EFBFBD><EFBFBD><EFBFBD>
|
||||
#define SEEKFREE_ASSISTANT_SET_PARAMETR_ENABLE ( 1 )
|
||||
|
||||
|
||||
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>FIFO<EFBFBD><EFBFBD>С
|
||||
#define SEEKFREE_ASSISTANT_BUFFER_SIZE ( 0x80 )
|
||||
|
||||
// <20><><EFBFBD><EFBFBD>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͨ<EFBFBD><CDA8><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
#define SEEKFREE_ASSISTANT_SET_OSCILLOSCOPE_COUNT ( 0x08 )
|
||||
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ե<EFBFBD><D4B5><EFBFBD><EFBFBD><EFBFBD>ͨ<EFBFBD><CDA8><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
#define SEEKFREE_ASSISTANT_SET_PARAMETR_COUNT ( 0x08 )
|
||||
|
||||
// <20><><EFBFBD><EFBFBD>ͼ<EFBFBD><CDBC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
#define SEEKFREE_ASSISTANT_CAMERA_MAX_BOUNDARY ( 0x08 )
|
||||
|
||||
// <20><>Ƭ<EFBFBD><C6AC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>λ<EFBFBD><CEBB><EFBFBD><EFBFBD><EFBFBD>͵<EFBFBD>֡ͷ
|
||||
#define SEEKFREE_ASSISTANT_SEND_HEAD ( 0xAA )
|
||||
|
||||
// <20><><EFBFBD><EFBFBD>ͷ<EFBFBD><CDB7>
|
||||
#define SEEKFREE_ASSISTANT_CAMERA_FUNCTION ( 0x02 )
|
||||
#define SEEKFREE_ASSISTANT_CAMERA_DOT_FUNCTION ( 0x03 )
|
||||
#define SEEKFREE_ASSISTANT_CAMERA_OSCILLOSCOPE ( 0x10 )
|
||||
|
||||
// <20><>λ<EFBFBD><CEBB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƭ<EFBFBD><C6AC><EFBFBD><EFBFBD><EFBFBD>͵<EFBFBD>֡ͷ
|
||||
#define SEEKFREE_ASSISTANT_RECEIVE_HEAD ( 0x55 )
|
||||
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
#define SEEKFREE_ASSISTANT_RECEIVE_SET_PARAMETER ( 0x20 )
|
||||
|
||||
// CCD <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ö<EFBFBD><EFBFBD>
|
||||
typedef enum
|
||||
{
|
||||
SEEKFREE_ASSISTANT_CCD_RESOLUTION_8BIT , // 8λ<38>ֱ<EFBFBD><D6B1><EFBFBD>
|
||||
SEEKFREE_ASSISTANT_CCD_RESOLUTION_10BIT , // 10λ<30>ֱ<EFBFBD><D6B1><EFBFBD>
|
||||
SEEKFREE_ASSISTANT_CCD_RESOLUTION_12BIT , // 12λ<32>ֱ<EFBFBD><EFBFBD><EFBFBD>
|
||||
}seekfree_assistant_ccd_resolution_enum;
|
||||
|
||||
// <20><><EFBFBD><EFBFBD>ͷ<EFBFBD><CDB7><EFBFBD><EFBFBD>ö<EFBFBD><C3B6>
|
||||
typedef enum
|
||||
{
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͷ<EFBFBD>ͺŶ<CDBA><C5B6><EFBFBD>
|
||||
SEEKFREE_ASSISTANT_OV7725_BIN = 1,
|
||||
SEEKFREE_ASSISTANT_MT9V03X,
|
||||
SEEKFREE_ASSISTANT_SCC8660,
|
||||
|
||||
// <20><><EFBFBD><EFBFBD>ͼ<EFBFBD><CDBC><EFBFBD><EFBFBD><EFBFBD>Ͷ<EFBFBD><CDB6><EFBFBD>
|
||||
SEEKFREE_ASSISTANT_BINARY = 1,
|
||||
SEEKFREE_ASSISTANT_GRAY,
|
||||
SEEKFREE_ASSISTANT_RGB565,
|
||||
}seekfree_assistant_image_type_enum;
|
||||
SEEKFREE_ASSISTANT_CAMERA_TYPE_BINARY = 0x01 ,
|
||||
SEEKFREE_ASSISTANT_CAMERA_TYPE_GRAY ,
|
||||
SEEKFREE_ASSISTANT_CAMERA_TYPE_RGB565 ,
|
||||
|
||||
// <20><><EFBFBD><EFBFBD>ͷ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ö<EFBFBD><EFBFBD>
|
||||
typedef enum
|
||||
{
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͷ<EFBFBD>ͺŶ<CDBA><C5B6><EFBFBD>
|
||||
X_BOUNDARY, // <20><><EFBFBD>͵<EFBFBD>ͼ<EFBFBD><CDBC><EFBFBD>б߽<D0B1><DFBD><EFBFBD>Ϣֻ<CFA2><D6BB><EFBFBD><EFBFBD>X<EFBFBD><58>Ҳ<EFBFBD><D2B2><EFBFBD><EFBFBD>ֻ<EFBFBD>к<EFBFBD><D0BA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ<EFBFBD><CFA2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͼ<EFBFBD><CDBC><EFBFBD>߶ȵõ<C8B5>
|
||||
Y_BOUNDARY, // <20><><EFBFBD>͵<EFBFBD>ͼ<EFBFBD><CDBC><EFBFBD>б߽<D0B1><DFBD><EFBFBD>Ϣֻ<CFA2><D6BB><EFBFBD><EFBFBD>Y<EFBFBD><59>Ҳ<EFBFBD><D2B2><EFBFBD><EFBFBD>ֻ<EFBFBD><D6BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ<EFBFBD><CFA2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͼ<EFBFBD><CDBC><EFBFBD><EFBFBD><EFBFBD>ȵõ<C8B5><C3B5><EFBFBD>ͨ<EFBFBD><CDA8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
XY_BOUNDARY, // <20><><EFBFBD>͵<EFBFBD>ͼ<EFBFBD><CDBC><EFBFBD>б߽<D0B1><EFBFBD><EFBFBD>Ϣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>X<EFBFBD><EFBFBD>Y<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><EFBFBD><EFBFBD><EFBFBD>ʾ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ч<EFBFBD><EFBFBD>
|
||||
NO_BOUNDARY, // <20><><EFBFBD>͵<EFBFBD>ͼ<EFBFBD><CDBC><EFBFBD><EFBFBD>û<EFBFBD>б<EFBFBD><D0B1><EFBFBD><EFBFBD><EFBFBD>Ϣ
|
||||
}seekfree_assistant_boundary_type_enum;
|
||||
// <20><><EFBFBD><EFBFBD>ͷ<EFBFBD>ͺ<EFBFBD>ƥ<EFBFBD>䶨<EFBFBD><EFBFBD>
|
||||
SEEKFREE_ASSISTANT_CAMERA_TYPE_OV7725_BIN = 0x01 ,
|
||||
SEEKFREE_ASSISTANT_CAMERA_TYPE_MT9V03X ,
|
||||
SEEKFREE_ASSISTANT_CAMERA_TYPE_SCC8660 ,
|
||||
}seekfree_assistant_camera_type_enum;
|
||||
|
||||
#define SEEKFREE_ASSISTANT_STC_DATA_ENABLE ( 0 ) // STC <20><>Ƭ<EFBFBD><C6AC><EFBFBD><EFBFBD>Ҫʹ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>궨<EFBFBD><EFBFBD>
|
||||
|
||||
#define SEEKFREE_ASSISTANT_OSCILLOSCOPE_MAX ( 16 ) // <20><><EFBFBD><EFBFBD>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͨ<EFBFBD><CDA8><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
#define SEEKFREE_ASSISTANT_CCD_RESOLUTION_DEFAULT ( SEEKFREE_ASSISTANT_CCD_RESOLUTION_12BIT ) // Ĭ<><C4AC> CCD <20>ľ<EFBFBD><C4BE><EFBFBD> <20><><EFBFBD><EFBFBD>ȷ<EFBFBD><C8B7><EFBFBD><EFBFBD>λ<EFBFBD><CEBB><EFBFBD><EFBFBD><EFBFBD>᳤<EFBFBD><E1B3A4>
|
||||
|
||||
#define SEEKFREE_ASSISTANT_DEBUG_PARAM_ENABLE ( 1 ) // 1<><31>ʹ<EFBFBD>ܲ<EFBFBD><DCB2><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڵĹ<DAB5><C4B9><EFBFBD> 0<><30><EFBFBD>رղ<D8B1><D5B2><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڵĹ<DAB5><C4B9><EFBFBD>
|
||||
#if (SEEKFREE_ASSISTANT_DEBUG_PARAM_ENABLE)
|
||||
#define SEEKFREE_ASSISTANT_DEBUG_PARAM_MAX ( 8 ) // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Բ<EFBFBD><D4B2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͨ<EFBFBD><CDA8><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
#define SEEKFREE_ASSISTANT_DEBUG_PARAM_BUFFER_SIZE ( 64 ) // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Բ<EFBFBD><D4B2><EFBFBD><EFBFBD>Ļ<EFBFBD><C4BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>С
|
||||
#endif
|
||||
|
||||
typedef struct
|
||||
{
|
||||
uint8 head; // ֡ͷ
|
||||
uint8 channel_num; // <20><><EFBFBD><EFBFBD>λΪ<CEBB><CEAA><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>λΪͨ<CEAA><CDA8><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
uint8 check_sum; // <EFBFBD><EFBFBD>У<EFBFBD><EFBFBD>
|
||||
uint8 length; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
float data[SEEKFREE_ASSISTANT_SET_OSCILLOSCOPE_COUNT]; // ͨ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
struct
|
||||
{
|
||||
uint8 head ; // ֡ͷ
|
||||
uint8 check_sum ; // <20><>У<EFBFBD><EFBFBD>
|
||||
uint8 cmd ; // <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
uint8 channel_index ; // ͨ<><CDA8><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
uint8 data_lenght_buffer[2] ; // CCD <20><><EFBFBD>ݳ<EFBFBD><DDB3><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
uint8 channel_color_buffer[2] ; // ͨ<><CDA8><EFBFBD><EFBFBD>ɫ <20><><EFBFBD><EFBFBD>
|
||||
uint8 channel_data_max[2] ; // ͨ<><CDA8><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ <20><><EFBFBD><EFBFBD>
|
||||
uint8 data_type ; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>ȷ<EFBFBD>ϴ<EFBFBD>С<EFBFBD><D0A1>
|
||||
uint8 reserve ; // <20><><EFBFBD><EFBFBD>
|
||||
}config;
|
||||
uint16 buffer_byte_size ; // <20><><EFBFBD>ݻ<EFBFBD><DDBB><EFBFBD><EFBFBD><EFBFBD> ʵ<><CAB5><EFBFBD>ֽڴ<D6BD>С
|
||||
void *data_buffer ; // <20><><EFBFBD>ݻ<EFBFBD><DDBB><EFBFBD><EFBFBD><EFBFBD>
|
||||
}seekfree_assistant_ccd_struct;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
struct
|
||||
{
|
||||
uint8 head ; // ֡ͷ
|
||||
uint8 check_sum ; // <20><>У<EFBFBD><D0A3>
|
||||
uint8 cmd ; // <20><><EFBFBD><EFBFBD><EEB9A6><EFBFBD><EFBFBD>
|
||||
uint8 camera_type ; // <20><><EFBFBD><EFBFBD>ͷ<EFBFBD><CDB7><EFBFBD><EFBFBD>
|
||||
uint8 image_width_buffer[2] ; // ͼ<><CDBC><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
uint8 image_height_buffer[2] ; // ͼ<><CDBC><EFBFBD>߶<EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
uint8 data_type ; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>ȷ<EFBFBD>ϴ<EFBFBD>С<EFBFBD><D0A1>
|
||||
uint8 reserve[3] ; // <20><><EFBFBD><EFBFBD>
|
||||
}config;
|
||||
uint32 buffer_byte_size ; // <20><><EFBFBD>ݻ<EFBFBD><DDBB><EFBFBD><EFBFBD><EFBFBD> ʵ<><CAB5><EFBFBD>ֽڴ<D6BD>С
|
||||
void *data_buffer ; // <20><><EFBFBD>ݻ<EFBFBD><DDBB><EFBFBD><EFBFBD><EFBFBD>
|
||||
}seekfree_assistant_camera_struct;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
struct
|
||||
{
|
||||
uint8 head ; // ֡ͷ
|
||||
uint8 check_sum ; // <20><>У<EFBFBD><D0A3>
|
||||
uint8 cmd ; // <20><><EFBFBD><EFBFBD><EEB9A6><EFBFBD><EFBFBD>
|
||||
uint8 data_type ; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>ȷ<EFBFBD>ϴ<EFBFBD>С<EFBFBD><D0A1>
|
||||
uint8 boundary_lenght_buffer[2] ; // <20><><EFBFBD>߳<EFBFBD><DFB3><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
uint8 color_buffer[2] ; // ͨ<><CDA8><EFBFBD><EFBFBD>ɫ <20><><EFBFBD><EFBFBD>
|
||||
}config;
|
||||
uint32 buffer_byte_size ; // <20><><EFBFBD>ݻ<EFBFBD><DDBB><EFBFBD><EFBFBD><EFBFBD> ʵ<><CAB5><EFBFBD>ֽڴ<D6BD>С
|
||||
void *data_buffer ; // <20><><EFBFBD>ݻ<EFBFBD><DDBB><EFBFBD><EFBFBD><EFBFBD>
|
||||
}seekfree_assistant_camera_boundary_struct;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
uint8 head ; // ֡ͷ
|
||||
uint8 check_sum ; // <20><>У<EFBFBD><D0A3>
|
||||
uint8 cmd ; // <20><><EFBFBD><EFBFBD><EEB9A6><EFBFBD><EFBFBD>
|
||||
uint8 reserve ; // <20><><EFBFBD><EFBFBD>
|
||||
uint8 x_axis_buffer[2] ; // X <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
uint8 y_axis_buffer[2] ; // Y <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
uint8 width_buffer[2] ; // <20><><EFBFBD>ο<EFBFBD><CEBF><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
uint8 height_buffer[2] ; // <20><><EFBFBD>θ߶<CEB8> <20><><EFBFBD><EFBFBD>
|
||||
uint8 color_buffer[2] ; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɫ <20><><EFBFBD><EFBFBD>
|
||||
}seekfree_assistant_camera_rectangular_struct;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
struct
|
||||
{
|
||||
uint8 head ; // ֡ͷ
|
||||
uint8 check_sum ; // <20><>У<EFBFBD><D0A3>
|
||||
uint8 cmd ; // <20><><EFBFBD><EFBFBD><EEB9A6><EFBFBD><EFBFBD>
|
||||
uint8 channel_max ; // ͨ<><CDA8><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
uint8 data_type ; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>ȷ<EFBFBD>ϴ<EFBFBD>С<EFBFBD><D0A1>
|
||||
uint8 reserve[3] ; // <20><><EFBFBD><EFBFBD>
|
||||
}config;
|
||||
uint32 buffer_byte_size ; // <20><><EFBFBD>ݻ<EFBFBD><DDBB><EFBFBD><EFBFBD><EFBFBD> ʵ<><CAB5><EFBFBD>ֽڴ<D6BD>С
|
||||
void *data_buffer ; // <20><><EFBFBD>ݻ<EFBFBD><DDBB><EFBFBD><EFBFBD><EFBFBD>
|
||||
}seekfree_assistant_oscilloscope_struct;
|
||||
|
||||
typedef union
|
||||
{
|
||||
uint8 data_uint8[4] ;
|
||||
float data_float ;
|
||||
}seekfree_assistant_param_struct;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
uint8 head; // ֡ͷ
|
||||
uint8 function; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
uint8 camera_type; // <20><><EFBFBD><EFBFBD>λ<EFBFBD><CEBB>ʾ<EFBFBD>߽<EFBFBD><DFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>λ<EFBFBD><CEBB>ʾ<EFBFBD>Ƿ<EFBFBD><C7B7><EFBFBD>ͼ<EFBFBD><CDBC><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>0x13<31><33><EFBFBD><EFBFBD><EFBFBD><EFBFBD>3<EFBFBD><33>ʾһ<CABE><D2BB>ͼ<EFBFBD><CDBC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>߽磨ͨ<E7A3A8><CDA8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>߽硢<DFBD><E7A1A2><EFBFBD>ߡ<EFBFBD><DFA1>ұ߽磩<DFBD><E7A3A9>1<EFBFBD><31>ʾû<CABE><C3BB>ͼ<EFBFBD><CDBC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
uint8 length; // <20><><EFBFBD><EFBFBD><EFBFBD>ȣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Э<EFBFBD>鲿<EFBFBD>֣<EFBFBD>
|
||||
uint16 image_width; // ͼ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
uint16 image_height; // ͼ<><CDBC><EFBFBD>߶<EFBFBD>
|
||||
}seekfree_assistant_camera_struct;
|
||||
|
||||
|
||||
typedef struct
|
||||
{
|
||||
uint8 head; // ֡ͷ
|
||||
uint8 function; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
uint8 dot_type; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> BIT5<54><35>1<EFBFBD><31><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>16λ<36><CEBB> 0<><30><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>8λ<38><CEBB> BIT7-BIT6<54><36>0<EFBFBD><30>ֻ<EFBFBD><D6BB>X<EFBFBD><58><EFBFBD><EFBFBD> 1<><31>ֻ<EFBFBD><D6BB>Y<EFBFBD><59><EFBFBD><EFBFBD> 2<><32>X<EFBFBD><58>Y<EFBFBD><59><EFBFBD>궼<EFBFBD><EAB6BC> BIT3-BIT0<54><30><EFBFBD>߽<EFBFBD><DFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
uint8 length; // <20><><EFBFBD><EFBFBD><EFBFBD>ȣ<EFBFBD><C8A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Э<EFBFBD>鲿<EFBFBD>֣<EFBFBD>
|
||||
uint16 dot_num; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
uint8 valid_flag; // ͨ<><CDA8><EFBFBD><EFBFBD>ʶ
|
||||
uint8 reserve; // <20><><EFBFBD><EFBFBD>
|
||||
}seekfree_assistant_camera_dot_struct;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
void *image_addr; // <20><><EFBFBD><EFBFBD>ͷ<EFBFBD><CDB7>ַ
|
||||
uint16 width; // ͼ<><CDBC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
uint16 height; // ͼ<><CDBC><EFBFBD>߶<EFBFBD>
|
||||
seekfree_assistant_image_type_enum camera_type; // <20><><EFBFBD><EFBFBD>ͷ<EFBFBD><CDB7><EFBFBD><EFBFBD>
|
||||
void *boundary_x[SEEKFREE_ASSISTANT_CAMERA_MAX_BOUNDARY]; // <20>߽<EFBFBD><DFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ַ
|
||||
void *boundary_y[SEEKFREE_ASSISTANT_CAMERA_MAX_BOUNDARY]; // <20>߽<EFBFBD><DFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ַ
|
||||
}seekfree_assistant_camera_buffer_struct;
|
||||
uint8 head ; // ֡ͷ
|
||||
uint8 check_sum ; // <20><>У<EFBFBD><EFBFBD>
|
||||
uint8 cmd ; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
uint8 channel_index ; // ͨ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
seekfree_assistant_param_struct dat ; // һ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
|
||||
}seekfree_assistant_debug_param_cmd_struct;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
uint8 head; // ֡ͷ
|
||||
uint8 function; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
uint8 channel; // ͨ<><CDA8>
|
||||
uint8 check_sum; // <20><>У<EFBFBD><D0A3>
|
||||
float data; // <20><><EFBFBD><EFBFBD>
|
||||
}seekfree_assistant_parameter_struct;
|
||||
uint8 x;
|
||||
uint8 y;
|
||||
}seekfree_assistant_camera_boundary_uint8_struct;
|
||||
|
||||
|
||||
typedef struct
|
||||
{
|
||||
uint8 x;
|
||||
uint8 y;
|
||||
}seekfree_assistant_camera_boundary_uint16_struct;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
float data[SEEKFREE_ASSISTANT_DEBUG_PARAM_MAX] ;
|
||||
uint8 update_flag[SEEKFREE_ASSISTANT_DEBUG_PARAM_MAX] ;
|
||||
}seekfree_assistant_debug_param_struct;
|
||||
|
||||
typedef uint32 (*seekfree_assistant_transfer_callback_function) (const uint8 *buff, uint32 length);
|
||||
typedef uint32 (*seekfree_assistant_receive_callback_function) (uint8 *buff, uint32 length);
|
||||
|
||||
extern seekfree_assistant_oscilloscope_struct seekfree_assistant_oscilloscope_data; // <20><><EFBFBD><EFBFBD>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
extern float seekfree_assistant_parameter[SEEKFREE_ASSISTANT_SET_PARAMETR_COUNT]; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>յ<EFBFBD><D5B5>IJ<EFBFBD><EFBFBD><EFBFBD>
|
||||
extern vuint8 seekfree_assistant_parameter_update_flag[SEEKFREE_ASSISTANT_SET_PARAMETR_COUNT]; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>±<EFBFBD>־λ
|
||||
|
||||
|
||||
void seekfree_assistant_oscilloscope_send (seekfree_assistant_oscilloscope_struct *seekfree_assistant_oscilloscope);
|
||||
void seekfree_assistant_camera_information_config (seekfree_assistant_image_type_enum camera_type, void *image_addr, uint16 width, uint16 height);
|
||||
void seekfree_assistant_camera_boundary_config (seekfree_assistant_boundary_type_enum boundary_type, uint16 dot_num, void *dot_x1, void *dot_x2, void *dot_x3, void *dot_y1, void *dot_y2, void *dot_y3);
|
||||
void seekfree_assistant_camera_send (void);
|
||||
void seekfree_assistant_data_analysis (void);
|
||||
//-------------------------------------------------------------------------------------------------------------------
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> CCD ͼ<><CDBC> <20><EFBFBD><EFBFBD><EFBFBD>
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> *ccd_obj CCD <20><><EFBFBD>ݽṹ<DDBD><E1B9B9>
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> data_type <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> seekfree_assistant_data_type_enum
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> channel_index CCD ͨ<><CDA8>
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> channel_color ͨ<><CDA8>Ҫʹ<D2AA>õ<EFBFBD><C3B5><EFBFBD>ɫ
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> data_lenght CCD <20><><EFBFBD>ݳ<EFBFBD><DDB3><EFBFBD>
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> *data_buffer CCD <20><><EFBFBD>ݻ<EFBFBD><DDBB><EFBFBD><EFBFBD><EFBFBD>
|
||||
// <20><><EFBFBD>ز<EFBFBD><D8B2><EFBFBD> void
|
||||
// ʹ<><CAB9>ʾ<EFBFBD><CABE> seekfree_assistant_ccd_config(ccd_obj, data_type, channel_index, channel_color, data_lenght, data_buffer);
|
||||
//-------------------------------------------------------------------------------------------------------------------
|
||||
void seekfree_assistant_ccd_config (
|
||||
seekfree_assistant_ccd_struct *ccd_obj,
|
||||
seekfree_assistant_data_type_enum data_type,
|
||||
uint8 channel_index,
|
||||
uint16 channel_color,
|
||||
uint16 data_lenght,
|
||||
void *data_buffer);
|
||||
|
||||
//-------------------------------------------------------------------------------------------------------------------
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> CCD ͼ<><CDBC> <20><><EFBFBD>ͺ<EFBFBD><CDBA><EFBFBD>
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> *ccd_obj CCD <20><><EFBFBD>ݽṹ<DDBD><E1B9B9>
|
||||
// <20><><EFBFBD>ز<EFBFBD><D8B2><EFBFBD> void
|
||||
// ʹ<><CAB9>ʾ<EFBFBD><CABE> seekfree_assistant_ccd_send(ccd_obj);
|
||||
//-------------------------------------------------------------------------------------------------------------------
|
||||
void seekfree_assistant_ccd_send (seekfree_assistant_ccd_struct *ccd_obj);
|
||||
|
||||
//-------------------------------------------------------------------------------------------------------------------
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> CAMERA ͼ<><CDBC> <20><><EFBFBD><EFBFBD>
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> *camera_obj CAMERA <20><><EFBFBD>ݽṹ<DDBD><E1B9B9>
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> camera_type CAMERA <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> seekfree_assistant_camera_type_enum
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> image_width CAMERA ͼ<><CDBC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> image_height CAMERA ͼ<><CDBC><EFBFBD>߶<EFBFBD>
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> *data_buffer CAMERA ͼ<><EFBFBD><F1BBBAB3><EFBFBD>
|
||||
// <20><><EFBFBD>ز<EFBFBD><D8B2><EFBFBD> void
|
||||
// ʹ<><CAB9>ʾ<EFBFBD><CABE> seekfree_assistant_camera_config(camera_obj, camera_type, image_width, image_height, data_buffer);
|
||||
//-------------------------------------------------------------------------------------------------------------------
|
||||
void seekfree_assistant_camera_config (
|
||||
seekfree_assistant_camera_struct *camera_obj,
|
||||
seekfree_assistant_camera_type_enum camera_type,
|
||||
uint16 image_width,
|
||||
uint16 image_height,
|
||||
void *data_buffer);
|
||||
|
||||
//-------------------------------------------------------------------------------------------------------------------
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> CAMERA ͼ<><CDBC> <20><><EFBFBD>ͺ<EFBFBD><CDBA><EFBFBD>
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> *camera_obj CAMERA <20><><EFBFBD>ݽṹ<DDBD><E1B9B9>
|
||||
// <20><><EFBFBD>ز<EFBFBD><D8B2><EFBFBD> void
|
||||
// ʹ<><CAB9>ʾ<EFBFBD><CABE> seekfree_assistant_camera_send(camera_obj);
|
||||
//-------------------------------------------------------------------------------------------------------------------
|
||||
void seekfree_assistant_camera_send (seekfree_assistant_camera_struct *camera_obj);
|
||||
|
||||
//-------------------------------------------------------------------------------------------------------------------
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> CAMERA <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> *camera_boundary_obj CAMERA <20><><EFBFBD><EFBFBD> <20><><EFBFBD>ݽṹ<DDBD><E1B9B9>
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> data_type <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> seekfree_assistant_data_type_enum
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> color Ҫʹ<D2AA>õ<EFBFBD><C3B5><EFBFBD>ɫ
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> boundary_lenght CAMERA <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> *data_buffer CAMERA <20><><EFBFBD><EFBFBD> ͼ<><EFBFBD><F1BBBAB3><EFBFBD>
|
||||
// <20><><EFBFBD>ز<EFBFBD><D8B2><EFBFBD> void
|
||||
// ʹ<><CAB9>ʾ<EFBFBD><CABE> seekfree_assistant_camera_boundary_config(camera_boundary_obj, data_type, color, boundary_lenght, data_buffer);
|
||||
//-------------------------------------------------------------------------------------------------------------------
|
||||
void seekfree_assistant_camera_boundary_config (
|
||||
seekfree_assistant_camera_boundary_struct *camera_boundary_obj,
|
||||
seekfree_assistant_data_type_enum data_type,
|
||||
uint16 color,
|
||||
uint16 boundary_lenght,
|
||||
void *data_buffer);
|
||||
|
||||
//-------------------------------------------------------------------------------------------------------------------
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> CAMERA <20><><EFBFBD><EFBFBD> <20><><EFBFBD>ͺ<EFBFBD><CDBA><EFBFBD>
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> *camera_boundary_obj CAMERA <20><><EFBFBD><EFBFBD> <20><><EFBFBD>ݽṹ<DDBD><E1B9B9>
|
||||
// <20><><EFBFBD>ز<EFBFBD><D8B2><EFBFBD> void
|
||||
// ʹ<><CAB9>ʾ<EFBFBD><CABE> seekfree_assistant_camera_boundary_send(camera_boundary_obj);
|
||||
//-------------------------------------------------------------------------------------------------------------------
|
||||
void seekfree_assistant_camera_boundary_send (seekfree_assistant_camera_boundary_struct *camera_boundary_obj);
|
||||
|
||||
//-------------------------------------------------------------------------------------------------------------------
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> CAMERA <20><><EFBFBD>ο<EFBFBD><CEBF><EFBFBD> <20><><EFBFBD>ͺ<EFBFBD><CDBA><EFBFBD>
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> x X <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> y Y <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> width <20><><EFBFBD>ο<EFBFBD><CEBF><EFBFBD>
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> height <20><><EFBFBD>θ߶<CEB8>
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> color <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɫ
|
||||
// <20><><EFBFBD>ز<EFBFBD><D8B2><EFBFBD> void
|
||||
// ʹ<><CAB9>ʾ<EFBFBD><CABE> seekfree_assistant_camera_rectangular_send(x, y, width, height, color);
|
||||
//-------------------------------------------------------------------------------------------------------------------
|
||||
void seekfree_assistant_camera_rectangular_send (uint16 x, uint16 y, uint16 width, uint16 height, uint16 color);
|
||||
|
||||
//-------------------------------------------------------------------------------------------------------------------
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> *oscilloscope_obj ʾ<><CABE><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݽṹ<DDBD><E1B9B9>
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> channel_max <20><><EFBFBD><EFBFBD>ͨ<EFBFBD><CDA8><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>Χ<EFBFBD><CEA7> [1, 16] <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Χ<EFBFBD><CEA7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><DEB5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Χ
|
||||
// <20><><EFBFBD>ز<EFBFBD><D8B2><EFBFBD> void
|
||||
// ʹ<><CAB9>ʾ<EFBFBD><CABE> seekfree_assistant_oscilloscope_config(oscilloscope_obj, 16);
|
||||
//-------------------------------------------------------------------------------------------------------------------
|
||||
void seekfree_assistant_oscilloscope_config (
|
||||
seekfree_assistant_oscilloscope_struct *oscilloscope_obj,
|
||||
uint8 channel_max,
|
||||
void *data_buffer);
|
||||
|
||||
//-------------------------------------------------------------------------------------------------------------------
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD> <20><><EFBFBD>ͺ<EFBFBD><CDBA><EFBFBD>
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> *seekfree_assistant_oscilloscope ʾ<><CABE><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݽṹ<DDBD><E1B9B9>
|
||||
// <20><><EFBFBD>ز<EFBFBD><D8B2><EFBFBD> void
|
||||
// ʹ<><CAB9>ʾ<EFBFBD><CABE> seekfree_assistant_oscilloscope_send(&seekfree_assistant_oscilloscope_data);
|
||||
//-------------------------------------------------------------------------------------------------------------------
|
||||
void seekfree_assistant_oscilloscope_send (seekfree_assistant_oscilloscope_struct *oscilloscope_obj);
|
||||
|
||||
#if (SEEKFREE_ASSISTANT_DEBUG_PARAM_ENABLE)
|
||||
//-------------------------------------------------------------------------------------------------------------------
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD> <20><><EFBFBD>ͺ<EFBFBD><CDBA><EFBFBD>
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> *debug_param_obj ʾ<><CABE><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݽṹ<DDBD><E1B9B9>
|
||||
// <20><><EFBFBD>ز<EFBFBD><D8B2><EFBFBD> void
|
||||
// ʹ<><CAB9>ʾ<EFBFBD><CABE> seekfree_assistant_oscilloscope_send(&seekfree_assistant_oscilloscope_data);
|
||||
//-------------------------------------------------------------------------------------------------------------------
|
||||
void seekfree_assistant_debug_param_analysis (seekfree_assistant_debug_param_struct *debug_param_obj);
|
||||
#endif
|
||||
|
||||
#endif
|
||||
|
||||
@@ -1,20 +1,20 @@
|
||||
/*********************************************************************************************************************
|
||||
* 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>
|
||||
* RT1064DVL6A Opensourec Library <20><><EFBFBD><EFBFBD>RT1064DVL6A <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><C4BC><EFBFBD> RT1064DVL6A <20><>Դ<EFBFBD><D4B4><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD>
|
||||
*
|
||||
* RT1064DVL6A <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>
|
||||
@@ -24,23 +24,20 @@
|
||||
* <20>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD><EFBFBD> seekfree_assistant_interface
|
||||
* <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.10.2
|
||||
* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ADS v1.9.4
|
||||
* <20><><EFBFBD><EFBFBD>ƽ̨ TC264D
|
||||
* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> https://seekfree.taobao.com/
|
||||
*
|
||||
*
|
||||
* <20>ļ<DEB8>¼
|
||||
* <20><><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>ע
|
||||
* 2024-01-01 pudding first version
|
||||
* <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><>ע
|
||||
* 2024-1-11 SeekFree first version
|
||||
********************************************************************************************************************/
|
||||
|
||||
#include "zf_common_typedef.h"
|
||||
#include "zf_common_fifo.h"
|
||||
#include "zf_common_debug.h"
|
||||
#include "zf_driver_uart.h"
|
||||
|
||||
#include "zf_device_wireless_uart.h"
|
||||
#include "zf_device_ble6a20.h"
|
||||
#include "zf_device_bluetooth_ch9141.h"
|
||||
#include "zf_device_wifi_uart.h"
|
||||
#include "zf_device_wifi_spi.h"
|
||||
#include "seekfree_assistant.h"
|
||||
|
||||
@@ -50,7 +47,6 @@
|
||||
extern seekfree_assistant_transfer_callback_function seekfree_assistant_transfer_callback; // <20><><EFBFBD>ݷ<EFBFBD><DDB7>ͺ<EFBFBD><CDBA><EFBFBD>ָ<EFBFBD><D6B8>
|
||||
extern seekfree_assistant_receive_callback_function seekfree_assistant_receive_callback; // <20><><EFBFBD>ݽ<EFBFBD><DDBD>պ<EFBFBD><D5BA><EFBFBD>ָ<EFBFBD><D6B8>
|
||||
|
||||
|
||||
//-------------------------------------------------------------------------------------------------------------------
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ַ<EFBFBD><D6B7>ͺ<EFBFBD><CDBA><EFBFBD>
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> *buff <20><>Ҫ<EFBFBD><D2AA><EFBFBD>͵<EFBFBD><CDB5><EFBFBD><EFBFBD>ݵ<EFBFBD>ַ
|
||||
@@ -58,7 +54,7 @@ extern seekfree_assistant_receive_callback_function seekfree_assistant_receiv
|
||||
// <20><><EFBFBD>ز<EFBFBD><D8B2><EFBFBD> uint32 ʣ<><CAA3>δ<EFBFBD><CEB4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݳ<EFBFBD><DDB3><EFBFBD>
|
||||
// ʹ<><CAB9>ʾ<EFBFBD><CABE>
|
||||
//-------------------------------------------------------------------------------------------------------------------
|
||||
ZF_WEAK uint32 seekfree_assistant_transfer (const uint8 *buff, uint32 length)
|
||||
uint32 seekfree_assistant_transfer (const uint8 *buff, uint32 length)
|
||||
{
|
||||
|
||||
// <20><>ѡ<EFBFBD><D1A1><EFBFBD>Զ<EFBFBD><D4B6><EFBFBD>ͨѶ<CDA8><D1B6>ʽʱ <20><>Ҫ<EFBFBD><D2AA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݷ<EFBFBD><DDB7><EFBFBD><CDB9><EFBFBD>
|
||||
@@ -72,7 +68,7 @@ ZF_WEAK uint32 seekfree_assistant_transfer (const uint8 *buff, uint32 length)
|
||||
// <20><><EFBFBD>ز<EFBFBD><D8B2><EFBFBD> uint32 <20><><EFBFBD>յ<EFBFBD><D5B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݳ<EFBFBD><DDB3><EFBFBD>
|
||||
// ʹ<><CAB9>ʾ<EFBFBD><CABE>
|
||||
//-------------------------------------------------------------------------------------------------------------------
|
||||
ZF_WEAK uint32 seekfree_assistant_receive (uint8 *buff, uint32 length)
|
||||
uint32 seekfree_assistant_receive (uint8 *buff, uint32 length)
|
||||
{
|
||||
// <20><>ѡ<EFBFBD><D1A1><EFBFBD>Զ<EFBFBD><D4B6><EFBFBD>ͨѶ<CDA8><D1B6>ʽʱ <20><>Ҫ<EFBFBD><D2AA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݽ<EFBFBD><DDBD>չ<EFBFBD><D5B9><EFBFBD>
|
||||
return 0;
|
||||
@@ -85,54 +81,45 @@ ZF_WEAK uint32 seekfree_assistant_receive (uint8 *buff, uint32 length)
|
||||
// ʹ<><CAB9>ʾ<EFBFBD><CABE> seekfree_assistant_interface_init(SEEKFREE_ASSISTANT_WIFI_SPI); ʹ<>ø<EFBFBD><C3B8><EFBFBD>WIFI SPIģ<49><C4A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>շ<EFBFBD>
|
||||
// <20><>ע <20><>Ҫ<EFBFBD><D2AA><EFBFBD>е<EFBFBD><D0B5><EFBFBD><EFBFBD>豸<EFBFBD>ij<EFBFBD>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʹ<EFBFBD><CAB9><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ת<EFBFBD><D7AA><EFBFBD>ڽ<EFBFBD><DABD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݵ<EFBFBD><DDB5>շ<EFBFBD><D5B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ҫ<EFBFBD><D2AA><EFBFBD>е<EFBFBD><D0B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ת<EFBFBD><D7AA><EFBFBD>ڵij<DAB5>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD>Ȼ<EFBFBD><C8BB><EFBFBD>ٵ<EFBFBD><D9B5><EFBFBD>seekfree_assistant_interface_init<69><74><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵĽӿڳ<D3BF>ʼ<EFBFBD><CABC>
|
||||
//-------------------------------------------------------------------------------------------------------------------
|
||||
ZF_WEAK void seekfree_assistant_interface_init (seekfree_assistant_transfer_device_enum transfer_device)
|
||||
void seekfree_assistant_interface_init (seekfree_assistant_transfer_device_enum transfer_device)
|
||||
{
|
||||
switch(transfer_device)
|
||||
{
|
||||
case SEEKFREE_ASSISTANT_DEBUG_UART:
|
||||
{
|
||||
#if DEBUG_UART_USE_INTERRUPT == 1
|
||||
seekfree_assistant_transfer_callback = debug_send_buffer;
|
||||
seekfree_assistant_receive_callback = debug_read_ring_buffer;
|
||||
#endif
|
||||
}break;
|
||||
|
||||
|
||||
case SEEKFREE_ASSISTANT_WIRELESS_UART:
|
||||
{
|
||||
seekfree_assistant_transfer_callback = wireless_uart_send_buffer;
|
||||
seekfree_assistant_receive_callback = wireless_uart_read_buffer;
|
||||
}break;
|
||||
|
||||
case SEEKFREE_ASSISTANT_BLE6A20:
|
||||
{
|
||||
seekfree_assistant_transfer_callback = ble6a20_send_buffer;
|
||||
seekfree_assistant_receive_callback = ble6a20_read_buffer;
|
||||
}break;
|
||||
|
||||
case SEEKFREE_ASSISTANT_CH9141:
|
||||
{
|
||||
seekfree_assistant_transfer_callback = bluetooth_ch9141_send_buffer;
|
||||
seekfree_assistant_receive_callback = bluetooth_ch9141_read_buffer;
|
||||
}break;
|
||||
|
||||
case SEEKFREE_ASSISTANT_WIFI_UART:
|
||||
{
|
||||
seekfree_assistant_transfer_callback = wifi_uart_send_buffer;
|
||||
seekfree_assistant_receive_callback = wifi_uart_read_buffer;
|
||||
}break;
|
||||
|
||||
// case SEEKFREE_ASSISTANT_CH9141:
|
||||
// {
|
||||
// seekfree_assistant_transfer_callback = bluetooth_ch9141_send_buffer;
|
||||
// seekfree_assistant_receive_callback = bluetooth_ch9141_read_buffer;
|
||||
// }break;
|
||||
|
||||
// case SEEKFREE_ASSISTANT_WIFI_UART:
|
||||
// {
|
||||
// seekfree_assistant_transfer_callback = wifi_uart_send_buffer;
|
||||
// seekfree_assistant_receive_callback = wifi_uart_read_buffer;
|
||||
// }break;
|
||||
|
||||
case SEEKFREE_ASSISTANT_WIFI_SPI:
|
||||
{
|
||||
seekfree_assistant_transfer_callback = wifi_spi_send_buffer;
|
||||
seekfree_assistant_receive_callback = wifi_spi_read_buffer;
|
||||
}break;
|
||||
|
||||
case SEEKFREE_ASSISTANT_CUSTOM:
|
||||
{
|
||||
|
||||
default:
|
||||
{
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD>Լ<EFBFBD><D4BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>ʵ<EFBFBD><CAB5>seekfree_assistant_transfer<65><72>seekfree_assistant_receive<76><65><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݵ<EFBFBD><DDB5>շ<EFBFBD>
|
||||
|
||||
seekfree_assistant_transfer_callback = seekfree_assistant_transfer;
|
||||
seekfree_assistant_receive_callback = seekfree_assistant_receive;
|
||||
}break;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -1,20 +1,20 @@
|
||||
/*********************************************************************************************************************
|
||||
* 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>
|
||||
* RT1064DVL6A Opensourec Library <20><><EFBFBD><EFBFBD>RT1064DVL6A <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><C4BC><EFBFBD> RT1064DVL6A <20><>Դ<EFBFBD><D4B4><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD>
|
||||
*
|
||||
* RT1064DVL6A <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>
|
||||
@@ -24,13 +24,13 @@
|
||||
* <20>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD><EFBFBD> seekfree_assistant_interface
|
||||
* <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.10.2
|
||||
* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ADS v1.9.4
|
||||
* <20><><EFBFBD><EFBFBD>ƽ̨ TC264D
|
||||
* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> https://seekfree.taobao.com/
|
||||
*
|
||||
*
|
||||
* <20>ļ<DEB8>¼
|
||||
* <20><><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>ע
|
||||
* 2024-01-01 pudding first version
|
||||
* <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><>ע
|
||||
* 2024-1-11 SeekFree first version
|
||||
********************************************************************************************************************/
|
||||
|
||||
#ifndef _seekfree_assistant_interface_h_
|
||||
@@ -43,7 +43,6 @@ typedef enum
|
||||
{
|
||||
SEEKFREE_ASSISTANT_DEBUG_UART, // <20><><EFBFBD>Դ<EFBFBD><D4B4><EFBFBD> ʹ<>õĴ<C3B5><C4B4><EFBFBD><EFBFBD><EFBFBD>DEBUG_UART_INDEX<45>궨<EFBFBD><EAB6A8>ָ<EFBFBD><D6B8>
|
||||
SEEKFREE_ASSISTANT_WIRELESS_UART, // <20><><EFBFBD><EFBFBD>ת<EFBFBD><D7AA><EFBFBD><EFBFBD>
|
||||
SEEKFREE_ASSISTANT_BLE6A20, // <20><><EFBFBD><EFBFBD>ת<EFBFBD><D7AA><EFBFBD><EFBFBD>
|
||||
SEEKFREE_ASSISTANT_CH9141, // CH9141<34><31><EFBFBD><EFBFBD>
|
||||
SEEKFREE_ASSISTANT_WIFI_UART, // WIFIת<49><D7AA><EFBFBD><EFBFBD>
|
||||
SEEKFREE_ASSISTANT_WIFI_SPI, // <20><><EFBFBD><EFBFBD>WIFI SPI
|
||||
|
||||
@@ -62,7 +62,7 @@
|
||||
//====================================================<3D><><EFBFBD><EFBFBD> SPI <20><><EFBFBD><EFBFBD>====================================================
|
||||
#else
|
||||
//====================================================Ӳ<><D3B2> SPI <20><><EFBFBD><EFBFBD>====================================================
|
||||
#define ABSOLUTE_ENCODER_SPI_SPEED (10*1000*1000) // Ӳ<><D3B2> SPI <20><><EFBFBD><EFBFBD>
|
||||
#define ABSOLUTE_ENCODER_SPI_SPEED (8*1000*1000) // Ӳ<><D3B2> SPI <20><><EFBFBD><EFBFBD>
|
||||
#define ABSOLUTE_ENCODER_SPI (SPI_0) // Ӳ<><D3B2> SPI <20><>
|
||||
#define ABSOLUTE_ENCODER_SCLK_PIN (SPI0_SCLK_P20_11) // Ӳ<><D3B2> SPI SCK <20><><EFBFBD><EFBFBD>
|
||||
#define ABSOLUTE_ENCODER_MOSI_PIN (SPI0_MOSI_P20_14) // Ӳ<><D3B2> SPI MOSI <20><><EFBFBD><EFBFBD>
|
||||
@@ -70,7 +70,7 @@
|
||||
//====================================================Ӳ<><D3B2> SPI <20><><EFBFBD><EFBFBD>====================================================
|
||||
#endif
|
||||
|
||||
#define ABSOLUTE_ENCODER_CS_PIN (P20_13) // CS<43><53><EFBFBD>Ŷ<EFBFBD><C5B6><EFBFBD>
|
||||
#define ABSOLUTE_ENCODER_CS_PIN (P00_8) // CS<43><53><EFBFBD>Ŷ<EFBFBD><C5B6><EFBFBD>
|
||||
#define ABSOLUTE_ENCODER_CSN(x) ((x) ? (gpio_high(ABSOLUTE_ENCODER_CS_PIN)): (gpio_low(ABSOLUTE_ENCODER_CS_PIN)))
|
||||
|
||||
#define ABSOLUTE_ENCODER_TIMEOUT_COUNT (100) // <20>Լ쳬ʱʱ<CAB1><CAB1>
|
||||
|
||||
@@ -76,7 +76,7 @@
|
||||
// 1<><31><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Զ<EFBFBD><D4B6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>Զ<EFBFBD><D4B6><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʵ<EFBFBD><CAB5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> BLE6A20_BAUD ֮<><D6AE><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ҫ<EFBFBD><D2AA>ģ<EFBFBD><C4A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ģ<><C4A3><EFBFBD><EFBFBD><EFBFBD>Զ<EFBFBD><D4B6><EFBFBD><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA>Ӧ<EFBFBD>IJ<EFBFBD><C4B2><EFBFBD><EFBFBD><EFBFBD>
|
||||
// <20>Զ<EFBFBD><D4B6><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʽ<EFBFBD>֧<EFBFBD><D6A7> 9600 57600 115200 230400 460800 921600 1500000 2000000
|
||||
|
||||
#define BLE6A20_AUTO_BAUD_RATE ( 0 )
|
||||
#define BLE6A20_AUTO_BAUD_RATE ( 1 )
|
||||
|
||||
#if (1 == BLE6A20_AUTO_BAUD_RATE)
|
||||
typedef enum
|
||||
|
||||
@@ -0,0 +1,563 @@
|
||||
/*********************************************************************************************************************
|
||||
* RT1064DVL6A Opensourec Library <20><><EFBFBD><EFBFBD>RT1064DVL6A <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> RT1064DVL6A <20><>Դ<EFBFBD><D4B4><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD>
|
||||
*
|
||||
* RT1064DVL6A <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_imu660rc
|
||||
* <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.10.2
|
||||
* <20><><EFBFBD><EFBFBD>ƽ̨ TC264
|
||||
* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> https://seekfree.taobao.com/
|
||||
*
|
||||
* <20>ļ<DEB8>¼
|
||||
* <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><>ע
|
||||
* 2025-12-12 SeekFree first version
|
||||
********************************************************************************************************************/
|
||||
/*********************************************************************************************************************
|
||||
* <20><><EFBFBD>߶<EFBFBD><DFB6>壺
|
||||
* ------------------------------------
|
||||
* ģ<><C4A3><EFBFBD>ܽ<EFBFBD> <20><>Ƭ<EFBFBD><C6AC><EFBFBD>ܽ<EFBFBD>
|
||||
* // Ӳ<><D3B2> SPI <20><><EFBFBD><EFBFBD>
|
||||
* SCL/SPC <20>鿴 zf_device_imu660rc.h <20><> IMU660RC_SPC_PIN <20>궨<EFBFBD><EAB6A8>
|
||||
* SDA/DSI <20>鿴 zf_device_imu660rc.h <20><> IMU660RC_SDI_PIN <20>궨<EFBFBD><EAB6A8>
|
||||
* SA0/SDO <20>鿴 zf_device_imu660rc.h <20><> IMU660RC_SDO_PIN <20>궨<EFBFBD><EAB6A8>
|
||||
* CS <20>鿴 zf_device_imu660rc.h <20><> IMU660RC_CS_PIN <20>궨<EFBFBD><EAB6A8>
|
||||
* INT2 <20>鿴 zf_device_imu660rc.h <20><> IMU660RC_INT2_PIN <20>궨<EFBFBD><EAB6A8>
|
||||
* VCC 3.3V<EFBFBD><EFBFBD>Դ
|
||||
* GND <20><>Դ<EFBFBD><D4B4>
|
||||
* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
*
|
||||
* // <20><><EFBFBD><EFBFBD> IIC <20><><EFBFBD><EFBFBD>
|
||||
* SCL/SPC <20>鿴 zf_device_imu660rc.h <20><> IMU660RC_SCL_PIN <20>궨<EFBFBD><EAB6A8>
|
||||
* SDA/DSI <20>鿴 zf_device_imu660rc.h <20><> IMU660RC_SDA_PIN <20>궨<EFBFBD><EAB6A8>
|
||||
* VCC 3.3V<EFBFBD><EFBFBD>Դ
|
||||
* GND <20><>Դ<EFBFBD><D4B4>
|
||||
* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
* ------------------------------------
|
||||
********************************************************************************************************************/
|
||||
|
||||
|
||||
#include "math.h"
|
||||
#include "zf_common_debug.h"
|
||||
#include "zf_driver_delay.h"
|
||||
#include "zf_driver_spi.h"
|
||||
#include "zf_driver_gpio.h"
|
||||
#include "zf_driver_soft_iic.h"
|
||||
#include "zf_device_config.h"
|
||||
#include "zf_driver_uart.h"
|
||||
#include "zf_driver_exti.h"
|
||||
|
||||
#include "zf_device_imu660rc.h"
|
||||
|
||||
#ifndef M_PI
|
||||
#define M_PI 3.1415926f
|
||||
#endif
|
||||
|
||||
|
||||
static uint8 imu660rc_quarternion_rate;
|
||||
|
||||
float imu660rc_transition_factor[2];
|
||||
int16 imu660rc_gyro_x = 0, imu660rc_gyro_y = 0, imu660rc_gyro_z = 0; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> gyro (<28><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>)
|
||||
int16 imu660rc_acc_x = 0, imu660rc_acc_y = 0, imu660rc_acc_z = 0; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ٶȼ<D9B6><C8BC><EFBFBD><EFBFBD><EFBFBD> acc (accelerometer <20><><EFBFBD>ٶȼ<D9B6>)
|
||||
float imu660rc_roll = 0, imu660rc_pitch = 0, imu660rc_yaw = 0; // ŷ<><C5B7><EFBFBD><EFBFBD>
|
||||
float imu660rc_quarternion[4]; // <20><>Ԫ<EFBFBD><D4AA>
|
||||
|
||||
|
||||
|
||||
#if IMU660RC_USE_SOFT_IIC
|
||||
static soft_iic_info_struct imu660rc_iic_struct;
|
||||
|
||||
#define imu660rc_write_register(reg, data) (soft_iic_write_8bit_register (&imu660rc_iic_struct, (reg), (data)))
|
||||
#define imu660rc_write_registers(reg, data, len) (soft_iic_write_8bit_registers(&imu660rc_iic_struct, (reg), (data), (len)))
|
||||
#define imu660rc_read_register(reg) (soft_iic_read_8bit_register (&imu660rc_iic_struct, (reg)))
|
||||
#define imu660rc_read_registers(reg, data, len) (soft_iic_read_8bit_registers (&imu660rc_iic_struct, (reg), (data), (len)))
|
||||
#else
|
||||
//-------------------------------------------------------------------------------------------------------------------
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> IMU660RC д<>Ĵ<EFBFBD><C4B4><EFBFBD>
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> reg <20>Ĵ<EFBFBD><C4B4><EFBFBD><EFBFBD><EFBFBD>ַ
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> data <20><><EFBFBD><EFBFBD>
|
||||
// <20><><EFBFBD>ز<EFBFBD><D8B2><EFBFBD> void
|
||||
// ʹ<><CAB9>ʾ<EFBFBD><CABE>
|
||||
// <20><>ע<EFBFBD><D7A2>Ϣ <20>ڲ<EFBFBD><DAB2><EFBFBD><EFBFBD><EFBFBD>
|
||||
//-------------------------------------------------------------------------------------------------------------------
|
||||
static void imu660rc_write_register (uint8 reg, uint8 data)
|
||||
{
|
||||
IMU660RC_CS(0);
|
||||
spi_write_8bit_register(IMU660RC_SPI, reg | IMU660RC_SPI_W, data);
|
||||
IMU660RC_CS(1);
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------------------------------------------------------
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> IMU660RC <20><><EFBFBD>Ĵ<EFBFBD><C4B4><EFBFBD>
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> reg <20>Ĵ<EFBFBD><C4B4><EFBFBD><EFBFBD><EFBFBD>ַ
|
||||
// <20><><EFBFBD>ز<EFBFBD><D8B2><EFBFBD> uint8 <20><><EFBFBD><EFBFBD>
|
||||
// ʹ<><CAB9>ʾ<EFBFBD><CABE> imu660rc_read_register(IMU660RC_CHIP_ID);
|
||||
// <20><>ע<EFBFBD><D7A2>Ϣ <20>ڲ<EFBFBD><DAB2><EFBFBD><EFBFBD><EFBFBD>
|
||||
//-------------------------------------------------------------------------------------------------------------------
|
||||
static uint8 imu660rc_read_register (uint8 reg)
|
||||
{
|
||||
uint8 data;
|
||||
IMU660RC_CS(0);
|
||||
data = spi_read_8bit_register(IMU660RC_SPI, reg | IMU660RC_SPI_R);
|
||||
IMU660RC_CS(1);
|
||||
return data;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------------------------------------------------------
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> IMU660RC <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> reg <20>Ĵ<EFBFBD><C4B4><EFBFBD><EFBFBD><EFBFBD>ַ
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> data <20><><EFBFBD>ݻ<EFBFBD><DDBB><EFBFBD><EFBFBD><EFBFBD>
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> len <20><><EFBFBD>ݳ<EFBFBD><DDB3><EFBFBD>
|
||||
// <20><><EFBFBD>ز<EFBFBD><D8B2><EFBFBD> void
|
||||
// ʹ<><CAB9>ʾ<EFBFBD><CABE> imu660rc_read_registers(IMU660RC_ACC_ADDRESS, dat, 6);
|
||||
// <20><>ע<EFBFBD><D7A2>Ϣ <20>ڲ<EFBFBD><DAB2><EFBFBD><EFBFBD><EFBFBD>
|
||||
//-------------------------------------------------------------------------------------------------------------------
|
||||
static void imu660rc_read_registers (uint8 reg, uint8 *data, uint32 len)
|
||||
{
|
||||
IMU660RC_CS(0);
|
||||
spi_read_8bit_registers(IMU660RC_SPI, reg | IMU660RC_SPI_R, data, len);
|
||||
IMU660RC_CS(1);
|
||||
}
|
||||
#endif
|
||||
|
||||
//-------------------------------------------------------------------------------------------------------------------
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> IMU660RC fp16ת<36><D7AA><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> void
|
||||
// <20><><EFBFBD>ز<EFBFBD><D8B2><EFBFBD> uint8
|
||||
// ʹ<><CAB9>ʾ<EFBFBD><CABE>
|
||||
// <20><>ע<EFBFBD><D7A2>Ϣ <20>ڲ<EFBFBD><DAB2><EFBFBD><EFBFBD><EFBFBD>
|
||||
//-------------------------------------------------------------------------------------------------------------------
|
||||
static uint32 fp16_to_float(uint16 h)
|
||||
{
|
||||
uint16 h_exp = (h & 0x7c00u);
|
||||
uint32 f_sgn = ((uint32)h & 0x8000u) << 16;
|
||||
switch (h_exp)
|
||||
{
|
||||
case 0x0000u: // 0 or subnormal
|
||||
{
|
||||
uint16 h_sig = (h & 0x03ffu);
|
||||
// Signed zero
|
||||
if (h_sig == 0)
|
||||
{
|
||||
return f_sgn;
|
||||
}
|
||||
// Subnormal
|
||||
h_sig <<= 1;
|
||||
while ((h_sig & 0x0400u) == 0)
|
||||
{
|
||||
h_sig <<= 1;
|
||||
h_exp++;
|
||||
}
|
||||
uint32 f_exp = ((uint32)(127 - 15 - h_exp)) << 23;
|
||||
uint32 f_sig = ((uint32)(h_sig & 0x03ffu)) << 13;
|
||||
return f_sgn + f_exp + f_sig;
|
||||
}
|
||||
case 0x7c00u: // inf or NaN
|
||||
{
|
||||
// All-ones exponent and a copy of the significand
|
||||
return f_sgn + 0x7f800000u + (((uint32)(h & 0x03ffu)) << 13);
|
||||
}
|
||||
default: // normalized
|
||||
{
|
||||
// Just need to adjust the exponent and shift
|
||||
return f_sgn + (((uint32)(h & 0x7fffu) + 0x1c000u) << 13);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------------------------------------------------------
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> IMU660RC <20><>Ԫ<EFBFBD><D4AA><EFBFBD><EFBFBD>һ<EFBFBD><D2BB>
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> void
|
||||
// <20><><EFBFBD>ز<EFBFBD><D8B2><EFBFBD> uint8
|
||||
// ʹ<><CAB9>ʾ<EFBFBD><CABE>
|
||||
// <20><>ע<EFBFBD><D7A2>Ϣ <20>ڲ<EFBFBD><DAB2><EFBFBD><EFBFBD><EFBFBD>
|
||||
//-------------------------------------------------------------------------------------------------------------------
|
||||
static void quarternion_normalize(float quat[4], uint16 *fp16)
|
||||
{
|
||||
float n = 0;
|
||||
float temp[4];
|
||||
|
||||
*(uint32 *)(&temp[0]) = fp16_to_float(fp16[0]);
|
||||
*(uint32 *)(&temp[1]) = fp16_to_float(fp16[1]);
|
||||
*(uint32 *)(&temp[2]) = fp16_to_float(fp16[2]);
|
||||
*(uint32 *)(&temp[3]) = fp16_to_float(fp16[3]);
|
||||
|
||||
n = temp[0] * temp[0] + temp[1] * temp[1] + temp[2] * temp[2] + temp[3] * temp[3];
|
||||
n = sqrtf(n);
|
||||
|
||||
if(n > 0.001f) // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Խӽ<D4BD>0<EFBFBD><30>ֵ
|
||||
{
|
||||
n = temp[3] < 0.0f ? -n : n;
|
||||
|
||||
quat[0] = temp[1] / n;
|
||||
quat[1] = temp[2] / n;
|
||||
quat[2] = temp[0] / n;
|
||||
quat[3] = temp[3] / n;
|
||||
}
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------------------------------------------------------
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> IMU660RC <20><>Ԫ<EFBFBD><D4AA>תŷ<D7AA><C5B7><EFBFBD><EFBFBD>
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> void
|
||||
// <20><><EFBFBD>ز<EFBFBD><D8B2><EFBFBD> uint8
|
||||
// ʹ<><CAB9>ʾ<EFBFBD><CABE>
|
||||
// <20><>ע<EFBFBD><D7A2>Ϣ <20>ڲ<EFBFBD><DAB2><EFBFBD><EFBFBD><EFBFBD>
|
||||
//-------------------------------------------------------------------------------------------------------------------
|
||||
static void quarternion_to_euler(float quat[4], float *roll, float *pitch, float *yaw)
|
||||
{
|
||||
float euler[3];
|
||||
|
||||
float sqx = quat[0] * quat[0];
|
||||
float sqy = quat[1] * quat[1];
|
||||
float sqz = quat[2] * quat[2];
|
||||
|
||||
euler[0] = atan2f(2.0f * (quat[1] * quat[3] + quat[0] * quat[2]), 1.0f - 2.0f * (sqy + sqx));
|
||||
euler[1] = -asinf(2.0f * (quat[0] * quat[3] - quat[1] * quat[2]));
|
||||
euler[2] = atan2f(2.0f * (quat[0] * quat[1] + quat[2] * quat[3]), 1.0f - 2.0f * (sqx + sqz));
|
||||
|
||||
// <20><><EFBFBD><EFBFBD>ת<EFBFBD>Ƕ<EFBFBD>
|
||||
euler[0] = 180 * (euler[0]) / M_PI;
|
||||
euler[1] = 180 * (euler[1]) / M_PI;
|
||||
euler[2] = 180 * (euler[2]) / M_PI;
|
||||
|
||||
// <20>Ƕȵ<C7B6><C8B5><EFBFBD>
|
||||
euler[2] = 0 > euler[2] ? euler[2] + 360 : euler[2];
|
||||
|
||||
*roll = euler[0];
|
||||
*pitch = euler[1];
|
||||
*yaw = euler[2];
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------------------------------------------------------
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> IMU660RC <20><><EFBFBD>÷<EFBFBD><C3B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> void
|
||||
// <20><><EFBFBD>ز<EFBFBD><D8B2><EFBFBD> uint8
|
||||
// ʹ<><CAB9>ʾ<EFBFBD><CABE>
|
||||
// <20><>ע<EFBFBD><D7A2>Ϣ <20>ڲ<EFBFBD><DAB2><EFBFBD><EFBFBD><EFBFBD>
|
||||
//-------------------------------------------------------------------------------------------------------------------
|
||||
static void imu660rc_set_mem_bank (imu660rc_mem_bank_enum bank)
|
||||
{
|
||||
imu660rc_write_register(IMU660RC_FUNC_CFG_ACCESS, bank);
|
||||
}
|
||||
|
||||
|
||||
//-------------------------------------------------------------------------------------------------------------------
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> IMU660RC <20>Լ<EFBFBD>
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> void
|
||||
// <20><><EFBFBD>ز<EFBFBD><D8B2><EFBFBD> uint8 1-<2D>Լ<EFBFBD>ʧ<EFBFBD><CAA7> 0-<2D>Լ<EFBFBD><D4BC>ɹ<EFBFBD>
|
||||
// ʹ<><CAB9>ʾ<EFBFBD><CABE> imu660rc_self_check();
|
||||
// <20><>ע<EFBFBD><D7A2>Ϣ <20>ڲ<EFBFBD><DAB2><EFBFBD><EFBFBD><EFBFBD>
|
||||
//-------------------------------------------------------------------------------------------------------------------
|
||||
static uint8 imu660rc_self_check (void)
|
||||
{
|
||||
uint8 dat = 0, return_state = 0;
|
||||
uint16 timeout_count = 0;
|
||||
do
|
||||
{
|
||||
if(IMU660RC_TIMEOUT_COUNT < timeout_count ++)
|
||||
{
|
||||
return_state = 1;
|
||||
break;
|
||||
}
|
||||
dat = imu660rc_read_register(IMU660RC_CHIP_ID);
|
||||
system_delay_ms(1);
|
||||
}while(0x70 != dat); // <20><>ȡ<EFBFBD>豸ID<49>Ƿ<EFBFBD><C7B7><EFBFBD><EFBFBD><EFBFBD>0x70<37><30><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>0x70<37><30><EFBFBD><EFBFBD>Ϊû<CEAA><C3BB><EFBFBD><EFBFBD>豸
|
||||
return return_state;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------------------------------------------------------
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>ȡ IMU660RC <20><><EFBFBD>ٶȼ<D9B6><C8BC><EFBFBD><EFBFBD><EFBFBD>
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> void
|
||||
// <20><><EFBFBD>ز<EFBFBD><D8B2><EFBFBD> void
|
||||
// ʹ<><CAB9>ʾ<EFBFBD><CABE> imu660rc_get_acc(); // ִ<>иú<D0B8><C3BA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֱ<EFBFBD>Ӳ鿴<D3B2><E9BFB4>Ӧ<EFBFBD>ı<EFBFBD><C4B1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
// <20><>ע<EFBFBD><D7A2>Ϣ ʹ<><CAB9> SPI <20>IJɼ<C4B2>ʱ<EFBFBD><CAB1>Ϊ10us
|
||||
//-------------------------------------------------------------------------------------------------------------------
|
||||
void imu660rc_get_acc (void)
|
||||
{
|
||||
int16 dat[3];
|
||||
if(IMU660RC_QUARTERNION_DISABLE == imu660rc_quarternion_rate)
|
||||
{ // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ԫ<EFBFBD><D4AA><EFBFBD>ر<EFBFBD>״̬<D7B4><CCAC>֧<EFBFBD>ֵ<EFBFBD><D6B5>ô˺<C3B4><CBBA><EFBFBD><EFBFBD><EFBFBD> <20><>Ԫ<EFBFBD><D4AA><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ҫ<EFBFBD><D2AA>ȡ<EFBFBD><C8A1><EFBFBD>ٶ<EFBFBD><D9B6><EFBFBD>Ϣ<EFBFBD><CFA2>IMU660RC_QUARTERNION_GET_ACC<43><43><EFBFBD><EFBFBD>Ϊ1
|
||||
imu660rc_read_registers(IMU660RC_OUTX_L_A, (uint8 *)dat, 6);
|
||||
imu660rc_acc_x = dat[0];
|
||||
imu660rc_acc_y = dat[1];
|
||||
imu660rc_acc_z = dat[2];
|
||||
}
|
||||
}
|
||||
//-------------------------------------------------------------------------------------------------------------------
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>ȡ IMU660RC <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> void
|
||||
// <20><><EFBFBD>ز<EFBFBD><D8B2><EFBFBD> void
|
||||
// ʹ<><CAB9>ʾ<EFBFBD><CABE> imu660rc_get_gyro(); // ִ<>иú<D0B8><C3BA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֱ<EFBFBD>Ӳ鿴<D3B2><E9BFB4>Ӧ<EFBFBD>ı<EFBFBD><C4B1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
// <20><>ע<EFBFBD><D7A2>Ϣ ʹ<><CAB9> SPI <20>IJɼ<C4B2>ʱ<EFBFBD><CAB1>Ϊ10us
|
||||
//-------------------------------------------------------------------------------------------------------------------
|
||||
void imu660rc_get_gyro (void)
|
||||
{
|
||||
int16 dat[3];
|
||||
if(IMU660RC_QUARTERNION_DISABLE == imu660rc_quarternion_rate)
|
||||
{ // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ԫ<EFBFBD><D4AA><EFBFBD>ر<EFBFBD>״̬<D7B4><CCAC>֧<EFBFBD>ֵ<EFBFBD><D6B5>ô˺<C3B4><CBBA><EFBFBD><EFBFBD><EFBFBD> <20><>Ԫ<EFBFBD><D4AA><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ҫ<EFBFBD><D2AA>ȡ<EFBFBD><C8A1><EFBFBD>ٶ<EFBFBD><D9B6><EFBFBD>Ϣ<EFBFBD><CFA2>IMU660RC_QUARTERNION_GET_GYRO<52><4F><EFBFBD><EFBFBD>Ϊ1
|
||||
imu660rc_read_registers(IMU660RC_OUTX_L_G, (uint8 *)dat, 6);
|
||||
imu660rc_gyro_x = dat[0];
|
||||
imu660rc_gyro_y = dat[1];
|
||||
imu660rc_gyro_z = dat[2];
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
//-------------------------------------------------------------------------------------------------------------------
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>ȡ IMU660RC <20><>Ԫ<EFBFBD><D4AA><EFBFBD><EFBFBD><EFBFBD>ݲ<EFBFBD>ת<EFBFBD><D7AA>Ϊŷ<CEAA><C5B7><EFBFBD><EFBFBD>
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> void
|
||||
// <20><><EFBFBD>ز<EFBFBD><D8B2><EFBFBD> void
|
||||
// ʹ<><CAB9>ʾ<EFBFBD><CABE> imu660rc_get_quarternion(); // ִ<>иú<D0B8><C3BA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֱ<EFBFBD>Ӳ鿴<D3B2><E9BFB4>Ӧ<EFBFBD>ı<EFBFBD><C4B1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
// <20><>ע<EFBFBD><D7A2>Ϣ <20><>Ҫ<EFBFBD><D2AA>INT2<54><32><EFBFBD>Ŵ<EFBFBD><C5B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>жϵ<D0B6><CFB5>ô˺<C3B4><CBBA><EFBFBD>
|
||||
//
|
||||
//-------------------------------------------------------------------------------------------------------------------
|
||||
void imu660rc_get_quarternion(void)
|
||||
{
|
||||
uint8 i;
|
||||
uint16 buff[4];
|
||||
uint8 *buff1_ptr;
|
||||
int16 *buff2_ptr;
|
||||
|
||||
if(IMU660RC_QUARTERNION_DISABLE != imu660rc_quarternion_rate)
|
||||
{
|
||||
buff1_ptr = (uint8 *)buff;
|
||||
|
||||
imu660rc_set_mem_bank(IMU660RC_EMBED_MEM_BANK);
|
||||
imu660rc_write_register(IMU660RC_PAGE_RW, 0x20);
|
||||
imu660rc_write_register(IMU660RC_PAGE_SEL, 0x31);
|
||||
|
||||
for(i = 0; 8 > i; i++)
|
||||
{
|
||||
imu660rc_write_register(0x08, 0x4C + i);
|
||||
buff1_ptr[i] = imu660rc_read_register(0x09);
|
||||
}
|
||||
|
||||
imu660rc_write_register(IMU660RC_PAGE_RW, 0x0);
|
||||
imu660rc_set_mem_bank(IMU660RC_MAIN_MEM_BANK);
|
||||
|
||||
// <20><>Ԫ<EFBFBD><D4AA><EFBFBD><EFBFBD>һ<EFBFBD><D2BB>
|
||||
quarternion_normalize(imu660rc_quarternion, buff);
|
||||
// <20><>Ԫ<EFBFBD><D4AA>תŷ<D7AA><C5B7><EFBFBD><EFBFBD>
|
||||
quarternion_to_euler(imu660rc_quarternion, &imu660rc_roll, &imu660rc_pitch, &imu660rc_yaw);
|
||||
|
||||
// <20><>ȡ<EFBFBD><C8A1><EFBFBD>ٶ<EFBFBD><D9B6><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ٶ<EFBFBD><D9B6><EFBFBD>Ϣ
|
||||
#if(1 == IMU660RC_QUARTERNION_GET_ACC)
|
||||
{
|
||||
buff2_ptr = (int16 *)buff;
|
||||
imu660rc_read_registers(IMU660RC_OUTX_L_A, (uint8 *)buff2_ptr, 6);
|
||||
imu660rc_acc_x = buff2_ptr[0];
|
||||
imu660rc_acc_y = buff2_ptr[1];
|
||||
imu660rc_acc_z = buff2_ptr[2];
|
||||
}
|
||||
#endif
|
||||
#if(1 == IMU660RC_QUARTERNION_GET_GYRO)
|
||||
{
|
||||
buff2_ptr = (int16 *)buff;
|
||||
imu660rc_read_registers(IMU660RC_OUTX_L_G, (uint8 *)buff2_ptr, 6);
|
||||
imu660rc_gyro_x = buff2_ptr[0];
|
||||
imu660rc_gyro_y = buff2_ptr[1];
|
||||
imu660rc_gyro_z = buff2_ptr[2];
|
||||
}
|
||||
#endif
|
||||
}
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------------------------------------------------------
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> IMU660RC<52>жϻص<CFBB><D8B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ҫ<EFBFBD><D2AA><EFBFBD>ж<EFBFBD><D0B6>ڶ<EFBFBD>ȡ<EFBFBD><C8A1>Ԫ<EFBFBD><D4AA>
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> void
|
||||
// <20><><EFBFBD>ز<EFBFBD><D8B2><EFBFBD> void
|
||||
// ʹ<><CAB9>ʾ<EFBFBD><CABE>
|
||||
// <20><>ע<EFBFBD><D7A2>Ϣ
|
||||
//
|
||||
//-------------------------------------------------------------------------------------------------------------------
|
||||
void imu660rc_callback(void)
|
||||
{
|
||||
imu660rc_get_quarternion();
|
||||
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------------------------------------------------------
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>ʼ<EFBFBD><CABC> IMU660RC
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> quarternion_rate ѡ<><D1A1><EFBFBD><EFBFBD>Ԫ<EFBFBD><D4AA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
// <20><><EFBFBD>ز<EFBFBD><D8B2><EFBFBD> uint8 1-<2D><>ʼ<EFBFBD><CABC>ʧ<EFBFBD><CAA7> 0-<2D><>ʼ<EFBFBD><CABC><EFBFBD>ɹ<EFBFBD>
|
||||
// ʹ<><CAB9>ʾ<EFBFBD><CABE> imu660rc_init(IMU660RC_QUARTERNION_120HZ);
|
||||
// <20><>ע<EFBFBD><D7A2>Ϣ
|
||||
//-------------------------------------------------------------------------------------------------------------------
|
||||
uint8 imu660rc_init(imu660rc_quarternion_rate_config quarternion_rate)
|
||||
{
|
||||
uint8 return_state = 0;
|
||||
|
||||
imu660rc_quarternion_rate = quarternion_rate;
|
||||
#if IMU660RC_USE_SOFT_IIC
|
||||
soft_iic_init(&imu660rc_iic_struct, IMU660RC_DEV_ADDR, IMU660RC_SOFT_IIC_DELAY, IMU660RC_SCL_PIN, IMU660RC_SDA_PIN); // <20><><EFBFBD><EFBFBD> IMU660RC <20><> IIC <20>˿<EFBFBD>
|
||||
|
||||
#else
|
||||
spi_init(IMU660RC_SPI, SPI_MODE0, IMU660RC_SPI_SPEED, IMU660RC_SPC_PIN, IMU660RC_SDI_PIN, IMU660RC_SDO_PIN, SPI_CS_NULL); // <20><><EFBFBD><EFBFBD> IMU660RC <20><> SPI <20>˿<EFBFBD>
|
||||
gpio_init(IMU660RC_CS_PIN, GPO, GPIO_HIGH, GPO_PUSH_PULL); // <20><><EFBFBD><EFBFBD> IMU660RC <20><>CS<43>˿<EFBFBD>
|
||||
#endif
|
||||
|
||||
system_delay_ms(10);
|
||||
|
||||
do
|
||||
{
|
||||
if(imu660rc_self_check()) // IMU660RC <20>Լ<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> IMU660RC <20>Լ<EFBFBD><D4BC><EFBFBD><EFBFBD><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, "imu660rc self check error.");
|
||||
return_state = 1;
|
||||
break;
|
||||
}
|
||||
|
||||
// <20><>λ<EFBFBD><CEBB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
imu660rc_write_register(IMU660RC_FUNC_CFG_ACCESS, 0x04);
|
||||
system_delay_ms(30);
|
||||
|
||||
// <20><><EFBFBD>ÿ<EFBFBD><C3BF><EFBFBD><EFBFBD>¹<EFBFBD><C2B9><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ַ<EFBFBD><D6B7><EFBFBD><EFBFBD>
|
||||
imu660rc_write_register(IMU660RC_CTRL3, 0x44);
|
||||
|
||||
switch(IMU660RC_ACC_SAMPLE_DEFAULT)
|
||||
{
|
||||
default:
|
||||
{
|
||||
zf_log(0, "IMU660RC_ACC_SAMPLE_DEFAULT set error.");
|
||||
return_state = 1;
|
||||
}break;
|
||||
case IMU660RC_ACC_SAMPLE_SGN_2G:
|
||||
{
|
||||
imu660rc_write_register(IMU660RC_CTRL8, 0x00);
|
||||
imu660rc_transition_factor[0] = 16393.44;
|
||||
}break;
|
||||
case IMU660RC_ACC_SAMPLE_SGN_4G:
|
||||
{
|
||||
imu660rc_write_register(IMU660RC_CTRL8, 0x01);
|
||||
imu660rc_transition_factor[0] = 8196.72;
|
||||
}break;
|
||||
case IMU660RC_ACC_SAMPLE_SGN_8G:
|
||||
{
|
||||
imu660rc_write_register(IMU660RC_CTRL8, 0x02);
|
||||
imu660rc_transition_factor[0] = 4098.36;
|
||||
}break;
|
||||
case IMU660RC_ACC_SAMPLE_SGN_16G:
|
||||
{
|
||||
imu660rc_write_register(IMU660RC_CTRL8, 0x03);
|
||||
imu660rc_transition_factor[0] = 2049.18;
|
||||
}break;
|
||||
}
|
||||
if(1 == return_state)
|
||||
{
|
||||
break;
|
||||
}
|
||||
|
||||
switch(IMU660RC_GYRO_SAMPLE_DEFAULT)
|
||||
{
|
||||
default:
|
||||
{
|
||||
zf_log(0, "IMU660RC_GYRO_SAMPLE_DEFAULT set error.");
|
||||
return_state = 1;
|
||||
}break;
|
||||
case IMU660RC_GYRO_SAMPLE_SGN_125DPS:
|
||||
{
|
||||
imu660rc_write_register(IMU660RC_CTRL6, 0x00);
|
||||
imu660rc_transition_factor[1] = 228.5714;
|
||||
}break;
|
||||
case IMU660RC_GYRO_SAMPLE_SGN_250DPS:
|
||||
{
|
||||
imu660rc_write_register(IMU660RC_CTRL6, 0x01);
|
||||
imu660rc_transition_factor[1] = 114.2857;
|
||||
}break;
|
||||
case IMU660RC_GYRO_SAMPLE_SGN_500DPS:
|
||||
{
|
||||
imu660rc_write_register(IMU660RC_CTRL6, 0x02);
|
||||
imu660rc_transition_factor[1] = 57.1428;
|
||||
}break;
|
||||
case IMU660RC_GYRO_SAMPLE_SGN_1000DPS:
|
||||
{
|
||||
imu660rc_write_register(IMU660RC_CTRL6, 0x03);
|
||||
imu660rc_transition_factor[1] = 28.5714;
|
||||
}break;
|
||||
case IMU660RC_GYRO_SAMPLE_SGN_2000DPS:
|
||||
{
|
||||
imu660rc_write_register(IMU660RC_CTRL6, 0x04);
|
||||
imu660rc_transition_factor[1] = 14.2857;
|
||||
}break;
|
||||
case IMU660RC_GYRO_SAMPLE_SGN_4000DPS:
|
||||
{
|
||||
imu660rc_write_register(IMU660RC_CTRL6, 0x0C);
|
||||
imu660rc_transition_factor[1] = 7.14285;
|
||||
}break;
|
||||
}
|
||||
if(1 == return_state)
|
||||
{
|
||||
break;
|
||||
}
|
||||
|
||||
// <20><><EFBFBD>ô<EFBFBD><C3B4><EFBFBD><EFBFBD><EFBFBD>ģʽ<C4A3><CABD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ<EFBFBD>߾<EFBFBD><DFBE><EFBFBD>ģʽ<C4A3>Լ<EFBFBD><D4BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
imu660rc_write_register(IMU660RC_CTRL1, 0x15);
|
||||
imu660rc_write_register(IMU660RC_CTRL2, 0x18);
|
||||
|
||||
// <20><><EFBFBD><EFBFBD>LPF1<46>˲<EFBFBD><CBB2><EFBFBD>
|
||||
imu660rc_write_register(IMU660RC_CTRL7, 0x01);
|
||||
|
||||
// <20><><EFBFBD><EFBFBD>LPF2<46>˲<EFBFBD><CBB2><EFBFBD>
|
||||
imu660rc_write_register(IMU660RC_CTRL9, 0x08);
|
||||
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ԫ<EFBFBD><D4AA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ӧ<EFBFBD><D3A6><EFBFBD><EFBFBD>
|
||||
if(IMU660RC_QUARTERNION_DISABLE != quarternion_rate)
|
||||
{
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD>жϴ<D0B6><CFB4><EFBFBD><EFBFBD>ź<EFBFBD>
|
||||
imu660rc_write_register(IMU660RC_INT2_CTRL, 0x80);
|
||||
imu660rc_write_register(IMU660RC_CTRL4, 0x08);
|
||||
imu660rc_write_register(IMU660RC_EMB_FUNC_CFG, 0x30);
|
||||
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ü<EFBFBD><C3BC>ٶȡ<D9B6><C8A1><EFBFBD><EFBFBD>ٶ<EFBFBD><D9B6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
imu660rc_write_register(IMU660RC_CTRL1, 0x10 | (quarternion_rate + 3));
|
||||
imu660rc_write_register(IMU660RC_CTRL2, 0x10 | (quarternion_rate + 3));
|
||||
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ԫ<EFBFBD><D4AA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʲ<EFBFBD><CAB2><EFBFBD><EFBFBD><EFBFBD>
|
||||
imu660rc_set_mem_bank(IMU660RC_EMBED_MEM_BANK);
|
||||
imu660rc_write_register(IMU660RC_SFLP_ODR, 0x43 | (quarternion_rate << 3));
|
||||
imu660rc_write_register(IMU660RC_EMB_FUNC_EN_A, 0x02);
|
||||
imu660rc_write_register(IMU660RC_PAGE_RW, 0x00);
|
||||
imu660rc_set_mem_bank(IMU660RC_MAIN_MEM_BANK);
|
||||
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD>жϼ<D0B6><CFBC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
exti_init(IMU660RC_INT2_PIN, EXTI_TRIGGER_RISING);
|
||||
}
|
||||
}while(0);
|
||||
|
||||
return return_state;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -0,0 +1,211 @@
|
||||
/*********************************************************************************************************************
|
||||
* RT1064DVL6A Opensourec Library <20><><EFBFBD><EFBFBD>RT1064DVL6A <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> RT1064DVL6A <20><>Դ<EFBFBD><D4B4><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD>
|
||||
*
|
||||
* RT1064DVL6A <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_imu660rc
|
||||
* <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.10.2
|
||||
* <20><><EFBFBD><EFBFBD>ƽ̨ TC264
|
||||
* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> https://seekfree.taobao.com/
|
||||
*
|
||||
* <20>ļ<DEB8>¼
|
||||
* <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><>ע
|
||||
* 2025-12-12 SeekFree first version
|
||||
********************************************************************************************************************/
|
||||
/*********************************************************************************************************************
|
||||
* <20><><EFBFBD>߶<EFBFBD><DFB6>壺
|
||||
* ------------------------------------
|
||||
* ģ<><C4A3><EFBFBD>ܽ<EFBFBD> <20><>Ƭ<EFBFBD><C6AC><EFBFBD>ܽ<EFBFBD>
|
||||
* // Ӳ<><D3B2> SPI <20><><EFBFBD><EFBFBD>
|
||||
* SCL/SPC <20>鿴 zf_device_imu660rc.h <20><> IMU660RC_SPC_PIN <20>궨<EFBFBD><EAB6A8>
|
||||
* SDA/DSI <20>鿴 zf_device_imu660rc.h <20><> IMU660RC_SDI_PIN <20>궨<EFBFBD><EAB6A8>
|
||||
* SA0/SDO <20>鿴 zf_device_imu660rc.h <20><> IMU660RC_SDO_PIN <20>궨<EFBFBD><EAB6A8>
|
||||
* CS <20>鿴 zf_device_imu660rc.h <20><> IMU660RC_CS_PIN <20>궨<EFBFBD><EAB6A8>
|
||||
* INT2 <20>鿴 zf_device_imu660rc.h <20><> IMU660RC_INT2_PIN <20>궨<EFBFBD><EAB6A8>
|
||||
* VCC 3.3V<EFBFBD><EFBFBD>Դ
|
||||
* GND <20><>Դ<EFBFBD><D4B4>
|
||||
* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
*
|
||||
* // <20><><EFBFBD><EFBFBD> IIC <20><><EFBFBD><EFBFBD>
|
||||
* SCL/SPC <20>鿴 zf_device_imu660rc.h <20><> IMU660RC_SCL_PIN <20>궨<EFBFBD><EAB6A8>
|
||||
* SDA/DSI <20>鿴 zf_device_imu660rc.h <20><> IMU660RC_SDA_PIN <20>궨<EFBFBD><EAB6A8>
|
||||
* VCC 3.3V<EFBFBD><EFBFBD>Դ
|
||||
* GND <20><>Դ<EFBFBD><D4B4>
|
||||
* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
* ------------------------------------
|
||||
********************************************************************************************************************/
|
||||
|
||||
|
||||
#ifndef _zf_device_imu660rc_h_
|
||||
#define _zf_device_imu660rc_h_
|
||||
|
||||
#include "zf_common_typedef.h"
|
||||
|
||||
|
||||
// IMU660RC_USE_SOFT_IIC<49><43><EFBFBD><EFBFBD>Ϊ0<CEAA><30>ʾʹ<CABE><CAB9>Ӳ<EFBFBD><D3B2>SPI<50><49><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>Ϊ1<CEAA><31>ʾʹ<CABE><CAB9><EFBFBD><EFBFBD><EFBFBD><EFBFBD>IIC<49><43><EFBFBD><EFBFBD>
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>IMU660RC_USE_SOFT_IIC<49><43><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ҫ<EFBFBD>ȱ<EFBFBD><C8B1>벢<EFBFBD><EBB2A2><EFBFBD>س<EFBFBD><D8B3><EFBFBD>Ƭ<EFBFBD><C6AC><EFBFBD><EFBFBD>ģ<EFBFBD><C4A3><EFBFBD><EFBFBD>Ҫ<EFBFBD>ϵ<EFBFBD><CFB5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͨѶ
|
||||
#define IMU660RC_USE_SOFT_IIC ( 0 ) // Ĭ<><C4AC>ʹ<EFBFBD><CAB9>Ӳ<EFBFBD><D3B2> SPI <20><>ʽ<EFBFBD><CABD><EFBFBD><EFBFBD>
|
||||
|
||||
#if IMU660RC_USE_SOFT_IIC // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>ɫ<EFBFBD><C9AB><EFBFBD><EFBFBD><EFBFBD>IJ<EFBFBD><C4B2><EFBFBD><EFBFBD><EFBFBD>ȷ<EFBFBD><C8B7> <20><>ɫ<EFBFBD>ҵľ<D2B5><C4BE><EFBFBD>û<EFBFBD><C3BB><EFBFBD>õ<EFBFBD>
|
||||
//====================================================<3D><><EFBFBD><EFBFBD> IIC <20><><EFBFBD><EFBFBD>====================================================
|
||||
#define IMU660RC_SOFT_IIC_DELAY ( 0 ) // <20><><EFBFBD><EFBFBD> IIC <20><>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD> <20><>ֵԽС IIC ͨ<><CDA8><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Խ<EFBFBD><D4BD>
|
||||
#define IMU660RC_SCL_PIN ( P20_11 ) // <20><><EFBFBD><EFBFBD> IIC SCL <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> IMU660RC <20><> SCL <20><><EFBFBD><EFBFBD>
|
||||
#define IMU660RC_SDA_PIN ( P20_14 ) // <20><><EFBFBD><EFBFBD> IIC SDA <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> IMU660RC <20><> SDA <20><><EFBFBD><EFBFBD>
|
||||
//====================================================<3D><><EFBFBD><EFBFBD> IIC <20><><EFBFBD><EFBFBD>====================================================
|
||||
#else
|
||||
|
||||
//====================================================Ӳ<><D3B2> SPI <20><><EFBFBD><EFBFBD>====================================================
|
||||
#define IMU660RC_SPI_SPEED (10 * 1000 * 1000) // Ӳ<><D3B2> SPI <20><><EFBFBD><EFBFBD>
|
||||
#define IMU660RC_SPI (SPI_0) // Ӳ<><D3B2> SPI <20><>
|
||||
#define IMU660RC_SPC_PIN (SPI0_SCLK_P20_11 ) // Ӳ<><D3B2> SPI SCK <20><><EFBFBD><EFBFBD>
|
||||
#define IMU660RC_SDI_PIN (SPI0_MOSI_P20_14) // Ӳ<><D3B2> SPI MOSI <20><><EFBFBD><EFBFBD>
|
||||
#define IMU660RC_SDO_PIN (SPI0_MISO_P20_12) // Ӳ<><D3B2> SPI MISO <20><><EFBFBD><EFBFBD>
|
||||
//====================================================Ӳ<><D3B2> SPI <20><><EFBFBD><EFBFBD>====================================================
|
||||
#endif
|
||||
#define IMU660RC_CS_PIN ( P20_13 ) // CS Ƭѡ<C6AC><D1A1><EFBFBD><EFBFBD>
|
||||
#define IMU660RC_CS(x) ( (x) ? (gpio_high(IMU660RC_CS_PIN)) : (gpio_low(IMU660RC_CS_PIN)) )
|
||||
#define IMU660RC_INT2_PIN ( ERU_CH0_REQ0_P15_4 ) // <20>ж<EFBFBD><D0B6>ź<EFBFBD><C5BA><EFBFBD><EFBFBD>ţ<EFBFBD><C5A3>ڶ<EFBFBD>ȡ<EFBFBD><C8A1>Ԫ<EFBFBD><D4AA>ʱ<EFBFBD><CAB1>Ҫʹ<D2AA><CAB9>
|
||||
|
||||
|
||||
#define IMU660RC_QUARTERNION_GET_GYRO ( 1 ) // 1<><31><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ԫ<EFBFBD><D4AA><EFBFBD><EFBFBD>ģʽʱ<CABD><CAB1><EFBFBD><EFBFBD>ȡ<EFBFBD><C8A1>Ԫ<EFBFBD><D4AA>ʱ<EFBFBD>Զ<EFBFBD><D4B6><EFBFBD>ȡ<EFBFBD><C8A1><EFBFBD>ٶ<EFBFBD> 0<><30><EFBFBD><EFBFBD><EFBFBD>Զ<EFBFBD><D4B6><EFBFBD>ȡ
|
||||
#define IMU660RC_QUARTERNION_GET_ACC ( 1 ) // 1<><31><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ԫ<EFBFBD><D4AA><EFBFBD><EFBFBD>ģʽʱ<CABD><CAB1><EFBFBD><EFBFBD>ȡ<EFBFBD><C8A1>Ԫ<EFBFBD><D4AA>ʱ<EFBFBD>Զ<EFBFBD><D4B6><EFBFBD>ȡ<EFBFBD><C8A1><EFBFBD>ٶ<EFBFBD> 0<><30><EFBFBD><EFBFBD><EFBFBD>Զ<EFBFBD><D4B6><EFBFBD>ȡ
|
||||
#define IMU660RC_ACC_SAMPLE_DEFAULT ( IMU660RC_ACC_SAMPLE_SGN_8G ) // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ĭ<EFBFBD>ϵ<EFBFBD> <20><><EFBFBD>ٶȼ<D9B6> <20><>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
#define IMU660RC_GYRO_SAMPLE_DEFAULT ( IMU660RC_GYRO_SAMPLE_SGN_2000DPS ) // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ĭ<EFBFBD>ϵ<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
|
||||
typedef enum
|
||||
{
|
||||
IMU660RC_MAIN_MEM_BANK = 0x00,
|
||||
IMU660RC_HUB_MEM_BANK = 0x40,
|
||||
IMU660RC_EMBED_MEM_BANK = 0x80,
|
||||
}imu660rc_mem_bank_enum;
|
||||
|
||||
typedef enum
|
||||
{
|
||||
IMU660RC_ACC_SAMPLE_SGN_2G , // <20><><EFBFBD>ٶȼ<D9B6><C8BC><EFBFBD><EFBFBD><EFBFBD> <20><>2G (ACC = Accelerometer <20><><EFBFBD>ٶȼ<D9B6>) (SGN = signum <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Χ) (G = g <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ٶ<EFBFBD> g<><67>9.80 m/s^2)
|
||||
IMU660RC_ACC_SAMPLE_SGN_4G , // <20><><EFBFBD>ٶȼ<D9B6><C8BC><EFBFBD><EFBFBD><EFBFBD> <20><>4G
|
||||
IMU660RC_ACC_SAMPLE_SGN_8G , // <20><><EFBFBD>ٶȼ<D9B6><C8BC><EFBFBD><EFBFBD><EFBFBD> <20><>8G
|
||||
IMU660RC_ACC_SAMPLE_SGN_16G, // <20><><EFBFBD>ٶȼ<D9B6><C8BC><EFBFBD><EFBFBD><EFBFBD> <20><>16G
|
||||
}imu660rc_acc_sample_config;
|
||||
|
||||
typedef enum
|
||||
{
|
||||
IMU660RC_GYRO_SAMPLE_SGN_125DPS , // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>125DPS (GYRO = Gyroscope <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>) (SGN = signum <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Χ) (DPS = Degree Per Second <20><><EFBFBD>ٶȵ<D9B6>λ <20><>/S)
|
||||
IMU660RC_GYRO_SAMPLE_SGN_250DPS , // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>250DPS
|
||||
IMU660RC_GYRO_SAMPLE_SGN_500DPS , // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>500DPS
|
||||
IMU660RC_GYRO_SAMPLE_SGN_1000DPS, // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>1000DPS
|
||||
IMU660RC_GYRO_SAMPLE_SGN_2000DPS, // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>2000DPS
|
||||
IMU660RC_GYRO_SAMPLE_SGN_4000DPS, // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>4000DPS
|
||||
}imu660rc_gyro_sample_config;
|
||||
|
||||
typedef enum
|
||||
{
|
||||
IMU660RC_QUARTERNION_15HZ, // 15 Hz
|
||||
IMU660RC_QUARTERNION_30HZ, // 30 Hz
|
||||
IMU660RC_QUARTERNION_60HZ, // 60 Hz
|
||||
IMU660RC_QUARTERNION_120HZ, // 120Hz
|
||||
IMU660RC_QUARTERNION_240HZ, // 240Hz
|
||||
IMU660RC_QUARTERNION_480HZ, // 480Hz
|
||||
IMU660RC_QUARTERNION_DISABLE, // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ԫ<EFBFBD><D4AA><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
}imu660rc_quarternion_rate_config;
|
||||
|
||||
|
||||
//================================================<3D><><EFBFBD><EFBFBD> IMU660RC <20>ڲ<EFBFBD><DAB2><EFBFBD>ַ================================================
|
||||
#define IMU660RC_DEV_ADDR ( 0x6B ) // SA0<41>ӵأ<D3B5>0x6A SA0<41><30><EFBFBD><EFBFBD><EFBFBD><EFBFBD>0x6B ģ<><C4A3>Ĭ<EFBFBD><C4AC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
#define IMU660RC_SPI_W ( 0x00 )
|
||||
#define IMU660RC_SPI_R ( 0x80 )
|
||||
#define IMU660RC_TIMEOUT_COUNT ( 0x00FF ) // IMU660RC <20><>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD>
|
||||
|
||||
|
||||
//================================================<3D><><EFBFBD><EFBFBD> IMU660RC <20>Ĵ<EFBFBD><C4B4><EFBFBD><EFBFBD><EFBFBD>ַ================================================
|
||||
#define IMU660RC_FUNC_CFG_ACCESS ( 0x01 )
|
||||
#define IMU660RC_INT2_CTRL ( 0x0E )
|
||||
#define IMU660RC_CHIP_ID ( 0x0F )
|
||||
#define IMU660RC_CTRL1 ( 0x10 )
|
||||
#define IMU660RC_CTRL2 ( 0x11 )
|
||||
#define IMU660RC_CTRL3 ( 0x12 )
|
||||
#define IMU660RC_CTRL4 ( 0x13 )
|
||||
#define IMU660RC_CTRL5 ( 0x14 )
|
||||
#define IMU660RC_CTRL6 ( 0x15 )
|
||||
#define IMU660RC_CTRL7 ( 0x16 )
|
||||
#define IMU660RC_CTRL8 ( 0x17 )
|
||||
#define IMU660RC_CTRL9 ( 0x18 )
|
||||
#define IMU660RC_CTRL10 ( 0x19 )
|
||||
#define IMU660RC_CTRL_STATUS ( 0x1A )
|
||||
#define IMU660RC_STATUS_REG ( 0x1E )
|
||||
#define IMU660RC_OUT_TEMP_L ( 0x20 )
|
||||
#define IMU660RC_OUT_TEMP_H ( 0x21 )
|
||||
#define IMU660RC_OUTX_L_G ( 0x22 )
|
||||
#define IMU660RC_OUTX_H_G ( 0x23 )
|
||||
#define IMU660RC_OUTY_L_G ( 0x24 )
|
||||
#define IMU660RC_OUTY_H_G ( 0x25 )
|
||||
#define IMU660RC_OUTZ_L_G ( 0x26 )
|
||||
#define IMU660RC_OUTZ_H_G ( 0x27 )
|
||||
#define IMU660RC_OUTX_L_A ( 0x28 )
|
||||
#define IMU660RC_OUTX_H_A ( 0x29 )
|
||||
#define IMU660RC_OUTY_L_A ( 0x2A )
|
||||
#define IMU660RC_OUTY_H_A ( 0x2B )
|
||||
#define IMU660RC_OUTZ_L_A ( 0x2C )
|
||||
#define IMU660RC_OUTZ_H_A ( 0x2D )
|
||||
|
||||
#define IMU660RC_PAGE_SEL ( 0x02 )
|
||||
#define IMU660RC_EMB_FUNC_EN_A ( 0x04 )
|
||||
#define IMU660RC_PAGE_RW ( 0x17 )
|
||||
#define IMU660RC_SFLP_ODR ( 0x5E )
|
||||
#define IMU660RC_EMB_FUNC_CFG ( 0x63 )
|
||||
|
||||
|
||||
|
||||
extern float imu660rc_transition_factor[2];
|
||||
extern int16 imu660rc_gyro_x, imu660rc_gyro_y, imu660rc_gyro_z; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
extern int16 imu660rc_acc_x , imu660rc_acc_y , imu660rc_acc_z; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ٶȼ<D9B6><C8BC><EFBFBD><EFBFBD><EFBFBD>
|
||||
extern float imu660rc_roll , imu660rc_pitch , imu660rc_yaw; // ŷ<><C5B7><EFBFBD><EFBFBD>
|
||||
extern float imu660rc_quarternion[4]; // <20><>Ԫ<EFBFBD><D4AA>
|
||||
|
||||
|
||||
void imu660rc_get_acc (void);
|
||||
void imu660rc_get_gyro (void);
|
||||
void imu660rc_get_quarternion (void);
|
||||
|
||||
//-------------------------------------------------------------------------------------------------------------------
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> IMU660RC <20><><EFBFBD>ٶȼ<D9B6><C8BC><EFBFBD><EFBFBD><EFBFBD>ת<EFBFBD><D7AA>Ϊʵ<CEAA><CAB5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> acc_value <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD><C4BC>ٶȼ<D9B6><C8BC><EFBFBD><EFBFBD><EFBFBD>
|
||||
// <20><><EFBFBD>ز<EFBFBD><D8B2><EFBFBD> void
|
||||
// ʹ<><CAB9>ʾ<EFBFBD><CABE> float data = imu660rc_acc_transition(imu660rc_acc_x); // <20><>λΪ g(m/s^2)
|
||||
// <20><>ע<EFBFBD><D7A2>Ϣ
|
||||
//-------------------------------------------------------------------------------------------------------------------
|
||||
#define imu660rc_acc_transition(acc_value) ((float)(acc_value) / imu660rc_transition_factor[0])
|
||||
|
||||
//-------------------------------------------------------------------------------------------------------------------
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> IMU660RC <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ת<EFBFBD><D7AA>Ϊʵ<CEAA><CAB5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> gyro_value <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
// <20><><EFBFBD>ز<EFBFBD><D8B2><EFBFBD> void
|
||||
// ʹ<><CAB9>ʾ<EFBFBD><CABE> float data = imu660rc_gyro_transition(imu660rc_gyro_x); // <20><>λΪ <20><>/s
|
||||
// <20><>ע<EFBFBD><D7A2>Ϣ
|
||||
//-------------------------------------------------------------------------------------------------------------------
|
||||
#define imu660rc_gyro_transition(gyro_value) ((float)(gyro_value) / imu660rc_transition_factor[1])
|
||||
void imu660rc_callback (void);
|
||||
uint8 imu660rc_init (imu660rc_quarternion_rate_config quarternion_rate);
|
||||
|
||||
|
||||
|
||||
#endif
|
||||
@@ -97,7 +97,7 @@
|
||||
//================================================<3D><><EFBFBD><EFBFBD> IMU660RX ȫ<>ֱ<EFBFBD><D6B1><EFBFBD>================================================
|
||||
extern int16 imu660rx_gyro_x, imu660rx_gyro_y, imu660rx_gyro_z; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> gyro (<28><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>)
|
||||
extern int16 imu660rx_acc_x, imu660rx_acc_y, imu660rx_acc_z; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ٶȼ<D9B6><C8BC><EFBFBD><EFBFBD><EFBFBD> acc (accelerometer <20><><EFBFBD>ٶȼ<D9B6>)
|
||||
extern float imu660ra_transition_factor[2];
|
||||
extern float imu660rx_transition_factor[2];
|
||||
//================================================<3D><><EFBFBD><EFBFBD> IMU660RX ȫ<>ֱ<EFBFBD><D6B1><EFBFBD>================================================
|
||||
|
||||
|
||||
|
||||
@@ -167,7 +167,7 @@ void ips114_init (void);
|
||||
// ʹ<><CAB9>ʾ<EFBFBD><CABE> ips114_displayimage8660(scc8660_image[0], SCC8660_W, SCC8660_H);
|
||||
// <20><>ע<EFBFBD><D7A2>Ϣ <20><>չ<EFBFBD><D5B9>һ<EFBFBD><D2BB><EFBFBD><EFBFBD>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ĭ<EFBFBD><C4AC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ţ<EFBFBD><C5A3><EFBFBD><EFBFBD><EFBFBD>Ļ<EFBFBD><C4BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʼ<EFBFBD>㿪ʼ<E3BFAA><CABC>ʾ
|
||||
//-------------------------------------------------------------------------------------------------------------------
|
||||
#define ips114_displayimage8660(p, width, height) (ips114_show_rgb565_image(0, 0, (p), SCC8660_W, SCC8660_H, (width), (height), 1))
|
||||
#define ips114_displayimage8660(p, width, height) (ips114_show_rgb565_image(0, 0, (p), SCC8660_W, SCC8660_H, (width), (height), 0))
|
||||
//=================================================<3D><><EFBFBD><EFBFBD> IPS114 <20><>չ<EFBFBD><D5B9><EFBFBD><EFBFBD>================================================
|
||||
|
||||
#endif
|
||||
|
||||
@@ -220,7 +220,7 @@ void ips200_init (ips200_type_enum type_select);
|
||||
// ʹ<><CAB9>ʾ<EFBFBD><CABE> ips200_displayimage8660(scc8660_image[0], SCC8660_W, SCC8660_H);
|
||||
// <20><>ע<EFBFBD><D7A2>Ϣ <20><>չ<EFBFBD><D5B9>һ<EFBFBD><D2BB><EFBFBD><EFBFBD>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ĭ<EFBFBD><C4AC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ţ<EFBFBD><C5A3><EFBFBD><EFBFBD><EFBFBD>Ļ<EFBFBD><C4BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʼ<EFBFBD>㿪ʼ<E3BFAA><CABC>ʾ
|
||||
//-------------------------------------------------------------------------------------------------------------------
|
||||
#define ips200_displayimage8660(p, width, height) (ips200_show_rgb565_image(0, 0, (p), SCC8660_W, SCC8660_H, (width), (height), 1))
|
||||
#define ips200_displayimage8660(p, width, height) (ips200_show_rgb565_image(0, 0, (p), SCC8660_W, SCC8660_H, (width), (height), 0))
|
||||
//==================================================<3D><><EFBFBD><EFBFBD> IPS200 <20><>չ<EFBFBD><D5B9><EFBFBD><EFBFBD>================================================
|
||||
|
||||
|
||||
|
||||
@@ -86,7 +86,7 @@
|
||||
// <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_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 (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_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_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><C3A3><EFBFBD>֧<EFBFBD><D6A7><EFBFBD><EFBFBD>ͫ<EFBFBD><CDAB>֡<EFBFBD>ʰ汾<CAB0><E6B1BE>===========================
|
||||
|
||||
|
||||
@@ -24,7 +24,7 @@
|
||||
* <20>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD><EFBFBD> zf_device_wifi_spi
|
||||
* <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><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ADS v1.10.2
|
||||
* <20><><EFBFBD><EFBFBD>ƽ̨ TC264D
|
||||
* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> https://seekfree.taobao.com/
|
||||
*
|
||||
@@ -63,6 +63,21 @@
|
||||
#define SOCKET_CONNECT_TIME_OUT 50000 // <20><>λ<EFBFBD><CEBB><EFBFBD><EFBFBD>
|
||||
#define OTHER_TIME_OUT 1000 // <20><>λ<EFBFBD><CEBB><EFBFBD><EFBFBD>
|
||||
|
||||
#if ((WIFI_SPI_RECVIVE_SIZE < 32) || (WIFI_SPI_RECVIVE_SIZE > 4088))
|
||||
#error "WIFI_SPI_RECVIVE_SIZE must be >= 32 or <= 4088"
|
||||
#endif
|
||||
|
||||
#if (WIFI_SPI_RECVIVE_SIZE >= WIFI_SPI_RECVIVE_FIFO_SIZE)
|
||||
#error "WIFI_SPI_RECVIVE_FIFO_SIZE must be > WIFI_SPI_RECVIVE_SIZE"
|
||||
#endif
|
||||
|
||||
|
||||
#if (WIFI_SPI_TRANSFER_SIZE != 4088)
|
||||
#error "WIFI_SPI_TRANSFER_SIZE must be == 4088"
|
||||
#endif
|
||||
|
||||
|
||||
|
||||
char wifi_spi_version[12]; // <20><><EFBFBD><EFBFBD>ģ<EFBFBD><C4A3><EFBFBD>̼<EFBFBD><CCBC>汾<EFBFBD><E6B1BE>Ϣ
|
||||
char wifi_spi_mac_addr[20]; // <20><><EFBFBD><EFBFBD>ģ<EFBFBD><C4A3>MAC<41><43>ַ<EFBFBD><D6B7>Ϣ
|
||||
char wifi_spi_ip_addr_port[25]; // <20><><EFBFBD><EFBFBD>ģ<EFBFBD><C4A3>IP<49><50>ַ<EFBFBD><D6B7><EFBFBD>˿<EFBFBD><CBBF><EFBFBD>Ϣ
|
||||
@@ -271,8 +286,6 @@ static uint8 wifi_spi_get_version (void)
|
||||
{
|
||||
memcpy(wifi_spi_version, temp_packets.buffer, temp_packets.head.length);
|
||||
}
|
||||
return_state = (return_state == 0) ? (WIFI_SPI_REPLY_VERSION != temp_packets.head.command) : 1;
|
||||
|
||||
return return_state;
|
||||
}
|
||||
|
||||
@@ -293,8 +306,6 @@ static uint8 wifi_spi_get_mac_addr (void)
|
||||
{
|
||||
memcpy(wifi_spi_mac_addr, temp_packets.buffer, temp_packets.head.length);
|
||||
}
|
||||
return_state = (return_state == 0) ? (WIFI_SPI_REPLY_MAC_ADDR != temp_packets.head.command) : 1;
|
||||
|
||||
return return_state;
|
||||
}
|
||||
|
||||
@@ -316,7 +327,77 @@ static uint8 wifi_spi_get_ip_addr_port (void)
|
||||
{
|
||||
memcpy(wifi_spi_ip_addr_port, temp_packets.buffer, temp_packets.head.length);
|
||||
}
|
||||
return_state = (return_state == 0) ? (WIFI_SPI_REPLY_IP_ADDR != temp_packets.head.command) : 1;
|
||||
return return_state;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------------------------------------------------------
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> WIFI SPI <20><>ȡϵͳʱ<CDB3><CAB1>
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> time_format ʱ<><CAB1><EFBFBD><EFBFBD>ʽ
|
||||
// <20><><EFBFBD>ز<EFBFBD><D8B2><EFBFBD> *buffer <20><><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD>ַ<EFBFBD><D6B7><EFBFBD><EFBFBD><EFBFBD>ַ <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>С<EFBFBD><D0A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ҫ30<33><30><EFBFBD>ֽ<EFBFBD>
|
||||
// <20><><EFBFBD>ز<EFBFBD><D8B2><EFBFBD> buffer_size <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>С
|
||||
// <20><><EFBFBD>ز<EFBFBD><D8B2><EFBFBD> uint8 ״̬ 0-<2D>ɹ<EFBFBD> 1-<2D><><EFBFBD><EFBFBD>
|
||||
// ʹ<><CAB9>ʾ<EFBFBD><CABE>
|
||||
// <20><>ע<EFBFBD><D7A2>Ϣ <20><>Ҫ<EFBFBD><D2AA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȵ<EFBFBD>֮<EFBFBD><D6AE><EFBFBD><EFBFBD><EFBFBD>ܻ<EFBFBD>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD>ȷ<EFBFBD><C8B7>ʱ<EFBFBD>䣬<EFBFBD><E4A3AC><EFBFBD><EFBFBD><EFBFBD>ڵ<EFBFBD><DAB5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>֮ǰ<D6AE><C7B0>Ҫȷ<D2AA><C8B7>WIFIģ<49><C4A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ҫ<EFBFBD><D2AA><EFBFBD>յ<EFBFBD><D5B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ѿ<EFBFBD>ȫ<EFBFBD><C8AB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
// <20><>ע<EFBFBD><D7A2>Ϣ <20><>WIFI SPI <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>߰汾֧<E6B1BE><D6A7>
|
||||
// <20><>ע<EFBFBD><D7A2>Ϣ <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϢΪ<CFA2>ַ<EFBFBD><D6B7><EFBFBD><EFBFBD><EFBFBD>Ϣ<EFBFBD><CFA2><EFBFBD><EFBFBD>ֱ<EFBFBD><D6B1>printf<74><66><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֲ鿴
|
||||
//-------------------------------------------------------------------------------------------------------------------
|
||||
uint8 wifi_spi_get_time (wifi_spi_time_enum time_format, char *buffer, uint8 buffer_size)
|
||||
{
|
||||
uint8 return_state = 1;
|
||||
wifi_spi_packets_struct temp_packets;
|
||||
uint8 send_cmd, receive_cmd;
|
||||
|
||||
// <20><><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>30<33><30><EFBFBD>ֽ<EFBFBD>
|
||||
// <20><><EFBFBD><EFBFBD>ģ<EFBFBD><C4A3><EFBFBD>̼<EFBFBD><CCBC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>V2<56>汾
|
||||
if((30 <= buffer_size) && (!strncmp(wifi_spi_version, "V2", 2)))
|
||||
{
|
||||
send_cmd = WIFI_SPI_GET_TIME1 + time_format - WIFI_SPI_UTC_0;
|
||||
receive_cmd = WIFI_SPI_REPLY_TIME1 + time_format - WIFI_SPI_UTC_0;
|
||||
|
||||
return_state = wifi_spi_get_parameter(send_cmd, &temp_packets, OTHER_TIME_OUT);
|
||||
if((0 == return_state) && (receive_cmd == temp_packets.head.command))
|
||||
{
|
||||
return_state = (uint8)strncmp((const char *)temp_packets.buffer, "OK", 2);
|
||||
if(0 == return_state)
|
||||
{
|
||||
memcpy(buffer, &temp_packets.buffer[3], temp_packets.head.length - 3);
|
||||
buffer[temp_packets.head.length - 3] = 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
return return_state;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------------------------------------------------------
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> WIFI SPI ɨ<><C9A8><EFBFBD>ȵ<EFBFBD>
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> *buffer <20><><EFBFBD><EFBFBD>ɨ<EFBFBD>赽<EFBFBD><E8B5BD><EFBFBD>ȵ<EFBFBD><C8B5><EFBFBD>Ϣ <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ź<EFBFBD>ǿ<EFBFBD>ȣ<EFBFBD>ÿ<EFBFBD><C3BF><EFBFBD>ź<EFBFBD>ǿ<EFBFBD>Ⱥ<EFBFBD><C8BA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD>з<EFBFBD>
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> buffer_size <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ij<EFBFBD><C4B3><EFBFBD>
|
||||
// <20><><EFBFBD>ز<EFBFBD><D8B2><EFBFBD> uint8 ״̬ 0-<2D>ɹ<EFBFBD> 1-<2D><><EFBFBD><EFBFBD>
|
||||
// ʹ<><CAB9>ʾ<EFBFBD><CABE>
|
||||
// <20><>ע<EFBFBD><D7A2>Ϣ <20><>WIFI SPI <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>߰汾֧<E6B1BE><D6A7>
|
||||
// <20><>ע<EFBFBD><D7A2>Ϣ <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϢΪ<CFA2>ַ<EFBFBD><D6B7><EFBFBD><EFBFBD><EFBFBD>Ϣ<EFBFBD><CFA2><EFBFBD><EFBFBD>ֱ<EFBFBD><D6B1>printf<74><66><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֲ鿴
|
||||
// <20><>ע<EFBFBD><D7A2>Ϣ ÿһ<C3BF>а<EFBFBD><D0B0><EFBFBD>һ<EFBFBD><D2BB>wifi<66><69><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
//-------------------------------------------------------------------------------------------------------------------
|
||||
uint8 wifi_spi_wifi_scan (char *buffer, uint16 buffer_size)
|
||||
{
|
||||
uint8 return_state;
|
||||
|
||||
// ģ<><C4A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>V2<56>汾<EFBFBD>Ĺ̼<C4B9><CCBC><EFBFBD>֧<EFBFBD>ִ˹<D6B4><CBB9><EFBFBD>
|
||||
if(!strncmp(wifi_spi_version, "V2", 2))
|
||||
{
|
||||
return_state = wifi_spi_set_parameter(WIFI_SPI_SET_WIFI_SCAN, NULL, 0, WIFI_CONNECT_TIME_OUT);
|
||||
|
||||
if(0 == return_state)
|
||||
{
|
||||
#if (0 == WIFI_SPI_READ_TRANSFER)
|
||||
wifi_spi_send_buffer(NULL, 0);
|
||||
#endif
|
||||
while(0 == wifi_spi_read_buffer((uint8 *)buffer, buffer_size))
|
||||
{
|
||||
system_delay_ms(10);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return return_state;
|
||||
}
|
||||
@@ -505,7 +586,7 @@ uint32 wifi_spi_send_buffer (const uint8 *buffer, uint32 length)
|
||||
|
||||
while(length)
|
||||
{
|
||||
send_length = length > WIFI_SPI_TRANSFER_SIZE ? (uint16)WIFI_SPI_TRANSFER_SIZE : (uint16)length;
|
||||
send_length = (uint16) (length > WIFI_SPI_TRANSFER_SIZE ? WIFI_SPI_TRANSFER_SIZE : length);
|
||||
|
||||
if(wifi_spi_wait_idle(OTHER_TIME_OUT))
|
||||
{
|
||||
@@ -555,6 +636,18 @@ uint32 wifi_spi_send_buffer (const uint8 *buffer, uint32 length)
|
||||
return length;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------------------------------------------------------
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> WIFI SPI <20>ַ<EFBFBD><D6B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͺ<EFBFBD><CDBA><EFBFBD><EFBFBD><EFBFBD>ͬ<EFBFBD><CDAC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> *string <20><>Ҫ<EFBFBD><D2AA><EFBFBD>͵<EFBFBD><CDB5>ַ<EFBFBD><D6B7><EFBFBD>
|
||||
// <20><><EFBFBD>ز<EFBFBD><D8B2><EFBFBD> void
|
||||
// ʹ<><CAB9>ʾ<EFBFBD><CABE> wifi_spi_send_string("123");
|
||||
// <20><>ע<EFBFBD><D7A2>Ϣ
|
||||
//-------------------------------------------------------------------------------------------------------------------
|
||||
void wifi_spi_send_string(const char *string)
|
||||
{
|
||||
wifi_spi_send_buffer((uint8*)string, strlen(string));
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------------------------------------------------------
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> WIFI SPI <20><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> *buff <20><><EFBFBD>ջ<EFBFBD><D5BB><EFBFBD><EFBFBD><EFBFBD>
|
||||
@@ -566,32 +659,57 @@ uint32 wifi_spi_send_buffer (const uint8 *buffer, uint32 length)
|
||||
uint32 wifi_spi_read_buffer (uint8 *buffer, uint32 length)
|
||||
{
|
||||
zf_assert(NULL != buffer);
|
||||
uint32 data_len = length;
|
||||
uint32 fifo_read_length;
|
||||
uint32 write_length = 0;
|
||||
wifi_spi_packets_struct temp_packets;
|
||||
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD>ж<EFBFBD>FIFO<46><4F><EFBFBD>Ƿ<EFBFBD><C7B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݣ<EFBFBD><DDA3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȴ<EFBFBD>FIFO<46><4F>ȡ
|
||||
if(fifo_used(&wifi_spi_fifo))
|
||||
{
|
||||
fifo_read_length = fifo_used(&wifi_spi_fifo);
|
||||
fifo_read_length = length < fifo_read_length ? length : fifo_read_length;
|
||||
fifo_read_buffer(&wifi_spi_fifo, buffer, &fifo_read_length, FIFO_READ_AND_CLEAN);
|
||||
|
||||
buffer += fifo_read_length;
|
||||
length -= fifo_read_length;
|
||||
write_length += fifo_read_length;
|
||||
}
|
||||
|
||||
#if(1 == WIFI_SPI_READ_TRANSFER)
|
||||
|
||||
wifi_spi_packets_struct temp_packets;
|
||||
// <20><><EFBFBD><EFBFBD>WIFI SPI״̬<D7B4><CCAC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>жϻ<D0B6><CFBB><EFBFBD><EFBFBD>߳<EFBFBD><DFB3><EFBFBD><EFBFBD>Ѿ<EFBFBD><D1BE><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͨѶ<CDA8><D1B6><EFBFBD>β<F2B1BEB4><CEB2>ܷ<EFBFBD><DCB7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
if(WIFI_SPI_IDLE == wifi_spi_mutex)
|
||||
{
|
||||
// <20><>ͨѶ״̬<D7B4><CCAC><EFBFBD><EFBFBD>Ϊæ
|
||||
wifi_spi_mutex = WIFI_SPI_BUSY;
|
||||
wifi_spi_mutex = WIFI_SPI_BUSY; // <20><>ͨѶ״̬<D7B4><CCAC><EFBFBD><EFBFBD>Ϊæ
|
||||
|
||||
// <20><><EFBFBD><EFBFBD>ͨѶ<CDA8>鿴ģ<E9BFB4><C4A3><EFBFBD><EFBFBD><EFBFBD>Ƿ<EFBFBD><C7B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>δ<EFBFBD><CEB4>ȡ
|
||||
do
|
||||
{
|
||||
if(wifi_spi_wait_idle(OTHER_TIME_OUT))
|
||||
if( (WIFI_SPI_RECVIVE_SIZE > wifi_spi_fifo.size) || // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ռ䲻<D5BC><E4B2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ٶ<EFBFBD>ȡ
|
||||
(wifi_spi_wait_idle(OTHER_TIME_OUT)) // <20><>ʱ<EFBFBD>˳<EFBFBD>
|
||||
)
|
||||
{
|
||||
break;
|
||||
}
|
||||
|
||||
temp_packets.head.command = WIFI_SPI_DATA;
|
||||
temp_packets.head.length = 0;
|
||||
wifi_spi_transfer_command(&temp_packets, WIFI_SPI_RECVIVE_SIZE);
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD>յ<EFBFBD><D5B5>İ<EFBFBD><C4B0><EFBFBD><EFBFBD>Ƿ<EFBFBD><C7B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
if((WIFI_SPI_REPLY_DATA_START == temp_packets.head.command) || (WIFI_SPI_REPLY_DATA_END == temp_packets.head.command))
|
||||
if( ((WIFI_SPI_REPLY_DATA_START == temp_packets.head.command) || (WIFI_SPI_REPLY_DATA_END == temp_packets.head.command)) &&
|
||||
(temp_packets.head.length)
|
||||
)
|
||||
{
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>յ<EFBFBD><D5B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
if(temp_packets.head.length)
|
||||
if(length)
|
||||
{
|
||||
fifo_read_length = length >= temp_packets.head.length ? temp_packets.head.length : length;
|
||||
memcpy(buffer, temp_packets.buffer, fifo_read_length);
|
||||
buffer += fifo_read_length;
|
||||
length -= fifo_read_length;
|
||||
write_length += fifo_read_length;
|
||||
if(fifo_read_length < temp_packets.head.length) // <20>ⲿ<EFBFBD><E2B2BF><EFBFBD>岻<EFBFBD><E5B2BB><EFBFBD><EFBFBD><EFBFBD>ಿ<EFBFBD><E0B2BF>д<EFBFBD><D0B4>FIFO
|
||||
{
|
||||
fifo_write_buffer(&wifi_spi_fifo, temp_packets.buffer + fifo_read_length, temp_packets.head.length - fifo_read_length);
|
||||
}
|
||||
}
|
||||
else // ȫ<><C8AB>д<EFBFBD><D0B4>FIFO
|
||||
{
|
||||
fifo_write_buffer(&wifi_spi_fifo, temp_packets.buffer, temp_packets.head.length);
|
||||
}
|
||||
@@ -599,10 +717,9 @@ uint32 wifi_spi_read_buffer (uint8 *buffer, uint32 length)
|
||||
}while(WIFI_SPI_REPLY_DATA_START == temp_packets.head.command);
|
||||
wifi_spi_mutex = WIFI_SPI_IDLE;
|
||||
}
|
||||
#endif
|
||||
#endif
|
||||
|
||||
fifo_read_buffer(&wifi_spi_fifo, buffer, &data_len, FIFO_READ_AND_CLEAN);
|
||||
return data_len;
|
||||
return write_length;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------------------------------------------------------
|
||||
@@ -644,7 +761,11 @@ uint8 wifi_spi_init (char *wifi_ssid, char *pass_word)
|
||||
// MAC<41><43>ַ<EFBFBD><D6B7>Ϣ<EFBFBD><CFA2><EFBFBD>ַ<EFBFBD><D6B7><EFBFBD><EFBFBD><EFBFBD>ʽ<EFBFBD><CABD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>wifi_spi_mac_addr<64><72><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
wifi_spi_get_mac_addr();
|
||||
|
||||
|
||||
if(NULL == wifi_ssid)
|
||||
{
|
||||
// <20><>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ҫ<EFBFBD><D2AA><EFBFBD><EFBFBD>WIFI
|
||||
break;
|
||||
}
|
||||
return_state = wifi_spi_wifi_connect(wifi_ssid, pass_word);
|
||||
if(return_state)
|
||||
{
|
||||
|
||||
@@ -73,8 +73,8 @@
|
||||
#if (WIFI_SPI_AUTO_CONNECT > 2)
|
||||
#error "WIFI_SPI_AUTO_CONNECT <20><>ֵֻ<D6B5><D6BB>Ϊ [0,1,2]"
|
||||
#else
|
||||
#define WIFI_SPI_TARGET_IP "192.168.137.1" // <20><><EFBFBD><EFBFBD>Ŀ<EFBFBD><C4BF><EFBFBD><EFBFBD> IP
|
||||
#define WIFI_SPI_TARGET_PORT "8086" // <20><><EFBFBD><EFBFBD>Ŀ<EFBFBD><C4BF><EFBFBD>Ķ˿<C4B6>
|
||||
#define WIFI_SPI_TARGET_IP "192.168.2.37" // <20><><EFBFBD><EFBFBD>Ŀ<EFBFBD><C4BF><EFBFBD><EFBFBD> IP
|
||||
#define WIFI_SPI_TARGET_PORT "8080" // <20><><EFBFBD><EFBFBD>Ŀ<EFBFBD><C4BF><EFBFBD>Ķ˿<C4B6>
|
||||
#define WIFI_SPI_LOCAL_PORT "6666" // <20><><EFBFBD><EFBFBD><EFBFBD>Ķ˿<C4B6> 0<><30><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>÷<EFBFBD>Χ2048-65535 Ĭ<><C4AC> 6666
|
||||
#endif
|
||||
|
||||
@@ -95,10 +95,15 @@ typedef enum
|
||||
|
||||
WIFI_SPI_SET_WIFI_INFORMATION = 0x10, // <20><><EFBFBD><EFBFBD>WIFI<46><49>Ϣ<EFBFBD><CFA2><EFBFBD><EFBFBD>
|
||||
WIFI_SPI_SET_SOCKET_INFORMATION = 0x11, // <20><><EFBFBD><EFBFBD>SOCKET<45><54>Ϣ<EFBFBD><CFA2><EFBFBD><EFBFBD>
|
||||
WIFI_SPI_SET_WIFI_SCAN = 0x12, // <20><>ʼɨ<CABC><C9A8>WIFI
|
||||
WIFI_SPI_SET_READ_LENGTH = 0x13, // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD>
|
||||
|
||||
WIFI_SPI_GET_VERSION = 0x20, // <20><>ȡģ<C8A1><C4A3><EFBFBD>汾
|
||||
WIFI_SPI_GET_MAC_ADDR = 0x21, // <20><>ȡģ<C8A1><C4A3>MAC<41><43>ַ
|
||||
WIFI_SPI_GET_IP_ADDR = 0x22, // <20><>ȡģ<C8A1><C4A3>IP<49><50>ַ
|
||||
WIFI_SPI_GET_TIME1 = 0x23, // <20><>ȡʱ<C8A1><CAB1> <20><>ʽ1
|
||||
WIFI_SPI_GET_TIME2 = 0x24, // <20><>ȡʱ<C8A1><CAB1> <20><>ʽ2
|
||||
WIFI_SPI_GET_TIME3 = 0x25, // <20><>ȡʱ<C8A1><CAB1> <20><>ʽ3
|
||||
|
||||
// <20>ӻ<EFBFBD><D3BB>ش<EFBFBD><D8B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
WIFI_SPI_REPLY_OK = 0x80, // <20>ӻ<EFBFBD>Ӧ<EFBFBD><D3A6><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȷ<EFBFBD><C8B7><EFBFBD><EFBFBD>
|
||||
@@ -110,6 +115,9 @@ typedef enum
|
||||
WIFI_SPI_REPLY_VERSION = 0xA0, // <20>ӻ<EFBFBD><D3BB>ظ<EFBFBD><D8B8>̼<EFBFBD><CCBC>汾
|
||||
WIFI_SPI_REPLY_MAC_ADDR = 0xA1, // <20>ӻ<EFBFBD><D3BB>ظ<EFBFBD><D8B8><EFBFBD><EFBFBD><EFBFBD>MAC<41><43>ַ<EFBFBD><D6B7><EFBFBD><EFBFBD>Ϣ
|
||||
WIFI_SPI_REPLY_IP_ADDR = 0xA2, // <20>ӻ<EFBFBD><D3BB>ظ<EFBFBD><D8B8><EFBFBD><EFBFBD><EFBFBD>IP<49><50>ַ<EFBFBD><D6B7><EFBFBD>˿ں<CBBF>
|
||||
WIFI_SPI_REPLY_TIME1 = 0xA3, // <20>ӻ<EFBFBD><D3BB>ظ<EFBFBD>ʱ<EFBFBD><CAB1>
|
||||
WIFI_SPI_REPLY_TIME2 = 0xA4, // <20>ӻ<EFBFBD><D3BB>ظ<EFBFBD>ʱ<EFBFBD><CAB1>
|
||||
WIFI_SPI_REPLY_TIME3 = 0xA5, // <20>ӻ<EFBFBD><D3BB>ظ<EFBFBD>ʱ<EFBFBD><CAB1>
|
||||
WIFI_SPI_INVALID2 = 0xFF // <20><>Ч<EFBFBD><D0A7><EFBFBD>ݰ<EFBFBD>
|
||||
}wifi_spi_packets_command_enum;
|
||||
|
||||
@@ -134,19 +142,27 @@ typedef struct
|
||||
uint8 buffer[WIFI_SPI_RECVIVE_SIZE]; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
}wifi_spi_packets_struct;
|
||||
|
||||
|
||||
typedef enum
|
||||
{
|
||||
WIFI_SPI_UTC_0 = 1, // <20><><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1>
|
||||
WIFI_SPI_GMT, // <20><><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1> ת<><D7AA>ΪGMT<4D><54>ʽ<EFBFBD><CABD><EFBFBD><EFBFBD><EFBFBD><D7BA><EFBFBD><EFBFBD>GMT һ<><D2BB><EFBFBD><EFBFBD><EFBFBD>ڶԽ<DAB6><D4BD>ƶ˴<C6B6>ģ<EFBFBD><C4A3>ʹ<EFBFBD><CAB9>
|
||||
WIFI_SPI_UTC_8, // <20><><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1>
|
||||
}wifi_spi_time_enum;
|
||||
|
||||
extern char wifi_spi_version[12]; // <20>̼<EFBFBD><CCBC>汾 <20>ַ<EFBFBD><D6B7><EFBFBD>
|
||||
extern char wifi_spi_mac_addr[20]; // ģ<><C4A3>MAC<41><43>ַ <20>ַ<EFBFBD><D6B7><EFBFBD>
|
||||
extern char wifi_spi_ip_addr_port[25]; // IP<49><50>ַ<EFBFBD><D6B7><EFBFBD>˿ں<CBBF> <20>ַ<EFBFBD><D6B7><EFBFBD>
|
||||
|
||||
uint8 wifi_spi_wifi_connect (char *wifi_ssid, char *pass_word);
|
||||
uint8 wifi_spi_socket_connect (char *transport_type, char *ip_addr, char *port, char *local_port);
|
||||
uint8 wifi_spi_socket_disconnect (void);
|
||||
uint8 wifi_spi_udp_send_now (void);
|
||||
uint32 wifi_spi_send_buffer (const uint8 *buff, uint32 length);
|
||||
uint32 wifi_spi_read_buffer (uint8 *buffer, uint32 length);
|
||||
uint8 wifi_spi_get_time (wifi_spi_time_enum time_format, char *buffer, uint8 buffer_size);
|
||||
uint8 wifi_spi_wifi_scan (char *buffer, uint16 buffer_size);
|
||||
uint8 wifi_spi_wifi_connect (char *wifi_ssid, char *pass_word);
|
||||
uint8 wifi_spi_socket_connect (char *transport_type, char *ip_addr, char *port, char *local_port);
|
||||
uint8 wifi_spi_socket_disconnect (void);
|
||||
uint8 wifi_spi_udp_send_now (void);
|
||||
uint32 wifi_spi_send_buffer (const uint8 *buff, uint32 length);
|
||||
void wifi_spi_send_string (const char *string);
|
||||
uint32 wifi_spi_read_buffer (uint8 *buffer, uint32 length);
|
||||
|
||||
uint8 wifi_spi_init (char *wifi_ssid, char *pass_word);
|
||||
uint8 wifi_spi_init (char *wifi_ssid, char *pass_word);
|
||||
|
||||
#endif
|
||||
|
||||
|
||||
@@ -73,7 +73,7 @@
|
||||
#if (WIFI_UART_AUTO_CONNECT > 3)
|
||||
#error "WIFI_UART_AUTO_CONNECT <20><>ֵֻ<D6B5><D6BB>Ϊ [0,1,2,3]"
|
||||
#else
|
||||
#define WIFI_UART_TARGET_IP "192.168.137.1" // <20><><EFBFBD><EFBFBD>Ŀ<EFBFBD><C4BF><EFBFBD><EFBFBD> IP
|
||||
#define WIFI_UART_TARGET_IP "192.168.2.37" // <20><><EFBFBD><EFBFBD>Ŀ<EFBFBD><C4BF><EFBFBD><EFBFBD> IP
|
||||
#define WIFI_UART_TARGET_PORT "8080" // <20><><EFBFBD><EFBFBD>Ŀ<EFBFBD><C4BF><EFBFBD>Ķ˿<C4B6>
|
||||
#define WIFI_UART_LOCAL_PORT "8080" // <20><><EFBFBD><EFBFBD><EFBFBD>˿<EFBFBD>
|
||||
#endif
|
||||
|
||||
@@ -171,7 +171,7 @@ void encoder_clear_count (encoder_index_enum encoder_n)
|
||||
//-------------------------------------------------------------------------------------------------------------------
|
||||
void encoder_quad_init (encoder_index_enum encoder_n, encoder_channel1_enum ch1_pin, encoder_channel2_enum ch2_pin)
|
||||
{
|
||||
// zf_assert(encoder_n <= TIM4_ENCODER); // <20><>ȫ<EFBFBD><C8AB><EFBFBD><EFBFBD><EFBFBD>ɼ<EFBFBD><C9BC><EFBFBD> TIM2 TIM3 TIM4֧<34><D6A7> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ﱨ<EFBFBD><EFB1A8> <20><><EFBFBD>Գ<EFBFBD><D4B3><EFBFBD>ʹ<EFBFBD><CAB9><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ķ<EFBFBD><C4B7><EFBFBD><EFBFBD><EFBFBD>ʼ<EFBFBD><CABC>encoder_dir_init
|
||||
zf_assert(encoder_n <= TIM4_ENCODER); // <20><>ȫ<EFBFBD><C8AB><EFBFBD><EFBFBD><EFBFBD>ɼ<EFBFBD><C9BC><EFBFBD> TIM2 TIM3 TIM4֧<34><D6A7> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ﱨ<EFBFBD><EFB1A8> <20><><EFBFBD>Գ<EFBFBD><D4B3><EFBFBD>ʹ<EFBFBD><CAB9><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ķ<EFBFBD><C4B7><EFBFBD><EFBFBD><EFBFBD>ʼ<EFBFBD><CABC>encoder_dir_init
|
||||
|
||||
IfxGpt12_enableModule(&MODULE_GPT120);
|
||||
IfxGpt12_setGpt1BlockPrescaler(&MODULE_GPT120, IfxGpt12_Gpt1BlockPrescaler_4);
|
||||
|
||||
@@ -40,14 +40,14 @@
|
||||
// <20><EFBFBD>˵ʵ<CBB5><CAB5><EFBFBD>Ͻ<EFBFBD><CFBD><EFBFBD><EFBFBD>жϺ<D0B6>TCϵ<43>е<EFBFBD>Ӳ<EFBFBD><D3B2><EFBFBD>Զ<EFBFBD><D4B6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> interrupt_global_disable(); <20><><EFBFBD>ܾ<EFBFBD><DCBE><EFBFBD>Ӧ<EFBFBD>κε<CEBA><CEB5>жϣ<D0B6><CFA3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ҫ<EFBFBD><D2AA><EFBFBD><EFBFBD><EFBFBD>Լ<EFBFBD><D4BC>ֶ<EFBFBD><D6B6><EFBFBD><EFBFBD><EFBFBD> interrupt_global_enable(0); <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>жϵ<D0B6><CFB5><EFBFBD>Ӧ<EFBFBD><D3A6>
|
||||
|
||||
// **************************** PIT<49>жϺ<D0B6><CFBA><EFBFBD> ****************************
|
||||
IFX_INTERRUPT(cc60_pit_ch0_isr, 0, CCU6_0_CH0_ISR_PRIORITY)
|
||||
{
|
||||
interrupt_global_enable(0); // <20><><EFBFBD><EFBFBD><EFBFBD>ж<EFBFBD>Ƕ<EFBFBD><C7B6>
|
||||
pit_clear_flag(CCU60_CH0);
|
||||
|
||||
|
||||
|
||||
}
|
||||
//IFX_INTERRUPT(cc60_pit_ch0_isr, 0, CCU6_0_CH0_ISR_PRIORITY)
|
||||
//{
|
||||
// interrupt_global_enable(0); // <20><><EFBFBD><EFBFBD><EFBFBD>ж<EFBFBD>Ƕ<EFBFBD><C7B6>
|
||||
// pit_clear_flag(CCU60_CH0);
|
||||
//
|
||||
//
|
||||
//
|
||||
//}
|
||||
|
||||
|
||||
IFX_INTERRUPT(cc60_pit_ch1_isr, 0, CCU6_0_CH1_ISR_PRIORITY)
|
||||
@@ -89,7 +89,8 @@ IFX_INTERRUPT(exti_ch0_ch4_isr, 0, EXTI_CH0_CH4_INT_PRIO)
|
||||
if(exti_flag_get(ERU_CH0_REQ0_P15_4)) // ͨ<><CDA8>0<EFBFBD>ж<EFBFBD>
|
||||
{
|
||||
exti_flag_clear(ERU_CH0_REQ0_P15_4);
|
||||
|
||||
|
||||
imu660rc_callback(); // 660RC ģ<><C4A3> INT <20><><EFBFBD><EFBFBD><EFBFBD>ж<EFBFBD>
|
||||
}
|
||||
|
||||
if(exti_flag_get(ERU_CH4_REQ13_P15_5)) // ͨ<><CDA8>4<EFBFBD>ж<EFBFBD>
|
||||
@@ -118,7 +119,6 @@ IFX_INTERRUPT(exti_ch1_ch5_isr, 0, EXTI_CH1_CH5_INT_PRIO)
|
||||
{
|
||||
exti_flag_clear(ERU_CH5_REQ1_P15_8);
|
||||
|
||||
|
||||
|
||||
}
|
||||
}
|
||||
@@ -136,7 +136,6 @@ IFX_INTERRUPT(exti_ch1_ch5_isr, 0, EXTI_CH1_CH5_INT_PRIO)
|
||||
// exti_flag_clear(ERU_CH6_REQ9_P20_0);
|
||||
// }
|
||||
// }
|
||||
|
||||
IFX_INTERRUPT(exti_ch3_ch7_isr, 0, EXTI_CH3_CH7_INT_PRIO)
|
||||
{
|
||||
interrupt_global_enable(0); // <20><><EFBFBD><EFBFBD><EFBFBD>ж<EFBFBD>Ƕ<EFBFBD><C7B6>
|
||||
@@ -229,7 +228,7 @@ IFX_INTERRUPT(uart3_tx_isr, 0, UART3_TX_INT_PRIO)
|
||||
IFX_INTERRUPT(uart3_rx_isr, 0, UART3_RX_INT_PRIO)
|
||||
{
|
||||
interrupt_global_enable(0); // <20><><EFBFBD><EFBFBD><EFBFBD>ж<EFBFBD>Ƕ<EFBFBD><C7B6>
|
||||
gnss_uart_callback(); // GPS<EFBFBD><EFBFBD><EFBFBD>ڻص<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
gnss_uart_callback(); // GNSS<EFBFBD><EFBFBD><EFBFBD>ڻص<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -1,3 +1,13 @@
|
||||
V3.4.4
|
||||
<20><><EFBFBD><EFBFBD>SCC8660<36><30><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʽ
|
||||
<20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ָ<EFBFBD><D6B8><EFBFBD>V2<56><32><EFBFBD><EFBFBD>
|
||||
<20><EFBFBD>ips200<30><30>ʾscc8660<36><30><EFBFBD><EFBFBD>ͷ<EFBFBD><CDB7>ʽ
|
||||
<20><EFBFBD>ips114<31><34>ʾscc8660<36><30><EFBFBD><EFBFBD>ͷ<EFBFBD><CDB7>ʽ
|
||||
V3.4.3
|
||||
<09><><EFBFBD><EFBFBD>660RC<52><43><EFBFBD><EFBFBD>
|
||||
V3.4.2
|
||||
<09><EFBFBD>printf<74>ض<EFBFBD><D8B6><EFBFBD><EFBFBD>еĺ궨<C4BA><EAB6A8>
|
||||
<09><><EFBFBD><EFBFBD>WIFI_SPI<50><49><EFBFBD><EFBFBD>
|
||||
V3.4.1
|
||||
<09>Ĵ<DEB8><C4B4>ڷ<EFBFBD><DAB7><EFBFBD><EFBFBD><EFBFBD><EFBFBD>麯<EFBFBD><E9BAAF><EFBFBD>еķ<D0B5><C4B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
<09><EFBFBD>ips200proע<6F><D7A2>
|
||||
|
||||
@@ -91,6 +91,7 @@
|
||||
#include "zf_device_imu660ra.h"
|
||||
#include "zf_device_imu660rb.h"
|
||||
#include "zf_device_imu660rx.h"
|
||||
#include "zf_device_imu660rc.h"
|
||||
#include "zf_device_imu963ra.h"
|
||||
#include "zf_device_ips114.h"
|
||||
#include "zf_device_ips200.h"
|
||||
|
||||
@@ -45,7 +45,7 @@
|
||||
//-------------------------------------------------------------------------------------------------------------------
|
||||
int fputc(int ch, FILE *stream)
|
||||
{
|
||||
uart_write_byte(DEBUG_UART_INDEX, (char)ch);
|
||||
uart_write_byte(PRINTF_USE_UART, (char)ch);
|
||||
|
||||
return (ch);
|
||||
}
|
||||
@@ -71,7 +71,7 @@ int _write(int fd, char *buf, int len)
|
||||
int fgetc(FILE *f)
|
||||
{
|
||||
#if PRINTF_OUTPUT_TYPE == 0
|
||||
return uart_read_byte(DEBUG_UART_INDEX);
|
||||
return uart_read_byte(PRINTF_USE_UART);
|
||||
#else
|
||||
uint8 buf;
|
||||
wifi_spi_read_buffer(&buf, 1);
|
||||
|
||||
@@ -1,20 +1,20 @@
|
||||
/*********************************************************************************************************************
|
||||
* 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>
|
||||
* RT1064DVL6A Opensourec Library <20><><EFBFBD><EFBFBD>RT1064DVL6A <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><C4BC><EFBFBD> RT1064DVL6A <20><>Դ<EFBFBD><D4B4><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD>
|
||||
*
|
||||
* RT1064DVL6A <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>
|
||||
@@ -24,423 +24,519 @@
|
||||
* <20>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD><EFBFBD> seekfree_assistant
|
||||
* <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.10.2
|
||||
* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ADS v1.9.4
|
||||
* <20><><EFBFBD><EFBFBD>ƽ̨ TC264D
|
||||
* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> https://seekfree.taobao.com/
|
||||
*
|
||||
*
|
||||
* <20>ļ<DEB8>¼
|
||||
* <20><><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>ע
|
||||
* 2024-01-01 pudding first version
|
||||
* <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><>ע
|
||||
* 2024-1-11 SeekFree first version
|
||||
********************************************************************************************************************/
|
||||
|
||||
#include "zf_common_debug.h"
|
||||
|
||||
#include "seekfree_assistant.h"
|
||||
|
||||
// ͨ<><CDA8><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ö<EFBFBD><C3B6>
|
||||
typedef enum
|
||||
{
|
||||
SEEKFREE_ASSISTANT_SEND_CCD_CMD = 0x01 ,
|
||||
SEEKFREE_ASSISTANT_SEND_CAMERA_CMD ,
|
||||
SEEKFREE_ASSISTANT_SEND_CAMERA_BOUNDARY_CMD ,
|
||||
SEEKFREE_ASSISTANT_SEND_CAMERA_RECTANGULAR_CMD ,
|
||||
|
||||
extern uint32 seekfree_assistant_transfer (const uint8 *buff, uint32 length);
|
||||
extern uint32 seekfree_assistant_receive (uint8 *buff, uint32 length);
|
||||
SEEKFREE_ASSISTANT_SEND_OSCILLOSCOPE_CMD = 0x10 ,
|
||||
|
||||
#if (1 == SEEKFREE_ASSISTANT_SET_PARAMETR_ENABLE)
|
||||
SEEKFREE_ASSISTANT_RECEIVE_DEBUG_PARAM_CMD = 0x20 ,
|
||||
}seekfree_assistant_cmd_type_enum;
|
||||
|
||||
#define SEEKFREE_ASSISTANT_SEND_HEAD ( 0xAA ) // <20><>Ƭ<EFBFBD><C6AC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>λ<EFBFBD><CEBB><EFBFBD><EFBFBD><EFBFBD>͵<EFBFBD>֡ͷ
|
||||
#define SEEKFREE_ASSISTANT_RECEIVE_HEAD ( 0x55 ) // <20><>λ<EFBFBD><CEBB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƭ<EFBFBD><C6AC><EFBFBD><EFBFBD><EFBFBD>͵<EFBFBD>֡ͷ
|
||||
|
||||
// <20><><EFBFBD>ݷ<EFBFBD><DDB7>ͺ<EFBFBD><CDBA><EFBFBD>ָ<EFBFBD><D6B8><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
extern uint32 seekfree_assistant_transfer (const uint8 *buff, uint32 length);
|
||||
seekfree_assistant_transfer_callback_function seekfree_assistant_transfer_callback = seekfree_assistant_transfer;
|
||||
|
||||
// <20><><EFBFBD>ݽ<EFBFBD><DDBD>պ<EFBFBD><D5BA><EFBFBD>ָ<EFBFBD><D6B8><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
extern uint32 seekfree_assistant_receive (uint8 *buff, uint32 length);
|
||||
seekfree_assistant_receive_callback_function seekfree_assistant_receive_callback = seekfree_assistant_receive;
|
||||
|
||||
#if (SEEKFREE_ASSISTANT_DEBUG_PARAM_ENABLE)
|
||||
#include "zf_common_fifo.h"
|
||||
static uint8 seekfree_assistant_buffer[SEEKFREE_ASSISTANT_BUFFER_SIZE]; // FIFO<46><4F><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
static fifo_struct seekfree_assistant_fifo = // FIFO<46>ṹ<EFBFBD><E1B9B9>
|
||||
static uint8 seekfree_assistant_debug_param_buffer[SEEKFREE_ASSISTANT_DEBUG_PARAM_BUFFER_SIZE];
|
||||
static fifo_struct seekfree_assistant_debug_param_fifo =
|
||||
{
|
||||
.buffer = seekfree_assistant_buffer,
|
||||
.buffer = seekfree_assistant_debug_param_buffer,
|
||||
.execution = FIFO_IDLE,
|
||||
.type = FIFO_DATA_8BIT,
|
||||
.head = 0,
|
||||
.end = 0,
|
||||
.size = SEEKFREE_ASSISTANT_BUFFER_SIZE,
|
||||
.max = SEEKFREE_ASSISTANT_BUFFER_SIZE,
|
||||
};
|
||||
.size = SEEKFREE_ASSISTANT_DEBUG_PARAM_BUFFER_SIZE,
|
||||
.max = SEEKFREE_ASSISTANT_DEBUG_PARAM_BUFFER_SIZE,
|
||||
};
|
||||
#endif
|
||||
|
||||
static seekfree_assistant_camera_struct seekfree_assistant_camera_data; // ͼ<><CDBC><EFBFBD><EFBFBD>λ<EFBFBD><CEBB>Э<EFBFBD><D0AD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
static seekfree_assistant_camera_dot_struct seekfree_assistant_camera_dot_data; // ͼ<><CDBC><EFBFBD><EFBFBD>λ<EFBFBD><CEBB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Э<EFBFBD><D0AD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
static seekfree_assistant_camera_buffer_struct seekfree_assistant_camera_buffer; // ͼ<><CDBC><EFBFBD>Լ<EFBFBD><D4BC>߽绺<DFBD><E7BBBA><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ
|
||||
|
||||
seekfree_assistant_transfer_callback_function seekfree_assistant_transfer_callback = seekfree_assistant_transfer; // <20><><EFBFBD>ݷ<EFBFBD><DDB7>ͺ<EFBFBD><CDBA><EFBFBD>ָ<EFBFBD><D6B8>
|
||||
seekfree_assistant_receive_callback_function seekfree_assistant_receive_callback = seekfree_assistant_receive; // <20><><EFBFBD>ݽ<EFBFBD><DDBD>պ<EFBFBD><D5BA><EFBFBD>ָ<EFBFBD><D6B8>
|
||||
|
||||
seekfree_assistant_oscilloscope_struct seekfree_assistant_oscilloscope_data; // <20><><EFBFBD><EFBFBD>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
float seekfree_assistant_parameter[SEEKFREE_ASSISTANT_SET_PARAMETR_COUNT] = {0}; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>յ<EFBFBD><D5B5>IJ<EFBFBD><C4B2><EFBFBD>
|
||||
vuint8 seekfree_assistant_parameter_update_flag[SEEKFREE_ASSISTANT_SET_PARAMETR_COUNT] = {0}; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>±<EFBFBD>־λ
|
||||
|
||||
//-------------------------------------------------------------------------------------------------------------------
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͺ<EFBFBD><CDBA><EFBFBD>
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> *buffer <20><>ҪУ<D2AA><D0A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݵ<EFBFBD>ַ
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> length У<>鳤<EFBFBD><E9B3A4>
|
||||
// <20><><EFBFBD>ز<EFBFBD><D8B2><EFBFBD> uint8 <20><>ֵ
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> *buffer <EFBFBD><EFBFBD>ҪУ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݵ<EFBFBD>ַ
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> length У<EFBFBD>鳤<EFBFBD><EFBFBD>
|
||||
// <20><><EFBFBD>ز<EFBFBD><D8B2><EFBFBD> uint8 <EFBFBD><EFBFBD>ֵ
|
||||
// ʹ<><CAB9>ʾ<EFBFBD><CABE>
|
||||
//-------------------------------------------------------------------------------------------------------------------
|
||||
static uint8 seekfree_assistant_sum (uint8 *buffer, uint32 length)
|
||||
static uint8 seekfree_assistant_sum (void *buffer, uint32 length)
|
||||
{
|
||||
uint8 temp_sum = 0;
|
||||
uint8 *ptr = (uint8 *)buffer;
|
||||
|
||||
while(length--)
|
||||
{
|
||||
temp_sum += *buffer++;
|
||||
temp_sum += *ptr ++;
|
||||
}
|
||||
|
||||
return temp_sum;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------------------------------------------------------
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ͼ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͺ<EFBFBD><EFBFBD><EFBFBD>
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> camera_type <20><><EFBFBD><EFBFBD>ͷ<EFBFBD><CDB7><EFBFBD><EFBFBD>
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> *image_addr ͼ<><CDBC><EFBFBD><EFBFBD>ַ
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> boundary_num ͼ<><CDBC><EFBFBD>а<EFBFBD><D0B0><EFBFBD><EFBFBD>߽<EFBFBD><DFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> width ͼ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> height ͼ<EFBFBD><EFBFBD><EFBFBD>߶<EFBFBD>
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> CCD ͼ<><CDBC> <20><EFBFBD><EFBFBD><EFBFBD>
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> *ccd_obj CCD <20><><EFBFBD>ݽṹ<EFBFBD><EFBFBD>
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> data_type <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> seekfree_assistant_data_type_enum
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> channel_index CCD ͨ<EFBFBD><EFBFBD>
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> channel_color ͨ<EFBFBD><EFBFBD>Ҫʹ<EFBFBD>õ<EFBFBD><EFBFBD><EFBFBD>ɫ
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> data_lenght CCD <20><><EFBFBD>ݳ<EFBFBD><DDB3><EFBFBD>
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> *data_buffer CCD <20><><EFBFBD>ݻ<EFBFBD><DDBB><EFBFBD><EFBFBD><EFBFBD>
|
||||
// <20><><EFBFBD>ز<EFBFBD><D8B2><EFBFBD> void
|
||||
// ʹ<><CAB9>ʾ<EFBFBD><CABE>
|
||||
// ʹ<><CAB9>ʾ<EFBFBD><CABE> seekfree_assistant_ccd_config(ccd_obj, data_type, channel_index, channel_color, data_lenght, data_buffer);
|
||||
//-------------------------------------------------------------------------------------------------------------------
|
||||
void seekfree_assistant_camera_data_send (seekfree_assistant_image_type_enum camera_type, void *image_addr, uint8 boundary_num, uint16 width, uint16 height)
|
||||
void seekfree_assistant_ccd_config (
|
||||
seekfree_assistant_ccd_struct *ccd_obj,
|
||||
seekfree_assistant_data_type_enum data_type,
|
||||
uint8 channel_index,
|
||||
uint16 channel_color,
|
||||
uint16 data_lenght,
|
||||
void *data_buffer)
|
||||
{
|
||||
uint32 image_size = 0;
|
||||
zf_assert(NULL != ccd_obj);
|
||||
zf_assert(NULL != data_buffer);
|
||||
|
||||
seekfree_assistant_camera_data.head = SEEKFREE_ASSISTANT_SEND_HEAD;
|
||||
seekfree_assistant_camera_data.function = SEEKFREE_ASSISTANT_CAMERA_FUNCTION;
|
||||
seekfree_assistant_camera_data.camera_type = (camera_type << 5) | ((image_addr != NULL ? 0 : 1) << 4) | boundary_num;
|
||||
// д<><D0B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ<EFBFBD><CFA2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Э<EFBFBD>鲿<EFBFBD><E9B2BF>
|
||||
seekfree_assistant_camera_data.length = sizeof(seekfree_assistant_camera_struct);
|
||||
seekfree_assistant_camera_data.image_width = width;
|
||||
seekfree_assistant_camera_data.image_height = height;
|
||||
memset(ccd_obj, 0, sizeof(seekfree_assistant_ccd_struct));
|
||||
ccd_obj->config.head = SEEKFREE_ASSISTANT_SEND_HEAD;
|
||||
ccd_obj->config.cmd = SEEKFREE_ASSISTANT_SEND_CCD_CMD;
|
||||
ccd_obj->config.channel_index = channel_index;
|
||||
|
||||
// <20><><EFBFBD>ȷ<EFBFBD><C8B7><EFBFBD>֡ͷ<D6A1><CDB7><EFBFBD><EFBFBD><EFBFBD>ܡ<EFBFBD><DCA1><EFBFBD><EFBFBD><EFBFBD>ͷ<EFBFBD><CDB7><EFBFBD>͡<EFBFBD><CDA1>Լ<EFBFBD><D4BC><EFBFBD><EFBFBD>ȸ߶ȵ<DFB6><C8B5><EFBFBD>Ϣ
|
||||
seekfree_assistant_transfer_callback((const uint8 *)&seekfree_assistant_camera_data, sizeof(seekfree_assistant_camera_struct));
|
||||
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͷ<EFBFBD><CDB7><EFBFBD>ͼ<EFBFBD><CDBC><EFBFBD>ͼ<EFBFBD><CDBC><EFBFBD><EFBFBD>С
|
||||
switch(camera_type)
|
||||
uint16 data_max = 256;
|
||||
uint8 loop_count = SEEKFREE_ASSISTANT_CCD_RESOLUTION_DEFAULT;
|
||||
loop_count = (2 >= loop_count) ? (loop_count) : (2);
|
||||
for(uint8 i = 0; loop_count > i; i ++)
|
||||
{
|
||||
case SEEKFREE_ASSISTANT_OV7725_BIN:
|
||||
{
|
||||
image_size = width * height / 8;
|
||||
}break;
|
||||
|
||||
case SEEKFREE_ASSISTANT_MT9V03X:
|
||||
{
|
||||
image_size = width * height;
|
||||
}break;
|
||||
|
||||
case SEEKFREE_ASSISTANT_SCC8660:
|
||||
{
|
||||
image_size = width * height * 2;
|
||||
}break;
|
||||
data_max *= 4;
|
||||
}
|
||||
|
||||
// <20><><EFBFBD><EFBFBD>ͼ<EFBFBD><CDBC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
if(NULL != image_addr)
|
||||
#if (SEEKFREE_ASSISTANT_STC_DATA_ENABLE)
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> STC <20><>ô<EFBFBD><C3B4>С<EFBFBD>˷<EFBFBD>һ<EFBFBD><D2BB>
|
||||
ccd_obj->config.data_lenght_buffer[0] = (uint8)((data_lenght >> 8) & 0x00FF);
|
||||
ccd_obj->config.data_lenght_buffer[1] = (uint8)((data_lenght >> 0) & 0x00FF);
|
||||
ccd_obj->config.channel_color_buffer[0] = (uint8)((channel_color >> 8) & 0x00FF);
|
||||
ccd_obj->config.channel_color_buffer[1] = (uint8)((channel_color >> 0) & 0x00FF);
|
||||
ccd_obj->config.channel_data_max[0] = (uint8)((data_max >> 8) & 0x00FF);
|
||||
ccd_obj->config.channel_data_max[1] = (uint8)((data_max >> 0) & 0x00FF);
|
||||
#else
|
||||
ccd_obj->config.data_lenght_buffer[0] = (uint8)((data_lenght >> 0) & 0x00FF);
|
||||
ccd_obj->config.data_lenght_buffer[1] = (uint8)((data_lenght >> 8) & 0x00FF);
|
||||
ccd_obj->config.channel_color_buffer[0] = (uint8)((channel_color >> 0) & 0x00FF);
|
||||
ccd_obj->config.channel_color_buffer[1] = (uint8)((channel_color >> 8) & 0x00FF);
|
||||
ccd_obj->config.channel_data_max[0] = (uint8)((data_max >> 0) & 0x00FF);
|
||||
ccd_obj->config.channel_data_max[1] = (uint8)((data_max >> 8) & 0x00FF);
|
||||
#endif
|
||||
|
||||
if( SEEKFREE_ASSISTANT_STC_DATA_ENABLE
|
||||
&& SEEKFREE_ASSISTANT_DATA_TYPE_UINT16 == data_type)
|
||||
{ // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> uint16 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> STC <20><>Ƭ<EFBFBD><C6AC> <20><>ô<EFBFBD><C3B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ 0x02
|
||||
ccd_obj->config.data_type = data_type + 1;
|
||||
}
|
||||
else
|
||||
{ // <20><><EFBFBD><EFBFBD><EFBFBD>Ļ<EFBFBD><C4BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> uint8 <20><><EFBFBD>ݻ<EFBFBD><DDBB><EFBFBD> uint16 <20><><EFBFBD><EFBFBD>
|
||||
ccd_obj->config.data_type = data_type;
|
||||
}
|
||||
|
||||
// <20><>¼ʵ<C2BC><CAB5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֽ<EFBFBD><D6BD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> uint16 <20><><EFBFBD><EFBFBD>Ҫ<EFBFBD><D2AA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݳ<EFBFBD><DDB3><EFBFBD>
|
||||
ccd_obj->buffer_byte_size = data_lenght * ((data_type) ? (2) : (1));
|
||||
// Ȼ<><C8BB><EFBFBD><EFBFBD>¼<EFBFBD><C2BC>Ӧ<EFBFBD><D3A6><EFBFBD>ݻ<EFBFBD><DDBB><EFBFBD><EFBFBD><EFBFBD>
|
||||
ccd_obj->data_buffer = data_buffer;
|
||||
|
||||
// <20><>У<EFBFBD><D0A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
ccd_obj->config.check_sum = SEEKFREE_ASSISTANT_SEND_HEAD;
|
||||
ccd_obj->config.check_sum += seekfree_assistant_sum(
|
||||
&(ccd_obj->config.cmd),
|
||||
sizeof(ccd_obj->config) - 2);
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------------------------------------------------------
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> CCD ͼ<><CDBC> <20><><EFBFBD>ͺ<EFBFBD><CDBA><EFBFBD>
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> *ccd_obj CCD <20><><EFBFBD>ݽṹ<DDBD><E1B9B9>
|
||||
// <20><><EFBFBD>ز<EFBFBD><D8B2><EFBFBD> void
|
||||
// ʹ<><CAB9>ʾ<EFBFBD><CABE> seekfree_assistant_ccd_send(ccd_obj);
|
||||
//-------------------------------------------------------------------------------------------------------------------
|
||||
void seekfree_assistant_ccd_send (seekfree_assistant_ccd_struct *ccd_obj)
|
||||
{
|
||||
seekfree_assistant_transfer_callback(
|
||||
(const uint8 *)ccd_obj,
|
||||
sizeof(ccd_obj->config));
|
||||
seekfree_assistant_transfer_callback(
|
||||
(const uint8 *)(ccd_obj->data_buffer),
|
||||
ccd_obj->buffer_byte_size);
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------------------------------------------------------
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> CAMERA ͼ<><CDBC> <20><><EFBFBD><EFBFBD>
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> *camera_obj CAMERA <20><><EFBFBD>ݽṹ<DDBD><E1B9B9>
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> camera_type CAMERA <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> seekfree_assistant_camera_type_enum
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> image_width CAMERA ͼ<><CDBC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> image_height CAMERA ͼ<><CDBC><EFBFBD>߶<EFBFBD>
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> *data_buffer CAMERA ͼ<><EFBFBD><F1BBBAB3><EFBFBD>
|
||||
// <20><><EFBFBD>ز<EFBFBD><D8B2><EFBFBD> void
|
||||
// ʹ<><CAB9>ʾ<EFBFBD><CABE> seekfree_assistant_camera_config(camera_obj, camera_type, image_width, image_height, data_buffer);
|
||||
//-------------------------------------------------------------------------------------------------------------------
|
||||
void seekfree_assistant_camera_config (
|
||||
seekfree_assistant_camera_struct *camera_obj,
|
||||
seekfree_assistant_camera_type_enum camera_type,
|
||||
uint16 image_width,
|
||||
uint16 image_height,
|
||||
void *data_buffer)
|
||||
{
|
||||
zf_assert(NULL != camera_obj);
|
||||
|
||||
memset(camera_obj, 0, sizeof(seekfree_assistant_camera_struct));
|
||||
camera_obj->config.head = SEEKFREE_ASSISTANT_SEND_HEAD;
|
||||
camera_obj->config.cmd = SEEKFREE_ASSISTANT_SEND_CAMERA_CMD;
|
||||
camera_obj->config.camera_type = camera_type;
|
||||
|
||||
#if (SEEKFREE_ASSISTANT_STC_DATA_ENABLE)
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> STC <20><>ô<EFBFBD><C3B4>С<EFBFBD>˷<EFBFBD>һ<EFBFBD><D2BB>
|
||||
camera_obj->config.image_width_buffer[0] = (uint8)((image_width >> 8) & 0x00FF);
|
||||
camera_obj->config.image_width_buffer[1] = (uint8)((image_width >> 0) & 0x00FF);
|
||||
camera_obj->config.image_height_buffer[0] = (uint8)((image_height >> 8) & 0x00FF);
|
||||
camera_obj->config.image_height_buffer[1] = (uint8)((image_height >> 0) & 0x00FF);
|
||||
#else
|
||||
camera_obj->config.image_width_buffer[0] = (uint8)((image_width >> 0) & 0x00FF);
|
||||
camera_obj->config.image_width_buffer[1] = (uint8)((image_width >> 8) & 0x00FF);
|
||||
camera_obj->config.image_height_buffer[0] = (uint8)((image_height >> 0) & 0x00FF);
|
||||
camera_obj->config.image_height_buffer[1] = (uint8)((image_height >> 8) & 0x00FF);
|
||||
#endif
|
||||
|
||||
if( SEEKFREE_ASSISTANT_STC_DATA_ENABLE
|
||||
&& SEEKFREE_ASSISTANT_CAMERA_TYPE_RGB565 == camera_type
|
||||
&& NULL != data_buffer)
|
||||
{
|
||||
seekfree_assistant_transfer_callback(image_addr, image_size);
|
||||
camera_obj->config.data_type = 0x02;
|
||||
}
|
||||
else
|
||||
{
|
||||
camera_obj->config.data_type = (NULL == data_buffer) ? (0x00) : (0x01);
|
||||
}
|
||||
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> RGB565 ͼ<><CDBC> <20><>ô<EFBFBD><C3B4><EFBFBD><EFBFBD><EFBFBD>ֽ<EFBFBD><D6BD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
camera_obj->buffer_byte_size =
|
||||
image_width * image_height
|
||||
* ((SEEKFREE_ASSISTANT_CAMERA_TYPE_RGB565 == camera_type) ? (2) : (1));
|
||||
camera_obj->buffer_byte_size =
|
||||
(SEEKFREE_ASSISTANT_CAMERA_TYPE_BINARY == camera_type)
|
||||
? (camera_obj->buffer_byte_size / 8)
|
||||
: (camera_obj->buffer_byte_size);
|
||||
camera_obj->data_buffer = data_buffer;
|
||||
|
||||
// <20><>У<EFBFBD><D0A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
camera_obj->config.check_sum = SEEKFREE_ASSISTANT_SEND_HEAD;
|
||||
camera_obj->config.check_sum += seekfree_assistant_sum(
|
||||
&(camera_obj->config.cmd),
|
||||
sizeof(camera_obj->config) - 2);
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------------------------------------------------------
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> CAMERA ͼ<><CDBC> <20><><EFBFBD>ͺ<EFBFBD><CDBA><EFBFBD>
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> *camera_obj CAMERA <20><><EFBFBD>ݽṹ<DDBD><E1B9B9>
|
||||
// <20><><EFBFBD>ز<EFBFBD><D8B2><EFBFBD> void
|
||||
// ʹ<><CAB9>ʾ<EFBFBD><CABE> seekfree_assistant_camera_send(camera_obj);
|
||||
//-------------------------------------------------------------------------------------------------------------------
|
||||
void seekfree_assistant_camera_send (seekfree_assistant_camera_struct *camera_obj)
|
||||
{
|
||||
seekfree_assistant_transfer_callback(
|
||||
(const uint8 *)camera_obj,
|
||||
sizeof(camera_obj->config));
|
||||
if(NULL != camera_obj->data_buffer)
|
||||
{
|
||||
seekfree_assistant_transfer_callback(
|
||||
(const uint8 *)(camera_obj->data_buffer),
|
||||
camera_obj->buffer_byte_size);
|
||||
}
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------------------------------------------------------
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ͼ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ƺ<EFBFBD><EFBFBD><EFBFBD>
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> boundary_id <20><><EFBFBD><EFBFBD>ID
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> dot_num <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> *dot_x <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ַ
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> *dot_y <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ַ
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> width ͼ<><CDBC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> height ͼ<><CDBC><EFBFBD>߶<EFBFBD>
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> CAMERA <20><><EFBFBD><EFBFBD> <20><EFBFBD><EFBFBD><EFBFBD>
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> *camera_boundary_obj CAMERA <20><><EFBFBD><EFBFBD> <20><><EFBFBD>ݽṹ<DDBD><E1B9B9>
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> data_type <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> seekfree_assistant_data_type_enum
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> color Ҫʹ<D2AA>õ<EFBFBD><C3B5><EFBFBD>ɫ
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> boundary_lenght CAMERA <20><><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> *data_buffer CAMERA <20><><EFBFBD><EFBFBD> ͼ<><EFBFBD><EFBFBD><EFBFBD>
|
||||
// <20><><EFBFBD>ز<EFBFBD><D8B2><EFBFBD> void
|
||||
// ʹ<><CAB9>ʾ<EFBFBD><CABE>
|
||||
// ʹ<><CAB9>ʾ<EFBFBD><CABE> seekfree_assistant_camera_boundary_config(camera_boundary_obj, data_type, color, boundary_lenght, data_buffer);
|
||||
//-------------------------------------------------------------------------------------------------------------------
|
||||
void seekfree_assistant_camera_dot_send (seekfree_assistant_camera_buffer_struct *buffer)
|
||||
void seekfree_assistant_camera_boundary_config (
|
||||
seekfree_assistant_camera_boundary_struct *camera_boundary_obj,
|
||||
seekfree_assistant_data_type_enum data_type,
|
||||
uint16 color,
|
||||
uint16 boundary_lenght,
|
||||
void *data_buffer)
|
||||
{
|
||||
uint8 i;
|
||||
uint16 dot_bytes = 0; // <20><><EFBFBD>ֽ<EFBFBD><D6BD><EFBFBD><EFBFBD><EFBFBD>
|
||||
zf_assert(NULL != camera_boundary_obj);
|
||||
zf_assert(NULL != data_buffer);
|
||||
|
||||
dot_bytes = seekfree_assistant_camera_dot_data.dot_num;
|
||||
memset(camera_boundary_obj, 0, sizeof(seekfree_assistant_camera_boundary_struct));
|
||||
camera_boundary_obj->config.head = SEEKFREE_ASSISTANT_SEND_HEAD;
|
||||
camera_boundary_obj->config.cmd = SEEKFREE_ASSISTANT_SEND_CAMERA_BOUNDARY_CMD;
|
||||
|
||||
if(seekfree_assistant_camera_dot_data.dot_type & (1 << 5))
|
||||
{
|
||||
dot_bytes *= 2;
|
||||
if( SEEKFREE_ASSISTANT_STC_DATA_ENABLE
|
||||
&& SEEKFREE_ASSISTANT_DATA_TYPE_UINT16 == data_type)
|
||||
{ // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> uint16 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> STC <20><>Ƭ<EFBFBD><C6AC> <20><>ô<EFBFBD><C3B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ 0x02
|
||||
camera_boundary_obj->config.data_type = data_type + 1;
|
||||
}
|
||||
else
|
||||
{ // <20><><EFBFBD><EFBFBD><EFBFBD>Ļ<EFBFBD><C4BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> uint8 <20><><EFBFBD>ݻ<EFBFBD><DDBB><EFBFBD> uint16 <20><><EFBFBD><EFBFBD>
|
||||
camera_boundary_obj->config.data_type = data_type;
|
||||
}
|
||||
|
||||
// <20><><EFBFBD>ȷ<EFBFBD><C8B7><EFBFBD>֡ͷ<D6A1><CDB7><EFBFBD><EFBFBD><EFBFBD>ܡ<EFBFBD><DCA1>߽<EFBFBD><DFBD><EFBFBD><EFBFBD>š<EFBFBD><C5A1><EFBFBD><EFBFBD>곤<EFBFBD>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
seekfree_assistant_transfer_callback((const uint8 *)&seekfree_assistant_camera_dot_data, sizeof(seekfree_assistant_camera_dot_struct));
|
||||
#if (SEEKFREE_ASSISTANT_STC_DATA_ENABLE)
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> STC <20><>ô<EFBFBD><C3B4>С<EFBFBD>˷<EFBFBD>һ<EFBFBD><D2BB>
|
||||
camera_boundary_obj->config.boundary_lenght_buffer[0] = (uint8)((boundary_lenght >> 8) & 0x00FF);
|
||||
camera_boundary_obj->config.boundary_lenght_buffer[1] = (uint8)((boundary_lenght >> 0) & 0x00FF);
|
||||
camera_boundary_obj->config.color_buffer[0] = (uint8)((color >> 8) & 0x00FF);
|
||||
camera_boundary_obj->config.color_buffer[1] = (uint8)((color >> 0) & 0x00FF);
|
||||
#else
|
||||
camera_boundary_obj->config.boundary_lenght_buffer[0] = (uint8)((boundary_lenght >> 0) & 0x00FF);
|
||||
camera_boundary_obj->config.boundary_lenght_buffer[1] = (uint8)((boundary_lenght >> 8) & 0x00FF);
|
||||
camera_boundary_obj->config.color_buffer[0] = (uint8)((color >> 0) & 0x00FF);
|
||||
camera_boundary_obj->config.color_buffer[1] = (uint8)((color >> 8) & 0x00FF);
|
||||
#endif
|
||||
|
||||
for(i=0; i < SEEKFREE_ASSISTANT_CAMERA_MAX_BOUNDARY; i++)
|
||||
{
|
||||
// <20>ж<EFBFBD><D0B6>Ƿ<EFBFBD><C7B7><EFBFBD><EFBFBD>ͺ<EFBFBD><CDBA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
if(NULL != buffer->boundary_x[i])
|
||||
{
|
||||
seekfree_assistant_transfer_callback((const uint8 *)buffer->boundary_x[i], dot_bytes);
|
||||
}
|
||||
camera_boundary_obj->buffer_byte_size =
|
||||
boundary_lenght * 2
|
||||
* ((SEEKFREE_ASSISTANT_DATA_TYPE_UINT8 == data_type) ? (1) : (2));
|
||||
camera_boundary_obj->data_buffer = data_buffer;
|
||||
|
||||
// <20>ж<EFBFBD><EFBFBD>Ƿ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
if(NULL != buffer->boundary_y[i])
|
||||
{
|
||||
// <20><><EFBFBD><EFBFBD>û<EFBFBD><C3BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݣ<EFBFBD><DDA3><EFBFBD><EFBFBD><EFBFBD>ʾÿһ<C3BF><D2BB>ֻ<EFBFBD><D6BB>һ<EFBFBD><D2BB><EFBFBD>߽<EFBFBD>
|
||||
// ָ<><D6B8><EFBFBD>˺<EFBFBD><CBBA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݣ<EFBFBD><DDA3><EFBFBD><EFBFBD>ַ<EFBFBD>ʽ<EFBFBD><CABD><EFBFBD><EFBFBD>ʵ<EFBFBD><CAB5>ͬһ<CDAC>ж<EFBFBD><D0B6><EFBFBD><EFBFBD>߽<EFBFBD><DFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>㷨<EFBFBD>ܹ<EFBFBD><DCB9><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>䡣
|
||||
seekfree_assistant_transfer_callback((const uint8 *)buffer->boundary_y[i], dot_bytes);
|
||||
}
|
||||
}
|
||||
// <20><>У<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
camera_boundary_obj->config.check_sum = SEEKFREE_ASSISTANT_SEND_HEAD;
|
||||
camera_boundary_obj->config.check_sum += seekfree_assistant_sum(
|
||||
&(camera_boundary_obj->config.cmd),
|
||||
sizeof(camera_boundary_obj->config) - 2);
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------------------------------------------------------
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͺ<EFBFBD><EFBFBD><EFBFBD>
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> CAMERA <20><><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD>ͺ<EFBFBD><EFBFBD><EFBFBD>
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> *camera_boundary_obj CAMERA <20><><EFBFBD><EFBFBD> <20><><EFBFBD>ݽṹ<DDBD><E1B9B9>
|
||||
// <20><><EFBFBD>ز<EFBFBD><D8B2><EFBFBD> void
|
||||
// ʹ<><CAB9>ʾ<EFBFBD><CABE> seekfree_assistant_camera_boundary_send(camera_boundary_obj);
|
||||
//-------------------------------------------------------------------------------------------------------------------
|
||||
void seekfree_assistant_camera_boundary_send (seekfree_assistant_camera_boundary_struct *camera_boundary_obj)
|
||||
{
|
||||
seekfree_assistant_transfer_callback(
|
||||
(const uint8 *)camera_boundary_obj,
|
||||
sizeof(camera_boundary_obj->config));
|
||||
seekfree_assistant_transfer_callback(
|
||||
(const uint8 *)(camera_boundary_obj->data_buffer),
|
||||
camera_boundary_obj->buffer_byte_size);
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------------------------------------------------------
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> CAMERA <20><><EFBFBD>ο<EFBFBD><CEBF><EFBFBD> <20><><EFBFBD>ͺ<EFBFBD><CDBA><EFBFBD>
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> x X <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> y Y <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> width <20><><EFBFBD>ο<EFBFBD><CEBF><EFBFBD>
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> height <20><><EFBFBD>θ߶<CEB8>
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> color <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɫ
|
||||
// <20><><EFBFBD>ز<EFBFBD><D8B2><EFBFBD> void
|
||||
// ʹ<><CAB9>ʾ<EFBFBD><CABE> seekfree_assistant_camera_rectangular_send(x, y, width, height, color);
|
||||
//-------------------------------------------------------------------------------------------------------------------
|
||||
void seekfree_assistant_camera_rectangular_send (uint16 x, uint16 y, uint16 width, uint16 height, uint16 color)
|
||||
{
|
||||
seekfree_assistant_camera_rectangular_struct camera_rectangular_obj;
|
||||
memset(&camera_rectangular_obj, 0, sizeof(seekfree_assistant_camera_rectangular_struct));
|
||||
camera_rectangular_obj.head = SEEKFREE_ASSISTANT_SEND_HEAD;
|
||||
camera_rectangular_obj.cmd = SEEKFREE_ASSISTANT_SEND_CAMERA_RECTANGULAR_CMD;
|
||||
|
||||
#if (SEEKFREE_ASSISTANT_STC_DATA_ENABLE)
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> STC <20><>ô<EFBFBD><C3B4>С<EFBFBD>˷<EFBFBD>һ<EFBFBD><D2BB>
|
||||
camera_rectangular_obj.x_axis_buffer[0] = (uint8)((x >> 8) & 0x00FF);
|
||||
camera_rectangular_obj.x_axis_buffer[1] = (uint8)((x >> 0) & 0x00FF);
|
||||
camera_rectangular_obj.y_axis_buffer[0] = (uint8)((y >> 8) & 0x00FF);
|
||||
camera_rectangular_obj.y_axis_buffer[1] = (uint8)((y >> 0) & 0x00FF);
|
||||
camera_rectangular_obj.width_buffer[0] = (uint8)((width >> 8) & 0x00FF);
|
||||
camera_rectangular_obj.width_buffer[1] = (uint8)((width >> 0) & 0x00FF);
|
||||
camera_rectangular_obj.height_buffer[0] = (uint8)((height >> 8) & 0x00FF);
|
||||
camera_rectangular_obj.height_buffer[1] = (uint8)((height >> 0) & 0x00FF);
|
||||
camera_rectangular_obj.color_buffer[0] = (uint8)((color >> 8) & 0x00FF);
|
||||
camera_rectangular_obj.color_buffer[1] = (uint8)((color >> 0) & 0x00FF);
|
||||
#else
|
||||
camera_rectangular_obj.x_axis_buffer[0] = (uint8)((x >> 0) & 0x00FF);
|
||||
camera_rectangular_obj.x_axis_buffer[1] = (uint8)((x >> 8) & 0x00FF);
|
||||
camera_rectangular_obj.y_axis_buffer[0] = (uint8)((y >> 0) & 0x00FF);
|
||||
camera_rectangular_obj.y_axis_buffer[1] = (uint8)((y >> 8) & 0x00FF);
|
||||
camera_rectangular_obj.width_buffer[0] = (uint8)((width >> 0) & 0x00FF);
|
||||
camera_rectangular_obj.width_buffer[1] = (uint8)((width >> 8) & 0x00FF);
|
||||
camera_rectangular_obj.height_buffer[0] = (uint8)((height >> 0) & 0x00FF);
|
||||
camera_rectangular_obj.height_buffer[1] = (uint8)((height >> 8) & 0x00FF);
|
||||
camera_rectangular_obj.color_buffer[0] = (uint8)((color >> 0) & 0x00FF);
|
||||
camera_rectangular_obj.color_buffer[1] = (uint8)((color >> 8) & 0x00FF);
|
||||
#endif
|
||||
|
||||
// <20><>У<EFBFBD><D0A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
camera_rectangular_obj.check_sum = SEEKFREE_ASSISTANT_SEND_HEAD;
|
||||
camera_rectangular_obj.check_sum += seekfree_assistant_sum(
|
||||
&(camera_rectangular_obj.cmd),
|
||||
sizeof(camera_rectangular_obj) - 2);
|
||||
|
||||
seekfree_assistant_transfer_callback(
|
||||
(const uint8 *)&camera_rectangular_obj,
|
||||
sizeof(camera_rectangular_obj));
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------------------------------------------------------
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> *oscilloscope_obj ʾ<><CABE><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݽṹ<DDBD><E1B9B9>
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> channel_max <20><><EFBFBD><EFBFBD>ͨ<EFBFBD><CDA8><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>Χ<EFBFBD><CEA7> [1, SEEKFREE_ASSISTANT_OSCILLOSCOPE_MAX] <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Χ<EFBFBD><CEA7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><DEB5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Χ
|
||||
// <20><><EFBFBD>ز<EFBFBD><D8B2><EFBFBD> void
|
||||
// ʹ<><CAB9>ʾ<EFBFBD><CABE> seekfree_assistant_oscilloscope_config(oscilloscope_obj, SEEKFREE_ASSISTANT_OSCILLOSCOPE_MAX);
|
||||
//-------------------------------------------------------------------------------------------------------------------
|
||||
void seekfree_assistant_oscilloscope_config (
|
||||
seekfree_assistant_oscilloscope_struct *oscilloscope_obj,
|
||||
uint8 channel_max,
|
||||
void *data_buffer)
|
||||
{
|
||||
zf_assert(NULL != oscilloscope_obj);
|
||||
zf_assert(NULL != data_buffer);
|
||||
|
||||
memset(oscilloscope_obj, 0, sizeof(seekfree_assistant_oscilloscope_struct));
|
||||
oscilloscope_obj->config.head = SEEKFREE_ASSISTANT_SEND_HEAD;
|
||||
oscilloscope_obj->config.cmd = SEEKFREE_ASSISTANT_SEND_OSCILLOSCOPE_CMD;
|
||||
oscilloscope_obj->config.channel_max =
|
||||
(SEEKFREE_ASSISTANT_OSCILLOSCOPE_MAX <= channel_max)
|
||||
? (SEEKFREE_ASSISTANT_OSCILLOSCOPE_MAX)
|
||||
: ((0 == channel_max) ? (1) : (channel_max));
|
||||
oscilloscope_obj->config.data_type = (SEEKFREE_ASSISTANT_STC_DATA_ENABLE) ? (0x01) : (0x00);
|
||||
oscilloscope_obj->buffer_byte_size = oscilloscope_obj->config.channel_max * 4;
|
||||
oscilloscope_obj->data_buffer = data_buffer;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------------------------------------------------------
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD> <20><><EFBFBD>ͺ<EFBFBD><CDBA><EFBFBD>
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> *seekfree_assistant_oscilloscope ʾ<><CABE><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݽṹ<DDBD><E1B9B9>
|
||||
// <20><><EFBFBD>ز<EFBFBD><D8B2><EFBFBD> void
|
||||
// ʹ<><CAB9>ʾ<EFBFBD><CABE> seekfree_assistant_oscilloscope_send(&seekfree_assistant_oscilloscope_data);
|
||||
//-------------------------------------------------------------------------------------------------------------------
|
||||
void seekfree_assistant_oscilloscope_send (seekfree_assistant_oscilloscope_struct *seekfree_assistant_oscilloscope)
|
||||
void seekfree_assistant_oscilloscope_send (seekfree_assistant_oscilloscope_struct *oscilloscope_obj)
|
||||
{
|
||||
uint8 packet_size;
|
||||
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>λ<EFBFBD><CEBB><EFBFBD><EFBFBD>
|
||||
seekfree_assistant_oscilloscope->channel_num &= 0x0f;
|
||||
|
||||
zf_assert(SEEKFREE_ASSISTANT_SET_OSCILLOSCOPE_COUNT >= seekfree_assistant_oscilloscope->channel_num);
|
||||
|
||||
// ֡ͷ
|
||||
seekfree_assistant_oscilloscope->head = SEEKFREE_ASSISTANT_SEND_HEAD;
|
||||
|
||||
// д<><D0B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ
|
||||
packet_size = sizeof(seekfree_assistant_oscilloscope_struct) - (SEEKFREE_ASSISTANT_SET_OSCILLOSCOPE_COUNT - seekfree_assistant_oscilloscope->channel_num) * 4;
|
||||
seekfree_assistant_oscilloscope->length = packet_size;
|
||||
|
||||
// д<>빦<EFBFBD><EBB9A6><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͨ<EFBFBD><CDA8><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
seekfree_assistant_oscilloscope->channel_num |= SEEKFREE_ASSISTANT_CAMERA_OSCILLOSCOPE;
|
||||
|
||||
// <20><>У<EFBFBD><D0A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
seekfree_assistant_oscilloscope->check_sum = 0;
|
||||
seekfree_assistant_oscilloscope->check_sum = seekfree_assistant_sum((uint8 *)seekfree_assistant_oscilloscope, packet_size);
|
||||
oscilloscope_obj->config.check_sum = SEEKFREE_ASSISTANT_SEND_HEAD;
|
||||
oscilloscope_obj->config.check_sum += seekfree_assistant_sum(
|
||||
&(oscilloscope_obj->config.cmd),
|
||||
sizeof(oscilloscope_obj->config) - 2);
|
||||
oscilloscope_obj->config.check_sum += seekfree_assistant_sum(
|
||||
(oscilloscope_obj->data_buffer),
|
||||
oscilloscope_obj->buffer_byte_size);
|
||||
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD>ڵ<EFBFBD><DAB5>ñ<EFBFBD><C3B1><EFBFBD><EFBFBD><EFBFBD>֮ǰ<D6AE><C7B0><EFBFBD><EFBFBD><EFBFBD>û<EFBFBD><C3BB><EFBFBD><EFBFBD><EFBFBD>Ҫ<EFBFBD><D2AA><EFBFBD>͵<EFBFBD><CDB5><EFBFBD><EFBFBD><EFBFBD>д<EFBFBD><D0B4>seekfree_assistant_oscilloscope_data.data[]
|
||||
|
||||
seekfree_assistant_transfer_callback((const uint8 *)seekfree_assistant_oscilloscope, packet_size);
|
||||
seekfree_assistant_transfer_callback(
|
||||
(const uint8 *)oscilloscope_obj,
|
||||
sizeof(oscilloscope_obj->config));
|
||||
seekfree_assistant_transfer_callback(
|
||||
(const uint8 *)(oscilloscope_obj->data_buffer),
|
||||
oscilloscope_obj->buffer_byte_size);
|
||||
}
|
||||
|
||||
#if (SEEKFREE_ASSISTANT_DEBUG_PARAM_ENABLE)
|
||||
//-------------------------------------------------------------------------------------------------------------------
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͼ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ<EFBFBD><EFBFBD><EFBFBD>ú<EFBFBD><EFBFBD><EFBFBD>
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> camera_type ͼ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> image_addr ͼ<><CDBC><EFBFBD><EFBFBD>ַ <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>NULL<4C><4C><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾֻ<CABE><D6BB><EFBFBD>ͱ<EFBFBD><CDB1><EFBFBD><EFBFBD><EFBFBD>Ϣ<EFBFBD><CFA2><EFBFBD><EFBFBD>λ<EFBFBD><CEBB>
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> width ͼ<><CDBC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> height ͼ<><CDBC><EFBFBD>߶<EFBFBD>
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>ʾ<EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD>ͺ<EFBFBD><EFBFBD><EFBFBD>
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> *debug_param_obj ʾ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݽṹ<EFBFBD><EFBFBD>
|
||||
// <20><><EFBFBD>ز<EFBFBD><D8B2><EFBFBD> void
|
||||
// ʹ<><CAB9>ʾ<EFBFBD><CABE> seekfree_assistant_camera_information_config(SEEKFREE_ASSISTANT_MT9V03X, mt9v03x_image[0], MT9V03X_W, MT9V03X_H);
|
||||
// <20><>ע<EFBFBD><D7A2>Ϣ
|
||||
// ʹ<><CAB9>ʾ<EFBFBD><CABE> seekfree_assistant_oscilloscope_send(&seekfree_assistant_oscilloscope_data);
|
||||
//-------------------------------------------------------------------------------------------------------------------
|
||||
void seekfree_assistant_camera_information_config (seekfree_assistant_image_type_enum camera_type, void *image_addr, uint16 width, uint16 height)
|
||||
void seekfree_assistant_debug_param_analysis (seekfree_assistant_debug_param_struct *debug_param_obj)
|
||||
{
|
||||
seekfree_assistant_camera_dot_data.head = SEEKFREE_ASSISTANT_SEND_HEAD;
|
||||
seekfree_assistant_camera_dot_data.function = SEEKFREE_ASSISTANT_CAMERA_DOT_FUNCTION;
|
||||
// д<><D0B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ
|
||||
seekfree_assistant_camera_dot_data.length = sizeof(seekfree_assistant_camera_dot_struct);
|
||||
zf_assert(NULL != debug_param_obj);
|
||||
|
||||
seekfree_assistant_camera_buffer.camera_type = camera_type;
|
||||
seekfree_assistant_camera_buffer.image_addr = image_addr;
|
||||
seekfree_assistant_camera_buffer.width = width;
|
||||
seekfree_assistant_camera_buffer.height = height;
|
||||
}
|
||||
seekfree_assistant_debug_param_cmd_struct debug_param_cmd_obj; // <20>½<EFBFBD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD>ݰ<EFBFBD>
|
||||
uint8 *debug_param_cmd_pointer = (uint8 *)&debug_param_cmd_obj; // <20><>һ<EFBFBD><D2BB>ָ<EFBFBD><D6B8>ָ<EFBFBD><D6B8><EFBFBD><EFBFBD><EFBFBD>ݰ<EFBFBD><DDB0><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
uint8 temp_sum = 0xFF; // У<><D0A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD>
|
||||
uint32 read_length = 0; // <20><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD>
|
||||
|
||||
//-------------------------------------------------------------------------------------------------------------------
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͼ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>߷<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ú<EFBFBD><EFBFBD><EFBFBD>
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> boundary_type <20>߽<EFBFBD><DFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> dot_num һ<><D2BB><EFBFBD>߽<EFBFBD><DFBD>ж<EFBFBD><D0B6>ٸ<EFBFBD><D9B8><EFBFBD>
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> dot_x1 <20><><EFBFBD>ű<EFBFBD><C5B1><EFBFBD>1<EFBFBD><31><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ĵ<EFBFBD>ַ <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>NULL<4C><4C><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD><EFBFBD>ͱ<EFBFBD><CDB1><EFBFBD>1
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> dot_x2 <20><><EFBFBD>ű<EFBFBD><C5B1><EFBFBD>2<EFBFBD><32><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ĵ<EFBFBD>ַ <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>NULL<4C><4C><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD><EFBFBD>ͱ<EFBFBD><CDB1><EFBFBD>2
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> dot_x3 <20><><EFBFBD>ű<EFBFBD><C5B1><EFBFBD>3<EFBFBD><33><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ĵ<EFBFBD>ַ <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>NULL<4C><4C><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD><EFBFBD>ͱ<EFBFBD><CDB1><EFBFBD>3
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> dot_y1 <20><><EFBFBD>ű<EFBFBD><C5B1><EFBFBD>1<EFBFBD><31><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ĵ<EFBFBD>ַ <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>NULL<4C><4C><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD><EFBFBD>ͱ<EFBFBD><CDB1><EFBFBD>1
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> dot_y2 <20><><EFBFBD>ű<EFBFBD><C5B1><EFBFBD>2<EFBFBD><32><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ĵ<EFBFBD>ַ <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>NULL<4C><4C><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD><EFBFBD>ͱ<EFBFBD><CDB1><EFBFBD>2
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> dot_y3 <20><><EFBFBD>ű<EFBFBD><C5B1><EFBFBD>3<EFBFBD><33><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ĵ<EFBFBD>ַ <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>NULL<4C><4C><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD><EFBFBD>ͱ<EFBFBD><CDB1><EFBFBD>3
|
||||
// <20><><EFBFBD>ز<EFBFBD><D8B2><EFBFBD> void
|
||||
// ʹ<><CAB9>ʾ<EFBFBD><CABE> seekfree_assistant_camera_config(X_BOUNDARY, MT9V03X_H, x1_boundary, x2_boundary, x3_boundary, NULL, NULL, NULL); // ͼ<><CDBC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ߣ<EFBFBD><DFA3><EFBFBD><EFBFBD><EFBFBD>ֻ<EFBFBD>к<EFBFBD><D0BA><EFBFBD><EFBFBD><EFBFBD>
|
||||
// ʹ<><CAB9>ʾ<EFBFBD><CABE> seekfree_assistant_camera_config(Y_BOUNDARY, MT9V03X_W, NULL, NULL, NULL, y1_boundary, y2_boundary, y3_boundary); // ͼ<><CDBC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ߣ<EFBFBD><DFA3><EFBFBD><EFBFBD><EFBFBD>ֻ<EFBFBD><D6BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
// ʹ<><CAB9>ʾ<EFBFBD><CABE> seekfree_assistant_camera_config(XY_BOUNDARY, 160, xy_x1_boundary, xy_x2_boundary, xy_x3_boundary, xy_y1_boundary, xy_y2_boundary, xy_y3_boundary); // ͼ<><CDBC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ߣ<EFBFBD><DFA3><EFBFBD><EFBFBD>߰<EFBFBD><DFB0><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
// <20><>ע<EFBFBD><D7A2>Ϣ
|
||||
//-------------------------------------------------------------------------------------------------------------------
|
||||
void seekfree_assistant_camera_boundary_config (seekfree_assistant_boundary_type_enum boundary_type, uint16 dot_num, void *dot_x1, void *dot_x2, void *dot_x3, void *dot_y1, void *dot_y2, void *dot_y3)
|
||||
{
|
||||
uint8 i = 0;
|
||||
uint8 boundary_num = 0;
|
||||
uint8 boundary_data_type = 0;
|
||||
|
||||
// <20><><EFBFBD><EFBFBD>ͼ<EFBFBD><CDBC><EFBFBD><EFBFBD><EFBFBD>ͻ<EFBFBD><CDBB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƿ<EFBFBD><EFBFBD><D7BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20><><EFBFBD>ô˺<C3B4><CBBA><EFBFBD>֮ǰ<D6AE><C7B0>Ҫ<EFBFBD>ȵ<EFBFBD><C8B5><EFBFBD>seekfree_assistant_camera_config<69><67><EFBFBD>ú<EFBFBD>ͼ<EFBFBD><CDBC><EFBFBD><EFBFBD>Ϣ
|
||||
zf_assert(0 != seekfree_assistant_camera_buffer.camera_type);
|
||||
|
||||
seekfree_assistant_camera_dot_data.dot_num = dot_num;
|
||||
seekfree_assistant_camera_dot_data.valid_flag = 0;
|
||||
for(i = 0; i < 3; i++)
|
||||
{
|
||||
seekfree_assistant_camera_buffer.boundary_x[i] = NULL;
|
||||
seekfree_assistant_camera_buffer.boundary_y[i] = NULL;
|
||||
}
|
||||
|
||||
switch(boundary_type)
|
||||
{
|
||||
case X_BOUNDARY:
|
||||
{
|
||||
if(NULL != dot_x1)
|
||||
{
|
||||
boundary_num++;
|
||||
seekfree_assistant_camera_dot_data.valid_flag |= 1 << 0;
|
||||
seekfree_assistant_camera_buffer.boundary_x[i++] = dot_x1;
|
||||
}
|
||||
if(NULL != dot_x2)
|
||||
{
|
||||
boundary_num++;
|
||||
seekfree_assistant_camera_dot_data.valid_flag |= 1 << 1;
|
||||
seekfree_assistant_camera_buffer.boundary_x[i++] = dot_x2;
|
||||
}
|
||||
if(NULL != dot_x3)
|
||||
{
|
||||
boundary_num++;
|
||||
seekfree_assistant_camera_dot_data.valid_flag |= 1 << 2;
|
||||
seekfree_assistant_camera_buffer.boundary_x[i++] = dot_x3;
|
||||
}
|
||||
|
||||
if(255 < seekfree_assistant_camera_buffer.height)
|
||||
{
|
||||
boundary_data_type = 1;
|
||||
}
|
||||
}break;
|
||||
|
||||
case Y_BOUNDARY:
|
||||
{
|
||||
if(NULL != dot_y1)
|
||||
{
|
||||
boundary_num++;
|
||||
seekfree_assistant_camera_dot_data.valid_flag |= 1 << 0;
|
||||
seekfree_assistant_camera_buffer.boundary_y[i++] = dot_y1;
|
||||
}
|
||||
if(NULL != dot_y2)
|
||||
{
|
||||
boundary_num++;
|
||||
seekfree_assistant_camera_dot_data.valid_flag |= 1 << 1;
|
||||
seekfree_assistant_camera_buffer.boundary_y[i++] = dot_y2;
|
||||
}
|
||||
if(NULL != dot_y3)
|
||||
{
|
||||
boundary_num++;
|
||||
seekfree_assistant_camera_dot_data.valid_flag |= 1 << 2;
|
||||
seekfree_assistant_camera_buffer.boundary_y[i++] = dot_y3;
|
||||
}
|
||||
|
||||
if(255 < seekfree_assistant_camera_buffer.width)
|
||||
{
|
||||
boundary_data_type = 1;
|
||||
}
|
||||
}break;
|
||||
|
||||
case XY_BOUNDARY:
|
||||
{
|
||||
if((NULL != dot_x1) && (NULL != dot_y1))
|
||||
{
|
||||
boundary_num++;
|
||||
seekfree_assistant_camera_dot_data.valid_flag |= 1 << 0;
|
||||
seekfree_assistant_camera_buffer.boundary_x[i] = dot_x1;
|
||||
seekfree_assistant_camera_buffer.boundary_y[i++] = dot_y1;
|
||||
}
|
||||
if((NULL != dot_x2) && (NULL != dot_y2))
|
||||
{
|
||||
boundary_num++;
|
||||
seekfree_assistant_camera_dot_data.valid_flag |= 1 << 1;
|
||||
seekfree_assistant_camera_buffer.boundary_x[i] = dot_x2;
|
||||
seekfree_assistant_camera_buffer.boundary_y[i++] = dot_y2;
|
||||
}
|
||||
if((NULL != dot_x3) && (NULL != dot_y3))
|
||||
{
|
||||
boundary_num++;
|
||||
seekfree_assistant_camera_dot_data.valid_flag |= 1 << 2;
|
||||
seekfree_assistant_camera_buffer.boundary_x[i] = dot_x3;
|
||||
seekfree_assistant_camera_buffer.boundary_y[i++] = dot_y3;
|
||||
}
|
||||
|
||||
if((255 < seekfree_assistant_camera_buffer.width) || (255 < seekfree_assistant_camera_buffer.height))
|
||||
{
|
||||
boundary_data_type = 1;
|
||||
}
|
||||
}break;
|
||||
|
||||
case NO_BOUNDARY:break;
|
||||
}
|
||||
|
||||
seekfree_assistant_camera_dot_data.dot_type = (boundary_type << 6) | (boundary_data_type << 5) | boundary_num;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------------------------------------------------------
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ַ<EFBFBD><D6B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͷͼ<CDB7><CDBC>
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> void
|
||||
// <20><><EFBFBD>ز<EFBFBD><D8B2><EFBFBD> void
|
||||
// ʹ<><CAB9>ʾ<EFBFBD><CABE>
|
||||
// <20><>ע<EFBFBD><D7A2>Ϣ <20>ڵ<EFBFBD><DAB5><EFBFBD>ͼ<EFBFBD><CDBC><EFBFBD><EFBFBD><EFBFBD>ͺ<EFBFBD><CDBA><EFBFBD>֮ǰ<D6AE><C7B0><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ص<EFBFBD><D8B5><EFBFBD>һ<EFBFBD><D2BB>seekfree_assistant_camera_config<69><67><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ӧ<EFBFBD>IJ<EFBFBD><C4B2><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ú<EFBFBD>
|
||||
//-------------------------------------------------------------------------------------------------------------------
|
||||
void seekfree_assistant_camera_send (void)
|
||||
{
|
||||
// <20><><EFBFBD><EFBFBD>ͼ<EFBFBD><CDBC><EFBFBD><EFBFBD><EFBFBD>ͻ<EFBFBD><CDBB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƿ<EFBFBD><EFBFBD><D7BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
zf_assert(0 != seekfree_assistant_camera_buffer.camera_type);
|
||||
|
||||
seekfree_assistant_camera_data_send(seekfree_assistant_camera_buffer.camera_type, seekfree_assistant_camera_buffer.image_addr, seekfree_assistant_camera_dot_data.dot_type & 0x0f, seekfree_assistant_camera_buffer.width, seekfree_assistant_camera_buffer.height);
|
||||
|
||||
if(seekfree_assistant_camera_dot_data.dot_type & 0x0f)
|
||||
{
|
||||
seekfree_assistant_camera_dot_send(&seekfree_assistant_camera_buffer);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
//-------------------------------------------------------------------------------------------------------------------
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֽ<EFBFBD><D6BD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>յ<EFBFBD><D5B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> void
|
||||
// <20><><EFBFBD>ز<EFBFBD><D8B2><EFBFBD> void
|
||||
// ʹ<><CAB9>ʾ<EFBFBD><CABE> <20><><EFBFBD><EFBFBD>ֻ<EFBFBD><D6BB>Ҫ<EFBFBD>ŵ<EFBFBD><C5B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>е<EFBFBD>PIT<49>жϻ<D0B6><CFBB><EFBFBD><EFBFBD><EFBFBD>ѭ<EFBFBD><D1AD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
//-------------------------------------------------------------------------------------------------------------------
|
||||
#if (1 == SEEKFREE_ASSISTANT_SET_PARAMETR_ENABLE)
|
||||
void seekfree_assistant_data_analysis (void)
|
||||
{
|
||||
uint8 temp_sum;
|
||||
uint32 read_length;
|
||||
seekfree_assistant_parameter_struct *receive_packet;
|
||||
|
||||
// <20><><EFBFBD><EFBFBD>ʹ<EFBFBD><CAB9>uint32<33><32><EFBFBD>ж<EFBFBD><D0B6>壬Ŀ<E5A3AC><C4BF><EFBFBD><EFBFBD>Ϊ<EFBFBD>˱<EFBFBD>֤<EFBFBD><D6A4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֽڶ<D6BD><DAB6><EFBFBD>
|
||||
uint32 temp_buffer[SEEKFREE_ASSISTANT_BUFFER_SIZE / 4];
|
||||
|
||||
// <20><><EFBFBD>Զ<EFBFBD>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD>, <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Զ<EFBFBD><D4B6><EFBFBD><EFBFBD>Ĵ<EFBFBD><C4B4>䷽ʽ<E4B7BD><CABD><EFBFBD>ӽ<EFBFBD><D3BD>ջص<D5BB><D8B5>ж<EFBFBD>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD>
|
||||
read_length = seekfree_assistant_receive_callback((uint8 *)temp_buffer, SEEKFREE_ASSISTANT_BUFFER_SIZE);
|
||||
// <20><><EFBFBD>Զ<EFBFBD>ȡһ<C8A1><D2BB><EFBFBD><EFBFBD><EFBFBD>ݰ<EFBFBD>
|
||||
// <20><><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>
|
||||
read_length = seekfree_assistant_receive_callback(
|
||||
debug_param_cmd_pointer,
|
||||
sizeof(seekfree_assistant_debug_param_cmd_struct));
|
||||
if(read_length)
|
||||
{
|
||||
// <20><><EFBFBD><EFBFBD>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>д<EFBFBD><D0B4>FIFO
|
||||
fifo_write_buffer(&seekfree_assistant_fifo, (uint8 *)temp_buffer, read_length);
|
||||
{ // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>д<EFBFBD><D0B4>FIFO
|
||||
fifo_write_buffer(
|
||||
&seekfree_assistant_debug_param_fifo,
|
||||
debug_param_cmd_pointer,
|
||||
read_length);
|
||||
}
|
||||
|
||||
while(sizeof(seekfree_assistant_parameter_struct) <= fifo_used(&seekfree_assistant_fifo))
|
||||
{
|
||||
read_length = sizeof(seekfree_assistant_parameter_struct);
|
||||
fifo_read_buffer(&seekfree_assistant_fifo, (uint8 *)temp_buffer, &read_length, FIFO_READ_ONLY);
|
||||
while( sizeof(seekfree_assistant_debug_param_cmd_struct)
|
||||
<= fifo_used(&seekfree_assistant_debug_param_fifo))
|
||||
{ // <20><><EFBFBD><EFBFBD> FIFO <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD>ݰ<EFBFBD> <20><>ô<EFBFBD>ͽ<EFBFBD><CDBD>н<EFBFBD><D0BD><EFBFBD>
|
||||
// ֱ<>Ӷ<EFBFBD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD>ݰ<EFBFBD><DDB0><EFBFBD><EFBFBD><EFBFBD>
|
||||
read_length = sizeof(seekfree_assistant_debug_param_cmd_struct);
|
||||
fifo_read_buffer(
|
||||
&seekfree_assistant_debug_param_fifo,
|
||||
debug_param_cmd_pointer,
|
||||
&read_length,
|
||||
FIFO_READ_ONLY);
|
||||
|
||||
if(SEEKFREE_ASSISTANT_RECEIVE_HEAD != ((uint8 *)temp_buffer)[0])
|
||||
{
|
||||
// û<EFBFBD><EFBFBD>֡ͷ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>FIFO<EFBFBD><EFBFBD>ȥ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
read_length = 1;
|
||||
}
|
||||
else
|
||||
{
|
||||
// <20>ҵ<EFBFBD>֡ͷ
|
||||
receive_packet = (seekfree_assistant_parameter_struct *)temp_buffer;
|
||||
temp_sum = receive_packet->check_sum;
|
||||
receive_packet->check_sum = 0;
|
||||
if(temp_sum == seekfree_assistant_sum((uint8 *)temp_buffer, sizeof(seekfree_assistant_parameter_struct)))
|
||||
{
|
||||
// <20><>У<EFBFBD><D0A3><EFBFBD>ɹ<EFBFBD><C9B9><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
seekfree_assistant_parameter[receive_packet->channel - 1] = receive_packet->data;
|
||||
seekfree_assistant_parameter_update_flag[receive_packet->channel - 1] = 1;
|
||||
if( SEEKFREE_ASSISTANT_RECEIVE_HEAD == debug_param_cmd_pointer[0]
|
||||
&& SEEKFREE_ASSISTANT_RECEIVE_DEBUG_PARAM_CMD == debug_param_cmd_pointer[2])
|
||||
{ // ֱ<EFBFBD><EFBFBD>ƥ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>֡ͷ <20><><EFBFBD>ҹ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ҳƥ<EFBFBD><EFBFBD>
|
||||
temp_sum = debug_param_cmd_obj.check_sum; // <20><>ȡ<EFBFBD><C8A1><EFBFBD>ݰ<EFBFBD><DDB0><EFBFBD>У<EFBFBD><D0A3><EFBFBD><EFBFBD>
|
||||
debug_param_cmd_obj.check_sum = 0; // <20><><EFBFBD>հ<EFBFBD><D5B0><EFBFBD>У<EFBFBD><D0A3><EFBFBD><EFBFBD>ֵ <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>У<EFBFBD><D0A3><EFBFBD><EFBFBD>
|
||||
if( temp_sum == seekfree_assistant_sum(debug_param_cmd_pointer, sizeof(seekfree_assistant_debug_param_cmd_struct)))
|
||||
{ // <20><>У<EFBFBD><D0A3><EFBFBD>ɹ<EFBFBD><C9B9><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
debug_param_obj->data[debug_param_cmd_obj.channel_index - 1] = debug_param_cmd_obj.dat.data_float;
|
||||
#if (SEEKFREE_ASSISTANT_STC_DATA_ENABLE)
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> STC <20><>ô<EFBFBD><C3B4>С<EFBFBD>˷<EFBFBD>һ<EFBFBD><D2BB>
|
||||
debug_param_obj->dat.data_buffer[0] ^= debug_param_obj->dat.data_buffer[3];
|
||||
debug_param_obj->dat.data_buffer[3] ^= debug_param_obj->dat.data_buffer[0];
|
||||
debug_param_obj->dat.data_buffer[0] ^= debug_param_obj->dat.data_buffer[3];
|
||||
debug_param_obj->dat.data_buffer[1] ^= debug_param_obj->dat.data_buffer[2];
|
||||
debug_param_obj->dat.data_buffer[2] ^= debug_param_obj->dat.data_buffer[1];
|
||||
debug_param_obj->dat.data_buffer[1] ^= debug_param_obj->dat.data_buffer[2];
|
||||
#endif
|
||||
debug_param_obj->update_flag[debug_param_cmd_obj.channel_index - 1] = 1;
|
||||
temp_sum = 0x00;
|
||||
}
|
||||
else
|
||||
{
|
||||
read_length = 1;
|
||||
{ // <20><><EFBFBD><EFBFBD>У<EFBFBD><D0A3><EFBFBD><EFBFBD>ƥ<EFBFBD><C6A5><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>λ<EFBFBD><CEBB>ʱУ<CAB1><D0A3><EFBFBD><EFBFBD>Ϊ 0xFF <20><>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
temp_sum = 0xFF;
|
||||
}
|
||||
}
|
||||
else
|
||||
{ // <20><><EFBFBD><EFBFBD>ƥ<EFBFBD>䲻<EFBFBD><E4B2BB>֡ͷ<D6A1><EFBFBD><CDB9><EFBFBD><EFBFBD><EFBFBD> <20><>λ<EFBFBD><CEBB>ʱУ<CAB1><D0A3><EFBFBD><EFBFBD>Ϊ 0xFF <20><>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
temp_sum = 0xFF;
|
||||
}
|
||||
|
||||
if(0xFF == temp_sum)
|
||||
{ // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱУ<CAB1><D0A3><EFBFBD><EFBFBD>Ϊ 0xFF <20><>ô<EFBFBD><C3B4><EFBFBD>ǽ<EFBFBD><C7BD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ѱ<EFBFBD><D1B0><EFBFBD><EFBFBD>һ<EFBFBD><D2BB>֡ͷ
|
||||
for(read_length = 1; sizeof(seekfree_assistant_debug_param_cmd_struct) > read_length; read_length ++)
|
||||
{ // <20><>Ϊ<EFBFBD><CEAA>ȡ<EFBFBD><C8A1>һ<EFBFBD><D2BB><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD>
|
||||
if(SEEKFREE_ASSISTANT_RECEIVE_HEAD == debug_param_cmd_pointer[read_length])
|
||||
{ // <20>ҵ<EFBFBD><D2B5>¸<EFBFBD>֡ͷ<D6A1><CDB7><EFBFBD>˳<EFBFBD>
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʹ<EFBFBD>õ<EFBFBD><C3B5><EFBFBD><EFBFBD><EFBFBD>
|
||||
fifo_read_buffer(&seekfree_assistant_fifo, (uint8 *)temp_buffer, &read_length, FIFO_READ_AND_CLEAN);
|
||||
fifo_read_buffer(
|
||||
&seekfree_assistant_debug_param_fifo,
|
||||
debug_param_cmd_pointer,
|
||||
&read_length,
|
||||
FIFO_READ_AND_CLEAN);
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -1,20 +1,20 @@
|
||||
/*********************************************************************************************************************
|
||||
* 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>
|
||||
* RT1064DVL6A Opensourec Library <20><><EFBFBD><EFBFBD>RT1064DVL6A <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><C4BC><EFBFBD> RT1064DVL6A <20><>Դ<EFBFBD><D4B4><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD>
|
||||
*
|
||||
* RT1064DVL6A <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>
|
||||
@@ -24,142 +24,292 @@
|
||||
* <20>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD><EFBFBD> seekfree_assistant
|
||||
* <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.10.2
|
||||
* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ADS v1.9.4
|
||||
* <20><><EFBFBD><EFBFBD>ƽ̨ TC264D
|
||||
* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> https://seekfree.taobao.com/
|
||||
*
|
||||
*
|
||||
* <20>ļ<DEB8>¼
|
||||
* <20><><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>ע
|
||||
* 2024-01-01 pudding first version
|
||||
* <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><>ע
|
||||
* 2024-1-11 SeekFree first version
|
||||
********************************************************************************************************************/
|
||||
#ifndef _seekfree_assistant_h_
|
||||
#define _seekfree_assistant_h_
|
||||
|
||||
|
||||
#include "zf_common_typedef.h"
|
||||
|
||||
// CCD <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ö<EFBFBD><C3B6>
|
||||
typedef enum
|
||||
{
|
||||
SEEKFREE_ASSISTANT_DATA_TYPE_UINT8 ,
|
||||
SEEKFREE_ASSISTANT_DATA_TYPE_UINT16 ,
|
||||
}seekfree_assistant_data_type_enum;
|
||||
|
||||
// 1<EFBFBD><EFBFBD>ʹ<EFBFBD>ܲ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڵĹ<EFBFBD><EFBFBD><EFBFBD> 0<><30><EFBFBD>رղ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڵĹ<EFBFBD><EFBFBD><EFBFBD>
|
||||
#define SEEKFREE_ASSISTANT_SET_PARAMETR_ENABLE ( 1 )
|
||||
|
||||
|
||||
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>FIFO<EFBFBD><EFBFBD>С
|
||||
#define SEEKFREE_ASSISTANT_BUFFER_SIZE ( 0x80 )
|
||||
|
||||
// <20><><EFBFBD><EFBFBD>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͨ<EFBFBD><CDA8><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
#define SEEKFREE_ASSISTANT_SET_OSCILLOSCOPE_COUNT ( 0x08 )
|
||||
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ե<EFBFBD><D4B5><EFBFBD><EFBFBD><EFBFBD>ͨ<EFBFBD><CDA8><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
#define SEEKFREE_ASSISTANT_SET_PARAMETR_COUNT ( 0x08 )
|
||||
|
||||
// <20><><EFBFBD><EFBFBD>ͼ<EFBFBD><CDBC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
#define SEEKFREE_ASSISTANT_CAMERA_MAX_BOUNDARY ( 0x08 )
|
||||
|
||||
// <20><>Ƭ<EFBFBD><C6AC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>λ<EFBFBD><CEBB><EFBFBD><EFBFBD><EFBFBD>͵<EFBFBD>֡ͷ
|
||||
#define SEEKFREE_ASSISTANT_SEND_HEAD ( 0xAA )
|
||||
|
||||
// <20><><EFBFBD><EFBFBD>ͷ<EFBFBD><CDB7>
|
||||
#define SEEKFREE_ASSISTANT_CAMERA_FUNCTION ( 0x02 )
|
||||
#define SEEKFREE_ASSISTANT_CAMERA_DOT_FUNCTION ( 0x03 )
|
||||
#define SEEKFREE_ASSISTANT_CAMERA_OSCILLOSCOPE ( 0x10 )
|
||||
|
||||
// <20><>λ<EFBFBD><CEBB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƭ<EFBFBD><C6AC><EFBFBD><EFBFBD><EFBFBD>͵<EFBFBD>֡ͷ
|
||||
#define SEEKFREE_ASSISTANT_RECEIVE_HEAD ( 0x55 )
|
||||
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
#define SEEKFREE_ASSISTANT_RECEIVE_SET_PARAMETER ( 0x20 )
|
||||
|
||||
// CCD <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ö<EFBFBD><EFBFBD>
|
||||
typedef enum
|
||||
{
|
||||
SEEKFREE_ASSISTANT_CCD_RESOLUTION_8BIT , // 8λ<38>ֱ<EFBFBD><D6B1><EFBFBD>
|
||||
SEEKFREE_ASSISTANT_CCD_RESOLUTION_10BIT , // 10λ<30>ֱ<EFBFBD><D6B1><EFBFBD>
|
||||
SEEKFREE_ASSISTANT_CCD_RESOLUTION_12BIT , // 12λ<32>ֱ<EFBFBD><EFBFBD><EFBFBD>
|
||||
}seekfree_assistant_ccd_resolution_enum;
|
||||
|
||||
// <20><><EFBFBD><EFBFBD>ͷ<EFBFBD><CDB7><EFBFBD><EFBFBD>ö<EFBFBD><C3B6>
|
||||
typedef enum
|
||||
{
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͷ<EFBFBD>ͺŶ<CDBA><C5B6><EFBFBD>
|
||||
SEEKFREE_ASSISTANT_OV7725_BIN = 1,
|
||||
SEEKFREE_ASSISTANT_MT9V03X,
|
||||
SEEKFREE_ASSISTANT_SCC8660,
|
||||
|
||||
// <20><><EFBFBD><EFBFBD>ͼ<EFBFBD><CDBC><EFBFBD><EFBFBD><EFBFBD>Ͷ<EFBFBD><CDB6><EFBFBD>
|
||||
SEEKFREE_ASSISTANT_BINARY = 1,
|
||||
SEEKFREE_ASSISTANT_GRAY,
|
||||
SEEKFREE_ASSISTANT_RGB565,
|
||||
}seekfree_assistant_image_type_enum;
|
||||
SEEKFREE_ASSISTANT_CAMERA_TYPE_BINARY = 0x01 ,
|
||||
SEEKFREE_ASSISTANT_CAMERA_TYPE_GRAY ,
|
||||
SEEKFREE_ASSISTANT_CAMERA_TYPE_RGB565 ,
|
||||
|
||||
// <20><><EFBFBD><EFBFBD>ͷ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ö<EFBFBD><EFBFBD>
|
||||
typedef enum
|
||||
{
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͷ<EFBFBD>ͺŶ<CDBA><C5B6><EFBFBD>
|
||||
X_BOUNDARY, // <20><><EFBFBD>͵<EFBFBD>ͼ<EFBFBD><CDBC><EFBFBD>б߽<D0B1><DFBD><EFBFBD>Ϣֻ<CFA2><D6BB><EFBFBD><EFBFBD>X<EFBFBD><58>Ҳ<EFBFBD><D2B2><EFBFBD><EFBFBD>ֻ<EFBFBD>к<EFBFBD><D0BA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ<EFBFBD><CFA2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͼ<EFBFBD><CDBC><EFBFBD>߶ȵõ<C8B5>
|
||||
Y_BOUNDARY, // <20><><EFBFBD>͵<EFBFBD>ͼ<EFBFBD><CDBC><EFBFBD>б߽<D0B1><DFBD><EFBFBD>Ϣֻ<CFA2><D6BB><EFBFBD><EFBFBD>Y<EFBFBD><59>Ҳ<EFBFBD><D2B2><EFBFBD><EFBFBD>ֻ<EFBFBD><D6BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ<EFBFBD><CFA2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͼ<EFBFBD><CDBC><EFBFBD><EFBFBD><EFBFBD>ȵõ<C8B5><C3B5><EFBFBD>ͨ<EFBFBD><CDA8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
XY_BOUNDARY, // <20><><EFBFBD>͵<EFBFBD>ͼ<EFBFBD><CDBC><EFBFBD>б߽<D0B1><EFBFBD><EFBFBD>Ϣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>X<EFBFBD><EFBFBD>Y<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><EFBFBD><EFBFBD><EFBFBD>ʾ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ч<EFBFBD><EFBFBD>
|
||||
NO_BOUNDARY, // <20><><EFBFBD>͵<EFBFBD>ͼ<EFBFBD><CDBC><EFBFBD><EFBFBD>û<EFBFBD>б<EFBFBD><D0B1><EFBFBD><EFBFBD><EFBFBD>Ϣ
|
||||
}seekfree_assistant_boundary_type_enum;
|
||||
// <20><><EFBFBD><EFBFBD>ͷ<EFBFBD>ͺ<EFBFBD>ƥ<EFBFBD>䶨<EFBFBD><EFBFBD>
|
||||
SEEKFREE_ASSISTANT_CAMERA_TYPE_OV7725_BIN = 0x01 ,
|
||||
SEEKFREE_ASSISTANT_CAMERA_TYPE_MT9V03X ,
|
||||
SEEKFREE_ASSISTANT_CAMERA_TYPE_SCC8660 ,
|
||||
}seekfree_assistant_camera_type_enum;
|
||||
|
||||
#define SEEKFREE_ASSISTANT_STC_DATA_ENABLE ( 0 ) // STC <20><>Ƭ<EFBFBD><C6AC><EFBFBD><EFBFBD>Ҫʹ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>궨<EFBFBD><EFBFBD>
|
||||
|
||||
#define SEEKFREE_ASSISTANT_OSCILLOSCOPE_MAX ( 16 ) // <20><><EFBFBD><EFBFBD>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͨ<EFBFBD><CDA8><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
#define SEEKFREE_ASSISTANT_CCD_RESOLUTION_DEFAULT ( SEEKFREE_ASSISTANT_CCD_RESOLUTION_12BIT ) // Ĭ<><C4AC> CCD <20>ľ<EFBFBD><C4BE><EFBFBD> <20><><EFBFBD><EFBFBD>ȷ<EFBFBD><C8B7><EFBFBD><EFBFBD>λ<EFBFBD><CEBB><EFBFBD><EFBFBD><EFBFBD>᳤<EFBFBD><E1B3A4>
|
||||
|
||||
#define SEEKFREE_ASSISTANT_DEBUG_PARAM_ENABLE ( 1 ) // 1<><31>ʹ<EFBFBD>ܲ<EFBFBD><DCB2><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڵĹ<DAB5><C4B9><EFBFBD> 0<><30><EFBFBD>رղ<D8B1><D5B2><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڵĹ<DAB5><C4B9><EFBFBD>
|
||||
#if (SEEKFREE_ASSISTANT_DEBUG_PARAM_ENABLE)
|
||||
#define SEEKFREE_ASSISTANT_DEBUG_PARAM_MAX ( 8 ) // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Բ<EFBFBD><D4B2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͨ<EFBFBD><CDA8><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
#define SEEKFREE_ASSISTANT_DEBUG_PARAM_BUFFER_SIZE ( 64 ) // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Բ<EFBFBD><D4B2><EFBFBD><EFBFBD>Ļ<EFBFBD><C4BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>С
|
||||
#endif
|
||||
|
||||
typedef struct
|
||||
{
|
||||
uint8 head; // ֡ͷ
|
||||
uint8 channel_num; // <20><><EFBFBD><EFBFBD>λΪ<CEBB><CEAA><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>λΪͨ<CEAA><CDA8><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
uint8 check_sum; // <EFBFBD><EFBFBD>У<EFBFBD><EFBFBD>
|
||||
uint8 length; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
float data[SEEKFREE_ASSISTANT_SET_OSCILLOSCOPE_COUNT]; // ͨ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
struct
|
||||
{
|
||||
uint8 head ; // ֡ͷ
|
||||
uint8 check_sum ; // <20><>У<EFBFBD><EFBFBD>
|
||||
uint8 cmd ; // <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
uint8 channel_index ; // ͨ<><CDA8><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
uint8 data_lenght_buffer[2] ; // CCD <20><><EFBFBD>ݳ<EFBFBD><DDB3><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
uint8 channel_color_buffer[2] ; // ͨ<><CDA8><EFBFBD><EFBFBD>ɫ <20><><EFBFBD><EFBFBD>
|
||||
uint8 channel_data_max[2] ; // ͨ<><CDA8><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ <20><><EFBFBD><EFBFBD>
|
||||
uint8 data_type ; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>ȷ<EFBFBD>ϴ<EFBFBD>С<EFBFBD><D0A1>
|
||||
uint8 reserve ; // <20><><EFBFBD><EFBFBD>
|
||||
}config;
|
||||
uint16 buffer_byte_size ; // <20><><EFBFBD>ݻ<EFBFBD><DDBB><EFBFBD><EFBFBD><EFBFBD> ʵ<><CAB5><EFBFBD>ֽڴ<D6BD>С
|
||||
void *data_buffer ; // <20><><EFBFBD>ݻ<EFBFBD><DDBB><EFBFBD><EFBFBD><EFBFBD>
|
||||
}seekfree_assistant_ccd_struct;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
struct
|
||||
{
|
||||
uint8 head ; // ֡ͷ
|
||||
uint8 check_sum ; // <20><>У<EFBFBD><D0A3>
|
||||
uint8 cmd ; // <20><><EFBFBD><EFBFBD><EEB9A6><EFBFBD><EFBFBD>
|
||||
uint8 camera_type ; // <20><><EFBFBD><EFBFBD>ͷ<EFBFBD><CDB7><EFBFBD><EFBFBD>
|
||||
uint8 image_width_buffer[2] ; // ͼ<><CDBC><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
uint8 image_height_buffer[2] ; // ͼ<><CDBC><EFBFBD>߶<EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
uint8 data_type ; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>ȷ<EFBFBD>ϴ<EFBFBD>С<EFBFBD><D0A1>
|
||||
uint8 reserve[3] ; // <20><><EFBFBD><EFBFBD>
|
||||
}config;
|
||||
uint32 buffer_byte_size ; // <20><><EFBFBD>ݻ<EFBFBD><DDBB><EFBFBD><EFBFBD><EFBFBD> ʵ<><CAB5><EFBFBD>ֽڴ<D6BD>С
|
||||
void *data_buffer ; // <20><><EFBFBD>ݻ<EFBFBD><DDBB><EFBFBD><EFBFBD><EFBFBD>
|
||||
}seekfree_assistant_camera_struct;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
struct
|
||||
{
|
||||
uint8 head ; // ֡ͷ
|
||||
uint8 check_sum ; // <20><>У<EFBFBD><D0A3>
|
||||
uint8 cmd ; // <20><><EFBFBD><EFBFBD><EEB9A6><EFBFBD><EFBFBD>
|
||||
uint8 data_type ; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>ȷ<EFBFBD>ϴ<EFBFBD>С<EFBFBD><D0A1>
|
||||
uint8 boundary_lenght_buffer[2] ; // <20><><EFBFBD>߳<EFBFBD><DFB3><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
uint8 color_buffer[2] ; // ͨ<><CDA8><EFBFBD><EFBFBD>ɫ <20><><EFBFBD><EFBFBD>
|
||||
}config;
|
||||
uint32 buffer_byte_size ; // <20><><EFBFBD>ݻ<EFBFBD><DDBB><EFBFBD><EFBFBD><EFBFBD> ʵ<><CAB5><EFBFBD>ֽڴ<D6BD>С
|
||||
void *data_buffer ; // <20><><EFBFBD>ݻ<EFBFBD><DDBB><EFBFBD><EFBFBD><EFBFBD>
|
||||
}seekfree_assistant_camera_boundary_struct;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
uint8 head ; // ֡ͷ
|
||||
uint8 check_sum ; // <20><>У<EFBFBD><D0A3>
|
||||
uint8 cmd ; // <20><><EFBFBD><EFBFBD><EEB9A6><EFBFBD><EFBFBD>
|
||||
uint8 reserve ; // <20><><EFBFBD><EFBFBD>
|
||||
uint8 x_axis_buffer[2] ; // X <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
uint8 y_axis_buffer[2] ; // Y <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
uint8 width_buffer[2] ; // <20><><EFBFBD>ο<EFBFBD><CEBF><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
uint8 height_buffer[2] ; // <20><><EFBFBD>θ߶<CEB8> <20><><EFBFBD><EFBFBD>
|
||||
uint8 color_buffer[2] ; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɫ <20><><EFBFBD><EFBFBD>
|
||||
}seekfree_assistant_camera_rectangular_struct;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
struct
|
||||
{
|
||||
uint8 head ; // ֡ͷ
|
||||
uint8 check_sum ; // <20><>У<EFBFBD><D0A3>
|
||||
uint8 cmd ; // <20><><EFBFBD><EFBFBD><EEB9A6><EFBFBD><EFBFBD>
|
||||
uint8 channel_max ; // ͨ<><CDA8><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
uint8 data_type ; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>ȷ<EFBFBD>ϴ<EFBFBD>С<EFBFBD><D0A1>
|
||||
uint8 reserve[3] ; // <20><><EFBFBD><EFBFBD>
|
||||
}config;
|
||||
uint32 buffer_byte_size ; // <20><><EFBFBD>ݻ<EFBFBD><DDBB><EFBFBD><EFBFBD><EFBFBD> ʵ<><CAB5><EFBFBD>ֽڴ<D6BD>С
|
||||
void *data_buffer ; // <20><><EFBFBD>ݻ<EFBFBD><DDBB><EFBFBD><EFBFBD><EFBFBD>
|
||||
}seekfree_assistant_oscilloscope_struct;
|
||||
|
||||
typedef union
|
||||
{
|
||||
uint8 data_uint8[4] ;
|
||||
float data_float ;
|
||||
}seekfree_assistant_param_struct;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
uint8 head; // ֡ͷ
|
||||
uint8 function; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
uint8 camera_type; // <20><><EFBFBD><EFBFBD>λ<EFBFBD><CEBB>ʾ<EFBFBD>߽<EFBFBD><DFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>λ<EFBFBD><CEBB>ʾ<EFBFBD>Ƿ<EFBFBD><C7B7><EFBFBD>ͼ<EFBFBD><CDBC><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>0x13<31><33><EFBFBD><EFBFBD><EFBFBD><EFBFBD>3<EFBFBD><33>ʾһ<CABE><D2BB>ͼ<EFBFBD><CDBC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>߽磨ͨ<E7A3A8><CDA8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>߽硢<DFBD><E7A1A2><EFBFBD>ߡ<EFBFBD><DFA1>ұ߽磩<DFBD><E7A3A9>1<EFBFBD><31>ʾû<CABE><C3BB>ͼ<EFBFBD><CDBC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
uint8 length; // <20><><EFBFBD><EFBFBD><EFBFBD>ȣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Э<EFBFBD>鲿<EFBFBD>֣<EFBFBD>
|
||||
uint16 image_width; // ͼ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
uint16 image_height; // ͼ<><CDBC><EFBFBD>߶<EFBFBD>
|
||||
}seekfree_assistant_camera_struct;
|
||||
|
||||
|
||||
typedef struct
|
||||
{
|
||||
uint8 head; // ֡ͷ
|
||||
uint8 function; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
uint8 dot_type; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> BIT5<54><35>1<EFBFBD><31><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>16λ<36><CEBB> 0<><30><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>8λ<38><CEBB> BIT7-BIT6<54><36>0<EFBFBD><30>ֻ<EFBFBD><D6BB>X<EFBFBD><58><EFBFBD><EFBFBD> 1<><31>ֻ<EFBFBD><D6BB>Y<EFBFBD><59><EFBFBD><EFBFBD> 2<><32>X<EFBFBD><58>Y<EFBFBD><59><EFBFBD>궼<EFBFBD><EAB6BC> BIT3-BIT0<54><30><EFBFBD>߽<EFBFBD><DFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
uint8 length; // <20><><EFBFBD><EFBFBD><EFBFBD>ȣ<EFBFBD><C8A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Э<EFBFBD>鲿<EFBFBD>֣<EFBFBD>
|
||||
uint16 dot_num; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
uint8 valid_flag; // ͨ<><CDA8><EFBFBD><EFBFBD>ʶ
|
||||
uint8 reserve; // <20><><EFBFBD><EFBFBD>
|
||||
}seekfree_assistant_camera_dot_struct;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
void *image_addr; // <20><><EFBFBD><EFBFBD>ͷ<EFBFBD><CDB7>ַ
|
||||
uint16 width; // ͼ<><CDBC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
uint16 height; // ͼ<><CDBC><EFBFBD>߶<EFBFBD>
|
||||
seekfree_assistant_image_type_enum camera_type; // <20><><EFBFBD><EFBFBD>ͷ<EFBFBD><CDB7><EFBFBD><EFBFBD>
|
||||
void *boundary_x[SEEKFREE_ASSISTANT_CAMERA_MAX_BOUNDARY]; // <20>߽<EFBFBD><DFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ַ
|
||||
void *boundary_y[SEEKFREE_ASSISTANT_CAMERA_MAX_BOUNDARY]; // <20>߽<EFBFBD><DFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ַ
|
||||
}seekfree_assistant_camera_buffer_struct;
|
||||
uint8 head ; // ֡ͷ
|
||||
uint8 check_sum ; // <20><>У<EFBFBD><EFBFBD>
|
||||
uint8 cmd ; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
uint8 channel_index ; // ͨ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
seekfree_assistant_param_struct dat ; // һ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
|
||||
}seekfree_assistant_debug_param_cmd_struct;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
uint8 head; // ֡ͷ
|
||||
uint8 function; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
uint8 channel; // ͨ<><CDA8>
|
||||
uint8 check_sum; // <20><>У<EFBFBD><D0A3>
|
||||
float data; // <20><><EFBFBD><EFBFBD>
|
||||
}seekfree_assistant_parameter_struct;
|
||||
uint8 x;
|
||||
uint8 y;
|
||||
}seekfree_assistant_camera_boundary_uint8_struct;
|
||||
|
||||
|
||||
typedef struct
|
||||
{
|
||||
uint8 x;
|
||||
uint8 y;
|
||||
}seekfree_assistant_camera_boundary_uint16_struct;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
float data[SEEKFREE_ASSISTANT_DEBUG_PARAM_MAX] ;
|
||||
uint8 update_flag[SEEKFREE_ASSISTANT_DEBUG_PARAM_MAX] ;
|
||||
}seekfree_assistant_debug_param_struct;
|
||||
|
||||
typedef uint32 (*seekfree_assistant_transfer_callback_function) (const uint8 *buff, uint32 length);
|
||||
typedef uint32 (*seekfree_assistant_receive_callback_function) (uint8 *buff, uint32 length);
|
||||
|
||||
extern seekfree_assistant_oscilloscope_struct seekfree_assistant_oscilloscope_data; // <20><><EFBFBD><EFBFBD>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
extern float seekfree_assistant_parameter[SEEKFREE_ASSISTANT_SET_PARAMETR_COUNT]; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>յ<EFBFBD><D5B5>IJ<EFBFBD><EFBFBD><EFBFBD>
|
||||
extern vuint8 seekfree_assistant_parameter_update_flag[SEEKFREE_ASSISTANT_SET_PARAMETR_COUNT]; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>±<EFBFBD>־λ
|
||||
|
||||
|
||||
void seekfree_assistant_oscilloscope_send (seekfree_assistant_oscilloscope_struct *seekfree_assistant_oscilloscope);
|
||||
void seekfree_assistant_camera_information_config (seekfree_assistant_image_type_enum camera_type, void *image_addr, uint16 width, uint16 height);
|
||||
void seekfree_assistant_camera_boundary_config (seekfree_assistant_boundary_type_enum boundary_type, uint16 dot_num, void *dot_x1, void *dot_x2, void *dot_x3, void *dot_y1, void *dot_y2, void *dot_y3);
|
||||
void seekfree_assistant_camera_send (void);
|
||||
void seekfree_assistant_data_analysis (void);
|
||||
//-------------------------------------------------------------------------------------------------------------------
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> CCD ͼ<><CDBC> <20><EFBFBD><EFBFBD><EFBFBD>
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> *ccd_obj CCD <20><><EFBFBD>ݽṹ<DDBD><E1B9B9>
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> data_type <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> seekfree_assistant_data_type_enum
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> channel_index CCD ͨ<><CDA8>
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> channel_color ͨ<><CDA8>Ҫʹ<D2AA>õ<EFBFBD><C3B5><EFBFBD>ɫ
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> data_lenght CCD <20><><EFBFBD>ݳ<EFBFBD><DDB3><EFBFBD>
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> *data_buffer CCD <20><><EFBFBD>ݻ<EFBFBD><DDBB><EFBFBD><EFBFBD><EFBFBD>
|
||||
// <20><><EFBFBD>ز<EFBFBD><D8B2><EFBFBD> void
|
||||
// ʹ<><CAB9>ʾ<EFBFBD><CABE> seekfree_assistant_ccd_config(ccd_obj, data_type, channel_index, channel_color, data_lenght, data_buffer);
|
||||
//-------------------------------------------------------------------------------------------------------------------
|
||||
void seekfree_assistant_ccd_config (
|
||||
seekfree_assistant_ccd_struct *ccd_obj,
|
||||
seekfree_assistant_data_type_enum data_type,
|
||||
uint8 channel_index,
|
||||
uint16 channel_color,
|
||||
uint16 data_lenght,
|
||||
void *data_buffer);
|
||||
|
||||
//-------------------------------------------------------------------------------------------------------------------
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> CCD ͼ<><CDBC> <20><><EFBFBD>ͺ<EFBFBD><CDBA><EFBFBD>
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> *ccd_obj CCD <20><><EFBFBD>ݽṹ<DDBD><E1B9B9>
|
||||
// <20><><EFBFBD>ز<EFBFBD><D8B2><EFBFBD> void
|
||||
// ʹ<><CAB9>ʾ<EFBFBD><CABE> seekfree_assistant_ccd_send(ccd_obj);
|
||||
//-------------------------------------------------------------------------------------------------------------------
|
||||
void seekfree_assistant_ccd_send (seekfree_assistant_ccd_struct *ccd_obj);
|
||||
|
||||
//-------------------------------------------------------------------------------------------------------------------
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> CAMERA ͼ<><CDBC> <20><><EFBFBD><EFBFBD>
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> *camera_obj CAMERA <20><><EFBFBD>ݽṹ<DDBD><E1B9B9>
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> camera_type CAMERA <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> seekfree_assistant_camera_type_enum
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> image_width CAMERA ͼ<><CDBC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> image_height CAMERA ͼ<><CDBC><EFBFBD>߶<EFBFBD>
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> *data_buffer CAMERA ͼ<><EFBFBD><F1BBBAB3><EFBFBD>
|
||||
// <20><><EFBFBD>ز<EFBFBD><D8B2><EFBFBD> void
|
||||
// ʹ<><CAB9>ʾ<EFBFBD><CABE> seekfree_assistant_camera_config(camera_obj, camera_type, image_width, image_height, data_buffer);
|
||||
//-------------------------------------------------------------------------------------------------------------------
|
||||
void seekfree_assistant_camera_config (
|
||||
seekfree_assistant_camera_struct *camera_obj,
|
||||
seekfree_assistant_camera_type_enum camera_type,
|
||||
uint16 image_width,
|
||||
uint16 image_height,
|
||||
void *data_buffer);
|
||||
|
||||
//-------------------------------------------------------------------------------------------------------------------
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> CAMERA ͼ<><CDBC> <20><><EFBFBD>ͺ<EFBFBD><CDBA><EFBFBD>
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> *camera_obj CAMERA <20><><EFBFBD>ݽṹ<DDBD><E1B9B9>
|
||||
// <20><><EFBFBD>ز<EFBFBD><D8B2><EFBFBD> void
|
||||
// ʹ<><CAB9>ʾ<EFBFBD><CABE> seekfree_assistant_camera_send(camera_obj);
|
||||
//-------------------------------------------------------------------------------------------------------------------
|
||||
void seekfree_assistant_camera_send (seekfree_assistant_camera_struct *camera_obj);
|
||||
|
||||
//-------------------------------------------------------------------------------------------------------------------
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> CAMERA <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> *camera_boundary_obj CAMERA <20><><EFBFBD><EFBFBD> <20><><EFBFBD>ݽṹ<DDBD><E1B9B9>
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> data_type <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> seekfree_assistant_data_type_enum
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> color Ҫʹ<D2AA>õ<EFBFBD><C3B5><EFBFBD>ɫ
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> boundary_lenght CAMERA <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> *data_buffer CAMERA <20><><EFBFBD><EFBFBD> ͼ<><EFBFBD><F1BBBAB3><EFBFBD>
|
||||
// <20><><EFBFBD>ز<EFBFBD><D8B2><EFBFBD> void
|
||||
// ʹ<><CAB9>ʾ<EFBFBD><CABE> seekfree_assistant_camera_boundary_config(camera_boundary_obj, data_type, color, boundary_lenght, data_buffer);
|
||||
//-------------------------------------------------------------------------------------------------------------------
|
||||
void seekfree_assistant_camera_boundary_config (
|
||||
seekfree_assistant_camera_boundary_struct *camera_boundary_obj,
|
||||
seekfree_assistant_data_type_enum data_type,
|
||||
uint16 color,
|
||||
uint16 boundary_lenght,
|
||||
void *data_buffer);
|
||||
|
||||
//-------------------------------------------------------------------------------------------------------------------
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> CAMERA <20><><EFBFBD><EFBFBD> <20><><EFBFBD>ͺ<EFBFBD><CDBA><EFBFBD>
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> *camera_boundary_obj CAMERA <20><><EFBFBD><EFBFBD> <20><><EFBFBD>ݽṹ<DDBD><E1B9B9>
|
||||
// <20><><EFBFBD>ز<EFBFBD><D8B2><EFBFBD> void
|
||||
// ʹ<><CAB9>ʾ<EFBFBD><CABE> seekfree_assistant_camera_boundary_send(camera_boundary_obj);
|
||||
//-------------------------------------------------------------------------------------------------------------------
|
||||
void seekfree_assistant_camera_boundary_send (seekfree_assistant_camera_boundary_struct *camera_boundary_obj);
|
||||
|
||||
//-------------------------------------------------------------------------------------------------------------------
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> CAMERA <20><><EFBFBD>ο<EFBFBD><CEBF><EFBFBD> <20><><EFBFBD>ͺ<EFBFBD><CDBA><EFBFBD>
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> x X <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> y Y <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> width <20><><EFBFBD>ο<EFBFBD><CEBF><EFBFBD>
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> height <20><><EFBFBD>θ߶<CEB8>
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> color <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɫ
|
||||
// <20><><EFBFBD>ز<EFBFBD><D8B2><EFBFBD> void
|
||||
// ʹ<><CAB9>ʾ<EFBFBD><CABE> seekfree_assistant_camera_rectangular_send(x, y, width, height, color);
|
||||
//-------------------------------------------------------------------------------------------------------------------
|
||||
void seekfree_assistant_camera_rectangular_send (uint16 x, uint16 y, uint16 width, uint16 height, uint16 color);
|
||||
|
||||
//-------------------------------------------------------------------------------------------------------------------
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> *oscilloscope_obj ʾ<><CABE><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݽṹ<DDBD><E1B9B9>
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> channel_max <20><><EFBFBD><EFBFBD>ͨ<EFBFBD><CDA8><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>Χ<EFBFBD><CEA7> [1, 16] <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Χ<EFBFBD><CEA7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><DEB5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Χ
|
||||
// <20><><EFBFBD>ز<EFBFBD><D8B2><EFBFBD> void
|
||||
// ʹ<><CAB9>ʾ<EFBFBD><CABE> seekfree_assistant_oscilloscope_config(oscilloscope_obj, 16);
|
||||
//-------------------------------------------------------------------------------------------------------------------
|
||||
void seekfree_assistant_oscilloscope_config (
|
||||
seekfree_assistant_oscilloscope_struct *oscilloscope_obj,
|
||||
uint8 channel_max,
|
||||
void *data_buffer);
|
||||
|
||||
//-------------------------------------------------------------------------------------------------------------------
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD> <20><><EFBFBD>ͺ<EFBFBD><CDBA><EFBFBD>
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> *seekfree_assistant_oscilloscope ʾ<><CABE><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݽṹ<DDBD><E1B9B9>
|
||||
// <20><><EFBFBD>ز<EFBFBD><D8B2><EFBFBD> void
|
||||
// ʹ<><CAB9>ʾ<EFBFBD><CABE> seekfree_assistant_oscilloscope_send(&seekfree_assistant_oscilloscope_data);
|
||||
//-------------------------------------------------------------------------------------------------------------------
|
||||
void seekfree_assistant_oscilloscope_send (seekfree_assistant_oscilloscope_struct *oscilloscope_obj);
|
||||
|
||||
#if (SEEKFREE_ASSISTANT_DEBUG_PARAM_ENABLE)
|
||||
//-------------------------------------------------------------------------------------------------------------------
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD> <20><><EFBFBD>ͺ<EFBFBD><CDBA><EFBFBD>
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> *debug_param_obj ʾ<><CABE><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݽṹ<DDBD><E1B9B9>
|
||||
// <20><><EFBFBD>ز<EFBFBD><D8B2><EFBFBD> void
|
||||
// ʹ<><CAB9>ʾ<EFBFBD><CABE> seekfree_assistant_oscilloscope_send(&seekfree_assistant_oscilloscope_data);
|
||||
//-------------------------------------------------------------------------------------------------------------------
|
||||
void seekfree_assistant_debug_param_analysis (seekfree_assistant_debug_param_struct *debug_param_obj);
|
||||
#endif
|
||||
|
||||
#endif
|
||||
|
||||
@@ -1,20 +1,20 @@
|
||||
/*********************************************************************************************************************
|
||||
* 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>
|
||||
* RT1064DVL6A Opensourec Library <20><><EFBFBD><EFBFBD>RT1064DVL6A <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><C4BC><EFBFBD> RT1064DVL6A <20><>Դ<EFBFBD><D4B4><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD>
|
||||
*
|
||||
* RT1064DVL6A <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>
|
||||
@@ -24,23 +24,20 @@
|
||||
* <20>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD><EFBFBD> seekfree_assistant_interface
|
||||
* <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.10.2
|
||||
* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ADS v1.9.4
|
||||
* <20><><EFBFBD><EFBFBD>ƽ̨ TC264D
|
||||
* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> https://seekfree.taobao.com/
|
||||
*
|
||||
*
|
||||
* <20>ļ<DEB8>¼
|
||||
* <20><><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>ע
|
||||
* 2024-01-01 pudding first version
|
||||
* <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><>ע
|
||||
* 2024-1-11 SeekFree first version
|
||||
********************************************************************************************************************/
|
||||
|
||||
#include "zf_common_typedef.h"
|
||||
#include "zf_common_fifo.h"
|
||||
#include "zf_common_debug.h"
|
||||
#include "zf_driver_uart.h"
|
||||
|
||||
#include "zf_device_wireless_uart.h"
|
||||
#include "zf_device_ble6a20.h"
|
||||
#include "zf_device_bluetooth_ch9141.h"
|
||||
#include "zf_device_wifi_uart.h"
|
||||
#include "zf_device_wifi_spi.h"
|
||||
#include "seekfree_assistant.h"
|
||||
|
||||
@@ -50,7 +47,6 @@
|
||||
extern seekfree_assistant_transfer_callback_function seekfree_assistant_transfer_callback; // <20><><EFBFBD>ݷ<EFBFBD><DDB7>ͺ<EFBFBD><CDBA><EFBFBD>ָ<EFBFBD><D6B8>
|
||||
extern seekfree_assistant_receive_callback_function seekfree_assistant_receive_callback; // <20><><EFBFBD>ݽ<EFBFBD><DDBD>պ<EFBFBD><D5BA><EFBFBD>ָ<EFBFBD><D6B8>
|
||||
|
||||
|
||||
//-------------------------------------------------------------------------------------------------------------------
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ַ<EFBFBD><D6B7>ͺ<EFBFBD><CDBA><EFBFBD>
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> *buff <20><>Ҫ<EFBFBD><D2AA><EFBFBD>͵<EFBFBD><CDB5><EFBFBD><EFBFBD>ݵ<EFBFBD>ַ
|
||||
@@ -58,7 +54,7 @@ extern seekfree_assistant_receive_callback_function seekfree_assistant_receiv
|
||||
// <20><><EFBFBD>ز<EFBFBD><D8B2><EFBFBD> uint32 ʣ<><CAA3>δ<EFBFBD><CEB4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݳ<EFBFBD><DDB3><EFBFBD>
|
||||
// ʹ<><CAB9>ʾ<EFBFBD><CABE>
|
||||
//-------------------------------------------------------------------------------------------------------------------
|
||||
ZF_WEAK uint32 seekfree_assistant_transfer (const uint8 *buff, uint32 length)
|
||||
uint32 seekfree_assistant_transfer (const uint8 *buff, uint32 length)
|
||||
{
|
||||
|
||||
// <20><>ѡ<EFBFBD><D1A1><EFBFBD>Զ<EFBFBD><D4B6><EFBFBD>ͨѶ<CDA8><D1B6>ʽʱ <20><>Ҫ<EFBFBD><D2AA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݷ<EFBFBD><DDB7><EFBFBD><CDB9><EFBFBD>
|
||||
@@ -72,7 +68,7 @@ ZF_WEAK uint32 seekfree_assistant_transfer (const uint8 *buff, uint32 length)
|
||||
// <20><><EFBFBD>ز<EFBFBD><D8B2><EFBFBD> uint32 <20><><EFBFBD>յ<EFBFBD><D5B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݳ<EFBFBD><DDB3><EFBFBD>
|
||||
// ʹ<><CAB9>ʾ<EFBFBD><CABE>
|
||||
//-------------------------------------------------------------------------------------------------------------------
|
||||
ZF_WEAK uint32 seekfree_assistant_receive (uint8 *buff, uint32 length)
|
||||
uint32 seekfree_assistant_receive (uint8 *buff, uint32 length)
|
||||
{
|
||||
// <20><>ѡ<EFBFBD><D1A1><EFBFBD>Զ<EFBFBD><D4B6><EFBFBD>ͨѶ<CDA8><D1B6>ʽʱ <20><>Ҫ<EFBFBD><D2AA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݽ<EFBFBD><DDBD>չ<EFBFBD><D5B9><EFBFBD>
|
||||
return 0;
|
||||
@@ -85,54 +81,45 @@ ZF_WEAK uint32 seekfree_assistant_receive (uint8 *buff, uint32 length)
|
||||
// ʹ<><CAB9>ʾ<EFBFBD><CABE> seekfree_assistant_interface_init(SEEKFREE_ASSISTANT_WIFI_SPI); ʹ<>ø<EFBFBD><C3B8><EFBFBD>WIFI SPIģ<49><C4A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>շ<EFBFBD>
|
||||
// <20><>ע <20><>Ҫ<EFBFBD><D2AA><EFBFBD>е<EFBFBD><D0B5><EFBFBD><EFBFBD>豸<EFBFBD>ij<EFBFBD>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʹ<EFBFBD><CAB9><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ת<EFBFBD><D7AA><EFBFBD>ڽ<EFBFBD><DABD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݵ<EFBFBD><DDB5>շ<EFBFBD><D5B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ҫ<EFBFBD><D2AA><EFBFBD>е<EFBFBD><D0B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ת<EFBFBD><D7AA><EFBFBD>ڵij<DAB5>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD>Ȼ<EFBFBD><C8BB><EFBFBD>ٵ<EFBFBD><D9B5><EFBFBD>seekfree_assistant_interface_init<69><74><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵĽӿڳ<D3BF>ʼ<EFBFBD><CABC>
|
||||
//-------------------------------------------------------------------------------------------------------------------
|
||||
ZF_WEAK void seekfree_assistant_interface_init (seekfree_assistant_transfer_device_enum transfer_device)
|
||||
void seekfree_assistant_interface_init (seekfree_assistant_transfer_device_enum transfer_device)
|
||||
{
|
||||
switch(transfer_device)
|
||||
{
|
||||
case SEEKFREE_ASSISTANT_DEBUG_UART:
|
||||
{
|
||||
#if DEBUG_UART_USE_INTERRUPT == 1
|
||||
seekfree_assistant_transfer_callback = debug_send_buffer;
|
||||
seekfree_assistant_receive_callback = debug_read_ring_buffer;
|
||||
#endif
|
||||
}break;
|
||||
|
||||
|
||||
case SEEKFREE_ASSISTANT_WIRELESS_UART:
|
||||
{
|
||||
seekfree_assistant_transfer_callback = wireless_uart_send_buffer;
|
||||
seekfree_assistant_receive_callback = wireless_uart_read_buffer;
|
||||
}break;
|
||||
|
||||
case SEEKFREE_ASSISTANT_BLE6A20:
|
||||
{
|
||||
seekfree_assistant_transfer_callback = ble6a20_send_buffer;
|
||||
seekfree_assistant_receive_callback = ble6a20_read_buffer;
|
||||
}break;
|
||||
|
||||
case SEEKFREE_ASSISTANT_CH9141:
|
||||
{
|
||||
seekfree_assistant_transfer_callback = bluetooth_ch9141_send_buffer;
|
||||
seekfree_assistant_receive_callback = bluetooth_ch9141_read_buffer;
|
||||
}break;
|
||||
|
||||
case SEEKFREE_ASSISTANT_WIFI_UART:
|
||||
{
|
||||
seekfree_assistant_transfer_callback = wifi_uart_send_buffer;
|
||||
seekfree_assistant_receive_callback = wifi_uart_read_buffer;
|
||||
}break;
|
||||
|
||||
// case SEEKFREE_ASSISTANT_CH9141:
|
||||
// {
|
||||
// seekfree_assistant_transfer_callback = bluetooth_ch9141_send_buffer;
|
||||
// seekfree_assistant_receive_callback = bluetooth_ch9141_read_buffer;
|
||||
// }break;
|
||||
|
||||
// case SEEKFREE_ASSISTANT_WIFI_UART:
|
||||
// {
|
||||
// seekfree_assistant_transfer_callback = wifi_uart_send_buffer;
|
||||
// seekfree_assistant_receive_callback = wifi_uart_read_buffer;
|
||||
// }break;
|
||||
|
||||
case SEEKFREE_ASSISTANT_WIFI_SPI:
|
||||
{
|
||||
seekfree_assistant_transfer_callback = wifi_spi_send_buffer;
|
||||
seekfree_assistant_receive_callback = wifi_spi_read_buffer;
|
||||
}break;
|
||||
|
||||
case SEEKFREE_ASSISTANT_CUSTOM:
|
||||
{
|
||||
|
||||
default:
|
||||
{
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD>Լ<EFBFBD><D4BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>ʵ<EFBFBD><CAB5>seekfree_assistant_transfer<65><72>seekfree_assistant_receive<76><65><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݵ<EFBFBD><DDB5>շ<EFBFBD>
|
||||
|
||||
seekfree_assistant_transfer_callback = seekfree_assistant_transfer;
|
||||
seekfree_assistant_receive_callback = seekfree_assistant_receive;
|
||||
}break;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -1,20 +1,20 @@
|
||||
/*********************************************************************************************************************
|
||||
* 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>
|
||||
* RT1064DVL6A Opensourec Library <20><><EFBFBD><EFBFBD>RT1064DVL6A <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><C4BC><EFBFBD> RT1064DVL6A <20><>Դ<EFBFBD><D4B4><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD>
|
||||
*
|
||||
* RT1064DVL6A <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>
|
||||
@@ -24,13 +24,13 @@
|
||||
* <20>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD><EFBFBD> seekfree_assistant_interface
|
||||
* <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.10.2
|
||||
* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ADS v1.9.4
|
||||
* <20><><EFBFBD><EFBFBD>ƽ̨ TC264D
|
||||
* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> https://seekfree.taobao.com/
|
||||
*
|
||||
*
|
||||
* <20>ļ<DEB8>¼
|
||||
* <20><><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>ע
|
||||
* 2024-01-01 pudding first version
|
||||
* <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><>ע
|
||||
* 2024-1-11 SeekFree first version
|
||||
********************************************************************************************************************/
|
||||
|
||||
#ifndef _seekfree_assistant_interface_h_
|
||||
@@ -43,7 +43,6 @@ typedef enum
|
||||
{
|
||||
SEEKFREE_ASSISTANT_DEBUG_UART, // <20><><EFBFBD>Դ<EFBFBD><D4B4><EFBFBD> ʹ<>õĴ<C3B5><C4B4><EFBFBD><EFBFBD><EFBFBD>DEBUG_UART_INDEX<45>궨<EFBFBD><EAB6A8>ָ<EFBFBD><D6B8>
|
||||
SEEKFREE_ASSISTANT_WIRELESS_UART, // <20><><EFBFBD><EFBFBD>ת<EFBFBD><D7AA><EFBFBD><EFBFBD>
|
||||
SEEKFREE_ASSISTANT_BLE6A20, // <20><><EFBFBD><EFBFBD>ת<EFBFBD><D7AA><EFBFBD><EFBFBD>
|
||||
SEEKFREE_ASSISTANT_CH9141, // CH9141<34><31><EFBFBD><EFBFBD>
|
||||
SEEKFREE_ASSISTANT_WIFI_UART, // WIFIת<49><D7AA><EFBFBD><EFBFBD>
|
||||
SEEKFREE_ASSISTANT_WIFI_SPI, // <20><><EFBFBD><EFBFBD>WIFI SPI
|
||||
|
||||
@@ -62,7 +62,7 @@
|
||||
//====================================================<3D><><EFBFBD><EFBFBD> SPI <20><><EFBFBD><EFBFBD>====================================================
|
||||
#else
|
||||
//====================================================Ӳ<><D3B2> SPI <20><><EFBFBD><EFBFBD>====================================================
|
||||
#define ABSOLUTE_ENCODER_SPI_SPEED (10*1000*1000) // Ӳ<><D3B2> SPI <20><><EFBFBD><EFBFBD>
|
||||
#define ABSOLUTE_ENCODER_SPI_SPEED (8*1000*1000) // Ӳ<><D3B2> SPI <20><><EFBFBD><EFBFBD>
|
||||
#define ABSOLUTE_ENCODER_SPI (SPI_0) // Ӳ<><D3B2> SPI <20><>
|
||||
#define ABSOLUTE_ENCODER_SCLK_PIN (SPI0_SCLK_P20_11) // Ӳ<><D3B2> SPI SCK <20><><EFBFBD><EFBFBD>
|
||||
#define ABSOLUTE_ENCODER_MOSI_PIN (SPI0_MOSI_P20_14) // Ӳ<><D3B2> SPI MOSI <20><><EFBFBD><EFBFBD>
|
||||
@@ -70,7 +70,7 @@
|
||||
//====================================================Ӳ<><D3B2> SPI <20><><EFBFBD><EFBFBD>====================================================
|
||||
#endif
|
||||
|
||||
#define ABSOLUTE_ENCODER_CS_PIN (P20_13) // CS<43><53><EFBFBD>Ŷ<EFBFBD><C5B6><EFBFBD>
|
||||
#define ABSOLUTE_ENCODER_CS_PIN (P00_8) // CS<43><53><EFBFBD>Ŷ<EFBFBD><C5B6><EFBFBD>
|
||||
#define ABSOLUTE_ENCODER_CSN(x) ((x) ? (gpio_high(ABSOLUTE_ENCODER_CS_PIN)): (gpio_low(ABSOLUTE_ENCODER_CS_PIN)))
|
||||
|
||||
#define ABSOLUTE_ENCODER_TIMEOUT_COUNT (100) // <20>Լ쳬ʱʱ<CAB1><CAB1>
|
||||
|
||||
@@ -76,7 +76,7 @@
|
||||
// 1<><31><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Զ<EFBFBD><D4B6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>Զ<EFBFBD><D4B6><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʵ<EFBFBD><CAB5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> BLE6A20_BAUD ֮<><D6AE><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ҫ<EFBFBD><D2AA>ģ<EFBFBD><C4A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ģ<><C4A3><EFBFBD><EFBFBD><EFBFBD>Զ<EFBFBD><D4B6><EFBFBD><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA>Ӧ<EFBFBD>IJ<EFBFBD><C4B2><EFBFBD><EFBFBD><EFBFBD>
|
||||
// <20>Զ<EFBFBD><D4B6><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʽ<EFBFBD>֧<EFBFBD><D6A7> 9600 57600 115200 230400 460800 921600 1500000 2000000
|
||||
|
||||
#define BLE6A20_AUTO_BAUD_RATE ( 0 )
|
||||
#define BLE6A20_AUTO_BAUD_RATE ( 1 )
|
||||
|
||||
#if (1 == BLE6A20_AUTO_BAUD_RATE)
|
||||
typedef enum
|
||||
|
||||
@@ -0,0 +1,563 @@
|
||||
/*********************************************************************************************************************
|
||||
* RT1064DVL6A Opensourec Library <20><><EFBFBD><EFBFBD>RT1064DVL6A <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> RT1064DVL6A <20><>Դ<EFBFBD><D4B4><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD>
|
||||
*
|
||||
* RT1064DVL6A <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_imu660rc
|
||||
* <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.10.2
|
||||
* <20><><EFBFBD><EFBFBD>ƽ̨ TC264
|
||||
* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> https://seekfree.taobao.com/
|
||||
*
|
||||
* <20>ļ<DEB8>¼
|
||||
* <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><>ע
|
||||
* 2025-12-12 SeekFree first version
|
||||
********************************************************************************************************************/
|
||||
/*********************************************************************************************************************
|
||||
* <20><><EFBFBD>߶<EFBFBD><DFB6>壺
|
||||
* ------------------------------------
|
||||
* ģ<><C4A3><EFBFBD>ܽ<EFBFBD> <20><>Ƭ<EFBFBD><C6AC><EFBFBD>ܽ<EFBFBD>
|
||||
* // Ӳ<><D3B2> SPI <20><><EFBFBD><EFBFBD>
|
||||
* SCL/SPC <20>鿴 zf_device_imu660rc.h <20><> IMU660RC_SPC_PIN <20>궨<EFBFBD><EAB6A8>
|
||||
* SDA/DSI <20>鿴 zf_device_imu660rc.h <20><> IMU660RC_SDI_PIN <20>궨<EFBFBD><EAB6A8>
|
||||
* SA0/SDO <20>鿴 zf_device_imu660rc.h <20><> IMU660RC_SDO_PIN <20>궨<EFBFBD><EAB6A8>
|
||||
* CS <20>鿴 zf_device_imu660rc.h <20><> IMU660RC_CS_PIN <20>궨<EFBFBD><EAB6A8>
|
||||
* INT2 <20>鿴 zf_device_imu660rc.h <20><> IMU660RC_INT2_PIN <20>궨<EFBFBD><EAB6A8>
|
||||
* VCC 3.3V<EFBFBD><EFBFBD>Դ
|
||||
* GND <20><>Դ<EFBFBD><D4B4>
|
||||
* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
*
|
||||
* // <20><><EFBFBD><EFBFBD> IIC <20><><EFBFBD><EFBFBD>
|
||||
* SCL/SPC <20>鿴 zf_device_imu660rc.h <20><> IMU660RC_SCL_PIN <20>궨<EFBFBD><EAB6A8>
|
||||
* SDA/DSI <20>鿴 zf_device_imu660rc.h <20><> IMU660RC_SDA_PIN <20>궨<EFBFBD><EAB6A8>
|
||||
* VCC 3.3V<EFBFBD><EFBFBD>Դ
|
||||
* GND <20><>Դ<EFBFBD><D4B4>
|
||||
* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
* ------------------------------------
|
||||
********************************************************************************************************************/
|
||||
|
||||
|
||||
#include "math.h"
|
||||
#include "zf_common_debug.h"
|
||||
#include "zf_driver_delay.h"
|
||||
#include "zf_driver_spi.h"
|
||||
#include "zf_driver_gpio.h"
|
||||
#include "zf_driver_soft_iic.h"
|
||||
#include "zf_device_config.h"
|
||||
#include "zf_driver_uart.h"
|
||||
#include "zf_driver_exti.h"
|
||||
|
||||
#include "zf_device_imu660rc.h"
|
||||
|
||||
#ifndef M_PI
|
||||
#define M_PI 3.1415926f
|
||||
#endif
|
||||
|
||||
|
||||
static uint8 imu660rc_quarternion_rate;
|
||||
|
||||
float imu660rc_transition_factor[2];
|
||||
int16 imu660rc_gyro_x = 0, imu660rc_gyro_y = 0, imu660rc_gyro_z = 0; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> gyro (<28><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>)
|
||||
int16 imu660rc_acc_x = 0, imu660rc_acc_y = 0, imu660rc_acc_z = 0; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ٶȼ<D9B6><C8BC><EFBFBD><EFBFBD><EFBFBD> acc (accelerometer <20><><EFBFBD>ٶȼ<D9B6>)
|
||||
float imu660rc_roll = 0, imu660rc_pitch = 0, imu660rc_yaw = 0; // ŷ<><C5B7><EFBFBD><EFBFBD>
|
||||
float imu660rc_quarternion[4]; // <20><>Ԫ<EFBFBD><D4AA>
|
||||
|
||||
|
||||
|
||||
#if IMU660RC_USE_SOFT_IIC
|
||||
static soft_iic_info_struct imu660rc_iic_struct;
|
||||
|
||||
#define imu660rc_write_register(reg, data) (soft_iic_write_8bit_register (&imu660rc_iic_struct, (reg), (data)))
|
||||
#define imu660rc_write_registers(reg, data, len) (soft_iic_write_8bit_registers(&imu660rc_iic_struct, (reg), (data), (len)))
|
||||
#define imu660rc_read_register(reg) (soft_iic_read_8bit_register (&imu660rc_iic_struct, (reg)))
|
||||
#define imu660rc_read_registers(reg, data, len) (soft_iic_read_8bit_registers (&imu660rc_iic_struct, (reg), (data), (len)))
|
||||
#else
|
||||
//-------------------------------------------------------------------------------------------------------------------
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> IMU660RC д<>Ĵ<EFBFBD><C4B4><EFBFBD>
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> reg <20>Ĵ<EFBFBD><C4B4><EFBFBD><EFBFBD><EFBFBD>ַ
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> data <20><><EFBFBD><EFBFBD>
|
||||
// <20><><EFBFBD>ز<EFBFBD><D8B2><EFBFBD> void
|
||||
// ʹ<><CAB9>ʾ<EFBFBD><CABE>
|
||||
// <20><>ע<EFBFBD><D7A2>Ϣ <20>ڲ<EFBFBD><DAB2><EFBFBD><EFBFBD><EFBFBD>
|
||||
//-------------------------------------------------------------------------------------------------------------------
|
||||
static void imu660rc_write_register (uint8 reg, uint8 data)
|
||||
{
|
||||
IMU660RC_CS(0);
|
||||
spi_write_8bit_register(IMU660RC_SPI, reg | IMU660RC_SPI_W, data);
|
||||
IMU660RC_CS(1);
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------------------------------------------------------
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> IMU660RC <20><><EFBFBD>Ĵ<EFBFBD><C4B4><EFBFBD>
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> reg <20>Ĵ<EFBFBD><C4B4><EFBFBD><EFBFBD><EFBFBD>ַ
|
||||
// <20><><EFBFBD>ز<EFBFBD><D8B2><EFBFBD> uint8 <20><><EFBFBD><EFBFBD>
|
||||
// ʹ<><CAB9>ʾ<EFBFBD><CABE> imu660rc_read_register(IMU660RC_CHIP_ID);
|
||||
// <20><>ע<EFBFBD><D7A2>Ϣ <20>ڲ<EFBFBD><DAB2><EFBFBD><EFBFBD><EFBFBD>
|
||||
//-------------------------------------------------------------------------------------------------------------------
|
||||
static uint8 imu660rc_read_register (uint8 reg)
|
||||
{
|
||||
uint8 data;
|
||||
IMU660RC_CS(0);
|
||||
data = spi_read_8bit_register(IMU660RC_SPI, reg | IMU660RC_SPI_R);
|
||||
IMU660RC_CS(1);
|
||||
return data;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------------------------------------------------------
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> IMU660RC <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> reg <20>Ĵ<EFBFBD><C4B4><EFBFBD><EFBFBD><EFBFBD>ַ
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> data <20><><EFBFBD>ݻ<EFBFBD><DDBB><EFBFBD><EFBFBD><EFBFBD>
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> len <20><><EFBFBD>ݳ<EFBFBD><DDB3><EFBFBD>
|
||||
// <20><><EFBFBD>ز<EFBFBD><D8B2><EFBFBD> void
|
||||
// ʹ<><CAB9>ʾ<EFBFBD><CABE> imu660rc_read_registers(IMU660RC_ACC_ADDRESS, dat, 6);
|
||||
// <20><>ע<EFBFBD><D7A2>Ϣ <20>ڲ<EFBFBD><DAB2><EFBFBD><EFBFBD><EFBFBD>
|
||||
//-------------------------------------------------------------------------------------------------------------------
|
||||
static void imu660rc_read_registers (uint8 reg, uint8 *data, uint32 len)
|
||||
{
|
||||
IMU660RC_CS(0);
|
||||
spi_read_8bit_registers(IMU660RC_SPI, reg | IMU660RC_SPI_R, data, len);
|
||||
IMU660RC_CS(1);
|
||||
}
|
||||
#endif
|
||||
|
||||
//-------------------------------------------------------------------------------------------------------------------
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> IMU660RC fp16ת<36><D7AA><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> void
|
||||
// <20><><EFBFBD>ز<EFBFBD><D8B2><EFBFBD> uint8
|
||||
// ʹ<><CAB9>ʾ<EFBFBD><CABE>
|
||||
// <20><>ע<EFBFBD><D7A2>Ϣ <20>ڲ<EFBFBD><DAB2><EFBFBD><EFBFBD><EFBFBD>
|
||||
//-------------------------------------------------------------------------------------------------------------------
|
||||
static uint32 fp16_to_float(uint16 h)
|
||||
{
|
||||
uint16 h_exp = (h & 0x7c00u);
|
||||
uint32 f_sgn = ((uint32)h & 0x8000u) << 16;
|
||||
switch (h_exp)
|
||||
{
|
||||
case 0x0000u: // 0 or subnormal
|
||||
{
|
||||
uint16 h_sig = (h & 0x03ffu);
|
||||
// Signed zero
|
||||
if (h_sig == 0)
|
||||
{
|
||||
return f_sgn;
|
||||
}
|
||||
// Subnormal
|
||||
h_sig <<= 1;
|
||||
while ((h_sig & 0x0400u) == 0)
|
||||
{
|
||||
h_sig <<= 1;
|
||||
h_exp++;
|
||||
}
|
||||
uint32 f_exp = ((uint32)(127 - 15 - h_exp)) << 23;
|
||||
uint32 f_sig = ((uint32)(h_sig & 0x03ffu)) << 13;
|
||||
return f_sgn + f_exp + f_sig;
|
||||
}
|
||||
case 0x7c00u: // inf or NaN
|
||||
{
|
||||
// All-ones exponent and a copy of the significand
|
||||
return f_sgn + 0x7f800000u + (((uint32)(h & 0x03ffu)) << 13);
|
||||
}
|
||||
default: // normalized
|
||||
{
|
||||
// Just need to adjust the exponent and shift
|
||||
return f_sgn + (((uint32)(h & 0x7fffu) + 0x1c000u) << 13);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------------------------------------------------------
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> IMU660RC <20><>Ԫ<EFBFBD><D4AA><EFBFBD><EFBFBD>һ<EFBFBD><D2BB>
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> void
|
||||
// <20><><EFBFBD>ز<EFBFBD><D8B2><EFBFBD> uint8
|
||||
// ʹ<><CAB9>ʾ<EFBFBD><CABE>
|
||||
// <20><>ע<EFBFBD><D7A2>Ϣ <20>ڲ<EFBFBD><DAB2><EFBFBD><EFBFBD><EFBFBD>
|
||||
//-------------------------------------------------------------------------------------------------------------------
|
||||
static void quarternion_normalize(float quat[4], uint16 *fp16)
|
||||
{
|
||||
float n = 0;
|
||||
float temp[4];
|
||||
|
||||
*(uint32 *)(&temp[0]) = fp16_to_float(fp16[0]);
|
||||
*(uint32 *)(&temp[1]) = fp16_to_float(fp16[1]);
|
||||
*(uint32 *)(&temp[2]) = fp16_to_float(fp16[2]);
|
||||
*(uint32 *)(&temp[3]) = fp16_to_float(fp16[3]);
|
||||
|
||||
n = temp[0] * temp[0] + temp[1] * temp[1] + temp[2] * temp[2] + temp[3] * temp[3];
|
||||
n = sqrtf(n);
|
||||
|
||||
if(n > 0.001f) // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Խӽ<D4BD>0<EFBFBD><30>ֵ
|
||||
{
|
||||
n = temp[3] < 0.0f ? -n : n;
|
||||
|
||||
quat[0] = temp[1] / n;
|
||||
quat[1] = temp[2] / n;
|
||||
quat[2] = temp[0] / n;
|
||||
quat[3] = temp[3] / n;
|
||||
}
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------------------------------------------------------
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> IMU660RC <20><>Ԫ<EFBFBD><D4AA>תŷ<D7AA><C5B7><EFBFBD><EFBFBD>
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> void
|
||||
// <20><><EFBFBD>ز<EFBFBD><D8B2><EFBFBD> uint8
|
||||
// ʹ<><CAB9>ʾ<EFBFBD><CABE>
|
||||
// <20><>ע<EFBFBD><D7A2>Ϣ <20>ڲ<EFBFBD><DAB2><EFBFBD><EFBFBD><EFBFBD>
|
||||
//-------------------------------------------------------------------------------------------------------------------
|
||||
static void quarternion_to_euler(float quat[4], float *roll, float *pitch, float *yaw)
|
||||
{
|
||||
float euler[3];
|
||||
|
||||
float sqx = quat[0] * quat[0];
|
||||
float sqy = quat[1] * quat[1];
|
||||
float sqz = quat[2] * quat[2];
|
||||
|
||||
euler[0] = atan2f(2.0f * (quat[1] * quat[3] + quat[0] * quat[2]), 1.0f - 2.0f * (sqy + sqx));
|
||||
euler[1] = -asinf(2.0f * (quat[0] * quat[3] - quat[1] * quat[2]));
|
||||
euler[2] = atan2f(2.0f * (quat[0] * quat[1] + quat[2] * quat[3]), 1.0f - 2.0f * (sqx + sqz));
|
||||
|
||||
// <20><><EFBFBD><EFBFBD>ת<EFBFBD>Ƕ<EFBFBD>
|
||||
euler[0] = 180 * (euler[0]) / M_PI;
|
||||
euler[1] = 180 * (euler[1]) / M_PI;
|
||||
euler[2] = 180 * (euler[2]) / M_PI;
|
||||
|
||||
// <20>Ƕȵ<C7B6><C8B5><EFBFBD>
|
||||
euler[2] = 0 > euler[2] ? euler[2] + 360 : euler[2];
|
||||
|
||||
*roll = euler[0];
|
||||
*pitch = euler[1];
|
||||
*yaw = euler[2];
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------------------------------------------------------
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> IMU660RC <20><><EFBFBD>÷<EFBFBD><C3B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> void
|
||||
// <20><><EFBFBD>ز<EFBFBD><D8B2><EFBFBD> uint8
|
||||
// ʹ<><CAB9>ʾ<EFBFBD><CABE>
|
||||
// <20><>ע<EFBFBD><D7A2>Ϣ <20>ڲ<EFBFBD><DAB2><EFBFBD><EFBFBD><EFBFBD>
|
||||
//-------------------------------------------------------------------------------------------------------------------
|
||||
static void imu660rc_set_mem_bank (imu660rc_mem_bank_enum bank)
|
||||
{
|
||||
imu660rc_write_register(IMU660RC_FUNC_CFG_ACCESS, bank);
|
||||
}
|
||||
|
||||
|
||||
//-------------------------------------------------------------------------------------------------------------------
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> IMU660RC <20>Լ<EFBFBD>
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> void
|
||||
// <20><><EFBFBD>ز<EFBFBD><D8B2><EFBFBD> uint8 1-<2D>Լ<EFBFBD>ʧ<EFBFBD><CAA7> 0-<2D>Լ<EFBFBD><D4BC>ɹ<EFBFBD>
|
||||
// ʹ<><CAB9>ʾ<EFBFBD><CABE> imu660rc_self_check();
|
||||
// <20><>ע<EFBFBD><D7A2>Ϣ <20>ڲ<EFBFBD><DAB2><EFBFBD><EFBFBD><EFBFBD>
|
||||
//-------------------------------------------------------------------------------------------------------------------
|
||||
static uint8 imu660rc_self_check (void)
|
||||
{
|
||||
uint8 dat = 0, return_state = 0;
|
||||
uint16 timeout_count = 0;
|
||||
do
|
||||
{
|
||||
if(IMU660RC_TIMEOUT_COUNT < timeout_count ++)
|
||||
{
|
||||
return_state = 1;
|
||||
break;
|
||||
}
|
||||
dat = imu660rc_read_register(IMU660RC_CHIP_ID);
|
||||
system_delay_ms(1);
|
||||
}while(0x70 != dat); // <20><>ȡ<EFBFBD>豸ID<49>Ƿ<EFBFBD><C7B7><EFBFBD><EFBFBD><EFBFBD>0x70<37><30><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>0x70<37><30><EFBFBD><EFBFBD>Ϊû<CEAA><C3BB><EFBFBD><EFBFBD>豸
|
||||
return return_state;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------------------------------------------------------
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>ȡ IMU660RC <20><><EFBFBD>ٶȼ<D9B6><C8BC><EFBFBD><EFBFBD><EFBFBD>
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> void
|
||||
// <20><><EFBFBD>ز<EFBFBD><D8B2><EFBFBD> void
|
||||
// ʹ<><CAB9>ʾ<EFBFBD><CABE> imu660rc_get_acc(); // ִ<>иú<D0B8><C3BA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֱ<EFBFBD>Ӳ鿴<D3B2><E9BFB4>Ӧ<EFBFBD>ı<EFBFBD><C4B1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
// <20><>ע<EFBFBD><D7A2>Ϣ ʹ<><CAB9> SPI <20>IJɼ<C4B2>ʱ<EFBFBD><CAB1>Ϊ10us
|
||||
//-------------------------------------------------------------------------------------------------------------------
|
||||
void imu660rc_get_acc (void)
|
||||
{
|
||||
int16 dat[3];
|
||||
if(IMU660RC_QUARTERNION_DISABLE == imu660rc_quarternion_rate)
|
||||
{ // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ԫ<EFBFBD><D4AA><EFBFBD>ر<EFBFBD>״̬<D7B4><CCAC>֧<EFBFBD>ֵ<EFBFBD><D6B5>ô˺<C3B4><CBBA><EFBFBD><EFBFBD><EFBFBD> <20><>Ԫ<EFBFBD><D4AA><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ҫ<EFBFBD><D2AA>ȡ<EFBFBD><C8A1><EFBFBD>ٶ<EFBFBD><D9B6><EFBFBD>Ϣ<EFBFBD><CFA2>IMU660RC_QUARTERNION_GET_ACC<43><43><EFBFBD><EFBFBD>Ϊ1
|
||||
imu660rc_read_registers(IMU660RC_OUTX_L_A, (uint8 *)dat, 6);
|
||||
imu660rc_acc_x = dat[0];
|
||||
imu660rc_acc_y = dat[1];
|
||||
imu660rc_acc_z = dat[2];
|
||||
}
|
||||
}
|
||||
//-------------------------------------------------------------------------------------------------------------------
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>ȡ IMU660RC <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> void
|
||||
// <20><><EFBFBD>ز<EFBFBD><D8B2><EFBFBD> void
|
||||
// ʹ<><CAB9>ʾ<EFBFBD><CABE> imu660rc_get_gyro(); // ִ<>иú<D0B8><C3BA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֱ<EFBFBD>Ӳ鿴<D3B2><E9BFB4>Ӧ<EFBFBD>ı<EFBFBD><C4B1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
// <20><>ע<EFBFBD><D7A2>Ϣ ʹ<><CAB9> SPI <20>IJɼ<C4B2>ʱ<EFBFBD><CAB1>Ϊ10us
|
||||
//-------------------------------------------------------------------------------------------------------------------
|
||||
void imu660rc_get_gyro (void)
|
||||
{
|
||||
int16 dat[3];
|
||||
if(IMU660RC_QUARTERNION_DISABLE == imu660rc_quarternion_rate)
|
||||
{ // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ԫ<EFBFBD><D4AA><EFBFBD>ر<EFBFBD>״̬<D7B4><CCAC>֧<EFBFBD>ֵ<EFBFBD><D6B5>ô˺<C3B4><CBBA><EFBFBD><EFBFBD><EFBFBD> <20><>Ԫ<EFBFBD><D4AA><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ҫ<EFBFBD><D2AA>ȡ<EFBFBD><C8A1><EFBFBD>ٶ<EFBFBD><D9B6><EFBFBD>Ϣ<EFBFBD><CFA2>IMU660RC_QUARTERNION_GET_GYRO<52><4F><EFBFBD><EFBFBD>Ϊ1
|
||||
imu660rc_read_registers(IMU660RC_OUTX_L_G, (uint8 *)dat, 6);
|
||||
imu660rc_gyro_x = dat[0];
|
||||
imu660rc_gyro_y = dat[1];
|
||||
imu660rc_gyro_z = dat[2];
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
//-------------------------------------------------------------------------------------------------------------------
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>ȡ IMU660RC <20><>Ԫ<EFBFBD><D4AA><EFBFBD><EFBFBD><EFBFBD>ݲ<EFBFBD>ת<EFBFBD><D7AA>Ϊŷ<CEAA><C5B7><EFBFBD><EFBFBD>
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> void
|
||||
// <20><><EFBFBD>ز<EFBFBD><D8B2><EFBFBD> void
|
||||
// ʹ<><CAB9>ʾ<EFBFBD><CABE> imu660rc_get_quarternion(); // ִ<>иú<D0B8><C3BA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֱ<EFBFBD>Ӳ鿴<D3B2><E9BFB4>Ӧ<EFBFBD>ı<EFBFBD><C4B1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
// <20><>ע<EFBFBD><D7A2>Ϣ <20><>Ҫ<EFBFBD><D2AA>INT2<54><32><EFBFBD>Ŵ<EFBFBD><C5B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>жϵ<D0B6><CFB5>ô˺<C3B4><CBBA><EFBFBD>
|
||||
//
|
||||
//-------------------------------------------------------------------------------------------------------------------
|
||||
void imu660rc_get_quarternion(void)
|
||||
{
|
||||
uint8 i;
|
||||
uint16 buff[4];
|
||||
uint8 *buff1_ptr;
|
||||
int16 *buff2_ptr;
|
||||
|
||||
if(IMU660RC_QUARTERNION_DISABLE != imu660rc_quarternion_rate)
|
||||
{
|
||||
buff1_ptr = (uint8 *)buff;
|
||||
|
||||
imu660rc_set_mem_bank(IMU660RC_EMBED_MEM_BANK);
|
||||
imu660rc_write_register(IMU660RC_PAGE_RW, 0x20);
|
||||
imu660rc_write_register(IMU660RC_PAGE_SEL, 0x31);
|
||||
|
||||
for(i = 0; 8 > i; i++)
|
||||
{
|
||||
imu660rc_write_register(0x08, 0x4C + i);
|
||||
buff1_ptr[i] = imu660rc_read_register(0x09);
|
||||
}
|
||||
|
||||
imu660rc_write_register(IMU660RC_PAGE_RW, 0x0);
|
||||
imu660rc_set_mem_bank(IMU660RC_MAIN_MEM_BANK);
|
||||
|
||||
// <20><>Ԫ<EFBFBD><D4AA><EFBFBD><EFBFBD>һ<EFBFBD><D2BB>
|
||||
quarternion_normalize(imu660rc_quarternion, buff);
|
||||
// <20><>Ԫ<EFBFBD><D4AA>תŷ<D7AA><C5B7><EFBFBD><EFBFBD>
|
||||
quarternion_to_euler(imu660rc_quarternion, &imu660rc_roll, &imu660rc_pitch, &imu660rc_yaw);
|
||||
|
||||
// <20><>ȡ<EFBFBD><C8A1><EFBFBD>ٶ<EFBFBD><D9B6><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ٶ<EFBFBD><D9B6><EFBFBD>Ϣ
|
||||
#if(1 == IMU660RC_QUARTERNION_GET_ACC)
|
||||
{
|
||||
buff2_ptr = (int16 *)buff;
|
||||
imu660rc_read_registers(IMU660RC_OUTX_L_A, (uint8 *)buff2_ptr, 6);
|
||||
imu660rc_acc_x = buff2_ptr[0];
|
||||
imu660rc_acc_y = buff2_ptr[1];
|
||||
imu660rc_acc_z = buff2_ptr[2];
|
||||
}
|
||||
#endif
|
||||
#if(1 == IMU660RC_QUARTERNION_GET_GYRO)
|
||||
{
|
||||
buff2_ptr = (int16 *)buff;
|
||||
imu660rc_read_registers(IMU660RC_OUTX_L_G, (uint8 *)buff2_ptr, 6);
|
||||
imu660rc_gyro_x = buff2_ptr[0];
|
||||
imu660rc_gyro_y = buff2_ptr[1];
|
||||
imu660rc_gyro_z = buff2_ptr[2];
|
||||
}
|
||||
#endif
|
||||
}
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------------------------------------------------------
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> IMU660RC<52>жϻص<CFBB><D8B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ҫ<EFBFBD><D2AA><EFBFBD>ж<EFBFBD><D0B6>ڶ<EFBFBD>ȡ<EFBFBD><C8A1>Ԫ<EFBFBD><D4AA>
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> void
|
||||
// <20><><EFBFBD>ز<EFBFBD><D8B2><EFBFBD> void
|
||||
// ʹ<><CAB9>ʾ<EFBFBD><CABE>
|
||||
// <20><>ע<EFBFBD><D7A2>Ϣ
|
||||
//
|
||||
//-------------------------------------------------------------------------------------------------------------------
|
||||
void imu660rc_callback(void)
|
||||
{
|
||||
imu660rc_get_quarternion();
|
||||
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------------------------------------------------------
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>ʼ<EFBFBD><CABC> IMU660RC
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> quarternion_rate ѡ<><D1A1><EFBFBD><EFBFBD>Ԫ<EFBFBD><D4AA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
// <20><><EFBFBD>ز<EFBFBD><D8B2><EFBFBD> uint8 1-<2D><>ʼ<EFBFBD><CABC>ʧ<EFBFBD><CAA7> 0-<2D><>ʼ<EFBFBD><CABC><EFBFBD>ɹ<EFBFBD>
|
||||
// ʹ<><CAB9>ʾ<EFBFBD><CABE> imu660rc_init(IMU660RC_QUARTERNION_120HZ);
|
||||
// <20><>ע<EFBFBD><D7A2>Ϣ
|
||||
//-------------------------------------------------------------------------------------------------------------------
|
||||
uint8 imu660rc_init(imu660rc_quarternion_rate_config quarternion_rate)
|
||||
{
|
||||
uint8 return_state = 0;
|
||||
|
||||
imu660rc_quarternion_rate = quarternion_rate;
|
||||
#if IMU660RC_USE_SOFT_IIC
|
||||
soft_iic_init(&imu660rc_iic_struct, IMU660RC_DEV_ADDR, IMU660RC_SOFT_IIC_DELAY, IMU660RC_SCL_PIN, IMU660RC_SDA_PIN); // <20><><EFBFBD><EFBFBD> IMU660RC <20><> IIC <20>˿<EFBFBD>
|
||||
|
||||
#else
|
||||
spi_init(IMU660RC_SPI, SPI_MODE0, IMU660RC_SPI_SPEED, IMU660RC_SPC_PIN, IMU660RC_SDI_PIN, IMU660RC_SDO_PIN, SPI_CS_NULL); // <20><><EFBFBD><EFBFBD> IMU660RC <20><> SPI <20>˿<EFBFBD>
|
||||
gpio_init(IMU660RC_CS_PIN, GPO, GPIO_HIGH, GPO_PUSH_PULL); // <20><><EFBFBD><EFBFBD> IMU660RC <20><>CS<43>˿<EFBFBD>
|
||||
#endif
|
||||
|
||||
system_delay_ms(10);
|
||||
|
||||
do
|
||||
{
|
||||
if(imu660rc_self_check()) // IMU660RC <20>Լ<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> IMU660RC <20>Լ<EFBFBD><D4BC><EFBFBD><EFBFBD><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, "imu660rc self check error.");
|
||||
return_state = 1;
|
||||
break;
|
||||
}
|
||||
|
||||
// <20><>λ<EFBFBD><CEBB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
imu660rc_write_register(IMU660RC_FUNC_CFG_ACCESS, 0x04);
|
||||
system_delay_ms(30);
|
||||
|
||||
// <20><><EFBFBD>ÿ<EFBFBD><C3BF><EFBFBD><EFBFBD>¹<EFBFBD><C2B9><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ַ<EFBFBD><D6B7><EFBFBD><EFBFBD>
|
||||
imu660rc_write_register(IMU660RC_CTRL3, 0x44);
|
||||
|
||||
switch(IMU660RC_ACC_SAMPLE_DEFAULT)
|
||||
{
|
||||
default:
|
||||
{
|
||||
zf_log(0, "IMU660RC_ACC_SAMPLE_DEFAULT set error.");
|
||||
return_state = 1;
|
||||
}break;
|
||||
case IMU660RC_ACC_SAMPLE_SGN_2G:
|
||||
{
|
||||
imu660rc_write_register(IMU660RC_CTRL8, 0x00);
|
||||
imu660rc_transition_factor[0] = 16393.44;
|
||||
}break;
|
||||
case IMU660RC_ACC_SAMPLE_SGN_4G:
|
||||
{
|
||||
imu660rc_write_register(IMU660RC_CTRL8, 0x01);
|
||||
imu660rc_transition_factor[0] = 8196.72;
|
||||
}break;
|
||||
case IMU660RC_ACC_SAMPLE_SGN_8G:
|
||||
{
|
||||
imu660rc_write_register(IMU660RC_CTRL8, 0x02);
|
||||
imu660rc_transition_factor[0] = 4098.36;
|
||||
}break;
|
||||
case IMU660RC_ACC_SAMPLE_SGN_16G:
|
||||
{
|
||||
imu660rc_write_register(IMU660RC_CTRL8, 0x03);
|
||||
imu660rc_transition_factor[0] = 2049.18;
|
||||
}break;
|
||||
}
|
||||
if(1 == return_state)
|
||||
{
|
||||
break;
|
||||
}
|
||||
|
||||
switch(IMU660RC_GYRO_SAMPLE_DEFAULT)
|
||||
{
|
||||
default:
|
||||
{
|
||||
zf_log(0, "IMU660RC_GYRO_SAMPLE_DEFAULT set error.");
|
||||
return_state = 1;
|
||||
}break;
|
||||
case IMU660RC_GYRO_SAMPLE_SGN_125DPS:
|
||||
{
|
||||
imu660rc_write_register(IMU660RC_CTRL6, 0x00);
|
||||
imu660rc_transition_factor[1] = 228.5714;
|
||||
}break;
|
||||
case IMU660RC_GYRO_SAMPLE_SGN_250DPS:
|
||||
{
|
||||
imu660rc_write_register(IMU660RC_CTRL6, 0x01);
|
||||
imu660rc_transition_factor[1] = 114.2857;
|
||||
}break;
|
||||
case IMU660RC_GYRO_SAMPLE_SGN_500DPS:
|
||||
{
|
||||
imu660rc_write_register(IMU660RC_CTRL6, 0x02);
|
||||
imu660rc_transition_factor[1] = 57.1428;
|
||||
}break;
|
||||
case IMU660RC_GYRO_SAMPLE_SGN_1000DPS:
|
||||
{
|
||||
imu660rc_write_register(IMU660RC_CTRL6, 0x03);
|
||||
imu660rc_transition_factor[1] = 28.5714;
|
||||
}break;
|
||||
case IMU660RC_GYRO_SAMPLE_SGN_2000DPS:
|
||||
{
|
||||
imu660rc_write_register(IMU660RC_CTRL6, 0x04);
|
||||
imu660rc_transition_factor[1] = 14.2857;
|
||||
}break;
|
||||
case IMU660RC_GYRO_SAMPLE_SGN_4000DPS:
|
||||
{
|
||||
imu660rc_write_register(IMU660RC_CTRL6, 0x0C);
|
||||
imu660rc_transition_factor[1] = 7.14285;
|
||||
}break;
|
||||
}
|
||||
if(1 == return_state)
|
||||
{
|
||||
break;
|
||||
}
|
||||
|
||||
// <20><><EFBFBD>ô<EFBFBD><C3B4><EFBFBD><EFBFBD><EFBFBD>ģʽ<C4A3><CABD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ<EFBFBD>߾<EFBFBD><DFBE><EFBFBD>ģʽ<C4A3>Լ<EFBFBD><D4BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
imu660rc_write_register(IMU660RC_CTRL1, 0x15);
|
||||
imu660rc_write_register(IMU660RC_CTRL2, 0x18);
|
||||
|
||||
// <20><><EFBFBD><EFBFBD>LPF1<46>˲<EFBFBD><CBB2><EFBFBD>
|
||||
imu660rc_write_register(IMU660RC_CTRL7, 0x01);
|
||||
|
||||
// <20><><EFBFBD><EFBFBD>LPF2<46>˲<EFBFBD><CBB2><EFBFBD>
|
||||
imu660rc_write_register(IMU660RC_CTRL9, 0x08);
|
||||
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ԫ<EFBFBD><D4AA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ӧ<EFBFBD><D3A6><EFBFBD><EFBFBD>
|
||||
if(IMU660RC_QUARTERNION_DISABLE != quarternion_rate)
|
||||
{
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD>жϴ<D0B6><CFB4><EFBFBD><EFBFBD>ź<EFBFBD>
|
||||
imu660rc_write_register(IMU660RC_INT2_CTRL, 0x80);
|
||||
imu660rc_write_register(IMU660RC_CTRL4, 0x08);
|
||||
imu660rc_write_register(IMU660RC_EMB_FUNC_CFG, 0x30);
|
||||
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ü<EFBFBD><C3BC>ٶȡ<D9B6><C8A1><EFBFBD><EFBFBD>ٶ<EFBFBD><D9B6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
imu660rc_write_register(IMU660RC_CTRL1, 0x10 | (quarternion_rate + 3));
|
||||
imu660rc_write_register(IMU660RC_CTRL2, 0x10 | (quarternion_rate + 3));
|
||||
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ԫ<EFBFBD><D4AA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʲ<EFBFBD><CAB2><EFBFBD><EFBFBD><EFBFBD>
|
||||
imu660rc_set_mem_bank(IMU660RC_EMBED_MEM_BANK);
|
||||
imu660rc_write_register(IMU660RC_SFLP_ODR, 0x43 | (quarternion_rate << 3));
|
||||
imu660rc_write_register(IMU660RC_EMB_FUNC_EN_A, 0x02);
|
||||
imu660rc_write_register(IMU660RC_PAGE_RW, 0x00);
|
||||
imu660rc_set_mem_bank(IMU660RC_MAIN_MEM_BANK);
|
||||
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD>жϼ<D0B6><CFBC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
exti_init(IMU660RC_INT2_PIN, EXTI_TRIGGER_RISING);
|
||||
}
|
||||
}while(0);
|
||||
|
||||
return return_state;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -0,0 +1,211 @@
|
||||
/*********************************************************************************************************************
|
||||
* RT1064DVL6A Opensourec Library <20><><EFBFBD><EFBFBD>RT1064DVL6A <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> RT1064DVL6A <20><>Դ<EFBFBD><D4B4><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD>
|
||||
*
|
||||
* RT1064DVL6A <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_imu660rc
|
||||
* <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.10.2
|
||||
* <20><><EFBFBD><EFBFBD>ƽ̨ TC264
|
||||
* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> https://seekfree.taobao.com/
|
||||
*
|
||||
* <20>ļ<DEB8>¼
|
||||
* <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><>ע
|
||||
* 2025-12-12 SeekFree first version
|
||||
********************************************************************************************************************/
|
||||
/*********************************************************************************************************************
|
||||
* <20><><EFBFBD>߶<EFBFBD><DFB6>壺
|
||||
* ------------------------------------
|
||||
* ģ<><C4A3><EFBFBD>ܽ<EFBFBD> <20><>Ƭ<EFBFBD><C6AC><EFBFBD>ܽ<EFBFBD>
|
||||
* // Ӳ<><D3B2> SPI <20><><EFBFBD><EFBFBD>
|
||||
* SCL/SPC <20>鿴 zf_device_imu660rc.h <20><> IMU660RC_SPC_PIN <20>궨<EFBFBD><EAB6A8>
|
||||
* SDA/DSI <20>鿴 zf_device_imu660rc.h <20><> IMU660RC_SDI_PIN <20>궨<EFBFBD><EAB6A8>
|
||||
* SA0/SDO <20>鿴 zf_device_imu660rc.h <20><> IMU660RC_SDO_PIN <20>궨<EFBFBD><EAB6A8>
|
||||
* CS <20>鿴 zf_device_imu660rc.h <20><> IMU660RC_CS_PIN <20>궨<EFBFBD><EAB6A8>
|
||||
* INT2 <20>鿴 zf_device_imu660rc.h <20><> IMU660RC_INT2_PIN <20>궨<EFBFBD><EAB6A8>
|
||||
* VCC 3.3V<EFBFBD><EFBFBD>Դ
|
||||
* GND <20><>Դ<EFBFBD><D4B4>
|
||||
* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
*
|
||||
* // <20><><EFBFBD><EFBFBD> IIC <20><><EFBFBD><EFBFBD>
|
||||
* SCL/SPC <20>鿴 zf_device_imu660rc.h <20><> IMU660RC_SCL_PIN <20>궨<EFBFBD><EAB6A8>
|
||||
* SDA/DSI <20>鿴 zf_device_imu660rc.h <20><> IMU660RC_SDA_PIN <20>궨<EFBFBD><EAB6A8>
|
||||
* VCC 3.3V<EFBFBD><EFBFBD>Դ
|
||||
* GND <20><>Դ<EFBFBD><D4B4>
|
||||
* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
* ------------------------------------
|
||||
********************************************************************************************************************/
|
||||
|
||||
|
||||
#ifndef _zf_device_imu660rc_h_
|
||||
#define _zf_device_imu660rc_h_
|
||||
|
||||
#include "zf_common_typedef.h"
|
||||
|
||||
|
||||
// IMU660RC_USE_SOFT_IIC<49><43><EFBFBD><EFBFBD>Ϊ0<CEAA><30>ʾʹ<CABE><CAB9>Ӳ<EFBFBD><D3B2>SPI<50><49><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>Ϊ1<CEAA><31>ʾʹ<CABE><CAB9><EFBFBD><EFBFBD><EFBFBD><EFBFBD>IIC<49><43><EFBFBD><EFBFBD>
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>IMU660RC_USE_SOFT_IIC<49><43><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ҫ<EFBFBD>ȱ<EFBFBD><C8B1>벢<EFBFBD><EBB2A2><EFBFBD>س<EFBFBD><D8B3><EFBFBD>Ƭ<EFBFBD><C6AC><EFBFBD><EFBFBD>ģ<EFBFBD><C4A3><EFBFBD><EFBFBD>Ҫ<EFBFBD>ϵ<EFBFBD><CFB5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͨѶ
|
||||
#define IMU660RC_USE_SOFT_IIC ( 0 ) // Ĭ<><C4AC>ʹ<EFBFBD><CAB9>Ӳ<EFBFBD><D3B2> SPI <20><>ʽ<EFBFBD><CABD><EFBFBD><EFBFBD>
|
||||
|
||||
#if IMU660RC_USE_SOFT_IIC // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>ɫ<EFBFBD><C9AB><EFBFBD><EFBFBD><EFBFBD>IJ<EFBFBD><C4B2><EFBFBD><EFBFBD><EFBFBD>ȷ<EFBFBD><C8B7> <20><>ɫ<EFBFBD>ҵľ<D2B5><C4BE><EFBFBD>û<EFBFBD><C3BB><EFBFBD>õ<EFBFBD>
|
||||
//====================================================<3D><><EFBFBD><EFBFBD> IIC <20><><EFBFBD><EFBFBD>====================================================
|
||||
#define IMU660RC_SOFT_IIC_DELAY ( 0 ) // <20><><EFBFBD><EFBFBD> IIC <20><>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD> <20><>ֵԽС IIC ͨ<><CDA8><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Խ<EFBFBD><D4BD>
|
||||
#define IMU660RC_SCL_PIN ( P20_11 ) // <20><><EFBFBD><EFBFBD> IIC SCL <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> IMU660RC <20><> SCL <20><><EFBFBD><EFBFBD>
|
||||
#define IMU660RC_SDA_PIN ( P20_14 ) // <20><><EFBFBD><EFBFBD> IIC SDA <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> IMU660RC <20><> SDA <20><><EFBFBD><EFBFBD>
|
||||
//====================================================<3D><><EFBFBD><EFBFBD> IIC <20><><EFBFBD><EFBFBD>====================================================
|
||||
#else
|
||||
|
||||
//====================================================Ӳ<><D3B2> SPI <20><><EFBFBD><EFBFBD>====================================================
|
||||
#define IMU660RC_SPI_SPEED (10 * 1000 * 1000) // Ӳ<><D3B2> SPI <20><><EFBFBD><EFBFBD>
|
||||
#define IMU660RC_SPI (SPI_0) // Ӳ<><D3B2> SPI <20><>
|
||||
#define IMU660RC_SPC_PIN (SPI0_SCLK_P20_11 ) // Ӳ<><D3B2> SPI SCK <20><><EFBFBD><EFBFBD>
|
||||
#define IMU660RC_SDI_PIN (SPI0_MOSI_P20_14) // Ӳ<><D3B2> SPI MOSI <20><><EFBFBD><EFBFBD>
|
||||
#define IMU660RC_SDO_PIN (SPI0_MISO_P20_12) // Ӳ<><D3B2> SPI MISO <20><><EFBFBD><EFBFBD>
|
||||
//====================================================Ӳ<><D3B2> SPI <20><><EFBFBD><EFBFBD>====================================================
|
||||
#endif
|
||||
#define IMU660RC_CS_PIN ( P20_13 ) // CS Ƭѡ<C6AC><D1A1><EFBFBD><EFBFBD>
|
||||
#define IMU660RC_CS(x) ( (x) ? (gpio_high(IMU660RC_CS_PIN)) : (gpio_low(IMU660RC_CS_PIN)) )
|
||||
#define IMU660RC_INT2_PIN ( ERU_CH0_REQ0_P15_4 ) // <20>ж<EFBFBD><D0B6>ź<EFBFBD><C5BA><EFBFBD><EFBFBD>ţ<EFBFBD><C5A3>ڶ<EFBFBD>ȡ<EFBFBD><C8A1>Ԫ<EFBFBD><D4AA>ʱ<EFBFBD><CAB1>Ҫʹ<D2AA><CAB9>
|
||||
|
||||
|
||||
#define IMU660RC_QUARTERNION_GET_GYRO ( 1 ) // 1<><31><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ԫ<EFBFBD><D4AA><EFBFBD><EFBFBD>ģʽʱ<CABD><CAB1><EFBFBD><EFBFBD>ȡ<EFBFBD><C8A1>Ԫ<EFBFBD><D4AA>ʱ<EFBFBD>Զ<EFBFBD><D4B6><EFBFBD>ȡ<EFBFBD><C8A1><EFBFBD>ٶ<EFBFBD> 0<><30><EFBFBD><EFBFBD><EFBFBD>Զ<EFBFBD><D4B6><EFBFBD>ȡ
|
||||
#define IMU660RC_QUARTERNION_GET_ACC ( 1 ) // 1<><31><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ԫ<EFBFBD><D4AA><EFBFBD><EFBFBD>ģʽʱ<CABD><CAB1><EFBFBD><EFBFBD>ȡ<EFBFBD><C8A1>Ԫ<EFBFBD><D4AA>ʱ<EFBFBD>Զ<EFBFBD><D4B6><EFBFBD>ȡ<EFBFBD><C8A1><EFBFBD>ٶ<EFBFBD> 0<><30><EFBFBD><EFBFBD><EFBFBD>Զ<EFBFBD><D4B6><EFBFBD>ȡ
|
||||
#define IMU660RC_ACC_SAMPLE_DEFAULT ( IMU660RC_ACC_SAMPLE_SGN_8G ) // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ĭ<EFBFBD>ϵ<EFBFBD> <20><><EFBFBD>ٶȼ<D9B6> <20><>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
#define IMU660RC_GYRO_SAMPLE_DEFAULT ( IMU660RC_GYRO_SAMPLE_SGN_2000DPS ) // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ĭ<EFBFBD>ϵ<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
|
||||
typedef enum
|
||||
{
|
||||
IMU660RC_MAIN_MEM_BANK = 0x00,
|
||||
IMU660RC_HUB_MEM_BANK = 0x40,
|
||||
IMU660RC_EMBED_MEM_BANK = 0x80,
|
||||
}imu660rc_mem_bank_enum;
|
||||
|
||||
typedef enum
|
||||
{
|
||||
IMU660RC_ACC_SAMPLE_SGN_2G , // <20><><EFBFBD>ٶȼ<D9B6><C8BC><EFBFBD><EFBFBD><EFBFBD> <20><>2G (ACC = Accelerometer <20><><EFBFBD>ٶȼ<D9B6>) (SGN = signum <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Χ) (G = g <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ٶ<EFBFBD> g<><67>9.80 m/s^2)
|
||||
IMU660RC_ACC_SAMPLE_SGN_4G , // <20><><EFBFBD>ٶȼ<D9B6><C8BC><EFBFBD><EFBFBD><EFBFBD> <20><>4G
|
||||
IMU660RC_ACC_SAMPLE_SGN_8G , // <20><><EFBFBD>ٶȼ<D9B6><C8BC><EFBFBD><EFBFBD><EFBFBD> <20><>8G
|
||||
IMU660RC_ACC_SAMPLE_SGN_16G, // <20><><EFBFBD>ٶȼ<D9B6><C8BC><EFBFBD><EFBFBD><EFBFBD> <20><>16G
|
||||
}imu660rc_acc_sample_config;
|
||||
|
||||
typedef enum
|
||||
{
|
||||
IMU660RC_GYRO_SAMPLE_SGN_125DPS , // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>125DPS (GYRO = Gyroscope <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>) (SGN = signum <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Χ) (DPS = Degree Per Second <20><><EFBFBD>ٶȵ<D9B6>λ <20><>/S)
|
||||
IMU660RC_GYRO_SAMPLE_SGN_250DPS , // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>250DPS
|
||||
IMU660RC_GYRO_SAMPLE_SGN_500DPS , // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>500DPS
|
||||
IMU660RC_GYRO_SAMPLE_SGN_1000DPS, // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>1000DPS
|
||||
IMU660RC_GYRO_SAMPLE_SGN_2000DPS, // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>2000DPS
|
||||
IMU660RC_GYRO_SAMPLE_SGN_4000DPS, // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>4000DPS
|
||||
}imu660rc_gyro_sample_config;
|
||||
|
||||
typedef enum
|
||||
{
|
||||
IMU660RC_QUARTERNION_15HZ, // 15 Hz
|
||||
IMU660RC_QUARTERNION_30HZ, // 30 Hz
|
||||
IMU660RC_QUARTERNION_60HZ, // 60 Hz
|
||||
IMU660RC_QUARTERNION_120HZ, // 120Hz
|
||||
IMU660RC_QUARTERNION_240HZ, // 240Hz
|
||||
IMU660RC_QUARTERNION_480HZ, // 480Hz
|
||||
IMU660RC_QUARTERNION_DISABLE, // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ԫ<EFBFBD><D4AA><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
}imu660rc_quarternion_rate_config;
|
||||
|
||||
|
||||
//================================================<3D><><EFBFBD><EFBFBD> IMU660RC <20>ڲ<EFBFBD><DAB2><EFBFBD>ַ================================================
|
||||
#define IMU660RC_DEV_ADDR ( 0x6B ) // SA0<41>ӵأ<D3B5>0x6A SA0<41><30><EFBFBD><EFBFBD><EFBFBD><EFBFBD>0x6B ģ<><C4A3>Ĭ<EFBFBD><C4AC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
#define IMU660RC_SPI_W ( 0x00 )
|
||||
#define IMU660RC_SPI_R ( 0x80 )
|
||||
#define IMU660RC_TIMEOUT_COUNT ( 0x00FF ) // IMU660RC <20><>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD>
|
||||
|
||||
|
||||
//================================================<3D><><EFBFBD><EFBFBD> IMU660RC <20>Ĵ<EFBFBD><C4B4><EFBFBD><EFBFBD><EFBFBD>ַ================================================
|
||||
#define IMU660RC_FUNC_CFG_ACCESS ( 0x01 )
|
||||
#define IMU660RC_INT2_CTRL ( 0x0E )
|
||||
#define IMU660RC_CHIP_ID ( 0x0F )
|
||||
#define IMU660RC_CTRL1 ( 0x10 )
|
||||
#define IMU660RC_CTRL2 ( 0x11 )
|
||||
#define IMU660RC_CTRL3 ( 0x12 )
|
||||
#define IMU660RC_CTRL4 ( 0x13 )
|
||||
#define IMU660RC_CTRL5 ( 0x14 )
|
||||
#define IMU660RC_CTRL6 ( 0x15 )
|
||||
#define IMU660RC_CTRL7 ( 0x16 )
|
||||
#define IMU660RC_CTRL8 ( 0x17 )
|
||||
#define IMU660RC_CTRL9 ( 0x18 )
|
||||
#define IMU660RC_CTRL10 ( 0x19 )
|
||||
#define IMU660RC_CTRL_STATUS ( 0x1A )
|
||||
#define IMU660RC_STATUS_REG ( 0x1E )
|
||||
#define IMU660RC_OUT_TEMP_L ( 0x20 )
|
||||
#define IMU660RC_OUT_TEMP_H ( 0x21 )
|
||||
#define IMU660RC_OUTX_L_G ( 0x22 )
|
||||
#define IMU660RC_OUTX_H_G ( 0x23 )
|
||||
#define IMU660RC_OUTY_L_G ( 0x24 )
|
||||
#define IMU660RC_OUTY_H_G ( 0x25 )
|
||||
#define IMU660RC_OUTZ_L_G ( 0x26 )
|
||||
#define IMU660RC_OUTZ_H_G ( 0x27 )
|
||||
#define IMU660RC_OUTX_L_A ( 0x28 )
|
||||
#define IMU660RC_OUTX_H_A ( 0x29 )
|
||||
#define IMU660RC_OUTY_L_A ( 0x2A )
|
||||
#define IMU660RC_OUTY_H_A ( 0x2B )
|
||||
#define IMU660RC_OUTZ_L_A ( 0x2C )
|
||||
#define IMU660RC_OUTZ_H_A ( 0x2D )
|
||||
|
||||
#define IMU660RC_PAGE_SEL ( 0x02 )
|
||||
#define IMU660RC_EMB_FUNC_EN_A ( 0x04 )
|
||||
#define IMU660RC_PAGE_RW ( 0x17 )
|
||||
#define IMU660RC_SFLP_ODR ( 0x5E )
|
||||
#define IMU660RC_EMB_FUNC_CFG ( 0x63 )
|
||||
|
||||
|
||||
|
||||
extern float imu660rc_transition_factor[2];
|
||||
extern int16 imu660rc_gyro_x, imu660rc_gyro_y, imu660rc_gyro_z; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
extern int16 imu660rc_acc_x , imu660rc_acc_y , imu660rc_acc_z; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ٶȼ<D9B6><C8BC><EFBFBD><EFBFBD><EFBFBD>
|
||||
extern float imu660rc_roll , imu660rc_pitch , imu660rc_yaw; // ŷ<><C5B7><EFBFBD><EFBFBD>
|
||||
extern float imu660rc_quarternion[4]; // <20><>Ԫ<EFBFBD><D4AA>
|
||||
|
||||
|
||||
void imu660rc_get_acc (void);
|
||||
void imu660rc_get_gyro (void);
|
||||
void imu660rc_get_quarternion (void);
|
||||
|
||||
//-------------------------------------------------------------------------------------------------------------------
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> IMU660RC <20><><EFBFBD>ٶȼ<D9B6><C8BC><EFBFBD><EFBFBD><EFBFBD>ת<EFBFBD><D7AA>Ϊʵ<CEAA><CAB5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> acc_value <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD><C4BC>ٶȼ<D9B6><C8BC><EFBFBD><EFBFBD><EFBFBD>
|
||||
// <20><><EFBFBD>ز<EFBFBD><D8B2><EFBFBD> void
|
||||
// ʹ<><CAB9>ʾ<EFBFBD><CABE> float data = imu660rc_acc_transition(imu660rc_acc_x); // <20><>λΪ g(m/s^2)
|
||||
// <20><>ע<EFBFBD><D7A2>Ϣ
|
||||
//-------------------------------------------------------------------------------------------------------------------
|
||||
#define imu660rc_acc_transition(acc_value) ((float)(acc_value) / imu660rc_transition_factor[0])
|
||||
|
||||
//-------------------------------------------------------------------------------------------------------------------
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> IMU660RC <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ת<EFBFBD><D7AA>Ϊʵ<CEAA><CAB5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> gyro_value <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
// <20><><EFBFBD>ز<EFBFBD><D8B2><EFBFBD> void
|
||||
// ʹ<><CAB9>ʾ<EFBFBD><CABE> float data = imu660rc_gyro_transition(imu660rc_gyro_x); // <20><>λΪ <20><>/s
|
||||
// <20><>ע<EFBFBD><D7A2>Ϣ
|
||||
//-------------------------------------------------------------------------------------------------------------------
|
||||
#define imu660rc_gyro_transition(gyro_value) ((float)(gyro_value) / imu660rc_transition_factor[1])
|
||||
void imu660rc_callback (void);
|
||||
uint8 imu660rc_init (imu660rc_quarternion_rate_config quarternion_rate);
|
||||
|
||||
|
||||
|
||||
#endif
|
||||
@@ -97,7 +97,7 @@
|
||||
//================================================<3D><><EFBFBD><EFBFBD> IMU660RX ȫ<>ֱ<EFBFBD><D6B1><EFBFBD>================================================
|
||||
extern int16 imu660rx_gyro_x, imu660rx_gyro_y, imu660rx_gyro_z; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> gyro (<28><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>)
|
||||
extern int16 imu660rx_acc_x, imu660rx_acc_y, imu660rx_acc_z; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ٶȼ<D9B6><C8BC><EFBFBD><EFBFBD><EFBFBD> acc (accelerometer <20><><EFBFBD>ٶȼ<D9B6>)
|
||||
extern float imu660ra_transition_factor[2];
|
||||
extern float imu660rx_transition_factor[2];
|
||||
//================================================<3D><><EFBFBD><EFBFBD> IMU660RX ȫ<>ֱ<EFBFBD><D6B1><EFBFBD>================================================
|
||||
|
||||
|
||||
|
||||
@@ -167,7 +167,7 @@ void ips114_init (void);
|
||||
// ʹ<><CAB9>ʾ<EFBFBD><CABE> ips114_displayimage8660(scc8660_image[0], SCC8660_W, SCC8660_H);
|
||||
// <20><>ע<EFBFBD><D7A2>Ϣ <20><>չ<EFBFBD><D5B9>һ<EFBFBD><D2BB><EFBFBD><EFBFBD>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ĭ<EFBFBD><C4AC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ţ<EFBFBD><C5A3><EFBFBD><EFBFBD><EFBFBD>Ļ<EFBFBD><C4BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʼ<EFBFBD>㿪ʼ<E3BFAA><CABC>ʾ
|
||||
//-------------------------------------------------------------------------------------------------------------------
|
||||
#define ips114_displayimage8660(p, width, height) (ips114_show_rgb565_image(0, 0, (p), SCC8660_W, SCC8660_H, (width), (height), 1))
|
||||
#define ips114_displayimage8660(p, width, height) (ips114_show_rgb565_image(0, 0, (p), SCC8660_W, SCC8660_H, (width), (height), 0))
|
||||
//=================================================<3D><><EFBFBD><EFBFBD> IPS114 <20><>չ<EFBFBD><D5B9><EFBFBD><EFBFBD>================================================
|
||||
|
||||
#endif
|
||||
|
||||
@@ -220,7 +220,7 @@ void ips200_init (ips200_type_enum type_select);
|
||||
// ʹ<><CAB9>ʾ<EFBFBD><CABE> ips200_displayimage8660(scc8660_image[0], SCC8660_W, SCC8660_H);
|
||||
// <20><>ע<EFBFBD><D7A2>Ϣ <20><>չ<EFBFBD><D5B9>һ<EFBFBD><D2BB><EFBFBD><EFBFBD>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ĭ<EFBFBD><C4AC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ţ<EFBFBD><C5A3><EFBFBD><EFBFBD><EFBFBD>Ļ<EFBFBD><C4BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʼ<EFBFBD>㿪ʼ<E3BFAA><CABC>ʾ
|
||||
//-------------------------------------------------------------------------------------------------------------------
|
||||
#define ips200_displayimage8660(p, width, height) (ips200_show_rgb565_image(0, 0, (p), SCC8660_W, SCC8660_H, (width), (height), 1))
|
||||
#define ips200_displayimage8660(p, width, height) (ips200_show_rgb565_image(0, 0, (p), SCC8660_W, SCC8660_H, (width), (height), 0))
|
||||
//==================================================<3D><><EFBFBD><EFBFBD> IPS200 <20><>չ<EFBFBD><D5B9><EFBFBD><EFBFBD>================================================
|
||||
|
||||
|
||||
|
||||
@@ -86,7 +86,7 @@
|
||||
// <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_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 (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_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_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><C3A3><EFBFBD>֧<EFBFBD><D6A7><EFBFBD><EFBFBD>ͫ<EFBFBD><CDAB>֡<EFBFBD>ʰ汾<CAB0><E6B1BE>===========================
|
||||
|
||||
|
||||
@@ -24,7 +24,7 @@
|
||||
* <20>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD><EFBFBD> zf_device_wifi_spi
|
||||
* <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><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ADS v1.10.2
|
||||
* <20><><EFBFBD><EFBFBD>ƽ̨ TC264D
|
||||
* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> https://seekfree.taobao.com/
|
||||
*
|
||||
@@ -63,6 +63,21 @@
|
||||
#define SOCKET_CONNECT_TIME_OUT 50000 // <20><>λ<EFBFBD><CEBB><EFBFBD><EFBFBD>
|
||||
#define OTHER_TIME_OUT 1000 // <20><>λ<EFBFBD><CEBB><EFBFBD><EFBFBD>
|
||||
|
||||
#if ((WIFI_SPI_RECVIVE_SIZE < 32) || (WIFI_SPI_RECVIVE_SIZE > 4088))
|
||||
#error "WIFI_SPI_RECVIVE_SIZE must be >= 32 or <= 4088"
|
||||
#endif
|
||||
|
||||
#if (WIFI_SPI_RECVIVE_SIZE >= WIFI_SPI_RECVIVE_FIFO_SIZE)
|
||||
#error "WIFI_SPI_RECVIVE_FIFO_SIZE must be > WIFI_SPI_RECVIVE_SIZE"
|
||||
#endif
|
||||
|
||||
|
||||
#if (WIFI_SPI_TRANSFER_SIZE != 4088)
|
||||
#error "WIFI_SPI_TRANSFER_SIZE must be == 4088"
|
||||
#endif
|
||||
|
||||
|
||||
|
||||
char wifi_spi_version[12]; // <20><><EFBFBD><EFBFBD>ģ<EFBFBD><C4A3><EFBFBD>̼<EFBFBD><CCBC>汾<EFBFBD><E6B1BE>Ϣ
|
||||
char wifi_spi_mac_addr[20]; // <20><><EFBFBD><EFBFBD>ģ<EFBFBD><C4A3>MAC<41><43>ַ<EFBFBD><D6B7>Ϣ
|
||||
char wifi_spi_ip_addr_port[25]; // <20><><EFBFBD><EFBFBD>ģ<EFBFBD><C4A3>IP<49><50>ַ<EFBFBD><D6B7><EFBFBD>˿<EFBFBD><CBBF><EFBFBD>Ϣ
|
||||
@@ -271,8 +286,6 @@ static uint8 wifi_spi_get_version (void)
|
||||
{
|
||||
memcpy(wifi_spi_version, temp_packets.buffer, temp_packets.head.length);
|
||||
}
|
||||
return_state = (return_state == 0) ? (WIFI_SPI_REPLY_VERSION != temp_packets.head.command) : 1;
|
||||
|
||||
return return_state;
|
||||
}
|
||||
|
||||
@@ -293,8 +306,6 @@ static uint8 wifi_spi_get_mac_addr (void)
|
||||
{
|
||||
memcpy(wifi_spi_mac_addr, temp_packets.buffer, temp_packets.head.length);
|
||||
}
|
||||
return_state = (return_state == 0) ? (WIFI_SPI_REPLY_MAC_ADDR != temp_packets.head.command) : 1;
|
||||
|
||||
return return_state;
|
||||
}
|
||||
|
||||
@@ -316,7 +327,77 @@ static uint8 wifi_spi_get_ip_addr_port (void)
|
||||
{
|
||||
memcpy(wifi_spi_ip_addr_port, temp_packets.buffer, temp_packets.head.length);
|
||||
}
|
||||
return_state = (return_state == 0) ? (WIFI_SPI_REPLY_IP_ADDR != temp_packets.head.command) : 1;
|
||||
return return_state;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------------------------------------------------------
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> WIFI SPI <20><>ȡϵͳʱ<CDB3><CAB1>
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> time_format ʱ<><CAB1><EFBFBD><EFBFBD>ʽ
|
||||
// <20><><EFBFBD>ز<EFBFBD><D8B2><EFBFBD> *buffer <20><><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD>ַ<EFBFBD><D6B7><EFBFBD><EFBFBD><EFBFBD>ַ <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>С<EFBFBD><D0A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ҫ30<33><30><EFBFBD>ֽ<EFBFBD>
|
||||
// <20><><EFBFBD>ز<EFBFBD><D8B2><EFBFBD> buffer_size <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>С
|
||||
// <20><><EFBFBD>ز<EFBFBD><D8B2><EFBFBD> uint8 ״̬ 0-<2D>ɹ<EFBFBD> 1-<2D><><EFBFBD><EFBFBD>
|
||||
// ʹ<><CAB9>ʾ<EFBFBD><CABE>
|
||||
// <20><>ע<EFBFBD><D7A2>Ϣ <20><>Ҫ<EFBFBD><D2AA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȵ<EFBFBD>֮<EFBFBD><D6AE><EFBFBD><EFBFBD><EFBFBD>ܻ<EFBFBD>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD>ȷ<EFBFBD><C8B7>ʱ<EFBFBD>䣬<EFBFBD><E4A3AC><EFBFBD><EFBFBD><EFBFBD>ڵ<EFBFBD><DAB5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>֮ǰ<D6AE><C7B0>Ҫȷ<D2AA><C8B7>WIFIģ<49><C4A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ҫ<EFBFBD><D2AA><EFBFBD>յ<EFBFBD><D5B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ѿ<EFBFBD>ȫ<EFBFBD><C8AB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
// <20><>ע<EFBFBD><D7A2>Ϣ <20><>WIFI SPI <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>߰汾֧<E6B1BE><D6A7>
|
||||
// <20><>ע<EFBFBD><D7A2>Ϣ <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϢΪ<CFA2>ַ<EFBFBD><D6B7><EFBFBD><EFBFBD><EFBFBD>Ϣ<EFBFBD><CFA2><EFBFBD><EFBFBD>ֱ<EFBFBD><D6B1>printf<74><66><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֲ鿴
|
||||
//-------------------------------------------------------------------------------------------------------------------
|
||||
uint8 wifi_spi_get_time (wifi_spi_time_enum time_format, char *buffer, uint8 buffer_size)
|
||||
{
|
||||
uint8 return_state = 1;
|
||||
wifi_spi_packets_struct temp_packets;
|
||||
uint8 send_cmd, receive_cmd;
|
||||
|
||||
// <20><><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>30<33><30><EFBFBD>ֽ<EFBFBD>
|
||||
// <20><><EFBFBD><EFBFBD>ģ<EFBFBD><C4A3><EFBFBD>̼<EFBFBD><CCBC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>V2<56>汾
|
||||
if((30 <= buffer_size) && (!strncmp(wifi_spi_version, "V2", 2)))
|
||||
{
|
||||
send_cmd = WIFI_SPI_GET_TIME1 + time_format - WIFI_SPI_UTC_0;
|
||||
receive_cmd = WIFI_SPI_REPLY_TIME1 + time_format - WIFI_SPI_UTC_0;
|
||||
|
||||
return_state = wifi_spi_get_parameter(send_cmd, &temp_packets, OTHER_TIME_OUT);
|
||||
if((0 == return_state) && (receive_cmd == temp_packets.head.command))
|
||||
{
|
||||
return_state = (uint8)strncmp((const char *)temp_packets.buffer, "OK", 2);
|
||||
if(0 == return_state)
|
||||
{
|
||||
memcpy(buffer, &temp_packets.buffer[3], temp_packets.head.length - 3);
|
||||
buffer[temp_packets.head.length - 3] = 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
return return_state;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------------------------------------------------------
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> WIFI SPI ɨ<><C9A8><EFBFBD>ȵ<EFBFBD>
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> *buffer <20><><EFBFBD><EFBFBD>ɨ<EFBFBD>赽<EFBFBD><E8B5BD><EFBFBD>ȵ<EFBFBD><C8B5><EFBFBD>Ϣ <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ź<EFBFBD>ǿ<EFBFBD>ȣ<EFBFBD>ÿ<EFBFBD><C3BF><EFBFBD>ź<EFBFBD>ǿ<EFBFBD>Ⱥ<EFBFBD><C8BA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD>з<EFBFBD>
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> buffer_size <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ij<EFBFBD><C4B3><EFBFBD>
|
||||
// <20><><EFBFBD>ز<EFBFBD><D8B2><EFBFBD> uint8 ״̬ 0-<2D>ɹ<EFBFBD> 1-<2D><><EFBFBD><EFBFBD>
|
||||
// ʹ<><CAB9>ʾ<EFBFBD><CABE>
|
||||
// <20><>ע<EFBFBD><D7A2>Ϣ <20><>WIFI SPI <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>߰汾֧<E6B1BE><D6A7>
|
||||
// <20><>ע<EFBFBD><D7A2>Ϣ <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϢΪ<CFA2>ַ<EFBFBD><D6B7><EFBFBD><EFBFBD><EFBFBD>Ϣ<EFBFBD><CFA2><EFBFBD><EFBFBD>ֱ<EFBFBD><D6B1>printf<74><66><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֲ鿴
|
||||
// <20><>ע<EFBFBD><D7A2>Ϣ ÿһ<C3BF>а<EFBFBD><D0B0><EFBFBD>һ<EFBFBD><D2BB>wifi<66><69><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
//-------------------------------------------------------------------------------------------------------------------
|
||||
uint8 wifi_spi_wifi_scan (char *buffer, uint16 buffer_size)
|
||||
{
|
||||
uint8 return_state;
|
||||
|
||||
// ģ<><C4A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>V2<56>汾<EFBFBD>Ĺ̼<C4B9><CCBC><EFBFBD>֧<EFBFBD>ִ˹<D6B4><CBB9><EFBFBD>
|
||||
if(!strncmp(wifi_spi_version, "V2", 2))
|
||||
{
|
||||
return_state = wifi_spi_set_parameter(WIFI_SPI_SET_WIFI_SCAN, NULL, 0, WIFI_CONNECT_TIME_OUT);
|
||||
|
||||
if(0 == return_state)
|
||||
{
|
||||
#if (0 == WIFI_SPI_READ_TRANSFER)
|
||||
wifi_spi_send_buffer(NULL, 0);
|
||||
#endif
|
||||
while(0 == wifi_spi_read_buffer((uint8 *)buffer, buffer_size))
|
||||
{
|
||||
system_delay_ms(10);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return return_state;
|
||||
}
|
||||
@@ -505,7 +586,7 @@ uint32 wifi_spi_send_buffer (const uint8 *buffer, uint32 length)
|
||||
|
||||
while(length)
|
||||
{
|
||||
send_length = length > WIFI_SPI_TRANSFER_SIZE ? (uint16)WIFI_SPI_TRANSFER_SIZE : (uint16)length;
|
||||
send_length = (uint16) (length > WIFI_SPI_TRANSFER_SIZE ? WIFI_SPI_TRANSFER_SIZE : length);
|
||||
|
||||
if(wifi_spi_wait_idle(OTHER_TIME_OUT))
|
||||
{
|
||||
@@ -555,6 +636,18 @@ uint32 wifi_spi_send_buffer (const uint8 *buffer, uint32 length)
|
||||
return length;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------------------------------------------------------
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> WIFI SPI <20>ַ<EFBFBD><D6B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͺ<EFBFBD><CDBA><EFBFBD><EFBFBD><EFBFBD>ͬ<EFBFBD><CDAC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> *string <20><>Ҫ<EFBFBD><D2AA><EFBFBD>͵<EFBFBD><CDB5>ַ<EFBFBD><D6B7><EFBFBD>
|
||||
// <20><><EFBFBD>ز<EFBFBD><D8B2><EFBFBD> void
|
||||
// ʹ<><CAB9>ʾ<EFBFBD><CABE> wifi_spi_send_string("123");
|
||||
// <20><>ע<EFBFBD><D7A2>Ϣ
|
||||
//-------------------------------------------------------------------------------------------------------------------
|
||||
void wifi_spi_send_string(const char *string)
|
||||
{
|
||||
wifi_spi_send_buffer((uint8*)string, strlen(string));
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------------------------------------------------------
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> WIFI SPI <20><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> *buff <20><><EFBFBD>ջ<EFBFBD><D5BB><EFBFBD><EFBFBD><EFBFBD>
|
||||
@@ -566,32 +659,57 @@ uint32 wifi_spi_send_buffer (const uint8 *buffer, uint32 length)
|
||||
uint32 wifi_spi_read_buffer (uint8 *buffer, uint32 length)
|
||||
{
|
||||
zf_assert(NULL != buffer);
|
||||
uint32 data_len = length;
|
||||
uint32 fifo_read_length;
|
||||
uint32 write_length = 0;
|
||||
wifi_spi_packets_struct temp_packets;
|
||||
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD>ж<EFBFBD>FIFO<46><4F><EFBFBD>Ƿ<EFBFBD><C7B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݣ<EFBFBD><DDA3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȴ<EFBFBD>FIFO<46><4F>ȡ
|
||||
if(fifo_used(&wifi_spi_fifo))
|
||||
{
|
||||
fifo_read_length = fifo_used(&wifi_spi_fifo);
|
||||
fifo_read_length = length < fifo_read_length ? length : fifo_read_length;
|
||||
fifo_read_buffer(&wifi_spi_fifo, buffer, &fifo_read_length, FIFO_READ_AND_CLEAN);
|
||||
|
||||
buffer += fifo_read_length;
|
||||
length -= fifo_read_length;
|
||||
write_length += fifo_read_length;
|
||||
}
|
||||
|
||||
#if(1 == WIFI_SPI_READ_TRANSFER)
|
||||
|
||||
wifi_spi_packets_struct temp_packets;
|
||||
// <20><><EFBFBD><EFBFBD>WIFI SPI״̬<D7B4><CCAC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>жϻ<D0B6><CFBB><EFBFBD><EFBFBD>߳<EFBFBD><DFB3><EFBFBD><EFBFBD>Ѿ<EFBFBD><D1BE><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͨѶ<CDA8><D1B6><EFBFBD>β<F2B1BEB4><CEB2>ܷ<EFBFBD><DCB7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
if(WIFI_SPI_IDLE == wifi_spi_mutex)
|
||||
{
|
||||
// <20><>ͨѶ״̬<D7B4><CCAC><EFBFBD><EFBFBD>Ϊæ
|
||||
wifi_spi_mutex = WIFI_SPI_BUSY;
|
||||
wifi_spi_mutex = WIFI_SPI_BUSY; // <20><>ͨѶ״̬<D7B4><CCAC><EFBFBD><EFBFBD>Ϊæ
|
||||
|
||||
// <20><><EFBFBD><EFBFBD>ͨѶ<CDA8>鿴ģ<E9BFB4><C4A3><EFBFBD><EFBFBD><EFBFBD>Ƿ<EFBFBD><C7B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>δ<EFBFBD><CEB4>ȡ
|
||||
do
|
||||
{
|
||||
if(wifi_spi_wait_idle(OTHER_TIME_OUT))
|
||||
if( (WIFI_SPI_RECVIVE_SIZE > wifi_spi_fifo.size) || // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ռ䲻<D5BC><E4B2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ٶ<EFBFBD>ȡ
|
||||
(wifi_spi_wait_idle(OTHER_TIME_OUT)) // <20><>ʱ<EFBFBD>˳<EFBFBD>
|
||||
)
|
||||
{
|
||||
break;
|
||||
}
|
||||
|
||||
temp_packets.head.command = WIFI_SPI_DATA;
|
||||
temp_packets.head.length = 0;
|
||||
wifi_spi_transfer_command(&temp_packets, WIFI_SPI_RECVIVE_SIZE);
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD>յ<EFBFBD><D5B5>İ<EFBFBD><C4B0><EFBFBD><EFBFBD>Ƿ<EFBFBD><C7B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
if((WIFI_SPI_REPLY_DATA_START == temp_packets.head.command) || (WIFI_SPI_REPLY_DATA_END == temp_packets.head.command))
|
||||
if( ((WIFI_SPI_REPLY_DATA_START == temp_packets.head.command) || (WIFI_SPI_REPLY_DATA_END == temp_packets.head.command)) &&
|
||||
(temp_packets.head.length)
|
||||
)
|
||||
{
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>յ<EFBFBD><D5B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
if(temp_packets.head.length)
|
||||
if(length)
|
||||
{
|
||||
fifo_read_length = length >= temp_packets.head.length ? temp_packets.head.length : length;
|
||||
memcpy(buffer, temp_packets.buffer, fifo_read_length);
|
||||
buffer += fifo_read_length;
|
||||
length -= fifo_read_length;
|
||||
write_length += fifo_read_length;
|
||||
if(fifo_read_length < temp_packets.head.length) // <20>ⲿ<EFBFBD><E2B2BF><EFBFBD>岻<EFBFBD><E5B2BB><EFBFBD><EFBFBD><EFBFBD>ಿ<EFBFBD><E0B2BF>д<EFBFBD><D0B4>FIFO
|
||||
{
|
||||
fifo_write_buffer(&wifi_spi_fifo, temp_packets.buffer + fifo_read_length, temp_packets.head.length - fifo_read_length);
|
||||
}
|
||||
}
|
||||
else // ȫ<><C8AB>д<EFBFBD><D0B4>FIFO
|
||||
{
|
||||
fifo_write_buffer(&wifi_spi_fifo, temp_packets.buffer, temp_packets.head.length);
|
||||
}
|
||||
@@ -599,10 +717,9 @@ uint32 wifi_spi_read_buffer (uint8 *buffer, uint32 length)
|
||||
}while(WIFI_SPI_REPLY_DATA_START == temp_packets.head.command);
|
||||
wifi_spi_mutex = WIFI_SPI_IDLE;
|
||||
}
|
||||
#endif
|
||||
#endif
|
||||
|
||||
fifo_read_buffer(&wifi_spi_fifo, buffer, &data_len, FIFO_READ_AND_CLEAN);
|
||||
return data_len;
|
||||
return write_length;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------------------------------------------------------
|
||||
@@ -644,7 +761,11 @@ uint8 wifi_spi_init (char *wifi_ssid, char *pass_word)
|
||||
// MAC<41><43>ַ<EFBFBD><D6B7>Ϣ<EFBFBD><CFA2><EFBFBD>ַ<EFBFBD><D6B7><EFBFBD><EFBFBD><EFBFBD>ʽ<EFBFBD><CABD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>wifi_spi_mac_addr<64><72><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
wifi_spi_get_mac_addr();
|
||||
|
||||
|
||||
if(NULL == wifi_ssid)
|
||||
{
|
||||
// <20><>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ҫ<EFBFBD><D2AA><EFBFBD><EFBFBD>WIFI
|
||||
break;
|
||||
}
|
||||
return_state = wifi_spi_wifi_connect(wifi_ssid, pass_word);
|
||||
if(return_state)
|
||||
{
|
||||
|
||||
@@ -73,8 +73,8 @@
|
||||
#if (WIFI_SPI_AUTO_CONNECT > 2)
|
||||
#error "WIFI_SPI_AUTO_CONNECT <20><>ֵֻ<D6B5><D6BB>Ϊ [0,1,2]"
|
||||
#else
|
||||
#define WIFI_SPI_TARGET_IP "192.168.137.1" // <20><><EFBFBD><EFBFBD>Ŀ<EFBFBD><C4BF><EFBFBD><EFBFBD> IP
|
||||
#define WIFI_SPI_TARGET_PORT "8086" // <20><><EFBFBD><EFBFBD>Ŀ<EFBFBD><C4BF><EFBFBD>Ķ˿<C4B6>
|
||||
#define WIFI_SPI_TARGET_IP "192.168.2.37" // <20><><EFBFBD><EFBFBD>Ŀ<EFBFBD><C4BF><EFBFBD><EFBFBD> IP
|
||||
#define WIFI_SPI_TARGET_PORT "8080" // <20><><EFBFBD><EFBFBD>Ŀ<EFBFBD><C4BF><EFBFBD>Ķ˿<C4B6>
|
||||
#define WIFI_SPI_LOCAL_PORT "6666" // <20><><EFBFBD><EFBFBD><EFBFBD>Ķ˿<C4B6> 0<><30><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>÷<EFBFBD>Χ2048-65535 Ĭ<><C4AC> 6666
|
||||
#endif
|
||||
|
||||
@@ -95,10 +95,15 @@ typedef enum
|
||||
|
||||
WIFI_SPI_SET_WIFI_INFORMATION = 0x10, // <20><><EFBFBD><EFBFBD>WIFI<46><49>Ϣ<EFBFBD><CFA2><EFBFBD><EFBFBD>
|
||||
WIFI_SPI_SET_SOCKET_INFORMATION = 0x11, // <20><><EFBFBD><EFBFBD>SOCKET<45><54>Ϣ<EFBFBD><CFA2><EFBFBD><EFBFBD>
|
||||
WIFI_SPI_SET_WIFI_SCAN = 0x12, // <20><>ʼɨ<CABC><C9A8>WIFI
|
||||
WIFI_SPI_SET_READ_LENGTH = 0x13, // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD>
|
||||
|
||||
WIFI_SPI_GET_VERSION = 0x20, // <20><>ȡģ<C8A1><C4A3><EFBFBD>汾
|
||||
WIFI_SPI_GET_MAC_ADDR = 0x21, // <20><>ȡģ<C8A1><C4A3>MAC<41><43>ַ
|
||||
WIFI_SPI_GET_IP_ADDR = 0x22, // <20><>ȡģ<C8A1><C4A3>IP<49><50>ַ
|
||||
WIFI_SPI_GET_TIME1 = 0x23, // <20><>ȡʱ<C8A1><CAB1> <20><>ʽ1
|
||||
WIFI_SPI_GET_TIME2 = 0x24, // <20><>ȡʱ<C8A1><CAB1> <20><>ʽ2
|
||||
WIFI_SPI_GET_TIME3 = 0x25, // <20><>ȡʱ<C8A1><CAB1> <20><>ʽ3
|
||||
|
||||
// <20>ӻ<EFBFBD><D3BB>ش<EFBFBD><D8B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
WIFI_SPI_REPLY_OK = 0x80, // <20>ӻ<EFBFBD>Ӧ<EFBFBD><D3A6><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȷ<EFBFBD><C8B7><EFBFBD><EFBFBD>
|
||||
@@ -110,6 +115,9 @@ typedef enum
|
||||
WIFI_SPI_REPLY_VERSION = 0xA0, // <20>ӻ<EFBFBD><D3BB>ظ<EFBFBD><D8B8>̼<EFBFBD><CCBC>汾
|
||||
WIFI_SPI_REPLY_MAC_ADDR = 0xA1, // <20>ӻ<EFBFBD><D3BB>ظ<EFBFBD><D8B8><EFBFBD><EFBFBD><EFBFBD>MAC<41><43>ַ<EFBFBD><D6B7><EFBFBD><EFBFBD>Ϣ
|
||||
WIFI_SPI_REPLY_IP_ADDR = 0xA2, // <20>ӻ<EFBFBD><D3BB>ظ<EFBFBD><D8B8><EFBFBD><EFBFBD><EFBFBD>IP<49><50>ַ<EFBFBD><D6B7><EFBFBD>˿ں<CBBF>
|
||||
WIFI_SPI_REPLY_TIME1 = 0xA3, // <20>ӻ<EFBFBD><D3BB>ظ<EFBFBD>ʱ<EFBFBD><CAB1>
|
||||
WIFI_SPI_REPLY_TIME2 = 0xA4, // <20>ӻ<EFBFBD><D3BB>ظ<EFBFBD>ʱ<EFBFBD><CAB1>
|
||||
WIFI_SPI_REPLY_TIME3 = 0xA5, // <20>ӻ<EFBFBD><D3BB>ظ<EFBFBD>ʱ<EFBFBD><CAB1>
|
||||
WIFI_SPI_INVALID2 = 0xFF // <20><>Ч<EFBFBD><D0A7><EFBFBD>ݰ<EFBFBD>
|
||||
}wifi_spi_packets_command_enum;
|
||||
|
||||
@@ -134,19 +142,27 @@ typedef struct
|
||||
uint8 buffer[WIFI_SPI_RECVIVE_SIZE]; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
}wifi_spi_packets_struct;
|
||||
|
||||
|
||||
typedef enum
|
||||
{
|
||||
WIFI_SPI_UTC_0 = 1, // <20><><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1>
|
||||
WIFI_SPI_GMT, // <20><><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1> ת<><D7AA>ΪGMT<4D><54>ʽ<EFBFBD><CABD><EFBFBD><EFBFBD><EFBFBD><D7BA><EFBFBD><EFBFBD>GMT һ<><D2BB><EFBFBD><EFBFBD><EFBFBD>ڶԽ<DAB6><D4BD>ƶ˴<C6B6>ģ<EFBFBD><C4A3>ʹ<EFBFBD><CAB9>
|
||||
WIFI_SPI_UTC_8, // <20><><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1>
|
||||
}wifi_spi_time_enum;
|
||||
|
||||
extern char wifi_spi_version[12]; // <20>̼<EFBFBD><CCBC>汾 <20>ַ<EFBFBD><D6B7><EFBFBD>
|
||||
extern char wifi_spi_mac_addr[20]; // ģ<><C4A3>MAC<41><43>ַ <20>ַ<EFBFBD><D6B7><EFBFBD>
|
||||
extern char wifi_spi_ip_addr_port[25]; // IP<49><50>ַ<EFBFBD><D6B7><EFBFBD>˿ں<CBBF> <20>ַ<EFBFBD><D6B7><EFBFBD>
|
||||
|
||||
uint8 wifi_spi_wifi_connect (char *wifi_ssid, char *pass_word);
|
||||
uint8 wifi_spi_socket_connect (char *transport_type, char *ip_addr, char *port, char *local_port);
|
||||
uint8 wifi_spi_socket_disconnect (void);
|
||||
uint8 wifi_spi_udp_send_now (void);
|
||||
uint32 wifi_spi_send_buffer (const uint8 *buff, uint32 length);
|
||||
uint32 wifi_spi_read_buffer (uint8 *buffer, uint32 length);
|
||||
uint8 wifi_spi_get_time (wifi_spi_time_enum time_format, char *buffer, uint8 buffer_size);
|
||||
uint8 wifi_spi_wifi_scan (char *buffer, uint16 buffer_size);
|
||||
uint8 wifi_spi_wifi_connect (char *wifi_ssid, char *pass_word);
|
||||
uint8 wifi_spi_socket_connect (char *transport_type, char *ip_addr, char *port, char *local_port);
|
||||
uint8 wifi_spi_socket_disconnect (void);
|
||||
uint8 wifi_spi_udp_send_now (void);
|
||||
uint32 wifi_spi_send_buffer (const uint8 *buff, uint32 length);
|
||||
void wifi_spi_send_string (const char *string);
|
||||
uint32 wifi_spi_read_buffer (uint8 *buffer, uint32 length);
|
||||
|
||||
uint8 wifi_spi_init (char *wifi_ssid, char *pass_word);
|
||||
uint8 wifi_spi_init (char *wifi_ssid, char *pass_word);
|
||||
|
||||
#endif
|
||||
|
||||
|
||||
@@ -73,7 +73,7 @@
|
||||
#if (WIFI_UART_AUTO_CONNECT > 3)
|
||||
#error "WIFI_UART_AUTO_CONNECT <20><>ֵֻ<D6B5><D6BB>Ϊ [0,1,2,3]"
|
||||
#else
|
||||
#define WIFI_UART_TARGET_IP "192.168.137.1" // <20><><EFBFBD><EFBFBD>Ŀ<EFBFBD><C4BF><EFBFBD><EFBFBD> IP
|
||||
#define WIFI_UART_TARGET_IP "192.168.2.37" // <20><><EFBFBD><EFBFBD>Ŀ<EFBFBD><C4BF><EFBFBD><EFBFBD> IP
|
||||
#define WIFI_UART_TARGET_PORT "8080" // <20><><EFBFBD><EFBFBD>Ŀ<EFBFBD><C4BF><EFBFBD>Ķ˿<C4B6>
|
||||
#define WIFI_UART_LOCAL_PORT "8080" // <20><><EFBFBD><EFBFBD><EFBFBD>˿<EFBFBD>
|
||||
#endif
|
||||
|
||||
@@ -171,7 +171,7 @@ void encoder_clear_count (encoder_index_enum encoder_n)
|
||||
//-------------------------------------------------------------------------------------------------------------------
|
||||
void encoder_quad_init (encoder_index_enum encoder_n, encoder_channel1_enum ch1_pin, encoder_channel2_enum ch2_pin)
|
||||
{
|
||||
// zf_assert(encoder_n <= TIM4_ENCODER); // <20><>ȫ<EFBFBD><C8AB><EFBFBD><EFBFBD><EFBFBD>ɼ<EFBFBD><C9BC><EFBFBD> TIM2 TIM3 TIM4֧<34><D6A7> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ﱨ<EFBFBD><EFB1A8> <20><><EFBFBD>Գ<EFBFBD><D4B3><EFBFBD>ʹ<EFBFBD><CAB9><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ķ<EFBFBD><C4B7><EFBFBD><EFBFBD><EFBFBD>ʼ<EFBFBD><CABC>encoder_dir_init
|
||||
zf_assert(encoder_n <= TIM4_ENCODER); // <20><>ȫ<EFBFBD><C8AB><EFBFBD><EFBFBD><EFBFBD>ɼ<EFBFBD><C9BC><EFBFBD> TIM2 TIM3 TIM4֧<34><D6A7> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ﱨ<EFBFBD><EFB1A8> <20><><EFBFBD>Գ<EFBFBD><D4B3><EFBFBD>ʹ<EFBFBD><CAB9><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ķ<EFBFBD><C4B7><EFBFBD><EFBFBD><EFBFBD>ʼ<EFBFBD><CABC>encoder_dir_init
|
||||
|
||||
IfxGpt12_enableModule(&MODULE_GPT120);
|
||||
IfxGpt12_setGpt1BlockPrescaler(&MODULE_GPT120, IfxGpt12_Gpt1BlockPrescaler_4);
|
||||
|
||||
@@ -40,14 +40,14 @@
|
||||
// <20><EFBFBD>˵ʵ<CBB5><CAB5><EFBFBD>Ͻ<EFBFBD><CFBD><EFBFBD><EFBFBD>жϺ<D0B6>TCϵ<43>е<EFBFBD>Ӳ<EFBFBD><D3B2><EFBFBD>Զ<EFBFBD><D4B6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> interrupt_global_disable(); <20><><EFBFBD>ܾ<EFBFBD><DCBE><EFBFBD>Ӧ<EFBFBD>κε<CEBA><CEB5>жϣ<D0B6><CFA3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ҫ<EFBFBD><D2AA><EFBFBD><EFBFBD><EFBFBD>Լ<EFBFBD><D4BC>ֶ<EFBFBD><D6B6><EFBFBD><EFBFBD><EFBFBD> interrupt_global_enable(0); <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>жϵ<D0B6><CFB5><EFBFBD>Ӧ<EFBFBD><D3A6>
|
||||
|
||||
// **************************** PIT<49>жϺ<D0B6><CFBA><EFBFBD> ****************************
|
||||
IFX_INTERRUPT(cc60_pit_ch0_isr, 0, CCU6_0_CH0_ISR_PRIORITY)
|
||||
{
|
||||
interrupt_global_enable(0); // <20><><EFBFBD><EFBFBD><EFBFBD>ж<EFBFBD>Ƕ<EFBFBD><C7B6>
|
||||
pit_clear_flag(CCU60_CH0);
|
||||
|
||||
|
||||
|
||||
}
|
||||
//IFX_INTERRUPT(cc60_pit_ch0_isr, 0, CCU6_0_CH0_ISR_PRIORITY)
|
||||
//{
|
||||
// interrupt_global_enable(0); // <20><><EFBFBD><EFBFBD><EFBFBD>ж<EFBFBD>Ƕ<EFBFBD><C7B6>
|
||||
// pit_clear_flag(CCU60_CH0);
|
||||
//
|
||||
//
|
||||
//
|
||||
//}
|
||||
|
||||
|
||||
IFX_INTERRUPT(cc60_pit_ch1_isr, 0, CCU6_0_CH1_ISR_PRIORITY)
|
||||
@@ -89,7 +89,8 @@ IFX_INTERRUPT(exti_ch0_ch4_isr, 0, EXTI_CH0_CH4_INT_PRIO)
|
||||
if(exti_flag_get(ERU_CH0_REQ0_P15_4)) // ͨ<><CDA8>0<EFBFBD>ж<EFBFBD>
|
||||
{
|
||||
exti_flag_clear(ERU_CH0_REQ0_P15_4);
|
||||
|
||||
|
||||
imu660rc_callback(); // 660RC ģ<><C4A3> INT <20><><EFBFBD><EFBFBD><EFBFBD>ж<EFBFBD>
|
||||
}
|
||||
|
||||
if(exti_flag_get(ERU_CH4_REQ13_P15_5)) // ͨ<><CDA8>4<EFBFBD>ж<EFBFBD>
|
||||
@@ -118,7 +119,6 @@ IFX_INTERRUPT(exti_ch1_ch5_isr, 0, EXTI_CH1_CH5_INT_PRIO)
|
||||
{
|
||||
exti_flag_clear(ERU_CH5_REQ1_P15_8);
|
||||
|
||||
|
||||
|
||||
}
|
||||
}
|
||||
@@ -136,7 +136,6 @@ IFX_INTERRUPT(exti_ch1_ch5_isr, 0, EXTI_CH1_CH5_INT_PRIO)
|
||||
// exti_flag_clear(ERU_CH6_REQ9_P20_0);
|
||||
// }
|
||||
// }
|
||||
|
||||
IFX_INTERRUPT(exti_ch3_ch7_isr, 0, EXTI_CH3_CH7_INT_PRIO)
|
||||
{
|
||||
interrupt_global_enable(0); // <20><><EFBFBD><EFBFBD><EFBFBD>ж<EFBFBD>Ƕ<EFBFBD><C7B6>
|
||||
@@ -175,14 +174,14 @@ IFX_INTERRUPT(uart0_tx_isr, 0, UART0_TX_INT_PRIO)
|
||||
|
||||
|
||||
}
|
||||
//IFX_INTERRUPT(uart0_rx_isr, 0, UART0_RX_INT_PRIO)
|
||||
//{
|
||||
// interrupt_global_enable(0); // <20><><EFBFBD><EFBFBD><EFBFBD>ж<EFBFBD>Ƕ<EFBFBD><C7B6>
|
||||
//
|
||||
//#if DEBUG_UART_USE_INTERRUPT // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> debug <20><><EFBFBD><EFBFBD><EFBFBD>ж<EFBFBD>
|
||||
// debug_interrupr_handler(); // <20><><EFBFBD><EFBFBD> debug <20><><EFBFBD>ڽ<EFBFBD><DABD>մ<EFBFBD><D5B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>ݻᱻ debug <20><><EFBFBD>λ<EFBFBD><CEBB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȡ
|
||||
//#endif // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><DEB8><EFBFBD> DEBUG_UART_INDEX <20><><EFBFBD><EFBFBD><EFBFBD>δ<EFBFBD><CEB4><EFBFBD><EFBFBD><EFBFBD>Ҫ<EFBFBD>ŵ<EFBFBD><C5B5><EFBFBD>Ӧ<EFBFBD>Ĵ<EFBFBD><C4B4><EFBFBD><EFBFBD>ж<EFBFBD>ȥ
|
||||
//}
|
||||
IFX_INTERRUPT(uart0_rx_isr, 0, UART0_RX_INT_PRIO)
|
||||
{
|
||||
interrupt_global_enable(0); // <20><><EFBFBD><EFBFBD><EFBFBD>ж<EFBFBD>Ƕ<EFBFBD><C7B6>
|
||||
|
||||
#if DEBUG_UART_USE_INTERRUPT // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> debug <20><><EFBFBD><EFBFBD><EFBFBD>ж<EFBFBD>
|
||||
debug_interrupr_handler(); // <20><><EFBFBD><EFBFBD> debug <20><><EFBFBD>ڽ<EFBFBD><DABD>մ<EFBFBD><D5B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>ݻᱻ debug <20><><EFBFBD>λ<EFBFBD><CEBB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȡ
|
||||
#endif // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><DEB8><EFBFBD> DEBUG_UART_INDEX <20><><EFBFBD><EFBFBD><EFBFBD>δ<EFBFBD><CEB4><EFBFBD><EFBFBD><EFBFBD>Ҫ<EFBFBD>ŵ<EFBFBD><C5B5><EFBFBD>Ӧ<EFBFBD>Ĵ<EFBFBD><C4B4><EFBFBD><EFBFBD>ж<EFBFBD>ȥ
|
||||
}
|
||||
|
||||
|
||||
// <20><><EFBFBD><EFBFBD>1Ĭ<31><C4AC><EFBFBD><EFBFBD><EFBFBD>ӵ<EFBFBD><D3B5><EFBFBD><EFBFBD><EFBFBD>ͷ<EFBFBD><CDB7><EFBFBD>ô<EFBFBD><C3B4><EFBFBD>
|
||||
@@ -229,7 +228,7 @@ IFX_INTERRUPT(uart3_tx_isr, 0, UART3_TX_INT_PRIO)
|
||||
IFX_INTERRUPT(uart3_rx_isr, 0, UART3_RX_INT_PRIO)
|
||||
{
|
||||
interrupt_global_enable(0); // <20><><EFBFBD><EFBFBD><EFBFBD>ж<EFBFBD>Ƕ<EFBFBD><C7B6>
|
||||
gnss_uart_callback(); // GPS<EFBFBD><EFBFBD><EFBFBD>ڻص<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
gnss_uart_callback(); // GNSS<EFBFBD><EFBFBD><EFBFBD>ڻص<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -1,3 +1,13 @@
|
||||
V3.4.4
|
||||
<20><><EFBFBD><EFBFBD>SCC8660<36><30><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʽ
|
||||
<20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ָ<EFBFBD><D6B8><EFBFBD>V2<56><32><EFBFBD><EFBFBD>
|
||||
<20><EFBFBD>ips200<30><30>ʾscc8660<36><30><EFBFBD><EFBFBD>ͷ<EFBFBD><CDB7>ʽ
|
||||
<20><EFBFBD>ips114<31><34>ʾscc8660<36><30><EFBFBD><EFBFBD>ͷ<EFBFBD><CDB7>ʽ
|
||||
V3.4.3
|
||||
<09><><EFBFBD><EFBFBD>660RC<52><43><EFBFBD><EFBFBD>
|
||||
V3.4.2
|
||||
<09><EFBFBD>printf<74>ض<EFBFBD><D8B6><EFBFBD><EFBFBD>еĺ궨<C4BA><EAB6A8>
|
||||
<09><><EFBFBD><EFBFBD>WIFI_SPI<50><49><EFBFBD><EFBFBD>
|
||||
V3.4.1
|
||||
<09>Ĵ<DEB8><C4B4>ڷ<EFBFBD><DAB7><EFBFBD><EFBFBD><EFBFBD><EFBFBD>麯<EFBFBD><E9BAAF><EFBFBD>еķ<D0B5><C4B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
<09><EFBFBD>ips200proע<6F><D7A2>
|
||||
|
||||
@@ -91,6 +91,7 @@
|
||||
#include "zf_device_imu660ra.h"
|
||||
#include "zf_device_imu660rb.h"
|
||||
#include "zf_device_imu660rx.h"
|
||||
#include "zf_device_imu660rc.h"
|
||||
#include "zf_device_imu963ra.h"
|
||||
#include "zf_device_ips114.h"
|
||||
#include "zf_device_ips200.h"
|
||||
|
||||
@@ -45,7 +45,7 @@
|
||||
//-------------------------------------------------------------------------------------------------------------------
|
||||
int fputc(int ch, FILE *stream)
|
||||
{
|
||||
uart_write_byte(DEBUG_UART_INDEX, (char)ch);
|
||||
uart_write_byte(PRINTF_USE_UART, (char)ch);
|
||||
|
||||
return (ch);
|
||||
}
|
||||
@@ -71,7 +71,7 @@ int _write(int fd, char *buf, int len)
|
||||
int fgetc(FILE *f)
|
||||
{
|
||||
#if PRINTF_OUTPUT_TYPE == 0
|
||||
return uart_read_byte(DEBUG_UART_INDEX);
|
||||
return uart_read_byte(PRINTF_USE_UART);
|
||||
#else
|
||||
uint8 buf;
|
||||
wifi_spi_read_buffer(&buf, 1);
|
||||
|
||||
@@ -1,20 +1,20 @@
|
||||
/*********************************************************************************************************************
|
||||
* 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>
|
||||
* RT1064DVL6A Opensourec Library <20><><EFBFBD><EFBFBD>RT1064DVL6A <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><C4BC><EFBFBD> RT1064DVL6A <20><>Դ<EFBFBD><D4B4><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD>
|
||||
*
|
||||
* RT1064DVL6A <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>
|
||||
@@ -24,423 +24,519 @@
|
||||
* <20>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD><EFBFBD> seekfree_assistant
|
||||
* <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.10.2
|
||||
* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ADS v1.9.4
|
||||
* <20><><EFBFBD><EFBFBD>ƽ̨ TC264D
|
||||
* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> https://seekfree.taobao.com/
|
||||
*
|
||||
*
|
||||
* <20>ļ<DEB8>¼
|
||||
* <20><><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>ע
|
||||
* 2024-01-01 pudding first version
|
||||
* <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><>ע
|
||||
* 2024-1-11 SeekFree first version
|
||||
********************************************************************************************************************/
|
||||
|
||||
#include "zf_common_debug.h"
|
||||
|
||||
#include "seekfree_assistant.h"
|
||||
|
||||
// ͨ<><CDA8><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ö<EFBFBD><C3B6>
|
||||
typedef enum
|
||||
{
|
||||
SEEKFREE_ASSISTANT_SEND_CCD_CMD = 0x01 ,
|
||||
SEEKFREE_ASSISTANT_SEND_CAMERA_CMD ,
|
||||
SEEKFREE_ASSISTANT_SEND_CAMERA_BOUNDARY_CMD ,
|
||||
SEEKFREE_ASSISTANT_SEND_CAMERA_RECTANGULAR_CMD ,
|
||||
|
||||
extern uint32 seekfree_assistant_transfer (const uint8 *buff, uint32 length);
|
||||
extern uint32 seekfree_assistant_receive (uint8 *buff, uint32 length);
|
||||
SEEKFREE_ASSISTANT_SEND_OSCILLOSCOPE_CMD = 0x10 ,
|
||||
|
||||
#if (1 == SEEKFREE_ASSISTANT_SET_PARAMETR_ENABLE)
|
||||
SEEKFREE_ASSISTANT_RECEIVE_DEBUG_PARAM_CMD = 0x20 ,
|
||||
}seekfree_assistant_cmd_type_enum;
|
||||
|
||||
#define SEEKFREE_ASSISTANT_SEND_HEAD ( 0xAA ) // <20><>Ƭ<EFBFBD><C6AC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>λ<EFBFBD><CEBB><EFBFBD><EFBFBD><EFBFBD>͵<EFBFBD>֡ͷ
|
||||
#define SEEKFREE_ASSISTANT_RECEIVE_HEAD ( 0x55 ) // <20><>λ<EFBFBD><CEBB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƭ<EFBFBD><C6AC><EFBFBD><EFBFBD><EFBFBD>͵<EFBFBD>֡ͷ
|
||||
|
||||
// <20><><EFBFBD>ݷ<EFBFBD><DDB7>ͺ<EFBFBD><CDBA><EFBFBD>ָ<EFBFBD><D6B8><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
extern uint32 seekfree_assistant_transfer (const uint8 *buff, uint32 length);
|
||||
seekfree_assistant_transfer_callback_function seekfree_assistant_transfer_callback = seekfree_assistant_transfer;
|
||||
|
||||
// <20><><EFBFBD>ݽ<EFBFBD><DDBD>պ<EFBFBD><D5BA><EFBFBD>ָ<EFBFBD><D6B8><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
extern uint32 seekfree_assistant_receive (uint8 *buff, uint32 length);
|
||||
seekfree_assistant_receive_callback_function seekfree_assistant_receive_callback = seekfree_assistant_receive;
|
||||
|
||||
#if (SEEKFREE_ASSISTANT_DEBUG_PARAM_ENABLE)
|
||||
#include "zf_common_fifo.h"
|
||||
static uint8 seekfree_assistant_buffer[SEEKFREE_ASSISTANT_BUFFER_SIZE]; // FIFO<46><4F><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
static fifo_struct seekfree_assistant_fifo = // FIFO<46>ṹ<EFBFBD><E1B9B9>
|
||||
static uint8 seekfree_assistant_debug_param_buffer[SEEKFREE_ASSISTANT_DEBUG_PARAM_BUFFER_SIZE];
|
||||
static fifo_struct seekfree_assistant_debug_param_fifo =
|
||||
{
|
||||
.buffer = seekfree_assistant_buffer,
|
||||
.buffer = seekfree_assistant_debug_param_buffer,
|
||||
.execution = FIFO_IDLE,
|
||||
.type = FIFO_DATA_8BIT,
|
||||
.head = 0,
|
||||
.end = 0,
|
||||
.size = SEEKFREE_ASSISTANT_BUFFER_SIZE,
|
||||
.max = SEEKFREE_ASSISTANT_BUFFER_SIZE,
|
||||
};
|
||||
.size = SEEKFREE_ASSISTANT_DEBUG_PARAM_BUFFER_SIZE,
|
||||
.max = SEEKFREE_ASSISTANT_DEBUG_PARAM_BUFFER_SIZE,
|
||||
};
|
||||
#endif
|
||||
|
||||
static seekfree_assistant_camera_struct seekfree_assistant_camera_data; // ͼ<><CDBC><EFBFBD><EFBFBD>λ<EFBFBD><CEBB>Э<EFBFBD><D0AD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
static seekfree_assistant_camera_dot_struct seekfree_assistant_camera_dot_data; // ͼ<><CDBC><EFBFBD><EFBFBD>λ<EFBFBD><CEBB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Э<EFBFBD><D0AD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
static seekfree_assistant_camera_buffer_struct seekfree_assistant_camera_buffer; // ͼ<><CDBC><EFBFBD>Լ<EFBFBD><D4BC>߽绺<DFBD><E7BBBA><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ
|
||||
|
||||
seekfree_assistant_transfer_callback_function seekfree_assistant_transfer_callback = seekfree_assistant_transfer; // <20><><EFBFBD>ݷ<EFBFBD><DDB7>ͺ<EFBFBD><CDBA><EFBFBD>ָ<EFBFBD><D6B8>
|
||||
seekfree_assistant_receive_callback_function seekfree_assistant_receive_callback = seekfree_assistant_receive; // <20><><EFBFBD>ݽ<EFBFBD><DDBD>պ<EFBFBD><D5BA><EFBFBD>ָ<EFBFBD><D6B8>
|
||||
|
||||
seekfree_assistant_oscilloscope_struct seekfree_assistant_oscilloscope_data; // <20><><EFBFBD><EFBFBD>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
float seekfree_assistant_parameter[SEEKFREE_ASSISTANT_SET_PARAMETR_COUNT] = {0}; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>յ<EFBFBD><D5B5>IJ<EFBFBD><C4B2><EFBFBD>
|
||||
vuint8 seekfree_assistant_parameter_update_flag[SEEKFREE_ASSISTANT_SET_PARAMETR_COUNT] = {0}; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>±<EFBFBD>־λ
|
||||
|
||||
//-------------------------------------------------------------------------------------------------------------------
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͺ<EFBFBD><CDBA><EFBFBD>
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> *buffer <20><>ҪУ<D2AA><D0A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݵ<EFBFBD>ַ
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> length У<>鳤<EFBFBD><E9B3A4>
|
||||
// <20><><EFBFBD>ز<EFBFBD><D8B2><EFBFBD> uint8 <20><>ֵ
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> *buffer <EFBFBD><EFBFBD>ҪУ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݵ<EFBFBD>ַ
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> length У<EFBFBD>鳤<EFBFBD><EFBFBD>
|
||||
// <20><><EFBFBD>ز<EFBFBD><D8B2><EFBFBD> uint8 <EFBFBD><EFBFBD>ֵ
|
||||
// ʹ<><CAB9>ʾ<EFBFBD><CABE>
|
||||
//-------------------------------------------------------------------------------------------------------------------
|
||||
static uint8 seekfree_assistant_sum (uint8 *buffer, uint32 length)
|
||||
static uint8 seekfree_assistant_sum (void *buffer, uint32 length)
|
||||
{
|
||||
uint8 temp_sum = 0;
|
||||
uint8 *ptr = (uint8 *)buffer;
|
||||
|
||||
while(length--)
|
||||
{
|
||||
temp_sum += *buffer++;
|
||||
temp_sum += *ptr ++;
|
||||
}
|
||||
|
||||
return temp_sum;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------------------------------------------------------
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ͼ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͺ<EFBFBD><EFBFBD><EFBFBD>
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> camera_type <20><><EFBFBD><EFBFBD>ͷ<EFBFBD><CDB7><EFBFBD><EFBFBD>
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> *image_addr ͼ<><CDBC><EFBFBD><EFBFBD>ַ
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> boundary_num ͼ<><CDBC><EFBFBD>а<EFBFBD><D0B0><EFBFBD><EFBFBD>߽<EFBFBD><DFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> width ͼ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> height ͼ<EFBFBD><EFBFBD><EFBFBD>߶<EFBFBD>
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> CCD ͼ<><CDBC> <20><EFBFBD><EFBFBD><EFBFBD>
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> *ccd_obj CCD <20><><EFBFBD>ݽṹ<EFBFBD><EFBFBD>
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> data_type <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> seekfree_assistant_data_type_enum
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> channel_index CCD ͨ<EFBFBD><EFBFBD>
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> channel_color ͨ<EFBFBD><EFBFBD>Ҫʹ<EFBFBD>õ<EFBFBD><EFBFBD><EFBFBD>ɫ
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> data_lenght CCD <20><><EFBFBD>ݳ<EFBFBD><DDB3><EFBFBD>
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> *data_buffer CCD <20><><EFBFBD>ݻ<EFBFBD><DDBB><EFBFBD><EFBFBD><EFBFBD>
|
||||
// <20><><EFBFBD>ز<EFBFBD><D8B2><EFBFBD> void
|
||||
// ʹ<><CAB9>ʾ<EFBFBD><CABE>
|
||||
// ʹ<><CAB9>ʾ<EFBFBD><CABE> seekfree_assistant_ccd_config(ccd_obj, data_type, channel_index, channel_color, data_lenght, data_buffer);
|
||||
//-------------------------------------------------------------------------------------------------------------------
|
||||
void seekfree_assistant_camera_data_send (seekfree_assistant_image_type_enum camera_type, void *image_addr, uint8 boundary_num, uint16 width, uint16 height)
|
||||
void seekfree_assistant_ccd_config (
|
||||
seekfree_assistant_ccd_struct *ccd_obj,
|
||||
seekfree_assistant_data_type_enum data_type,
|
||||
uint8 channel_index,
|
||||
uint16 channel_color,
|
||||
uint16 data_lenght,
|
||||
void *data_buffer)
|
||||
{
|
||||
uint32 image_size = 0;
|
||||
zf_assert(NULL != ccd_obj);
|
||||
zf_assert(NULL != data_buffer);
|
||||
|
||||
seekfree_assistant_camera_data.head = SEEKFREE_ASSISTANT_SEND_HEAD;
|
||||
seekfree_assistant_camera_data.function = SEEKFREE_ASSISTANT_CAMERA_FUNCTION;
|
||||
seekfree_assistant_camera_data.camera_type = (camera_type << 5) | ((image_addr != NULL ? 0 : 1) << 4) | boundary_num;
|
||||
// д<><D0B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ<EFBFBD><CFA2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Э<EFBFBD>鲿<EFBFBD><E9B2BF>
|
||||
seekfree_assistant_camera_data.length = sizeof(seekfree_assistant_camera_struct);
|
||||
seekfree_assistant_camera_data.image_width = width;
|
||||
seekfree_assistant_camera_data.image_height = height;
|
||||
memset(ccd_obj, 0, sizeof(seekfree_assistant_ccd_struct));
|
||||
ccd_obj->config.head = SEEKFREE_ASSISTANT_SEND_HEAD;
|
||||
ccd_obj->config.cmd = SEEKFREE_ASSISTANT_SEND_CCD_CMD;
|
||||
ccd_obj->config.channel_index = channel_index;
|
||||
|
||||
// <20><><EFBFBD>ȷ<EFBFBD><C8B7><EFBFBD>֡ͷ<D6A1><CDB7><EFBFBD><EFBFBD><EFBFBD>ܡ<EFBFBD><DCA1><EFBFBD><EFBFBD><EFBFBD>ͷ<EFBFBD><CDB7><EFBFBD>͡<EFBFBD><CDA1>Լ<EFBFBD><D4BC><EFBFBD><EFBFBD>ȸ߶ȵ<DFB6><C8B5><EFBFBD>Ϣ
|
||||
seekfree_assistant_transfer_callback((const uint8 *)&seekfree_assistant_camera_data, sizeof(seekfree_assistant_camera_struct));
|
||||
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͷ<EFBFBD><CDB7><EFBFBD>ͼ<EFBFBD><CDBC><EFBFBD>ͼ<EFBFBD><CDBC><EFBFBD><EFBFBD>С
|
||||
switch(camera_type)
|
||||
uint16 data_max = 256;
|
||||
uint8 loop_count = SEEKFREE_ASSISTANT_CCD_RESOLUTION_DEFAULT;
|
||||
loop_count = (2 >= loop_count) ? (loop_count) : (2);
|
||||
for(uint8 i = 0; loop_count > i; i ++)
|
||||
{
|
||||
case SEEKFREE_ASSISTANT_OV7725_BIN:
|
||||
{
|
||||
image_size = width * height / 8;
|
||||
}break;
|
||||
|
||||
case SEEKFREE_ASSISTANT_MT9V03X:
|
||||
{
|
||||
image_size = width * height;
|
||||
}break;
|
||||
|
||||
case SEEKFREE_ASSISTANT_SCC8660:
|
||||
{
|
||||
image_size = width * height * 2;
|
||||
}break;
|
||||
data_max *= 4;
|
||||
}
|
||||
|
||||
// <20><><EFBFBD><EFBFBD>ͼ<EFBFBD><CDBC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
if(NULL != image_addr)
|
||||
#if (SEEKFREE_ASSISTANT_STC_DATA_ENABLE)
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> STC <20><>ô<EFBFBD><C3B4>С<EFBFBD>˷<EFBFBD>һ<EFBFBD><D2BB>
|
||||
ccd_obj->config.data_lenght_buffer[0] = (uint8)((data_lenght >> 8) & 0x00FF);
|
||||
ccd_obj->config.data_lenght_buffer[1] = (uint8)((data_lenght >> 0) & 0x00FF);
|
||||
ccd_obj->config.channel_color_buffer[0] = (uint8)((channel_color >> 8) & 0x00FF);
|
||||
ccd_obj->config.channel_color_buffer[1] = (uint8)((channel_color >> 0) & 0x00FF);
|
||||
ccd_obj->config.channel_data_max[0] = (uint8)((data_max >> 8) & 0x00FF);
|
||||
ccd_obj->config.channel_data_max[1] = (uint8)((data_max >> 0) & 0x00FF);
|
||||
#else
|
||||
ccd_obj->config.data_lenght_buffer[0] = (uint8)((data_lenght >> 0) & 0x00FF);
|
||||
ccd_obj->config.data_lenght_buffer[1] = (uint8)((data_lenght >> 8) & 0x00FF);
|
||||
ccd_obj->config.channel_color_buffer[0] = (uint8)((channel_color >> 0) & 0x00FF);
|
||||
ccd_obj->config.channel_color_buffer[1] = (uint8)((channel_color >> 8) & 0x00FF);
|
||||
ccd_obj->config.channel_data_max[0] = (uint8)((data_max >> 0) & 0x00FF);
|
||||
ccd_obj->config.channel_data_max[1] = (uint8)((data_max >> 8) & 0x00FF);
|
||||
#endif
|
||||
|
||||
if( SEEKFREE_ASSISTANT_STC_DATA_ENABLE
|
||||
&& SEEKFREE_ASSISTANT_DATA_TYPE_UINT16 == data_type)
|
||||
{ // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> uint16 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> STC <20><>Ƭ<EFBFBD><C6AC> <20><>ô<EFBFBD><C3B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ 0x02
|
||||
ccd_obj->config.data_type = data_type + 1;
|
||||
}
|
||||
else
|
||||
{ // <20><><EFBFBD><EFBFBD><EFBFBD>Ļ<EFBFBD><C4BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> uint8 <20><><EFBFBD>ݻ<EFBFBD><DDBB><EFBFBD> uint16 <20><><EFBFBD><EFBFBD>
|
||||
ccd_obj->config.data_type = data_type;
|
||||
}
|
||||
|
||||
// <20><>¼ʵ<C2BC><CAB5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֽ<EFBFBD><D6BD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> uint16 <20><><EFBFBD><EFBFBD>Ҫ<EFBFBD><D2AA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݳ<EFBFBD><DDB3><EFBFBD>
|
||||
ccd_obj->buffer_byte_size = data_lenght * ((data_type) ? (2) : (1));
|
||||
// Ȼ<><C8BB><EFBFBD><EFBFBD>¼<EFBFBD><C2BC>Ӧ<EFBFBD><D3A6><EFBFBD>ݻ<EFBFBD><DDBB><EFBFBD><EFBFBD><EFBFBD>
|
||||
ccd_obj->data_buffer = data_buffer;
|
||||
|
||||
// <20><>У<EFBFBD><D0A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
ccd_obj->config.check_sum = SEEKFREE_ASSISTANT_SEND_HEAD;
|
||||
ccd_obj->config.check_sum += seekfree_assistant_sum(
|
||||
&(ccd_obj->config.cmd),
|
||||
sizeof(ccd_obj->config) - 2);
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------------------------------------------------------
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> CCD ͼ<><CDBC> <20><><EFBFBD>ͺ<EFBFBD><CDBA><EFBFBD>
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> *ccd_obj CCD <20><><EFBFBD>ݽṹ<DDBD><E1B9B9>
|
||||
// <20><><EFBFBD>ز<EFBFBD><D8B2><EFBFBD> void
|
||||
// ʹ<><CAB9>ʾ<EFBFBD><CABE> seekfree_assistant_ccd_send(ccd_obj);
|
||||
//-------------------------------------------------------------------------------------------------------------------
|
||||
void seekfree_assistant_ccd_send (seekfree_assistant_ccd_struct *ccd_obj)
|
||||
{
|
||||
seekfree_assistant_transfer_callback(
|
||||
(const uint8 *)ccd_obj,
|
||||
sizeof(ccd_obj->config));
|
||||
seekfree_assistant_transfer_callback(
|
||||
(const uint8 *)(ccd_obj->data_buffer),
|
||||
ccd_obj->buffer_byte_size);
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------------------------------------------------------
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> CAMERA ͼ<><CDBC> <20><><EFBFBD><EFBFBD>
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> *camera_obj CAMERA <20><><EFBFBD>ݽṹ<DDBD><E1B9B9>
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> camera_type CAMERA <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> seekfree_assistant_camera_type_enum
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> image_width CAMERA ͼ<><CDBC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> image_height CAMERA ͼ<><CDBC><EFBFBD>߶<EFBFBD>
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> *data_buffer CAMERA ͼ<><EFBFBD><F1BBBAB3><EFBFBD>
|
||||
// <20><><EFBFBD>ز<EFBFBD><D8B2><EFBFBD> void
|
||||
// ʹ<><CAB9>ʾ<EFBFBD><CABE> seekfree_assistant_camera_config(camera_obj, camera_type, image_width, image_height, data_buffer);
|
||||
//-------------------------------------------------------------------------------------------------------------------
|
||||
void seekfree_assistant_camera_config (
|
||||
seekfree_assistant_camera_struct *camera_obj,
|
||||
seekfree_assistant_camera_type_enum camera_type,
|
||||
uint16 image_width,
|
||||
uint16 image_height,
|
||||
void *data_buffer)
|
||||
{
|
||||
zf_assert(NULL != camera_obj);
|
||||
|
||||
memset(camera_obj, 0, sizeof(seekfree_assistant_camera_struct));
|
||||
camera_obj->config.head = SEEKFREE_ASSISTANT_SEND_HEAD;
|
||||
camera_obj->config.cmd = SEEKFREE_ASSISTANT_SEND_CAMERA_CMD;
|
||||
camera_obj->config.camera_type = camera_type;
|
||||
|
||||
#if (SEEKFREE_ASSISTANT_STC_DATA_ENABLE)
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> STC <20><>ô<EFBFBD><C3B4>С<EFBFBD>˷<EFBFBD>һ<EFBFBD><D2BB>
|
||||
camera_obj->config.image_width_buffer[0] = (uint8)((image_width >> 8) & 0x00FF);
|
||||
camera_obj->config.image_width_buffer[1] = (uint8)((image_width >> 0) & 0x00FF);
|
||||
camera_obj->config.image_height_buffer[0] = (uint8)((image_height >> 8) & 0x00FF);
|
||||
camera_obj->config.image_height_buffer[1] = (uint8)((image_height >> 0) & 0x00FF);
|
||||
#else
|
||||
camera_obj->config.image_width_buffer[0] = (uint8)((image_width >> 0) & 0x00FF);
|
||||
camera_obj->config.image_width_buffer[1] = (uint8)((image_width >> 8) & 0x00FF);
|
||||
camera_obj->config.image_height_buffer[0] = (uint8)((image_height >> 0) & 0x00FF);
|
||||
camera_obj->config.image_height_buffer[1] = (uint8)((image_height >> 8) & 0x00FF);
|
||||
#endif
|
||||
|
||||
if( SEEKFREE_ASSISTANT_STC_DATA_ENABLE
|
||||
&& SEEKFREE_ASSISTANT_CAMERA_TYPE_RGB565 == camera_type
|
||||
&& NULL != data_buffer)
|
||||
{
|
||||
seekfree_assistant_transfer_callback(image_addr, image_size);
|
||||
camera_obj->config.data_type = 0x02;
|
||||
}
|
||||
else
|
||||
{
|
||||
camera_obj->config.data_type = (NULL == data_buffer) ? (0x00) : (0x01);
|
||||
}
|
||||
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> RGB565 ͼ<><CDBC> <20><>ô<EFBFBD><C3B4><EFBFBD><EFBFBD><EFBFBD>ֽ<EFBFBD><D6BD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
camera_obj->buffer_byte_size =
|
||||
image_width * image_height
|
||||
* ((SEEKFREE_ASSISTANT_CAMERA_TYPE_RGB565 == camera_type) ? (2) : (1));
|
||||
camera_obj->buffer_byte_size =
|
||||
(SEEKFREE_ASSISTANT_CAMERA_TYPE_BINARY == camera_type)
|
||||
? (camera_obj->buffer_byte_size / 8)
|
||||
: (camera_obj->buffer_byte_size);
|
||||
camera_obj->data_buffer = data_buffer;
|
||||
|
||||
// <20><>У<EFBFBD><D0A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
camera_obj->config.check_sum = SEEKFREE_ASSISTANT_SEND_HEAD;
|
||||
camera_obj->config.check_sum += seekfree_assistant_sum(
|
||||
&(camera_obj->config.cmd),
|
||||
sizeof(camera_obj->config) - 2);
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------------------------------------------------------
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> CAMERA ͼ<><CDBC> <20><><EFBFBD>ͺ<EFBFBD><CDBA><EFBFBD>
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> *camera_obj CAMERA <20><><EFBFBD>ݽṹ<DDBD><E1B9B9>
|
||||
// <20><><EFBFBD>ز<EFBFBD><D8B2><EFBFBD> void
|
||||
// ʹ<><CAB9>ʾ<EFBFBD><CABE> seekfree_assistant_camera_send(camera_obj);
|
||||
//-------------------------------------------------------------------------------------------------------------------
|
||||
void seekfree_assistant_camera_send (seekfree_assistant_camera_struct *camera_obj)
|
||||
{
|
||||
seekfree_assistant_transfer_callback(
|
||||
(const uint8 *)camera_obj,
|
||||
sizeof(camera_obj->config));
|
||||
if(NULL != camera_obj->data_buffer)
|
||||
{
|
||||
seekfree_assistant_transfer_callback(
|
||||
(const uint8 *)(camera_obj->data_buffer),
|
||||
camera_obj->buffer_byte_size);
|
||||
}
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------------------------------------------------------
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ͼ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ƺ<EFBFBD><EFBFBD><EFBFBD>
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> boundary_id <20><><EFBFBD><EFBFBD>ID
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> dot_num <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> *dot_x <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ַ
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> *dot_y <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ַ
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> width ͼ<><CDBC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> height ͼ<><CDBC><EFBFBD>߶<EFBFBD>
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> CAMERA <20><><EFBFBD><EFBFBD> <20><EFBFBD><EFBFBD><EFBFBD>
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> *camera_boundary_obj CAMERA <20><><EFBFBD><EFBFBD> <20><><EFBFBD>ݽṹ<DDBD><E1B9B9>
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> data_type <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> seekfree_assistant_data_type_enum
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> color Ҫʹ<D2AA>õ<EFBFBD><C3B5><EFBFBD>ɫ
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> boundary_lenght CAMERA <20><><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> *data_buffer CAMERA <20><><EFBFBD><EFBFBD> ͼ<><EFBFBD><EFBFBD><EFBFBD>
|
||||
// <20><><EFBFBD>ز<EFBFBD><D8B2><EFBFBD> void
|
||||
// ʹ<><CAB9>ʾ<EFBFBD><CABE>
|
||||
// ʹ<><CAB9>ʾ<EFBFBD><CABE> seekfree_assistant_camera_boundary_config(camera_boundary_obj, data_type, color, boundary_lenght, data_buffer);
|
||||
//-------------------------------------------------------------------------------------------------------------------
|
||||
void seekfree_assistant_camera_dot_send (seekfree_assistant_camera_buffer_struct *buffer)
|
||||
void seekfree_assistant_camera_boundary_config (
|
||||
seekfree_assistant_camera_boundary_struct *camera_boundary_obj,
|
||||
seekfree_assistant_data_type_enum data_type,
|
||||
uint16 color,
|
||||
uint16 boundary_lenght,
|
||||
void *data_buffer)
|
||||
{
|
||||
uint8 i;
|
||||
uint16 dot_bytes = 0; // <20><><EFBFBD>ֽ<EFBFBD><D6BD><EFBFBD><EFBFBD><EFBFBD>
|
||||
zf_assert(NULL != camera_boundary_obj);
|
||||
zf_assert(NULL != data_buffer);
|
||||
|
||||
dot_bytes = seekfree_assistant_camera_dot_data.dot_num;
|
||||
memset(camera_boundary_obj, 0, sizeof(seekfree_assistant_camera_boundary_struct));
|
||||
camera_boundary_obj->config.head = SEEKFREE_ASSISTANT_SEND_HEAD;
|
||||
camera_boundary_obj->config.cmd = SEEKFREE_ASSISTANT_SEND_CAMERA_BOUNDARY_CMD;
|
||||
|
||||
if(seekfree_assistant_camera_dot_data.dot_type & (1 << 5))
|
||||
{
|
||||
dot_bytes *= 2;
|
||||
if( SEEKFREE_ASSISTANT_STC_DATA_ENABLE
|
||||
&& SEEKFREE_ASSISTANT_DATA_TYPE_UINT16 == data_type)
|
||||
{ // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> uint16 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> STC <20><>Ƭ<EFBFBD><C6AC> <20><>ô<EFBFBD><C3B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ 0x02
|
||||
camera_boundary_obj->config.data_type = data_type + 1;
|
||||
}
|
||||
else
|
||||
{ // <20><><EFBFBD><EFBFBD><EFBFBD>Ļ<EFBFBD><C4BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> uint8 <20><><EFBFBD>ݻ<EFBFBD><DDBB><EFBFBD> uint16 <20><><EFBFBD><EFBFBD>
|
||||
camera_boundary_obj->config.data_type = data_type;
|
||||
}
|
||||
|
||||
// <20><><EFBFBD>ȷ<EFBFBD><C8B7><EFBFBD>֡ͷ<D6A1><CDB7><EFBFBD><EFBFBD><EFBFBD>ܡ<EFBFBD><DCA1>߽<EFBFBD><DFBD><EFBFBD><EFBFBD>š<EFBFBD><C5A1><EFBFBD><EFBFBD>곤<EFBFBD>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
seekfree_assistant_transfer_callback((const uint8 *)&seekfree_assistant_camera_dot_data, sizeof(seekfree_assistant_camera_dot_struct));
|
||||
#if (SEEKFREE_ASSISTANT_STC_DATA_ENABLE)
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> STC <20><>ô<EFBFBD><C3B4>С<EFBFBD>˷<EFBFBD>һ<EFBFBD><D2BB>
|
||||
camera_boundary_obj->config.boundary_lenght_buffer[0] = (uint8)((boundary_lenght >> 8) & 0x00FF);
|
||||
camera_boundary_obj->config.boundary_lenght_buffer[1] = (uint8)((boundary_lenght >> 0) & 0x00FF);
|
||||
camera_boundary_obj->config.color_buffer[0] = (uint8)((color >> 8) & 0x00FF);
|
||||
camera_boundary_obj->config.color_buffer[1] = (uint8)((color >> 0) & 0x00FF);
|
||||
#else
|
||||
camera_boundary_obj->config.boundary_lenght_buffer[0] = (uint8)((boundary_lenght >> 0) & 0x00FF);
|
||||
camera_boundary_obj->config.boundary_lenght_buffer[1] = (uint8)((boundary_lenght >> 8) & 0x00FF);
|
||||
camera_boundary_obj->config.color_buffer[0] = (uint8)((color >> 0) & 0x00FF);
|
||||
camera_boundary_obj->config.color_buffer[1] = (uint8)((color >> 8) & 0x00FF);
|
||||
#endif
|
||||
|
||||
for(i=0; i < SEEKFREE_ASSISTANT_CAMERA_MAX_BOUNDARY; i++)
|
||||
{
|
||||
// <20>ж<EFBFBD><D0B6>Ƿ<EFBFBD><C7B7><EFBFBD><EFBFBD>ͺ<EFBFBD><CDBA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
if(NULL != buffer->boundary_x[i])
|
||||
{
|
||||
seekfree_assistant_transfer_callback((const uint8 *)buffer->boundary_x[i], dot_bytes);
|
||||
}
|
||||
camera_boundary_obj->buffer_byte_size =
|
||||
boundary_lenght * 2
|
||||
* ((SEEKFREE_ASSISTANT_DATA_TYPE_UINT8 == data_type) ? (1) : (2));
|
||||
camera_boundary_obj->data_buffer = data_buffer;
|
||||
|
||||
// <20>ж<EFBFBD><EFBFBD>Ƿ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
if(NULL != buffer->boundary_y[i])
|
||||
{
|
||||
// <20><><EFBFBD><EFBFBD>û<EFBFBD><C3BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݣ<EFBFBD><DDA3><EFBFBD><EFBFBD><EFBFBD>ʾÿһ<C3BF><D2BB>ֻ<EFBFBD><D6BB>һ<EFBFBD><D2BB><EFBFBD>߽<EFBFBD>
|
||||
// ָ<><D6B8><EFBFBD>˺<EFBFBD><CBBA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݣ<EFBFBD><DDA3><EFBFBD><EFBFBD>ַ<EFBFBD>ʽ<EFBFBD><CABD><EFBFBD><EFBFBD>ʵ<EFBFBD><CAB5>ͬһ<CDAC>ж<EFBFBD><D0B6><EFBFBD><EFBFBD>߽<EFBFBD><DFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>㷨<EFBFBD>ܹ<EFBFBD><DCB9><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>䡣
|
||||
seekfree_assistant_transfer_callback((const uint8 *)buffer->boundary_y[i], dot_bytes);
|
||||
}
|
||||
}
|
||||
// <20><>У<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
camera_boundary_obj->config.check_sum = SEEKFREE_ASSISTANT_SEND_HEAD;
|
||||
camera_boundary_obj->config.check_sum += seekfree_assistant_sum(
|
||||
&(camera_boundary_obj->config.cmd),
|
||||
sizeof(camera_boundary_obj->config) - 2);
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------------------------------------------------------
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͺ<EFBFBD><EFBFBD><EFBFBD>
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> CAMERA <20><><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD>ͺ<EFBFBD><EFBFBD><EFBFBD>
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> *camera_boundary_obj CAMERA <20><><EFBFBD><EFBFBD> <20><><EFBFBD>ݽṹ<DDBD><E1B9B9>
|
||||
// <20><><EFBFBD>ز<EFBFBD><D8B2><EFBFBD> void
|
||||
// ʹ<><CAB9>ʾ<EFBFBD><CABE> seekfree_assistant_camera_boundary_send(camera_boundary_obj);
|
||||
//-------------------------------------------------------------------------------------------------------------------
|
||||
void seekfree_assistant_camera_boundary_send (seekfree_assistant_camera_boundary_struct *camera_boundary_obj)
|
||||
{
|
||||
seekfree_assistant_transfer_callback(
|
||||
(const uint8 *)camera_boundary_obj,
|
||||
sizeof(camera_boundary_obj->config));
|
||||
seekfree_assistant_transfer_callback(
|
||||
(const uint8 *)(camera_boundary_obj->data_buffer),
|
||||
camera_boundary_obj->buffer_byte_size);
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------------------------------------------------------
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> CAMERA <20><><EFBFBD>ο<EFBFBD><CEBF><EFBFBD> <20><><EFBFBD>ͺ<EFBFBD><CDBA><EFBFBD>
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> x X <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> y Y <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> width <20><><EFBFBD>ο<EFBFBD><CEBF><EFBFBD>
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> height <20><><EFBFBD>θ߶<CEB8>
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> color <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɫ
|
||||
// <20><><EFBFBD>ز<EFBFBD><D8B2><EFBFBD> void
|
||||
// ʹ<><CAB9>ʾ<EFBFBD><CABE> seekfree_assistant_camera_rectangular_send(x, y, width, height, color);
|
||||
//-------------------------------------------------------------------------------------------------------------------
|
||||
void seekfree_assistant_camera_rectangular_send (uint16 x, uint16 y, uint16 width, uint16 height, uint16 color)
|
||||
{
|
||||
seekfree_assistant_camera_rectangular_struct camera_rectangular_obj;
|
||||
memset(&camera_rectangular_obj, 0, sizeof(seekfree_assistant_camera_rectangular_struct));
|
||||
camera_rectangular_obj.head = SEEKFREE_ASSISTANT_SEND_HEAD;
|
||||
camera_rectangular_obj.cmd = SEEKFREE_ASSISTANT_SEND_CAMERA_RECTANGULAR_CMD;
|
||||
|
||||
#if (SEEKFREE_ASSISTANT_STC_DATA_ENABLE)
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> STC <20><>ô<EFBFBD><C3B4>С<EFBFBD>˷<EFBFBD>һ<EFBFBD><D2BB>
|
||||
camera_rectangular_obj.x_axis_buffer[0] = (uint8)((x >> 8) & 0x00FF);
|
||||
camera_rectangular_obj.x_axis_buffer[1] = (uint8)((x >> 0) & 0x00FF);
|
||||
camera_rectangular_obj.y_axis_buffer[0] = (uint8)((y >> 8) & 0x00FF);
|
||||
camera_rectangular_obj.y_axis_buffer[1] = (uint8)((y >> 0) & 0x00FF);
|
||||
camera_rectangular_obj.width_buffer[0] = (uint8)((width >> 8) & 0x00FF);
|
||||
camera_rectangular_obj.width_buffer[1] = (uint8)((width >> 0) & 0x00FF);
|
||||
camera_rectangular_obj.height_buffer[0] = (uint8)((height >> 8) & 0x00FF);
|
||||
camera_rectangular_obj.height_buffer[1] = (uint8)((height >> 0) & 0x00FF);
|
||||
camera_rectangular_obj.color_buffer[0] = (uint8)((color >> 8) & 0x00FF);
|
||||
camera_rectangular_obj.color_buffer[1] = (uint8)((color >> 0) & 0x00FF);
|
||||
#else
|
||||
camera_rectangular_obj.x_axis_buffer[0] = (uint8)((x >> 0) & 0x00FF);
|
||||
camera_rectangular_obj.x_axis_buffer[1] = (uint8)((x >> 8) & 0x00FF);
|
||||
camera_rectangular_obj.y_axis_buffer[0] = (uint8)((y >> 0) & 0x00FF);
|
||||
camera_rectangular_obj.y_axis_buffer[1] = (uint8)((y >> 8) & 0x00FF);
|
||||
camera_rectangular_obj.width_buffer[0] = (uint8)((width >> 0) & 0x00FF);
|
||||
camera_rectangular_obj.width_buffer[1] = (uint8)((width >> 8) & 0x00FF);
|
||||
camera_rectangular_obj.height_buffer[0] = (uint8)((height >> 0) & 0x00FF);
|
||||
camera_rectangular_obj.height_buffer[1] = (uint8)((height >> 8) & 0x00FF);
|
||||
camera_rectangular_obj.color_buffer[0] = (uint8)((color >> 0) & 0x00FF);
|
||||
camera_rectangular_obj.color_buffer[1] = (uint8)((color >> 8) & 0x00FF);
|
||||
#endif
|
||||
|
||||
// <20><>У<EFBFBD><D0A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
camera_rectangular_obj.check_sum = SEEKFREE_ASSISTANT_SEND_HEAD;
|
||||
camera_rectangular_obj.check_sum += seekfree_assistant_sum(
|
||||
&(camera_rectangular_obj.cmd),
|
||||
sizeof(camera_rectangular_obj) - 2);
|
||||
|
||||
seekfree_assistant_transfer_callback(
|
||||
(const uint8 *)&camera_rectangular_obj,
|
||||
sizeof(camera_rectangular_obj));
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------------------------------------------------------
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> *oscilloscope_obj ʾ<><CABE><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݽṹ<DDBD><E1B9B9>
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> channel_max <20><><EFBFBD><EFBFBD>ͨ<EFBFBD><CDA8><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>Χ<EFBFBD><CEA7> [1, SEEKFREE_ASSISTANT_OSCILLOSCOPE_MAX] <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Χ<EFBFBD><CEA7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><DEB5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Χ
|
||||
// <20><><EFBFBD>ز<EFBFBD><D8B2><EFBFBD> void
|
||||
// ʹ<><CAB9>ʾ<EFBFBD><CABE> seekfree_assistant_oscilloscope_config(oscilloscope_obj, SEEKFREE_ASSISTANT_OSCILLOSCOPE_MAX);
|
||||
//-------------------------------------------------------------------------------------------------------------------
|
||||
void seekfree_assistant_oscilloscope_config (
|
||||
seekfree_assistant_oscilloscope_struct *oscilloscope_obj,
|
||||
uint8 channel_max,
|
||||
void *data_buffer)
|
||||
{
|
||||
zf_assert(NULL != oscilloscope_obj);
|
||||
zf_assert(NULL != data_buffer);
|
||||
|
||||
memset(oscilloscope_obj, 0, sizeof(seekfree_assistant_oscilloscope_struct));
|
||||
oscilloscope_obj->config.head = SEEKFREE_ASSISTANT_SEND_HEAD;
|
||||
oscilloscope_obj->config.cmd = SEEKFREE_ASSISTANT_SEND_OSCILLOSCOPE_CMD;
|
||||
oscilloscope_obj->config.channel_max =
|
||||
(SEEKFREE_ASSISTANT_OSCILLOSCOPE_MAX <= channel_max)
|
||||
? (SEEKFREE_ASSISTANT_OSCILLOSCOPE_MAX)
|
||||
: ((0 == channel_max) ? (1) : (channel_max));
|
||||
oscilloscope_obj->config.data_type = (SEEKFREE_ASSISTANT_STC_DATA_ENABLE) ? (0x01) : (0x00);
|
||||
oscilloscope_obj->buffer_byte_size = oscilloscope_obj->config.channel_max * 4;
|
||||
oscilloscope_obj->data_buffer = data_buffer;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------------------------------------------------------
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD> <20><><EFBFBD>ͺ<EFBFBD><CDBA><EFBFBD>
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> *seekfree_assistant_oscilloscope ʾ<><CABE><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݽṹ<DDBD><E1B9B9>
|
||||
// <20><><EFBFBD>ز<EFBFBD><D8B2><EFBFBD> void
|
||||
// ʹ<><CAB9>ʾ<EFBFBD><CABE> seekfree_assistant_oscilloscope_send(&seekfree_assistant_oscilloscope_data);
|
||||
//-------------------------------------------------------------------------------------------------------------------
|
||||
void seekfree_assistant_oscilloscope_send (seekfree_assistant_oscilloscope_struct *seekfree_assistant_oscilloscope)
|
||||
void seekfree_assistant_oscilloscope_send (seekfree_assistant_oscilloscope_struct *oscilloscope_obj)
|
||||
{
|
||||
uint8 packet_size;
|
||||
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>λ<EFBFBD><CEBB><EFBFBD><EFBFBD>
|
||||
seekfree_assistant_oscilloscope->channel_num &= 0x0f;
|
||||
|
||||
zf_assert(SEEKFREE_ASSISTANT_SET_OSCILLOSCOPE_COUNT >= seekfree_assistant_oscilloscope->channel_num);
|
||||
|
||||
// ֡ͷ
|
||||
seekfree_assistant_oscilloscope->head = SEEKFREE_ASSISTANT_SEND_HEAD;
|
||||
|
||||
// д<><D0B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ
|
||||
packet_size = sizeof(seekfree_assistant_oscilloscope_struct) - (SEEKFREE_ASSISTANT_SET_OSCILLOSCOPE_COUNT - seekfree_assistant_oscilloscope->channel_num) * 4;
|
||||
seekfree_assistant_oscilloscope->length = packet_size;
|
||||
|
||||
// д<>빦<EFBFBD><EBB9A6><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͨ<EFBFBD><CDA8><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
seekfree_assistant_oscilloscope->channel_num |= SEEKFREE_ASSISTANT_CAMERA_OSCILLOSCOPE;
|
||||
|
||||
// <20><>У<EFBFBD><D0A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
seekfree_assistant_oscilloscope->check_sum = 0;
|
||||
seekfree_assistant_oscilloscope->check_sum = seekfree_assistant_sum((uint8 *)seekfree_assistant_oscilloscope, packet_size);
|
||||
oscilloscope_obj->config.check_sum = SEEKFREE_ASSISTANT_SEND_HEAD;
|
||||
oscilloscope_obj->config.check_sum += seekfree_assistant_sum(
|
||||
&(oscilloscope_obj->config.cmd),
|
||||
sizeof(oscilloscope_obj->config) - 2);
|
||||
oscilloscope_obj->config.check_sum += seekfree_assistant_sum(
|
||||
(oscilloscope_obj->data_buffer),
|
||||
oscilloscope_obj->buffer_byte_size);
|
||||
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD>ڵ<EFBFBD><DAB5>ñ<EFBFBD><C3B1><EFBFBD><EFBFBD><EFBFBD>֮ǰ<D6AE><C7B0><EFBFBD><EFBFBD><EFBFBD>û<EFBFBD><C3BB><EFBFBD><EFBFBD><EFBFBD>Ҫ<EFBFBD><D2AA><EFBFBD>͵<EFBFBD><CDB5><EFBFBD><EFBFBD><EFBFBD>д<EFBFBD><D0B4>seekfree_assistant_oscilloscope_data.data[]
|
||||
|
||||
seekfree_assistant_transfer_callback((const uint8 *)seekfree_assistant_oscilloscope, packet_size);
|
||||
seekfree_assistant_transfer_callback(
|
||||
(const uint8 *)oscilloscope_obj,
|
||||
sizeof(oscilloscope_obj->config));
|
||||
seekfree_assistant_transfer_callback(
|
||||
(const uint8 *)(oscilloscope_obj->data_buffer),
|
||||
oscilloscope_obj->buffer_byte_size);
|
||||
}
|
||||
|
||||
#if (SEEKFREE_ASSISTANT_DEBUG_PARAM_ENABLE)
|
||||
//-------------------------------------------------------------------------------------------------------------------
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͼ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ<EFBFBD><EFBFBD><EFBFBD>ú<EFBFBD><EFBFBD><EFBFBD>
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> camera_type ͼ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> image_addr ͼ<><CDBC><EFBFBD><EFBFBD>ַ <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>NULL<4C><4C><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾֻ<CABE><D6BB><EFBFBD>ͱ<EFBFBD><CDB1><EFBFBD><EFBFBD><EFBFBD>Ϣ<EFBFBD><CFA2><EFBFBD><EFBFBD>λ<EFBFBD><CEBB>
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> width ͼ<><CDBC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> height ͼ<><CDBC><EFBFBD>߶<EFBFBD>
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>ʾ<EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD>ͺ<EFBFBD><EFBFBD><EFBFBD>
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> *debug_param_obj ʾ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݽṹ<EFBFBD><EFBFBD>
|
||||
// <20><><EFBFBD>ز<EFBFBD><D8B2><EFBFBD> void
|
||||
// ʹ<><CAB9>ʾ<EFBFBD><CABE> seekfree_assistant_camera_information_config(SEEKFREE_ASSISTANT_MT9V03X, mt9v03x_image[0], MT9V03X_W, MT9V03X_H);
|
||||
// <20><>ע<EFBFBD><D7A2>Ϣ
|
||||
// ʹ<><CAB9>ʾ<EFBFBD><CABE> seekfree_assistant_oscilloscope_send(&seekfree_assistant_oscilloscope_data);
|
||||
//-------------------------------------------------------------------------------------------------------------------
|
||||
void seekfree_assistant_camera_information_config (seekfree_assistant_image_type_enum camera_type, void *image_addr, uint16 width, uint16 height)
|
||||
void seekfree_assistant_debug_param_analysis (seekfree_assistant_debug_param_struct *debug_param_obj)
|
||||
{
|
||||
seekfree_assistant_camera_dot_data.head = SEEKFREE_ASSISTANT_SEND_HEAD;
|
||||
seekfree_assistant_camera_dot_data.function = SEEKFREE_ASSISTANT_CAMERA_DOT_FUNCTION;
|
||||
// д<><D0B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ
|
||||
seekfree_assistant_camera_dot_data.length = sizeof(seekfree_assistant_camera_dot_struct);
|
||||
zf_assert(NULL != debug_param_obj);
|
||||
|
||||
seekfree_assistant_camera_buffer.camera_type = camera_type;
|
||||
seekfree_assistant_camera_buffer.image_addr = image_addr;
|
||||
seekfree_assistant_camera_buffer.width = width;
|
||||
seekfree_assistant_camera_buffer.height = height;
|
||||
}
|
||||
seekfree_assistant_debug_param_cmd_struct debug_param_cmd_obj; // <20>½<EFBFBD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD>ݰ<EFBFBD>
|
||||
uint8 *debug_param_cmd_pointer = (uint8 *)&debug_param_cmd_obj; // <20><>һ<EFBFBD><D2BB>ָ<EFBFBD><D6B8>ָ<EFBFBD><D6B8><EFBFBD><EFBFBD><EFBFBD>ݰ<EFBFBD><DDB0><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
uint8 temp_sum = 0xFF; // У<><D0A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD>
|
||||
uint32 read_length = 0; // <20><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD>
|
||||
|
||||
//-------------------------------------------------------------------------------------------------------------------
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͼ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>߷<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ú<EFBFBD><EFBFBD><EFBFBD>
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> boundary_type <20>߽<EFBFBD><DFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> dot_num һ<><D2BB><EFBFBD>߽<EFBFBD><DFBD>ж<EFBFBD><D0B6>ٸ<EFBFBD><D9B8><EFBFBD>
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> dot_x1 <20><><EFBFBD>ű<EFBFBD><C5B1><EFBFBD>1<EFBFBD><31><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ĵ<EFBFBD>ַ <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>NULL<4C><4C><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD><EFBFBD>ͱ<EFBFBD><CDB1><EFBFBD>1
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> dot_x2 <20><><EFBFBD>ű<EFBFBD><C5B1><EFBFBD>2<EFBFBD><32><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ĵ<EFBFBD>ַ <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>NULL<4C><4C><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD><EFBFBD>ͱ<EFBFBD><CDB1><EFBFBD>2
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> dot_x3 <20><><EFBFBD>ű<EFBFBD><C5B1><EFBFBD>3<EFBFBD><33><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ĵ<EFBFBD>ַ <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>NULL<4C><4C><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD><EFBFBD>ͱ<EFBFBD><CDB1><EFBFBD>3
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> dot_y1 <20><><EFBFBD>ű<EFBFBD><C5B1><EFBFBD>1<EFBFBD><31><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ĵ<EFBFBD>ַ <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>NULL<4C><4C><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD><EFBFBD>ͱ<EFBFBD><CDB1><EFBFBD>1
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> dot_y2 <20><><EFBFBD>ű<EFBFBD><C5B1><EFBFBD>2<EFBFBD><32><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ĵ<EFBFBD>ַ <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>NULL<4C><4C><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD><EFBFBD>ͱ<EFBFBD><CDB1><EFBFBD>2
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> dot_y3 <20><><EFBFBD>ű<EFBFBD><C5B1><EFBFBD>3<EFBFBD><33><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ĵ<EFBFBD>ַ <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>NULL<4C><4C><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD><EFBFBD>ͱ<EFBFBD><CDB1><EFBFBD>3
|
||||
// <20><><EFBFBD>ز<EFBFBD><D8B2><EFBFBD> void
|
||||
// ʹ<><CAB9>ʾ<EFBFBD><CABE> seekfree_assistant_camera_config(X_BOUNDARY, MT9V03X_H, x1_boundary, x2_boundary, x3_boundary, NULL, NULL, NULL); // ͼ<><CDBC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ߣ<EFBFBD><DFA3><EFBFBD><EFBFBD><EFBFBD>ֻ<EFBFBD>к<EFBFBD><D0BA><EFBFBD><EFBFBD><EFBFBD>
|
||||
// ʹ<><CAB9>ʾ<EFBFBD><CABE> seekfree_assistant_camera_config(Y_BOUNDARY, MT9V03X_W, NULL, NULL, NULL, y1_boundary, y2_boundary, y3_boundary); // ͼ<><CDBC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ߣ<EFBFBD><DFA3><EFBFBD><EFBFBD><EFBFBD>ֻ<EFBFBD><D6BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
// ʹ<><CAB9>ʾ<EFBFBD><CABE> seekfree_assistant_camera_config(XY_BOUNDARY, 160, xy_x1_boundary, xy_x2_boundary, xy_x3_boundary, xy_y1_boundary, xy_y2_boundary, xy_y3_boundary); // ͼ<><CDBC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ߣ<EFBFBD><DFA3><EFBFBD><EFBFBD>߰<EFBFBD><DFB0><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
// <20><>ע<EFBFBD><D7A2>Ϣ
|
||||
//-------------------------------------------------------------------------------------------------------------------
|
||||
void seekfree_assistant_camera_boundary_config (seekfree_assistant_boundary_type_enum boundary_type, uint16 dot_num, void *dot_x1, void *dot_x2, void *dot_x3, void *dot_y1, void *dot_y2, void *dot_y3)
|
||||
{
|
||||
uint8 i = 0;
|
||||
uint8 boundary_num = 0;
|
||||
uint8 boundary_data_type = 0;
|
||||
|
||||
// <20><><EFBFBD><EFBFBD>ͼ<EFBFBD><CDBC><EFBFBD><EFBFBD><EFBFBD>ͻ<EFBFBD><CDBB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƿ<EFBFBD><EFBFBD><D7BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20><><EFBFBD>ô˺<C3B4><CBBA><EFBFBD>֮ǰ<D6AE><C7B0>Ҫ<EFBFBD>ȵ<EFBFBD><C8B5><EFBFBD>seekfree_assistant_camera_config<69><67><EFBFBD>ú<EFBFBD>ͼ<EFBFBD><CDBC><EFBFBD><EFBFBD>Ϣ
|
||||
zf_assert(0 != seekfree_assistant_camera_buffer.camera_type);
|
||||
|
||||
seekfree_assistant_camera_dot_data.dot_num = dot_num;
|
||||
seekfree_assistant_camera_dot_data.valid_flag = 0;
|
||||
for(i = 0; i < 3; i++)
|
||||
{
|
||||
seekfree_assistant_camera_buffer.boundary_x[i] = NULL;
|
||||
seekfree_assistant_camera_buffer.boundary_y[i] = NULL;
|
||||
}
|
||||
|
||||
switch(boundary_type)
|
||||
{
|
||||
case X_BOUNDARY:
|
||||
{
|
||||
if(NULL != dot_x1)
|
||||
{
|
||||
boundary_num++;
|
||||
seekfree_assistant_camera_dot_data.valid_flag |= 1 << 0;
|
||||
seekfree_assistant_camera_buffer.boundary_x[i++] = dot_x1;
|
||||
}
|
||||
if(NULL != dot_x2)
|
||||
{
|
||||
boundary_num++;
|
||||
seekfree_assistant_camera_dot_data.valid_flag |= 1 << 1;
|
||||
seekfree_assistant_camera_buffer.boundary_x[i++] = dot_x2;
|
||||
}
|
||||
if(NULL != dot_x3)
|
||||
{
|
||||
boundary_num++;
|
||||
seekfree_assistant_camera_dot_data.valid_flag |= 1 << 2;
|
||||
seekfree_assistant_camera_buffer.boundary_x[i++] = dot_x3;
|
||||
}
|
||||
|
||||
if(255 < seekfree_assistant_camera_buffer.height)
|
||||
{
|
||||
boundary_data_type = 1;
|
||||
}
|
||||
}break;
|
||||
|
||||
case Y_BOUNDARY:
|
||||
{
|
||||
if(NULL != dot_y1)
|
||||
{
|
||||
boundary_num++;
|
||||
seekfree_assistant_camera_dot_data.valid_flag |= 1 << 0;
|
||||
seekfree_assistant_camera_buffer.boundary_y[i++] = dot_y1;
|
||||
}
|
||||
if(NULL != dot_y2)
|
||||
{
|
||||
boundary_num++;
|
||||
seekfree_assistant_camera_dot_data.valid_flag |= 1 << 1;
|
||||
seekfree_assistant_camera_buffer.boundary_y[i++] = dot_y2;
|
||||
}
|
||||
if(NULL != dot_y3)
|
||||
{
|
||||
boundary_num++;
|
||||
seekfree_assistant_camera_dot_data.valid_flag |= 1 << 2;
|
||||
seekfree_assistant_camera_buffer.boundary_y[i++] = dot_y3;
|
||||
}
|
||||
|
||||
if(255 < seekfree_assistant_camera_buffer.width)
|
||||
{
|
||||
boundary_data_type = 1;
|
||||
}
|
||||
}break;
|
||||
|
||||
case XY_BOUNDARY:
|
||||
{
|
||||
if((NULL != dot_x1) && (NULL != dot_y1))
|
||||
{
|
||||
boundary_num++;
|
||||
seekfree_assistant_camera_dot_data.valid_flag |= 1 << 0;
|
||||
seekfree_assistant_camera_buffer.boundary_x[i] = dot_x1;
|
||||
seekfree_assistant_camera_buffer.boundary_y[i++] = dot_y1;
|
||||
}
|
||||
if((NULL != dot_x2) && (NULL != dot_y2))
|
||||
{
|
||||
boundary_num++;
|
||||
seekfree_assistant_camera_dot_data.valid_flag |= 1 << 1;
|
||||
seekfree_assistant_camera_buffer.boundary_x[i] = dot_x2;
|
||||
seekfree_assistant_camera_buffer.boundary_y[i++] = dot_y2;
|
||||
}
|
||||
if((NULL != dot_x3) && (NULL != dot_y3))
|
||||
{
|
||||
boundary_num++;
|
||||
seekfree_assistant_camera_dot_data.valid_flag |= 1 << 2;
|
||||
seekfree_assistant_camera_buffer.boundary_x[i] = dot_x3;
|
||||
seekfree_assistant_camera_buffer.boundary_y[i++] = dot_y3;
|
||||
}
|
||||
|
||||
if((255 < seekfree_assistant_camera_buffer.width) || (255 < seekfree_assistant_camera_buffer.height))
|
||||
{
|
||||
boundary_data_type = 1;
|
||||
}
|
||||
}break;
|
||||
|
||||
case NO_BOUNDARY:break;
|
||||
}
|
||||
|
||||
seekfree_assistant_camera_dot_data.dot_type = (boundary_type << 6) | (boundary_data_type << 5) | boundary_num;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------------------------------------------------------
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ַ<EFBFBD><D6B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͷͼ<CDB7><CDBC>
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> void
|
||||
// <20><><EFBFBD>ز<EFBFBD><D8B2><EFBFBD> void
|
||||
// ʹ<><CAB9>ʾ<EFBFBD><CABE>
|
||||
// <20><>ע<EFBFBD><D7A2>Ϣ <20>ڵ<EFBFBD><DAB5><EFBFBD>ͼ<EFBFBD><CDBC><EFBFBD><EFBFBD><EFBFBD>ͺ<EFBFBD><CDBA><EFBFBD>֮ǰ<D6AE><C7B0><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ص<EFBFBD><D8B5><EFBFBD>һ<EFBFBD><D2BB>seekfree_assistant_camera_config<69><67><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ӧ<EFBFBD>IJ<EFBFBD><C4B2><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ú<EFBFBD>
|
||||
//-------------------------------------------------------------------------------------------------------------------
|
||||
void seekfree_assistant_camera_send (void)
|
||||
{
|
||||
// <20><><EFBFBD><EFBFBD>ͼ<EFBFBD><CDBC><EFBFBD><EFBFBD><EFBFBD>ͻ<EFBFBD><CDBB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƿ<EFBFBD><EFBFBD><D7BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
zf_assert(0 != seekfree_assistant_camera_buffer.camera_type);
|
||||
|
||||
seekfree_assistant_camera_data_send(seekfree_assistant_camera_buffer.camera_type, seekfree_assistant_camera_buffer.image_addr, seekfree_assistant_camera_dot_data.dot_type & 0x0f, seekfree_assistant_camera_buffer.width, seekfree_assistant_camera_buffer.height);
|
||||
|
||||
if(seekfree_assistant_camera_dot_data.dot_type & 0x0f)
|
||||
{
|
||||
seekfree_assistant_camera_dot_send(&seekfree_assistant_camera_buffer);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
//-------------------------------------------------------------------------------------------------------------------
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֽ<EFBFBD><D6BD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>յ<EFBFBD><D5B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> void
|
||||
// <20><><EFBFBD>ز<EFBFBD><D8B2><EFBFBD> void
|
||||
// ʹ<><CAB9>ʾ<EFBFBD><CABE> <20><><EFBFBD><EFBFBD>ֻ<EFBFBD><D6BB>Ҫ<EFBFBD>ŵ<EFBFBD><C5B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>е<EFBFBD>PIT<49>жϻ<D0B6><CFBB><EFBFBD><EFBFBD><EFBFBD>ѭ<EFBFBD><D1AD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
//-------------------------------------------------------------------------------------------------------------------
|
||||
#if (1 == SEEKFREE_ASSISTANT_SET_PARAMETR_ENABLE)
|
||||
void seekfree_assistant_data_analysis (void)
|
||||
{
|
||||
uint8 temp_sum;
|
||||
uint32 read_length;
|
||||
seekfree_assistant_parameter_struct *receive_packet;
|
||||
|
||||
// <20><><EFBFBD><EFBFBD>ʹ<EFBFBD><CAB9>uint32<33><32><EFBFBD>ж<EFBFBD><D0B6>壬Ŀ<E5A3AC><C4BF><EFBFBD><EFBFBD>Ϊ<EFBFBD>˱<EFBFBD>֤<EFBFBD><D6A4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֽڶ<D6BD><DAB6><EFBFBD>
|
||||
uint32 temp_buffer[SEEKFREE_ASSISTANT_BUFFER_SIZE / 4];
|
||||
|
||||
// <20><><EFBFBD>Զ<EFBFBD>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD>, <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Զ<EFBFBD><D4B6><EFBFBD><EFBFBD>Ĵ<EFBFBD><C4B4>䷽ʽ<E4B7BD><CABD><EFBFBD>ӽ<EFBFBD><D3BD>ջص<D5BB><D8B5>ж<EFBFBD>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD>
|
||||
read_length = seekfree_assistant_receive_callback((uint8 *)temp_buffer, SEEKFREE_ASSISTANT_BUFFER_SIZE);
|
||||
// <20><><EFBFBD>Զ<EFBFBD>ȡһ<C8A1><D2BB><EFBFBD><EFBFBD><EFBFBD>ݰ<EFBFBD>
|
||||
// <20><><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>
|
||||
read_length = seekfree_assistant_receive_callback(
|
||||
debug_param_cmd_pointer,
|
||||
sizeof(seekfree_assistant_debug_param_cmd_struct));
|
||||
if(read_length)
|
||||
{
|
||||
// <20><><EFBFBD><EFBFBD>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>д<EFBFBD><D0B4>FIFO
|
||||
fifo_write_buffer(&seekfree_assistant_fifo, (uint8 *)temp_buffer, read_length);
|
||||
{ // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>д<EFBFBD><D0B4>FIFO
|
||||
fifo_write_buffer(
|
||||
&seekfree_assistant_debug_param_fifo,
|
||||
debug_param_cmd_pointer,
|
||||
read_length);
|
||||
}
|
||||
|
||||
while(sizeof(seekfree_assistant_parameter_struct) <= fifo_used(&seekfree_assistant_fifo))
|
||||
{
|
||||
read_length = sizeof(seekfree_assistant_parameter_struct);
|
||||
fifo_read_buffer(&seekfree_assistant_fifo, (uint8 *)temp_buffer, &read_length, FIFO_READ_ONLY);
|
||||
while( sizeof(seekfree_assistant_debug_param_cmd_struct)
|
||||
<= fifo_used(&seekfree_assistant_debug_param_fifo))
|
||||
{ // <20><><EFBFBD><EFBFBD> FIFO <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD>ݰ<EFBFBD> <20><>ô<EFBFBD>ͽ<EFBFBD><CDBD>н<EFBFBD><D0BD><EFBFBD>
|
||||
// ֱ<>Ӷ<EFBFBD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD>ݰ<EFBFBD><DDB0><EFBFBD><EFBFBD><EFBFBD>
|
||||
read_length = sizeof(seekfree_assistant_debug_param_cmd_struct);
|
||||
fifo_read_buffer(
|
||||
&seekfree_assistant_debug_param_fifo,
|
||||
debug_param_cmd_pointer,
|
||||
&read_length,
|
||||
FIFO_READ_ONLY);
|
||||
|
||||
if(SEEKFREE_ASSISTANT_RECEIVE_HEAD != ((uint8 *)temp_buffer)[0])
|
||||
{
|
||||
// û<EFBFBD><EFBFBD>֡ͷ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>FIFO<EFBFBD><EFBFBD>ȥ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
read_length = 1;
|
||||
}
|
||||
else
|
||||
{
|
||||
// <20>ҵ<EFBFBD>֡ͷ
|
||||
receive_packet = (seekfree_assistant_parameter_struct *)temp_buffer;
|
||||
temp_sum = receive_packet->check_sum;
|
||||
receive_packet->check_sum = 0;
|
||||
if(temp_sum == seekfree_assistant_sum((uint8 *)temp_buffer, sizeof(seekfree_assistant_parameter_struct)))
|
||||
{
|
||||
// <20><>У<EFBFBD><D0A3><EFBFBD>ɹ<EFBFBD><C9B9><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
seekfree_assistant_parameter[receive_packet->channel - 1] = receive_packet->data;
|
||||
seekfree_assistant_parameter_update_flag[receive_packet->channel - 1] = 1;
|
||||
if( SEEKFREE_ASSISTANT_RECEIVE_HEAD == debug_param_cmd_pointer[0]
|
||||
&& SEEKFREE_ASSISTANT_RECEIVE_DEBUG_PARAM_CMD == debug_param_cmd_pointer[2])
|
||||
{ // ֱ<EFBFBD><EFBFBD>ƥ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>֡ͷ <20><><EFBFBD>ҹ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ҳƥ<EFBFBD><EFBFBD>
|
||||
temp_sum = debug_param_cmd_obj.check_sum; // <20><>ȡ<EFBFBD><C8A1><EFBFBD>ݰ<EFBFBD><DDB0><EFBFBD>У<EFBFBD><D0A3><EFBFBD><EFBFBD>
|
||||
debug_param_cmd_obj.check_sum = 0; // <20><><EFBFBD>հ<EFBFBD><D5B0><EFBFBD>У<EFBFBD><D0A3><EFBFBD><EFBFBD>ֵ <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>У<EFBFBD><D0A3><EFBFBD><EFBFBD>
|
||||
if( temp_sum == seekfree_assistant_sum(debug_param_cmd_pointer, sizeof(seekfree_assistant_debug_param_cmd_struct)))
|
||||
{ // <20><>У<EFBFBD><D0A3><EFBFBD>ɹ<EFBFBD><C9B9><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
debug_param_obj->data[debug_param_cmd_obj.channel_index - 1] = debug_param_cmd_obj.dat.data_float;
|
||||
#if (SEEKFREE_ASSISTANT_STC_DATA_ENABLE)
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> STC <20><>ô<EFBFBD><C3B4>С<EFBFBD>˷<EFBFBD>һ<EFBFBD><D2BB>
|
||||
debug_param_obj->dat.data_buffer[0] ^= debug_param_obj->dat.data_buffer[3];
|
||||
debug_param_obj->dat.data_buffer[3] ^= debug_param_obj->dat.data_buffer[0];
|
||||
debug_param_obj->dat.data_buffer[0] ^= debug_param_obj->dat.data_buffer[3];
|
||||
debug_param_obj->dat.data_buffer[1] ^= debug_param_obj->dat.data_buffer[2];
|
||||
debug_param_obj->dat.data_buffer[2] ^= debug_param_obj->dat.data_buffer[1];
|
||||
debug_param_obj->dat.data_buffer[1] ^= debug_param_obj->dat.data_buffer[2];
|
||||
#endif
|
||||
debug_param_obj->update_flag[debug_param_cmd_obj.channel_index - 1] = 1;
|
||||
temp_sum = 0x00;
|
||||
}
|
||||
else
|
||||
{
|
||||
read_length = 1;
|
||||
{ // <20><><EFBFBD><EFBFBD>У<EFBFBD><D0A3><EFBFBD><EFBFBD>ƥ<EFBFBD><C6A5><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>λ<EFBFBD><CEBB>ʱУ<CAB1><D0A3><EFBFBD><EFBFBD>Ϊ 0xFF <20><>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
temp_sum = 0xFF;
|
||||
}
|
||||
}
|
||||
else
|
||||
{ // <20><><EFBFBD><EFBFBD>ƥ<EFBFBD>䲻<EFBFBD><E4B2BB>֡ͷ<D6A1><EFBFBD><CDB9><EFBFBD><EFBFBD><EFBFBD> <20><>λ<EFBFBD><CEBB>ʱУ<CAB1><D0A3><EFBFBD><EFBFBD>Ϊ 0xFF <20><>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
temp_sum = 0xFF;
|
||||
}
|
||||
|
||||
if(0xFF == temp_sum)
|
||||
{ // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱУ<CAB1><D0A3><EFBFBD><EFBFBD>Ϊ 0xFF <20><>ô<EFBFBD><C3B4><EFBFBD>ǽ<EFBFBD><C7BD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ѱ<EFBFBD><D1B0><EFBFBD><EFBFBD>һ<EFBFBD><D2BB>֡ͷ
|
||||
for(read_length = 1; sizeof(seekfree_assistant_debug_param_cmd_struct) > read_length; read_length ++)
|
||||
{ // <20><>Ϊ<EFBFBD><CEAA>ȡ<EFBFBD><C8A1>һ<EFBFBD><D2BB><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD>
|
||||
if(SEEKFREE_ASSISTANT_RECEIVE_HEAD == debug_param_cmd_pointer[read_length])
|
||||
{ // <20>ҵ<EFBFBD><D2B5>¸<EFBFBD>֡ͷ<D6A1><CDB7><EFBFBD>˳<EFBFBD>
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʹ<EFBFBD>õ<EFBFBD><C3B5><EFBFBD><EFBFBD><EFBFBD>
|
||||
fifo_read_buffer(&seekfree_assistant_fifo, (uint8 *)temp_buffer, &read_length, FIFO_READ_AND_CLEAN);
|
||||
fifo_read_buffer(
|
||||
&seekfree_assistant_debug_param_fifo,
|
||||
debug_param_cmd_pointer,
|
||||
&read_length,
|
||||
FIFO_READ_AND_CLEAN);
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -1,20 +1,20 @@
|
||||
/*********************************************************************************************************************
|
||||
* 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>
|
||||
* RT1064DVL6A Opensourec Library <20><><EFBFBD><EFBFBD>RT1064DVL6A <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><C4BC><EFBFBD> RT1064DVL6A <20><>Դ<EFBFBD><D4B4><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD>
|
||||
*
|
||||
* RT1064DVL6A <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>
|
||||
@@ -24,142 +24,292 @@
|
||||
* <20>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD><EFBFBD> seekfree_assistant
|
||||
* <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.10.2
|
||||
* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ADS v1.9.4
|
||||
* <20><><EFBFBD><EFBFBD>ƽ̨ TC264D
|
||||
* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> https://seekfree.taobao.com/
|
||||
*
|
||||
*
|
||||
* <20>ļ<DEB8>¼
|
||||
* <20><><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>ע
|
||||
* 2024-01-01 pudding first version
|
||||
* <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><>ע
|
||||
* 2024-1-11 SeekFree first version
|
||||
********************************************************************************************************************/
|
||||
#ifndef _seekfree_assistant_h_
|
||||
#define _seekfree_assistant_h_
|
||||
|
||||
|
||||
#include "zf_common_typedef.h"
|
||||
|
||||
// CCD <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ö<EFBFBD><C3B6>
|
||||
typedef enum
|
||||
{
|
||||
SEEKFREE_ASSISTANT_DATA_TYPE_UINT8 ,
|
||||
SEEKFREE_ASSISTANT_DATA_TYPE_UINT16 ,
|
||||
}seekfree_assistant_data_type_enum;
|
||||
|
||||
// 1<EFBFBD><EFBFBD>ʹ<EFBFBD>ܲ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڵĹ<EFBFBD><EFBFBD><EFBFBD> 0<><30><EFBFBD>رղ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڵĹ<EFBFBD><EFBFBD><EFBFBD>
|
||||
#define SEEKFREE_ASSISTANT_SET_PARAMETR_ENABLE ( 1 )
|
||||
|
||||
|
||||
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>FIFO<EFBFBD><EFBFBD>С
|
||||
#define SEEKFREE_ASSISTANT_BUFFER_SIZE ( 0x80 )
|
||||
|
||||
// <20><><EFBFBD><EFBFBD>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͨ<EFBFBD><CDA8><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
#define SEEKFREE_ASSISTANT_SET_OSCILLOSCOPE_COUNT ( 0x08 )
|
||||
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ե<EFBFBD><D4B5><EFBFBD><EFBFBD><EFBFBD>ͨ<EFBFBD><CDA8><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
#define SEEKFREE_ASSISTANT_SET_PARAMETR_COUNT ( 0x08 )
|
||||
|
||||
// <20><><EFBFBD><EFBFBD>ͼ<EFBFBD><CDBC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
#define SEEKFREE_ASSISTANT_CAMERA_MAX_BOUNDARY ( 0x08 )
|
||||
|
||||
// <20><>Ƭ<EFBFBD><C6AC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>λ<EFBFBD><CEBB><EFBFBD><EFBFBD><EFBFBD>͵<EFBFBD>֡ͷ
|
||||
#define SEEKFREE_ASSISTANT_SEND_HEAD ( 0xAA )
|
||||
|
||||
// <20><><EFBFBD><EFBFBD>ͷ<EFBFBD><CDB7>
|
||||
#define SEEKFREE_ASSISTANT_CAMERA_FUNCTION ( 0x02 )
|
||||
#define SEEKFREE_ASSISTANT_CAMERA_DOT_FUNCTION ( 0x03 )
|
||||
#define SEEKFREE_ASSISTANT_CAMERA_OSCILLOSCOPE ( 0x10 )
|
||||
|
||||
// <20><>λ<EFBFBD><CEBB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƭ<EFBFBD><C6AC><EFBFBD><EFBFBD><EFBFBD>͵<EFBFBD>֡ͷ
|
||||
#define SEEKFREE_ASSISTANT_RECEIVE_HEAD ( 0x55 )
|
||||
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
#define SEEKFREE_ASSISTANT_RECEIVE_SET_PARAMETER ( 0x20 )
|
||||
|
||||
// CCD <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ö<EFBFBD><EFBFBD>
|
||||
typedef enum
|
||||
{
|
||||
SEEKFREE_ASSISTANT_CCD_RESOLUTION_8BIT , // 8λ<38>ֱ<EFBFBD><D6B1><EFBFBD>
|
||||
SEEKFREE_ASSISTANT_CCD_RESOLUTION_10BIT , // 10λ<30>ֱ<EFBFBD><D6B1><EFBFBD>
|
||||
SEEKFREE_ASSISTANT_CCD_RESOLUTION_12BIT , // 12λ<32>ֱ<EFBFBD><EFBFBD><EFBFBD>
|
||||
}seekfree_assistant_ccd_resolution_enum;
|
||||
|
||||
// <20><><EFBFBD><EFBFBD>ͷ<EFBFBD><CDB7><EFBFBD><EFBFBD>ö<EFBFBD><C3B6>
|
||||
typedef enum
|
||||
{
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͷ<EFBFBD>ͺŶ<CDBA><C5B6><EFBFBD>
|
||||
SEEKFREE_ASSISTANT_OV7725_BIN = 1,
|
||||
SEEKFREE_ASSISTANT_MT9V03X,
|
||||
SEEKFREE_ASSISTANT_SCC8660,
|
||||
|
||||
// <20><><EFBFBD><EFBFBD>ͼ<EFBFBD><CDBC><EFBFBD><EFBFBD><EFBFBD>Ͷ<EFBFBD><CDB6><EFBFBD>
|
||||
SEEKFREE_ASSISTANT_BINARY = 1,
|
||||
SEEKFREE_ASSISTANT_GRAY,
|
||||
SEEKFREE_ASSISTANT_RGB565,
|
||||
}seekfree_assistant_image_type_enum;
|
||||
SEEKFREE_ASSISTANT_CAMERA_TYPE_BINARY = 0x01 ,
|
||||
SEEKFREE_ASSISTANT_CAMERA_TYPE_GRAY ,
|
||||
SEEKFREE_ASSISTANT_CAMERA_TYPE_RGB565 ,
|
||||
|
||||
// <20><><EFBFBD><EFBFBD>ͷ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ö<EFBFBD><EFBFBD>
|
||||
typedef enum
|
||||
{
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͷ<EFBFBD>ͺŶ<CDBA><C5B6><EFBFBD>
|
||||
X_BOUNDARY, // <20><><EFBFBD>͵<EFBFBD>ͼ<EFBFBD><CDBC><EFBFBD>б߽<D0B1><DFBD><EFBFBD>Ϣֻ<CFA2><D6BB><EFBFBD><EFBFBD>X<EFBFBD><58>Ҳ<EFBFBD><D2B2><EFBFBD><EFBFBD>ֻ<EFBFBD>к<EFBFBD><D0BA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ<EFBFBD><CFA2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͼ<EFBFBD><CDBC><EFBFBD>߶ȵõ<C8B5>
|
||||
Y_BOUNDARY, // <20><><EFBFBD>͵<EFBFBD>ͼ<EFBFBD><CDBC><EFBFBD>б߽<D0B1><DFBD><EFBFBD>Ϣֻ<CFA2><D6BB><EFBFBD><EFBFBD>Y<EFBFBD><59>Ҳ<EFBFBD><D2B2><EFBFBD><EFBFBD>ֻ<EFBFBD><D6BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ<EFBFBD><CFA2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͼ<EFBFBD><CDBC><EFBFBD><EFBFBD><EFBFBD>ȵõ<C8B5><C3B5><EFBFBD>ͨ<EFBFBD><CDA8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
XY_BOUNDARY, // <20><><EFBFBD>͵<EFBFBD>ͼ<EFBFBD><CDBC><EFBFBD>б߽<D0B1><EFBFBD><EFBFBD>Ϣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>X<EFBFBD><EFBFBD>Y<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><EFBFBD><EFBFBD><EFBFBD>ʾ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ч<EFBFBD><EFBFBD>
|
||||
NO_BOUNDARY, // <20><><EFBFBD>͵<EFBFBD>ͼ<EFBFBD><CDBC><EFBFBD><EFBFBD>û<EFBFBD>б<EFBFBD><D0B1><EFBFBD><EFBFBD><EFBFBD>Ϣ
|
||||
}seekfree_assistant_boundary_type_enum;
|
||||
// <20><><EFBFBD><EFBFBD>ͷ<EFBFBD>ͺ<EFBFBD>ƥ<EFBFBD>䶨<EFBFBD><EFBFBD>
|
||||
SEEKFREE_ASSISTANT_CAMERA_TYPE_OV7725_BIN = 0x01 ,
|
||||
SEEKFREE_ASSISTANT_CAMERA_TYPE_MT9V03X ,
|
||||
SEEKFREE_ASSISTANT_CAMERA_TYPE_SCC8660 ,
|
||||
}seekfree_assistant_camera_type_enum;
|
||||
|
||||
#define SEEKFREE_ASSISTANT_STC_DATA_ENABLE ( 0 ) // STC <20><>Ƭ<EFBFBD><C6AC><EFBFBD><EFBFBD>Ҫʹ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>궨<EFBFBD><EFBFBD>
|
||||
|
||||
#define SEEKFREE_ASSISTANT_OSCILLOSCOPE_MAX ( 16 ) // <20><><EFBFBD><EFBFBD>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͨ<EFBFBD><CDA8><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
#define SEEKFREE_ASSISTANT_CCD_RESOLUTION_DEFAULT ( SEEKFREE_ASSISTANT_CCD_RESOLUTION_12BIT ) // Ĭ<><C4AC> CCD <20>ľ<EFBFBD><C4BE><EFBFBD> <20><><EFBFBD><EFBFBD>ȷ<EFBFBD><C8B7><EFBFBD><EFBFBD>λ<EFBFBD><CEBB><EFBFBD><EFBFBD><EFBFBD>᳤<EFBFBD><E1B3A4>
|
||||
|
||||
#define SEEKFREE_ASSISTANT_DEBUG_PARAM_ENABLE ( 1 ) // 1<><31>ʹ<EFBFBD>ܲ<EFBFBD><DCB2><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڵĹ<DAB5><C4B9><EFBFBD> 0<><30><EFBFBD>رղ<D8B1><D5B2><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڵĹ<DAB5><C4B9><EFBFBD>
|
||||
#if (SEEKFREE_ASSISTANT_DEBUG_PARAM_ENABLE)
|
||||
#define SEEKFREE_ASSISTANT_DEBUG_PARAM_MAX ( 8 ) // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Բ<EFBFBD><D4B2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͨ<EFBFBD><CDA8><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
#define SEEKFREE_ASSISTANT_DEBUG_PARAM_BUFFER_SIZE ( 64 ) // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Բ<EFBFBD><D4B2><EFBFBD><EFBFBD>Ļ<EFBFBD><C4BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>С
|
||||
#endif
|
||||
|
||||
typedef struct
|
||||
{
|
||||
uint8 head; // ֡ͷ
|
||||
uint8 channel_num; // <20><><EFBFBD><EFBFBD>λΪ<CEBB><CEAA><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>λΪͨ<CEAA><CDA8><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
uint8 check_sum; // <EFBFBD><EFBFBD>У<EFBFBD><EFBFBD>
|
||||
uint8 length; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
float data[SEEKFREE_ASSISTANT_SET_OSCILLOSCOPE_COUNT]; // ͨ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
struct
|
||||
{
|
||||
uint8 head ; // ֡ͷ
|
||||
uint8 check_sum ; // <20><>У<EFBFBD><EFBFBD>
|
||||
uint8 cmd ; // <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
uint8 channel_index ; // ͨ<><CDA8><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
uint8 data_lenght_buffer[2] ; // CCD <20><><EFBFBD>ݳ<EFBFBD><DDB3><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
uint8 channel_color_buffer[2] ; // ͨ<><CDA8><EFBFBD><EFBFBD>ɫ <20><><EFBFBD><EFBFBD>
|
||||
uint8 channel_data_max[2] ; // ͨ<><CDA8><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ <20><><EFBFBD><EFBFBD>
|
||||
uint8 data_type ; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>ȷ<EFBFBD>ϴ<EFBFBD>С<EFBFBD><D0A1>
|
||||
uint8 reserve ; // <20><><EFBFBD><EFBFBD>
|
||||
}config;
|
||||
uint16 buffer_byte_size ; // <20><><EFBFBD>ݻ<EFBFBD><DDBB><EFBFBD><EFBFBD><EFBFBD> ʵ<><CAB5><EFBFBD>ֽڴ<D6BD>С
|
||||
void *data_buffer ; // <20><><EFBFBD>ݻ<EFBFBD><DDBB><EFBFBD><EFBFBD><EFBFBD>
|
||||
}seekfree_assistant_ccd_struct;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
struct
|
||||
{
|
||||
uint8 head ; // ֡ͷ
|
||||
uint8 check_sum ; // <20><>У<EFBFBD><D0A3>
|
||||
uint8 cmd ; // <20><><EFBFBD><EFBFBD><EEB9A6><EFBFBD><EFBFBD>
|
||||
uint8 camera_type ; // <20><><EFBFBD><EFBFBD>ͷ<EFBFBD><CDB7><EFBFBD><EFBFBD>
|
||||
uint8 image_width_buffer[2] ; // ͼ<><CDBC><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
uint8 image_height_buffer[2] ; // ͼ<><CDBC><EFBFBD>߶<EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
uint8 data_type ; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>ȷ<EFBFBD>ϴ<EFBFBD>С<EFBFBD><D0A1>
|
||||
uint8 reserve[3] ; // <20><><EFBFBD><EFBFBD>
|
||||
}config;
|
||||
uint32 buffer_byte_size ; // <20><><EFBFBD>ݻ<EFBFBD><DDBB><EFBFBD><EFBFBD><EFBFBD> ʵ<><CAB5><EFBFBD>ֽڴ<D6BD>С
|
||||
void *data_buffer ; // <20><><EFBFBD>ݻ<EFBFBD><DDBB><EFBFBD><EFBFBD><EFBFBD>
|
||||
}seekfree_assistant_camera_struct;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
struct
|
||||
{
|
||||
uint8 head ; // ֡ͷ
|
||||
uint8 check_sum ; // <20><>У<EFBFBD><D0A3>
|
||||
uint8 cmd ; // <20><><EFBFBD><EFBFBD><EEB9A6><EFBFBD><EFBFBD>
|
||||
uint8 data_type ; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>ȷ<EFBFBD>ϴ<EFBFBD>С<EFBFBD><D0A1>
|
||||
uint8 boundary_lenght_buffer[2] ; // <20><><EFBFBD>߳<EFBFBD><DFB3><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
uint8 color_buffer[2] ; // ͨ<><CDA8><EFBFBD><EFBFBD>ɫ <20><><EFBFBD><EFBFBD>
|
||||
}config;
|
||||
uint32 buffer_byte_size ; // <20><><EFBFBD>ݻ<EFBFBD><DDBB><EFBFBD><EFBFBD><EFBFBD> ʵ<><CAB5><EFBFBD>ֽڴ<D6BD>С
|
||||
void *data_buffer ; // <20><><EFBFBD>ݻ<EFBFBD><DDBB><EFBFBD><EFBFBD><EFBFBD>
|
||||
}seekfree_assistant_camera_boundary_struct;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
uint8 head ; // ֡ͷ
|
||||
uint8 check_sum ; // <20><>У<EFBFBD><D0A3>
|
||||
uint8 cmd ; // <20><><EFBFBD><EFBFBD><EEB9A6><EFBFBD><EFBFBD>
|
||||
uint8 reserve ; // <20><><EFBFBD><EFBFBD>
|
||||
uint8 x_axis_buffer[2] ; // X <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
uint8 y_axis_buffer[2] ; // Y <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
uint8 width_buffer[2] ; // <20><><EFBFBD>ο<EFBFBD><CEBF><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
uint8 height_buffer[2] ; // <20><><EFBFBD>θ߶<CEB8> <20><><EFBFBD><EFBFBD>
|
||||
uint8 color_buffer[2] ; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɫ <20><><EFBFBD><EFBFBD>
|
||||
}seekfree_assistant_camera_rectangular_struct;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
struct
|
||||
{
|
||||
uint8 head ; // ֡ͷ
|
||||
uint8 check_sum ; // <20><>У<EFBFBD><D0A3>
|
||||
uint8 cmd ; // <20><><EFBFBD><EFBFBD><EEB9A6><EFBFBD><EFBFBD>
|
||||
uint8 channel_max ; // ͨ<><CDA8><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
uint8 data_type ; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>ȷ<EFBFBD>ϴ<EFBFBD>С<EFBFBD><D0A1>
|
||||
uint8 reserve[3] ; // <20><><EFBFBD><EFBFBD>
|
||||
}config;
|
||||
uint32 buffer_byte_size ; // <20><><EFBFBD>ݻ<EFBFBD><DDBB><EFBFBD><EFBFBD><EFBFBD> ʵ<><CAB5><EFBFBD>ֽڴ<D6BD>С
|
||||
void *data_buffer ; // <20><><EFBFBD>ݻ<EFBFBD><DDBB><EFBFBD><EFBFBD><EFBFBD>
|
||||
}seekfree_assistant_oscilloscope_struct;
|
||||
|
||||
typedef union
|
||||
{
|
||||
uint8 data_uint8[4] ;
|
||||
float data_float ;
|
||||
}seekfree_assistant_param_struct;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
uint8 head; // ֡ͷ
|
||||
uint8 function; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
uint8 camera_type; // <20><><EFBFBD><EFBFBD>λ<EFBFBD><CEBB>ʾ<EFBFBD>߽<EFBFBD><DFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>λ<EFBFBD><CEBB>ʾ<EFBFBD>Ƿ<EFBFBD><C7B7><EFBFBD>ͼ<EFBFBD><CDBC><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>0x13<31><33><EFBFBD><EFBFBD><EFBFBD><EFBFBD>3<EFBFBD><33>ʾһ<CABE><D2BB>ͼ<EFBFBD><CDBC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>߽磨ͨ<E7A3A8><CDA8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>߽硢<DFBD><E7A1A2><EFBFBD>ߡ<EFBFBD><DFA1>ұ߽磩<DFBD><E7A3A9>1<EFBFBD><31>ʾû<CABE><C3BB>ͼ<EFBFBD><CDBC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
uint8 length; // <20><><EFBFBD><EFBFBD><EFBFBD>ȣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Э<EFBFBD>鲿<EFBFBD>֣<EFBFBD>
|
||||
uint16 image_width; // ͼ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
uint16 image_height; // ͼ<><CDBC><EFBFBD>߶<EFBFBD>
|
||||
}seekfree_assistant_camera_struct;
|
||||
|
||||
|
||||
typedef struct
|
||||
{
|
||||
uint8 head; // ֡ͷ
|
||||
uint8 function; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
uint8 dot_type; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> BIT5<54><35>1<EFBFBD><31><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>16λ<36><CEBB> 0<><30><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>8λ<38><CEBB> BIT7-BIT6<54><36>0<EFBFBD><30>ֻ<EFBFBD><D6BB>X<EFBFBD><58><EFBFBD><EFBFBD> 1<><31>ֻ<EFBFBD><D6BB>Y<EFBFBD><59><EFBFBD><EFBFBD> 2<><32>X<EFBFBD><58>Y<EFBFBD><59><EFBFBD>궼<EFBFBD><EAB6BC> BIT3-BIT0<54><30><EFBFBD>߽<EFBFBD><DFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
uint8 length; // <20><><EFBFBD><EFBFBD><EFBFBD>ȣ<EFBFBD><C8A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Э<EFBFBD>鲿<EFBFBD>֣<EFBFBD>
|
||||
uint16 dot_num; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
uint8 valid_flag; // ͨ<><CDA8><EFBFBD><EFBFBD>ʶ
|
||||
uint8 reserve; // <20><><EFBFBD><EFBFBD>
|
||||
}seekfree_assistant_camera_dot_struct;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
void *image_addr; // <20><><EFBFBD><EFBFBD>ͷ<EFBFBD><CDB7>ַ
|
||||
uint16 width; // ͼ<><CDBC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
uint16 height; // ͼ<><CDBC><EFBFBD>߶<EFBFBD>
|
||||
seekfree_assistant_image_type_enum camera_type; // <20><><EFBFBD><EFBFBD>ͷ<EFBFBD><CDB7><EFBFBD><EFBFBD>
|
||||
void *boundary_x[SEEKFREE_ASSISTANT_CAMERA_MAX_BOUNDARY]; // <20>߽<EFBFBD><DFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ַ
|
||||
void *boundary_y[SEEKFREE_ASSISTANT_CAMERA_MAX_BOUNDARY]; // <20>߽<EFBFBD><DFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ַ
|
||||
}seekfree_assistant_camera_buffer_struct;
|
||||
uint8 head ; // ֡ͷ
|
||||
uint8 check_sum ; // <20><>У<EFBFBD><EFBFBD>
|
||||
uint8 cmd ; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
uint8 channel_index ; // ͨ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
seekfree_assistant_param_struct dat ; // һ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
|
||||
}seekfree_assistant_debug_param_cmd_struct;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
uint8 head; // ֡ͷ
|
||||
uint8 function; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
uint8 channel; // ͨ<><CDA8>
|
||||
uint8 check_sum; // <20><>У<EFBFBD><D0A3>
|
||||
float data; // <20><><EFBFBD><EFBFBD>
|
||||
}seekfree_assistant_parameter_struct;
|
||||
uint8 x;
|
||||
uint8 y;
|
||||
}seekfree_assistant_camera_boundary_uint8_struct;
|
||||
|
||||
|
||||
typedef struct
|
||||
{
|
||||
uint8 x;
|
||||
uint8 y;
|
||||
}seekfree_assistant_camera_boundary_uint16_struct;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
float data[SEEKFREE_ASSISTANT_DEBUG_PARAM_MAX] ;
|
||||
uint8 update_flag[SEEKFREE_ASSISTANT_DEBUG_PARAM_MAX] ;
|
||||
}seekfree_assistant_debug_param_struct;
|
||||
|
||||
typedef uint32 (*seekfree_assistant_transfer_callback_function) (const uint8 *buff, uint32 length);
|
||||
typedef uint32 (*seekfree_assistant_receive_callback_function) (uint8 *buff, uint32 length);
|
||||
|
||||
extern seekfree_assistant_oscilloscope_struct seekfree_assistant_oscilloscope_data; // <20><><EFBFBD><EFBFBD>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
extern float seekfree_assistant_parameter[SEEKFREE_ASSISTANT_SET_PARAMETR_COUNT]; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>յ<EFBFBD><D5B5>IJ<EFBFBD><EFBFBD><EFBFBD>
|
||||
extern vuint8 seekfree_assistant_parameter_update_flag[SEEKFREE_ASSISTANT_SET_PARAMETR_COUNT]; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>±<EFBFBD>־λ
|
||||
|
||||
|
||||
void seekfree_assistant_oscilloscope_send (seekfree_assistant_oscilloscope_struct *seekfree_assistant_oscilloscope);
|
||||
void seekfree_assistant_camera_information_config (seekfree_assistant_image_type_enum camera_type, void *image_addr, uint16 width, uint16 height);
|
||||
void seekfree_assistant_camera_boundary_config (seekfree_assistant_boundary_type_enum boundary_type, uint16 dot_num, void *dot_x1, void *dot_x2, void *dot_x3, void *dot_y1, void *dot_y2, void *dot_y3);
|
||||
void seekfree_assistant_camera_send (void);
|
||||
void seekfree_assistant_data_analysis (void);
|
||||
//-------------------------------------------------------------------------------------------------------------------
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> CCD ͼ<><CDBC> <20><EFBFBD><EFBFBD><EFBFBD>
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> *ccd_obj CCD <20><><EFBFBD>ݽṹ<DDBD><E1B9B9>
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> data_type <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> seekfree_assistant_data_type_enum
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> channel_index CCD ͨ<><CDA8>
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> channel_color ͨ<><CDA8>Ҫʹ<D2AA>õ<EFBFBD><C3B5><EFBFBD>ɫ
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> data_lenght CCD <20><><EFBFBD>ݳ<EFBFBD><DDB3><EFBFBD>
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> *data_buffer CCD <20><><EFBFBD>ݻ<EFBFBD><DDBB><EFBFBD><EFBFBD><EFBFBD>
|
||||
// <20><><EFBFBD>ز<EFBFBD><D8B2><EFBFBD> void
|
||||
// ʹ<><CAB9>ʾ<EFBFBD><CABE> seekfree_assistant_ccd_config(ccd_obj, data_type, channel_index, channel_color, data_lenght, data_buffer);
|
||||
//-------------------------------------------------------------------------------------------------------------------
|
||||
void seekfree_assistant_ccd_config (
|
||||
seekfree_assistant_ccd_struct *ccd_obj,
|
||||
seekfree_assistant_data_type_enum data_type,
|
||||
uint8 channel_index,
|
||||
uint16 channel_color,
|
||||
uint16 data_lenght,
|
||||
void *data_buffer);
|
||||
|
||||
//-------------------------------------------------------------------------------------------------------------------
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> CCD ͼ<><CDBC> <20><><EFBFBD>ͺ<EFBFBD><CDBA><EFBFBD>
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> *ccd_obj CCD <20><><EFBFBD>ݽṹ<DDBD><E1B9B9>
|
||||
// <20><><EFBFBD>ز<EFBFBD><D8B2><EFBFBD> void
|
||||
// ʹ<><CAB9>ʾ<EFBFBD><CABE> seekfree_assistant_ccd_send(ccd_obj);
|
||||
//-------------------------------------------------------------------------------------------------------------------
|
||||
void seekfree_assistant_ccd_send (seekfree_assistant_ccd_struct *ccd_obj);
|
||||
|
||||
//-------------------------------------------------------------------------------------------------------------------
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> CAMERA ͼ<><CDBC> <20><><EFBFBD><EFBFBD>
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> *camera_obj CAMERA <20><><EFBFBD>ݽṹ<DDBD><E1B9B9>
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> camera_type CAMERA <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> seekfree_assistant_camera_type_enum
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> image_width CAMERA ͼ<><CDBC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> image_height CAMERA ͼ<><CDBC><EFBFBD>߶<EFBFBD>
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> *data_buffer CAMERA ͼ<><EFBFBD><F1BBBAB3><EFBFBD>
|
||||
// <20><><EFBFBD>ز<EFBFBD><D8B2><EFBFBD> void
|
||||
// ʹ<><CAB9>ʾ<EFBFBD><CABE> seekfree_assistant_camera_config(camera_obj, camera_type, image_width, image_height, data_buffer);
|
||||
//-------------------------------------------------------------------------------------------------------------------
|
||||
void seekfree_assistant_camera_config (
|
||||
seekfree_assistant_camera_struct *camera_obj,
|
||||
seekfree_assistant_camera_type_enum camera_type,
|
||||
uint16 image_width,
|
||||
uint16 image_height,
|
||||
void *data_buffer);
|
||||
|
||||
//-------------------------------------------------------------------------------------------------------------------
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> CAMERA ͼ<><CDBC> <20><><EFBFBD>ͺ<EFBFBD><CDBA><EFBFBD>
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> *camera_obj CAMERA <20><><EFBFBD>ݽṹ<DDBD><E1B9B9>
|
||||
// <20><><EFBFBD>ز<EFBFBD><D8B2><EFBFBD> void
|
||||
// ʹ<><CAB9>ʾ<EFBFBD><CABE> seekfree_assistant_camera_send(camera_obj);
|
||||
//-------------------------------------------------------------------------------------------------------------------
|
||||
void seekfree_assistant_camera_send (seekfree_assistant_camera_struct *camera_obj);
|
||||
|
||||
//-------------------------------------------------------------------------------------------------------------------
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> CAMERA <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> *camera_boundary_obj CAMERA <20><><EFBFBD><EFBFBD> <20><><EFBFBD>ݽṹ<DDBD><E1B9B9>
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> data_type <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> seekfree_assistant_data_type_enum
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> color Ҫʹ<D2AA>õ<EFBFBD><C3B5><EFBFBD>ɫ
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> boundary_lenght CAMERA <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> *data_buffer CAMERA <20><><EFBFBD><EFBFBD> ͼ<><EFBFBD><F1BBBAB3><EFBFBD>
|
||||
// <20><><EFBFBD>ز<EFBFBD><D8B2><EFBFBD> void
|
||||
// ʹ<><CAB9>ʾ<EFBFBD><CABE> seekfree_assistant_camera_boundary_config(camera_boundary_obj, data_type, color, boundary_lenght, data_buffer);
|
||||
//-------------------------------------------------------------------------------------------------------------------
|
||||
void seekfree_assistant_camera_boundary_config (
|
||||
seekfree_assistant_camera_boundary_struct *camera_boundary_obj,
|
||||
seekfree_assistant_data_type_enum data_type,
|
||||
uint16 color,
|
||||
uint16 boundary_lenght,
|
||||
void *data_buffer);
|
||||
|
||||
//-------------------------------------------------------------------------------------------------------------------
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> CAMERA <20><><EFBFBD><EFBFBD> <20><><EFBFBD>ͺ<EFBFBD><CDBA><EFBFBD>
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> *camera_boundary_obj CAMERA <20><><EFBFBD><EFBFBD> <20><><EFBFBD>ݽṹ<DDBD><E1B9B9>
|
||||
// <20><><EFBFBD>ز<EFBFBD><D8B2><EFBFBD> void
|
||||
// ʹ<><CAB9>ʾ<EFBFBD><CABE> seekfree_assistant_camera_boundary_send(camera_boundary_obj);
|
||||
//-------------------------------------------------------------------------------------------------------------------
|
||||
void seekfree_assistant_camera_boundary_send (seekfree_assistant_camera_boundary_struct *camera_boundary_obj);
|
||||
|
||||
//-------------------------------------------------------------------------------------------------------------------
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> CAMERA <20><><EFBFBD>ο<EFBFBD><CEBF><EFBFBD> <20><><EFBFBD>ͺ<EFBFBD><CDBA><EFBFBD>
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> x X <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> y Y <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> width <20><><EFBFBD>ο<EFBFBD><CEBF><EFBFBD>
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> height <20><><EFBFBD>θ߶<CEB8>
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> color <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɫ
|
||||
// <20><><EFBFBD>ز<EFBFBD><D8B2><EFBFBD> void
|
||||
// ʹ<><CAB9>ʾ<EFBFBD><CABE> seekfree_assistant_camera_rectangular_send(x, y, width, height, color);
|
||||
//-------------------------------------------------------------------------------------------------------------------
|
||||
void seekfree_assistant_camera_rectangular_send (uint16 x, uint16 y, uint16 width, uint16 height, uint16 color);
|
||||
|
||||
//-------------------------------------------------------------------------------------------------------------------
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> *oscilloscope_obj ʾ<><CABE><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݽṹ<DDBD><E1B9B9>
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> channel_max <20><><EFBFBD><EFBFBD>ͨ<EFBFBD><CDA8><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>Χ<EFBFBD><CEA7> [1, 16] <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Χ<EFBFBD><CEA7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><DEB5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Χ
|
||||
// <20><><EFBFBD>ز<EFBFBD><D8B2><EFBFBD> void
|
||||
// ʹ<><CAB9>ʾ<EFBFBD><CABE> seekfree_assistant_oscilloscope_config(oscilloscope_obj, 16);
|
||||
//-------------------------------------------------------------------------------------------------------------------
|
||||
void seekfree_assistant_oscilloscope_config (
|
||||
seekfree_assistant_oscilloscope_struct *oscilloscope_obj,
|
||||
uint8 channel_max,
|
||||
void *data_buffer);
|
||||
|
||||
//-------------------------------------------------------------------------------------------------------------------
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD> <20><><EFBFBD>ͺ<EFBFBD><CDBA><EFBFBD>
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> *seekfree_assistant_oscilloscope ʾ<><CABE><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݽṹ<DDBD><E1B9B9>
|
||||
// <20><><EFBFBD>ز<EFBFBD><D8B2><EFBFBD> void
|
||||
// ʹ<><CAB9>ʾ<EFBFBD><CABE> seekfree_assistant_oscilloscope_send(&seekfree_assistant_oscilloscope_data);
|
||||
//-------------------------------------------------------------------------------------------------------------------
|
||||
void seekfree_assistant_oscilloscope_send (seekfree_assistant_oscilloscope_struct *oscilloscope_obj);
|
||||
|
||||
#if (SEEKFREE_ASSISTANT_DEBUG_PARAM_ENABLE)
|
||||
//-------------------------------------------------------------------------------------------------------------------
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD> <20><><EFBFBD>ͺ<EFBFBD><CDBA><EFBFBD>
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> *debug_param_obj ʾ<><CABE><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݽṹ<DDBD><E1B9B9>
|
||||
// <20><><EFBFBD>ز<EFBFBD><D8B2><EFBFBD> void
|
||||
// ʹ<><CAB9>ʾ<EFBFBD><CABE> seekfree_assistant_oscilloscope_send(&seekfree_assistant_oscilloscope_data);
|
||||
//-------------------------------------------------------------------------------------------------------------------
|
||||
void seekfree_assistant_debug_param_analysis (seekfree_assistant_debug_param_struct *debug_param_obj);
|
||||
#endif
|
||||
|
||||
#endif
|
||||
|
||||
@@ -1,20 +1,20 @@
|
||||
/*********************************************************************************************************************
|
||||
* 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>
|
||||
* RT1064DVL6A Opensourec Library <20><><EFBFBD><EFBFBD>RT1064DVL6A <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><C4BC><EFBFBD> RT1064DVL6A <20><>Դ<EFBFBD><D4B4><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD>
|
||||
*
|
||||
* RT1064DVL6A <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>
|
||||
@@ -24,23 +24,20 @@
|
||||
* <20>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD><EFBFBD> seekfree_assistant_interface
|
||||
* <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.10.2
|
||||
* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ADS v1.9.4
|
||||
* <20><><EFBFBD><EFBFBD>ƽ̨ TC264D
|
||||
* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> https://seekfree.taobao.com/
|
||||
*
|
||||
*
|
||||
* <20>ļ<DEB8>¼
|
||||
* <20><><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>ע
|
||||
* 2024-01-01 pudding first version
|
||||
* <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><>ע
|
||||
* 2024-1-11 SeekFree first version
|
||||
********************************************************************************************************************/
|
||||
|
||||
#include "zf_common_typedef.h"
|
||||
#include "zf_common_fifo.h"
|
||||
#include "zf_common_debug.h"
|
||||
#include "zf_driver_uart.h"
|
||||
|
||||
#include "zf_device_wireless_uart.h"
|
||||
#include "zf_device_ble6a20.h"
|
||||
#include "zf_device_bluetooth_ch9141.h"
|
||||
#include "zf_device_wifi_uart.h"
|
||||
#include "zf_device_wifi_spi.h"
|
||||
#include "seekfree_assistant.h"
|
||||
|
||||
@@ -50,7 +47,6 @@
|
||||
extern seekfree_assistant_transfer_callback_function seekfree_assistant_transfer_callback; // <20><><EFBFBD>ݷ<EFBFBD><DDB7>ͺ<EFBFBD><CDBA><EFBFBD>ָ<EFBFBD><D6B8>
|
||||
extern seekfree_assistant_receive_callback_function seekfree_assistant_receive_callback; // <20><><EFBFBD>ݽ<EFBFBD><DDBD>պ<EFBFBD><D5BA><EFBFBD>ָ<EFBFBD><D6B8>
|
||||
|
||||
|
||||
//-------------------------------------------------------------------------------------------------------------------
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ַ<EFBFBD><D6B7>ͺ<EFBFBD><CDBA><EFBFBD>
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> *buff <20><>Ҫ<EFBFBD><D2AA><EFBFBD>͵<EFBFBD><CDB5><EFBFBD><EFBFBD>ݵ<EFBFBD>ַ
|
||||
@@ -58,7 +54,7 @@ extern seekfree_assistant_receive_callback_function seekfree_assistant_receiv
|
||||
// <20><><EFBFBD>ز<EFBFBD><D8B2><EFBFBD> uint32 ʣ<><CAA3>δ<EFBFBD><CEB4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݳ<EFBFBD><DDB3><EFBFBD>
|
||||
// ʹ<><CAB9>ʾ<EFBFBD><CABE>
|
||||
//-------------------------------------------------------------------------------------------------------------------
|
||||
ZF_WEAK uint32 seekfree_assistant_transfer (const uint8 *buff, uint32 length)
|
||||
uint32 seekfree_assistant_transfer (const uint8 *buff, uint32 length)
|
||||
{
|
||||
|
||||
// <20><>ѡ<EFBFBD><D1A1><EFBFBD>Զ<EFBFBD><D4B6><EFBFBD>ͨѶ<CDA8><D1B6>ʽʱ <20><>Ҫ<EFBFBD><D2AA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݷ<EFBFBD><DDB7><EFBFBD><CDB9><EFBFBD>
|
||||
@@ -72,7 +68,7 @@ ZF_WEAK uint32 seekfree_assistant_transfer (const uint8 *buff, uint32 length)
|
||||
// <20><><EFBFBD>ز<EFBFBD><D8B2><EFBFBD> uint32 <20><><EFBFBD>յ<EFBFBD><D5B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݳ<EFBFBD><DDB3><EFBFBD>
|
||||
// ʹ<><CAB9>ʾ<EFBFBD><CABE>
|
||||
//-------------------------------------------------------------------------------------------------------------------
|
||||
ZF_WEAK uint32 seekfree_assistant_receive (uint8 *buff, uint32 length)
|
||||
uint32 seekfree_assistant_receive (uint8 *buff, uint32 length)
|
||||
{
|
||||
// <20><>ѡ<EFBFBD><D1A1><EFBFBD>Զ<EFBFBD><D4B6><EFBFBD>ͨѶ<CDA8><D1B6>ʽʱ <20><>Ҫ<EFBFBD><D2AA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݽ<EFBFBD><DDBD>չ<EFBFBD><D5B9><EFBFBD>
|
||||
return 0;
|
||||
@@ -85,54 +81,45 @@ ZF_WEAK uint32 seekfree_assistant_receive (uint8 *buff, uint32 length)
|
||||
// ʹ<><CAB9>ʾ<EFBFBD><CABE> seekfree_assistant_interface_init(SEEKFREE_ASSISTANT_WIFI_SPI); ʹ<>ø<EFBFBD><C3B8><EFBFBD>WIFI SPIģ<49><C4A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>շ<EFBFBD>
|
||||
// <20><>ע <20><>Ҫ<EFBFBD><D2AA><EFBFBD>е<EFBFBD><D0B5><EFBFBD><EFBFBD>豸<EFBFBD>ij<EFBFBD>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʹ<EFBFBD><CAB9><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ת<EFBFBD><D7AA><EFBFBD>ڽ<EFBFBD><DABD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݵ<EFBFBD><DDB5>շ<EFBFBD><D5B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ҫ<EFBFBD><D2AA><EFBFBD>е<EFBFBD><D0B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ת<EFBFBD><D7AA><EFBFBD>ڵij<DAB5>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD>Ȼ<EFBFBD><C8BB><EFBFBD>ٵ<EFBFBD><D9B5><EFBFBD>seekfree_assistant_interface_init<69><74><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵĽӿڳ<D3BF>ʼ<EFBFBD><CABC>
|
||||
//-------------------------------------------------------------------------------------------------------------------
|
||||
ZF_WEAK void seekfree_assistant_interface_init (seekfree_assistant_transfer_device_enum transfer_device)
|
||||
void seekfree_assistant_interface_init (seekfree_assistant_transfer_device_enum transfer_device)
|
||||
{
|
||||
switch(transfer_device)
|
||||
{
|
||||
case SEEKFREE_ASSISTANT_DEBUG_UART:
|
||||
{
|
||||
#if DEBUG_UART_USE_INTERRUPT == 1
|
||||
seekfree_assistant_transfer_callback = debug_send_buffer;
|
||||
seekfree_assistant_receive_callback = debug_read_ring_buffer;
|
||||
#endif
|
||||
}break;
|
||||
|
||||
|
||||
case SEEKFREE_ASSISTANT_WIRELESS_UART:
|
||||
{
|
||||
seekfree_assistant_transfer_callback = wireless_uart_send_buffer;
|
||||
seekfree_assistant_receive_callback = wireless_uart_read_buffer;
|
||||
}break;
|
||||
|
||||
case SEEKFREE_ASSISTANT_BLE6A20:
|
||||
{
|
||||
seekfree_assistant_transfer_callback = ble6a20_send_buffer;
|
||||
seekfree_assistant_receive_callback = ble6a20_read_buffer;
|
||||
}break;
|
||||
|
||||
case SEEKFREE_ASSISTANT_CH9141:
|
||||
{
|
||||
seekfree_assistant_transfer_callback = bluetooth_ch9141_send_buffer;
|
||||
seekfree_assistant_receive_callback = bluetooth_ch9141_read_buffer;
|
||||
}break;
|
||||
|
||||
case SEEKFREE_ASSISTANT_WIFI_UART:
|
||||
{
|
||||
seekfree_assistant_transfer_callback = wifi_uart_send_buffer;
|
||||
seekfree_assistant_receive_callback = wifi_uart_read_buffer;
|
||||
}break;
|
||||
|
||||
// case SEEKFREE_ASSISTANT_CH9141:
|
||||
// {
|
||||
// seekfree_assistant_transfer_callback = bluetooth_ch9141_send_buffer;
|
||||
// seekfree_assistant_receive_callback = bluetooth_ch9141_read_buffer;
|
||||
// }break;
|
||||
|
||||
// case SEEKFREE_ASSISTANT_WIFI_UART:
|
||||
// {
|
||||
// seekfree_assistant_transfer_callback = wifi_uart_send_buffer;
|
||||
// seekfree_assistant_receive_callback = wifi_uart_read_buffer;
|
||||
// }break;
|
||||
|
||||
case SEEKFREE_ASSISTANT_WIFI_SPI:
|
||||
{
|
||||
seekfree_assistant_transfer_callback = wifi_spi_send_buffer;
|
||||
seekfree_assistant_receive_callback = wifi_spi_read_buffer;
|
||||
}break;
|
||||
|
||||
case SEEKFREE_ASSISTANT_CUSTOM:
|
||||
{
|
||||
|
||||
default:
|
||||
{
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD>Լ<EFBFBD><D4BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>ʵ<EFBFBD><CAB5>seekfree_assistant_transfer<65><72>seekfree_assistant_receive<76><65><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݵ<EFBFBD><DDB5>շ<EFBFBD>
|
||||
|
||||
seekfree_assistant_transfer_callback = seekfree_assistant_transfer;
|
||||
seekfree_assistant_receive_callback = seekfree_assistant_receive;
|
||||
}break;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -1,20 +1,20 @@
|
||||
/*********************************************************************************************************************
|
||||
* 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>
|
||||
* RT1064DVL6A Opensourec Library <20><><EFBFBD><EFBFBD>RT1064DVL6A <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><C4BC><EFBFBD> RT1064DVL6A <20><>Դ<EFBFBD><D4B4><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD>
|
||||
*
|
||||
* RT1064DVL6A <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>
|
||||
@@ -24,13 +24,13 @@
|
||||
* <20>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD><EFBFBD> seekfree_assistant_interface
|
||||
* <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.10.2
|
||||
* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ADS v1.9.4
|
||||
* <20><><EFBFBD><EFBFBD>ƽ̨ TC264D
|
||||
* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> https://seekfree.taobao.com/
|
||||
*
|
||||
*
|
||||
* <20>ļ<DEB8>¼
|
||||
* <20><><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>ע
|
||||
* 2024-01-01 pudding first version
|
||||
* <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><>ע
|
||||
* 2024-1-11 SeekFree first version
|
||||
********************************************************************************************************************/
|
||||
|
||||
#ifndef _seekfree_assistant_interface_h_
|
||||
@@ -43,7 +43,6 @@ typedef enum
|
||||
{
|
||||
SEEKFREE_ASSISTANT_DEBUG_UART, // <20><><EFBFBD>Դ<EFBFBD><D4B4><EFBFBD> ʹ<>õĴ<C3B5><C4B4><EFBFBD><EFBFBD><EFBFBD>DEBUG_UART_INDEX<45>궨<EFBFBD><EAB6A8>ָ<EFBFBD><D6B8>
|
||||
SEEKFREE_ASSISTANT_WIRELESS_UART, // <20><><EFBFBD><EFBFBD>ת<EFBFBD><D7AA><EFBFBD><EFBFBD>
|
||||
SEEKFREE_ASSISTANT_BLE6A20, // <20><><EFBFBD><EFBFBD>ת<EFBFBD><D7AA><EFBFBD><EFBFBD>
|
||||
SEEKFREE_ASSISTANT_CH9141, // CH9141<34><31><EFBFBD><EFBFBD>
|
||||
SEEKFREE_ASSISTANT_WIFI_UART, // WIFIת<49><D7AA><EFBFBD><EFBFBD>
|
||||
SEEKFREE_ASSISTANT_WIFI_SPI, // <20><><EFBFBD><EFBFBD>WIFI SPI
|
||||
|
||||
@@ -62,7 +62,7 @@
|
||||
//====================================================<3D><><EFBFBD><EFBFBD> SPI <20><><EFBFBD><EFBFBD>====================================================
|
||||
#else
|
||||
//====================================================Ӳ<><D3B2> SPI <20><><EFBFBD><EFBFBD>====================================================
|
||||
#define ABSOLUTE_ENCODER_SPI_SPEED (10*1000*1000) // Ӳ<><D3B2> SPI <20><><EFBFBD><EFBFBD>
|
||||
#define ABSOLUTE_ENCODER_SPI_SPEED (8*1000*1000) // Ӳ<><D3B2> SPI <20><><EFBFBD><EFBFBD>
|
||||
#define ABSOLUTE_ENCODER_SPI (SPI_0) // Ӳ<><D3B2> SPI <20><>
|
||||
#define ABSOLUTE_ENCODER_SCLK_PIN (SPI0_SCLK_P20_11) // Ӳ<><D3B2> SPI SCK <20><><EFBFBD><EFBFBD>
|
||||
#define ABSOLUTE_ENCODER_MOSI_PIN (SPI0_MOSI_P20_14) // Ӳ<><D3B2> SPI MOSI <20><><EFBFBD><EFBFBD>
|
||||
@@ -70,7 +70,7 @@
|
||||
//====================================================Ӳ<><D3B2> SPI <20><><EFBFBD><EFBFBD>====================================================
|
||||
#endif
|
||||
|
||||
#define ABSOLUTE_ENCODER_CS_PIN (P20_13) // CS<43><53><EFBFBD>Ŷ<EFBFBD><C5B6><EFBFBD>
|
||||
#define ABSOLUTE_ENCODER_CS_PIN (P00_8) // CS<43><53><EFBFBD>Ŷ<EFBFBD><C5B6><EFBFBD>
|
||||
#define ABSOLUTE_ENCODER_CSN(x) ((x) ? (gpio_high(ABSOLUTE_ENCODER_CS_PIN)): (gpio_low(ABSOLUTE_ENCODER_CS_PIN)))
|
||||
|
||||
#define ABSOLUTE_ENCODER_TIMEOUT_COUNT (100) // <20>Լ쳬ʱʱ<CAB1><CAB1>
|
||||
|
||||
@@ -76,7 +76,7 @@
|
||||
// 1<><31><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Զ<EFBFBD><D4B6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>Զ<EFBFBD><D4B6><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʵ<EFBFBD><CAB5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> BLE6A20_BAUD ֮<><D6AE><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ҫ<EFBFBD><D2AA>ģ<EFBFBD><C4A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ģ<><C4A3><EFBFBD><EFBFBD><EFBFBD>Զ<EFBFBD><D4B6><EFBFBD><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA>Ӧ<EFBFBD>IJ<EFBFBD><C4B2><EFBFBD><EFBFBD><EFBFBD>
|
||||
// <20>Զ<EFBFBD><D4B6><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʽ<EFBFBD>֧<EFBFBD><D6A7> 9600 57600 115200 230400 460800 921600 1500000 2000000
|
||||
|
||||
#define BLE6A20_AUTO_BAUD_RATE ( 0 )
|
||||
#define BLE6A20_AUTO_BAUD_RATE ( 1 )
|
||||
|
||||
#if (1 == BLE6A20_AUTO_BAUD_RATE)
|
||||
typedef enum
|
||||
|
||||
@@ -0,0 +1,563 @@
|
||||
/*********************************************************************************************************************
|
||||
* RT1064DVL6A Opensourec Library <20><><EFBFBD><EFBFBD>RT1064DVL6A <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> RT1064DVL6A <20><>Դ<EFBFBD><D4B4><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD>
|
||||
*
|
||||
* RT1064DVL6A <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_imu660rc
|
||||
* <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.10.2
|
||||
* <20><><EFBFBD><EFBFBD>ƽ̨ TC264
|
||||
* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> https://seekfree.taobao.com/
|
||||
*
|
||||
* <20>ļ<DEB8>¼
|
||||
* <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><>ע
|
||||
* 2025-12-12 SeekFree first version
|
||||
********************************************************************************************************************/
|
||||
/*********************************************************************************************************************
|
||||
* <20><><EFBFBD>߶<EFBFBD><DFB6>壺
|
||||
* ------------------------------------
|
||||
* ģ<><C4A3><EFBFBD>ܽ<EFBFBD> <20><>Ƭ<EFBFBD><C6AC><EFBFBD>ܽ<EFBFBD>
|
||||
* // Ӳ<><D3B2> SPI <20><><EFBFBD><EFBFBD>
|
||||
* SCL/SPC <20>鿴 zf_device_imu660rc.h <20><> IMU660RC_SPC_PIN <20>궨<EFBFBD><EAB6A8>
|
||||
* SDA/DSI <20>鿴 zf_device_imu660rc.h <20><> IMU660RC_SDI_PIN <20>궨<EFBFBD><EAB6A8>
|
||||
* SA0/SDO <20>鿴 zf_device_imu660rc.h <20><> IMU660RC_SDO_PIN <20>궨<EFBFBD><EAB6A8>
|
||||
* CS <20>鿴 zf_device_imu660rc.h <20><> IMU660RC_CS_PIN <20>궨<EFBFBD><EAB6A8>
|
||||
* INT2 <20>鿴 zf_device_imu660rc.h <20><> IMU660RC_INT2_PIN <20>궨<EFBFBD><EAB6A8>
|
||||
* VCC 3.3V<EFBFBD><EFBFBD>Դ
|
||||
* GND <20><>Դ<EFBFBD><D4B4>
|
||||
* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
*
|
||||
* // <20><><EFBFBD><EFBFBD> IIC <20><><EFBFBD><EFBFBD>
|
||||
* SCL/SPC <20>鿴 zf_device_imu660rc.h <20><> IMU660RC_SCL_PIN <20>궨<EFBFBD><EAB6A8>
|
||||
* SDA/DSI <20>鿴 zf_device_imu660rc.h <20><> IMU660RC_SDA_PIN <20>궨<EFBFBD><EAB6A8>
|
||||
* VCC 3.3V<EFBFBD><EFBFBD>Դ
|
||||
* GND <20><>Դ<EFBFBD><D4B4>
|
||||
* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
* ------------------------------------
|
||||
********************************************************************************************************************/
|
||||
|
||||
|
||||
#include "math.h"
|
||||
#include "zf_common_debug.h"
|
||||
#include "zf_driver_delay.h"
|
||||
#include "zf_driver_spi.h"
|
||||
#include "zf_driver_gpio.h"
|
||||
#include "zf_driver_soft_iic.h"
|
||||
#include "zf_device_config.h"
|
||||
#include "zf_driver_uart.h"
|
||||
#include "zf_driver_exti.h"
|
||||
|
||||
#include "zf_device_imu660rc.h"
|
||||
|
||||
#ifndef M_PI
|
||||
#define M_PI 3.1415926f
|
||||
#endif
|
||||
|
||||
|
||||
static uint8 imu660rc_quarternion_rate;
|
||||
|
||||
float imu660rc_transition_factor[2];
|
||||
int16 imu660rc_gyro_x = 0, imu660rc_gyro_y = 0, imu660rc_gyro_z = 0; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> gyro (<28><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>)
|
||||
int16 imu660rc_acc_x = 0, imu660rc_acc_y = 0, imu660rc_acc_z = 0; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ٶȼ<D9B6><C8BC><EFBFBD><EFBFBD><EFBFBD> acc (accelerometer <20><><EFBFBD>ٶȼ<D9B6>)
|
||||
float imu660rc_roll = 0, imu660rc_pitch = 0, imu660rc_yaw = 0; // ŷ<><C5B7><EFBFBD><EFBFBD>
|
||||
float imu660rc_quarternion[4]; // <20><>Ԫ<EFBFBD><D4AA>
|
||||
|
||||
|
||||
|
||||
#if IMU660RC_USE_SOFT_IIC
|
||||
static soft_iic_info_struct imu660rc_iic_struct;
|
||||
|
||||
#define imu660rc_write_register(reg, data) (soft_iic_write_8bit_register (&imu660rc_iic_struct, (reg), (data)))
|
||||
#define imu660rc_write_registers(reg, data, len) (soft_iic_write_8bit_registers(&imu660rc_iic_struct, (reg), (data), (len)))
|
||||
#define imu660rc_read_register(reg) (soft_iic_read_8bit_register (&imu660rc_iic_struct, (reg)))
|
||||
#define imu660rc_read_registers(reg, data, len) (soft_iic_read_8bit_registers (&imu660rc_iic_struct, (reg), (data), (len)))
|
||||
#else
|
||||
//-------------------------------------------------------------------------------------------------------------------
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> IMU660RC д<>Ĵ<EFBFBD><C4B4><EFBFBD>
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> reg <20>Ĵ<EFBFBD><C4B4><EFBFBD><EFBFBD><EFBFBD>ַ
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> data <20><><EFBFBD><EFBFBD>
|
||||
// <20><><EFBFBD>ز<EFBFBD><D8B2><EFBFBD> void
|
||||
// ʹ<><CAB9>ʾ<EFBFBD><CABE>
|
||||
// <20><>ע<EFBFBD><D7A2>Ϣ <20>ڲ<EFBFBD><DAB2><EFBFBD><EFBFBD><EFBFBD>
|
||||
//-------------------------------------------------------------------------------------------------------------------
|
||||
static void imu660rc_write_register (uint8 reg, uint8 data)
|
||||
{
|
||||
IMU660RC_CS(0);
|
||||
spi_write_8bit_register(IMU660RC_SPI, reg | IMU660RC_SPI_W, data);
|
||||
IMU660RC_CS(1);
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------------------------------------------------------
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> IMU660RC <20><><EFBFBD>Ĵ<EFBFBD><C4B4><EFBFBD>
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> reg <20>Ĵ<EFBFBD><C4B4><EFBFBD><EFBFBD><EFBFBD>ַ
|
||||
// <20><><EFBFBD>ز<EFBFBD><D8B2><EFBFBD> uint8 <20><><EFBFBD><EFBFBD>
|
||||
// ʹ<><CAB9>ʾ<EFBFBD><CABE> imu660rc_read_register(IMU660RC_CHIP_ID);
|
||||
// <20><>ע<EFBFBD><D7A2>Ϣ <20>ڲ<EFBFBD><DAB2><EFBFBD><EFBFBD><EFBFBD>
|
||||
//-------------------------------------------------------------------------------------------------------------------
|
||||
static uint8 imu660rc_read_register (uint8 reg)
|
||||
{
|
||||
uint8 data;
|
||||
IMU660RC_CS(0);
|
||||
data = spi_read_8bit_register(IMU660RC_SPI, reg | IMU660RC_SPI_R);
|
||||
IMU660RC_CS(1);
|
||||
return data;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------------------------------------------------------
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> IMU660RC <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> reg <20>Ĵ<EFBFBD><C4B4><EFBFBD><EFBFBD><EFBFBD>ַ
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> data <20><><EFBFBD>ݻ<EFBFBD><DDBB><EFBFBD><EFBFBD><EFBFBD>
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> len <20><><EFBFBD>ݳ<EFBFBD><DDB3><EFBFBD>
|
||||
// <20><><EFBFBD>ز<EFBFBD><D8B2><EFBFBD> void
|
||||
// ʹ<><CAB9>ʾ<EFBFBD><CABE> imu660rc_read_registers(IMU660RC_ACC_ADDRESS, dat, 6);
|
||||
// <20><>ע<EFBFBD><D7A2>Ϣ <20>ڲ<EFBFBD><DAB2><EFBFBD><EFBFBD><EFBFBD>
|
||||
//-------------------------------------------------------------------------------------------------------------------
|
||||
static void imu660rc_read_registers (uint8 reg, uint8 *data, uint32 len)
|
||||
{
|
||||
IMU660RC_CS(0);
|
||||
spi_read_8bit_registers(IMU660RC_SPI, reg | IMU660RC_SPI_R, data, len);
|
||||
IMU660RC_CS(1);
|
||||
}
|
||||
#endif
|
||||
|
||||
//-------------------------------------------------------------------------------------------------------------------
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> IMU660RC fp16ת<36><D7AA><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> void
|
||||
// <20><><EFBFBD>ز<EFBFBD><D8B2><EFBFBD> uint8
|
||||
// ʹ<><CAB9>ʾ<EFBFBD><CABE>
|
||||
// <20><>ע<EFBFBD><D7A2>Ϣ <20>ڲ<EFBFBD><DAB2><EFBFBD><EFBFBD><EFBFBD>
|
||||
//-------------------------------------------------------------------------------------------------------------------
|
||||
static uint32 fp16_to_float(uint16 h)
|
||||
{
|
||||
uint16 h_exp = (h & 0x7c00u);
|
||||
uint32 f_sgn = ((uint32)h & 0x8000u) << 16;
|
||||
switch (h_exp)
|
||||
{
|
||||
case 0x0000u: // 0 or subnormal
|
||||
{
|
||||
uint16 h_sig = (h & 0x03ffu);
|
||||
// Signed zero
|
||||
if (h_sig == 0)
|
||||
{
|
||||
return f_sgn;
|
||||
}
|
||||
// Subnormal
|
||||
h_sig <<= 1;
|
||||
while ((h_sig & 0x0400u) == 0)
|
||||
{
|
||||
h_sig <<= 1;
|
||||
h_exp++;
|
||||
}
|
||||
uint32 f_exp = ((uint32)(127 - 15 - h_exp)) << 23;
|
||||
uint32 f_sig = ((uint32)(h_sig & 0x03ffu)) << 13;
|
||||
return f_sgn + f_exp + f_sig;
|
||||
}
|
||||
case 0x7c00u: // inf or NaN
|
||||
{
|
||||
// All-ones exponent and a copy of the significand
|
||||
return f_sgn + 0x7f800000u + (((uint32)(h & 0x03ffu)) << 13);
|
||||
}
|
||||
default: // normalized
|
||||
{
|
||||
// Just need to adjust the exponent and shift
|
||||
return f_sgn + (((uint32)(h & 0x7fffu) + 0x1c000u) << 13);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------------------------------------------------------
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> IMU660RC <20><>Ԫ<EFBFBD><D4AA><EFBFBD><EFBFBD>һ<EFBFBD><D2BB>
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> void
|
||||
// <20><><EFBFBD>ز<EFBFBD><D8B2><EFBFBD> uint8
|
||||
// ʹ<><CAB9>ʾ<EFBFBD><CABE>
|
||||
// <20><>ע<EFBFBD><D7A2>Ϣ <20>ڲ<EFBFBD><DAB2><EFBFBD><EFBFBD><EFBFBD>
|
||||
//-------------------------------------------------------------------------------------------------------------------
|
||||
static void quarternion_normalize(float quat[4], uint16 *fp16)
|
||||
{
|
||||
float n = 0;
|
||||
float temp[4];
|
||||
|
||||
*(uint32 *)(&temp[0]) = fp16_to_float(fp16[0]);
|
||||
*(uint32 *)(&temp[1]) = fp16_to_float(fp16[1]);
|
||||
*(uint32 *)(&temp[2]) = fp16_to_float(fp16[2]);
|
||||
*(uint32 *)(&temp[3]) = fp16_to_float(fp16[3]);
|
||||
|
||||
n = temp[0] * temp[0] + temp[1] * temp[1] + temp[2] * temp[2] + temp[3] * temp[3];
|
||||
n = sqrtf(n);
|
||||
|
||||
if(n > 0.001f) // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Խӽ<D4BD>0<EFBFBD><30>ֵ
|
||||
{
|
||||
n = temp[3] < 0.0f ? -n : n;
|
||||
|
||||
quat[0] = temp[1] / n;
|
||||
quat[1] = temp[2] / n;
|
||||
quat[2] = temp[0] / n;
|
||||
quat[3] = temp[3] / n;
|
||||
}
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------------------------------------------------------
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> IMU660RC <20><>Ԫ<EFBFBD><D4AA>תŷ<D7AA><C5B7><EFBFBD><EFBFBD>
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> void
|
||||
// <20><><EFBFBD>ز<EFBFBD><D8B2><EFBFBD> uint8
|
||||
// ʹ<><CAB9>ʾ<EFBFBD><CABE>
|
||||
// <20><>ע<EFBFBD><D7A2>Ϣ <20>ڲ<EFBFBD><DAB2><EFBFBD><EFBFBD><EFBFBD>
|
||||
//-------------------------------------------------------------------------------------------------------------------
|
||||
static void quarternion_to_euler(float quat[4], float *roll, float *pitch, float *yaw)
|
||||
{
|
||||
float euler[3];
|
||||
|
||||
float sqx = quat[0] * quat[0];
|
||||
float sqy = quat[1] * quat[1];
|
||||
float sqz = quat[2] * quat[2];
|
||||
|
||||
euler[0] = atan2f(2.0f * (quat[1] * quat[3] + quat[0] * quat[2]), 1.0f - 2.0f * (sqy + sqx));
|
||||
euler[1] = -asinf(2.0f * (quat[0] * quat[3] - quat[1] * quat[2]));
|
||||
euler[2] = atan2f(2.0f * (quat[0] * quat[1] + quat[2] * quat[3]), 1.0f - 2.0f * (sqx + sqz));
|
||||
|
||||
// <20><><EFBFBD><EFBFBD>ת<EFBFBD>Ƕ<EFBFBD>
|
||||
euler[0] = 180 * (euler[0]) / M_PI;
|
||||
euler[1] = 180 * (euler[1]) / M_PI;
|
||||
euler[2] = 180 * (euler[2]) / M_PI;
|
||||
|
||||
// <20>Ƕȵ<C7B6><C8B5><EFBFBD>
|
||||
euler[2] = 0 > euler[2] ? euler[2] + 360 : euler[2];
|
||||
|
||||
*roll = euler[0];
|
||||
*pitch = euler[1];
|
||||
*yaw = euler[2];
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------------------------------------------------------
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> IMU660RC <20><><EFBFBD>÷<EFBFBD><C3B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> void
|
||||
// <20><><EFBFBD>ز<EFBFBD><D8B2><EFBFBD> uint8
|
||||
// ʹ<><CAB9>ʾ<EFBFBD><CABE>
|
||||
// <20><>ע<EFBFBD><D7A2>Ϣ <20>ڲ<EFBFBD><DAB2><EFBFBD><EFBFBD><EFBFBD>
|
||||
//-------------------------------------------------------------------------------------------------------------------
|
||||
static void imu660rc_set_mem_bank (imu660rc_mem_bank_enum bank)
|
||||
{
|
||||
imu660rc_write_register(IMU660RC_FUNC_CFG_ACCESS, bank);
|
||||
}
|
||||
|
||||
|
||||
//-------------------------------------------------------------------------------------------------------------------
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> IMU660RC <20>Լ<EFBFBD>
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> void
|
||||
// <20><><EFBFBD>ز<EFBFBD><D8B2><EFBFBD> uint8 1-<2D>Լ<EFBFBD>ʧ<EFBFBD><CAA7> 0-<2D>Լ<EFBFBD><D4BC>ɹ<EFBFBD>
|
||||
// ʹ<><CAB9>ʾ<EFBFBD><CABE> imu660rc_self_check();
|
||||
// <20><>ע<EFBFBD><D7A2>Ϣ <20>ڲ<EFBFBD><DAB2><EFBFBD><EFBFBD><EFBFBD>
|
||||
//-------------------------------------------------------------------------------------------------------------------
|
||||
static uint8 imu660rc_self_check (void)
|
||||
{
|
||||
uint8 dat = 0, return_state = 0;
|
||||
uint16 timeout_count = 0;
|
||||
do
|
||||
{
|
||||
if(IMU660RC_TIMEOUT_COUNT < timeout_count ++)
|
||||
{
|
||||
return_state = 1;
|
||||
break;
|
||||
}
|
||||
dat = imu660rc_read_register(IMU660RC_CHIP_ID);
|
||||
system_delay_ms(1);
|
||||
}while(0x70 != dat); // <20><>ȡ<EFBFBD>豸ID<49>Ƿ<EFBFBD><C7B7><EFBFBD><EFBFBD><EFBFBD>0x70<37><30><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>0x70<37><30><EFBFBD><EFBFBD>Ϊû<CEAA><C3BB><EFBFBD><EFBFBD>豸
|
||||
return return_state;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------------------------------------------------------
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>ȡ IMU660RC <20><><EFBFBD>ٶȼ<D9B6><C8BC><EFBFBD><EFBFBD><EFBFBD>
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> void
|
||||
// <20><><EFBFBD>ز<EFBFBD><D8B2><EFBFBD> void
|
||||
// ʹ<><CAB9>ʾ<EFBFBD><CABE> imu660rc_get_acc(); // ִ<>иú<D0B8><C3BA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֱ<EFBFBD>Ӳ鿴<D3B2><E9BFB4>Ӧ<EFBFBD>ı<EFBFBD><C4B1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
// <20><>ע<EFBFBD><D7A2>Ϣ ʹ<><CAB9> SPI <20>IJɼ<C4B2>ʱ<EFBFBD><CAB1>Ϊ10us
|
||||
//-------------------------------------------------------------------------------------------------------------------
|
||||
void imu660rc_get_acc (void)
|
||||
{
|
||||
int16 dat[3];
|
||||
if(IMU660RC_QUARTERNION_DISABLE == imu660rc_quarternion_rate)
|
||||
{ // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ԫ<EFBFBD><D4AA><EFBFBD>ر<EFBFBD>״̬<D7B4><CCAC>֧<EFBFBD>ֵ<EFBFBD><D6B5>ô˺<C3B4><CBBA><EFBFBD><EFBFBD><EFBFBD> <20><>Ԫ<EFBFBD><D4AA><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ҫ<EFBFBD><D2AA>ȡ<EFBFBD><C8A1><EFBFBD>ٶ<EFBFBD><D9B6><EFBFBD>Ϣ<EFBFBD><CFA2>IMU660RC_QUARTERNION_GET_ACC<43><43><EFBFBD><EFBFBD>Ϊ1
|
||||
imu660rc_read_registers(IMU660RC_OUTX_L_A, (uint8 *)dat, 6);
|
||||
imu660rc_acc_x = dat[0];
|
||||
imu660rc_acc_y = dat[1];
|
||||
imu660rc_acc_z = dat[2];
|
||||
}
|
||||
}
|
||||
//-------------------------------------------------------------------------------------------------------------------
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>ȡ IMU660RC <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> void
|
||||
// <20><><EFBFBD>ز<EFBFBD><D8B2><EFBFBD> void
|
||||
// ʹ<><CAB9>ʾ<EFBFBD><CABE> imu660rc_get_gyro(); // ִ<>иú<D0B8><C3BA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֱ<EFBFBD>Ӳ鿴<D3B2><E9BFB4>Ӧ<EFBFBD>ı<EFBFBD><C4B1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
// <20><>ע<EFBFBD><D7A2>Ϣ ʹ<><CAB9> SPI <20>IJɼ<C4B2>ʱ<EFBFBD><CAB1>Ϊ10us
|
||||
//-------------------------------------------------------------------------------------------------------------------
|
||||
void imu660rc_get_gyro (void)
|
||||
{
|
||||
int16 dat[3];
|
||||
if(IMU660RC_QUARTERNION_DISABLE == imu660rc_quarternion_rate)
|
||||
{ // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ԫ<EFBFBD><D4AA><EFBFBD>ر<EFBFBD>״̬<D7B4><CCAC>֧<EFBFBD>ֵ<EFBFBD><D6B5>ô˺<C3B4><CBBA><EFBFBD><EFBFBD><EFBFBD> <20><>Ԫ<EFBFBD><D4AA><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ҫ<EFBFBD><D2AA>ȡ<EFBFBD><C8A1><EFBFBD>ٶ<EFBFBD><D9B6><EFBFBD>Ϣ<EFBFBD><CFA2>IMU660RC_QUARTERNION_GET_GYRO<52><4F><EFBFBD><EFBFBD>Ϊ1
|
||||
imu660rc_read_registers(IMU660RC_OUTX_L_G, (uint8 *)dat, 6);
|
||||
imu660rc_gyro_x = dat[0];
|
||||
imu660rc_gyro_y = dat[1];
|
||||
imu660rc_gyro_z = dat[2];
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
//-------------------------------------------------------------------------------------------------------------------
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>ȡ IMU660RC <20><>Ԫ<EFBFBD><D4AA><EFBFBD><EFBFBD><EFBFBD>ݲ<EFBFBD>ת<EFBFBD><D7AA>Ϊŷ<CEAA><C5B7><EFBFBD><EFBFBD>
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> void
|
||||
// <20><><EFBFBD>ز<EFBFBD><D8B2><EFBFBD> void
|
||||
// ʹ<><CAB9>ʾ<EFBFBD><CABE> imu660rc_get_quarternion(); // ִ<>иú<D0B8><C3BA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֱ<EFBFBD>Ӳ鿴<D3B2><E9BFB4>Ӧ<EFBFBD>ı<EFBFBD><C4B1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
// <20><>ע<EFBFBD><D7A2>Ϣ <20><>Ҫ<EFBFBD><D2AA>INT2<54><32><EFBFBD>Ŵ<EFBFBD><C5B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>жϵ<D0B6><CFB5>ô˺<C3B4><CBBA><EFBFBD>
|
||||
//
|
||||
//-------------------------------------------------------------------------------------------------------------------
|
||||
void imu660rc_get_quarternion(void)
|
||||
{
|
||||
uint8 i;
|
||||
uint16 buff[4];
|
||||
uint8 *buff1_ptr;
|
||||
int16 *buff2_ptr;
|
||||
|
||||
if(IMU660RC_QUARTERNION_DISABLE != imu660rc_quarternion_rate)
|
||||
{
|
||||
buff1_ptr = (uint8 *)buff;
|
||||
|
||||
imu660rc_set_mem_bank(IMU660RC_EMBED_MEM_BANK);
|
||||
imu660rc_write_register(IMU660RC_PAGE_RW, 0x20);
|
||||
imu660rc_write_register(IMU660RC_PAGE_SEL, 0x31);
|
||||
|
||||
for(i = 0; 8 > i; i++)
|
||||
{
|
||||
imu660rc_write_register(0x08, 0x4C + i);
|
||||
buff1_ptr[i] = imu660rc_read_register(0x09);
|
||||
}
|
||||
|
||||
imu660rc_write_register(IMU660RC_PAGE_RW, 0x0);
|
||||
imu660rc_set_mem_bank(IMU660RC_MAIN_MEM_BANK);
|
||||
|
||||
// <20><>Ԫ<EFBFBD><D4AA><EFBFBD><EFBFBD>һ<EFBFBD><D2BB>
|
||||
quarternion_normalize(imu660rc_quarternion, buff);
|
||||
// <20><>Ԫ<EFBFBD><D4AA>תŷ<D7AA><C5B7><EFBFBD><EFBFBD>
|
||||
quarternion_to_euler(imu660rc_quarternion, &imu660rc_roll, &imu660rc_pitch, &imu660rc_yaw);
|
||||
|
||||
// <20><>ȡ<EFBFBD><C8A1><EFBFBD>ٶ<EFBFBD><D9B6><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ٶ<EFBFBD><D9B6><EFBFBD>Ϣ
|
||||
#if(1 == IMU660RC_QUARTERNION_GET_ACC)
|
||||
{
|
||||
buff2_ptr = (int16 *)buff;
|
||||
imu660rc_read_registers(IMU660RC_OUTX_L_A, (uint8 *)buff2_ptr, 6);
|
||||
imu660rc_acc_x = buff2_ptr[0];
|
||||
imu660rc_acc_y = buff2_ptr[1];
|
||||
imu660rc_acc_z = buff2_ptr[2];
|
||||
}
|
||||
#endif
|
||||
#if(1 == IMU660RC_QUARTERNION_GET_GYRO)
|
||||
{
|
||||
buff2_ptr = (int16 *)buff;
|
||||
imu660rc_read_registers(IMU660RC_OUTX_L_G, (uint8 *)buff2_ptr, 6);
|
||||
imu660rc_gyro_x = buff2_ptr[0];
|
||||
imu660rc_gyro_y = buff2_ptr[1];
|
||||
imu660rc_gyro_z = buff2_ptr[2];
|
||||
}
|
||||
#endif
|
||||
}
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------------------------------------------------------
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> IMU660RC<52>жϻص<CFBB><D8B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ҫ<EFBFBD><D2AA><EFBFBD>ж<EFBFBD><D0B6>ڶ<EFBFBD>ȡ<EFBFBD><C8A1>Ԫ<EFBFBD><D4AA>
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> void
|
||||
// <20><><EFBFBD>ز<EFBFBD><D8B2><EFBFBD> void
|
||||
// ʹ<><CAB9>ʾ<EFBFBD><CABE>
|
||||
// <20><>ע<EFBFBD><D7A2>Ϣ
|
||||
//
|
||||
//-------------------------------------------------------------------------------------------------------------------
|
||||
void imu660rc_callback(void)
|
||||
{
|
||||
imu660rc_get_quarternion();
|
||||
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------------------------------------------------------
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>ʼ<EFBFBD><CABC> IMU660RC
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> quarternion_rate ѡ<><D1A1><EFBFBD><EFBFBD>Ԫ<EFBFBD><D4AA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
// <20><><EFBFBD>ز<EFBFBD><D8B2><EFBFBD> uint8 1-<2D><>ʼ<EFBFBD><CABC>ʧ<EFBFBD><CAA7> 0-<2D><>ʼ<EFBFBD><CABC><EFBFBD>ɹ<EFBFBD>
|
||||
// ʹ<><CAB9>ʾ<EFBFBD><CABE> imu660rc_init(IMU660RC_QUARTERNION_120HZ);
|
||||
// <20><>ע<EFBFBD><D7A2>Ϣ
|
||||
//-------------------------------------------------------------------------------------------------------------------
|
||||
uint8 imu660rc_init(imu660rc_quarternion_rate_config quarternion_rate)
|
||||
{
|
||||
uint8 return_state = 0;
|
||||
|
||||
imu660rc_quarternion_rate = quarternion_rate;
|
||||
#if IMU660RC_USE_SOFT_IIC
|
||||
soft_iic_init(&imu660rc_iic_struct, IMU660RC_DEV_ADDR, IMU660RC_SOFT_IIC_DELAY, IMU660RC_SCL_PIN, IMU660RC_SDA_PIN); // <20><><EFBFBD><EFBFBD> IMU660RC <20><> IIC <20>˿<EFBFBD>
|
||||
|
||||
#else
|
||||
spi_init(IMU660RC_SPI, SPI_MODE0, IMU660RC_SPI_SPEED, IMU660RC_SPC_PIN, IMU660RC_SDI_PIN, IMU660RC_SDO_PIN, SPI_CS_NULL); // <20><><EFBFBD><EFBFBD> IMU660RC <20><> SPI <20>˿<EFBFBD>
|
||||
gpio_init(IMU660RC_CS_PIN, GPO, GPIO_HIGH, GPO_PUSH_PULL); // <20><><EFBFBD><EFBFBD> IMU660RC <20><>CS<43>˿<EFBFBD>
|
||||
#endif
|
||||
|
||||
system_delay_ms(10);
|
||||
|
||||
do
|
||||
{
|
||||
if(imu660rc_self_check()) // IMU660RC <20>Լ<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> IMU660RC <20>Լ<EFBFBD><D4BC><EFBFBD><EFBFBD><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, "imu660rc self check error.");
|
||||
return_state = 1;
|
||||
break;
|
||||
}
|
||||
|
||||
// <20><>λ<EFBFBD><CEBB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
imu660rc_write_register(IMU660RC_FUNC_CFG_ACCESS, 0x04);
|
||||
system_delay_ms(30);
|
||||
|
||||
// <20><><EFBFBD>ÿ<EFBFBD><C3BF><EFBFBD><EFBFBD>¹<EFBFBD><C2B9><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ַ<EFBFBD><D6B7><EFBFBD><EFBFBD>
|
||||
imu660rc_write_register(IMU660RC_CTRL3, 0x44);
|
||||
|
||||
switch(IMU660RC_ACC_SAMPLE_DEFAULT)
|
||||
{
|
||||
default:
|
||||
{
|
||||
zf_log(0, "IMU660RC_ACC_SAMPLE_DEFAULT set error.");
|
||||
return_state = 1;
|
||||
}break;
|
||||
case IMU660RC_ACC_SAMPLE_SGN_2G:
|
||||
{
|
||||
imu660rc_write_register(IMU660RC_CTRL8, 0x00);
|
||||
imu660rc_transition_factor[0] = 16393.44;
|
||||
}break;
|
||||
case IMU660RC_ACC_SAMPLE_SGN_4G:
|
||||
{
|
||||
imu660rc_write_register(IMU660RC_CTRL8, 0x01);
|
||||
imu660rc_transition_factor[0] = 8196.72;
|
||||
}break;
|
||||
case IMU660RC_ACC_SAMPLE_SGN_8G:
|
||||
{
|
||||
imu660rc_write_register(IMU660RC_CTRL8, 0x02);
|
||||
imu660rc_transition_factor[0] = 4098.36;
|
||||
}break;
|
||||
case IMU660RC_ACC_SAMPLE_SGN_16G:
|
||||
{
|
||||
imu660rc_write_register(IMU660RC_CTRL8, 0x03);
|
||||
imu660rc_transition_factor[0] = 2049.18;
|
||||
}break;
|
||||
}
|
||||
if(1 == return_state)
|
||||
{
|
||||
break;
|
||||
}
|
||||
|
||||
switch(IMU660RC_GYRO_SAMPLE_DEFAULT)
|
||||
{
|
||||
default:
|
||||
{
|
||||
zf_log(0, "IMU660RC_GYRO_SAMPLE_DEFAULT set error.");
|
||||
return_state = 1;
|
||||
}break;
|
||||
case IMU660RC_GYRO_SAMPLE_SGN_125DPS:
|
||||
{
|
||||
imu660rc_write_register(IMU660RC_CTRL6, 0x00);
|
||||
imu660rc_transition_factor[1] = 228.5714;
|
||||
}break;
|
||||
case IMU660RC_GYRO_SAMPLE_SGN_250DPS:
|
||||
{
|
||||
imu660rc_write_register(IMU660RC_CTRL6, 0x01);
|
||||
imu660rc_transition_factor[1] = 114.2857;
|
||||
}break;
|
||||
case IMU660RC_GYRO_SAMPLE_SGN_500DPS:
|
||||
{
|
||||
imu660rc_write_register(IMU660RC_CTRL6, 0x02);
|
||||
imu660rc_transition_factor[1] = 57.1428;
|
||||
}break;
|
||||
case IMU660RC_GYRO_SAMPLE_SGN_1000DPS:
|
||||
{
|
||||
imu660rc_write_register(IMU660RC_CTRL6, 0x03);
|
||||
imu660rc_transition_factor[1] = 28.5714;
|
||||
}break;
|
||||
case IMU660RC_GYRO_SAMPLE_SGN_2000DPS:
|
||||
{
|
||||
imu660rc_write_register(IMU660RC_CTRL6, 0x04);
|
||||
imu660rc_transition_factor[1] = 14.2857;
|
||||
}break;
|
||||
case IMU660RC_GYRO_SAMPLE_SGN_4000DPS:
|
||||
{
|
||||
imu660rc_write_register(IMU660RC_CTRL6, 0x0C);
|
||||
imu660rc_transition_factor[1] = 7.14285;
|
||||
}break;
|
||||
}
|
||||
if(1 == return_state)
|
||||
{
|
||||
break;
|
||||
}
|
||||
|
||||
// <20><><EFBFBD>ô<EFBFBD><C3B4><EFBFBD><EFBFBD><EFBFBD>ģʽ<C4A3><CABD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ<EFBFBD>߾<EFBFBD><DFBE><EFBFBD>ģʽ<C4A3>Լ<EFBFBD><D4BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
imu660rc_write_register(IMU660RC_CTRL1, 0x15);
|
||||
imu660rc_write_register(IMU660RC_CTRL2, 0x18);
|
||||
|
||||
// <20><><EFBFBD><EFBFBD>LPF1<46>˲<EFBFBD><CBB2><EFBFBD>
|
||||
imu660rc_write_register(IMU660RC_CTRL7, 0x01);
|
||||
|
||||
// <20><><EFBFBD><EFBFBD>LPF2<46>˲<EFBFBD><CBB2><EFBFBD>
|
||||
imu660rc_write_register(IMU660RC_CTRL9, 0x08);
|
||||
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ԫ<EFBFBD><D4AA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ӧ<EFBFBD><D3A6><EFBFBD><EFBFBD>
|
||||
if(IMU660RC_QUARTERNION_DISABLE != quarternion_rate)
|
||||
{
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD>жϴ<D0B6><CFB4><EFBFBD><EFBFBD>ź<EFBFBD>
|
||||
imu660rc_write_register(IMU660RC_INT2_CTRL, 0x80);
|
||||
imu660rc_write_register(IMU660RC_CTRL4, 0x08);
|
||||
imu660rc_write_register(IMU660RC_EMB_FUNC_CFG, 0x30);
|
||||
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ü<EFBFBD><C3BC>ٶȡ<D9B6><C8A1><EFBFBD><EFBFBD>ٶ<EFBFBD><D9B6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
imu660rc_write_register(IMU660RC_CTRL1, 0x10 | (quarternion_rate + 3));
|
||||
imu660rc_write_register(IMU660RC_CTRL2, 0x10 | (quarternion_rate + 3));
|
||||
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ԫ<EFBFBD><D4AA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʲ<EFBFBD><CAB2><EFBFBD><EFBFBD><EFBFBD>
|
||||
imu660rc_set_mem_bank(IMU660RC_EMBED_MEM_BANK);
|
||||
imu660rc_write_register(IMU660RC_SFLP_ODR, 0x43 | (quarternion_rate << 3));
|
||||
imu660rc_write_register(IMU660RC_EMB_FUNC_EN_A, 0x02);
|
||||
imu660rc_write_register(IMU660RC_PAGE_RW, 0x00);
|
||||
imu660rc_set_mem_bank(IMU660RC_MAIN_MEM_BANK);
|
||||
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD>жϼ<D0B6><CFBC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
exti_init(IMU660RC_INT2_PIN, EXTI_TRIGGER_RISING);
|
||||
}
|
||||
}while(0);
|
||||
|
||||
return return_state;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -0,0 +1,211 @@
|
||||
/*********************************************************************************************************************
|
||||
* RT1064DVL6A Opensourec Library <20><><EFBFBD><EFBFBD>RT1064DVL6A <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> RT1064DVL6A <20><>Դ<EFBFBD><D4B4><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD>
|
||||
*
|
||||
* RT1064DVL6A <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_imu660rc
|
||||
* <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.10.2
|
||||
* <20><><EFBFBD><EFBFBD>ƽ̨ TC264
|
||||
* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> https://seekfree.taobao.com/
|
||||
*
|
||||
* <20>ļ<DEB8>¼
|
||||
* <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><>ע
|
||||
* 2025-12-12 SeekFree first version
|
||||
********************************************************************************************************************/
|
||||
/*********************************************************************************************************************
|
||||
* <20><><EFBFBD>߶<EFBFBD><DFB6>壺
|
||||
* ------------------------------------
|
||||
* ģ<><C4A3><EFBFBD>ܽ<EFBFBD> <20><>Ƭ<EFBFBD><C6AC><EFBFBD>ܽ<EFBFBD>
|
||||
* // Ӳ<><D3B2> SPI <20><><EFBFBD><EFBFBD>
|
||||
* SCL/SPC <20>鿴 zf_device_imu660rc.h <20><> IMU660RC_SPC_PIN <20>궨<EFBFBD><EAB6A8>
|
||||
* SDA/DSI <20>鿴 zf_device_imu660rc.h <20><> IMU660RC_SDI_PIN <20>궨<EFBFBD><EAB6A8>
|
||||
* SA0/SDO <20>鿴 zf_device_imu660rc.h <20><> IMU660RC_SDO_PIN <20>궨<EFBFBD><EAB6A8>
|
||||
* CS <20>鿴 zf_device_imu660rc.h <20><> IMU660RC_CS_PIN <20>궨<EFBFBD><EAB6A8>
|
||||
* INT2 <20>鿴 zf_device_imu660rc.h <20><> IMU660RC_INT2_PIN <20>궨<EFBFBD><EAB6A8>
|
||||
* VCC 3.3V<EFBFBD><EFBFBD>Դ
|
||||
* GND <20><>Դ<EFBFBD><D4B4>
|
||||
* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
*
|
||||
* // <20><><EFBFBD><EFBFBD> IIC <20><><EFBFBD><EFBFBD>
|
||||
* SCL/SPC <20>鿴 zf_device_imu660rc.h <20><> IMU660RC_SCL_PIN <20>궨<EFBFBD><EAB6A8>
|
||||
* SDA/DSI <20>鿴 zf_device_imu660rc.h <20><> IMU660RC_SDA_PIN <20>궨<EFBFBD><EAB6A8>
|
||||
* VCC 3.3V<EFBFBD><EFBFBD>Դ
|
||||
* GND <20><>Դ<EFBFBD><D4B4>
|
||||
* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
* ------------------------------------
|
||||
********************************************************************************************************************/
|
||||
|
||||
|
||||
#ifndef _zf_device_imu660rc_h_
|
||||
#define _zf_device_imu660rc_h_
|
||||
|
||||
#include "zf_common_typedef.h"
|
||||
|
||||
|
||||
// IMU660RC_USE_SOFT_IIC<49><43><EFBFBD><EFBFBD>Ϊ0<CEAA><30>ʾʹ<CABE><CAB9>Ӳ<EFBFBD><D3B2>SPI<50><49><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>Ϊ1<CEAA><31>ʾʹ<CABE><CAB9><EFBFBD><EFBFBD><EFBFBD><EFBFBD>IIC<49><43><EFBFBD><EFBFBD>
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>IMU660RC_USE_SOFT_IIC<49><43><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ҫ<EFBFBD>ȱ<EFBFBD><C8B1>벢<EFBFBD><EBB2A2><EFBFBD>س<EFBFBD><D8B3><EFBFBD>Ƭ<EFBFBD><C6AC><EFBFBD><EFBFBD>ģ<EFBFBD><C4A3><EFBFBD><EFBFBD>Ҫ<EFBFBD>ϵ<EFBFBD><CFB5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͨѶ
|
||||
#define IMU660RC_USE_SOFT_IIC ( 0 ) // Ĭ<><C4AC>ʹ<EFBFBD><CAB9>Ӳ<EFBFBD><D3B2> SPI <20><>ʽ<EFBFBD><CABD><EFBFBD><EFBFBD>
|
||||
|
||||
#if IMU660RC_USE_SOFT_IIC // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>ɫ<EFBFBD><C9AB><EFBFBD><EFBFBD><EFBFBD>IJ<EFBFBD><C4B2><EFBFBD><EFBFBD><EFBFBD>ȷ<EFBFBD><C8B7> <20><>ɫ<EFBFBD>ҵľ<D2B5><C4BE><EFBFBD>û<EFBFBD><C3BB><EFBFBD>õ<EFBFBD>
|
||||
//====================================================<3D><><EFBFBD><EFBFBD> IIC <20><><EFBFBD><EFBFBD>====================================================
|
||||
#define IMU660RC_SOFT_IIC_DELAY ( 0 ) // <20><><EFBFBD><EFBFBD> IIC <20><>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD> <20><>ֵԽС IIC ͨ<><CDA8><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Խ<EFBFBD><D4BD>
|
||||
#define IMU660RC_SCL_PIN ( P20_11 ) // <20><><EFBFBD><EFBFBD> IIC SCL <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> IMU660RC <20><> SCL <20><><EFBFBD><EFBFBD>
|
||||
#define IMU660RC_SDA_PIN ( P20_14 ) // <20><><EFBFBD><EFBFBD> IIC SDA <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> IMU660RC <20><> SDA <20><><EFBFBD><EFBFBD>
|
||||
//====================================================<3D><><EFBFBD><EFBFBD> IIC <20><><EFBFBD><EFBFBD>====================================================
|
||||
#else
|
||||
|
||||
//====================================================Ӳ<><D3B2> SPI <20><><EFBFBD><EFBFBD>====================================================
|
||||
#define IMU660RC_SPI_SPEED (10 * 1000 * 1000) // Ӳ<><D3B2> SPI <20><><EFBFBD><EFBFBD>
|
||||
#define IMU660RC_SPI (SPI_0) // Ӳ<><D3B2> SPI <20><>
|
||||
#define IMU660RC_SPC_PIN (SPI0_SCLK_P20_11 ) // Ӳ<><D3B2> SPI SCK <20><><EFBFBD><EFBFBD>
|
||||
#define IMU660RC_SDI_PIN (SPI0_MOSI_P20_14) // Ӳ<><D3B2> SPI MOSI <20><><EFBFBD><EFBFBD>
|
||||
#define IMU660RC_SDO_PIN (SPI0_MISO_P20_12) // Ӳ<><D3B2> SPI MISO <20><><EFBFBD><EFBFBD>
|
||||
//====================================================Ӳ<><D3B2> SPI <20><><EFBFBD><EFBFBD>====================================================
|
||||
#endif
|
||||
#define IMU660RC_CS_PIN ( P20_13 ) // CS Ƭѡ<C6AC><D1A1><EFBFBD><EFBFBD>
|
||||
#define IMU660RC_CS(x) ( (x) ? (gpio_high(IMU660RC_CS_PIN)) : (gpio_low(IMU660RC_CS_PIN)) )
|
||||
#define IMU660RC_INT2_PIN ( ERU_CH0_REQ0_P15_4 ) // <20>ж<EFBFBD><D0B6>ź<EFBFBD><C5BA><EFBFBD><EFBFBD>ţ<EFBFBD><C5A3>ڶ<EFBFBD>ȡ<EFBFBD><C8A1>Ԫ<EFBFBD><D4AA>ʱ<EFBFBD><CAB1>Ҫʹ<D2AA><CAB9>
|
||||
|
||||
|
||||
#define IMU660RC_QUARTERNION_GET_GYRO ( 1 ) // 1<><31><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ԫ<EFBFBD><D4AA><EFBFBD><EFBFBD>ģʽʱ<CABD><CAB1><EFBFBD><EFBFBD>ȡ<EFBFBD><C8A1>Ԫ<EFBFBD><D4AA>ʱ<EFBFBD>Զ<EFBFBD><D4B6><EFBFBD>ȡ<EFBFBD><C8A1><EFBFBD>ٶ<EFBFBD> 0<><30><EFBFBD><EFBFBD><EFBFBD>Զ<EFBFBD><D4B6><EFBFBD>ȡ
|
||||
#define IMU660RC_QUARTERNION_GET_ACC ( 1 ) // 1<><31><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ԫ<EFBFBD><D4AA><EFBFBD><EFBFBD>ģʽʱ<CABD><CAB1><EFBFBD><EFBFBD>ȡ<EFBFBD><C8A1>Ԫ<EFBFBD><D4AA>ʱ<EFBFBD>Զ<EFBFBD><D4B6><EFBFBD>ȡ<EFBFBD><C8A1><EFBFBD>ٶ<EFBFBD> 0<><30><EFBFBD><EFBFBD><EFBFBD>Զ<EFBFBD><D4B6><EFBFBD>ȡ
|
||||
#define IMU660RC_ACC_SAMPLE_DEFAULT ( IMU660RC_ACC_SAMPLE_SGN_8G ) // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ĭ<EFBFBD>ϵ<EFBFBD> <20><><EFBFBD>ٶȼ<D9B6> <20><>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
#define IMU660RC_GYRO_SAMPLE_DEFAULT ( IMU660RC_GYRO_SAMPLE_SGN_2000DPS ) // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ĭ<EFBFBD>ϵ<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
|
||||
typedef enum
|
||||
{
|
||||
IMU660RC_MAIN_MEM_BANK = 0x00,
|
||||
IMU660RC_HUB_MEM_BANK = 0x40,
|
||||
IMU660RC_EMBED_MEM_BANK = 0x80,
|
||||
}imu660rc_mem_bank_enum;
|
||||
|
||||
typedef enum
|
||||
{
|
||||
IMU660RC_ACC_SAMPLE_SGN_2G , // <20><><EFBFBD>ٶȼ<D9B6><C8BC><EFBFBD><EFBFBD><EFBFBD> <20><>2G (ACC = Accelerometer <20><><EFBFBD>ٶȼ<D9B6>) (SGN = signum <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Χ) (G = g <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ٶ<EFBFBD> g<><67>9.80 m/s^2)
|
||||
IMU660RC_ACC_SAMPLE_SGN_4G , // <20><><EFBFBD>ٶȼ<D9B6><C8BC><EFBFBD><EFBFBD><EFBFBD> <20><>4G
|
||||
IMU660RC_ACC_SAMPLE_SGN_8G , // <20><><EFBFBD>ٶȼ<D9B6><C8BC><EFBFBD><EFBFBD><EFBFBD> <20><>8G
|
||||
IMU660RC_ACC_SAMPLE_SGN_16G, // <20><><EFBFBD>ٶȼ<D9B6><C8BC><EFBFBD><EFBFBD><EFBFBD> <20><>16G
|
||||
}imu660rc_acc_sample_config;
|
||||
|
||||
typedef enum
|
||||
{
|
||||
IMU660RC_GYRO_SAMPLE_SGN_125DPS , // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>125DPS (GYRO = Gyroscope <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>) (SGN = signum <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Χ) (DPS = Degree Per Second <20><><EFBFBD>ٶȵ<D9B6>λ <20><>/S)
|
||||
IMU660RC_GYRO_SAMPLE_SGN_250DPS , // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>250DPS
|
||||
IMU660RC_GYRO_SAMPLE_SGN_500DPS , // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>500DPS
|
||||
IMU660RC_GYRO_SAMPLE_SGN_1000DPS, // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>1000DPS
|
||||
IMU660RC_GYRO_SAMPLE_SGN_2000DPS, // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>2000DPS
|
||||
IMU660RC_GYRO_SAMPLE_SGN_4000DPS, // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>4000DPS
|
||||
}imu660rc_gyro_sample_config;
|
||||
|
||||
typedef enum
|
||||
{
|
||||
IMU660RC_QUARTERNION_15HZ, // 15 Hz
|
||||
IMU660RC_QUARTERNION_30HZ, // 30 Hz
|
||||
IMU660RC_QUARTERNION_60HZ, // 60 Hz
|
||||
IMU660RC_QUARTERNION_120HZ, // 120Hz
|
||||
IMU660RC_QUARTERNION_240HZ, // 240Hz
|
||||
IMU660RC_QUARTERNION_480HZ, // 480Hz
|
||||
IMU660RC_QUARTERNION_DISABLE, // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ԫ<EFBFBD><D4AA><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
}imu660rc_quarternion_rate_config;
|
||||
|
||||
|
||||
//================================================<3D><><EFBFBD><EFBFBD> IMU660RC <20>ڲ<EFBFBD><DAB2><EFBFBD>ַ================================================
|
||||
#define IMU660RC_DEV_ADDR ( 0x6B ) // SA0<41>ӵأ<D3B5>0x6A SA0<41><30><EFBFBD><EFBFBD><EFBFBD><EFBFBD>0x6B ģ<><C4A3>Ĭ<EFBFBD><C4AC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
#define IMU660RC_SPI_W ( 0x00 )
|
||||
#define IMU660RC_SPI_R ( 0x80 )
|
||||
#define IMU660RC_TIMEOUT_COUNT ( 0x00FF ) // IMU660RC <20><>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD>
|
||||
|
||||
|
||||
//================================================<3D><><EFBFBD><EFBFBD> IMU660RC <20>Ĵ<EFBFBD><C4B4><EFBFBD><EFBFBD><EFBFBD>ַ================================================
|
||||
#define IMU660RC_FUNC_CFG_ACCESS ( 0x01 )
|
||||
#define IMU660RC_INT2_CTRL ( 0x0E )
|
||||
#define IMU660RC_CHIP_ID ( 0x0F )
|
||||
#define IMU660RC_CTRL1 ( 0x10 )
|
||||
#define IMU660RC_CTRL2 ( 0x11 )
|
||||
#define IMU660RC_CTRL3 ( 0x12 )
|
||||
#define IMU660RC_CTRL4 ( 0x13 )
|
||||
#define IMU660RC_CTRL5 ( 0x14 )
|
||||
#define IMU660RC_CTRL6 ( 0x15 )
|
||||
#define IMU660RC_CTRL7 ( 0x16 )
|
||||
#define IMU660RC_CTRL8 ( 0x17 )
|
||||
#define IMU660RC_CTRL9 ( 0x18 )
|
||||
#define IMU660RC_CTRL10 ( 0x19 )
|
||||
#define IMU660RC_CTRL_STATUS ( 0x1A )
|
||||
#define IMU660RC_STATUS_REG ( 0x1E )
|
||||
#define IMU660RC_OUT_TEMP_L ( 0x20 )
|
||||
#define IMU660RC_OUT_TEMP_H ( 0x21 )
|
||||
#define IMU660RC_OUTX_L_G ( 0x22 )
|
||||
#define IMU660RC_OUTX_H_G ( 0x23 )
|
||||
#define IMU660RC_OUTY_L_G ( 0x24 )
|
||||
#define IMU660RC_OUTY_H_G ( 0x25 )
|
||||
#define IMU660RC_OUTZ_L_G ( 0x26 )
|
||||
#define IMU660RC_OUTZ_H_G ( 0x27 )
|
||||
#define IMU660RC_OUTX_L_A ( 0x28 )
|
||||
#define IMU660RC_OUTX_H_A ( 0x29 )
|
||||
#define IMU660RC_OUTY_L_A ( 0x2A )
|
||||
#define IMU660RC_OUTY_H_A ( 0x2B )
|
||||
#define IMU660RC_OUTZ_L_A ( 0x2C )
|
||||
#define IMU660RC_OUTZ_H_A ( 0x2D )
|
||||
|
||||
#define IMU660RC_PAGE_SEL ( 0x02 )
|
||||
#define IMU660RC_EMB_FUNC_EN_A ( 0x04 )
|
||||
#define IMU660RC_PAGE_RW ( 0x17 )
|
||||
#define IMU660RC_SFLP_ODR ( 0x5E )
|
||||
#define IMU660RC_EMB_FUNC_CFG ( 0x63 )
|
||||
|
||||
|
||||
|
||||
extern float imu660rc_transition_factor[2];
|
||||
extern int16 imu660rc_gyro_x, imu660rc_gyro_y, imu660rc_gyro_z; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
extern int16 imu660rc_acc_x , imu660rc_acc_y , imu660rc_acc_z; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ٶȼ<D9B6><C8BC><EFBFBD><EFBFBD><EFBFBD>
|
||||
extern float imu660rc_roll , imu660rc_pitch , imu660rc_yaw; // ŷ<><C5B7><EFBFBD><EFBFBD>
|
||||
extern float imu660rc_quarternion[4]; // <20><>Ԫ<EFBFBD><D4AA>
|
||||
|
||||
|
||||
void imu660rc_get_acc (void);
|
||||
void imu660rc_get_gyro (void);
|
||||
void imu660rc_get_quarternion (void);
|
||||
|
||||
//-------------------------------------------------------------------------------------------------------------------
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> IMU660RC <20><><EFBFBD>ٶȼ<D9B6><C8BC><EFBFBD><EFBFBD><EFBFBD>ת<EFBFBD><D7AA>Ϊʵ<CEAA><CAB5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> acc_value <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD><C4BC>ٶȼ<D9B6><C8BC><EFBFBD><EFBFBD><EFBFBD>
|
||||
// <20><><EFBFBD>ز<EFBFBD><D8B2><EFBFBD> void
|
||||
// ʹ<><CAB9>ʾ<EFBFBD><CABE> float data = imu660rc_acc_transition(imu660rc_acc_x); // <20><>λΪ g(m/s^2)
|
||||
// <20><>ע<EFBFBD><D7A2>Ϣ
|
||||
//-------------------------------------------------------------------------------------------------------------------
|
||||
#define imu660rc_acc_transition(acc_value) ((float)(acc_value) / imu660rc_transition_factor[0])
|
||||
|
||||
//-------------------------------------------------------------------------------------------------------------------
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> IMU660RC <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ת<EFBFBD><D7AA>Ϊʵ<CEAA><CAB5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> gyro_value <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
// <20><><EFBFBD>ز<EFBFBD><D8B2><EFBFBD> void
|
||||
// ʹ<><CAB9>ʾ<EFBFBD><CABE> float data = imu660rc_gyro_transition(imu660rc_gyro_x); // <20><>λΪ <20><>/s
|
||||
// <20><>ע<EFBFBD><D7A2>Ϣ
|
||||
//-------------------------------------------------------------------------------------------------------------------
|
||||
#define imu660rc_gyro_transition(gyro_value) ((float)(gyro_value) / imu660rc_transition_factor[1])
|
||||
void imu660rc_callback (void);
|
||||
uint8 imu660rc_init (imu660rc_quarternion_rate_config quarternion_rate);
|
||||
|
||||
|
||||
|
||||
#endif
|
||||
@@ -97,7 +97,7 @@
|
||||
//================================================<3D><><EFBFBD><EFBFBD> IMU660RX ȫ<>ֱ<EFBFBD><D6B1><EFBFBD>================================================
|
||||
extern int16 imu660rx_gyro_x, imu660rx_gyro_y, imu660rx_gyro_z; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> gyro (<28><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>)
|
||||
extern int16 imu660rx_acc_x, imu660rx_acc_y, imu660rx_acc_z; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ٶȼ<D9B6><C8BC><EFBFBD><EFBFBD><EFBFBD> acc (accelerometer <20><><EFBFBD>ٶȼ<D9B6>)
|
||||
extern float imu660ra_transition_factor[2];
|
||||
extern float imu660rx_transition_factor[2];
|
||||
//================================================<3D><><EFBFBD><EFBFBD> IMU660RX ȫ<>ֱ<EFBFBD><D6B1><EFBFBD>================================================
|
||||
|
||||
|
||||
|
||||
@@ -167,7 +167,7 @@ void ips114_init (void);
|
||||
// ʹ<><CAB9>ʾ<EFBFBD><CABE> ips114_displayimage8660(scc8660_image[0], SCC8660_W, SCC8660_H);
|
||||
// <20><>ע<EFBFBD><D7A2>Ϣ <20><>չ<EFBFBD><D5B9>һ<EFBFBD><D2BB><EFBFBD><EFBFBD>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ĭ<EFBFBD><C4AC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ţ<EFBFBD><C5A3><EFBFBD><EFBFBD><EFBFBD>Ļ<EFBFBD><C4BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʼ<EFBFBD>㿪ʼ<E3BFAA><CABC>ʾ
|
||||
//-------------------------------------------------------------------------------------------------------------------
|
||||
#define ips114_displayimage8660(p, width, height) (ips114_show_rgb565_image(0, 0, (p), SCC8660_W, SCC8660_H, (width), (height), 1))
|
||||
#define ips114_displayimage8660(p, width, height) (ips114_show_rgb565_image(0, 0, (p), SCC8660_W, SCC8660_H, (width), (height), 0))
|
||||
//=================================================<3D><><EFBFBD><EFBFBD> IPS114 <20><>չ<EFBFBD><D5B9><EFBFBD><EFBFBD>================================================
|
||||
|
||||
#endif
|
||||
|
||||
@@ -220,7 +220,7 @@ void ips200_init (ips200_type_enum type_select);
|
||||
// ʹ<><CAB9>ʾ<EFBFBD><CABE> ips200_displayimage8660(scc8660_image[0], SCC8660_W, SCC8660_H);
|
||||
// <20><>ע<EFBFBD><D7A2>Ϣ <20><>չ<EFBFBD><D5B9>һ<EFBFBD><D2BB><EFBFBD><EFBFBD>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ĭ<EFBFBD><C4AC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ţ<EFBFBD><C5A3><EFBFBD><EFBFBD><EFBFBD>Ļ<EFBFBD><C4BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʼ<EFBFBD>㿪ʼ<E3BFAA><CABC>ʾ
|
||||
//-------------------------------------------------------------------------------------------------------------------
|
||||
#define ips200_displayimage8660(p, width, height) (ips200_show_rgb565_image(0, 0, (p), SCC8660_W, SCC8660_H, (width), (height), 1))
|
||||
#define ips200_displayimage8660(p, width, height) (ips200_show_rgb565_image(0, 0, (p), SCC8660_W, SCC8660_H, (width), (height), 0))
|
||||
//==================================================<3D><><EFBFBD><EFBFBD> IPS200 <20><>չ<EFBFBD><D5B9><EFBFBD><EFBFBD>================================================
|
||||
|
||||
|
||||
|
||||
@@ -86,7 +86,7 @@
|
||||
// <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_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 (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_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_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><C3A3><EFBFBD>֧<EFBFBD><D6A7><EFBFBD><EFBFBD>ͫ<EFBFBD><CDAB>֡<EFBFBD>ʰ汾<CAB0><E6B1BE>===========================
|
||||
|
||||
|
||||
@@ -24,7 +24,7 @@
|
||||
* <20>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD><EFBFBD> zf_device_wifi_spi
|
||||
* <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><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ADS v1.10.2
|
||||
* <20><><EFBFBD><EFBFBD>ƽ̨ TC264D
|
||||
* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> https://seekfree.taobao.com/
|
||||
*
|
||||
@@ -63,6 +63,21 @@
|
||||
#define SOCKET_CONNECT_TIME_OUT 50000 // <20><>λ<EFBFBD><CEBB><EFBFBD><EFBFBD>
|
||||
#define OTHER_TIME_OUT 1000 // <20><>λ<EFBFBD><CEBB><EFBFBD><EFBFBD>
|
||||
|
||||
#if ((WIFI_SPI_RECVIVE_SIZE < 32) || (WIFI_SPI_RECVIVE_SIZE > 4088))
|
||||
#error "WIFI_SPI_RECVIVE_SIZE must be >= 32 or <= 4088"
|
||||
#endif
|
||||
|
||||
#if (WIFI_SPI_RECVIVE_SIZE >= WIFI_SPI_RECVIVE_FIFO_SIZE)
|
||||
#error "WIFI_SPI_RECVIVE_FIFO_SIZE must be > WIFI_SPI_RECVIVE_SIZE"
|
||||
#endif
|
||||
|
||||
|
||||
#if (WIFI_SPI_TRANSFER_SIZE != 4088)
|
||||
#error "WIFI_SPI_TRANSFER_SIZE must be == 4088"
|
||||
#endif
|
||||
|
||||
|
||||
|
||||
char wifi_spi_version[12]; // <20><><EFBFBD><EFBFBD>ģ<EFBFBD><C4A3><EFBFBD>̼<EFBFBD><CCBC>汾<EFBFBD><E6B1BE>Ϣ
|
||||
char wifi_spi_mac_addr[20]; // <20><><EFBFBD><EFBFBD>ģ<EFBFBD><C4A3>MAC<41><43>ַ<EFBFBD><D6B7>Ϣ
|
||||
char wifi_spi_ip_addr_port[25]; // <20><><EFBFBD><EFBFBD>ģ<EFBFBD><C4A3>IP<49><50>ַ<EFBFBD><D6B7><EFBFBD>˿<EFBFBD><CBBF><EFBFBD>Ϣ
|
||||
@@ -271,8 +286,6 @@ static uint8 wifi_spi_get_version (void)
|
||||
{
|
||||
memcpy(wifi_spi_version, temp_packets.buffer, temp_packets.head.length);
|
||||
}
|
||||
return_state = (return_state == 0) ? (WIFI_SPI_REPLY_VERSION != temp_packets.head.command) : 1;
|
||||
|
||||
return return_state;
|
||||
}
|
||||
|
||||
@@ -293,8 +306,6 @@ static uint8 wifi_spi_get_mac_addr (void)
|
||||
{
|
||||
memcpy(wifi_spi_mac_addr, temp_packets.buffer, temp_packets.head.length);
|
||||
}
|
||||
return_state = (return_state == 0) ? (WIFI_SPI_REPLY_MAC_ADDR != temp_packets.head.command) : 1;
|
||||
|
||||
return return_state;
|
||||
}
|
||||
|
||||
@@ -316,7 +327,77 @@ static uint8 wifi_spi_get_ip_addr_port (void)
|
||||
{
|
||||
memcpy(wifi_spi_ip_addr_port, temp_packets.buffer, temp_packets.head.length);
|
||||
}
|
||||
return_state = (return_state == 0) ? (WIFI_SPI_REPLY_IP_ADDR != temp_packets.head.command) : 1;
|
||||
return return_state;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------------------------------------------------------
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> WIFI SPI <20><>ȡϵͳʱ<CDB3><CAB1>
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> time_format ʱ<><CAB1><EFBFBD><EFBFBD>ʽ
|
||||
// <20><><EFBFBD>ز<EFBFBD><D8B2><EFBFBD> *buffer <20><><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD>ַ<EFBFBD><D6B7><EFBFBD><EFBFBD><EFBFBD>ַ <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>С<EFBFBD><D0A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ҫ30<33><30><EFBFBD>ֽ<EFBFBD>
|
||||
// <20><><EFBFBD>ز<EFBFBD><D8B2><EFBFBD> buffer_size <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>С
|
||||
// <20><><EFBFBD>ز<EFBFBD><D8B2><EFBFBD> uint8 ״̬ 0-<2D>ɹ<EFBFBD> 1-<2D><><EFBFBD><EFBFBD>
|
||||
// ʹ<><CAB9>ʾ<EFBFBD><CABE>
|
||||
// <20><>ע<EFBFBD><D7A2>Ϣ <20><>Ҫ<EFBFBD><D2AA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȵ<EFBFBD>֮<EFBFBD><D6AE><EFBFBD><EFBFBD><EFBFBD>ܻ<EFBFBD>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD>ȷ<EFBFBD><C8B7>ʱ<EFBFBD>䣬<EFBFBD><E4A3AC><EFBFBD><EFBFBD><EFBFBD>ڵ<EFBFBD><DAB5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>֮ǰ<D6AE><C7B0>Ҫȷ<D2AA><C8B7>WIFIģ<49><C4A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ҫ<EFBFBD><D2AA><EFBFBD>յ<EFBFBD><D5B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ѿ<EFBFBD>ȫ<EFBFBD><C8AB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
// <20><>ע<EFBFBD><D7A2>Ϣ <20><>WIFI SPI <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>߰汾֧<E6B1BE><D6A7>
|
||||
// <20><>ע<EFBFBD><D7A2>Ϣ <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϢΪ<CFA2>ַ<EFBFBD><D6B7><EFBFBD><EFBFBD><EFBFBD>Ϣ<EFBFBD><CFA2><EFBFBD><EFBFBD>ֱ<EFBFBD><D6B1>printf<74><66><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֲ鿴
|
||||
//-------------------------------------------------------------------------------------------------------------------
|
||||
uint8 wifi_spi_get_time (wifi_spi_time_enum time_format, char *buffer, uint8 buffer_size)
|
||||
{
|
||||
uint8 return_state = 1;
|
||||
wifi_spi_packets_struct temp_packets;
|
||||
uint8 send_cmd, receive_cmd;
|
||||
|
||||
// <20><><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>30<33><30><EFBFBD>ֽ<EFBFBD>
|
||||
// <20><><EFBFBD><EFBFBD>ģ<EFBFBD><C4A3><EFBFBD>̼<EFBFBD><CCBC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>V2<56>汾
|
||||
if((30 <= buffer_size) && (!strncmp(wifi_spi_version, "V2", 2)))
|
||||
{
|
||||
send_cmd = WIFI_SPI_GET_TIME1 + time_format - WIFI_SPI_UTC_0;
|
||||
receive_cmd = WIFI_SPI_REPLY_TIME1 + time_format - WIFI_SPI_UTC_0;
|
||||
|
||||
return_state = wifi_spi_get_parameter(send_cmd, &temp_packets, OTHER_TIME_OUT);
|
||||
if((0 == return_state) && (receive_cmd == temp_packets.head.command))
|
||||
{
|
||||
return_state = (uint8)strncmp((const char *)temp_packets.buffer, "OK", 2);
|
||||
if(0 == return_state)
|
||||
{
|
||||
memcpy(buffer, &temp_packets.buffer[3], temp_packets.head.length - 3);
|
||||
buffer[temp_packets.head.length - 3] = 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
return return_state;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------------------------------------------------------
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> WIFI SPI ɨ<><C9A8><EFBFBD>ȵ<EFBFBD>
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> *buffer <20><><EFBFBD><EFBFBD>ɨ<EFBFBD>赽<EFBFBD><E8B5BD><EFBFBD>ȵ<EFBFBD><C8B5><EFBFBD>Ϣ <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ź<EFBFBD>ǿ<EFBFBD>ȣ<EFBFBD>ÿ<EFBFBD><C3BF><EFBFBD>ź<EFBFBD>ǿ<EFBFBD>Ⱥ<EFBFBD><C8BA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD>з<EFBFBD>
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> buffer_size <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ij<EFBFBD><C4B3><EFBFBD>
|
||||
// <20><><EFBFBD>ز<EFBFBD><D8B2><EFBFBD> uint8 ״̬ 0-<2D>ɹ<EFBFBD> 1-<2D><><EFBFBD><EFBFBD>
|
||||
// ʹ<><CAB9>ʾ<EFBFBD><CABE>
|
||||
// <20><>ע<EFBFBD><D7A2>Ϣ <20><>WIFI SPI <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>߰汾֧<E6B1BE><D6A7>
|
||||
// <20><>ע<EFBFBD><D7A2>Ϣ <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϢΪ<CFA2>ַ<EFBFBD><D6B7><EFBFBD><EFBFBD><EFBFBD>Ϣ<EFBFBD><CFA2><EFBFBD><EFBFBD>ֱ<EFBFBD><D6B1>printf<74><66><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֲ鿴
|
||||
// <20><>ע<EFBFBD><D7A2>Ϣ ÿһ<C3BF>а<EFBFBD><D0B0><EFBFBD>һ<EFBFBD><D2BB>wifi<66><69><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
//-------------------------------------------------------------------------------------------------------------------
|
||||
uint8 wifi_spi_wifi_scan (char *buffer, uint16 buffer_size)
|
||||
{
|
||||
uint8 return_state;
|
||||
|
||||
// ģ<><C4A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>V2<56>汾<EFBFBD>Ĺ̼<C4B9><CCBC><EFBFBD>֧<EFBFBD>ִ˹<D6B4><CBB9><EFBFBD>
|
||||
if(!strncmp(wifi_spi_version, "V2", 2))
|
||||
{
|
||||
return_state = wifi_spi_set_parameter(WIFI_SPI_SET_WIFI_SCAN, NULL, 0, WIFI_CONNECT_TIME_OUT);
|
||||
|
||||
if(0 == return_state)
|
||||
{
|
||||
#if (0 == WIFI_SPI_READ_TRANSFER)
|
||||
wifi_spi_send_buffer(NULL, 0);
|
||||
#endif
|
||||
while(0 == wifi_spi_read_buffer((uint8 *)buffer, buffer_size))
|
||||
{
|
||||
system_delay_ms(10);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return return_state;
|
||||
}
|
||||
@@ -505,7 +586,7 @@ uint32 wifi_spi_send_buffer (const uint8 *buffer, uint32 length)
|
||||
|
||||
while(length)
|
||||
{
|
||||
send_length = length > WIFI_SPI_TRANSFER_SIZE ? (uint16)WIFI_SPI_TRANSFER_SIZE : (uint16)length;
|
||||
send_length = (uint16) (length > WIFI_SPI_TRANSFER_SIZE ? WIFI_SPI_TRANSFER_SIZE : length);
|
||||
|
||||
if(wifi_spi_wait_idle(OTHER_TIME_OUT))
|
||||
{
|
||||
@@ -555,6 +636,18 @@ uint32 wifi_spi_send_buffer (const uint8 *buffer, uint32 length)
|
||||
return length;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------------------------------------------------------
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> WIFI SPI <20>ַ<EFBFBD><D6B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͺ<EFBFBD><CDBA><EFBFBD><EFBFBD><EFBFBD>ͬ<EFBFBD><CDAC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> *string <20><>Ҫ<EFBFBD><D2AA><EFBFBD>͵<EFBFBD><CDB5>ַ<EFBFBD><D6B7><EFBFBD>
|
||||
// <20><><EFBFBD>ز<EFBFBD><D8B2><EFBFBD> void
|
||||
// ʹ<><CAB9>ʾ<EFBFBD><CABE> wifi_spi_send_string("123");
|
||||
// <20><>ע<EFBFBD><D7A2>Ϣ
|
||||
//-------------------------------------------------------------------------------------------------------------------
|
||||
void wifi_spi_send_string(const char *string)
|
||||
{
|
||||
wifi_spi_send_buffer((uint8*)string, strlen(string));
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------------------------------------------------------
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> WIFI SPI <20><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> *buff <20><><EFBFBD>ջ<EFBFBD><D5BB><EFBFBD><EFBFBD><EFBFBD>
|
||||
@@ -566,32 +659,57 @@ uint32 wifi_spi_send_buffer (const uint8 *buffer, uint32 length)
|
||||
uint32 wifi_spi_read_buffer (uint8 *buffer, uint32 length)
|
||||
{
|
||||
zf_assert(NULL != buffer);
|
||||
uint32 data_len = length;
|
||||
uint32 fifo_read_length;
|
||||
uint32 write_length = 0;
|
||||
wifi_spi_packets_struct temp_packets;
|
||||
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD>ж<EFBFBD>FIFO<46><4F><EFBFBD>Ƿ<EFBFBD><C7B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݣ<EFBFBD><DDA3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȴ<EFBFBD>FIFO<46><4F>ȡ
|
||||
if(fifo_used(&wifi_spi_fifo))
|
||||
{
|
||||
fifo_read_length = fifo_used(&wifi_spi_fifo);
|
||||
fifo_read_length = length < fifo_read_length ? length : fifo_read_length;
|
||||
fifo_read_buffer(&wifi_spi_fifo, buffer, &fifo_read_length, FIFO_READ_AND_CLEAN);
|
||||
|
||||
buffer += fifo_read_length;
|
||||
length -= fifo_read_length;
|
||||
write_length += fifo_read_length;
|
||||
}
|
||||
|
||||
#if(1 == WIFI_SPI_READ_TRANSFER)
|
||||
|
||||
wifi_spi_packets_struct temp_packets;
|
||||
// <20><><EFBFBD><EFBFBD>WIFI SPI״̬<D7B4><CCAC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>жϻ<D0B6><CFBB><EFBFBD><EFBFBD>߳<EFBFBD><DFB3><EFBFBD><EFBFBD>Ѿ<EFBFBD><D1BE><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͨѶ<CDA8><D1B6><EFBFBD>β<F2B1BEB4><CEB2>ܷ<EFBFBD><DCB7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
if(WIFI_SPI_IDLE == wifi_spi_mutex)
|
||||
{
|
||||
// <20><>ͨѶ״̬<D7B4><CCAC><EFBFBD><EFBFBD>Ϊæ
|
||||
wifi_spi_mutex = WIFI_SPI_BUSY;
|
||||
wifi_spi_mutex = WIFI_SPI_BUSY; // <20><>ͨѶ״̬<D7B4><CCAC><EFBFBD><EFBFBD>Ϊæ
|
||||
|
||||
// <20><><EFBFBD><EFBFBD>ͨѶ<CDA8>鿴ģ<E9BFB4><C4A3><EFBFBD><EFBFBD><EFBFBD>Ƿ<EFBFBD><C7B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>δ<EFBFBD><CEB4>ȡ
|
||||
do
|
||||
{
|
||||
if(wifi_spi_wait_idle(OTHER_TIME_OUT))
|
||||
if( (WIFI_SPI_RECVIVE_SIZE > wifi_spi_fifo.size) || // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ռ䲻<D5BC><E4B2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ٶ<EFBFBD>ȡ
|
||||
(wifi_spi_wait_idle(OTHER_TIME_OUT)) // <20><>ʱ<EFBFBD>˳<EFBFBD>
|
||||
)
|
||||
{
|
||||
break;
|
||||
}
|
||||
|
||||
temp_packets.head.command = WIFI_SPI_DATA;
|
||||
temp_packets.head.length = 0;
|
||||
wifi_spi_transfer_command(&temp_packets, WIFI_SPI_RECVIVE_SIZE);
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD>յ<EFBFBD><D5B5>İ<EFBFBD><C4B0><EFBFBD><EFBFBD>Ƿ<EFBFBD><C7B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
if((WIFI_SPI_REPLY_DATA_START == temp_packets.head.command) || (WIFI_SPI_REPLY_DATA_END == temp_packets.head.command))
|
||||
if( ((WIFI_SPI_REPLY_DATA_START == temp_packets.head.command) || (WIFI_SPI_REPLY_DATA_END == temp_packets.head.command)) &&
|
||||
(temp_packets.head.length)
|
||||
)
|
||||
{
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>յ<EFBFBD><D5B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
if(temp_packets.head.length)
|
||||
if(length)
|
||||
{
|
||||
fifo_read_length = length >= temp_packets.head.length ? temp_packets.head.length : length;
|
||||
memcpy(buffer, temp_packets.buffer, fifo_read_length);
|
||||
buffer += fifo_read_length;
|
||||
length -= fifo_read_length;
|
||||
write_length += fifo_read_length;
|
||||
if(fifo_read_length < temp_packets.head.length) // <20>ⲿ<EFBFBD><E2B2BF><EFBFBD>岻<EFBFBD><E5B2BB><EFBFBD><EFBFBD><EFBFBD>ಿ<EFBFBD><E0B2BF>д<EFBFBD><D0B4>FIFO
|
||||
{
|
||||
fifo_write_buffer(&wifi_spi_fifo, temp_packets.buffer + fifo_read_length, temp_packets.head.length - fifo_read_length);
|
||||
}
|
||||
}
|
||||
else // ȫ<><C8AB>д<EFBFBD><D0B4>FIFO
|
||||
{
|
||||
fifo_write_buffer(&wifi_spi_fifo, temp_packets.buffer, temp_packets.head.length);
|
||||
}
|
||||
@@ -599,10 +717,9 @@ uint32 wifi_spi_read_buffer (uint8 *buffer, uint32 length)
|
||||
}while(WIFI_SPI_REPLY_DATA_START == temp_packets.head.command);
|
||||
wifi_spi_mutex = WIFI_SPI_IDLE;
|
||||
}
|
||||
#endif
|
||||
#endif
|
||||
|
||||
fifo_read_buffer(&wifi_spi_fifo, buffer, &data_len, FIFO_READ_AND_CLEAN);
|
||||
return data_len;
|
||||
return write_length;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------------------------------------------------------
|
||||
@@ -644,7 +761,11 @@ uint8 wifi_spi_init (char *wifi_ssid, char *pass_word)
|
||||
// MAC<41><43>ַ<EFBFBD><D6B7>Ϣ<EFBFBD><CFA2><EFBFBD>ַ<EFBFBD><D6B7><EFBFBD><EFBFBD><EFBFBD>ʽ<EFBFBD><CABD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>wifi_spi_mac_addr<64><72><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
wifi_spi_get_mac_addr();
|
||||
|
||||
|
||||
if(NULL == wifi_ssid)
|
||||
{
|
||||
// <20><>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ҫ<EFBFBD><D2AA><EFBFBD><EFBFBD>WIFI
|
||||
break;
|
||||
}
|
||||
return_state = wifi_spi_wifi_connect(wifi_ssid, pass_word);
|
||||
if(return_state)
|
||||
{
|
||||
|
||||
@@ -73,8 +73,8 @@
|
||||
#if (WIFI_SPI_AUTO_CONNECT > 2)
|
||||
#error "WIFI_SPI_AUTO_CONNECT <20><>ֵֻ<D6B5><D6BB>Ϊ [0,1,2]"
|
||||
#else
|
||||
#define WIFI_SPI_TARGET_IP "192.168.137.1" // <20><><EFBFBD><EFBFBD>Ŀ<EFBFBD><C4BF><EFBFBD><EFBFBD> IP
|
||||
#define WIFI_SPI_TARGET_PORT "8086" // <20><><EFBFBD><EFBFBD>Ŀ<EFBFBD><C4BF><EFBFBD>Ķ˿<C4B6>
|
||||
#define WIFI_SPI_TARGET_IP "192.168.2.37" // <20><><EFBFBD><EFBFBD>Ŀ<EFBFBD><C4BF><EFBFBD><EFBFBD> IP
|
||||
#define WIFI_SPI_TARGET_PORT "8080" // <20><><EFBFBD><EFBFBD>Ŀ<EFBFBD><C4BF><EFBFBD>Ķ˿<C4B6>
|
||||
#define WIFI_SPI_LOCAL_PORT "6666" // <20><><EFBFBD><EFBFBD><EFBFBD>Ķ˿<C4B6> 0<><30><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>÷<EFBFBD>Χ2048-65535 Ĭ<><C4AC> 6666
|
||||
#endif
|
||||
|
||||
@@ -95,10 +95,15 @@ typedef enum
|
||||
|
||||
WIFI_SPI_SET_WIFI_INFORMATION = 0x10, // <20><><EFBFBD><EFBFBD>WIFI<46><49>Ϣ<EFBFBD><CFA2><EFBFBD><EFBFBD>
|
||||
WIFI_SPI_SET_SOCKET_INFORMATION = 0x11, // <20><><EFBFBD><EFBFBD>SOCKET<45><54>Ϣ<EFBFBD><CFA2><EFBFBD><EFBFBD>
|
||||
WIFI_SPI_SET_WIFI_SCAN = 0x12, // <20><>ʼɨ<CABC><C9A8>WIFI
|
||||
WIFI_SPI_SET_READ_LENGTH = 0x13, // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD>
|
||||
|
||||
WIFI_SPI_GET_VERSION = 0x20, // <20><>ȡģ<C8A1><C4A3><EFBFBD>汾
|
||||
WIFI_SPI_GET_MAC_ADDR = 0x21, // <20><>ȡģ<C8A1><C4A3>MAC<41><43>ַ
|
||||
WIFI_SPI_GET_IP_ADDR = 0x22, // <20><>ȡģ<C8A1><C4A3>IP<49><50>ַ
|
||||
WIFI_SPI_GET_TIME1 = 0x23, // <20><>ȡʱ<C8A1><CAB1> <20><>ʽ1
|
||||
WIFI_SPI_GET_TIME2 = 0x24, // <20><>ȡʱ<C8A1><CAB1> <20><>ʽ2
|
||||
WIFI_SPI_GET_TIME3 = 0x25, // <20><>ȡʱ<C8A1><CAB1> <20><>ʽ3
|
||||
|
||||
// <20>ӻ<EFBFBD><D3BB>ش<EFBFBD><D8B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
WIFI_SPI_REPLY_OK = 0x80, // <20>ӻ<EFBFBD>Ӧ<EFBFBD><D3A6><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȷ<EFBFBD><C8B7><EFBFBD><EFBFBD>
|
||||
@@ -110,6 +115,9 @@ typedef enum
|
||||
WIFI_SPI_REPLY_VERSION = 0xA0, // <20>ӻ<EFBFBD><D3BB>ظ<EFBFBD><D8B8>̼<EFBFBD><CCBC>汾
|
||||
WIFI_SPI_REPLY_MAC_ADDR = 0xA1, // <20>ӻ<EFBFBD><D3BB>ظ<EFBFBD><D8B8><EFBFBD><EFBFBD><EFBFBD>MAC<41><43>ַ<EFBFBD><D6B7><EFBFBD><EFBFBD>Ϣ
|
||||
WIFI_SPI_REPLY_IP_ADDR = 0xA2, // <20>ӻ<EFBFBD><D3BB>ظ<EFBFBD><D8B8><EFBFBD><EFBFBD><EFBFBD>IP<49><50>ַ<EFBFBD><D6B7><EFBFBD>˿ں<CBBF>
|
||||
WIFI_SPI_REPLY_TIME1 = 0xA3, // <20>ӻ<EFBFBD><D3BB>ظ<EFBFBD>ʱ<EFBFBD><CAB1>
|
||||
WIFI_SPI_REPLY_TIME2 = 0xA4, // <20>ӻ<EFBFBD><D3BB>ظ<EFBFBD>ʱ<EFBFBD><CAB1>
|
||||
WIFI_SPI_REPLY_TIME3 = 0xA5, // <20>ӻ<EFBFBD><D3BB>ظ<EFBFBD>ʱ<EFBFBD><CAB1>
|
||||
WIFI_SPI_INVALID2 = 0xFF // <20><>Ч<EFBFBD><D0A7><EFBFBD>ݰ<EFBFBD>
|
||||
}wifi_spi_packets_command_enum;
|
||||
|
||||
@@ -134,19 +142,27 @@ typedef struct
|
||||
uint8 buffer[WIFI_SPI_RECVIVE_SIZE]; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
}wifi_spi_packets_struct;
|
||||
|
||||
|
||||
typedef enum
|
||||
{
|
||||
WIFI_SPI_UTC_0 = 1, // <20><><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1>
|
||||
WIFI_SPI_GMT, // <20><><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1> ת<><D7AA>ΪGMT<4D><54>ʽ<EFBFBD><CABD><EFBFBD><EFBFBD><EFBFBD><D7BA><EFBFBD><EFBFBD>GMT һ<><D2BB><EFBFBD><EFBFBD><EFBFBD>ڶԽ<DAB6><D4BD>ƶ˴<C6B6>ģ<EFBFBD><C4A3>ʹ<EFBFBD><CAB9>
|
||||
WIFI_SPI_UTC_8, // <20><><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1>
|
||||
}wifi_spi_time_enum;
|
||||
|
||||
extern char wifi_spi_version[12]; // <20>̼<EFBFBD><CCBC>汾 <20>ַ<EFBFBD><D6B7><EFBFBD>
|
||||
extern char wifi_spi_mac_addr[20]; // ģ<><C4A3>MAC<41><43>ַ <20>ַ<EFBFBD><D6B7><EFBFBD>
|
||||
extern char wifi_spi_ip_addr_port[25]; // IP<49><50>ַ<EFBFBD><D6B7><EFBFBD>˿ں<CBBF> <20>ַ<EFBFBD><D6B7><EFBFBD>
|
||||
|
||||
uint8 wifi_spi_wifi_connect (char *wifi_ssid, char *pass_word);
|
||||
uint8 wifi_spi_socket_connect (char *transport_type, char *ip_addr, char *port, char *local_port);
|
||||
uint8 wifi_spi_socket_disconnect (void);
|
||||
uint8 wifi_spi_udp_send_now (void);
|
||||
uint32 wifi_spi_send_buffer (const uint8 *buff, uint32 length);
|
||||
uint32 wifi_spi_read_buffer (uint8 *buffer, uint32 length);
|
||||
uint8 wifi_spi_get_time (wifi_spi_time_enum time_format, char *buffer, uint8 buffer_size);
|
||||
uint8 wifi_spi_wifi_scan (char *buffer, uint16 buffer_size);
|
||||
uint8 wifi_spi_wifi_connect (char *wifi_ssid, char *pass_word);
|
||||
uint8 wifi_spi_socket_connect (char *transport_type, char *ip_addr, char *port, char *local_port);
|
||||
uint8 wifi_spi_socket_disconnect (void);
|
||||
uint8 wifi_spi_udp_send_now (void);
|
||||
uint32 wifi_spi_send_buffer (const uint8 *buff, uint32 length);
|
||||
void wifi_spi_send_string (const char *string);
|
||||
uint32 wifi_spi_read_buffer (uint8 *buffer, uint32 length);
|
||||
|
||||
uint8 wifi_spi_init (char *wifi_ssid, char *pass_word);
|
||||
uint8 wifi_spi_init (char *wifi_ssid, char *pass_word);
|
||||
|
||||
#endif
|
||||
|
||||
|
||||
@@ -73,7 +73,7 @@
|
||||
#if (WIFI_UART_AUTO_CONNECT > 3)
|
||||
#error "WIFI_UART_AUTO_CONNECT <20><>ֵֻ<D6B5><D6BB>Ϊ [0,1,2,3]"
|
||||
#else
|
||||
#define WIFI_UART_TARGET_IP "192.168.137.1" // <20><><EFBFBD><EFBFBD>Ŀ<EFBFBD><C4BF><EFBFBD><EFBFBD> IP
|
||||
#define WIFI_UART_TARGET_IP "192.168.2.37" // <20><><EFBFBD><EFBFBD>Ŀ<EFBFBD><C4BF><EFBFBD><EFBFBD> IP
|
||||
#define WIFI_UART_TARGET_PORT "8080" // <20><><EFBFBD><EFBFBD>Ŀ<EFBFBD><C4BF><EFBFBD>Ķ˿<C4B6>
|
||||
#define WIFI_UART_LOCAL_PORT "8080" // <20><><EFBFBD><EFBFBD><EFBFBD>˿<EFBFBD>
|
||||
#endif
|
||||
|
||||
@@ -171,7 +171,7 @@ void encoder_clear_count (encoder_index_enum encoder_n)
|
||||
//-------------------------------------------------------------------------------------------------------------------
|
||||
void encoder_quad_init (encoder_index_enum encoder_n, encoder_channel1_enum ch1_pin, encoder_channel2_enum ch2_pin)
|
||||
{
|
||||
// zf_assert(encoder_n <= TIM4_ENCODER); // <20><>ȫ<EFBFBD><C8AB><EFBFBD><EFBFBD><EFBFBD>ɼ<EFBFBD><C9BC><EFBFBD> TIM2 TIM3 TIM4֧<34><D6A7> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ﱨ<EFBFBD><EFB1A8> <20><><EFBFBD>Գ<EFBFBD><D4B3><EFBFBD>ʹ<EFBFBD><CAB9><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ķ<EFBFBD><C4B7><EFBFBD><EFBFBD><EFBFBD>ʼ<EFBFBD><CABC>encoder_dir_init
|
||||
zf_assert(encoder_n <= TIM4_ENCODER); // <20><>ȫ<EFBFBD><C8AB><EFBFBD><EFBFBD><EFBFBD>ɼ<EFBFBD><C9BC><EFBFBD> TIM2 TIM3 TIM4֧<34><D6A7> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ﱨ<EFBFBD><EFB1A8> <20><><EFBFBD>Գ<EFBFBD><D4B3><EFBFBD>ʹ<EFBFBD><CAB9><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ķ<EFBFBD><C4B7><EFBFBD><EFBFBD><EFBFBD>ʼ<EFBFBD><CABC>encoder_dir_init
|
||||
|
||||
IfxGpt12_enableModule(&MODULE_GPT120);
|
||||
IfxGpt12_setGpt1BlockPrescaler(&MODULE_GPT120, IfxGpt12_Gpt1BlockPrescaler_4);
|
||||
|
||||
@@ -40,14 +40,14 @@
|
||||
// <20><EFBFBD>˵ʵ<CBB5><CAB5><EFBFBD>Ͻ<EFBFBD><CFBD><EFBFBD><EFBFBD>жϺ<D0B6>TCϵ<43>е<EFBFBD>Ӳ<EFBFBD><D3B2><EFBFBD>Զ<EFBFBD><D4B6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> interrupt_global_disable(); <20><><EFBFBD>ܾ<EFBFBD><DCBE><EFBFBD>Ӧ<EFBFBD>κε<CEBA><CEB5>жϣ<D0B6><CFA3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ҫ<EFBFBD><D2AA><EFBFBD><EFBFBD><EFBFBD>Լ<EFBFBD><D4BC>ֶ<EFBFBD><D6B6><EFBFBD><EFBFBD><EFBFBD> interrupt_global_enable(0); <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>жϵ<D0B6><CFB5><EFBFBD>Ӧ<EFBFBD><D3A6>
|
||||
|
||||
// **************************** PIT<49>жϺ<D0B6><CFBA><EFBFBD> ****************************
|
||||
IFX_INTERRUPT(cc60_pit_ch0_isr, 0, CCU6_0_CH0_ISR_PRIORITY)
|
||||
{
|
||||
interrupt_global_enable(0); // <20><><EFBFBD><EFBFBD><EFBFBD>ж<EFBFBD>Ƕ<EFBFBD><C7B6>
|
||||
pit_clear_flag(CCU60_CH0);
|
||||
|
||||
|
||||
|
||||
}
|
||||
//IFX_INTERRUPT(cc60_pit_ch0_isr, 0, CCU6_0_CH0_ISR_PRIORITY)
|
||||
//{
|
||||
// interrupt_global_enable(0); // <20><><EFBFBD><EFBFBD><EFBFBD>ж<EFBFBD>Ƕ<EFBFBD><C7B6>
|
||||
// pit_clear_flag(CCU60_CH0);
|
||||
//
|
||||
//
|
||||
//
|
||||
//}
|
||||
|
||||
|
||||
IFX_INTERRUPT(cc60_pit_ch1_isr, 0, CCU6_0_CH1_ISR_PRIORITY)
|
||||
@@ -89,7 +89,8 @@ IFX_INTERRUPT(exti_ch0_ch4_isr, 0, EXTI_CH0_CH4_INT_PRIO)
|
||||
if(exti_flag_get(ERU_CH0_REQ0_P15_4)) // ͨ<><CDA8>0<EFBFBD>ж<EFBFBD>
|
||||
{
|
||||
exti_flag_clear(ERU_CH0_REQ0_P15_4);
|
||||
|
||||
|
||||
imu660rc_callback(); // 660RC ģ<><C4A3> INT <20><><EFBFBD><EFBFBD><EFBFBD>ж<EFBFBD>
|
||||
}
|
||||
|
||||
if(exti_flag_get(ERU_CH4_REQ13_P15_5)) // ͨ<><CDA8>4<EFBFBD>ж<EFBFBD>
|
||||
@@ -118,7 +119,6 @@ IFX_INTERRUPT(exti_ch1_ch5_isr, 0, EXTI_CH1_CH5_INT_PRIO)
|
||||
{
|
||||
exti_flag_clear(ERU_CH5_REQ1_P15_8);
|
||||
|
||||
|
||||
|
||||
}
|
||||
}
|
||||
@@ -136,7 +136,6 @@ IFX_INTERRUPT(exti_ch1_ch5_isr, 0, EXTI_CH1_CH5_INT_PRIO)
|
||||
// exti_flag_clear(ERU_CH6_REQ9_P20_0);
|
||||
// }
|
||||
// }
|
||||
|
||||
IFX_INTERRUPT(exti_ch3_ch7_isr, 0, EXTI_CH3_CH7_INT_PRIO)
|
||||
{
|
||||
interrupt_global_enable(0); // <20><><EFBFBD><EFBFBD><EFBFBD>ж<EFBFBD>Ƕ<EFBFBD><C7B6>
|
||||
@@ -229,7 +228,7 @@ IFX_INTERRUPT(uart3_tx_isr, 0, UART3_TX_INT_PRIO)
|
||||
IFX_INTERRUPT(uart3_rx_isr, 0, UART3_RX_INT_PRIO)
|
||||
{
|
||||
interrupt_global_enable(0); // <20><><EFBFBD><EFBFBD><EFBFBD>ж<EFBFBD>Ƕ<EFBFBD><C7B6>
|
||||
gnss_uart_callback(); // GPS<EFBFBD><EFBFBD><EFBFBD>ڻص<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
gnss_uart_callback(); // GNSS<EFBFBD><EFBFBD><EFBFBD>ڻص<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -1,3 +1,13 @@
|
||||
V3.4.4
|
||||
<20><><EFBFBD><EFBFBD>SCC8660<36><30><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʽ
|
||||
<20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ָ<EFBFBD><D6B8><EFBFBD>V2<56><32><EFBFBD><EFBFBD>
|
||||
<20><EFBFBD>ips200<30><30>ʾscc8660<36><30><EFBFBD><EFBFBD>ͷ<EFBFBD><CDB7>ʽ
|
||||
<20><EFBFBD>ips114<31><34>ʾscc8660<36><30><EFBFBD><EFBFBD>ͷ<EFBFBD><CDB7>ʽ
|
||||
V3.4.3
|
||||
<09><><EFBFBD><EFBFBD>660RC<52><43><EFBFBD><EFBFBD>
|
||||
V3.4.2
|
||||
<09><EFBFBD>printf<74>ض<EFBFBD><D8B6><EFBFBD><EFBFBD>еĺ궨<C4BA><EAB6A8>
|
||||
<09><><EFBFBD><EFBFBD>WIFI_SPI<50><49><EFBFBD><EFBFBD>
|
||||
V3.4.1
|
||||
<09>Ĵ<DEB8><C4B4>ڷ<EFBFBD><DAB7><EFBFBD><EFBFBD><EFBFBD><EFBFBD>麯<EFBFBD><E9BAAF><EFBFBD>еķ<D0B5><C4B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
<09><EFBFBD>ips200proע<6F><D7A2>
|
||||
|
||||
@@ -91,6 +91,7 @@
|
||||
#include "zf_device_imu660ra.h"
|
||||
#include "zf_device_imu660rb.h"
|
||||
#include "zf_device_imu660rx.h"
|
||||
#include "zf_device_imu660rc.h"
|
||||
#include "zf_device_imu963ra.h"
|
||||
#include "zf_device_ips114.h"
|
||||
#include "zf_device_ips200.h"
|
||||
|
||||
@@ -45,7 +45,7 @@
|
||||
//-------------------------------------------------------------------------------------------------------------------
|
||||
int fputc(int ch, FILE *stream)
|
||||
{
|
||||
uart_write_byte(DEBUG_UART_INDEX, (char)ch);
|
||||
uart_write_byte(PRINTF_USE_UART, (char)ch);
|
||||
|
||||
return (ch);
|
||||
}
|
||||
@@ -71,7 +71,7 @@ int _write(int fd, char *buf, int len)
|
||||
int fgetc(FILE *f)
|
||||
{
|
||||
#if PRINTF_OUTPUT_TYPE == 0
|
||||
return uart_read_byte(DEBUG_UART_INDEX);
|
||||
return uart_read_byte(PRINTF_USE_UART);
|
||||
#else
|
||||
uint8 buf;
|
||||
wifi_spi_read_buffer(&buf, 1);
|
||||
|
||||
@@ -1,20 +1,20 @@
|
||||
/*********************************************************************************************************************
|
||||
* 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>
|
||||
* RT1064DVL6A Opensourec Library <20><><EFBFBD><EFBFBD>RT1064DVL6A <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><C4BC><EFBFBD> RT1064DVL6A <20><>Դ<EFBFBD><D4B4><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD>
|
||||
*
|
||||
* RT1064DVL6A <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>
|
||||
@@ -24,423 +24,519 @@
|
||||
* <20>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD><EFBFBD> seekfree_assistant
|
||||
* <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.10.2
|
||||
* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ADS v1.9.4
|
||||
* <20><><EFBFBD><EFBFBD>ƽ̨ TC264D
|
||||
* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> https://seekfree.taobao.com/
|
||||
*
|
||||
*
|
||||
* <20>ļ<DEB8>¼
|
||||
* <20><><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>ע
|
||||
* 2024-01-01 pudding first version
|
||||
* <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><>ע
|
||||
* 2024-1-11 SeekFree first version
|
||||
********************************************************************************************************************/
|
||||
|
||||
#include "zf_common_debug.h"
|
||||
|
||||
#include "seekfree_assistant.h"
|
||||
|
||||
// ͨ<><CDA8><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ö<EFBFBD><C3B6>
|
||||
typedef enum
|
||||
{
|
||||
SEEKFREE_ASSISTANT_SEND_CCD_CMD = 0x01 ,
|
||||
SEEKFREE_ASSISTANT_SEND_CAMERA_CMD ,
|
||||
SEEKFREE_ASSISTANT_SEND_CAMERA_BOUNDARY_CMD ,
|
||||
SEEKFREE_ASSISTANT_SEND_CAMERA_RECTANGULAR_CMD ,
|
||||
|
||||
extern uint32 seekfree_assistant_transfer (const uint8 *buff, uint32 length);
|
||||
extern uint32 seekfree_assistant_receive (uint8 *buff, uint32 length);
|
||||
SEEKFREE_ASSISTANT_SEND_OSCILLOSCOPE_CMD = 0x10 ,
|
||||
|
||||
#if (1 == SEEKFREE_ASSISTANT_SET_PARAMETR_ENABLE)
|
||||
SEEKFREE_ASSISTANT_RECEIVE_DEBUG_PARAM_CMD = 0x20 ,
|
||||
}seekfree_assistant_cmd_type_enum;
|
||||
|
||||
#define SEEKFREE_ASSISTANT_SEND_HEAD ( 0xAA ) // <20><>Ƭ<EFBFBD><C6AC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>λ<EFBFBD><CEBB><EFBFBD><EFBFBD><EFBFBD>͵<EFBFBD>֡ͷ
|
||||
#define SEEKFREE_ASSISTANT_RECEIVE_HEAD ( 0x55 ) // <20><>λ<EFBFBD><CEBB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƭ<EFBFBD><C6AC><EFBFBD><EFBFBD><EFBFBD>͵<EFBFBD>֡ͷ
|
||||
|
||||
// <20><><EFBFBD>ݷ<EFBFBD><DDB7>ͺ<EFBFBD><CDBA><EFBFBD>ָ<EFBFBD><D6B8><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
extern uint32 seekfree_assistant_transfer (const uint8 *buff, uint32 length);
|
||||
seekfree_assistant_transfer_callback_function seekfree_assistant_transfer_callback = seekfree_assistant_transfer;
|
||||
|
||||
// <20><><EFBFBD>ݽ<EFBFBD><DDBD>պ<EFBFBD><D5BA><EFBFBD>ָ<EFBFBD><D6B8><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
extern uint32 seekfree_assistant_receive (uint8 *buff, uint32 length);
|
||||
seekfree_assistant_receive_callback_function seekfree_assistant_receive_callback = seekfree_assistant_receive;
|
||||
|
||||
#if (SEEKFREE_ASSISTANT_DEBUG_PARAM_ENABLE)
|
||||
#include "zf_common_fifo.h"
|
||||
static uint8 seekfree_assistant_buffer[SEEKFREE_ASSISTANT_BUFFER_SIZE]; // FIFO<46><4F><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
static fifo_struct seekfree_assistant_fifo = // FIFO<46>ṹ<EFBFBD><E1B9B9>
|
||||
static uint8 seekfree_assistant_debug_param_buffer[SEEKFREE_ASSISTANT_DEBUG_PARAM_BUFFER_SIZE];
|
||||
static fifo_struct seekfree_assistant_debug_param_fifo =
|
||||
{
|
||||
.buffer = seekfree_assistant_buffer,
|
||||
.buffer = seekfree_assistant_debug_param_buffer,
|
||||
.execution = FIFO_IDLE,
|
||||
.type = FIFO_DATA_8BIT,
|
||||
.head = 0,
|
||||
.end = 0,
|
||||
.size = SEEKFREE_ASSISTANT_BUFFER_SIZE,
|
||||
.max = SEEKFREE_ASSISTANT_BUFFER_SIZE,
|
||||
};
|
||||
.size = SEEKFREE_ASSISTANT_DEBUG_PARAM_BUFFER_SIZE,
|
||||
.max = SEEKFREE_ASSISTANT_DEBUG_PARAM_BUFFER_SIZE,
|
||||
};
|
||||
#endif
|
||||
|
||||
static seekfree_assistant_camera_struct seekfree_assistant_camera_data; // ͼ<><CDBC><EFBFBD><EFBFBD>λ<EFBFBD><CEBB>Э<EFBFBD><D0AD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
static seekfree_assistant_camera_dot_struct seekfree_assistant_camera_dot_data; // ͼ<><CDBC><EFBFBD><EFBFBD>λ<EFBFBD><CEBB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Э<EFBFBD><D0AD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
static seekfree_assistant_camera_buffer_struct seekfree_assistant_camera_buffer; // ͼ<><CDBC><EFBFBD>Լ<EFBFBD><D4BC>߽绺<DFBD><E7BBBA><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ
|
||||
|
||||
seekfree_assistant_transfer_callback_function seekfree_assistant_transfer_callback = seekfree_assistant_transfer; // <20><><EFBFBD>ݷ<EFBFBD><DDB7>ͺ<EFBFBD><CDBA><EFBFBD>ָ<EFBFBD><D6B8>
|
||||
seekfree_assistant_receive_callback_function seekfree_assistant_receive_callback = seekfree_assistant_receive; // <20><><EFBFBD>ݽ<EFBFBD><DDBD>պ<EFBFBD><D5BA><EFBFBD>ָ<EFBFBD><D6B8>
|
||||
|
||||
seekfree_assistant_oscilloscope_struct seekfree_assistant_oscilloscope_data; // <20><><EFBFBD><EFBFBD>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
float seekfree_assistant_parameter[SEEKFREE_ASSISTANT_SET_PARAMETR_COUNT] = {0}; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>յ<EFBFBD><D5B5>IJ<EFBFBD><C4B2><EFBFBD>
|
||||
vuint8 seekfree_assistant_parameter_update_flag[SEEKFREE_ASSISTANT_SET_PARAMETR_COUNT] = {0}; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>±<EFBFBD>־λ
|
||||
|
||||
//-------------------------------------------------------------------------------------------------------------------
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͺ<EFBFBD><CDBA><EFBFBD>
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> *buffer <20><>ҪУ<D2AA><D0A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݵ<EFBFBD>ַ
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> length У<>鳤<EFBFBD><E9B3A4>
|
||||
// <20><><EFBFBD>ز<EFBFBD><D8B2><EFBFBD> uint8 <20><>ֵ
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> *buffer <EFBFBD><EFBFBD>ҪУ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݵ<EFBFBD>ַ
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> length У<EFBFBD>鳤<EFBFBD><EFBFBD>
|
||||
// <20><><EFBFBD>ز<EFBFBD><D8B2><EFBFBD> uint8 <EFBFBD><EFBFBD>ֵ
|
||||
// ʹ<><CAB9>ʾ<EFBFBD><CABE>
|
||||
//-------------------------------------------------------------------------------------------------------------------
|
||||
static uint8 seekfree_assistant_sum (uint8 *buffer, uint32 length)
|
||||
static uint8 seekfree_assistant_sum (void *buffer, uint32 length)
|
||||
{
|
||||
uint8 temp_sum = 0;
|
||||
uint8 *ptr = (uint8 *)buffer;
|
||||
|
||||
while(length--)
|
||||
{
|
||||
temp_sum += *buffer++;
|
||||
temp_sum += *ptr ++;
|
||||
}
|
||||
|
||||
return temp_sum;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------------------------------------------------------
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ͼ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͺ<EFBFBD><EFBFBD><EFBFBD>
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> camera_type <20><><EFBFBD><EFBFBD>ͷ<EFBFBD><CDB7><EFBFBD><EFBFBD>
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> *image_addr ͼ<><CDBC><EFBFBD><EFBFBD>ַ
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> boundary_num ͼ<><CDBC><EFBFBD>а<EFBFBD><D0B0><EFBFBD><EFBFBD>߽<EFBFBD><DFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> width ͼ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> height ͼ<EFBFBD><EFBFBD><EFBFBD>߶<EFBFBD>
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> CCD ͼ<><CDBC> <20><EFBFBD><EFBFBD><EFBFBD>
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> *ccd_obj CCD <20><><EFBFBD>ݽṹ<EFBFBD><EFBFBD>
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> data_type <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> seekfree_assistant_data_type_enum
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> channel_index CCD ͨ<EFBFBD><EFBFBD>
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> channel_color ͨ<EFBFBD><EFBFBD>Ҫʹ<EFBFBD>õ<EFBFBD><EFBFBD><EFBFBD>ɫ
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> data_lenght CCD <20><><EFBFBD>ݳ<EFBFBD><DDB3><EFBFBD>
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> *data_buffer CCD <20><><EFBFBD>ݻ<EFBFBD><DDBB><EFBFBD><EFBFBD><EFBFBD>
|
||||
// <20><><EFBFBD>ز<EFBFBD><D8B2><EFBFBD> void
|
||||
// ʹ<><CAB9>ʾ<EFBFBD><CABE>
|
||||
// ʹ<><CAB9>ʾ<EFBFBD><CABE> seekfree_assistant_ccd_config(ccd_obj, data_type, channel_index, channel_color, data_lenght, data_buffer);
|
||||
//-------------------------------------------------------------------------------------------------------------------
|
||||
void seekfree_assistant_camera_data_send (seekfree_assistant_image_type_enum camera_type, void *image_addr, uint8 boundary_num, uint16 width, uint16 height)
|
||||
void seekfree_assistant_ccd_config (
|
||||
seekfree_assistant_ccd_struct *ccd_obj,
|
||||
seekfree_assistant_data_type_enum data_type,
|
||||
uint8 channel_index,
|
||||
uint16 channel_color,
|
||||
uint16 data_lenght,
|
||||
void *data_buffer)
|
||||
{
|
||||
uint32 image_size = 0;
|
||||
zf_assert(NULL != ccd_obj);
|
||||
zf_assert(NULL != data_buffer);
|
||||
|
||||
seekfree_assistant_camera_data.head = SEEKFREE_ASSISTANT_SEND_HEAD;
|
||||
seekfree_assistant_camera_data.function = SEEKFREE_ASSISTANT_CAMERA_FUNCTION;
|
||||
seekfree_assistant_camera_data.camera_type = (camera_type << 5) | ((image_addr != NULL ? 0 : 1) << 4) | boundary_num;
|
||||
// д<><D0B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ<EFBFBD><CFA2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Э<EFBFBD>鲿<EFBFBD><E9B2BF>
|
||||
seekfree_assistant_camera_data.length = sizeof(seekfree_assistant_camera_struct);
|
||||
seekfree_assistant_camera_data.image_width = width;
|
||||
seekfree_assistant_camera_data.image_height = height;
|
||||
memset(ccd_obj, 0, sizeof(seekfree_assistant_ccd_struct));
|
||||
ccd_obj->config.head = SEEKFREE_ASSISTANT_SEND_HEAD;
|
||||
ccd_obj->config.cmd = SEEKFREE_ASSISTANT_SEND_CCD_CMD;
|
||||
ccd_obj->config.channel_index = channel_index;
|
||||
|
||||
// <20><><EFBFBD>ȷ<EFBFBD><C8B7><EFBFBD>֡ͷ<D6A1><CDB7><EFBFBD><EFBFBD><EFBFBD>ܡ<EFBFBD><DCA1><EFBFBD><EFBFBD><EFBFBD>ͷ<EFBFBD><CDB7><EFBFBD>͡<EFBFBD><CDA1>Լ<EFBFBD><D4BC><EFBFBD><EFBFBD>ȸ߶ȵ<DFB6><C8B5><EFBFBD>Ϣ
|
||||
seekfree_assistant_transfer_callback((const uint8 *)&seekfree_assistant_camera_data, sizeof(seekfree_assistant_camera_struct));
|
||||
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͷ<EFBFBD><CDB7><EFBFBD>ͼ<EFBFBD><CDBC><EFBFBD>ͼ<EFBFBD><CDBC><EFBFBD><EFBFBD>С
|
||||
switch(camera_type)
|
||||
uint16 data_max = 256;
|
||||
uint8 loop_count = SEEKFREE_ASSISTANT_CCD_RESOLUTION_DEFAULT;
|
||||
loop_count = (2 >= loop_count) ? (loop_count) : (2);
|
||||
for(uint8 i = 0; loop_count > i; i ++)
|
||||
{
|
||||
case SEEKFREE_ASSISTANT_OV7725_BIN:
|
||||
{
|
||||
image_size = width * height / 8;
|
||||
}break;
|
||||
|
||||
case SEEKFREE_ASSISTANT_MT9V03X:
|
||||
{
|
||||
image_size = width * height;
|
||||
}break;
|
||||
|
||||
case SEEKFREE_ASSISTANT_SCC8660:
|
||||
{
|
||||
image_size = width * height * 2;
|
||||
}break;
|
||||
data_max *= 4;
|
||||
}
|
||||
|
||||
// <20><><EFBFBD><EFBFBD>ͼ<EFBFBD><CDBC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
if(NULL != image_addr)
|
||||
#if (SEEKFREE_ASSISTANT_STC_DATA_ENABLE)
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> STC <20><>ô<EFBFBD><C3B4>С<EFBFBD>˷<EFBFBD>һ<EFBFBD><D2BB>
|
||||
ccd_obj->config.data_lenght_buffer[0] = (uint8)((data_lenght >> 8) & 0x00FF);
|
||||
ccd_obj->config.data_lenght_buffer[1] = (uint8)((data_lenght >> 0) & 0x00FF);
|
||||
ccd_obj->config.channel_color_buffer[0] = (uint8)((channel_color >> 8) & 0x00FF);
|
||||
ccd_obj->config.channel_color_buffer[1] = (uint8)((channel_color >> 0) & 0x00FF);
|
||||
ccd_obj->config.channel_data_max[0] = (uint8)((data_max >> 8) & 0x00FF);
|
||||
ccd_obj->config.channel_data_max[1] = (uint8)((data_max >> 0) & 0x00FF);
|
||||
#else
|
||||
ccd_obj->config.data_lenght_buffer[0] = (uint8)((data_lenght >> 0) & 0x00FF);
|
||||
ccd_obj->config.data_lenght_buffer[1] = (uint8)((data_lenght >> 8) & 0x00FF);
|
||||
ccd_obj->config.channel_color_buffer[0] = (uint8)((channel_color >> 0) & 0x00FF);
|
||||
ccd_obj->config.channel_color_buffer[1] = (uint8)((channel_color >> 8) & 0x00FF);
|
||||
ccd_obj->config.channel_data_max[0] = (uint8)((data_max >> 0) & 0x00FF);
|
||||
ccd_obj->config.channel_data_max[1] = (uint8)((data_max >> 8) & 0x00FF);
|
||||
#endif
|
||||
|
||||
if( SEEKFREE_ASSISTANT_STC_DATA_ENABLE
|
||||
&& SEEKFREE_ASSISTANT_DATA_TYPE_UINT16 == data_type)
|
||||
{ // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> uint16 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> STC <20><>Ƭ<EFBFBD><C6AC> <20><>ô<EFBFBD><C3B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ 0x02
|
||||
ccd_obj->config.data_type = data_type + 1;
|
||||
}
|
||||
else
|
||||
{ // <20><><EFBFBD><EFBFBD><EFBFBD>Ļ<EFBFBD><C4BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> uint8 <20><><EFBFBD>ݻ<EFBFBD><DDBB><EFBFBD> uint16 <20><><EFBFBD><EFBFBD>
|
||||
ccd_obj->config.data_type = data_type;
|
||||
}
|
||||
|
||||
// <20><>¼ʵ<C2BC><CAB5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֽ<EFBFBD><D6BD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> uint16 <20><><EFBFBD><EFBFBD>Ҫ<EFBFBD><D2AA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݳ<EFBFBD><DDB3><EFBFBD>
|
||||
ccd_obj->buffer_byte_size = data_lenght * ((data_type) ? (2) : (1));
|
||||
// Ȼ<><C8BB><EFBFBD><EFBFBD>¼<EFBFBD><C2BC>Ӧ<EFBFBD><D3A6><EFBFBD>ݻ<EFBFBD><DDBB><EFBFBD><EFBFBD><EFBFBD>
|
||||
ccd_obj->data_buffer = data_buffer;
|
||||
|
||||
// <20><>У<EFBFBD><D0A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
ccd_obj->config.check_sum = SEEKFREE_ASSISTANT_SEND_HEAD;
|
||||
ccd_obj->config.check_sum += seekfree_assistant_sum(
|
||||
&(ccd_obj->config.cmd),
|
||||
sizeof(ccd_obj->config) - 2);
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------------------------------------------------------
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> CCD ͼ<><CDBC> <20><><EFBFBD>ͺ<EFBFBD><CDBA><EFBFBD>
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> *ccd_obj CCD <20><><EFBFBD>ݽṹ<DDBD><E1B9B9>
|
||||
// <20><><EFBFBD>ز<EFBFBD><D8B2><EFBFBD> void
|
||||
// ʹ<><CAB9>ʾ<EFBFBD><CABE> seekfree_assistant_ccd_send(ccd_obj);
|
||||
//-------------------------------------------------------------------------------------------------------------------
|
||||
void seekfree_assistant_ccd_send (seekfree_assistant_ccd_struct *ccd_obj)
|
||||
{
|
||||
seekfree_assistant_transfer_callback(
|
||||
(const uint8 *)ccd_obj,
|
||||
sizeof(ccd_obj->config));
|
||||
seekfree_assistant_transfer_callback(
|
||||
(const uint8 *)(ccd_obj->data_buffer),
|
||||
ccd_obj->buffer_byte_size);
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------------------------------------------------------
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> CAMERA ͼ<><CDBC> <20><><EFBFBD><EFBFBD>
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> *camera_obj CAMERA <20><><EFBFBD>ݽṹ<DDBD><E1B9B9>
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> camera_type CAMERA <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> seekfree_assistant_camera_type_enum
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> image_width CAMERA ͼ<><CDBC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> image_height CAMERA ͼ<><CDBC><EFBFBD>߶<EFBFBD>
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> *data_buffer CAMERA ͼ<><EFBFBD><F1BBBAB3><EFBFBD>
|
||||
// <20><><EFBFBD>ز<EFBFBD><D8B2><EFBFBD> void
|
||||
// ʹ<><CAB9>ʾ<EFBFBD><CABE> seekfree_assistant_camera_config(camera_obj, camera_type, image_width, image_height, data_buffer);
|
||||
//-------------------------------------------------------------------------------------------------------------------
|
||||
void seekfree_assistant_camera_config (
|
||||
seekfree_assistant_camera_struct *camera_obj,
|
||||
seekfree_assistant_camera_type_enum camera_type,
|
||||
uint16 image_width,
|
||||
uint16 image_height,
|
||||
void *data_buffer)
|
||||
{
|
||||
zf_assert(NULL != camera_obj);
|
||||
|
||||
memset(camera_obj, 0, sizeof(seekfree_assistant_camera_struct));
|
||||
camera_obj->config.head = SEEKFREE_ASSISTANT_SEND_HEAD;
|
||||
camera_obj->config.cmd = SEEKFREE_ASSISTANT_SEND_CAMERA_CMD;
|
||||
camera_obj->config.camera_type = camera_type;
|
||||
|
||||
#if (SEEKFREE_ASSISTANT_STC_DATA_ENABLE)
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> STC <20><>ô<EFBFBD><C3B4>С<EFBFBD>˷<EFBFBD>һ<EFBFBD><D2BB>
|
||||
camera_obj->config.image_width_buffer[0] = (uint8)((image_width >> 8) & 0x00FF);
|
||||
camera_obj->config.image_width_buffer[1] = (uint8)((image_width >> 0) & 0x00FF);
|
||||
camera_obj->config.image_height_buffer[0] = (uint8)((image_height >> 8) & 0x00FF);
|
||||
camera_obj->config.image_height_buffer[1] = (uint8)((image_height >> 0) & 0x00FF);
|
||||
#else
|
||||
camera_obj->config.image_width_buffer[0] = (uint8)((image_width >> 0) & 0x00FF);
|
||||
camera_obj->config.image_width_buffer[1] = (uint8)((image_width >> 8) & 0x00FF);
|
||||
camera_obj->config.image_height_buffer[0] = (uint8)((image_height >> 0) & 0x00FF);
|
||||
camera_obj->config.image_height_buffer[1] = (uint8)((image_height >> 8) & 0x00FF);
|
||||
#endif
|
||||
|
||||
if( SEEKFREE_ASSISTANT_STC_DATA_ENABLE
|
||||
&& SEEKFREE_ASSISTANT_CAMERA_TYPE_RGB565 == camera_type
|
||||
&& NULL != data_buffer)
|
||||
{
|
||||
seekfree_assistant_transfer_callback(image_addr, image_size);
|
||||
camera_obj->config.data_type = 0x02;
|
||||
}
|
||||
else
|
||||
{
|
||||
camera_obj->config.data_type = (NULL == data_buffer) ? (0x00) : (0x01);
|
||||
}
|
||||
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> RGB565 ͼ<><CDBC> <20><>ô<EFBFBD><C3B4><EFBFBD><EFBFBD><EFBFBD>ֽ<EFBFBD><D6BD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
camera_obj->buffer_byte_size =
|
||||
image_width * image_height
|
||||
* ((SEEKFREE_ASSISTANT_CAMERA_TYPE_RGB565 == camera_type) ? (2) : (1));
|
||||
camera_obj->buffer_byte_size =
|
||||
(SEEKFREE_ASSISTANT_CAMERA_TYPE_BINARY == camera_type)
|
||||
? (camera_obj->buffer_byte_size / 8)
|
||||
: (camera_obj->buffer_byte_size);
|
||||
camera_obj->data_buffer = data_buffer;
|
||||
|
||||
// <20><>У<EFBFBD><D0A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
camera_obj->config.check_sum = SEEKFREE_ASSISTANT_SEND_HEAD;
|
||||
camera_obj->config.check_sum += seekfree_assistant_sum(
|
||||
&(camera_obj->config.cmd),
|
||||
sizeof(camera_obj->config) - 2);
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------------------------------------------------------
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> CAMERA ͼ<><CDBC> <20><><EFBFBD>ͺ<EFBFBD><CDBA><EFBFBD>
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> *camera_obj CAMERA <20><><EFBFBD>ݽṹ<DDBD><E1B9B9>
|
||||
// <20><><EFBFBD>ز<EFBFBD><D8B2><EFBFBD> void
|
||||
// ʹ<><CAB9>ʾ<EFBFBD><CABE> seekfree_assistant_camera_send(camera_obj);
|
||||
//-------------------------------------------------------------------------------------------------------------------
|
||||
void seekfree_assistant_camera_send (seekfree_assistant_camera_struct *camera_obj)
|
||||
{
|
||||
seekfree_assistant_transfer_callback(
|
||||
(const uint8 *)camera_obj,
|
||||
sizeof(camera_obj->config));
|
||||
if(NULL != camera_obj->data_buffer)
|
||||
{
|
||||
seekfree_assistant_transfer_callback(
|
||||
(const uint8 *)(camera_obj->data_buffer),
|
||||
camera_obj->buffer_byte_size);
|
||||
}
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------------------------------------------------------
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ͼ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ƺ<EFBFBD><EFBFBD><EFBFBD>
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> boundary_id <20><><EFBFBD><EFBFBD>ID
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> dot_num <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> *dot_x <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ַ
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> *dot_y <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ַ
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> width ͼ<><CDBC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> height ͼ<><CDBC><EFBFBD>߶<EFBFBD>
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> CAMERA <20><><EFBFBD><EFBFBD> <20><EFBFBD><EFBFBD><EFBFBD>
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> *camera_boundary_obj CAMERA <20><><EFBFBD><EFBFBD> <20><><EFBFBD>ݽṹ<DDBD><E1B9B9>
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> data_type <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> seekfree_assistant_data_type_enum
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> color Ҫʹ<D2AA>õ<EFBFBD><C3B5><EFBFBD>ɫ
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> boundary_lenght CAMERA <20><><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> *data_buffer CAMERA <20><><EFBFBD><EFBFBD> ͼ<><EFBFBD><EFBFBD><EFBFBD>
|
||||
// <20><><EFBFBD>ز<EFBFBD><D8B2><EFBFBD> void
|
||||
// ʹ<><CAB9>ʾ<EFBFBD><CABE>
|
||||
// ʹ<><CAB9>ʾ<EFBFBD><CABE> seekfree_assistant_camera_boundary_config(camera_boundary_obj, data_type, color, boundary_lenght, data_buffer);
|
||||
//-------------------------------------------------------------------------------------------------------------------
|
||||
void seekfree_assistant_camera_dot_send (seekfree_assistant_camera_buffer_struct *buffer)
|
||||
void seekfree_assistant_camera_boundary_config (
|
||||
seekfree_assistant_camera_boundary_struct *camera_boundary_obj,
|
||||
seekfree_assistant_data_type_enum data_type,
|
||||
uint16 color,
|
||||
uint16 boundary_lenght,
|
||||
void *data_buffer)
|
||||
{
|
||||
uint8 i;
|
||||
uint16 dot_bytes = 0; // <20><><EFBFBD>ֽ<EFBFBD><D6BD><EFBFBD><EFBFBD><EFBFBD>
|
||||
zf_assert(NULL != camera_boundary_obj);
|
||||
zf_assert(NULL != data_buffer);
|
||||
|
||||
dot_bytes = seekfree_assistant_camera_dot_data.dot_num;
|
||||
memset(camera_boundary_obj, 0, sizeof(seekfree_assistant_camera_boundary_struct));
|
||||
camera_boundary_obj->config.head = SEEKFREE_ASSISTANT_SEND_HEAD;
|
||||
camera_boundary_obj->config.cmd = SEEKFREE_ASSISTANT_SEND_CAMERA_BOUNDARY_CMD;
|
||||
|
||||
if(seekfree_assistant_camera_dot_data.dot_type & (1 << 5))
|
||||
{
|
||||
dot_bytes *= 2;
|
||||
if( SEEKFREE_ASSISTANT_STC_DATA_ENABLE
|
||||
&& SEEKFREE_ASSISTANT_DATA_TYPE_UINT16 == data_type)
|
||||
{ // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> uint16 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> STC <20><>Ƭ<EFBFBD><C6AC> <20><>ô<EFBFBD><C3B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ 0x02
|
||||
camera_boundary_obj->config.data_type = data_type + 1;
|
||||
}
|
||||
else
|
||||
{ // <20><><EFBFBD><EFBFBD><EFBFBD>Ļ<EFBFBD><C4BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> uint8 <20><><EFBFBD>ݻ<EFBFBD><DDBB><EFBFBD> uint16 <20><><EFBFBD><EFBFBD>
|
||||
camera_boundary_obj->config.data_type = data_type;
|
||||
}
|
||||
|
||||
// <20><><EFBFBD>ȷ<EFBFBD><C8B7><EFBFBD>֡ͷ<D6A1><CDB7><EFBFBD><EFBFBD><EFBFBD>ܡ<EFBFBD><DCA1>߽<EFBFBD><DFBD><EFBFBD><EFBFBD>š<EFBFBD><C5A1><EFBFBD><EFBFBD>곤<EFBFBD>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
seekfree_assistant_transfer_callback((const uint8 *)&seekfree_assistant_camera_dot_data, sizeof(seekfree_assistant_camera_dot_struct));
|
||||
#if (SEEKFREE_ASSISTANT_STC_DATA_ENABLE)
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> STC <20><>ô<EFBFBD><C3B4>С<EFBFBD>˷<EFBFBD>һ<EFBFBD><D2BB>
|
||||
camera_boundary_obj->config.boundary_lenght_buffer[0] = (uint8)((boundary_lenght >> 8) & 0x00FF);
|
||||
camera_boundary_obj->config.boundary_lenght_buffer[1] = (uint8)((boundary_lenght >> 0) & 0x00FF);
|
||||
camera_boundary_obj->config.color_buffer[0] = (uint8)((color >> 8) & 0x00FF);
|
||||
camera_boundary_obj->config.color_buffer[1] = (uint8)((color >> 0) & 0x00FF);
|
||||
#else
|
||||
camera_boundary_obj->config.boundary_lenght_buffer[0] = (uint8)((boundary_lenght >> 0) & 0x00FF);
|
||||
camera_boundary_obj->config.boundary_lenght_buffer[1] = (uint8)((boundary_lenght >> 8) & 0x00FF);
|
||||
camera_boundary_obj->config.color_buffer[0] = (uint8)((color >> 0) & 0x00FF);
|
||||
camera_boundary_obj->config.color_buffer[1] = (uint8)((color >> 8) & 0x00FF);
|
||||
#endif
|
||||
|
||||
for(i=0; i < SEEKFREE_ASSISTANT_CAMERA_MAX_BOUNDARY; i++)
|
||||
{
|
||||
// <20>ж<EFBFBD><D0B6>Ƿ<EFBFBD><C7B7><EFBFBD><EFBFBD>ͺ<EFBFBD><CDBA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
if(NULL != buffer->boundary_x[i])
|
||||
{
|
||||
seekfree_assistant_transfer_callback((const uint8 *)buffer->boundary_x[i], dot_bytes);
|
||||
}
|
||||
camera_boundary_obj->buffer_byte_size =
|
||||
boundary_lenght * 2
|
||||
* ((SEEKFREE_ASSISTANT_DATA_TYPE_UINT8 == data_type) ? (1) : (2));
|
||||
camera_boundary_obj->data_buffer = data_buffer;
|
||||
|
||||
// <20>ж<EFBFBD><EFBFBD>Ƿ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
if(NULL != buffer->boundary_y[i])
|
||||
{
|
||||
// <20><><EFBFBD><EFBFBD>û<EFBFBD><C3BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݣ<EFBFBD><DDA3><EFBFBD><EFBFBD><EFBFBD>ʾÿһ<C3BF><D2BB>ֻ<EFBFBD><D6BB>һ<EFBFBD><D2BB><EFBFBD>߽<EFBFBD>
|
||||
// ָ<><D6B8><EFBFBD>˺<EFBFBD><CBBA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݣ<EFBFBD><DDA3><EFBFBD><EFBFBD>ַ<EFBFBD>ʽ<EFBFBD><CABD><EFBFBD><EFBFBD>ʵ<EFBFBD><CAB5>ͬһ<CDAC>ж<EFBFBD><D0B6><EFBFBD><EFBFBD>߽<EFBFBD><DFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>㷨<EFBFBD>ܹ<EFBFBD><DCB9><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>䡣
|
||||
seekfree_assistant_transfer_callback((const uint8 *)buffer->boundary_y[i], dot_bytes);
|
||||
}
|
||||
}
|
||||
// <20><>У<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
camera_boundary_obj->config.check_sum = SEEKFREE_ASSISTANT_SEND_HEAD;
|
||||
camera_boundary_obj->config.check_sum += seekfree_assistant_sum(
|
||||
&(camera_boundary_obj->config.cmd),
|
||||
sizeof(camera_boundary_obj->config) - 2);
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------------------------------------------------------
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͺ<EFBFBD><EFBFBD><EFBFBD>
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> CAMERA <20><><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD>ͺ<EFBFBD><EFBFBD><EFBFBD>
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> *camera_boundary_obj CAMERA <20><><EFBFBD><EFBFBD> <20><><EFBFBD>ݽṹ<DDBD><E1B9B9>
|
||||
// <20><><EFBFBD>ز<EFBFBD><D8B2><EFBFBD> void
|
||||
// ʹ<><CAB9>ʾ<EFBFBD><CABE> seekfree_assistant_camera_boundary_send(camera_boundary_obj);
|
||||
//-------------------------------------------------------------------------------------------------------------------
|
||||
void seekfree_assistant_camera_boundary_send (seekfree_assistant_camera_boundary_struct *camera_boundary_obj)
|
||||
{
|
||||
seekfree_assistant_transfer_callback(
|
||||
(const uint8 *)camera_boundary_obj,
|
||||
sizeof(camera_boundary_obj->config));
|
||||
seekfree_assistant_transfer_callback(
|
||||
(const uint8 *)(camera_boundary_obj->data_buffer),
|
||||
camera_boundary_obj->buffer_byte_size);
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------------------------------------------------------
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> CAMERA <20><><EFBFBD>ο<EFBFBD><CEBF><EFBFBD> <20><><EFBFBD>ͺ<EFBFBD><CDBA><EFBFBD>
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> x X <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> y Y <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> width <20><><EFBFBD>ο<EFBFBD><CEBF><EFBFBD>
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> height <20><><EFBFBD>θ߶<CEB8>
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> color <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɫ
|
||||
// <20><><EFBFBD>ز<EFBFBD><D8B2><EFBFBD> void
|
||||
// ʹ<><CAB9>ʾ<EFBFBD><CABE> seekfree_assistant_camera_rectangular_send(x, y, width, height, color);
|
||||
//-------------------------------------------------------------------------------------------------------------------
|
||||
void seekfree_assistant_camera_rectangular_send (uint16 x, uint16 y, uint16 width, uint16 height, uint16 color)
|
||||
{
|
||||
seekfree_assistant_camera_rectangular_struct camera_rectangular_obj;
|
||||
memset(&camera_rectangular_obj, 0, sizeof(seekfree_assistant_camera_rectangular_struct));
|
||||
camera_rectangular_obj.head = SEEKFREE_ASSISTANT_SEND_HEAD;
|
||||
camera_rectangular_obj.cmd = SEEKFREE_ASSISTANT_SEND_CAMERA_RECTANGULAR_CMD;
|
||||
|
||||
#if (SEEKFREE_ASSISTANT_STC_DATA_ENABLE)
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> STC <20><>ô<EFBFBD><C3B4>С<EFBFBD>˷<EFBFBD>һ<EFBFBD><D2BB>
|
||||
camera_rectangular_obj.x_axis_buffer[0] = (uint8)((x >> 8) & 0x00FF);
|
||||
camera_rectangular_obj.x_axis_buffer[1] = (uint8)((x >> 0) & 0x00FF);
|
||||
camera_rectangular_obj.y_axis_buffer[0] = (uint8)((y >> 8) & 0x00FF);
|
||||
camera_rectangular_obj.y_axis_buffer[1] = (uint8)((y >> 0) & 0x00FF);
|
||||
camera_rectangular_obj.width_buffer[0] = (uint8)((width >> 8) & 0x00FF);
|
||||
camera_rectangular_obj.width_buffer[1] = (uint8)((width >> 0) & 0x00FF);
|
||||
camera_rectangular_obj.height_buffer[0] = (uint8)((height >> 8) & 0x00FF);
|
||||
camera_rectangular_obj.height_buffer[1] = (uint8)((height >> 0) & 0x00FF);
|
||||
camera_rectangular_obj.color_buffer[0] = (uint8)((color >> 8) & 0x00FF);
|
||||
camera_rectangular_obj.color_buffer[1] = (uint8)((color >> 0) & 0x00FF);
|
||||
#else
|
||||
camera_rectangular_obj.x_axis_buffer[0] = (uint8)((x >> 0) & 0x00FF);
|
||||
camera_rectangular_obj.x_axis_buffer[1] = (uint8)((x >> 8) & 0x00FF);
|
||||
camera_rectangular_obj.y_axis_buffer[0] = (uint8)((y >> 0) & 0x00FF);
|
||||
camera_rectangular_obj.y_axis_buffer[1] = (uint8)((y >> 8) & 0x00FF);
|
||||
camera_rectangular_obj.width_buffer[0] = (uint8)((width >> 0) & 0x00FF);
|
||||
camera_rectangular_obj.width_buffer[1] = (uint8)((width >> 8) & 0x00FF);
|
||||
camera_rectangular_obj.height_buffer[0] = (uint8)((height >> 0) & 0x00FF);
|
||||
camera_rectangular_obj.height_buffer[1] = (uint8)((height >> 8) & 0x00FF);
|
||||
camera_rectangular_obj.color_buffer[0] = (uint8)((color >> 0) & 0x00FF);
|
||||
camera_rectangular_obj.color_buffer[1] = (uint8)((color >> 8) & 0x00FF);
|
||||
#endif
|
||||
|
||||
// <20><>У<EFBFBD><D0A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
camera_rectangular_obj.check_sum = SEEKFREE_ASSISTANT_SEND_HEAD;
|
||||
camera_rectangular_obj.check_sum += seekfree_assistant_sum(
|
||||
&(camera_rectangular_obj.cmd),
|
||||
sizeof(camera_rectangular_obj) - 2);
|
||||
|
||||
seekfree_assistant_transfer_callback(
|
||||
(const uint8 *)&camera_rectangular_obj,
|
||||
sizeof(camera_rectangular_obj));
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------------------------------------------------------
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> *oscilloscope_obj ʾ<><CABE><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݽṹ<DDBD><E1B9B9>
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> channel_max <20><><EFBFBD><EFBFBD>ͨ<EFBFBD><CDA8><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>Χ<EFBFBD><CEA7> [1, SEEKFREE_ASSISTANT_OSCILLOSCOPE_MAX] <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Χ<EFBFBD><CEA7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><DEB5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Χ
|
||||
// <20><><EFBFBD>ز<EFBFBD><D8B2><EFBFBD> void
|
||||
// ʹ<><CAB9>ʾ<EFBFBD><CABE> seekfree_assistant_oscilloscope_config(oscilloscope_obj, SEEKFREE_ASSISTANT_OSCILLOSCOPE_MAX);
|
||||
//-------------------------------------------------------------------------------------------------------------------
|
||||
void seekfree_assistant_oscilloscope_config (
|
||||
seekfree_assistant_oscilloscope_struct *oscilloscope_obj,
|
||||
uint8 channel_max,
|
||||
void *data_buffer)
|
||||
{
|
||||
zf_assert(NULL != oscilloscope_obj);
|
||||
zf_assert(NULL != data_buffer);
|
||||
|
||||
memset(oscilloscope_obj, 0, sizeof(seekfree_assistant_oscilloscope_struct));
|
||||
oscilloscope_obj->config.head = SEEKFREE_ASSISTANT_SEND_HEAD;
|
||||
oscilloscope_obj->config.cmd = SEEKFREE_ASSISTANT_SEND_OSCILLOSCOPE_CMD;
|
||||
oscilloscope_obj->config.channel_max =
|
||||
(SEEKFREE_ASSISTANT_OSCILLOSCOPE_MAX <= channel_max)
|
||||
? (SEEKFREE_ASSISTANT_OSCILLOSCOPE_MAX)
|
||||
: ((0 == channel_max) ? (1) : (channel_max));
|
||||
oscilloscope_obj->config.data_type = (SEEKFREE_ASSISTANT_STC_DATA_ENABLE) ? (0x01) : (0x00);
|
||||
oscilloscope_obj->buffer_byte_size = oscilloscope_obj->config.channel_max * 4;
|
||||
oscilloscope_obj->data_buffer = data_buffer;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------------------------------------------------------
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD> <20><><EFBFBD>ͺ<EFBFBD><CDBA><EFBFBD>
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> *seekfree_assistant_oscilloscope ʾ<><CABE><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݽṹ<DDBD><E1B9B9>
|
||||
// <20><><EFBFBD>ز<EFBFBD><D8B2><EFBFBD> void
|
||||
// ʹ<><CAB9>ʾ<EFBFBD><CABE> seekfree_assistant_oscilloscope_send(&seekfree_assistant_oscilloscope_data);
|
||||
//-------------------------------------------------------------------------------------------------------------------
|
||||
void seekfree_assistant_oscilloscope_send (seekfree_assistant_oscilloscope_struct *seekfree_assistant_oscilloscope)
|
||||
void seekfree_assistant_oscilloscope_send (seekfree_assistant_oscilloscope_struct *oscilloscope_obj)
|
||||
{
|
||||
uint8 packet_size;
|
||||
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>λ<EFBFBD><CEBB><EFBFBD><EFBFBD>
|
||||
seekfree_assistant_oscilloscope->channel_num &= 0x0f;
|
||||
|
||||
zf_assert(SEEKFREE_ASSISTANT_SET_OSCILLOSCOPE_COUNT >= seekfree_assistant_oscilloscope->channel_num);
|
||||
|
||||
// ֡ͷ
|
||||
seekfree_assistant_oscilloscope->head = SEEKFREE_ASSISTANT_SEND_HEAD;
|
||||
|
||||
// д<><D0B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ
|
||||
packet_size = sizeof(seekfree_assistant_oscilloscope_struct) - (SEEKFREE_ASSISTANT_SET_OSCILLOSCOPE_COUNT - seekfree_assistant_oscilloscope->channel_num) * 4;
|
||||
seekfree_assistant_oscilloscope->length = packet_size;
|
||||
|
||||
// д<>빦<EFBFBD><EBB9A6><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͨ<EFBFBD><CDA8><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
seekfree_assistant_oscilloscope->channel_num |= SEEKFREE_ASSISTANT_CAMERA_OSCILLOSCOPE;
|
||||
|
||||
// <20><>У<EFBFBD><D0A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
seekfree_assistant_oscilloscope->check_sum = 0;
|
||||
seekfree_assistant_oscilloscope->check_sum = seekfree_assistant_sum((uint8 *)seekfree_assistant_oscilloscope, packet_size);
|
||||
oscilloscope_obj->config.check_sum = SEEKFREE_ASSISTANT_SEND_HEAD;
|
||||
oscilloscope_obj->config.check_sum += seekfree_assistant_sum(
|
||||
&(oscilloscope_obj->config.cmd),
|
||||
sizeof(oscilloscope_obj->config) - 2);
|
||||
oscilloscope_obj->config.check_sum += seekfree_assistant_sum(
|
||||
(oscilloscope_obj->data_buffer),
|
||||
oscilloscope_obj->buffer_byte_size);
|
||||
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD>ڵ<EFBFBD><DAB5>ñ<EFBFBD><C3B1><EFBFBD><EFBFBD><EFBFBD>֮ǰ<D6AE><C7B0><EFBFBD><EFBFBD><EFBFBD>û<EFBFBD><C3BB><EFBFBD><EFBFBD><EFBFBD>Ҫ<EFBFBD><D2AA><EFBFBD>͵<EFBFBD><CDB5><EFBFBD><EFBFBD><EFBFBD>д<EFBFBD><D0B4>seekfree_assistant_oscilloscope_data.data[]
|
||||
|
||||
seekfree_assistant_transfer_callback((const uint8 *)seekfree_assistant_oscilloscope, packet_size);
|
||||
seekfree_assistant_transfer_callback(
|
||||
(const uint8 *)oscilloscope_obj,
|
||||
sizeof(oscilloscope_obj->config));
|
||||
seekfree_assistant_transfer_callback(
|
||||
(const uint8 *)(oscilloscope_obj->data_buffer),
|
||||
oscilloscope_obj->buffer_byte_size);
|
||||
}
|
||||
|
||||
#if (SEEKFREE_ASSISTANT_DEBUG_PARAM_ENABLE)
|
||||
//-------------------------------------------------------------------------------------------------------------------
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͼ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ<EFBFBD><EFBFBD><EFBFBD>ú<EFBFBD><EFBFBD><EFBFBD>
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> camera_type ͼ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> image_addr ͼ<><CDBC><EFBFBD><EFBFBD>ַ <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>NULL<4C><4C><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾֻ<CABE><D6BB><EFBFBD>ͱ<EFBFBD><CDB1><EFBFBD><EFBFBD><EFBFBD>Ϣ<EFBFBD><CFA2><EFBFBD><EFBFBD>λ<EFBFBD><CEBB>
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> width ͼ<><CDBC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> height ͼ<><CDBC><EFBFBD>߶<EFBFBD>
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>ʾ<EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD>ͺ<EFBFBD><EFBFBD><EFBFBD>
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> *debug_param_obj ʾ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݽṹ<EFBFBD><EFBFBD>
|
||||
// <20><><EFBFBD>ز<EFBFBD><D8B2><EFBFBD> void
|
||||
// ʹ<><CAB9>ʾ<EFBFBD><CABE> seekfree_assistant_camera_information_config(SEEKFREE_ASSISTANT_MT9V03X, mt9v03x_image[0], MT9V03X_W, MT9V03X_H);
|
||||
// <20><>ע<EFBFBD><D7A2>Ϣ
|
||||
// ʹ<><CAB9>ʾ<EFBFBD><CABE> seekfree_assistant_oscilloscope_send(&seekfree_assistant_oscilloscope_data);
|
||||
//-------------------------------------------------------------------------------------------------------------------
|
||||
void seekfree_assistant_camera_information_config (seekfree_assistant_image_type_enum camera_type, void *image_addr, uint16 width, uint16 height)
|
||||
void seekfree_assistant_debug_param_analysis (seekfree_assistant_debug_param_struct *debug_param_obj)
|
||||
{
|
||||
seekfree_assistant_camera_dot_data.head = SEEKFREE_ASSISTANT_SEND_HEAD;
|
||||
seekfree_assistant_camera_dot_data.function = SEEKFREE_ASSISTANT_CAMERA_DOT_FUNCTION;
|
||||
// д<><D0B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ
|
||||
seekfree_assistant_camera_dot_data.length = sizeof(seekfree_assistant_camera_dot_struct);
|
||||
zf_assert(NULL != debug_param_obj);
|
||||
|
||||
seekfree_assistant_camera_buffer.camera_type = camera_type;
|
||||
seekfree_assistant_camera_buffer.image_addr = image_addr;
|
||||
seekfree_assistant_camera_buffer.width = width;
|
||||
seekfree_assistant_camera_buffer.height = height;
|
||||
}
|
||||
seekfree_assistant_debug_param_cmd_struct debug_param_cmd_obj; // <20>½<EFBFBD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD>ݰ<EFBFBD>
|
||||
uint8 *debug_param_cmd_pointer = (uint8 *)&debug_param_cmd_obj; // <20><>һ<EFBFBD><D2BB>ָ<EFBFBD><D6B8>ָ<EFBFBD><D6B8><EFBFBD><EFBFBD><EFBFBD>ݰ<EFBFBD><DDB0><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
uint8 temp_sum = 0xFF; // У<><D0A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD>
|
||||
uint32 read_length = 0; // <20><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD>
|
||||
|
||||
//-------------------------------------------------------------------------------------------------------------------
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͼ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>߷<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ú<EFBFBD><EFBFBD><EFBFBD>
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> boundary_type <20>߽<EFBFBD><DFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> dot_num һ<><D2BB><EFBFBD>߽<EFBFBD><DFBD>ж<EFBFBD><D0B6>ٸ<EFBFBD><D9B8><EFBFBD>
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> dot_x1 <20><><EFBFBD>ű<EFBFBD><C5B1><EFBFBD>1<EFBFBD><31><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ĵ<EFBFBD>ַ <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>NULL<4C><4C><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD><EFBFBD>ͱ<EFBFBD><CDB1><EFBFBD>1
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> dot_x2 <20><><EFBFBD>ű<EFBFBD><C5B1><EFBFBD>2<EFBFBD><32><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ĵ<EFBFBD>ַ <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>NULL<4C><4C><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD><EFBFBD>ͱ<EFBFBD><CDB1><EFBFBD>2
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> dot_x3 <20><><EFBFBD>ű<EFBFBD><C5B1><EFBFBD>3<EFBFBD><33><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ĵ<EFBFBD>ַ <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>NULL<4C><4C><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD><EFBFBD>ͱ<EFBFBD><CDB1><EFBFBD>3
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> dot_y1 <20><><EFBFBD>ű<EFBFBD><C5B1><EFBFBD>1<EFBFBD><31><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ĵ<EFBFBD>ַ <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>NULL<4C><4C><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD><EFBFBD>ͱ<EFBFBD><CDB1><EFBFBD>1
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> dot_y2 <20><><EFBFBD>ű<EFBFBD><C5B1><EFBFBD>2<EFBFBD><32><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ĵ<EFBFBD>ַ <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>NULL<4C><4C><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD><EFBFBD>ͱ<EFBFBD><CDB1><EFBFBD>2
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> dot_y3 <20><><EFBFBD>ű<EFBFBD><C5B1><EFBFBD>3<EFBFBD><33><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ĵ<EFBFBD>ַ <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>NULL<4C><4C><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD><EFBFBD>ͱ<EFBFBD><CDB1><EFBFBD>3
|
||||
// <20><><EFBFBD>ز<EFBFBD><D8B2><EFBFBD> void
|
||||
// ʹ<><CAB9>ʾ<EFBFBD><CABE> seekfree_assistant_camera_config(X_BOUNDARY, MT9V03X_H, x1_boundary, x2_boundary, x3_boundary, NULL, NULL, NULL); // ͼ<><CDBC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ߣ<EFBFBD><DFA3><EFBFBD><EFBFBD><EFBFBD>ֻ<EFBFBD>к<EFBFBD><D0BA><EFBFBD><EFBFBD><EFBFBD>
|
||||
// ʹ<><CAB9>ʾ<EFBFBD><CABE> seekfree_assistant_camera_config(Y_BOUNDARY, MT9V03X_W, NULL, NULL, NULL, y1_boundary, y2_boundary, y3_boundary); // ͼ<><CDBC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ߣ<EFBFBD><DFA3><EFBFBD><EFBFBD><EFBFBD>ֻ<EFBFBD><D6BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
// ʹ<><CAB9>ʾ<EFBFBD><CABE> seekfree_assistant_camera_config(XY_BOUNDARY, 160, xy_x1_boundary, xy_x2_boundary, xy_x3_boundary, xy_y1_boundary, xy_y2_boundary, xy_y3_boundary); // ͼ<><CDBC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ߣ<EFBFBD><DFA3><EFBFBD><EFBFBD>߰<EFBFBD><DFB0><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
// <20><>ע<EFBFBD><D7A2>Ϣ
|
||||
//-------------------------------------------------------------------------------------------------------------------
|
||||
void seekfree_assistant_camera_boundary_config (seekfree_assistant_boundary_type_enum boundary_type, uint16 dot_num, void *dot_x1, void *dot_x2, void *dot_x3, void *dot_y1, void *dot_y2, void *dot_y3)
|
||||
{
|
||||
uint8 i = 0;
|
||||
uint8 boundary_num = 0;
|
||||
uint8 boundary_data_type = 0;
|
||||
|
||||
// <20><><EFBFBD><EFBFBD>ͼ<EFBFBD><CDBC><EFBFBD><EFBFBD><EFBFBD>ͻ<EFBFBD><CDBB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƿ<EFBFBD><EFBFBD><D7BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20><><EFBFBD>ô˺<C3B4><CBBA><EFBFBD>֮ǰ<D6AE><C7B0>Ҫ<EFBFBD>ȵ<EFBFBD><C8B5><EFBFBD>seekfree_assistant_camera_config<69><67><EFBFBD>ú<EFBFBD>ͼ<EFBFBD><CDBC><EFBFBD><EFBFBD>Ϣ
|
||||
zf_assert(0 != seekfree_assistant_camera_buffer.camera_type);
|
||||
|
||||
seekfree_assistant_camera_dot_data.dot_num = dot_num;
|
||||
seekfree_assistant_camera_dot_data.valid_flag = 0;
|
||||
for(i = 0; i < 3; i++)
|
||||
{
|
||||
seekfree_assistant_camera_buffer.boundary_x[i] = NULL;
|
||||
seekfree_assistant_camera_buffer.boundary_y[i] = NULL;
|
||||
}
|
||||
|
||||
switch(boundary_type)
|
||||
{
|
||||
case X_BOUNDARY:
|
||||
{
|
||||
if(NULL != dot_x1)
|
||||
{
|
||||
boundary_num++;
|
||||
seekfree_assistant_camera_dot_data.valid_flag |= 1 << 0;
|
||||
seekfree_assistant_camera_buffer.boundary_x[i++] = dot_x1;
|
||||
}
|
||||
if(NULL != dot_x2)
|
||||
{
|
||||
boundary_num++;
|
||||
seekfree_assistant_camera_dot_data.valid_flag |= 1 << 1;
|
||||
seekfree_assistant_camera_buffer.boundary_x[i++] = dot_x2;
|
||||
}
|
||||
if(NULL != dot_x3)
|
||||
{
|
||||
boundary_num++;
|
||||
seekfree_assistant_camera_dot_data.valid_flag |= 1 << 2;
|
||||
seekfree_assistant_camera_buffer.boundary_x[i++] = dot_x3;
|
||||
}
|
||||
|
||||
if(255 < seekfree_assistant_camera_buffer.height)
|
||||
{
|
||||
boundary_data_type = 1;
|
||||
}
|
||||
}break;
|
||||
|
||||
case Y_BOUNDARY:
|
||||
{
|
||||
if(NULL != dot_y1)
|
||||
{
|
||||
boundary_num++;
|
||||
seekfree_assistant_camera_dot_data.valid_flag |= 1 << 0;
|
||||
seekfree_assistant_camera_buffer.boundary_y[i++] = dot_y1;
|
||||
}
|
||||
if(NULL != dot_y2)
|
||||
{
|
||||
boundary_num++;
|
||||
seekfree_assistant_camera_dot_data.valid_flag |= 1 << 1;
|
||||
seekfree_assistant_camera_buffer.boundary_y[i++] = dot_y2;
|
||||
}
|
||||
if(NULL != dot_y3)
|
||||
{
|
||||
boundary_num++;
|
||||
seekfree_assistant_camera_dot_data.valid_flag |= 1 << 2;
|
||||
seekfree_assistant_camera_buffer.boundary_y[i++] = dot_y3;
|
||||
}
|
||||
|
||||
if(255 < seekfree_assistant_camera_buffer.width)
|
||||
{
|
||||
boundary_data_type = 1;
|
||||
}
|
||||
}break;
|
||||
|
||||
case XY_BOUNDARY:
|
||||
{
|
||||
if((NULL != dot_x1) && (NULL != dot_y1))
|
||||
{
|
||||
boundary_num++;
|
||||
seekfree_assistant_camera_dot_data.valid_flag |= 1 << 0;
|
||||
seekfree_assistant_camera_buffer.boundary_x[i] = dot_x1;
|
||||
seekfree_assistant_camera_buffer.boundary_y[i++] = dot_y1;
|
||||
}
|
||||
if((NULL != dot_x2) && (NULL != dot_y2))
|
||||
{
|
||||
boundary_num++;
|
||||
seekfree_assistant_camera_dot_data.valid_flag |= 1 << 1;
|
||||
seekfree_assistant_camera_buffer.boundary_x[i] = dot_x2;
|
||||
seekfree_assistant_camera_buffer.boundary_y[i++] = dot_y2;
|
||||
}
|
||||
if((NULL != dot_x3) && (NULL != dot_y3))
|
||||
{
|
||||
boundary_num++;
|
||||
seekfree_assistant_camera_dot_data.valid_flag |= 1 << 2;
|
||||
seekfree_assistant_camera_buffer.boundary_x[i] = dot_x3;
|
||||
seekfree_assistant_camera_buffer.boundary_y[i++] = dot_y3;
|
||||
}
|
||||
|
||||
if((255 < seekfree_assistant_camera_buffer.width) || (255 < seekfree_assistant_camera_buffer.height))
|
||||
{
|
||||
boundary_data_type = 1;
|
||||
}
|
||||
}break;
|
||||
|
||||
case NO_BOUNDARY:break;
|
||||
}
|
||||
|
||||
seekfree_assistant_camera_dot_data.dot_type = (boundary_type << 6) | (boundary_data_type << 5) | boundary_num;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------------------------------------------------------
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ַ<EFBFBD><D6B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͷͼ<CDB7><CDBC>
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> void
|
||||
// <20><><EFBFBD>ز<EFBFBD><D8B2><EFBFBD> void
|
||||
// ʹ<><CAB9>ʾ<EFBFBD><CABE>
|
||||
// <20><>ע<EFBFBD><D7A2>Ϣ <20>ڵ<EFBFBD><DAB5><EFBFBD>ͼ<EFBFBD><CDBC><EFBFBD><EFBFBD><EFBFBD>ͺ<EFBFBD><CDBA><EFBFBD>֮ǰ<D6AE><C7B0><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ص<EFBFBD><D8B5><EFBFBD>һ<EFBFBD><D2BB>seekfree_assistant_camera_config<69><67><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ӧ<EFBFBD>IJ<EFBFBD><C4B2><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ú<EFBFBD>
|
||||
//-------------------------------------------------------------------------------------------------------------------
|
||||
void seekfree_assistant_camera_send (void)
|
||||
{
|
||||
// <20><><EFBFBD><EFBFBD>ͼ<EFBFBD><CDBC><EFBFBD><EFBFBD><EFBFBD>ͻ<EFBFBD><CDBB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƿ<EFBFBD><EFBFBD><D7BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
zf_assert(0 != seekfree_assistant_camera_buffer.camera_type);
|
||||
|
||||
seekfree_assistant_camera_data_send(seekfree_assistant_camera_buffer.camera_type, seekfree_assistant_camera_buffer.image_addr, seekfree_assistant_camera_dot_data.dot_type & 0x0f, seekfree_assistant_camera_buffer.width, seekfree_assistant_camera_buffer.height);
|
||||
|
||||
if(seekfree_assistant_camera_dot_data.dot_type & 0x0f)
|
||||
{
|
||||
seekfree_assistant_camera_dot_send(&seekfree_assistant_camera_buffer);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
//-------------------------------------------------------------------------------------------------------------------
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֽ<EFBFBD><D6BD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>յ<EFBFBD><D5B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> void
|
||||
// <20><><EFBFBD>ز<EFBFBD><D8B2><EFBFBD> void
|
||||
// ʹ<><CAB9>ʾ<EFBFBD><CABE> <20><><EFBFBD><EFBFBD>ֻ<EFBFBD><D6BB>Ҫ<EFBFBD>ŵ<EFBFBD><C5B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>е<EFBFBD>PIT<49>жϻ<D0B6><CFBB><EFBFBD><EFBFBD><EFBFBD>ѭ<EFBFBD><D1AD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
//-------------------------------------------------------------------------------------------------------------------
|
||||
#if (1 == SEEKFREE_ASSISTANT_SET_PARAMETR_ENABLE)
|
||||
void seekfree_assistant_data_analysis (void)
|
||||
{
|
||||
uint8 temp_sum;
|
||||
uint32 read_length;
|
||||
seekfree_assistant_parameter_struct *receive_packet;
|
||||
|
||||
// <20><><EFBFBD><EFBFBD>ʹ<EFBFBD><CAB9>uint32<33><32><EFBFBD>ж<EFBFBD><D0B6>壬Ŀ<E5A3AC><C4BF><EFBFBD><EFBFBD>Ϊ<EFBFBD>˱<EFBFBD>֤<EFBFBD><D6A4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֽڶ<D6BD><DAB6><EFBFBD>
|
||||
uint32 temp_buffer[SEEKFREE_ASSISTANT_BUFFER_SIZE / 4];
|
||||
|
||||
// <20><><EFBFBD>Զ<EFBFBD>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD>, <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Զ<EFBFBD><D4B6><EFBFBD><EFBFBD>Ĵ<EFBFBD><C4B4>䷽ʽ<E4B7BD><CABD><EFBFBD>ӽ<EFBFBD><D3BD>ջص<D5BB><D8B5>ж<EFBFBD>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD>
|
||||
read_length = seekfree_assistant_receive_callback((uint8 *)temp_buffer, SEEKFREE_ASSISTANT_BUFFER_SIZE);
|
||||
// <20><><EFBFBD>Զ<EFBFBD>ȡһ<C8A1><D2BB><EFBFBD><EFBFBD><EFBFBD>ݰ<EFBFBD>
|
||||
// <20><><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>
|
||||
read_length = seekfree_assistant_receive_callback(
|
||||
debug_param_cmd_pointer,
|
||||
sizeof(seekfree_assistant_debug_param_cmd_struct));
|
||||
if(read_length)
|
||||
{
|
||||
// <20><><EFBFBD><EFBFBD>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>д<EFBFBD><D0B4>FIFO
|
||||
fifo_write_buffer(&seekfree_assistant_fifo, (uint8 *)temp_buffer, read_length);
|
||||
{ // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>д<EFBFBD><D0B4>FIFO
|
||||
fifo_write_buffer(
|
||||
&seekfree_assistant_debug_param_fifo,
|
||||
debug_param_cmd_pointer,
|
||||
read_length);
|
||||
}
|
||||
|
||||
while(sizeof(seekfree_assistant_parameter_struct) <= fifo_used(&seekfree_assistant_fifo))
|
||||
{
|
||||
read_length = sizeof(seekfree_assistant_parameter_struct);
|
||||
fifo_read_buffer(&seekfree_assistant_fifo, (uint8 *)temp_buffer, &read_length, FIFO_READ_ONLY);
|
||||
while( sizeof(seekfree_assistant_debug_param_cmd_struct)
|
||||
<= fifo_used(&seekfree_assistant_debug_param_fifo))
|
||||
{ // <20><><EFBFBD><EFBFBD> FIFO <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD>ݰ<EFBFBD> <20><>ô<EFBFBD>ͽ<EFBFBD><CDBD>н<EFBFBD><D0BD><EFBFBD>
|
||||
// ֱ<>Ӷ<EFBFBD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD>ݰ<EFBFBD><DDB0><EFBFBD><EFBFBD><EFBFBD>
|
||||
read_length = sizeof(seekfree_assistant_debug_param_cmd_struct);
|
||||
fifo_read_buffer(
|
||||
&seekfree_assistant_debug_param_fifo,
|
||||
debug_param_cmd_pointer,
|
||||
&read_length,
|
||||
FIFO_READ_ONLY);
|
||||
|
||||
if(SEEKFREE_ASSISTANT_RECEIVE_HEAD != ((uint8 *)temp_buffer)[0])
|
||||
{
|
||||
// û<EFBFBD><EFBFBD>֡ͷ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>FIFO<EFBFBD><EFBFBD>ȥ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
read_length = 1;
|
||||
}
|
||||
else
|
||||
{
|
||||
// <20>ҵ<EFBFBD>֡ͷ
|
||||
receive_packet = (seekfree_assistant_parameter_struct *)temp_buffer;
|
||||
temp_sum = receive_packet->check_sum;
|
||||
receive_packet->check_sum = 0;
|
||||
if(temp_sum == seekfree_assistant_sum((uint8 *)temp_buffer, sizeof(seekfree_assistant_parameter_struct)))
|
||||
{
|
||||
// <20><>У<EFBFBD><D0A3><EFBFBD>ɹ<EFBFBD><C9B9><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
seekfree_assistant_parameter[receive_packet->channel - 1] = receive_packet->data;
|
||||
seekfree_assistant_parameter_update_flag[receive_packet->channel - 1] = 1;
|
||||
if( SEEKFREE_ASSISTANT_RECEIVE_HEAD == debug_param_cmd_pointer[0]
|
||||
&& SEEKFREE_ASSISTANT_RECEIVE_DEBUG_PARAM_CMD == debug_param_cmd_pointer[2])
|
||||
{ // ֱ<EFBFBD><EFBFBD>ƥ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>֡ͷ <20><><EFBFBD>ҹ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ҳƥ<EFBFBD><EFBFBD>
|
||||
temp_sum = debug_param_cmd_obj.check_sum; // <20><>ȡ<EFBFBD><C8A1><EFBFBD>ݰ<EFBFBD><DDB0><EFBFBD>У<EFBFBD><D0A3><EFBFBD><EFBFBD>
|
||||
debug_param_cmd_obj.check_sum = 0; // <20><><EFBFBD>հ<EFBFBD><D5B0><EFBFBD>У<EFBFBD><D0A3><EFBFBD><EFBFBD>ֵ <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>У<EFBFBD><D0A3><EFBFBD><EFBFBD>
|
||||
if( temp_sum == seekfree_assistant_sum(debug_param_cmd_pointer, sizeof(seekfree_assistant_debug_param_cmd_struct)))
|
||||
{ // <20><>У<EFBFBD><D0A3><EFBFBD>ɹ<EFBFBD><C9B9><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
debug_param_obj->data[debug_param_cmd_obj.channel_index - 1] = debug_param_cmd_obj.dat.data_float;
|
||||
#if (SEEKFREE_ASSISTANT_STC_DATA_ENABLE)
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> STC <20><>ô<EFBFBD><C3B4>С<EFBFBD>˷<EFBFBD>һ<EFBFBD><D2BB>
|
||||
debug_param_obj->dat.data_buffer[0] ^= debug_param_obj->dat.data_buffer[3];
|
||||
debug_param_obj->dat.data_buffer[3] ^= debug_param_obj->dat.data_buffer[0];
|
||||
debug_param_obj->dat.data_buffer[0] ^= debug_param_obj->dat.data_buffer[3];
|
||||
debug_param_obj->dat.data_buffer[1] ^= debug_param_obj->dat.data_buffer[2];
|
||||
debug_param_obj->dat.data_buffer[2] ^= debug_param_obj->dat.data_buffer[1];
|
||||
debug_param_obj->dat.data_buffer[1] ^= debug_param_obj->dat.data_buffer[2];
|
||||
#endif
|
||||
debug_param_obj->update_flag[debug_param_cmd_obj.channel_index - 1] = 1;
|
||||
temp_sum = 0x00;
|
||||
}
|
||||
else
|
||||
{
|
||||
read_length = 1;
|
||||
{ // <20><><EFBFBD><EFBFBD>У<EFBFBD><D0A3><EFBFBD><EFBFBD>ƥ<EFBFBD><C6A5><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>λ<EFBFBD><CEBB>ʱУ<CAB1><D0A3><EFBFBD><EFBFBD>Ϊ 0xFF <20><>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
temp_sum = 0xFF;
|
||||
}
|
||||
}
|
||||
else
|
||||
{ // <20><><EFBFBD><EFBFBD>ƥ<EFBFBD>䲻<EFBFBD><E4B2BB>֡ͷ<D6A1><EFBFBD><CDB9><EFBFBD><EFBFBD><EFBFBD> <20><>λ<EFBFBD><CEBB>ʱУ<CAB1><D0A3><EFBFBD><EFBFBD>Ϊ 0xFF <20><>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
temp_sum = 0xFF;
|
||||
}
|
||||
|
||||
if(0xFF == temp_sum)
|
||||
{ // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱУ<CAB1><D0A3><EFBFBD><EFBFBD>Ϊ 0xFF <20><>ô<EFBFBD><C3B4><EFBFBD>ǽ<EFBFBD><C7BD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ѱ<EFBFBD><D1B0><EFBFBD><EFBFBD>һ<EFBFBD><D2BB>֡ͷ
|
||||
for(read_length = 1; sizeof(seekfree_assistant_debug_param_cmd_struct) > read_length; read_length ++)
|
||||
{ // <20><>Ϊ<EFBFBD><CEAA>ȡ<EFBFBD><C8A1>һ<EFBFBD><D2BB><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD>
|
||||
if(SEEKFREE_ASSISTANT_RECEIVE_HEAD == debug_param_cmd_pointer[read_length])
|
||||
{ // <20>ҵ<EFBFBD><D2B5>¸<EFBFBD>֡ͷ<D6A1><CDB7><EFBFBD>˳<EFBFBD>
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʹ<EFBFBD>õ<EFBFBD><C3B5><EFBFBD><EFBFBD><EFBFBD>
|
||||
fifo_read_buffer(&seekfree_assistant_fifo, (uint8 *)temp_buffer, &read_length, FIFO_READ_AND_CLEAN);
|
||||
fifo_read_buffer(
|
||||
&seekfree_assistant_debug_param_fifo,
|
||||
debug_param_cmd_pointer,
|
||||
&read_length,
|
||||
FIFO_READ_AND_CLEAN);
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -1,20 +1,20 @@
|
||||
/*********************************************************************************************************************
|
||||
* 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>
|
||||
* RT1064DVL6A Opensourec Library <20><><EFBFBD><EFBFBD>RT1064DVL6A <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><C4BC><EFBFBD> RT1064DVL6A <20><>Դ<EFBFBD><D4B4><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD>
|
||||
*
|
||||
* RT1064DVL6A <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>
|
||||
@@ -24,142 +24,292 @@
|
||||
* <20>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD><EFBFBD> seekfree_assistant
|
||||
* <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.10.2
|
||||
* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ADS v1.9.4
|
||||
* <20><><EFBFBD><EFBFBD>ƽ̨ TC264D
|
||||
* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> https://seekfree.taobao.com/
|
||||
*
|
||||
*
|
||||
* <20>ļ<DEB8>¼
|
||||
* <20><><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>ע
|
||||
* 2024-01-01 pudding first version
|
||||
* <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><>ע
|
||||
* 2024-1-11 SeekFree first version
|
||||
********************************************************************************************************************/
|
||||
#ifndef _seekfree_assistant_h_
|
||||
#define _seekfree_assistant_h_
|
||||
|
||||
|
||||
#include "zf_common_typedef.h"
|
||||
|
||||
// CCD <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ö<EFBFBD><C3B6>
|
||||
typedef enum
|
||||
{
|
||||
SEEKFREE_ASSISTANT_DATA_TYPE_UINT8 ,
|
||||
SEEKFREE_ASSISTANT_DATA_TYPE_UINT16 ,
|
||||
}seekfree_assistant_data_type_enum;
|
||||
|
||||
// 1<EFBFBD><EFBFBD>ʹ<EFBFBD>ܲ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڵĹ<EFBFBD><EFBFBD><EFBFBD> 0<><30><EFBFBD>رղ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڵĹ<EFBFBD><EFBFBD><EFBFBD>
|
||||
#define SEEKFREE_ASSISTANT_SET_PARAMETR_ENABLE ( 1 )
|
||||
|
||||
|
||||
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>FIFO<EFBFBD><EFBFBD>С
|
||||
#define SEEKFREE_ASSISTANT_BUFFER_SIZE ( 0x80 )
|
||||
|
||||
// <20><><EFBFBD><EFBFBD>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͨ<EFBFBD><CDA8><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
#define SEEKFREE_ASSISTANT_SET_OSCILLOSCOPE_COUNT ( 0x08 )
|
||||
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ե<EFBFBD><D4B5><EFBFBD><EFBFBD><EFBFBD>ͨ<EFBFBD><CDA8><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
#define SEEKFREE_ASSISTANT_SET_PARAMETR_COUNT ( 0x08 )
|
||||
|
||||
// <20><><EFBFBD><EFBFBD>ͼ<EFBFBD><CDBC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
#define SEEKFREE_ASSISTANT_CAMERA_MAX_BOUNDARY ( 0x08 )
|
||||
|
||||
// <20><>Ƭ<EFBFBD><C6AC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>λ<EFBFBD><CEBB><EFBFBD><EFBFBD><EFBFBD>͵<EFBFBD>֡ͷ
|
||||
#define SEEKFREE_ASSISTANT_SEND_HEAD ( 0xAA )
|
||||
|
||||
// <20><><EFBFBD><EFBFBD>ͷ<EFBFBD><CDB7>
|
||||
#define SEEKFREE_ASSISTANT_CAMERA_FUNCTION ( 0x02 )
|
||||
#define SEEKFREE_ASSISTANT_CAMERA_DOT_FUNCTION ( 0x03 )
|
||||
#define SEEKFREE_ASSISTANT_CAMERA_OSCILLOSCOPE ( 0x10 )
|
||||
|
||||
// <20><>λ<EFBFBD><CEBB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƭ<EFBFBD><C6AC><EFBFBD><EFBFBD><EFBFBD>͵<EFBFBD>֡ͷ
|
||||
#define SEEKFREE_ASSISTANT_RECEIVE_HEAD ( 0x55 )
|
||||
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
#define SEEKFREE_ASSISTANT_RECEIVE_SET_PARAMETER ( 0x20 )
|
||||
|
||||
// CCD <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ö<EFBFBD><EFBFBD>
|
||||
typedef enum
|
||||
{
|
||||
SEEKFREE_ASSISTANT_CCD_RESOLUTION_8BIT , // 8λ<38>ֱ<EFBFBD><D6B1><EFBFBD>
|
||||
SEEKFREE_ASSISTANT_CCD_RESOLUTION_10BIT , // 10λ<30>ֱ<EFBFBD><D6B1><EFBFBD>
|
||||
SEEKFREE_ASSISTANT_CCD_RESOLUTION_12BIT , // 12λ<32>ֱ<EFBFBD><EFBFBD><EFBFBD>
|
||||
}seekfree_assistant_ccd_resolution_enum;
|
||||
|
||||
// <20><><EFBFBD><EFBFBD>ͷ<EFBFBD><CDB7><EFBFBD><EFBFBD>ö<EFBFBD><C3B6>
|
||||
typedef enum
|
||||
{
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͷ<EFBFBD>ͺŶ<CDBA><C5B6><EFBFBD>
|
||||
SEEKFREE_ASSISTANT_OV7725_BIN = 1,
|
||||
SEEKFREE_ASSISTANT_MT9V03X,
|
||||
SEEKFREE_ASSISTANT_SCC8660,
|
||||
|
||||
// <20><><EFBFBD><EFBFBD>ͼ<EFBFBD><CDBC><EFBFBD><EFBFBD><EFBFBD>Ͷ<EFBFBD><CDB6><EFBFBD>
|
||||
SEEKFREE_ASSISTANT_BINARY = 1,
|
||||
SEEKFREE_ASSISTANT_GRAY,
|
||||
SEEKFREE_ASSISTANT_RGB565,
|
||||
}seekfree_assistant_image_type_enum;
|
||||
SEEKFREE_ASSISTANT_CAMERA_TYPE_BINARY = 0x01 ,
|
||||
SEEKFREE_ASSISTANT_CAMERA_TYPE_GRAY ,
|
||||
SEEKFREE_ASSISTANT_CAMERA_TYPE_RGB565 ,
|
||||
|
||||
// <20><><EFBFBD><EFBFBD>ͷ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ö<EFBFBD><EFBFBD>
|
||||
typedef enum
|
||||
{
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͷ<EFBFBD>ͺŶ<CDBA><C5B6><EFBFBD>
|
||||
X_BOUNDARY, // <20><><EFBFBD>͵<EFBFBD>ͼ<EFBFBD><CDBC><EFBFBD>б߽<D0B1><DFBD><EFBFBD>Ϣֻ<CFA2><D6BB><EFBFBD><EFBFBD>X<EFBFBD><58>Ҳ<EFBFBD><D2B2><EFBFBD><EFBFBD>ֻ<EFBFBD>к<EFBFBD><D0BA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ<EFBFBD><CFA2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͼ<EFBFBD><CDBC><EFBFBD>߶ȵõ<C8B5>
|
||||
Y_BOUNDARY, // <20><><EFBFBD>͵<EFBFBD>ͼ<EFBFBD><CDBC><EFBFBD>б߽<D0B1><DFBD><EFBFBD>Ϣֻ<CFA2><D6BB><EFBFBD><EFBFBD>Y<EFBFBD><59>Ҳ<EFBFBD><D2B2><EFBFBD><EFBFBD>ֻ<EFBFBD><D6BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ<EFBFBD><CFA2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͼ<EFBFBD><CDBC><EFBFBD><EFBFBD><EFBFBD>ȵõ<C8B5><C3B5><EFBFBD>ͨ<EFBFBD><CDA8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
XY_BOUNDARY, // <20><><EFBFBD>͵<EFBFBD>ͼ<EFBFBD><CDBC><EFBFBD>б߽<D0B1><EFBFBD><EFBFBD>Ϣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>X<EFBFBD><EFBFBD>Y<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><EFBFBD><EFBFBD><EFBFBD>ʾ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ч<EFBFBD><EFBFBD>
|
||||
NO_BOUNDARY, // <20><><EFBFBD>͵<EFBFBD>ͼ<EFBFBD><CDBC><EFBFBD><EFBFBD>û<EFBFBD>б<EFBFBD><D0B1><EFBFBD><EFBFBD><EFBFBD>Ϣ
|
||||
}seekfree_assistant_boundary_type_enum;
|
||||
// <20><><EFBFBD><EFBFBD>ͷ<EFBFBD>ͺ<EFBFBD>ƥ<EFBFBD>䶨<EFBFBD><EFBFBD>
|
||||
SEEKFREE_ASSISTANT_CAMERA_TYPE_OV7725_BIN = 0x01 ,
|
||||
SEEKFREE_ASSISTANT_CAMERA_TYPE_MT9V03X ,
|
||||
SEEKFREE_ASSISTANT_CAMERA_TYPE_SCC8660 ,
|
||||
}seekfree_assistant_camera_type_enum;
|
||||
|
||||
#define SEEKFREE_ASSISTANT_STC_DATA_ENABLE ( 0 ) // STC <20><>Ƭ<EFBFBD><C6AC><EFBFBD><EFBFBD>Ҫʹ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>궨<EFBFBD><EFBFBD>
|
||||
|
||||
#define SEEKFREE_ASSISTANT_OSCILLOSCOPE_MAX ( 16 ) // <20><><EFBFBD><EFBFBD>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͨ<EFBFBD><CDA8><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
#define SEEKFREE_ASSISTANT_CCD_RESOLUTION_DEFAULT ( SEEKFREE_ASSISTANT_CCD_RESOLUTION_12BIT ) // Ĭ<><C4AC> CCD <20>ľ<EFBFBD><C4BE><EFBFBD> <20><><EFBFBD><EFBFBD>ȷ<EFBFBD><C8B7><EFBFBD><EFBFBD>λ<EFBFBD><CEBB><EFBFBD><EFBFBD><EFBFBD>᳤<EFBFBD><E1B3A4>
|
||||
|
||||
#define SEEKFREE_ASSISTANT_DEBUG_PARAM_ENABLE ( 1 ) // 1<><31>ʹ<EFBFBD>ܲ<EFBFBD><DCB2><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڵĹ<DAB5><C4B9><EFBFBD> 0<><30><EFBFBD>رղ<D8B1><D5B2><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڵĹ<DAB5><C4B9><EFBFBD>
|
||||
#if (SEEKFREE_ASSISTANT_DEBUG_PARAM_ENABLE)
|
||||
#define SEEKFREE_ASSISTANT_DEBUG_PARAM_MAX ( 8 ) // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Բ<EFBFBD><D4B2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͨ<EFBFBD><CDA8><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
#define SEEKFREE_ASSISTANT_DEBUG_PARAM_BUFFER_SIZE ( 64 ) // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Բ<EFBFBD><D4B2><EFBFBD><EFBFBD>Ļ<EFBFBD><C4BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>С
|
||||
#endif
|
||||
|
||||
typedef struct
|
||||
{
|
||||
uint8 head; // ֡ͷ
|
||||
uint8 channel_num; // <20><><EFBFBD><EFBFBD>λΪ<CEBB><CEAA><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>λΪͨ<CEAA><CDA8><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
uint8 check_sum; // <EFBFBD><EFBFBD>У<EFBFBD><EFBFBD>
|
||||
uint8 length; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
float data[SEEKFREE_ASSISTANT_SET_OSCILLOSCOPE_COUNT]; // ͨ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
struct
|
||||
{
|
||||
uint8 head ; // ֡ͷ
|
||||
uint8 check_sum ; // <20><>У<EFBFBD><EFBFBD>
|
||||
uint8 cmd ; // <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
uint8 channel_index ; // ͨ<><CDA8><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
uint8 data_lenght_buffer[2] ; // CCD <20><><EFBFBD>ݳ<EFBFBD><DDB3><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
uint8 channel_color_buffer[2] ; // ͨ<><CDA8><EFBFBD><EFBFBD>ɫ <20><><EFBFBD><EFBFBD>
|
||||
uint8 channel_data_max[2] ; // ͨ<><CDA8><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ <20><><EFBFBD><EFBFBD>
|
||||
uint8 data_type ; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>ȷ<EFBFBD>ϴ<EFBFBD>С<EFBFBD><D0A1>
|
||||
uint8 reserve ; // <20><><EFBFBD><EFBFBD>
|
||||
}config;
|
||||
uint16 buffer_byte_size ; // <20><><EFBFBD>ݻ<EFBFBD><DDBB><EFBFBD><EFBFBD><EFBFBD> ʵ<><CAB5><EFBFBD>ֽڴ<D6BD>С
|
||||
void *data_buffer ; // <20><><EFBFBD>ݻ<EFBFBD><DDBB><EFBFBD><EFBFBD><EFBFBD>
|
||||
}seekfree_assistant_ccd_struct;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
struct
|
||||
{
|
||||
uint8 head ; // ֡ͷ
|
||||
uint8 check_sum ; // <20><>У<EFBFBD><D0A3>
|
||||
uint8 cmd ; // <20><><EFBFBD><EFBFBD><EEB9A6><EFBFBD><EFBFBD>
|
||||
uint8 camera_type ; // <20><><EFBFBD><EFBFBD>ͷ<EFBFBD><CDB7><EFBFBD><EFBFBD>
|
||||
uint8 image_width_buffer[2] ; // ͼ<><CDBC><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
uint8 image_height_buffer[2] ; // ͼ<><CDBC><EFBFBD>߶<EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
uint8 data_type ; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>ȷ<EFBFBD>ϴ<EFBFBD>С<EFBFBD><D0A1>
|
||||
uint8 reserve[3] ; // <20><><EFBFBD><EFBFBD>
|
||||
}config;
|
||||
uint32 buffer_byte_size ; // <20><><EFBFBD>ݻ<EFBFBD><DDBB><EFBFBD><EFBFBD><EFBFBD> ʵ<><CAB5><EFBFBD>ֽڴ<D6BD>С
|
||||
void *data_buffer ; // <20><><EFBFBD>ݻ<EFBFBD><DDBB><EFBFBD><EFBFBD><EFBFBD>
|
||||
}seekfree_assistant_camera_struct;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
struct
|
||||
{
|
||||
uint8 head ; // ֡ͷ
|
||||
uint8 check_sum ; // <20><>У<EFBFBD><D0A3>
|
||||
uint8 cmd ; // <20><><EFBFBD><EFBFBD><EEB9A6><EFBFBD><EFBFBD>
|
||||
uint8 data_type ; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>ȷ<EFBFBD>ϴ<EFBFBD>С<EFBFBD><D0A1>
|
||||
uint8 boundary_lenght_buffer[2] ; // <20><><EFBFBD>߳<EFBFBD><DFB3><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
uint8 color_buffer[2] ; // ͨ<><CDA8><EFBFBD><EFBFBD>ɫ <20><><EFBFBD><EFBFBD>
|
||||
}config;
|
||||
uint32 buffer_byte_size ; // <20><><EFBFBD>ݻ<EFBFBD><DDBB><EFBFBD><EFBFBD><EFBFBD> ʵ<><CAB5><EFBFBD>ֽڴ<D6BD>С
|
||||
void *data_buffer ; // <20><><EFBFBD>ݻ<EFBFBD><DDBB><EFBFBD><EFBFBD><EFBFBD>
|
||||
}seekfree_assistant_camera_boundary_struct;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
uint8 head ; // ֡ͷ
|
||||
uint8 check_sum ; // <20><>У<EFBFBD><D0A3>
|
||||
uint8 cmd ; // <20><><EFBFBD><EFBFBD><EEB9A6><EFBFBD><EFBFBD>
|
||||
uint8 reserve ; // <20><><EFBFBD><EFBFBD>
|
||||
uint8 x_axis_buffer[2] ; // X <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
uint8 y_axis_buffer[2] ; // Y <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
uint8 width_buffer[2] ; // <20><><EFBFBD>ο<EFBFBD><CEBF><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
uint8 height_buffer[2] ; // <20><><EFBFBD>θ߶<CEB8> <20><><EFBFBD><EFBFBD>
|
||||
uint8 color_buffer[2] ; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɫ <20><><EFBFBD><EFBFBD>
|
||||
}seekfree_assistant_camera_rectangular_struct;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
struct
|
||||
{
|
||||
uint8 head ; // ֡ͷ
|
||||
uint8 check_sum ; // <20><>У<EFBFBD><D0A3>
|
||||
uint8 cmd ; // <20><><EFBFBD><EFBFBD><EEB9A6><EFBFBD><EFBFBD>
|
||||
uint8 channel_max ; // ͨ<><CDA8><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
uint8 data_type ; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>ȷ<EFBFBD>ϴ<EFBFBD>С<EFBFBD><D0A1>
|
||||
uint8 reserve[3] ; // <20><><EFBFBD><EFBFBD>
|
||||
}config;
|
||||
uint32 buffer_byte_size ; // <20><><EFBFBD>ݻ<EFBFBD><DDBB><EFBFBD><EFBFBD><EFBFBD> ʵ<><CAB5><EFBFBD>ֽڴ<D6BD>С
|
||||
void *data_buffer ; // <20><><EFBFBD>ݻ<EFBFBD><DDBB><EFBFBD><EFBFBD><EFBFBD>
|
||||
}seekfree_assistant_oscilloscope_struct;
|
||||
|
||||
typedef union
|
||||
{
|
||||
uint8 data_uint8[4] ;
|
||||
float data_float ;
|
||||
}seekfree_assistant_param_struct;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
uint8 head; // ֡ͷ
|
||||
uint8 function; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
uint8 camera_type; // <20><><EFBFBD><EFBFBD>λ<EFBFBD><CEBB>ʾ<EFBFBD>߽<EFBFBD><DFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>λ<EFBFBD><CEBB>ʾ<EFBFBD>Ƿ<EFBFBD><C7B7><EFBFBD>ͼ<EFBFBD><CDBC><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>0x13<31><33><EFBFBD><EFBFBD><EFBFBD><EFBFBD>3<EFBFBD><33>ʾһ<CABE><D2BB>ͼ<EFBFBD><CDBC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>߽磨ͨ<E7A3A8><CDA8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>߽硢<DFBD><E7A1A2><EFBFBD>ߡ<EFBFBD><DFA1>ұ߽磩<DFBD><E7A3A9>1<EFBFBD><31>ʾû<CABE><C3BB>ͼ<EFBFBD><CDBC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
uint8 length; // <20><><EFBFBD><EFBFBD><EFBFBD>ȣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Э<EFBFBD>鲿<EFBFBD>֣<EFBFBD>
|
||||
uint16 image_width; // ͼ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
uint16 image_height; // ͼ<><CDBC><EFBFBD>߶<EFBFBD>
|
||||
}seekfree_assistant_camera_struct;
|
||||
|
||||
|
||||
typedef struct
|
||||
{
|
||||
uint8 head; // ֡ͷ
|
||||
uint8 function; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
uint8 dot_type; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> BIT5<54><35>1<EFBFBD><31><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>16λ<36><CEBB> 0<><30><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>8λ<38><CEBB> BIT7-BIT6<54><36>0<EFBFBD><30>ֻ<EFBFBD><D6BB>X<EFBFBD><58><EFBFBD><EFBFBD> 1<><31>ֻ<EFBFBD><D6BB>Y<EFBFBD><59><EFBFBD><EFBFBD> 2<><32>X<EFBFBD><58>Y<EFBFBD><59><EFBFBD>궼<EFBFBD><EAB6BC> BIT3-BIT0<54><30><EFBFBD>߽<EFBFBD><DFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
uint8 length; // <20><><EFBFBD><EFBFBD><EFBFBD>ȣ<EFBFBD><C8A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Э<EFBFBD>鲿<EFBFBD>֣<EFBFBD>
|
||||
uint16 dot_num; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
uint8 valid_flag; // ͨ<><CDA8><EFBFBD><EFBFBD>ʶ
|
||||
uint8 reserve; // <20><><EFBFBD><EFBFBD>
|
||||
}seekfree_assistant_camera_dot_struct;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
void *image_addr; // <20><><EFBFBD><EFBFBD>ͷ<EFBFBD><CDB7>ַ
|
||||
uint16 width; // ͼ<><CDBC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
uint16 height; // ͼ<><CDBC><EFBFBD>߶<EFBFBD>
|
||||
seekfree_assistant_image_type_enum camera_type; // <20><><EFBFBD><EFBFBD>ͷ<EFBFBD><CDB7><EFBFBD><EFBFBD>
|
||||
void *boundary_x[SEEKFREE_ASSISTANT_CAMERA_MAX_BOUNDARY]; // <20>߽<EFBFBD><DFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ַ
|
||||
void *boundary_y[SEEKFREE_ASSISTANT_CAMERA_MAX_BOUNDARY]; // <20>߽<EFBFBD><DFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ַ
|
||||
}seekfree_assistant_camera_buffer_struct;
|
||||
uint8 head ; // ֡ͷ
|
||||
uint8 check_sum ; // <20><>У<EFBFBD><EFBFBD>
|
||||
uint8 cmd ; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
uint8 channel_index ; // ͨ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
seekfree_assistant_param_struct dat ; // һ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
|
||||
}seekfree_assistant_debug_param_cmd_struct;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
uint8 head; // ֡ͷ
|
||||
uint8 function; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
uint8 channel; // ͨ<><CDA8>
|
||||
uint8 check_sum; // <20><>У<EFBFBD><D0A3>
|
||||
float data; // <20><><EFBFBD><EFBFBD>
|
||||
}seekfree_assistant_parameter_struct;
|
||||
uint8 x;
|
||||
uint8 y;
|
||||
}seekfree_assistant_camera_boundary_uint8_struct;
|
||||
|
||||
|
||||
typedef struct
|
||||
{
|
||||
uint8 x;
|
||||
uint8 y;
|
||||
}seekfree_assistant_camera_boundary_uint16_struct;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
float data[SEEKFREE_ASSISTANT_DEBUG_PARAM_MAX] ;
|
||||
uint8 update_flag[SEEKFREE_ASSISTANT_DEBUG_PARAM_MAX] ;
|
||||
}seekfree_assistant_debug_param_struct;
|
||||
|
||||
typedef uint32 (*seekfree_assistant_transfer_callback_function) (const uint8 *buff, uint32 length);
|
||||
typedef uint32 (*seekfree_assistant_receive_callback_function) (uint8 *buff, uint32 length);
|
||||
|
||||
extern seekfree_assistant_oscilloscope_struct seekfree_assistant_oscilloscope_data; // <20><><EFBFBD><EFBFBD>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
extern float seekfree_assistant_parameter[SEEKFREE_ASSISTANT_SET_PARAMETR_COUNT]; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>յ<EFBFBD><D5B5>IJ<EFBFBD><EFBFBD><EFBFBD>
|
||||
extern vuint8 seekfree_assistant_parameter_update_flag[SEEKFREE_ASSISTANT_SET_PARAMETR_COUNT]; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>±<EFBFBD>־λ
|
||||
|
||||
|
||||
void seekfree_assistant_oscilloscope_send (seekfree_assistant_oscilloscope_struct *seekfree_assistant_oscilloscope);
|
||||
void seekfree_assistant_camera_information_config (seekfree_assistant_image_type_enum camera_type, void *image_addr, uint16 width, uint16 height);
|
||||
void seekfree_assistant_camera_boundary_config (seekfree_assistant_boundary_type_enum boundary_type, uint16 dot_num, void *dot_x1, void *dot_x2, void *dot_x3, void *dot_y1, void *dot_y2, void *dot_y3);
|
||||
void seekfree_assistant_camera_send (void);
|
||||
void seekfree_assistant_data_analysis (void);
|
||||
//-------------------------------------------------------------------------------------------------------------------
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> CCD ͼ<><CDBC> <20><EFBFBD><EFBFBD><EFBFBD>
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> *ccd_obj CCD <20><><EFBFBD>ݽṹ<DDBD><E1B9B9>
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> data_type <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> seekfree_assistant_data_type_enum
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> channel_index CCD ͨ<><CDA8>
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> channel_color ͨ<><CDA8>Ҫʹ<D2AA>õ<EFBFBD><C3B5><EFBFBD>ɫ
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> data_lenght CCD <20><><EFBFBD>ݳ<EFBFBD><DDB3><EFBFBD>
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> *data_buffer CCD <20><><EFBFBD>ݻ<EFBFBD><DDBB><EFBFBD><EFBFBD><EFBFBD>
|
||||
// <20><><EFBFBD>ز<EFBFBD><D8B2><EFBFBD> void
|
||||
// ʹ<><CAB9>ʾ<EFBFBD><CABE> seekfree_assistant_ccd_config(ccd_obj, data_type, channel_index, channel_color, data_lenght, data_buffer);
|
||||
//-------------------------------------------------------------------------------------------------------------------
|
||||
void seekfree_assistant_ccd_config (
|
||||
seekfree_assistant_ccd_struct *ccd_obj,
|
||||
seekfree_assistant_data_type_enum data_type,
|
||||
uint8 channel_index,
|
||||
uint16 channel_color,
|
||||
uint16 data_lenght,
|
||||
void *data_buffer);
|
||||
|
||||
//-------------------------------------------------------------------------------------------------------------------
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> CCD ͼ<><CDBC> <20><><EFBFBD>ͺ<EFBFBD><CDBA><EFBFBD>
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> *ccd_obj CCD <20><><EFBFBD>ݽṹ<DDBD><E1B9B9>
|
||||
// <20><><EFBFBD>ز<EFBFBD><D8B2><EFBFBD> void
|
||||
// ʹ<><CAB9>ʾ<EFBFBD><CABE> seekfree_assistant_ccd_send(ccd_obj);
|
||||
//-------------------------------------------------------------------------------------------------------------------
|
||||
void seekfree_assistant_ccd_send (seekfree_assistant_ccd_struct *ccd_obj);
|
||||
|
||||
//-------------------------------------------------------------------------------------------------------------------
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> CAMERA ͼ<><CDBC> <20><><EFBFBD><EFBFBD>
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> *camera_obj CAMERA <20><><EFBFBD>ݽṹ<DDBD><E1B9B9>
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> camera_type CAMERA <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> seekfree_assistant_camera_type_enum
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> image_width CAMERA ͼ<><CDBC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> image_height CAMERA ͼ<><CDBC><EFBFBD>߶<EFBFBD>
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> *data_buffer CAMERA ͼ<><EFBFBD><F1BBBAB3><EFBFBD>
|
||||
// <20><><EFBFBD>ز<EFBFBD><D8B2><EFBFBD> void
|
||||
// ʹ<><CAB9>ʾ<EFBFBD><CABE> seekfree_assistant_camera_config(camera_obj, camera_type, image_width, image_height, data_buffer);
|
||||
//-------------------------------------------------------------------------------------------------------------------
|
||||
void seekfree_assistant_camera_config (
|
||||
seekfree_assistant_camera_struct *camera_obj,
|
||||
seekfree_assistant_camera_type_enum camera_type,
|
||||
uint16 image_width,
|
||||
uint16 image_height,
|
||||
void *data_buffer);
|
||||
|
||||
//-------------------------------------------------------------------------------------------------------------------
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> CAMERA ͼ<><CDBC> <20><><EFBFBD>ͺ<EFBFBD><CDBA><EFBFBD>
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> *camera_obj CAMERA <20><><EFBFBD>ݽṹ<DDBD><E1B9B9>
|
||||
// <20><><EFBFBD>ز<EFBFBD><D8B2><EFBFBD> void
|
||||
// ʹ<><CAB9>ʾ<EFBFBD><CABE> seekfree_assistant_camera_send(camera_obj);
|
||||
//-------------------------------------------------------------------------------------------------------------------
|
||||
void seekfree_assistant_camera_send (seekfree_assistant_camera_struct *camera_obj);
|
||||
|
||||
//-------------------------------------------------------------------------------------------------------------------
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> CAMERA <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> *camera_boundary_obj CAMERA <20><><EFBFBD><EFBFBD> <20><><EFBFBD>ݽṹ<DDBD><E1B9B9>
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> data_type <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> seekfree_assistant_data_type_enum
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> color Ҫʹ<D2AA>õ<EFBFBD><C3B5><EFBFBD>ɫ
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> boundary_lenght CAMERA <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> *data_buffer CAMERA <20><><EFBFBD><EFBFBD> ͼ<><EFBFBD><F1BBBAB3><EFBFBD>
|
||||
// <20><><EFBFBD>ز<EFBFBD><D8B2><EFBFBD> void
|
||||
// ʹ<><CAB9>ʾ<EFBFBD><CABE> seekfree_assistant_camera_boundary_config(camera_boundary_obj, data_type, color, boundary_lenght, data_buffer);
|
||||
//-------------------------------------------------------------------------------------------------------------------
|
||||
void seekfree_assistant_camera_boundary_config (
|
||||
seekfree_assistant_camera_boundary_struct *camera_boundary_obj,
|
||||
seekfree_assistant_data_type_enum data_type,
|
||||
uint16 color,
|
||||
uint16 boundary_lenght,
|
||||
void *data_buffer);
|
||||
|
||||
//-------------------------------------------------------------------------------------------------------------------
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> CAMERA <20><><EFBFBD><EFBFBD> <20><><EFBFBD>ͺ<EFBFBD><CDBA><EFBFBD>
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> *camera_boundary_obj CAMERA <20><><EFBFBD><EFBFBD> <20><><EFBFBD>ݽṹ<DDBD><E1B9B9>
|
||||
// <20><><EFBFBD>ز<EFBFBD><D8B2><EFBFBD> void
|
||||
// ʹ<><CAB9>ʾ<EFBFBD><CABE> seekfree_assistant_camera_boundary_send(camera_boundary_obj);
|
||||
//-------------------------------------------------------------------------------------------------------------------
|
||||
void seekfree_assistant_camera_boundary_send (seekfree_assistant_camera_boundary_struct *camera_boundary_obj);
|
||||
|
||||
//-------------------------------------------------------------------------------------------------------------------
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> CAMERA <20><><EFBFBD>ο<EFBFBD><CEBF><EFBFBD> <20><><EFBFBD>ͺ<EFBFBD><CDBA><EFBFBD>
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> x X <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> y Y <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> width <20><><EFBFBD>ο<EFBFBD><CEBF><EFBFBD>
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> height <20><><EFBFBD>θ߶<CEB8>
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> color <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɫ
|
||||
// <20><><EFBFBD>ز<EFBFBD><D8B2><EFBFBD> void
|
||||
// ʹ<><CAB9>ʾ<EFBFBD><CABE> seekfree_assistant_camera_rectangular_send(x, y, width, height, color);
|
||||
//-------------------------------------------------------------------------------------------------------------------
|
||||
void seekfree_assistant_camera_rectangular_send (uint16 x, uint16 y, uint16 width, uint16 height, uint16 color);
|
||||
|
||||
//-------------------------------------------------------------------------------------------------------------------
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> *oscilloscope_obj ʾ<><CABE><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݽṹ<DDBD><E1B9B9>
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> channel_max <20><><EFBFBD><EFBFBD>ͨ<EFBFBD><CDA8><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>Χ<EFBFBD><CEA7> [1, 16] <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Χ<EFBFBD><CEA7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><DEB5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Χ
|
||||
// <20><><EFBFBD>ز<EFBFBD><D8B2><EFBFBD> void
|
||||
// ʹ<><CAB9>ʾ<EFBFBD><CABE> seekfree_assistant_oscilloscope_config(oscilloscope_obj, 16);
|
||||
//-------------------------------------------------------------------------------------------------------------------
|
||||
void seekfree_assistant_oscilloscope_config (
|
||||
seekfree_assistant_oscilloscope_struct *oscilloscope_obj,
|
||||
uint8 channel_max,
|
||||
void *data_buffer);
|
||||
|
||||
//-------------------------------------------------------------------------------------------------------------------
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD> <20><><EFBFBD>ͺ<EFBFBD><CDBA><EFBFBD>
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> *seekfree_assistant_oscilloscope ʾ<><CABE><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݽṹ<DDBD><E1B9B9>
|
||||
// <20><><EFBFBD>ز<EFBFBD><D8B2><EFBFBD> void
|
||||
// ʹ<><CAB9>ʾ<EFBFBD><CABE> seekfree_assistant_oscilloscope_send(&seekfree_assistant_oscilloscope_data);
|
||||
//-------------------------------------------------------------------------------------------------------------------
|
||||
void seekfree_assistant_oscilloscope_send (seekfree_assistant_oscilloscope_struct *oscilloscope_obj);
|
||||
|
||||
#if (SEEKFREE_ASSISTANT_DEBUG_PARAM_ENABLE)
|
||||
//-------------------------------------------------------------------------------------------------------------------
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD> <20><><EFBFBD>ͺ<EFBFBD><CDBA><EFBFBD>
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> *debug_param_obj ʾ<><CABE><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݽṹ<DDBD><E1B9B9>
|
||||
// <20><><EFBFBD>ز<EFBFBD><D8B2><EFBFBD> void
|
||||
// ʹ<><CAB9>ʾ<EFBFBD><CABE> seekfree_assistant_oscilloscope_send(&seekfree_assistant_oscilloscope_data);
|
||||
//-------------------------------------------------------------------------------------------------------------------
|
||||
void seekfree_assistant_debug_param_analysis (seekfree_assistant_debug_param_struct *debug_param_obj);
|
||||
#endif
|
||||
|
||||
#endif
|
||||
|
||||
@@ -1,20 +1,20 @@
|
||||
/*********************************************************************************************************************
|
||||
* 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>
|
||||
* RT1064DVL6A Opensourec Library <20><><EFBFBD><EFBFBD>RT1064DVL6A <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><C4BC><EFBFBD> RT1064DVL6A <20><>Դ<EFBFBD><D4B4><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD>
|
||||
*
|
||||
* RT1064DVL6A <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>
|
||||
@@ -24,23 +24,20 @@
|
||||
* <20>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD><EFBFBD> seekfree_assistant_interface
|
||||
* <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.10.2
|
||||
* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ADS v1.9.4
|
||||
* <20><><EFBFBD><EFBFBD>ƽ̨ TC264D
|
||||
* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> https://seekfree.taobao.com/
|
||||
*
|
||||
*
|
||||
* <20>ļ<DEB8>¼
|
||||
* <20><><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>ע
|
||||
* 2024-01-01 pudding first version
|
||||
* <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><>ע
|
||||
* 2024-1-11 SeekFree first version
|
||||
********************************************************************************************************************/
|
||||
|
||||
#include "zf_common_typedef.h"
|
||||
#include "zf_common_fifo.h"
|
||||
#include "zf_common_debug.h"
|
||||
#include "zf_driver_uart.h"
|
||||
|
||||
#include "zf_device_wireless_uart.h"
|
||||
#include "zf_device_ble6a20.h"
|
||||
#include "zf_device_bluetooth_ch9141.h"
|
||||
#include "zf_device_wifi_uart.h"
|
||||
#include "zf_device_wifi_spi.h"
|
||||
#include "seekfree_assistant.h"
|
||||
|
||||
@@ -50,7 +47,6 @@
|
||||
extern seekfree_assistant_transfer_callback_function seekfree_assistant_transfer_callback; // <20><><EFBFBD>ݷ<EFBFBD><DDB7>ͺ<EFBFBD><CDBA><EFBFBD>ָ<EFBFBD><D6B8>
|
||||
extern seekfree_assistant_receive_callback_function seekfree_assistant_receive_callback; // <20><><EFBFBD>ݽ<EFBFBD><DDBD>պ<EFBFBD><D5BA><EFBFBD>ָ<EFBFBD><D6B8>
|
||||
|
||||
|
||||
//-------------------------------------------------------------------------------------------------------------------
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ַ<EFBFBD><D6B7>ͺ<EFBFBD><CDBA><EFBFBD>
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> *buff <20><>Ҫ<EFBFBD><D2AA><EFBFBD>͵<EFBFBD><CDB5><EFBFBD><EFBFBD>ݵ<EFBFBD>ַ
|
||||
@@ -58,7 +54,7 @@ extern seekfree_assistant_receive_callback_function seekfree_assistant_receiv
|
||||
// <20><><EFBFBD>ز<EFBFBD><D8B2><EFBFBD> uint32 ʣ<><CAA3>δ<EFBFBD><CEB4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݳ<EFBFBD><DDB3><EFBFBD>
|
||||
// ʹ<><CAB9>ʾ<EFBFBD><CABE>
|
||||
//-------------------------------------------------------------------------------------------------------------------
|
||||
ZF_WEAK uint32 seekfree_assistant_transfer (const uint8 *buff, uint32 length)
|
||||
uint32 seekfree_assistant_transfer (const uint8 *buff, uint32 length)
|
||||
{
|
||||
|
||||
// <20><>ѡ<EFBFBD><D1A1><EFBFBD>Զ<EFBFBD><D4B6><EFBFBD>ͨѶ<CDA8><D1B6>ʽʱ <20><>Ҫ<EFBFBD><D2AA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݷ<EFBFBD><DDB7><EFBFBD><CDB9><EFBFBD>
|
||||
@@ -72,7 +68,7 @@ ZF_WEAK uint32 seekfree_assistant_transfer (const uint8 *buff, uint32 length)
|
||||
// <20><><EFBFBD>ز<EFBFBD><D8B2><EFBFBD> uint32 <20><><EFBFBD>յ<EFBFBD><D5B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݳ<EFBFBD><DDB3><EFBFBD>
|
||||
// ʹ<><CAB9>ʾ<EFBFBD><CABE>
|
||||
//-------------------------------------------------------------------------------------------------------------------
|
||||
ZF_WEAK uint32 seekfree_assistant_receive (uint8 *buff, uint32 length)
|
||||
uint32 seekfree_assistant_receive (uint8 *buff, uint32 length)
|
||||
{
|
||||
// <20><>ѡ<EFBFBD><D1A1><EFBFBD>Զ<EFBFBD><D4B6><EFBFBD>ͨѶ<CDA8><D1B6>ʽʱ <20><>Ҫ<EFBFBD><D2AA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݽ<EFBFBD><DDBD>չ<EFBFBD><D5B9><EFBFBD>
|
||||
return 0;
|
||||
@@ -85,54 +81,45 @@ ZF_WEAK uint32 seekfree_assistant_receive (uint8 *buff, uint32 length)
|
||||
// ʹ<><CAB9>ʾ<EFBFBD><CABE> seekfree_assistant_interface_init(SEEKFREE_ASSISTANT_WIFI_SPI); ʹ<>ø<EFBFBD><C3B8><EFBFBD>WIFI SPIģ<49><C4A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>շ<EFBFBD>
|
||||
// <20><>ע <20><>Ҫ<EFBFBD><D2AA><EFBFBD>е<EFBFBD><D0B5><EFBFBD><EFBFBD>豸<EFBFBD>ij<EFBFBD>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʹ<EFBFBD><CAB9><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ת<EFBFBD><D7AA><EFBFBD>ڽ<EFBFBD><DABD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݵ<EFBFBD><DDB5>շ<EFBFBD><D5B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ҫ<EFBFBD><D2AA><EFBFBD>е<EFBFBD><D0B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ת<EFBFBD><D7AA><EFBFBD>ڵij<DAB5>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD>Ȼ<EFBFBD><C8BB><EFBFBD>ٵ<EFBFBD><D9B5><EFBFBD>seekfree_assistant_interface_init<69><74><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵĽӿڳ<D3BF>ʼ<EFBFBD><CABC>
|
||||
//-------------------------------------------------------------------------------------------------------------------
|
||||
ZF_WEAK void seekfree_assistant_interface_init (seekfree_assistant_transfer_device_enum transfer_device)
|
||||
void seekfree_assistant_interface_init (seekfree_assistant_transfer_device_enum transfer_device)
|
||||
{
|
||||
switch(transfer_device)
|
||||
{
|
||||
case SEEKFREE_ASSISTANT_DEBUG_UART:
|
||||
{
|
||||
#if DEBUG_UART_USE_INTERRUPT == 1
|
||||
seekfree_assistant_transfer_callback = debug_send_buffer;
|
||||
seekfree_assistant_receive_callback = debug_read_ring_buffer;
|
||||
#endif
|
||||
}break;
|
||||
|
||||
|
||||
case SEEKFREE_ASSISTANT_WIRELESS_UART:
|
||||
{
|
||||
seekfree_assistant_transfer_callback = wireless_uart_send_buffer;
|
||||
seekfree_assistant_receive_callback = wireless_uart_read_buffer;
|
||||
}break;
|
||||
|
||||
case SEEKFREE_ASSISTANT_BLE6A20:
|
||||
{
|
||||
seekfree_assistant_transfer_callback = ble6a20_send_buffer;
|
||||
seekfree_assistant_receive_callback = ble6a20_read_buffer;
|
||||
}break;
|
||||
|
||||
case SEEKFREE_ASSISTANT_CH9141:
|
||||
{
|
||||
seekfree_assistant_transfer_callback = bluetooth_ch9141_send_buffer;
|
||||
seekfree_assistant_receive_callback = bluetooth_ch9141_read_buffer;
|
||||
}break;
|
||||
|
||||
case SEEKFREE_ASSISTANT_WIFI_UART:
|
||||
{
|
||||
seekfree_assistant_transfer_callback = wifi_uart_send_buffer;
|
||||
seekfree_assistant_receive_callback = wifi_uart_read_buffer;
|
||||
}break;
|
||||
|
||||
// case SEEKFREE_ASSISTANT_CH9141:
|
||||
// {
|
||||
// seekfree_assistant_transfer_callback = bluetooth_ch9141_send_buffer;
|
||||
// seekfree_assistant_receive_callback = bluetooth_ch9141_read_buffer;
|
||||
// }break;
|
||||
|
||||
// case SEEKFREE_ASSISTANT_WIFI_UART:
|
||||
// {
|
||||
// seekfree_assistant_transfer_callback = wifi_uart_send_buffer;
|
||||
// seekfree_assistant_receive_callback = wifi_uart_read_buffer;
|
||||
// }break;
|
||||
|
||||
case SEEKFREE_ASSISTANT_WIFI_SPI:
|
||||
{
|
||||
seekfree_assistant_transfer_callback = wifi_spi_send_buffer;
|
||||
seekfree_assistant_receive_callback = wifi_spi_read_buffer;
|
||||
}break;
|
||||
|
||||
case SEEKFREE_ASSISTANT_CUSTOM:
|
||||
{
|
||||
|
||||
default:
|
||||
{
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD>Լ<EFBFBD><D4BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>ʵ<EFBFBD><CAB5>seekfree_assistant_transfer<65><72>seekfree_assistant_receive<76><65><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݵ<EFBFBD><DDB5>շ<EFBFBD>
|
||||
|
||||
seekfree_assistant_transfer_callback = seekfree_assistant_transfer;
|
||||
seekfree_assistant_receive_callback = seekfree_assistant_receive;
|
||||
}break;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -1,20 +1,20 @@
|
||||
/*********************************************************************************************************************
|
||||
* 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>
|
||||
* RT1064DVL6A Opensourec Library <20><><EFBFBD><EFBFBD>RT1064DVL6A <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><C4BC><EFBFBD> RT1064DVL6A <20><>Դ<EFBFBD><D4B4><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD>
|
||||
*
|
||||
* RT1064DVL6A <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>
|
||||
@@ -24,13 +24,13 @@
|
||||
* <20>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD><EFBFBD> seekfree_assistant_interface
|
||||
* <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.10.2
|
||||
* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ADS v1.9.4
|
||||
* <20><><EFBFBD><EFBFBD>ƽ̨ TC264D
|
||||
* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> https://seekfree.taobao.com/
|
||||
*
|
||||
*
|
||||
* <20>ļ<DEB8>¼
|
||||
* <20><><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>ע
|
||||
* 2024-01-01 pudding first version
|
||||
* <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><>ע
|
||||
* 2024-1-11 SeekFree first version
|
||||
********************************************************************************************************************/
|
||||
|
||||
#ifndef _seekfree_assistant_interface_h_
|
||||
@@ -43,7 +43,6 @@ typedef enum
|
||||
{
|
||||
SEEKFREE_ASSISTANT_DEBUG_UART, // <20><><EFBFBD>Դ<EFBFBD><D4B4><EFBFBD> ʹ<>õĴ<C3B5><C4B4><EFBFBD><EFBFBD><EFBFBD>DEBUG_UART_INDEX<45>궨<EFBFBD><EAB6A8>ָ<EFBFBD><D6B8>
|
||||
SEEKFREE_ASSISTANT_WIRELESS_UART, // <20><><EFBFBD><EFBFBD>ת<EFBFBD><D7AA><EFBFBD><EFBFBD>
|
||||
SEEKFREE_ASSISTANT_BLE6A20, // <20><><EFBFBD><EFBFBD>ת<EFBFBD><D7AA><EFBFBD><EFBFBD>
|
||||
SEEKFREE_ASSISTANT_CH9141, // CH9141<34><31><EFBFBD><EFBFBD>
|
||||
SEEKFREE_ASSISTANT_WIFI_UART, // WIFIת<49><D7AA><EFBFBD><EFBFBD>
|
||||
SEEKFREE_ASSISTANT_WIFI_SPI, // <20><><EFBFBD><EFBFBD>WIFI SPI
|
||||
|
||||
@@ -62,7 +62,7 @@
|
||||
//====================================================<3D><><EFBFBD><EFBFBD> SPI <20><><EFBFBD><EFBFBD>====================================================
|
||||
#else
|
||||
//====================================================Ӳ<><D3B2> SPI <20><><EFBFBD><EFBFBD>====================================================
|
||||
#define ABSOLUTE_ENCODER_SPI_SPEED (10*1000*1000) // Ӳ<><D3B2> SPI <20><><EFBFBD><EFBFBD>
|
||||
#define ABSOLUTE_ENCODER_SPI_SPEED (8*1000*1000) // Ӳ<><D3B2> SPI <20><><EFBFBD><EFBFBD>
|
||||
#define ABSOLUTE_ENCODER_SPI (SPI_0) // Ӳ<><D3B2> SPI <20><>
|
||||
#define ABSOLUTE_ENCODER_SCLK_PIN (SPI0_SCLK_P20_11) // Ӳ<><D3B2> SPI SCK <20><><EFBFBD><EFBFBD>
|
||||
#define ABSOLUTE_ENCODER_MOSI_PIN (SPI0_MOSI_P20_14) // Ӳ<><D3B2> SPI MOSI <20><><EFBFBD><EFBFBD>
|
||||
@@ -70,7 +70,7 @@
|
||||
//====================================================Ӳ<><D3B2> SPI <20><><EFBFBD><EFBFBD>====================================================
|
||||
#endif
|
||||
|
||||
#define ABSOLUTE_ENCODER_CS_PIN (P20_13) // CS<43><53><EFBFBD>Ŷ<EFBFBD><C5B6><EFBFBD>
|
||||
#define ABSOLUTE_ENCODER_CS_PIN (P00_8) // CS<43><53><EFBFBD>Ŷ<EFBFBD><C5B6><EFBFBD>
|
||||
#define ABSOLUTE_ENCODER_CSN(x) ((x) ? (gpio_high(ABSOLUTE_ENCODER_CS_PIN)): (gpio_low(ABSOLUTE_ENCODER_CS_PIN)))
|
||||
|
||||
#define ABSOLUTE_ENCODER_TIMEOUT_COUNT (100) // <20>Լ쳬ʱʱ<CAB1><CAB1>
|
||||
|
||||
@@ -76,7 +76,7 @@
|
||||
// 1<><31><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Զ<EFBFBD><D4B6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>Զ<EFBFBD><D4B6><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʵ<EFBFBD><CAB5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> BLE6A20_BAUD ֮<><D6AE><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ҫ<EFBFBD><D2AA>ģ<EFBFBD><C4A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ģ<><C4A3><EFBFBD><EFBFBD><EFBFBD>Զ<EFBFBD><D4B6><EFBFBD><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA>Ӧ<EFBFBD>IJ<EFBFBD><C4B2><EFBFBD><EFBFBD><EFBFBD>
|
||||
// <20>Զ<EFBFBD><D4B6><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʽ<EFBFBD>֧<EFBFBD><D6A7> 9600 57600 115200 230400 460800 921600 1500000 2000000
|
||||
|
||||
#define BLE6A20_AUTO_BAUD_RATE ( 0 )
|
||||
#define BLE6A20_AUTO_BAUD_RATE ( 1 )
|
||||
|
||||
#if (1 == BLE6A20_AUTO_BAUD_RATE)
|
||||
typedef enum
|
||||
|
||||
@@ -0,0 +1,563 @@
|
||||
/*********************************************************************************************************************
|
||||
* RT1064DVL6A Opensourec Library <20><><EFBFBD><EFBFBD>RT1064DVL6A <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> RT1064DVL6A <20><>Դ<EFBFBD><D4B4><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD>
|
||||
*
|
||||
* RT1064DVL6A <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_imu660rc
|
||||
* <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.10.2
|
||||
* <20><><EFBFBD><EFBFBD>ƽ̨ TC264
|
||||
* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> https://seekfree.taobao.com/
|
||||
*
|
||||
* <20>ļ<DEB8>¼
|
||||
* <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><>ע
|
||||
* 2025-12-12 SeekFree first version
|
||||
********************************************************************************************************************/
|
||||
/*********************************************************************************************************************
|
||||
* <20><><EFBFBD>߶<EFBFBD><DFB6>壺
|
||||
* ------------------------------------
|
||||
* ģ<><C4A3><EFBFBD>ܽ<EFBFBD> <20><>Ƭ<EFBFBD><C6AC><EFBFBD>ܽ<EFBFBD>
|
||||
* // Ӳ<><D3B2> SPI <20><><EFBFBD><EFBFBD>
|
||||
* SCL/SPC <20>鿴 zf_device_imu660rc.h <20><> IMU660RC_SPC_PIN <20>궨<EFBFBD><EAB6A8>
|
||||
* SDA/DSI <20>鿴 zf_device_imu660rc.h <20><> IMU660RC_SDI_PIN <20>궨<EFBFBD><EAB6A8>
|
||||
* SA0/SDO <20>鿴 zf_device_imu660rc.h <20><> IMU660RC_SDO_PIN <20>궨<EFBFBD><EAB6A8>
|
||||
* CS <20>鿴 zf_device_imu660rc.h <20><> IMU660RC_CS_PIN <20>궨<EFBFBD><EAB6A8>
|
||||
* INT2 <20>鿴 zf_device_imu660rc.h <20><> IMU660RC_INT2_PIN <20>궨<EFBFBD><EAB6A8>
|
||||
* VCC 3.3V<EFBFBD><EFBFBD>Դ
|
||||
* GND <20><>Դ<EFBFBD><D4B4>
|
||||
* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
*
|
||||
* // <20><><EFBFBD><EFBFBD> IIC <20><><EFBFBD><EFBFBD>
|
||||
* SCL/SPC <20>鿴 zf_device_imu660rc.h <20><> IMU660RC_SCL_PIN <20>궨<EFBFBD><EAB6A8>
|
||||
* SDA/DSI <20>鿴 zf_device_imu660rc.h <20><> IMU660RC_SDA_PIN <20>궨<EFBFBD><EAB6A8>
|
||||
* VCC 3.3V<EFBFBD><EFBFBD>Դ
|
||||
* GND <20><>Դ<EFBFBD><D4B4>
|
||||
* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
* ------------------------------------
|
||||
********************************************************************************************************************/
|
||||
|
||||
|
||||
#include "math.h"
|
||||
#include "zf_common_debug.h"
|
||||
#include "zf_driver_delay.h"
|
||||
#include "zf_driver_spi.h"
|
||||
#include "zf_driver_gpio.h"
|
||||
#include "zf_driver_soft_iic.h"
|
||||
#include "zf_device_config.h"
|
||||
#include "zf_driver_uart.h"
|
||||
#include "zf_driver_exti.h"
|
||||
|
||||
#include "zf_device_imu660rc.h"
|
||||
|
||||
#ifndef M_PI
|
||||
#define M_PI 3.1415926f
|
||||
#endif
|
||||
|
||||
|
||||
static uint8 imu660rc_quarternion_rate;
|
||||
|
||||
float imu660rc_transition_factor[2];
|
||||
int16 imu660rc_gyro_x = 0, imu660rc_gyro_y = 0, imu660rc_gyro_z = 0; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> gyro (<28><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>)
|
||||
int16 imu660rc_acc_x = 0, imu660rc_acc_y = 0, imu660rc_acc_z = 0; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ٶȼ<D9B6><C8BC><EFBFBD><EFBFBD><EFBFBD> acc (accelerometer <20><><EFBFBD>ٶȼ<D9B6>)
|
||||
float imu660rc_roll = 0, imu660rc_pitch = 0, imu660rc_yaw = 0; // ŷ<><C5B7><EFBFBD><EFBFBD>
|
||||
float imu660rc_quarternion[4]; // <20><>Ԫ<EFBFBD><D4AA>
|
||||
|
||||
|
||||
|
||||
#if IMU660RC_USE_SOFT_IIC
|
||||
static soft_iic_info_struct imu660rc_iic_struct;
|
||||
|
||||
#define imu660rc_write_register(reg, data) (soft_iic_write_8bit_register (&imu660rc_iic_struct, (reg), (data)))
|
||||
#define imu660rc_write_registers(reg, data, len) (soft_iic_write_8bit_registers(&imu660rc_iic_struct, (reg), (data), (len)))
|
||||
#define imu660rc_read_register(reg) (soft_iic_read_8bit_register (&imu660rc_iic_struct, (reg)))
|
||||
#define imu660rc_read_registers(reg, data, len) (soft_iic_read_8bit_registers (&imu660rc_iic_struct, (reg), (data), (len)))
|
||||
#else
|
||||
//-------------------------------------------------------------------------------------------------------------------
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> IMU660RC д<>Ĵ<EFBFBD><C4B4><EFBFBD>
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> reg <20>Ĵ<EFBFBD><C4B4><EFBFBD><EFBFBD><EFBFBD>ַ
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> data <20><><EFBFBD><EFBFBD>
|
||||
// <20><><EFBFBD>ز<EFBFBD><D8B2><EFBFBD> void
|
||||
// ʹ<><CAB9>ʾ<EFBFBD><CABE>
|
||||
// <20><>ע<EFBFBD><D7A2>Ϣ <20>ڲ<EFBFBD><DAB2><EFBFBD><EFBFBD><EFBFBD>
|
||||
//-------------------------------------------------------------------------------------------------------------------
|
||||
static void imu660rc_write_register (uint8 reg, uint8 data)
|
||||
{
|
||||
IMU660RC_CS(0);
|
||||
spi_write_8bit_register(IMU660RC_SPI, reg | IMU660RC_SPI_W, data);
|
||||
IMU660RC_CS(1);
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------------------------------------------------------
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> IMU660RC <20><><EFBFBD>Ĵ<EFBFBD><C4B4><EFBFBD>
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> reg <20>Ĵ<EFBFBD><C4B4><EFBFBD><EFBFBD><EFBFBD>ַ
|
||||
// <20><><EFBFBD>ز<EFBFBD><D8B2><EFBFBD> uint8 <20><><EFBFBD><EFBFBD>
|
||||
// ʹ<><CAB9>ʾ<EFBFBD><CABE> imu660rc_read_register(IMU660RC_CHIP_ID);
|
||||
// <20><>ע<EFBFBD><D7A2>Ϣ <20>ڲ<EFBFBD><DAB2><EFBFBD><EFBFBD><EFBFBD>
|
||||
//-------------------------------------------------------------------------------------------------------------------
|
||||
static uint8 imu660rc_read_register (uint8 reg)
|
||||
{
|
||||
uint8 data;
|
||||
IMU660RC_CS(0);
|
||||
data = spi_read_8bit_register(IMU660RC_SPI, reg | IMU660RC_SPI_R);
|
||||
IMU660RC_CS(1);
|
||||
return data;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------------------------------------------------------
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> IMU660RC <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> reg <20>Ĵ<EFBFBD><C4B4><EFBFBD><EFBFBD><EFBFBD>ַ
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> data <20><><EFBFBD>ݻ<EFBFBD><DDBB><EFBFBD><EFBFBD><EFBFBD>
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> len <20><><EFBFBD>ݳ<EFBFBD><DDB3><EFBFBD>
|
||||
// <20><><EFBFBD>ز<EFBFBD><D8B2><EFBFBD> void
|
||||
// ʹ<><CAB9>ʾ<EFBFBD><CABE> imu660rc_read_registers(IMU660RC_ACC_ADDRESS, dat, 6);
|
||||
// <20><>ע<EFBFBD><D7A2>Ϣ <20>ڲ<EFBFBD><DAB2><EFBFBD><EFBFBD><EFBFBD>
|
||||
//-------------------------------------------------------------------------------------------------------------------
|
||||
static void imu660rc_read_registers (uint8 reg, uint8 *data, uint32 len)
|
||||
{
|
||||
IMU660RC_CS(0);
|
||||
spi_read_8bit_registers(IMU660RC_SPI, reg | IMU660RC_SPI_R, data, len);
|
||||
IMU660RC_CS(1);
|
||||
}
|
||||
#endif
|
||||
|
||||
//-------------------------------------------------------------------------------------------------------------------
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> IMU660RC fp16ת<36><D7AA><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> void
|
||||
// <20><><EFBFBD>ز<EFBFBD><D8B2><EFBFBD> uint8
|
||||
// ʹ<><CAB9>ʾ<EFBFBD><CABE>
|
||||
// <20><>ע<EFBFBD><D7A2>Ϣ <20>ڲ<EFBFBD><DAB2><EFBFBD><EFBFBD><EFBFBD>
|
||||
//-------------------------------------------------------------------------------------------------------------------
|
||||
static uint32 fp16_to_float(uint16 h)
|
||||
{
|
||||
uint16 h_exp = (h & 0x7c00u);
|
||||
uint32 f_sgn = ((uint32)h & 0x8000u) << 16;
|
||||
switch (h_exp)
|
||||
{
|
||||
case 0x0000u: // 0 or subnormal
|
||||
{
|
||||
uint16 h_sig = (h & 0x03ffu);
|
||||
// Signed zero
|
||||
if (h_sig == 0)
|
||||
{
|
||||
return f_sgn;
|
||||
}
|
||||
// Subnormal
|
||||
h_sig <<= 1;
|
||||
while ((h_sig & 0x0400u) == 0)
|
||||
{
|
||||
h_sig <<= 1;
|
||||
h_exp++;
|
||||
}
|
||||
uint32 f_exp = ((uint32)(127 - 15 - h_exp)) << 23;
|
||||
uint32 f_sig = ((uint32)(h_sig & 0x03ffu)) << 13;
|
||||
return f_sgn + f_exp + f_sig;
|
||||
}
|
||||
case 0x7c00u: // inf or NaN
|
||||
{
|
||||
// All-ones exponent and a copy of the significand
|
||||
return f_sgn + 0x7f800000u + (((uint32)(h & 0x03ffu)) << 13);
|
||||
}
|
||||
default: // normalized
|
||||
{
|
||||
// Just need to adjust the exponent and shift
|
||||
return f_sgn + (((uint32)(h & 0x7fffu) + 0x1c000u) << 13);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------------------------------------------------------
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> IMU660RC <20><>Ԫ<EFBFBD><D4AA><EFBFBD><EFBFBD>һ<EFBFBD><D2BB>
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> void
|
||||
// <20><><EFBFBD>ز<EFBFBD><D8B2><EFBFBD> uint8
|
||||
// ʹ<><CAB9>ʾ<EFBFBD><CABE>
|
||||
// <20><>ע<EFBFBD><D7A2>Ϣ <20>ڲ<EFBFBD><DAB2><EFBFBD><EFBFBD><EFBFBD>
|
||||
//-------------------------------------------------------------------------------------------------------------------
|
||||
static void quarternion_normalize(float quat[4], uint16 *fp16)
|
||||
{
|
||||
float n = 0;
|
||||
float temp[4];
|
||||
|
||||
*(uint32 *)(&temp[0]) = fp16_to_float(fp16[0]);
|
||||
*(uint32 *)(&temp[1]) = fp16_to_float(fp16[1]);
|
||||
*(uint32 *)(&temp[2]) = fp16_to_float(fp16[2]);
|
||||
*(uint32 *)(&temp[3]) = fp16_to_float(fp16[3]);
|
||||
|
||||
n = temp[0] * temp[0] + temp[1] * temp[1] + temp[2] * temp[2] + temp[3] * temp[3];
|
||||
n = sqrtf(n);
|
||||
|
||||
if(n > 0.001f) // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Խӽ<D4BD>0<EFBFBD><30>ֵ
|
||||
{
|
||||
n = temp[3] < 0.0f ? -n : n;
|
||||
|
||||
quat[0] = temp[1] / n;
|
||||
quat[1] = temp[2] / n;
|
||||
quat[2] = temp[0] / n;
|
||||
quat[3] = temp[3] / n;
|
||||
}
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------------------------------------------------------
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> IMU660RC <20><>Ԫ<EFBFBD><D4AA>תŷ<D7AA><C5B7><EFBFBD><EFBFBD>
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> void
|
||||
// <20><><EFBFBD>ز<EFBFBD><D8B2><EFBFBD> uint8
|
||||
// ʹ<><CAB9>ʾ<EFBFBD><CABE>
|
||||
// <20><>ע<EFBFBD><D7A2>Ϣ <20>ڲ<EFBFBD><DAB2><EFBFBD><EFBFBD><EFBFBD>
|
||||
//-------------------------------------------------------------------------------------------------------------------
|
||||
static void quarternion_to_euler(float quat[4], float *roll, float *pitch, float *yaw)
|
||||
{
|
||||
float euler[3];
|
||||
|
||||
float sqx = quat[0] * quat[0];
|
||||
float sqy = quat[1] * quat[1];
|
||||
float sqz = quat[2] * quat[2];
|
||||
|
||||
euler[0] = atan2f(2.0f * (quat[1] * quat[3] + quat[0] * quat[2]), 1.0f - 2.0f * (sqy + sqx));
|
||||
euler[1] = -asinf(2.0f * (quat[0] * quat[3] - quat[1] * quat[2]));
|
||||
euler[2] = atan2f(2.0f * (quat[0] * quat[1] + quat[2] * quat[3]), 1.0f - 2.0f * (sqx + sqz));
|
||||
|
||||
// <20><><EFBFBD><EFBFBD>ת<EFBFBD>Ƕ<EFBFBD>
|
||||
euler[0] = 180 * (euler[0]) / M_PI;
|
||||
euler[1] = 180 * (euler[1]) / M_PI;
|
||||
euler[2] = 180 * (euler[2]) / M_PI;
|
||||
|
||||
// <20>Ƕȵ<C7B6><C8B5><EFBFBD>
|
||||
euler[2] = 0 > euler[2] ? euler[2] + 360 : euler[2];
|
||||
|
||||
*roll = euler[0];
|
||||
*pitch = euler[1];
|
||||
*yaw = euler[2];
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------------------------------------------------------
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> IMU660RC <20><><EFBFBD>÷<EFBFBD><C3B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> void
|
||||
// <20><><EFBFBD>ز<EFBFBD><D8B2><EFBFBD> uint8
|
||||
// ʹ<><CAB9>ʾ<EFBFBD><CABE>
|
||||
// <20><>ע<EFBFBD><D7A2>Ϣ <20>ڲ<EFBFBD><DAB2><EFBFBD><EFBFBD><EFBFBD>
|
||||
//-------------------------------------------------------------------------------------------------------------------
|
||||
static void imu660rc_set_mem_bank (imu660rc_mem_bank_enum bank)
|
||||
{
|
||||
imu660rc_write_register(IMU660RC_FUNC_CFG_ACCESS, bank);
|
||||
}
|
||||
|
||||
|
||||
//-------------------------------------------------------------------------------------------------------------------
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> IMU660RC <20>Լ<EFBFBD>
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> void
|
||||
// <20><><EFBFBD>ز<EFBFBD><D8B2><EFBFBD> uint8 1-<2D>Լ<EFBFBD>ʧ<EFBFBD><CAA7> 0-<2D>Լ<EFBFBD><D4BC>ɹ<EFBFBD>
|
||||
// ʹ<><CAB9>ʾ<EFBFBD><CABE> imu660rc_self_check();
|
||||
// <20><>ע<EFBFBD><D7A2>Ϣ <20>ڲ<EFBFBD><DAB2><EFBFBD><EFBFBD><EFBFBD>
|
||||
//-------------------------------------------------------------------------------------------------------------------
|
||||
static uint8 imu660rc_self_check (void)
|
||||
{
|
||||
uint8 dat = 0, return_state = 0;
|
||||
uint16 timeout_count = 0;
|
||||
do
|
||||
{
|
||||
if(IMU660RC_TIMEOUT_COUNT < timeout_count ++)
|
||||
{
|
||||
return_state = 1;
|
||||
break;
|
||||
}
|
||||
dat = imu660rc_read_register(IMU660RC_CHIP_ID);
|
||||
system_delay_ms(1);
|
||||
}while(0x70 != dat); // <20><>ȡ<EFBFBD>豸ID<49>Ƿ<EFBFBD><C7B7><EFBFBD><EFBFBD><EFBFBD>0x70<37><30><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>0x70<37><30><EFBFBD><EFBFBD>Ϊû<CEAA><C3BB><EFBFBD><EFBFBD>豸
|
||||
return return_state;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------------------------------------------------------
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>ȡ IMU660RC <20><><EFBFBD>ٶȼ<D9B6><C8BC><EFBFBD><EFBFBD><EFBFBD>
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> void
|
||||
// <20><><EFBFBD>ز<EFBFBD><D8B2><EFBFBD> void
|
||||
// ʹ<><CAB9>ʾ<EFBFBD><CABE> imu660rc_get_acc(); // ִ<>иú<D0B8><C3BA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֱ<EFBFBD>Ӳ鿴<D3B2><E9BFB4>Ӧ<EFBFBD>ı<EFBFBD><C4B1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
// <20><>ע<EFBFBD><D7A2>Ϣ ʹ<><CAB9> SPI <20>IJɼ<C4B2>ʱ<EFBFBD><CAB1>Ϊ10us
|
||||
//-------------------------------------------------------------------------------------------------------------------
|
||||
void imu660rc_get_acc (void)
|
||||
{
|
||||
int16 dat[3];
|
||||
if(IMU660RC_QUARTERNION_DISABLE == imu660rc_quarternion_rate)
|
||||
{ // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ԫ<EFBFBD><D4AA><EFBFBD>ر<EFBFBD>״̬<D7B4><CCAC>֧<EFBFBD>ֵ<EFBFBD><D6B5>ô˺<C3B4><CBBA><EFBFBD><EFBFBD><EFBFBD> <20><>Ԫ<EFBFBD><D4AA><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ҫ<EFBFBD><D2AA>ȡ<EFBFBD><C8A1><EFBFBD>ٶ<EFBFBD><D9B6><EFBFBD>Ϣ<EFBFBD><CFA2>IMU660RC_QUARTERNION_GET_ACC<43><43><EFBFBD><EFBFBD>Ϊ1
|
||||
imu660rc_read_registers(IMU660RC_OUTX_L_A, (uint8 *)dat, 6);
|
||||
imu660rc_acc_x = dat[0];
|
||||
imu660rc_acc_y = dat[1];
|
||||
imu660rc_acc_z = dat[2];
|
||||
}
|
||||
}
|
||||
//-------------------------------------------------------------------------------------------------------------------
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>ȡ IMU660RC <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> void
|
||||
// <20><><EFBFBD>ز<EFBFBD><D8B2><EFBFBD> void
|
||||
// ʹ<><CAB9>ʾ<EFBFBD><CABE> imu660rc_get_gyro(); // ִ<>иú<D0B8><C3BA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֱ<EFBFBD>Ӳ鿴<D3B2><E9BFB4>Ӧ<EFBFBD>ı<EFBFBD><C4B1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
// <20><>ע<EFBFBD><D7A2>Ϣ ʹ<><CAB9> SPI <20>IJɼ<C4B2>ʱ<EFBFBD><CAB1>Ϊ10us
|
||||
//-------------------------------------------------------------------------------------------------------------------
|
||||
void imu660rc_get_gyro (void)
|
||||
{
|
||||
int16 dat[3];
|
||||
if(IMU660RC_QUARTERNION_DISABLE == imu660rc_quarternion_rate)
|
||||
{ // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ԫ<EFBFBD><D4AA><EFBFBD>ر<EFBFBD>״̬<D7B4><CCAC>֧<EFBFBD>ֵ<EFBFBD><D6B5>ô˺<C3B4><CBBA><EFBFBD><EFBFBD><EFBFBD> <20><>Ԫ<EFBFBD><D4AA><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ҫ<EFBFBD><D2AA>ȡ<EFBFBD><C8A1><EFBFBD>ٶ<EFBFBD><D9B6><EFBFBD>Ϣ<EFBFBD><CFA2>IMU660RC_QUARTERNION_GET_GYRO<52><4F><EFBFBD><EFBFBD>Ϊ1
|
||||
imu660rc_read_registers(IMU660RC_OUTX_L_G, (uint8 *)dat, 6);
|
||||
imu660rc_gyro_x = dat[0];
|
||||
imu660rc_gyro_y = dat[1];
|
||||
imu660rc_gyro_z = dat[2];
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
//-------------------------------------------------------------------------------------------------------------------
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>ȡ IMU660RC <20><>Ԫ<EFBFBD><D4AA><EFBFBD><EFBFBD><EFBFBD>ݲ<EFBFBD>ת<EFBFBD><D7AA>Ϊŷ<CEAA><C5B7><EFBFBD><EFBFBD>
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> void
|
||||
// <20><><EFBFBD>ز<EFBFBD><D8B2><EFBFBD> void
|
||||
// ʹ<><CAB9>ʾ<EFBFBD><CABE> imu660rc_get_quarternion(); // ִ<>иú<D0B8><C3BA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֱ<EFBFBD>Ӳ鿴<D3B2><E9BFB4>Ӧ<EFBFBD>ı<EFBFBD><C4B1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
// <20><>ע<EFBFBD><D7A2>Ϣ <20><>Ҫ<EFBFBD><D2AA>INT2<54><32><EFBFBD>Ŵ<EFBFBD><C5B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>жϵ<D0B6><CFB5>ô˺<C3B4><CBBA><EFBFBD>
|
||||
//
|
||||
//-------------------------------------------------------------------------------------------------------------------
|
||||
void imu660rc_get_quarternion(void)
|
||||
{
|
||||
uint8 i;
|
||||
uint16 buff[4];
|
||||
uint8 *buff1_ptr;
|
||||
int16 *buff2_ptr;
|
||||
|
||||
if(IMU660RC_QUARTERNION_DISABLE != imu660rc_quarternion_rate)
|
||||
{
|
||||
buff1_ptr = (uint8 *)buff;
|
||||
|
||||
imu660rc_set_mem_bank(IMU660RC_EMBED_MEM_BANK);
|
||||
imu660rc_write_register(IMU660RC_PAGE_RW, 0x20);
|
||||
imu660rc_write_register(IMU660RC_PAGE_SEL, 0x31);
|
||||
|
||||
for(i = 0; 8 > i; i++)
|
||||
{
|
||||
imu660rc_write_register(0x08, 0x4C + i);
|
||||
buff1_ptr[i] = imu660rc_read_register(0x09);
|
||||
}
|
||||
|
||||
imu660rc_write_register(IMU660RC_PAGE_RW, 0x0);
|
||||
imu660rc_set_mem_bank(IMU660RC_MAIN_MEM_BANK);
|
||||
|
||||
// <20><>Ԫ<EFBFBD><D4AA><EFBFBD><EFBFBD>һ<EFBFBD><D2BB>
|
||||
quarternion_normalize(imu660rc_quarternion, buff);
|
||||
// <20><>Ԫ<EFBFBD><D4AA>תŷ<D7AA><C5B7><EFBFBD><EFBFBD>
|
||||
quarternion_to_euler(imu660rc_quarternion, &imu660rc_roll, &imu660rc_pitch, &imu660rc_yaw);
|
||||
|
||||
// <20><>ȡ<EFBFBD><C8A1><EFBFBD>ٶ<EFBFBD><D9B6><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ٶ<EFBFBD><D9B6><EFBFBD>Ϣ
|
||||
#if(1 == IMU660RC_QUARTERNION_GET_ACC)
|
||||
{
|
||||
buff2_ptr = (int16 *)buff;
|
||||
imu660rc_read_registers(IMU660RC_OUTX_L_A, (uint8 *)buff2_ptr, 6);
|
||||
imu660rc_acc_x = buff2_ptr[0];
|
||||
imu660rc_acc_y = buff2_ptr[1];
|
||||
imu660rc_acc_z = buff2_ptr[2];
|
||||
}
|
||||
#endif
|
||||
#if(1 == IMU660RC_QUARTERNION_GET_GYRO)
|
||||
{
|
||||
buff2_ptr = (int16 *)buff;
|
||||
imu660rc_read_registers(IMU660RC_OUTX_L_G, (uint8 *)buff2_ptr, 6);
|
||||
imu660rc_gyro_x = buff2_ptr[0];
|
||||
imu660rc_gyro_y = buff2_ptr[1];
|
||||
imu660rc_gyro_z = buff2_ptr[2];
|
||||
}
|
||||
#endif
|
||||
}
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------------------------------------------------------
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> IMU660RC<52>жϻص<CFBB><D8B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ҫ<EFBFBD><D2AA><EFBFBD>ж<EFBFBD><D0B6>ڶ<EFBFBD>ȡ<EFBFBD><C8A1>Ԫ<EFBFBD><D4AA>
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> void
|
||||
// <20><><EFBFBD>ز<EFBFBD><D8B2><EFBFBD> void
|
||||
// ʹ<><CAB9>ʾ<EFBFBD><CABE>
|
||||
// <20><>ע<EFBFBD><D7A2>Ϣ
|
||||
//
|
||||
//-------------------------------------------------------------------------------------------------------------------
|
||||
void imu660rc_callback(void)
|
||||
{
|
||||
imu660rc_get_quarternion();
|
||||
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------------------------------------------------------
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>ʼ<EFBFBD><CABC> IMU660RC
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> quarternion_rate ѡ<><D1A1><EFBFBD><EFBFBD>Ԫ<EFBFBD><D4AA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
// <20><><EFBFBD>ز<EFBFBD><D8B2><EFBFBD> uint8 1-<2D><>ʼ<EFBFBD><CABC>ʧ<EFBFBD><CAA7> 0-<2D><>ʼ<EFBFBD><CABC><EFBFBD>ɹ<EFBFBD>
|
||||
// ʹ<><CAB9>ʾ<EFBFBD><CABE> imu660rc_init(IMU660RC_QUARTERNION_120HZ);
|
||||
// <20><>ע<EFBFBD><D7A2>Ϣ
|
||||
//-------------------------------------------------------------------------------------------------------------------
|
||||
uint8 imu660rc_init(imu660rc_quarternion_rate_config quarternion_rate)
|
||||
{
|
||||
uint8 return_state = 0;
|
||||
|
||||
imu660rc_quarternion_rate = quarternion_rate;
|
||||
#if IMU660RC_USE_SOFT_IIC
|
||||
soft_iic_init(&imu660rc_iic_struct, IMU660RC_DEV_ADDR, IMU660RC_SOFT_IIC_DELAY, IMU660RC_SCL_PIN, IMU660RC_SDA_PIN); // <20><><EFBFBD><EFBFBD> IMU660RC <20><> IIC <20>˿<EFBFBD>
|
||||
|
||||
#else
|
||||
spi_init(IMU660RC_SPI, SPI_MODE0, IMU660RC_SPI_SPEED, IMU660RC_SPC_PIN, IMU660RC_SDI_PIN, IMU660RC_SDO_PIN, SPI_CS_NULL); // <20><><EFBFBD><EFBFBD> IMU660RC <20><> SPI <20>˿<EFBFBD>
|
||||
gpio_init(IMU660RC_CS_PIN, GPO, GPIO_HIGH, GPO_PUSH_PULL); // <20><><EFBFBD><EFBFBD> IMU660RC <20><>CS<43>˿<EFBFBD>
|
||||
#endif
|
||||
|
||||
system_delay_ms(10);
|
||||
|
||||
do
|
||||
{
|
||||
if(imu660rc_self_check()) // IMU660RC <20>Լ<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> IMU660RC <20>Լ<EFBFBD><D4BC><EFBFBD><EFBFBD><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, "imu660rc self check error.");
|
||||
return_state = 1;
|
||||
break;
|
||||
}
|
||||
|
||||
// <20><>λ<EFBFBD><CEBB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
imu660rc_write_register(IMU660RC_FUNC_CFG_ACCESS, 0x04);
|
||||
system_delay_ms(30);
|
||||
|
||||
// <20><><EFBFBD>ÿ<EFBFBD><C3BF><EFBFBD><EFBFBD>¹<EFBFBD><C2B9><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ַ<EFBFBD><D6B7><EFBFBD><EFBFBD>
|
||||
imu660rc_write_register(IMU660RC_CTRL3, 0x44);
|
||||
|
||||
switch(IMU660RC_ACC_SAMPLE_DEFAULT)
|
||||
{
|
||||
default:
|
||||
{
|
||||
zf_log(0, "IMU660RC_ACC_SAMPLE_DEFAULT set error.");
|
||||
return_state = 1;
|
||||
}break;
|
||||
case IMU660RC_ACC_SAMPLE_SGN_2G:
|
||||
{
|
||||
imu660rc_write_register(IMU660RC_CTRL8, 0x00);
|
||||
imu660rc_transition_factor[0] = 16393.44;
|
||||
}break;
|
||||
case IMU660RC_ACC_SAMPLE_SGN_4G:
|
||||
{
|
||||
imu660rc_write_register(IMU660RC_CTRL8, 0x01);
|
||||
imu660rc_transition_factor[0] = 8196.72;
|
||||
}break;
|
||||
case IMU660RC_ACC_SAMPLE_SGN_8G:
|
||||
{
|
||||
imu660rc_write_register(IMU660RC_CTRL8, 0x02);
|
||||
imu660rc_transition_factor[0] = 4098.36;
|
||||
}break;
|
||||
case IMU660RC_ACC_SAMPLE_SGN_16G:
|
||||
{
|
||||
imu660rc_write_register(IMU660RC_CTRL8, 0x03);
|
||||
imu660rc_transition_factor[0] = 2049.18;
|
||||
}break;
|
||||
}
|
||||
if(1 == return_state)
|
||||
{
|
||||
break;
|
||||
}
|
||||
|
||||
switch(IMU660RC_GYRO_SAMPLE_DEFAULT)
|
||||
{
|
||||
default:
|
||||
{
|
||||
zf_log(0, "IMU660RC_GYRO_SAMPLE_DEFAULT set error.");
|
||||
return_state = 1;
|
||||
}break;
|
||||
case IMU660RC_GYRO_SAMPLE_SGN_125DPS:
|
||||
{
|
||||
imu660rc_write_register(IMU660RC_CTRL6, 0x00);
|
||||
imu660rc_transition_factor[1] = 228.5714;
|
||||
}break;
|
||||
case IMU660RC_GYRO_SAMPLE_SGN_250DPS:
|
||||
{
|
||||
imu660rc_write_register(IMU660RC_CTRL6, 0x01);
|
||||
imu660rc_transition_factor[1] = 114.2857;
|
||||
}break;
|
||||
case IMU660RC_GYRO_SAMPLE_SGN_500DPS:
|
||||
{
|
||||
imu660rc_write_register(IMU660RC_CTRL6, 0x02);
|
||||
imu660rc_transition_factor[1] = 57.1428;
|
||||
}break;
|
||||
case IMU660RC_GYRO_SAMPLE_SGN_1000DPS:
|
||||
{
|
||||
imu660rc_write_register(IMU660RC_CTRL6, 0x03);
|
||||
imu660rc_transition_factor[1] = 28.5714;
|
||||
}break;
|
||||
case IMU660RC_GYRO_SAMPLE_SGN_2000DPS:
|
||||
{
|
||||
imu660rc_write_register(IMU660RC_CTRL6, 0x04);
|
||||
imu660rc_transition_factor[1] = 14.2857;
|
||||
}break;
|
||||
case IMU660RC_GYRO_SAMPLE_SGN_4000DPS:
|
||||
{
|
||||
imu660rc_write_register(IMU660RC_CTRL6, 0x0C);
|
||||
imu660rc_transition_factor[1] = 7.14285;
|
||||
}break;
|
||||
}
|
||||
if(1 == return_state)
|
||||
{
|
||||
break;
|
||||
}
|
||||
|
||||
// <20><><EFBFBD>ô<EFBFBD><C3B4><EFBFBD><EFBFBD><EFBFBD>ģʽ<C4A3><CABD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ<EFBFBD>߾<EFBFBD><DFBE><EFBFBD>ģʽ<C4A3>Լ<EFBFBD><D4BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
imu660rc_write_register(IMU660RC_CTRL1, 0x15);
|
||||
imu660rc_write_register(IMU660RC_CTRL2, 0x18);
|
||||
|
||||
// <20><><EFBFBD><EFBFBD>LPF1<46>˲<EFBFBD><CBB2><EFBFBD>
|
||||
imu660rc_write_register(IMU660RC_CTRL7, 0x01);
|
||||
|
||||
// <20><><EFBFBD><EFBFBD>LPF2<46>˲<EFBFBD><CBB2><EFBFBD>
|
||||
imu660rc_write_register(IMU660RC_CTRL9, 0x08);
|
||||
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ԫ<EFBFBD><D4AA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ӧ<EFBFBD><D3A6><EFBFBD><EFBFBD>
|
||||
if(IMU660RC_QUARTERNION_DISABLE != quarternion_rate)
|
||||
{
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD>жϴ<D0B6><CFB4><EFBFBD><EFBFBD>ź<EFBFBD>
|
||||
imu660rc_write_register(IMU660RC_INT2_CTRL, 0x80);
|
||||
imu660rc_write_register(IMU660RC_CTRL4, 0x08);
|
||||
imu660rc_write_register(IMU660RC_EMB_FUNC_CFG, 0x30);
|
||||
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ü<EFBFBD><C3BC>ٶȡ<D9B6><C8A1><EFBFBD><EFBFBD>ٶ<EFBFBD><D9B6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
imu660rc_write_register(IMU660RC_CTRL1, 0x10 | (quarternion_rate + 3));
|
||||
imu660rc_write_register(IMU660RC_CTRL2, 0x10 | (quarternion_rate + 3));
|
||||
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ԫ<EFBFBD><D4AA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʲ<EFBFBD><CAB2><EFBFBD><EFBFBD><EFBFBD>
|
||||
imu660rc_set_mem_bank(IMU660RC_EMBED_MEM_BANK);
|
||||
imu660rc_write_register(IMU660RC_SFLP_ODR, 0x43 | (quarternion_rate << 3));
|
||||
imu660rc_write_register(IMU660RC_EMB_FUNC_EN_A, 0x02);
|
||||
imu660rc_write_register(IMU660RC_PAGE_RW, 0x00);
|
||||
imu660rc_set_mem_bank(IMU660RC_MAIN_MEM_BANK);
|
||||
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD>жϼ<D0B6><CFBC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
exti_init(IMU660RC_INT2_PIN, EXTI_TRIGGER_RISING);
|
||||
}
|
||||
}while(0);
|
||||
|
||||
return return_state;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -0,0 +1,211 @@
|
||||
/*********************************************************************************************************************
|
||||
* RT1064DVL6A Opensourec Library <20><><EFBFBD><EFBFBD>RT1064DVL6A <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> RT1064DVL6A <20><>Դ<EFBFBD><D4B4><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD>
|
||||
*
|
||||
* RT1064DVL6A <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_imu660rc
|
||||
* <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.10.2
|
||||
* <20><><EFBFBD><EFBFBD>ƽ̨ TC264
|
||||
* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> https://seekfree.taobao.com/
|
||||
*
|
||||
* <20>ļ<DEB8>¼
|
||||
* <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><>ע
|
||||
* 2025-12-12 SeekFree first version
|
||||
********************************************************************************************************************/
|
||||
/*********************************************************************************************************************
|
||||
* <20><><EFBFBD>߶<EFBFBD><DFB6>壺
|
||||
* ------------------------------------
|
||||
* ģ<><C4A3><EFBFBD>ܽ<EFBFBD> <20><>Ƭ<EFBFBD><C6AC><EFBFBD>ܽ<EFBFBD>
|
||||
* // Ӳ<><D3B2> SPI <20><><EFBFBD><EFBFBD>
|
||||
* SCL/SPC <20>鿴 zf_device_imu660rc.h <20><> IMU660RC_SPC_PIN <20>궨<EFBFBD><EAB6A8>
|
||||
* SDA/DSI <20>鿴 zf_device_imu660rc.h <20><> IMU660RC_SDI_PIN <20>궨<EFBFBD><EAB6A8>
|
||||
* SA0/SDO <20>鿴 zf_device_imu660rc.h <20><> IMU660RC_SDO_PIN <20>궨<EFBFBD><EAB6A8>
|
||||
* CS <20>鿴 zf_device_imu660rc.h <20><> IMU660RC_CS_PIN <20>궨<EFBFBD><EAB6A8>
|
||||
* INT2 <20>鿴 zf_device_imu660rc.h <20><> IMU660RC_INT2_PIN <20>궨<EFBFBD><EAB6A8>
|
||||
* VCC 3.3V<EFBFBD><EFBFBD>Դ
|
||||
* GND <20><>Դ<EFBFBD><D4B4>
|
||||
* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
*
|
||||
* // <20><><EFBFBD><EFBFBD> IIC <20><><EFBFBD><EFBFBD>
|
||||
* SCL/SPC <20>鿴 zf_device_imu660rc.h <20><> IMU660RC_SCL_PIN <20>궨<EFBFBD><EAB6A8>
|
||||
* SDA/DSI <20>鿴 zf_device_imu660rc.h <20><> IMU660RC_SDA_PIN <20>궨<EFBFBD><EAB6A8>
|
||||
* VCC 3.3V<EFBFBD><EFBFBD>Դ
|
||||
* GND <20><>Դ<EFBFBD><D4B4>
|
||||
* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
* ------------------------------------
|
||||
********************************************************************************************************************/
|
||||
|
||||
|
||||
#ifndef _zf_device_imu660rc_h_
|
||||
#define _zf_device_imu660rc_h_
|
||||
|
||||
#include "zf_common_typedef.h"
|
||||
|
||||
|
||||
// IMU660RC_USE_SOFT_IIC<49><43><EFBFBD><EFBFBD>Ϊ0<CEAA><30>ʾʹ<CABE><CAB9>Ӳ<EFBFBD><D3B2>SPI<50><49><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>Ϊ1<CEAA><31>ʾʹ<CABE><CAB9><EFBFBD><EFBFBD><EFBFBD><EFBFBD>IIC<49><43><EFBFBD><EFBFBD>
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>IMU660RC_USE_SOFT_IIC<49><43><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ҫ<EFBFBD>ȱ<EFBFBD><C8B1>벢<EFBFBD><EBB2A2><EFBFBD>س<EFBFBD><D8B3><EFBFBD>Ƭ<EFBFBD><C6AC><EFBFBD><EFBFBD>ģ<EFBFBD><C4A3><EFBFBD><EFBFBD>Ҫ<EFBFBD>ϵ<EFBFBD><CFB5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͨѶ
|
||||
#define IMU660RC_USE_SOFT_IIC ( 0 ) // Ĭ<><C4AC>ʹ<EFBFBD><CAB9>Ӳ<EFBFBD><D3B2> SPI <20><>ʽ<EFBFBD><CABD><EFBFBD><EFBFBD>
|
||||
|
||||
#if IMU660RC_USE_SOFT_IIC // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>ɫ<EFBFBD><C9AB><EFBFBD><EFBFBD><EFBFBD>IJ<EFBFBD><C4B2><EFBFBD><EFBFBD><EFBFBD>ȷ<EFBFBD><C8B7> <20><>ɫ<EFBFBD>ҵľ<D2B5><C4BE><EFBFBD>û<EFBFBD><C3BB><EFBFBD>õ<EFBFBD>
|
||||
//====================================================<3D><><EFBFBD><EFBFBD> IIC <20><><EFBFBD><EFBFBD>====================================================
|
||||
#define IMU660RC_SOFT_IIC_DELAY ( 0 ) // <20><><EFBFBD><EFBFBD> IIC <20><>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD> <20><>ֵԽС IIC ͨ<><CDA8><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Խ<EFBFBD><D4BD>
|
||||
#define IMU660RC_SCL_PIN ( P20_11 ) // <20><><EFBFBD><EFBFBD> IIC SCL <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> IMU660RC <20><> SCL <20><><EFBFBD><EFBFBD>
|
||||
#define IMU660RC_SDA_PIN ( P20_14 ) // <20><><EFBFBD><EFBFBD> IIC SDA <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> IMU660RC <20><> SDA <20><><EFBFBD><EFBFBD>
|
||||
//====================================================<3D><><EFBFBD><EFBFBD> IIC <20><><EFBFBD><EFBFBD>====================================================
|
||||
#else
|
||||
|
||||
//====================================================Ӳ<><D3B2> SPI <20><><EFBFBD><EFBFBD>====================================================
|
||||
#define IMU660RC_SPI_SPEED (10 * 1000 * 1000) // Ӳ<><D3B2> SPI <20><><EFBFBD><EFBFBD>
|
||||
#define IMU660RC_SPI (SPI_0) // Ӳ<><D3B2> SPI <20><>
|
||||
#define IMU660RC_SPC_PIN (SPI0_SCLK_P20_11 ) // Ӳ<><D3B2> SPI SCK <20><><EFBFBD><EFBFBD>
|
||||
#define IMU660RC_SDI_PIN (SPI0_MOSI_P20_14) // Ӳ<><D3B2> SPI MOSI <20><><EFBFBD><EFBFBD>
|
||||
#define IMU660RC_SDO_PIN (SPI0_MISO_P20_12) // Ӳ<><D3B2> SPI MISO <20><><EFBFBD><EFBFBD>
|
||||
//====================================================Ӳ<><D3B2> SPI <20><><EFBFBD><EFBFBD>====================================================
|
||||
#endif
|
||||
#define IMU660RC_CS_PIN ( P20_13 ) // CS Ƭѡ<C6AC><D1A1><EFBFBD><EFBFBD>
|
||||
#define IMU660RC_CS(x) ( (x) ? (gpio_high(IMU660RC_CS_PIN)) : (gpio_low(IMU660RC_CS_PIN)) )
|
||||
#define IMU660RC_INT2_PIN ( ERU_CH0_REQ0_P15_4 ) // <20>ж<EFBFBD><D0B6>ź<EFBFBD><C5BA><EFBFBD><EFBFBD>ţ<EFBFBD><C5A3>ڶ<EFBFBD>ȡ<EFBFBD><C8A1>Ԫ<EFBFBD><D4AA>ʱ<EFBFBD><CAB1>Ҫʹ<D2AA><CAB9>
|
||||
|
||||
|
||||
#define IMU660RC_QUARTERNION_GET_GYRO ( 1 ) // 1<><31><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ԫ<EFBFBD><D4AA><EFBFBD><EFBFBD>ģʽʱ<CABD><CAB1><EFBFBD><EFBFBD>ȡ<EFBFBD><C8A1>Ԫ<EFBFBD><D4AA>ʱ<EFBFBD>Զ<EFBFBD><D4B6><EFBFBD>ȡ<EFBFBD><C8A1><EFBFBD>ٶ<EFBFBD> 0<><30><EFBFBD><EFBFBD><EFBFBD>Զ<EFBFBD><D4B6><EFBFBD>ȡ
|
||||
#define IMU660RC_QUARTERNION_GET_ACC ( 1 ) // 1<><31><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ԫ<EFBFBD><D4AA><EFBFBD><EFBFBD>ģʽʱ<CABD><CAB1><EFBFBD><EFBFBD>ȡ<EFBFBD><C8A1>Ԫ<EFBFBD><D4AA>ʱ<EFBFBD>Զ<EFBFBD><D4B6><EFBFBD>ȡ<EFBFBD><C8A1><EFBFBD>ٶ<EFBFBD> 0<><30><EFBFBD><EFBFBD><EFBFBD>Զ<EFBFBD><D4B6><EFBFBD>ȡ
|
||||
#define IMU660RC_ACC_SAMPLE_DEFAULT ( IMU660RC_ACC_SAMPLE_SGN_8G ) // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ĭ<EFBFBD>ϵ<EFBFBD> <20><><EFBFBD>ٶȼ<D9B6> <20><>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
#define IMU660RC_GYRO_SAMPLE_DEFAULT ( IMU660RC_GYRO_SAMPLE_SGN_2000DPS ) // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ĭ<EFBFBD>ϵ<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
|
||||
typedef enum
|
||||
{
|
||||
IMU660RC_MAIN_MEM_BANK = 0x00,
|
||||
IMU660RC_HUB_MEM_BANK = 0x40,
|
||||
IMU660RC_EMBED_MEM_BANK = 0x80,
|
||||
}imu660rc_mem_bank_enum;
|
||||
|
||||
typedef enum
|
||||
{
|
||||
IMU660RC_ACC_SAMPLE_SGN_2G , // <20><><EFBFBD>ٶȼ<D9B6><C8BC><EFBFBD><EFBFBD><EFBFBD> <20><>2G (ACC = Accelerometer <20><><EFBFBD>ٶȼ<D9B6>) (SGN = signum <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Χ) (G = g <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ٶ<EFBFBD> g<><67>9.80 m/s^2)
|
||||
IMU660RC_ACC_SAMPLE_SGN_4G , // <20><><EFBFBD>ٶȼ<D9B6><C8BC><EFBFBD><EFBFBD><EFBFBD> <20><>4G
|
||||
IMU660RC_ACC_SAMPLE_SGN_8G , // <20><><EFBFBD>ٶȼ<D9B6><C8BC><EFBFBD><EFBFBD><EFBFBD> <20><>8G
|
||||
IMU660RC_ACC_SAMPLE_SGN_16G, // <20><><EFBFBD>ٶȼ<D9B6><C8BC><EFBFBD><EFBFBD><EFBFBD> <20><>16G
|
||||
}imu660rc_acc_sample_config;
|
||||
|
||||
typedef enum
|
||||
{
|
||||
IMU660RC_GYRO_SAMPLE_SGN_125DPS , // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>125DPS (GYRO = Gyroscope <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>) (SGN = signum <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Χ) (DPS = Degree Per Second <20><><EFBFBD>ٶȵ<D9B6>λ <20><>/S)
|
||||
IMU660RC_GYRO_SAMPLE_SGN_250DPS , // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>250DPS
|
||||
IMU660RC_GYRO_SAMPLE_SGN_500DPS , // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>500DPS
|
||||
IMU660RC_GYRO_SAMPLE_SGN_1000DPS, // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>1000DPS
|
||||
IMU660RC_GYRO_SAMPLE_SGN_2000DPS, // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>2000DPS
|
||||
IMU660RC_GYRO_SAMPLE_SGN_4000DPS, // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>4000DPS
|
||||
}imu660rc_gyro_sample_config;
|
||||
|
||||
typedef enum
|
||||
{
|
||||
IMU660RC_QUARTERNION_15HZ, // 15 Hz
|
||||
IMU660RC_QUARTERNION_30HZ, // 30 Hz
|
||||
IMU660RC_QUARTERNION_60HZ, // 60 Hz
|
||||
IMU660RC_QUARTERNION_120HZ, // 120Hz
|
||||
IMU660RC_QUARTERNION_240HZ, // 240Hz
|
||||
IMU660RC_QUARTERNION_480HZ, // 480Hz
|
||||
IMU660RC_QUARTERNION_DISABLE, // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ԫ<EFBFBD><D4AA><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
}imu660rc_quarternion_rate_config;
|
||||
|
||||
|
||||
//================================================<3D><><EFBFBD><EFBFBD> IMU660RC <20>ڲ<EFBFBD><DAB2><EFBFBD>ַ================================================
|
||||
#define IMU660RC_DEV_ADDR ( 0x6B ) // SA0<41>ӵأ<D3B5>0x6A SA0<41><30><EFBFBD><EFBFBD><EFBFBD><EFBFBD>0x6B ģ<><C4A3>Ĭ<EFBFBD><C4AC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
#define IMU660RC_SPI_W ( 0x00 )
|
||||
#define IMU660RC_SPI_R ( 0x80 )
|
||||
#define IMU660RC_TIMEOUT_COUNT ( 0x00FF ) // IMU660RC <20><>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD>
|
||||
|
||||
|
||||
//================================================<3D><><EFBFBD><EFBFBD> IMU660RC <20>Ĵ<EFBFBD><C4B4><EFBFBD><EFBFBD><EFBFBD>ַ================================================
|
||||
#define IMU660RC_FUNC_CFG_ACCESS ( 0x01 )
|
||||
#define IMU660RC_INT2_CTRL ( 0x0E )
|
||||
#define IMU660RC_CHIP_ID ( 0x0F )
|
||||
#define IMU660RC_CTRL1 ( 0x10 )
|
||||
#define IMU660RC_CTRL2 ( 0x11 )
|
||||
#define IMU660RC_CTRL3 ( 0x12 )
|
||||
#define IMU660RC_CTRL4 ( 0x13 )
|
||||
#define IMU660RC_CTRL5 ( 0x14 )
|
||||
#define IMU660RC_CTRL6 ( 0x15 )
|
||||
#define IMU660RC_CTRL7 ( 0x16 )
|
||||
#define IMU660RC_CTRL8 ( 0x17 )
|
||||
#define IMU660RC_CTRL9 ( 0x18 )
|
||||
#define IMU660RC_CTRL10 ( 0x19 )
|
||||
#define IMU660RC_CTRL_STATUS ( 0x1A )
|
||||
#define IMU660RC_STATUS_REG ( 0x1E )
|
||||
#define IMU660RC_OUT_TEMP_L ( 0x20 )
|
||||
#define IMU660RC_OUT_TEMP_H ( 0x21 )
|
||||
#define IMU660RC_OUTX_L_G ( 0x22 )
|
||||
#define IMU660RC_OUTX_H_G ( 0x23 )
|
||||
#define IMU660RC_OUTY_L_G ( 0x24 )
|
||||
#define IMU660RC_OUTY_H_G ( 0x25 )
|
||||
#define IMU660RC_OUTZ_L_G ( 0x26 )
|
||||
#define IMU660RC_OUTZ_H_G ( 0x27 )
|
||||
#define IMU660RC_OUTX_L_A ( 0x28 )
|
||||
#define IMU660RC_OUTX_H_A ( 0x29 )
|
||||
#define IMU660RC_OUTY_L_A ( 0x2A )
|
||||
#define IMU660RC_OUTY_H_A ( 0x2B )
|
||||
#define IMU660RC_OUTZ_L_A ( 0x2C )
|
||||
#define IMU660RC_OUTZ_H_A ( 0x2D )
|
||||
|
||||
#define IMU660RC_PAGE_SEL ( 0x02 )
|
||||
#define IMU660RC_EMB_FUNC_EN_A ( 0x04 )
|
||||
#define IMU660RC_PAGE_RW ( 0x17 )
|
||||
#define IMU660RC_SFLP_ODR ( 0x5E )
|
||||
#define IMU660RC_EMB_FUNC_CFG ( 0x63 )
|
||||
|
||||
|
||||
|
||||
extern float imu660rc_transition_factor[2];
|
||||
extern int16 imu660rc_gyro_x, imu660rc_gyro_y, imu660rc_gyro_z; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
extern int16 imu660rc_acc_x , imu660rc_acc_y , imu660rc_acc_z; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ٶȼ<D9B6><C8BC><EFBFBD><EFBFBD><EFBFBD>
|
||||
extern float imu660rc_roll , imu660rc_pitch , imu660rc_yaw; // ŷ<><C5B7><EFBFBD><EFBFBD>
|
||||
extern float imu660rc_quarternion[4]; // <20><>Ԫ<EFBFBD><D4AA>
|
||||
|
||||
|
||||
void imu660rc_get_acc (void);
|
||||
void imu660rc_get_gyro (void);
|
||||
void imu660rc_get_quarternion (void);
|
||||
|
||||
//-------------------------------------------------------------------------------------------------------------------
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> IMU660RC <20><><EFBFBD>ٶȼ<D9B6><C8BC><EFBFBD><EFBFBD><EFBFBD>ת<EFBFBD><D7AA>Ϊʵ<CEAA><CAB5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> acc_value <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD><C4BC>ٶȼ<D9B6><C8BC><EFBFBD><EFBFBD><EFBFBD>
|
||||
// <20><><EFBFBD>ز<EFBFBD><D8B2><EFBFBD> void
|
||||
// ʹ<><CAB9>ʾ<EFBFBD><CABE> float data = imu660rc_acc_transition(imu660rc_acc_x); // <20><>λΪ g(m/s^2)
|
||||
// <20><>ע<EFBFBD><D7A2>Ϣ
|
||||
//-------------------------------------------------------------------------------------------------------------------
|
||||
#define imu660rc_acc_transition(acc_value) ((float)(acc_value) / imu660rc_transition_factor[0])
|
||||
|
||||
//-------------------------------------------------------------------------------------------------------------------
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> IMU660RC <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ת<EFBFBD><D7AA>Ϊʵ<CEAA><CAB5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> gyro_value <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
// <20><><EFBFBD>ز<EFBFBD><D8B2><EFBFBD> void
|
||||
// ʹ<><CAB9>ʾ<EFBFBD><CABE> float data = imu660rc_gyro_transition(imu660rc_gyro_x); // <20><>λΪ <20><>/s
|
||||
// <20><>ע<EFBFBD><D7A2>Ϣ
|
||||
//-------------------------------------------------------------------------------------------------------------------
|
||||
#define imu660rc_gyro_transition(gyro_value) ((float)(gyro_value) / imu660rc_transition_factor[1])
|
||||
void imu660rc_callback (void);
|
||||
uint8 imu660rc_init (imu660rc_quarternion_rate_config quarternion_rate);
|
||||
|
||||
|
||||
|
||||
#endif
|
||||
@@ -97,7 +97,7 @@
|
||||
//================================================<3D><><EFBFBD><EFBFBD> IMU660RX ȫ<>ֱ<EFBFBD><D6B1><EFBFBD>================================================
|
||||
extern int16 imu660rx_gyro_x, imu660rx_gyro_y, imu660rx_gyro_z; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> gyro (<28><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>)
|
||||
extern int16 imu660rx_acc_x, imu660rx_acc_y, imu660rx_acc_z; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ٶȼ<D9B6><C8BC><EFBFBD><EFBFBD><EFBFBD> acc (accelerometer <20><><EFBFBD>ٶȼ<D9B6>)
|
||||
extern float imu660ra_transition_factor[2];
|
||||
extern float imu660rx_transition_factor[2];
|
||||
//================================================<3D><><EFBFBD><EFBFBD> IMU660RX ȫ<>ֱ<EFBFBD><D6B1><EFBFBD>================================================
|
||||
|
||||
|
||||
|
||||
@@ -167,7 +167,7 @@ void ips114_init (void);
|
||||
// ʹ<><CAB9>ʾ<EFBFBD><CABE> ips114_displayimage8660(scc8660_image[0], SCC8660_W, SCC8660_H);
|
||||
// <20><>ע<EFBFBD><D7A2>Ϣ <20><>չ<EFBFBD><D5B9>һ<EFBFBD><D2BB><EFBFBD><EFBFBD>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ĭ<EFBFBD><C4AC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ţ<EFBFBD><C5A3><EFBFBD><EFBFBD><EFBFBD>Ļ<EFBFBD><C4BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʼ<EFBFBD>㿪ʼ<E3BFAA><CABC>ʾ
|
||||
//-------------------------------------------------------------------------------------------------------------------
|
||||
#define ips114_displayimage8660(p, width, height) (ips114_show_rgb565_image(0, 0, (p), SCC8660_W, SCC8660_H, (width), (height), 1))
|
||||
#define ips114_displayimage8660(p, width, height) (ips114_show_rgb565_image(0, 0, (p), SCC8660_W, SCC8660_H, (width), (height), 0))
|
||||
//=================================================<3D><><EFBFBD><EFBFBD> IPS114 <20><>չ<EFBFBD><D5B9><EFBFBD><EFBFBD>================================================
|
||||
|
||||
#endif
|
||||
|
||||
@@ -220,7 +220,7 @@ void ips200_init (ips200_type_enum type_select);
|
||||
// ʹ<><CAB9>ʾ<EFBFBD><CABE> ips200_displayimage8660(scc8660_image[0], SCC8660_W, SCC8660_H);
|
||||
// <20><>ע<EFBFBD><D7A2>Ϣ <20><>չ<EFBFBD><D5B9>һ<EFBFBD><D2BB><EFBFBD><EFBFBD>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ĭ<EFBFBD><C4AC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ţ<EFBFBD><C5A3><EFBFBD><EFBFBD><EFBFBD>Ļ<EFBFBD><C4BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʼ<EFBFBD>㿪ʼ<E3BFAA><CABC>ʾ
|
||||
//-------------------------------------------------------------------------------------------------------------------
|
||||
#define ips200_displayimage8660(p, width, height) (ips200_show_rgb565_image(0, 0, (p), SCC8660_W, SCC8660_H, (width), (height), 1))
|
||||
#define ips200_displayimage8660(p, width, height) (ips200_show_rgb565_image(0, 0, (p), SCC8660_W, SCC8660_H, (width), (height), 0))
|
||||
//==================================================<3D><><EFBFBD><EFBFBD> IPS200 <20><>չ<EFBFBD><D5B9><EFBFBD><EFBFBD>================================================
|
||||
|
||||
|
||||
|
||||
@@ -86,7 +86,7 @@
|
||||
// <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_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 (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_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_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><C3A3><EFBFBD>֧<EFBFBD><D6A7><EFBFBD><EFBFBD>ͫ<EFBFBD><CDAB>֡<EFBFBD>ʰ汾<CAB0><E6B1BE>===========================
|
||||
|
||||
|
||||
@@ -24,7 +24,7 @@
|
||||
* <20>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD><EFBFBD> zf_device_wifi_spi
|
||||
* <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><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ADS v1.10.2
|
||||
* <20><><EFBFBD><EFBFBD>ƽ̨ TC264D
|
||||
* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> https://seekfree.taobao.com/
|
||||
*
|
||||
@@ -63,6 +63,21 @@
|
||||
#define SOCKET_CONNECT_TIME_OUT 50000 // <20><>λ<EFBFBD><CEBB><EFBFBD><EFBFBD>
|
||||
#define OTHER_TIME_OUT 1000 // <20><>λ<EFBFBD><CEBB><EFBFBD><EFBFBD>
|
||||
|
||||
#if ((WIFI_SPI_RECVIVE_SIZE < 32) || (WIFI_SPI_RECVIVE_SIZE > 4088))
|
||||
#error "WIFI_SPI_RECVIVE_SIZE must be >= 32 or <= 4088"
|
||||
#endif
|
||||
|
||||
#if (WIFI_SPI_RECVIVE_SIZE >= WIFI_SPI_RECVIVE_FIFO_SIZE)
|
||||
#error "WIFI_SPI_RECVIVE_FIFO_SIZE must be > WIFI_SPI_RECVIVE_SIZE"
|
||||
#endif
|
||||
|
||||
|
||||
#if (WIFI_SPI_TRANSFER_SIZE != 4088)
|
||||
#error "WIFI_SPI_TRANSFER_SIZE must be == 4088"
|
||||
#endif
|
||||
|
||||
|
||||
|
||||
char wifi_spi_version[12]; // <20><><EFBFBD><EFBFBD>ģ<EFBFBD><C4A3><EFBFBD>̼<EFBFBD><CCBC>汾<EFBFBD><E6B1BE>Ϣ
|
||||
char wifi_spi_mac_addr[20]; // <20><><EFBFBD><EFBFBD>ģ<EFBFBD><C4A3>MAC<41><43>ַ<EFBFBD><D6B7>Ϣ
|
||||
char wifi_spi_ip_addr_port[25]; // <20><><EFBFBD><EFBFBD>ģ<EFBFBD><C4A3>IP<49><50>ַ<EFBFBD><D6B7><EFBFBD>˿<EFBFBD><CBBF><EFBFBD>Ϣ
|
||||
@@ -271,8 +286,6 @@ static uint8 wifi_spi_get_version (void)
|
||||
{
|
||||
memcpy(wifi_spi_version, temp_packets.buffer, temp_packets.head.length);
|
||||
}
|
||||
return_state = (return_state == 0) ? (WIFI_SPI_REPLY_VERSION != temp_packets.head.command) : 1;
|
||||
|
||||
return return_state;
|
||||
}
|
||||
|
||||
@@ -293,8 +306,6 @@ static uint8 wifi_spi_get_mac_addr (void)
|
||||
{
|
||||
memcpy(wifi_spi_mac_addr, temp_packets.buffer, temp_packets.head.length);
|
||||
}
|
||||
return_state = (return_state == 0) ? (WIFI_SPI_REPLY_MAC_ADDR != temp_packets.head.command) : 1;
|
||||
|
||||
return return_state;
|
||||
}
|
||||
|
||||
@@ -316,7 +327,77 @@ static uint8 wifi_spi_get_ip_addr_port (void)
|
||||
{
|
||||
memcpy(wifi_spi_ip_addr_port, temp_packets.buffer, temp_packets.head.length);
|
||||
}
|
||||
return_state = (return_state == 0) ? (WIFI_SPI_REPLY_IP_ADDR != temp_packets.head.command) : 1;
|
||||
return return_state;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------------------------------------------------------
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> WIFI SPI <20><>ȡϵͳʱ<CDB3><CAB1>
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> time_format ʱ<><CAB1><EFBFBD><EFBFBD>ʽ
|
||||
// <20><><EFBFBD>ز<EFBFBD><D8B2><EFBFBD> *buffer <20><><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD>ַ<EFBFBD><D6B7><EFBFBD><EFBFBD><EFBFBD>ַ <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>С<EFBFBD><D0A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ҫ30<33><30><EFBFBD>ֽ<EFBFBD>
|
||||
// <20><><EFBFBD>ز<EFBFBD><D8B2><EFBFBD> buffer_size <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>С
|
||||
// <20><><EFBFBD>ز<EFBFBD><D8B2><EFBFBD> uint8 ״̬ 0-<2D>ɹ<EFBFBD> 1-<2D><><EFBFBD><EFBFBD>
|
||||
// ʹ<><CAB9>ʾ<EFBFBD><CABE>
|
||||
// <20><>ע<EFBFBD><D7A2>Ϣ <20><>Ҫ<EFBFBD><D2AA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȵ<EFBFBD>֮<EFBFBD><D6AE><EFBFBD><EFBFBD><EFBFBD>ܻ<EFBFBD>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD>ȷ<EFBFBD><C8B7>ʱ<EFBFBD>䣬<EFBFBD><E4A3AC><EFBFBD><EFBFBD><EFBFBD>ڵ<EFBFBD><DAB5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>֮ǰ<D6AE><C7B0>Ҫȷ<D2AA><C8B7>WIFIģ<49><C4A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ҫ<EFBFBD><D2AA><EFBFBD>յ<EFBFBD><D5B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ѿ<EFBFBD>ȫ<EFBFBD><C8AB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
// <20><>ע<EFBFBD><D7A2>Ϣ <20><>WIFI SPI <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>߰汾֧<E6B1BE><D6A7>
|
||||
// <20><>ע<EFBFBD><D7A2>Ϣ <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϢΪ<CFA2>ַ<EFBFBD><D6B7><EFBFBD><EFBFBD><EFBFBD>Ϣ<EFBFBD><CFA2><EFBFBD><EFBFBD>ֱ<EFBFBD><D6B1>printf<74><66><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֲ鿴
|
||||
//-------------------------------------------------------------------------------------------------------------------
|
||||
uint8 wifi_spi_get_time (wifi_spi_time_enum time_format, char *buffer, uint8 buffer_size)
|
||||
{
|
||||
uint8 return_state = 1;
|
||||
wifi_spi_packets_struct temp_packets;
|
||||
uint8 send_cmd, receive_cmd;
|
||||
|
||||
// <20><><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>30<33><30><EFBFBD>ֽ<EFBFBD>
|
||||
// <20><><EFBFBD><EFBFBD>ģ<EFBFBD><C4A3><EFBFBD>̼<EFBFBD><CCBC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>V2<56>汾
|
||||
if((30 <= buffer_size) && (!strncmp(wifi_spi_version, "V2", 2)))
|
||||
{
|
||||
send_cmd = WIFI_SPI_GET_TIME1 + time_format - WIFI_SPI_UTC_0;
|
||||
receive_cmd = WIFI_SPI_REPLY_TIME1 + time_format - WIFI_SPI_UTC_0;
|
||||
|
||||
return_state = wifi_spi_get_parameter(send_cmd, &temp_packets, OTHER_TIME_OUT);
|
||||
if((0 == return_state) && (receive_cmd == temp_packets.head.command))
|
||||
{
|
||||
return_state = (uint8)strncmp((const char *)temp_packets.buffer, "OK", 2);
|
||||
if(0 == return_state)
|
||||
{
|
||||
memcpy(buffer, &temp_packets.buffer[3], temp_packets.head.length - 3);
|
||||
buffer[temp_packets.head.length - 3] = 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
return return_state;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------------------------------------------------------
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> WIFI SPI ɨ<><C9A8><EFBFBD>ȵ<EFBFBD>
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> *buffer <20><><EFBFBD><EFBFBD>ɨ<EFBFBD>赽<EFBFBD><E8B5BD><EFBFBD>ȵ<EFBFBD><C8B5><EFBFBD>Ϣ <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ź<EFBFBD>ǿ<EFBFBD>ȣ<EFBFBD>ÿ<EFBFBD><C3BF><EFBFBD>ź<EFBFBD>ǿ<EFBFBD>Ⱥ<EFBFBD><C8BA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD>з<EFBFBD>
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> buffer_size <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ij<EFBFBD><C4B3><EFBFBD>
|
||||
// <20><><EFBFBD>ز<EFBFBD><D8B2><EFBFBD> uint8 ״̬ 0-<2D>ɹ<EFBFBD> 1-<2D><><EFBFBD><EFBFBD>
|
||||
// ʹ<><CAB9>ʾ<EFBFBD><CABE>
|
||||
// <20><>ע<EFBFBD><D7A2>Ϣ <20><>WIFI SPI <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>߰汾֧<E6B1BE><D6A7>
|
||||
// <20><>ע<EFBFBD><D7A2>Ϣ <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϢΪ<CFA2>ַ<EFBFBD><D6B7><EFBFBD><EFBFBD><EFBFBD>Ϣ<EFBFBD><CFA2><EFBFBD><EFBFBD>ֱ<EFBFBD><D6B1>printf<74><66><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֲ鿴
|
||||
// <20><>ע<EFBFBD><D7A2>Ϣ ÿһ<C3BF>а<EFBFBD><D0B0><EFBFBD>һ<EFBFBD><D2BB>wifi<66><69><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
//-------------------------------------------------------------------------------------------------------------------
|
||||
uint8 wifi_spi_wifi_scan (char *buffer, uint16 buffer_size)
|
||||
{
|
||||
uint8 return_state;
|
||||
|
||||
// ģ<><C4A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>V2<56>汾<EFBFBD>Ĺ̼<C4B9><CCBC><EFBFBD>֧<EFBFBD>ִ˹<D6B4><CBB9><EFBFBD>
|
||||
if(!strncmp(wifi_spi_version, "V2", 2))
|
||||
{
|
||||
return_state = wifi_spi_set_parameter(WIFI_SPI_SET_WIFI_SCAN, NULL, 0, WIFI_CONNECT_TIME_OUT);
|
||||
|
||||
if(0 == return_state)
|
||||
{
|
||||
#if (0 == WIFI_SPI_READ_TRANSFER)
|
||||
wifi_spi_send_buffer(NULL, 0);
|
||||
#endif
|
||||
while(0 == wifi_spi_read_buffer((uint8 *)buffer, buffer_size))
|
||||
{
|
||||
system_delay_ms(10);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return return_state;
|
||||
}
|
||||
@@ -505,7 +586,7 @@ uint32 wifi_spi_send_buffer (const uint8 *buffer, uint32 length)
|
||||
|
||||
while(length)
|
||||
{
|
||||
send_length = length > WIFI_SPI_TRANSFER_SIZE ? (uint16)WIFI_SPI_TRANSFER_SIZE : (uint16)length;
|
||||
send_length = (uint16) (length > WIFI_SPI_TRANSFER_SIZE ? WIFI_SPI_TRANSFER_SIZE : length);
|
||||
|
||||
if(wifi_spi_wait_idle(OTHER_TIME_OUT))
|
||||
{
|
||||
@@ -555,6 +636,18 @@ uint32 wifi_spi_send_buffer (const uint8 *buffer, uint32 length)
|
||||
return length;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------------------------------------------------------
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> WIFI SPI <20>ַ<EFBFBD><D6B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͺ<EFBFBD><CDBA><EFBFBD><EFBFBD><EFBFBD>ͬ<EFBFBD><CDAC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> *string <20><>Ҫ<EFBFBD><D2AA><EFBFBD>͵<EFBFBD><CDB5>ַ<EFBFBD><D6B7><EFBFBD>
|
||||
// <20><><EFBFBD>ز<EFBFBD><D8B2><EFBFBD> void
|
||||
// ʹ<><CAB9>ʾ<EFBFBD><CABE> wifi_spi_send_string("123");
|
||||
// <20><>ע<EFBFBD><D7A2>Ϣ
|
||||
//-------------------------------------------------------------------------------------------------------------------
|
||||
void wifi_spi_send_string(const char *string)
|
||||
{
|
||||
wifi_spi_send_buffer((uint8*)string, strlen(string));
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------------------------------------------------------
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> WIFI SPI <20><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> *buff <20><><EFBFBD>ջ<EFBFBD><D5BB><EFBFBD><EFBFBD><EFBFBD>
|
||||
@@ -566,32 +659,57 @@ uint32 wifi_spi_send_buffer (const uint8 *buffer, uint32 length)
|
||||
uint32 wifi_spi_read_buffer (uint8 *buffer, uint32 length)
|
||||
{
|
||||
zf_assert(NULL != buffer);
|
||||
uint32 data_len = length;
|
||||
uint32 fifo_read_length;
|
||||
uint32 write_length = 0;
|
||||
wifi_spi_packets_struct temp_packets;
|
||||
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD>ж<EFBFBD>FIFO<46><4F><EFBFBD>Ƿ<EFBFBD><C7B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݣ<EFBFBD><DDA3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȴ<EFBFBD>FIFO<46><4F>ȡ
|
||||
if(fifo_used(&wifi_spi_fifo))
|
||||
{
|
||||
fifo_read_length = fifo_used(&wifi_spi_fifo);
|
||||
fifo_read_length = length < fifo_read_length ? length : fifo_read_length;
|
||||
fifo_read_buffer(&wifi_spi_fifo, buffer, &fifo_read_length, FIFO_READ_AND_CLEAN);
|
||||
|
||||
buffer += fifo_read_length;
|
||||
length -= fifo_read_length;
|
||||
write_length += fifo_read_length;
|
||||
}
|
||||
|
||||
#if(1 == WIFI_SPI_READ_TRANSFER)
|
||||
|
||||
wifi_spi_packets_struct temp_packets;
|
||||
// <20><><EFBFBD><EFBFBD>WIFI SPI״̬<D7B4><CCAC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>жϻ<D0B6><CFBB><EFBFBD><EFBFBD>߳<EFBFBD><DFB3><EFBFBD><EFBFBD>Ѿ<EFBFBD><D1BE><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͨѶ<CDA8><D1B6><EFBFBD>β<F2B1BEB4><CEB2>ܷ<EFBFBD><DCB7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
if(WIFI_SPI_IDLE == wifi_spi_mutex)
|
||||
{
|
||||
// <20><>ͨѶ״̬<D7B4><CCAC><EFBFBD><EFBFBD>Ϊæ
|
||||
wifi_spi_mutex = WIFI_SPI_BUSY;
|
||||
wifi_spi_mutex = WIFI_SPI_BUSY; // <20><>ͨѶ״̬<D7B4><CCAC><EFBFBD><EFBFBD>Ϊæ
|
||||
|
||||
// <20><><EFBFBD><EFBFBD>ͨѶ<CDA8>鿴ģ<E9BFB4><C4A3><EFBFBD><EFBFBD><EFBFBD>Ƿ<EFBFBD><C7B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>δ<EFBFBD><CEB4>ȡ
|
||||
do
|
||||
{
|
||||
if(wifi_spi_wait_idle(OTHER_TIME_OUT))
|
||||
if( (WIFI_SPI_RECVIVE_SIZE > wifi_spi_fifo.size) || // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ռ䲻<D5BC><E4B2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ٶ<EFBFBD>ȡ
|
||||
(wifi_spi_wait_idle(OTHER_TIME_OUT)) // <20><>ʱ<EFBFBD>˳<EFBFBD>
|
||||
)
|
||||
{
|
||||
break;
|
||||
}
|
||||
|
||||
temp_packets.head.command = WIFI_SPI_DATA;
|
||||
temp_packets.head.length = 0;
|
||||
wifi_spi_transfer_command(&temp_packets, WIFI_SPI_RECVIVE_SIZE);
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD>յ<EFBFBD><D5B5>İ<EFBFBD><C4B0><EFBFBD><EFBFBD>Ƿ<EFBFBD><C7B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
if((WIFI_SPI_REPLY_DATA_START == temp_packets.head.command) || (WIFI_SPI_REPLY_DATA_END == temp_packets.head.command))
|
||||
if( ((WIFI_SPI_REPLY_DATA_START == temp_packets.head.command) || (WIFI_SPI_REPLY_DATA_END == temp_packets.head.command)) &&
|
||||
(temp_packets.head.length)
|
||||
)
|
||||
{
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>յ<EFBFBD><D5B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
if(temp_packets.head.length)
|
||||
if(length)
|
||||
{
|
||||
fifo_read_length = length >= temp_packets.head.length ? temp_packets.head.length : length;
|
||||
memcpy(buffer, temp_packets.buffer, fifo_read_length);
|
||||
buffer += fifo_read_length;
|
||||
length -= fifo_read_length;
|
||||
write_length += fifo_read_length;
|
||||
if(fifo_read_length < temp_packets.head.length) // <20>ⲿ<EFBFBD><E2B2BF><EFBFBD>岻<EFBFBD><E5B2BB><EFBFBD><EFBFBD><EFBFBD>ಿ<EFBFBD><E0B2BF>д<EFBFBD><D0B4>FIFO
|
||||
{
|
||||
fifo_write_buffer(&wifi_spi_fifo, temp_packets.buffer + fifo_read_length, temp_packets.head.length - fifo_read_length);
|
||||
}
|
||||
}
|
||||
else // ȫ<><C8AB>д<EFBFBD><D0B4>FIFO
|
||||
{
|
||||
fifo_write_buffer(&wifi_spi_fifo, temp_packets.buffer, temp_packets.head.length);
|
||||
}
|
||||
@@ -599,10 +717,9 @@ uint32 wifi_spi_read_buffer (uint8 *buffer, uint32 length)
|
||||
}while(WIFI_SPI_REPLY_DATA_START == temp_packets.head.command);
|
||||
wifi_spi_mutex = WIFI_SPI_IDLE;
|
||||
}
|
||||
#endif
|
||||
#endif
|
||||
|
||||
fifo_read_buffer(&wifi_spi_fifo, buffer, &data_len, FIFO_READ_AND_CLEAN);
|
||||
return data_len;
|
||||
return write_length;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------------------------------------------------------
|
||||
@@ -644,7 +761,11 @@ uint8 wifi_spi_init (char *wifi_ssid, char *pass_word)
|
||||
// MAC<41><43>ַ<EFBFBD><D6B7>Ϣ<EFBFBD><CFA2><EFBFBD>ַ<EFBFBD><D6B7><EFBFBD><EFBFBD><EFBFBD>ʽ<EFBFBD><CABD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>wifi_spi_mac_addr<64><72><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
wifi_spi_get_mac_addr();
|
||||
|
||||
|
||||
if(NULL == wifi_ssid)
|
||||
{
|
||||
// <20><>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ҫ<EFBFBD><D2AA><EFBFBD><EFBFBD>WIFI
|
||||
break;
|
||||
}
|
||||
return_state = wifi_spi_wifi_connect(wifi_ssid, pass_word);
|
||||
if(return_state)
|
||||
{
|
||||
|
||||
@@ -73,8 +73,8 @@
|
||||
#if (WIFI_SPI_AUTO_CONNECT > 2)
|
||||
#error "WIFI_SPI_AUTO_CONNECT <20><>ֵֻ<D6B5><D6BB>Ϊ [0,1,2]"
|
||||
#else
|
||||
#define WIFI_SPI_TARGET_IP "192.168.137.1" // <20><><EFBFBD><EFBFBD>Ŀ<EFBFBD><C4BF><EFBFBD><EFBFBD> IP
|
||||
#define WIFI_SPI_TARGET_PORT "8086" // <20><><EFBFBD><EFBFBD>Ŀ<EFBFBD><C4BF><EFBFBD>Ķ˿<C4B6>
|
||||
#define WIFI_SPI_TARGET_IP "192.168.2.37" // <20><><EFBFBD><EFBFBD>Ŀ<EFBFBD><C4BF><EFBFBD><EFBFBD> IP
|
||||
#define WIFI_SPI_TARGET_PORT "8080" // <20><><EFBFBD><EFBFBD>Ŀ<EFBFBD><C4BF><EFBFBD>Ķ˿<C4B6>
|
||||
#define WIFI_SPI_LOCAL_PORT "6666" // <20><><EFBFBD><EFBFBD><EFBFBD>Ķ˿<C4B6> 0<><30><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>÷<EFBFBD>Χ2048-65535 Ĭ<><C4AC> 6666
|
||||
#endif
|
||||
|
||||
@@ -95,10 +95,15 @@ typedef enum
|
||||
|
||||
WIFI_SPI_SET_WIFI_INFORMATION = 0x10, // <20><><EFBFBD><EFBFBD>WIFI<46><49>Ϣ<EFBFBD><CFA2><EFBFBD><EFBFBD>
|
||||
WIFI_SPI_SET_SOCKET_INFORMATION = 0x11, // <20><><EFBFBD><EFBFBD>SOCKET<45><54>Ϣ<EFBFBD><CFA2><EFBFBD><EFBFBD>
|
||||
WIFI_SPI_SET_WIFI_SCAN = 0x12, // <20><>ʼɨ<CABC><C9A8>WIFI
|
||||
WIFI_SPI_SET_READ_LENGTH = 0x13, // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD>
|
||||
|
||||
WIFI_SPI_GET_VERSION = 0x20, // <20><>ȡģ<C8A1><C4A3><EFBFBD>汾
|
||||
WIFI_SPI_GET_MAC_ADDR = 0x21, // <20><>ȡģ<C8A1><C4A3>MAC<41><43>ַ
|
||||
WIFI_SPI_GET_IP_ADDR = 0x22, // <20><>ȡģ<C8A1><C4A3>IP<49><50>ַ
|
||||
WIFI_SPI_GET_TIME1 = 0x23, // <20><>ȡʱ<C8A1><CAB1> <20><>ʽ1
|
||||
WIFI_SPI_GET_TIME2 = 0x24, // <20><>ȡʱ<C8A1><CAB1> <20><>ʽ2
|
||||
WIFI_SPI_GET_TIME3 = 0x25, // <20><>ȡʱ<C8A1><CAB1> <20><>ʽ3
|
||||
|
||||
// <20>ӻ<EFBFBD><D3BB>ش<EFBFBD><D8B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
WIFI_SPI_REPLY_OK = 0x80, // <20>ӻ<EFBFBD>Ӧ<EFBFBD><D3A6><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȷ<EFBFBD><C8B7><EFBFBD><EFBFBD>
|
||||
@@ -110,6 +115,9 @@ typedef enum
|
||||
WIFI_SPI_REPLY_VERSION = 0xA0, // <20>ӻ<EFBFBD><D3BB>ظ<EFBFBD><D8B8>̼<EFBFBD><CCBC>汾
|
||||
WIFI_SPI_REPLY_MAC_ADDR = 0xA1, // <20>ӻ<EFBFBD><D3BB>ظ<EFBFBD><D8B8><EFBFBD><EFBFBD><EFBFBD>MAC<41><43>ַ<EFBFBD><D6B7><EFBFBD><EFBFBD>Ϣ
|
||||
WIFI_SPI_REPLY_IP_ADDR = 0xA2, // <20>ӻ<EFBFBD><D3BB>ظ<EFBFBD><D8B8><EFBFBD><EFBFBD><EFBFBD>IP<49><50>ַ<EFBFBD><D6B7><EFBFBD>˿ں<CBBF>
|
||||
WIFI_SPI_REPLY_TIME1 = 0xA3, // <20>ӻ<EFBFBD><D3BB>ظ<EFBFBD>ʱ<EFBFBD><CAB1>
|
||||
WIFI_SPI_REPLY_TIME2 = 0xA4, // <20>ӻ<EFBFBD><D3BB>ظ<EFBFBD>ʱ<EFBFBD><CAB1>
|
||||
WIFI_SPI_REPLY_TIME3 = 0xA5, // <20>ӻ<EFBFBD><D3BB>ظ<EFBFBD>ʱ<EFBFBD><CAB1>
|
||||
WIFI_SPI_INVALID2 = 0xFF // <20><>Ч<EFBFBD><D0A7><EFBFBD>ݰ<EFBFBD>
|
||||
}wifi_spi_packets_command_enum;
|
||||
|
||||
@@ -134,19 +142,27 @@ typedef struct
|
||||
uint8 buffer[WIFI_SPI_RECVIVE_SIZE]; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
}wifi_spi_packets_struct;
|
||||
|
||||
|
||||
typedef enum
|
||||
{
|
||||
WIFI_SPI_UTC_0 = 1, // <20><><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1>
|
||||
WIFI_SPI_GMT, // <20><><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1> ת<><D7AA>ΪGMT<4D><54>ʽ<EFBFBD><CABD><EFBFBD><EFBFBD><EFBFBD><D7BA><EFBFBD><EFBFBD>GMT һ<><D2BB><EFBFBD><EFBFBD><EFBFBD>ڶԽ<DAB6><D4BD>ƶ˴<C6B6>ģ<EFBFBD><C4A3>ʹ<EFBFBD><CAB9>
|
||||
WIFI_SPI_UTC_8, // <20><><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1>
|
||||
}wifi_spi_time_enum;
|
||||
|
||||
extern char wifi_spi_version[12]; // <20>̼<EFBFBD><CCBC>汾 <20>ַ<EFBFBD><D6B7><EFBFBD>
|
||||
extern char wifi_spi_mac_addr[20]; // ģ<><C4A3>MAC<41><43>ַ <20>ַ<EFBFBD><D6B7><EFBFBD>
|
||||
extern char wifi_spi_ip_addr_port[25]; // IP<49><50>ַ<EFBFBD><D6B7><EFBFBD>˿ں<CBBF> <20>ַ<EFBFBD><D6B7><EFBFBD>
|
||||
|
||||
uint8 wifi_spi_wifi_connect (char *wifi_ssid, char *pass_word);
|
||||
uint8 wifi_spi_socket_connect (char *transport_type, char *ip_addr, char *port, char *local_port);
|
||||
uint8 wifi_spi_socket_disconnect (void);
|
||||
uint8 wifi_spi_udp_send_now (void);
|
||||
uint32 wifi_spi_send_buffer (const uint8 *buff, uint32 length);
|
||||
uint32 wifi_spi_read_buffer (uint8 *buffer, uint32 length);
|
||||
uint8 wifi_spi_get_time (wifi_spi_time_enum time_format, char *buffer, uint8 buffer_size);
|
||||
uint8 wifi_spi_wifi_scan (char *buffer, uint16 buffer_size);
|
||||
uint8 wifi_spi_wifi_connect (char *wifi_ssid, char *pass_word);
|
||||
uint8 wifi_spi_socket_connect (char *transport_type, char *ip_addr, char *port, char *local_port);
|
||||
uint8 wifi_spi_socket_disconnect (void);
|
||||
uint8 wifi_spi_udp_send_now (void);
|
||||
uint32 wifi_spi_send_buffer (const uint8 *buff, uint32 length);
|
||||
void wifi_spi_send_string (const char *string);
|
||||
uint32 wifi_spi_read_buffer (uint8 *buffer, uint32 length);
|
||||
|
||||
uint8 wifi_spi_init (char *wifi_ssid, char *pass_word);
|
||||
uint8 wifi_spi_init (char *wifi_ssid, char *pass_word);
|
||||
|
||||
#endif
|
||||
|
||||
|
||||
@@ -73,7 +73,7 @@
|
||||
#if (WIFI_UART_AUTO_CONNECT > 3)
|
||||
#error "WIFI_UART_AUTO_CONNECT <20><>ֵֻ<D6B5><D6BB>Ϊ [0,1,2,3]"
|
||||
#else
|
||||
#define WIFI_UART_TARGET_IP "192.168.137.1" // <20><><EFBFBD><EFBFBD>Ŀ<EFBFBD><C4BF><EFBFBD><EFBFBD> IP
|
||||
#define WIFI_UART_TARGET_IP "192.168.2.37" // <20><><EFBFBD><EFBFBD>Ŀ<EFBFBD><C4BF><EFBFBD><EFBFBD> IP
|
||||
#define WIFI_UART_TARGET_PORT "8080" // <20><><EFBFBD><EFBFBD>Ŀ<EFBFBD><C4BF><EFBFBD>Ķ˿<C4B6>
|
||||
#define WIFI_UART_LOCAL_PORT "8080" // <20><><EFBFBD><EFBFBD><EFBFBD>˿<EFBFBD>
|
||||
#endif
|
||||
|
||||
@@ -171,7 +171,7 @@ void encoder_clear_count (encoder_index_enum encoder_n)
|
||||
//-------------------------------------------------------------------------------------------------------------------
|
||||
void encoder_quad_init (encoder_index_enum encoder_n, encoder_channel1_enum ch1_pin, encoder_channel2_enum ch2_pin)
|
||||
{
|
||||
// zf_assert(encoder_n <= TIM4_ENCODER); // <20><>ȫ<EFBFBD><C8AB><EFBFBD><EFBFBD><EFBFBD>ɼ<EFBFBD><C9BC><EFBFBD> TIM2 TIM3 TIM4֧<34><D6A7> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ﱨ<EFBFBD><EFB1A8> <20><><EFBFBD>Գ<EFBFBD><D4B3><EFBFBD>ʹ<EFBFBD><CAB9><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ķ<EFBFBD><C4B7><EFBFBD><EFBFBD><EFBFBD>ʼ<EFBFBD><CABC>encoder_dir_init
|
||||
zf_assert(encoder_n <= TIM4_ENCODER); // <20><>ȫ<EFBFBD><C8AB><EFBFBD><EFBFBD><EFBFBD>ɼ<EFBFBD><C9BC><EFBFBD> TIM2 TIM3 TIM4֧<34><D6A7> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ﱨ<EFBFBD><EFB1A8> <20><><EFBFBD>Գ<EFBFBD><D4B3><EFBFBD>ʹ<EFBFBD><CAB9><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ķ<EFBFBD><C4B7><EFBFBD><EFBFBD><EFBFBD>ʼ<EFBFBD><CABC>encoder_dir_init
|
||||
|
||||
IfxGpt12_enableModule(&MODULE_GPT120);
|
||||
IfxGpt12_setGpt1BlockPrescaler(&MODULE_GPT120, IfxGpt12_Gpt1BlockPrescaler_4);
|
||||
|
||||
@@ -40,14 +40,14 @@
|
||||
// <20><EFBFBD>˵ʵ<CBB5><CAB5><EFBFBD>Ͻ<EFBFBD><CFBD><EFBFBD><EFBFBD>жϺ<D0B6>TCϵ<43>е<EFBFBD>Ӳ<EFBFBD><D3B2><EFBFBD>Զ<EFBFBD><D4B6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> interrupt_global_disable(); <20><><EFBFBD>ܾ<EFBFBD><DCBE><EFBFBD>Ӧ<EFBFBD>κε<CEBA><CEB5>жϣ<D0B6><CFA3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ҫ<EFBFBD><D2AA><EFBFBD><EFBFBD><EFBFBD>Լ<EFBFBD><D4BC>ֶ<EFBFBD><D6B6><EFBFBD><EFBFBD><EFBFBD> interrupt_global_enable(0); <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>жϵ<D0B6><CFB5><EFBFBD>Ӧ<EFBFBD><D3A6>
|
||||
|
||||
// **************************** PIT<49>жϺ<D0B6><CFBA><EFBFBD> ****************************
|
||||
IFX_INTERRUPT(cc60_pit_ch0_isr, 0, CCU6_0_CH0_ISR_PRIORITY)
|
||||
{
|
||||
interrupt_global_enable(0); // <20><><EFBFBD><EFBFBD><EFBFBD>ж<EFBFBD>Ƕ<EFBFBD><C7B6>
|
||||
pit_clear_flag(CCU60_CH0);
|
||||
|
||||
|
||||
|
||||
}
|
||||
//IFX_INTERRUPT(cc60_pit_ch0_isr, 0, CCU6_0_CH0_ISR_PRIORITY)
|
||||
//{
|
||||
// interrupt_global_enable(0); // <20><><EFBFBD><EFBFBD><EFBFBD>ж<EFBFBD>Ƕ<EFBFBD><C7B6>
|
||||
// pit_clear_flag(CCU60_CH0);
|
||||
//
|
||||
//
|
||||
//
|
||||
//}
|
||||
|
||||
|
||||
IFX_INTERRUPT(cc60_pit_ch1_isr, 0, CCU6_0_CH1_ISR_PRIORITY)
|
||||
@@ -89,7 +89,8 @@ IFX_INTERRUPT(exti_ch0_ch4_isr, 0, EXTI_CH0_CH4_INT_PRIO)
|
||||
if(exti_flag_get(ERU_CH0_REQ0_P15_4)) // ͨ<><CDA8>0<EFBFBD>ж<EFBFBD>
|
||||
{
|
||||
exti_flag_clear(ERU_CH0_REQ0_P15_4);
|
||||
|
||||
|
||||
imu660rc_callback(); // 660RC ģ<><C4A3> INT <20><><EFBFBD><EFBFBD><EFBFBD>ж<EFBFBD>
|
||||
}
|
||||
|
||||
if(exti_flag_get(ERU_CH4_REQ13_P15_5)) // ͨ<><CDA8>4<EFBFBD>ж<EFBFBD>
|
||||
@@ -118,7 +119,6 @@ IFX_INTERRUPT(exti_ch1_ch5_isr, 0, EXTI_CH1_CH5_INT_PRIO)
|
||||
{
|
||||
exti_flag_clear(ERU_CH5_REQ1_P15_8);
|
||||
|
||||
|
||||
|
||||
}
|
||||
}
|
||||
@@ -136,7 +136,6 @@ IFX_INTERRUPT(exti_ch1_ch5_isr, 0, EXTI_CH1_CH5_INT_PRIO)
|
||||
// exti_flag_clear(ERU_CH6_REQ9_P20_0);
|
||||
// }
|
||||
// }
|
||||
|
||||
IFX_INTERRUPT(exti_ch3_ch7_isr, 0, EXTI_CH3_CH7_INT_PRIO)
|
||||
{
|
||||
interrupt_global_enable(0); // <20><><EFBFBD><EFBFBD><EFBFBD>ж<EFBFBD>Ƕ<EFBFBD><C7B6>
|
||||
@@ -229,7 +228,7 @@ IFX_INTERRUPT(uart3_tx_isr, 0, UART3_TX_INT_PRIO)
|
||||
IFX_INTERRUPT(uart3_rx_isr, 0, UART3_RX_INT_PRIO)
|
||||
{
|
||||
interrupt_global_enable(0); // <20><><EFBFBD><EFBFBD><EFBFBD>ж<EFBFBD>Ƕ<EFBFBD><C7B6>
|
||||
gnss_uart_callback(); // GPS<EFBFBD><EFBFBD><EFBFBD>ڻص<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
gnss_uart_callback(); // GNSS<EFBFBD><EFBFBD><EFBFBD>ڻص<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -1,3 +1,13 @@
|
||||
V3.4.4
|
||||
<20><><EFBFBD><EFBFBD>SCC8660<36><30><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʽ
|
||||
<20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ָ<EFBFBD><D6B8><EFBFBD>V2<56><32><EFBFBD><EFBFBD>
|
||||
<20><EFBFBD>ips200<30><30>ʾscc8660<36><30><EFBFBD><EFBFBD>ͷ<EFBFBD><CDB7>ʽ
|
||||
<20><EFBFBD>ips114<31><34>ʾscc8660<36><30><EFBFBD><EFBFBD>ͷ<EFBFBD><CDB7>ʽ
|
||||
V3.4.3
|
||||
<09><><EFBFBD><EFBFBD>660RC<52><43><EFBFBD><EFBFBD>
|
||||
V3.4.2
|
||||
<09><EFBFBD>printf<74>ض<EFBFBD><D8B6><EFBFBD><EFBFBD>еĺ궨<C4BA><EAB6A8>
|
||||
<09><><EFBFBD><EFBFBD>WIFI_SPI<50><49><EFBFBD><EFBFBD>
|
||||
V3.4.1
|
||||
<09>Ĵ<DEB8><C4B4>ڷ<EFBFBD><DAB7><EFBFBD><EFBFBD><EFBFBD><EFBFBD>麯<EFBFBD><E9BAAF><EFBFBD>еķ<D0B5><C4B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
<09><EFBFBD>ips200proע<6F><D7A2>
|
||||
|
||||
@@ -91,6 +91,7 @@
|
||||
#include "zf_device_imu660ra.h"
|
||||
#include "zf_device_imu660rb.h"
|
||||
#include "zf_device_imu660rx.h"
|
||||
#include "zf_device_imu660rc.h"
|
||||
#include "zf_device_imu963ra.h"
|
||||
#include "zf_device_ips114.h"
|
||||
#include "zf_device_ips200.h"
|
||||
|
||||
@@ -45,7 +45,7 @@
|
||||
//-------------------------------------------------------------------------------------------------------------------
|
||||
int fputc(int ch, FILE *stream)
|
||||
{
|
||||
uart_write_byte(DEBUG_UART_INDEX, (char)ch);
|
||||
uart_write_byte(PRINTF_USE_UART, (char)ch);
|
||||
|
||||
return (ch);
|
||||
}
|
||||
@@ -71,7 +71,7 @@ int _write(int fd, char *buf, int len)
|
||||
int fgetc(FILE *f)
|
||||
{
|
||||
#if PRINTF_OUTPUT_TYPE == 0
|
||||
return uart_read_byte(DEBUG_UART_INDEX);
|
||||
return uart_read_byte(PRINTF_USE_UART);
|
||||
#else
|
||||
uint8 buf;
|
||||
wifi_spi_read_buffer(&buf, 1);
|
||||
|
||||
@@ -1,20 +1,20 @@
|
||||
/*********************************************************************************************************************
|
||||
* 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>
|
||||
* RT1064DVL6A Opensourec Library <20><><EFBFBD><EFBFBD>RT1064DVL6A <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><C4BC><EFBFBD> RT1064DVL6A <20><>Դ<EFBFBD><D4B4><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD>
|
||||
*
|
||||
* RT1064DVL6A <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>
|
||||
@@ -24,423 +24,519 @@
|
||||
* <20>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD><EFBFBD> seekfree_assistant
|
||||
* <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.10.2
|
||||
* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ADS v1.9.4
|
||||
* <20><><EFBFBD><EFBFBD>ƽ̨ TC264D
|
||||
* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> https://seekfree.taobao.com/
|
||||
*
|
||||
*
|
||||
* <20>ļ<DEB8>¼
|
||||
* <20><><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>ע
|
||||
* 2024-01-01 pudding first version
|
||||
* <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><>ע
|
||||
* 2024-1-11 SeekFree first version
|
||||
********************************************************************************************************************/
|
||||
|
||||
#include "zf_common_debug.h"
|
||||
|
||||
#include "seekfree_assistant.h"
|
||||
|
||||
// ͨ<><CDA8><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ö<EFBFBD><C3B6>
|
||||
typedef enum
|
||||
{
|
||||
SEEKFREE_ASSISTANT_SEND_CCD_CMD = 0x01 ,
|
||||
SEEKFREE_ASSISTANT_SEND_CAMERA_CMD ,
|
||||
SEEKFREE_ASSISTANT_SEND_CAMERA_BOUNDARY_CMD ,
|
||||
SEEKFREE_ASSISTANT_SEND_CAMERA_RECTANGULAR_CMD ,
|
||||
|
||||
extern uint32 seekfree_assistant_transfer (const uint8 *buff, uint32 length);
|
||||
extern uint32 seekfree_assistant_receive (uint8 *buff, uint32 length);
|
||||
SEEKFREE_ASSISTANT_SEND_OSCILLOSCOPE_CMD = 0x10 ,
|
||||
|
||||
#if (1 == SEEKFREE_ASSISTANT_SET_PARAMETR_ENABLE)
|
||||
SEEKFREE_ASSISTANT_RECEIVE_DEBUG_PARAM_CMD = 0x20 ,
|
||||
}seekfree_assistant_cmd_type_enum;
|
||||
|
||||
#define SEEKFREE_ASSISTANT_SEND_HEAD ( 0xAA ) // <20><>Ƭ<EFBFBD><C6AC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>λ<EFBFBD><CEBB><EFBFBD><EFBFBD><EFBFBD>͵<EFBFBD>֡ͷ
|
||||
#define SEEKFREE_ASSISTANT_RECEIVE_HEAD ( 0x55 ) // <20><>λ<EFBFBD><CEBB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƭ<EFBFBD><C6AC><EFBFBD><EFBFBD><EFBFBD>͵<EFBFBD>֡ͷ
|
||||
|
||||
// <20><><EFBFBD>ݷ<EFBFBD><DDB7>ͺ<EFBFBD><CDBA><EFBFBD>ָ<EFBFBD><D6B8><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
extern uint32 seekfree_assistant_transfer (const uint8 *buff, uint32 length);
|
||||
seekfree_assistant_transfer_callback_function seekfree_assistant_transfer_callback = seekfree_assistant_transfer;
|
||||
|
||||
// <20><><EFBFBD>ݽ<EFBFBD><DDBD>պ<EFBFBD><D5BA><EFBFBD>ָ<EFBFBD><D6B8><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
extern uint32 seekfree_assistant_receive (uint8 *buff, uint32 length);
|
||||
seekfree_assistant_receive_callback_function seekfree_assistant_receive_callback = seekfree_assistant_receive;
|
||||
|
||||
#if (SEEKFREE_ASSISTANT_DEBUG_PARAM_ENABLE)
|
||||
#include "zf_common_fifo.h"
|
||||
static uint8 seekfree_assistant_buffer[SEEKFREE_ASSISTANT_BUFFER_SIZE]; // FIFO<46><4F><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
static fifo_struct seekfree_assistant_fifo = // FIFO<46>ṹ<EFBFBD><E1B9B9>
|
||||
static uint8 seekfree_assistant_debug_param_buffer[SEEKFREE_ASSISTANT_DEBUG_PARAM_BUFFER_SIZE];
|
||||
static fifo_struct seekfree_assistant_debug_param_fifo =
|
||||
{
|
||||
.buffer = seekfree_assistant_buffer,
|
||||
.buffer = seekfree_assistant_debug_param_buffer,
|
||||
.execution = FIFO_IDLE,
|
||||
.type = FIFO_DATA_8BIT,
|
||||
.head = 0,
|
||||
.end = 0,
|
||||
.size = SEEKFREE_ASSISTANT_BUFFER_SIZE,
|
||||
.max = SEEKFREE_ASSISTANT_BUFFER_SIZE,
|
||||
};
|
||||
.size = SEEKFREE_ASSISTANT_DEBUG_PARAM_BUFFER_SIZE,
|
||||
.max = SEEKFREE_ASSISTANT_DEBUG_PARAM_BUFFER_SIZE,
|
||||
};
|
||||
#endif
|
||||
|
||||
static seekfree_assistant_camera_struct seekfree_assistant_camera_data; // ͼ<><CDBC><EFBFBD><EFBFBD>λ<EFBFBD><CEBB>Э<EFBFBD><D0AD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
static seekfree_assistant_camera_dot_struct seekfree_assistant_camera_dot_data; // ͼ<><CDBC><EFBFBD><EFBFBD>λ<EFBFBD><CEBB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Э<EFBFBD><D0AD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
static seekfree_assistant_camera_buffer_struct seekfree_assistant_camera_buffer; // ͼ<><CDBC><EFBFBD>Լ<EFBFBD><D4BC>߽绺<DFBD><E7BBBA><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ
|
||||
|
||||
seekfree_assistant_transfer_callback_function seekfree_assistant_transfer_callback = seekfree_assistant_transfer; // <20><><EFBFBD>ݷ<EFBFBD><DDB7>ͺ<EFBFBD><CDBA><EFBFBD>ָ<EFBFBD><D6B8>
|
||||
seekfree_assistant_receive_callback_function seekfree_assistant_receive_callback = seekfree_assistant_receive; // <20><><EFBFBD>ݽ<EFBFBD><DDBD>պ<EFBFBD><D5BA><EFBFBD>ָ<EFBFBD><D6B8>
|
||||
|
||||
seekfree_assistant_oscilloscope_struct seekfree_assistant_oscilloscope_data; // <20><><EFBFBD><EFBFBD>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
float seekfree_assistant_parameter[SEEKFREE_ASSISTANT_SET_PARAMETR_COUNT] = {0}; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>յ<EFBFBD><D5B5>IJ<EFBFBD><C4B2><EFBFBD>
|
||||
vuint8 seekfree_assistant_parameter_update_flag[SEEKFREE_ASSISTANT_SET_PARAMETR_COUNT] = {0}; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>±<EFBFBD>־λ
|
||||
|
||||
//-------------------------------------------------------------------------------------------------------------------
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͺ<EFBFBD><CDBA><EFBFBD>
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> *buffer <20><>ҪУ<D2AA><D0A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݵ<EFBFBD>ַ
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> length У<>鳤<EFBFBD><E9B3A4>
|
||||
// <20><><EFBFBD>ز<EFBFBD><D8B2><EFBFBD> uint8 <20><>ֵ
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> *buffer <EFBFBD><EFBFBD>ҪУ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݵ<EFBFBD>ַ
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> length У<EFBFBD>鳤<EFBFBD><EFBFBD>
|
||||
// <20><><EFBFBD>ز<EFBFBD><D8B2><EFBFBD> uint8 <EFBFBD><EFBFBD>ֵ
|
||||
// ʹ<><CAB9>ʾ<EFBFBD><CABE>
|
||||
//-------------------------------------------------------------------------------------------------------------------
|
||||
static uint8 seekfree_assistant_sum (uint8 *buffer, uint32 length)
|
||||
static uint8 seekfree_assistant_sum (void *buffer, uint32 length)
|
||||
{
|
||||
uint8 temp_sum = 0;
|
||||
uint8 *ptr = (uint8 *)buffer;
|
||||
|
||||
while(length--)
|
||||
{
|
||||
temp_sum += *buffer++;
|
||||
temp_sum += *ptr ++;
|
||||
}
|
||||
|
||||
return temp_sum;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------------------------------------------------------
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ͼ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͺ<EFBFBD><EFBFBD><EFBFBD>
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> camera_type <20><><EFBFBD><EFBFBD>ͷ<EFBFBD><CDB7><EFBFBD><EFBFBD>
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> *image_addr ͼ<><CDBC><EFBFBD><EFBFBD>ַ
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> boundary_num ͼ<><CDBC><EFBFBD>а<EFBFBD><D0B0><EFBFBD><EFBFBD>߽<EFBFBD><DFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> width ͼ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> height ͼ<EFBFBD><EFBFBD><EFBFBD>߶<EFBFBD>
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> CCD ͼ<><CDBC> <20><EFBFBD><EFBFBD><EFBFBD>
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> *ccd_obj CCD <20><><EFBFBD>ݽṹ<EFBFBD><EFBFBD>
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> data_type <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> seekfree_assistant_data_type_enum
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> channel_index CCD ͨ<EFBFBD><EFBFBD>
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> channel_color ͨ<EFBFBD><EFBFBD>Ҫʹ<EFBFBD>õ<EFBFBD><EFBFBD><EFBFBD>ɫ
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> data_lenght CCD <20><><EFBFBD>ݳ<EFBFBD><DDB3><EFBFBD>
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> *data_buffer CCD <20><><EFBFBD>ݻ<EFBFBD><DDBB><EFBFBD><EFBFBD><EFBFBD>
|
||||
// <20><><EFBFBD>ز<EFBFBD><D8B2><EFBFBD> void
|
||||
// ʹ<><CAB9>ʾ<EFBFBD><CABE>
|
||||
// ʹ<><CAB9>ʾ<EFBFBD><CABE> seekfree_assistant_ccd_config(ccd_obj, data_type, channel_index, channel_color, data_lenght, data_buffer);
|
||||
//-------------------------------------------------------------------------------------------------------------------
|
||||
void seekfree_assistant_camera_data_send (seekfree_assistant_image_type_enum camera_type, void *image_addr, uint8 boundary_num, uint16 width, uint16 height)
|
||||
void seekfree_assistant_ccd_config (
|
||||
seekfree_assistant_ccd_struct *ccd_obj,
|
||||
seekfree_assistant_data_type_enum data_type,
|
||||
uint8 channel_index,
|
||||
uint16 channel_color,
|
||||
uint16 data_lenght,
|
||||
void *data_buffer)
|
||||
{
|
||||
uint32 image_size = 0;
|
||||
zf_assert(NULL != ccd_obj);
|
||||
zf_assert(NULL != data_buffer);
|
||||
|
||||
seekfree_assistant_camera_data.head = SEEKFREE_ASSISTANT_SEND_HEAD;
|
||||
seekfree_assistant_camera_data.function = SEEKFREE_ASSISTANT_CAMERA_FUNCTION;
|
||||
seekfree_assistant_camera_data.camera_type = (camera_type << 5) | ((image_addr != NULL ? 0 : 1) << 4) | boundary_num;
|
||||
// д<><D0B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ<EFBFBD><CFA2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Э<EFBFBD>鲿<EFBFBD><E9B2BF>
|
||||
seekfree_assistant_camera_data.length = sizeof(seekfree_assistant_camera_struct);
|
||||
seekfree_assistant_camera_data.image_width = width;
|
||||
seekfree_assistant_camera_data.image_height = height;
|
||||
memset(ccd_obj, 0, sizeof(seekfree_assistant_ccd_struct));
|
||||
ccd_obj->config.head = SEEKFREE_ASSISTANT_SEND_HEAD;
|
||||
ccd_obj->config.cmd = SEEKFREE_ASSISTANT_SEND_CCD_CMD;
|
||||
ccd_obj->config.channel_index = channel_index;
|
||||
|
||||
// <20><><EFBFBD>ȷ<EFBFBD><C8B7><EFBFBD>֡ͷ<D6A1><CDB7><EFBFBD><EFBFBD><EFBFBD>ܡ<EFBFBD><DCA1><EFBFBD><EFBFBD><EFBFBD>ͷ<EFBFBD><CDB7><EFBFBD>͡<EFBFBD><CDA1>Լ<EFBFBD><D4BC><EFBFBD><EFBFBD>ȸ߶ȵ<DFB6><C8B5><EFBFBD>Ϣ
|
||||
seekfree_assistant_transfer_callback((const uint8 *)&seekfree_assistant_camera_data, sizeof(seekfree_assistant_camera_struct));
|
||||
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͷ<EFBFBD><CDB7><EFBFBD>ͼ<EFBFBD><CDBC><EFBFBD>ͼ<EFBFBD><CDBC><EFBFBD><EFBFBD>С
|
||||
switch(camera_type)
|
||||
uint16 data_max = 256;
|
||||
uint8 loop_count = SEEKFREE_ASSISTANT_CCD_RESOLUTION_DEFAULT;
|
||||
loop_count = (2 >= loop_count) ? (loop_count) : (2);
|
||||
for(uint8 i = 0; loop_count > i; i ++)
|
||||
{
|
||||
case SEEKFREE_ASSISTANT_OV7725_BIN:
|
||||
{
|
||||
image_size = width * height / 8;
|
||||
}break;
|
||||
|
||||
case SEEKFREE_ASSISTANT_MT9V03X:
|
||||
{
|
||||
image_size = width * height;
|
||||
}break;
|
||||
|
||||
case SEEKFREE_ASSISTANT_SCC8660:
|
||||
{
|
||||
image_size = width * height * 2;
|
||||
}break;
|
||||
data_max *= 4;
|
||||
}
|
||||
|
||||
// <20><><EFBFBD><EFBFBD>ͼ<EFBFBD><CDBC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
if(NULL != image_addr)
|
||||
#if (SEEKFREE_ASSISTANT_STC_DATA_ENABLE)
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> STC <20><>ô<EFBFBD><C3B4>С<EFBFBD>˷<EFBFBD>һ<EFBFBD><D2BB>
|
||||
ccd_obj->config.data_lenght_buffer[0] = (uint8)((data_lenght >> 8) & 0x00FF);
|
||||
ccd_obj->config.data_lenght_buffer[1] = (uint8)((data_lenght >> 0) & 0x00FF);
|
||||
ccd_obj->config.channel_color_buffer[0] = (uint8)((channel_color >> 8) & 0x00FF);
|
||||
ccd_obj->config.channel_color_buffer[1] = (uint8)((channel_color >> 0) & 0x00FF);
|
||||
ccd_obj->config.channel_data_max[0] = (uint8)((data_max >> 8) & 0x00FF);
|
||||
ccd_obj->config.channel_data_max[1] = (uint8)((data_max >> 0) & 0x00FF);
|
||||
#else
|
||||
ccd_obj->config.data_lenght_buffer[0] = (uint8)((data_lenght >> 0) & 0x00FF);
|
||||
ccd_obj->config.data_lenght_buffer[1] = (uint8)((data_lenght >> 8) & 0x00FF);
|
||||
ccd_obj->config.channel_color_buffer[0] = (uint8)((channel_color >> 0) & 0x00FF);
|
||||
ccd_obj->config.channel_color_buffer[1] = (uint8)((channel_color >> 8) & 0x00FF);
|
||||
ccd_obj->config.channel_data_max[0] = (uint8)((data_max >> 0) & 0x00FF);
|
||||
ccd_obj->config.channel_data_max[1] = (uint8)((data_max >> 8) & 0x00FF);
|
||||
#endif
|
||||
|
||||
if( SEEKFREE_ASSISTANT_STC_DATA_ENABLE
|
||||
&& SEEKFREE_ASSISTANT_DATA_TYPE_UINT16 == data_type)
|
||||
{ // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> uint16 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> STC <20><>Ƭ<EFBFBD><C6AC> <20><>ô<EFBFBD><C3B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ 0x02
|
||||
ccd_obj->config.data_type = data_type + 1;
|
||||
}
|
||||
else
|
||||
{ // <20><><EFBFBD><EFBFBD><EFBFBD>Ļ<EFBFBD><C4BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> uint8 <20><><EFBFBD>ݻ<EFBFBD><DDBB><EFBFBD> uint16 <20><><EFBFBD><EFBFBD>
|
||||
ccd_obj->config.data_type = data_type;
|
||||
}
|
||||
|
||||
// <20><>¼ʵ<C2BC><CAB5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֽ<EFBFBD><D6BD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> uint16 <20><><EFBFBD><EFBFBD>Ҫ<EFBFBD><D2AA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݳ<EFBFBD><DDB3><EFBFBD>
|
||||
ccd_obj->buffer_byte_size = data_lenght * ((data_type) ? (2) : (1));
|
||||
// Ȼ<><C8BB><EFBFBD><EFBFBD>¼<EFBFBD><C2BC>Ӧ<EFBFBD><D3A6><EFBFBD>ݻ<EFBFBD><DDBB><EFBFBD><EFBFBD><EFBFBD>
|
||||
ccd_obj->data_buffer = data_buffer;
|
||||
|
||||
// <20><>У<EFBFBD><D0A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
ccd_obj->config.check_sum = SEEKFREE_ASSISTANT_SEND_HEAD;
|
||||
ccd_obj->config.check_sum += seekfree_assistant_sum(
|
||||
&(ccd_obj->config.cmd),
|
||||
sizeof(ccd_obj->config) - 2);
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------------------------------------------------------
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> CCD ͼ<><CDBC> <20><><EFBFBD>ͺ<EFBFBD><CDBA><EFBFBD>
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> *ccd_obj CCD <20><><EFBFBD>ݽṹ<DDBD><E1B9B9>
|
||||
// <20><><EFBFBD>ز<EFBFBD><D8B2><EFBFBD> void
|
||||
// ʹ<><CAB9>ʾ<EFBFBD><CABE> seekfree_assistant_ccd_send(ccd_obj);
|
||||
//-------------------------------------------------------------------------------------------------------------------
|
||||
void seekfree_assistant_ccd_send (seekfree_assistant_ccd_struct *ccd_obj)
|
||||
{
|
||||
seekfree_assistant_transfer_callback(
|
||||
(const uint8 *)ccd_obj,
|
||||
sizeof(ccd_obj->config));
|
||||
seekfree_assistant_transfer_callback(
|
||||
(const uint8 *)(ccd_obj->data_buffer),
|
||||
ccd_obj->buffer_byte_size);
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------------------------------------------------------
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> CAMERA ͼ<><CDBC> <20><><EFBFBD><EFBFBD>
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> *camera_obj CAMERA <20><><EFBFBD>ݽṹ<DDBD><E1B9B9>
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> camera_type CAMERA <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> seekfree_assistant_camera_type_enum
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> image_width CAMERA ͼ<><CDBC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> image_height CAMERA ͼ<><CDBC><EFBFBD>߶<EFBFBD>
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> *data_buffer CAMERA ͼ<><EFBFBD><F1BBBAB3><EFBFBD>
|
||||
// <20><><EFBFBD>ز<EFBFBD><D8B2><EFBFBD> void
|
||||
// ʹ<><CAB9>ʾ<EFBFBD><CABE> seekfree_assistant_camera_config(camera_obj, camera_type, image_width, image_height, data_buffer);
|
||||
//-------------------------------------------------------------------------------------------------------------------
|
||||
void seekfree_assistant_camera_config (
|
||||
seekfree_assistant_camera_struct *camera_obj,
|
||||
seekfree_assistant_camera_type_enum camera_type,
|
||||
uint16 image_width,
|
||||
uint16 image_height,
|
||||
void *data_buffer)
|
||||
{
|
||||
zf_assert(NULL != camera_obj);
|
||||
|
||||
memset(camera_obj, 0, sizeof(seekfree_assistant_camera_struct));
|
||||
camera_obj->config.head = SEEKFREE_ASSISTANT_SEND_HEAD;
|
||||
camera_obj->config.cmd = SEEKFREE_ASSISTANT_SEND_CAMERA_CMD;
|
||||
camera_obj->config.camera_type = camera_type;
|
||||
|
||||
#if (SEEKFREE_ASSISTANT_STC_DATA_ENABLE)
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> STC <20><>ô<EFBFBD><C3B4>С<EFBFBD>˷<EFBFBD>һ<EFBFBD><D2BB>
|
||||
camera_obj->config.image_width_buffer[0] = (uint8)((image_width >> 8) & 0x00FF);
|
||||
camera_obj->config.image_width_buffer[1] = (uint8)((image_width >> 0) & 0x00FF);
|
||||
camera_obj->config.image_height_buffer[0] = (uint8)((image_height >> 8) & 0x00FF);
|
||||
camera_obj->config.image_height_buffer[1] = (uint8)((image_height >> 0) & 0x00FF);
|
||||
#else
|
||||
camera_obj->config.image_width_buffer[0] = (uint8)((image_width >> 0) & 0x00FF);
|
||||
camera_obj->config.image_width_buffer[1] = (uint8)((image_width >> 8) & 0x00FF);
|
||||
camera_obj->config.image_height_buffer[0] = (uint8)((image_height >> 0) & 0x00FF);
|
||||
camera_obj->config.image_height_buffer[1] = (uint8)((image_height >> 8) & 0x00FF);
|
||||
#endif
|
||||
|
||||
if( SEEKFREE_ASSISTANT_STC_DATA_ENABLE
|
||||
&& SEEKFREE_ASSISTANT_CAMERA_TYPE_RGB565 == camera_type
|
||||
&& NULL != data_buffer)
|
||||
{
|
||||
seekfree_assistant_transfer_callback(image_addr, image_size);
|
||||
camera_obj->config.data_type = 0x02;
|
||||
}
|
||||
else
|
||||
{
|
||||
camera_obj->config.data_type = (NULL == data_buffer) ? (0x00) : (0x01);
|
||||
}
|
||||
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> RGB565 ͼ<><CDBC> <20><>ô<EFBFBD><C3B4><EFBFBD><EFBFBD><EFBFBD>ֽ<EFBFBD><D6BD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
camera_obj->buffer_byte_size =
|
||||
image_width * image_height
|
||||
* ((SEEKFREE_ASSISTANT_CAMERA_TYPE_RGB565 == camera_type) ? (2) : (1));
|
||||
camera_obj->buffer_byte_size =
|
||||
(SEEKFREE_ASSISTANT_CAMERA_TYPE_BINARY == camera_type)
|
||||
? (camera_obj->buffer_byte_size / 8)
|
||||
: (camera_obj->buffer_byte_size);
|
||||
camera_obj->data_buffer = data_buffer;
|
||||
|
||||
// <20><>У<EFBFBD><D0A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
camera_obj->config.check_sum = SEEKFREE_ASSISTANT_SEND_HEAD;
|
||||
camera_obj->config.check_sum += seekfree_assistant_sum(
|
||||
&(camera_obj->config.cmd),
|
||||
sizeof(camera_obj->config) - 2);
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------------------------------------------------------
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> CAMERA ͼ<><CDBC> <20><><EFBFBD>ͺ<EFBFBD><CDBA><EFBFBD>
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> *camera_obj CAMERA <20><><EFBFBD>ݽṹ<DDBD><E1B9B9>
|
||||
// <20><><EFBFBD>ز<EFBFBD><D8B2><EFBFBD> void
|
||||
// ʹ<><CAB9>ʾ<EFBFBD><CABE> seekfree_assistant_camera_send(camera_obj);
|
||||
//-------------------------------------------------------------------------------------------------------------------
|
||||
void seekfree_assistant_camera_send (seekfree_assistant_camera_struct *camera_obj)
|
||||
{
|
||||
seekfree_assistant_transfer_callback(
|
||||
(const uint8 *)camera_obj,
|
||||
sizeof(camera_obj->config));
|
||||
if(NULL != camera_obj->data_buffer)
|
||||
{
|
||||
seekfree_assistant_transfer_callback(
|
||||
(const uint8 *)(camera_obj->data_buffer),
|
||||
camera_obj->buffer_byte_size);
|
||||
}
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------------------------------------------------------
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ͼ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ƺ<EFBFBD><EFBFBD><EFBFBD>
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> boundary_id <20><><EFBFBD><EFBFBD>ID
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> dot_num <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> *dot_x <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ַ
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> *dot_y <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ַ
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> width ͼ<><CDBC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> height ͼ<><CDBC><EFBFBD>߶<EFBFBD>
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> CAMERA <20><><EFBFBD><EFBFBD> <20><EFBFBD><EFBFBD><EFBFBD>
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> *camera_boundary_obj CAMERA <20><><EFBFBD><EFBFBD> <20><><EFBFBD>ݽṹ<DDBD><E1B9B9>
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> data_type <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> seekfree_assistant_data_type_enum
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> color Ҫʹ<D2AA>õ<EFBFBD><C3B5><EFBFBD>ɫ
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> boundary_lenght CAMERA <20><><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> *data_buffer CAMERA <20><><EFBFBD><EFBFBD> ͼ<><EFBFBD><EFBFBD><EFBFBD>
|
||||
// <20><><EFBFBD>ز<EFBFBD><D8B2><EFBFBD> void
|
||||
// ʹ<><CAB9>ʾ<EFBFBD><CABE>
|
||||
// ʹ<><CAB9>ʾ<EFBFBD><CABE> seekfree_assistant_camera_boundary_config(camera_boundary_obj, data_type, color, boundary_lenght, data_buffer);
|
||||
//-------------------------------------------------------------------------------------------------------------------
|
||||
void seekfree_assistant_camera_dot_send (seekfree_assistant_camera_buffer_struct *buffer)
|
||||
void seekfree_assistant_camera_boundary_config (
|
||||
seekfree_assistant_camera_boundary_struct *camera_boundary_obj,
|
||||
seekfree_assistant_data_type_enum data_type,
|
||||
uint16 color,
|
||||
uint16 boundary_lenght,
|
||||
void *data_buffer)
|
||||
{
|
||||
uint8 i;
|
||||
uint16 dot_bytes = 0; // <20><><EFBFBD>ֽ<EFBFBD><D6BD><EFBFBD><EFBFBD><EFBFBD>
|
||||
zf_assert(NULL != camera_boundary_obj);
|
||||
zf_assert(NULL != data_buffer);
|
||||
|
||||
dot_bytes = seekfree_assistant_camera_dot_data.dot_num;
|
||||
memset(camera_boundary_obj, 0, sizeof(seekfree_assistant_camera_boundary_struct));
|
||||
camera_boundary_obj->config.head = SEEKFREE_ASSISTANT_SEND_HEAD;
|
||||
camera_boundary_obj->config.cmd = SEEKFREE_ASSISTANT_SEND_CAMERA_BOUNDARY_CMD;
|
||||
|
||||
if(seekfree_assistant_camera_dot_data.dot_type & (1 << 5))
|
||||
{
|
||||
dot_bytes *= 2;
|
||||
if( SEEKFREE_ASSISTANT_STC_DATA_ENABLE
|
||||
&& SEEKFREE_ASSISTANT_DATA_TYPE_UINT16 == data_type)
|
||||
{ // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> uint16 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> STC <20><>Ƭ<EFBFBD><C6AC> <20><>ô<EFBFBD><C3B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ 0x02
|
||||
camera_boundary_obj->config.data_type = data_type + 1;
|
||||
}
|
||||
else
|
||||
{ // <20><><EFBFBD><EFBFBD><EFBFBD>Ļ<EFBFBD><C4BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> uint8 <20><><EFBFBD>ݻ<EFBFBD><DDBB><EFBFBD> uint16 <20><><EFBFBD><EFBFBD>
|
||||
camera_boundary_obj->config.data_type = data_type;
|
||||
}
|
||||
|
||||
// <20><><EFBFBD>ȷ<EFBFBD><C8B7><EFBFBD>֡ͷ<D6A1><CDB7><EFBFBD><EFBFBD><EFBFBD>ܡ<EFBFBD><DCA1>߽<EFBFBD><DFBD><EFBFBD><EFBFBD>š<EFBFBD><C5A1><EFBFBD><EFBFBD>곤<EFBFBD>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
seekfree_assistant_transfer_callback((const uint8 *)&seekfree_assistant_camera_dot_data, sizeof(seekfree_assistant_camera_dot_struct));
|
||||
#if (SEEKFREE_ASSISTANT_STC_DATA_ENABLE)
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> STC <20><>ô<EFBFBD><C3B4>С<EFBFBD>˷<EFBFBD>һ<EFBFBD><D2BB>
|
||||
camera_boundary_obj->config.boundary_lenght_buffer[0] = (uint8)((boundary_lenght >> 8) & 0x00FF);
|
||||
camera_boundary_obj->config.boundary_lenght_buffer[1] = (uint8)((boundary_lenght >> 0) & 0x00FF);
|
||||
camera_boundary_obj->config.color_buffer[0] = (uint8)((color >> 8) & 0x00FF);
|
||||
camera_boundary_obj->config.color_buffer[1] = (uint8)((color >> 0) & 0x00FF);
|
||||
#else
|
||||
camera_boundary_obj->config.boundary_lenght_buffer[0] = (uint8)((boundary_lenght >> 0) & 0x00FF);
|
||||
camera_boundary_obj->config.boundary_lenght_buffer[1] = (uint8)((boundary_lenght >> 8) & 0x00FF);
|
||||
camera_boundary_obj->config.color_buffer[0] = (uint8)((color >> 0) & 0x00FF);
|
||||
camera_boundary_obj->config.color_buffer[1] = (uint8)((color >> 8) & 0x00FF);
|
||||
#endif
|
||||
|
||||
for(i=0; i < SEEKFREE_ASSISTANT_CAMERA_MAX_BOUNDARY; i++)
|
||||
{
|
||||
// <20>ж<EFBFBD><D0B6>Ƿ<EFBFBD><C7B7><EFBFBD><EFBFBD>ͺ<EFBFBD><CDBA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
if(NULL != buffer->boundary_x[i])
|
||||
{
|
||||
seekfree_assistant_transfer_callback((const uint8 *)buffer->boundary_x[i], dot_bytes);
|
||||
}
|
||||
camera_boundary_obj->buffer_byte_size =
|
||||
boundary_lenght * 2
|
||||
* ((SEEKFREE_ASSISTANT_DATA_TYPE_UINT8 == data_type) ? (1) : (2));
|
||||
camera_boundary_obj->data_buffer = data_buffer;
|
||||
|
||||
// <20>ж<EFBFBD><EFBFBD>Ƿ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
if(NULL != buffer->boundary_y[i])
|
||||
{
|
||||
// <20><><EFBFBD><EFBFBD>û<EFBFBD><C3BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݣ<EFBFBD><DDA3><EFBFBD><EFBFBD><EFBFBD>ʾÿһ<C3BF><D2BB>ֻ<EFBFBD><D6BB>һ<EFBFBD><D2BB><EFBFBD>߽<EFBFBD>
|
||||
// ָ<><D6B8><EFBFBD>˺<EFBFBD><CBBA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݣ<EFBFBD><DDA3><EFBFBD><EFBFBD>ַ<EFBFBD>ʽ<EFBFBD><CABD><EFBFBD><EFBFBD>ʵ<EFBFBD><CAB5>ͬһ<CDAC>ж<EFBFBD><D0B6><EFBFBD><EFBFBD>߽<EFBFBD><DFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>㷨<EFBFBD>ܹ<EFBFBD><DCB9><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>䡣
|
||||
seekfree_assistant_transfer_callback((const uint8 *)buffer->boundary_y[i], dot_bytes);
|
||||
}
|
||||
}
|
||||
// <20><>У<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
camera_boundary_obj->config.check_sum = SEEKFREE_ASSISTANT_SEND_HEAD;
|
||||
camera_boundary_obj->config.check_sum += seekfree_assistant_sum(
|
||||
&(camera_boundary_obj->config.cmd),
|
||||
sizeof(camera_boundary_obj->config) - 2);
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------------------------------------------------------
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͺ<EFBFBD><EFBFBD><EFBFBD>
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> CAMERA <20><><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD>ͺ<EFBFBD><EFBFBD><EFBFBD>
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> *camera_boundary_obj CAMERA <20><><EFBFBD><EFBFBD> <20><><EFBFBD>ݽṹ<DDBD><E1B9B9>
|
||||
// <20><><EFBFBD>ز<EFBFBD><D8B2><EFBFBD> void
|
||||
// ʹ<><CAB9>ʾ<EFBFBD><CABE> seekfree_assistant_camera_boundary_send(camera_boundary_obj);
|
||||
//-------------------------------------------------------------------------------------------------------------------
|
||||
void seekfree_assistant_camera_boundary_send (seekfree_assistant_camera_boundary_struct *camera_boundary_obj)
|
||||
{
|
||||
seekfree_assistant_transfer_callback(
|
||||
(const uint8 *)camera_boundary_obj,
|
||||
sizeof(camera_boundary_obj->config));
|
||||
seekfree_assistant_transfer_callback(
|
||||
(const uint8 *)(camera_boundary_obj->data_buffer),
|
||||
camera_boundary_obj->buffer_byte_size);
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------------------------------------------------------
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> CAMERA <20><><EFBFBD>ο<EFBFBD><CEBF><EFBFBD> <20><><EFBFBD>ͺ<EFBFBD><CDBA><EFBFBD>
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> x X <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> y Y <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> width <20><><EFBFBD>ο<EFBFBD><CEBF><EFBFBD>
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> height <20><><EFBFBD>θ߶<CEB8>
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> color <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɫ
|
||||
// <20><><EFBFBD>ز<EFBFBD><D8B2><EFBFBD> void
|
||||
// ʹ<><CAB9>ʾ<EFBFBD><CABE> seekfree_assistant_camera_rectangular_send(x, y, width, height, color);
|
||||
//-------------------------------------------------------------------------------------------------------------------
|
||||
void seekfree_assistant_camera_rectangular_send (uint16 x, uint16 y, uint16 width, uint16 height, uint16 color)
|
||||
{
|
||||
seekfree_assistant_camera_rectangular_struct camera_rectangular_obj;
|
||||
memset(&camera_rectangular_obj, 0, sizeof(seekfree_assistant_camera_rectangular_struct));
|
||||
camera_rectangular_obj.head = SEEKFREE_ASSISTANT_SEND_HEAD;
|
||||
camera_rectangular_obj.cmd = SEEKFREE_ASSISTANT_SEND_CAMERA_RECTANGULAR_CMD;
|
||||
|
||||
#if (SEEKFREE_ASSISTANT_STC_DATA_ENABLE)
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> STC <20><>ô<EFBFBD><C3B4>С<EFBFBD>˷<EFBFBD>һ<EFBFBD><D2BB>
|
||||
camera_rectangular_obj.x_axis_buffer[0] = (uint8)((x >> 8) & 0x00FF);
|
||||
camera_rectangular_obj.x_axis_buffer[1] = (uint8)((x >> 0) & 0x00FF);
|
||||
camera_rectangular_obj.y_axis_buffer[0] = (uint8)((y >> 8) & 0x00FF);
|
||||
camera_rectangular_obj.y_axis_buffer[1] = (uint8)((y >> 0) & 0x00FF);
|
||||
camera_rectangular_obj.width_buffer[0] = (uint8)((width >> 8) & 0x00FF);
|
||||
camera_rectangular_obj.width_buffer[1] = (uint8)((width >> 0) & 0x00FF);
|
||||
camera_rectangular_obj.height_buffer[0] = (uint8)((height >> 8) & 0x00FF);
|
||||
camera_rectangular_obj.height_buffer[1] = (uint8)((height >> 0) & 0x00FF);
|
||||
camera_rectangular_obj.color_buffer[0] = (uint8)((color >> 8) & 0x00FF);
|
||||
camera_rectangular_obj.color_buffer[1] = (uint8)((color >> 0) & 0x00FF);
|
||||
#else
|
||||
camera_rectangular_obj.x_axis_buffer[0] = (uint8)((x >> 0) & 0x00FF);
|
||||
camera_rectangular_obj.x_axis_buffer[1] = (uint8)((x >> 8) & 0x00FF);
|
||||
camera_rectangular_obj.y_axis_buffer[0] = (uint8)((y >> 0) & 0x00FF);
|
||||
camera_rectangular_obj.y_axis_buffer[1] = (uint8)((y >> 8) & 0x00FF);
|
||||
camera_rectangular_obj.width_buffer[0] = (uint8)((width >> 0) & 0x00FF);
|
||||
camera_rectangular_obj.width_buffer[1] = (uint8)((width >> 8) & 0x00FF);
|
||||
camera_rectangular_obj.height_buffer[0] = (uint8)((height >> 0) & 0x00FF);
|
||||
camera_rectangular_obj.height_buffer[1] = (uint8)((height >> 8) & 0x00FF);
|
||||
camera_rectangular_obj.color_buffer[0] = (uint8)((color >> 0) & 0x00FF);
|
||||
camera_rectangular_obj.color_buffer[1] = (uint8)((color >> 8) & 0x00FF);
|
||||
#endif
|
||||
|
||||
// <20><>У<EFBFBD><D0A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
camera_rectangular_obj.check_sum = SEEKFREE_ASSISTANT_SEND_HEAD;
|
||||
camera_rectangular_obj.check_sum += seekfree_assistant_sum(
|
||||
&(camera_rectangular_obj.cmd),
|
||||
sizeof(camera_rectangular_obj) - 2);
|
||||
|
||||
seekfree_assistant_transfer_callback(
|
||||
(const uint8 *)&camera_rectangular_obj,
|
||||
sizeof(camera_rectangular_obj));
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------------------------------------------------------
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> *oscilloscope_obj ʾ<><CABE><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݽṹ<DDBD><E1B9B9>
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> channel_max <20><><EFBFBD><EFBFBD>ͨ<EFBFBD><CDA8><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>Χ<EFBFBD><CEA7> [1, SEEKFREE_ASSISTANT_OSCILLOSCOPE_MAX] <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Χ<EFBFBD><CEA7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><DEB5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Χ
|
||||
// <20><><EFBFBD>ز<EFBFBD><D8B2><EFBFBD> void
|
||||
// ʹ<><CAB9>ʾ<EFBFBD><CABE> seekfree_assistant_oscilloscope_config(oscilloscope_obj, SEEKFREE_ASSISTANT_OSCILLOSCOPE_MAX);
|
||||
//-------------------------------------------------------------------------------------------------------------------
|
||||
void seekfree_assistant_oscilloscope_config (
|
||||
seekfree_assistant_oscilloscope_struct *oscilloscope_obj,
|
||||
uint8 channel_max,
|
||||
void *data_buffer)
|
||||
{
|
||||
zf_assert(NULL != oscilloscope_obj);
|
||||
zf_assert(NULL != data_buffer);
|
||||
|
||||
memset(oscilloscope_obj, 0, sizeof(seekfree_assistant_oscilloscope_struct));
|
||||
oscilloscope_obj->config.head = SEEKFREE_ASSISTANT_SEND_HEAD;
|
||||
oscilloscope_obj->config.cmd = SEEKFREE_ASSISTANT_SEND_OSCILLOSCOPE_CMD;
|
||||
oscilloscope_obj->config.channel_max =
|
||||
(SEEKFREE_ASSISTANT_OSCILLOSCOPE_MAX <= channel_max)
|
||||
? (SEEKFREE_ASSISTANT_OSCILLOSCOPE_MAX)
|
||||
: ((0 == channel_max) ? (1) : (channel_max));
|
||||
oscilloscope_obj->config.data_type = (SEEKFREE_ASSISTANT_STC_DATA_ENABLE) ? (0x01) : (0x00);
|
||||
oscilloscope_obj->buffer_byte_size = oscilloscope_obj->config.channel_max * 4;
|
||||
oscilloscope_obj->data_buffer = data_buffer;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------------------------------------------------------
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD> <20><><EFBFBD>ͺ<EFBFBD><CDBA><EFBFBD>
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> *seekfree_assistant_oscilloscope ʾ<><CABE><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݽṹ<DDBD><E1B9B9>
|
||||
// <20><><EFBFBD>ز<EFBFBD><D8B2><EFBFBD> void
|
||||
// ʹ<><CAB9>ʾ<EFBFBD><CABE> seekfree_assistant_oscilloscope_send(&seekfree_assistant_oscilloscope_data);
|
||||
//-------------------------------------------------------------------------------------------------------------------
|
||||
void seekfree_assistant_oscilloscope_send (seekfree_assistant_oscilloscope_struct *seekfree_assistant_oscilloscope)
|
||||
void seekfree_assistant_oscilloscope_send (seekfree_assistant_oscilloscope_struct *oscilloscope_obj)
|
||||
{
|
||||
uint8 packet_size;
|
||||
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>λ<EFBFBD><CEBB><EFBFBD><EFBFBD>
|
||||
seekfree_assistant_oscilloscope->channel_num &= 0x0f;
|
||||
|
||||
zf_assert(SEEKFREE_ASSISTANT_SET_OSCILLOSCOPE_COUNT >= seekfree_assistant_oscilloscope->channel_num);
|
||||
|
||||
// ֡ͷ
|
||||
seekfree_assistant_oscilloscope->head = SEEKFREE_ASSISTANT_SEND_HEAD;
|
||||
|
||||
// д<><D0B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ
|
||||
packet_size = sizeof(seekfree_assistant_oscilloscope_struct) - (SEEKFREE_ASSISTANT_SET_OSCILLOSCOPE_COUNT - seekfree_assistant_oscilloscope->channel_num) * 4;
|
||||
seekfree_assistant_oscilloscope->length = packet_size;
|
||||
|
||||
// д<>빦<EFBFBD><EBB9A6><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͨ<EFBFBD><CDA8><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
seekfree_assistant_oscilloscope->channel_num |= SEEKFREE_ASSISTANT_CAMERA_OSCILLOSCOPE;
|
||||
|
||||
// <20><>У<EFBFBD><D0A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
seekfree_assistant_oscilloscope->check_sum = 0;
|
||||
seekfree_assistant_oscilloscope->check_sum = seekfree_assistant_sum((uint8 *)seekfree_assistant_oscilloscope, packet_size);
|
||||
oscilloscope_obj->config.check_sum = SEEKFREE_ASSISTANT_SEND_HEAD;
|
||||
oscilloscope_obj->config.check_sum += seekfree_assistant_sum(
|
||||
&(oscilloscope_obj->config.cmd),
|
||||
sizeof(oscilloscope_obj->config) - 2);
|
||||
oscilloscope_obj->config.check_sum += seekfree_assistant_sum(
|
||||
(oscilloscope_obj->data_buffer),
|
||||
oscilloscope_obj->buffer_byte_size);
|
||||
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD>ڵ<EFBFBD><DAB5>ñ<EFBFBD><C3B1><EFBFBD><EFBFBD><EFBFBD>֮ǰ<D6AE><C7B0><EFBFBD><EFBFBD><EFBFBD>û<EFBFBD><C3BB><EFBFBD><EFBFBD><EFBFBD>Ҫ<EFBFBD><D2AA><EFBFBD>͵<EFBFBD><CDB5><EFBFBD><EFBFBD><EFBFBD>д<EFBFBD><D0B4>seekfree_assistant_oscilloscope_data.data[]
|
||||
|
||||
seekfree_assistant_transfer_callback((const uint8 *)seekfree_assistant_oscilloscope, packet_size);
|
||||
seekfree_assistant_transfer_callback(
|
||||
(const uint8 *)oscilloscope_obj,
|
||||
sizeof(oscilloscope_obj->config));
|
||||
seekfree_assistant_transfer_callback(
|
||||
(const uint8 *)(oscilloscope_obj->data_buffer),
|
||||
oscilloscope_obj->buffer_byte_size);
|
||||
}
|
||||
|
||||
#if (SEEKFREE_ASSISTANT_DEBUG_PARAM_ENABLE)
|
||||
//-------------------------------------------------------------------------------------------------------------------
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͼ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ<EFBFBD><EFBFBD><EFBFBD>ú<EFBFBD><EFBFBD><EFBFBD>
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> camera_type ͼ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> image_addr ͼ<><CDBC><EFBFBD><EFBFBD>ַ <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>NULL<4C><4C><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾֻ<CABE><D6BB><EFBFBD>ͱ<EFBFBD><CDB1><EFBFBD><EFBFBD><EFBFBD>Ϣ<EFBFBD><CFA2><EFBFBD><EFBFBD>λ<EFBFBD><CEBB>
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> width ͼ<><CDBC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> height ͼ<><CDBC><EFBFBD>߶<EFBFBD>
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>ʾ<EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD>ͺ<EFBFBD><EFBFBD><EFBFBD>
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> *debug_param_obj ʾ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݽṹ<EFBFBD><EFBFBD>
|
||||
// <20><><EFBFBD>ز<EFBFBD><D8B2><EFBFBD> void
|
||||
// ʹ<><CAB9>ʾ<EFBFBD><CABE> seekfree_assistant_camera_information_config(SEEKFREE_ASSISTANT_MT9V03X, mt9v03x_image[0], MT9V03X_W, MT9V03X_H);
|
||||
// <20><>ע<EFBFBD><D7A2>Ϣ
|
||||
// ʹ<><CAB9>ʾ<EFBFBD><CABE> seekfree_assistant_oscilloscope_send(&seekfree_assistant_oscilloscope_data);
|
||||
//-------------------------------------------------------------------------------------------------------------------
|
||||
void seekfree_assistant_camera_information_config (seekfree_assistant_image_type_enum camera_type, void *image_addr, uint16 width, uint16 height)
|
||||
void seekfree_assistant_debug_param_analysis (seekfree_assistant_debug_param_struct *debug_param_obj)
|
||||
{
|
||||
seekfree_assistant_camera_dot_data.head = SEEKFREE_ASSISTANT_SEND_HEAD;
|
||||
seekfree_assistant_camera_dot_data.function = SEEKFREE_ASSISTANT_CAMERA_DOT_FUNCTION;
|
||||
// д<><D0B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ
|
||||
seekfree_assistant_camera_dot_data.length = sizeof(seekfree_assistant_camera_dot_struct);
|
||||
zf_assert(NULL != debug_param_obj);
|
||||
|
||||
seekfree_assistant_camera_buffer.camera_type = camera_type;
|
||||
seekfree_assistant_camera_buffer.image_addr = image_addr;
|
||||
seekfree_assistant_camera_buffer.width = width;
|
||||
seekfree_assistant_camera_buffer.height = height;
|
||||
}
|
||||
seekfree_assistant_debug_param_cmd_struct debug_param_cmd_obj; // <20>½<EFBFBD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD>ݰ<EFBFBD>
|
||||
uint8 *debug_param_cmd_pointer = (uint8 *)&debug_param_cmd_obj; // <20><>һ<EFBFBD><D2BB>ָ<EFBFBD><D6B8>ָ<EFBFBD><D6B8><EFBFBD><EFBFBD><EFBFBD>ݰ<EFBFBD><DDB0><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
uint8 temp_sum = 0xFF; // У<><D0A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD>
|
||||
uint32 read_length = 0; // <20><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD>
|
||||
|
||||
//-------------------------------------------------------------------------------------------------------------------
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͼ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>߷<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ú<EFBFBD><EFBFBD><EFBFBD>
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> boundary_type <20>߽<EFBFBD><DFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> dot_num һ<><D2BB><EFBFBD>߽<EFBFBD><DFBD>ж<EFBFBD><D0B6>ٸ<EFBFBD><D9B8><EFBFBD>
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> dot_x1 <20><><EFBFBD>ű<EFBFBD><C5B1><EFBFBD>1<EFBFBD><31><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ĵ<EFBFBD>ַ <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>NULL<4C><4C><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD><EFBFBD>ͱ<EFBFBD><CDB1><EFBFBD>1
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> dot_x2 <20><><EFBFBD>ű<EFBFBD><C5B1><EFBFBD>2<EFBFBD><32><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ĵ<EFBFBD>ַ <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>NULL<4C><4C><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD><EFBFBD>ͱ<EFBFBD><CDB1><EFBFBD>2
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> dot_x3 <20><><EFBFBD>ű<EFBFBD><C5B1><EFBFBD>3<EFBFBD><33><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ĵ<EFBFBD>ַ <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>NULL<4C><4C><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD><EFBFBD>ͱ<EFBFBD><CDB1><EFBFBD>3
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> dot_y1 <20><><EFBFBD>ű<EFBFBD><C5B1><EFBFBD>1<EFBFBD><31><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ĵ<EFBFBD>ַ <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>NULL<4C><4C><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD><EFBFBD>ͱ<EFBFBD><CDB1><EFBFBD>1
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> dot_y2 <20><><EFBFBD>ű<EFBFBD><C5B1><EFBFBD>2<EFBFBD><32><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ĵ<EFBFBD>ַ <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>NULL<4C><4C><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD><EFBFBD>ͱ<EFBFBD><CDB1><EFBFBD>2
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> dot_y3 <20><><EFBFBD>ű<EFBFBD><C5B1><EFBFBD>3<EFBFBD><33><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ĵ<EFBFBD>ַ <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>NULL<4C><4C><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD><EFBFBD>ͱ<EFBFBD><CDB1><EFBFBD>3
|
||||
// <20><><EFBFBD>ز<EFBFBD><D8B2><EFBFBD> void
|
||||
// ʹ<><CAB9>ʾ<EFBFBD><CABE> seekfree_assistant_camera_config(X_BOUNDARY, MT9V03X_H, x1_boundary, x2_boundary, x3_boundary, NULL, NULL, NULL); // ͼ<><CDBC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ߣ<EFBFBD><DFA3><EFBFBD><EFBFBD><EFBFBD>ֻ<EFBFBD>к<EFBFBD><D0BA><EFBFBD><EFBFBD><EFBFBD>
|
||||
// ʹ<><CAB9>ʾ<EFBFBD><CABE> seekfree_assistant_camera_config(Y_BOUNDARY, MT9V03X_W, NULL, NULL, NULL, y1_boundary, y2_boundary, y3_boundary); // ͼ<><CDBC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ߣ<EFBFBD><DFA3><EFBFBD><EFBFBD><EFBFBD>ֻ<EFBFBD><D6BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
// ʹ<><CAB9>ʾ<EFBFBD><CABE> seekfree_assistant_camera_config(XY_BOUNDARY, 160, xy_x1_boundary, xy_x2_boundary, xy_x3_boundary, xy_y1_boundary, xy_y2_boundary, xy_y3_boundary); // ͼ<><CDBC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ߣ<EFBFBD><DFA3><EFBFBD><EFBFBD>߰<EFBFBD><DFB0><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
// <20><>ע<EFBFBD><D7A2>Ϣ
|
||||
//-------------------------------------------------------------------------------------------------------------------
|
||||
void seekfree_assistant_camera_boundary_config (seekfree_assistant_boundary_type_enum boundary_type, uint16 dot_num, void *dot_x1, void *dot_x2, void *dot_x3, void *dot_y1, void *dot_y2, void *dot_y3)
|
||||
{
|
||||
uint8 i = 0;
|
||||
uint8 boundary_num = 0;
|
||||
uint8 boundary_data_type = 0;
|
||||
|
||||
// <20><><EFBFBD><EFBFBD>ͼ<EFBFBD><CDBC><EFBFBD><EFBFBD><EFBFBD>ͻ<EFBFBD><CDBB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƿ<EFBFBD><EFBFBD><D7BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20><><EFBFBD>ô˺<C3B4><CBBA><EFBFBD>֮ǰ<D6AE><C7B0>Ҫ<EFBFBD>ȵ<EFBFBD><C8B5><EFBFBD>seekfree_assistant_camera_config<69><67><EFBFBD>ú<EFBFBD>ͼ<EFBFBD><CDBC><EFBFBD><EFBFBD>Ϣ
|
||||
zf_assert(0 != seekfree_assistant_camera_buffer.camera_type);
|
||||
|
||||
seekfree_assistant_camera_dot_data.dot_num = dot_num;
|
||||
seekfree_assistant_camera_dot_data.valid_flag = 0;
|
||||
for(i = 0; i < 3; i++)
|
||||
{
|
||||
seekfree_assistant_camera_buffer.boundary_x[i] = NULL;
|
||||
seekfree_assistant_camera_buffer.boundary_y[i] = NULL;
|
||||
}
|
||||
|
||||
switch(boundary_type)
|
||||
{
|
||||
case X_BOUNDARY:
|
||||
{
|
||||
if(NULL != dot_x1)
|
||||
{
|
||||
boundary_num++;
|
||||
seekfree_assistant_camera_dot_data.valid_flag |= 1 << 0;
|
||||
seekfree_assistant_camera_buffer.boundary_x[i++] = dot_x1;
|
||||
}
|
||||
if(NULL != dot_x2)
|
||||
{
|
||||
boundary_num++;
|
||||
seekfree_assistant_camera_dot_data.valid_flag |= 1 << 1;
|
||||
seekfree_assistant_camera_buffer.boundary_x[i++] = dot_x2;
|
||||
}
|
||||
if(NULL != dot_x3)
|
||||
{
|
||||
boundary_num++;
|
||||
seekfree_assistant_camera_dot_data.valid_flag |= 1 << 2;
|
||||
seekfree_assistant_camera_buffer.boundary_x[i++] = dot_x3;
|
||||
}
|
||||
|
||||
if(255 < seekfree_assistant_camera_buffer.height)
|
||||
{
|
||||
boundary_data_type = 1;
|
||||
}
|
||||
}break;
|
||||
|
||||
case Y_BOUNDARY:
|
||||
{
|
||||
if(NULL != dot_y1)
|
||||
{
|
||||
boundary_num++;
|
||||
seekfree_assistant_camera_dot_data.valid_flag |= 1 << 0;
|
||||
seekfree_assistant_camera_buffer.boundary_y[i++] = dot_y1;
|
||||
}
|
||||
if(NULL != dot_y2)
|
||||
{
|
||||
boundary_num++;
|
||||
seekfree_assistant_camera_dot_data.valid_flag |= 1 << 1;
|
||||
seekfree_assistant_camera_buffer.boundary_y[i++] = dot_y2;
|
||||
}
|
||||
if(NULL != dot_y3)
|
||||
{
|
||||
boundary_num++;
|
||||
seekfree_assistant_camera_dot_data.valid_flag |= 1 << 2;
|
||||
seekfree_assistant_camera_buffer.boundary_y[i++] = dot_y3;
|
||||
}
|
||||
|
||||
if(255 < seekfree_assistant_camera_buffer.width)
|
||||
{
|
||||
boundary_data_type = 1;
|
||||
}
|
||||
}break;
|
||||
|
||||
case XY_BOUNDARY:
|
||||
{
|
||||
if((NULL != dot_x1) && (NULL != dot_y1))
|
||||
{
|
||||
boundary_num++;
|
||||
seekfree_assistant_camera_dot_data.valid_flag |= 1 << 0;
|
||||
seekfree_assistant_camera_buffer.boundary_x[i] = dot_x1;
|
||||
seekfree_assistant_camera_buffer.boundary_y[i++] = dot_y1;
|
||||
}
|
||||
if((NULL != dot_x2) && (NULL != dot_y2))
|
||||
{
|
||||
boundary_num++;
|
||||
seekfree_assistant_camera_dot_data.valid_flag |= 1 << 1;
|
||||
seekfree_assistant_camera_buffer.boundary_x[i] = dot_x2;
|
||||
seekfree_assistant_camera_buffer.boundary_y[i++] = dot_y2;
|
||||
}
|
||||
if((NULL != dot_x3) && (NULL != dot_y3))
|
||||
{
|
||||
boundary_num++;
|
||||
seekfree_assistant_camera_dot_data.valid_flag |= 1 << 2;
|
||||
seekfree_assistant_camera_buffer.boundary_x[i] = dot_x3;
|
||||
seekfree_assistant_camera_buffer.boundary_y[i++] = dot_y3;
|
||||
}
|
||||
|
||||
if((255 < seekfree_assistant_camera_buffer.width) || (255 < seekfree_assistant_camera_buffer.height))
|
||||
{
|
||||
boundary_data_type = 1;
|
||||
}
|
||||
}break;
|
||||
|
||||
case NO_BOUNDARY:break;
|
||||
}
|
||||
|
||||
seekfree_assistant_camera_dot_data.dot_type = (boundary_type << 6) | (boundary_data_type << 5) | boundary_num;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------------------------------------------------------
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ַ<EFBFBD><D6B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͷͼ<CDB7><CDBC>
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> void
|
||||
// <20><><EFBFBD>ز<EFBFBD><D8B2><EFBFBD> void
|
||||
// ʹ<><CAB9>ʾ<EFBFBD><CABE>
|
||||
// <20><>ע<EFBFBD><D7A2>Ϣ <20>ڵ<EFBFBD><DAB5><EFBFBD>ͼ<EFBFBD><CDBC><EFBFBD><EFBFBD><EFBFBD>ͺ<EFBFBD><CDBA><EFBFBD>֮ǰ<D6AE><C7B0><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ص<EFBFBD><D8B5><EFBFBD>һ<EFBFBD><D2BB>seekfree_assistant_camera_config<69><67><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ӧ<EFBFBD>IJ<EFBFBD><C4B2><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ú<EFBFBD>
|
||||
//-------------------------------------------------------------------------------------------------------------------
|
||||
void seekfree_assistant_camera_send (void)
|
||||
{
|
||||
// <20><><EFBFBD><EFBFBD>ͼ<EFBFBD><CDBC><EFBFBD><EFBFBD><EFBFBD>ͻ<EFBFBD><CDBB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƿ<EFBFBD><EFBFBD><D7BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
zf_assert(0 != seekfree_assistant_camera_buffer.camera_type);
|
||||
|
||||
seekfree_assistant_camera_data_send(seekfree_assistant_camera_buffer.camera_type, seekfree_assistant_camera_buffer.image_addr, seekfree_assistant_camera_dot_data.dot_type & 0x0f, seekfree_assistant_camera_buffer.width, seekfree_assistant_camera_buffer.height);
|
||||
|
||||
if(seekfree_assistant_camera_dot_data.dot_type & 0x0f)
|
||||
{
|
||||
seekfree_assistant_camera_dot_send(&seekfree_assistant_camera_buffer);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
//-------------------------------------------------------------------------------------------------------------------
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֽ<EFBFBD><D6BD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>յ<EFBFBD><D5B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> void
|
||||
// <20><><EFBFBD>ز<EFBFBD><D8B2><EFBFBD> void
|
||||
// ʹ<><CAB9>ʾ<EFBFBD><CABE> <20><><EFBFBD><EFBFBD>ֻ<EFBFBD><D6BB>Ҫ<EFBFBD>ŵ<EFBFBD><C5B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>е<EFBFBD>PIT<49>жϻ<D0B6><CFBB><EFBFBD><EFBFBD><EFBFBD>ѭ<EFBFBD><D1AD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
//-------------------------------------------------------------------------------------------------------------------
|
||||
#if (1 == SEEKFREE_ASSISTANT_SET_PARAMETR_ENABLE)
|
||||
void seekfree_assistant_data_analysis (void)
|
||||
{
|
||||
uint8 temp_sum;
|
||||
uint32 read_length;
|
||||
seekfree_assistant_parameter_struct *receive_packet;
|
||||
|
||||
// <20><><EFBFBD><EFBFBD>ʹ<EFBFBD><CAB9>uint32<33><32><EFBFBD>ж<EFBFBD><D0B6>壬Ŀ<E5A3AC><C4BF><EFBFBD><EFBFBD>Ϊ<EFBFBD>˱<EFBFBD>֤<EFBFBD><D6A4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֽڶ<D6BD><DAB6><EFBFBD>
|
||||
uint32 temp_buffer[SEEKFREE_ASSISTANT_BUFFER_SIZE / 4];
|
||||
|
||||
// <20><><EFBFBD>Զ<EFBFBD>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD>, <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Զ<EFBFBD><D4B6><EFBFBD><EFBFBD>Ĵ<EFBFBD><C4B4>䷽ʽ<E4B7BD><CABD><EFBFBD>ӽ<EFBFBD><D3BD>ջص<D5BB><D8B5>ж<EFBFBD>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD>
|
||||
read_length = seekfree_assistant_receive_callback((uint8 *)temp_buffer, SEEKFREE_ASSISTANT_BUFFER_SIZE);
|
||||
// <20><><EFBFBD>Զ<EFBFBD>ȡһ<C8A1><D2BB><EFBFBD><EFBFBD><EFBFBD>ݰ<EFBFBD>
|
||||
// <20><><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>
|
||||
read_length = seekfree_assistant_receive_callback(
|
||||
debug_param_cmd_pointer,
|
||||
sizeof(seekfree_assistant_debug_param_cmd_struct));
|
||||
if(read_length)
|
||||
{
|
||||
// <20><><EFBFBD><EFBFBD>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>д<EFBFBD><D0B4>FIFO
|
||||
fifo_write_buffer(&seekfree_assistant_fifo, (uint8 *)temp_buffer, read_length);
|
||||
{ // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>д<EFBFBD><D0B4>FIFO
|
||||
fifo_write_buffer(
|
||||
&seekfree_assistant_debug_param_fifo,
|
||||
debug_param_cmd_pointer,
|
||||
read_length);
|
||||
}
|
||||
|
||||
while(sizeof(seekfree_assistant_parameter_struct) <= fifo_used(&seekfree_assistant_fifo))
|
||||
{
|
||||
read_length = sizeof(seekfree_assistant_parameter_struct);
|
||||
fifo_read_buffer(&seekfree_assistant_fifo, (uint8 *)temp_buffer, &read_length, FIFO_READ_ONLY);
|
||||
while( sizeof(seekfree_assistant_debug_param_cmd_struct)
|
||||
<= fifo_used(&seekfree_assistant_debug_param_fifo))
|
||||
{ // <20><><EFBFBD><EFBFBD> FIFO <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD>ݰ<EFBFBD> <20><>ô<EFBFBD>ͽ<EFBFBD><CDBD>н<EFBFBD><D0BD><EFBFBD>
|
||||
// ֱ<>Ӷ<EFBFBD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD>ݰ<EFBFBD><DDB0><EFBFBD><EFBFBD><EFBFBD>
|
||||
read_length = sizeof(seekfree_assistant_debug_param_cmd_struct);
|
||||
fifo_read_buffer(
|
||||
&seekfree_assistant_debug_param_fifo,
|
||||
debug_param_cmd_pointer,
|
||||
&read_length,
|
||||
FIFO_READ_ONLY);
|
||||
|
||||
if(SEEKFREE_ASSISTANT_RECEIVE_HEAD != ((uint8 *)temp_buffer)[0])
|
||||
{
|
||||
// û<EFBFBD><EFBFBD>֡ͷ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>FIFO<EFBFBD><EFBFBD>ȥ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
read_length = 1;
|
||||
}
|
||||
else
|
||||
{
|
||||
// <20>ҵ<EFBFBD>֡ͷ
|
||||
receive_packet = (seekfree_assistant_parameter_struct *)temp_buffer;
|
||||
temp_sum = receive_packet->check_sum;
|
||||
receive_packet->check_sum = 0;
|
||||
if(temp_sum == seekfree_assistant_sum((uint8 *)temp_buffer, sizeof(seekfree_assistant_parameter_struct)))
|
||||
{
|
||||
// <20><>У<EFBFBD><D0A3><EFBFBD>ɹ<EFBFBD><C9B9><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
seekfree_assistant_parameter[receive_packet->channel - 1] = receive_packet->data;
|
||||
seekfree_assistant_parameter_update_flag[receive_packet->channel - 1] = 1;
|
||||
if( SEEKFREE_ASSISTANT_RECEIVE_HEAD == debug_param_cmd_pointer[0]
|
||||
&& SEEKFREE_ASSISTANT_RECEIVE_DEBUG_PARAM_CMD == debug_param_cmd_pointer[2])
|
||||
{ // ֱ<EFBFBD><EFBFBD>ƥ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>֡ͷ <20><><EFBFBD>ҹ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ҳƥ<EFBFBD><EFBFBD>
|
||||
temp_sum = debug_param_cmd_obj.check_sum; // <20><>ȡ<EFBFBD><C8A1><EFBFBD>ݰ<EFBFBD><DDB0><EFBFBD>У<EFBFBD><D0A3><EFBFBD><EFBFBD>
|
||||
debug_param_cmd_obj.check_sum = 0; // <20><><EFBFBD>հ<EFBFBD><D5B0><EFBFBD>У<EFBFBD><D0A3><EFBFBD><EFBFBD>ֵ <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>У<EFBFBD><D0A3><EFBFBD><EFBFBD>
|
||||
if( temp_sum == seekfree_assistant_sum(debug_param_cmd_pointer, sizeof(seekfree_assistant_debug_param_cmd_struct)))
|
||||
{ // <20><>У<EFBFBD><D0A3><EFBFBD>ɹ<EFBFBD><C9B9><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
debug_param_obj->data[debug_param_cmd_obj.channel_index - 1] = debug_param_cmd_obj.dat.data_float;
|
||||
#if (SEEKFREE_ASSISTANT_STC_DATA_ENABLE)
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> STC <20><>ô<EFBFBD><C3B4>С<EFBFBD>˷<EFBFBD>һ<EFBFBD><D2BB>
|
||||
debug_param_obj->dat.data_buffer[0] ^= debug_param_obj->dat.data_buffer[3];
|
||||
debug_param_obj->dat.data_buffer[3] ^= debug_param_obj->dat.data_buffer[0];
|
||||
debug_param_obj->dat.data_buffer[0] ^= debug_param_obj->dat.data_buffer[3];
|
||||
debug_param_obj->dat.data_buffer[1] ^= debug_param_obj->dat.data_buffer[2];
|
||||
debug_param_obj->dat.data_buffer[2] ^= debug_param_obj->dat.data_buffer[1];
|
||||
debug_param_obj->dat.data_buffer[1] ^= debug_param_obj->dat.data_buffer[2];
|
||||
#endif
|
||||
debug_param_obj->update_flag[debug_param_cmd_obj.channel_index - 1] = 1;
|
||||
temp_sum = 0x00;
|
||||
}
|
||||
else
|
||||
{
|
||||
read_length = 1;
|
||||
{ // <20><><EFBFBD><EFBFBD>У<EFBFBD><D0A3><EFBFBD><EFBFBD>ƥ<EFBFBD><C6A5><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>λ<EFBFBD><CEBB>ʱУ<CAB1><D0A3><EFBFBD><EFBFBD>Ϊ 0xFF <20><>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
temp_sum = 0xFF;
|
||||
}
|
||||
}
|
||||
else
|
||||
{ // <20><><EFBFBD><EFBFBD>ƥ<EFBFBD>䲻<EFBFBD><E4B2BB>֡ͷ<D6A1><EFBFBD><CDB9><EFBFBD><EFBFBD><EFBFBD> <20><>λ<EFBFBD><CEBB>ʱУ<CAB1><D0A3><EFBFBD><EFBFBD>Ϊ 0xFF <20><>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
temp_sum = 0xFF;
|
||||
}
|
||||
|
||||
if(0xFF == temp_sum)
|
||||
{ // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱУ<CAB1><D0A3><EFBFBD><EFBFBD>Ϊ 0xFF <20><>ô<EFBFBD><C3B4><EFBFBD>ǽ<EFBFBD><C7BD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ѱ<EFBFBD><D1B0><EFBFBD><EFBFBD>һ<EFBFBD><D2BB>֡ͷ
|
||||
for(read_length = 1; sizeof(seekfree_assistant_debug_param_cmd_struct) > read_length; read_length ++)
|
||||
{ // <20><>Ϊ<EFBFBD><CEAA>ȡ<EFBFBD><C8A1>һ<EFBFBD><D2BB><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD>
|
||||
if(SEEKFREE_ASSISTANT_RECEIVE_HEAD == debug_param_cmd_pointer[read_length])
|
||||
{ // <20>ҵ<EFBFBD><D2B5>¸<EFBFBD>֡ͷ<D6A1><CDB7><EFBFBD>˳<EFBFBD>
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʹ<EFBFBD>õ<EFBFBD><C3B5><EFBFBD><EFBFBD><EFBFBD>
|
||||
fifo_read_buffer(&seekfree_assistant_fifo, (uint8 *)temp_buffer, &read_length, FIFO_READ_AND_CLEAN);
|
||||
fifo_read_buffer(
|
||||
&seekfree_assistant_debug_param_fifo,
|
||||
debug_param_cmd_pointer,
|
||||
&read_length,
|
||||
FIFO_READ_AND_CLEAN);
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -1,20 +1,20 @@
|
||||
/*********************************************************************************************************************
|
||||
* 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>
|
||||
* RT1064DVL6A Opensourec Library <20><><EFBFBD><EFBFBD>RT1064DVL6A <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><C4BC><EFBFBD> RT1064DVL6A <20><>Դ<EFBFBD><D4B4><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD>
|
||||
*
|
||||
* RT1064DVL6A <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>
|
||||
@@ -24,142 +24,292 @@
|
||||
* <20>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD><EFBFBD> seekfree_assistant
|
||||
* <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.10.2
|
||||
* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ADS v1.9.4
|
||||
* <20><><EFBFBD><EFBFBD>ƽ̨ TC264D
|
||||
* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> https://seekfree.taobao.com/
|
||||
*
|
||||
*
|
||||
* <20>ļ<DEB8>¼
|
||||
* <20><><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>ע
|
||||
* 2024-01-01 pudding first version
|
||||
* <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><>ע
|
||||
* 2024-1-11 SeekFree first version
|
||||
********************************************************************************************************************/
|
||||
#ifndef _seekfree_assistant_h_
|
||||
#define _seekfree_assistant_h_
|
||||
|
||||
|
||||
#include "zf_common_typedef.h"
|
||||
|
||||
// CCD <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ö<EFBFBD><C3B6>
|
||||
typedef enum
|
||||
{
|
||||
SEEKFREE_ASSISTANT_DATA_TYPE_UINT8 ,
|
||||
SEEKFREE_ASSISTANT_DATA_TYPE_UINT16 ,
|
||||
}seekfree_assistant_data_type_enum;
|
||||
|
||||
// 1<EFBFBD><EFBFBD>ʹ<EFBFBD>ܲ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڵĹ<EFBFBD><EFBFBD><EFBFBD> 0<><30><EFBFBD>رղ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڵĹ<EFBFBD><EFBFBD><EFBFBD>
|
||||
#define SEEKFREE_ASSISTANT_SET_PARAMETR_ENABLE ( 1 )
|
||||
|
||||
|
||||
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>FIFO<EFBFBD><EFBFBD>С
|
||||
#define SEEKFREE_ASSISTANT_BUFFER_SIZE ( 0x80 )
|
||||
|
||||
// <20><><EFBFBD><EFBFBD>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͨ<EFBFBD><CDA8><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
#define SEEKFREE_ASSISTANT_SET_OSCILLOSCOPE_COUNT ( 0x08 )
|
||||
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ե<EFBFBD><D4B5><EFBFBD><EFBFBD><EFBFBD>ͨ<EFBFBD><CDA8><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
#define SEEKFREE_ASSISTANT_SET_PARAMETR_COUNT ( 0x08 )
|
||||
|
||||
// <20><><EFBFBD><EFBFBD>ͼ<EFBFBD><CDBC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
#define SEEKFREE_ASSISTANT_CAMERA_MAX_BOUNDARY ( 0x08 )
|
||||
|
||||
// <20><>Ƭ<EFBFBD><C6AC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>λ<EFBFBD><CEBB><EFBFBD><EFBFBD><EFBFBD>͵<EFBFBD>֡ͷ
|
||||
#define SEEKFREE_ASSISTANT_SEND_HEAD ( 0xAA )
|
||||
|
||||
// <20><><EFBFBD><EFBFBD>ͷ<EFBFBD><CDB7>
|
||||
#define SEEKFREE_ASSISTANT_CAMERA_FUNCTION ( 0x02 )
|
||||
#define SEEKFREE_ASSISTANT_CAMERA_DOT_FUNCTION ( 0x03 )
|
||||
#define SEEKFREE_ASSISTANT_CAMERA_OSCILLOSCOPE ( 0x10 )
|
||||
|
||||
// <20><>λ<EFBFBD><CEBB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƭ<EFBFBD><C6AC><EFBFBD><EFBFBD><EFBFBD>͵<EFBFBD>֡ͷ
|
||||
#define SEEKFREE_ASSISTANT_RECEIVE_HEAD ( 0x55 )
|
||||
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
#define SEEKFREE_ASSISTANT_RECEIVE_SET_PARAMETER ( 0x20 )
|
||||
|
||||
// CCD <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ö<EFBFBD><EFBFBD>
|
||||
typedef enum
|
||||
{
|
||||
SEEKFREE_ASSISTANT_CCD_RESOLUTION_8BIT , // 8λ<38>ֱ<EFBFBD><D6B1><EFBFBD>
|
||||
SEEKFREE_ASSISTANT_CCD_RESOLUTION_10BIT , // 10λ<30>ֱ<EFBFBD><D6B1><EFBFBD>
|
||||
SEEKFREE_ASSISTANT_CCD_RESOLUTION_12BIT , // 12λ<32>ֱ<EFBFBD><EFBFBD><EFBFBD>
|
||||
}seekfree_assistant_ccd_resolution_enum;
|
||||
|
||||
// <20><><EFBFBD><EFBFBD>ͷ<EFBFBD><CDB7><EFBFBD><EFBFBD>ö<EFBFBD><C3B6>
|
||||
typedef enum
|
||||
{
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͷ<EFBFBD>ͺŶ<CDBA><C5B6><EFBFBD>
|
||||
SEEKFREE_ASSISTANT_OV7725_BIN = 1,
|
||||
SEEKFREE_ASSISTANT_MT9V03X,
|
||||
SEEKFREE_ASSISTANT_SCC8660,
|
||||
|
||||
// <20><><EFBFBD><EFBFBD>ͼ<EFBFBD><CDBC><EFBFBD><EFBFBD><EFBFBD>Ͷ<EFBFBD><CDB6><EFBFBD>
|
||||
SEEKFREE_ASSISTANT_BINARY = 1,
|
||||
SEEKFREE_ASSISTANT_GRAY,
|
||||
SEEKFREE_ASSISTANT_RGB565,
|
||||
}seekfree_assistant_image_type_enum;
|
||||
SEEKFREE_ASSISTANT_CAMERA_TYPE_BINARY = 0x01 ,
|
||||
SEEKFREE_ASSISTANT_CAMERA_TYPE_GRAY ,
|
||||
SEEKFREE_ASSISTANT_CAMERA_TYPE_RGB565 ,
|
||||
|
||||
// <20><><EFBFBD><EFBFBD>ͷ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ö<EFBFBD><EFBFBD>
|
||||
typedef enum
|
||||
{
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͷ<EFBFBD>ͺŶ<CDBA><C5B6><EFBFBD>
|
||||
X_BOUNDARY, // <20><><EFBFBD>͵<EFBFBD>ͼ<EFBFBD><CDBC><EFBFBD>б߽<D0B1><DFBD><EFBFBD>Ϣֻ<CFA2><D6BB><EFBFBD><EFBFBD>X<EFBFBD><58>Ҳ<EFBFBD><D2B2><EFBFBD><EFBFBD>ֻ<EFBFBD>к<EFBFBD><D0BA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ<EFBFBD><CFA2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͼ<EFBFBD><CDBC><EFBFBD>߶ȵõ<C8B5>
|
||||
Y_BOUNDARY, // <20><><EFBFBD>͵<EFBFBD>ͼ<EFBFBD><CDBC><EFBFBD>б߽<D0B1><DFBD><EFBFBD>Ϣֻ<CFA2><D6BB><EFBFBD><EFBFBD>Y<EFBFBD><59>Ҳ<EFBFBD><D2B2><EFBFBD><EFBFBD>ֻ<EFBFBD><D6BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ<EFBFBD><CFA2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͼ<EFBFBD><CDBC><EFBFBD><EFBFBD><EFBFBD>ȵõ<C8B5><C3B5><EFBFBD>ͨ<EFBFBD><CDA8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
XY_BOUNDARY, // <20><><EFBFBD>͵<EFBFBD>ͼ<EFBFBD><CDBC><EFBFBD>б߽<D0B1><EFBFBD><EFBFBD>Ϣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>X<EFBFBD><EFBFBD>Y<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><EFBFBD><EFBFBD><EFBFBD>ʾ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ч<EFBFBD><EFBFBD>
|
||||
NO_BOUNDARY, // <20><><EFBFBD>͵<EFBFBD>ͼ<EFBFBD><CDBC><EFBFBD><EFBFBD>û<EFBFBD>б<EFBFBD><D0B1><EFBFBD><EFBFBD><EFBFBD>Ϣ
|
||||
}seekfree_assistant_boundary_type_enum;
|
||||
// <20><><EFBFBD><EFBFBD>ͷ<EFBFBD>ͺ<EFBFBD>ƥ<EFBFBD>䶨<EFBFBD><EFBFBD>
|
||||
SEEKFREE_ASSISTANT_CAMERA_TYPE_OV7725_BIN = 0x01 ,
|
||||
SEEKFREE_ASSISTANT_CAMERA_TYPE_MT9V03X ,
|
||||
SEEKFREE_ASSISTANT_CAMERA_TYPE_SCC8660 ,
|
||||
}seekfree_assistant_camera_type_enum;
|
||||
|
||||
#define SEEKFREE_ASSISTANT_STC_DATA_ENABLE ( 0 ) // STC <20><>Ƭ<EFBFBD><C6AC><EFBFBD><EFBFBD>Ҫʹ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>궨<EFBFBD><EFBFBD>
|
||||
|
||||
#define SEEKFREE_ASSISTANT_OSCILLOSCOPE_MAX ( 16 ) // <20><><EFBFBD><EFBFBD>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͨ<EFBFBD><CDA8><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
#define SEEKFREE_ASSISTANT_CCD_RESOLUTION_DEFAULT ( SEEKFREE_ASSISTANT_CCD_RESOLUTION_12BIT ) // Ĭ<><C4AC> CCD <20>ľ<EFBFBD><C4BE><EFBFBD> <20><><EFBFBD><EFBFBD>ȷ<EFBFBD><C8B7><EFBFBD><EFBFBD>λ<EFBFBD><CEBB><EFBFBD><EFBFBD><EFBFBD>᳤<EFBFBD><E1B3A4>
|
||||
|
||||
#define SEEKFREE_ASSISTANT_DEBUG_PARAM_ENABLE ( 1 ) // 1<><31>ʹ<EFBFBD>ܲ<EFBFBD><DCB2><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڵĹ<DAB5><C4B9><EFBFBD> 0<><30><EFBFBD>رղ<D8B1><D5B2><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڵĹ<DAB5><C4B9><EFBFBD>
|
||||
#if (SEEKFREE_ASSISTANT_DEBUG_PARAM_ENABLE)
|
||||
#define SEEKFREE_ASSISTANT_DEBUG_PARAM_MAX ( 8 ) // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Բ<EFBFBD><D4B2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͨ<EFBFBD><CDA8><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
#define SEEKFREE_ASSISTANT_DEBUG_PARAM_BUFFER_SIZE ( 64 ) // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Բ<EFBFBD><D4B2><EFBFBD><EFBFBD>Ļ<EFBFBD><C4BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>С
|
||||
#endif
|
||||
|
||||
typedef struct
|
||||
{
|
||||
uint8 head; // ֡ͷ
|
||||
uint8 channel_num; // <20><><EFBFBD><EFBFBD>λΪ<CEBB><CEAA><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>λΪͨ<CEAA><CDA8><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
uint8 check_sum; // <EFBFBD><EFBFBD>У<EFBFBD><EFBFBD>
|
||||
uint8 length; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
float data[SEEKFREE_ASSISTANT_SET_OSCILLOSCOPE_COUNT]; // ͨ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
struct
|
||||
{
|
||||
uint8 head ; // ֡ͷ
|
||||
uint8 check_sum ; // <20><>У<EFBFBD><EFBFBD>
|
||||
uint8 cmd ; // <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
uint8 channel_index ; // ͨ<><CDA8><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
uint8 data_lenght_buffer[2] ; // CCD <20><><EFBFBD>ݳ<EFBFBD><DDB3><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
uint8 channel_color_buffer[2] ; // ͨ<><CDA8><EFBFBD><EFBFBD>ɫ <20><><EFBFBD><EFBFBD>
|
||||
uint8 channel_data_max[2] ; // ͨ<><CDA8><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ <20><><EFBFBD><EFBFBD>
|
||||
uint8 data_type ; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>ȷ<EFBFBD>ϴ<EFBFBD>С<EFBFBD><D0A1>
|
||||
uint8 reserve ; // <20><><EFBFBD><EFBFBD>
|
||||
}config;
|
||||
uint16 buffer_byte_size ; // <20><><EFBFBD>ݻ<EFBFBD><DDBB><EFBFBD><EFBFBD><EFBFBD> ʵ<><CAB5><EFBFBD>ֽڴ<D6BD>С
|
||||
void *data_buffer ; // <20><><EFBFBD>ݻ<EFBFBD><DDBB><EFBFBD><EFBFBD><EFBFBD>
|
||||
}seekfree_assistant_ccd_struct;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
struct
|
||||
{
|
||||
uint8 head ; // ֡ͷ
|
||||
uint8 check_sum ; // <20><>У<EFBFBD><D0A3>
|
||||
uint8 cmd ; // <20><><EFBFBD><EFBFBD><EEB9A6><EFBFBD><EFBFBD>
|
||||
uint8 camera_type ; // <20><><EFBFBD><EFBFBD>ͷ<EFBFBD><CDB7><EFBFBD><EFBFBD>
|
||||
uint8 image_width_buffer[2] ; // ͼ<><CDBC><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
uint8 image_height_buffer[2] ; // ͼ<><CDBC><EFBFBD>߶<EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
uint8 data_type ; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>ȷ<EFBFBD>ϴ<EFBFBD>С<EFBFBD><D0A1>
|
||||
uint8 reserve[3] ; // <20><><EFBFBD><EFBFBD>
|
||||
}config;
|
||||
uint32 buffer_byte_size ; // <20><><EFBFBD>ݻ<EFBFBD><DDBB><EFBFBD><EFBFBD><EFBFBD> ʵ<><CAB5><EFBFBD>ֽڴ<D6BD>С
|
||||
void *data_buffer ; // <20><><EFBFBD>ݻ<EFBFBD><DDBB><EFBFBD><EFBFBD><EFBFBD>
|
||||
}seekfree_assistant_camera_struct;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
struct
|
||||
{
|
||||
uint8 head ; // ֡ͷ
|
||||
uint8 check_sum ; // <20><>У<EFBFBD><D0A3>
|
||||
uint8 cmd ; // <20><><EFBFBD><EFBFBD><EEB9A6><EFBFBD><EFBFBD>
|
||||
uint8 data_type ; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>ȷ<EFBFBD>ϴ<EFBFBD>С<EFBFBD><D0A1>
|
||||
uint8 boundary_lenght_buffer[2] ; // <20><><EFBFBD>߳<EFBFBD><DFB3><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
uint8 color_buffer[2] ; // ͨ<><CDA8><EFBFBD><EFBFBD>ɫ <20><><EFBFBD><EFBFBD>
|
||||
}config;
|
||||
uint32 buffer_byte_size ; // <20><><EFBFBD>ݻ<EFBFBD><DDBB><EFBFBD><EFBFBD><EFBFBD> ʵ<><CAB5><EFBFBD>ֽڴ<D6BD>С
|
||||
void *data_buffer ; // <20><><EFBFBD>ݻ<EFBFBD><DDBB><EFBFBD><EFBFBD><EFBFBD>
|
||||
}seekfree_assistant_camera_boundary_struct;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
uint8 head ; // ֡ͷ
|
||||
uint8 check_sum ; // <20><>У<EFBFBD><D0A3>
|
||||
uint8 cmd ; // <20><><EFBFBD><EFBFBD><EEB9A6><EFBFBD><EFBFBD>
|
||||
uint8 reserve ; // <20><><EFBFBD><EFBFBD>
|
||||
uint8 x_axis_buffer[2] ; // X <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
uint8 y_axis_buffer[2] ; // Y <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
uint8 width_buffer[2] ; // <20><><EFBFBD>ο<EFBFBD><CEBF><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
uint8 height_buffer[2] ; // <20><><EFBFBD>θ߶<CEB8> <20><><EFBFBD><EFBFBD>
|
||||
uint8 color_buffer[2] ; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɫ <20><><EFBFBD><EFBFBD>
|
||||
}seekfree_assistant_camera_rectangular_struct;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
struct
|
||||
{
|
||||
uint8 head ; // ֡ͷ
|
||||
uint8 check_sum ; // <20><>У<EFBFBD><D0A3>
|
||||
uint8 cmd ; // <20><><EFBFBD><EFBFBD><EEB9A6><EFBFBD><EFBFBD>
|
||||
uint8 channel_max ; // ͨ<><CDA8><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
uint8 data_type ; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>ȷ<EFBFBD>ϴ<EFBFBD>С<EFBFBD><D0A1>
|
||||
uint8 reserve[3] ; // <20><><EFBFBD><EFBFBD>
|
||||
}config;
|
||||
uint32 buffer_byte_size ; // <20><><EFBFBD>ݻ<EFBFBD><DDBB><EFBFBD><EFBFBD><EFBFBD> ʵ<><CAB5><EFBFBD>ֽڴ<D6BD>С
|
||||
void *data_buffer ; // <20><><EFBFBD>ݻ<EFBFBD><DDBB><EFBFBD><EFBFBD><EFBFBD>
|
||||
}seekfree_assistant_oscilloscope_struct;
|
||||
|
||||
typedef union
|
||||
{
|
||||
uint8 data_uint8[4] ;
|
||||
float data_float ;
|
||||
}seekfree_assistant_param_struct;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
uint8 head; // ֡ͷ
|
||||
uint8 function; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
uint8 camera_type; // <20><><EFBFBD><EFBFBD>λ<EFBFBD><CEBB>ʾ<EFBFBD>߽<EFBFBD><DFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>λ<EFBFBD><CEBB>ʾ<EFBFBD>Ƿ<EFBFBD><C7B7><EFBFBD>ͼ<EFBFBD><CDBC><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>0x13<31><33><EFBFBD><EFBFBD><EFBFBD><EFBFBD>3<EFBFBD><33>ʾһ<CABE><D2BB>ͼ<EFBFBD><CDBC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>߽磨ͨ<E7A3A8><CDA8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>߽硢<DFBD><E7A1A2><EFBFBD>ߡ<EFBFBD><DFA1>ұ߽磩<DFBD><E7A3A9>1<EFBFBD><31>ʾû<CABE><C3BB>ͼ<EFBFBD><CDBC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
uint8 length; // <20><><EFBFBD><EFBFBD><EFBFBD>ȣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Э<EFBFBD>鲿<EFBFBD>֣<EFBFBD>
|
||||
uint16 image_width; // ͼ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
uint16 image_height; // ͼ<><CDBC><EFBFBD>߶<EFBFBD>
|
||||
}seekfree_assistant_camera_struct;
|
||||
|
||||
|
||||
typedef struct
|
||||
{
|
||||
uint8 head; // ֡ͷ
|
||||
uint8 function; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
uint8 dot_type; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> BIT5<54><35>1<EFBFBD><31><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>16λ<36><CEBB> 0<><30><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>8λ<38><CEBB> BIT7-BIT6<54><36>0<EFBFBD><30>ֻ<EFBFBD><D6BB>X<EFBFBD><58><EFBFBD><EFBFBD> 1<><31>ֻ<EFBFBD><D6BB>Y<EFBFBD><59><EFBFBD><EFBFBD> 2<><32>X<EFBFBD><58>Y<EFBFBD><59><EFBFBD>궼<EFBFBD><EAB6BC> BIT3-BIT0<54><30><EFBFBD>߽<EFBFBD><DFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
uint8 length; // <20><><EFBFBD><EFBFBD><EFBFBD>ȣ<EFBFBD><C8A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Э<EFBFBD>鲿<EFBFBD>֣<EFBFBD>
|
||||
uint16 dot_num; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
uint8 valid_flag; // ͨ<><CDA8><EFBFBD><EFBFBD>ʶ
|
||||
uint8 reserve; // <20><><EFBFBD><EFBFBD>
|
||||
}seekfree_assistant_camera_dot_struct;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
void *image_addr; // <20><><EFBFBD><EFBFBD>ͷ<EFBFBD><CDB7>ַ
|
||||
uint16 width; // ͼ<><CDBC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
uint16 height; // ͼ<><CDBC><EFBFBD>߶<EFBFBD>
|
||||
seekfree_assistant_image_type_enum camera_type; // <20><><EFBFBD><EFBFBD>ͷ<EFBFBD><CDB7><EFBFBD><EFBFBD>
|
||||
void *boundary_x[SEEKFREE_ASSISTANT_CAMERA_MAX_BOUNDARY]; // <20>߽<EFBFBD><DFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ַ
|
||||
void *boundary_y[SEEKFREE_ASSISTANT_CAMERA_MAX_BOUNDARY]; // <20>߽<EFBFBD><DFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ַ
|
||||
}seekfree_assistant_camera_buffer_struct;
|
||||
uint8 head ; // ֡ͷ
|
||||
uint8 check_sum ; // <20><>У<EFBFBD><EFBFBD>
|
||||
uint8 cmd ; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
uint8 channel_index ; // ͨ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
seekfree_assistant_param_struct dat ; // һ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
|
||||
}seekfree_assistant_debug_param_cmd_struct;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
uint8 head; // ֡ͷ
|
||||
uint8 function; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
uint8 channel; // ͨ<><CDA8>
|
||||
uint8 check_sum; // <20><>У<EFBFBD><D0A3>
|
||||
float data; // <20><><EFBFBD><EFBFBD>
|
||||
}seekfree_assistant_parameter_struct;
|
||||
uint8 x;
|
||||
uint8 y;
|
||||
}seekfree_assistant_camera_boundary_uint8_struct;
|
||||
|
||||
|
||||
typedef struct
|
||||
{
|
||||
uint8 x;
|
||||
uint8 y;
|
||||
}seekfree_assistant_camera_boundary_uint16_struct;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
float data[SEEKFREE_ASSISTANT_DEBUG_PARAM_MAX] ;
|
||||
uint8 update_flag[SEEKFREE_ASSISTANT_DEBUG_PARAM_MAX] ;
|
||||
}seekfree_assistant_debug_param_struct;
|
||||
|
||||
typedef uint32 (*seekfree_assistant_transfer_callback_function) (const uint8 *buff, uint32 length);
|
||||
typedef uint32 (*seekfree_assistant_receive_callback_function) (uint8 *buff, uint32 length);
|
||||
|
||||
extern seekfree_assistant_oscilloscope_struct seekfree_assistant_oscilloscope_data; // <20><><EFBFBD><EFBFBD>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
extern float seekfree_assistant_parameter[SEEKFREE_ASSISTANT_SET_PARAMETR_COUNT]; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>յ<EFBFBD><D5B5>IJ<EFBFBD><EFBFBD><EFBFBD>
|
||||
extern vuint8 seekfree_assistant_parameter_update_flag[SEEKFREE_ASSISTANT_SET_PARAMETR_COUNT]; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>±<EFBFBD>־λ
|
||||
|
||||
|
||||
void seekfree_assistant_oscilloscope_send (seekfree_assistant_oscilloscope_struct *seekfree_assistant_oscilloscope);
|
||||
void seekfree_assistant_camera_information_config (seekfree_assistant_image_type_enum camera_type, void *image_addr, uint16 width, uint16 height);
|
||||
void seekfree_assistant_camera_boundary_config (seekfree_assistant_boundary_type_enum boundary_type, uint16 dot_num, void *dot_x1, void *dot_x2, void *dot_x3, void *dot_y1, void *dot_y2, void *dot_y3);
|
||||
void seekfree_assistant_camera_send (void);
|
||||
void seekfree_assistant_data_analysis (void);
|
||||
//-------------------------------------------------------------------------------------------------------------------
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> CCD ͼ<><CDBC> <20><EFBFBD><EFBFBD><EFBFBD>
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> *ccd_obj CCD <20><><EFBFBD>ݽṹ<DDBD><E1B9B9>
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> data_type <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> seekfree_assistant_data_type_enum
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> channel_index CCD ͨ<><CDA8>
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> channel_color ͨ<><CDA8>Ҫʹ<D2AA>õ<EFBFBD><C3B5><EFBFBD>ɫ
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> data_lenght CCD <20><><EFBFBD>ݳ<EFBFBD><DDB3><EFBFBD>
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> *data_buffer CCD <20><><EFBFBD>ݻ<EFBFBD><DDBB><EFBFBD><EFBFBD><EFBFBD>
|
||||
// <20><><EFBFBD>ز<EFBFBD><D8B2><EFBFBD> void
|
||||
// ʹ<><CAB9>ʾ<EFBFBD><CABE> seekfree_assistant_ccd_config(ccd_obj, data_type, channel_index, channel_color, data_lenght, data_buffer);
|
||||
//-------------------------------------------------------------------------------------------------------------------
|
||||
void seekfree_assistant_ccd_config (
|
||||
seekfree_assistant_ccd_struct *ccd_obj,
|
||||
seekfree_assistant_data_type_enum data_type,
|
||||
uint8 channel_index,
|
||||
uint16 channel_color,
|
||||
uint16 data_lenght,
|
||||
void *data_buffer);
|
||||
|
||||
//-------------------------------------------------------------------------------------------------------------------
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> CCD ͼ<><CDBC> <20><><EFBFBD>ͺ<EFBFBD><CDBA><EFBFBD>
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> *ccd_obj CCD <20><><EFBFBD>ݽṹ<DDBD><E1B9B9>
|
||||
// <20><><EFBFBD>ز<EFBFBD><D8B2><EFBFBD> void
|
||||
// ʹ<><CAB9>ʾ<EFBFBD><CABE> seekfree_assistant_ccd_send(ccd_obj);
|
||||
//-------------------------------------------------------------------------------------------------------------------
|
||||
void seekfree_assistant_ccd_send (seekfree_assistant_ccd_struct *ccd_obj);
|
||||
|
||||
//-------------------------------------------------------------------------------------------------------------------
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> CAMERA ͼ<><CDBC> <20><><EFBFBD><EFBFBD>
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> *camera_obj CAMERA <20><><EFBFBD>ݽṹ<DDBD><E1B9B9>
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> camera_type CAMERA <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> seekfree_assistant_camera_type_enum
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> image_width CAMERA ͼ<><CDBC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> image_height CAMERA ͼ<><CDBC><EFBFBD>߶<EFBFBD>
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> *data_buffer CAMERA ͼ<><EFBFBD><F1BBBAB3><EFBFBD>
|
||||
// <20><><EFBFBD>ز<EFBFBD><D8B2><EFBFBD> void
|
||||
// ʹ<><CAB9>ʾ<EFBFBD><CABE> seekfree_assistant_camera_config(camera_obj, camera_type, image_width, image_height, data_buffer);
|
||||
//-------------------------------------------------------------------------------------------------------------------
|
||||
void seekfree_assistant_camera_config (
|
||||
seekfree_assistant_camera_struct *camera_obj,
|
||||
seekfree_assistant_camera_type_enum camera_type,
|
||||
uint16 image_width,
|
||||
uint16 image_height,
|
||||
void *data_buffer);
|
||||
|
||||
//-------------------------------------------------------------------------------------------------------------------
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> CAMERA ͼ<><CDBC> <20><><EFBFBD>ͺ<EFBFBD><CDBA><EFBFBD>
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> *camera_obj CAMERA <20><><EFBFBD>ݽṹ<DDBD><E1B9B9>
|
||||
// <20><><EFBFBD>ز<EFBFBD><D8B2><EFBFBD> void
|
||||
// ʹ<><CAB9>ʾ<EFBFBD><CABE> seekfree_assistant_camera_send(camera_obj);
|
||||
//-------------------------------------------------------------------------------------------------------------------
|
||||
void seekfree_assistant_camera_send (seekfree_assistant_camera_struct *camera_obj);
|
||||
|
||||
//-------------------------------------------------------------------------------------------------------------------
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> CAMERA <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> *camera_boundary_obj CAMERA <20><><EFBFBD><EFBFBD> <20><><EFBFBD>ݽṹ<DDBD><E1B9B9>
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> data_type <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> seekfree_assistant_data_type_enum
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> color Ҫʹ<D2AA>õ<EFBFBD><C3B5><EFBFBD>ɫ
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> boundary_lenght CAMERA <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> *data_buffer CAMERA <20><><EFBFBD><EFBFBD> ͼ<><EFBFBD><F1BBBAB3><EFBFBD>
|
||||
// <20><><EFBFBD>ز<EFBFBD><D8B2><EFBFBD> void
|
||||
// ʹ<><CAB9>ʾ<EFBFBD><CABE> seekfree_assistant_camera_boundary_config(camera_boundary_obj, data_type, color, boundary_lenght, data_buffer);
|
||||
//-------------------------------------------------------------------------------------------------------------------
|
||||
void seekfree_assistant_camera_boundary_config (
|
||||
seekfree_assistant_camera_boundary_struct *camera_boundary_obj,
|
||||
seekfree_assistant_data_type_enum data_type,
|
||||
uint16 color,
|
||||
uint16 boundary_lenght,
|
||||
void *data_buffer);
|
||||
|
||||
//-------------------------------------------------------------------------------------------------------------------
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> CAMERA <20><><EFBFBD><EFBFBD> <20><><EFBFBD>ͺ<EFBFBD><CDBA><EFBFBD>
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> *camera_boundary_obj CAMERA <20><><EFBFBD><EFBFBD> <20><><EFBFBD>ݽṹ<DDBD><E1B9B9>
|
||||
// <20><><EFBFBD>ز<EFBFBD><D8B2><EFBFBD> void
|
||||
// ʹ<><CAB9>ʾ<EFBFBD><CABE> seekfree_assistant_camera_boundary_send(camera_boundary_obj);
|
||||
//-------------------------------------------------------------------------------------------------------------------
|
||||
void seekfree_assistant_camera_boundary_send (seekfree_assistant_camera_boundary_struct *camera_boundary_obj);
|
||||
|
||||
//-------------------------------------------------------------------------------------------------------------------
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> CAMERA <20><><EFBFBD>ο<EFBFBD><CEBF><EFBFBD> <20><><EFBFBD>ͺ<EFBFBD><CDBA><EFBFBD>
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> x X <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> y Y <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> width <20><><EFBFBD>ο<EFBFBD><CEBF><EFBFBD>
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> height <20><><EFBFBD>θ߶<CEB8>
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> color <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɫ
|
||||
// <20><><EFBFBD>ز<EFBFBD><D8B2><EFBFBD> void
|
||||
// ʹ<><CAB9>ʾ<EFBFBD><CABE> seekfree_assistant_camera_rectangular_send(x, y, width, height, color);
|
||||
//-------------------------------------------------------------------------------------------------------------------
|
||||
void seekfree_assistant_camera_rectangular_send (uint16 x, uint16 y, uint16 width, uint16 height, uint16 color);
|
||||
|
||||
//-------------------------------------------------------------------------------------------------------------------
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> *oscilloscope_obj ʾ<><CABE><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݽṹ<DDBD><E1B9B9>
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> channel_max <20><><EFBFBD><EFBFBD>ͨ<EFBFBD><CDA8><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>Χ<EFBFBD><CEA7> [1, 16] <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Χ<EFBFBD><CEA7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><DEB5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Χ
|
||||
// <20><><EFBFBD>ز<EFBFBD><D8B2><EFBFBD> void
|
||||
// ʹ<><CAB9>ʾ<EFBFBD><CABE> seekfree_assistant_oscilloscope_config(oscilloscope_obj, 16);
|
||||
//-------------------------------------------------------------------------------------------------------------------
|
||||
void seekfree_assistant_oscilloscope_config (
|
||||
seekfree_assistant_oscilloscope_struct *oscilloscope_obj,
|
||||
uint8 channel_max,
|
||||
void *data_buffer);
|
||||
|
||||
//-------------------------------------------------------------------------------------------------------------------
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD> <20><><EFBFBD>ͺ<EFBFBD><CDBA><EFBFBD>
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> *seekfree_assistant_oscilloscope ʾ<><CABE><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݽṹ<DDBD><E1B9B9>
|
||||
// <20><><EFBFBD>ز<EFBFBD><D8B2><EFBFBD> void
|
||||
// ʹ<><CAB9>ʾ<EFBFBD><CABE> seekfree_assistant_oscilloscope_send(&seekfree_assistant_oscilloscope_data);
|
||||
//-------------------------------------------------------------------------------------------------------------------
|
||||
void seekfree_assistant_oscilloscope_send (seekfree_assistant_oscilloscope_struct *oscilloscope_obj);
|
||||
|
||||
#if (SEEKFREE_ASSISTANT_DEBUG_PARAM_ENABLE)
|
||||
//-------------------------------------------------------------------------------------------------------------------
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD> <20><><EFBFBD>ͺ<EFBFBD><CDBA><EFBFBD>
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> *debug_param_obj ʾ<><CABE><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݽṹ<DDBD><E1B9B9>
|
||||
// <20><><EFBFBD>ز<EFBFBD><D8B2><EFBFBD> void
|
||||
// ʹ<><CAB9>ʾ<EFBFBD><CABE> seekfree_assistant_oscilloscope_send(&seekfree_assistant_oscilloscope_data);
|
||||
//-------------------------------------------------------------------------------------------------------------------
|
||||
void seekfree_assistant_debug_param_analysis (seekfree_assistant_debug_param_struct *debug_param_obj);
|
||||
#endif
|
||||
|
||||
#endif
|
||||
|
||||
@@ -1,20 +1,20 @@
|
||||
/*********************************************************************************************************************
|
||||
* 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>
|
||||
* RT1064DVL6A Opensourec Library <20><><EFBFBD><EFBFBD>RT1064DVL6A <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><C4BC><EFBFBD> RT1064DVL6A <20><>Դ<EFBFBD><D4B4><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD>
|
||||
*
|
||||
* RT1064DVL6A <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>
|
||||
@@ -24,23 +24,20 @@
|
||||
* <20>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD><EFBFBD> seekfree_assistant_interface
|
||||
* <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.10.2
|
||||
* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ADS v1.9.4
|
||||
* <20><><EFBFBD><EFBFBD>ƽ̨ TC264D
|
||||
* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> https://seekfree.taobao.com/
|
||||
*
|
||||
*
|
||||
* <20>ļ<DEB8>¼
|
||||
* <20><><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>ע
|
||||
* 2024-01-01 pudding first version
|
||||
* <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><>ע
|
||||
* 2024-1-11 SeekFree first version
|
||||
********************************************************************************************************************/
|
||||
|
||||
#include "zf_common_typedef.h"
|
||||
#include "zf_common_fifo.h"
|
||||
#include "zf_common_debug.h"
|
||||
#include "zf_driver_uart.h"
|
||||
|
||||
#include "zf_device_wireless_uart.h"
|
||||
#include "zf_device_ble6a20.h"
|
||||
#include "zf_device_bluetooth_ch9141.h"
|
||||
#include "zf_device_wifi_uart.h"
|
||||
#include "zf_device_wifi_spi.h"
|
||||
#include "seekfree_assistant.h"
|
||||
|
||||
@@ -50,7 +47,6 @@
|
||||
extern seekfree_assistant_transfer_callback_function seekfree_assistant_transfer_callback; // <20><><EFBFBD>ݷ<EFBFBD><DDB7>ͺ<EFBFBD><CDBA><EFBFBD>ָ<EFBFBD><D6B8>
|
||||
extern seekfree_assistant_receive_callback_function seekfree_assistant_receive_callback; // <20><><EFBFBD>ݽ<EFBFBD><DDBD>պ<EFBFBD><D5BA><EFBFBD>ָ<EFBFBD><D6B8>
|
||||
|
||||
|
||||
//-------------------------------------------------------------------------------------------------------------------
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ַ<EFBFBD><D6B7>ͺ<EFBFBD><CDBA><EFBFBD>
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> *buff <20><>Ҫ<EFBFBD><D2AA><EFBFBD>͵<EFBFBD><CDB5><EFBFBD><EFBFBD>ݵ<EFBFBD>ַ
|
||||
@@ -58,7 +54,7 @@ extern seekfree_assistant_receive_callback_function seekfree_assistant_receiv
|
||||
// <20><><EFBFBD>ز<EFBFBD><D8B2><EFBFBD> uint32 ʣ<><CAA3>δ<EFBFBD><CEB4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݳ<EFBFBD><DDB3><EFBFBD>
|
||||
// ʹ<><CAB9>ʾ<EFBFBD><CABE>
|
||||
//-------------------------------------------------------------------------------------------------------------------
|
||||
ZF_WEAK uint32 seekfree_assistant_transfer (const uint8 *buff, uint32 length)
|
||||
uint32 seekfree_assistant_transfer (const uint8 *buff, uint32 length)
|
||||
{
|
||||
|
||||
// <20><>ѡ<EFBFBD><D1A1><EFBFBD>Զ<EFBFBD><D4B6><EFBFBD>ͨѶ<CDA8><D1B6>ʽʱ <20><>Ҫ<EFBFBD><D2AA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݷ<EFBFBD><DDB7><EFBFBD><CDB9><EFBFBD>
|
||||
@@ -72,7 +68,7 @@ ZF_WEAK uint32 seekfree_assistant_transfer (const uint8 *buff, uint32 length)
|
||||
// <20><><EFBFBD>ز<EFBFBD><D8B2><EFBFBD> uint32 <20><><EFBFBD>յ<EFBFBD><D5B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݳ<EFBFBD><DDB3><EFBFBD>
|
||||
// ʹ<><CAB9>ʾ<EFBFBD><CABE>
|
||||
//-------------------------------------------------------------------------------------------------------------------
|
||||
ZF_WEAK uint32 seekfree_assistant_receive (uint8 *buff, uint32 length)
|
||||
uint32 seekfree_assistant_receive (uint8 *buff, uint32 length)
|
||||
{
|
||||
// <20><>ѡ<EFBFBD><D1A1><EFBFBD>Զ<EFBFBD><D4B6><EFBFBD>ͨѶ<CDA8><D1B6>ʽʱ <20><>Ҫ<EFBFBD><D2AA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݽ<EFBFBD><DDBD>չ<EFBFBD><D5B9><EFBFBD>
|
||||
return 0;
|
||||
@@ -85,54 +81,45 @@ ZF_WEAK uint32 seekfree_assistant_receive (uint8 *buff, uint32 length)
|
||||
// ʹ<><CAB9>ʾ<EFBFBD><CABE> seekfree_assistant_interface_init(SEEKFREE_ASSISTANT_WIFI_SPI); ʹ<>ø<EFBFBD><C3B8><EFBFBD>WIFI SPIģ<49><C4A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>շ<EFBFBD>
|
||||
// <20><>ע <20><>Ҫ<EFBFBD><D2AA><EFBFBD>е<EFBFBD><D0B5><EFBFBD><EFBFBD>豸<EFBFBD>ij<EFBFBD>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʹ<EFBFBD><CAB9><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ת<EFBFBD><D7AA><EFBFBD>ڽ<EFBFBD><DABD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݵ<EFBFBD><DDB5>շ<EFBFBD><D5B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ҫ<EFBFBD><D2AA><EFBFBD>е<EFBFBD><D0B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ת<EFBFBD><D7AA><EFBFBD>ڵij<DAB5>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD>Ȼ<EFBFBD><C8BB><EFBFBD>ٵ<EFBFBD><D9B5><EFBFBD>seekfree_assistant_interface_init<69><74><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵĽӿڳ<D3BF>ʼ<EFBFBD><CABC>
|
||||
//-------------------------------------------------------------------------------------------------------------------
|
||||
ZF_WEAK void seekfree_assistant_interface_init (seekfree_assistant_transfer_device_enum transfer_device)
|
||||
void seekfree_assistant_interface_init (seekfree_assistant_transfer_device_enum transfer_device)
|
||||
{
|
||||
switch(transfer_device)
|
||||
{
|
||||
case SEEKFREE_ASSISTANT_DEBUG_UART:
|
||||
{
|
||||
#if DEBUG_UART_USE_INTERRUPT == 1
|
||||
seekfree_assistant_transfer_callback = debug_send_buffer;
|
||||
seekfree_assistant_receive_callback = debug_read_ring_buffer;
|
||||
#endif
|
||||
}break;
|
||||
|
||||
|
||||
case SEEKFREE_ASSISTANT_WIRELESS_UART:
|
||||
{
|
||||
seekfree_assistant_transfer_callback = wireless_uart_send_buffer;
|
||||
seekfree_assistant_receive_callback = wireless_uart_read_buffer;
|
||||
}break;
|
||||
|
||||
case SEEKFREE_ASSISTANT_BLE6A20:
|
||||
{
|
||||
seekfree_assistant_transfer_callback = ble6a20_send_buffer;
|
||||
seekfree_assistant_receive_callback = ble6a20_read_buffer;
|
||||
}break;
|
||||
|
||||
case SEEKFREE_ASSISTANT_CH9141:
|
||||
{
|
||||
seekfree_assistant_transfer_callback = bluetooth_ch9141_send_buffer;
|
||||
seekfree_assistant_receive_callback = bluetooth_ch9141_read_buffer;
|
||||
}break;
|
||||
|
||||
case SEEKFREE_ASSISTANT_WIFI_UART:
|
||||
{
|
||||
seekfree_assistant_transfer_callback = wifi_uart_send_buffer;
|
||||
seekfree_assistant_receive_callback = wifi_uart_read_buffer;
|
||||
}break;
|
||||
|
||||
// case SEEKFREE_ASSISTANT_CH9141:
|
||||
// {
|
||||
// seekfree_assistant_transfer_callback = bluetooth_ch9141_send_buffer;
|
||||
// seekfree_assistant_receive_callback = bluetooth_ch9141_read_buffer;
|
||||
// }break;
|
||||
|
||||
// case SEEKFREE_ASSISTANT_WIFI_UART:
|
||||
// {
|
||||
// seekfree_assistant_transfer_callback = wifi_uart_send_buffer;
|
||||
// seekfree_assistant_receive_callback = wifi_uart_read_buffer;
|
||||
// }break;
|
||||
|
||||
case SEEKFREE_ASSISTANT_WIFI_SPI:
|
||||
{
|
||||
seekfree_assistant_transfer_callback = wifi_spi_send_buffer;
|
||||
seekfree_assistant_receive_callback = wifi_spi_read_buffer;
|
||||
}break;
|
||||
|
||||
case SEEKFREE_ASSISTANT_CUSTOM:
|
||||
{
|
||||
|
||||
default:
|
||||
{
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD>Լ<EFBFBD><D4BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>ʵ<EFBFBD><CAB5>seekfree_assistant_transfer<65><72>seekfree_assistant_receive<76><65><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݵ<EFBFBD><DDB5>շ<EFBFBD>
|
||||
|
||||
seekfree_assistant_transfer_callback = seekfree_assistant_transfer;
|
||||
seekfree_assistant_receive_callback = seekfree_assistant_receive;
|
||||
}break;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -1,20 +1,20 @@
|
||||
/*********************************************************************************************************************
|
||||
* 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>
|
||||
* RT1064DVL6A Opensourec Library <20><><EFBFBD><EFBFBD>RT1064DVL6A <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><C4BC><EFBFBD> RT1064DVL6A <20><>Դ<EFBFBD><D4B4><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD>
|
||||
*
|
||||
* RT1064DVL6A <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>
|
||||
@@ -24,13 +24,13 @@
|
||||
* <20>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD><EFBFBD> seekfree_assistant_interface
|
||||
* <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.10.2
|
||||
* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ADS v1.9.4
|
||||
* <20><><EFBFBD><EFBFBD>ƽ̨ TC264D
|
||||
* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> https://seekfree.taobao.com/
|
||||
*
|
||||
*
|
||||
* <20>ļ<DEB8>¼
|
||||
* <20><><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>ע
|
||||
* 2024-01-01 pudding first version
|
||||
* <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><>ע
|
||||
* 2024-1-11 SeekFree first version
|
||||
********************************************************************************************************************/
|
||||
|
||||
#ifndef _seekfree_assistant_interface_h_
|
||||
@@ -43,7 +43,6 @@ typedef enum
|
||||
{
|
||||
SEEKFREE_ASSISTANT_DEBUG_UART, // <20><><EFBFBD>Դ<EFBFBD><D4B4><EFBFBD> ʹ<>õĴ<C3B5><C4B4><EFBFBD><EFBFBD><EFBFBD>DEBUG_UART_INDEX<45>궨<EFBFBD><EAB6A8>ָ<EFBFBD><D6B8>
|
||||
SEEKFREE_ASSISTANT_WIRELESS_UART, // <20><><EFBFBD><EFBFBD>ת<EFBFBD><D7AA><EFBFBD><EFBFBD>
|
||||
SEEKFREE_ASSISTANT_BLE6A20, // <20><><EFBFBD><EFBFBD>ת<EFBFBD><D7AA><EFBFBD><EFBFBD>
|
||||
SEEKFREE_ASSISTANT_CH9141, // CH9141<34><31><EFBFBD><EFBFBD>
|
||||
SEEKFREE_ASSISTANT_WIFI_UART, // WIFIת<49><D7AA><EFBFBD><EFBFBD>
|
||||
SEEKFREE_ASSISTANT_WIFI_SPI, // <20><><EFBFBD><EFBFBD>WIFI SPI
|
||||
|
||||
@@ -62,7 +62,7 @@
|
||||
//====================================================<3D><><EFBFBD><EFBFBD> SPI <20><><EFBFBD><EFBFBD>====================================================
|
||||
#else
|
||||
//====================================================Ӳ<><D3B2> SPI <20><><EFBFBD><EFBFBD>====================================================
|
||||
#define ABSOLUTE_ENCODER_SPI_SPEED (10*1000*1000) // Ӳ<><D3B2> SPI <20><><EFBFBD><EFBFBD>
|
||||
#define ABSOLUTE_ENCODER_SPI_SPEED (8*1000*1000) // Ӳ<><D3B2> SPI <20><><EFBFBD><EFBFBD>
|
||||
#define ABSOLUTE_ENCODER_SPI (SPI_0) // Ӳ<><D3B2> SPI <20><>
|
||||
#define ABSOLUTE_ENCODER_SCLK_PIN (SPI0_SCLK_P20_11) // Ӳ<><D3B2> SPI SCK <20><><EFBFBD><EFBFBD>
|
||||
#define ABSOLUTE_ENCODER_MOSI_PIN (SPI0_MOSI_P20_14) // Ӳ<><D3B2> SPI MOSI <20><><EFBFBD><EFBFBD>
|
||||
@@ -70,7 +70,7 @@
|
||||
//====================================================Ӳ<><D3B2> SPI <20><><EFBFBD><EFBFBD>====================================================
|
||||
#endif
|
||||
|
||||
#define ABSOLUTE_ENCODER_CS_PIN (P20_13) // CS<43><53><EFBFBD>Ŷ<EFBFBD><C5B6><EFBFBD>
|
||||
#define ABSOLUTE_ENCODER_CS_PIN (P00_8) // CS<43><53><EFBFBD>Ŷ<EFBFBD><C5B6><EFBFBD>
|
||||
#define ABSOLUTE_ENCODER_CSN(x) ((x) ? (gpio_high(ABSOLUTE_ENCODER_CS_PIN)): (gpio_low(ABSOLUTE_ENCODER_CS_PIN)))
|
||||
|
||||
#define ABSOLUTE_ENCODER_TIMEOUT_COUNT (100) // <20>Լ쳬ʱʱ<CAB1><CAB1>
|
||||
|
||||
@@ -76,7 +76,7 @@
|
||||
// 1<><31><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Զ<EFBFBD><D4B6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>Զ<EFBFBD><D4B6><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʵ<EFBFBD><CAB5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> BLE6A20_BAUD ֮<><D6AE><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ҫ<EFBFBD><D2AA>ģ<EFBFBD><C4A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ģ<><C4A3><EFBFBD><EFBFBD><EFBFBD>Զ<EFBFBD><D4B6><EFBFBD><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA>Ӧ<EFBFBD>IJ<EFBFBD><C4B2><EFBFBD><EFBFBD><EFBFBD>
|
||||
// <20>Զ<EFBFBD><D4B6><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʽ<EFBFBD>֧<EFBFBD><D6A7> 9600 57600 115200 230400 460800 921600 1500000 2000000
|
||||
|
||||
#define BLE6A20_AUTO_BAUD_RATE ( 0 )
|
||||
#define BLE6A20_AUTO_BAUD_RATE ( 1 )
|
||||
|
||||
#if (1 == BLE6A20_AUTO_BAUD_RATE)
|
||||
typedef enum
|
||||
|
||||
@@ -0,0 +1,563 @@
|
||||
/*********************************************************************************************************************
|
||||
* RT1064DVL6A Opensourec Library <20><><EFBFBD><EFBFBD>RT1064DVL6A <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> RT1064DVL6A <20><>Դ<EFBFBD><D4B4><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD>
|
||||
*
|
||||
* RT1064DVL6A <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_imu660rc
|
||||
* <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.10.2
|
||||
* <20><><EFBFBD><EFBFBD>ƽ̨ TC264
|
||||
* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> https://seekfree.taobao.com/
|
||||
*
|
||||
* <20>ļ<DEB8>¼
|
||||
* <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><>ע
|
||||
* 2025-12-12 SeekFree first version
|
||||
********************************************************************************************************************/
|
||||
/*********************************************************************************************************************
|
||||
* <20><><EFBFBD>߶<EFBFBD><DFB6>壺
|
||||
* ------------------------------------
|
||||
* ģ<><C4A3><EFBFBD>ܽ<EFBFBD> <20><>Ƭ<EFBFBD><C6AC><EFBFBD>ܽ<EFBFBD>
|
||||
* // Ӳ<><D3B2> SPI <20><><EFBFBD><EFBFBD>
|
||||
* SCL/SPC <20>鿴 zf_device_imu660rc.h <20><> IMU660RC_SPC_PIN <20>궨<EFBFBD><EAB6A8>
|
||||
* SDA/DSI <20>鿴 zf_device_imu660rc.h <20><> IMU660RC_SDI_PIN <20>궨<EFBFBD><EAB6A8>
|
||||
* SA0/SDO <20>鿴 zf_device_imu660rc.h <20><> IMU660RC_SDO_PIN <20>궨<EFBFBD><EAB6A8>
|
||||
* CS <20>鿴 zf_device_imu660rc.h <20><> IMU660RC_CS_PIN <20>궨<EFBFBD><EAB6A8>
|
||||
* INT2 <20>鿴 zf_device_imu660rc.h <20><> IMU660RC_INT2_PIN <20>궨<EFBFBD><EAB6A8>
|
||||
* VCC 3.3V<EFBFBD><EFBFBD>Դ
|
||||
* GND <20><>Դ<EFBFBD><D4B4>
|
||||
* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
*
|
||||
* // <20><><EFBFBD><EFBFBD> IIC <20><><EFBFBD><EFBFBD>
|
||||
* SCL/SPC <20>鿴 zf_device_imu660rc.h <20><> IMU660RC_SCL_PIN <20>궨<EFBFBD><EAB6A8>
|
||||
* SDA/DSI <20>鿴 zf_device_imu660rc.h <20><> IMU660RC_SDA_PIN <20>궨<EFBFBD><EAB6A8>
|
||||
* VCC 3.3V<EFBFBD><EFBFBD>Դ
|
||||
* GND <20><>Դ<EFBFBD><D4B4>
|
||||
* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
* ------------------------------------
|
||||
********************************************************************************************************************/
|
||||
|
||||
|
||||
#include "math.h"
|
||||
#include "zf_common_debug.h"
|
||||
#include "zf_driver_delay.h"
|
||||
#include "zf_driver_spi.h"
|
||||
#include "zf_driver_gpio.h"
|
||||
#include "zf_driver_soft_iic.h"
|
||||
#include "zf_device_config.h"
|
||||
#include "zf_driver_uart.h"
|
||||
#include "zf_driver_exti.h"
|
||||
|
||||
#include "zf_device_imu660rc.h"
|
||||
|
||||
#ifndef M_PI
|
||||
#define M_PI 3.1415926f
|
||||
#endif
|
||||
|
||||
|
||||
static uint8 imu660rc_quarternion_rate;
|
||||
|
||||
float imu660rc_transition_factor[2];
|
||||
int16 imu660rc_gyro_x = 0, imu660rc_gyro_y = 0, imu660rc_gyro_z = 0; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> gyro (<28><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>)
|
||||
int16 imu660rc_acc_x = 0, imu660rc_acc_y = 0, imu660rc_acc_z = 0; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ٶȼ<D9B6><C8BC><EFBFBD><EFBFBD><EFBFBD> acc (accelerometer <20><><EFBFBD>ٶȼ<D9B6>)
|
||||
float imu660rc_roll = 0, imu660rc_pitch = 0, imu660rc_yaw = 0; // ŷ<><C5B7><EFBFBD><EFBFBD>
|
||||
float imu660rc_quarternion[4]; // <20><>Ԫ<EFBFBD><D4AA>
|
||||
|
||||
|
||||
|
||||
#if IMU660RC_USE_SOFT_IIC
|
||||
static soft_iic_info_struct imu660rc_iic_struct;
|
||||
|
||||
#define imu660rc_write_register(reg, data) (soft_iic_write_8bit_register (&imu660rc_iic_struct, (reg), (data)))
|
||||
#define imu660rc_write_registers(reg, data, len) (soft_iic_write_8bit_registers(&imu660rc_iic_struct, (reg), (data), (len)))
|
||||
#define imu660rc_read_register(reg) (soft_iic_read_8bit_register (&imu660rc_iic_struct, (reg)))
|
||||
#define imu660rc_read_registers(reg, data, len) (soft_iic_read_8bit_registers (&imu660rc_iic_struct, (reg), (data), (len)))
|
||||
#else
|
||||
//-------------------------------------------------------------------------------------------------------------------
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> IMU660RC д<>Ĵ<EFBFBD><C4B4><EFBFBD>
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> reg <20>Ĵ<EFBFBD><C4B4><EFBFBD><EFBFBD><EFBFBD>ַ
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> data <20><><EFBFBD><EFBFBD>
|
||||
// <20><><EFBFBD>ز<EFBFBD><D8B2><EFBFBD> void
|
||||
// ʹ<><CAB9>ʾ<EFBFBD><CABE>
|
||||
// <20><>ע<EFBFBD><D7A2>Ϣ <20>ڲ<EFBFBD><DAB2><EFBFBD><EFBFBD><EFBFBD>
|
||||
//-------------------------------------------------------------------------------------------------------------------
|
||||
static void imu660rc_write_register (uint8 reg, uint8 data)
|
||||
{
|
||||
IMU660RC_CS(0);
|
||||
spi_write_8bit_register(IMU660RC_SPI, reg | IMU660RC_SPI_W, data);
|
||||
IMU660RC_CS(1);
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------------------------------------------------------
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> IMU660RC <20><><EFBFBD>Ĵ<EFBFBD><C4B4><EFBFBD>
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> reg <20>Ĵ<EFBFBD><C4B4><EFBFBD><EFBFBD><EFBFBD>ַ
|
||||
// <20><><EFBFBD>ز<EFBFBD><D8B2><EFBFBD> uint8 <20><><EFBFBD><EFBFBD>
|
||||
// ʹ<><CAB9>ʾ<EFBFBD><CABE> imu660rc_read_register(IMU660RC_CHIP_ID);
|
||||
// <20><>ע<EFBFBD><D7A2>Ϣ <20>ڲ<EFBFBD><DAB2><EFBFBD><EFBFBD><EFBFBD>
|
||||
//-------------------------------------------------------------------------------------------------------------------
|
||||
static uint8 imu660rc_read_register (uint8 reg)
|
||||
{
|
||||
uint8 data;
|
||||
IMU660RC_CS(0);
|
||||
data = spi_read_8bit_register(IMU660RC_SPI, reg | IMU660RC_SPI_R);
|
||||
IMU660RC_CS(1);
|
||||
return data;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------------------------------------------------------
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> IMU660RC <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> reg <20>Ĵ<EFBFBD><C4B4><EFBFBD><EFBFBD><EFBFBD>ַ
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> data <20><><EFBFBD>ݻ<EFBFBD><DDBB><EFBFBD><EFBFBD><EFBFBD>
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> len <20><><EFBFBD>ݳ<EFBFBD><DDB3><EFBFBD>
|
||||
// <20><><EFBFBD>ز<EFBFBD><D8B2><EFBFBD> void
|
||||
// ʹ<><CAB9>ʾ<EFBFBD><CABE> imu660rc_read_registers(IMU660RC_ACC_ADDRESS, dat, 6);
|
||||
// <20><>ע<EFBFBD><D7A2>Ϣ <20>ڲ<EFBFBD><DAB2><EFBFBD><EFBFBD><EFBFBD>
|
||||
//-------------------------------------------------------------------------------------------------------------------
|
||||
static void imu660rc_read_registers (uint8 reg, uint8 *data, uint32 len)
|
||||
{
|
||||
IMU660RC_CS(0);
|
||||
spi_read_8bit_registers(IMU660RC_SPI, reg | IMU660RC_SPI_R, data, len);
|
||||
IMU660RC_CS(1);
|
||||
}
|
||||
#endif
|
||||
|
||||
//-------------------------------------------------------------------------------------------------------------------
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> IMU660RC fp16ת<36><D7AA><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> void
|
||||
// <20><><EFBFBD>ز<EFBFBD><D8B2><EFBFBD> uint8
|
||||
// ʹ<><CAB9>ʾ<EFBFBD><CABE>
|
||||
// <20><>ע<EFBFBD><D7A2>Ϣ <20>ڲ<EFBFBD><DAB2><EFBFBD><EFBFBD><EFBFBD>
|
||||
//-------------------------------------------------------------------------------------------------------------------
|
||||
static uint32 fp16_to_float(uint16 h)
|
||||
{
|
||||
uint16 h_exp = (h & 0x7c00u);
|
||||
uint32 f_sgn = ((uint32)h & 0x8000u) << 16;
|
||||
switch (h_exp)
|
||||
{
|
||||
case 0x0000u: // 0 or subnormal
|
||||
{
|
||||
uint16 h_sig = (h & 0x03ffu);
|
||||
// Signed zero
|
||||
if (h_sig == 0)
|
||||
{
|
||||
return f_sgn;
|
||||
}
|
||||
// Subnormal
|
||||
h_sig <<= 1;
|
||||
while ((h_sig & 0x0400u) == 0)
|
||||
{
|
||||
h_sig <<= 1;
|
||||
h_exp++;
|
||||
}
|
||||
uint32 f_exp = ((uint32)(127 - 15 - h_exp)) << 23;
|
||||
uint32 f_sig = ((uint32)(h_sig & 0x03ffu)) << 13;
|
||||
return f_sgn + f_exp + f_sig;
|
||||
}
|
||||
case 0x7c00u: // inf or NaN
|
||||
{
|
||||
// All-ones exponent and a copy of the significand
|
||||
return f_sgn + 0x7f800000u + (((uint32)(h & 0x03ffu)) << 13);
|
||||
}
|
||||
default: // normalized
|
||||
{
|
||||
// Just need to adjust the exponent and shift
|
||||
return f_sgn + (((uint32)(h & 0x7fffu) + 0x1c000u) << 13);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------------------------------------------------------
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> IMU660RC <20><>Ԫ<EFBFBD><D4AA><EFBFBD><EFBFBD>һ<EFBFBD><D2BB>
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> void
|
||||
// <20><><EFBFBD>ز<EFBFBD><D8B2><EFBFBD> uint8
|
||||
// ʹ<><CAB9>ʾ<EFBFBD><CABE>
|
||||
// <20><>ע<EFBFBD><D7A2>Ϣ <20>ڲ<EFBFBD><DAB2><EFBFBD><EFBFBD><EFBFBD>
|
||||
//-------------------------------------------------------------------------------------------------------------------
|
||||
static void quarternion_normalize(float quat[4], uint16 *fp16)
|
||||
{
|
||||
float n = 0;
|
||||
float temp[4];
|
||||
|
||||
*(uint32 *)(&temp[0]) = fp16_to_float(fp16[0]);
|
||||
*(uint32 *)(&temp[1]) = fp16_to_float(fp16[1]);
|
||||
*(uint32 *)(&temp[2]) = fp16_to_float(fp16[2]);
|
||||
*(uint32 *)(&temp[3]) = fp16_to_float(fp16[3]);
|
||||
|
||||
n = temp[0] * temp[0] + temp[1] * temp[1] + temp[2] * temp[2] + temp[3] * temp[3];
|
||||
n = sqrtf(n);
|
||||
|
||||
if(n > 0.001f) // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Խӽ<D4BD>0<EFBFBD><30>ֵ
|
||||
{
|
||||
n = temp[3] < 0.0f ? -n : n;
|
||||
|
||||
quat[0] = temp[1] / n;
|
||||
quat[1] = temp[2] / n;
|
||||
quat[2] = temp[0] / n;
|
||||
quat[3] = temp[3] / n;
|
||||
}
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------------------------------------------------------
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> IMU660RC <20><>Ԫ<EFBFBD><D4AA>תŷ<D7AA><C5B7><EFBFBD><EFBFBD>
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> void
|
||||
// <20><><EFBFBD>ز<EFBFBD><D8B2><EFBFBD> uint8
|
||||
// ʹ<><CAB9>ʾ<EFBFBD><CABE>
|
||||
// <20><>ע<EFBFBD><D7A2>Ϣ <20>ڲ<EFBFBD><DAB2><EFBFBD><EFBFBD><EFBFBD>
|
||||
//-------------------------------------------------------------------------------------------------------------------
|
||||
static void quarternion_to_euler(float quat[4], float *roll, float *pitch, float *yaw)
|
||||
{
|
||||
float euler[3];
|
||||
|
||||
float sqx = quat[0] * quat[0];
|
||||
float sqy = quat[1] * quat[1];
|
||||
float sqz = quat[2] * quat[2];
|
||||
|
||||
euler[0] = atan2f(2.0f * (quat[1] * quat[3] + quat[0] * quat[2]), 1.0f - 2.0f * (sqy + sqx));
|
||||
euler[1] = -asinf(2.0f * (quat[0] * quat[3] - quat[1] * quat[2]));
|
||||
euler[2] = atan2f(2.0f * (quat[0] * quat[1] + quat[2] * quat[3]), 1.0f - 2.0f * (sqx + sqz));
|
||||
|
||||
// <20><><EFBFBD><EFBFBD>ת<EFBFBD>Ƕ<EFBFBD>
|
||||
euler[0] = 180 * (euler[0]) / M_PI;
|
||||
euler[1] = 180 * (euler[1]) / M_PI;
|
||||
euler[2] = 180 * (euler[2]) / M_PI;
|
||||
|
||||
// <20>Ƕȵ<C7B6><C8B5><EFBFBD>
|
||||
euler[2] = 0 > euler[2] ? euler[2] + 360 : euler[2];
|
||||
|
||||
*roll = euler[0];
|
||||
*pitch = euler[1];
|
||||
*yaw = euler[2];
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------------------------------------------------------
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> IMU660RC <20><><EFBFBD>÷<EFBFBD><C3B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> void
|
||||
// <20><><EFBFBD>ز<EFBFBD><D8B2><EFBFBD> uint8
|
||||
// ʹ<><CAB9>ʾ<EFBFBD><CABE>
|
||||
// <20><>ע<EFBFBD><D7A2>Ϣ <20>ڲ<EFBFBD><DAB2><EFBFBD><EFBFBD><EFBFBD>
|
||||
//-------------------------------------------------------------------------------------------------------------------
|
||||
static void imu660rc_set_mem_bank (imu660rc_mem_bank_enum bank)
|
||||
{
|
||||
imu660rc_write_register(IMU660RC_FUNC_CFG_ACCESS, bank);
|
||||
}
|
||||
|
||||
|
||||
//-------------------------------------------------------------------------------------------------------------------
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> IMU660RC <20>Լ<EFBFBD>
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> void
|
||||
// <20><><EFBFBD>ز<EFBFBD><D8B2><EFBFBD> uint8 1-<2D>Լ<EFBFBD>ʧ<EFBFBD><CAA7> 0-<2D>Լ<EFBFBD><D4BC>ɹ<EFBFBD>
|
||||
// ʹ<><CAB9>ʾ<EFBFBD><CABE> imu660rc_self_check();
|
||||
// <20><>ע<EFBFBD><D7A2>Ϣ <20>ڲ<EFBFBD><DAB2><EFBFBD><EFBFBD><EFBFBD>
|
||||
//-------------------------------------------------------------------------------------------------------------------
|
||||
static uint8 imu660rc_self_check (void)
|
||||
{
|
||||
uint8 dat = 0, return_state = 0;
|
||||
uint16 timeout_count = 0;
|
||||
do
|
||||
{
|
||||
if(IMU660RC_TIMEOUT_COUNT < timeout_count ++)
|
||||
{
|
||||
return_state = 1;
|
||||
break;
|
||||
}
|
||||
dat = imu660rc_read_register(IMU660RC_CHIP_ID);
|
||||
system_delay_ms(1);
|
||||
}while(0x70 != dat); // <20><>ȡ<EFBFBD>豸ID<49>Ƿ<EFBFBD><C7B7><EFBFBD><EFBFBD><EFBFBD>0x70<37><30><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>0x70<37><30><EFBFBD><EFBFBD>Ϊû<CEAA><C3BB><EFBFBD><EFBFBD>豸
|
||||
return return_state;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------------------------------------------------------
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>ȡ IMU660RC <20><><EFBFBD>ٶȼ<D9B6><C8BC><EFBFBD><EFBFBD><EFBFBD>
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> void
|
||||
// <20><><EFBFBD>ز<EFBFBD><D8B2><EFBFBD> void
|
||||
// ʹ<><CAB9>ʾ<EFBFBD><CABE> imu660rc_get_acc(); // ִ<>иú<D0B8><C3BA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֱ<EFBFBD>Ӳ鿴<D3B2><E9BFB4>Ӧ<EFBFBD>ı<EFBFBD><C4B1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
// <20><>ע<EFBFBD><D7A2>Ϣ ʹ<><CAB9> SPI <20>IJɼ<C4B2>ʱ<EFBFBD><CAB1>Ϊ10us
|
||||
//-------------------------------------------------------------------------------------------------------------------
|
||||
void imu660rc_get_acc (void)
|
||||
{
|
||||
int16 dat[3];
|
||||
if(IMU660RC_QUARTERNION_DISABLE == imu660rc_quarternion_rate)
|
||||
{ // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ԫ<EFBFBD><D4AA><EFBFBD>ر<EFBFBD>״̬<D7B4><CCAC>֧<EFBFBD>ֵ<EFBFBD><D6B5>ô˺<C3B4><CBBA><EFBFBD><EFBFBD><EFBFBD> <20><>Ԫ<EFBFBD><D4AA><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ҫ<EFBFBD><D2AA>ȡ<EFBFBD><C8A1><EFBFBD>ٶ<EFBFBD><D9B6><EFBFBD>Ϣ<EFBFBD><CFA2>IMU660RC_QUARTERNION_GET_ACC<43><43><EFBFBD><EFBFBD>Ϊ1
|
||||
imu660rc_read_registers(IMU660RC_OUTX_L_A, (uint8 *)dat, 6);
|
||||
imu660rc_acc_x = dat[0];
|
||||
imu660rc_acc_y = dat[1];
|
||||
imu660rc_acc_z = dat[2];
|
||||
}
|
||||
}
|
||||
//-------------------------------------------------------------------------------------------------------------------
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>ȡ IMU660RC <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> void
|
||||
// <20><><EFBFBD>ز<EFBFBD><D8B2><EFBFBD> void
|
||||
// ʹ<><CAB9>ʾ<EFBFBD><CABE> imu660rc_get_gyro(); // ִ<>иú<D0B8><C3BA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֱ<EFBFBD>Ӳ鿴<D3B2><E9BFB4>Ӧ<EFBFBD>ı<EFBFBD><C4B1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
// <20><>ע<EFBFBD><D7A2>Ϣ ʹ<><CAB9> SPI <20>IJɼ<C4B2>ʱ<EFBFBD><CAB1>Ϊ10us
|
||||
//-------------------------------------------------------------------------------------------------------------------
|
||||
void imu660rc_get_gyro (void)
|
||||
{
|
||||
int16 dat[3];
|
||||
if(IMU660RC_QUARTERNION_DISABLE == imu660rc_quarternion_rate)
|
||||
{ // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ԫ<EFBFBD><D4AA><EFBFBD>ر<EFBFBD>״̬<D7B4><CCAC>֧<EFBFBD>ֵ<EFBFBD><D6B5>ô˺<C3B4><CBBA><EFBFBD><EFBFBD><EFBFBD> <20><>Ԫ<EFBFBD><D4AA><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ҫ<EFBFBD><D2AA>ȡ<EFBFBD><C8A1><EFBFBD>ٶ<EFBFBD><D9B6><EFBFBD>Ϣ<EFBFBD><CFA2>IMU660RC_QUARTERNION_GET_GYRO<52><4F><EFBFBD><EFBFBD>Ϊ1
|
||||
imu660rc_read_registers(IMU660RC_OUTX_L_G, (uint8 *)dat, 6);
|
||||
imu660rc_gyro_x = dat[0];
|
||||
imu660rc_gyro_y = dat[1];
|
||||
imu660rc_gyro_z = dat[2];
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
//-------------------------------------------------------------------------------------------------------------------
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>ȡ IMU660RC <20><>Ԫ<EFBFBD><D4AA><EFBFBD><EFBFBD><EFBFBD>ݲ<EFBFBD>ת<EFBFBD><D7AA>Ϊŷ<CEAA><C5B7><EFBFBD><EFBFBD>
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> void
|
||||
// <20><><EFBFBD>ز<EFBFBD><D8B2><EFBFBD> void
|
||||
// ʹ<><CAB9>ʾ<EFBFBD><CABE> imu660rc_get_quarternion(); // ִ<>иú<D0B8><C3BA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֱ<EFBFBD>Ӳ鿴<D3B2><E9BFB4>Ӧ<EFBFBD>ı<EFBFBD><C4B1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
// <20><>ע<EFBFBD><D7A2>Ϣ <20><>Ҫ<EFBFBD><D2AA>INT2<54><32><EFBFBD>Ŵ<EFBFBD><C5B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>жϵ<D0B6><CFB5>ô˺<C3B4><CBBA><EFBFBD>
|
||||
//
|
||||
//-------------------------------------------------------------------------------------------------------------------
|
||||
void imu660rc_get_quarternion(void)
|
||||
{
|
||||
uint8 i;
|
||||
uint16 buff[4];
|
||||
uint8 *buff1_ptr;
|
||||
int16 *buff2_ptr;
|
||||
|
||||
if(IMU660RC_QUARTERNION_DISABLE != imu660rc_quarternion_rate)
|
||||
{
|
||||
buff1_ptr = (uint8 *)buff;
|
||||
|
||||
imu660rc_set_mem_bank(IMU660RC_EMBED_MEM_BANK);
|
||||
imu660rc_write_register(IMU660RC_PAGE_RW, 0x20);
|
||||
imu660rc_write_register(IMU660RC_PAGE_SEL, 0x31);
|
||||
|
||||
for(i = 0; 8 > i; i++)
|
||||
{
|
||||
imu660rc_write_register(0x08, 0x4C + i);
|
||||
buff1_ptr[i] = imu660rc_read_register(0x09);
|
||||
}
|
||||
|
||||
imu660rc_write_register(IMU660RC_PAGE_RW, 0x0);
|
||||
imu660rc_set_mem_bank(IMU660RC_MAIN_MEM_BANK);
|
||||
|
||||
// <20><>Ԫ<EFBFBD><D4AA><EFBFBD><EFBFBD>һ<EFBFBD><D2BB>
|
||||
quarternion_normalize(imu660rc_quarternion, buff);
|
||||
// <20><>Ԫ<EFBFBD><D4AA>תŷ<D7AA><C5B7><EFBFBD><EFBFBD>
|
||||
quarternion_to_euler(imu660rc_quarternion, &imu660rc_roll, &imu660rc_pitch, &imu660rc_yaw);
|
||||
|
||||
// <20><>ȡ<EFBFBD><C8A1><EFBFBD>ٶ<EFBFBD><D9B6><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ٶ<EFBFBD><D9B6><EFBFBD>Ϣ
|
||||
#if(1 == IMU660RC_QUARTERNION_GET_ACC)
|
||||
{
|
||||
buff2_ptr = (int16 *)buff;
|
||||
imu660rc_read_registers(IMU660RC_OUTX_L_A, (uint8 *)buff2_ptr, 6);
|
||||
imu660rc_acc_x = buff2_ptr[0];
|
||||
imu660rc_acc_y = buff2_ptr[1];
|
||||
imu660rc_acc_z = buff2_ptr[2];
|
||||
}
|
||||
#endif
|
||||
#if(1 == IMU660RC_QUARTERNION_GET_GYRO)
|
||||
{
|
||||
buff2_ptr = (int16 *)buff;
|
||||
imu660rc_read_registers(IMU660RC_OUTX_L_G, (uint8 *)buff2_ptr, 6);
|
||||
imu660rc_gyro_x = buff2_ptr[0];
|
||||
imu660rc_gyro_y = buff2_ptr[1];
|
||||
imu660rc_gyro_z = buff2_ptr[2];
|
||||
}
|
||||
#endif
|
||||
}
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------------------------------------------------------
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> IMU660RC<52>жϻص<CFBB><D8B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ҫ<EFBFBD><D2AA><EFBFBD>ж<EFBFBD><D0B6>ڶ<EFBFBD>ȡ<EFBFBD><C8A1>Ԫ<EFBFBD><D4AA>
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> void
|
||||
// <20><><EFBFBD>ز<EFBFBD><D8B2><EFBFBD> void
|
||||
// ʹ<><CAB9>ʾ<EFBFBD><CABE>
|
||||
// <20><>ע<EFBFBD><D7A2>Ϣ
|
||||
//
|
||||
//-------------------------------------------------------------------------------------------------------------------
|
||||
void imu660rc_callback(void)
|
||||
{
|
||||
imu660rc_get_quarternion();
|
||||
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------------------------------------------------------
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>ʼ<EFBFBD><CABC> IMU660RC
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> quarternion_rate ѡ<><D1A1><EFBFBD><EFBFBD>Ԫ<EFBFBD><D4AA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
// <20><><EFBFBD>ز<EFBFBD><D8B2><EFBFBD> uint8 1-<2D><>ʼ<EFBFBD><CABC>ʧ<EFBFBD><CAA7> 0-<2D><>ʼ<EFBFBD><CABC><EFBFBD>ɹ<EFBFBD>
|
||||
// ʹ<><CAB9>ʾ<EFBFBD><CABE> imu660rc_init(IMU660RC_QUARTERNION_120HZ);
|
||||
// <20><>ע<EFBFBD><D7A2>Ϣ
|
||||
//-------------------------------------------------------------------------------------------------------------------
|
||||
uint8 imu660rc_init(imu660rc_quarternion_rate_config quarternion_rate)
|
||||
{
|
||||
uint8 return_state = 0;
|
||||
|
||||
imu660rc_quarternion_rate = quarternion_rate;
|
||||
#if IMU660RC_USE_SOFT_IIC
|
||||
soft_iic_init(&imu660rc_iic_struct, IMU660RC_DEV_ADDR, IMU660RC_SOFT_IIC_DELAY, IMU660RC_SCL_PIN, IMU660RC_SDA_PIN); // <20><><EFBFBD><EFBFBD> IMU660RC <20><> IIC <20>˿<EFBFBD>
|
||||
|
||||
#else
|
||||
spi_init(IMU660RC_SPI, SPI_MODE0, IMU660RC_SPI_SPEED, IMU660RC_SPC_PIN, IMU660RC_SDI_PIN, IMU660RC_SDO_PIN, SPI_CS_NULL); // <20><><EFBFBD><EFBFBD> IMU660RC <20><> SPI <20>˿<EFBFBD>
|
||||
gpio_init(IMU660RC_CS_PIN, GPO, GPIO_HIGH, GPO_PUSH_PULL); // <20><><EFBFBD><EFBFBD> IMU660RC <20><>CS<43>˿<EFBFBD>
|
||||
#endif
|
||||
|
||||
system_delay_ms(10);
|
||||
|
||||
do
|
||||
{
|
||||
if(imu660rc_self_check()) // IMU660RC <20>Լ<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> IMU660RC <20>Լ<EFBFBD><D4BC><EFBFBD><EFBFBD><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, "imu660rc self check error.");
|
||||
return_state = 1;
|
||||
break;
|
||||
}
|
||||
|
||||
// <20><>λ<EFBFBD><CEBB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
imu660rc_write_register(IMU660RC_FUNC_CFG_ACCESS, 0x04);
|
||||
system_delay_ms(30);
|
||||
|
||||
// <20><><EFBFBD>ÿ<EFBFBD><C3BF><EFBFBD><EFBFBD>¹<EFBFBD><C2B9><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ַ<EFBFBD><D6B7><EFBFBD><EFBFBD>
|
||||
imu660rc_write_register(IMU660RC_CTRL3, 0x44);
|
||||
|
||||
switch(IMU660RC_ACC_SAMPLE_DEFAULT)
|
||||
{
|
||||
default:
|
||||
{
|
||||
zf_log(0, "IMU660RC_ACC_SAMPLE_DEFAULT set error.");
|
||||
return_state = 1;
|
||||
}break;
|
||||
case IMU660RC_ACC_SAMPLE_SGN_2G:
|
||||
{
|
||||
imu660rc_write_register(IMU660RC_CTRL8, 0x00);
|
||||
imu660rc_transition_factor[0] = 16393.44;
|
||||
}break;
|
||||
case IMU660RC_ACC_SAMPLE_SGN_4G:
|
||||
{
|
||||
imu660rc_write_register(IMU660RC_CTRL8, 0x01);
|
||||
imu660rc_transition_factor[0] = 8196.72;
|
||||
}break;
|
||||
case IMU660RC_ACC_SAMPLE_SGN_8G:
|
||||
{
|
||||
imu660rc_write_register(IMU660RC_CTRL8, 0x02);
|
||||
imu660rc_transition_factor[0] = 4098.36;
|
||||
}break;
|
||||
case IMU660RC_ACC_SAMPLE_SGN_16G:
|
||||
{
|
||||
imu660rc_write_register(IMU660RC_CTRL8, 0x03);
|
||||
imu660rc_transition_factor[0] = 2049.18;
|
||||
}break;
|
||||
}
|
||||
if(1 == return_state)
|
||||
{
|
||||
break;
|
||||
}
|
||||
|
||||
switch(IMU660RC_GYRO_SAMPLE_DEFAULT)
|
||||
{
|
||||
default:
|
||||
{
|
||||
zf_log(0, "IMU660RC_GYRO_SAMPLE_DEFAULT set error.");
|
||||
return_state = 1;
|
||||
}break;
|
||||
case IMU660RC_GYRO_SAMPLE_SGN_125DPS:
|
||||
{
|
||||
imu660rc_write_register(IMU660RC_CTRL6, 0x00);
|
||||
imu660rc_transition_factor[1] = 228.5714;
|
||||
}break;
|
||||
case IMU660RC_GYRO_SAMPLE_SGN_250DPS:
|
||||
{
|
||||
imu660rc_write_register(IMU660RC_CTRL6, 0x01);
|
||||
imu660rc_transition_factor[1] = 114.2857;
|
||||
}break;
|
||||
case IMU660RC_GYRO_SAMPLE_SGN_500DPS:
|
||||
{
|
||||
imu660rc_write_register(IMU660RC_CTRL6, 0x02);
|
||||
imu660rc_transition_factor[1] = 57.1428;
|
||||
}break;
|
||||
case IMU660RC_GYRO_SAMPLE_SGN_1000DPS:
|
||||
{
|
||||
imu660rc_write_register(IMU660RC_CTRL6, 0x03);
|
||||
imu660rc_transition_factor[1] = 28.5714;
|
||||
}break;
|
||||
case IMU660RC_GYRO_SAMPLE_SGN_2000DPS:
|
||||
{
|
||||
imu660rc_write_register(IMU660RC_CTRL6, 0x04);
|
||||
imu660rc_transition_factor[1] = 14.2857;
|
||||
}break;
|
||||
case IMU660RC_GYRO_SAMPLE_SGN_4000DPS:
|
||||
{
|
||||
imu660rc_write_register(IMU660RC_CTRL6, 0x0C);
|
||||
imu660rc_transition_factor[1] = 7.14285;
|
||||
}break;
|
||||
}
|
||||
if(1 == return_state)
|
||||
{
|
||||
break;
|
||||
}
|
||||
|
||||
// <20><><EFBFBD>ô<EFBFBD><C3B4><EFBFBD><EFBFBD><EFBFBD>ģʽ<C4A3><CABD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ<EFBFBD>߾<EFBFBD><DFBE><EFBFBD>ģʽ<C4A3>Լ<EFBFBD><D4BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
imu660rc_write_register(IMU660RC_CTRL1, 0x15);
|
||||
imu660rc_write_register(IMU660RC_CTRL2, 0x18);
|
||||
|
||||
// <20><><EFBFBD><EFBFBD>LPF1<46>˲<EFBFBD><CBB2><EFBFBD>
|
||||
imu660rc_write_register(IMU660RC_CTRL7, 0x01);
|
||||
|
||||
// <20><><EFBFBD><EFBFBD>LPF2<46>˲<EFBFBD><CBB2><EFBFBD>
|
||||
imu660rc_write_register(IMU660RC_CTRL9, 0x08);
|
||||
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ԫ<EFBFBD><D4AA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ӧ<EFBFBD><D3A6><EFBFBD><EFBFBD>
|
||||
if(IMU660RC_QUARTERNION_DISABLE != quarternion_rate)
|
||||
{
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD>жϴ<D0B6><CFB4><EFBFBD><EFBFBD>ź<EFBFBD>
|
||||
imu660rc_write_register(IMU660RC_INT2_CTRL, 0x80);
|
||||
imu660rc_write_register(IMU660RC_CTRL4, 0x08);
|
||||
imu660rc_write_register(IMU660RC_EMB_FUNC_CFG, 0x30);
|
||||
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ü<EFBFBD><C3BC>ٶȡ<D9B6><C8A1><EFBFBD><EFBFBD>ٶ<EFBFBD><D9B6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
imu660rc_write_register(IMU660RC_CTRL1, 0x10 | (quarternion_rate + 3));
|
||||
imu660rc_write_register(IMU660RC_CTRL2, 0x10 | (quarternion_rate + 3));
|
||||
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ԫ<EFBFBD><D4AA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʲ<EFBFBD><CAB2><EFBFBD><EFBFBD><EFBFBD>
|
||||
imu660rc_set_mem_bank(IMU660RC_EMBED_MEM_BANK);
|
||||
imu660rc_write_register(IMU660RC_SFLP_ODR, 0x43 | (quarternion_rate << 3));
|
||||
imu660rc_write_register(IMU660RC_EMB_FUNC_EN_A, 0x02);
|
||||
imu660rc_write_register(IMU660RC_PAGE_RW, 0x00);
|
||||
imu660rc_set_mem_bank(IMU660RC_MAIN_MEM_BANK);
|
||||
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD>жϼ<D0B6><CFBC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
exti_init(IMU660RC_INT2_PIN, EXTI_TRIGGER_RISING);
|
||||
}
|
||||
}while(0);
|
||||
|
||||
return return_state;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -0,0 +1,211 @@
|
||||
/*********************************************************************************************************************
|
||||
* RT1064DVL6A Opensourec Library <20><><EFBFBD><EFBFBD>RT1064DVL6A <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> RT1064DVL6A <20><>Դ<EFBFBD><D4B4><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD>
|
||||
*
|
||||
* RT1064DVL6A <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_imu660rc
|
||||
* <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.10.2
|
||||
* <20><><EFBFBD><EFBFBD>ƽ̨ TC264
|
||||
* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> https://seekfree.taobao.com/
|
||||
*
|
||||
* <20>ļ<DEB8>¼
|
||||
* <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><>ע
|
||||
* 2025-12-12 SeekFree first version
|
||||
********************************************************************************************************************/
|
||||
/*********************************************************************************************************************
|
||||
* <20><><EFBFBD>߶<EFBFBD><DFB6>壺
|
||||
* ------------------------------------
|
||||
* ģ<><C4A3><EFBFBD>ܽ<EFBFBD> <20><>Ƭ<EFBFBD><C6AC><EFBFBD>ܽ<EFBFBD>
|
||||
* // Ӳ<><D3B2> SPI <20><><EFBFBD><EFBFBD>
|
||||
* SCL/SPC <20>鿴 zf_device_imu660rc.h <20><> IMU660RC_SPC_PIN <20>궨<EFBFBD><EAB6A8>
|
||||
* SDA/DSI <20>鿴 zf_device_imu660rc.h <20><> IMU660RC_SDI_PIN <20>궨<EFBFBD><EAB6A8>
|
||||
* SA0/SDO <20>鿴 zf_device_imu660rc.h <20><> IMU660RC_SDO_PIN <20>궨<EFBFBD><EAB6A8>
|
||||
* CS <20>鿴 zf_device_imu660rc.h <20><> IMU660RC_CS_PIN <20>궨<EFBFBD><EAB6A8>
|
||||
* INT2 <20>鿴 zf_device_imu660rc.h <20><> IMU660RC_INT2_PIN <20>궨<EFBFBD><EAB6A8>
|
||||
* VCC 3.3V<EFBFBD><EFBFBD>Դ
|
||||
* GND <20><>Դ<EFBFBD><D4B4>
|
||||
* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
*
|
||||
* // <20><><EFBFBD><EFBFBD> IIC <20><><EFBFBD><EFBFBD>
|
||||
* SCL/SPC <20>鿴 zf_device_imu660rc.h <20><> IMU660RC_SCL_PIN <20>궨<EFBFBD><EAB6A8>
|
||||
* SDA/DSI <20>鿴 zf_device_imu660rc.h <20><> IMU660RC_SDA_PIN <20>궨<EFBFBD><EAB6A8>
|
||||
* VCC 3.3V<EFBFBD><EFBFBD>Դ
|
||||
* GND <20><>Դ<EFBFBD><D4B4>
|
||||
* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
* ------------------------------------
|
||||
********************************************************************************************************************/
|
||||
|
||||
|
||||
#ifndef _zf_device_imu660rc_h_
|
||||
#define _zf_device_imu660rc_h_
|
||||
|
||||
#include "zf_common_typedef.h"
|
||||
|
||||
|
||||
// IMU660RC_USE_SOFT_IIC<49><43><EFBFBD><EFBFBD>Ϊ0<CEAA><30>ʾʹ<CABE><CAB9>Ӳ<EFBFBD><D3B2>SPI<50><49><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>Ϊ1<CEAA><31>ʾʹ<CABE><CAB9><EFBFBD><EFBFBD><EFBFBD><EFBFBD>IIC<49><43><EFBFBD><EFBFBD>
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>IMU660RC_USE_SOFT_IIC<49><43><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ҫ<EFBFBD>ȱ<EFBFBD><C8B1>벢<EFBFBD><EBB2A2><EFBFBD>س<EFBFBD><D8B3><EFBFBD>Ƭ<EFBFBD><C6AC><EFBFBD><EFBFBD>ģ<EFBFBD><C4A3><EFBFBD><EFBFBD>Ҫ<EFBFBD>ϵ<EFBFBD><CFB5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͨѶ
|
||||
#define IMU660RC_USE_SOFT_IIC ( 0 ) // Ĭ<><C4AC>ʹ<EFBFBD><CAB9>Ӳ<EFBFBD><D3B2> SPI <20><>ʽ<EFBFBD><CABD><EFBFBD><EFBFBD>
|
||||
|
||||
#if IMU660RC_USE_SOFT_IIC // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>ɫ<EFBFBD><C9AB><EFBFBD><EFBFBD><EFBFBD>IJ<EFBFBD><C4B2><EFBFBD><EFBFBD><EFBFBD>ȷ<EFBFBD><C8B7> <20><>ɫ<EFBFBD>ҵľ<D2B5><C4BE><EFBFBD>û<EFBFBD><C3BB><EFBFBD>õ<EFBFBD>
|
||||
//====================================================<3D><><EFBFBD><EFBFBD> IIC <20><><EFBFBD><EFBFBD>====================================================
|
||||
#define IMU660RC_SOFT_IIC_DELAY ( 0 ) // <20><><EFBFBD><EFBFBD> IIC <20><>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD> <20><>ֵԽС IIC ͨ<><CDA8><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Խ<EFBFBD><D4BD>
|
||||
#define IMU660RC_SCL_PIN ( P20_11 ) // <20><><EFBFBD><EFBFBD> IIC SCL <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> IMU660RC <20><> SCL <20><><EFBFBD><EFBFBD>
|
||||
#define IMU660RC_SDA_PIN ( P20_14 ) // <20><><EFBFBD><EFBFBD> IIC SDA <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> IMU660RC <20><> SDA <20><><EFBFBD><EFBFBD>
|
||||
//====================================================<3D><><EFBFBD><EFBFBD> IIC <20><><EFBFBD><EFBFBD>====================================================
|
||||
#else
|
||||
|
||||
//====================================================Ӳ<><D3B2> SPI <20><><EFBFBD><EFBFBD>====================================================
|
||||
#define IMU660RC_SPI_SPEED (10 * 1000 * 1000) // Ӳ<><D3B2> SPI <20><><EFBFBD><EFBFBD>
|
||||
#define IMU660RC_SPI (SPI_0) // Ӳ<><D3B2> SPI <20><>
|
||||
#define IMU660RC_SPC_PIN (SPI0_SCLK_P20_11 ) // Ӳ<><D3B2> SPI SCK <20><><EFBFBD><EFBFBD>
|
||||
#define IMU660RC_SDI_PIN (SPI0_MOSI_P20_14) // Ӳ<><D3B2> SPI MOSI <20><><EFBFBD><EFBFBD>
|
||||
#define IMU660RC_SDO_PIN (SPI0_MISO_P20_12) // Ӳ<><D3B2> SPI MISO <20><><EFBFBD><EFBFBD>
|
||||
//====================================================Ӳ<><D3B2> SPI <20><><EFBFBD><EFBFBD>====================================================
|
||||
#endif
|
||||
#define IMU660RC_CS_PIN ( P20_13 ) // CS Ƭѡ<C6AC><D1A1><EFBFBD><EFBFBD>
|
||||
#define IMU660RC_CS(x) ( (x) ? (gpio_high(IMU660RC_CS_PIN)) : (gpio_low(IMU660RC_CS_PIN)) )
|
||||
#define IMU660RC_INT2_PIN ( ERU_CH0_REQ0_P15_4 ) // <20>ж<EFBFBD><D0B6>ź<EFBFBD><C5BA><EFBFBD><EFBFBD>ţ<EFBFBD><C5A3>ڶ<EFBFBD>ȡ<EFBFBD><C8A1>Ԫ<EFBFBD><D4AA>ʱ<EFBFBD><CAB1>Ҫʹ<D2AA><CAB9>
|
||||
|
||||
|
||||
#define IMU660RC_QUARTERNION_GET_GYRO ( 1 ) // 1<><31><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ԫ<EFBFBD><D4AA><EFBFBD><EFBFBD>ģʽʱ<CABD><CAB1><EFBFBD><EFBFBD>ȡ<EFBFBD><C8A1>Ԫ<EFBFBD><D4AA>ʱ<EFBFBD>Զ<EFBFBD><D4B6><EFBFBD>ȡ<EFBFBD><C8A1><EFBFBD>ٶ<EFBFBD> 0<><30><EFBFBD><EFBFBD><EFBFBD>Զ<EFBFBD><D4B6><EFBFBD>ȡ
|
||||
#define IMU660RC_QUARTERNION_GET_ACC ( 1 ) // 1<><31><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ԫ<EFBFBD><D4AA><EFBFBD><EFBFBD>ģʽʱ<CABD><CAB1><EFBFBD><EFBFBD>ȡ<EFBFBD><C8A1>Ԫ<EFBFBD><D4AA>ʱ<EFBFBD>Զ<EFBFBD><D4B6><EFBFBD>ȡ<EFBFBD><C8A1><EFBFBD>ٶ<EFBFBD> 0<><30><EFBFBD><EFBFBD><EFBFBD>Զ<EFBFBD><D4B6><EFBFBD>ȡ
|
||||
#define IMU660RC_ACC_SAMPLE_DEFAULT ( IMU660RC_ACC_SAMPLE_SGN_8G ) // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ĭ<EFBFBD>ϵ<EFBFBD> <20><><EFBFBD>ٶȼ<D9B6> <20><>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
#define IMU660RC_GYRO_SAMPLE_DEFAULT ( IMU660RC_GYRO_SAMPLE_SGN_2000DPS ) // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ĭ<EFBFBD>ϵ<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
|
||||
typedef enum
|
||||
{
|
||||
IMU660RC_MAIN_MEM_BANK = 0x00,
|
||||
IMU660RC_HUB_MEM_BANK = 0x40,
|
||||
IMU660RC_EMBED_MEM_BANK = 0x80,
|
||||
}imu660rc_mem_bank_enum;
|
||||
|
||||
typedef enum
|
||||
{
|
||||
IMU660RC_ACC_SAMPLE_SGN_2G , // <20><><EFBFBD>ٶȼ<D9B6><C8BC><EFBFBD><EFBFBD><EFBFBD> <20><>2G (ACC = Accelerometer <20><><EFBFBD>ٶȼ<D9B6>) (SGN = signum <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Χ) (G = g <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ٶ<EFBFBD> g<><67>9.80 m/s^2)
|
||||
IMU660RC_ACC_SAMPLE_SGN_4G , // <20><><EFBFBD>ٶȼ<D9B6><C8BC><EFBFBD><EFBFBD><EFBFBD> <20><>4G
|
||||
IMU660RC_ACC_SAMPLE_SGN_8G , // <20><><EFBFBD>ٶȼ<D9B6><C8BC><EFBFBD><EFBFBD><EFBFBD> <20><>8G
|
||||
IMU660RC_ACC_SAMPLE_SGN_16G, // <20><><EFBFBD>ٶȼ<D9B6><C8BC><EFBFBD><EFBFBD><EFBFBD> <20><>16G
|
||||
}imu660rc_acc_sample_config;
|
||||
|
||||
typedef enum
|
||||
{
|
||||
IMU660RC_GYRO_SAMPLE_SGN_125DPS , // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>125DPS (GYRO = Gyroscope <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>) (SGN = signum <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Χ) (DPS = Degree Per Second <20><><EFBFBD>ٶȵ<D9B6>λ <20><>/S)
|
||||
IMU660RC_GYRO_SAMPLE_SGN_250DPS , // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>250DPS
|
||||
IMU660RC_GYRO_SAMPLE_SGN_500DPS , // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>500DPS
|
||||
IMU660RC_GYRO_SAMPLE_SGN_1000DPS, // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>1000DPS
|
||||
IMU660RC_GYRO_SAMPLE_SGN_2000DPS, // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>2000DPS
|
||||
IMU660RC_GYRO_SAMPLE_SGN_4000DPS, // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>4000DPS
|
||||
}imu660rc_gyro_sample_config;
|
||||
|
||||
typedef enum
|
||||
{
|
||||
IMU660RC_QUARTERNION_15HZ, // 15 Hz
|
||||
IMU660RC_QUARTERNION_30HZ, // 30 Hz
|
||||
IMU660RC_QUARTERNION_60HZ, // 60 Hz
|
||||
IMU660RC_QUARTERNION_120HZ, // 120Hz
|
||||
IMU660RC_QUARTERNION_240HZ, // 240Hz
|
||||
IMU660RC_QUARTERNION_480HZ, // 480Hz
|
||||
IMU660RC_QUARTERNION_DISABLE, // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ԫ<EFBFBD><D4AA><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
}imu660rc_quarternion_rate_config;
|
||||
|
||||
|
||||
//================================================<3D><><EFBFBD><EFBFBD> IMU660RC <20>ڲ<EFBFBD><DAB2><EFBFBD>ַ================================================
|
||||
#define IMU660RC_DEV_ADDR ( 0x6B ) // SA0<41>ӵأ<D3B5>0x6A SA0<41><30><EFBFBD><EFBFBD><EFBFBD><EFBFBD>0x6B ģ<><C4A3>Ĭ<EFBFBD><C4AC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
#define IMU660RC_SPI_W ( 0x00 )
|
||||
#define IMU660RC_SPI_R ( 0x80 )
|
||||
#define IMU660RC_TIMEOUT_COUNT ( 0x00FF ) // IMU660RC <20><>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD>
|
||||
|
||||
|
||||
//================================================<3D><><EFBFBD><EFBFBD> IMU660RC <20>Ĵ<EFBFBD><C4B4><EFBFBD><EFBFBD><EFBFBD>ַ================================================
|
||||
#define IMU660RC_FUNC_CFG_ACCESS ( 0x01 )
|
||||
#define IMU660RC_INT2_CTRL ( 0x0E )
|
||||
#define IMU660RC_CHIP_ID ( 0x0F )
|
||||
#define IMU660RC_CTRL1 ( 0x10 )
|
||||
#define IMU660RC_CTRL2 ( 0x11 )
|
||||
#define IMU660RC_CTRL3 ( 0x12 )
|
||||
#define IMU660RC_CTRL4 ( 0x13 )
|
||||
#define IMU660RC_CTRL5 ( 0x14 )
|
||||
#define IMU660RC_CTRL6 ( 0x15 )
|
||||
#define IMU660RC_CTRL7 ( 0x16 )
|
||||
#define IMU660RC_CTRL8 ( 0x17 )
|
||||
#define IMU660RC_CTRL9 ( 0x18 )
|
||||
#define IMU660RC_CTRL10 ( 0x19 )
|
||||
#define IMU660RC_CTRL_STATUS ( 0x1A )
|
||||
#define IMU660RC_STATUS_REG ( 0x1E )
|
||||
#define IMU660RC_OUT_TEMP_L ( 0x20 )
|
||||
#define IMU660RC_OUT_TEMP_H ( 0x21 )
|
||||
#define IMU660RC_OUTX_L_G ( 0x22 )
|
||||
#define IMU660RC_OUTX_H_G ( 0x23 )
|
||||
#define IMU660RC_OUTY_L_G ( 0x24 )
|
||||
#define IMU660RC_OUTY_H_G ( 0x25 )
|
||||
#define IMU660RC_OUTZ_L_G ( 0x26 )
|
||||
#define IMU660RC_OUTZ_H_G ( 0x27 )
|
||||
#define IMU660RC_OUTX_L_A ( 0x28 )
|
||||
#define IMU660RC_OUTX_H_A ( 0x29 )
|
||||
#define IMU660RC_OUTY_L_A ( 0x2A )
|
||||
#define IMU660RC_OUTY_H_A ( 0x2B )
|
||||
#define IMU660RC_OUTZ_L_A ( 0x2C )
|
||||
#define IMU660RC_OUTZ_H_A ( 0x2D )
|
||||
|
||||
#define IMU660RC_PAGE_SEL ( 0x02 )
|
||||
#define IMU660RC_EMB_FUNC_EN_A ( 0x04 )
|
||||
#define IMU660RC_PAGE_RW ( 0x17 )
|
||||
#define IMU660RC_SFLP_ODR ( 0x5E )
|
||||
#define IMU660RC_EMB_FUNC_CFG ( 0x63 )
|
||||
|
||||
|
||||
|
||||
extern float imu660rc_transition_factor[2];
|
||||
extern int16 imu660rc_gyro_x, imu660rc_gyro_y, imu660rc_gyro_z; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
extern int16 imu660rc_acc_x , imu660rc_acc_y , imu660rc_acc_z; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ٶȼ<D9B6><C8BC><EFBFBD><EFBFBD><EFBFBD>
|
||||
extern float imu660rc_roll , imu660rc_pitch , imu660rc_yaw; // ŷ<><C5B7><EFBFBD><EFBFBD>
|
||||
extern float imu660rc_quarternion[4]; // <20><>Ԫ<EFBFBD><D4AA>
|
||||
|
||||
|
||||
void imu660rc_get_acc (void);
|
||||
void imu660rc_get_gyro (void);
|
||||
void imu660rc_get_quarternion (void);
|
||||
|
||||
//-------------------------------------------------------------------------------------------------------------------
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> IMU660RC <20><><EFBFBD>ٶȼ<D9B6><C8BC><EFBFBD><EFBFBD><EFBFBD>ת<EFBFBD><D7AA>Ϊʵ<CEAA><CAB5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> acc_value <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD><C4BC>ٶȼ<D9B6><C8BC><EFBFBD><EFBFBD><EFBFBD>
|
||||
// <20><><EFBFBD>ز<EFBFBD><D8B2><EFBFBD> void
|
||||
// ʹ<><CAB9>ʾ<EFBFBD><CABE> float data = imu660rc_acc_transition(imu660rc_acc_x); // <20><>λΪ g(m/s^2)
|
||||
// <20><>ע<EFBFBD><D7A2>Ϣ
|
||||
//-------------------------------------------------------------------------------------------------------------------
|
||||
#define imu660rc_acc_transition(acc_value) ((float)(acc_value) / imu660rc_transition_factor[0])
|
||||
|
||||
//-------------------------------------------------------------------------------------------------------------------
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> IMU660RC <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ת<EFBFBD><D7AA>Ϊʵ<CEAA><CAB5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> gyro_value <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
// <20><><EFBFBD>ز<EFBFBD><D8B2><EFBFBD> void
|
||||
// ʹ<><CAB9>ʾ<EFBFBD><CABE> float data = imu660rc_gyro_transition(imu660rc_gyro_x); // <20><>λΪ <20><>/s
|
||||
// <20><>ע<EFBFBD><D7A2>Ϣ
|
||||
//-------------------------------------------------------------------------------------------------------------------
|
||||
#define imu660rc_gyro_transition(gyro_value) ((float)(gyro_value) / imu660rc_transition_factor[1])
|
||||
void imu660rc_callback (void);
|
||||
uint8 imu660rc_init (imu660rc_quarternion_rate_config quarternion_rate);
|
||||
|
||||
|
||||
|
||||
#endif
|
||||
@@ -97,7 +97,7 @@
|
||||
//================================================<3D><><EFBFBD><EFBFBD> IMU660RX ȫ<>ֱ<EFBFBD><D6B1><EFBFBD>================================================
|
||||
extern int16 imu660rx_gyro_x, imu660rx_gyro_y, imu660rx_gyro_z; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> gyro (<28><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>)
|
||||
extern int16 imu660rx_acc_x, imu660rx_acc_y, imu660rx_acc_z; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ٶȼ<D9B6><C8BC><EFBFBD><EFBFBD><EFBFBD> acc (accelerometer <20><><EFBFBD>ٶȼ<D9B6>)
|
||||
extern float imu660ra_transition_factor[2];
|
||||
extern float imu660rx_transition_factor[2];
|
||||
//================================================<3D><><EFBFBD><EFBFBD> IMU660RX ȫ<>ֱ<EFBFBD><D6B1><EFBFBD>================================================
|
||||
|
||||
|
||||
|
||||
@@ -167,7 +167,7 @@ void ips114_init (void);
|
||||
// ʹ<><CAB9>ʾ<EFBFBD><CABE> ips114_displayimage8660(scc8660_image[0], SCC8660_W, SCC8660_H);
|
||||
// <20><>ע<EFBFBD><D7A2>Ϣ <20><>չ<EFBFBD><D5B9>һ<EFBFBD><D2BB><EFBFBD><EFBFBD>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ĭ<EFBFBD><C4AC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ţ<EFBFBD><C5A3><EFBFBD><EFBFBD><EFBFBD>Ļ<EFBFBD><C4BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʼ<EFBFBD>㿪ʼ<E3BFAA><CABC>ʾ
|
||||
//-------------------------------------------------------------------------------------------------------------------
|
||||
#define ips114_displayimage8660(p, width, height) (ips114_show_rgb565_image(0, 0, (p), SCC8660_W, SCC8660_H, (width), (height), 1))
|
||||
#define ips114_displayimage8660(p, width, height) (ips114_show_rgb565_image(0, 0, (p), SCC8660_W, SCC8660_H, (width), (height), 0))
|
||||
//=================================================<3D><><EFBFBD><EFBFBD> IPS114 <20><>չ<EFBFBD><D5B9><EFBFBD><EFBFBD>================================================
|
||||
|
||||
#endif
|
||||
|
||||
@@ -220,7 +220,7 @@ void ips200_init (ips200_type_enum type_select);
|
||||
// ʹ<><CAB9>ʾ<EFBFBD><CABE> ips200_displayimage8660(scc8660_image[0], SCC8660_W, SCC8660_H);
|
||||
// <20><>ע<EFBFBD><D7A2>Ϣ <20><>չ<EFBFBD><D5B9>һ<EFBFBD><D2BB><EFBFBD><EFBFBD>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ĭ<EFBFBD><C4AC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ţ<EFBFBD><C5A3><EFBFBD><EFBFBD><EFBFBD>Ļ<EFBFBD><C4BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʼ<EFBFBD>㿪ʼ<E3BFAA><CABC>ʾ
|
||||
//-------------------------------------------------------------------------------------------------------------------
|
||||
#define ips200_displayimage8660(p, width, height) (ips200_show_rgb565_image(0, 0, (p), SCC8660_W, SCC8660_H, (width), (height), 1))
|
||||
#define ips200_displayimage8660(p, width, height) (ips200_show_rgb565_image(0, 0, (p), SCC8660_W, SCC8660_H, (width), (height), 0))
|
||||
//==================================================<3D><><EFBFBD><EFBFBD> IPS200 <20><>չ<EFBFBD><D5B9><EFBFBD><EFBFBD>================================================
|
||||
|
||||
|
||||
|
||||
@@ -86,7 +86,7 @@
|
||||
// <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_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 (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_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_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><C3A3><EFBFBD>֧<EFBFBD><D6A7><EFBFBD><EFBFBD>ͫ<EFBFBD><CDAB>֡<EFBFBD>ʰ汾<CAB0><E6B1BE>===========================
|
||||
|
||||
|
||||
@@ -24,7 +24,7 @@
|
||||
* <20>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD><EFBFBD> zf_device_wifi_spi
|
||||
* <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><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ADS v1.10.2
|
||||
* <20><><EFBFBD><EFBFBD>ƽ̨ TC264D
|
||||
* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> https://seekfree.taobao.com/
|
||||
*
|
||||
@@ -63,6 +63,21 @@
|
||||
#define SOCKET_CONNECT_TIME_OUT 50000 // <20><>λ<EFBFBD><CEBB><EFBFBD><EFBFBD>
|
||||
#define OTHER_TIME_OUT 1000 // <20><>λ<EFBFBD><CEBB><EFBFBD><EFBFBD>
|
||||
|
||||
#if ((WIFI_SPI_RECVIVE_SIZE < 32) || (WIFI_SPI_RECVIVE_SIZE > 4088))
|
||||
#error "WIFI_SPI_RECVIVE_SIZE must be >= 32 or <= 4088"
|
||||
#endif
|
||||
|
||||
#if (WIFI_SPI_RECVIVE_SIZE >= WIFI_SPI_RECVIVE_FIFO_SIZE)
|
||||
#error "WIFI_SPI_RECVIVE_FIFO_SIZE must be > WIFI_SPI_RECVIVE_SIZE"
|
||||
#endif
|
||||
|
||||
|
||||
#if (WIFI_SPI_TRANSFER_SIZE != 4088)
|
||||
#error "WIFI_SPI_TRANSFER_SIZE must be == 4088"
|
||||
#endif
|
||||
|
||||
|
||||
|
||||
char wifi_spi_version[12]; // <20><><EFBFBD><EFBFBD>ģ<EFBFBD><C4A3><EFBFBD>̼<EFBFBD><CCBC>汾<EFBFBD><E6B1BE>Ϣ
|
||||
char wifi_spi_mac_addr[20]; // <20><><EFBFBD><EFBFBD>ģ<EFBFBD><C4A3>MAC<41><43>ַ<EFBFBD><D6B7>Ϣ
|
||||
char wifi_spi_ip_addr_port[25]; // <20><><EFBFBD><EFBFBD>ģ<EFBFBD><C4A3>IP<49><50>ַ<EFBFBD><D6B7><EFBFBD>˿<EFBFBD><CBBF><EFBFBD>Ϣ
|
||||
@@ -271,8 +286,6 @@ static uint8 wifi_spi_get_version (void)
|
||||
{
|
||||
memcpy(wifi_spi_version, temp_packets.buffer, temp_packets.head.length);
|
||||
}
|
||||
return_state = (return_state == 0) ? (WIFI_SPI_REPLY_VERSION != temp_packets.head.command) : 1;
|
||||
|
||||
return return_state;
|
||||
}
|
||||
|
||||
@@ -293,8 +306,6 @@ static uint8 wifi_spi_get_mac_addr (void)
|
||||
{
|
||||
memcpy(wifi_spi_mac_addr, temp_packets.buffer, temp_packets.head.length);
|
||||
}
|
||||
return_state = (return_state == 0) ? (WIFI_SPI_REPLY_MAC_ADDR != temp_packets.head.command) : 1;
|
||||
|
||||
return return_state;
|
||||
}
|
||||
|
||||
@@ -316,7 +327,77 @@ static uint8 wifi_spi_get_ip_addr_port (void)
|
||||
{
|
||||
memcpy(wifi_spi_ip_addr_port, temp_packets.buffer, temp_packets.head.length);
|
||||
}
|
||||
return_state = (return_state == 0) ? (WIFI_SPI_REPLY_IP_ADDR != temp_packets.head.command) : 1;
|
||||
return return_state;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------------------------------------------------------
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> WIFI SPI <20><>ȡϵͳʱ<CDB3><CAB1>
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> time_format ʱ<><CAB1><EFBFBD><EFBFBD>ʽ
|
||||
// <20><><EFBFBD>ز<EFBFBD><D8B2><EFBFBD> *buffer <20><><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD>ַ<EFBFBD><D6B7><EFBFBD><EFBFBD><EFBFBD>ַ <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>С<EFBFBD><D0A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ҫ30<33><30><EFBFBD>ֽ<EFBFBD>
|
||||
// <20><><EFBFBD>ز<EFBFBD><D8B2><EFBFBD> buffer_size <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>С
|
||||
// <20><><EFBFBD>ز<EFBFBD><D8B2><EFBFBD> uint8 ״̬ 0-<2D>ɹ<EFBFBD> 1-<2D><><EFBFBD><EFBFBD>
|
||||
// ʹ<><CAB9>ʾ<EFBFBD><CABE>
|
||||
// <20><>ע<EFBFBD><D7A2>Ϣ <20><>Ҫ<EFBFBD><D2AA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȵ<EFBFBD>֮<EFBFBD><D6AE><EFBFBD><EFBFBD><EFBFBD>ܻ<EFBFBD>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD>ȷ<EFBFBD><C8B7>ʱ<EFBFBD>䣬<EFBFBD><E4A3AC><EFBFBD><EFBFBD><EFBFBD>ڵ<EFBFBD><DAB5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>֮ǰ<D6AE><C7B0>Ҫȷ<D2AA><C8B7>WIFIģ<49><C4A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ҫ<EFBFBD><D2AA><EFBFBD>յ<EFBFBD><D5B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ѿ<EFBFBD>ȫ<EFBFBD><C8AB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
// <20><>ע<EFBFBD><D7A2>Ϣ <20><>WIFI SPI <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>߰汾֧<E6B1BE><D6A7>
|
||||
// <20><>ע<EFBFBD><D7A2>Ϣ <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϢΪ<CFA2>ַ<EFBFBD><D6B7><EFBFBD><EFBFBD><EFBFBD>Ϣ<EFBFBD><CFA2><EFBFBD><EFBFBD>ֱ<EFBFBD><D6B1>printf<74><66><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֲ鿴
|
||||
//-------------------------------------------------------------------------------------------------------------------
|
||||
uint8 wifi_spi_get_time (wifi_spi_time_enum time_format, char *buffer, uint8 buffer_size)
|
||||
{
|
||||
uint8 return_state = 1;
|
||||
wifi_spi_packets_struct temp_packets;
|
||||
uint8 send_cmd, receive_cmd;
|
||||
|
||||
// <20><><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>30<33><30><EFBFBD>ֽ<EFBFBD>
|
||||
// <20><><EFBFBD><EFBFBD>ģ<EFBFBD><C4A3><EFBFBD>̼<EFBFBD><CCBC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>V2<56>汾
|
||||
if((30 <= buffer_size) && (!strncmp(wifi_spi_version, "V2", 2)))
|
||||
{
|
||||
send_cmd = WIFI_SPI_GET_TIME1 + time_format - WIFI_SPI_UTC_0;
|
||||
receive_cmd = WIFI_SPI_REPLY_TIME1 + time_format - WIFI_SPI_UTC_0;
|
||||
|
||||
return_state = wifi_spi_get_parameter(send_cmd, &temp_packets, OTHER_TIME_OUT);
|
||||
if((0 == return_state) && (receive_cmd == temp_packets.head.command))
|
||||
{
|
||||
return_state = (uint8)strncmp((const char *)temp_packets.buffer, "OK", 2);
|
||||
if(0 == return_state)
|
||||
{
|
||||
memcpy(buffer, &temp_packets.buffer[3], temp_packets.head.length - 3);
|
||||
buffer[temp_packets.head.length - 3] = 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
return return_state;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------------------------------------------------------
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> WIFI SPI ɨ<><C9A8><EFBFBD>ȵ<EFBFBD>
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> *buffer <20><><EFBFBD><EFBFBD>ɨ<EFBFBD>赽<EFBFBD><E8B5BD><EFBFBD>ȵ<EFBFBD><C8B5><EFBFBD>Ϣ <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ź<EFBFBD>ǿ<EFBFBD>ȣ<EFBFBD>ÿ<EFBFBD><C3BF><EFBFBD>ź<EFBFBD>ǿ<EFBFBD>Ⱥ<EFBFBD><C8BA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD>з<EFBFBD>
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> buffer_size <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ij<EFBFBD><C4B3><EFBFBD>
|
||||
// <20><><EFBFBD>ز<EFBFBD><D8B2><EFBFBD> uint8 ״̬ 0-<2D>ɹ<EFBFBD> 1-<2D><><EFBFBD><EFBFBD>
|
||||
// ʹ<><CAB9>ʾ<EFBFBD><CABE>
|
||||
// <20><>ע<EFBFBD><D7A2>Ϣ <20><>WIFI SPI <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>߰汾֧<E6B1BE><D6A7>
|
||||
// <20><>ע<EFBFBD><D7A2>Ϣ <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϢΪ<CFA2>ַ<EFBFBD><D6B7><EFBFBD><EFBFBD><EFBFBD>Ϣ<EFBFBD><CFA2><EFBFBD><EFBFBD>ֱ<EFBFBD><D6B1>printf<74><66><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֲ鿴
|
||||
// <20><>ע<EFBFBD><D7A2>Ϣ ÿһ<C3BF>а<EFBFBD><D0B0><EFBFBD>һ<EFBFBD><D2BB>wifi<66><69><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
//-------------------------------------------------------------------------------------------------------------------
|
||||
uint8 wifi_spi_wifi_scan (char *buffer, uint16 buffer_size)
|
||||
{
|
||||
uint8 return_state;
|
||||
|
||||
// ģ<><C4A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>V2<56>汾<EFBFBD>Ĺ̼<C4B9><CCBC><EFBFBD>֧<EFBFBD>ִ˹<D6B4><CBB9><EFBFBD>
|
||||
if(!strncmp(wifi_spi_version, "V2", 2))
|
||||
{
|
||||
return_state = wifi_spi_set_parameter(WIFI_SPI_SET_WIFI_SCAN, NULL, 0, WIFI_CONNECT_TIME_OUT);
|
||||
|
||||
if(0 == return_state)
|
||||
{
|
||||
#if (0 == WIFI_SPI_READ_TRANSFER)
|
||||
wifi_spi_send_buffer(NULL, 0);
|
||||
#endif
|
||||
while(0 == wifi_spi_read_buffer((uint8 *)buffer, buffer_size))
|
||||
{
|
||||
system_delay_ms(10);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return return_state;
|
||||
}
|
||||
@@ -505,7 +586,7 @@ uint32 wifi_spi_send_buffer (const uint8 *buffer, uint32 length)
|
||||
|
||||
while(length)
|
||||
{
|
||||
send_length = length > WIFI_SPI_TRANSFER_SIZE ? (uint16)WIFI_SPI_TRANSFER_SIZE : (uint16)length;
|
||||
send_length = (uint16) (length > WIFI_SPI_TRANSFER_SIZE ? WIFI_SPI_TRANSFER_SIZE : length);
|
||||
|
||||
if(wifi_spi_wait_idle(OTHER_TIME_OUT))
|
||||
{
|
||||
@@ -555,6 +636,18 @@ uint32 wifi_spi_send_buffer (const uint8 *buffer, uint32 length)
|
||||
return length;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------------------------------------------------------
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> WIFI SPI <20>ַ<EFBFBD><D6B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͺ<EFBFBD><CDBA><EFBFBD><EFBFBD><EFBFBD>ͬ<EFBFBD><CDAC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> *string <20><>Ҫ<EFBFBD><D2AA><EFBFBD>͵<EFBFBD><CDB5>ַ<EFBFBD><D6B7><EFBFBD>
|
||||
// <20><><EFBFBD>ز<EFBFBD><D8B2><EFBFBD> void
|
||||
// ʹ<><CAB9>ʾ<EFBFBD><CABE> wifi_spi_send_string("123");
|
||||
// <20><>ע<EFBFBD><D7A2>Ϣ
|
||||
//-------------------------------------------------------------------------------------------------------------------
|
||||
void wifi_spi_send_string(const char *string)
|
||||
{
|
||||
wifi_spi_send_buffer((uint8*)string, strlen(string));
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------------------------------------------------------
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> WIFI SPI <20><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> *buff <20><><EFBFBD>ջ<EFBFBD><D5BB><EFBFBD><EFBFBD><EFBFBD>
|
||||
@@ -566,32 +659,57 @@ uint32 wifi_spi_send_buffer (const uint8 *buffer, uint32 length)
|
||||
uint32 wifi_spi_read_buffer (uint8 *buffer, uint32 length)
|
||||
{
|
||||
zf_assert(NULL != buffer);
|
||||
uint32 data_len = length;
|
||||
uint32 fifo_read_length;
|
||||
uint32 write_length = 0;
|
||||
wifi_spi_packets_struct temp_packets;
|
||||
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD>ж<EFBFBD>FIFO<46><4F><EFBFBD>Ƿ<EFBFBD><C7B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݣ<EFBFBD><DDA3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȴ<EFBFBD>FIFO<46><4F>ȡ
|
||||
if(fifo_used(&wifi_spi_fifo))
|
||||
{
|
||||
fifo_read_length = fifo_used(&wifi_spi_fifo);
|
||||
fifo_read_length = length < fifo_read_length ? length : fifo_read_length;
|
||||
fifo_read_buffer(&wifi_spi_fifo, buffer, &fifo_read_length, FIFO_READ_AND_CLEAN);
|
||||
|
||||
buffer += fifo_read_length;
|
||||
length -= fifo_read_length;
|
||||
write_length += fifo_read_length;
|
||||
}
|
||||
|
||||
#if(1 == WIFI_SPI_READ_TRANSFER)
|
||||
|
||||
wifi_spi_packets_struct temp_packets;
|
||||
// <20><><EFBFBD><EFBFBD>WIFI SPI״̬<D7B4><CCAC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>жϻ<D0B6><CFBB><EFBFBD><EFBFBD>߳<EFBFBD><DFB3><EFBFBD><EFBFBD>Ѿ<EFBFBD><D1BE><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͨѶ<CDA8><D1B6><EFBFBD>β<F2B1BEB4><CEB2>ܷ<EFBFBD><DCB7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
if(WIFI_SPI_IDLE == wifi_spi_mutex)
|
||||
{
|
||||
// <20><>ͨѶ״̬<D7B4><CCAC><EFBFBD><EFBFBD>Ϊæ
|
||||
wifi_spi_mutex = WIFI_SPI_BUSY;
|
||||
wifi_spi_mutex = WIFI_SPI_BUSY; // <20><>ͨѶ״̬<D7B4><CCAC><EFBFBD><EFBFBD>Ϊæ
|
||||
|
||||
// <20><><EFBFBD><EFBFBD>ͨѶ<CDA8>鿴ģ<E9BFB4><C4A3><EFBFBD><EFBFBD><EFBFBD>Ƿ<EFBFBD><C7B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>δ<EFBFBD><CEB4>ȡ
|
||||
do
|
||||
{
|
||||
if(wifi_spi_wait_idle(OTHER_TIME_OUT))
|
||||
if( (WIFI_SPI_RECVIVE_SIZE > wifi_spi_fifo.size) || // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ռ䲻<D5BC><E4B2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ٶ<EFBFBD>ȡ
|
||||
(wifi_spi_wait_idle(OTHER_TIME_OUT)) // <20><>ʱ<EFBFBD>˳<EFBFBD>
|
||||
)
|
||||
{
|
||||
break;
|
||||
}
|
||||
|
||||
temp_packets.head.command = WIFI_SPI_DATA;
|
||||
temp_packets.head.length = 0;
|
||||
wifi_spi_transfer_command(&temp_packets, WIFI_SPI_RECVIVE_SIZE);
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD>յ<EFBFBD><D5B5>İ<EFBFBD><C4B0><EFBFBD><EFBFBD>Ƿ<EFBFBD><C7B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
if((WIFI_SPI_REPLY_DATA_START == temp_packets.head.command) || (WIFI_SPI_REPLY_DATA_END == temp_packets.head.command))
|
||||
if( ((WIFI_SPI_REPLY_DATA_START == temp_packets.head.command) || (WIFI_SPI_REPLY_DATA_END == temp_packets.head.command)) &&
|
||||
(temp_packets.head.length)
|
||||
)
|
||||
{
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>յ<EFBFBD><D5B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
if(temp_packets.head.length)
|
||||
if(length)
|
||||
{
|
||||
fifo_read_length = length >= temp_packets.head.length ? temp_packets.head.length : length;
|
||||
memcpy(buffer, temp_packets.buffer, fifo_read_length);
|
||||
buffer += fifo_read_length;
|
||||
length -= fifo_read_length;
|
||||
write_length += fifo_read_length;
|
||||
if(fifo_read_length < temp_packets.head.length) // <20>ⲿ<EFBFBD><E2B2BF><EFBFBD>岻<EFBFBD><E5B2BB><EFBFBD><EFBFBD><EFBFBD>ಿ<EFBFBD><E0B2BF>д<EFBFBD><D0B4>FIFO
|
||||
{
|
||||
fifo_write_buffer(&wifi_spi_fifo, temp_packets.buffer + fifo_read_length, temp_packets.head.length - fifo_read_length);
|
||||
}
|
||||
}
|
||||
else // ȫ<><C8AB>д<EFBFBD><D0B4>FIFO
|
||||
{
|
||||
fifo_write_buffer(&wifi_spi_fifo, temp_packets.buffer, temp_packets.head.length);
|
||||
}
|
||||
@@ -599,10 +717,9 @@ uint32 wifi_spi_read_buffer (uint8 *buffer, uint32 length)
|
||||
}while(WIFI_SPI_REPLY_DATA_START == temp_packets.head.command);
|
||||
wifi_spi_mutex = WIFI_SPI_IDLE;
|
||||
}
|
||||
#endif
|
||||
#endif
|
||||
|
||||
fifo_read_buffer(&wifi_spi_fifo, buffer, &data_len, FIFO_READ_AND_CLEAN);
|
||||
return data_len;
|
||||
return write_length;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------------------------------------------------------
|
||||
@@ -644,7 +761,11 @@ uint8 wifi_spi_init (char *wifi_ssid, char *pass_word)
|
||||
// MAC<41><43>ַ<EFBFBD><D6B7>Ϣ<EFBFBD><CFA2><EFBFBD>ַ<EFBFBD><D6B7><EFBFBD><EFBFBD><EFBFBD>ʽ<EFBFBD><CABD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>wifi_spi_mac_addr<64><72><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
wifi_spi_get_mac_addr();
|
||||
|
||||
|
||||
if(NULL == wifi_ssid)
|
||||
{
|
||||
// <20><>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ҫ<EFBFBD><D2AA><EFBFBD><EFBFBD>WIFI
|
||||
break;
|
||||
}
|
||||
return_state = wifi_spi_wifi_connect(wifi_ssid, pass_word);
|
||||
if(return_state)
|
||||
{
|
||||
|
||||
@@ -73,8 +73,8 @@
|
||||
#if (WIFI_SPI_AUTO_CONNECT > 2)
|
||||
#error "WIFI_SPI_AUTO_CONNECT <20><>ֵֻ<D6B5><D6BB>Ϊ [0,1,2]"
|
||||
#else
|
||||
#define WIFI_SPI_TARGET_IP "192.168.137.1" // <20><><EFBFBD><EFBFBD>Ŀ<EFBFBD><C4BF><EFBFBD><EFBFBD> IP
|
||||
#define WIFI_SPI_TARGET_PORT "8086" // <20><><EFBFBD><EFBFBD>Ŀ<EFBFBD><C4BF><EFBFBD>Ķ˿<C4B6>
|
||||
#define WIFI_SPI_TARGET_IP "192.168.2.37" // <20><><EFBFBD><EFBFBD>Ŀ<EFBFBD><C4BF><EFBFBD><EFBFBD> IP
|
||||
#define WIFI_SPI_TARGET_PORT "8080" // <20><><EFBFBD><EFBFBD>Ŀ<EFBFBD><C4BF><EFBFBD>Ķ˿<C4B6>
|
||||
#define WIFI_SPI_LOCAL_PORT "6666" // <20><><EFBFBD><EFBFBD><EFBFBD>Ķ˿<C4B6> 0<><30><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>÷<EFBFBD>Χ2048-65535 Ĭ<><C4AC> 6666
|
||||
#endif
|
||||
|
||||
@@ -95,10 +95,15 @@ typedef enum
|
||||
|
||||
WIFI_SPI_SET_WIFI_INFORMATION = 0x10, // <20><><EFBFBD><EFBFBD>WIFI<46><49>Ϣ<EFBFBD><CFA2><EFBFBD><EFBFBD>
|
||||
WIFI_SPI_SET_SOCKET_INFORMATION = 0x11, // <20><><EFBFBD><EFBFBD>SOCKET<45><54>Ϣ<EFBFBD><CFA2><EFBFBD><EFBFBD>
|
||||
WIFI_SPI_SET_WIFI_SCAN = 0x12, // <20><>ʼɨ<CABC><C9A8>WIFI
|
||||
WIFI_SPI_SET_READ_LENGTH = 0x13, // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD>
|
||||
|
||||
WIFI_SPI_GET_VERSION = 0x20, // <20><>ȡģ<C8A1><C4A3><EFBFBD>汾
|
||||
WIFI_SPI_GET_MAC_ADDR = 0x21, // <20><>ȡģ<C8A1><C4A3>MAC<41><43>ַ
|
||||
WIFI_SPI_GET_IP_ADDR = 0x22, // <20><>ȡģ<C8A1><C4A3>IP<49><50>ַ
|
||||
WIFI_SPI_GET_TIME1 = 0x23, // <20><>ȡʱ<C8A1><CAB1> <20><>ʽ1
|
||||
WIFI_SPI_GET_TIME2 = 0x24, // <20><>ȡʱ<C8A1><CAB1> <20><>ʽ2
|
||||
WIFI_SPI_GET_TIME3 = 0x25, // <20><>ȡʱ<C8A1><CAB1> <20><>ʽ3
|
||||
|
||||
// <20>ӻ<EFBFBD><D3BB>ش<EFBFBD><D8B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
WIFI_SPI_REPLY_OK = 0x80, // <20>ӻ<EFBFBD>Ӧ<EFBFBD><D3A6><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȷ<EFBFBD><C8B7><EFBFBD><EFBFBD>
|
||||
@@ -110,6 +115,9 @@ typedef enum
|
||||
WIFI_SPI_REPLY_VERSION = 0xA0, // <20>ӻ<EFBFBD><D3BB>ظ<EFBFBD><D8B8>̼<EFBFBD><CCBC>汾
|
||||
WIFI_SPI_REPLY_MAC_ADDR = 0xA1, // <20>ӻ<EFBFBD><D3BB>ظ<EFBFBD><D8B8><EFBFBD><EFBFBD><EFBFBD>MAC<41><43>ַ<EFBFBD><D6B7><EFBFBD><EFBFBD>Ϣ
|
||||
WIFI_SPI_REPLY_IP_ADDR = 0xA2, // <20>ӻ<EFBFBD><D3BB>ظ<EFBFBD><D8B8><EFBFBD><EFBFBD><EFBFBD>IP<49><50>ַ<EFBFBD><D6B7><EFBFBD>˿ں<CBBF>
|
||||
WIFI_SPI_REPLY_TIME1 = 0xA3, // <20>ӻ<EFBFBD><D3BB>ظ<EFBFBD>ʱ<EFBFBD><CAB1>
|
||||
WIFI_SPI_REPLY_TIME2 = 0xA4, // <20>ӻ<EFBFBD><D3BB>ظ<EFBFBD>ʱ<EFBFBD><CAB1>
|
||||
WIFI_SPI_REPLY_TIME3 = 0xA5, // <20>ӻ<EFBFBD><D3BB>ظ<EFBFBD>ʱ<EFBFBD><CAB1>
|
||||
WIFI_SPI_INVALID2 = 0xFF // <20><>Ч<EFBFBD><D0A7><EFBFBD>ݰ<EFBFBD>
|
||||
}wifi_spi_packets_command_enum;
|
||||
|
||||
@@ -134,19 +142,27 @@ typedef struct
|
||||
uint8 buffer[WIFI_SPI_RECVIVE_SIZE]; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
}wifi_spi_packets_struct;
|
||||
|
||||
|
||||
typedef enum
|
||||
{
|
||||
WIFI_SPI_UTC_0 = 1, // <20><><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1>
|
||||
WIFI_SPI_GMT, // <20><><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1> ת<><D7AA>ΪGMT<4D><54>ʽ<EFBFBD><CABD><EFBFBD><EFBFBD><EFBFBD><D7BA><EFBFBD><EFBFBD>GMT һ<><D2BB><EFBFBD><EFBFBD><EFBFBD>ڶԽ<DAB6><D4BD>ƶ˴<C6B6>ģ<EFBFBD><C4A3>ʹ<EFBFBD><CAB9>
|
||||
WIFI_SPI_UTC_8, // <20><><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1>
|
||||
}wifi_spi_time_enum;
|
||||
|
||||
extern char wifi_spi_version[12]; // <20>̼<EFBFBD><CCBC>汾 <20>ַ<EFBFBD><D6B7><EFBFBD>
|
||||
extern char wifi_spi_mac_addr[20]; // ģ<><C4A3>MAC<41><43>ַ <20>ַ<EFBFBD><D6B7><EFBFBD>
|
||||
extern char wifi_spi_ip_addr_port[25]; // IP<49><50>ַ<EFBFBD><D6B7><EFBFBD>˿ں<CBBF> <20>ַ<EFBFBD><D6B7><EFBFBD>
|
||||
|
||||
uint8 wifi_spi_wifi_connect (char *wifi_ssid, char *pass_word);
|
||||
uint8 wifi_spi_socket_connect (char *transport_type, char *ip_addr, char *port, char *local_port);
|
||||
uint8 wifi_spi_socket_disconnect (void);
|
||||
uint8 wifi_spi_udp_send_now (void);
|
||||
uint32 wifi_spi_send_buffer (const uint8 *buff, uint32 length);
|
||||
uint32 wifi_spi_read_buffer (uint8 *buffer, uint32 length);
|
||||
uint8 wifi_spi_get_time (wifi_spi_time_enum time_format, char *buffer, uint8 buffer_size);
|
||||
uint8 wifi_spi_wifi_scan (char *buffer, uint16 buffer_size);
|
||||
uint8 wifi_spi_wifi_connect (char *wifi_ssid, char *pass_word);
|
||||
uint8 wifi_spi_socket_connect (char *transport_type, char *ip_addr, char *port, char *local_port);
|
||||
uint8 wifi_spi_socket_disconnect (void);
|
||||
uint8 wifi_spi_udp_send_now (void);
|
||||
uint32 wifi_spi_send_buffer (const uint8 *buff, uint32 length);
|
||||
void wifi_spi_send_string (const char *string);
|
||||
uint32 wifi_spi_read_buffer (uint8 *buffer, uint32 length);
|
||||
|
||||
uint8 wifi_spi_init (char *wifi_ssid, char *pass_word);
|
||||
uint8 wifi_spi_init (char *wifi_ssid, char *pass_word);
|
||||
|
||||
#endif
|
||||
|
||||
|
||||
@@ -73,7 +73,7 @@
|
||||
#if (WIFI_UART_AUTO_CONNECT > 3)
|
||||
#error "WIFI_UART_AUTO_CONNECT <20><>ֵֻ<D6B5><D6BB>Ϊ [0,1,2,3]"
|
||||
#else
|
||||
#define WIFI_UART_TARGET_IP "192.168.137.1" // <20><><EFBFBD><EFBFBD>Ŀ<EFBFBD><C4BF><EFBFBD><EFBFBD> IP
|
||||
#define WIFI_UART_TARGET_IP "192.168.2.37" // <20><><EFBFBD><EFBFBD>Ŀ<EFBFBD><C4BF><EFBFBD><EFBFBD> IP
|
||||
#define WIFI_UART_TARGET_PORT "8080" // <20><><EFBFBD><EFBFBD>Ŀ<EFBFBD><C4BF><EFBFBD>Ķ˿<C4B6>
|
||||
#define WIFI_UART_LOCAL_PORT "8080" // <20><><EFBFBD><EFBFBD><EFBFBD>˿<EFBFBD>
|
||||
#endif
|
||||
|
||||
@@ -171,7 +171,7 @@ void encoder_clear_count (encoder_index_enum encoder_n)
|
||||
//-------------------------------------------------------------------------------------------------------------------
|
||||
void encoder_quad_init (encoder_index_enum encoder_n, encoder_channel1_enum ch1_pin, encoder_channel2_enum ch2_pin)
|
||||
{
|
||||
// zf_assert(encoder_n <= TIM4_ENCODER); // <20><>ȫ<EFBFBD><C8AB><EFBFBD><EFBFBD><EFBFBD>ɼ<EFBFBD><C9BC><EFBFBD> TIM2 TIM3 TIM4֧<34><D6A7> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ﱨ<EFBFBD><EFB1A8> <20><><EFBFBD>Գ<EFBFBD><D4B3><EFBFBD>ʹ<EFBFBD><CAB9><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ķ<EFBFBD><C4B7><EFBFBD><EFBFBD><EFBFBD>ʼ<EFBFBD><CABC>encoder_dir_init
|
||||
zf_assert(encoder_n <= TIM4_ENCODER); // <20><>ȫ<EFBFBD><C8AB><EFBFBD><EFBFBD><EFBFBD>ɼ<EFBFBD><C9BC><EFBFBD> TIM2 TIM3 TIM4֧<34><D6A7> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ﱨ<EFBFBD><EFB1A8> <20><><EFBFBD>Գ<EFBFBD><D4B3><EFBFBD>ʹ<EFBFBD><CAB9><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ķ<EFBFBD><C4B7><EFBFBD><EFBFBD><EFBFBD>ʼ<EFBFBD><CABC>encoder_dir_init
|
||||
|
||||
IfxGpt12_enableModule(&MODULE_GPT120);
|
||||
IfxGpt12_setGpt1BlockPrescaler(&MODULE_GPT120, IfxGpt12_Gpt1BlockPrescaler_4);
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user