修复摄像头初始化报断言错误的问题
        修复多个SPI同时使用可能产生冲突的问题
        修复多核初始化时卡死在等待同步函数的问题
        外设层增加中文注释
This commit is contained in:
SEEKFREE_BUDING
2023-05-03 12:15:13 +08:00
parent 968395eca9
commit df543507bd
753 changed files with 31024 additions and 25249 deletions

View File

@@ -1,3 +1,7 @@
V3.1.8
<20>޸<EFBFBD><DEB8><EFBFBD><EFBFBD><EFBFBD>SPIͬʱʹ<CAB1>ÿ<EFBFBD><C3BF>ܲ<EFBFBD><DCB2><EFBFBD><EFBFBD><EFBFBD>ͻ<EFBFBD><CDBB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
<20>޸<EFBFBD><DEB8><EFBFBD><EFBFBD>˳<EFBFBD>ʼ<EFBFBD><CABC>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD>ڵȴ<DAB5>ͬ<EFBFBD><CDAC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
<20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ע<EFBFBD><D7A2>
V3.1.7
<20>޸<EFBFBD><DEB8><EFBFBD><EFBFBD><EFBFBD>ͷ<EFBFBD><CDB7>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Դ<EFBFBD><D4B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
V3.1.6

View File

@@ -31,6 +31,7 @@
* <20>޸ļ<DEB8>¼
* <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><>ע
* 2022-09-15 pudding first version
* 2023-04-26 pudding <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD><EFBFBD>ɱ<EFBFBD>־<EFBFBD>ȴ<EFBFBD><C8B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ҫ<EFBFBD>ȴ<EFBFBD>CPU0<55><30>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD><EFBFBD>ɺ<EFBFBD><C9BA><EFBFBD><EFBFBD><EFBFBD>CPU<50><55><EFBFBD>ܽ<EFBFBD><DCBD>и<EFBFBD>ֵ
********************************************************************************************************************/
#include "IfxScuEru.h"
@@ -42,9 +43,9 @@
#include "zf_common_clock.h"
App_Cpu0 g_AppCpu0; // Ƶ<><C6B5><EFBFBD><EFBFBD>Ϣ<EFBFBD><CFA2><EFBFBD><EFBFBD>
App_Cpu0 g_AppCpu0; // Ƶ<><C6B5><EFBFBD><EFBFBD>Ϣ<EFBFBD><CFA2><EFBFBD><EFBFBD>
static uint8 cpu_init_finsh[IfxCpu_Id_none]; // <20><><EFBFBD>ij<EFBFBD>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD><EFBFBD>ɱ<EFBFBD>־λ
static vuint8 cpu_init_finish[IfxCpu_Id_none]; // <20><><EFBFBD>ij<EFBFBD>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD><EFBFBD>ɱ<EFBFBD>־λ
//-------------------------------------------------------------------------------------------------------------------
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>ϵͳƵ<CDB3><C6B5>
@@ -109,19 +110,24 @@ void clock_init (void)
void cpu_wait_event_ready (void)
{
uint8 i;
uint8 all_cpu_init_finsh;
uint8 all_cpu_init_finish;
if(IfxCpu_getCoreId() != 0)
{
while(cpu_init_finish[0] == 0);
}
// <20><><EFBFBD>ô˺<C3B4><CBBA><EFBFBD><EFBFBD>ĺ<EFBFBD><C4BA>ij<EFBFBD>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD><EFBFBD>ϣ<EFBFBD><CFA3><EFBFBD>־λ<D6BE><CEBB>һ
cpu_init_finsh[IfxCpu_getCoreId()] = 1;
cpu_init_finish[IfxCpu_getCoreId()] = 1;
// <20>ȴ<EFBFBD><C8B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ij<EFBFBD>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
do
{
all_cpu_init_finsh = 1;
all_cpu_init_finish = 1;
for(i = 0; i < IfxCpu_Id_none; i++)
{
all_cpu_init_finsh *= cpu_init_finsh[i];
all_cpu_init_finish *= cpu_init_finish[i];
}
system_delay_ms(1);
}while(0 == all_cpu_init_finsh);
}while(0 == all_cpu_init_finish);
}

View File

@@ -30,7 +30,8 @@
*
* <20>޸ļ<DEB8>¼
* <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><>ע
* 2022-09-15 pudding first version
* 2022-09-15 pudding first version
* 2023-04-25 pudding <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ע<EFBFBD><D7A2>˵<EFBFBD><CBB5>
********************************************************************************************************************/
/*********************************************************************************************************************
* <20><><EFBFBD>߶<EFBFBD><DFB6>
@@ -54,16 +55,16 @@
#include "zf_device_absolute_encoder.h"
static int16 now_location = 0;
static int16 last_location = 0;
static int16 now_location = 0; // <20><>ǰλ<C7B0>ö<EFBFBD><C3B6><EFBFBD> static:<3A><>̬<EFBFBD><CCAC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD>ô˱<C3B4><CBB1><EFBFBD>
static int16 last_location = 0; // <20>ϴ<EFBFBD>λ<EFBFBD>ö<EFBFBD><C3B6><EFBFBD> static:<3A><>̬<EFBFBD><CCAC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD>ô˱<C3B4><CBB1><EFBFBD>
#if ABSOLUTE_ENCODER_USE_SOFT_SPI
static soft_spi_info_struct absolute_encoder_spi;
#define absolute_encoder_read() (soft_spi_read_8bit(&absolute_encoder_spi))
#define absolute_encoder_write(data) (soft_spi_write_8bit(&absolute_encoder_spi, (data)))
static soft_spi_info_struct absolute_encoder_spi; // <20><><EFBFBD><EFBFBD><EFBFBD>Ƕȱ<C7B6><C8B1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>SPI<50><EFBFBD><E1B9B9>
#define absolute_encoder_read() (soft_spi_read_8bit(&absolute_encoder_spi)) // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݶ<EFBFBD>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD>
#define absolute_encoder_write(data) (soft_spi_write_8bit(&absolute_encoder_spi, (data))) // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>д<EFBFBD><EFBFBD><EBBAAF>
#else
#define absolute_encoder_read() (spi_read_8bit(ABSOLUTE_ENCODER_SPI))
#define absolute_encoder_write(data) (spi_write_8bit(ABSOLUTE_ENCODER_SPI, (data)))
#define absolute_encoder_read() (spi_read_8bit(ABSOLUTE_ENCODER_SPI)) // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݶ<EFBFBD>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD>
#define absolute_encoder_write(data) (spi_write_8bit(ABSOLUTE_ENCODER_SPI, (data))) // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>д<EFBFBD><EFBFBD><EBBAAF>
#endif
//-------------------------------------------------------------------------------------------------------------------
@@ -141,12 +142,12 @@ static uint8 absolute_encoder_self_check (void)
uint16 time_count = 0;
while(0x1C != absolute_encoder_read_register(6)) // <20><>ȡ״̬<D7B4>Ĵ<EFBFBD><C4B4><EFBFBD>
{
for(i = 0; i < 6; i ++)
for(i = 0; 6 > i; i ++)
{
absolute_encoder_write_register(i + 1, dat[i]); // д<><D0B4>Ĭ<EFBFBD><C4AC><EFBFBD><EFBFBD><EFBFBD>ò<EFBFBD><C3B2><EFBFBD>
system_delay_ms(1);
}
if(time_count ++ > ABSOLUTE_ENCODER_TIMEOUT_COUNT) // <20>ȴ<EFBFBD><C8B4><EFBFBD>ʱ
if(ABSOLUTE_ENCODER_TIMEOUT_COUNT < time_count ++) // <20>ȴ<EFBFBD><C8B4><EFBFBD>ʱ
{
return_state = 1;
break;
@@ -164,8 +165,8 @@ static uint8 absolute_encoder_self_check (void)
//-------------------------------------------------------------------------------------------------------------------
int16 absolute_encoder_get_location (void)
{
last_location = now_location;
now_location = absolute_encoder_read_data() >> 4;
last_location = now_location; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ǰ<EFBFBD><C7B0><EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD>ε<EFBFBD>λ<EFBFBD><CEBB>
now_location = absolute_encoder_read_data() >> 4; // <20><>ȡ<EFBFBD><C8A1>ǰλ<C7B0><CEBB>
return now_location;
}
@@ -179,9 +180,9 @@ int16 absolute_encoder_get_location (void)
int16 absolute_encoder_get_offset (void)
{
int16 result_data = 0;
if(func_abs(now_location - last_location) > 2048)
if(2048 < func_abs(now_location - last_location))
{
result_data = (now_location > 2048 ? (now_location - 4096 - last_location) : (now_location + 4096 - last_location));
result_data = (2048 < now_location ? (now_location - 4096 - last_location) : (now_location + 4096 - last_location));
}
else
{

View File

@@ -30,7 +30,8 @@
*
* <20>޸ļ<DEB8>¼
* <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><>ע
* 2022-09-15 pudding first version
* 2022-09-15 pudding first version
* 2023-04-25 pudding <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ע<EFBFBD><D7A2>˵<EFBFBD><CBB5>
********************************************************************************************************************/
/*********************************************************************************************************************
* <20><><EFBFBD>߶<EFBFBD><DFB6>
@@ -50,6 +51,7 @@
#include "zf_common_typedef.h"
//=================================================<3D><><EFBFBD><EFBFBD> <20>Ƕȴ<C7B6><C8B4><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>================================================
#define ABSOLUTE_ENCODER_USE_SOFT_SPI (0) // Ĭ<><C4AC>ʹ<EFBFBD><CAB9>Ӳ<EFBFBD><D3B2> SPI <20><>ʽ<EFBFBD><CABD><EFBFBD><EFBFBD>
#if ABSOLUTE_ENCODER_USE_SOFT_SPI // <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> SPI <20><><EFBFBD><EFBFBD>====================================================
@@ -68,26 +70,25 @@
//====================================================Ӳ<><D3B2> SPI <20><><EFBFBD><EFBFBD>====================================================
#endif
#define ABSOLUTE_ENCODER_CS_PIN (P20_13)
#define ABSOLUTE_ENCODER_CS_PIN (P20_13) // 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)
#define ABSOLUTE_ENCODER_TIMEOUT_COUNT (100) // <20>Լ쳬ʱʱ<CAB1><CAB1>
#define ABSOLUTE_ENCODER_DEFAULT_ZERO (0)
//====================================================<3D>Ƕȴ<C7B6><C8B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>====================================================
#define ABSOLUTE_ENCODER_SPI_W (0x80)
#define ABSOLUTE_ENCODER_SPI_R (0x40)
#define ABSOLUTE_ENCODER_ZERO_L_REG (0x00)
#define ABSOLUTE_ENCODER_ZERO_H_REG (0x01)
#define ABSOLUTE_ENCODER_DIR_REG (0X09)
//====================================================<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> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>====================================================
int16 absolute_encoder_get_location (void);
int16 absolute_encoder_get_offset (void);
uint8 absolute_encoder_init (void);
//==================================================<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><EFBFBD><EFBFBD><EFBFBD>================================================
int16 absolute_encoder_get_location (void); // <20><><EFBFBD><EFBFBD>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȡ<EFBFBD><C8A1>ǰ<EFBFBD>Ƕ<EFBFBD>ֵ
int16 absolute_encoder_get_offset (void); // <20><><EFBFBD><EFBFBD>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD>ϴ<EFBFBD>λ<EFBFBD>õ<EFBFBD>ƫ<EFBFBD><C6AB>ֵ
uint8 absolute_encoder_init (void); // <20><><EFBFBD><EFBFBD>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʼ<EFBFBD><CABC>
//=================================================<EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD>Ƕȴ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>================================================
#endif

View File

@@ -30,7 +30,8 @@
*
* <20>޸ļ<DEB8>¼
* <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><>ע
* 2022-09-15 pudding first version
* 2022-09-15 pudding first version
* 2023-04-25 pudding <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ע<EFBFBD><D7A2>˵<EFBFBD><CBB5>
********************************************************************************************************************/
/*********************************************************************************************************************
* <20><><EFBFBD>߶<EFBFBD><DFB6>
@@ -50,32 +51,13 @@
#include "zf_driver_uart.h"
#include "zf_driver_delay.h"
#include "zf_device_type.h"
#include "zf_device_camera.h"
#include "zf_device_bluetooth_ch9141.h"
static fifo_struct bluetooth_ch9141_fifo;
static fifo_struct bluetooth_ch9141_fifo; // fifo<66><6F><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E5B6A8>
static uint8 bluetooth_ch9141_buffer[BLUETOOTH_CH9141_BUFFER_SIZE]; // <20><><EFBFBD>ݴ<EFBFBD><DDB4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
static uint8 bluetooth_ch9141_data;
//-------------------------------------------------------------------------------------------------------------------
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>ת<EFBFBD><D7AA><EFBFBD><EFBFBD>ģ<EFBFBD><EFBFBD><E9B7A2><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> uart_n <20><><EFBFBD><EFBFBD>ģ<EFBFBD><C4A3><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> zf_driver_uart.h <20><> uart_index_enum ö<><C3B6><EFBFBD><EFBFBD><E5B6A8>
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> *buff Ҫ<><D2AA><EFBFBD>͵<EFBFBD><CDB5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ַ
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> len <20><><EFBFBD>ͳ<EFBFBD><CDB3><EFBFBD>
// <20><><EFBFBD>ز<EFBFBD><D8B2><EFBFBD> void
// ʹ<><CAB9>ʾ<EFBFBD><CABE> bluetooth_ch9141_write_buffer(UART_1, &a[0], 5);
// <20><>ע<EFBFBD><D7A2>Ϣ
//-------------------------------------------------------------------------------------------------------------------
static void bluetooth_ch9141_write_buffer (uart_index_enum uart_n, const uint8 *buff, uint32 len)
{
while(len)
{
uart_write_byte_wait(uart_n, *buff);
len--;
buff++;
}
}
static uint8 bluetooth_ch9141_data = 0; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD>ű<EFBFBD><C5B1><EFBFBD>
//-------------------------------------------------------------------------------------------------------------------
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>ת<EFBFBD><D7AA><EFBFBD><EFBFBD>ģ<EFBFBD><C4A3> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
@@ -101,16 +83,16 @@ uint32 bluetooth_ch9141_send_byte (const uint8 data)
}
//-------------------------------------------------------------------------------------------------------------------
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>ת<EFBFBD><D7AA><EFBFBD><EFBFBD>ģ<EFBFBD><C4A3> <20><><EFBFBD>ͺ<EFBFBD><EFBFBD><EFBFBD>
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>ת<EFBFBD><D7AA><EFBFBD><EFBFBD>ģ<EFBFBD><C4A3> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> buff <20><>Ҫ<EFBFBD><D2AA><EFBFBD>͵<EFBFBD><CDB5><EFBFBD><EFBFBD>ݵ<EFBFBD>ַ
// <20><><EFBFBD>ز<EFBFBD><D8B2><EFBFBD> len <20><><EFBFBD>ͳ<EFBFBD><CDB3><EFBFBD>
// ʹ<><CAB9>ʾ<EFBFBD><CABE> uint32 ʣ<><CAA3>δ<EFBFBD><CEB4><EFBFBD>͵<EFBFBD><CDB5>ֽ<EFBFBD><D6BD><EFBFBD>
// ʹ<><CAB9>ʾ<EFBFBD><CABE> bluetooth_ch9141_send_buff(buff, 16);
// <20><>ע<EFBFBD><D7A2>Ϣ
//-------------------------------------------------------------------------------------------------------------------
uint32 bluetooth_ch9141_send_buff (const uint8 *buff, uint32 len)
uint32 bluetooth_ch9141_send_buffer (const uint8 *buff, uint32 len)
{
zf_assert(buff != NULL);
zf_assert(NULL != buff);
uint16 time_count = 0;
while(0 != len)
{
@@ -118,14 +100,14 @@ uint32 bluetooth_ch9141_send_buff (const uint8 *buff, uint32 len)
{
if(30 <= len) // <20><><EFBFBD>ݷ<EFBFBD> 30byte ÿ<><C3BF><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
{
bluetooth_ch9141_write_buffer(BLUETOOTH_CH9141_INDEX, buff, 30); // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
uart_write_buffer(BLUETOOTH_CH9141_INDEX, buff, 30); // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
buff += 30; // <20><>ַƫ<D6B7><C6AB>
len -= 30; // <20><><EFBFBD><EFBFBD>
time_count = 0;
}
else // <20><><EFBFBD><EFBFBD> 30byte <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD>Է<EFBFBD><D4B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
{
bluetooth_ch9141_write_buffer(BLUETOOTH_CH9141_INDEX, buff, len); // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
uart_write_buffer(BLUETOOTH_CH9141_INDEX, buff, len); // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
len = 0;
break;
}
@@ -147,36 +129,36 @@ uint32 bluetooth_ch9141_send_buff (const uint8 *buff, uint32 len)
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> *str Ҫ<><D2AA><EFBFBD>͵<EFBFBD><CDB5>ַ<EFBFBD><D6B7><EFBFBD><EFBFBD><EFBFBD>ַ
// <20><><EFBFBD>ز<EFBFBD><D8B2><EFBFBD> uint32 ʣ<><EFBFBD>ͳ<EFBFBD><CDB3><EFBFBD>
// ʹ<><CAB9>ʾ<EFBFBD><CABE> bluetooth_ch9141_send_string("Trust yourself.");
// <20><>ע<EFBFBD><D7A2>Ϣ
// <20><>ע<EFBFBD><D7A2>Ϣ
//-------------------------------------------------------------------------------------------------------------------
uint32 bluetooth_ch9141_send_string (const char *str)
{
zf_assert(str != NULL);
zf_assert(NULL != str);
uint16 time_count = 0;
uint32 len = strlen(str);
while(0 != len)
{
if(!gpio_get_level(BLUETOOTH_CH9141_RTS_PIN)) // <20><><EFBFBD><EFBFBD>RTSΪ<53>͵<EFBFBD>ƽ <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
if(!gpio_get_level(BLUETOOTH_CH9141_RTS_PIN)) // <20><><EFBFBD><EFBFBD>RTSΪ<53>͵<EFBFBD>ƽ <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
{
if(30 <= len) // <20><><EFBFBD>ݷ<EFBFBD> 30byte ÿ<><C3BF><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
if(30 <= len) // <20><><EFBFBD>ݷ<EFBFBD> 30byte ÿ<><C3BF><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
{
bluetooth_ch9141_write_buffer(BLUETOOTH_CH9141_INDEX, (const uint8 *)str, 30); // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
str += 30; // <20><>ַƫ<D6B7><C6AB>
len -= 30; // <20><><EFBFBD><EFBFBD>
uart_write_buffer(BLUETOOTH_CH9141_INDEX, (const uint8 *)str, 30); // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
str += 30; // <20><>ַƫ<D6B7><C6AB>
len -= 30; // <20><><EFBFBD><EFBFBD>
time_count = 0;
}
else // <20><><EFBFBD><EFBFBD> 30byte <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD>Է<EFBFBD><D4B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
else // <20><><EFBFBD><EFBFBD> 30byte <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD>Է<EFBFBD><D4B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
{
bluetooth_ch9141_write_buffer(BLUETOOTH_CH9141_INDEX, (const uint8 *)str, len);// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
uart_write_buffer(BLUETOOTH_CH9141_INDEX, (const uint8 *)str, len); // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
len = 0;
break;
}
}
else // <20><><EFBFBD><EFBFBD>RTSΪ<53>ߵ<EFBFBD>ƽ <20><>ģ<EFBFBD><C4A3>æ
else // <20><><EFBFBD><EFBFBD>RTSΪ<53>ߵ<EFBFBD>ƽ <20><>ģ<EFBFBD><C4A3>æ
{
if(BLUETOOTH_CH9141_TIMEOUT_COUNT <= (++ time_count)) // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȴ<EFBFBD>ʱ<EFBFBD><CAB1>
if(BLUETOOTH_CH9141_TIMEOUT_COUNT <= (++ time_count)) // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȴ<EFBFBD>ʱ<EFBFBD><CAB1>
{
break; // <20>˳<EFBFBD><CBB3><EFBFBD><EFBFBD><EFBFBD>
break; // <20>˳<EFBFBD><CBB3><EFBFBD><EFBFBD><EFBFBD>
}
system_delay_ms(1);
}
@@ -190,15 +172,14 @@ uint32 bluetooth_ch9141_send_string (const char *str)
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> image_size ͼ<><CDBC><EFBFBD>Ĵ<EFBFBD>С
// <20><><EFBFBD>ز<EFBFBD><D8B2><EFBFBD> void
// ʹ<><CAB9>ʾ<EFBFBD><CABE> bluetooth_ch9141_send_image(&mt9v03x_image[0][0], MT9V03X_IMAGE_SIZE);
// <20><>ע<EFBFBD><D7A2>Ϣ
// <20><>ע<EFBFBD><D7A2>Ϣ
//-------------------------------------------------------------------------------------------------------------------
void bluetooth_ch9141_send_image (const uint8 *image_addr, uint32 image_size)
{
zf_assert(image_addr != NULL);
zf_assert(NULL != image_addr);
extern uint8 camera_send_image_frame_header[4];
bluetooth_ch9141_send_buff(camera_send_image_frame_header, 4);
bluetooth_ch9141_send_buff((uint8 *)image_addr, image_size);
bluetooth_ch9141_send_buffer(camera_send_image_frame_header, 4);
bluetooth_ch9141_send_buffer((uint8 *)image_addr, image_size);
}
//-------------------------------------------------------------------------------------------------------------------
@@ -206,12 +187,12 @@ void bluetooth_ch9141_send_image (const uint8 *image_addr, uint32 image_size)
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> buff <20><EFBFBD><E6B4A2><EFBFBD><EFBFBD><EFBFBD>ݵ<EFBFBD>ַ
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> len <20><><EFBFBD><EFBFBD>
// <20><><EFBFBD>ز<EFBFBD><D8B2><EFBFBD> uint32 ʵ<>ʶ<EFBFBD>ȡ<EFBFBD>ֽ<EFBFBD><D6BD><EFBFBD>
// ʹ<><CAB9>ʾ<EFBFBD><CABE> bluetooth_ch9141_read_buff(buff, 16);
// <20><>ע<EFBFBD><D7A2>Ϣ
// ʹ<><CAB9>ʾ<EFBFBD><CABE> bluetooth_ch9141_read_buffer(buff, 16);
// <20><>ע<EFBFBD><D7A2>Ϣ
//-------------------------------------------------------------------------------------------------------------------
uint32 bluetooth_ch9141_read_buff (uint8 *buff, uint32 len)
uint32 bluetooth_ch9141_read_buffer (uint8 *buff, uint32 len)
{
zf_assert(buff != NULL);
zf_assert(NULL != buff);
uint32 data_len = len;
fifo_read_buffer(&bluetooth_ch9141_fifo, buff, &data_len, FIFO_READ_AND_CLEAN);
return data_len;

View File

@@ -30,7 +30,8 @@
*
* <20>޸ļ<DEB8>¼
* <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><>ע
* 2022-09-15 pudding first version
* 2022-09-15 pudding first version
* 2023-04-25 pudding <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ע<EFBFBD><D7A2>˵<EFBFBD><CBB5>
********************************************************************************************************************/
/*********************************************************************************************************************
* <20><><EFBFBD>߶<EFBFBD><DFB6>
@@ -49,29 +50,26 @@
#include "zf_common_typedef.h"
//=================================================9141<34><31><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>====================================================
//=================================================<3D><><EFBFBD><EFBFBD> 9141<34><31><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>================================================
#define BLUETOOTH_CH9141_INDEX (UART_2) // <20><><EFBFBD><EFBFBD>ģ<EFBFBD><C4A3><EFBFBD><EFBFBD>Ӧʹ<D3A6>õĴ<C3B5><C4B4>ں<EFBFBD>
#define BLUETOOTH_CH9141_BUAD_RATE (115200) // <20><><EFBFBD><EFBFBD>ģ<EFBFBD><C4A3><EFBFBD><EFBFBD>Ӧʹ<D3A6>õĴ<C3B5><C4B4>ڲ<EFBFBD><DAB2><EFBFBD><EFBFBD><EFBFBD>
#define BLUETOOTH_CH9141_TX_PIN (UART2_RX_P10_6) // <20><><EFBFBD><EFBFBD>ģ<EFBFBD><C4A3><EFBFBD><EFBFBD>Ӧģ<D3A6><C4A3><EFBFBD><EFBFBD> TX Ҫ<>ӵ<EFBFBD><D3B5><EFBFBD>Ƭ<EFBFBD><C6AC><EFBFBD><EFBFBD> RX
#define BLUETOOTH_CH9141_RX_PIN (UART2_TX_P10_5) // <20><><EFBFBD><EFBFBD>ģ<EFBFBD><C4A3><EFBFBD><EFBFBD>Ӧģ<D3A6><C4A3><EFBFBD><EFBFBD> RX Ҫ<>ӵ<EFBFBD><D3B5><EFBFBD>Ƭ<EFBFBD><C6AC><EFBFBD><EFBFBD> TX
#define BLUETOOTH_CH9141_RTS_PIN (P10_2) // <20><><EFBFBD><EFBFBD>ģ<EFBFBD><C4A3><EFBFBD><EFBFBD>Ӧģ<D3A6><C4A3><EFBFBD><EFBFBD> RTS <20><><EFBFBD><EFBFBD>
//=================================================9141<34><31><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>====================================================
#define BLUETOOTH_CH9141_RTS_PIN (P10_2) // <20><><EFBFBD><EFBFBD>ģ<EFBFBD><C4A3><EFBFBD><EFBFBD>Ӧģ<D3A6><C4A3><EFBFBD><EFBFBD> RTS <20><><EFBFBD><EFBFBD>(<28><><EFBFBD><EFBFBD>λ)
#define BLUETOOTH_CH9141_BUFFER_SIZE (64)
#define BLUETOOTH_CH9141_TIMEOUT_COUNT (500)
#define BLUETOOTH_CH9141_BUFFER_SIZE (64) // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݵĻ<DDB5><C4BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>С
#define BLUETOOTH_CH9141_TIMEOUT_COUNT (500) // ִ<>в<EFBFBD><D0B2><EFBFBD><EFBFBD>ij<EFBFBD>ʱʱ<CAB1><CAB1>
//=================================================<3D><><EFBFBD><EFBFBD> 9141<34><31><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>================================================
//=================================================9141<34><31><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>====================================================
uint32 bluetooth_ch9141_send_byte (const uint8 data);
uint32 bluetooth_ch9141_send_buff (const uint8 *buff, uint32 len);
uint32 bluetooth_ch9141_send_string (const char *str);
void bluetooth_ch9141_send_image (const uint8 *image_addr, uint32 image_size);
uint32 bluetooth_ch9141_read_buff (uint8 *buff, uint32 len);
void bluetooth_ch9141_uart_callback (void);
uint8 bluetooth_ch9141_init (void);
//=================================================9141<EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>====================================================
//=================================================<3D><><EFBFBD><EFBFBD> 9141<34><31><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>================================================
uint32 bluetooth_ch9141_send_byte (const uint8 data); // <20><><EFBFBD><EFBFBD>ת<EFBFBD><D7AA><EFBFBD><EFBFBD>ģ<EFBFBD><C4A3> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
uint32 bluetooth_ch9141_send_buffer (const uint8 *buff, uint32 len); // <20><><EFBFBD><EFBFBD>ת<EFBFBD><D7AA><EFBFBD><EFBFBD>ģ<EFBFBD><C4A3> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
uint32 bluetooth_ch9141_send_string (const char *str); // <20><><EFBFBD><EFBFBD>ת<EFBFBD><D7AA><EFBFBD><EFBFBD>ģ<EFBFBD><C4A3> <20><><EFBFBD><EFBFBD><EFBFBD>ַ<EFBFBD><D6B7><EFBFBD>
void bluetooth_ch9141_send_image (const uint8 *image_addr, uint32 image_size); // <20><><EFBFBD><EFBFBD>ת<EFBFBD><D7AA><EFBFBD><EFBFBD>ģ<EFBFBD><C4A3> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͷͼ<CDB7><CDBC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>λ<EFBFBD><CEBB><EFBFBD>鿴ͼ<E9BFB4><CDBC>
uint32 bluetooth_ch9141_read_buffer (uint8 *buff, uint32 len); // <EFBFBD><EFBFBD><EFBFBD><EFBFBD>ת<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ģ<EFBFBD><EFBFBD> <EFBFBD><EFBFBD>ȡ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
void bluetooth_ch9141_uart_callback (void); // <20><><EFBFBD><EFBFBD>ת<EFBFBD><D7AA><EFBFBD><EFBFBD>ģ<EFBFBD><C4A3> <20><><EFBFBD><EFBFBD><EFBFBD>жϻص<CFBB><D8B5><EFBFBD><EFBFBD><EFBFBD>
uint8 bluetooth_ch9141_init (void); // <20><><EFBFBD><EFBFBD>ת<EFBFBD><D7AA><EFBFBD><EFBFBD>ģ<EFBFBD><C4A3> <20><>ʼ<EFBFBD><CABC>
//=================================================<3D><><EFBFBD><EFBFBD> 9141<34><31><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>================================================
#endif

View File

@@ -30,7 +30,8 @@
*
* <20>޸ļ<DEB8>¼
* <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><>ע
* 2022-09-15 pudding first version
* 2022-09-15 pudding first version
* 2023-04-25 pudding <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ע<EFBFBD><D7A2>˵<EFBFBD><CBB5>
********************************************************************************************************************/
#include "zf_common_debug.h"
@@ -44,9 +45,9 @@
#include "zf_device_camera.h"
fifo_struct camera_receiver_fifo;
uint8 camera_receiver_buffer[CAMERA_RECEIVER_BUFFER_SIZE];
uint8 camera_send_image_frame_header[4] = {0x00, 0xFF, 0x01, 0x01};
fifo_struct camera_receiver_fifo; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͷ<EFBFBD><CDB7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>fifo<66><EFBFBD><E1B9B9>
uint8 camera_receiver_buffer[CAMERA_RECEIVER_BUFFER_SIZE]; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͷ<EFBFBD><CDB7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݻ<EFBFBD><DDBB><EFBFBD><EFBFBD><EFBFBD>
uint8 camera_send_image_frame_header[4] = {0x00, 0xFF, 0x01, 0x01}; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͷ<EFBFBD><CDB7><EFBFBD>ݷ<EFBFBD><DDB7>͵<EFBFBD><CDB5><EFBFBD>λ<EFBFBD><CEBB><EFBFBD><EFBFBD>֡ͷ
//-------------------------------------------------------------------------------------------------------------------
// @brief <20><><EFBFBD><EFBFBD>ͷ<EFBFBD><CDB7><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͼ<EFBFBD><CDBC><EFBFBD><EFBFBD><EFBFBD>ݽ<EFBFBD>ѹΪʮ<CEAA><CAAE><EFBFBD><EFBFBD><EFBFBD>ư<EFBFBD>λ<EFBFBD><CEBB><EFBFBD><EFBFBD> С<><D0A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
@@ -54,13 +55,14 @@ uint8 camera_send_image_frame_header[4] = {0x00, 0xFF, 0x01, 0x01};
// @param *data2 <20><><EFBFBD>Ž<EFBFBD>ѹ<EFBFBD><D1B9><EFBFBD>ݵĵ<DDB5>ַ
// @param image_size ͼ<><CDBC><EFBFBD>Ĵ<EFBFBD>С
// @return void
// Sample usage: camera_binary_image_decompression(&ov7725_image_binary[0][0], &data_buffer[0][0], OV7725_SIZE);
// Sample usage: camera_binary_image_decompression(&ov7725_image_binary[0][0], &data_buffer[0][0], OV7725_SIZE);
//-------------------------------------------------------------------------------------------------------------------
void camera_binary_image_decompression (const uint8 *data1, uint8 *data2, uint32 image_size)
{
zf_assert(NULL != data1);
zf_assert(NULL != data2);
uint8 i = 8;
zf_assert(data1 != NULL);
zf_assert(data2 != NULL);
while(image_size --)
{
i = 8;
@@ -82,7 +84,7 @@ void camera_binary_image_decompression (const uint8 *data1, uint8 *data2, uint32
//-------------------------------------------------------------------------------------------------------------------
void camera_send_image (uart_index_enum uartn, const uint8 *image_addr, uint32 image_size)
{
zf_assert(image_addr != NULL);
zf_assert(NULL != image_addr);
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
uart_write_buffer(uartn, camera_send_image_frame_header, 4);
@@ -104,7 +106,7 @@ void camera_fifo_init (void)
//-------------------------------------------------------------------------------------------------------------------
// @brief <20><><EFBFBD><EFBFBD>ͷ<EFBFBD><CDB7>ʼ<EFBFBD><CABC>
// @brief <20><><EFBFBD><EFBFBD>ͷ<EFBFBD>ɼ<EFBFBD><EFBFBD><EFBFBD>ʼ<EFBFBD><EFBFBD>
// @param image_size ͼ<><CDBC><EFBFBD>Ĵ<EFBFBD>С
// @return void
// @param image_size ͼ<><CDBC><EFBFBD>Ĵ<EFBFBD>С
@@ -160,7 +162,7 @@ uint8 camera_init (uint8 *source_addr, uint8 *destination_addr, uint16 image_siz
EXTI_TRIGGER_RISING,
image_size); // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƶ<EFBFBD><C6B5>300M <20><><EFBFBD><EFBFBD><EFBFBD>ڶ<EFBFBD><DAB6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ΪFALLING
exti_init(SCC8660_VSYNC_PIN, EXTI_TRIGGER_FALLING); // <20><>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD><EFBFBD>жϣ<D0B6><CFA3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ<EFBFBD>½<EFBFBD><C2BD>ش<EFBFBD><D8B4><EFBFBD><EFBFBD>ж<EFBFBD>
exti_init(SCC8660_VSYNC_PIN, EXTI_TRIGGER_FALLING); // <20><>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD><EFBFBD>жϣ<D0B6><CFA3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ<EFBFBD>½<EFBFBD><C2BD>ش<EFBFBD><D8B4><EFBFBD><EFBFBD>ж<EFBFBD>
break;
default:
break;

View File

@@ -31,6 +31,7 @@
* <20>޸ļ<DEB8>¼
* <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><>ע
* 2022-09-15 pudding first version
* 2023-04-25 pudding <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ע<EFBFBD><D7A2>˵<EFBFBD><CBB5>
********************************************************************************************************************/
#ifndef _zf_device_camera_h_
@@ -41,15 +42,17 @@
#include "zf_driver_uart.h"
#include "zf_device_type.h"
#define CAMERA_RECEIVER_BUFFER_SIZE (8)
//=================================================<3D><><EFBFBD><EFBFBD>ͷ<EFBFBD><CDB7><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>================================================
#define CAMERA_RECEIVER_BUFFER_SIZE (8) // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͷ<EFBFBD><CDB7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݻ<EFBFBD><DDBB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>С
extern fifo_struct camera_receiver_fifo; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͷ<EFBFBD><CDB7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>fifo<66><EFBFBD><E1B9B9>
extern uint8 camera_send_image_frame_header[4]; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͷ<EFBFBD><CDB7><EFBFBD>ݷ<EFBFBD><DDB7>͵<EFBFBD><CDB5><EFBFBD>λ<EFBFBD><CEBB><EFBFBD><EFBFBD>֡ͷ
//=================================================<3D><><EFBFBD><EFBFBD>ͷ<EFBFBD><CDB7><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>================================================
extern fifo_struct camera_receiver_fifo;
//================================================<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͷ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>====================================================
void camera_binary_image_decompression (const uint8 *data1, uint8 *data2, uint32 image_size);
void camera_send_image (uart_index_enum uartn, const uint8 *image_addr, uint32 image_size);
void camera_fifo_init (void);
uint8 camera_init (uint8 *source_addr, uint8 *destination_addr, uint16 image_size);
//================================================<3D><><EFBFBD><EFBFBD>ͷ<EFBFBD><CDB7><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>====================================================
//=================================================<3D><><EFBFBD><EFBFBD>ͷ<EFBFBD><CDB7><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>================================================
void camera_binary_image_decompression (const uint8 *data1, uint8 *data2, uint32 image_size); // <20><><EFBFBD><EFBFBD>ͷ<EFBFBD><CDB7><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͼ<EFBFBD><CDBC><EFBFBD><EFBFBD><EFBFBD>ݽ<EFBFBD>ѹΪʮ<CEAA><CAAE><EFBFBD><EFBFBD><EFBFBD>ư<EFBFBD>λ<EFBFBD><CEBB><EFBFBD><EFBFBD> С<><D0A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
void camera_send_image (uart_index_enum uartn, const uint8 *image_addr, uint32 image_size); // <EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͷͼ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>λ<EFBFBD><EFBFBD><EFBFBD>鿴ͼ<EFBFBD><EFBFBD>
void camera_fifo_init (void); // <20><><EFBFBD><EFBFBD>ͷ<EFBFBD><CDB7><EFBFBD><EFBFBD> FIFO <20><>ʼ<EFBFBD><CABC>
uint8 camera_init (uint8 *source_addr, uint8 *destination_addr, uint16 image_size); // <20><><EFBFBD><EFBFBD>ͷ<EFBFBD>ɼ<EFBFBD><C9BC><EFBFBD>ʼ<EFBFBD><CABC>
//=================================================<3D><><EFBFBD><EFBFBD>ͷ<EFBFBD><CDB7><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>================================================
#endif

View File

@@ -30,7 +30,8 @@
*
* <20>޸ļ<DEB8>¼
* <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><>ע
* 2022-09-15 pudding first version
* 2022-09-15 pudding first version
* 2023-04-28 pudding <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ע<EFBFBD><D7A2>˵<EFBFBD><CBB5>
********************************************************************************************************************/
/*********************************************************************************************************************
* <20><><EFBFBD>߶<EFBFBD><DFB6>
@@ -45,24 +46,22 @@
#include "zf_common_debug.h"
#include "zf_driver_delay.h"
#include "zf_driver_exti.h"
#include "zf_driver_soft_iic.h"
#include "zf_device_dl1a.h"
uint8 dl1a_finsh_flag;
uint16 dl1a_distance_mm;
uint8 dl1a_finsh_flag = 0; // <20><><EFBFBD><EFBFBD><EFBFBD>ɼ<EFBFBD><C9BC><EFBFBD><EFBFBD>ɱ<EFBFBD>־λ
uint16 dl1a_distance_mm = 8192; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݴ<EFBFBD><DDB4>ű<EFBFBD><C5B1><EFBFBD>
#if DL1A_USE_SOFT_IIC
static soft_iic_info_struct dl1a_iic_struct;
static soft_iic_info_struct dl1a_iic_struct; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>IIC<49><EFBFBD><E1B9B9>
#define dl1a_write_array(data, len) (soft_iic_write_8bit_array(&dl1a_iic_struct, (data), (len)))
#define dl1a_write_register(reg, data) (soft_iic_write_8bit_register(&dl1a_iic_struct, (reg), (data)))
#define dl1a_read_register(reg) (soft_iic_read_8bit_register(&dl1a_iic_struct, (reg)))
#define dl1a_read_registers(reg, data, len) (soft_iic_read_8bit_registers(&dl1a_iic_struct, (reg), (data), (len)))
#else
#define dl1a_write_array(data, len) (iic_write_8bit_array(DL1A_IIC, DL1A_DEV_ADDR, (data), (len)))
#define dl1a_write_register(reg, data) (iic_write_8bit_register(DL1A_IIC, DL1A_DEV_ADDR, (reg), (data)))
#define dl1a_read_register(reg) (iic_read_8bit_register(DL1A_IIC, DL1A_DEV_ADDR, (reg)))
#define dl1a_read_registers(reg, data, len) (iic_read_8bit_registers(DL1A_IIC, DL1A_DEV_ADDR, (reg), (data), (len)))
#error "<22>ݲ<EFBFBD>֧<EFBFBD><D6A7>Ӳ<EFBFBD><D3B2>IICͨѶ"
#endif
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD>ʾ<EFBFBD><CABE>Ŀ<EFBFBD><EFBFBD><EFBFBD><E4B2A2><EFBFBD><EFBFBD><E8B1B8><EFBFBD><EFBFBD><E2B5BD><EFBFBD>źŵ<C5BA><C5B5><EFBFBD><EFBFBD><EFBFBD>
@@ -112,11 +111,11 @@ static uint8 dl1a_get_spad_info (uint8 *index, uint8 *type_is_aperture)
dl1a_write_register(0x83, 0x00);
tmp = 0x00;
while(tmp == 0x00 || tmp == 0xFF)
while(0x00 == tmp || 0xFF == tmp)
{
system_delay_ms(1);
dl1a_read_registers(0x83, &tmp, 1);
if(loop_count++ > DL1A_TIMEOUT_COUNT)
if(DL1A_TIMEOUT_COUNT < loop_count ++)
{
return_state = 1;
break;
@@ -204,11 +203,11 @@ static uint16 dl1a_encode_timeout (uint16 timeout_mclks)
uint16 ms_byte = 0;
uint16 return_data = 0;
if (timeout_mclks > 0)
if(0 < timeout_mclks)
{
// <20><>ʽ: (LSByte * 2 ^ MSByte) + 1
ls_byte = timeout_mclks - 1;
while ((ls_byte & 0xFFFFFF00) > 0)
while(0 < (ls_byte & 0xFFFFFF00))
{
ls_byte >>= 1;
ms_byte++;
@@ -247,12 +246,12 @@ static void dl1a_get_sequence_step_enables(dl1a_sequence_enables_step_struct *en
static uint8 dl1a_get_vcsel_pulse_period (dl1a_vcsel_period_type_enum type)
{
uint8 data_buffer = 0;
if (type == DL1A_VCSEL_PERIOD_PER_RANGE)
if(DL1A_VCSEL_PERIOD_PER_RANGE == type)
{
dl1a_read_registers(DL1A_PRE_RANGE_CONFIG_VCSEL_PERIOD, &data_buffer, 1);
data_buffer = decode_vcsel_period(data_buffer);
}
else if (type == DL1A_VCSEL_PERIOD_FINAL_RANGE)
else if(DL1A_VCSEL_PERIOD_FINAL_RANGE == type)
{
dl1a_read_registers(DL1A_FINAL_RANGE_CONFIG_VCSEL_PERIOD, &data_buffer, 1);
data_buffer = decode_vcsel_period(data_buffer);
@@ -294,7 +293,7 @@ static void dl1a_get_sequence_step_timeouts (dl1a_sequence_enables_step_struct c
reg16_buffer = ((uint16) reg_buffer[0] << 8) | reg_buffer[1];
timeouts->final_range_mclks = dl1a_decode_timeout(reg16_buffer);
if (enables->pre_range)
if(enables->pre_range)
{
timeouts->final_range_mclks -= timeouts->pre_range_mclks;
}
@@ -318,11 +317,11 @@ static uint8 dl1a_perform_single_ref_calibration (uint8 vhv_init_byte)
{
dl1a_write_register(DL1A_SYSRANGE_START, 0x01 | vhv_init_byte);
dl1a_read_registers(DL1A_MSRC_CONFIG_TIMEOUT_MACROP, &data_buffer, 1);
while ((data_buffer & 0x07) == 0)
while(0 == (data_buffer & 0x07))
{
system_delay_ms(1);
dl1a_read_registers(DL1A_MSRC_CONFIG_TIMEOUT_MACROP, &data_buffer, 1);
if (loop_count ++ > DL1A_TIMEOUT_COUNT)
if(DL1A_TIMEOUT_COUNT < loop_count ++)
{
return_state = 1;
break;
@@ -361,7 +360,7 @@ static uint8 dl1a_set_measurement_timing_budget (uint32 budget_us)
do
{
if (budget_us < DL1A_MIN_TIMING_BUDGET)
if(DL1A_MIN_TIMING_BUDGET > budget_us)
{
return_state = 1;
break;
@@ -524,6 +523,20 @@ void dl1a_get_distance (void)
}
}
//-------------------------------------------------------------------------------------------------------------------
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> DL1A INT <20>ж<EFBFBD><D0B6><EFBFBD>Ӧ<EFBFBD><D3A6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> void
// <20><><EFBFBD>ز<EFBFBD><D8B2><EFBFBD> void
// ʹ<><CAB9>ʾ<EFBFBD><CABE> dl1a_int_handler();
// <20><>ע<EFBFBD><D7A2>Ϣ <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ҫ<EFBFBD><D2AA> DL1A_INT_PIN <20><>Ӧ<EFBFBD><D3A6><EFBFBD>ⲿ<EFBFBD>жϴ<D0B6><CFB4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>е<EFBFBD><D0B5><EFBFBD>
//-------------------------------------------------------------------------------------------------------------------
void dl1a_int_handler (void)
{
#if DL1A_INT_ENABLE
dl1a_get_distance();
#endif
}
//-------------------------------------------------------------------------------------------------------------------
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>ʼ<EFBFBD><CABC> DL1A
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> void
@@ -534,11 +547,12 @@ void dl1a_get_distance (void)
uint8 dl1a_init (void)
{
uint32 measurement_timing_budget_us;
uint8 stop_variable;
uint8 stop_variable = 0;
uint8 return_state = 0;
uint8 reg_data_buffer ;
uint8 reg_data_buffer = 0;
uint8 ref_spad_map[6];
uint8 data_buffer[7];
uint8 i = 0;
memset(ref_spad_map, 0, 6);
memset(data_buffer, 0, 7);
@@ -548,14 +562,14 @@ uint8 dl1a_init (void)
#else
iic_init(DL1A_IIC, DL1A_DEV_ADDR, DL1A_IIC_SPEED, DL1A_SCL_PIN, DL1A_SDA_PIN);
#endif
gpio_init(DL1A_XSHUT_PIN, GPO, GPIO_HIGH, GPO_PUSH_PULL);
gpio_init(DL1A_XS_PIN, GPO, GPIO_HIGH, GPO_PUSH_PULL);
do
{
system_delay_ms(100);
gpio_low(DL1A_XSHUT_PIN);
gpio_low(DL1A_XS_PIN);
system_delay_ms(50);
gpio_high(DL1A_XSHUT_PIN);
gpio_high(DL1A_XS_PIN);
system_delay_ms(100);
// -------------------------------- DL1A <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʼ<EFBFBD><CABC> --------------------------------
@@ -583,7 +597,7 @@ uint8 dl1a_init (void)
// -------------------------------- DL1A <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʼ<EFBFBD><CABC> --------------------------------
// -------------------------------- DL1A <20><><EFBFBD>ó<EFBFBD>ʼ<EFBFBD><CABC> --------------------------------
if (dl1a_get_spad_info(&data_buffer[0], &data_buffer[1]))
if(dl1a_get_spad_info(&data_buffer[0], &data_buffer[1]))
{
return_state = 1;
zf_log(0, "DL1A self check error.");
@@ -600,25 +614,25 @@ uint8 dl1a_init (void)
dl1a_write_register(DL1A_GLOBAL_CONFIG_REF_EN_START_SELECT, 0xB4);
data_buffer[2] = data_buffer[1] ? 12 : 0; // 12 is the first aperture spad
for (uint8 i = 0; i < 48; i++)
for(i = 0; 48 > i; i ++)
{
if (i < data_buffer[2] || data_buffer[3] == data_buffer[0])
if(i < data_buffer[2] || data_buffer[3] == data_buffer[0])
{
// <20><>λ<EFBFBD><CEBB><EFBFBD><EFBFBD>Ӧ<EFBFBD><D3A6><EFBFBD>õĵ<C3B5>һ<EFBFBD><D2BB>λ
// <20><><EFBFBD><EFBFBD> (eference_spad_count) λ<><CEBB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// <20><><EFBFBD>˴<EFBFBD>λΪ<CEBB><CEAA>
ref_spad_map[i / 8] &= ~(1 << (i % 8));
}
else if ((ref_spad_map[i / 8] >> (i % 8)) & 0x1)
else if((ref_spad_map[i / 8] >> (i % 8)) & 0x1)
{
data_buffer[3]++;
data_buffer[3] ++;
}
}
data_buffer[0] = DL1A_GLOBAL_CONFIG_SPAD_ENABLES_REF_0;
for(uint8 i = 1; i < 7; i++)
for(i = 1; 7 > i; i ++)
{
data_buffer[1] = ref_spad_map[i-1];
data_buffer[1] = ref_spad_map[i - 1];
}
dl1a_write_array(data_buffer, 7);
@@ -720,14 +734,14 @@ uint8 dl1a_init (void)
// -------------------------------- DL1A <20><><EFBFBD>ó<EFBFBD>ʼ<EFBFBD><CABC> --------------------------------
dl1a_write_register(DL1A_SYSTEM_SEQUENCE_CONFIG, 0x01);
if (dl1a_perform_single_ref_calibration(0x40))
if(dl1a_perform_single_ref_calibration(0x40))
{
return_state = 1;
zf_log(0, "DL1A perform single reference calibration error.");
break;
}
dl1a_write_register(DL1A_SYSTEM_SEQUENCE_CONFIG, 0x02);
if (dl1a_perform_single_ref_calibration(0x00))
if(dl1a_perform_single_ref_calibration(0x00))
{
return_state = 1;
zf_log(0, "DL1A perform single reference calibration error.");
@@ -748,5 +762,10 @@ uint8 dl1a_init (void)
dl1a_write_register(DL1A_SYSRANGE_START, 0x02);
}while(0);
#if DL1A_INT_ENABLE
exti_init(DL1A_INT_PIN, EXTI_TRIGGER_FALLING);
dl1a_int_handler();
dl1a_finsh_flag = 0;
#endif
return return_state;
}

View File

@@ -31,6 +31,7 @@
* <20>޸ļ<DEB8>¼
* <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><>ע
* 2022-09-15 pudding first version
* 2023-04-28 pudding <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ע<EFBFBD><D7A2>˵<EFBFBD><CBB5>
********************************************************************************************************************/
/*********************************************************************************************************************
* <20><><EFBFBD>߶<EFBFBD><DFB6>
@@ -54,21 +55,39 @@
// <20><>Ҫע<D2AA><D7A2><EFBFBD><EFBFBD><EFBFBD><EFBFBD> DL1A <20><><EFBFBD><EFBFBD>֧<EFBFBD><D6A7> 400KHz <20><> IIC ͨ<><CDA8><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// <20><>Ҫע<D2AA><D7A2><EFBFBD><EFBFBD><EFBFBD><EFBFBD> DL1A <20><><EFBFBD><EFBFBD>֧<EFBFBD><D6A7> 400KHz <20><> IIC ͨ<><CDA8><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
#define DL1A_USE_SOFT_IIC (1) // Ĭ<><C4AC>ʹ<EFBFBD><CAB9><EFBFBD><EFBFBD><EFBFBD><EFBFBD> IIC <EFBFBD><EFBFBD>ʽ<EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>ʹ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> IIC <20><>ʽ
#if DL1A_USE_SOFT_IIC // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD>ɫ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>IJ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȷ<EFBFBD><EFBFBD> <EFBFBD><EFBFBD>ɫ<EFBFBD>ҵľ<EFBFBD><EFBFBD><EFBFBD>û<EFBFBD><EFBFBD><EFBFBD>õ<EFBFBD>
//=================================================<EFBFBD><EFBFBD><EFBFBD><EFBFBD> DL1A<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ģ<EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>================================================
#define DL1A_USE_SOFT_IIC (1) // Ĭ<EFBFBD><EFBFBD>ʹ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> IIC <20><>ʽ<EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʹ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> IIC <20><>ʽ
#if DL1A_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 DL1A_SOFT_IIC_DELAY (100) // <20><><EFBFBD><EFBFBD> IIC <20><>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD> <20><>ֵԽС IIC ͨ<><CDA8><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Խ<EFBFBD><D4BD>
#define DL1A_SCL_PIN (P33_4) // <20><><EFBFBD><EFBFBD> IIC SCL <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> VL53L0X <20><> SCL <20><><EFBFBD><EFBFBD>
#define DL1A_SDA_PIN (P33_5) // <20><><EFBFBD><EFBFBD> IIC SDA <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> VL53L0X <20><> SDA <20><><EFBFBD><EFBFBD>
#define DL1A_SOFT_IIC_DELAY (100) // <20><><EFBFBD><EFBFBD> IIC <20><>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD> <20><>ֵԽС IIC ͨ<><CDA8><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Խ<EFBFBD><D4BD>
#define DL1A_SCL_PIN (P33_4) // <20><><EFBFBD><EFBFBD> IIC SCL <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> VL53L0X <20><> SCL <20><><EFBFBD><EFBFBD>
#define DL1A_SDA_PIN (P33_5) // <20><><EFBFBD><EFBFBD> IIC SDA <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> VL53L0X <20><> SDA <20><><EFBFBD><EFBFBD>
//====================================================<3D><><EFBFBD><EFBFBD> IIC <20><><EFBFBD><EFBFBD>====================================================
#else
#error "<22>ݲ<EFBFBD>֧<EFBFBD><D6A7>Ӳ<EFBFBD><D3B2>IICͨѶ"
#endif
#define DL1A_XSHUT_PIN (P20_10)
#define DL1A_TIMEOUT_COUNT (0x00FF) // VL53L0X <20><>ʱ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
#define DL1A_XS_PIN (P20_10)
#define DL1A_INT_ENABLE ( 1 ) // <EFBFBD>Ƿ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> INT <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Զ<EFBFBD><D4B6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
#if DL1A_INT_ENABLE
#define DL1A_INT_PIN (ERU_CH1_REQ10_P14_3)
#endif
#define DL1A_TIMEOUT_COUNT (0x00FF) // VL53L0X <20><>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD>
//================================================<3D><><EFBFBD><EFBFBD> DL1A <20>ڲ<EFBFBD><DAB2><EFBFBD>ַ================================================
#define DL1A_MIN_TIMING_BUDGET (20000)
#define DL1A_GET_START_OVERHEAD (1910)
#define DL1A_SET_START_OVERHEAD (1320)
#define DL1A_END_OVERHEAD (960 )
#define DL1A_TCC_OVERHEAD (590 )
#define DL1A_DSS_OVERHEAD (690 )
#define DL1A_MSRC_OVERHEAD (660 )
#define DL1A_PRERANGE_OVERHEAD (660 )
#define DL1A_FINALlRANGE_OVERHEAD (550 )
//=================================================<3D><><EFBFBD><EFBFBD> DL1A<31><41><EFBFBD><EFBFBD>ģ<EFBFBD><C4A3> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>================================================
//=================================================<3D><><EFBFBD><EFBFBD> DL1A<31><41><EFBFBD><EFBFBD>ģ<EFBFBD><C4A3> <20>ڲ<EFBFBD><DAB2><EFBFBD>ַ================================================
#define DL1A_DEV_ADDR (0x52 >> 1) // 0b0101001
#define DL1A_SYSRANGE_START (0x00)
@@ -146,20 +165,10 @@
#define DL1A_OSC_CALIBRATE_VAL (0xF8)
#define DL1A_IO_VOLTAGE_CONFIG (0x89) // IO <20><>ѹ<EFBFBD><D1B9><EFBFBD>üĴ<C3BC><C4B4><EFBFBD><EFBFBD><EFBFBD>ַ Ĭ<><C4AC> 1V8 ʹ<><CAB9><EFBFBD>޸<EFBFBD>Ϊ 2V8
//=================================================<3D><><EFBFBD><EFBFBD> DL1A<31><41><EFBFBD><EFBFBD>ģ<EFBFBD><C4A3> <20>ڲ<EFBFBD><DAB2><EFBFBD>ַ================================================
//================================================<3D><><EFBFBD><EFBFBD> DL1A <20>ڲ<EFBFBD><DAB2><EFBFBD>ַ================================================
#define DL1A_MIN_TIMING_BUDGET (20000)
#define DL1A_GET_START_OVERHEAD (1910)
#define DL1A_SET_START_OVERHEAD (1320)
#define DL1A_END_OVERHEAD (960 )
#define DL1A_TCC_OVERHEAD (590 )
#define DL1A_DSS_OVERHEAD (690 )
#define DL1A_MSRC_OVERHEAD (660 )
#define DL1A_PRERANGE_OVERHEAD (660 )
#define DL1A_FINALlRANGE_OVERHEAD (550 )
//================================================<3D><><EFBFBD><EFBFBD> DL1A<31><41><EFBFBD><EFBFBD>ģ<EFBFBD><C4A3> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E1B9B9>================================================
typedef enum
{
DL1A_VCSEL_PERIOD_PER_RANGE,
@@ -187,13 +196,20 @@ typedef struct
uint32 pre_range_us;
uint32 final_range_us;
}dl1a_sequence_timeout_step_struct;
//================================================<3D><><EFBFBD><EFBFBD> DL1A<31><41><EFBFBD><EFBFBD>ģ<EFBFBD><C4A3> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E1B9B9>================================================
extern uint8 dl1a_finsh_flag;
extern uint16 dl1a_distance_mm;
void dl1a_get_distance (void);
//=================================================<3D><><EFBFBD><EFBFBD> DL1A<31><41><EFBFBD><EFBFBD>ģ<EFBFBD><C4A3> ȫ<>ֱ<EFBFBD><D6B1><EFBFBD>================================================
extern uint8 dl1a_finsh_flag; // <20><><EFBFBD><EFBFBD><EFBFBD>ɼ<EFBFBD><C9BC><EFBFBD><EFBFBD>ɱ<EFBFBD>־λ
extern uint16 dl1a_distance_mm; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݴ<EFBFBD><DDB4>ű<EFBFBD><C5B1><EFBFBD>
//=================================================<3D><><EFBFBD><EFBFBD> DL1A<31><41><EFBFBD><EFBFBD>ģ<EFBFBD><C4A3> ȫ<>ֱ<EFBFBD><D6B1><EFBFBD>================================================
uint8 dl1a_init (void);
//=================================================<3D><><EFBFBD><EFBFBD> DL1A<31><41><EFBFBD><EFBFBD>ģ<EFBFBD><C4A3> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>================================================
void dl1a_get_distance (void); // <20><><EFBFBD><EFBFBD><EFBFBD>Ժ<EFBFBD><D4BA><EFBFBD>Ϊ<EFBFBD><CEAA>λ<EFBFBD>ķ<EFBFBD>Χ<EFBFBD><CEA7><EFBFBD><EFBFBD>
void dl1a_int_handler (void); // DL1A INT <20>ж<EFBFBD><D0B6><EFBFBD>Ӧ<EFBFBD><D3A6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
uint8 dl1a_init (void); // <20><>ʼ<EFBFBD><CABC> DL1A
//=================================================<3D><><EFBFBD><EFBFBD> DL1A<31><41><EFBFBD><EFBFBD>ģ<EFBFBD><C4A3> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>================================================
#endif

View File

@@ -30,7 +30,8 @@
*
* <20>޸ļ<DEB8>¼
* <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><>ע
* 2022-09-15 pudding first version
* 2022-09-15 pudding first version
* 2023-04-28 pudding <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ע<EFBFBD><D7A2>˵<EFBFBD><CBB5>
********************************************************************************************************************/
/********************************************************************************************************************
* <20><><EFBFBD>߶<EFBFBD><DFB6>
@@ -63,8 +64,8 @@ static uint8 gps_tau1201_receiver_buffer[GPS_TAU1201_BUFFER_SIZE]
gps_state_enum gps_gga_state = GPS_STATE_RECEIVING; // gga <20><><EFBFBD><EFBFBD>״̬
gps_state_enum gps_rmc_state = GPS_STATE_RECEIVING; // rmc <20><><EFBFBD><EFBFBD>״̬
static uint8 gps_gga_buffer[GPS_TAU1201_BUFFER_SIZE];
static uint8 gps_rmc_buffer[GPS_TAU1201_BUFFER_SIZE];
static uint8 gps_gga_buffer[GPS_TAU1201_BUFFER_SIZE]; // GGA<47><41><EFBFBD><EFBFBD><E4BBBA><EFBFBD><EFBFBD>
static uint8 gps_rmc_buffer[GPS_TAU1201_BUFFER_SIZE]; // RMC<4D><43><EFBFBD><EFBFBD><E4BBBA><EFBFBD><EFBFBD>
//-------------------------------------------------------------------------------------------------------------------
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>ȡָ<C8A1><D6B8> ',' <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
@@ -488,7 +489,7 @@ void gps_uart_callback (void)
// ʹ<><CAB9>ʾ<EFBFBD><CABE> gps_init();
// <20><>ע<EFBFBD><D7A2>Ϣ
//-------------------------------------------------------------------------------------------------------------------
uint8 gps_init (void)
void gps_init (void)
{
const uint8 set_rate[] = {0xF1, 0xD9, 0x06, 0x42, 0x14, 0x00, 0x00, 0x0A, 0x05, 0x00, 0x64, 0x00, 0x00, 0x00, 0x60, 0xEA, 0x00, 0x00, 0xD0, 0x07, 0x00, 0x00, 0xC8, 0x00, 0x00, 0x00, 0xB8, 0xED};
const uint8 open_gga[] = {0xF1, 0xD9, 0x06, 0x01, 0x03, 0x00, 0xF0, 0x00, 0x01, 0xFB, 0x10};
@@ -537,6 +538,4 @@ uint8 gps_init (void)
gps_tau1201_state = 1;
uart_rx_interrupt(GPS_TAU1201_UART, 1);
return 0;
}

View File

@@ -30,7 +30,8 @@
*
* <20>޸ļ<DEB8>¼
* <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><>ע
* 2022-09-15 pudding first version
* 2022-09-15 pudding first version
* 2023-04-28 pudding <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ע<EFBFBD><D7A2>˵<EFBFBD><CBB5>
********************************************************************************************************************/
/********************************************************************************************************************
* <20><><EFBFBD>߶<EFBFBD><DFB6>
@@ -48,46 +49,47 @@
#include "zf_common_typedef.h"
//===============================================GPS <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>====================================================
//=================================================<3D><><EFBFBD><EFBFBD> <20><>λģ<CEBB><C4A3> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>================================================
#define GPS_TAU1201_UART (UART_3)
#define GPS_TAU1201_RX (UART3_TX_P15_6) // GPS RX<52><58><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ӵ<EFBFBD><D3B5><EFBFBD>Ƭ<EFBFBD><C6AC><EFBFBD><EFBFBD>
#define GPS_TAU1201_TX (UART3_RX_P15_7) // GPS TX<54><58><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
//===============================================GPS <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>====================================================
#define ANGLE_TO_RAD(x) ((x) * PI / 180.0) // <20>Ƕ<EFBFBD>ת<EFBFBD><D7AA>Ϊ<EFBFBD><CEAA><EFBFBD><EFBFBD>
#define RAD_TO_ANGLE(x) ((x) * 180.0 / PI) // <20><><EFBFBD><EFBFBD>ת<EFBFBD><D7AA>Ϊ<EFBFBD>Ƕ<EFBFBD>
#define PI (3.1415926535898)
#define ANGLE_TO_RAD(x) ((x) * PI / 180.0) // <20>Ƕ<EFBFBD>ת<EFBFBD><D7AA>Ϊ<EFBFBD><CEAA><EFBFBD><EFBFBD>
#define RAD_TO_ANGLE(x) ((x) * 180.0 / PI) // <20><><EFBFBD><EFBFBD>ת<EFBFBD><D7AA>Ϊ<EFBFBD>Ƕ<EFBFBD>
#define PI (3.1415926535898)
//=================================================<3D><><EFBFBD><EFBFBD> <20><>λģ<CEBB><C4A3> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>================================================
//=============================================<3D><><EFBFBD><EFBFBD> GPS <20><><EFBFBD>ݽṹ<DDBD><E1B9B9>==================================================
//================================================<3D><><EFBFBD><EFBFBD> <20><>λģ<CEBB><C4A3> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E1B9B9>================================================
typedef struct
{
uint16 year;
uint8 month;
uint8 day;
uint8 hour;
uint8 minute;
uint8 second;
uint16 year;
uint8 month;
uint8 day;
uint8 hour;
uint8 minute;
uint8 second;
}gps_time_struct;
typedef struct
{
gps_time_struct time; // ʱ<><CAB1>-
uint8 state; // <20><>Ч״̬ 1<><31><EFBFBD><EFBFBD>λ<EFBFBD><CEBB>Ч 0<><30><EFBFBD><EFBFBD>λ<EFBFBD><CEBB>Ч
uint16 latitude_degree; // <20><>
uint16 latitude_cent; // <20><>
uint16 latitude_second; // <20><>
uint16 longitude_degree; // <20><>
uint16 longitude_cent; // <20><>
uint16 longitude_second; // <20><>
double latitude; // γ<><CEB3>
double longitude; // <20><><EFBFBD><EFBFBD>
int8 ns; // γ<>Ȱ<EFBFBD><C8B0><EFBFBD> N<><4E><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>򣩻<EFBFBD> S<><53><EFBFBD>ϰ<EFBFBD><CFB0><EFBFBD><EFBFBD><EFBFBD>
int8 ew; // <20><><EFBFBD>Ȱ<EFBFBD><C8B0><EFBFBD> E<><45><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> W<><57><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
float speed; // <20>ٶȣ<D9B6><C8A3><EFBFBD><EFBFBD><EFBFBD>/ÿСʱ<D0A1><CAB1>
float direction; // <20><><EFBFBD><EFBFBD><E6BABD><EFBFBD><EFBFBD>000.0~359.9 <20>ȣ<EFBFBD><C8A3><EFBFBD><EFBFBD><EFBFBD><E6B1B1>Ϊ<EFBFBD>ο<EFBFBD><CEBF><EFBFBD>׼<EFBFBD><D7BC>
gps_time_struct time; // ʱ<><CAB1>-
uint8 state; // <20><>Ч״̬ 1<><31><EFBFBD><EFBFBD>λ<EFBFBD><CEBB>Ч 0<><30><EFBFBD><EFBFBD>λ<EFBFBD><CEBB>Ч
uint16 latitude_degree; // <20><>
uint16 latitude_cent; // <20><>
uint16 latitude_second; // <20><>
uint16 longitude_degree; // <20><>
uint16 longitude_cent; // <20><>
uint16 longitude_second; // <20><>
double latitude; // γ<><CEB3>
double longitude; // <20><><EFBFBD><EFBFBD>
int8 ns; // γ<>Ȱ<EFBFBD><C8B0><EFBFBD> N<><4E><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>򣩻<EFBFBD> S<><53><EFBFBD>ϰ<EFBFBD><CFB0><EFBFBD><EFBFBD><EFBFBD>
int8 ew; // <20><><EFBFBD>Ȱ<EFBFBD><C8B0><EFBFBD> E<><45><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> W<><57><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
float speed; // <20>ٶȣ<D9B6><C8A3><EFBFBD><EFBFBD><EFBFBD>/ÿСʱ<D0A1><CAB1>
float direction; // <20><><EFBFBD><EFBFBD><E6BABD><EFBFBD><EFBFBD>000.0~359.9 <20>ȣ<EFBFBD><C8A3><EFBFBD><EFBFBD><EFBFBD><E6B1B1>Ϊ<EFBFBD>ο<EFBFBD><CEBF><EFBFBD>׼<EFBFBD><D7BC>
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ<EFBFBD><CFA2>GNGGA<47><41><EFBFBD><EFBFBD><EFBFBD>л<EFBFBD>ȡ
uint8 satellite_used; // <20><><EFBFBD>ڶ<EFBFBD>λ<EFBFBD><CEBB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
float height; // <20>߶<EFBFBD>
uint8 satellite_used; // <20><><EFBFBD>ڶ<EFBFBD>λ<EFBFBD><CEBB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
float height; // <20>߶<EFBFBD>
}gps_info_struct;
typedef enum
@@ -96,21 +98,20 @@ typedef enum
GPS_STATE_RECEIVED, // <20><><EFBFBD>ݽ<EFBFBD><DDBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
GPS_STATE_PARSING, // <20><><EFBFBD>ڽ<EFBFBD><DABD><EFBFBD>
}gps_state_enum;
//=============================================<3D><><EFBFBD><EFBFBD> GPS <20><><EFBFBD>ݽ<EFBFBD><EFBFBD>==================================================
//================================================<EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD>λģ<EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>================================================
//==============================================<3D><><EFBFBD><EFBFBD> GPS <20><><EFBFBD>ݱ<EFBFBD><DDB1><EFBFBD>===================================================
extern gps_info_struct gps_tau1201;
extern uint8 gps_tau1201_flag;
//==============================================<3D><><EFBFBD><EFBFBD> GPS <20><><EFBFBD>ݱ<EFBFBD><DDB1><EFBFBD>===================================================
//================================================GPS <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>====================================================
//=================================================<3D><><EFBFBD><EFBFBD> <20><>λģ<CEBB><C4A3> ȫ<>ֱ<EFBFBD><D6B1><EFBFBD>================================================
extern gps_info_struct gps_tau1201; // GPS<50><53><EFBFBD><EFBFBD>֮<EFBFBD><D6AE><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
extern uint8 gps_tau1201_flag; // 1<><31><EFBFBD>ɼ<EFBFBD><C9BC><EFBFBD><EFBFBD>ɵȴ<C9B5><C8B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> 0<><30>û<EFBFBD>вɼ<D0B2><C9BC><EFBFBD><EFBFBD><EFBFBD>
//=================================================<3D><><EFBFBD><EFBFBD> <20><>λģ<CEBB><C4A3> ȫ<>ֱ<EFBFBD><D6B1><EFBFBD>================================================
//=================================================<3D><><EFBFBD><EFBFBD> <20><>λģ<CEBB><C4A3> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>================================================
double get_two_points_distance (double lat1, double lng1, double lat2, double lng2); // <20><><EFBFBD><EFBFBD><EFBFBD>ӵ<EFBFBD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD>ڶ<EFBFBD><DAB6><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ľ<EFBFBD><C4BE><EFBFBD>(<28><>λ<EFBFBD><CEBB>m)
double get_two_points_azimuth (double lat1, double lon1, double lat2, double lon2); // <20><><EFBFBD><EFBFBD><EFBFBD>ӵ<EFBFBD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD>ڶ<EFBFBD><DAB6><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ķ<EFBFBD>λ<EFBFBD><CEBB>(<28><>λ<EFBFBD><CEBB><EFBFBD><EFBFBD>)
uint8 gps_data_parse (void); // <20><><EFBFBD><EFBFBD>GPS<50><53><EFBFBD><EFBFBD>
void gps_uart_callback (void); // GPS<50>ص<EFBFBD><D8B5><EFBFBD><EFBFBD><EFBFBD>
uint8 gps_init (void); // GPS<EFBFBD><EFBFBD>ʼ<EFBFBD><EFBFBD>
//================================================GPS <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>====================================================
void gps_init (void); // GPS<50><53>ʼ<EFBFBD><CABC>
//=================================================<3D><><EFBFBD><EFBFBD> <20><>λģ<CEBB><C4A3> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>================================================
#endif

View File

@@ -31,6 +31,7 @@
* <20>޸ļ<DEB8>¼
* <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><>ע
* 2022-09-15 pudding first version
* 2023-04-28 pudding <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ע<EFBFBD><D7A2>˵<EFBFBD><CBB5>
********************************************************************************************************************/
/*********************************************************************************************************************
* <20><><EFBFBD>߶<EFBFBD><DFB6>
@@ -61,8 +62,9 @@
#include "zf_driver_soft_iic.h"
#include "zf_device_icm20602.h"
int16 icm20602_gyro_x = 0, icm20602_gyro_y = 0, icm20602_gyro_z = 0; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> gyro (<28><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>)
int16 icm20602_acc_x = 0, icm20602_acc_y = 0, icm20602_acc_z = 0; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ٶȼ<D9B6><C8BC><EFBFBD><EFBFBD><EFBFBD> acc (accelerometer <20><><EFBFBD>ٶȼ<D9B6>)
int16 icm20602_gyro_x = 0, icm20602_gyro_y = 0, icm20602_gyro_z = 0; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> gyro (<28><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>)
int16 icm20602_acc_x = 0, icm20602_acc_y = 0, icm20602_acc_z = 0; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ٶȼ<D9B6><C8BC><EFBFBD><EFBFBD><EFBFBD> acc (accelerometer <20><><EFBFBD>ٶȼ<D9B6>)
float icm20602_transition_factor[2] = {4096, 16.4}; // ת<><D7AA>ʵ<EFBFBD><CAB5>ֵ<EFBFBD>ı<EFBFBD><C4B1><EFBFBD>
#if ICM20602_USE_SOFT_IIC
static soft_iic_info_struct icm20602_iic_struct;
@@ -159,7 +161,7 @@ static uint8 icm20602_self_check (void)
while(0x12 != dat) // <20>ж<EFBFBD> ID <20>Ƿ<EFBFBD><C7B7><EFBFBD>ȷ
{
if(timeout_count ++ > ICM20602_TIMEOUT_COUNT)
if(ICM20602_TIMEOUT_COUNT < timeout_count ++)
{
return_state = 1;
break;
@@ -204,49 +206,6 @@ void icm20602_get_gyro (void)
icm20602_gyro_z = (int16)(((uint16)dat[4] << 8 | dat[5]));
}
//-------------------------------------------------------------------------------------------------------------------
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> ICM20602 <20><><EFBFBD>ٶȼ<D9B6><C8BC><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><C4BC>ٶȼ<D9B6><C8BC><EFBFBD><EFBFBD><EFBFBD>
// <20><><EFBFBD>ز<EFBFBD><D8B2><EFBFBD> void
// ʹ<><CAB9>ʾ<EFBFBD><CABE> float data = icm20602_acc_transition(imu660ra_acc_x); //<2F><>λΪ g(m/s^2)
// <20><>ע<EFBFBD><D7A2>Ϣ
//-------------------------------------------------------------------------------------------------------------------
float icm20602_acc_transition (int16 acc_value)
{
float acc_data = 0;
switch(ICM20602_ACC_SAMPLE)
{
case 0x00: acc_data = (float)acc_value / 16384; break; // 0x00 <20><><EFBFBD>ٶȼ<D9B6><C8BC><EFBFBD><EFBFBD><EFBFBD>Ϊ:<3A><>2g <20><>ȡ<EFBFBD><C8A1><EFBFBD>ļ<EFBFBD><C4BC>ٶȼ<D9B6><C8BC><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>16384 <20><><EFBFBD><EFBFBD>ת<EFBFBD><D7AA>Ϊ<EFBFBD><CEAA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>λ<EFBFBD><CEBB><EFBFBD><EFBFBD><EFBFBD>ݣ<EFBFBD><DDA3><EFBFBD>λ<EFBFBD><CEBB>g(m/s^2)
case 0x08: acc_data = (float)acc_value / 8192; break; // 0x08 <20><><EFBFBD>ٶȼ<D9B6><C8BC><EFBFBD><EFBFBD><EFBFBD>Ϊ:<3A><>4g <20><>ȡ<EFBFBD><C8A1><EFBFBD>ļ<EFBFBD><C4BC>ٶȼ<D9B6><C8BC><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>8192 <20><><EFBFBD><EFBFBD>ת<EFBFBD><D7AA>Ϊ<EFBFBD><CEAA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>λ<EFBFBD><CEBB><EFBFBD><EFBFBD><EFBFBD>ݣ<EFBFBD><DDA3><EFBFBD>λ<EFBFBD><CEBB>g(m/s^2)
case 0x10: acc_data = (float)acc_value / 4096; break; // 0x10 <20><><EFBFBD>ٶȼ<D9B6><C8BC><EFBFBD><EFBFBD><EFBFBD>Ϊ:<3A><>8g <20><>ȡ<EFBFBD><C8A1><EFBFBD>ļ<EFBFBD><C4BC>ٶȼ<D9B6><C8BC><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>4096 <20><><EFBFBD><EFBFBD>ת<EFBFBD><D7AA>Ϊ<EFBFBD><CEAA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>λ<EFBFBD><CEBB><EFBFBD><EFBFBD><EFBFBD>ݣ<EFBFBD><DDA3><EFBFBD>λ<EFBFBD><CEBB>g(m/s^2)
case 0x18: acc_data = (float)acc_value / 2048; break; // 0x18 <20><><EFBFBD>ٶȼ<D9B6><C8BC><EFBFBD><EFBFBD><EFBFBD>Ϊ:<3A><>16g <20><>ȡ<EFBFBD><C8A1><EFBFBD>ļ<EFBFBD><C4BC>ٶȼ<D9B6><C8BC><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>2048 <20><><EFBFBD><EFBFBD>ת<EFBFBD><D7AA>Ϊ<EFBFBD><CEAA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>λ<EFBFBD><CEBB><EFBFBD><EFBFBD><EFBFBD>ݣ<EFBFBD><DDA3><EFBFBD>λ<EFBFBD><CEBB>g(m/s^2)
default: break;
}
return acc_data;
}
//-------------------------------------------------------------------------------------------------------------------
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> ICM20602 <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 = icm20602_gyro_transition(imu660ra_gyro_x); // <20><>λΪ<CEBB><CEAA>/s
// <20><>ע<EFBFBD><D7A2>Ϣ
//-------------------------------------------------------------------------------------------------------------------
float icm20602_gyro_transition (int16 gyro_value)
{
float gyro_data = 0;
switch(ICM20602_GYR_SAMPLE)
{
case 0x00: gyro_data = (float)gyro_value / 131.2f; break; // 0x00 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ:<3A><>250 dps <20><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݳ<EFBFBD><DDB3><EFBFBD>131 <20><><EFBFBD><EFBFBD>ת<EFBFBD><D7AA>Ϊ<EFBFBD><CEAA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>λ<EFBFBD><CEBB><EFBFBD><EFBFBD><EFBFBD>ݣ<EFBFBD><DDA3><EFBFBD>λΪ<CEBB><CEAA><EFBFBD><EFBFBD>/s
case 0x08: gyro_data = (float)gyro_value / 65.6f; break; // 0x08 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ:<3A><>500 dps <20><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݳ<EFBFBD><DDB3><EFBFBD>65.5 <20><><EFBFBD><EFBFBD>ת<EFBFBD><D7AA>Ϊ<EFBFBD><CEAA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>λ<EFBFBD><CEBB><EFBFBD><EFBFBD><EFBFBD>ݣ<EFBFBD><DDA3><EFBFBD>λΪ<CEBB><CEAA><EFBFBD><EFBFBD>/s
case 0x10: gyro_data = (float)gyro_value / 32.8f; break; // 0x10 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ:<3A><>1000dps <20><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݳ<EFBFBD><DDB3><EFBFBD>32.8 <20><><EFBFBD><EFBFBD>ת<EFBFBD><D7AA>Ϊ<EFBFBD><CEAA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>λ<EFBFBD><CEBB><EFBFBD><EFBFBD><EFBFBD>ݣ<EFBFBD><DDA3><EFBFBD>λΪ<CEBB><CEAA><EFBFBD><EFBFBD>/s
case 0x18: gyro_data = (float)gyro_value / 16.4f; break; // 0x18 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ:<3A><>2000dps <20><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݳ<EFBFBD><DDB3><EFBFBD>16.4 <20><><EFBFBD><EFBFBD>ת<EFBFBD><D7AA>Ϊ<EFBFBD><CEAA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>λ<EFBFBD><CEBB><EFBFBD><EFBFBD><EFBFBD>ݣ<EFBFBD><DDA3><EFBFBD>λΪ<CEBB><CEAA><EFBFBD><EFBFBD>/s
default: break;
}
return gyro_data;
}
//-------------------------------------------------------------------------------------------------------------------
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>ʼ<EFBFBD><CABC> ICM20602
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> void
@@ -286,7 +245,7 @@ uint8 icm20602_init (void)
do
{ // <20>ȴ<EFBFBD><C8B4><EFBFBD>λ<EFBFBD>ɹ<EFBFBD>
val = icm20602_read_register(ICM20602_PWR_MGMT_1);
if(timeout_count ++ > ICM20602_TIMEOUT_COUNT)
if(ICM20602_TIMEOUT_COUNT < timeout_count ++)
{
// <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> ICM20602 <20>Լ<EFBFBD><D4BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD>˳<EFBFBD><CBB3><EFBFBD>
@@ -305,20 +264,84 @@ uint8 icm20602_init (void)
icm20602_write_register(ICM20602_PWR_MGMT_2, 0x00); // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ǻͼ<C7BA><CDBC>ٶȼ<D9B6>
icm20602_write_register(ICM20602_CONFIG, 0x01); // 176HZ 1KHZ
icm20602_write_register(ICM20602_SMPLRT_DIV, 0x07); // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> SAMPLE_RATE = INTERNAL_SAMPLE_RATE / (1 + SMPLRT_DIV)
icm20602_write_register(ICM20602_GYRO_CONFIG, ICM20602_GYR_SAMPLE); // <20><>2000 dps
icm20602_write_register(ICM20602_ACCEL_CONFIG, ICM20602_ACC_SAMPLE); // <20><>8g
icm20602_write_register(ICM20602_ACCEL_CONFIG_2, 0x03); // Average 4 samples 44.8HZ //0x23 Average 16 samples
// ICM20602_GYR_CONFIG<49>Ĵ<EFBFBD><C4B4><EFBFBD>
// <20><><EFBFBD><EFBFBD>Ϊ:0x00 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ:<3A><>250 dps <20><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݳ<EFBFBD><DDB3><EFBFBD>131.2 <20><><EFBFBD><EFBFBD>ת<EFBFBD><D7AA>Ϊ<EFBFBD><CEAA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>λ<EFBFBD><CEBB><EFBFBD><EFBFBD><EFBFBD>ݣ<EFBFBD><DDA3><EFBFBD>λΪ<CEBB><CEAA><EFBFBD><EFBFBD>/s
// <20><><EFBFBD><EFBFBD>Ϊ:0x08 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ:<3A><>500 dps <20><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݳ<EFBFBD><DDB3><EFBFBD>65.6 <20><><EFBFBD><EFBFBD>ת<EFBFBD><D7AA>Ϊ<EFBFBD><CEAA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>λ<EFBFBD><CEBB><EFBFBD><EFBFBD><EFBFBD>ݣ<EFBFBD><DDA3><EFBFBD>λΪ<CEBB><CEAA><EFBFBD><EFBFBD>/s
// <20><><EFBFBD><EFBFBD>Ϊ:0x10 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ:<3A><>1000dps <20><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݳ<EFBFBD><DDB3><EFBFBD>32.8 <20><><EFBFBD><EFBFBD>ת<EFBFBD><D7AA>Ϊ<EFBFBD><CEAA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>λ<EFBFBD><CEBB><EFBFBD><EFBFBD><EFBFBD>ݣ<EFBFBD><DDA3><EFBFBD>λΪ<CEBB><CEAA><EFBFBD><EFBFBD>/s
// <20><><EFBFBD><EFBFBD>Ϊ:0x18 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ:<3A><>2000dps <20><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݳ<EFBFBD><DDB3><EFBFBD>16.4 <20><><EFBFBD><EFBFBD>ת<EFBFBD><D7AA>Ϊ<EFBFBD><CEAA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>λ<EFBFBD><CEBB><EFBFBD><EFBFBD><EFBFBD>ݣ<EFBFBD><DDA3><EFBFBD>λΪ<CEBB><CEAA><EFBFBD><EFBFBD>/s
// ICM20602_ACCEL_CONFIG<49>Ĵ<EFBFBD><C4B4><EFBFBD>
// <20><><EFBFBD><EFBFBD>Ϊ:0x00 <20><><EFBFBD>ٶȼ<D9B6><C8BC><EFBFBD><EFBFBD><EFBFBD>Ϊ:<EFBFBD><EFBFBD>2g <20><>ȡ<EFBFBD><C8A1><EFBFBD>ļ<EFBFBD><C4BC>ٶȼ<D9B6><C8BC><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD>16384 <EFBFBD><EFBFBD><EFBFBD><EFBFBD>ת<EFBFBD><EFBFBD>Ϊ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>λ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݣ<EFBFBD><EFBFBD><EFBFBD>λ<EFBFBD><EFBFBD>g(m/s^2)
// <20><><EFBFBD><EFBFBD>Ϊ:0x08 <20><><EFBFBD>ٶȼ<D9B6><C8BC><EFBFBD><EFBFBD><EFBFBD>Ϊ:<EFBFBD><EFBFBD>4g <20><>ȡ<EFBFBD><C8A1><EFBFBD>ļ<EFBFBD><C4BC>ٶȼ<D9B6><C8BC><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>8192 <20><><EFBFBD><EFBFBD>ת<EFBFBD><D7AA>Ϊ<EFBFBD><CEAA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>λ<EFBFBD><CEBB><EFBFBD><EFBFBD><EFBFBD>ݣ<EFBFBD><EFBFBD><EFBFBD>λ<EFBFBD><EFBFBD>g(m/s^2)
// <20><><EFBFBD><EFBFBD>Ϊ:0x10 <20><><EFBFBD>ٶȼ<D9B6><C8BC><EFBFBD><EFBFBD><EFBFBD>Ϊ:<EFBFBD><EFBFBD>8g <20><>ȡ<EFBFBD><C8A1><EFBFBD>ļ<EFBFBD><C4BC>ٶȼ<D9B6><C8BC><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>4096 <20><><EFBFBD><EFBFBD>ת<EFBFBD><D7AA>Ϊ<EFBFBD><CEAA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>λ<EFBFBD><CEBB><EFBFBD><EFBFBD><EFBFBD>ݣ<EFBFBD><EFBFBD><EFBFBD>λ<EFBFBD><EFBFBD>g(m/s^2)
// <20><><EFBFBD><EFBFBD>Ϊ:0x18 <20><><EFBFBD>ٶȼ<D9B6><C8BC><EFBFBD><EFBFBD><EFBFBD>Ϊ:<EFBFBD><EFBFBD>16g <20><>ȡ<EFBFBD><C8A1><EFBFBD>ļ<EFBFBD><C4BC>ٶȼ<D9B6><C8BC><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>2048 <20><><EFBFBD><EFBFBD>ת<EFBFBD><D7AA>Ϊ<EFBFBD><CEAA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>λ<EFBFBD><CEBB><EFBFBD><EFBFBD><EFBFBD>ݣ<EFBFBD><EFBFBD><EFBFBD>λ<EFBFBD><EFBFBD>g(m/s^2)
// ICM20602_ACCEL_CONFIG <EFBFBD>Ĵ<EFBFBD><EFBFBD><EFBFBD>
// <20><><EFBFBD><EFBFBD>Ϊ 0x00 <20><><EFBFBD>ٶȼ<D9B6><C8BC><EFBFBD><EFBFBD><EFBFBD>Ϊ <EFBFBD><EFBFBD>2 g <20><>ȡ<EFBFBD><C8A1><EFBFBD>ļ<EFBFBD><C4BC>ٶȼ<D9B6><C8BC><EFBFBD><EFBFBD>ݳ<EFBFBD><EFBFBD><EFBFBD> 16384 <20><><EFBFBD><EFBFBD>ת<EFBFBD><D7AA>Ϊ<EFBFBD><CEAA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>λ<EFBFBD><CEBB><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD>λ g(m/s^2)
// <20><><EFBFBD><EFBFBD>Ϊ 0x08 <20><><EFBFBD>ٶȼ<D9B6><C8BC><EFBFBD><EFBFBD><EFBFBD>Ϊ <EFBFBD><EFBFBD>4 g <20><>ȡ<EFBFBD><C8A1><EFBFBD>ļ<EFBFBD><C4BC>ٶȼ<D9B6><C8BC><EFBFBD><EFBFBD>ݳ<EFBFBD><EFBFBD><EFBFBD> 8192 <20><><EFBFBD><EFBFBD>ת<EFBFBD><D7AA>Ϊ<EFBFBD><CEAA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>λ<EFBFBD><CEBB><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD>λ g(m/s^2)
// <20><><EFBFBD><EFBFBD>Ϊ 0x10 <20><><EFBFBD>ٶȼ<D9B6><C8BC><EFBFBD><EFBFBD><EFBFBD>Ϊ <EFBFBD><EFBFBD>8 g <20><>ȡ<EFBFBD><C8A1><EFBFBD>ļ<EFBFBD><C4BC>ٶȼ<D9B6><C8BC><EFBFBD><EFBFBD>ݳ<EFBFBD><EFBFBD><EFBFBD> 4096 <20><><EFBFBD><EFBFBD>ת<EFBFBD><D7AA>Ϊ<EFBFBD><CEAA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>λ<EFBFBD><CEBB><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD>λ g(m/s^2)
// <20><><EFBFBD><EFBFBD>Ϊ 0x18 <20><><EFBFBD>ٶȼ<D9B6><C8BC><EFBFBD><EFBFBD><EFBFBD>Ϊ <EFBFBD><EFBFBD>16 g <20><>ȡ<EFBFBD><C8A1><EFBFBD>ļ<EFBFBD><C4BC>ٶȼ<D9B6><C8BC><EFBFBD><EFBFBD>ݳ<EFBFBD><EFBFBD><EFBFBD> 2048 <20><><EFBFBD><EFBFBD>ת<EFBFBD><D7AA>Ϊ<EFBFBD><CEAA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>λ<EFBFBD><CEBB><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD>λ g(m/s^2)
switch(ICM20602_ACC_SAMPLE_DEFAULT)
{
case ICM20602_ACC_SAMPLE_SGN_2G:
{
icm20602_write_register(ICM20602_ACCEL_CONFIG, 0x00);
icm20602_transition_factor[0] = 16384;
}break;
case ICM20602_ACC_SAMPLE_SGN_4G:
{
icm20602_write_register(ICM20602_ACCEL_CONFIG, 0x08);
icm20602_transition_factor[0] = 8192;
}break;
case ICM20602_ACC_SAMPLE_SGN_8G:
{
icm20602_write_register(ICM20602_ACCEL_CONFIG, 0x10);
icm20602_transition_factor[0] = 4096;
}break;
case ICM20602_ACC_SAMPLE_SGN_16G:
{
icm20602_write_register(ICM20602_ACCEL_CONFIG, 0x18);
icm20602_transition_factor[0] = 2048;
}break;
default:
{
zf_log(0, "ICM20602_ACC_SAMPLE_DEFAULT set error.");
return_state = 1;
}break;
}
if(1 == return_state)
{
break;
}
// ICM20602_GYRO_CONFIG <20>Ĵ<EFBFBD><C4B4><EFBFBD>
// <20><><EFBFBD><EFBFBD>Ϊ 0x00 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ <20><>250 dps <20><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݳ<EFBFBD><DDB3><EFBFBD> 131 <20><><EFBFBD><EFBFBD>ת<EFBFBD><D7AA>Ϊ<EFBFBD><CEAA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>λ<EFBFBD><CEBB><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>λΪ <20><>/s
// <20><><EFBFBD><EFBFBD>Ϊ 0x08 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ <20><>500 dps <20><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݳ<EFBFBD><DDB3><EFBFBD> 65.5 <20><><EFBFBD><EFBFBD>ת<EFBFBD><D7AA>Ϊ<EFBFBD><CEAA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>λ<EFBFBD><CEBB><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>λΪ <20><>/s
// <20><><EFBFBD><EFBFBD>Ϊ 0x10 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ <20><>1000 dps <20><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݳ<EFBFBD><DDB3><EFBFBD> 32.8 <20><><EFBFBD><EFBFBD>ת<EFBFBD><D7AA>Ϊ<EFBFBD><CEAA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>λ<EFBFBD><CEBB><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>λΪ <20><>/s
// <20><><EFBFBD><EFBFBD>Ϊ 0x18 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ <20><>2000 dps <20><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݳ<EFBFBD><DDB3><EFBFBD> 16.4 <20><><EFBFBD><EFBFBD>ת<EFBFBD><D7AA>Ϊ<EFBFBD><CEAA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>λ<EFBFBD><CEBB><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>λΪ <20><>/s
switch(ICM20602_GYRO_SAMPLE_DEFAULT)
{
case ICM20602_GYRO_SAMPLE_SGN_250DPS:
{
icm20602_write_register(ICM20602_GYRO_CONFIG, 0x00);
icm20602_transition_factor[1] = 131.0;
}break;
case ICM20602_GYRO_SAMPLE_SGN_500DPS:
{
icm20602_write_register(ICM20602_GYRO_CONFIG, 0x08);
icm20602_transition_factor[1] = 65.5;
}break;
case ICM20602_GYRO_SAMPLE_SGN_1000DPS:
{
icm20602_write_register(ICM20602_GYRO_CONFIG, 0x10);
icm20602_transition_factor[1] = 32.8;
}break;
case ICM20602_GYRO_SAMPLE_SGN_2000DPS:
{
icm20602_write_register(ICM20602_GYRO_CONFIG, 0x18);
icm20602_transition_factor[1] = 16.4;
}break;
default:
{
zf_log(0, "ICM20602_GYRO_SAMPLE_DEFAULT set error.");
return_state = 1;
}break;
}
if(1 == return_state)
{
break;
}
icm20602_write_register(ICM20602_ACCEL_CONFIG_2, 0x03); // Average 4 samples 44.8HZ //0x23 Average 16 samples
}while(0);
return return_state;
}

View File

@@ -31,6 +31,7 @@
* <20>޸ļ<DEB8>¼
* <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><>ע
* 2022-09-15 pudding first version
* 2023-04-28 pudding <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ע<EFBFBD><D7A2>˵<EFBFBD><CBB5>
********************************************************************************************************************/
/*********************************************************************************************************************
* <20><><EFBFBD>߶<EFBFBD><DFB6>
@@ -58,6 +59,8 @@
#include "zf_common_typedef.h"
//================================================<3D><><EFBFBD><EFBFBD> ICM20602 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>================================================
// ICM20602_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>
#define ICM20602_USE_SOFT_IIC (0) // Ĭ<><C4AC>ʹ<EFBFBD><CAB9>Ӳ<EFBFBD><D3B2> SPI <20><>ʽ<EFBFBD><CABD><EFBFBD><EFBFBD>
#if ICM20602_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>====================================================
@@ -66,7 +69,6 @@
#define ICM20602_SDA_PIN (P20_14) // <20><><EFBFBD><EFBFBD> IIC SDA <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> ICM20602 <20><> SDA <20><><EFBFBD><EFBFBD>
//====================================================<3D><><EFBFBD><EFBFBD> IIC <20><><EFBFBD><EFBFBD>====================================================
#else
//====================================================Ӳ<><D3B2> SPI <20><><EFBFBD><EFBFBD>====================================================
#define ICM20602_SPI_SPEED (10 * 1000 * 1000) // Ӳ<><D3B2> SPI <20><><EFBFBD><EFBFBD>
#define ICM20602_SPI (SPI_0) // Ӳ<><D3B2> SPI <20><>
@@ -78,7 +80,27 @@
#define ICM20602_CS_PIN (P20_13) // CS Ƭѡ<C6AC><D1A1><EFBFBD><EFBFBD>
#define ICM20602_CS(x) ((x) ? (gpio_high(ICM20602_CS_PIN)) : (gpio_low(ICM20602_CS_PIN)))
typedef enum
{
ICM20602_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)
ICM20602_ACC_SAMPLE_SGN_4G , // <20><><EFBFBD>ٶȼ<D9B6><C8BC><EFBFBD><EFBFBD><EFBFBD> <20><>4G (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)
ICM20602_ACC_SAMPLE_SGN_8G , // <20><><EFBFBD>ٶȼ<D9B6><C8BC><EFBFBD><EFBFBD><EFBFBD> <20><>8G (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)
ICM20602_ACC_SAMPLE_SGN_16G, // <20><><EFBFBD>ٶȼ<D9B6><C8BC><EFBFBD><EFBFBD><EFBFBD> <20><>16G (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)
}icm20602_acc_sample_config;
typedef enum
{
ICM20602_GYRO_SAMPLE_SGN_250DPS , // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>250DPS (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)
ICM20602_GYRO_SAMPLE_SGN_500DPS , // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>500DPS (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)
ICM20602_GYRO_SAMPLE_SGN_1000DPS, // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>1000DPS (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)
ICM20602_GYRO_SAMPLE_SGN_2000DPS, // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>2000DPS (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)
}icm20602_gyro_sample_config;
#define ICM20602_ACC_SAMPLE_DEFAULT ( ICM20602_ACC_SAMPLE_SGN_8G ) // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ĭ<EFBFBD>ϵ<EFBFBD> <20><><EFBFBD>ٶȼ<D9B6> <20><>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
#define ICM20602_GYRO_SAMPLE_DEFAULT ( ICM20602_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>
#define ICM20602_TIMEOUT_COUNT (0x00FF) // ICM20602 <20><>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD>
//================================================<3D><><EFBFBD><EFBFBD> ICM20602 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>================================================
//================================================<3D><><EFBFBD><EFBFBD> ICM20602 <20>ڲ<EFBFBD><DAB2><EFBFBD>ַ================================================
#define ICM20602_DEV_ADDR (0x69) // SA0<41>ӵأ<D3B5>0x68 SA0<41><30><EFBFBD><EFBFBD><EFBFBD><EFBFBD>0x69 ģ<><C4A3>Ĭ<EFBFBD><C4AC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
@@ -162,21 +184,43 @@
// <20><><EFBFBD><EFBFBD>Ϊ:0x08 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ:<3A><>500 dps <20><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݳ<EFBFBD><DDB3><EFBFBD>65.5 <20><><EFBFBD><EFBFBD>ת<EFBFBD><D7AA>Ϊ<EFBFBD><CEAA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>λ<EFBFBD><CEBB><EFBFBD><EFBFBD><EFBFBD>ݣ<EFBFBD><DDA3><EFBFBD>λΪ<CEBB><CEAA><EFBFBD><EFBFBD>/s
// <20><><EFBFBD><EFBFBD>Ϊ:0x10 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ:<3A><>1000dps <20><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݳ<EFBFBD><DDB3><EFBFBD>32.8 <20><><EFBFBD><EFBFBD>ת<EFBFBD><D7AA>Ϊ<EFBFBD><CEAA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>λ<EFBFBD><CEBB><EFBFBD><EFBFBD><EFBFBD>ݣ<EFBFBD><DDA3><EFBFBD>λΪ<CEBB><CEAA><EFBFBD><EFBFBD>/s
// <20><><EFBFBD><EFBFBD>Ϊ:0x18 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ:<3A><>2000dps <20><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݳ<EFBFBD><DDB3><EFBFBD>16.4 <20><><EFBFBD><EFBFBD>ת<EFBFBD><D7AA>Ϊ<EFBFBD><CEAA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>λ<EFBFBD><CEBB><EFBFBD><EFBFBD><EFBFBD>ݣ<EFBFBD><DDA3><EFBFBD>λΪ<CEBB><CEAA><EFBFBD><EFBFBD>/s
//================================================<3D><><EFBFBD><EFBFBD> ICM20602 <20>ڲ<EFBFBD><DAB2><EFBFBD>ַ================================================
//===============================================<3D><><EFBFBD><EFBFBD> ICM20602 <20><><EFBFBD>ݴ洢<DDB4><E6B4A2><EFBFBD><EFBFBD>==============================================
extern int16 icm20602_gyro_x, icm20602_gyro_y, icm20602_gyro_z; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
extern int16 icm20602_acc_x, icm20602_acc_y, icm20602_acc_z; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ٶȼ<D9B6><C8BC><EFBFBD><EFBFBD><EFBFBD>
//===============================================<3D><><EFBFBD><EFBFBD> ICM20602 <20><><EFBFBD>ݴ洢<DDB4><E6B4A2><EFBFBD><EFBFBD>==============================================
//==================================================ICM20602 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>==================================================
//================================================<EFBFBD><EFBFBD><EFBFBD><EFBFBD> ICM20602 ȫ<EFBFBD>ֱ<EFBFBD><EFBFBD><EFBFBD>================================================
extern int16 icm20602_gyro_x, icm20602_gyro_y, icm20602_gyro_z; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> GYRO (<28><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>)
extern int16 icm20602_acc_x, icm20602_acc_y, icm20602_acc_z; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ٶȼ<D9B6><C8BC><EFBFBD><EFBFBD><EFBFBD> ACC (accelerometer <20><><EFBFBD>ٶȼ<D9B6>)
extern float icm20602_transition_factor[2]; // ת<><D7AA>ʵ<EFBFBD><CAB5>ֵ<EFBFBD>ı<EFBFBD><C4B1><EFBFBD>
//================================================<3D><><EFBFBD><EFBFBD> ICM20602 ȫ<>ֱ<EFBFBD><D6B1><EFBFBD>================================================
//================================================<3D><><EFBFBD><EFBFBD> ICM20602 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>================================================
void icm20602_get_acc (void); // <20><>ȡ ICM20602 <20><><EFBFBD>ٶȼ<D9B6><C8BC><EFBFBD><EFBFBD><EFBFBD>
void icm20602_get_gyro (void); // <20><>ȡICM20602<30><32><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
float icm20602_gyro_transition (int16 gyro_value); // <20><> ICM20602 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ת<EFBFBD><D7AA>Ϊʵ<CEAA><CAB5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
float icm20602_acc_transition (int16 acc_value); // <20><> ICM20602 <20><><EFBFBD>ٶȼ<D9B6><C8BC><EFBFBD><EFBFBD><EFBFBD>ת<EFBFBD><D7AA>Ϊʵ<CEAA><CAB5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
void icm20602_get_gyro (void); // <20><>ȡ ICM20602 <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
uint8 icm20602_init (void); // <20><>ʼ<EFBFBD><CABC> ICM20602
//==================================================ICM20602 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>==================================================
//================================================<EFBFBD><EFBFBD><EFBFBD><EFBFBD> ICM20602 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>================================================
//================================================<3D><><EFBFBD><EFBFBD> ICM20602 <20><>չ<EFBFBD><D5B9><EFBFBD><EFBFBD>================================================
//-------------------------------------------------------------------------------------------------------------------
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> ICM20602 <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 = icm20602_acc_transition(icm20602_acc_x); // <20><>λΪ g(m/s^2)
// <20><>ע<EFBFBD><D7A2>Ϣ
//-------------------------------------------------------------------------------------------------------------------
#define icm20602_acc_transition(acc_value) ((float)acc_value / icm20602_transition_factor[0])
//-------------------------------------------------------------------------------------------------------------------
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> ICM20602 <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 = icm20602_gyro_transition(icm20602_gyro_x); // <20><>λΪ <20><>/s
// <20><>ע<EFBFBD><D7A2>Ϣ
//-------------------------------------------------------------------------------------------------------------------
#define icm20602_gyro_transition(gyro_value) ((float)gyro_value / icm20602_transition_factor[1])
//================================================<3D><><EFBFBD><EFBFBD> ICM20602 <20><>չ<EFBFBD><D5B9><EFBFBD><EFBFBD>================================================
#endif

View File

@@ -31,6 +31,7 @@
* <20>޸ļ<DEB8>¼
* <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><>ע
* 2022-09-15 pudding first version
* 2023-04-28 pudding <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ע<EFBFBD><D7A2>˵<EFBFBD><CBB5>
********************************************************************************************************************/
/*********************************************************************************************************************
* <20><><EFBFBD>߶<EFBFBD><DFB6>
@@ -55,15 +56,17 @@
********************************************************************************************************************/
#include "zf_common_debug.h"
#include "zf_device_config.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_spi.h"
#include "zf_device_imu660ra.h"
int16 imu660ra_gyro_x = 0, imu660ra_gyro_y = 0, imu660ra_gyro_z = 0; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> gyro (<28><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>)
int16 imu660ra_acc_x = 0, imu660ra_acc_y = 0, imu660ra_acc_z = 0; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ٶȼ<D9B6><C8BC><EFBFBD><EFBFBD><EFBFBD> acc (accelerometer <20><><EFBFBD>ٶȼ<D9B6>)
int16 imu660ra_gyro_x = 0, imu660ra_gyro_y = 0, imu660ra_gyro_z = 0; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> GYRO (<28><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>)
int16 imu660ra_acc_x = 0, imu660ra_acc_y = 0, imu660ra_acc_z = 0; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ٶȼ<D9B6><C8BC><EFBFBD><EFBFBD><EFBFBD> ACC (accelerometer <20><><EFBFBD>ٶȼ<D9B6>)
float imu660ra_transition_factor[2] = {4096, 16.4}; // ת<><D7AA>ʵ<EFBFBD><CAB5>ֵ<EFBFBD>ı<EFBFBD><C4B1><EFBFBD>
#if IMU660RA_USE_SOFT_IIC
static soft_iic_info_struct imu660ra_iic_struct;
@@ -130,7 +133,7 @@ static uint8 imu660ra_read_register(uint8 reg)
//-------------------------------------------------------------------------------------------------------------------
static void imu660ra_read_registers(uint8 reg, uint8 *data, uint32 len)
{
uint8 temp_data[7];
uint8 temp_data[8];
IMU660RA_CS(0);
spi_read_8bit_registers(IMU660RA_SPI, reg | IMU660RA_SPI_R, temp_data, len + 1);
IMU660RA_CS(1);
@@ -154,7 +157,7 @@ static uint8 imu660ra_self_check (void)
uint16 timeout_count = 0;
do
{
if(timeout_count ++ > IMU660RA_TIMEOUT_COUNT)
if(IMU660RA_TIMEOUT_COUNT < timeout_count ++)
{
return_state = 1;
break;
@@ -200,49 +203,6 @@ void imu660ra_get_gyro (void)
imu660ra_gyro_z = (int16)(((uint16)dat[5]<<8 | dat[4]));
}
//-------------------------------------------------------------------------------------------------------------------
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> IMU660RA <20><><EFBFBD>ٶȼ<D9B6><C8BC><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><C4BC>ٶȼ<D9B6><C8BC><EFBFBD><EFBFBD><EFBFBD>
// <20><><EFBFBD>ز<EFBFBD><D8B2><EFBFBD> void
// ʹ<><CAB9>ʾ<EFBFBD><CABE> float data = imu660ra_acc_transition(imu660ra_acc_x); //<2F><>λΪ g(m/s^2)
// <20><>ע<EFBFBD><D7A2>Ϣ
//-------------------------------------------------------------------------------------------------------------------
float imu660ra_acc_transition (int16 acc_value)
{
float acc_data = 0;
switch(IMU660RA_ACC_SAMPLE)
{
case 0x00: acc_data = (float)acc_value / 16384; break; // 0x00 <20><><EFBFBD>ٶȼ<D9B6><C8BC><EFBFBD><EFBFBD><EFBFBD>Ϊ:<3A><>2g <20><>ȡ<EFBFBD><C8A1><EFBFBD>ļ<EFBFBD><C4BC>ٶȼ<D9B6><C8BC><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>16384 <20><><EFBFBD><EFBFBD>ת<EFBFBD><D7AA>Ϊ<EFBFBD><CEAA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>λ<EFBFBD><CEBB><EFBFBD><EFBFBD><EFBFBD>ݣ<EFBFBD><DDA3><EFBFBD>λ<EFBFBD><CEBB>g(m/s^2)
case 0x01: acc_data = (float)acc_value / 8192; break; // 0x01 <20><><EFBFBD>ٶȼ<D9B6><C8BC><EFBFBD><EFBFBD><EFBFBD>Ϊ:<3A><>4g <20><>ȡ<EFBFBD><C8A1><EFBFBD>ļ<EFBFBD><C4BC>ٶȼ<D9B6><C8BC><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>8192 <20><><EFBFBD><EFBFBD>ת<EFBFBD><D7AA>Ϊ<EFBFBD><CEAA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>λ<EFBFBD><CEBB><EFBFBD><EFBFBD><EFBFBD>ݣ<EFBFBD><DDA3><EFBFBD>λ<EFBFBD><CEBB>g(m/s^2)
case 0x02: acc_data = (float)acc_value / 4096; break; // 0x02 <20><><EFBFBD>ٶȼ<D9B6><C8BC><EFBFBD><EFBFBD><EFBFBD>Ϊ:<3A><>8g <20><>ȡ<EFBFBD><C8A1><EFBFBD>ļ<EFBFBD><C4BC>ٶȼ<D9B6><C8BC><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>4096 <20><><EFBFBD><EFBFBD>ת<EFBFBD><D7AA>Ϊ<EFBFBD><CEAA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>λ<EFBFBD><CEBB><EFBFBD><EFBFBD><EFBFBD>ݣ<EFBFBD><DDA3><EFBFBD>λ<EFBFBD><CEBB>g(m/s^2)
case 0x03: acc_data = (float)acc_value / 2048; break; // 0x03 <20><><EFBFBD>ٶȼ<D9B6><C8BC><EFBFBD><EFBFBD><EFBFBD>Ϊ:<3A><>16g <20><>ȡ<EFBFBD><C8A1><EFBFBD>ļ<EFBFBD><C4BC>ٶȼ<D9B6><C8BC><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>2048 <20><><EFBFBD><EFBFBD>ת<EFBFBD><D7AA>Ϊ<EFBFBD><CEAA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>λ<EFBFBD><CEBB><EFBFBD><EFBFBD><EFBFBD>ݣ<EFBFBD><DDA3><EFBFBD>λ<EFBFBD><CEBB>g(m/s^2)
default: break;
}
return acc_data;
}
//-------------------------------------------------------------------------------------------------------------------
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> IMU660RA <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 = imu660ra_gyro_transition(imu660ra_gyro_x); // <20><>λΪ<CEBB><CEAA>/s
// <20><>ע<EFBFBD><D7A2>Ϣ
//-------------------------------------------------------------------------------------------------------------------
float imu660ra_gyro_transition (int16 gyro_value)
{
float gyro_data = 0;
switch(IMU660RA_GYR_SAMPLE)
{
case 0x00: gyro_data = (float)gyro_value / 16.4f; break; // 0x00 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ:<3A><>2000dps <20><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݳ<EFBFBD><DDB3><EFBFBD>16.4 <20><><EFBFBD><EFBFBD>ת<EFBFBD><D7AA>Ϊ<EFBFBD><CEAA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>λ<EFBFBD><CEBB><EFBFBD><EFBFBD><EFBFBD>ݣ<EFBFBD><DDA3><EFBFBD>λΪ<CEBB><CEAA><EFBFBD><EFBFBD>/s
case 0x01: gyro_data = (float)gyro_value / 32.8f; break; // 0x01 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ:<3A><>1000dps <20><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݳ<EFBFBD><DDB3><EFBFBD>32.8 <20><><EFBFBD><EFBFBD>ת<EFBFBD><D7AA>Ϊ<EFBFBD><CEAA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>λ<EFBFBD><CEBB><EFBFBD><EFBFBD><EFBFBD>ݣ<EFBFBD><DDA3><EFBFBD>λΪ<CEBB><CEAA><EFBFBD><EFBFBD>/s
case 0x02: gyro_data = (float)gyro_value / 65.6f; break; // 0x02 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ:<3A><>500 dps <20><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݳ<EFBFBD><DDB3><EFBFBD>65.6 <20><><EFBFBD><EFBFBD>ת<EFBFBD><D7AA>Ϊ<EFBFBD><CEAA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>λ<EFBFBD><CEBB><EFBFBD><EFBFBD><EFBFBD>ݣ<EFBFBD><DDA3><EFBFBD>λΪ<CEBB><CEAA><EFBFBD><EFBFBD>/s
case 0x03: gyro_data = (float)gyro_value / 131.2f; break; // 0x03 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ:<3A><>250 dps <20><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݳ<EFBFBD><DDB3><EFBFBD>131.2 <20><><EFBFBD><EFBFBD>ת<EFBFBD><D7AA>Ϊ<EFBFBD><CEAA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>λ<EFBFBD><CEBB><EFBFBD><EFBFBD><EFBFBD>ݣ<EFBFBD><DDA3><EFBFBD>λΪ<CEBB><CEAA><EFBFBD><EFBFBD>/s
case 0x04: gyro_data = (float)gyro_value / 262.4f; break; // 0x04 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ:<3A><>125 dps <20><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݳ<EFBFBD><DDB3><EFBFBD>262.4 <20><><EFBFBD><EFBFBD>ת<EFBFBD><D7AA>Ϊ<EFBFBD><CEAA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>λ<EFBFBD><CEBB><EFBFBD><EFBFBD><EFBFBD>ݣ<EFBFBD><DDA3><EFBFBD>λΪ<CEBB><CEAA><EFBFBD><EFBFBD>/s
default: break;
}
return gyro_data;
}
//-------------------------------------------------------------------------------------------------------------------
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>ʼ<EFBFBD><CABC> IMU660RA
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> void
@@ -277,7 +237,7 @@ uint8 imu660ra_init (void)
imu660ra_write_registers(IMU660RA_INIT_DATA, imu660ra_config_file, sizeof(imu660ra_config_file)); // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD>
imu660ra_write_register(IMU660RA_INIT_CTRL, 0x01); // <20><>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD><EFBFBD>ý<EFBFBD><C3BD><EFBFBD>
system_delay_ms(20);
if(imu660ra_read_register(IMU660RA_INT_STA) == 0) // <20><><EFBFBD><EFBFBD><EFBFBD>Ƿ<EFBFBD><C7B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
if(0 == imu660ra_read_register(IMU660RA_INT_STA)) // <20><><EFBFBD><EFBFBD><EFBFBD>Ƿ<EFBFBD><C7B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
{
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>˶<EFBFBD><CBB6><EFBFBD><EFBFBD><EFBFBD>Ϣ <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD>λ<EFBFBD><CEBB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// <20><>ô<EFBFBD><C3B4><EFBFBD><EFBFBD> imu660ra <20><><EFBFBD>ó<EFBFBD>ʼ<EFBFBD><CABC><EFBFBD>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
@@ -286,41 +246,90 @@ uint8 imu660ra_init (void)
return_state = 1;
break;
}
imu660ra_write_register(IMU660RA_PWR_CTRL, 0x0E); // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ģʽ ʹ<><CAB9><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ǡ<EFBFBD><C7A1><EFBFBD><EFBFBD>ٶȡ<D9B6><C8A1>¶ȴ<C2B6><C8B4><EFBFBD><EFBFBD><EFBFBD>
imu660ra_write_register(IMU660RA_ACC_CONF, 0xA7); // <20><><EFBFBD>ٶȲɼ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>ģʽ <20><><EFBFBD><EFBFBD><EFBFBD>ɼ<EFBFBD> 50Hz <20><><EFBFBD><EFBFBD>Ƶ<EFBFBD><C6B5>
// IMU660RA_ACC_CONF <20>Ĵ<EFBFBD><C4B4><EFBFBD> <20><><EFBFBD><EFBFBD>λ <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Խ<EFBFBD><D4BD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Խƽ<D4BD><C6BD><EFBFBD><EFBFBD>ʵʱ<CAB5><CAB1>Խ<EFBFBD><EFBFBD><EEA3AC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ӳ<EFBFBD><D3B2><EFBFBD>˲<EFBFBD>
// <20><><EFBFBD><EFBFBD>Ϊ:0x6 <20><><EFBFBD>ٶȲ<D9B6><C8B2><EFBFBD><EFBFBD><EFBFBD>Ϊ:25HZ
// <20><><EFBFBD><EFBFBD>Ϊ:0x7 <20><><EFBFBD>ٶȲ<D9B6><C8B2><EFBFBD><EFBFBD><EFBFBD>Ϊ:50HZ --- <20>ײ<EFBFBD>Ĭ<EFBFBD><C4AC>
// <20><><EFBFBD><EFBFBD>Ϊ:0x8 <20><><EFBFBD>ٶȲ<D9B6><C8B2><EFBFBD><EFBFBD><EFBFBD>Ϊ:100HZ
// <20><><EFBFBD><EFBFBD>Ϊ:0x9 <20><><EFBFBD>ٶȲ<D9B6><C8B2><EFBFBD><EFBFBD><EFBFBD>Ϊ:200HZ
// <20><><EFBFBD><EFBFBD>Ϊ:0xA <20><><EFBFBD>ٶȲ<D9B6><C8B2><EFBFBD><EFBFBD><EFBFBD>Ϊ:400HZ
// <20><><EFBFBD><EFBFBD>Ϊ:0xB <20><><EFBFBD>ٶȲ<D9B6><C8B2><EFBFBD><EFBFBD><EFBFBD>Ϊ:800HZ
// <20><><EFBFBD><EFBFBD>Ϊ:0xC <20><><EFBFBD>ٶȲ<D9B6><C8B2><EFBFBD><EFBFBD><EFBFBD>Ϊ:1600HZ
imu660ra_write_register(IMU660RA_GYR_CONF, 0xA9); // <20><><EFBFBD><EFBFBD><EFBFBD>Dzɼ<C7B2><C9BC><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>ģʽ <20><><EFBFBD><EFBFBD><EFBFBD>ɼ<EFBFBD> 200Hz<48><7A><EFBFBD><EFBFBD>Ƶ<EFBFBD><C6B5>
// IMU660RA_GYR_CONF <20>Ĵ<EFBFBD><C4B4><EFBFBD> <20><><EFBFBD><EFBFBD>λ <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Խ<EFBFBD><D4BD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Խƽ<D4BD><C6BD><EFBFBD><EFBFBD>ʵʱ<CAB5><CAB1>Խ<EFBFBD><EFBFBD><EEA3AC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ӳ<EFBFBD><D3B2><EFBFBD>˲<EFBFBD>
// <20><><EFBFBD><EFBFBD>Ϊ:0x6 <20><><EFBFBD><EFBFBD><EFBFBD>Dz<EFBFBD><C7B2><EFBFBD><EFBFBD><EFBFBD>Ϊ:25HZ
// <20><><EFBFBD><EFBFBD>Ϊ:0x7 <20><><EFBFBD><EFBFBD><EFBFBD>Dz<EFBFBD><C7B2><EFBFBD><EFBFBD><EFBFBD>Ϊ:50HZ
// <20><><EFBFBD><EFBFBD>Ϊ:0x8 <20><><EFBFBD><EFBFBD><EFBFBD>Dz<EFBFBD><C7B2><EFBFBD><EFBFBD><EFBFBD>Ϊ:100HZ
// <20><><EFBFBD><EFBFBD>Ϊ:0x9 <20><><EFBFBD><EFBFBD><EFBFBD>Dz<EFBFBD><C7B2><EFBFBD><EFBFBD><EFBFBD>Ϊ:200HZ --- <20>ײ<EFBFBD>Ĭ<EFBFBD><C4AC>
// <20><><EFBFBD><EFBFBD>Ϊ:0xA <20><><EFBFBD><EFBFBD><EFBFBD>Dz<EFBFBD><C7B2><EFBFBD><EFBFBD><EFBFBD>Ϊ:400HZ
// <20><><EFBFBD><EFBFBD>Ϊ:0xB <20><><EFBFBD><EFBFBD><EFBFBD>Dz<EFBFBD><C7B2><EFBFBD><EFBFBD><EFBFBD>Ϊ:800HZ
// <20><><EFBFBD><EFBFBD>Ϊ:0xC <20><><EFBFBD><EFBFBD><EFBFBD>Dz<EFBFBD><C7B2><EFBFBD><EFBFBD><EFBFBD>Ϊ:1600HZ
imu660ra_write_register(IMU660RA_ACC_RANGE, IMU660RA_ACC_SAMPLE); // <20><><EFBFBD>ٶ<EFBFBD><D9B6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ:<3A><>8g
imu660ra_write_register(IMU660RA_GYR_RANGE, IMU660RA_GYR_SAMPLE); // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ:<3A><>2000dps
imu660ra_write_register(IMU660RA_PWR_CTRL, 0x0E); // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ģʽ ʹ<><CAB9><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ǡ<EFBFBD><C7A1><EFBFBD><EFBFBD>ٶȡ<D9B6><C8A1>¶ȴ<C2B6><C8B4><EFBFBD><EFBFBD><EFBFBD>
imu660ra_write_register(IMU660RA_ACC_CONF, 0xA7); // <20><><EFBFBD>ٶȲɼ<C8B2><C9BC><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>ģʽ <20><><EFBFBD><EFBFBD><EFBFBD>ɼ<EFBFBD> 50Hz <20><><EFBFBD><EFBFBD>Ƶ<EFBFBD><C6B5>
imu660ra_write_register(IMU660RA_GYR_CONF, 0xA9); // <20><><EFBFBD><EFBFBD><EFBFBD>Dzɼ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>ģʽ <20><><EFBFBD><EFBFBD><EFBFBD>ɼ<EFBFBD> 200Hz <20><><EFBFBD><EFBFBD>Ƶ<EFBFBD><C6B5>
// IMU660RA_GYR_SAMPLE<4C>Ĵ<EFBFBD><C4B4><EFBFBD>
// <20><><EFBFBD><EFBFBD>Ϊ:0x00 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ:<3A><>2000dps <20><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݳ<EFBFBD><DDB3><EFBFBD>16.4 <20><><EFBFBD><EFBFBD>ת<EFBFBD><D7AA>Ϊ<EFBFBD><CEAA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>λ<EFBFBD><CEBB><EFBFBD><EFBFBD><EFBFBD>ݣ<EFBFBD><DDA3><EFBFBD>λΪ<CEBB><CEAA><EFBFBD><EFBFBD>/s
// <20><><EFBFBD><EFBFBD>Ϊ:0x01 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ:<3A><>1000dps <20><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݳ<EFBFBD><DDB3><EFBFBD>32.8 <20><><EFBFBD><EFBFBD>ת<EFBFBD><D7AA>Ϊ<EFBFBD><CEAA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>λ<EFBFBD><CEBB><EFBFBD><EFBFBD><EFBFBD>ݣ<EFBFBD><DDA3><EFBFBD>λΪ<CEBB><CEAA><EFBFBD><EFBFBD>/s
// <20><><EFBFBD><EFBFBD>Ϊ:0x02 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ:<3A><>500 dps <20><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݳ<EFBFBD><DDB3><EFBFBD>65.6 <20><><EFBFBD><EFBFBD>ת<EFBFBD><D7AA>Ϊ<EFBFBD><CEAA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>λ<EFBFBD><CEBB><EFBFBD><EFBFBD><EFBFBD>ݣ<EFBFBD><DDA3><EFBFBD>λΪ<CEBB><CEAA><EFBFBD><EFBFBD>/s
// <20><><EFBFBD><EFBFBD>Ϊ:0x03 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ:<3A><>250 dps <20><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݳ<EFBFBD><DDB3><EFBFBD>131.2 <20><><EFBFBD><EFBFBD>ת<EFBFBD><D7AA>Ϊ<EFBFBD><CEAA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>λ<EFBFBD><CEBB><EFBFBD><EFBFBD><EFBFBD>ݣ<EFBFBD><DDA3><EFBFBD>λΪ<CEBB><CEAA><EFBFBD><EFBFBD>/s
// <20><><EFBFBD><EFBFBD>Ϊ:0x04 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ:<3A><>125 dps <20><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݳ<EFBFBD><DDB3><EFBFBD>262.4 <20><><EFBFBD><EFBFBD>ת<EFBFBD><D7AA>Ϊ<EFBFBD><CEAA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>λ<EFBFBD><CEBB><EFBFBD><EFBFBD><EFBFBD>ݣ<EFBFBD><DDA3><EFBFBD>λΪ<CEBB><CEAA><EFBFBD><EFBFBD>/s
switch(IMU660RA_ACC_SAMPLE_DEFAULT)
{
case IMU660RA_ACC_SAMPLE_SGN_2G:
{
imu660ra_write_register(IMU660RA_ACC_RANGE, 0x00);
imu660ra_transition_factor[0] = 16384;
}break;
case IMU660RA_ACC_SAMPLE_SGN_4G:
{
imu660ra_write_register(IMU660RA_ACC_RANGE, 0x01);
imu660ra_transition_factor[0] = 8192;
}break;
case IMU660RA_ACC_SAMPLE_SGN_8G:
{
imu660ra_write_register(IMU660RA_ACC_RANGE, 0x02);
imu660ra_transition_factor[0] = 4096;
}break;
case IMU660RA_ACC_SAMPLE_SGN_16G:
{
imu660ra_write_register(IMU660RA_ACC_RANGE, 0x03);
imu660ra_transition_factor[0] = 2048;
}break;
default:
{
zf_log(0, "IMU660RA_ACC_SAMPLE_DEFAULT set error.");
return_state = 1;
}break;
}
if(1 == return_state)
{
break;
}
// IMU660RA_ACC_SAMPLE<4C>Ĵ<EFBFBD><C4B4><EFBFBD>
// <20><><EFBFBD><EFBFBD>Ϊ:0x00 <20><><EFBFBD>ٶȼ<D9B6><C8BC><EFBFBD><EFBFBD><EFBFBD>Ϊ:<3A><>2g <20><>ȡ<EFBFBD><C8A1><EFBFBD>ļ<EFBFBD><C4BC>ٶȼ<D9B6><C8BC><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>16384 <20><><EFBFBD><EFBFBD>ת<EFBFBD><D7AA>Ϊ<EFBFBD><CEAA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>λ<EFBFBD><CEBB><EFBFBD><EFBFBD><EFBFBD>ݣ<EFBFBD><DDA3><EFBFBD>λ<EFBFBD><CEBB>g(m/s^2)
// <20><><EFBFBD><EFBFBD>Ϊ:0x01 <20><><EFBFBD>ٶȼ<D9B6><C8BC><EFBFBD><EFBFBD><EFBFBD>Ϊ:<3A><>4g <20><>ȡ<EFBFBD><C8A1><EFBFBD>ļ<EFBFBD><C4BC>ٶȼ<D9B6><C8BC><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>8192 <20><><EFBFBD><EFBFBD>ת<EFBFBD><D7AA>Ϊ<EFBFBD><CEAA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>λ<EFBFBD><CEBB><EFBFBD><EFBFBD><EFBFBD>ݣ<EFBFBD><DDA3><EFBFBD>λ<EFBFBD><CEBB>g(m/s^2)
// <20><><EFBFBD><EFBFBD>Ϊ:0x02 <20><><EFBFBD>ٶȼ<D9B6><C8BC><EFBFBD><EFBFBD><EFBFBD>Ϊ:<3A><>8g <20><>ȡ<EFBFBD><C8A1><EFBFBD>ļ<EFBFBD><C4BC>ٶȼ<D9B6><C8BC><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>4096 <20><><EFBFBD><EFBFBD>ת<EFBFBD><D7AA>Ϊ<EFBFBD><CEAA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>λ<EFBFBD><CEBB><EFBFBD><EFBFBD><EFBFBD>ݣ<EFBFBD><DDA3><EFBFBD>λ<EFBFBD><CEBB>g(m/s^2)
// <20><><EFBFBD><EFBFBD>Ϊ:0x03 <20><><EFBFBD>ٶȼ<D9B6><C8BC><EFBFBD><EFBFBD><EFBFBD>Ϊ:<3A><>16g <20><>ȡ<EFBFBD><C8A1><EFBFBD>ļ<EFBFBD><C4BC>ٶȼ<D9B6><C8BC><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>2048 <20><><EFBFBD><EFBFBD>ת<EFBFBD><D7AA>Ϊ<EFBFBD><CEAA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>λ<EFBFBD><CEBB><EFBFBD><EFBFBD><EFBFBD>ݣ<EFBFBD><DDA3><EFBFBD>λ<EFBFBD><CEBB>g(m/s^2)
switch(IMU660RA_GYRO_SAMPLE_DEFAULT)
{
case IMU660RA_GYRO_SAMPLE_SGN_125DPS:
{
imu660ra_write_register(IMU660RA_GYR_RANGE, 0x04);
imu660ra_transition_factor[1] = 262.4;
}break;
case IMU660RA_GYRO_SAMPLE_SGN_250DPS:
{
imu660ra_write_register(IMU660RA_GYR_RANGE, 0x03);
imu660ra_transition_factor[1] = 131.2;
}break;
case IMU660RA_GYRO_SAMPLE_SGN_500DPS:
{
imu660ra_write_register(IMU660RA_GYR_RANGE, 0x02);
imu660ra_transition_factor[1] = 65.6;
}break;
case IMU660RA_GYRO_SAMPLE_SGN_1000DPS:
{
imu660ra_write_register(IMU660RA_GYR_RANGE, 0x01);
imu660ra_transition_factor[1] = 32.8;
}break;
case IMU660RA_GYRO_SAMPLE_SGN_2000DPS:
{
imu660ra_write_register(IMU660RA_GYR_RANGE, 0x00);
imu660ra_transition_factor[1] = 16.4;
}break;
default:
{
zf_log(0, "IMU660RA_GYRO_SAMPLE_DEFAULT set error.");
return_state = 1;
}break;
}
if(1 == return_state)
{
break;
}
}while(0);
return return_state;
}

View File

@@ -31,6 +31,7 @@
* <20>޸ļ<DEB8>¼
* <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><>ע
* 2022-09-15 pudding first version
* 2023-04-28 pudding <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ע<EFBFBD><D7A2>˵<EFBFBD><CBB5>
********************************************************************************************************************/
/*********************************************************************************************************************
* <20><><EFBFBD>߶<EFBFBD><DFB6>
@@ -59,32 +60,52 @@
#include "zf_common_typedef.h"
//================================================<3D><><EFBFBD><EFBFBD> IMU660RA <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>================================================
// IMU660RA_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>IMU660RA_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 IMU660RA_USE_SOFT_IIC (0) // Ĭ<><C4AC>ʹ<EFBFBD><CAB9>Ӳ<EFBFBD><D3B2> SPI <20><>ʽ<EFBFBD><CABD><EFBFBD><EFBFBD>
#if IMU660RA_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>
#define IMU660RA_USE_SOFT_IIC (0) // Ĭ<><C4AC>ʹ<EFBFBD><CAB9>Ӳ<EFBFBD><D3B2> SPI <20><>ʽ<EFBFBD><CABD><EFBFBD><EFBFBD>
#if IMU660RA_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 IMU660RA_SOFT_IIC_DELAY (59 ) // <20><><EFBFBD><EFBFBD> IIC <20><>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD> <20><>ֵԽС IIC ͨ<><CDA8><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Խ<EFBFBD><D4BD>
#define IMU660RA_SCL_PIN (P20_11) // <20><><EFBFBD><EFBFBD> IIC SCL <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> IMU660RA <20><> SCL <20><><EFBFBD><EFBFBD>
#define IMU660RA_SDA_PIN (P20_14) // <20><><EFBFBD><EFBFBD> IIC SDA <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> IMU660RA <20><> SDA <20><><EFBFBD><EFBFBD>
#define IMU660RA_SOFT_IIC_DELAY (59) // <20><><EFBFBD><EFBFBD> IIC <20><>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD> <20><>ֵԽС IIC ͨ<><CDA8><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Խ<EFBFBD><D4BD>
#define IMU660RA_SCL_PIN (P20_11) // <20><><EFBFBD><EFBFBD> IIC SCL <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> IMU660RA <20><> SCL <20><><EFBFBD><EFBFBD>
#define IMU660RA_SDA_PIN (P20_14) // <20><><EFBFBD><EFBFBD> IIC SDA <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> IMU660RA <20><> SDA <20><><EFBFBD><EFBFBD>
//====================================================<3D><><EFBFBD><EFBFBD> IIC <20><><EFBFBD><EFBFBD>====================================================
#else
//====================================================Ӳ<><D3B2> SPI <20><><EFBFBD><EFBFBD>====================================================
#define IMU660RA_SPI_SPEED (10 * 1000 * 1000) // Ӳ<><D3B2> SPI <20><><EFBFBD><EFBFBD>
#define IMU660RA_SPI (SPI_0) // Ӳ<><D3B2> SPI <20><>
#define IMU660RA_SPC_PIN (SPI0_SCLK_P20_11) // Ӳ<><D3B2> SPI SCK <20><><EFBFBD><EFBFBD>
#define IMU660RA_SDI_PIN (SPI0_MOSI_P20_14) // Ӳ<><D3B2> SPI MOSI <20><><EFBFBD><EFBFBD>
#define IMU660RA_SDO_PIN (SPI0_MISO_P20_12) // Ӳ<><D3B2> SPI MISO <20><><EFBFBD><EFBFBD>
#define IMU660RA_SPI_SPEED (10 * 1000 * 1000) // Ӳ<><D3B2> SPI <20><><EFBFBD><EFBFBD>
#define IMU660RA_SPI (SPI_0) // Ӳ<><D3B2> SPI <20><>
#define IMU660RA_SPC_PIN (SPI0_SCLK_P20_11) // Ӳ<><D3B2> SPI SCK <20><><EFBFBD><EFBFBD>
#define IMU660RA_SDI_PIN (SPI0_MOSI_P20_14) // Ӳ<><D3B2> SPI MOSI <20><><EFBFBD><EFBFBD>
#define IMU660RA_SDO_PIN (SPI0_MISO_P20_12) // Ӳ<><D3B2> SPI MISO <20><><EFBFBD><EFBFBD>
//====================================================Ӳ<><D3B2> SPI <20><><EFBFBD><EFBFBD>====================================================
#endif
#define IMU660RA_CS_PIN (P20_13) // CS Ƭѡ<C6AC><D1A1><EFBFBD><EFBFBD>
#define IMU660RA_CS_PIN (P20_13) // CS Ƭѡ<C6AC><D1A1><EFBFBD><EFBFBD>
#define IMU660RA_CS(x) ((x) ? (gpio_high(IMU660RA_CS_PIN)) : (gpio_low(IMU660RA_CS_PIN)))
#define IMU660RA_TIMEOUT_COUNT (0x00FF) // IMU660 <20><>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD>
typedef enum
{
IMU660RA_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)
IMU660RA_ACC_SAMPLE_SGN_4G , // <20><><EFBFBD>ٶȼ<D9B6><C8BC><EFBFBD><EFBFBD><EFBFBD> <20><>4G (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)
IMU660RA_ACC_SAMPLE_SGN_8G , // <20><><EFBFBD>ٶȼ<D9B6><C8BC><EFBFBD><EFBFBD><EFBFBD> <20><>8G (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)
IMU660RA_ACC_SAMPLE_SGN_16G, // <20><><EFBFBD>ٶȼ<D9B6><C8BC><EFBFBD><EFBFBD><EFBFBD> <20><>16G (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)
}imu660ra_acc_sample_config;
typedef enum
{
IMU660RA_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)
IMU660RA_GYRO_SAMPLE_SGN_250DPS , // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>250DPS (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)
IMU660RA_GYRO_SAMPLE_SGN_500DPS , // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>500DPS (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)
IMU660RA_GYRO_SAMPLE_SGN_1000DPS, // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>1000DPS (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)
IMU660RA_GYRO_SAMPLE_SGN_2000DPS, // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>2000DPS (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)
}imu660ra_gyro_sample_config;
#define IMU660RA_ACC_SAMPLE_DEFAULT ( IMU660RA_ACC_SAMPLE_SGN_8G ) // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ĭ<EFBFBD>ϵ<EFBFBD> <20><><EFBFBD>ٶȼ<D9B6> <20><>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
#define IMU660RA_GYRO_SAMPLE_DEFAULT ( IMU660RA_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>
#define IMU660RA_TIMEOUT_COUNT (0x00FF) // IMU660 <20><>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD>
//================================================<3D><><EFBFBD><EFBFBD> IMU660RA <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>================================================
//================================================<3D><><EFBFBD><EFBFBD> IMU660RA <20>ڲ<EFBFBD><DAB2><EFBFBD>ַ================================================
#define IMU660RA_DEV_ADDR (0x69) // SA0<41>ӵأ<D3B5>0x68 SA0<41><30><EFBFBD><EFBFBD><EFBFBD><EFBFBD>0x69 ģ<><C4A3>Ĭ<EFBFBD><C4AC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
#define IMU660RA_DEV_ADDR (0x69) // SA0<41>ӵأ<D3B5>0x68 SA0<41><30><EFBFBD><EFBFBD><EFBFBD><EFBFBD>0x69 ģ<><C4A3>Ĭ<EFBFBD><C4AC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
#define IMU660RA_SPI_W (0x00)
#define IMU660RA_SPI_R (0x80)
@@ -100,32 +121,53 @@
#define IMU660RA_ACC_RANGE (0x41)
#define IMU660RA_GYR_CONF (0x42)
#define IMU660RA_GYR_RANGE (0x43)
#define IMU660RA_ACC_SAMPLE (0x02) // <20><><EFBFBD>ٶȼ<D9B6><C8BC><EFBFBD><EFBFBD><EFBFBD>
#define IMU660RA_ACC_SAMPLE (0x02) // <20><><EFBFBD>ٶȼ<D9B6><C8BC><EFBFBD><EFBFBD><EFBFBD>
// <20><><EFBFBD><EFBFBD>Ϊ:0x00 <20><><EFBFBD>ٶȼ<D9B6><C8BC><EFBFBD><EFBFBD><EFBFBD>Ϊ:<3A><>2g <20><>ȡ<EFBFBD><C8A1><EFBFBD>ļ<EFBFBD><C4BC>ٶȼ<D9B6><C8BC><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> 16384 <20><><EFBFBD><EFBFBD>ת<EFBFBD><D7AA>Ϊ<EFBFBD><CEAA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>λ<EFBFBD><CEBB><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>λ<EFBFBD><CEBB>g(m/s^2)
// <20><><EFBFBD><EFBFBD>Ϊ:0x01 <20><><EFBFBD>ٶȼ<D9B6><C8BC><EFBFBD><EFBFBD><EFBFBD>Ϊ:<3A><>4g <20><>ȡ<EFBFBD><C8A1><EFBFBD>ļ<EFBFBD><C4BC>ٶȼ<D9B6><C8BC><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> 8192 <20><><EFBFBD><EFBFBD>ת<EFBFBD><D7AA>Ϊ<EFBFBD><CEAA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>λ<EFBFBD><CEBB><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>λ<EFBFBD><CEBB>g(m/s^2)
// <20><><EFBFBD><EFBFBD>Ϊ:0x02 <20><><EFBFBD>ٶȼ<D9B6><C8BC><EFBFBD><EFBFBD><EFBFBD>Ϊ:<3A><>8g <20><>ȡ<EFBFBD><C8A1><EFBFBD>ļ<EFBFBD><C4BC>ٶȼ<D9B6><C8BC><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> 4096 <20><><EFBFBD><EFBFBD>ת<EFBFBD><D7AA>Ϊ<EFBFBD><CEAA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>λ<EFBFBD><CEBB><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>λ<EFBFBD><CEBB>g(m/s^2)
// <20><><EFBFBD><EFBFBD>Ϊ:0x03 <20><><EFBFBD>ٶȼ<D9B6><C8BC><EFBFBD><EFBFBD><EFBFBD>Ϊ:<3A><>16g <20><>ȡ<EFBFBD><C8A1><EFBFBD>ļ<EFBFBD><C4BC>ٶȼ<D9B6><C8BC><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> 2048 <20><><EFBFBD><EFBFBD>ת<EFBFBD><D7AA>Ϊ<EFBFBD><CEAA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>λ<EFBFBD><CEBB><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>λ<EFBFBD><CEBB>g(m/s^2)
#define IMU660RA_GYR_SAMPLE (0x00) // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
#define IMU660RA_GYR_SAMPLE (0x00) // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// <20><><EFBFBD><EFBFBD>Ϊ:0x00 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ:<3A><>2000dps <20><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> 16.4 <20><><EFBFBD><EFBFBD>ת<EFBFBD><D7AA>Ϊ<EFBFBD><CEAA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>λ<EFBFBD><CEBB><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>λΪ<CEBB><CEAA><EFBFBD><EFBFBD>/s
// <20><><EFBFBD><EFBFBD>Ϊ:0x01 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ:<3A><>1000dps <20><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> 32.8 <20><><EFBFBD><EFBFBD>ת<EFBFBD><D7AA>Ϊ<EFBFBD><CEAA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>λ<EFBFBD><CEBB><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>λΪ<CEBB><CEAA><EFBFBD><EFBFBD>/s
// <20><><EFBFBD><EFBFBD>Ϊ:0x02 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ:<3A><>500 dps <20><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> 65.6 <20><><EFBFBD><EFBFBD>ת<EFBFBD><D7AA>Ϊ<EFBFBD><CEAA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>λ<EFBFBD><CEBB><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>λΪ<CEBB><CEAA><EFBFBD><EFBFBD>/s
// <20><><EFBFBD><EFBFBD>Ϊ:0x03 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ:<3A><>250 dps <20><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> 131.2 <20><><EFBFBD><EFBFBD>ת<EFBFBD><D7AA>Ϊ<EFBFBD><CEAA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>λ<EFBFBD><CEBB><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>λΪ<CEBB><CEAA><EFBFBD><EFBFBD>/s
// <20><><EFBFBD><EFBFBD>Ϊ:0x04 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ:<3A><>125 dps <20><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> 262.4 <20><><EFBFBD><EFBFBD>ת<EFBFBD><D7AA>Ϊ<EFBFBD><CEAA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>λ<EFBFBD><CEBB><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>λΪ<CEBB><CEAA><EFBFBD><EFBFBD>/s
//================================================<3D><><EFBFBD><EFBFBD> IMU660RA <20>ڲ<EFBFBD><DAB2><EFBFBD>ַ================================================
//===============================================<3D><><EFBFBD><EFBFBD> IMU660RA <20><><EFBFBD>ݴ洢<DDB4><E6B4A2><EFBFBD><EFBFBD>===============================================
extern int16 imu660ra_gyro_x, imu660ra_gyro_y, imu660ra_gyro_z; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> gyro (<28><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>)
extern int16 imu660ra_acc_x, imu660ra_acc_y, imu660ra_acc_z; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ٶȼ<D9B6><C8BC><EFBFBD><EFBFBD><EFBFBD> acc (accelerometer <20><><EFBFBD>ٶȼ<D9B6>)
//===============================================<3D><><EFBFBD><EFBFBD> IMU660RA <20><><EFBFBD>ݴ洢<DDB4><E6B4A2><EFBFBD><EFBFBD>===============================================
//==================================================IMU660RA <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>==================================================
void imu660ra_get_acc (void); // <20><>ȡ IMU660RA <20><><EFBFBD>ٶȼ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
void imu660ra_get_gyro (void); // <20><>ȡ IMU660RA <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
float imu660ra_acc_transition (int16 acc_value); // <20><> IMU660RA <20><><EFBFBD>ٶȼ<D9B6><C8BC><EFBFBD><EFBFBD><EFBFBD>ת<EFBFBD><D7AA>Ϊʵ<CEAA><CAB5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
float imu660ra_gyro_transition (int16 gyro_value); // <20><> IMU660RA <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ת<EFBFBD><D7AA>Ϊʵ<CEAA><CAB5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
uint8 imu660ra_init (void); // <20><>ʼ<EFBFBD><CABC> IMU660RA
//==================================================IMU660RA <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>===================================================
//================================================<EFBFBD><EFBFBD><EFBFBD><EFBFBD> IMU660RA ȫ<EFBFBD>ֱ<EFBFBD><EFBFBD><EFBFBD>================================================
extern int16 imu660ra_gyro_x, imu660ra_gyro_y, imu660ra_gyro_z; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> GYRO (<28><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>)
extern int16 imu660ra_acc_x, imu660ra_acc_y, imu660ra_acc_z; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ٶȼ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ACC (accelerometer <20><><EFBFBD>ٶȼ<D9B6>)
extern float imu660ra_transition_factor[2]; // ת<><D7AA>ʵ<EFBFBD><CAB5>ֵ<EFBFBD>ı<EFBFBD><EFBFBD><EFBFBD>
//================================================<3D><><EFBFBD><EFBFBD> IMU660RA ȫ<>ֱ<EFBFBD><D6B1><EFBFBD>================================================
//================================================<3D><><EFBFBD><EFBFBD> IMU660RA <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>================================================
void imu660ra_get_acc (void); // <20><>ȡ IMU660RA <20><><EFBFBD>ٶȼ<D9B6><C8BC><EFBFBD><EFBFBD><EFBFBD>
void imu660ra_get_gyro (void); // <20><>ȡ IMU660RA <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
uint8 imu660ra_init (void); // <20><>ʼ<EFBFBD><CABC> IMU660RA
//================================================<3D><><EFBFBD><EFBFBD> IMU660RA <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>================================================
//================================================<3D><><EFBFBD><EFBFBD> IMU660RA <20><>չ<EFBFBD><D5B9><EFBFBD><EFBFBD>================================================
//-------------------------------------------------------------------------------------------------------------------
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> IMU660RA <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 = imu660ra_acc_transition(imu660ra_acc_x); // <20><>λΪ g(m/s^2)
// <20><>ע<EFBFBD><D7A2>Ϣ
//-------------------------------------------------------------------------------------------------------------------
#define imu660ra_acc_transition(acc_value) ((float)acc_value / imu660ra_transition_factor[0])
//-------------------------------------------------------------------------------------------------------------------
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> IMU660RA <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 = imu660ra_gyro_transition(imu660ra_gyro_x); // <20><>λΪ <20><>/s
// <20><>ע<EFBFBD><D7A2>Ϣ
//-------------------------------------------------------------------------------------------------------------------
#define imu660ra_gyro_transition(gyro_value) ((float)gyro_value / imu660ra_transition_factor[1])
//================================================<3D><><EFBFBD><EFBFBD> IMU660RA <20><>չ<EFBFBD><D5B9><EFBFBD><EFBFBD>================================================
#endif

View File

@@ -31,6 +31,7 @@
* <20>޸ļ<DEB8>¼
* <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><>ע
* 2022-09-15 pudding first version
* 2023-04-28 pudding <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ע<EFBFBD><D7A2>˵<EFBFBD><CBB5>
********************************************************************************************************************/
/********************************************************************************************************************
* <20><><EFBFBD>߶<EFBFBD><DFB6>
@@ -60,9 +61,10 @@
#include "zf_driver_soft_iic.h"
#include "zf_device_imu963ra.h"
int16 imu963ra_gyro_x = 0, imu963ra_gyro_y = 0, imu963ra_gyro_z = 0;
int16 imu963ra_acc_x = 0, imu963ra_acc_y = 0, imu963ra_acc_z = 0;
int16 imu963ra_mag_x = 0, imu963ra_mag_y = 0, imu963ra_mag_z = 0;
int16 imu963ra_gyro_x = 0, imu963ra_gyro_y = 0, imu963ra_gyro_z = 0; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> GYRO (<28><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>)
int16 imu963ra_acc_x = 0, imu963ra_acc_y = 0, imu963ra_acc_z = 0; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ٶȼ<D9B6><C8BC><EFBFBD><EFBFBD><EFBFBD> ACC (accelerometer <20><><EFBFBD>ٶȼ<D9B6>)
int16 imu963ra_mag_x = 0, imu963ra_mag_y = 0, imu963ra_mag_z = 0; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> MAG (magnetometer <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>)
float imu963ra_transition_factor[3] = {4098, 14.3, 3000}; // ת<><D7AA>ʵ<EFBFBD><CAB5>ֵ<EFBFBD>ı<EFBFBD><C4B1><EFBFBD>
#if IMU963RA_USE_SOFT_IIC
static soft_iic_info_struct imu963ra_iic_struct;
@@ -105,7 +107,7 @@ static soft_iic_info_struct imu963ra_iic_struct;
// ʹ<><CAB9>ʾ<EFBFBD><CABE> imu963ra_write_acc_gyro_register(IMU963RA_SLV0_CONFIG, 0x00);
// <20><>ע<EFBFBD><D7A2>Ϣ <20>ڲ<EFBFBD><DAB2><EFBFBD><EFBFBD><EFBFBD>
//-------------------------------------------------------------------------------------------------------------------
static void imu963ra_write_acc_gyro_register(uint8 reg, uint8 data)
static void imu963ra_write_acc_gyro_register (uint8 reg, uint8 data)
{
IMU963RA_CS(0);
spi_write_8bit_register(IMU963RA_SPI, reg | IMU963RA_SPI_W, data);
@@ -120,7 +122,7 @@ static void imu963ra_write_acc_gyro_register(uint8 reg, uint8 data)
// ʹ<><CAB9>ʾ<EFBFBD><CABE> imu963ra_read_acc_gyro_register(IMU963RA_STATUS_MASTER);
// <20><>ע<EFBFBD><D7A2>Ϣ <20>ڲ<EFBFBD><DAB2><EFBFBD><EFBFBD><EFBFBD>
//-------------------------------------------------------------------------------------------------------------------
static uint8 imu963ra_read_acc_gyro_register(uint8 reg)
static uint8 imu963ra_read_acc_gyro_register (uint8 reg)
{
uint8 data = 0;
IMU963RA_CS(0);
@@ -139,7 +141,7 @@ static uint8 imu963ra_read_acc_gyro_register(uint8 reg)
// ʹ<><CAB9>ʾ<EFBFBD><CABE> imu963ra_read_acc_gyro_registers(IMU963RA_OUTX_L_A, dat, 6);
// <20><>ע<EFBFBD><D7A2>Ϣ <20>ڲ<EFBFBD><DAB2><EFBFBD><EFBFBD><EFBFBD>
//-------------------------------------------------------------------------------------------------------------------
static void imu963ra_read_acc_gyro_registers(uint8 reg, uint8 *data, uint32 len)
static void imu963ra_read_acc_gyro_registers (uint8 reg, uint8 *data, uint32 len)
{
IMU963RA_CS(0);
spi_read_8bit_registers(IMU963RA_SPI, reg | IMU963RA_SPI_R, data, len);
@@ -168,11 +170,11 @@ static uint8 imu963ra_write_mag_register (uint8 addr, uint8 reg, uint8 data)
imu963ra_write_acc_gyro_register(IMU963RA_SLV0_SUBADD, reg); // <20><>Ҫд<D2AA><D0B4><EFBFBD>ļĴ<C4BC><C4B4><EFBFBD><EFBFBD><EFBFBD>ַ
imu963ra_write_acc_gyro_register(IMU963RA_DATAWRITE_SLV0, data); // <20><>Ҫд<D2AA><D0B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
imu963ra_write_acc_gyro_register(IMU963RA_MASTER_CONFIG, 0x4C); // <20><><EFBFBD>ڵ<EFBFBD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͨѶ <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> I2C<32><43><EFBFBD><EFBFBD>ʹ<EFBFBD><CAB9>
// <20>ȴ<EFBFBD>ͨѶ<CDA8>ɹ<EFBFBD>
while(0 == (0x80 & imu963ra_read_acc_gyro_register(IMU963RA_STATUS_MASTER)))
{
if(timeout_count ++ > IMU963RA_TIMEOUT_COUNT)
if(IMU963RA_TIMEOUT_COUNT < timeout_count ++)
{
return_state = 1;
break;
@@ -197,19 +199,19 @@ static uint8 imu963ra_read_mag_register (uint8 addr, uint8 reg)
addr = addr << 1;
imu963ra_write_acc_gyro_register(IMU963RA_SLV0_ADD, addr | 1); // <20><><EFBFBD>õشżƵ<C5BC>ַ<EFBFBD><D6B7>ע<EFBFBD><D7A2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ҫ<EFBFBD><D2AA><EFBFBD><EFBFBD><38><CEBB>I2C<32><43>ַ<EFBFBD><D6B7> 0x2C
imu963ra_write_acc_gyro_register(IMU963RA_SLV0_SUBADD, reg); // <20><>Ҫ<EFBFBD><D2AA>ȡ<EFBFBD>ļĴ<C4BC><C4B4><EFBFBD><EFBFBD><EFBFBD>ַ
imu963ra_write_acc_gyro_register(IMU963RA_SLV0_CONFIG, 0x01);
imu963ra_write_acc_gyro_register(IMU963RA_SLV0_CONFIG, 0x01);
imu963ra_write_acc_gyro_register(IMU963RA_MASTER_CONFIG, 0x4C); // <20><><EFBFBD>ڵ<EFBFBD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͨѶ <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> I2C<32><43><EFBFBD><EFBFBD>ʹ<EFBFBD><CAB9>
// <20>ȴ<EFBFBD>ͨѶ<CDA8>ɹ<EFBFBD>
while(0 == (0x01 & imu963ra_read_acc_gyro_register(IMU963RA_STATUS_MASTER)))
{
if(timeout_count ++ > IMU963RA_TIMEOUT_COUNT)
if(IMU963RA_TIMEOUT_COUNT < timeout_count ++)
{
break;
}
system_delay_ms(2);
}
return (imu963ra_read_acc_gyro_register(IMU963RA_SENSOR_HUB_1)); // <20><><EFBFBD>ض<EFBFBD>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
}
@@ -224,12 +226,12 @@ static uint8 imu963ra_read_mag_register (uint8 addr, uint8 reg)
static void imu963ra_connect_mag (uint8 addr, uint8 reg)
{
addr = addr << 1;
imu963ra_write_acc_gyro_register(IMU963RA_SLV0_ADD, addr | 1); // <20><><EFBFBD>õشżƵ<C5BC>ַ<EFBFBD><D6B7>ע<EFBFBD><D7A2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ҫ<EFBFBD><D2AA><EFBFBD><EFBFBD><38><CEBB>I2C<32><43>ַ<EFBFBD><D6B7> 0x2C
imu963ra_write_acc_gyro_register(IMU963RA_SLV0_SUBADD, reg); // <20><>Ҫ<EFBFBD><D2AA>ȡ<EFBFBD>ļĴ<C4BC><C4B4><EFBFBD><EFBFBD><EFBFBD>ַ
imu963ra_write_acc_gyro_register(IMU963RA_SLV0_CONFIG, 0x06);
imu963ra_write_acc_gyro_register(IMU963RA_SLV0_CONFIG, 0x06);
imu963ra_write_acc_gyro_register(IMU963RA_MASTER_CONFIG, 0x6C); // <20><><EFBFBD>ڵ<EFBFBD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͨѶ <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> I2C<32><43><EFBFBD><EFBFBD>ʹ<EFBFBD><CAB9>
}
}
//-------------------------------------------------------------------------------------------------------------------
@@ -247,7 +249,7 @@ static uint8 imu963ra_acc_gyro_self_check (void)
while(0x6B != dat) // <20>ж<EFBFBD> ID <20>Ƿ<EFBFBD><C7B7><EFBFBD>ȷ
{
if(timeout_count++ > IMU963RA_TIMEOUT_COUNT)
if(IMU963RA_TIMEOUT_COUNT < timeout_count ++)
{
return_state = 1;
break;
@@ -273,7 +275,7 @@ static uint8 imu963ra_mag_self_check (void)
while(0xff != dat) // <20>ж<EFBFBD> ID <20>Ƿ<EFBFBD><C7B7><EFBFBD>ȷ
{
if(timeout_count++ > IMU963RA_TIMEOUT_COUNT)
if(IMU963RA_TIMEOUT_COUNT < timeout_count ++)
{
return_state = 1;
break;
@@ -344,69 +346,6 @@ void imu963ra_get_mag (void)
imu963ra_write_acc_gyro_register(IMU963RA_FUNC_CFG_ACCESS, 0x00);
}
//-------------------------------------------------------------------------------------------------------------------
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> IMU963RA <20><><EFBFBD>ٶȼ<D9B6><C8BC><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><C4BC>ٶȼ<D9B6><C8BC><EFBFBD><EFBFBD><EFBFBD>
// <20><><EFBFBD>ز<EFBFBD><D8B2><EFBFBD> void
// ʹ<><CAB9>ʾ<EFBFBD><CABE> float data = imu963ra_acc_transition(imu963ra_acc_x); //<2F><>λΪ g(m/s^2)
// <20><>ע<EFBFBD><D7A2>Ϣ
//-------------------------------------------------------------------------------------------------------------------
float imu963ra_acc_transition (int16 acc_value)
{
float acc_data = 0;
switch(IMU963RA_ACC_SAMPLE)
{
case 0x30: acc_data = (float)acc_value / 16393; break; // 0x30 <20><><EFBFBD>ٶ<EFBFBD><D9B6><EFBFBD><EFBFBD><EFBFBD>Ϊ:<3A><>2G <20><>ȡ<EFBFBD><C8A1><EFBFBD>ļ<EFBFBD><C4BC>ٶȼ<D9B6><C8BC><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>16393<39><33><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ת<EFBFBD><D7AA>Ϊ<EFBFBD><CEAA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>λ<EFBFBD><CEBB><EFBFBD><EFBFBD><EFBFBD>ݣ<EFBFBD><DDA3><EFBFBD>λ<EFBFBD><CEBB>g(m/s^2)
case 0x38: acc_data = (float)acc_value / 8197; break; // 0x38 <20><><EFBFBD>ٶ<EFBFBD><D9B6><EFBFBD><EFBFBD><EFBFBD>Ϊ:<3A><>4G <20><>ȡ<EFBFBD><C8A1><EFBFBD>ļ<EFBFBD><C4BC>ٶȼ<D9B6><C8BC><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>8197<39><37> <20><><EFBFBD><EFBFBD>ת<EFBFBD><D7AA>Ϊ<EFBFBD><CEAA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>λ<EFBFBD><CEBB><EFBFBD><EFBFBD><EFBFBD>ݣ<EFBFBD><DDA3><EFBFBD>λ<EFBFBD><CEBB>g(m/s^2)
case 0x3C: acc_data = (float)acc_value / 4098; break; // 0x3C <20><><EFBFBD>ٶ<EFBFBD><D9B6><EFBFBD><EFBFBD><EFBFBD>Ϊ:<3A><>8G <20><>ȡ<EFBFBD><C8A1><EFBFBD>ļ<EFBFBD><C4BC>ٶȼ<D9B6><C8BC><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>4098<39><38> <20><><EFBFBD><EFBFBD>ת<EFBFBD><D7AA>Ϊ<EFBFBD><CEAA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>λ<EFBFBD><CEBB><EFBFBD><EFBFBD><EFBFBD>ݣ<EFBFBD><DDA3><EFBFBD>λ<EFBFBD><CEBB>g(m/s^2)
case 0x34: acc_data = (float)acc_value / 2049; break; // 0x34 <20><><EFBFBD>ٶ<EFBFBD><D9B6><EFBFBD><EFBFBD><EFBFBD>Ϊ:<3A><>16G <20><>ȡ<EFBFBD><C8A1><EFBFBD>ļ<EFBFBD><C4BC>ٶȼ<D9B6><C8BC><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>2049<34><39> <20><><EFBFBD><EFBFBD>ת<EFBFBD><D7AA>Ϊ<EFBFBD><CEAA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>λ<EFBFBD><CEBB><EFBFBD><EFBFBD><EFBFBD>ݣ<EFBFBD><DDA3><EFBFBD>λ<EFBFBD><CEBB>g(m/s^2)
default: break;
}
return acc_data;
}
//-------------------------------------------------------------------------------------------------------------------
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> IMU963RA <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 = imu963ra_gyro_transition(imu963ra_gyro_x); // <20><>λΪ<CEBB><CEAA>/s
// <20><>ע<EFBFBD><D7A2>Ϣ
//-------------------------------------------------------------------------------------------------------------------
float imu963ra_gyro_transition (int16 gyro_value)
{
float gyro_data = 0;
switch(IMU963RA_GYR_SAMPLE)
{
case 0x52: gyro_data = (float)gyro_value / 228.6f; break; // 0x52 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ:<3A><>125dps <20><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݳ<EFBFBD><DDB3><EFBFBD>228.6<EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>ת<EFBFBD><D7AA>Ϊ<EFBFBD><CEAA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>λ<EFBFBD><CEBB><EFBFBD><EFBFBD><EFBFBD>ݣ<EFBFBD><DDA3><EFBFBD>λΪ<CEBB><CEAA><EFBFBD><EFBFBD>/s
case 0x50: gyro_data = (float)gyro_value / 114.3f; break; // 0x50 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ:<3A><>250dps <20><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݳ<EFBFBD><DDB3><EFBFBD>114.3<EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>ת<EFBFBD><D7AA>Ϊ<EFBFBD><CEAA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>λ<EFBFBD><CEBB><EFBFBD><EFBFBD><EFBFBD>ݣ<EFBFBD><DDA3><EFBFBD>λΪ<CEBB><CEAA><EFBFBD><EFBFBD>/s
case 0x54: gyro_data = (float)gyro_value / 57.1f; break; // 0x54 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ:<3A><>500dps <20><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݳ<EFBFBD><DDB3><EFBFBD>57.1<EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>ת<EFBFBD><D7AA>Ϊ<EFBFBD><CEAA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>λ<EFBFBD><CEBB><EFBFBD><EFBFBD><EFBFBD>ݣ<EFBFBD><DDA3><EFBFBD>λΪ<CEBB><CEAA><EFBFBD><EFBFBD>/s
case 0x58: gyro_data = (float)gyro_value / 28.6f; break; // 0x58 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ:<3A><>1000dps <20><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݳ<EFBFBD><DDB3><EFBFBD>28.6<EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>ת<EFBFBD><D7AA>Ϊ<EFBFBD><CEAA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>λ<EFBFBD><CEBB><EFBFBD><EFBFBD><EFBFBD>ݣ<EFBFBD><DDA3><EFBFBD>λΪ<CEBB><CEAA><EFBFBD><EFBFBD>/s
case 0x5C: gyro_data = (float)gyro_value / 14.3f; break; // 0x5C <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ:<3A><>2000dps <20><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݳ<EFBFBD><DDB3><EFBFBD>14.3<EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>ת<EFBFBD><D7AA>Ϊ<EFBFBD><CEAA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>λ<EFBFBD><CEBB><EFBFBD><EFBFBD><EFBFBD>ݣ<EFBFBD><DDA3><EFBFBD>λΪ<CEBB><CEAA><EFBFBD><EFBFBD>/s
case 0x51: gyro_data = (float)gyro_value / 7.1f; break; // 0x51 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ:<3A><>4000dps <20><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݳ<EFBFBD><DDB3><EFBFBD>7.1<EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>ת<EFBFBD><D7AA>Ϊ<EFBFBD><CEAA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>λ<EFBFBD><CEBB><EFBFBD><EFBFBD><EFBFBD>ݣ<EFBFBD><DDA3><EFBFBD>λΪ<CEBB><CEAA><EFBFBD><EFBFBD>/s
default: break;
}
return gyro_data;
}
//-------------------------------------------------------------------------------------------------------------------
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> IMU963RA <20>شż<D8B4><C5BC><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>ĵشż<D8B4><C5BC><EFBFBD><EFBFBD><EFBFBD>
// <20><><EFBFBD>ز<EFBFBD><D8B2><EFBFBD> void
// ʹ<><CAB9>ʾ<EFBFBD><CABE> float data = imu963ra_mag_transition(imu963ra_mag_x); // <20><>λΪ<CEBB><CEAA>/s
// <20><>ע<EFBFBD><D7A2>Ϣ
//-------------------------------------------------------------------------------------------------------------------
float imu963ra_mag_transition (int16 mag_value)
{
float mag_data = 0;
switch(IMU963RA_MAG_SAMPLE)
{
case 0x19: mag_data = (float)mag_value / 3000; break; // 0x19 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ:8G <20><>ȡ<EFBFBD><C8A1><EFBFBD>ļ<EFBFBD><C4BC>ٶȼ<D9B6><C8BC><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>3000<30><30> <20><><EFBFBD><EFBFBD>ת<EFBFBD><D7AA>Ϊ<EFBFBD><CEAA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>λ<EFBFBD><CEBB><EFBFBD><EFBFBD><EFBFBD>ݣ<EFBFBD><DDA3><EFBFBD>λ<EFBFBD><CEBB>G(<28><>˹)
case 0x09: mag_data = (float)mag_value / 12000; break; // 0x09 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ:2G <20><>ȡ<EFBFBD><C8A1><EFBFBD>ļ<EFBFBD><C4BC>ٶȼ<D9B6><C8BC><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>12000<30><30><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ת<EFBFBD><D7AA>Ϊ<EFBFBD><CEAA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>λ<EFBFBD><CEBB><EFBFBD><EFBFBD><EFBFBD>ݣ<EFBFBD><DDA3><EFBFBD>λ<EFBFBD><CEBB>G(<28><>˹)
default: break;
}
return mag_data;
}
//-------------------------------------------------------------------------------------------------------------------
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>ʼ<EFBFBD><CABC> IMU963RA
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> void
@@ -440,52 +379,145 @@ uint8 imu963ra_init (void)
}
imu963ra_write_acc_gyro_register(IMU963RA_INT1_CTRL, 0x03); // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>ٶ<EFBFBD><D9B6><EFBFBD><EFBFBD>ݾ<EFBFBD><DDBE><EFBFBD><EFBFBD>ж<EFBFBD>
imu963ra_write_acc_gyro_register(IMU963RA_CTRL1_XL, IMU963RA_ACC_SAMPLE); // <20><><EFBFBD>ü<EFBFBD><C3BC>ٶȼ<D9B6><C8BC><EFBFBD><EFBFBD>̡<EFBFBD>8G<38>Լ<EFBFBD><D4BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>52hz <20>Լ<EFBFBD><D4BC><EFBFBD><EFBFBD>ٶ<EFBFBD><D9B6><EFBFBD>Ϣ<EFBFBD>ӵ<EFBFBD>һ<EFBFBD><D2BB><EFBFBD>˲<EFBFBD><CBB2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// IMU963RA_CTRL1_XL <20>Ĵ<EFBFBD><C4B4><EFBFBD>
// <20><><EFBFBD><EFBFBD>Ϊ:0x30 <20><><EFBFBD>ٶ<EFBFBD><D9B6><EFBFBD><EFBFBD><EFBFBD>Ϊ:<EFBFBD><EFBFBD>2G <20><>ȡ<EFBFBD><C8A1><EFBFBD>ļ<EFBFBD><C4BC>ٶȼ<D9B6><C8BC><EFBFBD><EFBFBD><EFBFBD> <20><EFBFBD><EFBFBD><EFBFBD>16393<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>g(m/s^2)
// <20><><EFBFBD><EFBFBD>Ϊ:0x38 <20><><EFBFBD>ٶ<EFBFBD><D9B6><EFBFBD><EFBFBD><EFBFBD>Ϊ:<EFBFBD><EFBFBD>4G <20><>ȡ<EFBFBD><C8A1><EFBFBD>ļ<EFBFBD><C4BC>ٶȼ<D9B6><C8BC><EFBFBD><EFBFBD><EFBFBD> <20><EFBFBD><EFBFBD><EFBFBD>8197<EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>ת<EFBFBD><D7AA>Ϊ<EFBFBD><CEAA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>λ<EFBFBD><CEBB><EFBFBD><EFBFBD><EFBFBD>ݣ<EFBFBD><EFBFBD><EFBFBD>λ<EFBFBD><EFBFBD>g(m/s^2)
// <20><><EFBFBD><EFBFBD>Ϊ:0x3C <20><><EFBFBD>ٶ<EFBFBD><D9B6><EFBFBD><EFBFBD><EFBFBD>Ϊ:<EFBFBD><EFBFBD>8G <20><>ȡ<EFBFBD><C8A1><EFBFBD>ļ<EFBFBD><C4BC>ٶȼ<D9B6><C8BC><EFBFBD><EFBFBD><EFBFBD> <20><EFBFBD><EFBFBD><EFBFBD>4098<EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>ת<EFBFBD><D7AA>Ϊ<EFBFBD><CEAA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>λ<EFBFBD><CEBB><EFBFBD><EFBFBD><EFBFBD>ݣ<EFBFBD><EFBFBD><EFBFBD>λ<EFBFBD><EFBFBD>g(m/s^2)
// <20><><EFBFBD><EFBFBD>Ϊ:0x34 <20><><EFBFBD>ٶ<EFBFBD><D9B6><EFBFBD><EFBFBD><EFBFBD>Ϊ:<EFBFBD><EFBFBD>16G <20><>ȡ<EFBFBD><C8A1><EFBFBD>ļ<EFBFBD><C4BC>ٶȼ<D9B6><C8BC><EFBFBD><EFBFBD><EFBFBD> <20><EFBFBD><EFBFBD><EFBFBD>2049<EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>ת<EFBFBD><D7AA>Ϊ<EFBFBD><CEAA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>λ<EFBFBD><CEBB><EFBFBD><EFBFBD><EFBFBD>ݣ<EFBFBD><EFBFBD><EFBFBD>λ<EFBFBD><EFBFBD>g(m/s^2)
// <20><><EFBFBD><EFBFBD>Ϊ 0x30 <20><><EFBFBD>ٶ<EFBFBD><D9B6><EFBFBD><EFBFBD><EFBFBD>Ϊ <EFBFBD><EFBFBD>2 G <20><>ȡ<EFBFBD><C8A1><EFBFBD>ļ<EFBFBD><C4BC>ٶȼ<D9B6><C8BC><EFBFBD><EFBFBD>ݳ<EFBFBD><EFBFBD><EFBFBD> 16393 <EFBFBD><EFBFBD><EFBFBD><EFBFBD>ת<EFBFBD><EFBFBD>Ϊ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>λ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD>λ g(m/s^2)
// <20><><EFBFBD><EFBFBD>Ϊ 0x38 <20><><EFBFBD>ٶ<EFBFBD><D9B6><EFBFBD><EFBFBD><EFBFBD>Ϊ <EFBFBD><EFBFBD>4 G <20><>ȡ<EFBFBD><C8A1><EFBFBD>ļ<EFBFBD><C4BC>ٶȼ<D9B6><C8BC><EFBFBD><EFBFBD>ݳ<EFBFBD><EFBFBD><EFBFBD> 8197 <20><><EFBFBD><EFBFBD>ת<EFBFBD><D7AA>Ϊ<EFBFBD><CEAA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>λ<EFBFBD><CEBB><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD>λ g(m/s^2)
// <20><><EFBFBD><EFBFBD>Ϊ 0x3C <20><><EFBFBD>ٶ<EFBFBD><D9B6><EFBFBD><EFBFBD><EFBFBD>Ϊ <EFBFBD><EFBFBD>8 G <20><>ȡ<EFBFBD><C8A1><EFBFBD>ļ<EFBFBD><C4BC>ٶȼ<D9B6><C8BC><EFBFBD><EFBFBD>ݳ<EFBFBD><EFBFBD><EFBFBD> 4098 <20><><EFBFBD><EFBFBD>ת<EFBFBD><D7AA>Ϊ<EFBFBD><CEAA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>λ<EFBFBD><CEBB><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD>λ g(m/s^2)
// <20><><EFBFBD><EFBFBD>Ϊ 0x34 <20><><EFBFBD>ٶ<EFBFBD><D9B6><EFBFBD><EFBFBD><EFBFBD>Ϊ <EFBFBD><EFBFBD>16 G <20><>ȡ<EFBFBD><C8A1><EFBFBD>ļ<EFBFBD><C4BC>ٶȼ<D9B6><C8BC><EFBFBD><EFBFBD>ݳ<EFBFBD><EFBFBD><EFBFBD> 2049 <20><><EFBFBD><EFBFBD>ת<EFBFBD><D7AA>Ϊ<EFBFBD><CEAA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>λ<EFBFBD><CEBB><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD>λ g(m/s^2)
switch(IMU963RA_ACC_SAMPLE_DEFAULT)
{
default:
{
zf_log(0, "IMU963RA_ACC_SAMPLE_DEFAULT set error.");
return_state = 1;
}break;
case IMU963RA_ACC_SAMPLE_SGN_2G:
{
imu963ra_write_acc_gyro_register(IMU963RA_CTRL1_XL, 0x30);
imu963ra_transition_factor[0] = 16393;
}break;
case IMU963RA_ACC_SAMPLE_SGN_4G:
{
imu963ra_write_acc_gyro_register(IMU963RA_CTRL1_XL, 0x38);
imu963ra_transition_factor[0] = 8197;
}break;
case IMU963RA_ACC_SAMPLE_SGN_8G:
{
imu963ra_write_acc_gyro_register(IMU963RA_CTRL1_XL, 0x3C);
imu963ra_transition_factor[0] = 4098;
}break;
case IMU963RA_ACC_SAMPLE_SGN_16G:
{
imu963ra_write_acc_gyro_register(IMU963RA_CTRL1_XL, 0x34);
imu963ra_transition_factor[0] = 2049;
}break;
}
if(1 == return_state)
{
break;
}
imu963ra_write_acc_gyro_register(IMU963RA_CTRL2_G, IMU963RA_GYR_SAMPLE); // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ǽ<EFBFBD><C7BC><EFBFBD><EFBFBD><EFBFBD> <20><>2000dps <20>Լ<EFBFBD><D4BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> 208hz
// IMU963RA_CTRL2_G <20>Ĵ<EFBFBD><C4B4><EFBFBD>
// <20><><EFBFBD><EFBFBD>Ϊ:0x52 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ:<EFBFBD><EFBFBD>125dps <20><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݳ<EFBFBD><DDB3><EFBFBD>228.6<EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>ת<EFBFBD><D7AA>Ϊ<EFBFBD><CEAA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>λ<EFBFBD><CEBB><EFBFBD><EFBFBD><EFBFBD>ݣ<EFBFBD><EFBFBD><EFBFBD>λΪ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>/s
// <20><><EFBFBD><EFBFBD>Ϊ:0x50 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ:<EFBFBD><EFBFBD>250dps <20><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݳ<EFBFBD><DDB3><EFBFBD>114.3<EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>ת<EFBFBD><D7AA>Ϊ<EFBFBD><CEAA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>λ<EFBFBD><CEBB><EFBFBD><EFBFBD><EFBFBD>ݣ<EFBFBD><EFBFBD><EFBFBD>λΪ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>/s
// <20><><EFBFBD><EFBFBD>Ϊ:0x54 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ:<EFBFBD><EFBFBD>500dps <20><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݳ<EFBFBD><DDB3><EFBFBD>57.1<EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>ת<EFBFBD><D7AA>Ϊ<EFBFBD><CEAA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>λ<EFBFBD><CEBB><EFBFBD><EFBFBD><EFBFBD>ݣ<EFBFBD><EFBFBD><EFBFBD>λΪ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>/s
// <20><><EFBFBD><EFBFBD>Ϊ:0x58 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ:<EFBFBD><EFBFBD>1000dps <20><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݳ<EFBFBD><DDB3><EFBFBD>28.6<EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>ת<EFBFBD><D7AA>Ϊ<EFBFBD><CEAA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>λ<EFBFBD><CEBB><EFBFBD><EFBFBD><EFBFBD>ݣ<EFBFBD><EFBFBD><EFBFBD>λΪ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>/s
// <20><><EFBFBD><EFBFBD>Ϊ:0x5C <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ:<EFBFBD><EFBFBD>2000dps <20><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݳ<EFBFBD><DDB3><EFBFBD>14.3<EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>ת<EFBFBD><D7AA>Ϊ<EFBFBD><CEAA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>λ<EFBFBD><CEBB><EFBFBD><EFBFBD><EFBFBD>ݣ<EFBFBD><EFBFBD><EFBFBD>λΪ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>/s
// <20><><EFBFBD><EFBFBD>Ϊ:0x51 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ:<EFBFBD><EFBFBD>4000dps <20><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݳ<EFBFBD><DDB3><EFBFBD>7.1<EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>ת<EFBFBD><D7AA>Ϊ<EFBFBD><CEAA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>λ<EFBFBD><CEBB><EFBFBD><EFBFBD><EFBFBD>ݣ<EFBFBD><EFBFBD><EFBFBD>λΪ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>/s
// <20><><EFBFBD><EFBFBD>Ϊ 0x52 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ <EFBFBD><EFBFBD>125 dps <EFBFBD><EFBFBD>ȡ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݳ<EFBFBD><EFBFBD><EFBFBD> 228.6 <20><><EFBFBD><EFBFBD>ת<EFBFBD><D7AA>Ϊ<EFBFBD><CEAA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>λ<EFBFBD><CEBB><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD>λΪ <EFBFBD><EFBFBD>/s
// <20><><EFBFBD><EFBFBD>Ϊ 0x50 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ <EFBFBD><EFBFBD>250 dps <EFBFBD><EFBFBD>ȡ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݳ<EFBFBD><EFBFBD><EFBFBD> 114.3 <20><><EFBFBD><EFBFBD>ת<EFBFBD><D7AA>Ϊ<EFBFBD><CEAA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>λ<EFBFBD><CEBB><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD>λΪ <EFBFBD><EFBFBD>/s
// <20><><EFBFBD><EFBFBD>Ϊ 0x54 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ <EFBFBD><EFBFBD>500 dps <EFBFBD><EFBFBD>ȡ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݳ<EFBFBD><EFBFBD><EFBFBD> 57.1 <20><><EFBFBD><EFBFBD>ת<EFBFBD><D7AA>Ϊ<EFBFBD><CEAA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>λ<EFBFBD><CEBB><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD>λΪ <EFBFBD><EFBFBD>/s
// <20><><EFBFBD><EFBFBD>Ϊ 0x58 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ <EFBFBD><EFBFBD>1000 dps <EFBFBD><EFBFBD>ȡ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݳ<EFBFBD><EFBFBD><EFBFBD> 28.6 <20><><EFBFBD><EFBFBD>ת<EFBFBD><D7AA>Ϊ<EFBFBD><CEAA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>λ<EFBFBD><CEBB><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD>λΪ <EFBFBD><EFBFBD>/s
// <20><><EFBFBD><EFBFBD>Ϊ 0x5C <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ <EFBFBD><EFBFBD>2000 dps <EFBFBD><EFBFBD>ȡ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݳ<EFBFBD><EFBFBD><EFBFBD> 14.3 <20><><EFBFBD><EFBFBD>ת<EFBFBD><D7AA>Ϊ<EFBFBD><CEAA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>λ<EFBFBD><CEBB><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD>λΪ <EFBFBD><EFBFBD>/s
// <20><><EFBFBD><EFBFBD>Ϊ 0x51 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ <EFBFBD><EFBFBD>4000 dps <EFBFBD><EFBFBD>ȡ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݳ<EFBFBD><EFBFBD><EFBFBD> 7.1 <20><><EFBFBD><EFBFBD>ת<EFBFBD><D7AA>Ϊ<EFBFBD><CEAA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>λ<EFBFBD><CEBB><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD>λΪ <EFBFBD><EFBFBD>/s
switch(IMU963RA_GYRO_SAMPLE_DEFAULT)
{
default:
{
zf_log(0, "IMU963RA_GYRO_SAMPLE_DEFAULT set error.");
return_state = 1;
}break;
case IMU963RA_GYRO_SAMPLE_SGN_125DPS:
{
imu963ra_write_acc_gyro_register(IMU963RA_CTRL2_G, 0x52);
imu963ra_transition_factor[1] = 228.6;
}break;
case IMU963RA_GYRO_SAMPLE_SGN_250DPS:
{
imu963ra_write_acc_gyro_register(IMU963RA_CTRL2_G, 0x50);
imu963ra_transition_factor[1] = 114.3;
}break;
case IMU963RA_GYRO_SAMPLE_SGN_500DPS:
{
imu963ra_write_acc_gyro_register(IMU963RA_CTRL2_G, 0x54);
imu963ra_transition_factor[1] = 57.1;
}break;
case IMU963RA_GYRO_SAMPLE_SGN_1000DPS:
{
imu963ra_write_acc_gyro_register(IMU963RA_CTRL2_G, 0x58);
imu963ra_transition_factor[1] = 28.6;
}break;
case IMU963RA_GYRO_SAMPLE_SGN_2000DPS:
{
imu963ra_write_acc_gyro_register(IMU963RA_CTRL2_G, 0x5C);
imu963ra_transition_factor[1] = 14.3;
}break;
case IMU963RA_GYRO_SAMPLE_SGN_4000DPS:
{
imu963ra_write_acc_gyro_register(IMU963RA_CTRL2_G, 0x51);
imu963ra_transition_factor[1] = 7.1;
}break;
}
if(1 == return_state)
{
break;
}
imu963ra_write_acc_gyro_register(IMU963RA_CTRL3_C, 0x44); // ʹ<><CAB9><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ<EFBFBD>ͨ<EFBFBD>˲<EFBFBD><CBB2><EFBFBD>
imu963ra_write_acc_gyro_register(IMU963RA_CTRL4_C, 0x02); // ʹ<><CAB9><EFBFBD><EFBFBD><EFBFBD>ֵ<EFBFBD>ͨ<EFBFBD>˲<EFBFBD><CBB2><EFBFBD>
imu963ra_write_acc_gyro_register(IMU963RA_CTRL5_C, 0x00); // <20><><EFBFBD>ٶȼ<D9B6><C8BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
imu963ra_write_acc_gyro_register(IMU963RA_CTRL6_C, 0x00); // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ٶȼƸ<C8BC><C6B8><EFBFBD><EFBFBD><EFBFBD>ģʽ <20><><EFBFBD><EFBFBD><EFBFBD>ǵ<EFBFBD>ͨ<EFBFBD>˲<EFBFBD> 133hz
imu963ra_write_acc_gyro_register(IMU963RA_CTRL7_G, 0x00); // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ǹ<EFBFBD><C7B8><EFBFBD><EFBFBD><EFBFBD>ģʽ <20>رո<D8B1>ͨ<EFBFBD>˲<EFBFBD>
imu963ra_write_acc_gyro_register(IMU963RA_CTRL9_XL, 0x01); // <20>ر<EFBFBD>I3C<33>ӿ<EFBFBD>
imu963ra_write_acc_gyro_register(IMU963RA_CTRL3_C, 0x44); // ʹ<><CAB9><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ<EFBFBD>ͨ<EFBFBD>˲<EFBFBD><CBB2><EFBFBD>
imu963ra_write_acc_gyro_register(IMU963RA_CTRL4_C, 0x02); // ʹ<><CAB9><EFBFBD><EFBFBD><EFBFBD>ֵ<EFBFBD>ͨ<EFBFBD>˲<EFBFBD><CBB2><EFBFBD>
imu963ra_write_acc_gyro_register(IMU963RA_CTRL5_C, 0x00); // <20><><EFBFBD>ٶȼ<D9B6><C8BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
imu963ra_write_acc_gyro_register(IMU963RA_CTRL6_C, 0x00); // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ٶȼƸ<C8BC><C6B8><EFBFBD><EFBFBD><EFBFBD>ģʽ <20><><EFBFBD><EFBFBD><EFBFBD>ǵ<EFBFBD>ͨ<EFBFBD>˲<EFBFBD> 133hz
imu963ra_write_acc_gyro_register(IMU963RA_CTRL7_G, 0x00); // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ǹ<EFBFBD><C7B8><EFBFBD><EFBFBD><EFBFBD>ģʽ <20>رո<D8B1>ͨ<EFBFBD>˲<EFBFBD>
imu963ra_write_acc_gyro_register(IMU963RA_CTRL9_XL, 0x01); // <20>ر<EFBFBD>I3C<33>ӿ<EFBFBD>
imu963ra_write_acc_gyro_register(IMU963RA_FUNC_CFG_ACCESS, 0x40); // <20><><EFBFBD><EFBFBD>HUB<55>Ĵ<EFBFBD><C4B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>õشż<D8B4>
imu963ra_write_acc_gyro_register(IMU963RA_MASTER_CONFIG, 0x80); // <20><>λI2C<32><43><EFBFBD><EFBFBD>
imu963ra_write_acc_gyro_register(IMU963RA_FUNC_CFG_ACCESS, 0x40); // <20><><EFBFBD><EFBFBD>HUB<55>Ĵ<EFBFBD><C4B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>õشż<D8B4>
imu963ra_write_acc_gyro_register(IMU963RA_MASTER_CONFIG, 0x80); // <20><>λI2C<32><43><EFBFBD><EFBFBD>
system_delay_ms(2);
imu963ra_write_acc_gyro_register(IMU963RA_MASTER_CONFIG, 0x00); // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>λ<EFBFBD><CEBB>־
system_delay_ms(2);
imu963ra_write_acc_gyro_register(IMU963RA_MASTER_CONFIG, 0x00); // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>λ<EFBFBD><CEBB>־
system_delay_ms(2);
imu963ra_write_mag_register(IMU963RA_MAG_ADDR, IMU963RA_MAG_CONTROL2, 0x80); // <20><>λ<EFBFBD><CEBB><EFBFBD>ӵ<EFBFBD><D3B5><EFBFBD><EFBFBD><EFBFBD>
imu963ra_write_mag_register(IMU963RA_MAG_ADDR, IMU963RA_MAG_CONTROL2, 0x80);// <20><>λ<EFBFBD><CEBB><EFBFBD>ӵ<EFBFBD><D3B5><EFBFBD><EFBFBD><EFBFBD>
system_delay_ms(2);
imu963ra_write_mag_register(IMU963RA_MAG_ADDR, IMU963RA_MAG_CONTROL2, 0x00);
system_delay_ms(2);
if(imu963ra_mag_self_check())
{
zf_log(0, "IMU963RA mag self check error.");
return_state = 1;
break;
break;
}
imu963ra_write_mag_register(IMU963RA_MAG_ADDR, IMU963RA_MAG_CONTROL1, IMU963RA_MAG_SAMPLE); // <20><><EFBFBD>ô<EFBFBD><C3B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>8G <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>100hz <20><><EFBFBD><EFBFBD>ģʽ
// IMU963RA_MAG_ADDR <20>Ĵ<EFBFBD><C4B4><EFBFBD>
// <20><><EFBFBD><EFBFBD>Ϊ:0x19 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ:8G <EFBFBD><EFBFBD>ȡ<EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD><EFBFBD>ٶȼ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD>3000<EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>ת<EFBFBD><D7AA>Ϊ<EFBFBD><CEAA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>λ<EFBFBD><CEBB><EFBFBD><EFBFBD><EFBFBD>ݣ<EFBFBD><EFBFBD><EFBFBD>λ<EFBFBD><EFBFBD>G(<28><>˹)
// <20><><EFBFBD><EFBFBD>Ϊ:0x09 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ:2G <20><>ȡ<EFBFBD><C8A1><EFBFBD>ļ<EFBFBD><EFBFBD>ٶȼ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD>12000<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>G(<28><>˹)
// <20><><EFBFBD><EFBFBD>Ϊ 0x09 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ 2G <20><>ȡ<EFBFBD><C8A1><EFBFBD>Ĵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݳ<EFBFBD><EFBFBD><EFBFBD> 12000 <20><><EFBFBD><EFBFBD>ת<EFBFBD><D7AA>Ϊ<EFBFBD><CEAA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>λ<EFBFBD><CEBB><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD>λ G(<28><>˹)
// <20><><EFBFBD><EFBFBD>Ϊ 0x19 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ 8G <20><>ȡ<EFBFBD><C8A1><EFBFBD>Ĵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݳ<EFBFBD><EFBFBD><EFBFBD> 3000 <EFBFBD><EFBFBD><EFBFBD><EFBFBD>ת<EFBFBD><EFBFBD>Ϊ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>λ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD>λ G(<28><>˹)
switch(IMU963RA_MAG_SAMPLE_DEFAULT)
{
default:
{
zf_log(0, "IMU963RA_MAG_SAMPLE_DEFAULT set error.");
return_state = 1;
}break;
case IMU963RA_MAG_SAMPLE_2G:
{
imu963ra_write_mag_register(IMU963RA_MAG_ADDR, IMU963RA_MAG_CONTROL1, 0x09);
imu963ra_transition_factor[2] = 12000;
}break;
case IMU963RA_MAG_SAMPLE_8G:
{
imu963ra_write_mag_register(IMU963RA_MAG_ADDR, IMU963RA_MAG_CONTROL1, 0x19);
imu963ra_transition_factor[2] = 3000;
}break;
}
if(1 == return_state)
{
break;
}
imu963ra_write_mag_register(IMU963RA_MAG_ADDR, IMU963RA_MAG_FBR, 0x01);
imu963ra_connect_mag(IMU963RA_MAG_ADDR, IMU963RA_MAG_OUTX_L);

View File

@@ -31,6 +31,7 @@
* <20>޸ļ<DEB8>¼
* <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><>ע
* 2022-09-15 pudding first version
* 2023-04-28 pudding <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ע<EFBFBD><D7A2>˵<EFBFBD><CBB5>
********************************************************************************************************************/
/********************************************************************************************************************
* <20><><EFBFBD>߶<EFBFBD><DFB6>
@@ -59,6 +60,7 @@
#include "zf_common_typedef.h"
//================================================<3D><><EFBFBD><EFBFBD> IMU963RA <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>================================================
#define IMU963RA_USE_SOFT_IIC (0) // Ĭ<><C4AC>ʹ<EFBFBD><CAB9>Ӳ<EFBFBD><D3B2> SPI <20><>ʽ<EFBFBD><CABD><EFBFBD><EFBFBD>
#if IMU963RA_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>====================================================
@@ -67,6 +69,7 @@
#define IMU963RA_SDA_PIN (P20_14) // <20><><EFBFBD><EFBFBD> IIC SDA <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> IMU963RA <20><> SDA <20><><EFBFBD><EFBFBD>
//====================================================<3D><><EFBFBD><EFBFBD> IIC <20><><EFBFBD><EFBFBD>====================================================
#else
//====================================================Ӳ<><D3B2> SPI <20><><EFBFBD><EFBFBD>====================================================
#define IMU963RA_SPI_SPEED (10 * 1000 * 1000) // Ӳ<><D3B2> SPI <20><><EFBFBD><EFBFBD>
#define IMU963RA_SPI (SPI_0 ) // Ӳ<><D3B2> SPI <20><>
@@ -79,7 +82,36 @@
#define IMU963RA_CS_PIN (P20_13) // CS Ƭѡ<C6AC><D1A1><EFBFBD><EFBFBD>
#define IMU963RA_CS(x) (x? (gpio_high(IMU963RA_CS_PIN)): (gpio_low(IMU963RA_CS_PIN)))
typedef enum
{
IMU963RA_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)
IMU963RA_ACC_SAMPLE_SGN_4G , // <20><><EFBFBD>ٶȼ<D9B6><C8BC><EFBFBD><EFBFBD><EFBFBD> <20><>4G (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)
IMU963RA_ACC_SAMPLE_SGN_8G , // <20><><EFBFBD>ٶȼ<D9B6><C8BC><EFBFBD><EFBFBD><EFBFBD> <20><>8G (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)
IMU963RA_ACC_SAMPLE_SGN_16G, // <20><><EFBFBD>ٶȼ<D9B6><C8BC><EFBFBD><EFBFBD><EFBFBD> <20><>16G (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)
}imu963ra_acc_sample_config;
typedef enum
{
IMU963RA_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)
IMU963RA_GYRO_SAMPLE_SGN_250DPS , // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>250DPS (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)
IMU963RA_GYRO_SAMPLE_SGN_500DPS , // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>500DPS (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)
IMU963RA_GYRO_SAMPLE_SGN_1000DPS, // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>1000DPS (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)
IMU963RA_GYRO_SAMPLE_SGN_2000DPS, // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>2000DPS (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)
IMU963RA_GYRO_SAMPLE_SGN_4000DPS, // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>4000DPS (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)
}imu963ra_gyro_sample_config;
typedef enum
{
IMU963RA_MAG_SAMPLE_2G, // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> 2G (MAG = Magnetometer <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>) (G = Gs <20><>˹)
IMU963RA_MAG_SAMPLE_8G, // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> 8G (MAG = Magnetometer <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>) (G = Gs <20><>˹)
}imu963ra_mag_sample_config;
#define IMU963RA_ACC_SAMPLE_DEFAULT ( IMU963RA_ACC_SAMPLE_SGN_8G ) // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ĭ<EFBFBD>ϵ<EFBFBD> <20><><EFBFBD>ٶȼ<D9B6> <20><>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
#define IMU963RA_GYRO_SAMPLE_DEFAULT ( IMU963RA_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>
#define IMU963RA_MAG_SAMPLE_DEFAULT ( IMU963RA_MAG_SAMPLE_8G ) // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ĭ<EFBFBD>ϵ<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
#define IMU963RA_TIMEOUT_COUNT (0x00FF) // IMU963RA <20><>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD>
//================================================<3D><><EFBFBD><EFBFBD> IMU963RA <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>================================================
//================================================<3D><><EFBFBD><EFBFBD> IMU963RA <20>ڲ<EFBFBD><DAB2><EFBFBD>ַ================================================
#define IMU963RA_DEV_ADDR (0x6B) // SA0<41>ӵأ<D3B5>0x6A SA0<41><30><EFBFBD><EFBFBD><EFBFBD><EFBFBD>0x6B ģ<><C4A3>Ĭ<EFBFBD><C4AC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
@@ -133,24 +165,52 @@
#define IMU963RA_MAG_SAMPLE (0x19) // <20>شż<D8B4><C5BC><EFBFBD><EFBFBD><EFBFBD>
// <20><><EFBFBD><EFBFBD>Ϊ:0x19 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ:8G <20><>ȡ<EFBFBD><C8A1><EFBFBD>ļ<EFBFBD><C4BC>ٶȼ<D9B6><C8BC><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>3000<30><30> <20><><EFBFBD><EFBFBD>ת<EFBFBD><D7AA>Ϊ<EFBFBD><CEAA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>λ<EFBFBD><CEBB><EFBFBD><EFBFBD><EFBFBD>ݣ<EFBFBD><DDA3><EFBFBD>λ<EFBFBD><CEBB>G(<28><>˹)
// <20><><EFBFBD><EFBFBD>Ϊ:0x09 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ:2G <20><>ȡ<EFBFBD><C8A1><EFBFBD>ļ<EFBFBD><C4BC>ٶȼ<D9B6><C8BC><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>12000<30><30><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ת<EFBFBD><D7AA>Ϊ<EFBFBD><CEAA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>λ<EFBFBD><CEBB><EFBFBD><EFBFBD><EFBFBD>ݣ<EFBFBD><DDA3><EFBFBD>λ<EFBFBD><CEBB>G(<28><>˹)
//================================================<3D><><EFBFBD><EFBFBD> IMU963RA <20>ڲ<EFBFBD><DAB2><EFBFBD>ַ================================================
//===============================================<3D><><EFBFBD><EFBFBD> IMU963RA <20><><EFBFBD>ݴ洢<DDB4><E6B4A2><EFBFBD><EFBFBD>===============================================
extern int16 imu963ra_gyro_x, imu963ra_gyro_y, imu963ra_gyro_z; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
extern int16 imu963ra_acc_x, imu963ra_acc_y, imu963ra_acc_z; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ٶȼ<D9B6><C8BC><EFBFBD><EFBFBD><EFBFBD>
extern int16 imu963ra_mag_x, imu963ra_mag_y, imu963ra_mag_z; // <20><><EFBFBD><EFBFBD><EFBFBD>شż<D8B4><C5BC><EFBFBD><EFBFBD><EFBFBD>
//===============================================<3D><><EFBFBD><EFBFBD> IMU963RA <20><><EFBFBD>ݴ洢<DDB4><E6B4A2><EFBFBD><EFBFBD>===============================================
//==================================================IMU963RA <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>==================================================
void imu963ra_get_acc (void); // <20><>ȡ IMU963RA <20><><EFBFBD>ٶȼ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
void imu963ra_get_gyro (void); // <20><>ȡ IMU963RA <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
void imu963ra_get_mag (void); // <20><>ȡ IMU963RA <20><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
float imu963ra_acc_transition (int16 acc_value); // <20><> IMU963RA <20><><EFBFBD>ٶȼ<D9B6><C8BC><EFBFBD><EFBFBD><EFBFBD>ת<EFBFBD><EFBFBD>Ϊʵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
float imu963ra_gyro_transition (int16 gyro_value); // <20><> IMU963RA <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ת<EFBFBD><D7AA>Ϊʵ<CEAA><CAB5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
float imu963ra_mag_transition (int16 mag_value); // <20><> IMU963RA <20>شż<D8B4><C5BC><EFBFBD><EFBFBD><EFBFBD>ת<EFBFBD><D7AA>Ϊʵ<CEAA><CAB5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
uint8 imu963ra_init (void); // <20><>ʼ<EFBFBD><CABC> IMU963RA
//==================================================IMU963RA <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>==================================================
//================================================<EFBFBD><EFBFBD><EFBFBD><EFBFBD> IMU963RA ȫ<EFBFBD>ֱ<EFBFBD><EFBFBD><EFBFBD>================================================
extern int16 imu963ra_acc_x, imu963ra_acc_y, imu963ra_acc_z; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> GYRO (<28><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>)
extern int16 imu963ra_gyro_x, imu963ra_gyro_y, imu963ra_gyro_z; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ٶȼ<D9B6><C8BC><EFBFBD><EFBFBD><EFBFBD> ACC (accelerometer <20><><EFBFBD>ٶȼ<D9B6>)
extern int16 imu963ra_mag_x, imu963ra_mag_y, imu963ra_mag_z; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> MAG (magnetometer <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>)
extern float imu963ra_transition_factor[3]; // ת<EFBFBD><EFBFBD>ʵ<EFBFBD><EFBFBD>ֵ<EFBFBD>ı<EFBFBD><EFBFBD><EFBFBD>
//================================================<3D><><EFBFBD><EFBFBD> IMU963RA ȫ<>ֱ<EFBFBD><D6B1><EFBFBD>================================================
//================================================<3D><><EFBFBD><EFBFBD> IMU963RA <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>================================================
void imu963ra_get_acc (void); // <20><>ȡ IMU963RA <20><><EFBFBD>ٶȼ<D9B6><C8BC><EFBFBD><EFBFBD><EFBFBD>
void imu963ra_get_gyro (void); // <20><>ȡ IMU963RA <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
void imu963ra_get_mag (void); // <20><>ȡ IMU963RA <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
uint8 imu963ra_init (void); // <20><>ʼ<EFBFBD><CABC> IMU963RA
//================================================<3D><><EFBFBD><EFBFBD> IMU963RA <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>================================================
//================================================<3D><><EFBFBD><EFBFBD> IMU963RA <20><>չ<EFBFBD><D5B9><EFBFBD><EFBFBD>================================================
//-------------------------------------------------------------------------------------------------------------------
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> IMU963RA <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 = imu963ra_acc_transition(imu963ra_acc_x); // <20><>λΪ g(m/s^2)
// <20><>ע<EFBFBD><D7A2>Ϣ
//-------------------------------------------------------------------------------------------------------------------
#define imu963ra_acc_transition(acc_value) ((float)acc_value / imu963ra_transition_factor[0])
//-------------------------------------------------------------------------------------------------------------------
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> IMU963RA <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 = imu963ra_gyro_transition(imu963ra_gyro_x); // <20><>λΪ <20><>/s
// <20><>ע<EFBFBD><D7A2>Ϣ
//-------------------------------------------------------------------------------------------------------------------
#define imu963ra_gyro_transition(gyro_value) ((float)gyro_value / imu963ra_transition_factor[1])
//-------------------------------------------------------------------------------------------------------------------
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> IMU963RA <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> mag_value <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ĵ<EFBFBD><C4B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// <20><><EFBFBD>ز<EFBFBD><D8B2><EFBFBD> void
// ʹ<><CAB9>ʾ<EFBFBD><CABE> float data = imu963ra_mag_transition(imu963ra_mag_x); // <20><>λΪ G
// <20><>ע<EFBFBD><D7A2>Ϣ
//-------------------------------------------------------------------------------------------------------------------
#define imu963ra_mag_transition(mag_value) ((float)mag_value / imu963ra_transition_factor[2])
//================================================<3D><><EFBFBD><EFBFBD> IMU963RA <20><>չ<EFBFBD><D5B9><EFBFBD><EFBFBD>================================================
#endif

View File

@@ -31,6 +31,7 @@
* <20>޸ļ<DEB8>¼
* <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><>ע
* 2022-09-15 pudding first version
* 2023-04-28 pudding <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ע<EFBFBD><D7A2>˵<EFBFBD><CBB5>
********************************************************************************************************************/
/********************************************************************************************************************
* <20><><EFBFBD>߶<EFBFBD><DFB6>
@@ -56,13 +57,13 @@
#include "zf_driver_spi.h"
#include "zf_device_ips114.h"
static uint16 ips114_pencolor = IPS114_DEFAULT_PENCOLOR;
static uint16 ips114_bgcolor = IPS114_DEFAULT_BGCOLOR;
static uint16 ips114_pencolor = IPS114_DEFAULT_PENCOLOR; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɫ(<28><><EFBFBD><EFBFBD>ɫ)
static uint16 ips114_bgcolor = IPS114_DEFAULT_BGCOLOR; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɫ
static ips114_dir_enum ips114_display_dir = IPS114_DEFAULT_DISPLAY_DIR;
static ips114_font_size_enum ips114_display_font = IPS114_DEFAULT_DISPLAY_FONT;
static uint8 ips114_x_max = 240;
static uint8 ips114_y_max = 135;
static ips114_dir_enum ips114_display_dir = IPS114_DEFAULT_DISPLAY_DIR; // <20><>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD>
static ips114_font_size_enum ips114_display_font = IPS114_DEFAULT_DISPLAY_FONT; // <20><>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
static uint8 ips114_x_max = 240; // <20><>ĻX<C4BB><58><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ
static uint8 ips114_y_max = 135; // <20><>ĻY<C4BB><59><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ
#if IPS114_USE_SOFT_SPI
static soft_spi_info_struct ips114_spi;
@@ -137,45 +138,48 @@ static void ips114_set_region (const uint16 x1, const uint16 y1, const uint16 x2
zf_assert(x2 < ips114_x_max);
zf_assert(y2 < ips114_y_max);
if(ips114_display_dir == IPS114_PORTAIT)
switch(ips114_display_dir)
{
ips114_write_index(0x2a); // <20>е<EFBFBD>ַ<EFBFBD><D6B7><EFBFBD><EFBFBD>
ips114_write_16bit_data(x1 + 52);
ips114_write_16bit_data(x2 + 52);
ips114_write_index(0x2b); // <20>е<EFBFBD>ַ<EFBFBD><D6B7><EFBFBD><EFBFBD>
ips114_write_16bit_data(y1 + 40);
ips114_write_16bit_data(y2 + 40);
ips114_write_index(0x2c); // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>д
}
else if(ips114_display_dir == IPS114_PORTAIT_180)
{
ips114_write_index(0x2a); // <20>е<EFBFBD>ַ<EFBFBD><D6B7><EFBFBD><EFBFBD>
ips114_write_16bit_data(x1 + 53);
ips114_write_16bit_data(x2 + 53);
ips114_write_index(0x2b); // <20>е<EFBFBD>ַ<EFBFBD><D6B7><EFBFBD><EFBFBD>
ips114_write_16bit_data(y1 + 40);
ips114_write_16bit_data(y2 + 40);
ips114_write_index(0x2c); // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>д
}
else if(ips114_display_dir == IPS114_CROSSWISE)
{
ips114_write_index(0x2a); // <20>е<EFBFBD>ַ<EFBFBD><D6B7><EFBFBD><EFBFBD>
ips114_write_16bit_data(x1 + 40);
ips114_write_16bit_data(x2 + 40);
ips114_write_index(0x2b); // <20>е<EFBFBD>ַ<EFBFBD><D6B7><EFBFBD><EFBFBD>
ips114_write_16bit_data(y1 + 53);
ips114_write_16bit_data(y2 + 53);
ips114_write_index(0x2c); // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>д
}
else
{
ips114_write_index(0x2a); // <20>е<EFBFBD>ַ<EFBFBD><D6B7><EFBFBD><EFBFBD>
ips114_write_16bit_data(x1 + 40);
ips114_write_16bit_data(x2 + 40);
ips114_write_index(0x2b); // <20>е<EFBFBD>ַ<EFBFBD><D6B7><EFBFBD><EFBFBD>
ips114_write_16bit_data(y1 + 52);
ips114_write_16bit_data(y2 + 52);
ips114_write_index(0x2c); // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>д
case IPS114_PORTAIT:
{
ips114_write_index(0x2a); // <20>е<EFBFBD>ַ<EFBFBD><D6B7><EFBFBD><EFBFBD>
ips114_write_16bit_data(x1 + 52);
ips114_write_16bit_data(x2 + 52);
ips114_write_index(0x2b); // <20>е<EFBFBD>ַ<EFBFBD><D6B7><EFBFBD><EFBFBD>
ips114_write_16bit_data(y1 + 40);
ips114_write_16bit_data(y2 + 40);
ips114_write_index(0x2c); // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>д
}break;
case IPS114_PORTAIT_180:
{
ips114_write_index(0x2a); // <20>е<EFBFBD>ַ<EFBFBD><D6B7><EFBFBD><EFBFBD>
ips114_write_16bit_data(x1 + 53);
ips114_write_16bit_data(x2 + 53);
ips114_write_index(0x2b); // <20>е<EFBFBD>ַ<EFBFBD><D6B7><EFBFBD><EFBFBD>
ips114_write_16bit_data(y1 + 40);
ips114_write_16bit_data(y2 + 40);
ips114_write_index(0x2c); // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>д
}break;
case IPS114_CROSSWISE:
{
ips114_write_index(0x2a); // <20>е<EFBFBD>ַ<EFBFBD><D6B7><EFBFBD><EFBFBD>
ips114_write_16bit_data(x1 + 40);
ips114_write_16bit_data(x2 + 40);
ips114_write_index(0x2b); // <20>е<EFBFBD>ַ<EFBFBD><D6B7><EFBFBD><EFBFBD>
ips114_write_16bit_data(y1 + 53);
ips114_write_16bit_data(y2 + 53);
ips114_write_index(0x2c); // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>д
}break;
case IPS114_CROSSWISE_180:
{
ips114_write_index(0x2a); // <20>е<EFBFBD>ַ<EFBFBD><D6B7><EFBFBD><EFBFBD>
ips114_write_16bit_data(x1 + 40);
ips114_write_16bit_data(x2 + 40);
ips114_write_index(0x2b); // <20>е<EFBFBD>ַ<EFBFBD><D6B7><EFBFBD><EFBFBD>
ips114_write_16bit_data(y1 + 52);
ips114_write_16bit_data(y2 + 52);
ips114_write_index(0x2c); // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>д
}break;
}
}
@@ -198,20 +202,23 @@ static void ips114_debug_init (void)
switch(ips114_display_font)
{
case IPS114_6X8_FONT:
{
info.font_x_size = 6;
info.font_y_size = 8;
break;
}break;
case IPS114_8X16_FONT:
{
info.font_x_size = 8;
info.font_y_size = 16;
break;
}break;
case IPS114_16X16_FONT:
{
// <20>ݲ<EFBFBD>֧<EFBFBD><D6A7>
break;
}break;
}
info.output_screen = ips114_show_string;
info.output_screen_clear = ips114_clear;
debug_output_init(&info);
}
@@ -228,7 +235,7 @@ void ips114_clear (void)
IPS114_CS(0);
ips114_set_region(0, 0, ips114_x_max - 1, ips114_y_max - 1);
for( ; i > 0; i --)
for( ; 0 < i; i --)
{
ips114_write_16bit_data(ips114_bgcolor);
}
@@ -240,7 +247,7 @@ void ips114_clear (void)
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> color <20><>ɫ<EFBFBD><C9AB>ʽ RGB565 <20><><EFBFBD>߿<EFBFBD><DFBF><EFBFBD>ʹ<EFBFBD><CAB9> zf_common_font.h <20><> rgb565_color_enum ö<><C3B6>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>д<EFBFBD><D0B4>
// <20><><EFBFBD>ز<EFBFBD><D8B2><EFBFBD> void
// ʹ<><CAB9>ʾ<EFBFBD><CABE> ips114_full(RGB565_BLACK);
// <20><>ע<EFBFBD><D7A2>Ϣ
// <20><>ע<EFBFBD><D7A2>Ϣ
//-------------------------------------------------------------------------------------------------------------------
void ips114_full (const uint16 color)
{
@@ -248,7 +255,7 @@ void ips114_full (const uint16 color)
IPS114_CS(0);
ips114_set_region(0, 0, ips114_x_max - 1, ips114_y_max - 1);
for( ; i > 0; i --)
for( ; 0 < i; i --)
{
ips114_write_16bit_data(color);
}
@@ -265,15 +272,20 @@ void ips114_full (const uint16 color)
void ips114_set_dir (ips114_dir_enum dir)
{
ips114_display_dir = dir;
if(dir < 2)
switch(ips114_display_dir)
{
ips114_x_max = 135;
ips114_y_max = 240;
}
else
{
ips114_x_max = 240;
ips114_y_max = 135;
case IPS114_PORTAIT:
case IPS114_PORTAIT_180:
{
ips114_x_max = 135;
ips114_y_max = 240;
}break;
case IPS114_CROSSWISE:
case IPS114_CROSSWISE_180:
{
ips114_x_max = 240;
ips114_y_max = 135;
}break;
}
}
@@ -310,7 +322,7 @@ void ips114_set_color (const uint16 pen, const uint16 bgcolor)
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> color <20><>ɫ<EFBFBD><C9AB>ʽ RGB565 <20><><EFBFBD>߿<EFBFBD><DFBF><EFBFBD>ʹ<EFBFBD><CAB9> zf_common_font.h <20><> rgb565_color_enum ö<><C3B6>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>д<EFBFBD><D0B4>
// <20><><EFBFBD>ز<EFBFBD><D8B2><EFBFBD> void
// ʹ<><CAB9>ʾ<EFBFBD><CABE> ips114_draw_point(0, 0, RGB565_RED); // <20><><EFBFBD><EFBFBD> 0,0 <20><>һ<EFBFBD><D2BB><EFBFBD><EFBFBD>ɫ<EFBFBD>ĵ<EFBFBD>
// <20><>ע<EFBFBD><D7A2>Ϣ
// <20><>ע<EFBFBD><D7A2>Ϣ
//-------------------------------------------------------------------------------------------------------------------
void ips114_draw_point (uint16 x, uint16 y, const uint16 color)
{
@@ -334,7 +346,7 @@ void ips114_draw_point (uint16 x, uint16 y, const uint16 color)
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> color <20><>ɫ<EFBFBD><C9AB>ʽ RGB565 <20><><EFBFBD>߿<EFBFBD><DFBF><EFBFBD>ʹ<EFBFBD><CAB9> zf_common_font.h <20><> rgb565_color_enum ö<><C3B6>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>д<EFBFBD><D0B4>
// <20><><EFBFBD>ز<EFBFBD><D8B2><EFBFBD> void
// ʹ<><CAB9>ʾ<EFBFBD><CABE> ips114_draw_line(0, 0, 10, 10, RGB565_RED); // <20><><EFBFBD><EFBFBD> 0,0 <20><> 10,10 <20><>һ<EFBFBD><D2BB><EFBFBD><EFBFBD>ɫ<EFBFBD><C9AB><EFBFBD><EFBFBD>
// <20><>ע<EFBFBD><D7A2>Ϣ
// <20><>ע<EFBFBD><D7A2>Ϣ
//-------------------------------------------------------------------------------------------------------------------
void ips114_draw_line (uint16 x_start, uint16 y_start, uint16 x_end, uint16 y_end, const uint16 color)
{
@@ -394,7 +406,7 @@ void ips114_draw_line (uint16 x_start, uint16 y_start, uint16 x_end, uint16 y_en
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> dat <20><>Ҫ<EFBFBD><D2AA>ʾ<EFBFBD><CABE><EFBFBD>ַ<EFBFBD>
// <20><><EFBFBD>ز<EFBFBD><D8B2><EFBFBD> void
// ʹ<><CAB9>ʾ<EFBFBD><CABE> ips114_show_char(0, 0, 'x'); // <20><><EFBFBD><EFBFBD> 0,0 дһ<D0B4><D2BB><EFBFBD>ַ<EFBFBD> x
// <20><>ע<EFBFBD><D7A2>Ϣ
// <20><>ע<EFBFBD><D7A2>Ϣ
//-------------------------------------------------------------------------------------------------------------------
void ips114_show_char (uint16 x, uint16 y, const char dat)
{
@@ -403,18 +415,19 @@ void ips114_show_char (uint16 x, uint16 y, const char dat)
zf_assert(x < ips114_x_max);
zf_assert(y < ips114_y_max);
uint8 i, j;
uint8 i = 0, j = 0;
IPS114_CS(0);
switch(ips114_display_font)
{
case IPS114_6X8_FONT:
for(i = 0; i < 6; i ++)
{
for(i = 0; 6 > i; i ++)
{
ips114_set_region(x + i, y, x + i, y + 8);
// <20><> 32 <20><>Ϊ<EFBFBD><CEAA>ȡģ<C8A1>Ǵӿո<D3BF><D5B8><EFBFBD>ʼȡ<CABC><C8A1> <20>ո<EFBFBD><D5B8><EFBFBD> ascii <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> 32
uint8 temp_top = ascii_font_6x8[dat - 32][i];
for(j = 0; j < 8; j ++)
for(j = 0; 8 > j; j ++)
{
if(temp_top & 0x01)
{
@@ -427,15 +440,16 @@ void ips114_show_char (uint16 x, uint16 y, const char dat)
temp_top >>= 1;
}
}
break;
}break;
case IPS114_8X16_FONT:
for(i = 0; i < 8; i ++)
{
for(i = 0; 8 > i; i ++)
{
ips114_set_region(x + i, y, x + i, y + 15);
// <20><> 32 <20><>Ϊ<EFBFBD><CEAA>ȡģ<C8A1>Ǵӿո<D3BF><D5B8><EFBFBD>ʼȡ<CABC><C8A1> <20>ո<EFBFBD><D5B8><EFBFBD> ascii <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> 32
uint8 temp_top = ascii_font_8x16[dat - 32][i];
uint8 temp_bottom = ascii_font_8x16[dat - 32][i + 8];
for(j = 0; j < 8; j ++)
for(j = 0; 8 > j; j ++)
{
if(temp_top & 0x01)
{
@@ -447,7 +461,7 @@ void ips114_show_char (uint16 x, uint16 y, const char dat)
}
temp_top >>= 1;
}
for(j = 0; j < 8; j ++)
for(j = 0; 8 > j; j ++)
{
if(temp_bottom & 0x01)
{
@@ -460,10 +474,11 @@ void ips114_show_char (uint16 x, uint16 y, const char dat)
temp_bottom >>= 1;
}
}
break;
}break;
case IPS114_16X16_FONT:
{
// <20>ݲ<EFBFBD>֧<EFBFBD><D6A7>
break;
}break;
}
IPS114_CS(1);
}
@@ -475,7 +490,7 @@ void ips114_show_char (uint16 x, uint16 y, const char dat)
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> dat <20><>Ҫ<EFBFBD><D2AA>ʾ<EFBFBD><CABE><EFBFBD>ַ<EFBFBD><D6B7><EFBFBD>
// <20><><EFBFBD>ز<EFBFBD><D8B2><EFBFBD> void
// ʹ<><CAB9>ʾ<EFBFBD><CABE> ips114_show_string(0, 0, "seekfree");
// <20><>ע<EFBFBD><D7A2>Ϣ
// <20><>ע<EFBFBD><D7A2>Ϣ
//-------------------------------------------------------------------------------------------------------------------
void ips114_show_string (uint16 x, uint16 y, const char dat[])
{
@@ -483,24 +498,17 @@ void ips114_show_string (uint16 x, uint16 y, const char dat[])
// <20><>ôһ<C3B4><D2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ļ<EFBFBD><C4BB>ʾ<EFBFBD><CABE>ʱ<EFBFBD>򳬹<EFBFBD><F2B3ACB9><EFBFBD>Ļ<EFBFBD>ֱ<EFBFBD><D6B1>ʷ<EFBFBD>Χ<EFBFBD><CEA7>
zf_assert(x < ips114_x_max);
zf_assert(y < ips114_y_max);
uint16 j = 0;
while(dat[j] != '\0')
while('\0' != dat[j])
{
switch(ips114_display_font)
{
case IPS114_6X8_FONT:
ips114_show_char(x + 6 * j, y, dat[j]);
j ++;
break;
case IPS114_8X16_FONT:
ips114_show_char(x + 8 * j, y, dat[j]);
j ++;
break;
case IPS114_16X16_FONT:
// <20>ݲ<EFBFBD>֧<EFBFBD><D6A7>
break;
case IPS114_6X8_FONT: ips114_show_char(x + 6 * j, y, dat[j]); break;
case IPS114_8X16_FONT: ips114_show_char(x + 8 * j, y, dat[j]); break;
case IPS114_16X16_FONT: break; // <20>ݲ<EFBFBD>֧<EFBFBD><D6A7>
}
j ++;
}
}
@@ -512,7 +520,7 @@ void ips114_show_string (uint16 x, uint16 y, const char dat[])
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> num <20><>Ҫ<EFBFBD><D2AA>ʾ<EFBFBD><CABE>λ<EFBFBD><CEBB> <20><><EFBFBD><EFBFBD>10λ <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// <20><><EFBFBD>ز<EFBFBD><D8B2><EFBFBD> void
// ʹ<><CAB9>ʾ<EFBFBD><CABE> ips114_show_int(0, 0, x, 3); // x <20><><EFBFBD><EFBFBD>Ϊ int32 int16 int8 <20><><EFBFBD><EFBFBD>
// <20><>ע<EFBFBD><D7A2>Ϣ <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾһ<CABE><D2BB> <20><>-<2D><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾһ<CABE><D2BB><EFBFBD>ո<EFBFBD>
// <20><>ע<EFBFBD><D7A2>Ϣ <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾһ<CABE><D2BB> <20><>-<2D><><EFBFBD><EFBFBD>
//-------------------------------------------------------------------------------------------------------------------
void ips114_show_int (uint16 x, uint16 y, const int32 dat, uint8 num)
{
@@ -520,8 +528,8 @@ void ips114_show_int (uint16 x, uint16 y, const int32 dat, uint8 num)
// <20><>ôһ<C3B4><D2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ļ<EFBFBD><C4BB>ʾ<EFBFBD><CABE>ʱ<EFBFBD>򳬹<EFBFBD><F2B3ACB9><EFBFBD>Ļ<EFBFBD>ֱ<EFBFBD><D6B1>ʷ<EFBFBD>Χ<EFBFBD><CEA7>
zf_assert(x < ips114_x_max);
zf_assert(y < ips114_y_max);
zf_assert(num > 0);
zf_assert(num <= 10);
zf_assert(0 < num);
zf_assert(10 >= num);
int32 dat_temp = dat;
int32 offset = 1;
@@ -530,9 +538,10 @@ void ips114_show_int (uint16 x, uint16 y, const int32 dat, uint8 num)
memset(data_buffer, 0, 12);
memset(data_buffer, ' ', num + 1);
if(num < 10)
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾ 123 <20><>ʾ 2 λ<><CEBB>Ӧ<EFBFBD><D3A6><EFBFBD><EFBFBD>ʾ 23
if(10 > num)
{
for(; num > 0; num --)
for(; 0 < num; num --)
{
offset *= 10;
}
@@ -550,7 +559,7 @@ void ips114_show_int (uint16 x, uint16 y, const int32 dat, uint8 num)
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> num <20><>Ҫ<EFBFBD><D2AA>ʾ<EFBFBD><CABE>λ<EFBFBD><CEBB> <20><><EFBFBD><EFBFBD>10λ <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// <20><><EFBFBD>ز<EFBFBD><D8B2><EFBFBD> void
// ʹ<><CAB9>ʾ<EFBFBD><CABE> ips114_show_uint(0, 0, x, 3); // x <20><><EFBFBD><EFBFBD>Ϊ uint32 uint16 uint8 <20><><EFBFBD><EFBFBD>
// <20><>ע<EFBFBD><D7A2>Ϣ <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾһ<EFBFBD><EFBFBD> <20><>-<2D><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾһ<CABE><D2BB><EFBFBD>ո<EFBFBD>
// <20><>ע<EFBFBD><D7A2>Ϣ
//-------------------------------------------------------------------------------------------------------------------
void ips114_show_uint (uint16 x, uint16 y, const uint32 dat, uint8 num)
{
@@ -558,8 +567,8 @@ void ips114_show_uint (uint16 x, uint16 y, const uint32 dat, uint8 num)
// <20><>ôһ<C3B4><D2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ļ<EFBFBD><C4BB>ʾ<EFBFBD><CABE>ʱ<EFBFBD>򳬹<EFBFBD><F2B3ACB9><EFBFBD>Ļ<EFBFBD>ֱ<EFBFBD><D6B1>ʷ<EFBFBD>Χ<EFBFBD><CEA7>
zf_assert(x < ips114_x_max);
zf_assert(y < ips114_y_max);
zf_assert(num > 0);
zf_assert(num <= 10);
zf_assert(0 < num);
zf_assert(10 >= num);
uint32 dat_temp = dat;
int32 offset = 1;
@@ -567,9 +576,10 @@ void ips114_show_uint (uint16 x, uint16 y, const uint32 dat, uint8 num)
memset(data_buffer, 0, 12);
memset(data_buffer, ' ', num);
if(num < 10)
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾ 123 <20><>ʾ 2 λ<><CEBB>Ӧ<EFBFBD><D3A6><EFBFBD><EFBFBD>ʾ 23
if(10 > num)
{
for(; num > 0; num --)
for(; 0 < num; num --)
{
offset *= 10;
}
@@ -583,15 +593,15 @@ void ips114_show_uint (uint16 x, uint16 y, const uint32 dat, uint8 num)
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> IPS114 <20><>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD><EFBFBD><EFBFBD><><C8A5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ч<EFBFBD><D0A7>0)
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> x <20><><EFBFBD><EFBFBD>x<EFBFBD><78><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Χ [0, ips114_x_max-1]
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> y <20><><EFBFBD><EFBFBD>y<EFBFBD><79><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Χ [0, ips114_y_max-1]
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> dat <20><>Ҫ<EFBFBD><D2AA>ʾ<EFBFBD>ı<EFBFBD><C4B1><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> float <20><> double
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> num <20><><EFBFBD><EFBFBD>λ<EFBFBD><CEBB>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> dat <20><>Ҫ<EFBFBD><D2AA>ʾ<EFBFBD>ı<EFBFBD><C4B1><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> float
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> num <20><><EFBFBD><EFBFBD>λ<EFBFBD><CEBB>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> pointnum С<><D0A1>λ<EFBFBD><CEBB>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
// <20><><EFBFBD>ز<EFBFBD><D8B2><EFBFBD> void
// ʹ<><CAB9>ʾ<EFBFBD><CABE> ips114_show_float(0, 0, x, 2, 3); // <20><>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾ 2 λ С<><D0A1><EFBFBD><EFBFBD>ʾ 3 λ
// <20><>ע<EFBFBD><D7A2>Ϣ <20>ر<EFBFBD>ע<EFBFBD><EFBFBD><E2B5B1><EFBFBD><EFBFBD>С<EFBFBD><D0A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾ<EFBFBD><CABE>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD>д<EFBFBD><D0B4><EFBFBD><EFBFBD>ֵ<EFBFBD><D6B5>һ<EFBFBD><D2BB><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD>
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڸ<EFBFBD><DAB8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȶ<EFBFBD>ʧ<EFBFBD><CAA7><EFBFBD><EFBFBD>µģ<C2B5><C4A3><EFBFBD><E2B2A2><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// <20>й<EFBFBD><D0B9><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E9A3AC><EFBFBD><EFBFBD><EFBFBD>аٶ<D0B0>ѧϰ <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȶ<EFBFBD>ʧ<EFBFBD><CAA7><EFBFBD>
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾһ<CABE><D2BB> <20><>-<2D><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾһ<CABE><D2BB><EFBFBD>ո<EFBFBD>
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾһ<CABE><D2BB> <20><>-<2D><><EFBFBD><EFBFBD>
//-------------------------------------------------------------------------------------------------------------------
void ips114_show_float (uint16 x, uint16 y, const float dat, uint8 num, uint8 pointnum)
{
@@ -599,10 +609,10 @@ void ips114_show_float (uint16 x, uint16 y, const float dat, uint8 num, uint8 po
// <20><>ôһ<C3B4><D2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ļ<EFBFBD><C4BB>ʾ<EFBFBD><CABE>ʱ<EFBFBD>򳬹<EFBFBD><F2B3ACB9><EFBFBD>Ļ<EFBFBD>ֱ<EFBFBD><D6B1>ʷ<EFBFBD>Χ<EFBFBD><CEA7>
zf_assert(x < ips114_x_max);
zf_assert(y < ips114_y_max);
zf_assert(num > 0);
zf_assert(num <= 8);
zf_assert(pointnum > 0);
zf_assert(pointnum <= 6);
zf_assert(0 < num);
zf_assert(8 >= num);
zf_assert(0 < pointnum);
zf_assert(6 >= pointnum);
float dat_temp = dat;
float offset = 1.0;
@@ -610,14 +620,12 @@ void ips114_show_float (uint16 x, uint16 y, const float dat, uint8 num, uint8 po
memset(data_buffer, 0, 17);
memset(data_buffer, ' ', num + pointnum + 2);
if(num < 10)
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾ 123 <20><>ʾ 2 λ<><CEBB>Ӧ<EFBFBD><D3A6><EFBFBD><EFBFBD>ʾ 23
for(; 0 < num; num --)
{
for(; num > 0; num --)
{
offset *= 10;
}
dat_temp = dat_temp - ((int)dat_temp / (int)offset) * offset;
offset *= 10;
}
dat_temp = dat_temp - ((int)dat_temp / (int)offset) * offset;
func_float_to_str(data_buffer, dat_temp, pointnum);
ips114_show_string(x, y, data_buffer);
}
@@ -633,7 +641,10 @@ void ips114_show_float (uint16 x, uint16 y, const float dat, uint8 num, uint8 po
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> dis_height ͼ<><CDBC><EFBFBD><EFBFBD>ʾ<EFBFBD>߶<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Χ [0, ips114_y_max]
// <20><><EFBFBD>ز<EFBFBD><D8B2><EFBFBD> void
// ʹ<><CAB9>ʾ<EFBFBD><CABE> ips114_show_binary_image(0, 0, ov7725_image_binary[0], OV7725_W, OV7725_H, OV7725_W, OV7725_H);
// <20><>ע<EFBFBD><D7A2>Ϣ
// <20><>ע<EFBFBD><D7A2>Ϣ <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾС<CABE><D0A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>δ<EFBFBD><CEB4>ѹ<EFBFBD><D1B9>ѹ<EFBFBD><D1B9><EFBFBD><EFBFBD>ֵ<EFBFBD><D6B5>ͼ<EFBFBD><CDBC>
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֱ<EFBFBD><D6B1><EFBFBD><EFBFBD>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>δѹ<CEB4><D1B9><EFBFBD>Ķ<EFBFBD>ֵ<EFBFBD><D6B5>ͼ<EFBFBD><CDBC>
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֱ<EFBFBD><D6B1><EFBFBD><EFBFBD>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>δѹ<CEB4><D1B9><EFBFBD>Ķ<EFBFBD>ֵ<EFBFBD><D6B5>ͼ<EFBFBD><CDBC>
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֱ<EFBFBD><D6B1><EFBFBD><EFBFBD>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>δѹ<CEB4><D1B9><EFBFBD>Ķ<EFBFBD>ֵ<EFBFBD><D6B5>ͼ<EFBFBD><CDBC>
//-------------------------------------------------------------------------------------------------------------------
void ips114_show_binary_image (uint16 x, uint16 y, const uint8 *image, uint16 width, uint16 height, uint16 dis_width, uint16 dis_height)
{
@@ -641,7 +652,7 @@ void ips114_show_binary_image (uint16 x, uint16 y, const uint8 *image, uint16 wi
// <20><>ôһ<C3B4><D2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ļ<EFBFBD><C4BB>ʾ<EFBFBD><CABE>ʱ<EFBFBD>򳬹<EFBFBD><F2B3ACB9><EFBFBD>Ļ<EFBFBD>ֱ<EFBFBD><D6B1>ʷ<EFBFBD>Χ<EFBFBD><CEA7>
zf_assert(x < ips114_x_max);
zf_assert(y < ips114_y_max);
zf_assert(image != NULL);
zf_assert(NULL != image);
uint32 i = 0, j = 0;
uint8 temp = 0;
@@ -682,7 +693,10 @@ void ips114_show_binary_image (uint16 x, uint16 y, const uint8 *image, uint16 wi
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> threshold <20><>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD>ʾ<EFBFBD><CABE>ֵ 0-<2D><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ<EFBFBD><D6B5>
// <20><><EFBFBD>ز<EFBFBD><D8B2><EFBFBD> void
// ʹ<><CAB9>ʾ<EFBFBD><CABE> ips114_show_gray_image(0, 0, mt9v03x_image[0], MT9V03X_W, MT9V03X_H, MT9V03X_W, MT9V03X_H, 0);
// <20><>ע<EFBFBD><D7A2>Ϣ
// <20><>ע<EFBFBD><D7A2>Ϣ <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͼ<EFBFBD><CDBC>
// <20><><EFBFBD><EFBFBD>Ҫ<EFBFBD><D2AA>ʾ<EFBFBD><CABE>ֵ<EFBFBD><D6B5>ͼ<EFBFBD><CDBC> ֱ<><D6B1><EFBFBD>޸<EFBFBD><DEB8><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA>Ҫ<EFBFBD>Ķ<EFBFBD>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD>
// <20><><EFBFBD><EFBFBD>Ҫ<EFBFBD><D2AA>ʾ<EFBFBD><CABE>ֵ<EFBFBD><D6B5>ͼ<EFBFBD><CDBC> ֱ<><D6B1><EFBFBD>޸<EFBFBD><DEB8><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA>Ҫ<EFBFBD>Ķ<EFBFBD>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD>
// <20><><EFBFBD><EFBFBD>Ҫ<EFBFBD><D2AA>ʾ<EFBFBD><CABE>ֵ<EFBFBD><D6B5>ͼ<EFBFBD><CDBC> ֱ<><D6B1><EFBFBD>޸<EFBFBD><DEB8><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA>Ҫ<EFBFBD>Ķ<EFBFBD>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD>
//-------------------------------------------------------------------------------------------------------------------
void ips114_show_gray_image (uint16 x, uint16 y, const uint8 *image, uint16 width, uint16 height, uint16 dis_width, uint16 dis_height, uint8 threshold)
{
@@ -690,7 +704,7 @@ void ips114_show_gray_image (uint16 x, uint16 y, const uint8 *image, uint16 widt
// <20><>ôһ<C3B4><D2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ļ<EFBFBD><C4BB>ʾ<EFBFBD><CABE>ʱ<EFBFBD>򳬹<EFBFBD><F2B3ACB9><EFBFBD>Ļ<EFBFBD>ֱ<EFBFBD><D6B1>ʷ<EFBFBD>Χ<EFBFBD><CEA7>
zf_assert(x < ips114_x_max);
zf_assert(y < ips114_y_max);
zf_assert(image != NULL);
zf_assert(NULL != image);
uint32 i = 0, j = 0;
uint16 color = 0,temp = 0;
@@ -738,7 +752,10 @@ void ips114_show_gray_image (uint16 x, uint16 y, const uint8 *image, uint16 widt
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> color_mode ɫ<><C9AB>ģʽ 0-<2D><>λ<EFBFBD><CEBB>ǰ 1-<2D><>λ<EFBFBD><CEBB>ǰ
// <20><><EFBFBD>ز<EFBFBD><D8B2><EFBFBD> void
// ʹ<><CAB9>ʾ<EFBFBD><CABE> ips114_show_rgb565_image(0, 0, scc8660_image[0], SCC8660_W, SCC8660_H, SCC8660_W, SCC8660_H, 1);
// <20><>ע<EFBFBD><D7A2>Ϣ
// <20><>ע<EFBFBD><D7A2>Ϣ <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾ<EFBFBD><CABE>ͫ<EFBFBD><CDAB> RGB565 <20><>ͼ<EFBFBD><CDBC>
// <20><><EFBFBD><EFBFBD>Ҫ<EFBFBD><D2AA>ʾ<EFBFBD><CABE>λ<EFBFBD><CEBB>ǰ<EFBFBD><C7B0><EFBFBD><EFBFBD><EFBFBD><EFBFBD> RGB565 ͼ<><CDBC> <20>޸<EFBFBD><DEB8><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// <20><><EFBFBD><EFBFBD>Ҫ<EFBFBD><D2AA>ʾ<EFBFBD><CABE>λ<EFBFBD><CEBB>ǰ<EFBFBD><C7B0><EFBFBD><EFBFBD><EFBFBD><EFBFBD> RGB565 ͼ<><CDBC> <20>޸<EFBFBD><DEB8><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// <20><><EFBFBD><EFBFBD>Ҫ<EFBFBD><D2AA>ʾ<EFBFBD><CABE>λ<EFBFBD><CEBB>ǰ<EFBFBD><C7B0><EFBFBD><EFBFBD><EFBFBD><EFBFBD> RGB565 ͼ<><CDBC> <20>޸<EFBFBD><DEB8><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
//-------------------------------------------------------------------------------------------------------------------
void ips114_show_rgb565_image (uint16 x, uint16 y, const uint16 *image, uint16 width, uint16 height, uint16 dis_width, uint16 dis_height, uint8 color_mode)
{
@@ -746,7 +763,7 @@ void ips114_show_rgb565_image (uint16 x, uint16 y, const uint16 *image, uint16 w
// <20><>ôһ<C3B4><D2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ļ<EFBFBD><C4BB>ʾ<EFBFBD><CABE>ʱ<EFBFBD>򳬹<EFBFBD><F2B3ACB9><EFBFBD>Ļ<EFBFBD>ֱ<EFBFBD><D6B1>ʷ<EFBFBD>Χ<EFBFBD><CEA7>
zf_assert(x < ips114_x_max);
zf_assert(y < ips114_y_max);
zf_assert(image != NULL);
zf_assert(NULL != image);
uint32 i = 0, j = 0;
uint16 color = 0;
@@ -783,7 +800,7 @@ void ips114_show_rgb565_image (uint16 x, uint16 y, const uint16 *image, uint16 w
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> dis_value_max <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD>ֵ <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Χ [0, ips114_y_max]
// <20><><EFBFBD>ز<EFBFBD><D8B2><EFBFBD> void
// ʹ<><CAB9>ʾ<EFBFBD><CABE> ips114_show_wave(56,35,data,128,64,128,64);
// <20><>ע<EFBFBD><D7A2>Ϣ
// <20><>ע<EFBFBD><D7A2>Ϣ
//-------------------------------------------------------------------------------------------------------------------
void ips114_show_wave (uint16 x, uint16 y, const uint16 *wave, uint16 width, uint16 value_max, uint16 dis_width, uint16 dis_value_max)
{
@@ -791,7 +808,7 @@ void ips114_show_wave (uint16 x, uint16 y, const uint16 *wave, uint16 width, uin
// <20><>ôһ<C3B4><D2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ļ<EFBFBD><C4BB>ʾ<EFBFBD><CABE>ʱ<EFBFBD>򳬹<EFBFBD><F2B3ACB9><EFBFBD>Ļ<EFBFBD>ֱ<EFBFBD><D6B1>ʷ<EFBFBD>Χ<EFBFBD><CEA7>
zf_assert(x < ips114_x_max);
zf_assert(y < ips114_y_max);
zf_assert(wave != NULL);
zf_assert(NULL != wave);
uint32 i = 0, j = 0;
uint32 width_index = 0, value_max_index = 0;
@@ -802,7 +819,7 @@ void ips114_show_wave (uint16 x, uint16 y, const uint16 *wave, uint16 width, uin
{
for(j = 0; j < dis_width; j ++)
{
ips114_write_16bit_data(ips114_bgcolor);
ips114_write_16bit_data(ips114_bgcolor);
}
}
IPS114_CS(1);
@@ -833,17 +850,17 @@ void ips114_show_chinese (uint16 x, uint16 y, uint8 size, const uint8 *chinese_b
// <20><>ôһ<C3B4><D2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ļ<EFBFBD><C4BB>ʾ<EFBFBD><CABE>ʱ<EFBFBD>򳬹<EFBFBD><F2B3ACB9><EFBFBD>Ļ<EFBFBD>ֱ<EFBFBD><D6B1>ʷ<EFBFBD>Χ<EFBFBD><CEA7>
zf_assert(x < ips114_x_max);
zf_assert(y < ips114_y_max);
zf_assert(chinese_buffer != NULL);
int i, j, k;
uint8 temp, temp1, temp2;
const uint8 *p_data;
zf_assert(NULL != chinese_buffer);
int i = 0, j = 0, k = 0;
uint8 temp = 0, temp1 = 0, temp2 = 0;
const uint8 *p_data = chinese_buffer;
temp2 = size / 8;
IPS114_CS(0);
ips114_set_region(x, y, number * size - 1 + x, y + size - 1);
for(i = 0; i < size; i ++)
{
temp1 = number;
@@ -852,7 +869,7 @@ void ips114_show_chinese (uint16 x, uint16 y, uint8 size, const uint8 *chinese_b
{
for(k = 0; k < temp2; k ++)
{
for(j = 8; j > 0; j --)
for(j = 8; 0 < j; j --)
{
temp = (*p_data >> (j - 1)) & 0x01;
if(temp)
@@ -867,7 +884,7 @@ void ips114_show_chinese (uint16 x, uint16 y, uint8 size, const uint8 *chinese_b
p_data ++;
}
p_data = p_data - temp2 + temp2 * size;
}
}
}
IPS114_CS(1);
}
@@ -877,7 +894,7 @@ void ips114_show_chinese (uint16 x, uint16 y, uint8 size, const uint8 *chinese_b
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> void
// <20><><EFBFBD>ز<EFBFBD><D8B2><EFBFBD> void
// ʹ<><CAB9>ʾ<EFBFBD><CABE> ips114_init();
// <20><>ע<EFBFBD><D7A2>Ϣ
// <20><>ע<EFBFBD><D7A2>Ϣ
//-------------------------------------------------------------------------------------------------------------------
void ips114_init (void)
{
@@ -887,14 +904,13 @@ void ips114_init (void)
spi_init(IPS114_SPI, SPI_MODE0, IPS114_SPI_SPEED, IPS114_SCL_PIN, IPS114_SDA_PIN, IPS114_SDA_IN_PIN, SPI_CS_NULL);
#endif
gpio_init(IPS114_DC_PIN, GPO, GPIO_LOW, GPO_PUSH_PULL);
gpio_init(IPS114_RST_PIN, GPO, GPIO_LOW, GPO_PUSH_PULL);
gpio_init(IPS114_CS_PIN, GPO, GPIO_HIGH, GPO_PUSH_PULL);
gpio_init(IPS114_DC_PIN, GPO, GPIO_LOW, GPO_PUSH_PULL);
gpio_init(IPS114_RST_PIN, GPO, GPIO_LOW, GPO_PUSH_PULL);
gpio_init(IPS114_CS_PIN, GPO, GPIO_HIGH, GPO_PUSH_PULL);
gpio_init(IPS114_BLK_PIN, GPO, GPIO_HIGH, GPO_PUSH_PULL);
ips114_set_dir(ips114_display_dir);
ips114_set_color(ips114_pencolor, ips114_bgcolor);
ips114_debug_init();
IPS114_RST(0);
system_delay_ms(200);
@@ -905,21 +921,12 @@ void ips114_init (void)
IPS114_CS(0);
ips114_write_index(0x36);
system_delay_ms(100);
if(ips114_display_dir == 0)
switch(ips114_display_dir)
{
ips114_write_8bit_data(0x00);
}
else if(ips114_display_dir == 1)
{
ips114_write_8bit_data(0xC0);
}
else if(ips114_display_dir == 2)
{
ips114_write_8bit_data(0x70);
}
else
{
ips114_write_8bit_data(0xA0);
case IPS114_PORTAIT: ips114_write_8bit_data(0x00); break;
case IPS114_PORTAIT_180: ips114_write_8bit_data(0xC0); break;
case IPS114_CROSSWISE: ips114_write_8bit_data(0x70); break;
case IPS114_CROSSWISE_180: ips114_write_8bit_data(0xA0); break;
}
ips114_write_index(0x3A);
@@ -998,4 +1005,5 @@ void ips114_init (void)
IPS114_CS(1);
ips114_clear();
ips114_debug_init();
}

View File

@@ -31,6 +31,7 @@
* <20>޸ļ<DEB8>¼
* <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><>ע
* 2022-09-15 pudding first version
* 2023-04-28 pudding <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ע<EFBFBD><D7A2>˵<EFBFBD><CBB5>
********************************************************************************************************************/
/********************************************************************************************************************
* <20><><EFBFBD>߶<EFBFBD><DFB6>
@@ -53,6 +54,7 @@
#include "zf_common_typedef.h"
//=================================================<3D><><EFBFBD><EFBFBD> IPS114 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>================================================
#define IPS114_USE_SOFT_SPI (0) // Ĭ<><C4AC>ʹ<EFBFBD><CAB9>Ӳ<EFBFBD><D3B2> SPI <20><>ʽ<EFBFBD><CABD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>ʹ<EFBFBD><CAB9>Ӳ<EFBFBD><D3B2> SPI <20><>ʽ<EFBFBD><CABD><EFBFBD><EFBFBD>
#if IPS114_USE_SOFT_SPI // <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> SPI <20><><EFBFBD><EFBFBD>==================================================
@@ -84,6 +86,8 @@
#define IPS114_RST(x) ((x) ? (gpio_high(IPS114_RST_PIN)) : (gpio_low(IPS114_RST_PIN)))
#define IPS114_CS(x) ((x) ? (gpio_high(IPS114_CS_PIN)) : (gpio_low(IPS114_CS_PIN)))
#define IPS114_BLK(x) ((x) ? (gpio_high(IPS114_BLK_PIN)) : (gpio_low(IPS114_BLK_PIN)))
//=================================================<3D><><EFBFBD><EFBFBD> IPS114 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>================================================
//=================================================<3D><><EFBFBD><EFBFBD> IPS114 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E1B9B9>===============================================
typedef enum
@@ -102,32 +106,33 @@ typedef enum
}ips114_font_size_enum;
//=================================================<3D><><EFBFBD><EFBFBD> IPS114 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E1B9B9>===============================================
//===================================================IPS114 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>==================================================
void ips114_clear (void);
void ips114_full (const uint16 color);
void ips114_set_dir (ips114_dir_enum dir);
void ips114_set_font (ips114_font_size_enum font);
void ips114_set_color (const uint16 pen, const uint16 bgcolor);
void ips114_draw_point (uint16 x, uint16 y, const uint16 color);
void ips114_draw_line (uint16 x_start, uint16 y_start, uint16 x_end, uint16 y_end, const uint16 color);
void ips114_show_char (uint16 x, uint16 y, const char dat);
void ips114_show_string (uint16 x, uint16 y, const char dat[]);
void ips114_show_int (uint16 x,uint16 y, const int32 dat, uint8 num);
void ips114_show_uint (uint16 x,uint16 y, const uint32 dat, uint8 num);
void ips114_show_float (uint16 x,uint16 y, const float dat, uint8 num, uint8 pointnum);
//=================================================<3D><><EFBFBD><EFBFBD> IPS114 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>================================================
void ips114_clear (void); // IPS114 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
void ips114_full (const uint16 color); // IPS114 <20><>Ļ<EFBFBD><C4BB><EFBFBD><EFBFBD><E4BAAF>
void ips114_set_dir (ips114_dir_enum dir); // IPS114 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD>
void ips114_set_font (ips114_font_size_enum font); // IPS114 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD>
void ips114_set_color (const uint16 pen, const uint16 bgcolor); // IPS114 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾ<EFBFBD><CABE>ɫ
void ips114_draw_point (uint16 x, uint16 y, const uint16 color); // IPS114 <20><><EFBFBD><EFBFBD><E3BAAF>
void ips114_draw_line (uint16 x_start, uint16 y_start, uint16 x_end, uint16 y_end, const uint16 color); // IPS114 <20><><EFBFBD>ߺ<EFBFBD><DFBA><EFBFBD>
void ips114_show_binary_image (uint16 x, uint16 y, const uint8 *image, uint16 width, uint16 height, uint16 dis_width, uint16 dis_height);
void ips114_show_gray_image (uint16 x, uint16 y, const uint8 *image, uint16 width, uint16 height, uint16 dis_width, uint16 dis_height, uint8 threshold);
void ips114_show_rgb565_image (uint16 x, uint16 y, const uint16 *image, uint16 width, uint16 height, uint16 dis_width, uint16 dis_height, uint8 color_mode);
void ips114_show_char (uint16 x, uint16 y, const char dat); // IPS114 <20><>ʾ<EFBFBD>ַ<EFBFBD>
void ips114_show_string (uint16 x, uint16 y, const char dat[]); // IPS114 <20><>ʾ<EFBFBD>ַ<EFBFBD><D6B7><EFBFBD>
void ips114_show_int (uint16 x,uint16 y, const int32 dat, uint8 num); // IPS114 <20><>ʾ32λ<32>з<EFBFBD><D0B7><EFBFBD><><C8A5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ч<EFBFBD><D0A7>0)
void ips114_show_uint (uint16 x,uint16 y, const uint32 dat, uint8 num); // IPS114 <20><>ʾ32λ<32>޷<EFBFBD><DEB7><EFBFBD><><C8A5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ч<EFBFBD><D0A7>0)
void ips114_show_float (uint16 x,uint16 y, const float dat, uint8 num, uint8 pointnum); // IPS114 <20><>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD><EFBFBD><EFBFBD><><C8A5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ч<EFBFBD><D0A7>0)
void ips114_show_wave (uint16 x, uint16 y, const uint16 *wave, uint16 width, uint16 value_max, uint16 dis_width, uint16 dis_value_max);
void ips114_show_chinese (uint16 x, uint16 y, uint8 size, const uint8 *chinese_buffer, uint8 number, const uint16 color);
void ips114_init (void);
//===================================================IPS114 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>==================================================
void ips114_show_binary_image (uint16 x, uint16 y, const uint8 *image, uint16 width, uint16 height, uint16 dis_width, uint16 dis_height); // IPS114 <20><>ʾ<EFBFBD><CABE>ֵͼ<D6B5><CDBC> <20><><EFBFBD><EFBFBD>ÿ<EFBFBD>˸<EFBFBD><CBB8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD>ֽ<EFBFBD><D6BD><EFBFBD><EFBFBD><EFBFBD>
void ips114_show_gray_image (uint16 x, uint16 y, const uint8 *image, uint16 width, uint16 height, uint16 dis_width, uint16 dis_height, uint8 threshold); // IPS114 <20><>ʾ 8bit <20>Ҷ<EFBFBD>ͼ<EFBFBD><CDBC> <20><><EFBFBD><EFBFBD>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD>ֵ
void ips114_show_rgb565_image (uint16 x, uint16 y, const uint16 *image, uint16 width, uint16 height, uint16 dis_width, uint16 dis_height, uint8 color_mode); // IPS114 <20><>ʾ RGB565 <20><>ɫͼ<C9AB><CDBC>
void ips114_show_wave (uint16 x, uint16 y, const uint16 *wave, uint16 width, uint16 value_max, uint16 dis_width, uint16 dis_value_max); // IPS114 <20><>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD>
void ips114_show_chinese (uint16 x, uint16 y, uint8 size, const uint8 *chinese_buffer, uint8 number, const uint16 color); // IPS114 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾ
void ips114_init (void); // 1.14<EFBFBD><EFBFBD> IPSҺ<53><D2BA><EFBFBD><EFBFBD>ʼ<EFBFBD><CABC>
//=================================================<3D><><EFBFBD><EFBFBD> IPS114 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>================================================
//===================================================IPS114 <20><>չ<EFBFBD><D5B9><EFBFBD><EFBFBD>==================================================
//=================================================<EFBFBD><EFBFBD><EFBFBD><EFBFBD> IPS114 <20><>չ<EFBFBD><D5B9><EFBFBD><EFBFBD>================================================
//-------------------------------------------------------------------------------------------------------------------
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> IPS114 <20><>ʾС<CABE><D0A1><EFBFBD><EFBFBD>ͼ<EFBFBD><CDBC>
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> p ͼ<><CDBC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ָ<EFBFBD><D6B8>
@@ -160,7 +165,6 @@ void ips114_init (void);
// <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))
//===================================================IPS114 <20><>չ<EFBFBD><D5B9><EFBFBD><EFBFBD>==================================================
//=================================================<3D><><EFBFBD><EFBFBD> IPS114 <20><>չ<EFBFBD><D5B9><EFBFBD><EFBFBD>================================================
#endif

View File

@@ -31,6 +31,7 @@
* <20>޸ļ<DEB8>¼
* <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><>ע
* 2022-09-15 pudding first version
* 2023-04-28 pudding <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ע<EFBFBD><D7A2>˵<EFBFBD><CBB5>
********************************************************************************************************************/
/********************************************************************************************************************
* <20><><EFBFBD>߶<EFBFBD><DFB6>
@@ -69,18 +70,20 @@
#include "zf_driver_spi.h"
#include "zf_device_ips200.h"
static uint16 ips200_pencolor = IPS200_DEFAULT_PENCOLOR;
static uint16 ips200_bgcolor = IPS200_DEFAULT_BGCOLOR;
static ips200_type_enum ips200_display_type = IPS200_TYPE_SPI;
static ips200_dir_enum ips200_display_dir = IPS200_DEFAULT_DISPLAY_DIR;
static ips200_font_size_enum ips200_display_font = IPS200_DEFAULT_DISPLAY_FONT;
static uint16 ips200_x_max = 240;
static uint16 ips200_y_max = 320;
static ips200_type_enum ips200_display_type = IPS200_TYPE_SPI; // <20><><EFBFBD><EFBFBD>ͨ<EFBFBD><CDA8><EFBFBD><EFBFBD><EFBFBD>ͣ<EFBFBD>Ĭ<EFBFBD><C4AC>SPI<50><49><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
static gpio_pin_enum ips_rst_pin = IPS200_RST_PIN_SPI;
static gpio_pin_enum ips_bl_pin = IPS200_BLk_PIN_SPI;
static uint16 ips200_pencolor = IPS200_DEFAULT_PENCOLOR; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɫ(<28><><EFBFBD><EFBFBD>ɫ)
static uint16 ips200_bgcolor = IPS200_DEFAULT_BGCOLOR; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɫ
static ips200_dir_enum ips200_display_dir = IPS200_DEFAULT_DISPLAY_DIR; // <20><>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD>
static ips200_font_size_enum ips200_display_font = IPS200_DEFAULT_DISPLAY_FONT; // <20><>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
static uint16 ips200_x_max = 240; // <20><>ĻX<C4BB><58><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ
static uint16 ips200_y_max = 320; // <20><>ĻY<C4BB><59><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ
static gpio_pin_enum ips_rst_pin = IPS200_RST_PIN_SPI; // <20><><EFBFBD>帴λ<E5B8B4><CEBB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
static gpio_pin_enum ips_bl_pin = IPS200_BLk_PIN_SPI; // <20><><EFBFBD><EFBFBD><E5B1B3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
static gpio_pin_enum ips_cs_pin = IPS200_CS_PIN_SPI; // <20><><EFBFBD><EFBFBD>Ƭѡ<C6AC><D1A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
#if IPS200_USE_SOFT_SPI
static soft_spi_info_struct ips200_spi;
@@ -288,7 +291,7 @@ static void ips200_debug_init (void)
//-------------------------------------------------------------------------------------------------------------------
void ips200_clear (void)
{
uint16 i, j;
uint16 i = 0, j = 0;
if(IPS200_TYPE_SPI == ips200_display_type)
{
IPS200_CS(0);
@@ -298,7 +301,7 @@ void ips200_clear (void)
{
for (j = 0; j < ips200_y_max; j ++)
{
ips200_write_16bit_data(ips200_bgcolor);
ips200_write_16bit_data(ips200_bgcolor);
}
}
if(IPS200_TYPE_SPI == ips200_display_type)
@@ -316,7 +319,7 @@ void ips200_clear (void)
//-------------------------------------------------------------------------------------------------------------------
void ips200_full (const uint16 color)
{
uint16 i, j;
uint16 i = 0, j = 0;
if(IPS200_TYPE_SPI == ips200_display_type)
{
IPS200_CS(0);
@@ -326,7 +329,7 @@ void ips200_full (const uint16 color)
{
for (j = 0; j < ips200_y_max; j ++)
{
ips200_write_16bit_data(color);
ips200_write_16bit_data(color);
}
}
if(IPS200_TYPE_SPI == ips200_display_type)
@@ -345,15 +348,20 @@ void ips200_full (const uint16 color)
void ips200_set_dir (ips200_dir_enum dir)
{
ips200_display_dir = dir;
if(dir < 2)
switch(ips200_display_dir)
{
ips200_x_max = 240;
ips200_y_max = 320;
}
else
{
ips200_x_max = 320;
ips200_y_max = 240;
case IPS200_PORTAIT:
case IPS200_PORTAIT_180:
{
ips200_x_max = 240;
ips200_y_max = 320;
}break;
case IPS200_CROSSWISE:
case IPS200_CROSSWISE_180:
{
ips200_x_max = 320;
ips200_y_max = 240;
}break;
}
}
@@ -489,7 +497,7 @@ void ips200_show_char (uint16 x, uint16 y, const char dat)
zf_assert(x < ips200_x_max);
zf_assert(y < ips200_y_max);
uint8 i, j;
uint8 i = 0, j = 0;
if(IPS200_TYPE_SPI == ips200_display_type)
{
@@ -498,12 +506,13 @@ void ips200_show_char (uint16 x, uint16 y, const char dat)
switch(ips200_display_font)
{
case IPS200_6X8_FONT:
for(i = 0; i < 6; i ++)
{
for(i = 0; 6 > i; i ++)
{
ips200_set_region(x + i, y, x + i, y + 8);
// <20><> 32 <20><>Ϊ<EFBFBD><CEAA>ȡģ<C8A1>Ǵӿո<D3BF><D5B8><EFBFBD>ʼȡ<CABC><C8A1> <20>ո<EFBFBD><D5B8><EFBFBD> ascii <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> 32
uint8 temp_top = ascii_font_6x8[dat - 32][i];
for(j = 0; j < 8; j ++)
for(j = 0; 8 > j; j ++)
{
if(temp_top & 0x01)
{
@@ -516,15 +525,16 @@ void ips200_show_char (uint16 x, uint16 y, const char dat)
temp_top >>= 1;
}
}
break;
}break;
case IPS200_8X16_FONT:
for(i = 0; i < 8; i ++)
{
for(i = 0; 8 > i; i ++)
{
ips200_set_region(x + i, y, x + i, y + 15);
// <20><> 32 <20><>Ϊ<EFBFBD><CEAA>ȡģ<C8A1>Ǵӿո<D3BF><D5B8><EFBFBD>ʼȡ<CABC><C8A1> <20>ո<EFBFBD><D5B8><EFBFBD> ascii <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> 32
uint8 temp_top = ascii_font_8x16[dat - 32][i];
uint8 temp_bottom = ascii_font_8x16[dat - 32][i + 8];
for(j = 0; j < 8; j ++)
for(j = 0; 8 > j; j ++)
{
if(temp_top & 0x01)
{
@@ -536,7 +546,7 @@ void ips200_show_char (uint16 x, uint16 y, const char dat)
}
temp_top >>= 1;
}
for(j = 0; j < 8; j ++)
for(j = 0; 8 > j; j ++)
{
if(temp_bottom & 0x01)
{
@@ -549,10 +559,11 @@ void ips200_show_char (uint16 x, uint16 y, const char dat)
temp_bottom >>= 1;
}
}
break;
}break;
case IPS200_16X16_FONT:
{
// <20>ݲ<EFBFBD>֧<EFBFBD><D6A7>
break;
}break;
}
if(IPS200_TYPE_SPI == ips200_display_type)
{
@@ -577,22 +588,15 @@ void ips200_show_string (uint16 x, uint16 y, const char dat[])
zf_assert(y < ips200_y_max);
uint16 j = 0;
while(dat[j] != '\0')
while('\0' != dat[j])
{
switch(ips200_display_font)
{
case IPS200_6X8_FONT:
ips200_show_char(x + 6 * j, y, dat[j]);
j ++;
break;
case IPS200_8X16_FONT:
ips200_show_char(x + 8 * j, y, dat[j]);
j ++;
break;
case IPS200_16X16_FONT:
// <20>ݲ<EFBFBD>֧<EFBFBD><D6A7>
break;
case IPS200_6X8_FONT: ips200_show_char(x + 6 * j, y, dat[j]); break;
case IPS200_8X16_FONT: ips200_show_char(x + 8 * j, y, dat[j]); break;
case IPS200_16X16_FONT: break; // <20>ݲ<EFBFBD>֧<EFBFBD><D6A7>
}
j ++;
}
}
@@ -604,7 +608,7 @@ void ips200_show_string (uint16 x, uint16 y, const char dat[])
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> num <20><>Ҫ<EFBFBD><D2AA>ʾ<EFBFBD><CABE>λ<EFBFBD><CEBB> <20><><EFBFBD><EFBFBD>10λ <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// <20><><EFBFBD>ز<EFBFBD><D8B2><EFBFBD> void
// ʹ<><CAB9>ʾ<EFBFBD><CABE> ips200_show_int(0, 0, x, 3); // x <20><><EFBFBD><EFBFBD>Ϊ int32 int16 int8 <20><><EFBFBD><EFBFBD>
// <20><>ע<EFBFBD><D7A2>Ϣ <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾһ<CABE><D2BB> <20><>-<2D><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾһ<CABE><D2BB><EFBFBD>ո<EFBFBD>
// <20><>ע<EFBFBD><D7A2>Ϣ <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾһ<CABE><D2BB> <20><>-<2D><><EFBFBD><EFBFBD>
//-------------------------------------------------------------------------------------------------------------------
void ips200_show_int (uint16 x, uint16 y, const int32 dat, uint8 num)
{
@@ -612,8 +616,8 @@ void ips200_show_int (uint16 x, uint16 y, const int32 dat, uint8 num)
// <20><>ôһ<C3B4><D2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ļ<EFBFBD><C4BB>ʾ<EFBFBD><CABE>ʱ<EFBFBD>򳬹<EFBFBD><F2B3ACB9><EFBFBD>Ļ<EFBFBD>ֱ<EFBFBD><D6B1>ʷ<EFBFBD>Χ<EFBFBD><CEA7>
zf_assert(x < ips200_x_max);
zf_assert(y < ips200_y_max);
zf_assert(num > 0);
zf_assert(num <= 10);
zf_assert(0 < num);
zf_assert(10 >= num);
int32 dat_temp = dat;
int32 offset = 1;
@@ -622,9 +626,10 @@ void ips200_show_int (uint16 x, uint16 y, const int32 dat, uint8 num)
memset(data_buffer, 0, 12);
memset(data_buffer, ' ', num+1);
if(num < 10)
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾ 123 <20><>ʾ 2 λ<><CEBB>Ӧ<EFBFBD><D3A6><EFBFBD><EFBFBD>ʾ 23
if(10 > num)
{
for(; num > 0; num --)
for(; 0 < num; num --)
{
offset *= 10;
}
@@ -642,7 +647,7 @@ void ips200_show_int (uint16 x, uint16 y, const int32 dat, uint8 num)
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> num <20><>Ҫ<EFBFBD><D2AA>ʾ<EFBFBD><CABE>λ<EFBFBD><CEBB> <20><><EFBFBD><EFBFBD>10λ <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// <20><><EFBFBD>ز<EFBFBD><D8B2><EFBFBD> void
// ʹ<><CAB9>ʾ<EFBFBD><CABE> ips200_show_uint(0, 0, x, 3); // x <20><><EFBFBD><EFBFBD>Ϊ uint32 uint16 uint8 <20><><EFBFBD><EFBFBD>
// <20><>ע<EFBFBD><D7A2>Ϣ
// <20><>ע<EFBFBD><D7A2>Ϣ
//-------------------------------------------------------------------------------------------------------------------
void ips200_show_uint (uint16 x, uint16 y, const uint32 dat, uint8 num)
{
@@ -650,8 +655,8 @@ void ips200_show_uint (uint16 x, uint16 y, const uint32 dat, uint8 num)
// <20><>ôһ<C3B4><D2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ļ<EFBFBD><C4BB>ʾ<EFBFBD><CABE>ʱ<EFBFBD>򳬹<EFBFBD><F2B3ACB9><EFBFBD>Ļ<EFBFBD>ֱ<EFBFBD><D6B1>ʷ<EFBFBD>Χ<EFBFBD><CEA7>
zf_assert(x < ips200_x_max);
zf_assert(y < ips200_y_max);
zf_assert(num > 0);
zf_assert(num <= 10);
zf_assert(0 < num);
zf_assert(10 >= num);
uint32 dat_temp = dat;
int32 offset = 1;
@@ -659,9 +664,10 @@ void ips200_show_uint (uint16 x, uint16 y, const uint32 dat, uint8 num)
memset(data_buffer, 0, 12);
memset(data_buffer, ' ', num);
if(num < 10)
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾ 123 <20><>ʾ 2 λ<><CEBB>Ӧ<EFBFBD><D3A6><EFBFBD><EFBFBD>ʾ 23
if(10 > num)
{
for(; num > 0; num --)
for(; 0 < num; num --)
{
offset *= 10;
}
@@ -675,15 +681,15 @@ void ips200_show_uint (uint16 x, uint16 y, const uint32 dat, uint8 num)
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> IPS200 <20><>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD><EFBFBD><EFBFBD><><C8A5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ч<EFBFBD><D0A7>0)
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> x <20><><EFBFBD><EFBFBD>x<EFBFBD><78><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Χ [0, ips200_x_max-1]
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> y <20><><EFBFBD><EFBFBD>y<EFBFBD><79><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Χ [0, ips200_y_max-1]
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> dat <20><>Ҫ<EFBFBD><D2AA>ʾ<EFBFBD>ı<EFBFBD><C4B1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>float<EFBFBD><EFBFBD>double
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> num <20><><EFBFBD><EFBFBD>λ<EFBFBD><CEBB>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> dat <20><>Ҫ<EFBFBD><D2AA>ʾ<EFBFBD>ı<EFBFBD><C4B1><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> float
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> num <20><><EFBFBD><EFBFBD>λ<EFBFBD><CEBB>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> pointnum С<><D0A1>λ<EFBFBD><CEBB>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
// <20><><EFBFBD>ز<EFBFBD><D8B2><EFBFBD> void
// ʹ<><CAB9>ʾ<EFBFBD><CABE> ips200_show_float(0, 0, x, 2, 3); // <20><>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾС<><D0A1><EFBFBD><EFBFBD>ʾ<EFBFBD><CABE>λ
// <20><>ע<EFBFBD><D7A2>Ϣ <20>ر<EFBFBD>ע<EFBFBD><EFBFBD><E2B5B1><EFBFBD><EFBFBD>С<EFBFBD><D0A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾ<EFBFBD><CABE>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD>д<EFBFBD><D0B4><EFBFBD><EFBFBD>ֵ<EFBFBD><D6B5>һ<EFBFBD><D2BB><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD>
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڸ<EFBFBD><DAB8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȶ<EFBFBD>ʧ<EFBFBD><CAA7><EFBFBD><EFBFBD>µģ<C2B5><C4A3><EFBFBD><E2B2A2><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// <20>й<EFBFBD><D0B9><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E9A3AC><EFBFBD><EFBFBD><EFBFBD>аٶ<D0B0>ѧϰ <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȶ<EFBFBD>ʧ<EFBFBD><CAA7><EFBFBD>
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾһ<CABE><D2BB> <20><>-<2D><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾһ<CABE><D2BB><EFBFBD>ո<EFBFBD>
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾһ<CABE><D2BB> <20><>-<2D><><EFBFBD><EFBFBD>
//-------------------------------------------------------------------------------------------------------------------
void ips200_show_float (uint16 x, uint16 y, const float dat, uint8 num, uint8 pointnum)
{
@@ -691,10 +697,10 @@ void ips200_show_float (uint16 x, uint16 y, const float dat, uint8 num, uint8 po
// <20><>ôһ<C3B4><D2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ļ<EFBFBD><C4BB>ʾ<EFBFBD><CABE>ʱ<EFBFBD>򳬹<EFBFBD><F2B3ACB9><EFBFBD>Ļ<EFBFBD>ֱ<EFBFBD><D6B1>ʷ<EFBFBD>Χ<EFBFBD><CEA7>
zf_assert(x < ips200_x_max);
zf_assert(y < ips200_y_max);
zf_assert(num > 0);
zf_assert(num <= 8);
zf_assert(pointnum > 0);
zf_assert(pointnum <= 6);
zf_assert(0 < num);
zf_assert(8 >= num);
zf_assert(0 < pointnum);
zf_assert(6 >= pointnum);
float dat_temp = dat;
float offset = 1.0;
@@ -702,14 +708,12 @@ void ips200_show_float (uint16 x, uint16 y, const float dat, uint8 num, uint8 po
memset(data_buffer, 0, 17);
memset(data_buffer, ' ', num+pointnum+2);
if(num < 10)
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾ 123 <20><>ʾ 2 λ<><CEBB>Ӧ<EFBFBD><D3A6><EFBFBD><EFBFBD>ʾ 23
for(; 0 < num; num --)
{
for(; num > 0; num --)
{
offset *= 10;
}
dat_temp = dat_temp - ((int)dat_temp / (int)offset) * offset;
offset *= 10;
}
dat_temp = dat_temp - ((int)dat_temp / (int)offset) * offset;
func_float_to_str(data_buffer, dat_temp, pointnum);
ips200_show_string(x, y, data_buffer);
}
@@ -725,7 +729,10 @@ void ips200_show_float (uint16 x, uint16 y, const float dat, uint8 num, uint8 po
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> dis_height ͼ<><CDBC><EFBFBD><EFBFBD>ʾ<EFBFBD>߶<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Χ [0, ips200_y_max]
// <20><><EFBFBD>ز<EFBFBD><D8B2><EFBFBD> void
// ʹ<><CAB9>ʾ<EFBFBD><CABE> ips200_show_binary_image(0, 0, ov7725_image_binary[0], OV7725_W, OV7725_H, OV7725_W, OV7725_H);
// <20><>ע<EFBFBD><D7A2>Ϣ
// <20><>ע<EFBFBD><D7A2>Ϣ <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾС<CABE><D0A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>δ<EFBFBD><CEB4>ѹ<EFBFBD><D1B9>ѹ<EFBFBD><D1B9><EFBFBD><EFBFBD>ֵ<EFBFBD><D6B5>ͼ<EFBFBD><CDBC>
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֱ<EFBFBD><D6B1><EFBFBD><EFBFBD>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>δѹ<CEB4><D1B9><EFBFBD>Ķ<EFBFBD>ֵ<EFBFBD><D6B5>ͼ<EFBFBD><CDBC>
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֱ<EFBFBD><D6B1><EFBFBD><EFBFBD>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>δѹ<CEB4><D1B9><EFBFBD>Ķ<EFBFBD>ֵ<EFBFBD><D6B5>ͼ<EFBFBD><CDBC>
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֱ<EFBFBD><D6B1><EFBFBD><EFBFBD>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>δѹ<CEB4><D1B9><EFBFBD>Ķ<EFBFBD>ֵ<EFBFBD><D6B5>ͼ<EFBFBD><CDBC>
//-------------------------------------------------------------------------------------------------------------------
void ips200_show_binary_image (uint16 x, uint16 y, const uint8 *image, uint16 width, uint16 height, uint16 dis_width, uint16 dis_height)
{
@@ -733,7 +740,7 @@ void ips200_show_binary_image (uint16 x, uint16 y, const uint8 *image, uint16 wi
// <20><>ôһ<C3B4><D2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ļ<EFBFBD><C4BB>ʾ<EFBFBD><CABE>ʱ<EFBFBD>򳬹<EFBFBD><F2B3ACB9><EFBFBD>Ļ<EFBFBD>ֱ<EFBFBD><D6B1>ʷ<EFBFBD>Χ<EFBFBD><CEA7>
zf_assert(x < ips200_x_max);
zf_assert(y < ips200_y_max);
zf_assert(image != NULL);
zf_assert(NULL != image);
uint32 i = 0, j = 0;
uint8 temp = 0;
@@ -780,7 +787,10 @@ void ips200_show_binary_image (uint16 x, uint16 y, const uint8 *image, uint16 wi
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> threshold <20><>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD>ʾ<EFBFBD><CABE>ֵ 0-<2D><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ<EFBFBD><D6B5>
// <20><><EFBFBD>ز<EFBFBD><D8B2><EFBFBD> void
// ʹ<><CAB9>ʾ<EFBFBD><CABE> ips200_show_gray_image(0, 0, mt9v03x_image[0], MT9V03X_W, MT9V03X_H, MT9V03X_W, MT9V03X_H, 0);
// <20><>ע<EFBFBD><D7A2>Ϣ <20><><EFBFBD><EFBFBD>һ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ѡ<EFBFBD><EFBFBD>һ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ <20><>ͼ<EFBFBD><CDBC><EFBFBD><EFBFBD>ʾΪ<CABE><CEAA>ֵ<EFBFBD><EFBFBD>ͼ<EFBFBD><EFBFBD>
// <20><>ע<EFBFBD><D7A2>Ϣ <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͼ<EFBFBD><EFBFBD>
// <20><><EFBFBD><EFBFBD>Ҫ<EFBFBD><D2AA>ʾ<EFBFBD><CABE>ֵ<EFBFBD><D6B5>ͼ<EFBFBD><CDBC> ֱ<><D6B1><EFBFBD>޸<EFBFBD><DEB8><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA>Ҫ<EFBFBD>Ķ<EFBFBD>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD>
// <20><><EFBFBD><EFBFBD>Ҫ<EFBFBD><D2AA>ʾ<EFBFBD><CABE>ֵ<EFBFBD><D6B5>ͼ<EFBFBD><CDBC> ֱ<><D6B1><EFBFBD>޸<EFBFBD><DEB8><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA>Ҫ<EFBFBD>Ķ<EFBFBD>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD>
// <20><><EFBFBD><EFBFBD>Ҫ<EFBFBD><D2AA>ʾ<EFBFBD><CABE>ֵ<EFBFBD><D6B5>ͼ<EFBFBD><CDBC> ֱ<><D6B1><EFBFBD>޸<EFBFBD><DEB8><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA>Ҫ<EFBFBD>Ķ<EFBFBD>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD>
//-------------------------------------------------------------------------------------------------------------------
void ips200_show_gray_image (uint16 x, uint16 y, const uint8 *image, uint16 width, uint16 height, uint16 dis_width, uint16 dis_height, uint8 threshold)
{
@@ -788,7 +798,7 @@ void ips200_show_gray_image (uint16 x, uint16 y, const uint8 *image, uint16 widt
// <20><>ôһ<C3B4><D2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ļ<EFBFBD><C4BB>ʾ<EFBFBD><CABE>ʱ<EFBFBD>򳬹<EFBFBD><F2B3ACB9><EFBFBD>Ļ<EFBFBD>ֱ<EFBFBD><D6B1>ʷ<EFBFBD>Χ<EFBFBD><CEA7>
zf_assert(x < ips200_x_max);
zf_assert(y < ips200_y_max);
zf_assert(image != NULL);
zf_assert(NULL != image);
uint32 i = 0, j = 0;
uint16 color = 0,temp = 0;
@@ -842,7 +852,10 @@ void ips200_show_gray_image (uint16 x, uint16 y, const uint8 *image, uint16 widt
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> color_mode ɫ<><C9AB>ģʽ 0-<2D><>λ<EFBFBD><CEBB>ǰ 1-<2D><>λ<EFBFBD><CEBB>ǰ
// <20><><EFBFBD>ز<EFBFBD><D8B2><EFBFBD> void
// ʹ<><CAB9>ʾ<EFBFBD><CABE> ips200_show_rgb565_image(0, 0, scc8660_image[0], SCC8660_W, SCC8660_H, SCC8660_W, SCC8660_H, 1);
// <20><>ע<EFBFBD><D7A2>Ϣ
// <20><>ע<EFBFBD><D7A2>Ϣ <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾ<EFBFBD><CABE>ͫ<EFBFBD><CDAB> RGB565 <20><>ͼ<EFBFBD><CDBC>
// <20><><EFBFBD><EFBFBD>Ҫ<EFBFBD><D2AA>ʾ<EFBFBD><CABE>λ<EFBFBD><CEBB>ǰ<EFBFBD><C7B0><EFBFBD><EFBFBD><EFBFBD><EFBFBD> RGB565 ͼ<><CDBC> <20>޸<EFBFBD><DEB8><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// <20><><EFBFBD><EFBFBD>Ҫ<EFBFBD><D2AA>ʾ<EFBFBD><CABE>λ<EFBFBD><CEBB>ǰ<EFBFBD><C7B0><EFBFBD><EFBFBD><EFBFBD><EFBFBD> RGB565 ͼ<><CDBC> <20>޸<EFBFBD><DEB8><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// <20><><EFBFBD><EFBFBD>Ҫ<EFBFBD><D2AA>ʾ<EFBFBD><CABE>λ<EFBFBD><CEBB>ǰ<EFBFBD><C7B0><EFBFBD><EFBFBD><EFBFBD><EFBFBD> RGB565 ͼ<><CDBC> <20>޸<EFBFBD><DEB8><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
//-------------------------------------------------------------------------------------------------------------------
void ips200_show_rgb565_image (uint16 x, uint16 y, const uint16 *image, uint16 width, uint16 height, uint16 dis_width, uint16 dis_height, uint8 color_mode)
{
@@ -850,7 +863,7 @@ void ips200_show_rgb565_image (uint16 x, uint16 y, const uint16 *image, uint16 w
// <20><>ôһ<C3B4><D2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ļ<EFBFBD><C4BB>ʾ<EFBFBD><CABE>ʱ<EFBFBD>򳬹<EFBFBD><F2B3ACB9><EFBFBD>Ļ<EFBFBD>ֱ<EFBFBD><D6B1>ʷ<EFBFBD>Χ<EFBFBD><CEA7>
zf_assert(x < ips200_x_max);
zf_assert(y < ips200_y_max);
zf_assert(image != NULL);
zf_assert(NULL != image);
uint32 i = 0, j = 0;
uint16 color = 0;
@@ -868,7 +881,7 @@ void ips200_show_rgb565_image (uint16 x, uint16 y, const uint16 *image, uint16 w
for(i = 0; i < dis_width; i ++)
{
width_index = i * width / dis_width;
color = *((uint16 *)(image + height_index * width + width_index)); // <20><>ȡ<EFBFBD><C8A1><EFBFBD>ص<EFBFBD>
color = *(image + height_index * width + width_index); // <20><>ȡ<EFBFBD><C8A1><EFBFBD>ص<EFBFBD>
if(color_mode)
{
color = ((color & 0xff) << 8) | (color >> 8);
@@ -893,7 +906,7 @@ void ips200_show_rgb565_image (uint16 x, uint16 y, const uint16 *image, uint16 w
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> dis_value_max <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD>ֵ <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Χ [0, ips200_y_max]
// <20><><EFBFBD>ز<EFBFBD><D8B2><EFBFBD> void
// ʹ<><CAB9>ʾ<EFBFBD><CABE> ips200_show_wave(0, 0, data, 128, 64, 64, 32);
// <20><>ע<EFBFBD><D7A2>Ϣ
// <20><>ע<EFBFBD><D7A2>Ϣ
//-------------------------------------------------------------------------------------------------------------------
void ips200_show_wave (uint16 x, uint16 y, const uint16 *wave, uint16 width, uint16 value_max, uint16 dis_width, uint16 dis_value_max)
{
@@ -901,7 +914,7 @@ void ips200_show_wave (uint16 x, uint16 y, const uint16 *wave, uint16 width, uin
// <20><>ôһ<C3B4><D2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ļ<EFBFBD><C4BB>ʾ<EFBFBD><CABE>ʱ<EFBFBD>򳬹<EFBFBD><F2B3ACB9><EFBFBD>Ļ<EFBFBD>ֱ<EFBFBD><D6B1>ʷ<EFBFBD>Χ<EFBFBD><CEA7>
zf_assert(x < ips200_x_max);
zf_assert(y < ips200_y_max);
zf_assert(wave != NULL);
zf_assert(NULL != wave);
uint32 i = 0, j = 0;
uint32 width_index = 0, value_max_index = 0;
@@ -915,7 +928,7 @@ void ips200_show_wave (uint16 x, uint16 y, const uint16 *wave, uint16 width, uin
{
for(j = 0; j < dis_width; j ++)
{
ips200_write_16bit_data(ips200_bgcolor);
ips200_write_16bit_data(ips200_bgcolor);
}
}
if(IPS200_TYPE_SPI == ips200_display_type)
@@ -949,20 +962,20 @@ void ips200_show_chinese (uint16 x, uint16 y, uint8 size, const uint8 *chinese_b
// <20><>ôһ<C3B4><D2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ļ<EFBFBD><C4BB>ʾ<EFBFBD><CABE>ʱ<EFBFBD>򳬹<EFBFBD><F2B3ACB9><EFBFBD>Ļ<EFBFBD>ֱ<EFBFBD><D6B1>ʷ<EFBFBD>Χ<EFBFBD><CEA7>
zf_assert(x < ips200_x_max);
zf_assert(y < ips200_y_max);
zf_assert(chinese_buffer != NULL);
int i, j, k;
uint8 temp, temp1, temp2;
const uint8 *p_data;
zf_assert(NULL != chinese_buffer);
int i = 0, j = 0, k = 0;
uint8 temp = 0, temp1 = 0, temp2 = 0;
const uint8 *p_data = chinese_buffer;
temp2 = size / 8;
if(IPS200_TYPE_SPI == ips200_display_type)
{
IPS200_CS(0);
}
ips200_set_region(x, y, number * size - 1 + x, y + size - 1);
for(i = 0; i < size; i ++)
{
temp1 = number;
@@ -971,7 +984,7 @@ void ips200_show_chinese (uint16 x, uint16 y, uint8 size, const uint8 *chinese_b
{
for(k = 0; k < temp2; k ++)
{
for(j = 8; j > 0; j --)
for(j = 8; 0 < j; j --)
{
temp = (*p_data >> (j - 1)) & 0x01;
if(temp)
@@ -986,7 +999,7 @@ void ips200_show_chinese (uint16 x, uint16 y, uint8 size, const uint8 *chinese_b
p_data ++;
}
p_data = p_data - temp2 + temp2 * size;
}
}
}
if(IPS200_TYPE_SPI == ips200_display_type)
{
@@ -999,18 +1012,16 @@ void ips200_show_chinese (uint16 x, uint16 y, uint8 size, const uint8 *chinese_b
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> type_select <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ӿ<EFBFBD><D3BF><EFBFBD><EFBFBD><EFBFBD> IPS200_TYPE_SPI Ϊ SPI <20>ӿڴ<D3BF><DAB4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> IPS200_TYPE_PARALLEL8 Ϊ 8080 Э<><D0AD><EFBFBD><EFBFBD>λ<EFBFBD><CEBB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// <20><><EFBFBD>ز<EFBFBD><D8B2><EFBFBD> void
// ʹ<><CAB9>ʾ<EFBFBD><CABE> ips200_init(IPS200_TYPE_PARALLEL8);
// <20><>ע<EFBFBD><D7A2>Ϣ
// <20><>ע<EFBFBD><D7A2>Ϣ
//-------------------------------------------------------------------------------------------------------------------
void ips200_init (ips200_type_enum type_select)
{
ips200_set_dir(ips200_display_dir);
ips200_set_color(ips200_pencolor, ips200_bgcolor);
if(IPS200_TYPE_SPI == type_select)
{
ips200_display_type = IPS200_TYPE_SPI;
ips_rst_pin = IPS200_RST_PIN_SPI;
ips_bl_pin = IPS200_BLk_PIN_SPI;
ips_cs_pin = IPS200_CS_PIN_SPI;
#if IPS200_USE_SOFT_SPI
soft_spi_init(&ips200_spi, 0, IPS200_SOFT_SPI_DELAY, IPS200_SCL_PIN, IPS200_SDA_PIN, SOFT_SPI_PIN_NULL, SOFT_SPI_PIN_NULL);
#else
@@ -1018,58 +1029,60 @@ void ips200_init (ips200_type_enum type_select)
#endif
gpio_init(IPS200_DC_PIN_SPI, GPO, GPIO_LOW, GPO_PUSH_PULL);
gpio_init(ips_rst_pin, GPO, GPIO_LOW, GPO_PUSH_PULL);
gpio_init(IPS200_CS_PIN_SPI, GPO, GPIO_HIGH, GPO_PUSH_PULL);
gpio_init(ips_bl_pin, GPO, GPIO_HIGH, GPO_PUSH_PULL);
gpio_init(ips_rst_pin, GPO, GPIO_LOW, GPO_PUSH_PULL);
gpio_init(ips_cs_pin, GPO, GPIO_HIGH, GPO_PUSH_PULL);
gpio_init(ips_bl_pin, GPO, GPIO_HIGH, GPO_PUSH_PULL);
}
else
{
ips200_display_type = IPS200_TYPE_PARALLEL8;
ips_rst_pin = IPS200_RST_PIN_PARALLEL8;
ips_bl_pin = IPS200_BL_PIN_PARALLEL8;
ips_cs_pin = IPS200_CS_PIN_PARALLEL8;
gpio_init(ips_rst_pin, GPO, GPIO_LOW, GPO_PUSH_PULL); // RTS
gpio_init(ips_bl_pin, GPO, GPIO_LOW, GPO_PUSH_PULL); // BL
gpio_init(IPS200_CS_PIN_PARALLEL8, GPO, GPIO_LOW, GPO_PUSH_PULL);
gpio_init(IPS200_RS_PIN_PARALLEL8, GPO, GPIO_LOW, GPO_PUSH_PULL);
gpio_init(IPS200_RD_PIN_PARALLEL8, GPO, GPIO_LOW, GPO_PUSH_PULL);
gpio_init(IPS200_WR_PIN_PARALLEL8, GPO, GPIO_LOW, GPO_PUSH_PULL);
gpio_init(ips_cs_pin, GPO, GPIO_HIGH, GPO_PUSH_PULL); // LCD_CS
gpio_init(IPS200_D0_PIN_PARALLEL8, GPO, GPIO_LOW, GPO_PUSH_PULL);
gpio_init(IPS200_D1_PIN_PARALLEL8, GPO, GPIO_LOW, GPO_PUSH_PULL);
gpio_init(IPS200_D2_PIN_PARALLEL8, GPO, GPIO_LOW, GPO_PUSH_PULL);
gpio_init(IPS200_D3_PIN_PARALLEL8, GPO, GPIO_LOW, GPO_PUSH_PULL);
gpio_init(IPS200_D4_PIN_PARALLEL8, GPO, GPIO_LOW, GPO_PUSH_PULL);
gpio_init(IPS200_D5_PIN_PARALLEL8, GPO, GPIO_LOW, GPO_PUSH_PULL);
gpio_init(IPS200_D6_PIN_PARALLEL8, GPO, GPIO_LOW, GPO_PUSH_PULL);
gpio_init(IPS200_D7_PIN_PARALLEL8, GPO, GPIO_LOW, GPO_PUSH_PULL);
gpio_init(IPS200_RD_PIN_PARALLEL8, GPO, GPIO_LOW, GPO_PUSH_PULL); // LCD_RD
gpio_init(IPS200_WR_PIN_PARALLEL8, GPO, GPIO_LOW, GPO_PUSH_PULL); // LCD_WR
gpio_init(IPS200_RS_PIN_PARALLEL8, GPO, GPIO_HIGH, GPO_PUSH_PULL); // LCD_RS
gpio_init(IPS200_D0_PIN_PARALLEL8, GPO, GPIO_HIGH, GPO_PUSH_PULL); // LCD_D0
gpio_init(IPS200_D1_PIN_PARALLEL8, GPO, GPIO_HIGH, GPO_PUSH_PULL); // LCD_D1
gpio_init(IPS200_D2_PIN_PARALLEL8, GPO, GPIO_HIGH, GPO_PUSH_PULL); // LCD_D2
gpio_init(IPS200_D3_PIN_PARALLEL8, GPO, GPIO_HIGH, GPO_PUSH_PULL); // LCD_D3
gpio_init(IPS200_D4_PIN_PARALLEL8, GPO, GPIO_HIGH, GPO_PUSH_PULL); // LCD_D4
gpio_init(IPS200_D5_PIN_PARALLEL8, GPO, GPIO_HIGH, GPO_PUSH_PULL); // LCD_D5
gpio_init(IPS200_D6_PIN_PARALLEL8, GPO, GPIO_HIGH, GPO_PUSH_PULL); // LCD_D6
gpio_init(IPS200_D7_PIN_PARALLEL8, GPO, GPIO_HIGH, GPO_PUSH_PULL); // LCD_D7
}
ips200_set_dir(ips200_display_dir);
ips200_set_color(ips200_pencolor, ips200_bgcolor);
ips200_debug_init();
IPS200_BL(1);
IPS200_RST(0);
IPS200_RST(0);
system_delay_ms(5);
IPS200_RST(1);
IPS200_RST(1);
system_delay_ms(120);
if(IPS200_TYPE_SPI == ips200_display_type)
{
IPS200_CS(0);
}
ips200_write_command(0x11);
system_delay_ms(120);
ips200_write_command(0x36);
switch(ips200_display_dir)
{
case 0: ips200_write_8bit_data(0x00); break;
case 1: ips200_write_8bit_data(0xC0); break;
case 2: ips200_write_8bit_data(0x70); break;
default:ips200_write_8bit_data(0xA0); break;
case IPS200_PORTAIT: ips200_write_8bit_data(0x00); break;
case IPS200_PORTAIT_180: ips200_write_8bit_data(0xC0); break;
case IPS200_CROSSWISE: ips200_write_8bit_data(0x70); break;
case IPS200_CROSSWISE_180: ips200_write_8bit_data(0xA0); break;
}
ips200_write_command(0x3A);
@@ -1148,5 +1161,6 @@ void ips200_init (ips200_type_enum type_select)
}
ips200_clear(); // <20><>ʼ<EFBFBD><CABC>Ϊ<EFBFBD><CEAA><EFBFBD><EFBFBD>
ips200_debug_init();
}

View File

@@ -31,6 +31,7 @@
* <20>޸ļ<DEB8>¼
* <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><>ע
* 2022-09-15 pudding first version
* 2023-04-28 pudding <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ע<EFBFBD><D7A2>˵<EFBFBD><CBB5>
********************************************************************************************************************/
/********************************************************************************************************************
* <20><><EFBFBD>߶<EFBFBD><DFB6>
@@ -65,6 +66,7 @@
#include "zf_common_typedef.h"
//==================================================<3D><><EFBFBD><EFBFBD> IPS200 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>================================================
#define IPS200_USE_SOFT_SPI (0 ) // Ĭ<><C4AC>ʹ<EFBFBD><CAB9>Ӳ<EFBFBD><D3B2> SPI <20><>ʽ<EFBFBD><CABD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>ʹ<EFBFBD><CAB9>Ӳ<EFBFBD><D3B2> SPI <20><>ʽ<EFBFBD><CABD><EFBFBD><EFBFBD>
#if IPS200_USE_SOFT_SPI // <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> SPI <20><><EFBFBD><EFBFBD>====================================================
@@ -84,49 +86,44 @@
//====================================================Ӳ<><D3B2> SPI <20><><EFBFBD><EFBFBD>====================================================
#endif
// <20><><EFBFBD><EFBFBD>ʹ<EFBFBD>õ<EFBFBD><C3B5>ǵ<EFBFBD><C7B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ļ SPI <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>޸<EFBFBD>
#define IPS200_RST_PIN_SPI (P15_1) // Һ<><D2BA><EFBFBD><EFBFBD>λ<EFBFBD><CEBB><EFBFBD>Ŷ<EFBFBD><C5B6><EFBFBD>
#define IPS200_DC_PIN_SPI (P15_0) // Һ<><D2BA><EFBFBD><EFBFBD><EFBFBD><EFBFBD>λ<EFBFBD><CEBB><EFBFBD>Ŷ<EFBFBD><C5B6><EFBFBD>
#define IPS200_CS_PIN_SPI (P15_2)
#define IPS200_BLk_PIN_SPI (P15_4)
#define IPS200_RST_PIN_SPI (P15_1) // <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>(SPI)Һ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>λ<EFBFBD><EFBFBD><EFBFBD>Ŷ<EFBFBD><EFBFBD><EFBFBD>
#define IPS200_DC_PIN_SPI (P15_0) // <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>(SPI)Һ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>λ<EFBFBD><EFBFBD><EFBFBD>Ŷ<EFBFBD><EFBFBD><EFBFBD>
#define IPS200_CS_PIN_SPI (P15_2) // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>(SPI)Һ<><D2BA>Ƭѡ<C6AC><D1A1><EFBFBD>Ŷ<EFBFBD><C5B6><EFBFBD>
#define IPS200_BLk_PIN_SPI (P15_4) // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>(SPI)Һ<><D2BA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ŷ<EFBFBD><C5B6><EFBFBD>
// <20><><EFBFBD><EFBFBD>ʹ<EFBFBD>õ<EFBFBD><C3B5><EFBFBD>˫<EFBFBD><CBAB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><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>޸<EFBFBD>
#define IPS200_RST_PIN_PARALLEL8 (P15_0)
#define IPS200_BL_PIN_PARALLEL8 (P15_4)
//<2F><><EFBFBD><EFBFBD>ʹ<EFBFBD>õ<EFBFBD><C3B5><EFBFBD>˫<EFBFBD><CBAB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ļ <20><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>޸<EFBFBD>
#define IPS200_RD_PIN_PARALLEL8 (P15_3)
#define IPS200_WR_PIN_PARALLEL8 (P15_5)
#define IPS200_RS_PIN_PARALLEL8 (P15_1)
#define IPS200_CS_PIN_PARALLEL8 (P15_2)
#define IPS200_RD_PIN_PARALLEL8 (P15_3) // ˫<><CBAB><EFBFBD><EFBFBD>(<28><><EFBFBD><EFBFBD><><D2BA><EFBFBD><EFBFBD>ȡλ<C8A1><CEBB><EFBFBD>Ŷ<EFBFBD><C5B6><EFBFBD>
#define IPS200_WR_PIN_PARALLEL8 (P15_5) // ˫<><CBAB><EFBFBD><EFBFBD>(<28><><EFBFBD><EFBFBD><><D2BA>д<EFBFBD><D0B4>λ<EFBFBD><CEBB><EFBFBD>Ŷ<EFBFBD><C5B6><EFBFBD>
#define IPS200_RST_PIN_PARALLEL8 (P15_0) // ˫<><CBAB><EFBFBD><EFBFBD>(<28><><EFBFBD><EFBFBD><><D2BA><EFBFBD><EFBFBD>λ<EFBFBD><CEBB><EFBFBD>Ŷ<EFBFBD><C5B6><EFBFBD>
#define IPS200_RS_PIN_PARALLEL8 (P15_1) // ˫<><CBAB><EFBFBD><EFBFBD>(<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>λ<EFBFBD><EFBFBD><EFBFBD>Ŷ<EFBFBD><EFBFBD><EFBFBD>
#define IPS200_CS_PIN_PARALLEL8 (P15_2) // ˫<><CBAB><EFBFBD><EFBFBD>(<28><><EFBFBD><EFBFBD><><D2BA>Ƭѡ<C6AC><D1A1><EFBFBD>Ŷ<EFBFBD><C5B6><EFBFBD>
#define IPS200_BL_PIN_PARALLEL8 (P15_4) // ˫<><CBAB><EFBFBD><EFBFBD>(<28><><EFBFBD><EFBFBD><><D2BA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ŷ<EFBFBD><C5B6><EFBFBD>
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>޸<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ļ<EFBFBD><C4BB>˫<EFBFBD><CBAB><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>õõ<C3B5>
//D0-D3<44>ĸ<EFBFBD><C4B8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ű<EFBFBD><C5B1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>C0-C3,C1-C4<43>ȵȣ<C8B5>
//D4-D7<44>ĸ<EFBFBD><C4B8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ű<EFBFBD><C5B1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>B0-B3,B1-B4<42>ȵȡ<C8B5>
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ӵ<EFBFBD><D3B5><EFBFBD>ͬ<EFBFBD>˿ڵ<CBBF><DAB5><EFBFBD>˼<EFBFBD><CBBC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ļ<EFBFBD><C4BB>D0-D3<44><33>C1-C4<43><34><EFBFBD>ӣ<EFBFBD>D4-D7<44><37>B2-B5<42><35><EFBFBD>ӡ<EFBFBD>
//<2F>л<EFBFBD><D0BB><EFBFBD><EFBFBD>ź<EFBFBD>ע<EFBFBD><D7A2><EFBFBD>޸<EFBFBD>IPS200_DATA_PORT1<54><31>IPS200_DATA_PORT2<54><EFBFBD><EAB6A8>
#define IPS200_D0_PIN_PARALLEL8 (P11_9 )
#define IPS200_D1_PIN_PARALLEL8 (P11_10)
#define IPS200_D2_PIN_PARALLEL8 (P11_11)
#define IPS200_D3_PIN_PARALLEL8 (P11_12)
#define IPS200_D4_PIN_PARALLEL8 (P13_0 )
#define IPS200_D5_PIN_PARALLEL8 (P13_1 )
#define IPS200_D6_PIN_PARALLEL8 (P13_2 )
#define IPS200_D7_PIN_PARALLEL8 (P13_3 )
#define IPS200_D0_PIN_PARALLEL8 (P11_9 ) // ˫<><CBAB><EFBFBD><EFBFBD>(<28><><EFBFBD><EFBFBD><><D2BA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>D0
#define IPS200_D1_PIN_PARALLEL8 (P11_10) // ˫<><CBAB><EFBFBD><EFBFBD>(<28><><EFBFBD><EFBFBD><><D2BA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>D1
#define IPS200_D2_PIN_PARALLEL8 (P11_11) // ˫<><CBAB><EFBFBD><EFBFBD>(<28><><EFBFBD><EFBFBD><><D2BA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>D2
#define IPS200_D3_PIN_PARALLEL8 (P11_12) // ˫<><CBAB><EFBFBD><EFBFBD>(<28><><EFBFBD><EFBFBD><><D2BA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>D3
#define IPS200_D4_PIN_PARALLEL8 (P13_0 ) // ˫<><CBAB><EFBFBD><EFBFBD>(<28><><EFBFBD><EFBFBD><><D2BA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>D4
#define IPS200_D5_PIN_PARALLEL8 (P13_1 ) // ˫<><CBAB><EFBFBD><EFBFBD>(<28><><EFBFBD><EFBFBD><><D2BA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>D5
#define IPS200_D6_PIN_PARALLEL8 (P13_2 ) // ˫<><CBAB><EFBFBD><EFBFBD>(<28><><EFBFBD><EFBFBD><><D2BA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>D6
#define IPS200_D7_PIN_PARALLEL8 (P13_3 ) // ˫<><CBAB><EFBFBD><EFBFBD>(<28><><EFBFBD><EFBFBD><><D2BA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>D7
#define IPS200_DEFAULT_DISPLAY_DIR (IPS200_PORTAIT) // Ĭ<>ϵ<EFBFBD><CFB5><EFBFBD>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD>
#define IPS200_DEFAULT_PENCOLOR (RGB565_RED ) // Ĭ<>ϵĻ<CFB5><C4BB><EFBFBD><EFBFBD><EFBFBD>ɫ
#define IPS200_DEFAULT_BGCOLOR (RGB565_WHITE ) // Ĭ<>ϵı<CFB5><C4B1><EFBFBD><EFBFBD><EFBFBD>ɫ
#define IPS200_DEFAULT_DISPLAY_FONT (IPS200_8X16_FONT) // Ĭ<>ϵ<EFBFBD><CFB5><EFBFBD><EFBFBD><EFBFBD>ģʽ
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݶ˿<DDB6><CBBF><EFBFBD><EFBFBD><EFBFBD>PORT<52><54><EFBFBD>л<EFBFBD><D0BB><EFBFBD><EFBFBD>ź<EFBFBD><C5BA><EFBFBD><EFBFBD>ظ<EFBFBD><D8B8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>PORT<52><54><EFBFBD>и<EFBFBD><D0B8><EFBFBD>
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݶ˿<DDB6><CBBF><EFBFBD><EFBFBD><EFBFBD>PORT<52><54><EFBFBD>л<EFBFBD><D0BB><EFBFBD><EFBFBD>ź<EFBFBD><C5BA><EFBFBD><EFBFBD>ظ<EFBFBD><D8B8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>PORT<52><54><EFBFBD>и<EFBFBD><D0B8><EFBFBD> <20><><EFBFBD><EFBFBD>ʹ<EFBFBD><CAB9><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>˿ڽ<CBBF><DABD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>˶<EFBFBD><CBB6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD>
#define IPS200_DATA_PORT1 (3) //0<><30>P00<30>˿<EFBFBD> 1<><31>P02<30>˿<EFBFBD> 2<><32>P10<31>˿<EFBFBD> 3<><33>P11<31>˿<EFBFBD> 4<><34>P13<31>˿<EFBFBD> 5<><35>P14<31>˿<EFBFBD> 6<><36>P15<31>˿<EFBFBD> 7<><37>P20<32>˿<EFBFBD> 8<><38>P21<32>˿<EFBFBD> 9<><39>P22<32>˿<EFBFBD> 10<31><30>P23<32>˿<EFBFBD> 11<31><31>P32<33>˿<EFBFBD> 12<31><32>P33<33>˿<EFBFBD>
#define IPS200_DATAPORT1 (get_port_out_addr(IPS200_DATA_PORT1))
#define DATA_START_NUM1 (IPS200_D0_PIN_PARALLEL8&0x1f) // <20><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ŵ<EFBFBD><EFBFBD><EFBFBD>ʼ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
#define DATA_START_NUM1 (IPS200_D0_PIN_PARALLEL8&0x1f) // <20><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ŵ<EFBFBD><EFBFBD><EFBFBD>ʼ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
#define IPS200_DATA_PORT2 (4) //0<><30>P00<30>˿<EFBFBD> 1<><31>P02<30>˿<EFBFBD> 2<><32>P10<31>˿<EFBFBD> 3<><33>P11<31>˿<EFBFBD> 4<><34>P13<31>˿<EFBFBD> 5<><35>P14<31>˿<EFBFBD> 6<><36>P15<31>˿<EFBFBD> 7<><37>P20<32>˿<EFBFBD> 8<><38>P21<32>˿<EFBFBD> 9<><39>P22<32>˿<EFBFBD> 10<31><30>P23<32>˿<EFBFBD> 11<31><31>P32<33>˿<EFBFBD> 12<31><32>P33<33>˿<EFBFBD>
#define IPS200_DATAPORT2 (get_port_out_addr(IPS200_DATA_PORT2))
#define DATA_START_NUM2 (IPS200_D4_PIN_PARALLEL8&0x1f) //<2F><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ŵ<EFBFBD><EFBFBD><EFBFBD>ʼ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
#define DATA_START_NUM2 (IPS200_D4_PIN_PARALLEL8&0x1f) // <20><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ŵ<EFBFBD><EFBFBD><EFBFBD>ʼ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
#define IPS200_RD(x) ((x) ? (gpio_high(IPS200_RD_PIN_PARALLEL8)) : (gpio_low(IPS200_RD_PIN_PARALLEL8)))
@@ -136,8 +133,10 @@
#define IPS200_RS(x) ((x) ? (gpio_high(IPS200_RS_PIN_PARALLEL8)) : (gpio_low(IPS200_RS_PIN_PARALLEL8)))
#define IPS200_DC(x) ((x) ? (gpio_high(IPS200_DC_PIN_SPI)) : (gpio_low(IPS200_DC_PIN_SPI)))
#define IPS200_CS(x) ((x) ? (gpio_high(IPS200_CS_PIN_SPI)) : (gpio_low(IPS200_CS_PIN_SPI)))
//==================================================<3D><><EFBFBD><EFBFBD> IPS200 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>================================================
//=================================================<3D><><EFBFBD><EFBFBD> IPS200 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E1B9B9>===============================================
//==================================================<3D><><EFBFBD><EFBFBD> IPS200 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E1B9B9>===============================================
typedef enum
{
IPS200_TYPE_SPI, // SPI <20><><EFBFBD><EFBFBD>
@@ -158,36 +157,36 @@ typedef enum
IPS200_8X16_FONT = 1, // 8x16 <20><><EFBFBD><EFBFBD>
IPS200_16X16_FONT = 2, // 16x16 <20><><EFBFBD><EFBFBD> Ŀǰ<C4BF><C7B0>֧<EFBFBD><D6A7>
}ips200_font_size_enum;
//=================================================<3D><><EFBFBD><EFBFBD> IPS200 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E1B9B9>===============================================
//===================================================IPS200 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>==================================================
void ips200_clear (void);
void ips200_full (const uint16 color);
void ips200_set_dir (ips200_dir_enum dir);
void ips200_set_font (ips200_font_size_enum font);
void ips200_set_color (const uint16 pen, const uint16 bgcolor);
void ips200_draw_point (uint16 x, uint16 y, const uint16 color);
void ips200_draw_line (uint16 x_start, uint16 y_start, uint16 x_end, uint16 y_end, const uint16 color);
void ips200_show_char (uint16 x, uint16 y, const char dat);
void ips200_show_string (uint16 x, uint16 y, const char dat[]);
void ips200_show_int (uint16 x, uint16 y, const int32 dat, uint8 num);
void ips200_show_uint (uint16 x, uint16 y, const uint32 dat, uint8 num);
void ips200_show_float (uint16 x, uint16 y, const float dat, uint8 num, uint8 pointnum);
void ips200_show_binary_image (uint16 x, uint16 y, const uint8 *image, uint16 width, uint16 height, uint16 dis_width, uint16 dis_height);
void ips200_show_gray_image (uint16 x, uint16 y, const uint8 *image, uint16 width, uint16 height, uint16 dis_width, uint16 dis_height, uint8 threshold);
void ips200_show_rgb565_image (uint16 x, uint16 y, const uint16 *image, uint16 width, uint16 height, uint16 dis_width, uint16 dis_height, uint8 color_mode);
void ips200_show_wave (uint16 x, uint16 y, const uint16 *wave, uint16 width, uint16 value_max, uint16 dis_width, uint16 dis_value_max);
void ips200_show_chinese (uint16 x, uint16 y, uint8 size, const uint8 *chinese_buffer, uint8 number, const uint16 color);
void ips200_init (ips200_type_enum type_select);
//===================================================IPS200 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>==================================================
//==================================================<EFBFBD><EFBFBD><EFBFBD><EFBFBD> IPS200 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E1B9B9>===============================================
//===================================================IPS200 <20><>չ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>==================================================
//==================================================<EFBFBD><EFBFBD><EFBFBD><EFBFBD> IPS200 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>================================================
void ips200_clear (void); // IPS200 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
void ips200_full (const uint16 color); // IPS200 <20><>Ļ<EFBFBD><C4BB><EFBFBD><EFBFBD><E4BAAF>
void ips200_set_dir (ips200_dir_enum dir); // IPS200 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD>
void ips200_set_font (ips200_font_size_enum font); // IPS200 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD>
void ips200_set_color (const uint16 pen, const uint16 bgcolor); // IPS200 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾ<EFBFBD><CABE>ɫ
void ips200_draw_point (uint16 x, uint16 y, const uint16 color); // IPS200 <20><><EFBFBD><EFBFBD><E3BAAF>
void ips200_draw_line (uint16 x_start, uint16 y_start, uint16 x_end, uint16 y_end, const uint16 color); // IPS200 <20><><EFBFBD>ߺ<EFBFBD><DFBA><EFBFBD>
void ips200_show_char (uint16 x, uint16 y, const char dat); // IPS200 <20><>ʾ<EFBFBD>ַ<EFBFBD>
void ips200_show_string (uint16 x, uint16 y, const char dat[]); // IPS200 <20><>ʾ<EFBFBD>ַ<EFBFBD><D6B7><EFBFBD>
void ips200_show_int (uint16 x, uint16 y, const int32 dat, uint8 num); // IPS200 <20><>ʾ32λ<32>з<EFBFBD><D0B7><EFBFBD><><C8A5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ч<EFBFBD><D0A7>0)
void ips200_show_uint (uint16 x, uint16 y, const uint32 dat, uint8 num); // IPS200 <20><>ʾ32λ<32>޷<EFBFBD><DEB7><EFBFBD><><C8A5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ч<EFBFBD><D0A7>0)
void ips200_show_float (uint16 x, uint16 y, const float dat, uint8 num, uint8 pointnum); // IPS200 <20><>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD><EFBFBD><EFBFBD><><C8A5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ч<EFBFBD><D0A7>0)
void ips200_show_binary_image (uint16 x, uint16 y, const uint8 *image, uint16 width, uint16 height, uint16 dis_width, uint16 dis_height); // IPS200 <20><>ʾ<EFBFBD><CABE>ֵͼ<D6B5><CDBC> <20><><EFBFBD><EFBFBD>ÿ<EFBFBD>˸<EFBFBD><CBB8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD>ֽ<EFBFBD><D6BD><EFBFBD><EFBFBD><EFBFBD>
void ips200_show_gray_image (uint16 x, uint16 y, const uint8 *image, uint16 width, uint16 height, uint16 dis_width, uint16 dis_height, uint8 threshold); // IPS200 <20><>ʾ 8bit <20>Ҷ<EFBFBD>ͼ<EFBFBD><CDBC> <20><><EFBFBD><EFBFBD>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD>ֵ
void ips200_show_rgb565_image (uint16 x, uint16 y, const uint16 *image, uint16 width, uint16 height, uint16 dis_width, uint16 dis_height, uint8 color_mode); // IPS200 <20><>ʾ RGB565 <20><>ɫͼ<C9AB><CDBC>
void ips200_show_wave (uint16 x, uint16 y, const uint16 *wave, uint16 width, uint16 value_max, uint16 dis_width, uint16 dis_value_max); // IPS200 <20><>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD>
void ips200_show_chinese (uint16 x, uint16 y, uint8 size, const uint8 *chinese_buffer, uint8 number, const uint16 color); // IPS200 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾ
void ips200_init (ips200_type_enum type_select); // 2<><32> IPSҺ<53><D2BA><EFBFBD><EFBFBD>ʼ<EFBFBD><CABC>
//==================================================<3D><><EFBFBD><EFBFBD> IPS200 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>================================================
//==================================================<3D><><EFBFBD><EFBFBD> IPS200 <20><>չ<EFBFBD><D5B9><EFBFBD><EFBFBD>================================================
//-------------------------------------------------------------------------------------------------------------------
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> IPS200 <20><>ʾС<CABE><D0A1><EFBFBD><EFBFBD>ͼ<EFBFBD><CDBC>
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> p ͼ<><CDBC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ָ<EFBFBD><D6B8>
@@ -218,9 +217,7 @@ void ips200_init (ips200_type_enum type_select);
// <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))
//===================================================IPS200 <20><>չ<EFBFBD><D5B9><EFBFBD><EFBFBD>==================================================
//==================================================<3D><><EFBFBD><EFBFBD> IPS200 <20><>չ<EFBFBD><D5B9><EFBFBD><EFBFBD>================================================
#endif

View File

@@ -31,6 +31,7 @@
* <20>޸ļ<DEB8>¼
* <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><>ע
* 2022-09-15 pudding first version
* 2023-04-28 pudding <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ע<EFBFBD><D7A2>˵<EFBFBD><CBB5>
********************************************************************************************************************/
/*********************************************************************************************************************
* <20><><EFBFBD>߶<EFBFBD><DFB6>
@@ -52,7 +53,7 @@ static uint32 scanner_period = 0;
static uint32 key_press_time[KEY_NUMBER]; // <20><><EFBFBD><EFBFBD><EFBFBD>źų<C5BA><C5B3><EFBFBD>ʱ<EFBFBD><CAB1>
static key_state_enum key_state[KEY_NUMBER]; // <20><><EFBFBD><EFBFBD>״̬
static const gpio_pin_enum key_index[KEY_NUMBER] = KEY_LIST;
static const gpio_pin_enum key_index[KEY_NUMBER] = KEY_LIST; // <20><><EFBFBD><EFBFBD><EFBFBD>б<EFBFBD>
//-------------------------------------------------------------------------------------------------------------------
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>״̬ɨ<CCAC><C9A8>
@@ -64,22 +65,26 @@ static const gpio_pin_enum key_index[KEY_NUMBER] = KEY_LIST;
void key_scanner (void)
{
uint8 i = 0;
for(i = 0; i < KEY_NUMBER; i ++)
for(i = 0; KEY_NUMBER > i; i ++)
{
if(KEY_RELEASE_LEVEL != gpio_get_level(key_index[i])) // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
{
key_press_time[i] ++;
if(key_press_time[i] >= KEY_LONG_PRESS_PERIOD / scanner_period)
if(KEY_LONG_PRESS_PERIOD / scanner_period <= key_press_time[i])
{
key_state[i] = KEY_LONG_PRESS;
}
}
else // <20><><EFBFBD><EFBFBD><EFBFBD>ͷ<EFBFBD>
{
if(key_state[i] != KEY_LONG_PRESS && key_press_time[i] >= KEY_MAX_SHOCK_PERIOD / scanner_period)
if((KEY_LONG_PRESS != key_state[i]) && (KEY_MAX_SHOCK_PERIOD / scanner_period <= key_press_time[i]))
{
key_state[i] = KEY_SHORT_PRESS;
}
else
{
key_state[i] = KEY_RELEASE;
}
key_press_time[i] = 0;
}
}
@@ -98,7 +103,7 @@ key_state_enum key_get_state (key_index_enum key_n)
}
//-------------------------------------------------------------------------------------------------------------------
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ӧ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>״̬
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>ָ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>״̬
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> key_n <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// <20><><EFBFBD>ز<EFBFBD><D8B2><EFBFBD> void <20><>
// ʹ<><CAB9>ʾ<EFBFBD><CABE> key_clear_state(KEY_1);
@@ -134,8 +139,8 @@ void key_clear_all_state (void)
void key_init (uint32 period)
{
zf_assert(0 < period);
uint8 loop_temp = 0;
for(loop_temp = 0; loop_temp < KEY_NUMBER; loop_temp ++)
uint8 loop_temp = 0;
for(loop_temp = 0; KEY_NUMBER > loop_temp; loop_temp ++)
{
gpio_init(key_index[loop_temp], GPI, GPIO_HIGH, GPI_PULL_UP);
key_state[loop_temp] = KEY_RELEASE;

View File

@@ -31,6 +31,7 @@
* <20>޸ļ<DEB8>¼
* <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><>ע
* 2022-09-15 pudding first version
* 2023-04-28 pudding <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ע<EFBFBD><D7A2>˵<EFBFBD><CBB5>
********************************************************************************************************************/
/*********************************************************************************************************************
* <20><><EFBFBD>߶<EFBFBD><DFB6>
@@ -50,6 +51,7 @@
#include "zf_common_debug.h"
#include "zf_driver_gpio.h"
//==================================================<3D><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>================================================
// <20><><EFBFBD><EFBFBD><E5B0B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>û<EFBFBD><C3BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>޸<EFBFBD> Ĭ<>϶<EFBFBD><CFB6><EFBFBD><EFBFBD>ĸ<EFBFBD><C4B8><EFBFBD><EFBFBD><EFBFBD>
// <20><><EFBFBD><EFBFBD><E5B0B4>˳<EFBFBD><CBB3><EFBFBD><EFBFBD>Ӧ<EFBFBD>·<EFBFBD> key_index_enum ö<><C3B6><EFBFBD><EFBFBD><EFBFBD>ж<EFBFBD><D0B6><EFBFBD><EFBFBD><EFBFBD>˳<EFBFBD><CBB3>
// <20><><EFBFBD><EFBFBD><EFBFBD>û<EFBFBD><C3BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>ô<EFBFBD><C3B4>Ҫͬ<D2AA><CDAC><EFBFBD><EFBFBD><EFBFBD>·<EFBFBD> key_index_enum ö<><C3B6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
@@ -58,7 +60,10 @@
#define KEY_RELEASE_LEVEL (GPIO_HIGH) // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ĭ<EFBFBD><C4AC>״̬ Ҳ<><D2B2><EFBFBD>ǰ<EFBFBD><C7B0><EFBFBD><EFBFBD>ͷ<EFBFBD>״̬<D7B4>ĵ<EFBFBD>ƽ
#define KEY_MAX_SHOCK_PERIOD (10 ) // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1> <20><>λ<EFBFBD><CEBB><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD>źŻᱻ<C5BB><E1B1BB>Ϊ<EFBFBD><CEAA><EFBFBD>Ӳ<EFBFBD><D3B2><EFBFBD><EFBFBD><EFBFBD>
#define KEY_LONG_PRESS_PERIOD (1000 ) // <20><>С<EFBFBD><D0A1><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1> <20><>λ<EFBFBD><CEBB><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD>źŻᱻ<C5BB><E1B1BB>Ϊ<EFBFBD>dz<EFBFBD><C7B3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
//==================================================<3D><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>================================================
//==================================================<3D><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E1B9B9>===============================================
typedef enum
{
KEY_1,
@@ -74,11 +79,15 @@ typedef enum
KEY_SHORT_PRESS, // <20><><EFBFBD><EFBFBD><EFBFBD>̰<EFBFBD>״̬
KEY_LONG_PRESS, // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>״̬
}key_state_enum;
//==================================================<3D><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E1B9B9>===============================================
void key_scanner (void);
key_state_enum key_get_state (key_index_enum key_n);
void key_clear_state (key_index_enum key_n);
void key_clear_all_state (void);
void key_init (uint32 period);
//==================================================<3D><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>===============================================
void key_scanner (void); // <20><><EFBFBD><EFBFBD>״̬ɨ<CCAC><C9A8>
key_state_enum key_get_state (key_index_enum key_n); // <20><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD>״̬
void key_clear_state (key_index_enum key_n); // <20><><EFBFBD><EFBFBD>ָ<EFBFBD><D6B8><EFBFBD><EFBFBD><EFBFBD><EFBFBD>״̬
void key_clear_all_state (void); // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>а<EFBFBD><D0B0><EFBFBD>״̬
void key_init (uint32 period); // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʼ<EFBFBD><CABC>
//==================================================<3D><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>===============================================
#endif

View File

@@ -31,6 +31,7 @@
* <20>޸ļ<DEB8>¼
* <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><>ע
* 2022-09-15 pudding first version
* 2023-04-28 pudding <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ע<EFBFBD><D7A2>˵<EFBFBD><CBB5>
********************************************************************************************************************/
/*********************************************************************************************************************
* <20><><EFBFBD>߶<EFBFBD><DFB6>
@@ -57,15 +58,17 @@
#include "zf_driver_soft_iic.h"
#include "zf_device_mpu6050.h"
int16 mpu6050_gyro_x = 0, mpu6050_gyro_y = 0, mpu6050_gyro_z = 0; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> gyro (<28><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>)
int16 mpu6050_acc_x = 0, mpu6050_acc_y = 0, mpu6050_acc_z = 0; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ٶȼ<D9B6><C8BC><EFBFBD><EFBFBD><EFBFBD> acc (accelerometer <20><><EFBFBD>ٶȼ<D9B6>)
int16 mpu6050_gyro_x = 0, mpu6050_gyro_y = 0, mpu6050_gyro_z = 0; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> GYRO (<28><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>)
int16 mpu6050_acc_x = 0, mpu6050_acc_y = 0, mpu6050_acc_z = 0; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ٶȼ<D9B6><C8BC><EFBFBD><EFBFBD><EFBFBD> ACC (accelerometer <20><><EFBFBD>ٶȼ<D9B6>)
#if MPU6050_USE_SOFT_IIC
static soft_iic_info_struct mpu6050_iic_struct;
static soft_iic_info_struct mpu6050_iic_struct; // <20><><EFBFBD><EFBFBD> mpu6050 IICͨѶ<CDA8><EFBFBD><E1B9B9>
#define mpu6050_write_register(reg, data) (soft_iic_write_8bit_register(&mpu6050_iic_struct, (reg), (data)))
#define mpu6050_read_register(reg) (soft_iic_read_8bit_register(&mpu6050_iic_struct, (reg)))
#define mpu6050_read_registers(reg, data, len) (soft_iic_read_8bit_registers(&mpu6050_iic_struct, (reg), (data), (len)))
#else
#error "<22>ݲ<EFBFBD>֧<EFBFBD><D6A7>Ӳ<EFBFBD><D3B2>IICͨѶ"
#endif
//-------------------------------------------------------------------------------------------------------------------
@@ -84,7 +87,7 @@ static uint8 mpu6050_self1_check (void)
mpu6050_write_register(MPU6050_SMPLRT_DIV, 0x07); // 125HZ<48><5A><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
while(0x07 != dat)
{
if(timeout_count ++ > MPU6050_TIMEOUT_COUNT)
if(MPU6050_TIMEOUT_COUNT < timeout_count ++)
{
return_state = 1;
break;
@@ -162,8 +165,8 @@ float mpu6050_gyro_transition (int16 gyro_value)
float gyro_data = 0;
switch(MPU6050_GYR_SAMPLE)
{
case 0x00: gyro_data = (float)gyro_value / 131.2f; break; // 0x00 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ:<3A><>250 dps <20><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݳ<EFBFBD><DDB3><EFBFBD>131 <20><><EFBFBD><EFBFBD>ת<EFBFBD><D7AA>Ϊ<EFBFBD><CEAA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>λ<EFBFBD><CEBB><EFBFBD><EFBFBD><EFBFBD>ݣ<EFBFBD><DDA3><EFBFBD>λΪ<CEBB><CEAA><EFBFBD><EFBFBD>/s
case 0x08: gyro_data = (float)gyro_value / 65.6f; break; // 0x08 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ:<3A><>500 dps <20><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݳ<EFBFBD><DDB3><EFBFBD>65.5 <20><><EFBFBD><EFBFBD>ת<EFBFBD><D7AA>Ϊ<EFBFBD><CEAA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>λ<EFBFBD><CEBB><EFBFBD><EFBFBD><EFBFBD>ݣ<EFBFBD><DDA3><EFBFBD>λΪ<CEBB><CEAA><EFBFBD><EFBFBD>/s
case 0x00: gyro_data = (float)gyro_value / 131.0f; break; // 0x00 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ:<3A><>250 dps <20><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݳ<EFBFBD><DDB3><EFBFBD> 131 <20><><EFBFBD><EFBFBD>ת<EFBFBD><D7AA>Ϊ<EFBFBD><CEAA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>λ<EFBFBD><CEBB><EFBFBD><EFBFBD><EFBFBD>ݣ<EFBFBD><DDA3><EFBFBD>λΪ<CEBB><CEAA><EFBFBD><EFBFBD>/s
case 0x08: gyro_data = (float)gyro_value / 65.5f; break; // 0x08 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ:<3A><>500 dps <20><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݳ<EFBFBD><DDB3><EFBFBD> 65.5 <20><><EFBFBD><EFBFBD>ת<EFBFBD><D7AA>Ϊ<EFBFBD><CEAA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>λ<EFBFBD><CEBB><EFBFBD><EFBFBD><EFBFBD>ݣ<EFBFBD><DDA3><EFBFBD>λΪ<CEBB><CEAA><EFBFBD><EFBFBD>/s
case 0x10: gyro_data = (float)gyro_value / 32.8f; break; // 0x10 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ:<3A><>1000dps <20><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݳ<EFBFBD><DDB3><EFBFBD>32.8 <20><><EFBFBD><EFBFBD>ת<EFBFBD><D7AA>Ϊ<EFBFBD><CEAA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>λ<EFBFBD><CEBB><EFBFBD><EFBFBD><EFBFBD>ݣ<EFBFBD><DDA3><EFBFBD>λΪ<CEBB><CEAA><EFBFBD><EFBFBD>/s
case 0x18: gyro_data = (float)gyro_value / 16.4f; break; // 0x18 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ:<3A><>2000dps <20><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݳ<EFBFBD><DDB3><EFBFBD>16.4 <20><><EFBFBD><EFBFBD>ת<EFBFBD><D7AA>Ϊ<EFBFBD><CEAA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>λ<EFBFBD><CEBB><EFBFBD><EFBFBD><EFBFBD>ݣ<EFBFBD><DDA3><EFBFBD>λΪ<CEBB><CEAA><EFBFBD><EFBFBD>/s
default: break;
@@ -202,24 +205,23 @@ uint8 mpu6050_init (void)
mpu6050_write_register(MPU6050_PWR_MGMT_1, 0x00); // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>״̬
mpu6050_write_register(MPU6050_SMPLRT_DIV, 0x07); // 125HZ<48><5A><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
mpu6050_write_register(MPU6050_CONFIG, 0x04);
mpu6050_write_register(MPU6050_GYRO_CONFIG, MPU6050_GYR_SAMPLE); // 2000<30><30>/s
mpu6050_write_register(MPU6050_ACCEL_CONFIG, MPU6050_ACC_SAMPLE); // 8g(m/s^2)
mpu6050_write_register(MPU6050_USER_CONTROL, 0x00);
mpu6050_write_register(MPU6050_INT_PIN_CFG, 0x02);
// MPU6050_GYRO_CONFIG<49>Ĵ<EFBFBD><C4B4><EFBFBD>
// <20><><EFBFBD><EFBFBD>Ϊ:0x00 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ:<3A><>250 dps <20><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݳ<EFBFBD><DDB3><EFBFBD>131.2 <20><><EFBFBD><EFBFBD>ת<EFBFBD><D7AA>Ϊ<EFBFBD><CEAA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>λ<EFBFBD><CEBB><EFBFBD><EFBFBD><EFBFBD>ݣ<EFBFBD><DDA3><EFBFBD>λΪ<CEBB><CEAA><EFBFBD><EFBFBD>/s
// <20><><EFBFBD><EFBFBD>Ϊ:0x08 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ:<3A><>500 dps <EFBFBD><EFBFBD>ȡ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݳ<EFBFBD><EFBFBD><EFBFBD>65.6 <20><><EFBFBD><EFBFBD>ת<EFBFBD><D7AA>Ϊ<EFBFBD><CEAA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>λ<EFBFBD><CEBB><EFBFBD><EFBFBD><EFBFBD>ݣ<EFBFBD><DDA3><EFBFBD>λΪ<CEBB><CEAA><EFBFBD><EFBFBD>/s
// <20><><EFBFBD><EFBFBD>Ϊ:0x10 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ:<3A><>1000dps <EFBFBD><EFBFBD>ȡ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݳ<EFBFBD><EFBFBD><EFBFBD>32.8 <20><><EFBFBD><EFBFBD>ת<EFBFBD><D7AA>Ϊ<EFBFBD><CEAA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>λ<EFBFBD><CEBB><EFBFBD><EFBFBD><EFBFBD>ݣ<EFBFBD><DDA3><EFBFBD>λΪ<CEBB><CEAA><EFBFBD><EFBFBD>/s
// <20><><EFBFBD><EFBFBD>Ϊ:0x18 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ:<3A><>2000dps <EFBFBD><EFBFBD>ȡ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݳ<EFBFBD><EFBFBD><EFBFBD>16.4 <20><><EFBFBD><EFBFBD>ת<EFBFBD><D7AA>Ϊ<EFBFBD><CEAA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>λ<EFBFBD><CEBB><EFBFBD><EFBFBD><EFBFBD>ݣ<EFBFBD><DDA3><EFBFBD>λΪ<CEBB><CEAA><EFBFBD><EFBFBD>/s
mpu6050_write_register(MPU6050_GYRO_CONFIG, MPU6050_GYR_SAMPLE); // 2000
// GYRO_CONFIG<EFBFBD>Ĵ<EFBFBD><EFBFBD><EFBFBD>
// <20><><EFBFBD><EFBFBD>Ϊ:0x00 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ:<3A><>250 dps <20><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݳ<EFBFBD><DDB3><EFBFBD>131.2 <20><><EFBFBD><EFBFBD>ת<EFBFBD><D7AA>Ϊ<EFBFBD><CEAA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>λ<EFBFBD><CEBB><EFBFBD><EFBFBD><EFBFBD>ݣ<EFBFBD><DDA3><EFBFBD>λΪ<CEBB><CEAA><EFBFBD><EFBFBD>/s
// <20><><EFBFBD><EFBFBD>Ϊ:0x08 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ:<3A><>500 dps <20><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݳ<EFBFBD><DDB3><EFBFBD>65.6 <20><><EFBFBD><EFBFBD>ת<EFBFBD><D7AA>Ϊ<EFBFBD><CEAA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>λ<EFBFBD><CEBB><EFBFBD><EFBFBD><EFBFBD>ݣ<EFBFBD><DDA3><EFBFBD>λΪ<CEBB><CEAA><EFBFBD><EFBFBD>/s
// <20><><EFBFBD><EFBFBD>Ϊ:0x10 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ:<3A><>1000dps <20><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݳ<EFBFBD><DDB3><EFBFBD>32.8 <20><><EFBFBD><EFBFBD>ת<EFBFBD><D7AA>Ϊ<EFBFBD><CEAA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>λ<EFBFBD><CEBB><EFBFBD><EFBFBD><EFBFBD>ݣ<EFBFBD><DDA3><EFBFBD>λΪ<CEBB><CEAA><EFBFBD><EFBFBD>/s
// <20><><EFBFBD><EFBFBD>Ϊ:0x18 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ:<3A><>2000dps <20><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݳ<EFBFBD><DDB3><EFBFBD>16.4 <20><><EFBFBD><EFBFBD>ת<EFBFBD><D7AA>Ϊ<EFBFBD><CEAA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>λ<EFBFBD><CEBB><EFBFBD><EFBFBD><EFBFBD>ݣ<EFBFBD><DDA3><EFBFBD>λΪ<CEBB><CEAA><EFBFBD><EFBFBD>/s
// MPU6050_ACCEL_CONFIG<49>Ĵ<EFBFBD><C4B4><EFBFBD>
mpu6050_write_register(MPU6050_ACCEL_CONFIG, MPU6050_ACC_SAMPLE); // 8g
// ACCEL_CONFIG<49>Ĵ<EFBFBD><C4B4><EFBFBD>
// <20><><EFBFBD><EFBFBD>Ϊ:0x00 <20><><EFBFBD>ٶȼ<D9B6><C8BC><EFBFBD><EFBFBD><EFBFBD>Ϊ:<3A><>2g <20><>ȡ<EFBFBD><C8A1><EFBFBD>ļ<EFBFBD><C4BC>ٶȼ<D9B6><C8BC><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>16384 <20><><EFBFBD><EFBFBD>ת<EFBFBD><D7AA>Ϊ<EFBFBD><CEAA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>λ<EFBFBD><CEBB><EFBFBD><EFBFBD><EFBFBD>ݣ<EFBFBD><DDA3><EFBFBD>λ<EFBFBD><CEBB>g(m/s^2)
// <20><><EFBFBD><EFBFBD>Ϊ:0x08 <20><><EFBFBD>ٶȼ<D9B6><C8BC><EFBFBD><EFBFBD><EFBFBD>Ϊ:<3A><>4g <20><>ȡ<EFBFBD><C8A1><EFBFBD>ļ<EFBFBD><C4BC>ٶȼ<D9B6><C8BC><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>8192 <20><><EFBFBD><EFBFBD>ת<EFBFBD><D7AA>Ϊ<EFBFBD><CEAA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>λ<EFBFBD><CEBB><EFBFBD><EFBFBD><EFBFBD>ݣ<EFBFBD><DDA3><EFBFBD>λ<EFBFBD><CEBB>g(m/s^2)
// <20><><EFBFBD><EFBFBD>Ϊ:0x10 <20><><EFBFBD>ٶȼ<D9B6><C8BC><EFBFBD><EFBFBD><EFBFBD>Ϊ:<3A><>8g <20><>ȡ<EFBFBD><C8A1><EFBFBD>ļ<EFBFBD><C4BC>ٶȼ<D9B6><C8BC><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>4096 <20><><EFBFBD><EFBFBD>ת<EFBFBD><D7AA>Ϊ<EFBFBD><CEAA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>λ<EFBFBD><CEBB><EFBFBD><EFBFBD><EFBFBD>ݣ<EFBFBD><DDA3><EFBFBD>λ<EFBFBD><CEBB>g(m/s^2)
// <20><><EFBFBD><EFBFBD>Ϊ:0x18 <20><><EFBFBD>ٶȼ<D9B6><C8BC><EFBFBD><EFBFBD><EFBFBD>Ϊ:<3A><>16g <20><>ȡ<EFBFBD><C8A1><EFBFBD>ļ<EFBFBD><C4BC>ٶȼ<D9B6><C8BC><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>2048 <20><><EFBFBD><EFBFBD>ת<EFBFBD><D7AA>Ϊ<EFBFBD><CEAA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>λ<EFBFBD><CEBB><EFBFBD><EFBFBD><EFBFBD>ݣ<EFBFBD><DDA3><EFBFBD>λ<EFBFBD><CEBB>g(m/s^2)
mpu6050_write_register(MPU6050_USER_CONTROL, 0x00);
mpu6050_write_register(MPU6050_INT_PIN_CFG, 0x02);
}while(0);
return return_state;
}

View File

@@ -31,6 +31,7 @@
* <20>޸ļ<DEB8>¼
* <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><>ע
* 2022-09-15 pudding first version
* 2023-04-28 pudding <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ע<EFBFBD><D7A2>˵<EFBFBD><CBB5>
********************************************************************************************************************/
/*********************************************************************************************************************
* <20><><EFBFBD>߶<EFBFBD><DFB6>
@@ -57,6 +58,7 @@
#include "zf_common_typedef.h"
//================================================<3D><><EFBFBD><EFBFBD> MPU6050 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>================================================
#define MPU6050_USE_SOFT_IIC (1) // Ĭ<><C4AC>ʹ<EFBFBD><CAB9><EFBFBD><EFBFBD><EFBFBD><EFBFBD> IIC <20><>ʽ<EFBFBD><CABD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>ʹ<EFBFBD><CAB9><EFBFBD><EFBFBD><EFBFBD><EFBFBD> IIC <20><>ʽ
#if MPU6050_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>====================================================
@@ -64,9 +66,13 @@
#define MPU6050_SCL_PIN (P20_11) // <20><><EFBFBD><EFBFBD> IIC SCL <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> MPU6050 <20><> SCL <20><><EFBFBD><EFBFBD>
#define MPU6050_SDA_PIN (P20_14) // <20><><EFBFBD><EFBFBD> IIC SDA <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> MPU6050 <20><> SDA <20><><EFBFBD><EFBFBD>
//====================================================<3D><><EFBFBD><EFBFBD> IIC <20><><EFBFBD><EFBFBD>====================================================
#else
#error "<22>ݲ<EFBFBD>֧<EFBFBD><D6A7>Ӳ<EFBFBD><D3B2>IICͨѶ"
#endif
#define MPU6050_TIMEOUT_COUNT (0x00FF) // MPU6050 <20><>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD>
//================================================<3D><><EFBFBD><EFBFBD> MPU6050 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>================================================
//================================================<3D><><EFBFBD><EFBFBD> MPU6050 <20>ڲ<EFBFBD><DAB2><EFBFBD>ַ================================================
#define MPU6050_DEV_ADDR (0xD0>>1) // IICд<43><D0B4>ʱ<EFBFBD>ĵ<EFBFBD>ַ<EFBFBD>ֽ<EFBFBD><D6BD><EFBFBD><EFBFBD>ݣ<EFBFBD>+1Ϊ<31><CEAA>ȡ
@@ -96,17 +102,19 @@
//================================================<3D><><EFBFBD><EFBFBD> MPU6050 <20>ڲ<EFBFBD><DAB2><EFBFBD>ַ================================================
//================================================<3D><><EFBFBD><EFBFBD> MPU6050 <20><><EFBFBD>ݴ洢<DDB4><E6B4A2><EFBFBD><EFBFBD>==============================================
extern int16 mpu6050_gyro_x, mpu6050_gyro_y, mpu6050_gyro_z; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> gyro (<28><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>)
extern int16 mpu6050_acc_x, mpu6050_acc_y, mpu6050_acc_z; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ٶȼ<D9B6><C8BC><EFBFBD><EFBFBD><EFBFBD> acc (accelerometer <20><><EFBFBD>ٶȼ<D9B6>)
//================================================<3D><><EFBFBD><EFBFBD> MPU6050 <20><><EFBFBD>ݴ洢<DDB4><E6B4A2><EFBFBD><EFBFBD>==============================================
//===================================================MPU6050 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>=================================================
//================================================<EFBFBD><EFBFBD><EFBFBD><EFBFBD> MPU6050 ȫ<EFBFBD>ֱ<EFBFBD><EFBFBD><EFBFBD>================================================
extern int16 mpu6050_gyro_x, mpu6050_gyro_y, mpu6050_gyro_z; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> gyro (<28><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>)
extern int16 mpu6050_acc_x, mpu6050_acc_y, mpu6050_acc_z; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ٶȼ<D9B6><C8BC><EFBFBD><EFBFBD><EFBFBD> acc (accelerometer <20><><EFBFBD>ٶȼ<D9B6>)
//================================================<3D><><EFBFBD><EFBFBD> MPU6050 ȫ<>ֱ<EFBFBD><D6B1><EFBFBD>================================================
//================================================<3D><><EFBFBD><EFBFBD> MPU6050 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>================================================
void mpu6050_get_acc (void); // <20><>ȡ MPU6050 <20><><EFBFBD>ٶȼ<D9B6><C8BC><EFBFBD><EFBFBD><EFBFBD>
void mpu6050_get_gyro (void); // <20><>ȡ MPU6050 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
float mpu6050_acc_transition (int16 acc_value); // <20><> MPU6050 <20><><EFBFBD>ٶȼ<D9B6><C8BC><EFBFBD><EFBFBD><EFBFBD>ת<EFBFBD><D7AA>Ϊʵ<CEAA><CAB5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
float mpu6050_gyro_transition (int16 gyro_value); // <20><> MPU6050 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ת<EFBFBD><D7AA>Ϊʵ<CEAA><CAB5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
uint8 mpu6050_init (void); // <20><>ʼ<EFBFBD><CABC> MPU6050
//===================================================MPU6050 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>=================================================
//================================================<EFBFBD><EFBFBD><EFBFBD><EFBFBD> MPU6050 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>================================================
#endif

View File

@@ -31,6 +31,7 @@
* <20>޸ļ<DEB8>¼
* <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><>ע
* 2022-09-15 pudding first version
* 2023-04-28 pudding <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ע<EFBFBD><D7A2>˵<EFBFBD><CBB5>
********************************************************************************************************************/
/*********************************************************************************************************************
* <20><><EFBFBD>߶<EFBFBD><DFB6>
@@ -60,25 +61,24 @@
#include "zf_device_config.h"
#include "zf_device_mt9v03x.h"
vuint8 mt9v03x_finish_flag = 0; // һ<><D2BB>ͼ<EFBFBD><CDBC><EFBFBD>ɼ<EFBFBD><C9BC><EFBFBD><EFBFBD>ɱ<EFBFBD>־λ
IFX_ALIGN(4) uint8 mt9v03x_image[MT9V03X_H][MT9V03X_W]; // <20><><EFBFBD><EFBFBD>4<EFBFBD>ֽڶ<D6BD><DAB6><EFBFBD>
vuint8 mt9v03x_finish_flag = 0; // һ<><D2BB>ͼ<EFBFBD><CDBC><EFBFBD>ɼ<EFBFBD><C9BC><EFBFBD><EFBFBD>ɱ<EFBFBD>־λ
IFX_ALIGN(4) uint8 mt9v03x_image[MT9V03X_H][MT9V03X_W]; // <20><><EFBFBD><EFBFBD>4<EFBFBD>ֽڶ<D6BD><DAB6><EFBFBD>
static m9v03x_type_enum mt9v03x_type;
static uint16 mt9v03x_version = 0x00;
static m9v03x_type_enum mt9v03x_type; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͷ<EFBFBD><CDB7><EFBFBD><EFBFBD>
static uint16 mt9v03x_version = 0x00; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͷ<EFBFBD><EFBFBD><E6B1BE>
int16 timeout = MT9V03X_INIT_TIMEOUT;
int16 timeout = MT9V03X_INIT_TIMEOUT; // <20><><EFBFBD>峬ʱ<E5B3AC><CAB1><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1>
uint8 mt9v03x_lost_flag = 1; // ͼ<><CDBC><EFBFBD><EFBFBD>ʧ<EFBFBD><CAA7>־λ
uint8 mt9v03x_dma_int_num; // <20><>ǰDMA<4D>жϴ<D0B6><CFB4><EFBFBD>
uint8 mt9v03x_dma_init_flag; // <20>Ƿ<EFBFBD><C7B7><EFBFBD>Ҫ<EFBFBD><D2AA><EFBFBD>³<EFBFBD>ʼ<EFBFBD><CABC>
uint8 mt9v03x_lost_flag = 1; // ͼ<><CDBC><EFBFBD><EFBFBD>ʧ<EFBFBD><CAA7>־λ
uint8 mt9v03x_dma_int_num; // <20><>ǰDMA<4D>жϴ<D0B6><CFB4><EFBFBD>
uint8 mt9v03x_dma_init_flag; // <20>Ƿ<EFBFBD><C7B7><EFBFBD>Ҫ<EFBFBD><D2AA><EFBFBD>³<EFBFBD>ʼ<EFBFBD><CABC>
uint8 mt9v03x_link_list_num;
// <20><>Ҫ<EFBFBD><D2AA><EFBFBD>õ<EFBFBD><C3B5><EFBFBD><EFBFBD><EFBFBD>ͷ<EFBFBD><CDB7><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>޸IJ<DEB8><C4B2><EFBFBD>
static int16 mt9v03x_set_confing_buffer[MT9V03X_CONFIG_FINISH][2]=
{
{MT9V03X_INIT, 0}, // <20><><EFBFBD><EFBFBD>ͷ<EFBFBD><CDB7>ʼ<EFBFBD><CABC>ʼ<EFBFBD><CABC>
{MT9V03X_AUTO_EXP, MT9V03X_AUTO_EXP_DEF}, // <20>Զ<EFBFBD><D4B6>ع<EFBFBD><D8B9><EFBFBD><EFBFBD><EFBFBD> <20><>Χ1-63 0Ϊ<30>ر<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>Զ<EFBFBD><D4B6>ع⿪<D8B9><E2BFAA> EXP_TIME<4D><45><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>õ<EFBFBD><C3B5><EFBFBD><EFBFBD>ݽ<EFBFBD><DDBD><EFBFBD><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA><EFBFBD><EFBFBD><EFBFBD>ع<EFBFBD>ʱ<EFBFBD>䣬Ҳ<E4A3AC><D2B2><EFBFBD><EFBFBD><EFBFBD>Զ<EFBFBD><D4B6>ع<EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
{MT9V03X_EXP_TIME, MT9V03X_EXP_TIME_DEF}, // <20>ع<EFBFBD>ʱ<EFBFBD><CAB1> <20><><EFBFBD><EFBFBD>ͷ<EFBFBD>յ<EFBFBD><D5B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Զ<EFBFBD><D4B6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ع<EFBFBD>ʱ<EFBFBD><EFBFBD><E4A3AC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ù<EFBFBD><C3B9><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ع<EFBFBD>ֵ
{MT9V03X_FPS, MT9V03X_FPS_DEF}, // ͼ<><CDBC>֡<EFBFBD><D6A1> <20><><EFBFBD><EFBFBD>ͷ<EFBFBD>յ<EFBFBD><D5B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Զ<EFBFBD><D4B6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>FPS<50><53><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>FPS
@@ -115,7 +115,7 @@ static uint8 mt9v03x_set_config (int16 buff[MT9V03X_CONFIG_FINISH][2])
{
uint8 return_state = 1;
uint8 uart_buffer[4];
uint16 temp;
uint16 temp = 0;
uint16 timeout_count = 0;
uint32 loop_count = 0;
uint32 uart_buffer_index = 0;
@@ -127,7 +127,7 @@ static uint8 mt9v03x_set_config (int16 buff[MT9V03X_CONFIG_FINISH][2])
}
// <20><><EFBFBD>ò<EFBFBD><C3B2><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ο<EFBFBD><CEBF><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֲ<EFBFBD>
// <20><>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͷ<EFBFBD><CDB7><EFBFBD><EFBFBD><EFBFBD>³<EFBFBD>ʼ<EFBFBD><CABC>
for(; loop_count < MT9V03X_SET_DATA; loop_count --)
for(; MT9V03X_SET_DATA > loop_count; loop_count --)
{
uart_buffer[0] = 0xA5;
uart_buffer[1] = (uint8)buff[loop_count][0];
@@ -169,7 +169,7 @@ static uint8 mt9v03x_get_config (int16 buff[MT9V03X_CONFIG_FINISH - 1][2])
{
uint8 return_state = 0;
uint8 uart_buffer[4];
uint16 temp;
uint16 temp = 0;
uint16 timeout_count = 0;
uint32 loop_count = 0;
uint32 uart_buffer_index = 0;
@@ -180,9 +180,9 @@ static uint8 mt9v03x_get_config (int16 buff[MT9V03X_CONFIG_FINISH - 1][2])
default: loop_count = MT9V03X_GAIN; break;
}
for(loop_count = loop_count - 1; loop_count >= 1; loop_count --)
for(loop_count = loop_count - 1; 1 <= loop_count; loop_count --)
{
if(mt9v03x_version < 0x0230 && buff[loop_count][0] == MT9V03X_PCLK_MODE)
if((0x0230 > mt9v03x_version) && (MT9V03X_PCLK_MODE == buff[loop_count][0]))
{
continue;
}
@@ -193,7 +193,7 @@ static uint8 mt9v03x_get_config (int16 buff[MT9V03X_CONFIG_FINISH - 1][2])
uart_buffer[3] = (uint8)temp;
uart_write_buffer(MT9V03X_COF_UART, uart_buffer, 4);
timeout_count = 0;
timeout_count = 0;
do
{
if(3 <= fifo_used(&camera_receiver_fifo))
@@ -205,7 +205,7 @@ static uint8 mt9v03x_get_config (int16 buff[MT9V03X_CONFIG_FINISH - 1][2])
}
system_delay_ms(1);
}while(MT9V03X_INIT_TIMEOUT > timeout_count ++);
if(timeout_count > MT9V03X_INIT_TIMEOUT) // <20><>ʱ
if(MT9V03X_INIT_TIMEOUT < timeout_count) // <20><>ʱ
{
return_state = 1;
break;
@@ -221,7 +221,7 @@ static uint8 mt9v03x_get_config (int16 buff[MT9V03X_CONFIG_FINISH - 1][2])
// <20><><EFBFBD>ز<EFBFBD><D8B2><EFBFBD> void
// ʹ<><CAB9>ʾ<EFBFBD><CABE> mt9v03x_uart_callback();
//-------------------------------------------------------------------------------------------------------------------
static void mt9v03x_uart_callback (void)
static void mt9v03x_uart_handler (void)
{
uint8 data = 0;
uart_query_byte(MT9V03X_COF_UART, &data);
@@ -347,11 +347,12 @@ uint8 mt9v03x_set_exposure_time (uint16 light)
uint8 return_state = 0;
if(MT9V03X_UART == mt9v03x_type)
{
set_camera_type(CAMERA_GRAYSCALE, mt9v03x_vsync_handler, mt9v03x_dma_handler, mt9v03x_uart_handler);
uint8 uart_buffer[4];
uint16 temp;
uint16 temp = 0;
uint16 timeout_count = 0;
uint32 uart_buffer_index = 0;
set_camera_type(CAMERA_GRAYSCALE, mt9v03x_vsync_handler, mt9v03x_dma_handler, mt9v03x_uart_callback); // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͷ<EFBFBD><CDB7><EFBFBD><EFBFBD>
uart_buffer[0] = 0xA5;
uart_buffer[1] = MT9V03X_SET_EXP_TIME;
temp = light;
@@ -374,12 +375,12 @@ uint8 mt9v03x_set_exposure_time (uint16 light)
{
return_state = 1;
}
set_camera_type(CAMERA_GRAYSCALE, mt9v03x_vsync_handler, mt9v03x_dma_handler, NULL);
}
else
{
return_state = mt9v03x_set_exposure_time_sccb(light);
}
set_camera_type(CAMERA_GRAYSCALE, mt9v03x_vsync_handler, mt9v03x_dma_handler, NULL); // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͷ<EFBFBD><CDB7><EFBFBD><EFBFBD>
return return_state;
}
@@ -396,11 +397,12 @@ uint8 mt9v03x_set_reg (uint8 addr, uint16 data)
uint8 return_state = 0;
if(MT9V03X_UART == mt9v03x_type)
{
set_camera_type(CAMERA_GRAYSCALE, mt9v03x_vsync_handler, mt9v03x_dma_handler, mt9v03x_uart_handler);
uint8 uart_buffer[4];
uint16 temp;
uint16 temp = 0;
uint16 timeout_count = 0;
uint32 uart_buffer_index = 0;
set_camera_type(CAMERA_GRAYSCALE, mt9v03x_vsync_handler, mt9v03x_dma_handler, mt9v03x_uart_callback); // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͷ<EFBFBD><CDB7><EFBFBD><EFBFBD>
uart_buffer[0] = 0xA5;
uart_buffer[1] = MT9V03X_SET_ADDR;
temp = addr;
@@ -431,16 +433,15 @@ uint8 mt9v03x_set_reg (uint8 addr, uint16 data)
{
return_state = 1;
}
set_camera_type(CAMERA_GRAYSCALE, mt9v03x_vsync_handler, mt9v03x_dma_handler, NULL);
}
else
{
return_state = mt9v03x_set_reg_sccb(addr, data);
}
set_camera_type(CAMERA_GRAYSCALE, mt9v03x_vsync_handler, mt9v03x_dma_handler, NULL); // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͷ<EFBFBD><CDB7><EFBFBD><EFBFBD>
return return_state;
}
//-------------------------------------------------------------------------------------------------------------------
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> MT9V03X <20><><EFBFBD><EFBFBD>ͷ<EFBFBD><CDB7>ʼ<EFBFBD><CABC>
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> void
@@ -454,28 +455,44 @@ uint8 mt9v03x_init (void)
soft_iic_info_struct mt9v03x_iic_struct;
do
{
system_delay_ms(500);
set_camera_type(CAMERA_GRAYSCALE, NULL, NULL, NULL); // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͷ<EFBFBD><CDB7><EFBFBD><EFBFBD>
system_delay_ms(200);
// <20><><EFBFBD>ȳ<EFBFBD><C8B3><EFBFBD>SCCBͨѶ
mt9v03x_type = MT9V03X_SCCB;
set_camera_type(CAMERA_GRAYSCALE, mt9v03x_vsync_handler, mt9v03x_dma_handler, NULL);
soft_iic_init(&mt9v03x_iic_struct, 0, MT9V03X_COF_IIC_DELAY, MT9V03X_COF_IIC_SCL, MT9V03X_COF_IIC_SDA);
if(mt9v03x_set_config_sccb(&mt9v03x_iic_struct, mt9v03x_set_confing_buffer))
{
// SCCBͨѶʧ<D1B6>ܣ<EFBFBD><DCA3><EFBFBD><EFBFBD>Դ<EFBFBD><D4B4><EFBFBD>ͨѶ
mt9v03x_type = MT9V03X_UART;
set_camera_type(CAMERA_GRAYSCALE, mt9v03x_vsync_handler, mt9v03x_dma_handler, mt9v03x_uart_handler);
camera_fifo_init();
set_camera_type(CAMERA_GRAYSCALE, NULL, NULL, mt9v03x_uart_callback); // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͷ<EFBFBD><CDB7><EFBFBD><EFBFBD>
uart_init (MT9V03X_COF_UART, MT9V03X_COF_BAUR, MT9V03X_COF_UART_RX, MT9V03X_COF_UART_TX); //<2F><>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͷ
// <EFBFBD><EFBFBD>ʼ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͷ
uart_init(MT9V03X_COF_UART, MT9V03X_COF_BAUR, MT9V03X_COF_UART_RX, MT9V03X_COF_UART_TX);
uart_rx_interrupt(MT9V03X_COF_UART, 1);
fifo_clear(&camera_receiver_fifo);
// <20>ȴ<EFBFBD><C8B4><EFBFBD><EFBFBD><EFBFBD>ͷ<EFBFBD>ϵ<EFBFBD><CFB5><EFBFBD>ʼ<EFBFBD><CABC><EFBFBD>ɹ<EFBFBD> <20><>ʽ<EFBFBD><CABD><EFBFBD><EFBFBD><EFBFBD>֣<EFBFBD><D6A3><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD>ͨ<EFBFBD><CDA8><EFBFBD><EFBFBD>ȡ<EFBFBD><C8A1><EFBFBD>õķ<C3B5>ʽ <20><>ѡһ
// system_delay_ms(1000); // <20><>ʱ<EFBFBD><CAB1>ʽ
// if(mt9v03x_get_config(mt9v03x_get_confing_buffer))
// {
// // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>˶<EFBFBD><CBB6><EFBFBD><EFBFBD><EFBFBD>Ϣ <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD>λ<EFBFBD><CEBB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// // <20><>ô<EFBFBD><C3B4><EFBFBD>Ǵ<EFBFBD><C7B4><EFBFBD>ͨ<EFBFBD>ų<EFBFBD><C5B3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD>˳<EFBFBD><CBB3><EFBFBD>
// // <20><><EFBFBD><EFBFBD>һ<EFBFBD>½<EFBFBD><C2BD><EFBFBD><EFBFBD><EFBFBD>û<EFBFBD><C3BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>û<EFBFBD><C3BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ܾ<EFBFBD><DCBE>ǻ<EFBFBD><C7BB><EFBFBD>
// zf_log(0, "MT9V03X get config error.");
// set_camera_type(NO_CAMERE, NULL, NULL, NULL);
// return_state = 1;
// break;
// }
mt9v03x_version = mt9v03x_get_version(); // <20><>ȡ<EFBFBD><C8A1><EFBFBD>õķ<C3B5>ʽ
if(mt9v03x_set_config(mt9v03x_set_confing_buffer))
{
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>˶<EFBFBD><CBB6><EFBFBD><EFBFBD><EFBFBD>Ϣ <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD>λ<EFBFBD><CEBB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// <20><>ô<EFBFBD><C3B4><EFBFBD><EFBFBD>ͨ<EFBFBD>ų<EFBFBD><C5B3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD>˳<EFBFBD><CBB3><EFBFBD>
// <20><>ô<EFBFBD><C3B4><EFBFBD>Ǵ<EFBFBD><EFBFBD><EFBFBD>ͨ<EFBFBD>ų<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD>˳<EFBFBD><EFBFBD><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, "MT9V03X set config error.");
uart_rx_interrupt(MT9V03X_COF_UART, 0);
set_camera_type(NO_CAMERE, NULL, NULL, NULL);
return_state = 1;
break;
@@ -488,15 +505,14 @@ uint8 mt9v03x_init (void)
// <20><>ô<EFBFBD><C3B4><EFBFBD>Ǵ<EFBFBD><C7B4><EFBFBD>ͨ<EFBFBD>ų<EFBFBD><C5B3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD>˳<EFBFBD><CBB3><EFBFBD>
// <20><><EFBFBD><EFBFBD>һ<EFBFBD>½<EFBFBD><C2BD><EFBFBD><EFBFBD><EFBFBD>û<EFBFBD><C3BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>û<EFBFBD><C3BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ܾ<EFBFBD><DCBE>ǻ<EFBFBD><C7BB><EFBFBD>
zf_log(0, "MT9V03X get config error.");
uart_rx_interrupt(MT9V03X_COF_UART, 0);
set_camera_type(NO_CAMERE, NULL, NULL, NULL);
return_state = 1;
break;
}
}
set_camera_type(CAMERA_GRAYSCALE, mt9v03x_vsync_handler, mt9v03x_dma_handler, NULL); // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͷ<EFBFBD><CDB7><EFBFBD><EFBFBD>
mt9v03x_link_list_num = camera_init(MT9V03X_DATA_ADD, mt9v03x_image[0], MT9V03X_IMAGE_SIZE);
}while(0);
return return_state;
}

View File

@@ -31,6 +31,7 @@
* <20>޸ļ<DEB8>¼
* <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><>ע
* 2022-09-15 pudding first version
* 2023-04-28 pudding <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ע<EFBFBD><D7A2>˵<EFBFBD><CBB5>
********************************************************************************************************************/
/*********************************************************************************************************************
* <20><><EFBFBD>߶<EFBFBD><DFB6>
@@ -53,7 +54,7 @@
#include "zf_common_typedef.h"
#include "zf_device_type.h"
//=================================================MT9V03X <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>====================================================
//================================================<EFBFBD><EFBFBD><EFBFBD><EFBFBD> MT9V03X <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>================================================
#define MT9V03X_COF_UART (UART_1) // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͷ<EFBFBD><CDB7>ʹ<EFBFBD>õ<EFBFBD><C3B5>Ĵ<EFBFBD><C4B4><EFBFBD>
#define MT9V03X_COF_BAUR (9600) // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ô<EFBFBD><C3B4>ڲ<EFBFBD><DAB2><EFBFBD><EFBFBD><EFBFBD>
#define MT9V03X_COF_UART_TX (UART1_RX_P02_3) // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> UART-TX <20><><EFBFBD><EFBFBD> Ҫ<><D2AA><EFBFBD>ڵ<EFBFBD>Ƭ<EFBFBD><C6AC> RX <20><>
@@ -73,31 +74,32 @@
#define MT9V03X_DATA_ADD (get_port_in_addr(MT9V03X_DATA_PIN))
#define MT9V03X_INIT_TIMEOUT (0x0080) // Ĭ<>ϵ<EFBFBD><CFB5><EFBFBD><EFBFBD><EFBFBD>ͷ<EFBFBD><CDB7>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD>ʱʱ<CAB1><CAB1> <20><><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA>λ
//=================================================MT9V03X <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>====================================================
//================================================<EFBFBD><EFBFBD><EFBFBD><EFBFBD> MT9V03X <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>================================================
//=================================================MT9V03X <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>====================================================
//================================================<3D><><EFBFBD><EFBFBD> MT9V03X <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>================================================
#define MT9V03X_W (188) // ͼ<><CDBC><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>Χ [1-752]
#define MT9V03X_H (120) // ͼ<><CDBC><EFBFBD>߶<EFBFBD> <20><>Χ [1-480]
#define MT9V03X_IMAGE_SIZE (MT9V03X_W * MT9V03X_H) // <20><><EFBFBD><EFBFBD>ͼ<EFBFBD><CDBC><EFBFBD><EFBFBD>С<EFBFBD><D0A1><EFBFBD>ܳ<EFBFBD><DCB3><EFBFBD> 65535
#define MT9V03X_AUTO_EXP_DEF (0 ) // <20>Զ<EFBFBD><D4B6>ع<EFBFBD><D8B9><EFBFBD><EFBFBD><EFBFBD> Ĭ<>ϲ<EFBFBD><CFB2><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Զ<EFBFBD><D4B6>ع<EFBFBD><D8B9><EFBFBD><EFBFBD><EFBFBD> <20><>Χ [0-63] 0Ϊ<30>ر<EFBFBD>
// <20><><EFBFBD><EFBFBD><EFBFBD>Զ<EFBFBD><D4B6>ع⿪<D8B9><E2BFAA> EXP_TIME<4D><45><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Զ<EFBFBD><D4B6>ع<EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// һ<><D2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Dz<EFBFBD><C7B2><EFBFBD>Ҫ<EFBFBD><D2AA><EFBFBD><EFBFBD><EFBFBD>Զ<EFBFBD><D4B6>ع<EFBFBD><D8B9><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>߷dz<DFB7><C7B3><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȵ<EFBFBD><C8B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Գ<EFBFBD><D4B3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Զ<EFBFBD><D4B6>ع⣬<D8B9><E2A3AC><EFBFBD><EFBFBD>ͼ<EFBFBD><CDBC><EFBFBD>ȶ<EFBFBD><C8B6><EFBFBD>
#define MT9V03X_EXP_TIME_DEF (200) // <20>ع<EFBFBD>ʱ<EFBFBD><CAB1> <20><><EFBFBD><EFBFBD>ͷ<EFBFBD>յ<EFBFBD><D5B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Զ<EFBFBD><D4B6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ع<EFBFBD>ʱ<EFBFBD><EFBFBD><E4A3AC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ù<EFBFBD><C3B9><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ع<EFBFBD>ֵ
#define MT9V03X_FPS_DEF (50 ) // ͼ<><CDBC>֡<EFBFBD><D6A1> <20><><EFBFBD><EFBFBD>ͷ<EFBFBD>յ<EFBFBD><D5B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Զ<EFBFBD><D4B6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>FPS<50><53><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>FPS
#define MT9V03X_LR_OFFSET_DEF (0 ) // ͼ<><CDBC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ƫ<EFBFBD><C6AB><EFBFBD><EFBFBD> <20><>ֵ <20><>ƫ<EFBFBD><C6AB> <20><>ֵ <20><>ƫ<EFBFBD><C6AB> <20><>Ϊ188 376 752ʱ<32>޷<EFBFBD><DEB7><EFBFBD><EFBFBD><EFBFBD>ƫ<EFBFBD><C6AB>
// <20><><EFBFBD><EFBFBD>ͷ<EFBFBD><CDB7>ƫ<EFBFBD><C6AB><EFBFBD><EFBFBD><EFBFBD>ݺ<EFBFBD><DDBA><EFBFBD><EFBFBD>Զ<EFBFBD><D4B6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ƫ<EFBFBD>ƣ<EFBFBD><C6A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ü<EFBFBD><C3BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ƫ<EFBFBD><C6AB>
#define MT9V03X_UD_OFFSET_DEF (0 ) // ͼ<><CDBC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ƫ<EFBFBD><C6AB><EFBFBD><EFBFBD> <20><>ֵ <20><>ƫ<EFBFBD><C6AB> <20><>ֵ <20><>ƫ<EFBFBD><C6AB> <20><>Ϊ120 240 480ʱ<30>޷<EFBFBD><DEB7><EFBFBD><EFBFBD><EFBFBD>ƫ<EFBFBD><C6AB>
// <20><><EFBFBD><EFBFBD>ͷ<EFBFBD><CDB7>ƫ<EFBFBD><C6AB><EFBFBD><EFBFBD><EFBFBD>ݺ<EFBFBD><DDBA><EFBFBD><EFBFBD>Զ<EFBFBD><D4B6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ƫ<EFBFBD>ƣ<EFBFBD><C6A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ü<EFBFBD><C3BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ƫ<EFBFBD><C6AB>
#define MT9V03X_GAIN_DEF (32 ) // ͼ<><CDBC><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>Χ [16-64] <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ع<EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD>̶<EFBFBD><CCB6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>¸ı<C2B8>ͼ<EFBFBD><CDBC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>̶<EFBFBD>
#define MT9V03X_PCLK_MODE_DEF (0 ) // <20><><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1>ģʽ <20><>Χ [0-1] Ĭ<>ϣ<EFBFBD>0 <20><>ѡ<EFBFBD><D1A1><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA>[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>CH32V307<30><37>DVP<56>ӿڻ<D3BF>STM32<33><32>DCMI<4D>ӿڲɼ<DAB2><C9BC><EFBFBD>Ҫ<EFBFBD><D2AA><EFBFBD><EFBFBD>Ϊ1
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> MT9V034 V1.5 <20>Լ<EFBFBD><D4BC><EFBFBD><EFBFBD>ϰ汾֧<E6B1BE>ָ<EFBFBD><D6B8><EFBFBD><EFBFBD><EFBFBD>
//=================================================MT9V03X <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>====================================================
#define MT9V03X_AUTO_EXP_DEF ( 0 ) // <20>Զ<EFBFBD><D4B6>ع<EFBFBD><D8B9><EFBFBD><EFBFBD><EFBFBD> Ĭ<>ϲ<EFBFBD><CFB2><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Զ<EFBFBD><D4B6>ع<EFBFBD><D8B9><EFBFBD><EFBFBD><EFBFBD> <20><>Χ [0-63] 0Ϊ<30>ر<EFBFBD>
// <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Զ<EFBFBD><EFBFBD>ع⿪<EFBFBD><EFBFBD> EXP_TIME<4D><45><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Զ<EFBFBD><D4B6>ع<EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// һ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Dz<EFBFBD><EFBFBD><EFBFBD>Ҫ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Զ<EFBFBD><EFBFBD>ع<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>߷dz<DFB7><C7B3><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȵ<EFBFBD><C8B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Գ<EFBFBD><D4B3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Զ<EFBFBD><D4B6>ع⣬<D8B9><E2A3AC><EFBFBD><EFBFBD>ͼ<EFBFBD><CDBC><EFBFBD>ȶ<EFBFBD><C8B6><EFBFBD>
#define MT9V03X_EXP_TIME_DEF ( 512 ) // <20>ع<EFBFBD>ʱ<EFBFBD><CAB1> <20><><EFBFBD><EFBFBD>ͷ<EFBFBD>յ<EFBFBD><D5B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Զ<EFBFBD><D4B6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ع<EFBFBD>ʱ<EFBFBD><EFBFBD><E4A3AC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ù<EFBFBD><C3B9><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ع<EFBFBD>ֵ
#define MT9V03X_FPS_DEF ( 50 ) // ͼ<><CDBC>֡<EFBFBD><D6A1> <20><><EFBFBD><EFBFBD>ͷ<EFBFBD>յ<EFBFBD><D5B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Զ<EFBFBD><D4B6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>FPS<50><53><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>FPS
#define MT9V03X_LR_OFFSET_DEF ( 0 ) // ͼ<><CDBC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ƫ<EFBFBD><C6AB><EFBFBD><EFBFBD> <20><>ֵ <20><>ƫ<EFBFBD><C6AB> <20><>ֵ <20><>ƫ<EFBFBD><C6AB> <20><>Ϊ188 376 752ʱ<32>޷<EFBFBD><DEB7><EFBFBD><EFBFBD><EFBFBD>ƫ<EFBFBD><C6AB>
// <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><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ƫ<EFBFBD><EFBFBD>
#define MT9V03X_UD_OFFSET_DEF ( 0 ) // ͼ<><CDBC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ƫ<EFBFBD><C6AB><EFBFBD><EFBFBD> <20><>ֵ <20><>ƫ<EFBFBD><C6AB> <20><>ֵ <20><>ƫ<EFBFBD><C6AB> <20><>Ϊ120 240 480ʱ<30>޷<EFBFBD><DEB7><EFBFBD><EFBFBD><EFBFBD>ƫ<EFBFBD><C6AB>
// <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><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ƫ<EFBFBD><EFBFBD>
#define MT9V03X_GAIN_DEF ( 32 ) // ͼ<><CDBC><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>Χ [16-64] <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ع<EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD>̶<EFBFBD><CCB6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>¸ı<C2B8>ͼ<EFBFBD><CDBC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>̶<EFBFBD>
#define MT9V03X_PCLK_MODE_DEF ( 0 ) // <20><><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1>ģʽ <20><>Χ [0-1] Ĭ<>ϣ<EFBFBD>0 <20><>ѡ<EFBFBD><D1A1><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA>[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>]
// ͨ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ0<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʹ<EFBFBD><EFBFBD>CH32V307<EFBFBD><EFBFBD>DVP<EFBFBD>ӿڻ<EFBFBD>STM32<EFBFBD><EFBFBD>DCMI<EFBFBD>ӿڲɼ<EFBFBD><EFBFBD><EFBFBD>Ҫ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ1
// <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> MT9V034 V1.5 <20>Լ<EFBFBD><D4BC><EFBFBD><EFBFBD>ϰ汾֧<E6B1BE>ָ<EFBFBD><D6B8><EFBFBD><EFBFBD><EFBFBD>
//================================================<EFBFBD><EFBFBD><EFBFBD><EFBFBD> MT9V03X <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>================================================
//==============================================<3D><><EFBFBD><EFBFBD> MT9V03X <20><><EFBFBD><EFBFBD>ö<EFBFBD><EFBFBD><EFBFBD><EFBFBD>==================================================
//================================================<EFBFBD><EFBFBD><EFBFBD><EFBFBD> MT9V03X <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>===============================================
typedef enum
{
MT9V03X_INIT = 0, // <20><><EFBFBD><EFBFBD>ͷ<EFBFBD><CDB7>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
@@ -127,18 +129,20 @@ typedef enum
MT9V03X_UART, // ͨ<><CDA8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ò<EFBFBD><C3B2><EFBFBD>
MT9V03X_SCCB, // ͨ<><CDA8>SCCB<43><42><EFBFBD>ò<EFBFBD><C3B2><EFBFBD>
}m9v03x_type_enum;
//==============================================<3D><><EFBFBD><EFBFBD> MT9V03X <20><><EFBFBD><EFBFBD>ö<EFBFBD><EFBFBD><EFBFBD><EFBFBD>==================================================
//================================================<EFBFBD><EFBFBD><EFBFBD><EFBFBD> MT9V03X <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>===============================================
//==============================================<3D><><EFBFBD><EFBFBD> MT9V03X <20><><EFBFBD>ݴ洢<DDB4><E6B4A2><EFBFBD><EFBFBD>=================================================
//================================================<3D><><EFBFBD><EFBFBD> MT9V03X ȫ<>ֱ<EFBFBD><D6B1><EFBFBD>================================================
extern vuint8 mt9v03x_finish_flag; // һ<><D2BB>ͼ<EFBFBD><CDBC><EFBFBD>ɼ<EFBFBD><C9BC><EFBFBD><EFBFBD>ɱ<EFBFBD>־λ
extern uint8 mt9v03x_image[MT9V03X_H][MT9V03X_W]; // ͼ<><CDBC><EFBFBD><EFBFBD><EFBFBD>ݴ洢<DDB4><E6B4A2><EFBFBD><EFBFBD>
//==============================================<3D><><EFBFBD><EFBFBD> MT9V03X <EFBFBD><EFBFBD><EFBFBD>ݴ洢<EFBFBD><EFBFBD><EFBFBD><EFBFBD>=================================================
//================================================<EFBFBD><EFBFBD><EFBFBD><EFBFBD> MT9V03X ȫ<EFBFBD>ֱ<EFBFBD><EFBFBD><EFBFBD>================================================
//===================================================MT9V03X <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>==================================================
//================================================<3D><><EFBFBD><EFBFBD> MT9V03X <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>================================================
uint16 mt9v03x_get_version (void); // <20><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD>ͷ<EFBFBD>̼<EFBFBD><CCBC>
uint8 mt9v03x_set_exposure_time (uint16 light); // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͷ<EFBFBD>ع<EFBFBD>ʱ<EFBFBD><CAB1>
uint8 mt9v03x_set_reg (uint8 addr, uint16 data); // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͷ<EFBFBD>ڲ<EFBFBD><DAB2>Ĵ<EFBFBD><C4B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>д<EFBFBD><D0B4><EFBFBD><EFBFBD>
uint8 mt9v03x_init (void); // MT9V03X <20><><EFBFBD><EFBFBD>ͷ<EFBFBD><CDB7>ʼ<EFBFBD><CABC>
//===================================================MT9V03X <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>==================================================
//================================================<EFBFBD><EFBFBD><EFBFBD><EFBFBD> MT9V03X <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>================================================
#endif

View File

@@ -31,6 +31,7 @@
* <20>޸ļ<DEB8>¼
* <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><>ע
* 2022-09-15 pudding first version
* 2023-04-28 pudding <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ע<EFBFBD><D7A2>˵<EFBFBD><CBB5>
********************************************************************************************************************/
/*********************************************************************************************************************
* <20><><EFBFBD>߶<EFBFBD><DFB6>
@@ -61,8 +62,8 @@ static soft_spi_info_struct oled_spi;
#define oled_spi_write_8bit(data) (spi_write_8bit(OLED_SPI, (data)))
#endif
static oled_dir_enum oled_display_dir = OLED_DEFAULT_DISPLAY_DIR;
static oled_font_size_enum oled_display_font = OLED_DEFAULT_DISPLAY_FONT;
static oled_dir_enum oled_display_dir = OLED_DEFAULT_DISPLAY_DIR; // <20><>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD>
static oled_font_size_enum oled_display_font = OLED_DEFAULT_DISPLAY_FONT; // <20><>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
//-------------------------------------------------------------------------------------------------------------------
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> д8λ<38><CEBB><EFBFBD><EFBFBD>
@@ -98,13 +99,13 @@ static void oled_write_command (const uint8 command)
// ʹ<><CAB9>ʾ<EFBFBD><CABE> oled_set_coordinate(x, y);
// <20><>ע<EFBFBD><D7A2>Ϣ <20>ڲ<EFBFBD>ʹ<EFBFBD><CAB9><EFBFBD>û<EFBFBD><C3BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
//-------------------------------------------------------------------------------------------------------------------
static void oled_set_coordinate (uint16 x, uint16 y)
static void oled_set_coordinate (uint8 x, uint8 y)
{
// <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><>ôһ<C3B4><D2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ļ<EFBFBD><C4BB>ʾ<EFBFBD><CABE>ʱ<EFBFBD>򳬹<EFBFBD><F2B3ACB9><EFBFBD>Ļ<EFBFBD>ֱ<EFBFBD><D6B1>ʷ<EFBFBD>Χ<EFBFBD><CEA7>
// <20><><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾ<EFBFBD><CABE><EFBFBD>õĺ<C3B5><C4BA><EFBFBD> <20>Լ<EFBFBD><D4BC><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFB3AC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ļ<EFBFBD><C4BB>ʾ<EFBFBD><CABE>Χ
zf_assert(x < 128);
zf_assert(y < 8);
zf_assert(128 > x);
zf_assert(8 > y);
oled_write_command(0xb0 + y);
oled_write_command(((x & 0xf0) >> 4) | 0x10);
@@ -130,16 +131,19 @@ static void oled_debug_init (void)
switch(oled_display_font)
{
case OLED_6X8_FONT:
{
info.font_x_size = 6;
info.font_y_size = 1;
break;
}break;
case OLED_8X16_FONT:
{
info.font_x_size = 8;
info.font_y_size = 2;
break;
}break;
case OLED_16X16_FONT:
{
// <20>ݲ<EFBFBD>֧<EFBFBD><D6A7>
break;
}break;
}
info.output_screen = oled_show_string;
info.output_screen_clear = oled_clear;
@@ -156,15 +160,15 @@ static void oled_debug_init (void)
//-------------------------------------------------------------------------------------------------------------------
void oled_clear (void)
{
uint8 y, x;
uint8 y = 0, x = 0;
OLED_CS(0);
for(y = 0; y < 8; y ++)
for(y = 0; 8 > y; y ++)
{
oled_write_command(0xb0 + y);
oled_write_command(0x01);
oled_write_command(0x10);
for(x = 0; x < OLED_X_MAX; x ++)
for(x = 0; OLED_X_MAX > x; x ++)
{
oled_write_data(0x00);
}
@@ -181,15 +185,15 @@ void oled_clear (void)
//-------------------------------------------------------------------------------------------------------------------
void oled_full (const uint8 color)
{
uint8 y, x;
uint8 y = 0, x = 0;
OLED_CS(0);
for(y = 0; y < 8; y ++)
for(y = 0; 8 > y; y ++)
{
oled_write_command(0xb0 + y);
oled_write_command(0x01);
oled_write_command(0x10);
for(x = 0; x < OLED_X_MAX; x ++)
for(x = 0; OLED_X_MAX > x; x ++)
{
oled_write_data(color);
}
@@ -239,7 +243,7 @@ void oled_draw_point (uint16 x, uint16 y, const uint8 color)
zf_assert(y < 8);
OLED_CS(0);
oled_set_coordinate(x, y);
oled_set_coordinate((uint8)x, (uint8)y);
oled_write_command(0xb0 + y);
oled_write_command(((x & 0xf0) >> 4) | 0x10);
oled_write_command((x & 0x0f) | 0x00);
@@ -277,7 +281,7 @@ void oled_show_string (uint16 x, uint16 y, const char ch[])
x = 0;
y ++;
}
oled_set_coordinate(x, y);
oled_set_coordinate((uint8)x, (uint8)y);
for(i = 0; i < 6; i ++)
{
oled_write_data(ascii_font_6x8[c][i]);
@@ -292,13 +296,13 @@ void oled_show_string (uint16 x, uint16 y, const char ch[])
x = 0;
y ++;
}
oled_set_coordinate(x, y);
oled_set_coordinate((uint8)x, (uint8)y);
for(i = 0; i < 8; i ++)
{
oled_write_data(ascii_font_8x16[c][i]);
}
oled_set_coordinate(x, y + 1);
oled_set_coordinate((uint8)x, (uint8)(y + 1));
for(i = 0; i < 8; i ++)
{
oled_write_data(ascii_font_8x16[c][i + 8]);
@@ -329,11 +333,11 @@ void oled_show_int (uint16 x, uint16 y, const int32 dat, uint8 num)
// <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><>ôһ<C3B4><D2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ļ<EFBFBD><C4BB>ʾ<EFBFBD><CABE>ʱ<EFBFBD>򳬹<EFBFBD><F2B3ACB9><EFBFBD>Ļ<EFBFBD>ֱ<EFBFBD><D6B1>ʷ<EFBFBD>Χ<EFBFBD><CEA7>
// <20><><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾ<EFBFBD><CABE><EFBFBD>õĺ<C3B5><C4BA><EFBFBD> <20>Լ<EFBFBD><D4BC><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFB3AC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ļ<EFBFBD><C4BB>ʾ<EFBFBD><CABE>Χ
zf_assert(x < 128);
zf_assert(y < 8);
zf_assert(128 > x);
zf_assert(8 > y);
zf_assert(num > 0);
zf_assert(num <= 10);
zf_assert(0 < num);
zf_assert(10 >= num);
int32 dat_temp = dat;
int32 offset = 1;
@@ -342,9 +346,10 @@ void oled_show_int (uint16 x, uint16 y, const int32 dat, uint8 num)
memset(data_buffer, 0, 12);
memset(data_buffer, ' ', num + 1);
if(num < 10)
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾ 123 <20><>ʾ 2 λ<><CEBB>Ӧ<EFBFBD><D3A6><EFBFBD><EFBFBD>ʾ 23
if(10 > num)
{
for(; num > 0; num --)
for(; 0 < num; num --)
{
offset *= 10;
}
@@ -369,11 +374,11 @@ void oled_show_uint (uint16 x,uint16 y,const uint32 dat,uint8 num)
// <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><>ôһ<C3B4><D2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ļ<EFBFBD><C4BB>ʾ<EFBFBD><CABE>ʱ<EFBFBD>򳬹<EFBFBD><F2B3ACB9><EFBFBD>Ļ<EFBFBD>ֱ<EFBFBD><D6B1>ʷ<EFBFBD>Χ<EFBFBD><CEA7>
// <20><><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾ<EFBFBD><CABE><EFBFBD>õĺ<C3B5><C4BA><EFBFBD> <20>Լ<EFBFBD><D4BC><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFB3AC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ļ<EFBFBD><C4BB>ʾ<EFBFBD><CABE>Χ
zf_assert(x < 128);
zf_assert(y < 8);
zf_assert(128 > x);
zf_assert(8 > y);
zf_assert(num > 0);
zf_assert(num <= 10);
zf_assert(0 < num);
zf_assert(10 >= num);
uint32 dat_temp = dat;
int32 offset = 1;
@@ -381,9 +386,9 @@ void oled_show_uint (uint16 x,uint16 y,const uint32 dat,uint8 num)
memset(data_buffer, 0, 12);
memset(data_buffer, ' ', num);
if(num < 10)
if(10 > num)
{
for(; num > 0; num --)
for(; 0 < num; num --)
{
offset *= 10;
}
@@ -412,13 +417,13 @@ void oled_show_float (uint16 x,uint16 y,const float dat,uint8 num,uint8 pointnum
// <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><>ôһ<C3B4><D2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ļ<EFBFBD><C4BB>ʾ<EFBFBD><CABE>ʱ<EFBFBD>򳬹<EFBFBD><F2B3ACB9><EFBFBD>Ļ<EFBFBD>ֱ<EFBFBD><D6B1>ʷ<EFBFBD>Χ<EFBFBD><CEA7>
// <20><><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾ<EFBFBD><CABE><EFBFBD>õĺ<C3B5><C4BA><EFBFBD> <20>Լ<EFBFBD><D4BC><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFB3AC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ļ<EFBFBD><C4BB>ʾ<EFBFBD><CABE>Χ
zf_assert(x < 128);
zf_assert(y < 8);
zf_assert(128 > x);
zf_assert(8 > y);
zf_assert(num > 0);
zf_assert(num <= 8);
zf_assert(pointnum > 0);
zf_assert(pointnum <= 6);
zf_assert(0 < num);
zf_assert(8 >= num);
zf_assert(0 < pointnum);
zf_assert(6 >= pointnum);
float dat_temp = dat;
float offset = 1.0;
@@ -426,14 +431,12 @@ void oled_show_float (uint16 x,uint16 y,const float dat,uint8 num,uint8 pointnum
memset(data_buffer, 0, 17);
memset(data_buffer, ' ', num + pointnum + 2);
if(num < 10)
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾ 123 <20><>ʾ 2 λ<><CEBB>Ӧ<EFBFBD><D3A6><EFBFBD><EFBFBD>ʾ 23
for(; 0 < num; num --)
{
for(; num > 0; num --)
{
offset *= 10;
}
dat_temp = dat_temp - ((int)dat_temp / (int)offset) * offset;
offset *= 10;
}
dat_temp = dat_temp - ((int)dat_temp / (int)offset) * offset;
func_float_to_str(data_buffer, dat_temp, pointnum);
oled_show_string(x, y, data_buffer);
}
@@ -456,12 +459,12 @@ void oled_show_binary_image (uint16 x, uint16 y, const uint8 *image, uint16 widt
// <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><>ôһ<C3B4><D2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ļ<EFBFBD><C4BB>ʾ<EFBFBD><CABE>ʱ<EFBFBD>򳬹<EFBFBD><F2B3ACB9><EFBFBD>Ļ<EFBFBD>ֱ<EFBFBD><D6B1>ʷ<EFBFBD>Χ<EFBFBD><CEA7>
// <20><><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾ<EFBFBD><CABE><EFBFBD>õĺ<C3B5><C4BA><EFBFBD> <20>Լ<EFBFBD><D4BC><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFB3AC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ļ<EFBFBD><C4BB>ʾ<EFBFBD><CABE>Χ
zf_assert(x < 128);
zf_assert(y < 8);
zf_assert(image != NULL);
zf_assert(128 > x);
zf_assert(8 > y);
zf_assert(NULL != image);
uint32 i = 0, j = 0, z = 0;
uint8 dat;
uint8 dat = 0;
uint32 width_index = 0, height_index = 0;
OLED_CS(0);
@@ -474,7 +477,7 @@ void oled_show_binary_image (uint16 x, uint16 y, const uint8 *image, uint16 widt
for(i = 0; i < dis_width; i += 8)
{
width_index = i * width / dis_width / 8;
for(z = 0; z < 8; z ++)
for(z = 0; 8 > z; z ++)
{
dat = 0;
if(*(image + height_index * width / 8 + width_index + width / 8 * 0) & (0x80 >> z))
@@ -535,12 +538,12 @@ void oled_show_gray_image (uint16 x, uint16 y, const uint8 *image, uint16 width,
// <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><>ôһ<C3B4><D2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ļ<EFBFBD><C4BB>ʾ<EFBFBD><CABE>ʱ<EFBFBD>򳬹<EFBFBD><F2B3ACB9><EFBFBD>Ļ<EFBFBD>ֱ<EFBFBD><D6B1>ʷ<EFBFBD>Χ<EFBFBD><CEA7>
// <20><><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾ<EFBFBD><CABE><EFBFBD>õĺ<C3B5><C4BA><EFBFBD> <20>Լ<EFBFBD><D4BC><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFB3AC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ļ<EFBFBD><C4BB>ʾ<EFBFBD><CABE>Χ
zf_assert(x < 128);
zf_assert(y < 8);
zf_assert(image != NULL);
zf_assert(128 > x);
zf_assert(8 > y);
zf_assert(NULL != image);
int16 i, j;
uint8 dat;
int16 i = 0, j = 0;
uint8 dat = 0;
uint32 width_index = 0, height_index = 0;
OLED_CS(0);
@@ -625,7 +628,9 @@ void oled_show_wave (uint16 x, uint16 y, const uint16 *wave, uint16 width, uint1
{
oled_set_coordinate(x + 0, (uint16)(y + y_temp / 8));
for(x_temp = 0; x_temp < dis_width; x_temp ++)
oled_write_data(0x00);
{
oled_write_data(0x00);
}
}
for(i = 0; i < dis_width; i ++)
{
@@ -656,11 +661,11 @@ void oled_show_chinese (uint16 x, uint16 y, uint8 size, const uint8 *chinese_buf
// <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><>ôһ<C3B4><D2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ļ<EFBFBD><C4BB>ʾ<EFBFBD><CABE>ʱ<EFBFBD>򳬹<EFBFBD><F2B3ACB9><EFBFBD>Ļ<EFBFBD>ֱ<EFBFBD><D6B1>ʷ<EFBFBD>Χ<EFBFBD><CEA7>
// <20><><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾ<EFBFBD><CABE><EFBFBD>õĺ<C3B5><C4BA><EFBFBD> <20>Լ<EFBFBD><D4BC><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFB3AC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ļ<EFBFBD><C4BB>ʾ<EFBFBD><CABE>Χ
zf_assert(x < 128);
zf_assert(y < 8);
zf_assert(chinese_buffer != NULL);
zf_assert(128 > x);
zf_assert(8 > y);
zf_assert(NULL != chinese_buffer);
int16 i, j, k;
int16 i = 0, j = 0, k = 0;
OLED_CS(0);
for(i = 0; i < number; i ++)
@@ -668,7 +673,7 @@ void oled_show_chinese (uint16 x, uint16 y, uint8 size, const uint8 *chinese_buf
for(j = 0; j < (size / 8); j ++)
{
oled_set_coordinate(x + i * size, y + j);
for(k = 0; k < 16; k ++)
for(k = 0; 16 > k; k ++)
{
oled_write_data(*chinese_buffer);
chinese_buffer ++;
@@ -697,53 +702,53 @@ void oled_init (void)
gpio_init(OLED_CS_PIN , GPO, GPIO_HIGH, GPO_PUSH_PULL);
oled_set_dir(oled_display_dir);
oled_debug_init();
OLED_CS(0);
OLED_RES(0);
system_delay_ms(50);
OLED_RES(1);
oled_write_command(0xae); // --turn off oled panel
oled_write_command(0x00); // ---set low column address
oled_write_command(0x10); // ---set high column address
oled_write_command(0x40); // --set start line address Set Mapping RAM Display Start Line (0x00~0x3F)
oled_write_command(0x81); // --set contrast control register
oled_write_command(OLED_BRIGHTNESS); // Set SEG Output Current Brightness
oled_write_command(0xae); // <EFBFBD>ر<EFBFBD>oled<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
oled_write_command(0x00); // <EFBFBD><EFBFBD><EFBFBD>õ<EFBFBD><EFBFBD>е<EFBFBD>ַ
oled_write_command(0x10); // <EFBFBD><EFBFBD><EFBFBD>ø<EFBFBD><EFBFBD>е<EFBFBD>ַ
oled_write_command(0x40); // --set start line address Set Mapping RAM Display Start Line (0x00~0x3F)
oled_write_command(0x81); // <EFBFBD><EFBFBD><EFBFBD>öԱȶȿ<EFBFBD><EFBFBD>ƼĴ<EFBFBD><EFBFBD><EFBFBD>
oled_write_command(OLED_BRIGHTNESS); // <EFBFBD><EFBFBD><EFBFBD><EFBFBD>SEG<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
if (oled_display_dir == OLED_CROSSWISE)
if(OLED_CROSSWISE == oled_display_dir)
{
oled_write_command(0xa1); // --Set SEG/Column Mapping 0xa0<61><30><EFBFBD>ҷ<EFBFBD><D2B7><EFBFBD> 0xa1<61><31><EFBFBD><EFBFBD>
oled_write_command(0xc8); // Set COM/Row Scan Direction 0xc0<63><30><EFBFBD>·<EFBFBD><C2B7><EFBFBD> 0xc8<63><38><EFBFBD><EFBFBD>
oled_write_command(0xa1); // <EFBFBD><EFBFBD><EFBFBD><EFBFBD> SEG/<2F><> ӳ<><D3B3> 0xa0<61><30><EFBFBD>ҷ<EFBFBD><D2B7><EFBFBD> 0xa1<61><31><EFBFBD><EFBFBD>
oled_write_command(0xc8); // <EFBFBD><EFBFBD><EFBFBD><EFBFBD> COM/<EFBFBD><EFBFBD>ɨ<EFBFBD><EFBFBD><EFBFBD> 0xc0<63><30><EFBFBD>·<EFBFBD><C2B7><EFBFBD> 0xc8<63><38><EFBFBD><EFBFBD>
}
else
{
oled_write_command(0xa0); // --Set SEG/Column Mapping 0xa0<61><30><EFBFBD>ҷ<EFBFBD><D2B7><EFBFBD> 0xa1<61><31><EFBFBD><EFBFBD>
oled_write_command(0xc0); // Set COM/Row Scan Direction 0xc0<63><30><EFBFBD>·<EFBFBD><C2B7><EFBFBD> 0xc8<63><38><EFBFBD><EFBFBD>
oled_write_command(0xa0); // <EFBFBD><EFBFBD><EFBFBD><EFBFBD> SEG/<2F><> ӳ<><D3B3> 0xa0<61><30><EFBFBD>ҷ<EFBFBD><D2B7><EFBFBD> 0xa1<61><31><EFBFBD><EFBFBD>
oled_write_command(0xc0); // <EFBFBD><EFBFBD><EFBFBD><EFBFBD> COM/<EFBFBD><EFBFBD>ɨ<EFBFBD><EFBFBD><EFBFBD> 0xc0<63><30><EFBFBD>·<EFBFBD><C2B7><EFBFBD> 0xc8<63><38><EFBFBD><EFBFBD>
}
oled_write_command(0xa6); // --set normal display
oled_write_command(0xa8); // --set multiplex ratio(1 to 64)
oled_write_command(0x3f); // --1/64 duty
oled_write_command(0xd3); // -set display offset Shift Mapping RAM Counter (0x00~0x3F)
oled_write_command(0x00); // -not offset
oled_write_command(0xd5); // --set display clock divide ratio/oscillator frequency
oled_write_command(0x80); // --set divide ratio, Set Clock as 100 Frames/Sec
oled_write_command(0xd9); // --set pre-charge period
oled_write_command(0xf1); // Set Pre-Charge as 15 Clocks & Discharge as 1 Clock
oled_write_command(0xda); // --set com pins hardware configuration
oled_write_command(0xa6); // <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾ
oled_write_command(0xa8); // <EFBFBD><EFBFBD><EFBFBD>ø<EFBFBD><EFBFBD>ñ<EFBFBD>(1 ~ 64)
oled_write_command(0x3f); // 1/64 ռ<EFBFBD><EFBFBD>
oled_write_command(0xd3); // <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾƫ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>λӳ<EFBFBD><EFBFBD>RAM<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>0x00~0x3F<EFBFBD><EFBFBD>
oled_write_command(0x00); // <EFBFBD><EFBFBD>ƫ<EFBFBD><EFBFBD>
oled_write_command(0xd5); // <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾʱ<EFBFBD>ӷ<EFBFBD>Ƶ<EFBFBD><EFBFBD>/<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƶ<EFBFBD><C6B5>
oled_write_command(0x80); // <EFBFBD><EFBFBD><EFBFBD>÷ָ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><EFBFBD>Ϊ100֡/<2F><>
oled_write_command(0xd9); // <EFBFBD>趨Ԥ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
oled_write_command(0xf1); // <EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ԥ<EFBFBD><EFBFBD>Ϊ15<EFBFBD><EFBFBD>ʱ<EFBFBD>ӣ<EFBFBD><EFBFBD>ŵ<EFBFBD>Ϊ1<EFBFBD><EFBFBD>ʱ<EFBFBD><EFBFBD>
oled_write_command(0xda); // <EFBFBD><EFBFBD><EFBFBD><EFBFBD>com<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ӳ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
oled_write_command(0x12);
oled_write_command(0xdb); // --set vcomh
oled_write_command(0x40); // Set VCOM Deselect Level
oled_write_command(0x20); // -Set Page Addressing Mode (0x00/0x01/0x02)
oled_write_command(0xdb); // <EFBFBD><EFBFBD><EFBFBD><EFBFBD> vcomh
oled_write_command(0x40); // <EFBFBD><EFBFBD><EFBFBD><EFBFBD>VCOMȡ<EFBFBD><EFBFBD>ѡ<EFBFBD>񼶱<EFBFBD>
oled_write_command(0x20); // <EFBFBD><EFBFBD><EFBFBD><EFBFBD>ҳ<EFBFBD><EFBFBD>Ѱַģʽ(0x00/0x01/0x02)
oled_write_command(0x02); //
oled_write_command(0x8d); // --set Charge Pump enable/disable
oled_write_command(0x14); // --set(0x10) disable
oled_write_command(0xa4); // Disable Entire Display On (0xa4/0xa5)
oled_write_command(0xa6); // Disable Inverse Display On (0xa6/a7)
oled_write_command(0xaf); // --turn on oled panel
oled_write_command(0x8d); // <EFBFBD><EFBFBD><EFBFBD>ó<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>/<2F><><EFBFBD><EFBFBD>
oled_write_command(0x14); // <EFBFBD><EFBFBD><EFBFBD><EFBFBD>(0 x10)<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
oled_write_command(0xa4); // <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>(0xa4/0xa5)
oled_write_command(0xa6); // <EFBFBD><EFBFBD><EFBFBD>÷<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾ(0xa6/a7)
oled_write_command(0xaf); // <EFBFBD><EFBFBD><EFBFBD><EFBFBD>oled<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
OLED_CS(1);
oled_clear(); // <20><>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD>
oled_set_coordinate(0, 0);
oled_set_coordinate(0, 0); // OLED<45><44>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
oled_debug_init(); // OLED<45><44>ʾDEBUG<55><47>Ϣ<EFBFBD><CFA2>ʼ<EFBFBD><CABC>
}

View File

@@ -31,6 +31,7 @@
* <20>޸ļ<DEB8>¼
* <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><>ע
* 2022-09-15 pudding first version
* 2023-04-28 pudding <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ע<EFBFBD><D7A2>˵<EFBFBD><CBB5>
********************************************************************************************************************/
/*********************************************************************************************************************
* <20><><EFBFBD>߶<EFBFBD><DFB6>
@@ -51,6 +52,7 @@
#include "zf_device_type.h"
//===================================================<3D><><EFBFBD><EFBFBD> OLED <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>=================================================
#define OLED_USE_SOFT_SPI (0 ) // Ĭ<><C4AC>ʹ<EFBFBD><CAB9>Ӳ<EFBFBD><D3B2> SPI <20><>ʽ<EFBFBD><CABD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>ʹ<EFBFBD><CAB9>Ӳ<EFBFBD><D3B2> SPI <20><>ʽ<EFBFBD><CABD><EFBFBD><EFBFBD>
#if OLED_USE_SOFT_SPI // <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> SPI <20><><EFBFBD><EFBFBD>====================================================
@@ -72,18 +74,19 @@
#define OLED_RES_PIN (P15_1) // Һ<><D2BA><EFBFBD><EFBFBD>λ<EFBFBD><CEBB><EFBFBD>Ŷ<EFBFBD><C5B6><EFBFBD>
#define OLED_DC_PIN (P15_0 ) // Һ<><D2BA><EFBFBD><EFBFBD><EFBFBD><EFBFBD>λ<EFBFBD><CEBB><EFBFBD>Ŷ<EFBFBD><C5B6><EFBFBD>
#define OLED_CS_PIN (P15_2 ) // CS Ƭѡ<C6AC><D1A1><EFBFBD><EFBFBD>
#define OLED_BRIGHTNESS (0x7f) // <20><><EFBFBD><EFBFBD>OLED<45><44><EFBFBD><EFBFBD> Խ<><D4BD>Խ<EFBFBD><D4BD> <20><>Χ0-0XFF
#define OLED_DEFAULT_DISPLAY_DIR (OLED_CROSSWISE) // Ĭ<>ϵ<EFBFBD><CFB5><EFBFBD>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD>
#define OLED_DEFAULT_DISPLAY_FONT (OLED_6X8_FONT ) // Ĭ<>ϵ<EFBFBD><CFB5><EFBFBD><EFBFBD><EFBFBD>ģʽ
#define OLED_X_MAX (128) // <20><>ĻX<C4BB><58><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ
#define OLED_Y_MAX (64 ) // <20><>ĻY<C4BB><59><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ
#define OLED_RES(x) ((x) ? (gpio_high(OLED_RES_PIN)) : (gpio_low(OLED_RES_PIN)))
#define OLED_DC(x) ((x) ? (gpio_high(OLED_DC_PIN)) : (gpio_low(OLED_DC_PIN)))
#define OLED_CS(x) ((x) ? (gpio_high(OLED_CS_PIN)) : (gpio_low(OLED_CS_PIN)))
//===================================================<3D><><EFBFBD><EFBFBD> OLED <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>=================================================
#define OLED_BRIGHTNESS (0x7f) // <20><><EFBFBD><EFBFBD>OLED<45><44><EFBFBD><EFBFBD> Խ<><D4BD>Խ<EFBFBD><D4BD> <20><>Χ0-0XFF
#define OLED_DEFAULT_DISPLAY_DIR (OLED_CROSSWISE) // Ĭ<>ϵ<EFBFBD><CFB5><EFBFBD>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD>
#define OLED_DEFAULT_DISPLAY_FONT (OLED_6X8_FONT ) // Ĭ<>ϵ<EFBFBD><CFB5><EFBFBD><EFBFBD><EFBFBD>ģʽ
#define OLED_X_MAX (128)
#define OLED_Y_MAX (64 )
//=================================================<3D><><EFBFBD><EFBFBD> OLED <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E1B9B9>===============================================
//===================================================<EFBFBD><EFBFBD><EFBFBD><EFBFBD> OLED <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E1B9B9>=================================================
typedef enum
{
OLED_CROSSWISE = 0, // <20><><EFBFBD><EFBFBD>ģʽ
@@ -96,66 +99,50 @@ typedef enum
OLED_8X16_FONT = 1, // 8x16 <20><><EFBFBD><EFBFBD>
OLED_16X16_FONT = 2, // 16x16 <20><><EFBFBD><EFBFBD> Ŀǰ<C4BF><C7B0>֧<EFBFBD><D6A7>
}oled_font_size_enum;
//=================================================<3D><><EFBFBD><EFBFBD> OLED <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>===============================================
//===================================================<EFBFBD><EFBFBD><EFBFBD><EFBFBD> OLED <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>=================================================
//===================================================OLED <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>==================================================
void oled_clear (void);
void oled_full (const uint8 color);
void oled_set_dir (oled_dir_enum dir);
void oled_set_font (oled_font_size_enum font);
void oled_draw_point (uint16 x, uint16 y, const uint8 color);
void oled_show_string (uint16 x, uint16 y, const char ch[]);
void oled_show_int (uint16 x, uint16 y, const int32 dat, uint8 num);
void oled_show_uint (uint16 x, uint16 y, const uint32 dat, uint8 num);
void oled_show_float (uint16 x, uint16 y, const float dat, uint8 num, uint8 pointnum);
//===================================================<3D><><EFBFBD><EFBFBD> OLED <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>=================================================
void oled_clear (void); // OLED <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
void oled_full (const uint8 color); // OLED <20><>Ļ<EFBFBD><C4BB><EFBFBD><EFBFBD><E4BAAF>
void oled_set_dir (oled_dir_enum dir); // OLED <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD>
void oled_set_font (oled_font_size_enum font); // OLED <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD>
void oled_draw_point (uint16 x, uint16 y, const uint8 color); // OLED <20><><EFBFBD><EFBFBD><E3BAAF>
void oled_show_binary_image (uint16 x, uint16 y, const uint8 *image, uint16 width, uint16 height, uint16 dis_width, uint16 dis_height);
void oled_show_gray_image (uint16 x, uint16 y, const uint8 *image, uint16 width, uint16 height, uint16 dis_width, uint16 dis_height, uint8 threshold);
void oled_show_string (uint16 x, uint16 y, const char ch[]); // OLED <20><>ʾ<EFBFBD>ַ<EFBFBD><D6B7><EFBFBD>
void oled_show_int (uint16 x, uint16 y, const int32 dat, uint8 num); // OLED <20><>ʾ32λ<32>з<EFBFBD><D0B7><EFBFBD><><C8A5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ч<EFBFBD><D0A7>0)
void oled_show_uint (uint16 x, uint16 y, const uint32 dat, uint8 num); // OLED <20><>ʾ32λ<32>޷<EFBFBD><DEB7><EFBFBD><><C8A5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ч<EFBFBD><D0A7>0)
void oled_show_float (uint16 x, uint16 y, const float dat, uint8 num, uint8 pointnum); // OLED <20><>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD><EFBFBD><EFBFBD><><C8A5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ч<EFBFBD><D0A7>0)
void oled_show_wave (uint16 x, uint16 y, const uint16 *image, uint16 width, uint16 value_max, uint16 dis_width, uint16 dis_value_max);
void oled_show_chinese (uint16 x, uint16 y, uint8 size, const uint8 *chinese_buffer, uint8 number);
void oled_init (void);
//===================================================OLED <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>==================================================
void oled_show_binary_image (uint16 x, uint16 y, const uint8 *image, uint16 width, uint16 height, uint16 dis_width, uint16 dis_height); // OLED <20><>ʾ<EFBFBD><CABE>ֵͼ<D6B5><CDBC> <20><><EFBFBD><EFBFBD>ÿ<EFBFBD>˸<EFBFBD><CBB8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD>ֽ<EFBFBD><D6BD><EFBFBD><EFBFBD><EFBFBD>
void oled_show_gray_image (uint16 x, uint16 y, const uint8 *image, uint16 width, uint16 height, uint16 dis_width, uint16 dis_height, uint8 threshold); // OLED <20><>ʾ 8bit <20>Ҷ<EFBFBD>ͼ<EFBFBD><CDBC> <20><><EFBFBD><EFBFBD>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD>ֵ
//===================================================OLED <20><>չ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>==================================================
void oled_show_wave (uint16 x, uint16 y, const uint16 *image, uint16 width, uint16 value_max, uint16 dis_width, uint16 dis_value_max); // OLED <20><>ʾ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
void oled_show_chinese (uint16 x, uint16 y, uint8 size, const uint8 *chinese_buffer, uint8 number); // OLED <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾ
void oled_init (void); // OLED <20><>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
//===================================================<3D><><EFBFBD><EFBFBD> OLED <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>=================================================
//===================================================<3D><><EFBFBD><EFBFBD> OLED <20><>չ<EFBFBD><D5B9><EFBFBD><EFBFBD>=================================================
//-------------------------------------------------------------------------------------------------------------------
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> OLED <20><>ʾС<CABE><D0A1><EFBFBD><EFBFBD>ͼ<EFBFBD><CDBC>
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> p ͼ<><CDBC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ָ<EFBFBD><EFBFBD>
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> width ͼ<><CDBC>ʵ<EFBFBD>ʿ<EFBFBD><CABF><EFBFBD>
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> height ͼ<><CDBC>ʵ<EFBFBD>ʸ߶<CAB8>
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> OLED 128*64 <EFBFBD><EFBFBD>ʾС<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͼ<EFBFBD><EFBFBD>
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> p ͼ<><CDBC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// <20><><EFBFBD>ز<EFBFBD><D8B2><EFBFBD> void
// ʹ<><CAB9>ʾ<EFBFBD><CABE> oled_displayimage7725(ov7725_image_binary[0], OV7725_W, OV7725_H);
// <20><>ע<EFBFBD><D7A2>Ϣ <EFBFBD><EFBFBD>չ<EFBFBD><EFBFBD>һ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ĭ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>64x128<EFBFBD><EFBFBD>ʾ
// ʹ<><CAB9>ʾ<EFBFBD><CABE> oled_displayimage7725(ov7725_image_binary[0]);
// <20><>ע<EFBFBD><D7A2>Ϣ
//-------------------------------------------------------------------------------------------------------------------
#define oled_displayimage7725(p,width,height) (oled_show_binary_image(0, 0, (p), (width), (height), 128, 64))
//-------------------------------------------------------------------------------------------------------------------
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> OLED <20><>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͼ<EFBFBD><CDBC>
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> p ͼ<><CDBC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ָ<EFBFBD><D6B8>
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> width ͼ<><CDBC>ʵ<EFBFBD>ʿ<EFBFBD><CABF><EFBFBD>
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> height ͼ<><CDBC>ʵ<EFBFBD>ʸ߶<CAB8>
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> x <20>Աȶȣ<C8B6>OLED<45><44>Ļ<EFBFBD>޷<EFBFBD><DEB7><EFBFBD>ʾ<EFBFBD>Ҷȣ<D2B6><C8A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD>
// <20><><EFBFBD>ز<EFBFBD><D8B2><EFBFBD> void
// ʹ<><CAB9>ʾ<EFBFBD><CABE> oled_displayimage03x(mt9v03x_image[0], MT9V03X_W, MT9V03X_H, 100);
// <20><>ע<EFBFBD><D7A2>Ϣ <20><>չ<EFBFBD><D5B9>һ<EFBFBD><D2BB><EFBFBD><EFBFBD>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ĭ<EFBFBD><C4AC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>64x128<32><38>ʾ
//-------------------------------------------------------------------------------------------------------------------
#define oled_displayimage03x(p,width,height,x) (oled_show_gray_image(0, 0, (p), (width), (height), 128, 64, (x)))
//-------------------------------------------------------------------------------------------------------------------
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> OLED <20><>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͼ<EFBFBD><CDBC>
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> p ͼ<><CDBC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ָ<EFBFBD><D6B8>
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> width ͼ<><CDBC>ʵ<EFBFBD>ʿ<EFBFBD><CABF><EFBFBD>
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> height ͼ<><CDBC>ʵ<EFBFBD>ʸ߶<CAB8>
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> dis_width ͼ<><CDBC><EFBFBD><EFBFBD><EFBFBD>ſ<EFBFBD><C5BF><EFBFBD>
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> dis_height ͼ<><CDBC><EFBFBD><EFBFBD><EFBFBD>Ÿ߶<C5B8>
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> x <20>Աȶȣ<C8B6>OLED<45><44>Ļ<EFBFBD>޷<EFBFBD><DEB7><EFBFBD>ʾ<EFBFBD>Ҷȣ<D2B6><C8A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD>
// <20><><EFBFBD>ز<EFBFBD><D8B2><EFBFBD> void
// ʹ<><CAB9>ʾ<EFBFBD><CABE> oled_displayimage03x_zoom(mt9v03x_image[0], 78, 50, 100);
// <20><>ע<EFBFBD><D7A2>Ϣ <20><>չ<EFBFBD><D5B9>һ<EFBFBD><D2BB><EFBFBD><EFBFBD>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>û<EFBFBD><C3BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Զ<EFBFBD><D4B6><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ź<EFBFBD><C5BA><EFBFBD>ʾ<EFBFBD><CABE>ͼ<EFBFBD><CDBC><EFBFBD><EFBFBD>С
//-------------------------------------------------------------------------------------------------------------------
#define oled_displayimage03x_zoom(p,width,height,dis_width,dis_height,x) (oled_show_gray_image(0, 0, (p), (width), (height), (dis_width,) (dis_height), (x)))
//===================================================OLED <20><>չ<EFBFBD><D5B9><EFBFBD><EFBFBD>==================================================
#define oled_displayimage7725(p) (oled_show_binary_image(0, 0, (p), OV7725_W, OV7725_H, 128, 64))
//-------------------------------------------------------------------------------------------------------------------
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> OLED 128*64 <20><>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͼ<EFBFBD><CDBC> <20><><EFBFBD><EFBFBD>ֵ<EFBFBD><D6B5>
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> p ͼ<><CDBC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> x <20><>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD>ʾ<EFBFBD><CABE>ֵ
// <20><><EFBFBD>ز<EFBFBD><D8B2><EFBFBD> void
// ʹ<><CAB9>ʾ<EFBFBD><CABE> oled_displayimage03x(mt9v03x_image[0], 127);
// <20><>ע<EFBFBD><D7A2>Ϣ
//-------------------------------------------------------------------------------------------------------------------
#define oled_displayimage03x(p,x) (oled_show_gray_image(0, 0, (p), MT9V03X_W, MT9V03X_H, 128, 64, (x)))
//===================================================<3D><><EFBFBD><EFBFBD> OLED <20><>չ<EFBFBD><D5B9><EFBFBD><EFBFBD>=================================================
#endif

View File

@@ -101,12 +101,12 @@ static uint8 ov7725_set_config (uint16 buff[OV7725_CONFIG_FINISH][2])
{
uint8 return_state = 1;
uint8 uart_buffer[4];
uint16 temp;
uint16 temp = 0;
uint16 timeout_count = 0;
uint32 loop_count = 0;
uint32 uart_buffer_index = 0;
for(loop_count = OV7725_ROW; loop_count < OV7725_SET_DATA; loop_count --)
for(loop_count = OV7725_ROW; OV7725_SET_DATA > loop_count; loop_count --)
{
uart_buffer[0] = 0xA5;
uart_buffer[1] = (uint8)buff[loop_count][0];
@@ -149,12 +149,12 @@ static uint8 ov7725_get_config (uint16 buff[OV7725_CONFIG_FINISH - 1][2])
{
uint8 return_state = 0;
uint8 uart_buffer[4];
uint16 temp;
uint16 temp = 0;
uint16 timeout_count = 0;
uint32 loop_count = 0;
uint32 uart_buffer_index = 0;
for(loop_count = OV7725_ROW - 1; loop_count >= 1; loop_count --)
for(loop_count = OV7725_ROW - 1; 1 <= loop_count; loop_count --)
{
uart_buffer[0] = 0xA5;
uart_buffer[1] = OV7725_GET_STATUS;
@@ -178,7 +178,7 @@ static uint8 ov7725_get_config (uint16 buff[OV7725_CONFIG_FINISH - 1][2])
}
system_delay_ms(1);
}while(OV7725_INIT_TIMEOUT > timeout_count ++);
if(timeout_count > OV7725_INIT_TIMEOUT) // <20><>ʱ
if(OV7725_INIT_TIMEOUT < timeout_count) // <20><>ʱ
{
return_state = 1;
break;
@@ -210,7 +210,7 @@ static uint8 ov7725_iic_init (void)
do
{
ov7725_idcode = soft_iic_sccb_read_register(&ov7725_iic_struct, OV7725_VER);
if( ov7725_idcode != OV7725_ID )
if(OV7725_ID != ov7725_idcode)
{
return_state = 1; // У<><D0A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͷID<49><44>
break;
@@ -312,7 +312,7 @@ static uint8 ov7725_iic_init (void)
// <20><><EFBFBD>ز<EFBFBD><D8B2><EFBFBD> void
// ʹ<><CAB9>ʾ<EFBFBD><CABE> ov7725_uart_callback();
//-------------------------------------------------------------------------------------------------------------------
static void ov7725_uart_callback (void)
static void ov7725_uart_handler (void)
{
uint8 data = 0;
uart_query_byte(OV7725_COF_UART, &data);
@@ -394,7 +394,7 @@ static void ov7725_dma_handler(void)
//-------------------------------------------------------------------------------------------------------------------
uint16 ov7725_uart_get_id (void)
{
uint16 temp;
uint16 temp = 0;
uint8 uart_buffer[4];
uint16 timeout_count = 0;
uint16 return_value = 0;
@@ -433,7 +433,7 @@ uint16 ov7725_uart_get_id (void)
//-------------------------------------------------------------------------------------------------------------------
uint16 ov7725_get_version (void)
{
uint16 temp;
uint16 temp = 0;
uint8 uart_buffer[4];
uint16 timeout_count = 0;
uint16 return_value = 0;
@@ -470,72 +470,78 @@ uint16 ov7725_get_version (void)
//-------------------------------------------------------------------------------------------------------------------
uint8 ov7725_init (void)
{
uint8 num = 0;
uint16 out_time = 0;
uint8 return_state = 0;
gpio_init(OV7725_VSYNC_PORT_PIN, GPI, GPIO_LOW, GPI_FLOATING_IN);
while(!num)
do
{
num = gpio_get_level(OV7725_VSYNC_PORT_PIN);
system_delay_ms(1);
}
while(0 == gpio_get_level(OV7725_VSYNC_PORT_PIN))
{
system_delay_ms(1);
out_time ++;
if(OV7725_INIT_TIMEOUT < out_time)
{
// <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><C7B4><EFBFBD><EFBFBD><EFBFBD>û<EFBFBD><C3BB><EFBFBD><EFBFBD>ȷ<EFBFBD><C8B7><EFBFBD><EFBFBD>С<EFBFBD><D0A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͷ
// <20><><EFBFBD><EFBFBD>һ<EFBFBD>½<EFBFBD><C2BD>ߺ͹<DFBA><CDB9><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, "OV7725 check error.");
return_state = 1;
break;
}
}
set_camera_type(CAMERA_BIN_UART, ov7725_vsync_handler, ov7725_dma_handler, ov7725_uart_handler);
camera_fifo_init();
if(0 == return_state)
{
uart_init(OV7725_COF_UART, OV7725_COF_BAUR, OV7725_COF_UART_RX, OV7725_COF_UART_TX);
uart_rx_interrupt(OV7725_COF_UART, 1);
system_delay_ms(200);
set_camera_type(CAMERA_BIN_UART, ov7725_vsync_handler, ov7725_dma_handler, ov7725_uart_callback); // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͷ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
camera_fifo_init();
do
// <20><>ȡ<EFBFBD><EFBFBD><EFBFBD>в<EFBFBD><EFBFBD><EFBFBD>
if(ov7725_get_config(ov7725_get_confing_buffer))
{
uart_rx_interrupt(OV7725_COF_UART, 0);
system_delay_ms(200);
set_camera_type(CAMERA_BIN_IIC, ov7725_vsync_handler, ov7725_dma_handler, ov7725_uart_handler); // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͷ<EFBFBD><CDB7><EFBFBD><EFBFBD>
if(ov7725_iic_init())
{
zf_log(0, "OV7725 IIC error.");
set_camera_type(NO_CAMERE, NULL, NULL, NULL);
return_state = 1;
zf_log(0, "ov7725 set config error.");
break;
}
}
else
{
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>в<EFBFBD><D0B2><EFBFBD>
if(ov7725_set_config(ov7725_set_confing_buffer))
{
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>˶<EFBFBD><CBB6><EFBFBD><EFBFBD><EFBFBD>Ϣ <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD>λ<EFBFBD><CEBB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// <20><>ô<EFBFBD><C3B4><EFBFBD>Ǵ<EFBFBD><C7B4><EFBFBD>ͨ<EFBFBD>ų<EFBFBD><C5B3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD>˳<EFBFBD><CBB3><EFBFBD>
// <20><><EFBFBD><EFBFBD>һ<EFBFBD>½<EFBFBD><C2BD><EFBFBD><EFBFBD><EFBFBD>û<EFBFBD><C3BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>û<EFBFBD><C3BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ܾ<EFBFBD><DCBE>ǻ<EFBFBD><C7BB><EFBFBD>
zf_log(0, "OV7725 set confing error.");
uart_rx_interrupt(OV7725_COF_UART, 0);
set_camera_type(NO_CAMERE, NULL, NULL, NULL);
return_state = 1;
break;
}
// <20><>ȡ<EFBFBD><C8A1><EFBFBD>в<EFBFBD><D0B2><EFBFBD>
if(ov7725_get_config(ov7725_get_confing_buffer))
{
set_camera_type(CAMERA_BIN_IIC, ov7725_vsync_handler, ov7725_dma_handler, ov7725_uart_callback); // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͷ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
if(ov7725_iic_init())
{
set_camera_type(NO_CAMERE, NULL, NULL, NULL);
return_state = 1;
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>˶<EFBFBD><CBB6><EFBFBD><EFBFBD><EFBFBD>Ϣ <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD>λ<EFBFBD><CEBB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// <20><>ô<EFBFBD><C3B4><EFBFBD><EFBFBD> IIC <20><><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, "ov7725 set config error.");
break;
}
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>˶<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD>λ<EFBFBD><CEBB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// <20><>ô<EFBFBD><C3B4><EFBFBD>Ǵ<EFBFBD><C7B4><EFBFBD>ͨ<EFBFBD>ų<EFBFBD><C5B3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD>˳<EFBFBD><CBB3><EFBFBD>
// <20><><EFBFBD><EFBFBD>һ<EFBFBD>½<EFBFBD><C2BD><EFBFBD><EFBFBD><EFBFBD>û<EFBFBD><C3BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>û<EFBFBD><C3BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ܾ<EFBFBD><DCBE>ǻ<EFBFBD><C7BB><EFBFBD>
zf_log(0, "OV7725 get confing error.");
uart_rx_interrupt(OV7725_COF_UART, 0);
set_camera_type(NO_CAMERE, NULL, NULL, NULL);
return_state = 1;
break;
}
else
{
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>в<EFBFBD><D0B2><EFBFBD>
if(ov7725_set_config(ov7725_set_confing_buffer))
{
set_camera_type(NO_CAMERE, NULL, NULL, NULL);
return_state = 1;
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>˶<EFBFBD><CBB6><EFBFBD><EFBFBD><EFBFBD>Ϣ <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD>λ<EFBFBD><CEBB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// <20><>ô<EFBFBD><C3B4><EFBFBD>Ǵ<EFBFBD><C7B4><EFBFBD>ͨ<EFBFBD>ų<EFBFBD><C5B3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD>˳<EFBFBD><CBB3><EFBFBD>
// <20><><EFBFBD><EFBFBD>һ<EFBFBD>½<EFBFBD><C2BD><EFBFBD><EFBFBD><EFBFBD>û<EFBFBD><C3BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>û<EFBFBD><C3BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ܾ<EFBFBD><DCBE>ǻ<EFBFBD><C7BB><EFBFBD>
zf_log(0, "ov7725 set config error.");
break;
}
// <20><>ȡ<EFBFBD><C8A1><EFBFBD>в<EFBFBD><D0B2><EFBFBD>
if(ov7725_get_config(ov7725_get_confing_buffer))
{
set_camera_type(NO_CAMERE, NULL, NULL, NULL);
return_state = 1;
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>˶<EFBFBD><CBB6><EFBFBD><EFBFBD><EFBFBD>Ϣ <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD>λ<EFBFBD><CEBB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// <20><>ô<EFBFBD><C3B4><EFBFBD>Ǵ<EFBFBD><C7B4><EFBFBD>ͨ<EFBFBD>ų<EFBFBD><C5B3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD>˳<EFBFBD><CBB3><EFBFBD>
// <20><><EFBFBD><EFBFBD>һ<EFBFBD>½<EFBFBD><C2BD><EFBFBD><EFBFBD><EFBFBD>û<EFBFBD><C3BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>û<EFBFBD><C3BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ܾ<EFBFBD><DCBE>ǻ<EFBFBD><C7BB><EFBFBD>
zf_log(0, "ov7725 set config error.");
break;
}
}
ov7725_link_list_num = camera_init(OV7725_DATA_ADD, ov7725_image_binary[0], OV7725_IMAGE_SIZE);
}while(0);
}
}
ov7725_link_list_num = camera_init(OV7725_DATA_ADD, ov7725_image_binary[0], OV7725_IMAGE_SIZE);
}while(0);
return return_state;
}

View File

@@ -31,6 +31,7 @@
* <20>޸ļ<DEB8>¼
* <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><>ע
* 2022-09-15 pudding first version
* 2023-04-28 pudding <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ע<EFBFBD><D7A2>˵<EFBFBD><CBB5>
********************************************************************************************************************/
/*********************************************************************************************************************
* <20><><EFBFBD>߶<EFBFBD><DFB6>
@@ -52,7 +53,7 @@
#include "zf_device_type.h"
//=================================================OV7725 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>====================================================
//================================================<EFBFBD><EFBFBD><EFBFBD><EFBFBD> OV7725 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>================================================
#define OV7725_COF_UART (UART_1) // С<><D0A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ô<EFBFBD><C3B4><EFBFBD>
#define OV7725_COF_BAUR (9600) // С<><D0A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ô<EFBFBD><C3B4>ڲ<EFBFBD><DAB2><EFBFBD><EFBFBD><EFBFBD>
#define OV7725_COF_UART_TX (UART1_RX_P02_3) // С<><D0A1><EFBFBD><EFBFBD> UART-TX <20><><EFBFBD><EFBFBD> Ҫ<><D2AA><EFBFBD>ڵ<EFBFBD>Ƭ<EFBFBD><C6AC> RX <20><>
@@ -73,18 +74,20 @@
#define OV7725_DATA_ADD get_port_in_addr(OV7725_DATA_PIN)
#define OV7725_INIT_TIMEOUT (0x0080) // Ĭ<>ϵ<EFBFBD><CFB5><EFBFBD><EFBFBD><EFBFBD>ͷ<EFBFBD><CDB7>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD>ʱʱ<CAB1><CAB1> <20><><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA>λ
//=================================================OV7725 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>====================================================
//================================================<EFBFBD><EFBFBD><EFBFBD><EFBFBD> OV7725 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>================================================
//=================================================OV7725 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>====================================================
//================================================<3D><><EFBFBD><EFBFBD> OV7725 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>================================================
#define OV7725_W (160) // ͼ<><CDBC><EFBFBD><EFBFBD><EFBFBD><EFBFBD> 80/160/240/320
#define OV7725_H (120) // ͼ<><CDBC><EFBFBD>߶<EFBFBD> 60/120/180/240
#define OV7725_IMAGE_SIZE (OV7725_W * OV7725_H / 8) // <20><><EFBFBD><EFBFBD>ͼ<EFBFBD><CDBC><EFBFBD><EFBFBD>С OV7725_IMAGE_SIZE <20><><EFBFBD>ܳ<EFBFBD><DCB3><EFBFBD> 65535
#define OV7725_CONTRAST_DEF (0x30) // <20><>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>ͷ<EFBFBD><CDB7>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD>ֵ <20><><EFBFBD><EFBFBD><EFBFBD>͹<EFBFBD>С<EFBFBD><D0A1><EFBFBD><EFBFBD>ֵ<EFBFBD><EFBFBD><E1B1BB><EFBFBD><EFBFBD>ͷ<EFBFBD>Զ<EFBFBD><D4B6><EFBFBD><EFBFBD><EFBFBD>
#define OV7725_FPS_DEF (50 ) // ֡<><D6A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> 150 ֡ <20><><EFBFBD><EFBFBD>С<EFBFBD>ֱ<EFBFBD><D6B1>ʲ<EFBFBD><CAB2>ܴﵽ<DCB4><EFB5BD><EFBFBD><EFBFBD>֡<EFBFBD><D6A1>
//=================================================OV7725 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>====================================================
//================================================<EFBFBD><EFBFBD><EFBFBD><EFBFBD> OV7725 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>================================================
//==========================================IIC <20>С<E6B1BE><D0A1><EFBFBD><EFBFBD><EFBFBD>Ĵ<EFBFBD><C4B4><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>ֲ<EFBFBD><D6B2><EFBFBD><EFBFBD><EFBFBD><EFBFBD>û<EFBFBD><C3BB><EFBFBD><EFBFBD><EFBFBD>============================================
//==============================================<3D><><EFBFBD><EFBFBD> OV7725 IIC <20>ڲ<EFBFBD><DAB2><EFBFBD>ַ==============================================
#define OV7725_ID (0x21) // <20><><EFBFBD><EFBFBD>ͷID<49><44>
#define OV7725_GAIN (0x00) // <20><><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA><EFBFBD><EFBFBD>ͷ<EFBFBD>Ĵ<EFBFBD><C4B4><EFBFBD>
#define OV7725_BLUE (0x01)
@@ -235,9 +238,10 @@
#define OV7725_SIGN (0xAB)
#define OV7725_DSPAuto (0xAC)
#define OV7725_DEV_ADD (0x42 >> 1)
//==========================================IIC <20>С<E6B1BE><D0A1><EFBFBD><EFBFBD><EFBFBD>Ĵ<EFBFBD><C4B4><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>ֲ<EFBFBD><D6B2><EFBFBD><EFBFBD><EFBFBD><EFBFBD>û<EFBFBD><C3BB><EFBFBD><EFBFBD><EFBFBD>============================================
//==============================================<3D><><EFBFBD><EFBFBD> OV7725 IIC <20>ڲ<EFBFBD><DAB2><EFBFBD>ַ==============================================
//==============================================<3D><><EFBFBD><EFBFBD> OV7725 <20><><EFBFBD><EFBFBD>ö<EFBFBD><C3B6><EFBFBD><EFBFBD>==================================================
//===============================================<3D><><EFBFBD><EFBFBD> OV7725 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E1B9B9>================================================
typedef enum
{
OV7725_INIT = 0x00,
@@ -255,18 +259,20 @@ typedef enum
OV7725_SET_ADDR = 0xFE,
OV7725_SET_DATA = 0xFF,
}ov7725_cmd_enum;
//==============================================<3D><><EFBFBD><EFBFBD> OV7725 <20><><EFBFBD><EFBFBD>ö<EFBFBD><EFBFBD><EFBFBD><EFBFBD>==================================================
//===============================================<EFBFBD><EFBFBD><EFBFBD><EFBFBD> OV7725 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>================================================
//==============================================<3D><><EFBFBD><EFBFBD> OV7725 <20><><EFBFBD>ݴ洢<DDB4><E6B4A2><EFBFBD><EFBFBD>=================================================
//===============================================<3D><><EFBFBD><EFBFBD> OV7725 ȫ<>ֱ<EFBFBD><D6B1><EFBFBD>=================================================
extern vuint8 ov7725_finish_flag; // һ<><D2BB>ͼ<EFBFBD><CDBC><EFBFBD>ɼ<EFBFBD><C9BC><EFBFBD><EFBFBD>ɱ<EFBFBD>־λ
extern uint8 ov7725_image_binary[OV7725_H][OV7725_W / 8]; // ͼ<>񱣴<EFBFBD><F1B1A3B4><EFBFBD><EFBFBD><EFBFBD>
//==============================================<3D><><EFBFBD><EFBFBD> OV7725 <EFBFBD><EFBFBD><EFBFBD>ݴ洢<EFBFBD><EFBFBD><EFBFBD><EFBFBD>=================================================
//===============================================<EFBFBD><EFBFBD><EFBFBD><EFBFBD> OV7725 ȫ<EFBFBD>ֱ<EFBFBD><EFBFBD><EFBFBD>=================================================
//=================================================OV7725 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>===================================================
//===============================================<3D><><EFBFBD><EFBFBD> OV7725 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>=================================================
uint16 ov7725_uart_get_id (void); // <20><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD>ͷ<EFBFBD>̼<EFBFBD> ID
uint16 ov7725_get_version (void); // <20><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD>ͷ<EFBFBD>̼<EFBFBD><CCBC>
uint8 ov7725_init (void); // OV7725 <20><><EFBFBD><EFBFBD>ͷ<EFBFBD><CDB7>ʼ<EFBFBD><CABC>
//=================================================OV7725 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>===================================================
//===============================================<EFBFBD><EFBFBD><EFBFBD><EFBFBD> OV7725 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>=================================================
#endif

View File

@@ -31,6 +31,7 @@
* <20>޸ļ<DEB8>¼
* <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><>ע
* 2022-09-15 pudding first version
* 2023-04-28 pudding <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ע<EFBFBD><D7A2>˵<EFBFBD><CBB5>
********************************************************************************************************************/
/*********************************************************************************************************************
* <20><><EFBFBD>߶<EFBFBD><DFB6>
@@ -52,7 +53,7 @@
#include "zf_device_type.h"
//=================================================SCC8660 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>====================================================
//================================================<EFBFBD><EFBFBD><EFBFBD><EFBFBD> SCC8660 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>================================================
#define SCC8660_COF_UART (UART_1) // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͷ<EFBFBD><CDB7>ʹ<EFBFBD>õ<EFBFBD><C3B5>Ĵ<EFBFBD><C4B4><EFBFBD>
#define SCC8660_COF_BAUR (9600 ) // <20><>ͫ <20><><EFBFBD>ô<EFBFBD><C3B4>ڲ<EFBFBD><DAB2><EFBFBD><EFBFBD><EFBFBD>
#define SCC8660_COF_UART_TX (UART1_RX_P02_3) // <20><>ͫ UART-TX <20><><EFBFBD><EFBFBD> Ҫ<><D2AA><EFBFBD>ڵ<EFBFBD>Ƭ<EFBFBD><C6AC> RX <20><>
@@ -68,9 +69,9 @@
#define SCC8660_DATA_ADD (get_port_in_addr(SCC8660_DATA_PIN))
#define SCC8660_INIT_TIMEOUT (0x00F0) // Ĭ<>ϵ<EFBFBD><CFB5><EFBFBD><EFBFBD><EFBFBD>ͷ<EFBFBD><CDB7>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD>ʱʱ<CAB1><CAB1> <20><><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA>λ
//=================================================SCC8660 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>====================================================
//================================================<EFBFBD><EFBFBD><EFBFBD><EFBFBD> SCC8660 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>================================================
//=================================================SCC8660 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>====================================================
//================================================<EFBFBD><EFBFBD><EFBFBD><EFBFBD> SCC8660 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>================================================
#define SCC8660_W (160) // ʵ<><CAB5>ͼ<EFBFBD><CDBC><EFBFBD>ֱ<EFBFBD><D6B1>ʿ<EFBFBD><CABF><EFBFBD> <20><>ѡ<EFBFBD><D1A1><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA>160 180
#define SCC8660_H (120) // ʵ<><CAB5>ͼ<EFBFBD><CDBC><EFBFBD>ֱ<EFBFBD><D6B1>ʸ߶<CAB8> <20><>ѡ<EFBFBD><D1A1><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA>120 160
#define SCC8660_IMAGE_SIZE (SCC8660_W * 2 * SCC8660_H) // <20><><EFBFBD><EFBFBD>ͼ<EFBFBD><CDBC><EFBFBD><EFBFBD>С SCC8660_W*2*SCC8660_H <20><><EFBFBD>ܳ<EFBFBD><DCB3><EFBFBD> 65535
@@ -86,9 +87,9 @@
#define SCC8660_COLOR_MODE_DEF (1 ) // ͼ<><CDBC>ɫ<EFBFBD><C9AB>ģʽ Ĭ<>ϣ<EFBFBD>0 <20><>ѡ<EFBFBD><D1A1><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA>[0,1] 0<><30><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɫģʽ 1<><31><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ģʽ<C4A3><CABD>ɫ<EFBFBD>ʱ<EFBFBD><CAB1>Ͷ<EFBFBD><CDB6><EFBFBD><EFBFBD>ߣ<EFBFBD>
#define SCC8660_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
//=================================================SCC8660 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>====================================================
//================================================<EFBFBD><EFBFBD><EFBFBD><EFBFBD> SCC8660 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>================================================
//==============================================<3D><><EFBFBD><EFBFBD> SCC8660 <20><><EFBFBD><EFBFBD>ö<EFBFBD><EFBFBD><EFBFBD><EFBFBD>==================================================
//===============================================<EFBFBD><EFBFBD><EFBFBD><EFBFBD> SCC8660 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>================================================
typedef enum
{
SCC8660_INIT = 0x00, // <20><><EFBFBD><EFBFBD>ͷ<EFBFBD><CDB7>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
@@ -113,14 +114,14 @@ typedef enum
SCC8660_SET_REG_ADDR = 0xFE,
SCC8660_SET_REG_DATA = 0xFF,
}scc8660_cmd_enum;
//==============================================<3D><><EFBFBD><EFBFBD> SCC8660 <20><><EFBFBD><EFBFBD>ö<EFBFBD><EFBFBD><EFBFBD><EFBFBD>==================================================
//===============================================<EFBFBD><EFBFBD><EFBFBD><EFBFBD> SCC8660 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>================================================
//==============================================<3D><><EFBFBD><EFBFBD> SCC8660 <EFBFBD><EFBFBD><EFBFBD>ݴ洢<EFBFBD><EFBFBD><EFBFBD><EFBFBD>=================================================
//===============================================<EFBFBD><EFBFBD><EFBFBD><EFBFBD> SCC8660 ȫ<EFBFBD>ֱ<EFBFBD><EFBFBD><EFBFBD>=================================================
extern vuint8 scc8660_finish_flag; // һ<><D2BB>ͼ<EFBFBD><CDBC><EFBFBD>ɼ<EFBFBD><C9BC><EFBFBD><EFBFBD>ɱ<EFBFBD>־λ
extern uint16 scc8660_image[SCC8660_H][SCC8660_W]; // ͼ<>񱣴<EFBFBD><F1B1A3B4><EFBFBD><EFBFBD><EFBFBD>
//==============================================<3D><><EFBFBD><EFBFBD> SCC8660 <EFBFBD><EFBFBD><EFBFBD>ݴ洢<EFBFBD><EFBFBD><EFBFBD><EFBFBD>=================================================
//===============================================<EFBFBD><EFBFBD><EFBFBD><EFBFBD> SCC8660 ȫ<EFBFBD>ֱ<EFBFBD><EFBFBD><EFBFBD>=================================================
//=================================================SCC8660 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>===================================================
//===============================================<EFBFBD><EFBFBD><EFBFBD><EFBFBD> SCC8660 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>=================================================
uint16 scc8660_get_id (void); // <20><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD>ͷ ID
uint16 scc8660_get_parameter (uint16 config); // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͷ<EFBFBD>ع<EFBFBD>ʱ<EFBFBD><CAB1>
uint16 scc8660_get_version (void); // <20><>ȡ<EFBFBD><C8A1>ɫ<EFBFBD><C9AB><EFBFBD><EFBFBD>ͷ<EFBFBD>̼<EFBFBD><CCBC>
@@ -128,6 +129,6 @@ uint8 scc8660_set_bright (uint16 data);
uint8 scc8660_set_white_balance (uint16 data); // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ð<EFBFBD>ƽ<EFBFBD><C6BD>
uint8 scc8660_set_reg (uint8 addr, uint16 data); // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͷ<EFBFBD>ڲ<EFBFBD><DAB2>Ĵ<EFBFBD><C4B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>д<EFBFBD><D0B4><EFBFBD><EFBFBD>
uint8 scc8660_init (void); // SCC8660 <20><><EFBFBD><EFBFBD>ͷ<EFBFBD><CDB7>ʼ<EFBFBD><CABC>
//=================================================SCC8660 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>===================================================
//===============================================<EFBFBD><EFBFBD><EFBFBD><EFBFBD> SCC8660 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>=================================================
#endif

View File

@@ -56,14 +56,14 @@
#include "zf_driver_spi.h"
#include "zf_device_tft180.h"
static uint16 tft180_pencolor = TFT180_DEFAULT_PENCOLOR;
static uint16 tft180_bgcolor = TFT180_DEFAULT_BGCOLOR;
static uint16 tft180_pencolor = TFT180_DEFAULT_PENCOLOR; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɫ(<28><><EFBFBD><EFBFBD>ɫ)
static uint16 tft180_bgcolor = TFT180_DEFAULT_BGCOLOR; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɫ
static tft180_dir_enum tft180_display_dir = TFT180_DEFAULT_DISPLAY_DIR;
static tft180_font_size_enum tft180_display_font = TFT180_DEFAULT_DISPLAY_FONT;
static tft180_dir_enum tft180_display_dir = TFT180_DEFAULT_DISPLAY_DIR; // <20><>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD>
static tft180_font_size_enum tft180_display_font = TFT180_DEFAULT_DISPLAY_FONT; // <20><>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
static uint8 tft180_x_max = 160;
static uint8 tft180_y_max = 128;
static uint8 tft180_x_max = 160; // <20><>ĻX<C4BB><58><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ
static uint8 tft180_y_max = 128; // <20><>ĻY<C4BB><59><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ
#if TFT180_USE_SOFT_SPI
static soft_spi_info_struct tft180_spi;
@@ -138,33 +138,38 @@ static void tft180_set_region (uint16 x1, uint16 y1, uint16 x2, uint16 y2)
zf_assert(x2 < tft180_x_max);
zf_assert(y2 < tft180_y_max);
if(tft180_display_dir == TFT180_PORTAIT || tft180_display_dir == TFT180_PORTAIT_180)
switch(tft180_display_dir)
{
tft180_write_index(0x2a);
tft180_write_8bit_data(0x00);
tft180_write_8bit_data(x1 + 2);
tft180_write_8bit_data(0x00);
tft180_write_8bit_data(x2 + 2);
case TFT180_PORTAIT:
case TFT180_PORTAIT_180:
{
tft180_write_index(0x2a);
tft180_write_8bit_data(0x00);
tft180_write_8bit_data(x1 + 2);
tft180_write_8bit_data(0x00);
tft180_write_8bit_data(x2 + 2);
tft180_write_index(0x2b);
tft180_write_8bit_data(0x00);
tft180_write_8bit_data(y1 + 1);
tft180_write_8bit_data(0x00);
tft180_write_8bit_data(y2 + 1);
}
else
{
tft180_write_index(0x2a);
tft180_write_8bit_data(0x00);
tft180_write_8bit_data(x1 + 1);
tft180_write_8bit_data(0x0);
tft180_write_8bit_data(x2 + 1);
tft180_write_index(0x2b);
tft180_write_8bit_data(0x00);
tft180_write_8bit_data(y1 + 1);
tft180_write_8bit_data(0x00);
tft180_write_8bit_data(y2 + 1);
}break;
case TFT180_CROSSWISE:
case TFT180_CROSSWISE_180:
{
tft180_write_index(0x2a);
tft180_write_8bit_data(0x00);
tft180_write_8bit_data(x1 + 1);
tft180_write_8bit_data(0x0);
tft180_write_8bit_data(x2 + 1);
tft180_write_index(0x2b);
tft180_write_8bit_data(0x00);
tft180_write_8bit_data(y1 + 2);
tft180_write_8bit_data(0x00);
tft180_write_8bit_data(y2 + 2);
tft180_write_index(0x2b);
tft180_write_8bit_data(0x00);
tft180_write_8bit_data(y1 + 2);
tft180_write_8bit_data(0x00);
tft180_write_8bit_data(y2 + 2);
}break;
}
tft180_write_index(0x2c);
}
@@ -188,20 +193,23 @@ static void tft180_debug_init(void)
switch(tft180_display_font)
{
case TFT180_6X8_FONT:
{
info.font_x_size = 6;
info.font_y_size = 8;
break;
}break;
case TFT180_8X16_FONT:
{
info.font_x_size = 8;
info.font_y_size = 16;
break;
}break;
case TFT180_16X16_FONT:
{
// <20>ݲ<EFBFBD>֧<EFBFBD><D6A7>
break;
}break;
}
info.output_screen = tft180_show_string;
info.output_screen_clear = tft180_clear;
debug_output_init(&info);
}
@@ -218,7 +226,7 @@ void tft180_clear (void)
TFT180_CS(0);
tft180_set_region(0, 0, tft180_x_max - 1, tft180_y_max - 1);
for( ; i > 0; i --)
for( ; 0 < i; i --)
{
tft180_write_16bit_data(tft180_bgcolor);
}
@@ -238,7 +246,7 @@ void tft180_full (const uint16 color)
TFT180_CS(0);
tft180_set_region(0, 0, tft180_x_max - 1, tft180_y_max - 1);
for( ; i > 0; i --)
for( ; 0 < i; i --)
{
tft180_write_16bit_data(color);
}
@@ -255,15 +263,20 @@ void tft180_full (const uint16 color)
void tft180_set_dir (tft180_dir_enum dir)
{
tft180_display_dir = dir;
if(dir < 2)
switch(tft180_display_dir)
{
tft180_x_max = 128;
tft180_y_max = 160;
}
else
{
tft180_x_max = 160;
tft180_y_max = 128;
case TFT180_PORTAIT:
case TFT180_PORTAIT_180:
{
tft180_x_max = 128;
tft180_y_max = 160;
}break;
case TFT180_CROSSWISE:
case TFT180_CROSSWISE_180:
{
tft180_x_max = 160;
tft180_y_max = 128;
}break;
}
}
@@ -339,39 +352,42 @@ void tft180_draw_line (uint16 x_start, uint16 y_start, uint16 x_end, uint16 y_en
int16 y_dir = (y_start < y_end ? 1 : -1);
float temp_rate = 0;
float temp_b = 0;
if(x_start != x_end)
do
{
temp_rate = (float)(y_start - y_end) / (float)(x_start - x_end);
temp_b = (float)y_start - (float)x_start * temp_rate;
}
else
{
while(y_start != y_end)
if(x_start != x_end)
{
tft180_draw_point(x_start, y_start, color);
y_start += y_dir;
temp_rate = (float)(y_start - y_end) / (float)(x_start - x_end);
temp_b = (float)y_start - (float)x_start * temp_rate;
}
return;
}
if(func_abs(y_start - y_end) > func_abs(x_start - x_end))
{
while(y_start != y_end)
else
{
tft180_draw_point(x_start, y_start, color);
y_start += y_dir;
x_start = (int16)(((float)y_start - temp_b) / temp_rate);
while(y_start != y_end)
{
tft180_draw_point(x_start, y_start, color);
y_start += y_dir;
}
break;
}
}
else
{
while(x_start != x_end)
if(func_abs(y_start - y_end) > func_abs(x_start - x_end))
{
tft180_draw_point(x_start, y_start, color);
x_start += x_dir;
y_start = (int16)((float)x_start * temp_rate + temp_b);
while(y_start != y_end)
{
tft180_draw_point(x_start, y_start, color);
y_start += y_dir;
x_start = (int16)(((float)y_start - temp_b) / temp_rate);
}
}
}
else
{
while(x_start != x_end)
{
tft180_draw_point(x_start, y_start, color);
x_start += x_dir;
y_start = (int16)((float)x_start * temp_rate + temp_b);
}
}
}while(0);
}
//-------------------------------------------------------------------------------------------------------------------
@@ -390,18 +406,19 @@ void tft180_show_char (uint16 x, uint16 y, const char dat)
zf_assert(x < tft180_x_max);
zf_assert(y < tft180_y_max);
uint8 i,j;
uint8 i = 0, j = 0;
TFT180_CS(0);
switch(tft180_display_font)
{
case TFT180_6X8_FONT:
for(i = 0; i < 6; i ++)
{
for(i = 0; 6 > i; i ++)
{
tft180_set_region(x + i, y, x + i, y + 8);
// <20><> 32 <20><>Ϊ<EFBFBD><CEAA>ȡģ<C8A1>Ǵӿո<D3BF><D5B8><EFBFBD>ʼȡ<CABC><C8A1> <20>ո<EFBFBD><D5B8><EFBFBD> ascii <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> 32
uint8 temp_top = ascii_font_6x8[dat - 32][i];
for(j = 0; j < 8; j ++)
for(j = 0; 8 > j; j ++)
{
if(temp_top & 0x01)
{
@@ -414,15 +431,16 @@ void tft180_show_char (uint16 x, uint16 y, const char dat)
temp_top >>= 1;
}
}
break;
}break;
case TFT180_8X16_FONT:
for(i = 0; i < 8; i ++)
{
for(i = 0; 8 > i; i ++)
{
tft180_set_region(x + i, y, x + i, y + 15);
// <20><> 32 <20><>Ϊ<EFBFBD><CEAA>ȡģ<C8A1>Ǵӿո<D3BF><D5B8><EFBFBD>ʼȡ<CABC><C8A1> <20>ո<EFBFBD><D5B8><EFBFBD> ascii <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> 32
uint8 temp_top = ascii_font_8x16[dat - 32][i];
uint8 temp_bottom = ascii_font_8x16[dat - 32][i + 8];
for(j = 0; j < 8; j ++)
for(j = 0; 8 > j; j ++)
{
if(temp_top & 0x01)
{
@@ -434,7 +452,7 @@ void tft180_show_char (uint16 x, uint16 y, const char dat)
}
temp_top >>= 1;
}
for(j = 0; j < 8; j ++)
for(j = 0; 8 > j; j ++)
{
if(temp_bottom & 0x01)
{
@@ -447,10 +465,11 @@ void tft180_show_char (uint16 x, uint16 y, const char dat)
temp_bottom >>= 1;
}
}
break;
}break;
case TFT180_16X16_FONT:
{
// <20>ݲ<EFBFBD>֧<EFBFBD><D6A7>
break;
}break;
}
TFT180_CS(1);
}
@@ -472,22 +491,15 @@ void tft180_show_string (uint16 x, uint16 y, const char dat[])
zf_assert(y < tft180_y_max);
uint16 j = 0;
while(dat[j] != '\0')
while('\0' != dat[j])
{
switch(tft180_display_font)
{
case TFT180_6X8_FONT:
tft180_show_char(x + 6 * j, y, dat[j]);
j ++;
break;
case TFT180_8X16_FONT:
tft180_show_char(x + 8 * j, y, dat[j]);
j ++;
break;
case TFT180_16X16_FONT:
// <20>ݲ<EFBFBD>֧<EFBFBD><D6A7>
break;
case TFT180_6X8_FONT: tft180_show_char(x + 6 * j, y, dat[j]); break;
case TFT180_8X16_FONT: tft180_show_char(x + 8 * j, y, dat[j]); break;
case TFT180_16X16_FONT: break; // <20>ݲ<EFBFBD>֧<EFBFBD><D6A7>
}
j ++;
}
}
@@ -507,8 +519,8 @@ void tft180_show_int (uint16 x, uint16 y, const int32 dat, uint8 num)
// <20><>ôһ<C3B4><D2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ļ<EFBFBD><C4BB>ʾ<EFBFBD><CABE>ʱ<EFBFBD>򳬹<EFBFBD><F2B3ACB9><EFBFBD>Ļ<EFBFBD>ֱ<EFBFBD><D6B1>ʷ<EFBFBD>Χ<EFBFBD><CEA7>
zf_assert(x < tft180_x_max);
zf_assert(y < tft180_y_max);
zf_assert(num > 0);
zf_assert(num <= 10);
zf_assert(0 < num);
zf_assert(10 >= num);
int32 dat_temp = dat;
int32 offset = 1;
@@ -517,10 +529,12 @@ void tft180_show_int (uint16 x, uint16 y, const int32 dat, uint8 num)
memset(data_buffer, 0, 12);
memset(data_buffer, ' ', num + 1);
if(num < 10)
if(10 > num)
{
for(; num > 0; num --)
for(; 0 < num; num --)
{
offset *= 10;
}
dat_temp %= offset;
}
func_int_to_str(data_buffer, dat_temp);
@@ -543,8 +557,8 @@ void tft180_show_uint (uint16 x, uint16 y, const uint32 dat, uint8 num)
// <20><>ôһ<C3B4><D2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ļ<EFBFBD><C4BB>ʾ<EFBFBD><CABE>ʱ<EFBFBD>򳬹<EFBFBD><F2B3ACB9><EFBFBD>Ļ<EFBFBD>ֱ<EFBFBD><D6B1>ʷ<EFBFBD>Χ<EFBFBD><CEA7>
zf_assert(x < tft180_x_max);
zf_assert(y < tft180_y_max);
zf_assert(num > 0);
zf_assert(num <= 10);
zf_assert(0 < num);
zf_assert(10 >= num);
uint32 dat_temp = dat;
int32 offset = 1;
@@ -552,10 +566,12 @@ void tft180_show_uint (uint16 x, uint16 y, const uint32 dat, uint8 num)
memset(data_buffer, 0, 12);
memset(data_buffer, ' ', num);
if(num < 10)
if(10 > num)
{
for(; num > 0; num --)
for(; 0 < num; num --)
{
offset *= 10;
}
dat_temp %= offset;
}
func_uint_to_str(data_buffer, dat_temp);
@@ -582,10 +598,10 @@ void tft180_show_float (uint16 x, uint16 y, const float dat, uint8 num, uint8 po
// <20><>ôһ<C3B4><D2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ļ<EFBFBD><C4BB>ʾ<EFBFBD><CABE>ʱ<EFBFBD>򳬹<EFBFBD><F2B3ACB9><EFBFBD>Ļ<EFBFBD>ֱ<EFBFBD><D6B1>ʷ<EFBFBD>Χ<EFBFBD><CEA7>
zf_assert(x < tft180_x_max);
zf_assert(y < tft180_y_max);
zf_assert(num > 0);
zf_assert(num <= 8);
zf_assert(pointnum > 0);
zf_assert(pointnum <= 6);
zf_assert(0 < num);
zf_assert(8 >= num);
zf_assert(0 < pointnum);
zf_assert(6 >= pointnum);
float dat_temp = dat;
float offset = 1.0;
@@ -659,7 +675,10 @@ void tft180_show_binary_image (uint16 x, uint16 y, const uint8 *image, uint16 wi
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> threshold <20><>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD>ʾ<EFBFBD><CABE>ֵ 0-<2D><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ<EFBFBD><D6B5>
// <20><><EFBFBD>ز<EFBFBD><D8B2><EFBFBD> void
// ʹ<><CAB9>ʾ<EFBFBD><CABE> tft180_show_gray_image(0, 0, mt9v03x_image[0], MT9V03X_W, MT9V03X_H, MT9V03X_W / 2, MT9V03X_H / 2, 0);
// <20><>ע<EFBFBD><D7A2>Ϣ
// <20><>ע<EFBFBD><D7A2>Ϣ <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͼ<EFBFBD><CDBC>
// <20><><EFBFBD><EFBFBD>Ҫ<EFBFBD><D2AA>ʾ<EFBFBD><CABE>ֵ<EFBFBD><D6B5>ͼ<EFBFBD><CDBC> ֱ<><D6B1><EFBFBD>޸<EFBFBD><DEB8><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA>Ҫ<EFBFBD>Ķ<EFBFBD>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD>
// <20><><EFBFBD><EFBFBD>Ҫ<EFBFBD><D2AA>ʾ<EFBFBD><CABE>ֵ<EFBFBD><D6B5>ͼ<EFBFBD><CDBC> ֱ<><D6B1><EFBFBD>޸<EFBFBD><DEB8><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA>Ҫ<EFBFBD>Ķ<EFBFBD>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD>
// <20><><EFBFBD><EFBFBD>Ҫ<EFBFBD><D2AA>ʾ<EFBFBD><CABE>ֵ<EFBFBD><D6B5>ͼ<EFBFBD><CDBC> ֱ<><D6B1><EFBFBD>޸<EFBFBD><DEB8><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA>Ҫ<EFBFBD>Ķ<EFBFBD>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD>
//-------------------------------------------------------------------------------------------------------------------
void tft180_show_gray_image (uint16 x, uint16 y, const uint8 *image, uint16 width, uint16 height, uint16 dis_width, uint16 dis_height, uint8 threshold)
{
@@ -667,7 +686,7 @@ void tft180_show_gray_image (uint16 x, uint16 y, const uint8 *image, uint16 widt
// <20><>ôһ<C3B4><D2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ļ<EFBFBD><C4BB>ʾ<EFBFBD><CABE>ʱ<EFBFBD>򳬹<EFBFBD><F2B3ACB9><EFBFBD>Ļ<EFBFBD>ֱ<EFBFBD><D6B1>ʷ<EFBFBD>Χ<EFBFBD><CEA7>
zf_assert(x < tft180_x_max);
zf_assert(y < tft180_y_max);
zf_assert(image != NULL);
zf_assert(NULL != image);
uint32 i = 0, j = 0;
uint16 color = 0,temp = 0;
@@ -691,9 +710,13 @@ void tft180_show_gray_image (uint16 x, uint16 y, const uint8 *image, uint16 widt
tft180_write_16bit_data(color);
}
else if(temp < threshold)
{
tft180_write_16bit_data(RGB565_BLACK);
}
else
{
tft180_write_16bit_data(RGB565_WHITE);
}
}
}
TFT180_CS(1);
@@ -719,7 +742,7 @@ void tft180_show_rgb565_image (uint16 x, uint16 y, const uint16 *image, uint16 w
// <20><>ôһ<C3B4><D2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ļ<EFBFBD><C4BB>ʾ<EFBFBD><CABE>ʱ<EFBFBD>򳬹<EFBFBD><F2B3ACB9><EFBFBD>Ļ<EFBFBD>ֱ<EFBFBD><D6B1>ʷ<EFBFBD>Χ<EFBFBD><CEA7>
zf_assert(x < tft180_x_max);
zf_assert(y < tft180_y_max);
zf_assert(image != NULL);
zf_assert(NULL != image);
uint32 i = 0, j = 0;
uint16 color = 0;
@@ -736,7 +759,9 @@ void tft180_show_rgb565_image (uint16 x, uint16 y, const uint16 *image, uint16 w
width_index = i * width / dis_width;
color = *(image + height_index * width + width_index); // <20><>ȡ<EFBFBD><C8A1><EFBFBD>ص<EFBFBD>
if(color_mode)
{
color = ((color & 0xff) << 8) | (color >> 8);
}
tft180_write_16bit_data(color);
}
}
@@ -762,7 +787,7 @@ void tft180_show_wave (uint16 x, uint16 y, const uint16 *wave, uint16 width, uin
// <20><>ôһ<C3B4><D2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ļ<EFBFBD><C4BB>ʾ<EFBFBD><CABE>ʱ<EFBFBD>򳬹<EFBFBD><F2B3ACB9><EFBFBD>Ļ<EFBFBD>ֱ<EFBFBD><D6B1>ʷ<EFBFBD>Χ<EFBFBD><CEA7>
zf_assert(x < tft180_x_max);
zf_assert(y < tft180_y_max);
zf_assert(wave != NULL);
zf_assert(NULL != wave);
uint32 i = 0, j = 0;
uint32 width_index = 0, value_max_index = 0;
@@ -804,11 +829,11 @@ void tft180_show_chinese (uint16 x, uint16 y, uint8 size, const uint8 *chinese_b
// <20><>ôһ<C3B4><D2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ļ<EFBFBD><C4BB>ʾ<EFBFBD><CABE>ʱ<EFBFBD>򳬹<EFBFBD><F2B3ACB9><EFBFBD>Ļ<EFBFBD>ֱ<EFBFBD><D6B1>ʷ<EFBFBD>Χ<EFBFBD><CEA7>
zf_assert(x < tft180_x_max);
zf_assert(y < tft180_y_max);
zf_assert(chinese_buffer != NULL);
zf_assert(NULL != chinese_buffer);
int i, j, k;
uint8 temp, temp1, temp2;
const uint8 *p_data;
int i = 0, j = 0, k = 0;
uint8 temp = 0, temp1 = 0, temp2 = 0;
const uint8 *p_data = chinese_buffer;
temp2 = size / 8;
@@ -823,11 +848,17 @@ void tft180_show_chinese (uint16 x, uint16 y, uint8 size, const uint8 *chinese_b
{
for(k = 0; k < temp2; k ++)
{
for(j = 8; j > 0; j --)
for(j = 8; 0 < j; j --)
{
temp = (*p_data >> (j - 1)) & 0x01;
if(temp) tft180_write_16bit_data(color);
else tft180_write_16bit_data(tft180_bgcolor);
if(temp)
{
tft180_write_16bit_data(color);
}
else
{
tft180_write_16bit_data(tft180_bgcolor);
}
}
p_data ++;
}
@@ -859,7 +890,6 @@ void tft180_init (void)
tft180_set_dir(tft180_display_dir);
tft180_set_color(tft180_pencolor, tft180_bgcolor);
tft180_debug_init();
TFT180_RST(0);
system_delay_ms(10);
@@ -916,10 +946,10 @@ void tft180_init (void)
tft180_write_index(0x36);
switch(tft180_display_dir) // y x v
{
case 0: tft180_write_8bit_data(1<<7 | 1<<6 | 0<<5); break; // <20><><EFBFBD><EFBFBD>ģʽ
case 1: tft180_write_8bit_data(0<<7 | 0<<6 | 0<<5); break; // <20><><EFBFBD><EFBFBD>ģʽ <20><>ת180
case 2: tft180_write_8bit_data(1<<7 | 0<<6 | 1<<5); break; // <20><><EFBFBD><EFBFBD>ģʽ
case 3: tft180_write_8bit_data(0<<7 | 1<<6 | 1<<5); break; // <20><><EFBFBD><EFBFBD>ģʽ <20><>ת180
case TFT180_PORTAIT: tft180_write_8bit_data(1<<7 | 1<<6 | 0<<5); break;
case TFT180_PORTAIT_180: tft180_write_8bit_data(0<<7 | 0<<6 | 0<<5); break;
case TFT180_CROSSWISE: tft180_write_8bit_data(1<<7 | 0<<6 | 1<<5); break;
case TFT180_CROSSWISE_180: tft180_write_8bit_data(0<<7 | 1<<6 | 1<<5); break;
}
tft180_write_index(0xe0);
@@ -981,4 +1011,5 @@ void tft180_init (void)
TFT180_CS(1);
tft180_clear();
tft180_debug_init();
}

View File

@@ -31,6 +31,7 @@
* <20>޸ļ<DEB8>¼
* <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><>ע
* 2022-09-15 pudding first version
* 2023-04-28 pudding <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ע<EFBFBD><D7A2>˵<EFBFBD><CBB5>
********************************************************************************************************************/
/*********************************************************************************************************************
* <20><><EFBFBD>߶<EFBFBD><DFB6>
@@ -53,6 +54,7 @@
#include "zf_device_type.h"
//=================================================<3D><><EFBFBD><EFBFBD> TFT180 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>================================================
#define TFT180_USE_SOFT_SPI (0) // Ĭ<><C4AC>ʹ<EFBFBD><CAB9>Ӳ<EFBFBD><D3B2> SPI <20><>ʽ<EFBFBD><CABD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>ʹ<EFBFBD><CAB9>Ӳ<EFBFBD><D3B2> SPI <20><>ʽ<EFBFBD><CABD><EFBFBD><EFBFBD>
#if TFT180_USE_SOFT_SPI // <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> SPI <20><><EFBFBD><EFBFBD>====================================================
@@ -84,6 +86,8 @@
#define TFT180_RST(x) ((x) ? (gpio_high(TFT180_RES_PIN)) : (gpio_low(TFT180_RES_PIN)))
#define TFT180_CS(x) ((x) ? (gpio_high(TFT180_CS_PIN)) : (gpio_low(TFT180_CS_PIN)))
#define TFT180_BLK(x) ((x) ? (gpio_high(TFT180_BL_PIN)) : (gpio_low(TFT180_BL_PIN)))
//=================================================<3D><><EFBFBD><EFBFBD> TFT180 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>================================================
//=================================================<3D><><EFBFBD><EFBFBD> TFT180 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E1B9B9>===============================================
typedef enum
@@ -102,32 +106,34 @@ typedef enum
}tft180_font_size_enum;
//=================================================<3D><><EFBFBD><EFBFBD> TFT180 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E1B9B9>===============================================
//===================================================TFT180 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>==================================================
void tft180_clear (void);
void tft180_full (const uint16 color);
void tft180_set_dir (tft180_dir_enum dir);
void tft180_set_font (tft180_font_size_enum font);
void tft180_set_color (const uint16 pen, const uint16 bgcolor);
void tft180_draw_point (uint16 x, uint16 y, const uint16 color);
void tft180_draw_line (uint16 x_start, uint16 y_start, uint16 x_end, uint16 y_end, const uint16 color);
void tft180_show_char (uint16 x, uint16 y, const char dat);
void tft180_show_string (uint16 x, uint16 y, const char dat[]);
void tft180_show_int (uint16 x,uint16 y, const int32 dat, uint8 num);
void tft180_show_uint (uint16 x,uint16 y, const uint32 dat, uint8 num);
void tft180_show_float (uint16 x,uint16 y, const float dat, uint8 num, uint8 pointnum);
//=================================================<3D><><EFBFBD><EFBFBD> TFT180 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>================================================
void tft180_clear (void); // TFT180 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
void tft180_full (const uint16 color); // TFT180 <20><>Ļ<EFBFBD><C4BB><EFBFBD><EFBFBD><E4BAAF>
void tft180_set_dir (tft180_dir_enum dir); // TFT180 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD>
void tft180_set_font (tft180_font_size_enum font); // TFT180 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD>
void tft180_set_color (const uint16 pen, const uint16 bgcolor); // TFT180 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾ<EFBFBD><CABE>ɫ
void tft180_draw_point (uint16 x, uint16 y, const uint16 color); // TFT180 <20><><EFBFBD><EFBFBD><E3BAAF>
void tft180_draw_line (uint16 x_start, uint16 y_start, uint16 x_end, uint16 y_end, const uint16 color); // TFT180 <20><><EFBFBD>ߺ<EFBFBD><DFBA><EFBFBD>
void tft180_show_binary_image (uint16 x, uint16 y, const uint8 *image, uint16 width, uint16 height, uint16 dis_width, uint16 dis_height);
void tft180_show_gray_image (uint16 x, uint16 y, const uint8 *image, uint16 width, uint16 height, uint16 dis_width, uint16 dis_height, uint8 threshold);
void tft180_show_rgb565_image (uint16 x, uint16 y, const uint16 *image, uint16 width, uint16 height, uint16 dis_width, uint16 dis_height, uint8 color_mode);
void tft180_show_char (uint16 x, uint16 y, const char dat); // TFT180 <20><>ʾ<EFBFBD>ַ<EFBFBD>
void tft180_show_string (uint16 x, uint16 y, const char dat[]); // TFT180 <20><>ʾ<EFBFBD>ַ<EFBFBD><D6B7><EFBFBD>
void tft180_show_int (uint16 x,uint16 y, const int32 dat, uint8 num); // TFT180 <20><>ʾ32λ<32>з<EFBFBD><D0B7><EFBFBD><><C8A5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ч<EFBFBD><D0A7>0)
void tft180_show_uint (uint16 x,uint16 y, const uint32 dat, uint8 num); // TFT180 <20><>ʾ32λ<32>޷<EFBFBD><DEB7><EFBFBD><><C8A5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ч<EFBFBD><D0A7>0)
void tft180_show_float (uint16 x,uint16 y, const float dat, uint8 num, uint8 pointnum); // TFT180 <20><>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD><EFBFBD><EFBFBD><><C8A5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ч<EFBFBD><D0A7>0)
void tft180_show_wave (uint16 x, uint16 y, const uint16 *wave, uint16 width, uint16 value_max, uint16 dis_width, uint16 dis_value_max);
void tft180_show_chinese (uint16 x, uint16 y, uint8 size, const uint8 *chinese_buffer, uint8 number, const uint16 color);
void tft180_show_binary_image (uint16 x, uint16 y, const uint8 *image, uint16 width, uint16 height, uint16 dis_width, uint16 dis_height); // TFT180 <20><>ʾ<EFBFBD><CABE>ֵͼ<D6B5><CDBC> <20><><EFBFBD><EFBFBD>ÿ<EFBFBD>˸<EFBFBD><CBB8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD>ֽ<EFBFBD><D6BD><EFBFBD><EFBFBD><EFBFBD>
void tft180_show_gray_image (uint16 x, uint16 y, const uint8 *image, uint16 width, uint16 height, uint16 dis_width, uint16 dis_height, uint8 threshold); // TFT180 <20><>ʾ 8bit <20>Ҷ<EFBFBD>ͼ<EFBFBD><CDBC> <20><><EFBFBD><EFBFBD>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD>ֵ
void tft180_show_rgb565_image (uint16 x, uint16 y, const uint16 *image, uint16 width, uint16 height, uint16 dis_width, uint16 dis_height, uint8 color_mode); // TFT180 <20><>ʾ RGB565 <20><>ɫͼ<C9AB><CDBC>
void tft180_show_wave (uint16 x, uint16 y, const uint16 *wave, uint16 width, uint16 value_max, uint16 dis_width, uint16 dis_value_max); // TFT180 <20><>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD>
void tft180_show_chinese (uint16 x, uint16 y, uint8 size, const uint8 *chinese_buffer, uint8 number, const uint16 color); // TFT180 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾ
// 1.8<EFBFBD><EFBFBD>TFT<EFBFBD><EFBFBD>Ļ<EFBFBD><EFBFBD>ʼ<EFBFBD><EFBFBD>
void tft180_init (void);
//===================================================TFT180 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>==================================================
//=================================================<EFBFBD><EFBFBD><EFBFBD><EFBFBD> TFT180 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>================================================
//===================================================TFT180 <20><>չ<EFBFBD><D5B9><EFBFBD><EFBFBD>==================================================
//=================================================<3D><><EFBFBD><EFBFBD> TFT180 <20><>չ<EFBFBD><D5B9><EFBFBD><EFBFBD>================================================
//-------------------------------------------------------------------------------------------------------------------
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> TFT180 <20><>ʾС<CABE><D0A1><EFBFBD><EFBFBD>ͼ<EFBFBD><CDBC>
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> p ͼ<><CDBC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ָ<EFBFBD><D6B8>
@@ -158,8 +164,7 @@ void tft180_init (void);
// <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 tft180_displayimage8660(p, width, height) (tft180_show_rgb565_image(0, 0, (p), SCC8660_W, SCC8660_H, (width), (height), 1))
//===================================================TFT180 <20><>չ<EFBFBD><D5B9><EFBFBD><EFBFBD>==================================================
//=================================================<3D><><EFBFBD><EFBFBD> TFT180 <20><>չ<EFBFBD><D5B9><EFBFBD><EFBFBD>================================================
#endif

View File

@@ -54,7 +54,7 @@
uint16 tsl1401_data[2][TSL1401_DATA_LEN]; // TSL1401 <20><><EFBFBD>ݴ<EFBFBD><DDB4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
static uint8 tsl1401_init_state = 0;
static uint8 tsl1401_init_state = 0; // TSL1401 <20><>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD>־λ
vuint8 tsl1401_finish_flag; // TSL1401 <20><><EFBFBD><EFBFBD>׼<EFBFBD><D7BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>־λ
//-------------------------------------------------------------------------------------------------------------------

View File

@@ -31,6 +31,7 @@
* <20>޸ļ<DEB8>¼
* <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><>ע
* 2022-09-15 pudding first version
* 2023-04-28 pudding <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ע<EFBFBD><D7A2>˵<EFBFBD><CBB5>
********************************************************************************************************************/
/*********************************************************************************************************************
* <20><><EFBFBD>߶<EFBFBD><DFB6>
@@ -49,7 +50,7 @@
#include "zf_device_type.h"
//=================================================TSL1401 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>====================================================
//=================================================<EFBFBD><EFBFBD><EFBFBD><EFBFBD> TSL1401 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>================================================
#define TSL1401_AO_PIN (ADC0_CH4_A4) // <20><>Ӧ<EFBFBD><D3A6>һ<EFBFBD><D2BB> TSL1401 <20><> AO <20><><EFBFBD><EFBFBD>
#define TSL1401_AO_PIN1 (ADC0_CH5_A5) // <20><>Ӧ<EFBFBD>ڶ<EFBFBD><DAB6><EFBFBD> TSL1401 <20><> AO <20><><EFBFBD><EFBFBD>
// TSL1401 <20>Ŀ<EFBFBD><C4BF><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ŷ<EFBFBD><C5B6><EFBFBD> <20><><EFBFBD><EFBFBD> TSL1401 <20><><EFBFBD><EFBFBD><E9BDAB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֱ<EFBFBD>Ӳ<EFBFBD><D3B2><EFBFBD>
@@ -63,20 +64,20 @@
#define TSL1401_PIT_INDEX (CCU61_CH1) // ʹ<><CAB9><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ж<EFBFBD>
#define TSL1401_AD_RESOLUTION (ADC_8BIT) // ADC <20><><EFBFBD><EFBFBD> 8bit
#define TSL1401_DATA_LEN (128 ) // TSL1401 <20><><EFBFBD>ݳ<EFBFBD><DDB3><EFBFBD>
//=================================================TSL1401 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>====================================================
//=================================================<EFBFBD><EFBFBD><EFBFBD><EFBFBD> TSL1401 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>================================================
//==============================================<3D><><EFBFBD><EFBFBD> TSL1401 <EFBFBD><EFBFBD><EFBFBD>ݴ洢<EFBFBD><EFBFBD><EFBFBD><EFBFBD>=================================================
//=================================================<EFBFBD><EFBFBD><EFBFBD><EFBFBD> TSL1401 ȫ<EFBFBD>ֱ<EFBFBD><EFBFBD><EFBFBD>=================================================
extern uint16 tsl1401_data[2][TSL1401_DATA_LEN]; // TSL1401 <20><><EFBFBD>ݴ<EFBFBD><DDB4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
extern vuint8 tsl1401_finish_flag; // TSL1401 <20><><EFBFBD>ݲɼ<DDB2><C9BC><EFBFBD><EFBFBD>ɱ<EFBFBD>־
//==============================================<3D><><EFBFBD><EFBFBD> TSL1401 <EFBFBD><EFBFBD><EFBFBD>ݴ洢<EFBFBD><EFBFBD><EFBFBD><EFBFBD>=================================================
//=================================================<EFBFBD><EFBFBD><EFBFBD><EFBFBD> TSL1401 ȫ<EFBFBD>ֱ<EFBFBD><EFBFBD><EFBFBD>=================================================
//=================================================TSL1401 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>===================================================
//=================================================<EFBFBD><EFBFBD><EFBFBD><EFBFBD> TSL1401 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>=================================================
void tsl1401_collect_pit_handler (void); // TSL1401 <20><><EFBFBD><EFBFBD> CCD <20><><EFBFBD>ݲɼ<DDB2>
void tsl1401_send_data (uart_index_enum uart_n, uint8 index); // TSL1401 <20><><EFBFBD><EFBFBD> CCD ͼ<><CDBC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>λ<EFBFBD><CEBB><EFBFBD>鿴ͼ<E9BFB4><CDBC>
void tsl1401_init (void); // TSL1401 <20><><EFBFBD><EFBFBD> CCD <20><>ʼ<EFBFBD><CABC>
//=================================================TSL1401 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>===================================================
//=================================================<EFBFBD><EFBFBD><EFBFBD><EFBFBD> TSL1401 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>=================================================
#endif

View File

@@ -38,9 +38,9 @@
static void type_default_callback(void);
camera_type_enum camera_type = NO_CAMERE; // <20><><EFBFBD><EFBFBD>ͷ<EFBFBD><CDB7><EFBFBD>ͱ<EFBFBD><CDB1><EFBFBD>
callback_function camera_dma_handler = type_default_callback; // DMA<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>ת
callback_function camera_vsync_handler = type_default_callback; // <20><><EFBFBD>жϺ<D0B6><CFBA><EFBFBD>ָ<EFBFBD><EFBFBD><EBA3AC><EFBFBD>ݳ<EFBFBD>ʼ<EFBFBD><CABC>ʱ<EFBFBD><CAB1><EFBFBD>õĺ<C3B5><C4BA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ת
callback_function camera_uart_handler = type_default_callback; // <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>ת
callback_function camera_uart_handler = type_default_callback; // <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>ת
callback_function camera_vsync_handler = type_default_callback; // <20><><EFBFBD>жϺ<D0B6><CFBA><EFBFBD>ָ<EFBFBD><EFBFBD><EBA3AC><EFBFBD>ݳ<EFBFBD>ʼ<EFBFBD><CABC>ʱ<EFBFBD><CAB1><EFBFBD>õĺ<C3B5><C4BA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ת
callback_function camera_dma_handler = type_default_callback; // DMA<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>ת
wireless_type_enum wireless_type = NO_WIRELESS;
callback_function wireless_module_uart_handler = type_default_callback; // <20><><EFBFBD>ߴ<EFBFBD><DFB4>ڽ<EFBFBD><DABD><EFBFBD><EFBFBD>жϺ<D0B6><CFBA><EFBFBD>ָ<EFBFBD><EFBFBD><EBA3AC><EFBFBD>ݳ<EFBFBD>ʼ<EFBFBD><CABC>ʱ<EFBFBD><CAB1><EFBFBD>õĺ<C3B5><C4BA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ת
@@ -49,7 +49,7 @@ callback_function wireless_module_uart_handler = type_default_callback;
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> Ĭ<>ϻص<CFBB><D8B5><EFBFBD><EFBFBD><EFBFBD>
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> void
// <20><><EFBFBD>ز<EFBFBD><D8B2><EFBFBD> void
// ʹ<><CAB9>ʾ<EFBFBD><CABE> type_default_callback();
// ʹ<><CAB9>ʾ<EFBFBD><CABE>
// <20><>ע<EFBFBD><D7A2>Ϣ <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>ֹ<EFBFBD><D6B9>û<EFBFBD>г<EFBFBD>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD><E8B1B8>ʱ<EFBFBD><CAB1><EFBFBD>ܷ<EFBFBD>
//-------------------------------------------------------------------------------------------------------------------
static void type_default_callback (void)
@@ -59,32 +59,32 @@ static void type_default_callback (void)
//-------------------------------------------------------------------------------------------------------------------
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͷ<EFBFBD><CDB7><EFBFBD><EFBFBD>
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> type_set ѡ<><D1A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͷ<EFBFBD><CDB7><EFBFBD><EFBFBD>
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> vsync_callback <20><EFBFBD>ij<EFBFBD><C4B3>жϻص<CFBB><D8B5><EFBFBD><EFBFBD><EFBFBD>
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> dma_callback <20><EFBFBD><E8B1B8> DMA <20><><EFBFBD><EFBFBD><EFBFBD>жϻص<CFBB><D8B5><EFBFBD><EFBFBD><EFBFBD>
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> uart_callback <20><EFBFBD>Ĵ<EFBFBD><C4B4>ڻص<DABB><D8B5><EFBFBD><EFBFBD><EFBFBD>
// <20><><EFBFBD>ز<EFBFBD><D8B2><EFBFBD> void
// ʹ<><CAB9>ʾ<EFBFBD><CABE> set_camera_type(CAMERA_GRAYSCALE);
// <20><>ע<EFBFBD><D7A2>Ϣ һ<><D2BB><EFBFBD>ɸ<EFBFBD><C9B8><EFBFBD><EFBFBD><EFBFBD>ͷ<EFBFBD><CDB7>ʼ<EFBFBD><CABC><EFBFBD>ڲ<EFBFBD><DAB2><EFBFBD><EFBFBD><EFBFBD>
//-------------------------------------------------------------------------------------------------------------------
void set_camera_type (camera_type_enum type_set, callback_function vsync_callback, callback_function dma_callback, callback_function uart_callback)
void set_camera_type (camera_type_enum type_set, callback_function vsync_callback, callback_function dma_callback, callback_function uart_callback)
{
camera_type = type_set;
if(vsync_callback == NULL) camera_vsync_handler = type_default_callback;
else camera_vsync_handler = vsync_callback;
if(dma_callback == NULL) camera_dma_handler = type_default_callback;
else camera_dma_handler = dma_callback;
if(uart_callback == NULL) camera_uart_handler = type_default_callback;
else camera_uart_handler = uart_callback;
camera_uart_handler = ((uart_callback == NULL) ? (type_default_callback) : (uart_callback));
camera_vsync_handler = ((vsync_callback == NULL) ? (type_default_callback) : (vsync_callback));
camera_dma_handler = ((dma_callback == NULL) ? (type_default_callback) : (dma_callback));
}
//-------------------------------------------------------------------------------------------------------------------
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ģ<EFBFBD><C4A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> type_set ѡ<><D1A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ģ<EFBFBD><C4A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> uart_callback <20><EFBFBD>Ĵ<EFBFBD><C4B4>ڻص<DABB><D8B5><EFBFBD><EFBFBD><EFBFBD>
// <20><><EFBFBD>ز<EFBFBD><D8B2><EFBFBD> void
// ʹ<><CAB9>ʾ<EFBFBD><CABE> set_wireless_type(WIRELESS_UART);
// ʹ<><CAB9>ʾ<EFBFBD><CABE> set_wireless_type(WIRELESS_UART, uart_callback);
// <20><>ע<EFBFBD><D7A2>Ϣ һ<><D2BB><EFBFBD>ɸ<EFBFBD><C9B8><EFBFBD><EFBFBD><EFBFBD>ͷ<EFBFBD><CDB7>ʼ<EFBFBD><CABC><EFBFBD>ڲ<EFBFBD><DAB2><EFBFBD><EFBFBD><EFBFBD>
//-------------------------------------------------------------------------------------------------------------------
void set_wireless_type (wireless_type_enum type_set, callback_function uart_callback)
{
wireless_type = type_set;
if(uart_callback == NULL) wireless_module_uart_handler = type_default_callback;
else wireless_module_uart_handler = uart_callback;
wireless_module_uart_handler = ((uart_callback == NULL) ? (type_default_callback) : (uart_callback));
}

View File

@@ -31,6 +31,7 @@
* <20>޸ļ<DEB8>¼
* <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><>ע
* 2022-09-15 pudding first version
* 2023-04-28 pudding <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ע<EFBFBD><D7A2>˵<EFBFBD><CBB5>
********************************************************************************************************************/
#ifndef _zf_device_type_h_
@@ -38,7 +39,7 @@
#include "zf_common_debug.h"
//==============================================<3D><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> ö<EFBFBD><EFBFBD><EFBFBD><EFBFBD>==================================================
//==============================================<3D><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>==================================================
typedef enum
{
NO_CAMERE = 0, // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͷ
@@ -55,11 +56,11 @@ typedef enum
BLUETOOTH_CH9141, // <20><><EFBFBD><EFBFBD> CH9141
WIFI_UART, // <20><><EFBFBD><EFBFBD> WiFi
}wireless_type_enum;
//==============================================<3D><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> ö<EFBFBD><EFBFBD><EFBFBD><EFBFBD>==================================================
//==============================================<3D><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>==================================================
//===========================================<3D><><EFBFBD><EFBFBD> <20>ص<EFBFBD><D8B5><EFBFBD><EFBFBD><EFBFBD>ָ<EFBFBD><EFBFBD><EBBCB0><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>==============================================
typedef void (*callback_function)(void);
//===========================================<3D><><EFBFBD><EFBFBD><EFBFBD>ص<EFBFBD><D8B5><EFBFBD><EFBFBD><EFBFBD>ָ<EFBFBD><EFBFBD><EBBCB0><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>==================================================
extern wireless_type_enum wireless_type;
extern callback_function wireless_module_uart_handler; // <20><><EFBFBD>ߴ<EFBFBD><DFB4>ڽ<EFBFBD><DABD><EFBFBD><EFBFBD>жϺ<D0B6><CFBA><EFBFBD>ָ<EFBFBD><EFBFBD><EBA3AC><EFBFBD>ݳ<EFBFBD>ʼ<EFBFBD><CABC>ʱ<EFBFBD><CAB1><EFBFBD>õĺ<C3B5><C4BA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ת
@@ -67,11 +68,12 @@ extern camera_type_enum camera_type;
extern callback_function camera_dma_handler; // <20><><EFBFBD><EFBFBD>ͨѶ<CDA8>жϺ<D0B6><CFBA><EFBFBD>ָ<EFBFBD><EFBFBD><EBA3AC><EFBFBD>ݳ<EFBFBD>ʼ<EFBFBD><CABC>ʱ<EFBFBD><CAB1><EFBFBD>õĺ<C3B5><C4BA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ת
extern callback_function camera_vsync_handler; // <20><><EFBFBD><EFBFBD>ͨѶ<CDA8>жϺ<D0B6><CFBA><EFBFBD>ָ<EFBFBD><EFBFBD><EBA3AC><EFBFBD>ݳ<EFBFBD>ʼ<EFBFBD><CABC>ʱ<EFBFBD><CAB1><EFBFBD>õĺ<C3B5><C4BA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ת
extern callback_function camera_uart_handler; // <20><><EFBFBD><EFBFBD>ͨѶ<CDA8>жϺ<D0B6><CFBA><EFBFBD>ָ<EFBFBD><EFBFBD><EBA3AC><EFBFBD>ݳ<EFBFBD>ʼ<EFBFBD><CABC>ʱ<EFBFBD><CAB1><EFBFBD>õĺ<C3B5><C4BA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ת
//===========================================<3D><><EFBFBD><EFBFBD><EFBFBD>ص<EFBFBD><D8B5><EFBFBD><EFBFBD><EFBFBD>ָ<EFBFBD><EFBFBD><EBBCB0><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>==================================================
//===========================================<3D><><EFBFBD><EFBFBD> <EFBFBD>ص<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ָ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD>==============================================
//=============================================<3D>жϻص<CFBB> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>===================================================
//=============================================<3D><><EFBFBD><EFBFBD> <20>жϻص<CFBB> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>================================================
void set_camera_type (camera_type_enum type_set, callback_function vsync_callback, callback_function dma_callback, callback_function uart_callback);
void set_wireless_type (wireless_type_enum type_set, callback_function uart_callback);
//=============================================<3D>жϻص<CFBB> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>===================================================
//=============================================<3D><EFBFBD><EFBFBD><EFBFBD> <20>жϻص<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>================================================
#endif

View File

@@ -54,7 +54,7 @@ static uint16 crc_check (uint8 *buff, uint8 crc_cnt)
for(i = 0; i < crc_cnt; i ++)
{
crc_temp ^= buff[i];
for(j = 0; j < 8; j ++)
for(j = 0; 8 > j; j ++)
{
if (crc_temp & 0x01)
{

View File

@@ -31,6 +31,7 @@
* <20>޸ļ<DEB8>¼
* <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><>ע
* 2022-09-15 pudding first version
* 2023-04-28 pudding <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ע<EFBFBD><D7A2>˵<EFBFBD><CBB5>
********************************************************************************************************************/
#ifndef _zf_device_virtual_oscilloscope_h_
@@ -38,10 +39,13 @@
#include "zf_common_typedef.h"
//=================================================<3D><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD> ȫ<>ֱ<EFBFBD><D6B1><EFBFBD>=================================================
extern uint8 virtual_oscilloscope_data[10];
//=================================================<3D><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD> ȫ<>ֱ<EFBFBD><D6B1><EFBFBD>=================================================
//=================================================<3D><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>=================================================
void virtual_oscilloscope_data_conversion (const int16 data1, const int16 data2, const int16 data3, const int16 data4);
//=================================================<3D><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>=================================================
#endif

View File

@@ -57,7 +57,7 @@
#include "zf_device_type.h"
#include "zf_device_wifi_uart.h"
#define WAIT_TIME_OUT (10000) // <20><>ָ<EFBFBD><D6B8><EFBFBD>ȴ<EFBFBD>ʱ<EFBFBD><CAB1> <20><>λ<EFBFBD><CEBB>ms
#define WAIT_TIME_OUT ( 10000 ) // <20><>ָ<EFBFBD><D6B8><EFBFBD>ȴ<EFBFBD>ʱ<EFBFBD><CAB1> <20><>λ<EFBFBD><CEBB>ms
wifi_uart_information_struct wifi_uart_information; // ģ<><C4A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
@@ -91,7 +91,7 @@ static uint8 wifi_uart_wait_ack (char *wait_buffer, uint32 timeout)
}
else if(strstr(receiver_buffer, "ERROR") || strstr(receiver_buffer, "busy"))
{
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>յ<EFBFBD><D5B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ģ<EFBFBD><C4A3>æ <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ѭ<EFBFBD><D1AD><EFBFBD><EFBFBD><EFBFBD>ҷ<EFBFBD><D2B7><EFBFBD>1
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>յ<EFBFBD><D5B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ģ<EFBFBD><C4A3>æ <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ѭ<EFBFBD><D1AD><EFBFBD><EFBFBD><EFBFBD>ҷ<EFBFBD><D2B7><EFBFBD> 1
return_state = 1;
break;
}
@@ -125,8 +125,8 @@ static void wifi_uart_clear_receive_buffer (void)
static uint8 wifi_data_parse (uint8 *target_buffer, uint8 *origin_buffer, char start_char, char end_char)
{
uint8 return_state = 0;
char *location1;
char *location2;
char *location1 = NULL;
char *location2 = NULL;
location1 = strchr((char *)origin_buffer, start_char);
if(location1)
{
@@ -157,12 +157,12 @@ static uint8 wifi_data_parse (uint8 *target_buffer, uint8 *origin_buffer, char s
//--------------------------------------------------------------------------------------------------
static uint8 wifi_uart_get_version (void)
{
char *location1;
char *location1 = NULL;
uint8 return_state = 0;
uint8 receiver_buffer[256];
uint32 receiver_len = 256;
wifi_uart_clear_receive_buffer(); // <20><><EFBFBD><EFBFBD>WiFi<46><69><EFBFBD>ջ<EFBFBD><D5BB><EFBFBD><EFBFBD><EFBFBD>
wifi_uart_clear_receive_buffer(); // <20><><EFBFBD><EFBFBD>WiFi<46><69><EFBFBD>ջ<EFBFBD><D5BB><EFBFBD><EFBFBD><EFBFBD>
uart_write_string(WIFI_UART_INDEX, "AT+GMR\r\n");
do
{
@@ -197,12 +197,12 @@ static uint8 wifi_uart_echo_set (char *model)
{
uint8 return_state = 0;
wifi_uart_clear_receive_buffer(); // <20><><EFBFBD><EFBFBD>WiFi<46><69><EFBFBD>ջ<EFBFBD><D5BB><EFBFBD><EFBFBD><EFBFBD>
wifi_uart_clear_receive_buffer(); // <20><><EFBFBD><EFBFBD>WiFi<46><69><EFBFBD>ջ<EFBFBD><D5BB><EFBFBD><EFBFBD><EFBFBD>
uart_write_string(WIFI_UART_INDEX, "ATE");
uart_write_string(WIFI_UART_INDEX, model);
uart_write_string(WIFI_UART_INDEX, "\r\n");
return_state = wifi_uart_wait_ack("OK", WAIT_TIME_OUT);
wifi_uart_clear_receive_buffer(); // <20><><EFBFBD><EFBFBD>WiFi<46><69><EFBFBD>ջ<EFBFBD><D5BB><EFBFBD><EFBFBD><EFBFBD>
wifi_uart_clear_receive_buffer(); // <20><><EFBFBD><EFBFBD>WiFi<46><69><EFBFBD>ջ<EFBFBD><D5BB><EFBFBD><EFBFBD><EFBFBD>
return return_state;
}
@@ -222,7 +222,7 @@ static uint8 wifi_uart_uart_config_set (char *baudrate, char *databits, char *st
{
uint8 return_state = 0;
wifi_uart_clear_receive_buffer(); // <20><><EFBFBD><EFBFBD>WiFi<46><69><EFBFBD>ջ<EFBFBD><D5BB><EFBFBD><EFBFBD><EFBFBD>
wifi_uart_clear_receive_buffer(); // <20><><EFBFBD><EFBFBD>WiFi<46><69><EFBFBD>ջ<EFBFBD><D5BB><EFBFBD><EFBFBD><EFBFBD>
uart_write_string(WIFI_UART_INDEX, "AT+UART_CUR=");
uart_write_string(WIFI_UART_INDEX, baudrate);
uart_write_string(WIFI_UART_INDEX, ",");
@@ -235,7 +235,7 @@ static uint8 wifi_uart_uart_config_set (char *baudrate, char *databits, char *st
uart_write_string(WIFI_UART_INDEX, flow_control);
uart_write_string(WIFI_UART_INDEX, "\r\n");
return_state = wifi_uart_wait_ack("OK", WAIT_TIME_OUT);
wifi_uart_clear_receive_buffer(); // <20><><EFBFBD><EFBFBD>WiFi<46><69><EFBFBD>ջ<EFBFBD><D5BB><EFBFBD><EFBFBD><EFBFBD>
wifi_uart_clear_receive_buffer(); // <20><><EFBFBD><EFBFBD>WiFi<46><69><EFBFBD>ջ<EFBFBD><D5BB><EFBFBD><EFBFBD><EFBFBD>
return return_state;
}
@@ -253,7 +253,7 @@ static uint8 wifi_uart_get_mac (void)
uint8 receiver_buffer[64];
uint32 receiver_len = 64;
wifi_uart_clear_receive_buffer(); // <20><><EFBFBD><EFBFBD>WiFi<46><69><EFBFBD>ջ<EFBFBD><D5BB><EFBFBD><EFBFBD><EFBFBD>
wifi_uart_clear_receive_buffer(); // <20><><EFBFBD><EFBFBD>WiFi<46><69><EFBFBD>ջ<EFBFBD><D5BB><EFBFBD><EFBFBD><EFBFBD>
uart_write_string(WIFI_UART_INDEX, "AT+CIPAPMAC?\r\n");
do
{
@@ -270,7 +270,7 @@ static uint8 wifi_uart_get_mac (void)
break;
}
}while(0);
wifi_uart_clear_receive_buffer(); // <20><><EFBFBD><EFBFBD>WiFi<46><69><EFBFBD>ջ<EFBFBD><D5BB><EFBFBD><EFBFBD><EFBFBD>
wifi_uart_clear_receive_buffer(); // <20><><EFBFBD><EFBFBD>WiFi<46><69><EFBFBD>ջ<EFBFBD><D5BB><EFBFBD><EFBFBD><EFBFBD>
return return_state;
@@ -287,12 +287,12 @@ static uint8 wifi_uart_get_ip (void)
{
uint8 return_state = 0;
wifi_uart_clear_receive_buffer(); // <20><><EFBFBD><EFBFBD>WiFi<46><69><EFBFBD>ջ<EFBFBD><D5BB><EFBFBD><EFBFBD><EFBFBD>
if(wifi_uart_information.wifi_uart_mode == WIFI_UART_STATION)
wifi_uart_clear_receive_buffer(); // <20><><EFBFBD><EFBFBD>WiFi<46><69><EFBFBD>ջ<EFBFBD><D5BB><EFBFBD><EFBFBD><EFBFBD>
if(WIFI_UART_STATION == wifi_uart_information.wifi_uart_mode)
{
uart_write_string(WIFI_UART_INDEX, "AT+CIPSTA?\r\n");
}
else if(wifi_uart_information.wifi_uart_mode == WIFI_UART_SOFTAP)
else if(WIFI_UART_SOFTAP == wifi_uart_information.wifi_uart_mode)
{
uart_write_string(WIFI_UART_INDEX, "AT+CIPAP?\r\n");
}
@@ -313,7 +313,7 @@ static uint8 wifi_uart_get_ip (void)
break;
}
}while(0);
wifi_uart_clear_receive_buffer(); // <20><><EFBFBD><EFBFBD>WiFi<46><69><EFBFBD>ջ<EFBFBD><D5BB><EFBFBD><EFBFBD><EFBFBD>
wifi_uart_clear_receive_buffer(); // <20><><EFBFBD><EFBFBD>WiFi<46><69><EFBFBD>ջ<EFBFBD><D5BB><EFBFBD><EFBFBD><EFBFBD>
return return_state;
}
@@ -366,8 +366,8 @@ static uint8 wifi_uart_set_wifi (char *wifi_ssid, char *pass_word)
{
uint8 return_state = 0;
wifi_uart_clear_receive_buffer(); // <20><><EFBFBD><EFBFBD>WiFi<46><69><EFBFBD>ջ<EFBFBD><D5BB><EFBFBD><EFBFBD><EFBFBD>
if(wifi_uart_information.wifi_uart_mode == WIFI_UART_SOFTAP)
wifi_uart_clear_receive_buffer(); // <20><><EFBFBD><EFBFBD>WiFi<46><69><EFBFBD>ջ<EFBFBD><D5BB><EFBFBD><EFBFBD><EFBFBD>
if(WIFI_UART_SOFTAP == wifi_uart_information.wifi_uart_mode)
{
uart_write_string(WIFI_UART_INDEX, "AT+CWSAP=\"");
uart_write_string(WIFI_UART_INDEX, wifi_ssid);
@@ -384,7 +384,7 @@ static uint8 wifi_uart_set_wifi (char *wifi_ssid, char *pass_word)
uart_write_string(WIFI_UART_INDEX, "\"\r\n");
}
return_state = wifi_uart_wait_ack("OK", WAIT_TIME_OUT);
wifi_uart_clear_receive_buffer(); // <20><><EFBFBD><EFBFBD>WiFi<46><69><EFBFBD>ջ<EFBFBD><D5BB><EFBFBD><EFBFBD><EFBFBD>
wifi_uart_clear_receive_buffer(); // <20><><EFBFBD><EFBFBD>WiFi<46><69><EFBFBD>ջ<EFBFBD><D5BB><EFBFBD><EFBFBD><EFBFBD>
return return_state;
}
@@ -400,12 +400,12 @@ static uint8 wifi_uart_auto_connect_wifi (char *model)
{
uint8 return_state = 0;
wifi_uart_clear_receive_buffer(); // <20><><EFBFBD><EFBFBD>WiFi<46><69><EFBFBD>ջ<EFBFBD><D5BB><EFBFBD><EFBFBD><EFBFBD>
wifi_uart_clear_receive_buffer(); // <20><><EFBFBD><EFBFBD>WiFi<46><69><EFBFBD>ջ<EFBFBD><D5BB><EFBFBD><EFBFBD><EFBFBD>
uart_write_string(WIFI_UART_INDEX, "AT+CWAUTOCONN=");
uart_write_string(WIFI_UART_INDEX, model);
uart_write_string(WIFI_UART_INDEX, "\r\n");
return_state = wifi_uart_wait_ack("OK", WAIT_TIME_OUT);
wifi_uart_clear_receive_buffer(); // <20><><EFBFBD><EFBFBD>WiFi<46><69><EFBFBD>ջ<EFBFBD><D5BB><EFBFBD><EFBFBD><EFBFBD>
wifi_uart_clear_receive_buffer(); // <20><><EFBFBD><EFBFBD>WiFi<46><69><EFBFBD>ջ<EFBFBD><D5BB><EFBFBD><EFBFBD><EFBFBD>
return return_state;
}
@@ -421,12 +421,12 @@ static uint8 wifi_uart_set_connect_model (char *model)
{
uint8 return_state = 0;
wifi_uart_clear_receive_buffer(); // <20><><EFBFBD><EFBFBD>WiFi<46><69><EFBFBD>ջ<EFBFBD><D5BB><EFBFBD><EFBFBD><EFBFBD>
wifi_uart_clear_receive_buffer(); // <20><><EFBFBD><EFBFBD>WiFi<46><69><EFBFBD>ջ<EFBFBD><D5BB><EFBFBD><EFBFBD><EFBFBD>
uart_write_string(WIFI_UART_INDEX, "AT+CIPMUX=");
uart_write_string(WIFI_UART_INDEX, model);
uart_write_string(WIFI_UART_INDEX, "\r\n");
return_state = wifi_uart_wait_ack("OK", WAIT_TIME_OUT);
wifi_uart_clear_receive_buffer(); // <20><><EFBFBD><EFBFBD>WiFi<46><69><EFBFBD>ջ<EFBFBD><D5BB><EFBFBD><EFBFBD><EFBFBD>
wifi_uart_clear_receive_buffer(); // <20><><EFBFBD><EFBFBD>WiFi<46><69><EFBFBD>ջ<EFBFBD><D5BB><EFBFBD><EFBFBD><EFBFBD>
return return_state;
}
@@ -443,12 +443,12 @@ static uint8 wifi_uart_set_transfer_model (char *model)
{
uint8 return_state = 0;
wifi_uart_clear_receive_buffer(); // <20><><EFBFBD><EFBFBD>WiFi<46><69><EFBFBD>ջ<EFBFBD><D5BB><EFBFBD><EFBFBD><EFBFBD>
wifi_uart_clear_receive_buffer(); // <20><><EFBFBD><EFBFBD>WiFi<46><69><EFBFBD>ջ<EFBFBD><D5BB><EFBFBD><EFBFBD><EFBFBD>
uart_write_string(WIFI_UART_INDEX, "AT+CIPMODE=");
uart_write_string(WIFI_UART_INDEX, model);
uart_write_string(WIFI_UART_INDEX, "\r\n");
return_state = wifi_uart_wait_ack("OK", WAIT_TIME_OUT);
wifi_uart_clear_receive_buffer(); // <20><><EFBFBD><EFBFBD>WiFi<46><69><EFBFBD>ջ<EFBFBD><D5BB><EFBFBD><EFBFBD><EFBFBD>
wifi_uart_clear_receive_buffer(); // <20><><EFBFBD><EFBFBD>WiFi<46><69><EFBFBD>ջ<EFBFBD><D5BB><EFBFBD><EFBFBD><EFBFBD>
return return_state;
}
@@ -458,21 +458,21 @@ static uint8 wifi_uart_set_transfer_model (char *model)
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> void
// <20><><EFBFBD>ز<EFBFBD><D8B2><EFBFBD> uint8 0<><30><EFBFBD>ɹ<EFBFBD> 1<><31>ʧ<EFBFBD><CAA7>
// ʹ<><CAB9>ʾ<EFBFBD><CABE> wifi_uart_soft_reset();
// <20><>ע<EFBFBD><D7A2>Ϣ
// <20><>ע<EFBFBD><D7A2>Ϣ
//--------------------------------------------------------------------------------------------------
uint8 wifi_uart_soft_reset (void)
{
uint8 return_state = 0;
wifi_uart_clear_receive_buffer(); // <20><><EFBFBD><EFBFBD>WiFi<46><69><EFBFBD>ջ<EFBFBD><D5BB><EFBFBD><EFBFBD><EFBFBD>
wifi_uart_clear_receive_buffer(); // <20><><EFBFBD><EFBFBD>WiFi<46><69><EFBFBD>ջ<EFBFBD><D5BB><EFBFBD><EFBFBD><EFBFBD>
uart_write_string(WIFI_UART_INDEX, "+++");
system_delay_ms(100);
uart_write_string(WIFI_UART_INDEX, "\r\n");
system_delay_ms(100);
wifi_uart_clear_receive_buffer(); // <20><><EFBFBD><EFBFBD>WiFi<46><69><EFBFBD>ջ<EFBFBD><D5BB><EFBFBD><EFBFBD><EFBFBD>
wifi_uart_clear_receive_buffer(); // <20><><EFBFBD><EFBFBD>WiFi<46><69><EFBFBD>ջ<EFBFBD><D5BB><EFBFBD><EFBFBD><EFBFBD>
uart_write_string(WIFI_UART_INDEX, "AT+RST\r\n");
return_state = wifi_uart_wait_ack("ready", WAIT_TIME_OUT);
wifi_uart_clear_receive_buffer(); // <20><><EFBFBD><EFBFBD>WiFi<46><69><EFBFBD>ջ<EFBFBD><D5BB><EFBFBD><EFBFBD><EFBFBD>
wifi_uart_clear_receive_buffer(); // <20><><EFBFBD><EFBFBD>WiFi<46><69><EFBFBD>ջ<EFBFBD><D5BB><EFBFBD><EFBFBD><EFBFBD>
return return_state;
}
@@ -482,7 +482,7 @@ uint8 wifi_uart_soft_reset (void)
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> void
// <20><><EFBFBD>ز<EFBFBD><D8B2><EFBFBD> uint8 0<><30><EFBFBD>ɹ<EFBFBD> 1<><31>ʧ<EFBFBD><CAA7>
// ʹ<><CAB9>ʾ<EFBFBD><CABE> wifi_uart_reset();
// <20><>ע<EFBFBD><D7A2>Ϣ
// <20><>ע<EFBFBD><D7A2>Ϣ
//--------------------------------------------------------------------------------------------------
uint8 wifi_uart_reset (void)
{
@@ -493,9 +493,9 @@ uint8 wifi_uart_reset (void)
system_delay_ms(50);
gpio_set_level(WIFI_UART_RST_PIN, 1);
system_delay_ms(200);
wifi_uart_clear_receive_buffer(); // <20><><EFBFBD><EFBFBD>WiFi<46><69><EFBFBD>ջ<EFBFBD><D5BB><EFBFBD><EFBFBD><EFBFBD>
wifi_uart_clear_receive_buffer(); // <20><><EFBFBD><EFBFBD>WiFi<46><69><EFBFBD>ջ<EFBFBD><D5BB><EFBFBD><EFBFBD><EFBFBD>
return_state = wifi_uart_wait_ack("ready", WAIT_TIME_OUT);
wifi_uart_clear_receive_buffer(); // <20><><EFBFBD><EFBFBD>WiFi<46><69><EFBFBD>ջ<EFBFBD><D5BB><EFBFBD><EFBFBD><EFBFBD>
wifi_uart_clear_receive_buffer(); // <20><><EFBFBD><EFBFBD>WiFi<46><69><EFBFBD>ջ<EFBFBD><D5BB><EFBFBD><EFBFBD><EFBFBD>
return return_state;
#else
@@ -508,14 +508,14 @@ uint8 wifi_uart_reset (void)
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> state 0:<3A><> Wi-Fi ģʽ<C4A3><CABD><EFBFBD><EFBFBD><EFBFBD>ҹر<D2B9> Wi-Fi RF----1: Station ģʽ----2: SoftAP ģʽ----3: SoftAP+Station ģʽ
// <20><><EFBFBD>ز<EFBFBD><D8B2><EFBFBD> uint8 0<><30><EFBFBD>ɹ<EFBFBD> 1<><31>ʧ<EFBFBD><CAA7>
// ʹ<><CAB9>ʾ<EFBFBD><CABE> wifi_uart_set_model("1");
// <20><>ע<EFBFBD><D7A2>Ϣ
// <20><>ע<EFBFBD><D7A2>Ϣ
//--------------------------------------------------------------------------------------------------
uint8 wifi_uart_set_model (wifi_uart_mode_enum mode)
{
uint8 return_state = 0;
wifi_uart_clear_receive_buffer(); // <20><><EFBFBD><EFBFBD>WiFi<46><69><EFBFBD>ջ<EFBFBD><D5BB><EFBFBD><EFBFBD><EFBFBD>
if(mode == WIFI_UART_SOFTAP)
wifi_uart_clear_receive_buffer(); // <20><><EFBFBD><EFBFBD>WiFi<46><69><EFBFBD>ջ<EFBFBD><D5BB><EFBFBD><EFBFBD><EFBFBD>
if(WIFI_UART_SOFTAP == mode)
{
uart_write_string(WIFI_UART_INDEX, "AT+CWMODE=2\r\n");
}
@@ -526,7 +526,7 @@ uint8 wifi_uart_set_model (wifi_uart_mode_enum mode)
// <20><><EFBFBD><EFBFBD>ģ<EFBFBD><EFBFBD><E9B9A4>ģʽ
wifi_uart_information.wifi_uart_mode = mode;
return_state = wifi_uart_wait_ack("OK", WAIT_TIME_OUT);
wifi_uart_clear_receive_buffer(); // <20><><EFBFBD><EFBFBD>WiFi<46><69><EFBFBD>ջ<EFBFBD><D5BB><EFBFBD><EFBFBD><EFBFBD>
wifi_uart_clear_receive_buffer(); // <20><><EFBFBD><EFBFBD>WiFi<46><69><EFBFBD>ջ<EFBFBD><D5BB><EFBFBD><EFBFBD><EFBFBD>
return return_state;
}
@@ -536,16 +536,16 @@ uint8 wifi_uart_set_model (wifi_uart_mode_enum mode)
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> void
// <20><><EFBFBD>ز<EFBFBD><D8B2><EFBFBD> uint8 0<><30><EFBFBD>ɹ<EFBFBD> 1<><31>ʧ<EFBFBD><CAA7>
// ʹ<><CAB9>ʾ<EFBFBD><CABE> wifi_uart_disconnected_wifi();
// <20><>ע<EFBFBD><D7A2>Ϣ
// <20><>ע<EFBFBD><D7A2>Ϣ
//--------------------------------------------------------------------------------------------------
uint8 wifi_uart_disconnected_wifi (void)
{
uint8 return_state = 0;
wifi_uart_clear_receive_buffer(); // <20><><EFBFBD><EFBFBD>WiFi<46><69><EFBFBD>ջ<EFBFBD><D5BB><EFBFBD><EFBFBD><EFBFBD>
wifi_uart_clear_receive_buffer(); // <20><><EFBFBD><EFBFBD>WiFi<46><69><EFBFBD>ջ<EFBFBD><D5BB><EFBFBD><EFBFBD><EFBFBD>
uart_write_string(WIFI_UART_INDEX, "AT+CWQAP\r\n");
return_state = wifi_uart_wait_ack("OK", WAIT_TIME_OUT);
wifi_uart_clear_receive_buffer(); // <20><><EFBFBD><EFBFBD>WiFi<46><69><EFBFBD>ջ<EFBFBD><D5BB><EFBFBD><EFBFBD><EFBFBD>
wifi_uart_clear_receive_buffer(); // <20><><EFBFBD><EFBFBD>WiFi<46><69><EFBFBD>ջ<EFBFBD><D5BB><EFBFBD><EFBFBD><EFBFBD>
return return_state;
}
@@ -555,30 +555,30 @@ uint8 wifi_uart_disconnected_wifi (void)
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> void
// <20><><EFBFBD>ز<EFBFBD><D8B2><EFBFBD> uint8 0<><30><EFBFBD>ɹ<EFBFBD> 1<><31>ʧ<EFBFBD><CAA7>
// ʹ<><CAB9>ʾ<EFBFBD><CABE> wifi_uart_entry_serianet();
// <20><>ע<EFBFBD><D7A2>Ϣ
// <20><>ע<EFBFBD><D7A2>Ϣ
//--------------------------------------------------------------------------------------------------
uint8 wifi_uart_entry_serianet (void)
{
uint8 return_state = 0;
wifi_uart_clear_receive_buffer(); // <20><><EFBFBD><EFBFBD>WiFi<46><69><EFBFBD>ջ<EFBFBD><D5BB><EFBFBD><EFBFBD><EFBFBD>
wifi_uart_clear_receive_buffer(); // <20><><EFBFBD><EFBFBD>WiFi<46><69><EFBFBD>ջ<EFBFBD><D5BB><EFBFBD><EFBFBD><EFBFBD>
uart_write_string(WIFI_UART_INDEX, "AT+CIPSEND\r\n");
return_state = wifi_uart_wait_ack("OK", WAIT_TIME_OUT);
wifi_uart_clear_receive_buffer(); // <20><><EFBFBD><EFBFBD>WiFi<46><69><EFBFBD>ջ<EFBFBD><D5BB><EFBFBD><EFBFBD><EFBFBD>
wifi_uart_clear_receive_buffer(); // <20><><EFBFBD><EFBFBD>WiFi<46><69><EFBFBD>ջ<EFBFBD><D5BB><EFBFBD><EFBFBD><EFBFBD>
return return_state;
}
//--------------------------------------------------------------------------------------------------
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>˳<EFBFBD>͸<EFBFBD><CDB8>ģʽ
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> model 0:<3A>ر<EFBFBD>͸<EFBFBD><CDB8>ģʽ <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>͸<EFBFBD><CDB8>ģʽ
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> void
// <20><><EFBFBD>ز<EFBFBD><D8B2><EFBFBD> uint8 0<><30><EFBFBD>ɹ<EFBFBD> 1<><31>ʧ<EFBFBD><CAA7>
// ʹ<><CAB9>ʾ<EFBFBD><CABE> wifi_uart_exit_serianet();
// <20><>ע<EFBFBD><D7A2>Ϣ
// ʹ<><CAB9>ʾ<EFBFBD><CABE> wifi_uart_exit_serianet();
// <20><>ע<EFBFBD><D7A2>Ϣ
//--------------------------------------------------------------------------------------------------
uint8 wifi_uart_exit_serianet (void)
{
wifi_uart_clear_receive_buffer(); // <20><><EFBFBD><EFBFBD>WiFi<46><69><EFBFBD>ջ<EFBFBD><D5BB><EFBFBD><EFBFBD><EFBFBD>
wifi_uart_clear_receive_buffer(); // <20><><EFBFBD><EFBFBD>WiFi<46><69><EFBFBD>ջ<EFBFBD><D5BB><EFBFBD><EFBFBD><EFBFBD>
system_delay_ms(20);
uart_write_string(WIFI_UART_INDEX, "+++");
@@ -598,12 +598,12 @@ uint8 wifi_uart_exit_serianet (void)
//--------------------------------------------------------------------------------------------------
uint8 wifi_uart_connect_tcp_servers (char *ip, char *port, wifi_uart_transfer_mode_enum mode)
{
zf_assert(ip != NULL);
zf_assert(port != NULL);
zf_assert(NULL != ip);
zf_assert(NULL != port);
uint8 return_state = 0;
wifi_uart_clear_receive_buffer(); // <20><><EFBFBD><EFBFBD>WiFi<46><69><EFBFBD>ջ<EFBFBD><D5BB><EFBFBD><EFBFBD><EFBFBD>
wifi_uart_clear_receive_buffer(); // <20><><EFBFBD><EFBFBD>WiFi<46><69><EFBFBD>ջ<EFBFBD><D5BB><EFBFBD><EFBFBD><EFBFBD>
do
{
if(wifi_uart_set_connect_model("0"))
@@ -612,7 +612,7 @@ uint8 wifi_uart_connect_tcp_servers (char *ip, char *port, wifi_uart_transfer_mo
break;
}
wifi_uart_clear_receive_buffer(); // <20><><EFBFBD><EFBFBD>WiFi<46><69><EFBFBD>ջ<EFBFBD><D5BB><EFBFBD><EFBFBD><EFBFBD>
wifi_uart_clear_receive_buffer(); // <20><><EFBFBD><EFBFBD>WiFi<46><69><EFBFBD>ջ<EFBFBD><D5BB><EFBFBD><EFBFBD><EFBFBD>
uart_write_string(WIFI_UART_INDEX, "AT+CIPSTARTEX=\"TCP\",\"");
uart_write_string(WIFI_UART_INDEX, ip);
@@ -626,16 +626,16 @@ uint8 wifi_uart_connect_tcp_servers (char *ip, char *port, wifi_uart_transfer_mo
break;
}
wifi_uart_clear_receive_buffer(); // <20><><EFBFBD><EFBFBD>WiFi<46><69><EFBFBD>ջ<EFBFBD><D5BB><EFBFBD><EFBFBD><EFBFBD>
wifi_uart_clear_receive_buffer(); // <20><><EFBFBD><EFBFBD>WiFi<46><69><EFBFBD>ջ<EFBFBD><D5BB><EFBFBD><EFBFBD><EFBFBD>
// <20><><EFBFBD>ô<EFBFBD><C3B4><EFBFBD>ģʽ
if(wifi_uart_set_transfer_model(mode == WIFI_UART_COMMAND ? "0" : "1"))
if(wifi_uart_set_transfer_model(WIFI_UART_COMMAND == mode ? "0" : "1"))
{
return_state = 1;
break;
}
wifi_uart_clear_receive_buffer(); // <20><><EFBFBD><EFBFBD>WiFi<46><69><EFBFBD>ջ<EFBFBD><D5BB><EFBFBD><EFBFBD><EFBFBD>
wifi_uart_clear_receive_buffer(); // <20><><EFBFBD><EFBFBD>WiFi<46><69><EFBFBD>ջ<EFBFBD><D5BB><EFBFBD><EFBFBD><EFBFBD>
uart_write_string(WIFI_UART_INDEX, "AT+CIPSTATE?\r\n");
if(wifi_uart_wait_ack("OK", WAIT_TIME_OUT))
{
@@ -648,14 +648,14 @@ uint8 wifi_uart_connect_tcp_servers (char *ip, char *port, wifi_uart_transfer_mo
uint32 receiver_len = 128;
fifo_read_buffer(&wifi_uart_fifo, receiver_buffer, &receiver_len, FIFO_READ_ONLY);
char* buffer_index = (char *)receiver_buffer;
char* end_index;
char* end_index = NULL;
buffer_index += 22;
buffer_index += strlen(ip);
buffer_index += strlen(port);
end_index = strchr(buffer_index, ',');
memcpy(wifi_uart_information.wifi_uart_local_port, " ", 9);
memcpy(wifi_uart_information.wifi_uart_local_port, " ", 7);
memcpy(wifi_uart_information.wifi_uart_local_port, buffer_index, (end_index - buffer_index));
}
@@ -663,8 +663,8 @@ uint8 wifi_uart_connect_tcp_servers (char *ip, char *port, wifi_uart_transfer_mo
wifi_uart_information.wifi_uart_connect_mode = WIFI_UART_TCP_CLIENT;
wifi_uart_information.wifi_uart_transfer_mode = mode;
wifi_uart_clear_receive_buffer(); // <20><><EFBFBD><EFBFBD>WiFi<46><69><EFBFBD>ջ<EFBFBD><D5BB><EFBFBD><EFBFBD><EFBFBD>
if(mode == WIFI_UART_SERIANET) // ͸<><CDB8>ģʽ<C4A3><CABD>ֱ<EFBFBD>ӿ<EFBFBD><D3BF><EFBFBD>͸<EFBFBD><CDB8>
wifi_uart_clear_receive_buffer(); // <20><><EFBFBD><EFBFBD>WiFi<46><69><EFBFBD>ջ<EFBFBD><D5BB><EFBFBD><EFBFBD><EFBFBD>
if(WIFI_UART_SERIANET == mode) // ͸<><CDB8>ģʽ<C4A3><CABD>ֱ<EFBFBD>ӿ<EFBFBD><D3BF><EFBFBD>͸<EFBFBD><CDB8>
{
if(wifi_uart_entry_serianet())
{
@@ -672,9 +672,9 @@ uint8 wifi_uart_connect_tcp_servers (char *ip, char *port, wifi_uart_transfer_mo
break;
}
}
wifi_uart_send_buffer((uint8 *)"TCP connect!", 12);
}while(0);
wifi_uart_clear_receive_buffer(); // <20><><EFBFBD><EFBFBD>WiFi<46><69><EFBFBD>ջ<EFBFBD><D5BB><EFBFBD><EFBFBD><EFBFBD>
wifi_uart_clear_receive_buffer(); // <20><><EFBFBD><EFBFBD>WiFi<46><69><EFBFBD>ջ<EFBFBD><D5BB><EFBFBD><EFBFBD><EFBFBD>
return return_state;
}
@@ -691,9 +691,9 @@ uint8 wifi_uart_connect_tcp_servers (char *ip, char *port, wifi_uart_transfer_mo
//--------------------------------------------------------------------------------------------------
uint8 wifi_uart_connect_udp_client (char *ip, char *port, char *local_port, wifi_uart_transfer_mode_enum mode)
{
zf_assert(ip != NULL);
zf_assert(port != NULL);
zf_assert(local_port != NULL);
zf_assert(NULL != ip);
zf_assert(NULL != port);
zf_assert(NULL != local_port);
uint8 return_state = 0;
wifi_uart_clear_receive_buffer(); // <20><><EFBFBD><EFBFBD>WiFi<46><69><EFBFBD>ջ<EFBFBD><D5BB><EFBFBD><EFBFBD><EFBFBD>
@@ -723,14 +723,14 @@ uint8 wifi_uart_connect_udp_client (char *ip, char *port, char *local_port, wifi
}
wifi_uart_clear_receive_buffer(); // <20><><EFBFBD><EFBFBD>WiFi<46><69><EFBFBD>ջ<EFBFBD><D5BB><EFBFBD><EFBFBD><EFBFBD>
if(wifi_uart_set_transfer_model(mode == WIFI_UART_COMMAND ? "0" : "1")) // <20><><EFBFBD>ô<EFBFBD><C3B4><EFBFBD>ģʽ
if(wifi_uart_set_transfer_model(WIFI_UART_COMMAND == mode ? "0" : "1")) // <20><><EFBFBD>ô<EFBFBD><C3B4><EFBFBD>ģʽ
{
return_state = 1;
break;
}
wifi_uart_clear_receive_buffer(); // <20><><EFBFBD><EFBFBD>WiFi<46><69><EFBFBD>ջ<EFBFBD><D5BB><EFBFBD><EFBFBD><EFBFBD>
if(mode == WIFI_UART_SERIANET) // ͸<><CDB8>ģʽ<C4A3><CABD>ֱ<EFBFBD>ӿ<EFBFBD><D3BF><EFBFBD>͸<EFBFBD><CDB8>
if(WIFI_UART_SERIANET == mode) // ͸<><CDB8>ģʽ<C4A3><CABD>ֱ<EFBFBD>ӿ<EFBFBD><D3BF><EFBFBD>͸<EFBFBD><CDB8>
{
if(wifi_uart_entry_serianet())
{
@@ -743,7 +743,6 @@ uint8 wifi_uart_connect_udp_client (char *ip, char *port, char *local_port, wifi
wifi_uart_information.wifi_uart_connect_state = WIFI_UART_SERVER_ON;
wifi_uart_information.wifi_uart_connect_mode = WIFI_UART_UDP_CLIENT;
wifi_uart_information.wifi_uart_transfer_mode = mode;
wifi_uart_send_buffer((uint8 *)"UDP connect!", 12);
}while(0);
wifi_uart_clear_receive_buffer(); // <20><><EFBFBD><EFBFBD>WiFi<46><69><EFBFBD>ջ<EFBFBD><D5BB><EFBFBD><EFBFBD><EFBFBD>
@@ -755,7 +754,7 @@ uint8 wifi_uart_connect_udp_client (char *ip, char *port, char *local_port, wifi
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> void
// <20><><EFBFBD>ز<EFBFBD><D8B2><EFBFBD> uint8 0<><30><EFBFBD>ɹ<EFBFBD> 1<><31>ʧ<EFBFBD><CAA7>
// ʹ<><CAB9>ʾ<EFBFBD><CABE> wifi_uart_disconnect_link();
// <20><>ע<EFBFBD><D7A2>Ϣ
// <20><>ע<EFBFBD><D7A2>Ϣ
//--------------------------------------------------------------------------------------------------
uint8 wifi_uart_disconnect_link (void)
{
@@ -780,7 +779,7 @@ uint8 wifi_uart_disconnect_link (void)
break;
}
}while(0);
wifi_uart_clear_receive_buffer(); // <20><><EFBFBD><EFBFBD>WiFi<46><69><EFBFBD>ջ<EFBFBD><D5BB><EFBFBD><EFBFBD><EFBFBD>
wifi_uart_clear_receive_buffer(); // <20><><EFBFBD><EFBFBD>WiFi<46><69><EFBFBD>ջ<EFBFBD><D5BB><EFBFBD><EFBFBD><EFBFBD>
return return_state;
}
@@ -790,7 +789,7 @@ uint8 wifi_uart_disconnect_link (void)
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> link_id <20><>Ҫ<EFBFBD>Ͽ<EFBFBD><CFBF><EFBFBD>Ŀ<EFBFBD><C4BF><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// <20><><EFBFBD>ز<EFBFBD><D8B2><EFBFBD> uint8 0<><30><EFBFBD>ɹ<EFBFBD> 1<><31>ʧ<EFBFBD><CAA7>
// ʹ<><CAB9>ʾ<EFBFBD><CABE> wifi_uart_disconnect_link_with_id(WIFI_UART_LINK_0);
// <20><>ע<EFBFBD><D7A2>Ϣ
// <20><>ע<EFBFBD><D7A2>Ϣ
//--------------------------------------------------------------------------------------------------
uint8 wifi_uart_disconnect_link_with_id (wifi_uart_link_id_enum link_id)
{
@@ -807,7 +806,6 @@ uint8 wifi_uart_disconnect_link_with_id (wifi_uart_link_id_enum link_id)
}
else
{
return_state = 1;
break;
}
@@ -818,7 +816,7 @@ uint8 wifi_uart_disconnect_link_with_id (wifi_uart_link_id_enum link_id)
break;
}
}while(0);
wifi_uart_clear_receive_buffer(); // <20><><EFBFBD><EFBFBD>WiFi<46><69><EFBFBD>ջ<EFBFBD><D5BB><EFBFBD><EFBFBD><EFBFBD>
wifi_uart_clear_receive_buffer(); // <20><><EFBFBD><EFBFBD>WiFi<46><69><EFBFBD>ջ<EFBFBD><D5BB><EFBFBD><EFBFBD><EFBFBD>
return return_state;
}
@@ -832,7 +830,7 @@ uint8 wifi_uart_disconnect_link_with_id (wifi_uart_link_id_enum link_id)
//--------------------------------------------------------------------------------------------------
uint8 wifi_uart_entry_tcp_servers (char *port)
{
zf_assert(port != NULL);
zf_assert(NULL != port);
uint8 return_state = 0;
wifi_uart_clear_receive_buffer(); // <20><><EFBFBD><EFBFBD>WiFi<46><69><EFBFBD>ջ<EFBFBD><D5BB><EFBFBD><EFBFBD><EFBFBD>
@@ -868,7 +866,7 @@ uint8 wifi_uart_entry_tcp_servers (char *port)
wifi_uart_information.wifi_uart_transfer_mode = WIFI_UART_COMMAND;
wifi_uart_information.wifi_uart_connect_mode = WIFI_UART_TCP_SERVER;
}while(0);
wifi_uart_clear_receive_buffer(); // <20><><EFBFBD><EFBFBD>WiFi<46><69><EFBFBD>ջ<EFBFBD><D5BB><EFBFBD><EFBFBD><EFBFBD>
wifi_uart_clear_receive_buffer(); // <20><><EFBFBD><EFBFBD>WiFi<46><69><EFBFBD>ջ<EFBFBD><D5BB><EFBFBD><EFBFBD><EFBFBD>
return return_state;
}
@@ -878,7 +876,7 @@ uint8 wifi_uart_entry_tcp_servers (char *port)
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> void
// <20><><EFBFBD>ز<EFBFBD><D8B2><EFBFBD> uint8 0<><30><EFBFBD>ɹ<EFBFBD> 1<><31>ʧ<EFBFBD><CAA7>
// ʹ<><CAB9>ʾ<EFBFBD><CABE> wifi_uart_exit_tcp_servers();
// <20><>ע<EFBFBD><D7A2>Ϣ
// <20><>ע<EFBFBD><D7A2>Ϣ
//--------------------------------------------------------------------------------------------------
uint8 wifi_uart_exit_tcp_servers (void)
{
@@ -897,22 +895,22 @@ uint8 wifi_uart_exit_tcp_servers (void)
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> void
// <20><><EFBFBD>ز<EFBFBD><D8B2><EFBFBD> uint8 <20><>ǰ<EFBFBD><C7B0><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// ʹ<><CAB9>ʾ<EFBFBD><CABE> wifi_uart_tcp_servers_check_link();
// <20><>ע<EFBFBD><D7A2>Ϣ
// <20><>ע<EFBFBD><D7A2>Ϣ
//--------------------------------------------------------------------------------------------------
uint8 wifi_uart_tcp_servers_check_link (void)
{
uint8 return_value = 0;
uint8 loop_temp = 0;
uint8 linke_index = 0;
uint8 receiver_buffer[256];
uint32 receiver_len = 256;
char* buffer_index;
char* start_index;
char* end_index;
for(loop_temp = 0; loop_temp < 5; loop_temp ++)
char* buffer_index = NULL;
char* start_index = NULL;
char* end_index = NULL;
for(loop_temp = 0; 5 > loop_temp; loop_temp ++)
{
memset(wifi_uart_information.wifi_uart_remote_ip[loop_temp], 0, 15);
}
@@ -920,11 +918,11 @@ uint8 wifi_uart_tcp_servers_check_link (void)
wifi_uart_clear_receive_buffer(); // <20><><EFBFBD><EFBFBD>WiFi<46><69><EFBFBD>ջ<EFBFBD><D5BB><EFBFBD><EFBFBD><EFBFBD>
uart_write_string(WIFI_UART_INDEX, "AT+CIPSTATE?\r\n");
if(wifi_uart_wait_ack("OK", WAIT_TIME_OUT) == 0)
if(0 == wifi_uart_wait_ack("OK", WAIT_TIME_OUT))
{
fifo_read_buffer(&wifi_uart_fifo, receiver_buffer, &receiver_len, FIFO_READ_ONLY);
buffer_index = (char *)receiver_buffer;
for(loop_temp = 0; loop_temp < 5; loop_temp ++)
for(loop_temp = 0; 5 > loop_temp; loop_temp ++)
{
start_index = strchr(buffer_index, ':');
if(NULL == start_index)
@@ -948,25 +946,25 @@ uint8 wifi_uart_tcp_servers_check_link (void)
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> WiFi ģ<><C4A3> <20><><EFBFBD>ͺ<EFBFBD><CDBA><EFBFBD>
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> buff <20><>Ҫ<EFBFBD><D2AA><EFBFBD>͵<EFBFBD><CDB5><EFBFBD><EFBFBD>ݵ<EFBFBD>ַ
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> len <20><><EFBFBD>ͳ<EFBFBD><CDB3><EFBFBD>
// <20><><EFBFBD>ز<EFBFBD><D8B2><EFBFBD> uint16 ʣ<><CAA3>δ<EFBFBD><CEB4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݳ<EFBFBD><DDB3><EFBFBD>
// <20><><EFBFBD>ز<EFBFBD><D8B2><EFBFBD> uint32 ʣ<><CAA3>δ<EFBFBD><CEB4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݳ<EFBFBD><DDB3><EFBFBD>
// ʹ<><CAB9>ʾ<EFBFBD><CABE> wifi_uart_send_buffer("123", 3);
// <20><>ע<EFBFBD><D7A2>Ϣ <20><>ģ<EFBFBD><C4A3><EFBFBD><EFBFBD>ΪTCP<43><50><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݺ<EFBFBD><DDBA><EFBFBD>Ĭ<EFBFBD>Ͻ<EFBFBD><CFBD><EFBFBD><EFBFBD>ݷ<EFBFBD><DDB7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ģ<EFBFBD><C4A3><EFBFBD>Ŀͻ<C4BF><CDBB><EFBFBD>
//-------------------------------------------------------------------------------------------------------------------
uint32 wifi_uart_send_buffer (uint8 *buff, uint32 len)
{
zf_assert(buff != NULL);
zf_assert(NULL != buff);
int32 timeout = WAIT_TIME_OUT;
char lenth[32] = {0};
if(wifi_uart_information.wifi_uart_connect_state == WIFI_UART_SERVER_ON)
if(WIFI_UART_SERVER_ON == wifi_uart_information.wifi_uart_connect_state)
{
if(wifi_uart_information.wifi_uart_transfer_mode == WIFI_UART_COMMAND)
if(WIFI_UART_COMMAND == wifi_uart_information.wifi_uart_transfer_mode)
{
wifi_uart_clear_receive_buffer(); // <20><><EFBFBD><EFBFBD>WiFi<46><69><EFBFBD>ջ<EFBFBD><D5BB><EFBFBD><EFBFBD><EFBFBD>
func_int_to_str(lenth,len);
if(len > 8192)
if(8192 < len)
{
uart_write_string(WIFI_UART_INDEX, "AT+CIPSENDL=");
}
@@ -974,7 +972,7 @@ uint32 wifi_uart_send_buffer (uint8 *buff, uint32 len)
{
uart_write_string(WIFI_UART_INDEX, "AT+CIPSEND=");
}
if(wifi_uart_information.wifi_uart_connect_mode == WIFI_UART_TCP_SERVER)
if(WIFI_UART_TCP_SERVER == wifi_uart_information.wifi_uart_connect_mode)
{
uart_write_string(WIFI_UART_INDEX, "0,");
}
@@ -982,22 +980,20 @@ uint32 wifi_uart_send_buffer (uint8 *buff, uint32 len)
uart_write_string(WIFI_UART_INDEX, lenth);
uart_write_string(WIFI_UART_INDEX, "\r\n");
if(wifi_uart_wait_ack("OK", WAIT_TIME_OUT) == 0) // <20>ȴ<EFBFBD>ģ<EFBFBD><C4A3><EFBFBD><EFBFBD>Ӧ
if(0 == wifi_uart_wait_ack("OK", WAIT_TIME_OUT)) // <20>ȴ<EFBFBD>ģ<EFBFBD><C4A3><EFBFBD><EFBFBD>Ӧ
{
wifi_uart_clear_receive_buffer(); // <20><><EFBFBD><EFBFBD>WiFi<46><69><EFBFBD>ջ<EFBFBD><D5BB><EFBFBD><EFBFBD><EFBFBD>
uart_write_buffer(WIFI_UART_INDEX, buff, len);
wifi_uart_clear_receive_buffer(); // <20><><EFBFBD><EFBFBD>WiFi<46><69><EFBFBD>ջ<EFBFBD><D5BB><EFBFBD><EFBFBD><EFBFBD>
if(wifi_uart_wait_ack("OK", WAIT_TIME_OUT) == 0) // <20>ȴ<EFBFBD>ģ<EFBFBD><C4A3><EFBFBD><EFBFBD>Ӧ
if(0 == wifi_uart_wait_ack("OK", WAIT_TIME_OUT)) // <20>ȴ<EFBFBD>ģ<EFBFBD><C4A3><EFBFBD><EFBFBD>Ӧ
{
len = 0;
}
wifi_uart_clear_receive_buffer(); // <20><><EFBFBD><EFBFBD>WiFi<46><69><EFBFBD>ջ<EFBFBD><D5BB><EFBFBD><EFBFBD><EFBFBD>
}
}
else
{
while(len--)
while(len --)
{
while(gpio_get_level(WIFI_UART_RTS_PIN) && 0 < timeout -- ); // <20><><EFBFBD><EFBFBD>RTSΪ<53>͵<EFBFBD>ƽ<EFBFBD><C6BD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
if(0 >= timeout)
@@ -1018,22 +1014,22 @@ uint32 wifi_uart_send_buffer (uint8 *buff, uint32 len)
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> buff <20><>Ҫ<EFBFBD><D2AA><EFBFBD>͵<EFBFBD><CDB5><EFBFBD><EFBFBD>ݵ<EFBFBD>ַ
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> len <20><><EFBFBD>ͳ<EFBFBD><CDB3><EFBFBD>
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> id Ŀ<><C4BF> client id
// <20><><EFBFBD>ز<EFBFBD><D8B2><EFBFBD> uint16 ʣ<><CAA3>δ<EFBFBD><CEB4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݳ<EFBFBD><DDB3><EFBFBD>
// <20><><EFBFBD>ز<EFBFBD><D8B2><EFBFBD> uint32 ʣ<><CAA3>δ<EFBFBD><CEB4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݳ<EFBFBD><DDB3><EFBFBD>
// ʹ<><CAB9>ʾ<EFBFBD><CABE> wifi_uart_tcp_servers_send_buffer("123", 3, WIFI_UART_LINK_0);
// <20><>ע<EFBFBD><D7A2>Ϣ <20><>ģ<EFBFBD><C4A3><EFBFBD><EFBFBD>ΪTCP<43><50><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݺ<EFBFBD><DDBA><EFBFBD>Ĭ<EFBFBD>Ͻ<EFBFBD><CFBD><EFBFBD><EFBFBD>ݷ<EFBFBD><DDB7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ģ<EFBFBD><C4A3><EFBFBD>Ŀͻ<C4BF><CDBB><EFBFBD>
//-------------------------------------------------------------------------------------------------------------------
uint32 wifi_uart_tcp_servers_send_buffer (uint8 *buff, uint32 len, wifi_uart_link_id_enum id)
{
zf_assert(buff != NULL);
zf_assert(NULL != buff);
char lenth[32] = {0};
if( wifi_uart_information.wifi_uart_transfer_mode == WIFI_UART_COMMAND && \
wifi_uart_information.wifi_uart_connect_mode == WIFI_UART_TCP_SERVER)
if( WIFI_UART_COMMAND == wifi_uart_information.wifi_uart_transfer_mode && \
WIFI_UART_TCP_SERVER == wifi_uart_information.wifi_uart_connect_mode)
{
wifi_uart_clear_receive_buffer(); // <20><><EFBFBD><EFBFBD>WiFi<46><69><EFBFBD>ջ<EFBFBD><D5BB><EFBFBD><EFBFBD><EFBFBD>
func_int_to_str(lenth,len);
if(len > 8192)
if(8192 < len)
{
uart_write_string(WIFI_UART_INDEX, "AT+CIPSENDL=");
}
@@ -1041,19 +1037,19 @@ uint32 wifi_uart_tcp_servers_send_buffer (uint8 *buff, uint32 len, wifi_uart_lin
{
uart_write_string(WIFI_UART_INDEX, "AT+CIPSEND=");
}
uart_write_byte(WIFI_UART_INDEX, (id + '0'));
uart_write_string(WIFI_UART_INDEX, ",");
uart_write_string(WIFI_UART_INDEX, lenth);
uart_write_string(WIFI_UART_INDEX, "\r\n");
if(wifi_uart_wait_ack("OK", WAIT_TIME_OUT) == 0) // <20>ȴ<EFBFBD>ģ<EFBFBD><C4A3><EFBFBD><EFBFBD>Ӧ
if(0 == wifi_uart_wait_ack("OK", WAIT_TIME_OUT)) // <20>ȴ<EFBFBD>ģ<EFBFBD><C4A3><EFBFBD><EFBFBD>Ӧ
{
// ģ<><C4A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
wifi_uart_clear_receive_buffer(); // <20><><EFBFBD><EFBFBD>WiFi<46><69><EFBFBD>ջ<EFBFBD><D5BB><EFBFBD><EFBFBD><EFBFBD>
uart_write_buffer(WIFI_UART_INDEX, buff, len);
if(wifi_uart_wait_ack("OK", WAIT_TIME_OUT) == 0) // <20>ȴ<EFBFBD>ģ<EFBFBD><C4A3><EFBFBD><EFBFBD>Ӧ
if(0 == wifi_uart_wait_ack("OK", WAIT_TIME_OUT)) // <20>ȴ<EFBFBD>ģ<EFBFBD><C4A3><EFBFBD><EFBFBD>Ӧ
{
len = 0;
}
@@ -1069,14 +1065,14 @@ uint32 wifi_uart_tcp_servers_send_buffer (uint8 *buff, uint32 len, wifi_uart_lin
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> len <20><><EFBFBD><EFBFBD>ȣ<EFBFBD><C8A3><EFBFBD>ֱ<EFBFBD><D6B1><EFBFBD><EFBFBD>д<EFBFBD><D0B4><EFBFBD><EFBFBD>ʹ<EFBFBD><CAB9>sizeof<6F><66><EFBFBD><EFBFBD>
// <20><><EFBFBD>ز<EFBFBD><D8B2><EFBFBD> uint16 <20><><EFBFBD><EFBFBD>ʵ<EFBFBD>ʽ<EFBFBD><CABD>յ<EFBFBD><D5B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݳ<EFBFBD><DDB3><EFBFBD>
// ʹ<><CAB9>ʾ<EFBFBD><CABE> uint8 test_buffer[256]; wifi_uart_read_buffer(&test_buffer[0], sizeof(test_buffer));
// <20><>ע<EFBFBD><D7A2>Ϣ
// <20><>ע<EFBFBD><D7A2>Ϣ
//-------------------------------------------------------------------------------------------------------------------
uint32 wifi_uart_read_buffer (uint8 *buffer, uint32 len)
uint16 wifi_uart_read_buffer (uint8 *buffer, uint16 len)
{
zf_assert(buffer != NULL);
zf_assert(NULL != buffer);
uint32 read_len = len;
fifo_read_buffer(&wifi_uart_fifo, buffer, &read_len, FIFO_READ_AND_CLEAN);
return read_len;
return (uint16)read_len;
}
//--------------------------------------------------------------------------------------------------
@@ -1106,8 +1102,8 @@ void wifi_uart_callback (void)
//-------------------------------------------------------------------------------------------------------------------
uint8 wifi_uart_init (char *wifi_ssid, char *pass_word, wifi_uart_mode_enum wifi_mode)
{
zf_assert(wifi_ssid != NULL);
zf_assert(pass_word != NULL);
zf_assert(NULL != wifi_ssid);
zf_assert(NULL != pass_word);
char uart_baud[32] = {0};
uint8 return_state = 0;
@@ -1144,7 +1140,7 @@ uint8 wifi_uart_init (char *wifi_ssid, char *pass_word, wifi_uart_mode_enum wifi
uart_init(WIFI_UART_INDEX, WIFI_UART_BAUD, WIFI_UART_RX_PIN, WIFI_UART_TX_PIN);
uart_rx_interrupt(WIFI_UART_INDEX, 1);
system_delay_ms(100);
if(wifi_uart_echo_set("0")) // <20>ر<EFBFBD>ģ<EFBFBD><C4A3><EFBFBD><EFBFBD>д
{
zf_log(0, "exit echo failed");
@@ -1180,7 +1176,7 @@ uint8 wifi_uart_init (char *wifi_ssid, char *pass_word, wifi_uart_mode_enum wifi
break;
}
#if WIFI_UART_AUTO_CONNECT == 1
if(wifi_uart_connect_tcp_servers(WIFI_UART_TARGET_IP, WIFI_UART_TARGET_PORT,WIFI_UART_COMMAND)) // <20><><EFBFBD><EFBFBD>TCP<43><50><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
if(wifi_uart_connect_tcp_servers(WIFI_UART_TARGET_IP, WIFI_UART_TARGET_PORT, WIFI_UART_COMMAND)) // <20><><EFBFBD><EFBFBD>TCP<43><50><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
{
zf_log(0, "connect TCP server failed");
return_state = 1;
@@ -1188,7 +1184,7 @@ uint8 wifi_uart_init (char *wifi_ssid, char *pass_word, wifi_uart_mode_enum wifi
}
#endif
#if WIFI_UART_AUTO_CONNECT == 2
if(wifi_uart_connect_udp_client(WIFI_UART_TARGET_IP, WIFI_UART_TARGET_PORT, WIFI_UART_LOCAL_PORT, WIFI_UART_COMMAND)) // <20><><EFBFBD><EFBFBD>UDP<44><50><EFBFBD><EFBFBD>
if(wifi_uart_connect_udp_client(WIFI_UART_TARGET_IP, WIFI_UART_TARGET_PORT, WIFI_UART_LOCAL_PORT, WIFI_UART_SERIANET)) // <20><><EFBFBD><EFBFBD>UDP<44><50><EFBFBD><EFBFBD>
{
zf_log(0, "connect UDP server failed");
return_state = 1;
@@ -1204,7 +1200,7 @@ uint8 wifi_uart_init (char *wifi_ssid, char *pass_word, wifi_uart_mode_enum wifi
}
#endif
}while(0);
wifi_uart_clear_receive_buffer(); // <20><><EFBFBD><EFBFBD>WiFi<46><69><EFBFBD>ջ<EFBFBD><D5BB><EFBFBD><EFBFBD><EFBFBD>
return return_state;
}

View File

@@ -31,6 +31,7 @@
* <20>޸ļ<DEB8>¼
* <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><>ע
* 2022-09-15 pudding first version
* 2023-04-28 pudding <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ע<EFBFBD><D7A2>˵<EFBFBD><CBB5>
********************************************************************************************************************/
/*********************************************************************************************************************
* <20><><EFBFBD>߶<EFBFBD><DFB6>
@@ -51,7 +52,7 @@
#include "zf_common_typedef.h"
//=================================================WIFI_UART <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>====================================================
//==============================================<EFBFBD><EFBFBD><EFBFBD><EFBFBD> WIFI_UART <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>===================================================
#define WIFI_UART_INDEX (UART_2) // WIFI ģ<><C4A3> <20><>ʹ<EFBFBD>õ<EFBFBD><C3B5>Ĵ<EFBFBD><C4B4><EFBFBD>
#define WIFI_UART_TX_PIN (UART2_RX_P10_6) // <20><><EFBFBD><EFBFBD> WIFI ģ<><C4A3> TX
#define WIFI_UART_RX_PIN (UART2_TX_P10_5) // <20><><EFBFBD><EFBFBD> WIFI ģ<><C4A3> RX
@@ -61,9 +62,10 @@
#if WIFI_UART_HARDWARE_RST // <20><><EFBFBD><EFBFBD>ʹ<EFBFBD><CAB9>Ӳ<EFBFBD><D3B2><EFBFBD><EFBFBD>λ<EFBFBD><CEBB><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>׳<EFBFBD><D7B3>ֵ<EFBFBD>Ƭ<EFBFBD><C6AC><EFBFBD><EFBFBD>λ<EFBFBD><CEBB><EFBFBD>޷<EFBFBD><DEB7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʼ<EFBFBD><CABC>ģ<EFBFBD><C4A3>
#define WIFI_UART_RST_PIN (P11_6) // <20><><EFBFBD><EFBFBD>Ӳ<EFBFBD><D3B2><EFBFBD><EFBFBD>λ<EFBFBD><CEBB><EFBFBD><EFBFBD>
#endif
//=================================================WIFI_UART <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>====================================================
//==============================================<EFBFBD><EFBFBD><EFBFBD><EFBFBD> WIFI_UART <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>===================================================
//=================================================WIFI_UART <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>====================================================
//==============================================<3D><><EFBFBD><EFBFBD> WIFI_UART <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>===================================================
#define WIFI_UART_BUFFER_SIZE (256) // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ջ<EFBFBD><D5BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>С
#define WIFI_UART_AUTO_CONNECT (0) // <20><><EFBFBD><EFBFBD><EFBFBD>Ƿ<EFBFBD><C7B7><EFBFBD>ʼ<EFBFBD><CABC>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD>TCP<43><50><EFBFBD><EFBFBD>UDP<44><50><EFBFBD><EFBFBD> 0-<2D><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> 1-<2D>Զ<EFBFBD><D4B6><EFBFBD><EFBFBD><EFBFBD>TCP<43><50><EFBFBD><EFBFBD><EFBFBD><EFBFBD> 2-<2D>Զ<EFBFBD><D4B6><EFBFBD><EFBFBD><EFBFBD>UDP<44><50><EFBFBD><EFBFBD><EFBFBD><EFBFBD> 3<><33><EFBFBD>Զ<EFBFBD><D4B6><EFBFBD><EFBFBD><EFBFBD>TCP<43><50><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
@@ -75,9 +77,9 @@
#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
//=================================================WIFI_UART <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>====================================================
//==============================================<EFBFBD><EFBFBD><EFBFBD><EFBFBD> WIFI_UART <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>===================================================
//=================================================WIFI_UART <20><><EFBFBD><EFBFBD>ö<EFBFBD><EFBFBD>====================================================
//==============================================<EFBFBD><EFBFBD><EFBFBD><EFBFBD> WIFI_UART <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>==================================================
typedef enum
{
WIFI_UART_STATION, // <20>豸ģʽ
@@ -118,17 +120,21 @@ typedef struct
uint8 wifi_uart_mac[20]; // <20><><EFBFBD><EFBFBD> MAC <20><>ַ <20>ַ<EFBFBD><D6B7><EFBFBD><EFBFBD><EFBFBD>ʽ
uint8 wifi_uart_local_ip[17]; // <20><><EFBFBD><EFBFBD> IP <20><>ַ <20>ַ<EFBFBD><D6B7><EFBFBD><EFBFBD><EFBFBD>ʽ
uint8 wifi_uart_local_port[10]; // <20><><EFBFBD><EFBFBD><EFBFBD>˿ں<CBBF> <20>ַ<EFBFBD><D6B7><EFBFBD><EFBFBD><EFBFBD>ʽ
uint8 wifi_uart_remote_ip[5][15]; // Զ<><D4B6> IP <20><>ַ <20>ַ<EFBFBD><D6B7><EFBFBD><EFBFBD><EFBFBD>ʽ
uint8 wifi_uart_remote_ip[5][17]; // Զ<><D4B6> IP <20><>ַ <20>ַ<EFBFBD><D6B7><EFBFBD><EFBFBD><EFBFBD>ʽ
wifi_uart_mode_enum wifi_uart_mode; // WIFI ģʽ
wifi_uart_transfer_mode_enum wifi_uart_transfer_mode; // <20><>ǰ<EFBFBD><C7B0><EFBFBD><EFBFBD>ģʽ
wifi_uart_connect_mode_enum wifi_uart_connect_mode; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ģʽ
wifi_uart_connect_state_enum wifi_uart_connect_state; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
}wifi_uart_information_struct;
//=================================================WIFI_UART <20><><EFBFBD><EFBFBD>ö<EFBFBD><EFBFBD>====================================================
//==============================================<EFBFBD><EFBFBD><EFBFBD><EFBFBD> WIFI_UART <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>==================================================
//==============================================<3D><><EFBFBD><EFBFBD> WIFI_UART ȫ<>ֱ<EFBFBD><D6B1><EFBFBD>===================================================
extern wifi_uart_information_struct wifi_uart_information;
//==============================================<3D><><EFBFBD><EFBFBD> WIFI_UART ȫ<>ֱ<EFBFBD><D6B1><EFBFBD>===================================================
//=================================================WIFI_UART <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>====================================================
//==============================================<3D><><EFBFBD><EFBFBD> WIFI_UART <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>===================================================
uint8 wifi_uart_disconnected_wifi (void); // <20>Ͽ<EFBFBD> WIFI <20><><EFBFBD><EFBFBD>
uint8 wifi_uart_entry_serianet (void); // <20><><EFBFBD><EFBFBD>͸<EFBFBD><CDB8>ģʽ
uint8 wifi_uart_exit_serianet (void); // <20>ر<EFBFBD>͸<EFBFBD><CDB8>ģʽ
@@ -144,10 +150,10 @@ uint8 wifi_uart_tcp_servers_check_link (void);
uint32 wifi_uart_send_buffer (uint8 *buff, uint32 len); // WIFI ģ<><C4A3><EFBFBD><EFBFBD><EFBFBD>ݷ<EFBFBD><DDB7>ͺ<EFBFBD><CDBA><EFBFBD>
uint32 wifi_uart_tcp_servers_send_buffer (uint8 *buff, uint32 len, wifi_uart_link_id_enum id); // WIFI ģ<><C4A3><EFBFBD><EFBFBD>Ϊ TCP Server ָ<><D6B8>Ŀ<EFBFBD><C4BF><EFBFBD><EFBFBD><E8B1B8><EFBFBD>ͺ<EFBFBD><CDBA><EFBFBD>
uint32 wifi_uart_read_buffer (uint8 *buff, uint32 len); // WIFI ģ<><C4A3><EFBFBD><EFBFBD><EFBFBD>ݽ<EFBFBD><DDBD>պ<EFBFBD><D5BA><EFBFBD>
uint16 wifi_uart_read_buffer (uint8 *buff, uint16 len); // WIFI ģ<><C4A3><EFBFBD><EFBFBD><EFBFBD>ݽ<EFBFBD><DDBD>պ<EFBFBD><D5BA><EFBFBD>
void wifi_uart_callback (void); // WIFI ģ<><EFBFBD>ڻص<DABB><D8B5><EFBFBD><EFBFBD><EFBFBD>
uint8 wifi_uart_init (char *wifi_ssid, char *pass_word, wifi_uart_mode_enum wifi_mode); // WIFI ģ<><C4A3><EFBFBD><EFBFBD>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
//=================================================WIFI_UART <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>====================================================
//==============================================<EFBFBD><EFBFBD><EFBFBD><EFBFBD> WIFI_UART <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>===================================================
#endif

View File

@@ -53,19 +53,21 @@
#include "zf_device_type.h"
#include "zf_device_wireless_uart.h"
static fifo_struct wireless_uart_fifo;
static uint8 wireless_uart_buffer[WIRELESS_UART_BUFFER_SIZE]; // <20><><EFBFBD>ݴ<EFBFBD><DDB4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
static fifo_struct wireless_uart_fifo;
static uint8 wireless_uart_buffer[WIRELESS_UART_BUFFER_SIZE];
static uint8 wireless_uart_data;
volatile uint32 wireless_auto_baud_flag = 0;
volatile uint8 wireless_auto_baud_data[3] = {0x00, 0x01, 0x03};
static uint8 wireless_uart_data = 0;
#if (1 == WIRELESS_UART_AUTO_BAUD_RATE)
static volatile wireless_uart_auto_baudrate_state_enum wireless_auto_baud_flag = WIRELESS_UART_AUTO_BAUD_RATE_INIT;
static volatile uint8 wireless_auto_baud_data[3] = {0x00, 0x01, 0x03};
#endif
//-------------------------------------------------------------------------------------------------------------------
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>ת<EFBFBD><D7AA><EFBFBD><EFBFBD>ģ<EFBFBD><C4A3> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> data 8bit <20><><EFBFBD><EFBFBD>
// <20><><EFBFBD>ز<EFBFBD><D8B2><EFBFBD> uint32 ʣ<><EFBFBD>ͳ<EFBFBD><CDB3><EFBFBD>
// <20><><EFBFBD>ز<EFBFBD><D8B2><EFBFBD> uint32 ʣ<><EFBFBD>ͳ<EFBFBD><CDB3><EFBFBD> 0-<2D><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> 1-δ<><CEB4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// ʹ<><CAB9>ʾ<EFBFBD><CABE> wireless_uart_send_byte(data);
// <20><>ע<EFBFBD><D7A2>Ϣ
// <20><>ע<EFBFBD><D7A2>Ϣ
//-------------------------------------------------------------------------------------------------------------------
uint32 wireless_uart_send_byte (const uint8 data)
{
@@ -80,7 +82,7 @@ uint32 wireless_uart_send_byte (const uint8 data)
time_count --;
system_delay_ms(1);
}
return (0 < time_count);
return (0 == time_count);
}
//-------------------------------------------------------------------------------------------------------------------
@@ -88,27 +90,27 @@ uint32 wireless_uart_send_byte (const uint8 data)
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> *buff <20><><EFBFBD>ͻ<EFBFBD><CDBB><EFBFBD><EFBFBD><EFBFBD>
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> len <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݳ<EFBFBD><DDB3><EFBFBD>
// <20><><EFBFBD>ز<EFBFBD><D8B2><EFBFBD> uint32 ʣ<><EFBFBD>ͳ<EFBFBD><CDB3><EFBFBD>
// ʹ<><CAB9>ʾ<EFBFBD><CABE> wireless_uart_send_buff(buff, 64);
// <20><>ע<EFBFBD><D7A2>Ϣ
// ʹ<><CAB9>ʾ<EFBFBD><CABE> wireless_uart_send_buffer(buff, 64);
// <20><>ע<EFBFBD><D7A2>Ϣ
//-------------------------------------------------------------------------------------------------------------------
uint32 wireless_uart_send_buff (const uint8 *buff, uint32 len)
uint32 wireless_uart_send_buffer (const uint8 *buff, uint32 len)
{
zf_assert(buff != NULL);
zf_assert(NULL != buff);
uint16 time_count = 0;
while(0 != len)
{
if(!gpio_get_level(WIRELESS_UART_RTS_PIN)) // <20><><EFBFBD><EFBFBD>RTSΪ<53>͵<EFBFBD>ƽ <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
if(!gpio_get_level(WIRELESS_UART_RTS_PIN)) // <20><><EFBFBD><EFBFBD>RTSΪ<53>͵<EFBFBD>ƽ <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
{
if(30 <= len) // <20><><EFBFBD>ݷ<EFBFBD> 30byte ÿ<><C3BF><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
{
uart_write_buffer(WIRELESS_UART_INDEX, buff, 30); // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
uart_write_buffer(WIRELESS_UART_INDEX, buff, 30); // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
buff += 30; // <20><>ַƫ<D6B7><C6AB>
len -= 30; // <20><><EFBFBD><EFBFBD>
time_count = 0;
}
else // <20><><EFBFBD><EFBFBD> 30byte <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD>Է<EFBFBD><D4B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
{
uart_write_buffer(WIRELESS_UART_INDEX, buff, len); // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
uart_write_buffer(WIRELESS_UART_INDEX, buff, len); // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
len = 0;
break;
}
@@ -130,27 +132,27 @@ uint32 wireless_uart_send_buff (const uint8 *buff, uint32 len)
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> *str Ҫ<><D2AA><EFBFBD>͵<EFBFBD><CDB5>ַ<EFBFBD><D6B7><EFBFBD><EFBFBD><EFBFBD>ַ
// <20><><EFBFBD>ز<EFBFBD><D8B2><EFBFBD> uint32 ʣ<><EFBFBD>ͳ<EFBFBD><CDB3><EFBFBD>
// ʹ<><CAB9>ʾ<EFBFBD><CABE> wireless_uart_send_string("Believe in yourself.");
// <20><>ע<EFBFBD><D7A2>Ϣ
// <20><>ע<EFBFBD><D7A2>Ϣ
//-------------------------------------------------------------------------------------------------------------------
uint32 wireless_uart_send_string (const char *str)
{
zf_assert(str != NULL);
zf_assert(NULL != str);
uint16 time_count = 0;
uint32 len = strlen(str);
while(0 != len)
{
if(!gpio_get_level(WIRELESS_UART_RTS_PIN)) // <20><><EFBFBD><EFBFBD>RTSΪ<53>͵<EFBFBD>ƽ <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
if(!gpio_get_level(WIRELESS_UART_RTS_PIN)) // <20><><EFBFBD><EFBFBD>RTSΪ<53>͵<EFBFBD>ƽ <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
{
if(30 <= len) // <20><><EFBFBD>ݷ<EFBFBD> 30byte ÿ<><C3BF><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
{
uart_write_buffer(WIRELESS_UART_INDEX, (const uint8 *)str, 30); // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
uart_write_buffer(WIRELESS_UART_INDEX, (const uint8 *)str, 30); // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
str += 30; // <20><>ַƫ<D6B7><C6AB>
len -= 30; // <20><><EFBFBD><EFBFBD>
time_count = 0;
}
else // <20><><EFBFBD><EFBFBD> 30byte <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD>Է<EFBFBD><D4B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
{
uart_write_buffer(WIRELESS_UART_INDEX, (const uint8 *)str, len); // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
uart_write_buffer(WIRELESS_UART_INDEX, (const uint8 *)str, len);// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
len = 0;
break;
}
@@ -173,14 +175,14 @@ uint32 wireless_uart_send_string (const char *str)
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> image_size ͼ<><CDBC><EFBFBD>Ĵ<EFBFBD>С
// <20><><EFBFBD>ز<EFBFBD><D8B2><EFBFBD> void
// ʹ<><CAB9>ʾ<EFBFBD><CABE> wireless_uart_send_image(&mt9v03x_image[0][0], MT9V03X_IMAGE_SIZE);
// <20><>ע<EFBFBD><D7A2>Ϣ
// <20><>ע<EFBFBD><D7A2>Ϣ
//-------------------------------------------------------------------------------------------------------------------
void wireless_uart_send_image (const uint8 *image_addr, uint32 image_size)
{
zf_assert(image_addr != NULL);
zf_assert(NULL != image_addr);
extern uint8 camera_send_image_frame_header[4];
wireless_uart_send_buff(camera_send_image_frame_header, 4);
wireless_uart_send_buff((uint8 *)image_addr, image_size);
wireless_uart_send_buffer(camera_send_image_frame_header, 4);
wireless_uart_send_buffer((uint8 *)image_addr, image_size);
}
//-------------------------------------------------------------------------------------------------------------------
@@ -188,12 +190,12 @@ void wireless_uart_send_image (const uint8 *image_addr, uint32 image_size)
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> *buff <20><><EFBFBD>ջ<EFBFBD><D5BB><EFBFBD><EFBFBD><EFBFBD>
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> len <20><>ȡ<EFBFBD><C8A1><EFBFBD>ݳ<EFBFBD><DDB3><EFBFBD>
// <20><><EFBFBD>ز<EFBFBD><D8B2><EFBFBD> uint32 ʵ<>ʶ<EFBFBD>ȡ<EFBFBD><C8A1><EFBFBD>ݳ<EFBFBD><DDB3><EFBFBD>
// ʹ<><CAB9>ʾ<EFBFBD><CABE> wireless_uart_read_buff(buff, 32);
// <20><>ע<EFBFBD><D7A2>Ϣ
// ʹ<><CAB9>ʾ<EFBFBD><CABE> wireless_uart_read_buffer(buff, 32);
// <20><>ע<EFBFBD><D7A2>Ϣ
//-------------------------------------------------------------------------------------------------------------------
uint32 wireless_uart_read_buff (uint8 *buff, uint32 len)
uint32 wireless_uart_read_buffer (uint8 *buff, uint32 len)
{
zf_assert(buff != NULL);
zf_assert(NULL != buff);
uint32 data_len = len;
fifo_read_buffer(&wireless_uart_fifo, buff, &data_len, FIFO_READ_AND_CLEAN);
return data_len;
@@ -213,10 +215,11 @@ void wireless_uart_callback (void)
uart_query_byte(WIRELESS_UART_INDEX, &wireless_uart_data);
fifo_write_buffer(&wireless_uart_fifo, &wireless_uart_data, 1);
#if WIRELESS_UART_AUTO_BAUD_RATE // <20><><EFBFBD><EFBFBD><EFBFBD>Զ<EFBFBD><D4B6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
if(wireless_auto_baud_flag == 1 && fifo_used(&wireless_uart_fifo) == 3)
if(WIRELESS_UART_AUTO_BAUD_RATE_START == wireless_auto_baud_flag && 3 == fifo_used(&wireless_uart_fifo))
{
wireless_auto_baud_flag = 3;
fifo_read_buffer(&wireless_uart_fifo, (uint8 *)wireless_auto_baud_data, (uint32 *)&wireless_auto_baud_flag, FIFO_READ_AND_CLEAN);
uint32 wireless_auto_baud_count = 3;
wireless_auto_baud_flag = WIRELESS_UART_AUTO_BAUD_RATE_GET_ACK;
fifo_read_buffer(&wireless_uart_fifo, (uint8 *)wireless_auto_baud_data, (uint32 *)&wireless_auto_baud_count, FIFO_READ_AND_CLEAN);
}
#endif
}
@@ -226,7 +229,7 @@ void wireless_uart_callback (void)
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> void
// <20><><EFBFBD>ز<EFBFBD><D8B2><EFBFBD> void
// ʹ<><CAB9>ʾ<EFBFBD><CABE> wireless_uart_init();
// <20><>ע<EFBFBD><D7A2>Ϣ
// <20><>ע<EFBFBD><D7A2>Ϣ
//-------------------------------------------------------------------------------------------------------------------
uint8 wireless_uart_init (void)
{
@@ -240,10 +243,10 @@ uint8 wireless_uart_init (void)
uart_init (WIRELESS_UART_INDEX, WIRELESS_UART_BUAD_RATE, WIRELESS_UART_RX_PIN, WIRELESS_UART_TX_PIN); // <20><>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
uart_rx_interrupt(WIRELESS_UART_INDEX, 1);
#elif(1 == WIRELESS_UART_AUTO_BAUD_RATE) // <20><><EFBFBD><EFBFBD><EFBFBD>Զ<EFBFBD><D4B6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
uint8 rts_init_status;
uint8 rts_init_status = 0;
uint16 time_count = 0;
wireless_auto_baud_flag = 0;
wireless_auto_baud_flag = WIRELESS_UART_AUTO_BAUD_RATE_INIT;
wireless_auto_baud_data[0] = 0;
wireless_auto_baud_data[1] = 1;
wireless_auto_baud_data[2] = 3;
@@ -257,24 +260,17 @@ uint8 wireless_uart_init (void)
system_delay_ms(5); // ģ<><C4A3><EFBFBD>ϵ<EFBFBD>֮<EFBFBD><D6AE><EFBFBD><EFBFBD>Ҫ<EFBFBD><D2AA>ʱ<EFBFBD>ȴ<EFBFBD>
gpio_set_level(WIRELESS_UART_RTS_PIN, !rts_init_status); // RTS<54><53><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ߣ<EFBFBD><DFA3><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Զ<EFBFBD><D4B6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ģʽ
system_delay_ms(100); // RTS<54><53><EFBFBD><EFBFBD>֮<EFBFBD><D6AE><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ20ms
gpio_toggle(WIRELESS_UART_RTS_PIN); // RTS<54><53><EFBFBD><EFBFBD>ȡ<EFBFBD><C8A1>
gpio_toggle_level(WIRELESS_UART_RTS_PIN); // RTS<54><53><EFBFBD><EFBFBD>ȡ<EFBFBD><C8A1>
wireless_auto_baud_flag = 1;
uart_write_byte(WIRELESS_UART_INDEX, wireless_auto_baud_data[0]); // <20><><EFBFBD><EFBFBD><EFBFBD>ض<EFBFBD><D8B6><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>ģ<EFBFBD><C4A3><EFBFBD>Զ<EFBFBD><D4B6>жϲ<D0B6><CFB2><EFBFBD><EFBFBD><EFBFBD>
uart_write_byte(WIRELESS_UART_INDEX, wireless_auto_baud_data[1]); // <20><><EFBFBD><EFBFBD><EFBFBD>ض<EFBFBD><D8B6><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>ģ<EFBFBD><C4A3><EFBFBD>Զ<EFBFBD><D4B6>жϲ<D0B6><CFB2><EFBFBD><EFBFBD><EFBFBD>
uart_write_byte(WIRELESS_UART_INDEX, wireless_auto_baud_data[2]); // <20><><EFBFBD><EFBFBD><EFBFBD>ض<EFBFBD><D8B6><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>ģ<EFBFBD><C4A3><EFBFBD>Զ<EFBFBD><D4B6>жϲ<D0B6><CFB2><EFBFBD><EFBFBD><EFBFBD>
system_delay_ms(20);
time_count = 0;
do
{
if(3 != wireless_auto_baud_flag) // <20><><EFBFBD><EFBFBD><EFBFBD>Զ<EFBFBD><D4B6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƿ<EFBFBD><C7B7><EFBFBD><EFBFBD><EFBFBD>
{
while(time_count ++)
system_delay_ms(1);
}
if(time_count >= WIRELESS_UART_TIMEOUT_COUNT)
wireless_auto_baud_flag = WIRELESS_UART_AUTO_BAUD_RATE_START;
uart_write_byte(WIRELESS_UART_INDEX, wireless_auto_baud_data[0]); // <20><><EFBFBD><EFBFBD><EFBFBD>ض<EFBFBD><D8B6><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>ģ<EFBFBD><C4A3><EFBFBD>Զ<EFBFBD><D4B6>жϲ<D0B6><CFB2><EFBFBD><EFBFBD><EFBFBD>
uart_write_byte(WIRELESS_UART_INDEX, wireless_auto_baud_data[1]); // <20><><EFBFBD><EFBFBD><EFBFBD>ض<EFBFBD><D8B6><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>ģ<EFBFBD><C4A3><EFBFBD>Զ<EFBFBD><D4B6>жϲ<D0B6><CFB2><EFBFBD><EFBFBD><EFBFBD>
uart_write_byte(WIRELESS_UART_INDEX, wireless_auto_baud_data[2]); // <20><><EFBFBD><EFBFBD><EFBFBD>ض<EFBFBD><D8B6><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>ģ<EFBFBD><C4A3><EFBFBD>Զ<EFBFBD><D4B6>жϲ<D0B6><CFB2><EFBFBD><EFBFBD><EFBFBD>
system_delay_ms(20);
if(WIRELESS_UART_AUTO_BAUD_RATE_GET_ACK != wireless_auto_baud_flag) // <20><><EFBFBD><EFBFBD><EFBFBD>Զ<EFBFBD><D4B6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƿ<EFBFBD><C7B7><EFBFBD><EFBFBD><EFBFBD>
{
return_state = 1; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EBB5BD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ˵<><CBB5><EFBFBD>Զ<EFBFBD><D4B6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʧ<EFBFBD><CAA7><EFBFBD><EFBFBD>
break;
@@ -284,16 +280,11 @@ uint8 wireless_uart_init (void)
if( 0xa5 != wireless_auto_baud_data[0] && // <20><><EFBFBD><EFBFBD><EFBFBD>Զ<EFBFBD><D4B6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƿ<EFBFBD><C7B7><EFBFBD>ȷ
0xff != wireless_auto_baud_data[1] && // <20><><EFBFBD><EFBFBD><EFBFBD>Զ<EFBFBD><D4B6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƿ<EFBFBD><C7B7><EFBFBD>ȷ
0xff != wireless_auto_baud_data[2] ) // <20><><EFBFBD><EFBFBD><EFBFBD>Զ<EFBFBD><D4B6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƿ<EFBFBD><C7B7><EFBFBD>ȷ
{
while(time_count ++)
system_delay_ms(1);
}
if(time_count >= WIRELESS_UART_TIMEOUT_COUNT)
{
return_state = 1; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EBB5BD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ˵<><CBB5><EFBFBD>Զ<EFBFBD><D4B6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʧ<EFBFBD><CAA7><EFBFBD><EFBFBD>
break;
}
wireless_auto_baud_flag = 0;
wireless_auto_baud_flag = WIRELESS_UART_AUTO_BAUD_RATE_SUCCESS;
gpio_init(WIRELESS_UART_RTS_PIN, GPI, 0, GPI_PULL_UP); // <20><>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
system_delay_ms(10); // <20><>ʱ<EFBFBD>ȴ<EFBFBD> ģ<><C4A3>׼<EFBFBD><D7BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>

View File

@@ -31,6 +31,7 @@
* <20>޸ļ<DEB8>¼
* <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><>ע
* 2022-09-15 pudding first version
* 2023-04-28 pudding <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ע<EFBFBD><D7A2>˵<EFBFBD><CBB5>
********************************************************************************************************************/
/*********************************************************************************************************************
* <20><><EFBFBD>߶<EFBFBD><DFB6>
@@ -49,15 +50,13 @@
#define _zf_device_wireless_uart_h_
#include "zf_common_typedef.h"
//=================================================<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><EFBFBD><EFBFBD><EFBFBD>===================================================
#define WIRELESS_UART_INDEX (UART_2) // <20><><EFBFBD>ߴ<EFBFBD><DFB4>ڶ<EFBFBD>Ӧʹ<D3A6>õĴ<C3B5><C4B4>ں<EFBFBD>
#define WIRELESS_UART_BUAD_RATE (115200) // <20><><EFBFBD>ߴ<EFBFBD><DFB4>ڶ<EFBFBD>Ӧʹ<D3A6>õĴ<C3B5><C4B4>ڲ<EFBFBD><DAB2><EFBFBD><EFBFBD><EFBFBD>
#define WIRELESS_UART_TX_PIN (UART2_RX_P10_6) // <20><><EFBFBD>ߴ<EFBFBD><DFB4>ڶ<EFBFBD>Ӧģ<D3A6><C4A3><EFBFBD><EFBFBD> TX Ҫ<>ӵ<EFBFBD><D3B5><EFBFBD>Ƭ<EFBFBD><C6AC><EFBFBD><EFBFBD> RX
#define WIRELESS_UART_RX_PIN (UART2_TX_P10_5) // <20><><EFBFBD>ߴ<EFBFBD><DFB4>ڶ<EFBFBD>Ӧģ<D3A6><C4A3><EFBFBD><EFBFBD> RX Ҫ<>ӵ<EFBFBD><D3B5><EFBFBD>Ƭ<EFBFBD><C6AC><EFBFBD><EFBFBD> TX
#define WIRELESS_UART_RTS_PIN (P10_2) // <20><><EFBFBD>ߴ<EFBFBD><DFB4>ڶ<EFBFBD>Ӧģ<D3A6><C4A3><EFBFBD><EFBFBD> RTS <20><><EFBFBD><EFBFBD>
//=================================================<EFBFBD><EFBFBD><EFBFBD>ߴ<EFBFBD><EFBFBD><EFBFBD> <20><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>====================================================
//================================================<3D><><EFBFBD>ߴ<EFBFBD><DFB4><EFBFBD> <20>Զ<EFBFBD><D4B6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>====================================================
//====================================================<3D>Զ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>====================================================
// ע<><D7A2><EFBFBD><EFBFBD><EFBFBD><EFBFBD>1<EFBFBD><31><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ת<EFBFBD><D7AA><EFBFBD><EFBFBD>ģ<EFBFBD><C4A3><EFBFBD><EFBFBD><E6B1BE>V2.0<EFBFBD><EFBFBD><EFBFBD>µ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>޷<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Զ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʵġ<EFBFBD>
// ע<><D7A2><EFBFBD><EFBFBD><EFBFBD><EFBFBD>2<EFBFBD><32><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Զ<EFBFBD><D4B6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>RTS<54><53><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E1BFAA>ʧ<EFBFBD>ܡ<EFBFBD>
// ע<><D7A2><EFBFBD><EFBFBD><EFBFBD><EFBFBD>3<EFBFBD><33>ģ<EFBFBD><C4A3><EFBFBD>Զ<EFBFBD><D4B6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʧ<EFBFBD>ܵĻ<DCB5> <20><><EFBFBD>Գ<EFBFBD><D4B3>Զϵ<D4B6><CFB5><EFBFBD><EFBFBD><EFBFBD>
@@ -66,27 +65,38 @@
// <20><><EFBFBD><EFBFBD><EFBFBD>Զ<EFBFBD><D4B6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ķ<EFBFBD><C4B6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ע<><D7A2><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// <20><><EFBFBD><EFBFBD><EFBFBD>Զ<EFBFBD><D4B6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ķ<EFBFBD><C4B6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ע<><D7A2><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// 0<><30><EFBFBD>ر<EFBFBD><D8B1>Զ<EFBFBD><D4B6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// 0<><30><EFBFBD>ر<EFBFBD><D8B1>Զ<EFBFBD><D4B6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// 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> WIRELESS_UART_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>
#define WIRELESS_UART_AUTO_BAUD_RATE (0)
//================================================<EFBFBD><EFBFBD><EFBFBD>ߴ<EFBFBD><EFBFBD><EFBFBD> <EFBFBD>Զ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>====================================================
#define WIRELESS_UART_AUTO_BAUD_RATE ( 1 )
//====================================================<EFBFBD>Զ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>====================================================
#if (1 == WIRELESS_UART_AUTO_BAUD_RATE)
typedef enum
{
WIRELESS_UART_AUTO_BAUD_RATE_SUCCESS,
WIRELESS_UART_AUTO_BAUD_RATE_INIT,
WIRELESS_UART_AUTO_BAUD_RATE_START,
WIRELESS_UART_AUTO_BAUD_RATE_GET_ACK,
}wireless_uart_auto_baudrate_state_enum;
#endif
#define WIRELESS_UART_BUFFER_SIZE (64 )
#define WIRELESS_UART_TIMEOUT_COUNT (0x64)
#define WIRELESS_UART_BUFFER_SIZE ( 64 )
#define WIRELESS_UART_TIMEOUT_COUNT ( 0x64 )
//================================================<3D><><EFBFBD><EFBFBD> <20><><EFBFBD>ߴ<EFBFBD><DFB4><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>===================================================
//=================================================<3D><><EFBFBD>ߴ<EFBFBD><DFB4><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>====================================================
//================================================<3D><><EFBFBD><EFBFBD> <20><><EFBFBD>ߴ<EFBFBD><DFB4><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>===================================================
uint32 wireless_uart_send_byte (const uint8 data);
uint32 wireless_uart_send_buff (const uint8 *buff, uint32 len);
uint32 wireless_uart_send_buffer (const uint8 *buff, uint32 len);
uint32 wireless_uart_send_string (const char *str);
void wireless_uart_send_image (const uint8 *image_addr, uint32 image_size);
uint32 wireless_uart_read_buff (uint8 *buff, uint32 len);
uint32 wireless_uart_read_buffer (uint8 *buff, uint32 len);
void wireless_uart_callback (void);
uint8 wireless_uart_init (void);
//=================================================<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><EFBFBD><EFBFBD><EFBFBD>===================================================
#endif

View File

@@ -31,6 +31,7 @@
* <20>޸ļ<DEB8>¼
* <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><>ע
* 2022-09-15 pudding first version
* 2023-04-28 pudding <20>޸<EFBFBD><DEB8><EFBFBD><EFBFBD><EFBFBD>SPIͬʱʹ<CAB1>ÿ<EFBFBD><C3BF>ܲ<EFBFBD><DCB2><EFBFBD><EFBFBD><EFBFBD>ͻ<EFBFBD><CDBB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
********************************************************************************************************************/
#include "IFXQSPI_REGDEF.h"
@@ -42,7 +43,7 @@
#include "zf_driver_spi.h"
#define MAX_BAUD 50000000
Ifx_QSPI_BACON bacon;
Ifx_QSPI_BACON bacon[4];
spi_cs_pin_enum spi_cs_pin;
void spi_mux (spi_index_enum spi_n, spi_sck_pin_enum sck_pin, spi_mosi_pin_enum mosi_pin, spi_miso_pin_enum miso_pin, spi_cs_pin_enum cs_pin, IfxQspi_SpiMaster_Pins *set_pin, IfxQspi_SpiMaster_Output *set_cs)
@@ -226,7 +227,7 @@ void spi_write_8bit (spi_index_enum spi_n, const uint8 data)
moudle = IfxQspi_getAddress((IfxQspi_Index)spi_n); // <20><>ȡģ<C8A1><C4A3><EFBFBD><EFBFBD>ַ
IfxQspi_writeBasicConfigurationEndStream(moudle, bacon.U); // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݺ<EFBFBD>CS<43><53><EFBFBD><EFBFBD>
IfxQspi_writeBasicConfigurationEndStream(moudle, bacon[spi_n].U); // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݺ<EFBFBD>CS<43><53><EFBFBD><EFBFBD>
IfxQspi_writeTransmitFifo(moudle, data); // <20><><EFBFBD><EFBFBD><EFBFBD>͵<EFBFBD><CDB5><EFBFBD><EFBFBD><EFBFBD>д<EFBFBD><EFBFBD><EBBBBA><EFBFBD><EFBFBD>
@@ -252,13 +253,13 @@ void spi_write_8bit_array (spi_index_enum spi_n, const uint8 *data, uint32 len)
moudle = IfxQspi_getAddress((IfxQspi_Index)spi_n); // <20><>ȡģ<C8A1><C4A3><EFBFBD><EFBFBD>ַ
IfxQspi_writeBasicConfigurationBeginStream(moudle, bacon.U);// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݺ<EFBFBD>CS<43><53><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA>
IfxQspi_writeBasicConfigurationBeginStream(moudle, bacon[spi_n].U);// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݺ<EFBFBD>CS<43><53><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA>
do
{
if(len == 1)
{
IfxQspi_writeBasicConfigurationEndStream(moudle, bacon.U); // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݺ<EFBFBD>CS<43><53><EFBFBD><EFBFBD>
IfxQspi_writeBasicConfigurationEndStream(moudle, bacon[spi_n].U); // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݺ<EFBFBD>CS<43><53><EFBFBD><EFBFBD>
}
IfxQspi_writeTransmitFifo(moudle, *data ++); // <20><><EFBFBD><EFBFBD><EFBFBD>͵<EFBFBD><CDB5><EFBFBD><EFBFBD><EFBFBD>д<EFBFBD><EFBFBD><EBBBBA><EFBFBD><EFBFBD>
@@ -285,13 +286,13 @@ void spi_write_16bit (spi_index_enum spi_n, const uint16 data)
moudle = IfxQspi_getAddress((IfxQspi_Index)spi_n); // <20><>ȡģ<C8A1><C4A3><EFBFBD><EFBFBD>ַ
IfxQspi_writeBasicConfigurationBeginStream(moudle, bacon.U);// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݺ<EFBFBD>CS<43><53><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA>
IfxQspi_writeBasicConfigurationBeginStream(moudle, bacon[spi_n].U);// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݺ<EFBFBD>CS<43><53><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA>
IfxQspi_writeTransmitFifo(moudle, (uint8)((data & 0xFF00) >> 8)); // <20><><EFBFBD><EFBFBD><EFBFBD>͵<EFBFBD><CDB5><EFBFBD><EFBFBD><EFBFBD>д<EFBFBD><EFBFBD><EBBBBA><EFBFBD><EFBFBD>
while(moudle->STATUS.B.TXFIFOLEVEL != 0); // <20>ȴ<EFBFBD><C8B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
IfxQspi_writeBasicConfigurationEndStream(moudle, bacon.U); // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݺ<EFBFBD>CS<43><53><EFBFBD><EFBFBD>
IfxQspi_writeBasicConfigurationEndStream(moudle, bacon[spi_n].U); // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݺ<EFBFBD>CS<43><53><EFBFBD><EFBFBD>
IfxQspi_writeTransmitFifo(moudle, (uint8)(data & 0x00FF)); // <20><><EFBFBD><EFBFBD><EFBFBD>͵<EFBFBD><CDB5><EFBFBD><EFBFBD><EFBFBD>д<EFBFBD><EFBFBD><EBBBBA><EFBFBD><EFBFBD>
@@ -316,7 +317,7 @@ void spi_write_16bit_array (spi_index_enum spi_n, const uint16 *data, uint32 len
moudle = IfxQspi_getAddress((IfxQspi_Index)spi_n); // <20><>ȡģ<C8A1><C4A3><EFBFBD><EFBFBD>ַ
IfxQspi_writeBasicConfigurationBeginStream(moudle, bacon.U); // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݺ<EFBFBD>CS<43><53><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA>
IfxQspi_writeBasicConfigurationBeginStream(moudle, bacon[spi_n].U); // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݺ<EFBFBD>CS<43><53><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA>
do
{
@@ -327,7 +328,7 @@ void spi_write_16bit_array (spi_index_enum spi_n, const uint16 *data, uint32 len
if(len == 1) // <20><><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
{
IfxQspi_writeBasicConfigurationEndStream(moudle, bacon.U); // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݺ<EFBFBD>CS<43><53><EFBFBD><EFBFBD>
IfxQspi_writeBasicConfigurationEndStream(moudle, bacon[spi_n].U); // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݺ<EFBFBD>CS<43><53><EFBFBD><EFBFBD>
}
IfxQspi_writeTransmitFifo(moudle, (uint8)(*data++ & 0x00FF)); // <20><><EFBFBD><EFBFBD><EFBFBD>͵<EFBFBD><CDB5><EFBFBD><EFBFBD><EFBFBD>д<EFBFBD><EFBFBD><EBBBBA><EFBFBD><EFBFBD>
@@ -356,7 +357,7 @@ void spi_write_8bit_register (spi_index_enum spi_n, const uint8 register_name, c
moudle = IfxQspi_getAddress((IfxQspi_Index)spi_n); // <20><>ȡģ<C8A1><C4A3><EFBFBD><EFBFBD>ַ
IfxQspi_writeBasicConfigurationBeginStream(moudle, bacon.U); // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݺ<EFBFBD>CS<43><53><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA>
IfxQspi_writeBasicConfigurationBeginStream(moudle, bacon[spi_n].U); // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݺ<EFBFBD>CS<43><53><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA>
spi_clear_fifo(moudle); // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ջ<EFBFBD><D5BB><EFBFBD><EFBFBD><EFBFBD>
@@ -364,7 +365,7 @@ void spi_write_8bit_register (spi_index_enum spi_n, const uint8 register_name, c
while(moudle->STATUS.B.TXFIFOLEVEL != 0); // <20>ȴ<EFBFBD><C8B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
IfxQspi_writeBasicConfigurationEndStream(moudle, bacon.U); // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݺ<EFBFBD>CS<43><53><EFBFBD><EFBFBD>
IfxQspi_writeBasicConfigurationEndStream(moudle, bacon[spi_n].U); // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݺ<EFBFBD>CS<43><53><EFBFBD><EFBFBD>
IfxQspi_writeTransmitFifo(moudle, data); // <20><><EFBFBD><EFBFBD><EFBFBD>͵<EFBFBD><CDB5><EFBFBD><EFBFBD><EFBFBD>д<EFBFBD><EFBFBD><EBBBBA><EFBFBD><EFBFBD>
@@ -391,7 +392,7 @@ void spi_write_8bit_registers (spi_index_enum spi_n, const uint8 register_name,
moudle = IfxQspi_getAddress((IfxQspi_Index)spi_n); // <20><>ȡģ<C8A1><C4A3><EFBFBD><EFBFBD>ַ
IfxQspi_writeBasicConfigurationBeginStream(moudle, bacon.U); // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݺ<EFBFBD>CS<43><53><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA>
IfxQspi_writeBasicConfigurationBeginStream(moudle, bacon[spi_n].U); // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݺ<EFBFBD>CS<43><53><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA>
IfxQspi_writeTransmitFifo(moudle, register_name); // <20><><EFBFBD><EFBFBD><EFBFBD>͵<EFBFBD><CDB5><EFBFBD><EFBFBD><EFBFBD>д<EFBFBD><EFBFBD><EBBBBA><EFBFBD><EFBFBD>
@@ -401,7 +402,7 @@ void spi_write_8bit_registers (spi_index_enum spi_n, const uint8 register_name,
{
if(len == 1) // <20><><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
{
IfxQspi_writeBasicConfigurationEndStream(moudle, bacon.U); // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݺ<EFBFBD>CS<43><53><EFBFBD><EFBFBD>
IfxQspi_writeBasicConfigurationEndStream(moudle, bacon[spi_n].U); // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݺ<EFBFBD>CS<43><53><EFBFBD><EFBFBD>
}
IfxQspi_writeTransmitFifo(moudle, *data ++); // <20><><EFBFBD><EFBFBD><EFBFBD>͵<EFBFBD><CDB5><EFBFBD><EFBFBD><EFBFBD>д<EFBFBD><EFBFBD><EBBBBA><EFBFBD><EFBFBD>
@@ -430,7 +431,7 @@ void spi_write_16bit_register (spi_index_enum spi_n, const uint16 register_name,
moudle = IfxQspi_getAddress((IfxQspi_Index)spi_n); // <20><>ȡģ<C8A1><C4A3><EFBFBD><EFBFBD>ַ
IfxQspi_writeBasicConfigurationBeginStream(moudle, bacon.U);// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݺ<EFBFBD>CS<43><53><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA>
IfxQspi_writeBasicConfigurationBeginStream(moudle, bacon[spi_n].U);// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݺ<EFBFBD>CS<43><53><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA>
IfxQspi_writeTransmitFifo(moudle, (uint8)((register_name & 0xFF00) >> 8)); // <20><><EFBFBD><EFBFBD><EFBFBD>͵<EFBFBD><CDB5><EFBFBD><EFBFBD><EFBFBD>д<EFBFBD><EFBFBD><EBBBBA><EFBFBD><EFBFBD>
@@ -444,7 +445,7 @@ void spi_write_16bit_register (spi_index_enum spi_n, const uint16 register_name,
while(moudle->STATUS.B.TXFIFOLEVEL != 0); // <20>ȴ<EFBFBD><C8B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
IfxQspi_writeBasicConfigurationEndStream(moudle, bacon.U); // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݺ<EFBFBD>CS<43><53><EFBFBD><EFBFBD>
IfxQspi_writeBasicConfigurationEndStream(moudle, bacon[spi_n].U); // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݺ<EFBFBD>CS<43><53><EFBFBD><EFBFBD>
IfxQspi_writeTransmitFifo(moudle, (uint8)(data & 0x00FF)); // <20><><EFBFBD><EFBFBD><EFBFBD>͵<EFBFBD><CDB5><EFBFBD><EFBFBD><EFBFBD>д<EFBFBD><EFBFBD><EBBBBA><EFBFBD><EFBFBD>
@@ -471,7 +472,7 @@ void spi_write_16bit_registers (spi_index_enum spi_n, const uint16 register_name
moudle = IfxQspi_getAddress((IfxQspi_Index)spi_n); // <20><>ȡģ<C8A1><C4A3><EFBFBD><EFBFBD>ַ
IfxQspi_writeBasicConfigurationBeginStream(moudle, bacon.U);// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݺ<EFBFBD>CS<43><53><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA>
IfxQspi_writeBasicConfigurationBeginStream(moudle, bacon[spi_n].U);// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݺ<EFBFBD>CS<43><53><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA>
IfxQspi_writeTransmitFifo(moudle, (uint8)((register_name & 0xFF00) >> 8)); // <20><><EFBFBD><EFBFBD><EFBFBD>͵<EFBFBD><CDB5><EFBFBD><EFBFBD><EFBFBD>д<EFBFBD><EFBFBD><EBBBBA><EFBFBD><EFBFBD>
@@ -489,7 +490,7 @@ void spi_write_16bit_registers (spi_index_enum spi_n, const uint16 register_name
if(len == 1) // <20><><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
{
IfxQspi_writeBasicConfigurationEndStream(moudle, bacon.U); // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݺ<EFBFBD>CS<43><53><EFBFBD><EFBFBD>
IfxQspi_writeBasicConfigurationEndStream(moudle, bacon[spi_n].U); // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݺ<EFBFBD>CS<43><53><EFBFBD><EFBFBD>
}
IfxQspi_writeTransmitFifo(moudle, (uint8)(*data ++ & 0x00FF)); // <20><><EFBFBD><EFBFBD><EFBFBD>͵<EFBFBD><CDB5><EFBFBD><EFBFBD><EFBFBD>д<EFBFBD><EFBFBD><EBBBBA><EFBFBD><EFBFBD>
@@ -517,7 +518,7 @@ uint8 spi_read_8bit (spi_index_enum spi_n)
moudle = IfxQspi_getAddress((IfxQspi_Index)spi_n); // <20><>ȡģ<C8A1><C4A3><EFBFBD><EFBFBD>ַ
IfxQspi_writeBasicConfigurationEndStream(moudle, bacon.U); // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݺ<EFBFBD>CS<43><53><EFBFBD><EFBFBD>
IfxQspi_writeBasicConfigurationEndStream(moudle, bacon[spi_n].U); // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݺ<EFBFBD>CS<43><53><EFBFBD><EFBFBD>
spi_clear_fifo(moudle); // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ջ<EFBFBD><D5BB><EFBFBD><EFBFBD><EFBFBD>
@@ -547,7 +548,7 @@ void spi_read_8bit_array (spi_index_enum spi_n, uint8 *data, uint32 len)
moudle = IfxQspi_getAddress((IfxQspi_Index)spi_n); // <20><>ȡģ<C8A1><C4A3><EFBFBD><EFBFBD>ַ
IfxQspi_writeBasicConfigurationBeginStream(moudle, bacon.U);// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݺ<EFBFBD>CS<43><53><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA>
IfxQspi_writeBasicConfigurationBeginStream(moudle, bacon[spi_n].U);// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݺ<EFBFBD>CS<43><53><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA>
spi_clear_fifo(moudle); // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ջ<EFBFBD><D5BB><EFBFBD><EFBFBD><EFBFBD>
@@ -555,7 +556,7 @@ void spi_read_8bit_array (spi_index_enum spi_n, uint8 *data, uint32 len)
{
if(len == 1) // <20><><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
{
IfxQspi_writeBasicConfigurationEndStream(moudle, bacon.U); // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݺ<EFBFBD>CS<43><53><EFBFBD><EFBFBD>
IfxQspi_writeBasicConfigurationEndStream(moudle, bacon[spi_n].U); // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݺ<EFBFBD>CS<43><53><EFBFBD><EFBFBD>
}
IfxQspi_writeTransmitFifo(moudle, 0); // <20><><EFBFBD><EFBFBD><EFBFBD>͵<EFBFBD><CDB5><EFBFBD><EFBFBD><EFBFBD>д<EFBFBD><EFBFBD><EBBBBA><EFBFBD><EFBFBD>
@@ -586,7 +587,7 @@ uint16 spi_read_16bit (spi_index_enum spi_n)
moudle = IfxQspi_getAddress((IfxQspi_Index)spi_n); // <20><>ȡģ<C8A1><C4A3><EFBFBD><EFBFBD>ַ
IfxQspi_writeBasicConfigurationBeginStream(moudle, bacon.U);// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݺ<EFBFBD>CS<43><53><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA>
IfxQspi_writeBasicConfigurationBeginStream(moudle, bacon[spi_n].U);// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݺ<EFBFBD>CS<43><53><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA>
spi_clear_fifo(moudle); // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ջ<EFBFBD><D5BB><EFBFBD><EFBFBD><EFBFBD>
@@ -596,7 +597,7 @@ uint16 spi_read_16bit (spi_index_enum spi_n)
data = (uint16)IfxQspi_readReceiveFifo(moudle); // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>յ<EFBFBD><D5B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
IfxQspi_writeBasicConfigurationEndStream(moudle, bacon.U); // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݺ<EFBFBD>CS<43><53><EFBFBD><EFBFBD>
IfxQspi_writeBasicConfigurationEndStream(moudle, bacon[spi_n].U); // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݺ<EFBFBD>CS<43><53><EFBFBD><EFBFBD>
IfxQspi_writeTransmitFifo(moudle, 0); // <20><><EFBFBD><EFBFBD><EFBFBD>͵<EFBFBD><CDB5><EFBFBD><EFBFBD><EFBFBD>д<EFBFBD><EFBFBD><EBBBBA><EFBFBD><EFBFBD>
@@ -626,7 +627,7 @@ void spi_read_16bit_array (spi_index_enum spi_n, uint16 *data, uint32 len)
moudle = IfxQspi_getAddress((IfxQspi_Index)spi_n); // <20><>ȡģ<C8A1><C4A3><EFBFBD><EFBFBD>ַ
IfxQspi_writeBasicConfigurationBeginStream(moudle, bacon.U); // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݺ<EFBFBD>CS<43><53><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA>
IfxQspi_writeBasicConfigurationBeginStream(moudle, bacon[spi_n].U); // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݺ<EFBFBD>CS<43><53><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA>
spi_clear_fifo(moudle); // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ջ<EFBFBD><D5BB><EFBFBD><EFBFBD><EFBFBD>
@@ -640,7 +641,7 @@ void spi_read_16bit_array (spi_index_enum spi_n, uint16 *data, uint32 len)
if(len == 1)
{
IfxQspi_writeBasicConfigurationEndStream(moudle, bacon.U); // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݺ<EFBFBD>CS<43><53><EFBFBD><EFBFBD>
IfxQspi_writeBasicConfigurationEndStream(moudle, bacon[spi_n].U); // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݺ<EFBFBD>CS<43><53><EFBFBD><EFBFBD>
}
IfxQspi_writeTransmitFifo(moudle, 0); // <20><><EFBFBD><EFBFBD><EFBFBD>͵<EFBFBD><CDB5><EFBFBD><EFBFBD><EFBFBD>д<EFBFBD><EFBFBD><EBBBBA><EFBFBD><EFBFBD>
@@ -675,7 +676,7 @@ uint8 spi_read_8bit_register (spi_index_enum spi_n, const uint8 register_name)
spi_clear_fifo(moudle); // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ջ<EFBFBD><D5BB><EFBFBD><EFBFBD><EFBFBD>
IfxQspi_writeBasicConfigurationBeginStream(moudle, bacon.U); // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݺ<EFBFBD>CS<43><53><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA>
IfxQspi_writeBasicConfigurationBeginStream(moudle, bacon[spi_n].U); // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݺ<EFBFBD>CS<43><53><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA>
IfxQspi_writeTransmitFifo(moudle, register_name); // <20><><EFBFBD><EFBFBD><EFBFBD>͵<EFBFBD><CDB5><EFBFBD><EFBFBD><EFBFBD>д<EFBFBD><EFBFBD><EBBBBA><EFBFBD><EFBFBD>
@@ -683,7 +684,7 @@ uint8 spi_read_8bit_register (spi_index_enum spi_n, const uint8 register_name)
spi_clear_fifo(moudle); // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ջ<EFBFBD><D5BB><EFBFBD><EFBFBD><EFBFBD>
IfxQspi_writeBasicConfigurationEndStream(moudle, bacon.U); // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݺ<EFBFBD>CS<43><53><EFBFBD><EFBFBD>
IfxQspi_writeBasicConfigurationEndStream(moudle, bacon[spi_n].U); // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݺ<EFBFBD>CS<43><53><EFBFBD><EFBFBD>
IfxQspi_writeTransmitFifo(moudle, 0); // <20><><EFBFBD><EFBFBD><EFBFBD>͵<EFBFBD><CDB5><EFBFBD><EFBFBD><EFBFBD>д<EFBFBD><EFBFBD><EBBBBA><EFBFBD><EFBFBD>
@@ -714,7 +715,7 @@ void spi_read_8bit_registers (spi_index_enum spi_n, const uint8 register_name, u
spi_clear_fifo(moudle); // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ջ<EFBFBD><D5BB><EFBFBD><EFBFBD><EFBFBD>
IfxQspi_writeBasicConfigurationBeginStream(moudle, bacon.U); // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݺ<EFBFBD>CS<43><53><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA>
IfxQspi_writeBasicConfigurationBeginStream(moudle, bacon[spi_n].U); // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݺ<EFBFBD>CS<43><53><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA>
IfxQspi_writeTransmitFifo(moudle, register_name); // <20><><EFBFBD><EFBFBD><EFBFBD>͵<EFBFBD><CDB5><EFBFBD><EFBFBD><EFBFBD>д<EFBFBD><EFBFBD><EBBBBA><EFBFBD><EFBFBD>
@@ -726,7 +727,7 @@ void spi_read_8bit_registers (spi_index_enum spi_n, const uint8 register_name, u
{
if(len == 1)
{
IfxQspi_writeBasicConfigurationEndStream(moudle, bacon.U); // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݺ<EFBFBD>CS<43><53><EFBFBD><EFBFBD>
IfxQspi_writeBasicConfigurationEndStream(moudle, bacon[spi_n].U); // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݺ<EFBFBD>CS<43><53><EFBFBD><EFBFBD>
}
IfxQspi_writeTransmitFifo(moudle, 0); // <20><><EFBFBD><EFBFBD><EFBFBD>͵<EFBFBD><CDB5><EFBFBD><EFBFBD><EFBFBD>д<EFBFBD><EFBFBD><EBBBBA><EFBFBD><EFBFBD>
@@ -761,7 +762,7 @@ uint16 spi_read_16bit_register (spi_index_enum spi_n, const uint16 register_name
spi_clear_fifo(moudle); // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ջ<EFBFBD><D5BB><EFBFBD><EFBFBD><EFBFBD>
IfxQspi_writeBasicConfigurationBeginStream(moudle, bacon.U); // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݺ<EFBFBD>CS<43><53><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA>
IfxQspi_writeBasicConfigurationBeginStream(moudle, bacon[spi_n].U); // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݺ<EFBFBD>CS<43><53><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA>
IfxQspi_writeTransmitFifo(moudle, (uint8)((register_name & 0xFF00) >> 8)); // <20><><EFBFBD><EFBFBD><EFBFBD>͵<EFBFBD><CDB5><EFBFBD><EFBFBD><EFBFBD>д<EFBFBD><EFBFBD><EBBBBA><EFBFBD><EFBFBD>
@@ -779,7 +780,7 @@ uint16 spi_read_16bit_register (spi_index_enum spi_n, const uint16 register_name
data |= (uint8)IfxQspi_readReceiveFifo(moudle); // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>յ<EFBFBD><D5B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
IfxQspi_writeBasicConfigurationEndStream(moudle, bacon.U); // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݺ<EFBFBD>CS<43><53><EFBFBD><EFBFBD>
IfxQspi_writeBasicConfigurationEndStream(moudle, bacon[spi_n].U); // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݺ<EFBFBD>CS<43><53><EFBFBD><EFBFBD>
IfxQspi_writeTransmitFifo(moudle, 0); // <20><><EFBFBD><EFBFBD><EFBFBD>͵<EFBFBD><CDB5><EFBFBD><EFBFBD><EFBFBD>д<EFBFBD><EFBFBD><EBBBBA><EFBFBD><EFBFBD>
@@ -813,7 +814,7 @@ void spi_read_16bit_registers (spi_index_enum spi_n, const uint16 register_name,
spi_clear_fifo(moudle); // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ջ<EFBFBD><D5BB><EFBFBD><EFBFBD><EFBFBD>
IfxQspi_writeBasicConfigurationBeginStream(moudle, bacon.U); // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݺ<EFBFBD>CS<43><53><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA>
IfxQspi_writeBasicConfigurationBeginStream(moudle, bacon[spi_n].U); // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݺ<EFBFBD>CS<43><53><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA>
IfxQspi_writeTransmitFifo(moudle, (uint8)((register_name & 0xFF00) >> 8)); // <20><><EFBFBD><EFBFBD><EFBFBD>͵<EFBFBD><CDB5><EFBFBD><EFBFBD><EFBFBD>д<EFBFBD><EFBFBD><EBBBBA><EFBFBD><EFBFBD>
@@ -835,7 +836,7 @@ void spi_read_16bit_registers (spi_index_enum spi_n, const uint16 register_name,
if(len == 1)
{
IfxQspi_writeBasicConfigurationEndStream(moudle, bacon.U); // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݺ<EFBFBD>CS<43><53><EFBFBD><EFBFBD>
IfxQspi_writeBasicConfigurationEndStream(moudle, bacon[spi_n].U); // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݺ<EFBFBD>CS<43><53><EFBFBD><EFBFBD>
}
IfxQspi_writeTransmitFifo(moudle, 0); // <20><><EFBFBD><EFBFBD><EFBFBD>͵<EFBFBD><CDB5><EFBFBD><EFBFBD><EFBFBD>д<EFBFBD><EFBFBD><EBBBBA><EFBFBD><EFBFBD>
@@ -868,7 +869,7 @@ void spi_transfer_8bit (spi_index_enum spi_n, const uint8 *write_buffer, uint8 *
moudle = IfxQspi_getAddress((IfxQspi_Index)spi_n); // <20><>ȡģ<C8A1><C4A3><EFBFBD><EFBFBD>ַ
IfxQspi_writeBasicConfigurationBeginStream(moudle, bacon.U); // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݺ<EFBFBD>CS<43><53><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA>
IfxQspi_writeBasicConfigurationBeginStream(moudle, bacon[spi_n].U); // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݺ<EFBFBD>CS<43><53><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA>
spi_clear_fifo(moudle); // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ջ<EFBFBD><D5BB><EFBFBD><EFBFBD><EFBFBD>
@@ -876,7 +877,7 @@ void spi_transfer_8bit (spi_index_enum spi_n, const uint8 *write_buffer, uint8 *
{
if(len == 1)
{
IfxQspi_writeBasicConfigurationEndStream(moudle, bacon.U); // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݺ<EFBFBD>CS<43><53><EFBFBD><EFBFBD>
IfxQspi_writeBasicConfigurationEndStream(moudle, bacon[spi_n].U); // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݺ<EFBFBD>CS<43><53><EFBFBD><EFBFBD>
}
IfxQspi_writeTransmitFifo(moudle, *write_buffer ++); // <20><><EFBFBD><EFBFBD><EFBFBD>͵<EFBFBD><CDB5><EFBFBD><EFBFBD><EFBFBD>д<EFBFBD><EFBFBD><EBBBBA><EFBFBD><EFBFBD>
@@ -913,7 +914,7 @@ void spi_transfer_16bit (spi_index_enum spi_n, const uint16 *write_buffer, uint1
moudle = IfxQspi_getAddress((IfxQspi_Index)spi_n); // <20><>ȡģ<C8A1><C4A3><EFBFBD><EFBFBD>ַ
IfxQspi_writeBasicConfigurationBeginStream(moudle, bacon.U); // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݺ<EFBFBD>CS<43><53><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA>
IfxQspi_writeBasicConfigurationBeginStream(moudle, bacon[spi_n].U); // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݺ<EFBFBD>CS<43><53><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA>
spi_clear_fifo(moudle); // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ջ<EFBFBD><D5BB><EFBFBD><EFBFBD><EFBFBD>
@@ -933,7 +934,7 @@ void spi_transfer_16bit (spi_index_enum spi_n, const uint16 *write_buffer, uint1
if(len == 1)
{
IfxQspi_writeBasicConfigurationEndStream(moudle, bacon.U); // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݺ<EFBFBD>CS<43><53><EFBFBD><EFBFBD>
IfxQspi_writeBasicConfigurationEndStream(moudle, bacon[spi_n].U); // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݺ<EFBFBD>CS<43><53><EFBFBD><EFBFBD>
}
IfxQspi_writeTransmitFifo(moudle, (uint8)(*write_buffer & 0x00FF)); // <20><><EFBFBD><EFBFBD><EFBFBD>͵<EFBFBD><CDB5><EFBFBD><EFBFBD><EFBFBD>д<EFBFBD><EFBFBD><EBBBBA><EFBFBD><EFBFBD>
@@ -1057,17 +1058,17 @@ void spi_init (spi_index_enum spi_n, spi_mode_enum mode, uint32 baud, spi_sck_pi
IfxQspi_configPT1Event(moudle, IfxQspi_PhaseTransitionEvent_endOfFrame);
bacon.U = moudle->BACON.U;
bacon.B.DL = 7; // Data Length
bacon.B.IDLE = 1; // Idle Delay Length
bacon.B.IPRE = 1; // Prescaler for the Idle Delay
bacon.B.LEAD = 1; // Leading Delay Length
bacon.B.LPRE = 1; // Prescaler for the Leading Delay
bacon.B.MSB = 1; // Shift MSB or LSB First
bacon.B.PARTYP = 0; // Parity Type
bacon.B.BYTE = 0; // Byte
bacon.B.TRAIL = 1; // Trailing Delay Length
bacon.B.TPRE = 1; // Prescaler for the Trailing Delay
bacon.B.CS = cs_pin%102/6-3;
bacon[spi_n].U = moudle->BACON.U;
bacon[spi_n].B.DL = 7; // Data Length
bacon[spi_n].B.IDLE = 1; // Idle Delay Length
bacon[spi_n].B.IPRE = 1; // Prescaler for the Idle Delay
bacon[spi_n].B.LEAD = 1; // Leading Delay Length
bacon[spi_n].B.LPRE = 1; // Prescaler for the Leading Delay
bacon[spi_n].B.MSB = 1; // Shift MSB or LSB First
bacon[spi_n].B.PARTYP = 0; // Parity Type
bacon[spi_n].B.BYTE = 0; // Byte
bacon[spi_n].B.TRAIL = 1; // Trailing Delay Length
bacon[spi_n].B.TPRE = 1; // Prescaler for the Trailing Delay
bacon[spi_n].B.CS = cs_pin%102/6-3;
}

View File

@@ -31,6 +31,7 @@
* <20>޸ļ<DEB8>¼
* <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><>ע
* 2022-09-15 pudding first version
* 2023-04-28 pudding <20>޸<EFBFBD><DEB8><EFBFBD><EFBFBD><EFBFBD>SPIͬʱʹ<CAB1>ÿ<EFBFBD><C3BF>ܲ<EFBFBD><DCB2><EFBFBD><EFBFBD><EFBFBD>ͻ<EFBFBD><CDBB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
********************************************************************************************************************/
#ifndef _zf_driver_spi_h_