Initial commit: TC264 smart car project with IPS200 menu system
- IPS200 display menu with real-time status and parameter settings - Camera image processing and line tracking - IMU attitude solution and PID control - WiFi SPI oscilloscope data transmission
This commit is contained in:
commit
843447835d
660 files changed
+443632
No files matched your search
@@ -0,0 +1,83 @@
|
||||
/*********************************************************************************************************************
|
||||
* TC264 Opensourec Library 即(TC264 开源库)是一个基于官方 SDK 接口的第三方开源库
|
||||
* Copyright (c) 2022 SEEKFREE 逐飞科技
|
||||
*
|
||||
* 本文件是 TC264 开源库的一部分
|
||||
*
|
||||
* TC264 开源库 是免费软件
|
||||
* 您可以根据自由软件基金会发布的 GPL(GNU General Public License,即 GNU通用公共许可证)的条款
|
||||
* 即 GPL 的第3版(即 GPL3.0)或(您选择的)任何后来的版本,重新发布和/或修改它
|
||||
*
|
||||
* 本开源库的发布是希望它能发挥作用,但并未对其作任何的保证
|
||||
* 甚至没有隐含的适销性或适合特定用途的保证
|
||||
* 更多细节请参见 GPL
|
||||
*
|
||||
* 您应该在收到本开源库的同时收到一份 GPL 的副本
|
||||
* 如果没有,请参阅<https://www.gnu.org/licenses/>
|
||||
*
|
||||
* 额外注明:
|
||||
* 本开源库使用 GPL3.0 开源许可证协议 以上许可申明为译文版本
|
||||
* 许可申明英文版在 libraries/doc 文件夹下的 GPL3_permission_statement.txt 文件中
|
||||
* 许可证副本在 libraries 文件夹下 即该文件夹下的 LICENSE 文件
|
||||
* 欢迎各位使用并传播本程序 但修改内容时必须保留逐飞科技的版权声明(即本声明)
|
||||
*
|
||||
* 文件名称 printf_redirect
|
||||
* 公司名称 成都逐飞科技有限公司
|
||||
* 版本信息 查看 libraries/doc 文件夹内 version 文件 版本说明
|
||||
* 开发环境 ADS v1.10.2
|
||||
* 适用平台 TC264D
|
||||
* 店铺链接 https://seekfree.taobao.com/
|
||||
*
|
||||
* 修改记录
|
||||
* 日期 作者 备注
|
||||
* 2025-04-19 pudding first version
|
||||
********************************************************************************************************************/
|
||||
|
||||
#include "printf_redirect.h"
|
||||
|
||||
|
||||
#if PRINTF_OUTPUT_TYPE == 0
|
||||
//-------------------------------------------------------------------------------------------------------------------
|
||||
// 函数简介 重定向 printf 到 指定端口
|
||||
// 参数说明 buf 数据流
|
||||
// 参数说明 len 数据长度
|
||||
// 备注信息 此函数由编译器自带库里的printf所调用
|
||||
//-------------------------------------------------------------------------------------------------------------------
|
||||
int fputc(int ch, FILE *stream)
|
||||
{
|
||||
uart_write_byte(PRINTF_USE_UART, (char)ch);
|
||||
|
||||
return (ch);
|
||||
}
|
||||
#else
|
||||
//-------------------------------------------------------------------------------------------------------------------
|
||||
// 函数简介 重定向 printf 到 指定端口
|
||||
// 参数说明 buf 数据流
|
||||
// 参数说明 len 数据长度
|
||||
// 备注信息 此函数由编译器自带库里的printf所调用
|
||||
//-------------------------------------------------------------------------------------------------------------------
|
||||
int _write(int fd, char *buf, int len)
|
||||
{
|
||||
wifi_spi_send_buffer((uint8 *)buf, len);
|
||||
|
||||
return len;
|
||||
}
|
||||
#endif
|
||||
|
||||
//-------------------------------------------------------------------------------------------------------------------
|
||||
// 函数简介 重定向 scanf 到 指定端口
|
||||
// 备注信息 此函数由编译器自带库里的scanf所调用
|
||||
//-------------------------------------------------------------------------------------------------------------------
|
||||
int fgetc(FILE *f)
|
||||
{
|
||||
#if PRINTF_OUTPUT_TYPE == 0
|
||||
return uart_read_byte(PRINTF_USE_UART);
|
||||
#else
|
||||
uint8 buf;
|
||||
wifi_spi_read_buffer(&buf, 1);
|
||||
return buf;
|
||||
#endif
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -0,0 +1,79 @@
|
||||
/*********************************************************************************************************************
|
||||
* TC264 Opensourec Library 即(TC264 开源库)是一个基于官方 SDK 接口的第三方开源库
|
||||
* Copyright (c) 2022 SEEKFREE 逐飞科技
|
||||
*
|
||||
* 本文件是 TC264 开源库的一部分
|
||||
*
|
||||
* TC264 开源库 是免费软件
|
||||
* 您可以根据自由软件基金会发布的 GPL(GNU General Public License,即 GNU通用公共许可证)的条款
|
||||
* 即 GPL 的第3版(即 GPL3.0)或(您选择的)任何后来的版本,重新发布和/或修改它
|
||||
*
|
||||
* 本开源库的发布是希望它能发挥作用,但并未对其作任何的保证
|
||||
* 甚至没有隐含的适销性或适合特定用途的保证
|
||||
* 更多细节请参见 GPL
|
||||
*
|
||||
* 您应该在收到本开源库的同时收到一份 GPL 的副本
|
||||
* 如果没有,请参阅<https://www.gnu.org/licenses/>
|
||||
*
|
||||
* 额外注明:
|
||||
* 本开源库使用 GPL3.0 开源许可证协议 以上许可申明为译文版本
|
||||
* 许可申明英文版在 libraries/doc 文件夹下的 GPL3_permission_statement.txt 文件中
|
||||
* 许可证副本在 libraries 文件夹下 即该文件夹下的 LICENSE 文件
|
||||
* 欢迎各位使用并传播本程序 但修改内容时必须保留逐飞科技的版权声明(即本声明)
|
||||
*
|
||||
* 文件名称 printf_redirect
|
||||
* 公司名称 成都逐飞科技有限公司
|
||||
* 版本信息 查看 libraries/doc 文件夹内 version 文件 版本说明
|
||||
* 开发环境 ADS v1.10.2
|
||||
* 适用平台 TC264D
|
||||
* 店铺链接 https://seekfree.taobao.com/
|
||||
*
|
||||
* 修改记录
|
||||
* 日期 作者 备注
|
||||
* 2025-04-19 pudding first version
|
||||
********************************************************************************************************************/
|
||||
#ifndef _PRINTF_REDIRECT_H_
|
||||
#define _PRINTF_REDIRECT_H_
|
||||
|
||||
#include "zf_common_debug.h"
|
||||
#include "zf_driver_uart.h"
|
||||
#include "zf_driver_spi.h"
|
||||
#include "zf_device_ble6a20.h"
|
||||
#include "zf_device_bluetooth_ch9141.h"
|
||||
#include "zf_device_wifi_uart.h"
|
||||
#include "zf_device_wireless_uart.h"
|
||||
#include "zf_device_wifi_spi.h"
|
||||
|
||||
|
||||
#define PRINTF_OUTPUT_TYPE 0 // printf 打印输出类型 0 使用串口 1 使用SPI
|
||||
|
||||
|
||||
#if PRINTF_OUTPUT_TYPE == 0
|
||||
|
||||
// 逐飞科技开源库 串口输出模块 默认串口宏定义如下:
|
||||
// DEBUG_UART_INDEX // debug 调试串口
|
||||
// BLE6A20_INDEX // ble6a20 无线蓝牙模块
|
||||
// BLUETOOTH_CH9141_INDEX // ch9141 蓝牙模块
|
||||
// WIFI_UART_INDEX // wifi 串口模块
|
||||
// WIRELESS_UART_INDEX // 无线串口模块
|
||||
|
||||
#define PRINTF_USE_UART (DEBUG_UART_INDEX) // 默认 printf 使用 DEBUG_UART_INDEX 串口输出
|
||||
|
||||
|
||||
// 如果 PRINTF_OUTPUT_TYPE 为 1,下方配置则为有效状态 printf 将会通过 SPI 模块输出
|
||||
#else
|
||||
|
||||
// ==================================== 注意 ====================================
|
||||
// 注意:printf使用wifi-spi模块输出字符串必须以"\n"作为单句输出的结尾,否则将导致无法打印或者内存溢出
|
||||
// 注意:printf使用wifi-spi模块输出字符串必须以"\n"作为单句输出的结尾,否则将导致无法打印或者内存溢出
|
||||
// 注意:printf使用wifi-spi模块输出字符串必须以"\n"作为单句输出的结尾,否则将导致无法打印或者内存溢出
|
||||
// ==================================== 注意 ====================================
|
||||
#define PRINTF_USE_SPI (WIFI_SPI_INDEX) // 默认 printf 使用 WIFI_SPI_INDEX 模块输出(该模式暂时仅支持 WIFI-SPI)
|
||||
|
||||
// 逐飞科技开源库 SPI输出模块 默认串口宏定义如下:
|
||||
// WIFI_SPI_INDEX // WIFI-SPI 模块
|
||||
|
||||
#endif
|
||||
|
||||
|
||||
#endif
|
||||
@@ -0,0 +1,446 @@
|
||||
/*********************************************************************************************************************
|
||||
* TC264 Opensourec Library 即(TC264 开源库)是一个基于官方 SDK 接口的第三方开源库
|
||||
* Copyright (c) 2022 SEEKFREE 逐飞科技
|
||||
*
|
||||
* 本文件是 TC264 开源库的一部分
|
||||
*
|
||||
* TC264 开源库 是免费软件
|
||||
* 您可以根据自由软件基金会发布的 GPL(GNU General Public License,即 GNU通用公共许可证)的条款
|
||||
* 即 GPL 的第3版(即 GPL3.0)或(您选择的)任何后来的版本,重新发布和/或修改它
|
||||
*
|
||||
* 本开源库的发布是希望它能发挥作用,但并未对其作任何的保证
|
||||
* 甚至没有隐含的适销性或适合特定用途的保证
|
||||
* 更多细节请参见 GPL
|
||||
*
|
||||
* 您应该在收到本开源库的同时收到一份 GPL 的副本
|
||||
* 如果没有,请参阅<https://www.gnu.org/licenses/>
|
||||
*
|
||||
* 额外注明:
|
||||
* 本开源库使用 GPL3.0 开源许可证协议 以上许可申明为译文版本
|
||||
* 许可申明英文版在 libraries/doc 文件夹下的 GPL3_permission_statement.txt 文件中
|
||||
* 许可证副本在 libraries 文件夹下 即该文件夹下的 LICENSE 文件
|
||||
* 欢迎各位使用并传播本程序 但修改内容时必须保留逐飞科技的版权声明(即本声明)
|
||||
*
|
||||
* 文件名称 seekfree_assistant
|
||||
* 公司名称 成都逐飞科技有限公司
|
||||
* 版本信息 查看 libraries/doc 文件夹内 version 文件 版本说明
|
||||
* 开发环境 ADS v1.10.2
|
||||
* 适用平台 TC264D
|
||||
* 店铺链接 https://seekfree.taobao.com/
|
||||
*
|
||||
* 修改记录
|
||||
* 日期 作者 备注
|
||||
* 2024-01-01 pudding first version
|
||||
********************************************************************************************************************/
|
||||
|
||||
#include "zf_common_debug.h"
|
||||
|
||||
#include "seekfree_assistant.h"
|
||||
|
||||
|
||||
extern uint32 seekfree_assistant_transfer (const uint8 *buff, uint32 length);
|
||||
extern uint32 seekfree_assistant_receive (uint8 *buff, uint32 length);
|
||||
|
||||
#if (1 == SEEKFREE_ASSISTANT_SET_PARAMETR_ENABLE)
|
||||
#include "zf_common_fifo.h"
|
||||
static uint8 seekfree_assistant_buffer[SEEKFREE_ASSISTANT_BUFFER_SIZE]; // FIFO缓冲区
|
||||
static fifo_struct seekfree_assistant_fifo = // FIFO结构体
|
||||
{
|
||||
.buffer = seekfree_assistant_buffer,
|
||||
.execution = FIFO_IDLE,
|
||||
.type = FIFO_DATA_8BIT,
|
||||
.head = 0,
|
||||
.end = 0,
|
||||
.size = SEEKFREE_ASSISTANT_BUFFER_SIZE,
|
||||
.max = SEEKFREE_ASSISTANT_BUFFER_SIZE,
|
||||
};
|
||||
#endif
|
||||
|
||||
static seekfree_assistant_camera_struct seekfree_assistant_camera_data; // 图像上位机协议数据
|
||||
static seekfree_assistant_camera_dot_struct seekfree_assistant_camera_dot_data; // 图像上位机打点协议数据
|
||||
static seekfree_assistant_camera_buffer_struct seekfree_assistant_camera_buffer; // 图像以及边界缓冲区信息
|
||||
|
||||
seekfree_assistant_transfer_callback_function seekfree_assistant_transfer_callback = seekfree_assistant_transfer; // 数据发送函数指针
|
||||
seekfree_assistant_receive_callback_function seekfree_assistant_receive_callback = seekfree_assistant_receive; // 数据接收函数指针
|
||||
|
||||
seekfree_assistant_oscilloscope_struct seekfree_assistant_oscilloscope_data; // 虚拟示波器数据
|
||||
float seekfree_assistant_parameter[SEEKFREE_ASSISTANT_SET_PARAMETR_COUNT] = {0}; // 保存接收到的参数
|
||||
vuint8 seekfree_assistant_parameter_update_flag[SEEKFREE_ASSISTANT_SET_PARAMETR_COUNT] = {0}; // 参数更新标志位
|
||||
|
||||
//-------------------------------------------------------------------------------------------------------------------
|
||||
// 函数简介 逐飞助手求和函数
|
||||
// 参数说明 *buffer 需要校验的数据地址
|
||||
// 参数说明 length 校验长度
|
||||
// 返回参数 uint8 和值
|
||||
// 使用示例
|
||||
//-------------------------------------------------------------------------------------------------------------------
|
||||
static uint8 seekfree_assistant_sum (uint8 *buffer, uint32 length)
|
||||
{
|
||||
uint8 temp_sum = 0;
|
||||
|
||||
while(length--)
|
||||
{
|
||||
temp_sum += *buffer++;
|
||||
}
|
||||
|
||||
return temp_sum;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------------------------------------------------------
|
||||
// 函数简介 逐飞助手 图像发送函数
|
||||
// 参数说明 camera_type 摄像头类型
|
||||
// 参数说明 *image_addr 图像首地址
|
||||
// 参数说明 boundary_num 图像中包含边界数量
|
||||
// 参数说明 width 图像宽度
|
||||
// 参数说明 height 图像高度
|
||||
// 返回参数 void
|
||||
// 使用示例
|
||||
//-------------------------------------------------------------------------------------------------------------------
|
||||
void seekfree_assistant_camera_data_send (seekfree_assistant_image_type_enum camera_type, void *image_addr, uint8 boundary_num, uint16 width, uint16 height)
|
||||
{
|
||||
uint32 image_size = 0;
|
||||
|
||||
seekfree_assistant_camera_data.head = SEEKFREE_ASSISTANT_SEND_HEAD;
|
||||
seekfree_assistant_camera_data.function = SEEKFREE_ASSISTANT_CAMERA_FUNCTION;
|
||||
seekfree_assistant_camera_data.camera_type = (camera_type << 5) | ((image_addr != NULL ? 0 : 1) << 4) | boundary_num;
|
||||
// 写入包长度信息,仅包含协议部分
|
||||
seekfree_assistant_camera_data.length = sizeof(seekfree_assistant_camera_struct);
|
||||
seekfree_assistant_camera_data.image_width = width;
|
||||
seekfree_assistant_camera_data.image_height = height;
|
||||
|
||||
// 首先发送帧头、功能、摄像头类型、以及宽度高度等信息
|
||||
seekfree_assistant_transfer_callback((const uint8 *)&seekfree_assistant_camera_data, sizeof(seekfree_assistant_camera_struct));
|
||||
|
||||
// 根据摄像头类型计算图像大小
|
||||
switch(camera_type)
|
||||
{
|
||||
case SEEKFREE_ASSISTANT_OV7725_BIN:
|
||||
{
|
||||
image_size = width * height / 8;
|
||||
}break;
|
||||
|
||||
case SEEKFREE_ASSISTANT_MT9V03X:
|
||||
{
|
||||
image_size = width * height;
|
||||
}break;
|
||||
|
||||
case SEEKFREE_ASSISTANT_SCC8660:
|
||||
{
|
||||
image_size = width * height * 2;
|
||||
}break;
|
||||
}
|
||||
|
||||
// 发送图像数据
|
||||
if(NULL != image_addr)
|
||||
{
|
||||
seekfree_assistant_transfer_callback(image_addr, image_size);
|
||||
}
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------------------------------------------------------
|
||||
// 函数简介 逐飞助手 图像边线绘制函数
|
||||
// 参数说明 boundary_id 边线ID
|
||||
// 参数说明 dot_num 点数量
|
||||
// 参数说明 *dot_x 横坐标数据首地址
|
||||
// 参数说明 *dot_y 纵坐标数据首地址
|
||||
// 参数说明 width 图像宽度
|
||||
// 参数说明 height 图像高度
|
||||
// 返回参数 void
|
||||
// 使用示例
|
||||
//-------------------------------------------------------------------------------------------------------------------
|
||||
void seekfree_assistant_camera_dot_send (seekfree_assistant_camera_buffer_struct *buffer)
|
||||
{
|
||||
uint8 i;
|
||||
uint16 dot_bytes = 0; // 点字节数量
|
||||
|
||||
dot_bytes = seekfree_assistant_camera_dot_data.dot_num;
|
||||
|
||||
if(seekfree_assistant_camera_dot_data.dot_type & (1 << 5))
|
||||
{
|
||||
dot_bytes *= 2;
|
||||
}
|
||||
|
||||
// 首先发送帧头、功能、边界编号、坐标长度、点个数
|
||||
seekfree_assistant_transfer_callback((const uint8 *)&seekfree_assistant_camera_dot_data, sizeof(seekfree_assistant_camera_dot_struct));
|
||||
|
||||
for(i=0; i < SEEKFREE_ASSISTANT_CAMERA_MAX_BOUNDARY; i++)
|
||||
{
|
||||
// 判断是否发送横坐标数据
|
||||
if(NULL != buffer->boundary_x[i])
|
||||
{
|
||||
seekfree_assistant_transfer_callback((const uint8 *)buffer->boundary_x[i], dot_bytes);
|
||||
}
|
||||
|
||||
// 判断是否发送纵坐标数据
|
||||
if(NULL != buffer->boundary_y[i])
|
||||
{
|
||||
// 如果没有纵坐标数据,则表示每一行只有一个边界
|
||||
// 指定了横纵坐标数据,这种方式可以实现同一行多个边界的情况,例如搜线算法能够搜索出回弯。
|
||||
seekfree_assistant_transfer_callback((const uint8 *)buffer->boundary_y[i], dot_bytes);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------------------------------------------------------
|
||||
// 函数简介 逐飞助手 虚拟示波器发送函数
|
||||
// 参数说明 *seekfree_assistant_oscilloscope 示波器数据结构体
|
||||
// 返回参数 void
|
||||
// 使用示例 seekfree_assistant_oscilloscope_send(&seekfree_assistant_oscilloscope_data);
|
||||
//-------------------------------------------------------------------------------------------------------------------
|
||||
void seekfree_assistant_oscilloscope_send (seekfree_assistant_oscilloscope_struct *seekfree_assistant_oscilloscope)
|
||||
{
|
||||
uint8 packet_size;
|
||||
|
||||
// 将高四位清空
|
||||
seekfree_assistant_oscilloscope->channel_num &= 0x0f;
|
||||
|
||||
zf_assert(SEEKFREE_ASSISTANT_SET_OSCILLOSCOPE_COUNT >= seekfree_assistant_oscilloscope->channel_num);
|
||||
|
||||
// 帧头
|
||||
seekfree_assistant_oscilloscope->head = SEEKFREE_ASSISTANT_SEND_HEAD;
|
||||
|
||||
// 写入包长度信息
|
||||
packet_size = sizeof(seekfree_assistant_oscilloscope_struct) - (SEEKFREE_ASSISTANT_SET_OSCILLOSCOPE_COUNT - seekfree_assistant_oscilloscope->channel_num) * 4;
|
||||
seekfree_assistant_oscilloscope->length = packet_size;
|
||||
|
||||
// 写入功能字与通道数量
|
||||
seekfree_assistant_oscilloscope->channel_num |= SEEKFREE_ASSISTANT_CAMERA_OSCILLOSCOPE;
|
||||
|
||||
// 和校验计算
|
||||
seekfree_assistant_oscilloscope->check_sum = 0;
|
||||
seekfree_assistant_oscilloscope->check_sum = seekfree_assistant_sum((uint8 *)seekfree_assistant_oscilloscope, packet_size);
|
||||
|
||||
// 数据在调用本函数之前,由用户将需要发送的数据写入seekfree_assistant_oscilloscope_data.data[]
|
||||
|
||||
seekfree_assistant_transfer_callback((const uint8 *)seekfree_assistant_oscilloscope, packet_size);
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------------------------------------------------------
|
||||
// 函数简介 逐飞助手图像信息配置函数
|
||||
// 参数说明 camera_type 图像类型
|
||||
// 参数说明 image_addr 图像地址 如果传递NULL参数则表示只发送边线信息到上位机
|
||||
// 参数说明 width 图像宽度
|
||||
// 参数说明 height 图像高度
|
||||
// 返回参数 void
|
||||
// 使用示例 seekfree_assistant_camera_information_config(SEEKFREE_ASSISTANT_MT9V03X, mt9v03x_image[0], MT9V03X_W, MT9V03X_H);
|
||||
// 备注信息
|
||||
//-------------------------------------------------------------------------------------------------------------------
|
||||
void seekfree_assistant_camera_information_config (seekfree_assistant_image_type_enum camera_type, void *image_addr, uint16 width, uint16 height)
|
||||
{
|
||||
seekfree_assistant_camera_dot_data.head = SEEKFREE_ASSISTANT_SEND_HEAD;
|
||||
seekfree_assistant_camera_dot_data.function = SEEKFREE_ASSISTANT_CAMERA_DOT_FUNCTION;
|
||||
// 写入包长度信息
|
||||
seekfree_assistant_camera_dot_data.length = sizeof(seekfree_assistant_camera_dot_struct);
|
||||
|
||||
seekfree_assistant_camera_buffer.camera_type = camera_type;
|
||||
seekfree_assistant_camera_buffer.image_addr = image_addr;
|
||||
seekfree_assistant_camera_buffer.width = width;
|
||||
seekfree_assistant_camera_buffer.height = height;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------------------------------------------------------
|
||||
// 函数简介 逐飞助手图像边线发送配置函数
|
||||
// 参数说明 boundary_type 边界类型
|
||||
// 参数说明 dot_num 一条边界有多少个点
|
||||
// 参数说明 dot_x1 存放边线1横坐标的地址 如果传递NULL参数则表示不发送边线1
|
||||
// 参数说明 dot_x2 存放边线2横坐标的地址 如果传递NULL参数则表示不发送边线2
|
||||
// 参数说明 dot_x3 存放边线3横坐标的地址 如果传递NULL参数则表示不发送边线3
|
||||
// 参数说明 dot_y1 存放边线1纵坐标的地址 如果传递NULL参数则表示不发送边线1
|
||||
// 参数说明 dot_y2 存放边线2纵坐标的地址 如果传递NULL参数则表示不发送边线2
|
||||
// 参数说明 dot_y3 存放边线3纵坐标的地址 如果传递NULL参数则表示不发送边线3
|
||||
// 返回参数 void
|
||||
// 使用示例 seekfree_assistant_camera_config(X_BOUNDARY, MT9V03X_H, x1_boundary, x2_boundary, x3_boundary, NULL, NULL, NULL); // 图像发送时包含三条边线,边线只有横坐标
|
||||
// 使用示例 seekfree_assistant_camera_config(Y_BOUNDARY, MT9V03X_W, NULL, NULL, NULL, y1_boundary, y2_boundary, y3_boundary); // 图像发送时包含三条边线,边线只有纵坐标
|
||||
// 使用示例 seekfree_assistant_camera_config(XY_BOUNDARY, 160, xy_x1_boundary, xy_x2_boundary, xy_x3_boundary, xy_y1_boundary, xy_y2_boundary, xy_y3_boundary); // 图像发送时包含三条边线,边线包含横纵坐标
|
||||
// 备注信息
|
||||
//-------------------------------------------------------------------------------------------------------------------
|
||||
void seekfree_assistant_camera_boundary_config (seekfree_assistant_boundary_type_enum boundary_type, uint16 dot_num, void *dot_x1, void *dot_x2, void *dot_x3, void *dot_y1, void *dot_y2, void *dot_y3)
|
||||
{
|
||||
uint8 i = 0;
|
||||
uint8 boundary_num = 0;
|
||||
uint8 boundary_data_type = 0;
|
||||
|
||||
// 检查图像发送缓冲区是否准备就绪, 调用此函数之前需要先调用seekfree_assistant_camera_config设置好图像信息
|
||||
zf_assert(0 != seekfree_assistant_camera_buffer.camera_type);
|
||||
|
||||
seekfree_assistant_camera_dot_data.dot_num = dot_num;
|
||||
seekfree_assistant_camera_dot_data.valid_flag = 0;
|
||||
for(i = 0; i < 3; i++)
|
||||
{
|
||||
seekfree_assistant_camera_buffer.boundary_x[i] = NULL;
|
||||
seekfree_assistant_camera_buffer.boundary_y[i] = NULL;
|
||||
}
|
||||
|
||||
switch(boundary_type)
|
||||
{
|
||||
case X_BOUNDARY:
|
||||
{
|
||||
if(NULL != dot_x1)
|
||||
{
|
||||
boundary_num++;
|
||||
seekfree_assistant_camera_dot_data.valid_flag |= 1 << 0;
|
||||
seekfree_assistant_camera_buffer.boundary_x[i++] = dot_x1;
|
||||
}
|
||||
if(NULL != dot_x2)
|
||||
{
|
||||
boundary_num++;
|
||||
seekfree_assistant_camera_dot_data.valid_flag |= 1 << 1;
|
||||
seekfree_assistant_camera_buffer.boundary_x[i++] = dot_x2;
|
||||
}
|
||||
if(NULL != dot_x3)
|
||||
{
|
||||
boundary_num++;
|
||||
seekfree_assistant_camera_dot_data.valid_flag |= 1 << 2;
|
||||
seekfree_assistant_camera_buffer.boundary_x[i++] = dot_x3;
|
||||
}
|
||||
|
||||
if(255 < seekfree_assistant_camera_buffer.height)
|
||||
{
|
||||
boundary_data_type = 1;
|
||||
}
|
||||
}break;
|
||||
|
||||
case Y_BOUNDARY:
|
||||
{
|
||||
if(NULL != dot_y1)
|
||||
{
|
||||
boundary_num++;
|
||||
seekfree_assistant_camera_dot_data.valid_flag |= 1 << 0;
|
||||
seekfree_assistant_camera_buffer.boundary_y[i++] = dot_y1;
|
||||
}
|
||||
if(NULL != dot_y2)
|
||||
{
|
||||
boundary_num++;
|
||||
seekfree_assistant_camera_dot_data.valid_flag |= 1 << 1;
|
||||
seekfree_assistant_camera_buffer.boundary_y[i++] = dot_y2;
|
||||
}
|
||||
if(NULL != dot_y3)
|
||||
{
|
||||
boundary_num++;
|
||||
seekfree_assistant_camera_dot_data.valid_flag |= 1 << 2;
|
||||
seekfree_assistant_camera_buffer.boundary_y[i++] = dot_y3;
|
||||
}
|
||||
|
||||
if(255 < seekfree_assistant_camera_buffer.width)
|
||||
{
|
||||
boundary_data_type = 1;
|
||||
}
|
||||
}break;
|
||||
|
||||
case XY_BOUNDARY:
|
||||
{
|
||||
if((NULL != dot_x1) && (NULL != dot_y1))
|
||||
{
|
||||
boundary_num++;
|
||||
seekfree_assistant_camera_dot_data.valid_flag |= 1 << 0;
|
||||
seekfree_assistant_camera_buffer.boundary_x[i] = dot_x1;
|
||||
seekfree_assistant_camera_buffer.boundary_y[i++] = dot_y1;
|
||||
}
|
||||
if((NULL != dot_x2) && (NULL != dot_y2))
|
||||
{
|
||||
boundary_num++;
|
||||
seekfree_assistant_camera_dot_data.valid_flag |= 1 << 1;
|
||||
seekfree_assistant_camera_buffer.boundary_x[i] = dot_x2;
|
||||
seekfree_assistant_camera_buffer.boundary_y[i++] = dot_y2;
|
||||
}
|
||||
if((NULL != dot_x3) && (NULL != dot_y3))
|
||||
{
|
||||
boundary_num++;
|
||||
seekfree_assistant_camera_dot_data.valid_flag |= 1 << 2;
|
||||
seekfree_assistant_camera_buffer.boundary_x[i] = dot_x3;
|
||||
seekfree_assistant_camera_buffer.boundary_y[i++] = dot_y3;
|
||||
}
|
||||
|
||||
if((255 < seekfree_assistant_camera_buffer.width) || (255 < seekfree_assistant_camera_buffer.height))
|
||||
{
|
||||
boundary_data_type = 1;
|
||||
}
|
||||
}break;
|
||||
|
||||
case NO_BOUNDARY:break;
|
||||
}
|
||||
|
||||
seekfree_assistant_camera_dot_data.dot_type = (boundary_type << 6) | (boundary_data_type << 5) | boundary_num;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------------------------------------------------------
|
||||
// 函数简介 逐飞助手发送摄像头图像
|
||||
// 参数说明 void
|
||||
// 返回参数 void
|
||||
// 使用示例
|
||||
// 备注信息 在调用图像发送函数之前,请务必调用一次seekfree_assistant_camera_config函数,将对应的参数设置好
|
||||
//-------------------------------------------------------------------------------------------------------------------
|
||||
void seekfree_assistant_camera_send (void)
|
||||
{
|
||||
// 检查图像发送缓冲区是否准备就绪
|
||||
zf_assert(0 != seekfree_assistant_camera_buffer.camera_type);
|
||||
|
||||
seekfree_assistant_camera_data_send(seekfree_assistant_camera_buffer.camera_type, seekfree_assistant_camera_buffer.image_addr, seekfree_assistant_camera_dot_data.dot_type & 0x0f, seekfree_assistant_camera_buffer.width, seekfree_assistant_camera_buffer.height);
|
||||
|
||||
if(seekfree_assistant_camera_dot_data.dot_type & 0x0f)
|
||||
{
|
||||
seekfree_assistant_camera_dot_send(&seekfree_assistant_camera_buffer);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
//-------------------------------------------------------------------------------------------------------------------
|
||||
// 函数简介 逐飞助手解析接收到的数据
|
||||
// 参数说明 void
|
||||
// 返回参数 void
|
||||
// 使用示例 函数只需要放到周期运行的PIT中断或者主循环即可
|
||||
//-------------------------------------------------------------------------------------------------------------------
|
||||
#if (1 == SEEKFREE_ASSISTANT_SET_PARAMETR_ENABLE)
|
||||
void seekfree_assistant_data_analysis (void)
|
||||
{
|
||||
uint8 temp_sum;
|
||||
uint32 read_length;
|
||||
seekfree_assistant_parameter_struct *receive_packet;
|
||||
|
||||
// 这里使用uint32进行定义,目的是为了保证数组四字节对齐
|
||||
uint32 temp_buffer[SEEKFREE_ASSISTANT_BUFFER_SIZE / 4];
|
||||
|
||||
// 尝试读取数据, 如果不是自定义的传输方式则从接收回调中读取数据
|
||||
read_length = seekfree_assistant_receive_callback((uint8 *)temp_buffer, SEEKFREE_ASSISTANT_BUFFER_SIZE);
|
||||
if(read_length)
|
||||
{
|
||||
// 将读取到的数据写入FIFO
|
||||
fifo_write_buffer(&seekfree_assistant_fifo, (uint8 *)temp_buffer, read_length);
|
||||
}
|
||||
|
||||
while(sizeof(seekfree_assistant_parameter_struct) <= fifo_used(&seekfree_assistant_fifo))
|
||||
{
|
||||
read_length = sizeof(seekfree_assistant_parameter_struct);
|
||||
fifo_read_buffer(&seekfree_assistant_fifo, (uint8 *)temp_buffer, &read_length, FIFO_READ_ONLY);
|
||||
|
||||
if(SEEKFREE_ASSISTANT_RECEIVE_HEAD != ((uint8 *)temp_buffer)[0])
|
||||
{
|
||||
// 没有帧头则从FIFO中去掉第一个数据
|
||||
read_length = 1;
|
||||
}
|
||||
else
|
||||
{
|
||||
// 找到帧头
|
||||
receive_packet = (seekfree_assistant_parameter_struct *)temp_buffer;
|
||||
temp_sum = receive_packet->check_sum;
|
||||
receive_packet->check_sum = 0;
|
||||
if(temp_sum == seekfree_assistant_sum((uint8 *)temp_buffer, sizeof(seekfree_assistant_parameter_struct)))
|
||||
{
|
||||
// 和校验成功保存数据
|
||||
seekfree_assistant_parameter[receive_packet->channel - 1] = receive_packet->data;
|
||||
seekfree_assistant_parameter_update_flag[receive_packet->channel - 1] = 1;
|
||||
}
|
||||
else
|
||||
{
|
||||
read_length = 1;
|
||||
}
|
||||
}
|
||||
|
||||
// 丢弃无需使用的数据
|
||||
fifo_read_buffer(&seekfree_assistant_fifo, (uint8 *)temp_buffer, &read_length, FIFO_READ_AND_CLEAN);
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
||||
|
||||
|
||||
@@ -0,0 +1,165 @@
|
||||
/*********************************************************************************************************************
|
||||
* TC264 Opensourec Library 即(TC264 开源库)是一个基于官方 SDK 接口的第三方开源库
|
||||
* Copyright (c) 2022 SEEKFREE 逐飞科技
|
||||
*
|
||||
* 本文件是 TC264 开源库的一部分
|
||||
*
|
||||
* TC264 开源库 是免费软件
|
||||
* 您可以根据自由软件基金会发布的 GPL(GNU General Public License,即 GNU通用公共许可证)的条款
|
||||
* 即 GPL 的第3版(即 GPL3.0)或(您选择的)任何后来的版本,重新发布和/或修改它
|
||||
*
|
||||
* 本开源库的发布是希望它能发挥作用,但并未对其作任何的保证
|
||||
* 甚至没有隐含的适销性或适合特定用途的保证
|
||||
* 更多细节请参见 GPL
|
||||
*
|
||||
* 您应该在收到本开源库的同时收到一份 GPL 的副本
|
||||
* 如果没有,请参阅<https://www.gnu.org/licenses/>
|
||||
*
|
||||
* 额外注明:
|
||||
* 本开源库使用 GPL3.0 开源许可证协议 以上许可申明为译文版本
|
||||
* 许可申明英文版在 libraries/doc 文件夹下的 GPL3_permission_statement.txt 文件中
|
||||
* 许可证副本在 libraries 文件夹下 即该文件夹下的 LICENSE 文件
|
||||
* 欢迎各位使用并传播本程序 但修改内容时必须保留逐飞科技的版权声明(即本声明)
|
||||
*
|
||||
* 文件名称 seekfree_assistant
|
||||
* 公司名称 成都逐飞科技有限公司
|
||||
* 版本信息 查看 libraries/doc 文件夹内 version 文件 版本说明
|
||||
* 开发环境 ADS v1.10.2
|
||||
* 适用平台 TC264D
|
||||
* 店铺链接 https://seekfree.taobao.com/
|
||||
*
|
||||
* 修改记录
|
||||
* 日期 作者 备注
|
||||
* 2024-01-01 pudding first version
|
||||
********************************************************************************************************************/
|
||||
#ifndef _seekfree_assistant_h_
|
||||
#define _seekfree_assistant_h_
|
||||
|
||||
|
||||
#include "zf_common_typedef.h"
|
||||
|
||||
|
||||
// 1:使能参数调节的功能 0:关闭参数调节的功能
|
||||
#define SEEKFREE_ASSISTANT_SET_PARAMETR_ENABLE ( 1 )
|
||||
|
||||
|
||||
|
||||
// 定义接收FIFO大小
|
||||
#define SEEKFREE_ASSISTANT_BUFFER_SIZE ( 0x80 )
|
||||
|
||||
// 定义示波器的最大通道数量
|
||||
#define SEEKFREE_ASSISTANT_SET_OSCILLOSCOPE_COUNT ( 0x08 )
|
||||
|
||||
// 定义参数调试的最大通道数量
|
||||
#define SEEKFREE_ASSISTANT_SET_PARAMETR_COUNT ( 0x08 )
|
||||
|
||||
// 定义图像边线最大数量
|
||||
#define SEEKFREE_ASSISTANT_CAMERA_MAX_BOUNDARY ( 0x08 )
|
||||
|
||||
// 单片机往上位机发送的帧头
|
||||
#define SEEKFREE_ASSISTANT_SEND_HEAD ( 0xAA )
|
||||
|
||||
// 摄像头类
|
||||
#define SEEKFREE_ASSISTANT_CAMERA_FUNCTION ( 0x02 )
|
||||
#define SEEKFREE_ASSISTANT_CAMERA_DOT_FUNCTION ( 0x03 )
|
||||
#define SEEKFREE_ASSISTANT_CAMERA_OSCILLOSCOPE ( 0x10 )
|
||||
|
||||
// 上位机往单片机发送的帧头
|
||||
#define SEEKFREE_ASSISTANT_RECEIVE_HEAD ( 0x55 )
|
||||
|
||||
// 参数设置类
|
||||
#define SEEKFREE_ASSISTANT_RECEIVE_SET_PARAMETER ( 0x20 )
|
||||
|
||||
|
||||
// 摄像头类型枚举
|
||||
typedef enum
|
||||
{
|
||||
// 按照摄像头型号定义
|
||||
SEEKFREE_ASSISTANT_OV7725_BIN = 1,
|
||||
SEEKFREE_ASSISTANT_MT9V03X,
|
||||
SEEKFREE_ASSISTANT_SCC8660,
|
||||
|
||||
// 按照图像类型定义
|
||||
SEEKFREE_ASSISTANT_BINARY = 1,
|
||||
SEEKFREE_ASSISTANT_GRAY,
|
||||
SEEKFREE_ASSISTANT_RGB565,
|
||||
}seekfree_assistant_image_type_enum;
|
||||
|
||||
// 摄像头类型枚举
|
||||
typedef enum
|
||||
{
|
||||
// 按照摄像头型号定义
|
||||
X_BOUNDARY, // 发送的图像中边界信息只包含X,也就是只有横坐标信息,纵坐标根据图像高度得到
|
||||
Y_BOUNDARY, // 发送的图像中边界信息只包含Y,也就是只有纵坐标信息,横坐标根据图像宽度得到,通常很少有这样的需求
|
||||
XY_BOUNDARY, // 发送的图像中边界信息包含X与Y,这样可以指定点在任意位置,就可以方便显示出回弯的效果
|
||||
NO_BOUNDARY, // 发送的图像中没有边线信息
|
||||
}seekfree_assistant_boundary_type_enum;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
uint8 head; // 帧头
|
||||
uint8 channel_num; // 高四位为功能字 低四位为通道数量
|
||||
uint8 check_sum; // 和校验
|
||||
uint8 length; // 包长度
|
||||
float data[SEEKFREE_ASSISTANT_SET_OSCILLOSCOPE_COUNT]; // 通道数据
|
||||
}seekfree_assistant_oscilloscope_struct;
|
||||
|
||||
|
||||
typedef struct
|
||||
{
|
||||
uint8 head; // 帧头
|
||||
uint8 function; // 功能字
|
||||
uint8 camera_type; // 低四位表示边界数量 第四位表示是否有图像数据 例如0x13:其中3表示一副图像有三条边界(通常是左边界、中线、右边界)、1表示没有图像数据
|
||||
uint8 length; // 包长度(仅包含协议部分)
|
||||
uint16 image_width; // 图像宽度
|
||||
uint16 image_height; // 图像高度
|
||||
}seekfree_assistant_camera_struct;
|
||||
|
||||
|
||||
typedef struct
|
||||
{
|
||||
uint8 head; // 帧头
|
||||
uint8 function; // 功能字
|
||||
uint8 dot_type; // 点类型 BIT5:1:坐标是16位的 0:坐标是8位的 BIT7-BIT6:0:只有X坐标 1:只有Y坐标 2:X和Y坐标都有 BIT3-BIT0:边界数量
|
||||
uint8 length; // 包长度(仅包含协议部分)
|
||||
uint16 dot_num; // 画点数量
|
||||
uint8 valid_flag; // 通道标识
|
||||
uint8 reserve; // 保留
|
||||
}seekfree_assistant_camera_dot_struct;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
void *image_addr; // 摄像头地址
|
||||
uint16 width; // 图像宽度
|
||||
uint16 height; // 图像高度
|
||||
seekfree_assistant_image_type_enum camera_type; // 摄像头类型
|
||||
void *boundary_x[SEEKFREE_ASSISTANT_CAMERA_MAX_BOUNDARY]; // 边界横坐标数组地址
|
||||
void *boundary_y[SEEKFREE_ASSISTANT_CAMERA_MAX_BOUNDARY]; // 边界纵坐标数组地址
|
||||
}seekfree_assistant_camera_buffer_struct;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
uint8 head; // 帧头
|
||||
uint8 function; // 功能字
|
||||
uint8 channel; // 通道
|
||||
uint8 check_sum; // 和校验
|
||||
float data; // 数据
|
||||
}seekfree_assistant_parameter_struct;
|
||||
|
||||
typedef uint32 (*seekfree_assistant_transfer_callback_function) (const uint8 *buff, uint32 length);
|
||||
typedef uint32 (*seekfree_assistant_receive_callback_function) (uint8 *buff, uint32 length);
|
||||
|
||||
extern seekfree_assistant_oscilloscope_struct seekfree_assistant_oscilloscope_data; // 虚拟示波器数据
|
||||
extern float seekfree_assistant_parameter[SEEKFREE_ASSISTANT_SET_PARAMETR_COUNT]; // 保存接收到的参数
|
||||
extern vuint8 seekfree_assistant_parameter_update_flag[SEEKFREE_ASSISTANT_SET_PARAMETR_COUNT]; // 参数更新标志位
|
||||
|
||||
|
||||
void seekfree_assistant_oscilloscope_send (seekfree_assistant_oscilloscope_struct *seekfree_assistant_oscilloscope);
|
||||
void seekfree_assistant_camera_information_config (seekfree_assistant_image_type_enum camera_type, void *image_addr, uint16 width, uint16 height);
|
||||
void seekfree_assistant_camera_boundary_config (seekfree_assistant_boundary_type_enum boundary_type, uint16 dot_num, void *dot_x1, void *dot_x2, void *dot_x3, void *dot_y1, void *dot_y2, void *dot_y3);
|
||||
void seekfree_assistant_camera_send (void);
|
||||
void seekfree_assistant_data_analysis (void);
|
||||
|
||||
|
||||
|
||||
#endif
|
||||
@@ -0,0 +1,138 @@
|
||||
/*********************************************************************************************************************
|
||||
* TC264 Opensourec Library 即(TC264 开源库)是一个基于官方 SDK 接口的第三方开源库
|
||||
* Copyright (c) 2022 SEEKFREE 逐飞科技
|
||||
*
|
||||
* 本文件是 TC264 开源库的一部分
|
||||
*
|
||||
* TC264 开源库 是免费软件
|
||||
* 您可以根据自由软件基金会发布的 GPL(GNU General Public License,即 GNU通用公共许可证)的条款
|
||||
* 即 GPL 的第3版(即 GPL3.0)或(您选择的)任何后来的版本,重新发布和/或修改它
|
||||
*
|
||||
* 本开源库的发布是希望它能发挥作用,但并未对其作任何的保证
|
||||
* 甚至没有隐含的适销性或适合特定用途的保证
|
||||
* 更多细节请参见 GPL
|
||||
*
|
||||
* 您应该在收到本开源库的同时收到一份 GPL 的副本
|
||||
* 如果没有,请参阅<https://www.gnu.org/licenses/>
|
||||
*
|
||||
* 额外注明:
|
||||
* 本开源库使用 GPL3.0 开源许可证协议 以上许可申明为译文版本
|
||||
* 许可申明英文版在 libraries/doc 文件夹下的 GPL3_permission_statement.txt 文件中
|
||||
* 许可证副本在 libraries 文件夹下 即该文件夹下的 LICENSE 文件
|
||||
* 欢迎各位使用并传播本程序 但修改内容时必须保留逐飞科技的版权声明(即本声明)
|
||||
*
|
||||
* 文件名称 seekfree_assistant_interface
|
||||
* 公司名称 成都逐飞科技有限公司
|
||||
* 版本信息 查看 libraries/doc 文件夹内 version 文件 版本说明
|
||||
* 开发环境 ADS v1.10.2
|
||||
* 适用平台 TC264D
|
||||
* 店铺链接 https://seekfree.taobao.com/
|
||||
*
|
||||
* 修改记录
|
||||
* 日期 作者 备注
|
||||
* 2024-01-01 pudding first version
|
||||
********************************************************************************************************************/
|
||||
|
||||
#include "zf_common_typedef.h"
|
||||
#include "zf_common_fifo.h"
|
||||
#include "zf_common_debug.h"
|
||||
#include "zf_driver_uart.h"
|
||||
#include "zf_device_wireless_uart.h"
|
||||
#include "zf_device_ble6a20.h"
|
||||
#include "zf_device_bluetooth_ch9141.h"
|
||||
#include "zf_device_wifi_uart.h"
|
||||
#include "zf_device_wifi_spi.h"
|
||||
#include "seekfree_assistant.h"
|
||||
|
||||
#include "seekfree_assistant_interface.h"
|
||||
|
||||
|
||||
extern seekfree_assistant_transfer_callback_function seekfree_assistant_transfer_callback; // 数据发送函数指针
|
||||
extern seekfree_assistant_receive_callback_function seekfree_assistant_receive_callback; // 数据接收函数指针
|
||||
|
||||
|
||||
//-------------------------------------------------------------------------------------------------------------------
|
||||
// 函数简介 逐飞助手发送函数
|
||||
// 参数说明 *buff 需要发送的数据地址
|
||||
// 参数说明 length 需要发送的长度
|
||||
// 返回参数 uint32 剩余未发送数据长度
|
||||
// 使用示例
|
||||
//-------------------------------------------------------------------------------------------------------------------
|
||||
ZF_WEAK uint32 seekfree_assistant_transfer (const uint8 *buff, uint32 length)
|
||||
{
|
||||
|
||||
// 当选择自定义通讯方式时 需要自行完成数据发送功能
|
||||
return length;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------------------------------------------------------
|
||||
// 函数简介 逐飞助手接收数据函数
|
||||
// 参数说明 *buff 需要接收的数据地址
|
||||
// 参数说明 length 要接收的数据最大长度
|
||||
// 返回参数 uint32 接收到的数据长度
|
||||
// 使用示例
|
||||
//-------------------------------------------------------------------------------------------------------------------
|
||||
ZF_WEAK uint32 seekfree_assistant_receive (uint8 *buff, uint32 length)
|
||||
{
|
||||
// 当选择自定义通讯方式时 需要自行完成数据接收功能
|
||||
return 0;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------------------------------------------------------
|
||||
// 函数简介 逐飞助手接口 初始化
|
||||
// 参数说明
|
||||
// 返回参数 void
|
||||
// 使用示例 seekfree_assistant_interface_init(SEEKFREE_ASSISTANT_WIFI_SPI); 使用高速WIFI SPI模块进行数据收发
|
||||
// 备注 需要自行调用设备的初始化,例如使用无线转串口进行数据的收发,则需要自行调用无线转串口的初始化,然后再调用seekfree_assistant_interface_init完成逐飞助手的接口初始化
|
||||
//-------------------------------------------------------------------------------------------------------------------
|
||||
ZF_WEAK void seekfree_assistant_interface_init (seekfree_assistant_transfer_device_enum transfer_device)
|
||||
{
|
||||
switch(transfer_device)
|
||||
{
|
||||
case SEEKFREE_ASSISTANT_DEBUG_UART:
|
||||
{
|
||||
#if DEBUG_UART_USE_INTERRUPT == 1
|
||||
seekfree_assistant_transfer_callback = debug_send_buffer;
|
||||
seekfree_assistant_receive_callback = debug_read_ring_buffer;
|
||||
#endif
|
||||
}break;
|
||||
|
||||
case SEEKFREE_ASSISTANT_WIRELESS_UART:
|
||||
{
|
||||
seekfree_assistant_transfer_callback = wireless_uart_send_buffer;
|
||||
seekfree_assistant_receive_callback = wireless_uart_read_buffer;
|
||||
}break;
|
||||
|
||||
case SEEKFREE_ASSISTANT_BLE6A20:
|
||||
{
|
||||
seekfree_assistant_transfer_callback = ble6a20_send_buffer;
|
||||
seekfree_assistant_receive_callback = ble6a20_read_buffer;
|
||||
}break;
|
||||
|
||||
case SEEKFREE_ASSISTANT_CH9141:
|
||||
{
|
||||
seekfree_assistant_transfer_callback = bluetooth_ch9141_send_buffer;
|
||||
seekfree_assistant_receive_callback = bluetooth_ch9141_read_buffer;
|
||||
}break;
|
||||
|
||||
case SEEKFREE_ASSISTANT_WIFI_UART:
|
||||
{
|
||||
seekfree_assistant_transfer_callback = wifi_uart_send_buffer;
|
||||
seekfree_assistant_receive_callback = wifi_uart_read_buffer;
|
||||
}break;
|
||||
|
||||
case SEEKFREE_ASSISTANT_WIFI_SPI:
|
||||
{
|
||||
seekfree_assistant_transfer_callback = wifi_spi_send_buffer;
|
||||
seekfree_assistant_receive_callback = wifi_spi_read_buffer;
|
||||
}break;
|
||||
|
||||
case SEEKFREE_ASSISTANT_CUSTOM:
|
||||
{
|
||||
// 根据自己的需求 自行实现seekfree_assistant_transfer与seekfree_assistant_receive函数,完成数据的收发
|
||||
|
||||
}break;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -0,0 +1,58 @@
|
||||
/*********************************************************************************************************************
|
||||
* TC264 Opensourec Library 即(TC264 开源库)是一个基于官方 SDK 接口的第三方开源库
|
||||
* Copyright (c) 2022 SEEKFREE 逐飞科技
|
||||
*
|
||||
* 本文件是 TC264 开源库的一部分
|
||||
*
|
||||
* TC264 开源库 是免费软件
|
||||
* 您可以根据自由软件基金会发布的 GPL(GNU General Public License,即 GNU通用公共许可证)的条款
|
||||
* 即 GPL 的第3版(即 GPL3.0)或(您选择的)任何后来的版本,重新发布和/或修改它
|
||||
*
|
||||
* 本开源库的发布是希望它能发挥作用,但并未对其作任何的保证
|
||||
* 甚至没有隐含的适销性或适合特定用途的保证
|
||||
* 更多细节请参见 GPL
|
||||
*
|
||||
* 您应该在收到本开源库的同时收到一份 GPL 的副本
|
||||
* 如果没有,请参阅<https://www.gnu.org/licenses/>
|
||||
*
|
||||
* 额外注明:
|
||||
* 本开源库使用 GPL3.0 开源许可证协议 以上许可申明为译文版本
|
||||
* 许可申明英文版在 libraries/doc 文件夹下的 GPL3_permission_statement.txt 文件中
|
||||
* 许可证副本在 libraries 文件夹下 即该文件夹下的 LICENSE 文件
|
||||
* 欢迎各位使用并传播本程序 但修改内容时必须保留逐飞科技的版权声明(即本声明)
|
||||
*
|
||||
* 文件名称 seekfree_assistant_interface
|
||||
* 公司名称 成都逐飞科技有限公司
|
||||
* 版本信息 查看 libraries/doc 文件夹内 version 文件 版本说明
|
||||
* 开发环境 ADS v1.10.2
|
||||
* 适用平台 TC264D
|
||||
* 店铺链接 https://seekfree.taobao.com/
|
||||
*
|
||||
* 修改记录
|
||||
* 日期 作者 备注
|
||||
* 2024-01-01 pudding first version
|
||||
********************************************************************************************************************/
|
||||
|
||||
#ifndef _seekfree_assistant_interface_h_
|
||||
#define _seekfree_assistant_interface_h_
|
||||
|
||||
|
||||
|
||||
// 数据发送设备枚举
|
||||
typedef enum
|
||||
{
|
||||
SEEKFREE_ASSISTANT_DEBUG_UART, // 调试串口 使用的串口由DEBUG_UART_INDEX宏定义指定
|
||||
SEEKFREE_ASSISTANT_WIRELESS_UART, // 无线转串口
|
||||
SEEKFREE_ASSISTANT_BLE6A20, // 蓝牙转串口
|
||||
SEEKFREE_ASSISTANT_CH9141, // CH9141蓝牙
|
||||
SEEKFREE_ASSISTANT_WIFI_UART, // WIFI转串口
|
||||
SEEKFREE_ASSISTANT_WIFI_SPI, // 高速WIFI SPI
|
||||
SEEKFREE_ASSISTANT_CUSTOM, // 自定义通讯方式 需要自行seekfree_assistant_transfer与seekfree_assistant_receive函数
|
||||
}seekfree_assistant_transfer_device_enum;
|
||||
|
||||
|
||||
void seekfree_assistant_interface_init (seekfree_assistant_transfer_device_enum transfer_device);
|
||||
|
||||
|
||||
|
||||
#endif
|
||||
Reference in new issue
Block a user