diff --git a/Example/E01_gpio_demo/.cproject b/Example/E01_gpio_demo/.cproject
index 3c498e2..ee3db40 100644
--- a/Example/E01_gpio_demo/.cproject
+++ b/Example/E01_gpio_demo/.cproject
@@ -113,7 +113,7 @@
-
+
diff --git a/Example/E01_gpio_demo/libraries/doc/version.txt b/Example/E01_gpio_demo/libraries/doc/version.txt
index 68afc86..c4e0d0a 100644
--- a/Example/E01_gpio_demo/libraries/doc/version.txt
+++ b/Example/E01_gpio_demo/libraries/doc/version.txt
@@ -1,3 +1,5 @@
+V3.3.0
+ 新增蓝牙串口通讯模块
V3.2.13
新增一个微秒延时函数 该延时函数为普通延时 非中断延时
V3.2.12
diff --git a/Example/E01_gpio_demo/libraries/zf_common/zf_common_headfile.h b/Example/E01_gpio_demo/libraries/zf_common/zf_common_headfile.h
index c0d833b..3a140e3 100644
--- a/Example/E01_gpio_demo/libraries/zf_common/zf_common_headfile.h
+++ b/Example/E01_gpio_demo/libraries/zf_common/zf_common_headfile.h
@@ -81,6 +81,7 @@
//===================================================外接设备驱动层===================================================
#include "zf_device_absolute_encoder.h"
+#include "zf_device_ble6a20.h"
#include "zf_device_bluetooth_ch9141.h"
#include "zf_device_gnss.h"
#include "zf_device_camera.h"
diff --git a/Example/E01_gpio_demo/libraries/zf_components/seekfree_assistant.c b/Example/E01_gpio_demo/libraries/zf_components/seekfree_assistant.c
index 0b7cb9d..af3bb96 100644
--- a/Example/E01_gpio_demo/libraries/zf_components/seekfree_assistant.c
+++ b/Example/E01_gpio_demo/libraries/zf_components/seekfree_assistant.c
@@ -1,20 +1,20 @@
/*********************************************************************************************************************
-* RT1064DVL6A Opensourec Library 即(RT1064DVL6A 开源库)是一个基于官方 SDK 接口的第三方开源库
+* TC264 Opensourec Library 即(TC264 开源库)是一个基于官方 SDK 接口的第三方开源库
* Copyright (c) 2022 SEEKFREE 逐飞科技
-*
-* 本文件是 RT1064DVL6A 开源库的一部分
-*
-* RT1064DVL6A 开源库 是免费软件
+*
+* 本文件是 TC264 开源库的一部分
+*
+* TC264 开源库 是免费软件
* 您可以根据自由软件基金会发布的 GPL(GNU General Public License,即 GNU通用公共许可证)的条款
* 即 GPL 的第3版(即 GPL3.0)或(您选择的)任何后来的版本,重新发布和/或修改它
-*
+*
* 本开源库的发布是希望它能发挥作用,但并未对其作任何的保证
* 甚至没有隐含的适销性或适合特定用途的保证
* 更多细节请参见 GPL
-*
+*
* 您应该在收到本开源库的同时收到一份 GPL 的副本
* 如果没有,请参阅
-*
+*
* 额外注明:
* 本开源库使用 GPL3.0 开源许可证协议 以上许可申明为译文版本
* 许可申明英文版在 libraries/doc 文件夹下的 GPL3_permission_statement.txt 文件中
@@ -24,13 +24,13 @@
* 文件名称 seekfree_assistant
* 公司名称 成都逐飞科技有限公司
* 版本信息 查看 libraries/doc 文件夹内 version 文件 版本说明
-* 开发环境 IAR 8.32.4 or MDK 5.33
-* 适用平台 RT1064DVL6A
+* 开发环境 ADS v1.9.20
+* 适用平台 TC264D
* 店铺链接 https://seekfree.taobao.com/
-*
+*
* 修改记录
-* 日期 作者 备注
-* 2024-1-11 SeekFree first version
+* 日期 作者 备注
+* 2024-01-01 pudding first version
********************************************************************************************************************/
#include "zf_common_debug.h"
diff --git a/Example/E01_gpio_demo/libraries/zf_components/seekfree_assistant.h b/Example/E01_gpio_demo/libraries/zf_components/seekfree_assistant.h
index ae0f67c..5e04a1d 100644
--- a/Example/E01_gpio_demo/libraries/zf_components/seekfree_assistant.h
+++ b/Example/E01_gpio_demo/libraries/zf_components/seekfree_assistant.h
@@ -1,20 +1,20 @@
/*********************************************************************************************************************
-* RT1064DVL6A Opensourec Library 即(RT1064DVL6A 开源库)是一个基于官方 SDK 接口的第三方开源库
+* TC264 Opensourec Library 即(TC264 开源库)是一个基于官方 SDK 接口的第三方开源库
* Copyright (c) 2022 SEEKFREE 逐飞科技
-*
-* 本文件是 RT1064DVL6A 开源库的一部分
-*
-* RT1064DVL6A 开源库 是免费软件
+*
+* 本文件是 TC264 开源库的一部分
+*
+* TC264 开源库 是免费软件
* 您可以根据自由软件基金会发布的 GPL(GNU General Public License,即 GNU通用公共许可证)的条款
* 即 GPL 的第3版(即 GPL3.0)或(您选择的)任何后来的版本,重新发布和/或修改它
-*
+*
* 本开源库的发布是希望它能发挥作用,但并未对其作任何的保证
* 甚至没有隐含的适销性或适合特定用途的保证
* 更多细节请参见 GPL
-*
+*
* 您应该在收到本开源库的同时收到一份 GPL 的副本
* 如果没有,请参阅
-*
+*
* 额外注明:
* 本开源库使用 GPL3.0 开源许可证协议 以上许可申明为译文版本
* 许可申明英文版在 libraries/doc 文件夹下的 GPL3_permission_statement.txt 文件中
@@ -24,13 +24,13 @@
* 文件名称 seekfree_assistant
* 公司名称 成都逐飞科技有限公司
* 版本信息 查看 libraries/doc 文件夹内 version 文件 版本说明
-* 开发环境 IAR 8.32.4 or MDK 5.33
-* 适用平台 RT1064DVL6A
+* 开发环境 ADS v1.9.20
+* 适用平台 TC264D
* 店铺链接 https://seekfree.taobao.com/
-*
+*
* 修改记录
-* 日期 作者 备注
-* 2024-1-11 SeekFree first version
+* 日期 作者 备注
+* 2024-01-01 pudding first version
********************************************************************************************************************/
#ifndef _seekfree_assistant_h_
#define _seekfree_assistant_h_
@@ -47,27 +47,27 @@
// 定义接收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 )
diff --git a/Example/E01_gpio_demo/libraries/zf_components/seekfree_assistant_interface.c b/Example/E01_gpio_demo/libraries/zf_components/seekfree_assistant_interface.c
index fdade63..cc42e43 100644
--- a/Example/E01_gpio_demo/libraries/zf_components/seekfree_assistant_interface.c
+++ b/Example/E01_gpio_demo/libraries/zf_components/seekfree_assistant_interface.c
@@ -1,20 +1,20 @@
/*********************************************************************************************************************
-* RT1064DVL6A Opensourec Library 即(RT1064DVL6A 开源库)是一个基于官方 SDK 接口的第三方开源库
+* TC264 Opensourec Library 即(TC264 开源库)是一个基于官方 SDK 接口的第三方开源库
* Copyright (c) 2022 SEEKFREE 逐飞科技
-*
-* 本文件是 RT1064DVL6A 开源库的一部分
-*
-* RT1064DVL6A 开源库 是免费软件
+*
+* 本文件是 TC264 开源库的一部分
+*
+* TC264 开源库 是免费软件
* 您可以根据自由软件基金会发布的 GPL(GNU General Public License,即 GNU通用公共许可证)的条款
* 即 GPL 的第3版(即 GPL3.0)或(您选择的)任何后来的版本,重新发布和/或修改它
-*
+*
* 本开源库的发布是希望它能发挥作用,但并未对其作任何的保证
* 甚至没有隐含的适销性或适合特定用途的保证
* 更多细节请参见 GPL
-*
+*
* 您应该在收到本开源库的同时收到一份 GPL 的副本
* 如果没有,请参阅
-*
+*
* 额外注明:
* 本开源库使用 GPL3.0 开源许可证协议 以上许可申明为译文版本
* 许可申明英文版在 libraries/doc 文件夹下的 GPL3_permission_statement.txt 文件中
@@ -24,13 +24,13 @@
* 文件名称 seekfree_assistant_interface
* 公司名称 成都逐飞科技有限公司
* 版本信息 查看 libraries/doc 文件夹内 version 文件 版本说明
-* 开发环境 IAR 8.32.4 or MDK 5.33
-* 适用平台 RT1064DVL6A
+* 开发环境 ADS v1.9.20
+* 适用平台 TC264D
* 店铺链接 https://seekfree.taobao.com/
-*
+*
* 修改记录
-* 日期 作者 备注
-* 2024-1-11 SeekFree first version
+* 日期 作者 备注
+* 2024-01-01 pudding first version
********************************************************************************************************************/
#include "zf_common_typedef.h"
@@ -38,6 +38,7 @@
#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"
@@ -100,6 +101,12 @@ ZF_WEAK void seekfree_assistant_interface_init (seekfree_assistant_transfer_devi
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;
diff --git a/Example/E01_gpio_demo/libraries/zf_components/seekfree_assistant_interface.h b/Example/E01_gpio_demo/libraries/zf_components/seekfree_assistant_interface.h
index 940b5f7..1d0158c 100644
--- a/Example/E01_gpio_demo/libraries/zf_components/seekfree_assistant_interface.h
+++ b/Example/E01_gpio_demo/libraries/zf_components/seekfree_assistant_interface.h
@@ -1,20 +1,20 @@
/*********************************************************************************************************************
-* RT1064DVL6A Opensourec Library 即(RT1064DVL6A 开源库)是一个基于官方 SDK 接口的第三方开源库
+* TC264 Opensourec Library 即(TC264 开源库)是一个基于官方 SDK 接口的第三方开源库
* Copyright (c) 2022 SEEKFREE 逐飞科技
-*
-* 本文件是 RT1064DVL6A 开源库的一部分
-*
-* RT1064DVL6A 开源库 是免费软件
+*
+* 本文件是 TC264 开源库的一部分
+*
+* TC264 开源库 是免费软件
* 您可以根据自由软件基金会发布的 GPL(GNU General Public License,即 GNU通用公共许可证)的条款
* 即 GPL 的第3版(即 GPL3.0)或(您选择的)任何后来的版本,重新发布和/或修改它
-*
+*
* 本开源库的发布是希望它能发挥作用,但并未对其作任何的保证
* 甚至没有隐含的适销性或适合特定用途的保证
* 更多细节请参见 GPL
-*
+*
* 您应该在收到本开源库的同时收到一份 GPL 的副本
* 如果没有,请参阅
-*
+*
* 额外注明:
* 本开源库使用 GPL3.0 开源许可证协议 以上许可申明为译文版本
* 许可申明英文版在 libraries/doc 文件夹下的 GPL3_permission_statement.txt 文件中
@@ -24,13 +24,13 @@
* 文件名称 seekfree_assistant_interface
* 公司名称 成都逐飞科技有限公司
* 版本信息 查看 libraries/doc 文件夹内 version 文件 版本说明
-* 开发环境 IAR 8.32.4 or MDK 5.33
-* 适用平台 RT1064DVL6A
+* 开发环境 ADS v1.9.20
+* 适用平台 TC264D
* 店铺链接 https://seekfree.taobao.com/
-*
+*
* 修改记录
-* 日期 作者 备注
-* 2024-1-11 SeekFree first version
+* 日期 作者 备注
+* 2024-01-01 pudding first version
********************************************************************************************************************/
#ifndef _seekfree_assistant_interface_h_
@@ -43,6 +43,7 @@ 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
diff --git a/Example/E01_gpio_demo/libraries/zf_device/zf_device_ble6a20.c b/Example/E01_gpio_demo/libraries/zf_device/zf_device_ble6a20.c
new file mode 100644
index 0000000..ea8649e
--- /dev/null
+++ b/Example/E01_gpio_demo/libraries/zf_device/zf_device_ble6a20.c
@@ -0,0 +1,299 @@
+/*********************************************************************************************************************
+* TC264 Opensourec Library 即(TC264 开源库)是一个基于官方 SDK 接口的第三方开源库
+* Copyright (c) 2022 SEEKFREE 逐飞科技
+*
+* 本文件是 TC264 开源库的一部分
+*
+* TC264 开源库 是免费软件
+* 您可以根据自由软件基金会发布的 GPL(GNU General Public License,即 GNU通用公共许可证)的条款
+* 即 GPL 的第3版(即 GPL3.0)或(您选择的)任何后来的版本,重新发布和/或修改它
+*
+* 本开源库的发布是希望它能发挥作用,但并未对其作任何的保证
+* 甚至没有隐含的适销性或适合特定用途的保证
+* 更多细节请参见 GPL
+*
+* 您应该在收到本开源库的同时收到一份 GPL 的副本
+* 如果没有,请参阅
+*
+* 额外注明:
+* 本开源库使用 GPL3.0 开源许可证协议 以上许可申明为译文版本
+* 许可申明英文版在 libraries/doc 文件夹下的 GPL3_permission_statement.txt 文件中
+* 许可证副本在 libraries 文件夹下 即该文件夹下的 LICENSE 文件
+* 欢迎各位使用并传播本程序 但修改内容时必须保留逐飞科技的版权声明(即本声明)
+*
+* 文件名称 zf_device_ble6a20
+* 公司名称 成都逐飞科技有限公司
+* 版本信息 查看 libraries/doc 文件夹内 version 文件 版本说明
+* 开发环境 ADS v1.9.20
+* 适用平台 TC264D
+* 店铺链接 https://seekfree.taobao.com/
+*
+* 修改记录
+* 日期 作者 备注
+* 2024-07-02 pudding first version
+********************************************************************************************************************/
+/*********************************************************************************************************************
+* 接线定义:
+* ------------------------------------
+* 模块管脚 单片机管脚
+* RX 查看 zf_device_ble6a20.h 中 BLE6A20_RX_PIN 宏定义
+* TX 查看 zf_device_ble6a20.h 中 BLE6A20_TX_PIN 宏定义
+* RTS 查看 zf_device_ble6a20.h 中 BLE6A20_RTS_PIN 宏定义
+* VCC 3.3V电源
+* GND 电源地
+* 其余引脚悬空
+* ------------------------------------
+*********************************************************************************************************************/
+
+#include "zf_common_clock.h"
+#include "zf_common_debug.h"
+#include "zf_common_fifo.h"
+#include "zf_driver_delay.h"
+#include "zf_driver_gpio.h"
+#include "zf_driver_uart.h"
+#include "zf_device_type.h"
+#include "zf_device_ble6a20.h"
+
+static fifo_struct ble6a20_fifo;
+static uint8 ble6a20_buffer[BLE6A20_BUFFER_SIZE];
+
+static uint8 ble6a20_data = 0;
+#if (1 == BLE6A20_AUTO_BAUD_RATE)
+static volatile ble6a20_auto_baudrate_state_enum ble6a20_auto_baud_flag = BLE6A20_AUTO_BAUD_RATE_INIT;
+static volatile uint8 ble6a20_auto_baud_data[3] = {0x00, 0x01, 0x03};
+#endif
+
+//-------------------------------------------------------------------------------------------------------------------
+// 函数简介 蓝牙转串口模块 发送数据
+// 参数说明 data 8bit 数据
+// 返回参数 uint32 剩余发送长度 0-发送完毕 1-未发送完成
+// 使用示例 ble6a20_send_byte(data);
+// 备注信息
+//-------------------------------------------------------------------------------------------------------------------
+uint32 ble6a20_send_byte (const uint8 data)
+{
+ uint16 time_count = BLE6A20_TIMEOUT_COUNT;
+ while(time_count)
+ {
+ if(!gpio_get_level(BLE6A20_RTS_PIN))
+ {
+ uart_write_byte(BLE6A20_INDEX, data); // 发送数据
+ break;
+ }
+ time_count --;
+ system_delay_ms(1);
+ }
+ return (0 == time_count);
+}
+
+//-------------------------------------------------------------------------------------------------------------------
+// 函数简介 蓝牙转串口模块 发送数据块
+// 参数说明 *buff 发送缓冲区
+// 参数说明 len 发送数据长度
+// 返回参数 uint32 剩余发送长度
+// 使用示例 ble6a20_send_buffer(buff, 64);
+// 备注信息
+//-------------------------------------------------------------------------------------------------------------------
+uint32 ble6a20_send_buffer (const uint8 *buff, uint32 len)
+{
+ zf_assert(NULL != buff);
+ uint16 time_count = 0;
+ while(0 != len)
+ {
+ if(!gpio_get_level(BLE6A20_RTS_PIN)) // 如果RTS为低电平 则继续发送数据
+ {
+ if(30 <= len) // 数据分 30byte 每包发送
+ {
+ uart_write_buffer(BLE6A20_INDEX, buff, 30); // 发送数据
+ buff += 30; // 地址偏移
+ len -= 30; // 数量
+ time_count = 0;
+ }
+ else // 不足 30byte 的数据一次性发送完毕
+ {
+ uart_write_buffer(BLE6A20_INDEX, buff, len); // 发送数据
+ len = 0;
+ break;
+ }
+ }
+ else // 如果RTS为高电平 则模块忙
+ {
+ if(BLE6A20_TIMEOUT_COUNT <= (++ time_count)) // 超出了最大等待时间
+ {
+ break; // 退出发送
+ }
+ system_delay_ms(1);
+ }
+ }
+ return len;
+}
+
+//-------------------------------------------------------------------------------------------------------------------
+// 函数简介 蓝牙转串口模块 发送字符串
+// 参数说明 *str 要发送的字符串地址
+// 返回参数 uint32 剩余发送长度
+// 使用示例 ble6a20_send_string("Believe in yourself.");
+// 备注信息
+//-------------------------------------------------------------------------------------------------------------------
+uint32 ble6a20_send_string (const char *str)
+{
+ zf_assert(NULL != str);
+ uint16 time_count = 0;
+ uint32 len = strlen(str);
+ while(0 != len)
+ {
+ if(!gpio_get_level(BLE6A20_RTS_PIN)) // 如果RTS为低电平 则继续发送数据
+ {
+ if(128 <= len) // 数据分 128byte 每包发送
+ {
+ uart_write_buffer(BLE6A20_INDEX, (const uint8 *)str, 128); // 发送数据
+ str += 128; // 地址偏移
+ len -= 128; // 数量
+ time_count = 0;
+ }
+ else // 不足 128byte 的数据一次性发送完毕
+ {
+ uart_write_buffer(BLE6A20_INDEX, (const uint8 *)str, len);// 发送数据
+ len = 0;
+ break;
+ }
+ }
+ else // 如果RTS为高电平 则模块忙
+ {
+ if(BLE6A20_TIMEOUT_COUNT <= (++ time_count)) // 超出了最大等待时间
+ {
+ break; // 退出发送
+ }
+ system_delay_ms(1);
+ }
+ }
+ return len;
+}
+
+//-------------------------------------------------------------------------------------------------------------------
+// 函数简介 蓝牙转串口模块 发送摄像头图像至上位机查看图像
+// 参数说明 *image_addr 需要发送的图像地址
+// 参数说明 image_size 图像的大小
+// 返回参数 void
+// 使用示例 ble6a20_send_image(&mt9v03x_image[0][0], MT9V03X_IMAGE_SIZE);
+// 备注信息
+//-------------------------------------------------------------------------------------------------------------------
+void ble6a20_send_image (const uint8 *image_addr, uint32 image_size)
+{
+ zf_assert(NULL != image_addr);
+ extern uint8 camera_send_image_frame_header[4];
+ ble6a20_send_buffer(camera_send_image_frame_header, 4);
+ ble6a20_send_buffer((uint8 *)image_addr, image_size);
+}
+
+//-------------------------------------------------------------------------------------------------------------------
+// 函数简介 蓝牙转串口模块 读取缓冲区数据
+// 参数说明 *buff 接收缓冲区
+// 参数说明 len 读取数据长度
+// 返回参数 uint32 实际读取数据长度
+// 使用示例 ble6a20_read_buffer(buff, 32);
+// 备注信息
+//-------------------------------------------------------------------------------------------------------------------
+uint32 ble6a20_read_buffer (uint8 *buff, uint32 len)
+{
+ zf_assert(NULL != buff);
+ uint32 data_len = len;
+ fifo_read_buffer(&ble6a20_fifo, buff, &data_len, FIFO_READ_AND_CLEAN);
+ return data_len;
+}
+
+//-------------------------------------------------------------------------------------------------------------------
+// 函数简介 蓝牙转串口模块 串口中断回调函数
+// 参数说明 void
+// 返回参数 void
+// 使用示例 ble6a20_callback();
+// 备注信息 该函数在 ISR 文件 串口中断程序被调用
+// 由串口中断服务函数调用 wireless_module_uart_handler() 函数
+// 再由 wireless_module_uart_handler() 函数调用本函数
+//-------------------------------------------------------------------------------------------------------------------
+void ble6a20_callback (void)
+{
+ if(uart_query_byte(BLE6A20_INDEX, &ble6a20_data))
+ {
+ fifo_write_buffer(&ble6a20_fifo, &ble6a20_data, 1);
+#if BLE6A20_AUTO_BAUD_RATE // 开启自动波特率
+ if(BLE6A20_AUTO_BAUD_RATE_START == ble6a20_auto_baud_flag && 3 == fifo_used(&ble6a20_fifo))
+ {
+ uint32 ble6a20_auto_baud_count = 3;
+ ble6a20_auto_baud_flag = BLE6A20_AUTO_BAUD_RATE_GET_ACK;
+ fifo_read_buffer(&ble6a20_fifo, (uint8 *)ble6a20_auto_baud_data, (uint32 *)&ble6a20_auto_baud_count, FIFO_READ_AND_CLEAN);
+ }
+#endif
+ }
+}
+
+//-------------------------------------------------------------------------------------------------------------------
+// 函数简介 蓝牙转串口模块 初始化
+// 参数说明 void
+// 返回参数 void
+// 使用示例 ble6a20_init();
+// 备注信息
+//-------------------------------------------------------------------------------------------------------------------
+uint8 ble6a20_init (void)
+{
+ uint8 return_state = 0;
+
+ // 等待模块初始化
+ system_delay_ms(50);
+
+ set_wireless_type(BLE6A20, ble6a20_callback);
+
+ fifo_init(&ble6a20_fifo, FIFO_DATA_8BIT, ble6a20_buffer, BLE6A20_BUFFER_SIZE);
+ gpio_init(BLE6A20_RTS_PIN, GPI, GPIO_HIGH, GPI_PULL_UP);
+#if(0 == BLE6A20_AUTO_BAUD_RATE) // 关闭自动波特率
+ // 本函数使用的波特率为115200 为蓝牙转串口模块的默认波特率 如需其他波特率请自行配置模块并修改串口的波特率
+ uart_init (BLE6A20_INDEX, BLE6A20_BUAD_RATE, BLE6A20_RX_PIN, BLE6A20_TX_PIN); // 初始化串口
+ uart_rx_interrupt(BLE6A20_INDEX, 1);
+#elif(1 == BLE6A20_AUTO_BAUD_RATE) // 开启自动波特率
+ uint8 rts_init_status = 0;
+
+ ble6a20_auto_baud_flag = BLE6A20_AUTO_BAUD_RATE_INIT;
+ ble6a20_auto_baud_data[0] = 0;
+ ble6a20_auto_baud_data[1] = 1;
+ ble6a20_auto_baud_data[2] = 3;
+
+ rts_init_status = gpio_get_level(BLE6A20_RTS_PIN);
+ gpio_init(BLE6A20_RTS_PIN, GPO, rts_init_status, GPO_PUSH_PULL); // 初始化流控引脚
+
+ uart_init (BLE6A20_INDEX, BLE6A20_BUAD_RATE, BLE6A20_RX_PIN, BLE6A20_TX_PIN); // 初始化串口
+ uart_rx_interrupt(BLE6A20_INDEX, 1);
+
+ system_delay_ms(5); // 模块上电之后需要延时等待
+ gpio_set_level(BLE6A20_RTS_PIN, !rts_init_status); // RTS引脚拉高,进入自动波特率模式
+ system_delay_ms(100); // RTS拉高之后必须延时20ms
+ gpio_toggle_level(BLE6A20_RTS_PIN); // RTS引脚取反
+
+ do
+ {
+ ble6a20_auto_baud_flag = BLE6A20_AUTO_BAUD_RATE_START;
+ uart_write_byte(BLE6A20_INDEX, ble6a20_auto_baud_data[0]); // 发送特定数据 用于模块自动判断波特率
+ uart_write_byte(BLE6A20_INDEX, ble6a20_auto_baud_data[1]); // 发送特定数据 用于模块自动判断波特率
+ uart_write_byte(BLE6A20_INDEX, ble6a20_auto_baud_data[2]); // 发送特定数据 用于模块自动判断波特率
+ system_delay_ms(20);
+
+ if(BLE6A20_AUTO_BAUD_RATE_GET_ACK != ble6a20_auto_baud_flag) // 检验自动波特率是否完成
+ {
+ return_state = 1; // 如果程序进入到此语句内 说明自动波特率失败了
+ break;
+ }
+
+ if( 0xa5 != ble6a20_auto_baud_data[0] && // 检验自动波特率是否正确
+ 0xff != ble6a20_auto_baud_data[1] && // 检验自动波特率是否正确
+ 0xff != ble6a20_auto_baud_data[2] ) // 检验自动波特率是否正确
+ {
+ return_state = 1; // 如果程序进入到此语句内 说明自动波特率失败了
+ break;
+ }
+ ble6a20_auto_baud_flag = BLE6A20_AUTO_BAUD_RATE_SUCCESS;
+
+ gpio_init(BLE6A20_RTS_PIN, GPI, 0, GPI_PULL_UP); // 初始化流控引脚
+ system_delay_ms(10); // 延时等待 模块准备就绪
+ }while(0);
+#endif
+ return return_state;
+}
diff --git a/Example/E01_gpio_demo/libraries/zf_device/zf_device_ble6a20.h b/Example/E01_gpio_demo/libraries/zf_device/zf_device_ble6a20.h
new file mode 100644
index 0000000..c037ea2
--- /dev/null
+++ b/Example/E01_gpio_demo/libraries/zf_device/zf_device_ble6a20.h
@@ -0,0 +1,108 @@
+/*********************************************************************************************************************
+* TC264 Opensourec Library 即(TC264 开源库)是一个基于官方 SDK 接口的第三方开源库
+* Copyright (c) 2022 SEEKFREE 逐飞科技
+*
+* 本文件是 TC264 开源库的一部分
+*
+* TC264 开源库 是免费软件
+* 您可以根据自由软件基金会发布的 GPL(GNU General Public License,即 GNU通用公共许可证)的条款
+* 即 GPL 的第3版(即 GPL3.0)或(您选择的)任何后来的版本,重新发布和/或修改它
+*
+* 本开源库的发布是希望它能发挥作用,但并未对其作任何的保证
+* 甚至没有隐含的适销性或适合特定用途的保证
+* 更多细节请参见 GPL
+*
+* 您应该在收到本开源库的同时收到一份 GPL 的副本
+* 如果没有,请参阅
+*
+* 额外注明:
+* 本开源库使用 GPL3.0 开源许可证协议 以上许可申明为译文版本
+* 许可申明英文版在 libraries/doc 文件夹下的 GPL3_permission_statement.txt 文件中
+* 许可证副本在 libraries 文件夹下 即该文件夹下的 LICENSE 文件
+* 欢迎各位使用并传播本程序 但修改内容时必须保留逐飞科技的版权声明(即本声明)
+*
+* 文件名称 zf_device_ble6a20.h
+* 公司名称 成都逐飞科技有限公司
+* 版本信息 查看 libraries/doc 文件夹内 version 文件 版本说明
+* 开发环境 ADS v1.9.20
+* 适用平台 TC264D
+* 店铺链接 https://seekfree.taobao.com/
+*
+* 修改记录
+* 日期 作者 备注
+* 2024-07-02 pudding first version
+********************************************************************************************************************/
+/*********************************************************************************************************************
+* 接线定义:
+* ------------------------------------
+* 模块管脚 单片机管脚
+* RX 查看 zf_device_ble6a20.h 中 BLE6A20_RX_PIN 宏定义
+* TX 查看 zf_device_ble6a20.h 中 BLE6A20_TX_PIN 宏定义
+* RTS 查看 zf_device_ble6a20.h 中 BLE6A20_RTS_PIN 宏定义
+* VCC 3.3V电源
+* GND 电源地
+* 其余引脚悬空
+* ------------------------------------
+*********************************************************************************************************************/
+
+
+#ifndef _zf_device_ble6a20_h_
+#define _zf_device_ble6a20_h_
+
+#include "zf_common_typedef.h"
+
+
+//=================================================定义 蓝牙串口 基本配置================================================
+
+#define BLE6A20_INDEX (UART_2) // 蓝牙串口对应使用的串口号
+#define BLE6A20_BUAD_RATE (115200) // 蓝牙串口对应使用的串口波特率
+ // 波特率仅支持 9600 57600 115200 230400 460800 921600 1500000 2000000
+#define BLE6A20_TX_PIN (UART2_RX_P10_6) // 蓝牙串口对应模块的 TX 要接到单片机的 RX
+#define BLE6A20_RX_PIN (UART2_TX_P10_5) // 蓝牙串口对应模块的 RX 要接到单片机的 TX
+#define BLE6A20_RTS_PIN (P10_2) // 蓝牙串口对应模块的 RTS 引脚
+
+#define BLE6A20_BUFFER_SIZE ( 64 ) // 蓝牙串口缓冲区大小
+#define BLE6A20_TIMEOUT_COUNT ( 0x64 ) // 蓝牙串口通讯超时范围
+
+// ------------------------------------ 自动波特率 ------------------------------------
+// 注意事项1:开启自动波特率务必连接RTS引脚 否则会开启失败。
+// 注意事项2:模块自动波特率失败的话 可以尝试断电重启
+
+// 开启自动波特率务必阅读上面两条 注意事项
+// 开启自动波特率务必阅读上面两条 注意事项
+// 开启自动波特率务必阅读上面两条 注意事项
+
+// 0:关闭自动波特率
+// 1:开启自动波特率 自动波特率的作用是修改 BLE6A20_BAUD 之后不需要对模块进行配置 模块会自动设置为对应的波特率
+// 自动波特率仅支持 9600 57600 115200 230400 460800 921600 1500000 2000000
+
+#define BLE6A20_AUTO_BAUD_RATE ( 0 )
+
+#if (1 == BLE6A20_AUTO_BAUD_RATE)
+typedef enum
+{
+ BLE6A20_AUTO_BAUD_RATE_SUCCESS,
+ BLE6A20_AUTO_BAUD_RATE_INIT,
+ BLE6A20_AUTO_BAUD_RATE_START,
+ BLE6A20_AUTO_BAUD_RATE_GET_ACK,
+}ble6a20_auto_baudrate_state_enum;
+#endif
+// ------------------------------------ 自动波特率 ------------------------------------
+
+//=================================================定义 蓝牙串口 基本配置================================================
+
+
+//=================================================声明 蓝牙串口 基础函数================================================
+uint32 ble6a20_send_byte (const uint8 data); // 蓝牙转串口模块 发送数据
+uint32 ble6a20_send_buffer (const uint8 *buff, uint32 len); // 蓝牙转串口模块 发送数据块
+uint32 ble6a20_send_string (const char *str); // 蓝牙转串口模块 发送字符串
+void ble6a20_send_image (const uint8 *image_addr, uint32 image_size); // 蓝牙转串口模块 发送摄像头图像至上位机查看图像
+
+uint32 ble6a20_read_buffer (uint8 *buff, uint32 len); // 蓝牙转串口模块 读取缓冲区数据
+
+void ble6a20_callback (void); // 蓝牙转串口模块 串口中断回调函数
+
+uint8 ble6a20_init (void); // 蓝牙转串口模块 初始化
+//=================================================声明 蓝牙串口 基础函数================================================
+
+#endif
diff --git a/Example/E01_gpio_demo/libraries/zf_device/zf_device_type.h b/Example/E01_gpio_demo/libraries/zf_device/zf_device_type.h
index 6c2b8da..4f8ec53 100644
--- a/Example/E01_gpio_demo/libraries/zf_device/zf_device_type.h
+++ b/Example/E01_gpio_demo/libraries/zf_device/zf_device_type.h
@@ -54,6 +54,7 @@ typedef enum
{
NO_WIRELESS = 0, // 无设备
WIRELESS_UART, // 无线串口
+ BLE6A20, // 蓝牙串口
BLUETOOTH_CH9141, // 蓝牙 CH9141
WIFI_UART, // 串口 WiFi
RECEIVER_UART, // 枪式遥控器
diff --git a/Example/E01_gpio_demo/libraries/zf_device/澶栬鏂囦欢璇存槑.txt b/Example/E01_gpio_demo/libraries/zf_device/澶栬鏂囦欢璇存槑.txt
new file mode 100644
index 0000000..1c96965
--- /dev/null
+++ b/Example/E01_gpio_demo/libraries/zf_device/澶栬鏂囦欢璇存槑.txt
@@ -0,0 +1,97 @@
+
+如需获取详细资料可联系淘宝店铺客服:https://seekfree.taobao.com/
+如需获取详细资料可联系淘宝店铺客服:https://seekfree.taobao.com/
+如需获取详细资料可联系淘宝店铺客服:https://seekfree.taobao.com/
+
+本文件主要用于说明 zf_device 目录下各个文件所对应的外设模块
+本文件主要用于说明 zf_device 目录下各个文件所对应的外设模块
+本文件主要用于说明 zf_device 目录下各个文件所对应的外设模块
+
+
+=================================================== 测距模块 ===================================================
+
+zf_device_dl1a.h TOF 测距模块 DL1A 频率:33hz 最大距离:1.2 米
+
+zf_device_dl1b.h TOF 测距模块 DL1B 频率:100hz 最大距离:1.4 米
+
+=================================================== 测距模块 ===================================================
+
+
+
+==================================================== 陀螺仪 ====================================================
+
+zf_device_mpu6050.h MPU6050 六轴陀螺仪 传统 IIC 通讯
+
+zf_device_icm20602.h ICM20602 六轴陀螺仪 支持 SPI 采值
+
+zf_device_imu660ra.h IMU660RA 六轴陀螺仪 高精度陀螺仪
+
+zf_device_imu963ra.h IMU963RA 九轴陀螺仪 支持地磁计采集
+
+==================================================== 陀螺仪 ====================================================
+
+
+
+=================================================== 屏幕显示 ===================================================
+
+zf_device_ips114.h IPS114 液晶屏幕 1.14 寸 分辨率:240 * 135
+
+zf_device_ips200.h IPS200 液晶屏幕 2.0 寸 分辨率:240 * 320
+
+zf_device_tft180.h TFT180 屏幕 1.8寸 分辨率:160 * 128
+
+zf_device_oled.h OLED 液晶屏幕 0.96 寸 分辨率:128 * 64
+
+=================================================== 屏幕显示 ===================================================
+
+
+
+================================================== 图像传感器 ==================================================
+
+zf_device_mt9v03x.h MT9V03X 总钻风灰度摄像头
+
+zf_device_ov7725.h OV7725 小钻风硬件二值化摄像头
+
+zf_device_scc8660.h SCC8660 凌瞳彩色摄像头
+
+zf_device_tsl1401.h TSL1401 红孩儿线阵CCD
+
+================================================== 图像传感器 ==================================================
+
+
+
+=================================================== 无线通讯 ===================================================
+
+zf_device_ble6a20.h 蓝牙串口模块 无线通讯
+
+zf_device_bluetooth_ch9141.h CH9141 蓝牙通讯模块 蓝牙组网通讯
+
+zf_device_wifi_spi.h WIFI-SPI 高速WIFI无线通讯模块
+
+zf_device_wifi_uart.h WIFI-UART 串口WIFI无线通讯模块
+
+zf_device_wireless_uart.h 无线串口模块
+
+=================================================== 无线通讯 ===================================================
+
+
+
+=================================================== 远程遥控 ===================================================
+
+zf_device_uart_receiver.h SUBS 串口遥控器 串口通讯 长距离遥控 2.4G频段
+
+=================================================== 远程遥控 ===================================================
+
+
+
+================================================== 其他传感器 ==================================================
+
+zf_device_absolute_encoder.h 360° 位置传感器 绝对式迷你 mini 编码器 分辨率:0.088°
+
+zf_device_gnss.h GPS 及 RTK 定位模块 双频高精度定位模块 亚米级定位
+
+zf_device_key.h GPIO 按键驱动 用于检测主板按键状态
+
+zf_device_virtual_oscilloscope.h VisualScope 虚拟示波器
+
+================================================== 其他传感器 ==================================================
\ No newline at end of file
diff --git a/Example/E01_gpio_demo/user/cpu0_main.c b/Example/E01_gpio_demo/user/cpu0_main.c
index dae2a5b..704d8a5 100644
--- a/Example/E01_gpio_demo/user/cpu0_main.c
+++ b/Example/E01_gpio_demo/user/cpu0_main.c
@@ -83,8 +83,8 @@ int core0_main(void)
gpio_init(KEY3, GPI, GPIO_HIGH, GPI_PULL_UP); // 初始化 KEY3 输入 默认高电平 上拉输入
gpio_init(KEY4, GPI, GPIO_HIGH, GPI_PULL_UP); // 初始化 KEY4 输入 默认高电平 上拉输入
- gpio_init(SWITCH1, GPI, GPIO_HIGH, GPI_PULL_UP); // 初始化 SWITCH1 输入 默认高电平 上拉输入
- gpio_init(SWITCH2, GPI, GPIO_HIGH, GPI_PULL_UP); // 初始化 SWITCH2 输入 默认高电平 上拉输入
+ gpio_init(SWITCH1, GPI, GPIO_HIGH, GPI_PULL_UP); // 初始化 SWITCH1 输入 默认高电平 上拉输入
+ gpio_init(SWITCH2, GPI, GPIO_HIGH, GPI_PULL_UP); // 初始化 SWITCH2 输入 默认高电平 上拉输入
// 此处编写用户代码 例如外设初始化代码等
cpu_wait_event_ready(); // 等待所有核心初始化完毕
diff --git a/Example/E02_uart_demo/libraries/doc/version.txt b/Example/E02_uart_demo/libraries/doc/version.txt
index 68afc86..c4e0d0a 100644
--- a/Example/E02_uart_demo/libraries/doc/version.txt
+++ b/Example/E02_uart_demo/libraries/doc/version.txt
@@ -1,3 +1,5 @@
+V3.3.0
+ 新增蓝牙串口通讯模块
V3.2.13
新增一个微秒延时函数 该延时函数为普通延时 非中断延时
V3.2.12
diff --git a/Example/E02_uart_demo/libraries/zf_common/zf_common_headfile.h b/Example/E02_uart_demo/libraries/zf_common/zf_common_headfile.h
index c0d833b..3a140e3 100644
--- a/Example/E02_uart_demo/libraries/zf_common/zf_common_headfile.h
+++ b/Example/E02_uart_demo/libraries/zf_common/zf_common_headfile.h
@@ -81,6 +81,7 @@
//===================================================外接设备驱动层===================================================
#include "zf_device_absolute_encoder.h"
+#include "zf_device_ble6a20.h"
#include "zf_device_bluetooth_ch9141.h"
#include "zf_device_gnss.h"
#include "zf_device_camera.h"
diff --git a/Example/E02_uart_demo/libraries/zf_components/seekfree_assistant.c b/Example/E02_uart_demo/libraries/zf_components/seekfree_assistant.c
index 0b7cb9d..af3bb96 100644
--- a/Example/E02_uart_demo/libraries/zf_components/seekfree_assistant.c
+++ b/Example/E02_uart_demo/libraries/zf_components/seekfree_assistant.c
@@ -1,20 +1,20 @@
/*********************************************************************************************************************
-* RT1064DVL6A Opensourec Library 即(RT1064DVL6A 开源库)是一个基于官方 SDK 接口的第三方开源库
+* TC264 Opensourec Library 即(TC264 开源库)是一个基于官方 SDK 接口的第三方开源库
* Copyright (c) 2022 SEEKFREE 逐飞科技
-*
-* 本文件是 RT1064DVL6A 开源库的一部分
-*
-* RT1064DVL6A 开源库 是免费软件
+*
+* 本文件是 TC264 开源库的一部分
+*
+* TC264 开源库 是免费软件
* 您可以根据自由软件基金会发布的 GPL(GNU General Public License,即 GNU通用公共许可证)的条款
* 即 GPL 的第3版(即 GPL3.0)或(您选择的)任何后来的版本,重新发布和/或修改它
-*
+*
* 本开源库的发布是希望它能发挥作用,但并未对其作任何的保证
* 甚至没有隐含的适销性或适合特定用途的保证
* 更多细节请参见 GPL
-*
+*
* 您应该在收到本开源库的同时收到一份 GPL 的副本
* 如果没有,请参阅
-*
+*
* 额外注明:
* 本开源库使用 GPL3.0 开源许可证协议 以上许可申明为译文版本
* 许可申明英文版在 libraries/doc 文件夹下的 GPL3_permission_statement.txt 文件中
@@ -24,13 +24,13 @@
* 文件名称 seekfree_assistant
* 公司名称 成都逐飞科技有限公司
* 版本信息 查看 libraries/doc 文件夹内 version 文件 版本说明
-* 开发环境 IAR 8.32.4 or MDK 5.33
-* 适用平台 RT1064DVL6A
+* 开发环境 ADS v1.9.20
+* 适用平台 TC264D
* 店铺链接 https://seekfree.taobao.com/
-*
+*
* 修改记录
-* 日期 作者 备注
-* 2024-1-11 SeekFree first version
+* 日期 作者 备注
+* 2024-01-01 pudding first version
********************************************************************************************************************/
#include "zf_common_debug.h"
diff --git a/Example/E02_uart_demo/libraries/zf_components/seekfree_assistant.h b/Example/E02_uart_demo/libraries/zf_components/seekfree_assistant.h
index ae0f67c..5e04a1d 100644
--- a/Example/E02_uart_demo/libraries/zf_components/seekfree_assistant.h
+++ b/Example/E02_uart_demo/libraries/zf_components/seekfree_assistant.h
@@ -1,20 +1,20 @@
/*********************************************************************************************************************
-* RT1064DVL6A Opensourec Library 即(RT1064DVL6A 开源库)是一个基于官方 SDK 接口的第三方开源库
+* TC264 Opensourec Library 即(TC264 开源库)是一个基于官方 SDK 接口的第三方开源库
* Copyright (c) 2022 SEEKFREE 逐飞科技
-*
-* 本文件是 RT1064DVL6A 开源库的一部分
-*
-* RT1064DVL6A 开源库 是免费软件
+*
+* 本文件是 TC264 开源库的一部分
+*
+* TC264 开源库 是免费软件
* 您可以根据自由软件基金会发布的 GPL(GNU General Public License,即 GNU通用公共许可证)的条款
* 即 GPL 的第3版(即 GPL3.0)或(您选择的)任何后来的版本,重新发布和/或修改它
-*
+*
* 本开源库的发布是希望它能发挥作用,但并未对其作任何的保证
* 甚至没有隐含的适销性或适合特定用途的保证
* 更多细节请参见 GPL
-*
+*
* 您应该在收到本开源库的同时收到一份 GPL 的副本
* 如果没有,请参阅
-*
+*
* 额外注明:
* 本开源库使用 GPL3.0 开源许可证协议 以上许可申明为译文版本
* 许可申明英文版在 libraries/doc 文件夹下的 GPL3_permission_statement.txt 文件中
@@ -24,13 +24,13 @@
* 文件名称 seekfree_assistant
* 公司名称 成都逐飞科技有限公司
* 版本信息 查看 libraries/doc 文件夹内 version 文件 版本说明
-* 开发环境 IAR 8.32.4 or MDK 5.33
-* 适用平台 RT1064DVL6A
+* 开发环境 ADS v1.9.20
+* 适用平台 TC264D
* 店铺链接 https://seekfree.taobao.com/
-*
+*
* 修改记录
-* 日期 作者 备注
-* 2024-1-11 SeekFree first version
+* 日期 作者 备注
+* 2024-01-01 pudding first version
********************************************************************************************************************/
#ifndef _seekfree_assistant_h_
#define _seekfree_assistant_h_
@@ -47,27 +47,27 @@
// 定义接收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 )
diff --git a/Example/E02_uart_demo/libraries/zf_components/seekfree_assistant_interface.c b/Example/E02_uart_demo/libraries/zf_components/seekfree_assistant_interface.c
index fdade63..cc42e43 100644
--- a/Example/E02_uart_demo/libraries/zf_components/seekfree_assistant_interface.c
+++ b/Example/E02_uart_demo/libraries/zf_components/seekfree_assistant_interface.c
@@ -1,20 +1,20 @@
/*********************************************************************************************************************
-* RT1064DVL6A Opensourec Library 即(RT1064DVL6A 开源库)是一个基于官方 SDK 接口的第三方开源库
+* TC264 Opensourec Library 即(TC264 开源库)是一个基于官方 SDK 接口的第三方开源库
* Copyright (c) 2022 SEEKFREE 逐飞科技
-*
-* 本文件是 RT1064DVL6A 开源库的一部分
-*
-* RT1064DVL6A 开源库 是免费软件
+*
+* 本文件是 TC264 开源库的一部分
+*
+* TC264 开源库 是免费软件
* 您可以根据自由软件基金会发布的 GPL(GNU General Public License,即 GNU通用公共许可证)的条款
* 即 GPL 的第3版(即 GPL3.0)或(您选择的)任何后来的版本,重新发布和/或修改它
-*
+*
* 本开源库的发布是希望它能发挥作用,但并未对其作任何的保证
* 甚至没有隐含的适销性或适合特定用途的保证
* 更多细节请参见 GPL
-*
+*
* 您应该在收到本开源库的同时收到一份 GPL 的副本
* 如果没有,请参阅
-*
+*
* 额外注明:
* 本开源库使用 GPL3.0 开源许可证协议 以上许可申明为译文版本
* 许可申明英文版在 libraries/doc 文件夹下的 GPL3_permission_statement.txt 文件中
@@ -24,13 +24,13 @@
* 文件名称 seekfree_assistant_interface
* 公司名称 成都逐飞科技有限公司
* 版本信息 查看 libraries/doc 文件夹内 version 文件 版本说明
-* 开发环境 IAR 8.32.4 or MDK 5.33
-* 适用平台 RT1064DVL6A
+* 开发环境 ADS v1.9.20
+* 适用平台 TC264D
* 店铺链接 https://seekfree.taobao.com/
-*
+*
* 修改记录
-* 日期 作者 备注
-* 2024-1-11 SeekFree first version
+* 日期 作者 备注
+* 2024-01-01 pudding first version
********************************************************************************************************************/
#include "zf_common_typedef.h"
@@ -38,6 +38,7 @@
#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"
@@ -100,6 +101,12 @@ ZF_WEAK void seekfree_assistant_interface_init (seekfree_assistant_transfer_devi
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;
diff --git a/Example/E02_uart_demo/libraries/zf_components/seekfree_assistant_interface.h b/Example/E02_uart_demo/libraries/zf_components/seekfree_assistant_interface.h
index 940b5f7..1d0158c 100644
--- a/Example/E02_uart_demo/libraries/zf_components/seekfree_assistant_interface.h
+++ b/Example/E02_uart_demo/libraries/zf_components/seekfree_assistant_interface.h
@@ -1,20 +1,20 @@
/*********************************************************************************************************************
-* RT1064DVL6A Opensourec Library 即(RT1064DVL6A 开源库)是一个基于官方 SDK 接口的第三方开源库
+* TC264 Opensourec Library 即(TC264 开源库)是一个基于官方 SDK 接口的第三方开源库
* Copyright (c) 2022 SEEKFREE 逐飞科技
-*
-* 本文件是 RT1064DVL6A 开源库的一部分
-*
-* RT1064DVL6A 开源库 是免费软件
+*
+* 本文件是 TC264 开源库的一部分
+*
+* TC264 开源库 是免费软件
* 您可以根据自由软件基金会发布的 GPL(GNU General Public License,即 GNU通用公共许可证)的条款
* 即 GPL 的第3版(即 GPL3.0)或(您选择的)任何后来的版本,重新发布和/或修改它
-*
+*
* 本开源库的发布是希望它能发挥作用,但并未对其作任何的保证
* 甚至没有隐含的适销性或适合特定用途的保证
* 更多细节请参见 GPL
-*
+*
* 您应该在收到本开源库的同时收到一份 GPL 的副本
* 如果没有,请参阅
-*
+*
* 额外注明:
* 本开源库使用 GPL3.0 开源许可证协议 以上许可申明为译文版本
* 许可申明英文版在 libraries/doc 文件夹下的 GPL3_permission_statement.txt 文件中
@@ -24,13 +24,13 @@
* 文件名称 seekfree_assistant_interface
* 公司名称 成都逐飞科技有限公司
* 版本信息 查看 libraries/doc 文件夹内 version 文件 版本说明
-* 开发环境 IAR 8.32.4 or MDK 5.33
-* 适用平台 RT1064DVL6A
+* 开发环境 ADS v1.9.20
+* 适用平台 TC264D
* 店铺链接 https://seekfree.taobao.com/
-*
+*
* 修改记录
-* 日期 作者 备注
-* 2024-1-11 SeekFree first version
+* 日期 作者 备注
+* 2024-01-01 pudding first version
********************************************************************************************************************/
#ifndef _seekfree_assistant_interface_h_
@@ -43,6 +43,7 @@ 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
diff --git a/Example/E02_uart_demo/libraries/zf_device/zf_device_ble6a20.c b/Example/E02_uart_demo/libraries/zf_device/zf_device_ble6a20.c
new file mode 100644
index 0000000..ea8649e
--- /dev/null
+++ b/Example/E02_uart_demo/libraries/zf_device/zf_device_ble6a20.c
@@ -0,0 +1,299 @@
+/*********************************************************************************************************************
+* TC264 Opensourec Library 即(TC264 开源库)是一个基于官方 SDK 接口的第三方开源库
+* Copyright (c) 2022 SEEKFREE 逐飞科技
+*
+* 本文件是 TC264 开源库的一部分
+*
+* TC264 开源库 是免费软件
+* 您可以根据自由软件基金会发布的 GPL(GNU General Public License,即 GNU通用公共许可证)的条款
+* 即 GPL 的第3版(即 GPL3.0)或(您选择的)任何后来的版本,重新发布和/或修改它
+*
+* 本开源库的发布是希望它能发挥作用,但并未对其作任何的保证
+* 甚至没有隐含的适销性或适合特定用途的保证
+* 更多细节请参见 GPL
+*
+* 您应该在收到本开源库的同时收到一份 GPL 的副本
+* 如果没有,请参阅
+*
+* 额外注明:
+* 本开源库使用 GPL3.0 开源许可证协议 以上许可申明为译文版本
+* 许可申明英文版在 libraries/doc 文件夹下的 GPL3_permission_statement.txt 文件中
+* 许可证副本在 libraries 文件夹下 即该文件夹下的 LICENSE 文件
+* 欢迎各位使用并传播本程序 但修改内容时必须保留逐飞科技的版权声明(即本声明)
+*
+* 文件名称 zf_device_ble6a20
+* 公司名称 成都逐飞科技有限公司
+* 版本信息 查看 libraries/doc 文件夹内 version 文件 版本说明
+* 开发环境 ADS v1.9.20
+* 适用平台 TC264D
+* 店铺链接 https://seekfree.taobao.com/
+*
+* 修改记录
+* 日期 作者 备注
+* 2024-07-02 pudding first version
+********************************************************************************************************************/
+/*********************************************************************************************************************
+* 接线定义:
+* ------------------------------------
+* 模块管脚 单片机管脚
+* RX 查看 zf_device_ble6a20.h 中 BLE6A20_RX_PIN 宏定义
+* TX 查看 zf_device_ble6a20.h 中 BLE6A20_TX_PIN 宏定义
+* RTS 查看 zf_device_ble6a20.h 中 BLE6A20_RTS_PIN 宏定义
+* VCC 3.3V电源
+* GND 电源地
+* 其余引脚悬空
+* ------------------------------------
+*********************************************************************************************************************/
+
+#include "zf_common_clock.h"
+#include "zf_common_debug.h"
+#include "zf_common_fifo.h"
+#include "zf_driver_delay.h"
+#include "zf_driver_gpio.h"
+#include "zf_driver_uart.h"
+#include "zf_device_type.h"
+#include "zf_device_ble6a20.h"
+
+static fifo_struct ble6a20_fifo;
+static uint8 ble6a20_buffer[BLE6A20_BUFFER_SIZE];
+
+static uint8 ble6a20_data = 0;
+#if (1 == BLE6A20_AUTO_BAUD_RATE)
+static volatile ble6a20_auto_baudrate_state_enum ble6a20_auto_baud_flag = BLE6A20_AUTO_BAUD_RATE_INIT;
+static volatile uint8 ble6a20_auto_baud_data[3] = {0x00, 0x01, 0x03};
+#endif
+
+//-------------------------------------------------------------------------------------------------------------------
+// 函数简介 蓝牙转串口模块 发送数据
+// 参数说明 data 8bit 数据
+// 返回参数 uint32 剩余发送长度 0-发送完毕 1-未发送完成
+// 使用示例 ble6a20_send_byte(data);
+// 备注信息
+//-------------------------------------------------------------------------------------------------------------------
+uint32 ble6a20_send_byte (const uint8 data)
+{
+ uint16 time_count = BLE6A20_TIMEOUT_COUNT;
+ while(time_count)
+ {
+ if(!gpio_get_level(BLE6A20_RTS_PIN))
+ {
+ uart_write_byte(BLE6A20_INDEX, data); // 发送数据
+ break;
+ }
+ time_count --;
+ system_delay_ms(1);
+ }
+ return (0 == time_count);
+}
+
+//-------------------------------------------------------------------------------------------------------------------
+// 函数简介 蓝牙转串口模块 发送数据块
+// 参数说明 *buff 发送缓冲区
+// 参数说明 len 发送数据长度
+// 返回参数 uint32 剩余发送长度
+// 使用示例 ble6a20_send_buffer(buff, 64);
+// 备注信息
+//-------------------------------------------------------------------------------------------------------------------
+uint32 ble6a20_send_buffer (const uint8 *buff, uint32 len)
+{
+ zf_assert(NULL != buff);
+ uint16 time_count = 0;
+ while(0 != len)
+ {
+ if(!gpio_get_level(BLE6A20_RTS_PIN)) // 如果RTS为低电平 则继续发送数据
+ {
+ if(30 <= len) // 数据分 30byte 每包发送
+ {
+ uart_write_buffer(BLE6A20_INDEX, buff, 30); // 发送数据
+ buff += 30; // 地址偏移
+ len -= 30; // 数量
+ time_count = 0;
+ }
+ else // 不足 30byte 的数据一次性发送完毕
+ {
+ uart_write_buffer(BLE6A20_INDEX, buff, len); // 发送数据
+ len = 0;
+ break;
+ }
+ }
+ else // 如果RTS为高电平 则模块忙
+ {
+ if(BLE6A20_TIMEOUT_COUNT <= (++ time_count)) // 超出了最大等待时间
+ {
+ break; // 退出发送
+ }
+ system_delay_ms(1);
+ }
+ }
+ return len;
+}
+
+//-------------------------------------------------------------------------------------------------------------------
+// 函数简介 蓝牙转串口模块 发送字符串
+// 参数说明 *str 要发送的字符串地址
+// 返回参数 uint32 剩余发送长度
+// 使用示例 ble6a20_send_string("Believe in yourself.");
+// 备注信息
+//-------------------------------------------------------------------------------------------------------------------
+uint32 ble6a20_send_string (const char *str)
+{
+ zf_assert(NULL != str);
+ uint16 time_count = 0;
+ uint32 len = strlen(str);
+ while(0 != len)
+ {
+ if(!gpio_get_level(BLE6A20_RTS_PIN)) // 如果RTS为低电平 则继续发送数据
+ {
+ if(128 <= len) // 数据分 128byte 每包发送
+ {
+ uart_write_buffer(BLE6A20_INDEX, (const uint8 *)str, 128); // 发送数据
+ str += 128; // 地址偏移
+ len -= 128; // 数量
+ time_count = 0;
+ }
+ else // 不足 128byte 的数据一次性发送完毕
+ {
+ uart_write_buffer(BLE6A20_INDEX, (const uint8 *)str, len);// 发送数据
+ len = 0;
+ break;
+ }
+ }
+ else // 如果RTS为高电平 则模块忙
+ {
+ if(BLE6A20_TIMEOUT_COUNT <= (++ time_count)) // 超出了最大等待时间
+ {
+ break; // 退出发送
+ }
+ system_delay_ms(1);
+ }
+ }
+ return len;
+}
+
+//-------------------------------------------------------------------------------------------------------------------
+// 函数简介 蓝牙转串口模块 发送摄像头图像至上位机查看图像
+// 参数说明 *image_addr 需要发送的图像地址
+// 参数说明 image_size 图像的大小
+// 返回参数 void
+// 使用示例 ble6a20_send_image(&mt9v03x_image[0][0], MT9V03X_IMAGE_SIZE);
+// 备注信息
+//-------------------------------------------------------------------------------------------------------------------
+void ble6a20_send_image (const uint8 *image_addr, uint32 image_size)
+{
+ zf_assert(NULL != image_addr);
+ extern uint8 camera_send_image_frame_header[4];
+ ble6a20_send_buffer(camera_send_image_frame_header, 4);
+ ble6a20_send_buffer((uint8 *)image_addr, image_size);
+}
+
+//-------------------------------------------------------------------------------------------------------------------
+// 函数简介 蓝牙转串口模块 读取缓冲区数据
+// 参数说明 *buff 接收缓冲区
+// 参数说明 len 读取数据长度
+// 返回参数 uint32 实际读取数据长度
+// 使用示例 ble6a20_read_buffer(buff, 32);
+// 备注信息
+//-------------------------------------------------------------------------------------------------------------------
+uint32 ble6a20_read_buffer (uint8 *buff, uint32 len)
+{
+ zf_assert(NULL != buff);
+ uint32 data_len = len;
+ fifo_read_buffer(&ble6a20_fifo, buff, &data_len, FIFO_READ_AND_CLEAN);
+ return data_len;
+}
+
+//-------------------------------------------------------------------------------------------------------------------
+// 函数简介 蓝牙转串口模块 串口中断回调函数
+// 参数说明 void
+// 返回参数 void
+// 使用示例 ble6a20_callback();
+// 备注信息 该函数在 ISR 文件 串口中断程序被调用
+// 由串口中断服务函数调用 wireless_module_uart_handler() 函数
+// 再由 wireless_module_uart_handler() 函数调用本函数
+//-------------------------------------------------------------------------------------------------------------------
+void ble6a20_callback (void)
+{
+ if(uart_query_byte(BLE6A20_INDEX, &ble6a20_data))
+ {
+ fifo_write_buffer(&ble6a20_fifo, &ble6a20_data, 1);
+#if BLE6A20_AUTO_BAUD_RATE // 开启自动波特率
+ if(BLE6A20_AUTO_BAUD_RATE_START == ble6a20_auto_baud_flag && 3 == fifo_used(&ble6a20_fifo))
+ {
+ uint32 ble6a20_auto_baud_count = 3;
+ ble6a20_auto_baud_flag = BLE6A20_AUTO_BAUD_RATE_GET_ACK;
+ fifo_read_buffer(&ble6a20_fifo, (uint8 *)ble6a20_auto_baud_data, (uint32 *)&ble6a20_auto_baud_count, FIFO_READ_AND_CLEAN);
+ }
+#endif
+ }
+}
+
+//-------------------------------------------------------------------------------------------------------------------
+// 函数简介 蓝牙转串口模块 初始化
+// 参数说明 void
+// 返回参数 void
+// 使用示例 ble6a20_init();
+// 备注信息
+//-------------------------------------------------------------------------------------------------------------------
+uint8 ble6a20_init (void)
+{
+ uint8 return_state = 0;
+
+ // 等待模块初始化
+ system_delay_ms(50);
+
+ set_wireless_type(BLE6A20, ble6a20_callback);
+
+ fifo_init(&ble6a20_fifo, FIFO_DATA_8BIT, ble6a20_buffer, BLE6A20_BUFFER_SIZE);
+ gpio_init(BLE6A20_RTS_PIN, GPI, GPIO_HIGH, GPI_PULL_UP);
+#if(0 == BLE6A20_AUTO_BAUD_RATE) // 关闭自动波特率
+ // 本函数使用的波特率为115200 为蓝牙转串口模块的默认波特率 如需其他波特率请自行配置模块并修改串口的波特率
+ uart_init (BLE6A20_INDEX, BLE6A20_BUAD_RATE, BLE6A20_RX_PIN, BLE6A20_TX_PIN); // 初始化串口
+ uart_rx_interrupt(BLE6A20_INDEX, 1);
+#elif(1 == BLE6A20_AUTO_BAUD_RATE) // 开启自动波特率
+ uint8 rts_init_status = 0;
+
+ ble6a20_auto_baud_flag = BLE6A20_AUTO_BAUD_RATE_INIT;
+ ble6a20_auto_baud_data[0] = 0;
+ ble6a20_auto_baud_data[1] = 1;
+ ble6a20_auto_baud_data[2] = 3;
+
+ rts_init_status = gpio_get_level(BLE6A20_RTS_PIN);
+ gpio_init(BLE6A20_RTS_PIN, GPO, rts_init_status, GPO_PUSH_PULL); // 初始化流控引脚
+
+ uart_init (BLE6A20_INDEX, BLE6A20_BUAD_RATE, BLE6A20_RX_PIN, BLE6A20_TX_PIN); // 初始化串口
+ uart_rx_interrupt(BLE6A20_INDEX, 1);
+
+ system_delay_ms(5); // 模块上电之后需要延时等待
+ gpio_set_level(BLE6A20_RTS_PIN, !rts_init_status); // RTS引脚拉高,进入自动波特率模式
+ system_delay_ms(100); // RTS拉高之后必须延时20ms
+ gpio_toggle_level(BLE6A20_RTS_PIN); // RTS引脚取反
+
+ do
+ {
+ ble6a20_auto_baud_flag = BLE6A20_AUTO_BAUD_RATE_START;
+ uart_write_byte(BLE6A20_INDEX, ble6a20_auto_baud_data[0]); // 发送特定数据 用于模块自动判断波特率
+ uart_write_byte(BLE6A20_INDEX, ble6a20_auto_baud_data[1]); // 发送特定数据 用于模块自动判断波特率
+ uart_write_byte(BLE6A20_INDEX, ble6a20_auto_baud_data[2]); // 发送特定数据 用于模块自动判断波特率
+ system_delay_ms(20);
+
+ if(BLE6A20_AUTO_BAUD_RATE_GET_ACK != ble6a20_auto_baud_flag) // 检验自动波特率是否完成
+ {
+ return_state = 1; // 如果程序进入到此语句内 说明自动波特率失败了
+ break;
+ }
+
+ if( 0xa5 != ble6a20_auto_baud_data[0] && // 检验自动波特率是否正确
+ 0xff != ble6a20_auto_baud_data[1] && // 检验自动波特率是否正确
+ 0xff != ble6a20_auto_baud_data[2] ) // 检验自动波特率是否正确
+ {
+ return_state = 1; // 如果程序进入到此语句内 说明自动波特率失败了
+ break;
+ }
+ ble6a20_auto_baud_flag = BLE6A20_AUTO_BAUD_RATE_SUCCESS;
+
+ gpio_init(BLE6A20_RTS_PIN, GPI, 0, GPI_PULL_UP); // 初始化流控引脚
+ system_delay_ms(10); // 延时等待 模块准备就绪
+ }while(0);
+#endif
+ return return_state;
+}
diff --git a/Example/E02_uart_demo/libraries/zf_device/zf_device_ble6a20.h b/Example/E02_uart_demo/libraries/zf_device/zf_device_ble6a20.h
new file mode 100644
index 0000000..c037ea2
--- /dev/null
+++ b/Example/E02_uart_demo/libraries/zf_device/zf_device_ble6a20.h
@@ -0,0 +1,108 @@
+/*********************************************************************************************************************
+* TC264 Opensourec Library 即(TC264 开源库)是一个基于官方 SDK 接口的第三方开源库
+* Copyright (c) 2022 SEEKFREE 逐飞科技
+*
+* 本文件是 TC264 开源库的一部分
+*
+* TC264 开源库 是免费软件
+* 您可以根据自由软件基金会发布的 GPL(GNU General Public License,即 GNU通用公共许可证)的条款
+* 即 GPL 的第3版(即 GPL3.0)或(您选择的)任何后来的版本,重新发布和/或修改它
+*
+* 本开源库的发布是希望它能发挥作用,但并未对其作任何的保证
+* 甚至没有隐含的适销性或适合特定用途的保证
+* 更多细节请参见 GPL
+*
+* 您应该在收到本开源库的同时收到一份 GPL 的副本
+* 如果没有,请参阅
+*
+* 额外注明:
+* 本开源库使用 GPL3.0 开源许可证协议 以上许可申明为译文版本
+* 许可申明英文版在 libraries/doc 文件夹下的 GPL3_permission_statement.txt 文件中
+* 许可证副本在 libraries 文件夹下 即该文件夹下的 LICENSE 文件
+* 欢迎各位使用并传播本程序 但修改内容时必须保留逐飞科技的版权声明(即本声明)
+*
+* 文件名称 zf_device_ble6a20.h
+* 公司名称 成都逐飞科技有限公司
+* 版本信息 查看 libraries/doc 文件夹内 version 文件 版本说明
+* 开发环境 ADS v1.9.20
+* 适用平台 TC264D
+* 店铺链接 https://seekfree.taobao.com/
+*
+* 修改记录
+* 日期 作者 备注
+* 2024-07-02 pudding first version
+********************************************************************************************************************/
+/*********************************************************************************************************************
+* 接线定义:
+* ------------------------------------
+* 模块管脚 单片机管脚
+* RX 查看 zf_device_ble6a20.h 中 BLE6A20_RX_PIN 宏定义
+* TX 查看 zf_device_ble6a20.h 中 BLE6A20_TX_PIN 宏定义
+* RTS 查看 zf_device_ble6a20.h 中 BLE6A20_RTS_PIN 宏定义
+* VCC 3.3V电源
+* GND 电源地
+* 其余引脚悬空
+* ------------------------------------
+*********************************************************************************************************************/
+
+
+#ifndef _zf_device_ble6a20_h_
+#define _zf_device_ble6a20_h_
+
+#include "zf_common_typedef.h"
+
+
+//=================================================定义 蓝牙串口 基本配置================================================
+
+#define BLE6A20_INDEX (UART_2) // 蓝牙串口对应使用的串口号
+#define BLE6A20_BUAD_RATE (115200) // 蓝牙串口对应使用的串口波特率
+ // 波特率仅支持 9600 57600 115200 230400 460800 921600 1500000 2000000
+#define BLE6A20_TX_PIN (UART2_RX_P10_6) // 蓝牙串口对应模块的 TX 要接到单片机的 RX
+#define BLE6A20_RX_PIN (UART2_TX_P10_5) // 蓝牙串口对应模块的 RX 要接到单片机的 TX
+#define BLE6A20_RTS_PIN (P10_2) // 蓝牙串口对应模块的 RTS 引脚
+
+#define BLE6A20_BUFFER_SIZE ( 64 ) // 蓝牙串口缓冲区大小
+#define BLE6A20_TIMEOUT_COUNT ( 0x64 ) // 蓝牙串口通讯超时范围
+
+// ------------------------------------ 自动波特率 ------------------------------------
+// 注意事项1:开启自动波特率务必连接RTS引脚 否则会开启失败。
+// 注意事项2:模块自动波特率失败的话 可以尝试断电重启
+
+// 开启自动波特率务必阅读上面两条 注意事项
+// 开启自动波特率务必阅读上面两条 注意事项
+// 开启自动波特率务必阅读上面两条 注意事项
+
+// 0:关闭自动波特率
+// 1:开启自动波特率 自动波特率的作用是修改 BLE6A20_BAUD 之后不需要对模块进行配置 模块会自动设置为对应的波特率
+// 自动波特率仅支持 9600 57600 115200 230400 460800 921600 1500000 2000000
+
+#define BLE6A20_AUTO_BAUD_RATE ( 0 )
+
+#if (1 == BLE6A20_AUTO_BAUD_RATE)
+typedef enum
+{
+ BLE6A20_AUTO_BAUD_RATE_SUCCESS,
+ BLE6A20_AUTO_BAUD_RATE_INIT,
+ BLE6A20_AUTO_BAUD_RATE_START,
+ BLE6A20_AUTO_BAUD_RATE_GET_ACK,
+}ble6a20_auto_baudrate_state_enum;
+#endif
+// ------------------------------------ 自动波特率 ------------------------------------
+
+//=================================================定义 蓝牙串口 基本配置================================================
+
+
+//=================================================声明 蓝牙串口 基础函数================================================
+uint32 ble6a20_send_byte (const uint8 data); // 蓝牙转串口模块 发送数据
+uint32 ble6a20_send_buffer (const uint8 *buff, uint32 len); // 蓝牙转串口模块 发送数据块
+uint32 ble6a20_send_string (const char *str); // 蓝牙转串口模块 发送字符串
+void ble6a20_send_image (const uint8 *image_addr, uint32 image_size); // 蓝牙转串口模块 发送摄像头图像至上位机查看图像
+
+uint32 ble6a20_read_buffer (uint8 *buff, uint32 len); // 蓝牙转串口模块 读取缓冲区数据
+
+void ble6a20_callback (void); // 蓝牙转串口模块 串口中断回调函数
+
+uint8 ble6a20_init (void); // 蓝牙转串口模块 初始化
+//=================================================声明 蓝牙串口 基础函数================================================
+
+#endif
diff --git a/Example/E02_uart_demo/libraries/zf_device/zf_device_type.h b/Example/E02_uart_demo/libraries/zf_device/zf_device_type.h
index 6c2b8da..4f8ec53 100644
--- a/Example/E02_uart_demo/libraries/zf_device/zf_device_type.h
+++ b/Example/E02_uart_demo/libraries/zf_device/zf_device_type.h
@@ -54,6 +54,7 @@ typedef enum
{
NO_WIRELESS = 0, // 无设备
WIRELESS_UART, // 无线串口
+ BLE6A20, // 蓝牙串口
BLUETOOTH_CH9141, // 蓝牙 CH9141
WIFI_UART, // 串口 WiFi
RECEIVER_UART, // 枪式遥控器
diff --git a/Example/E02_uart_demo/libraries/zf_device/澶栬鏂囦欢璇存槑.txt b/Example/E02_uart_demo/libraries/zf_device/澶栬鏂囦欢璇存槑.txt
new file mode 100644
index 0000000..1c96965
--- /dev/null
+++ b/Example/E02_uart_demo/libraries/zf_device/澶栬鏂囦欢璇存槑.txt
@@ -0,0 +1,97 @@
+
+如需获取详细资料可联系淘宝店铺客服:https://seekfree.taobao.com/
+如需获取详细资料可联系淘宝店铺客服:https://seekfree.taobao.com/
+如需获取详细资料可联系淘宝店铺客服:https://seekfree.taobao.com/
+
+本文件主要用于说明 zf_device 目录下各个文件所对应的外设模块
+本文件主要用于说明 zf_device 目录下各个文件所对应的外设模块
+本文件主要用于说明 zf_device 目录下各个文件所对应的外设模块
+
+
+=================================================== 测距模块 ===================================================
+
+zf_device_dl1a.h TOF 测距模块 DL1A 频率:33hz 最大距离:1.2 米
+
+zf_device_dl1b.h TOF 测距模块 DL1B 频率:100hz 最大距离:1.4 米
+
+=================================================== 测距模块 ===================================================
+
+
+
+==================================================== 陀螺仪 ====================================================
+
+zf_device_mpu6050.h MPU6050 六轴陀螺仪 传统 IIC 通讯
+
+zf_device_icm20602.h ICM20602 六轴陀螺仪 支持 SPI 采值
+
+zf_device_imu660ra.h IMU660RA 六轴陀螺仪 高精度陀螺仪
+
+zf_device_imu963ra.h IMU963RA 九轴陀螺仪 支持地磁计采集
+
+==================================================== 陀螺仪 ====================================================
+
+
+
+=================================================== 屏幕显示 ===================================================
+
+zf_device_ips114.h IPS114 液晶屏幕 1.14 寸 分辨率:240 * 135
+
+zf_device_ips200.h IPS200 液晶屏幕 2.0 寸 分辨率:240 * 320
+
+zf_device_tft180.h TFT180 屏幕 1.8寸 分辨率:160 * 128
+
+zf_device_oled.h OLED 液晶屏幕 0.96 寸 分辨率:128 * 64
+
+=================================================== 屏幕显示 ===================================================
+
+
+
+================================================== 图像传感器 ==================================================
+
+zf_device_mt9v03x.h MT9V03X 总钻风灰度摄像头
+
+zf_device_ov7725.h OV7725 小钻风硬件二值化摄像头
+
+zf_device_scc8660.h SCC8660 凌瞳彩色摄像头
+
+zf_device_tsl1401.h TSL1401 红孩儿线阵CCD
+
+================================================== 图像传感器 ==================================================
+
+
+
+=================================================== 无线通讯 ===================================================
+
+zf_device_ble6a20.h 蓝牙串口模块 无线通讯
+
+zf_device_bluetooth_ch9141.h CH9141 蓝牙通讯模块 蓝牙组网通讯
+
+zf_device_wifi_spi.h WIFI-SPI 高速WIFI无线通讯模块
+
+zf_device_wifi_uart.h WIFI-UART 串口WIFI无线通讯模块
+
+zf_device_wireless_uart.h 无线串口模块
+
+=================================================== 无线通讯 ===================================================
+
+
+
+=================================================== 远程遥控 ===================================================
+
+zf_device_uart_receiver.h SUBS 串口遥控器 串口通讯 长距离遥控 2.4G频段
+
+=================================================== 远程遥控 ===================================================
+
+
+
+================================================== 其他传感器 ==================================================
+
+zf_device_absolute_encoder.h 360° 位置传感器 绝对式迷你 mini 编码器 分辨率:0.088°
+
+zf_device_gnss.h GPS 及 RTK 定位模块 双频高精度定位模块 亚米级定位
+
+zf_device_key.h GPIO 按键驱动 用于检测主板按键状态
+
+zf_device_virtual_oscilloscope.h VisualScope 虚拟示波器
+
+================================================== 其他传感器 ==================================================
\ No newline at end of file
diff --git a/Example/E03_adc_demo/libraries/doc/version.txt b/Example/E03_adc_demo/libraries/doc/version.txt
index 68afc86..c4e0d0a 100644
--- a/Example/E03_adc_demo/libraries/doc/version.txt
+++ b/Example/E03_adc_demo/libraries/doc/version.txt
@@ -1,3 +1,5 @@
+V3.3.0
+ 新增蓝牙串口通讯模块
V3.2.13
新增一个微秒延时函数 该延时函数为普通延时 非中断延时
V3.2.12
diff --git a/Example/E03_adc_demo/libraries/zf_common/zf_common_headfile.h b/Example/E03_adc_demo/libraries/zf_common/zf_common_headfile.h
index c0d833b..3a140e3 100644
--- a/Example/E03_adc_demo/libraries/zf_common/zf_common_headfile.h
+++ b/Example/E03_adc_demo/libraries/zf_common/zf_common_headfile.h
@@ -81,6 +81,7 @@
//===================================================外接设备驱动层===================================================
#include "zf_device_absolute_encoder.h"
+#include "zf_device_ble6a20.h"
#include "zf_device_bluetooth_ch9141.h"
#include "zf_device_gnss.h"
#include "zf_device_camera.h"
diff --git a/Example/E03_adc_demo/libraries/zf_components/seekfree_assistant.c b/Example/E03_adc_demo/libraries/zf_components/seekfree_assistant.c
index 0b7cb9d..af3bb96 100644
--- a/Example/E03_adc_demo/libraries/zf_components/seekfree_assistant.c
+++ b/Example/E03_adc_demo/libraries/zf_components/seekfree_assistant.c
@@ -1,20 +1,20 @@
/*********************************************************************************************************************
-* RT1064DVL6A Opensourec Library 即(RT1064DVL6A 开源库)是一个基于官方 SDK 接口的第三方开源库
+* TC264 Opensourec Library 即(TC264 开源库)是一个基于官方 SDK 接口的第三方开源库
* Copyright (c) 2022 SEEKFREE 逐飞科技
-*
-* 本文件是 RT1064DVL6A 开源库的一部分
-*
-* RT1064DVL6A 开源库 是免费软件
+*
+* 本文件是 TC264 开源库的一部分
+*
+* TC264 开源库 是免费软件
* 您可以根据自由软件基金会发布的 GPL(GNU General Public License,即 GNU通用公共许可证)的条款
* 即 GPL 的第3版(即 GPL3.0)或(您选择的)任何后来的版本,重新发布和/或修改它
-*
+*
* 本开源库的发布是希望它能发挥作用,但并未对其作任何的保证
* 甚至没有隐含的适销性或适合特定用途的保证
* 更多细节请参见 GPL
-*
+*
* 您应该在收到本开源库的同时收到一份 GPL 的副本
* 如果没有,请参阅
-*
+*
* 额外注明:
* 本开源库使用 GPL3.0 开源许可证协议 以上许可申明为译文版本
* 许可申明英文版在 libraries/doc 文件夹下的 GPL3_permission_statement.txt 文件中
@@ -24,13 +24,13 @@
* 文件名称 seekfree_assistant
* 公司名称 成都逐飞科技有限公司
* 版本信息 查看 libraries/doc 文件夹内 version 文件 版本说明
-* 开发环境 IAR 8.32.4 or MDK 5.33
-* 适用平台 RT1064DVL6A
+* 开发环境 ADS v1.9.20
+* 适用平台 TC264D
* 店铺链接 https://seekfree.taobao.com/
-*
+*
* 修改记录
-* 日期 作者 备注
-* 2024-1-11 SeekFree first version
+* 日期 作者 备注
+* 2024-01-01 pudding first version
********************************************************************************************************************/
#include "zf_common_debug.h"
diff --git a/Example/E03_adc_demo/libraries/zf_components/seekfree_assistant.h b/Example/E03_adc_demo/libraries/zf_components/seekfree_assistant.h
index ae0f67c..5e04a1d 100644
--- a/Example/E03_adc_demo/libraries/zf_components/seekfree_assistant.h
+++ b/Example/E03_adc_demo/libraries/zf_components/seekfree_assistant.h
@@ -1,20 +1,20 @@
/*********************************************************************************************************************
-* RT1064DVL6A Opensourec Library 即(RT1064DVL6A 开源库)是一个基于官方 SDK 接口的第三方开源库
+* TC264 Opensourec Library 即(TC264 开源库)是一个基于官方 SDK 接口的第三方开源库
* Copyright (c) 2022 SEEKFREE 逐飞科技
-*
-* 本文件是 RT1064DVL6A 开源库的一部分
-*
-* RT1064DVL6A 开源库 是免费软件
+*
+* 本文件是 TC264 开源库的一部分
+*
+* TC264 开源库 是免费软件
* 您可以根据自由软件基金会发布的 GPL(GNU General Public License,即 GNU通用公共许可证)的条款
* 即 GPL 的第3版(即 GPL3.0)或(您选择的)任何后来的版本,重新发布和/或修改它
-*
+*
* 本开源库的发布是希望它能发挥作用,但并未对其作任何的保证
* 甚至没有隐含的适销性或适合特定用途的保证
* 更多细节请参见 GPL
-*
+*
* 您应该在收到本开源库的同时收到一份 GPL 的副本
* 如果没有,请参阅
-*
+*
* 额外注明:
* 本开源库使用 GPL3.0 开源许可证协议 以上许可申明为译文版本
* 许可申明英文版在 libraries/doc 文件夹下的 GPL3_permission_statement.txt 文件中
@@ -24,13 +24,13 @@
* 文件名称 seekfree_assistant
* 公司名称 成都逐飞科技有限公司
* 版本信息 查看 libraries/doc 文件夹内 version 文件 版本说明
-* 开发环境 IAR 8.32.4 or MDK 5.33
-* 适用平台 RT1064DVL6A
+* 开发环境 ADS v1.9.20
+* 适用平台 TC264D
* 店铺链接 https://seekfree.taobao.com/
-*
+*
* 修改记录
-* 日期 作者 备注
-* 2024-1-11 SeekFree first version
+* 日期 作者 备注
+* 2024-01-01 pudding first version
********************************************************************************************************************/
#ifndef _seekfree_assistant_h_
#define _seekfree_assistant_h_
@@ -47,27 +47,27 @@
// 定义接收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 )
diff --git a/Example/E03_adc_demo/libraries/zf_components/seekfree_assistant_interface.c b/Example/E03_adc_demo/libraries/zf_components/seekfree_assistant_interface.c
index fdade63..cc42e43 100644
--- a/Example/E03_adc_demo/libraries/zf_components/seekfree_assistant_interface.c
+++ b/Example/E03_adc_demo/libraries/zf_components/seekfree_assistant_interface.c
@@ -1,20 +1,20 @@
/*********************************************************************************************************************
-* RT1064DVL6A Opensourec Library 即(RT1064DVL6A 开源库)是一个基于官方 SDK 接口的第三方开源库
+* TC264 Opensourec Library 即(TC264 开源库)是一个基于官方 SDK 接口的第三方开源库
* Copyright (c) 2022 SEEKFREE 逐飞科技
-*
-* 本文件是 RT1064DVL6A 开源库的一部分
-*
-* RT1064DVL6A 开源库 是免费软件
+*
+* 本文件是 TC264 开源库的一部分
+*
+* TC264 开源库 是免费软件
* 您可以根据自由软件基金会发布的 GPL(GNU General Public License,即 GNU通用公共许可证)的条款
* 即 GPL 的第3版(即 GPL3.0)或(您选择的)任何后来的版本,重新发布和/或修改它
-*
+*
* 本开源库的发布是希望它能发挥作用,但并未对其作任何的保证
* 甚至没有隐含的适销性或适合特定用途的保证
* 更多细节请参见 GPL
-*
+*
* 您应该在收到本开源库的同时收到一份 GPL 的副本
* 如果没有,请参阅
-*
+*
* 额外注明:
* 本开源库使用 GPL3.0 开源许可证协议 以上许可申明为译文版本
* 许可申明英文版在 libraries/doc 文件夹下的 GPL3_permission_statement.txt 文件中
@@ -24,13 +24,13 @@
* 文件名称 seekfree_assistant_interface
* 公司名称 成都逐飞科技有限公司
* 版本信息 查看 libraries/doc 文件夹内 version 文件 版本说明
-* 开发环境 IAR 8.32.4 or MDK 5.33
-* 适用平台 RT1064DVL6A
+* 开发环境 ADS v1.9.20
+* 适用平台 TC264D
* 店铺链接 https://seekfree.taobao.com/
-*
+*
* 修改记录
-* 日期 作者 备注
-* 2024-1-11 SeekFree first version
+* 日期 作者 备注
+* 2024-01-01 pudding first version
********************************************************************************************************************/
#include "zf_common_typedef.h"
@@ -38,6 +38,7 @@
#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"
@@ -100,6 +101,12 @@ ZF_WEAK void seekfree_assistant_interface_init (seekfree_assistant_transfer_devi
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;
diff --git a/Example/E03_adc_demo/libraries/zf_components/seekfree_assistant_interface.h b/Example/E03_adc_demo/libraries/zf_components/seekfree_assistant_interface.h
index 940b5f7..1d0158c 100644
--- a/Example/E03_adc_demo/libraries/zf_components/seekfree_assistant_interface.h
+++ b/Example/E03_adc_demo/libraries/zf_components/seekfree_assistant_interface.h
@@ -1,20 +1,20 @@
/*********************************************************************************************************************
-* RT1064DVL6A Opensourec Library 即(RT1064DVL6A 开源库)是一个基于官方 SDK 接口的第三方开源库
+* TC264 Opensourec Library 即(TC264 开源库)是一个基于官方 SDK 接口的第三方开源库
* Copyright (c) 2022 SEEKFREE 逐飞科技
-*
-* 本文件是 RT1064DVL6A 开源库的一部分
-*
-* RT1064DVL6A 开源库 是免费软件
+*
+* 本文件是 TC264 开源库的一部分
+*
+* TC264 开源库 是免费软件
* 您可以根据自由软件基金会发布的 GPL(GNU General Public License,即 GNU通用公共许可证)的条款
* 即 GPL 的第3版(即 GPL3.0)或(您选择的)任何后来的版本,重新发布和/或修改它
-*
+*
* 本开源库的发布是希望它能发挥作用,但并未对其作任何的保证
* 甚至没有隐含的适销性或适合特定用途的保证
* 更多细节请参见 GPL
-*
+*
* 您应该在收到本开源库的同时收到一份 GPL 的副本
* 如果没有,请参阅
-*
+*
* 额外注明:
* 本开源库使用 GPL3.0 开源许可证协议 以上许可申明为译文版本
* 许可申明英文版在 libraries/doc 文件夹下的 GPL3_permission_statement.txt 文件中
@@ -24,13 +24,13 @@
* 文件名称 seekfree_assistant_interface
* 公司名称 成都逐飞科技有限公司
* 版本信息 查看 libraries/doc 文件夹内 version 文件 版本说明
-* 开发环境 IAR 8.32.4 or MDK 5.33
-* 适用平台 RT1064DVL6A
+* 开发环境 ADS v1.9.20
+* 适用平台 TC264D
* 店铺链接 https://seekfree.taobao.com/
-*
+*
* 修改记录
-* 日期 作者 备注
-* 2024-1-11 SeekFree first version
+* 日期 作者 备注
+* 2024-01-01 pudding first version
********************************************************************************************************************/
#ifndef _seekfree_assistant_interface_h_
@@ -43,6 +43,7 @@ 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
diff --git a/Example/E03_adc_demo/libraries/zf_device/zf_device_ble6a20.c b/Example/E03_adc_demo/libraries/zf_device/zf_device_ble6a20.c
new file mode 100644
index 0000000..ea8649e
--- /dev/null
+++ b/Example/E03_adc_demo/libraries/zf_device/zf_device_ble6a20.c
@@ -0,0 +1,299 @@
+/*********************************************************************************************************************
+* TC264 Opensourec Library 即(TC264 开源库)是一个基于官方 SDK 接口的第三方开源库
+* Copyright (c) 2022 SEEKFREE 逐飞科技
+*
+* 本文件是 TC264 开源库的一部分
+*
+* TC264 开源库 是免费软件
+* 您可以根据自由软件基金会发布的 GPL(GNU General Public License,即 GNU通用公共许可证)的条款
+* 即 GPL 的第3版(即 GPL3.0)或(您选择的)任何后来的版本,重新发布和/或修改它
+*
+* 本开源库的发布是希望它能发挥作用,但并未对其作任何的保证
+* 甚至没有隐含的适销性或适合特定用途的保证
+* 更多细节请参见 GPL
+*
+* 您应该在收到本开源库的同时收到一份 GPL 的副本
+* 如果没有,请参阅
+*
+* 额外注明:
+* 本开源库使用 GPL3.0 开源许可证协议 以上许可申明为译文版本
+* 许可申明英文版在 libraries/doc 文件夹下的 GPL3_permission_statement.txt 文件中
+* 许可证副本在 libraries 文件夹下 即该文件夹下的 LICENSE 文件
+* 欢迎各位使用并传播本程序 但修改内容时必须保留逐飞科技的版权声明(即本声明)
+*
+* 文件名称 zf_device_ble6a20
+* 公司名称 成都逐飞科技有限公司
+* 版本信息 查看 libraries/doc 文件夹内 version 文件 版本说明
+* 开发环境 ADS v1.9.20
+* 适用平台 TC264D
+* 店铺链接 https://seekfree.taobao.com/
+*
+* 修改记录
+* 日期 作者 备注
+* 2024-07-02 pudding first version
+********************************************************************************************************************/
+/*********************************************************************************************************************
+* 接线定义:
+* ------------------------------------
+* 模块管脚 单片机管脚
+* RX 查看 zf_device_ble6a20.h 中 BLE6A20_RX_PIN 宏定义
+* TX 查看 zf_device_ble6a20.h 中 BLE6A20_TX_PIN 宏定义
+* RTS 查看 zf_device_ble6a20.h 中 BLE6A20_RTS_PIN 宏定义
+* VCC 3.3V电源
+* GND 电源地
+* 其余引脚悬空
+* ------------------------------------
+*********************************************************************************************************************/
+
+#include "zf_common_clock.h"
+#include "zf_common_debug.h"
+#include "zf_common_fifo.h"
+#include "zf_driver_delay.h"
+#include "zf_driver_gpio.h"
+#include "zf_driver_uart.h"
+#include "zf_device_type.h"
+#include "zf_device_ble6a20.h"
+
+static fifo_struct ble6a20_fifo;
+static uint8 ble6a20_buffer[BLE6A20_BUFFER_SIZE];
+
+static uint8 ble6a20_data = 0;
+#if (1 == BLE6A20_AUTO_BAUD_RATE)
+static volatile ble6a20_auto_baudrate_state_enum ble6a20_auto_baud_flag = BLE6A20_AUTO_BAUD_RATE_INIT;
+static volatile uint8 ble6a20_auto_baud_data[3] = {0x00, 0x01, 0x03};
+#endif
+
+//-------------------------------------------------------------------------------------------------------------------
+// 函数简介 蓝牙转串口模块 发送数据
+// 参数说明 data 8bit 数据
+// 返回参数 uint32 剩余发送长度 0-发送完毕 1-未发送完成
+// 使用示例 ble6a20_send_byte(data);
+// 备注信息
+//-------------------------------------------------------------------------------------------------------------------
+uint32 ble6a20_send_byte (const uint8 data)
+{
+ uint16 time_count = BLE6A20_TIMEOUT_COUNT;
+ while(time_count)
+ {
+ if(!gpio_get_level(BLE6A20_RTS_PIN))
+ {
+ uart_write_byte(BLE6A20_INDEX, data); // 发送数据
+ break;
+ }
+ time_count --;
+ system_delay_ms(1);
+ }
+ return (0 == time_count);
+}
+
+//-------------------------------------------------------------------------------------------------------------------
+// 函数简介 蓝牙转串口模块 发送数据块
+// 参数说明 *buff 发送缓冲区
+// 参数说明 len 发送数据长度
+// 返回参数 uint32 剩余发送长度
+// 使用示例 ble6a20_send_buffer(buff, 64);
+// 备注信息
+//-------------------------------------------------------------------------------------------------------------------
+uint32 ble6a20_send_buffer (const uint8 *buff, uint32 len)
+{
+ zf_assert(NULL != buff);
+ uint16 time_count = 0;
+ while(0 != len)
+ {
+ if(!gpio_get_level(BLE6A20_RTS_PIN)) // 如果RTS为低电平 则继续发送数据
+ {
+ if(30 <= len) // 数据分 30byte 每包发送
+ {
+ uart_write_buffer(BLE6A20_INDEX, buff, 30); // 发送数据
+ buff += 30; // 地址偏移
+ len -= 30; // 数量
+ time_count = 0;
+ }
+ else // 不足 30byte 的数据一次性发送完毕
+ {
+ uart_write_buffer(BLE6A20_INDEX, buff, len); // 发送数据
+ len = 0;
+ break;
+ }
+ }
+ else // 如果RTS为高电平 则模块忙
+ {
+ if(BLE6A20_TIMEOUT_COUNT <= (++ time_count)) // 超出了最大等待时间
+ {
+ break; // 退出发送
+ }
+ system_delay_ms(1);
+ }
+ }
+ return len;
+}
+
+//-------------------------------------------------------------------------------------------------------------------
+// 函数简介 蓝牙转串口模块 发送字符串
+// 参数说明 *str 要发送的字符串地址
+// 返回参数 uint32 剩余发送长度
+// 使用示例 ble6a20_send_string("Believe in yourself.");
+// 备注信息
+//-------------------------------------------------------------------------------------------------------------------
+uint32 ble6a20_send_string (const char *str)
+{
+ zf_assert(NULL != str);
+ uint16 time_count = 0;
+ uint32 len = strlen(str);
+ while(0 != len)
+ {
+ if(!gpio_get_level(BLE6A20_RTS_PIN)) // 如果RTS为低电平 则继续发送数据
+ {
+ if(128 <= len) // 数据分 128byte 每包发送
+ {
+ uart_write_buffer(BLE6A20_INDEX, (const uint8 *)str, 128); // 发送数据
+ str += 128; // 地址偏移
+ len -= 128; // 数量
+ time_count = 0;
+ }
+ else // 不足 128byte 的数据一次性发送完毕
+ {
+ uart_write_buffer(BLE6A20_INDEX, (const uint8 *)str, len);// 发送数据
+ len = 0;
+ break;
+ }
+ }
+ else // 如果RTS为高电平 则模块忙
+ {
+ if(BLE6A20_TIMEOUT_COUNT <= (++ time_count)) // 超出了最大等待时间
+ {
+ break; // 退出发送
+ }
+ system_delay_ms(1);
+ }
+ }
+ return len;
+}
+
+//-------------------------------------------------------------------------------------------------------------------
+// 函数简介 蓝牙转串口模块 发送摄像头图像至上位机查看图像
+// 参数说明 *image_addr 需要发送的图像地址
+// 参数说明 image_size 图像的大小
+// 返回参数 void
+// 使用示例 ble6a20_send_image(&mt9v03x_image[0][0], MT9V03X_IMAGE_SIZE);
+// 备注信息
+//-------------------------------------------------------------------------------------------------------------------
+void ble6a20_send_image (const uint8 *image_addr, uint32 image_size)
+{
+ zf_assert(NULL != image_addr);
+ extern uint8 camera_send_image_frame_header[4];
+ ble6a20_send_buffer(camera_send_image_frame_header, 4);
+ ble6a20_send_buffer((uint8 *)image_addr, image_size);
+}
+
+//-------------------------------------------------------------------------------------------------------------------
+// 函数简介 蓝牙转串口模块 读取缓冲区数据
+// 参数说明 *buff 接收缓冲区
+// 参数说明 len 读取数据长度
+// 返回参数 uint32 实际读取数据长度
+// 使用示例 ble6a20_read_buffer(buff, 32);
+// 备注信息
+//-------------------------------------------------------------------------------------------------------------------
+uint32 ble6a20_read_buffer (uint8 *buff, uint32 len)
+{
+ zf_assert(NULL != buff);
+ uint32 data_len = len;
+ fifo_read_buffer(&ble6a20_fifo, buff, &data_len, FIFO_READ_AND_CLEAN);
+ return data_len;
+}
+
+//-------------------------------------------------------------------------------------------------------------------
+// 函数简介 蓝牙转串口模块 串口中断回调函数
+// 参数说明 void
+// 返回参数 void
+// 使用示例 ble6a20_callback();
+// 备注信息 该函数在 ISR 文件 串口中断程序被调用
+// 由串口中断服务函数调用 wireless_module_uart_handler() 函数
+// 再由 wireless_module_uart_handler() 函数调用本函数
+//-------------------------------------------------------------------------------------------------------------------
+void ble6a20_callback (void)
+{
+ if(uart_query_byte(BLE6A20_INDEX, &ble6a20_data))
+ {
+ fifo_write_buffer(&ble6a20_fifo, &ble6a20_data, 1);
+#if BLE6A20_AUTO_BAUD_RATE // 开启自动波特率
+ if(BLE6A20_AUTO_BAUD_RATE_START == ble6a20_auto_baud_flag && 3 == fifo_used(&ble6a20_fifo))
+ {
+ uint32 ble6a20_auto_baud_count = 3;
+ ble6a20_auto_baud_flag = BLE6A20_AUTO_BAUD_RATE_GET_ACK;
+ fifo_read_buffer(&ble6a20_fifo, (uint8 *)ble6a20_auto_baud_data, (uint32 *)&ble6a20_auto_baud_count, FIFO_READ_AND_CLEAN);
+ }
+#endif
+ }
+}
+
+//-------------------------------------------------------------------------------------------------------------------
+// 函数简介 蓝牙转串口模块 初始化
+// 参数说明 void
+// 返回参数 void
+// 使用示例 ble6a20_init();
+// 备注信息
+//-------------------------------------------------------------------------------------------------------------------
+uint8 ble6a20_init (void)
+{
+ uint8 return_state = 0;
+
+ // 等待模块初始化
+ system_delay_ms(50);
+
+ set_wireless_type(BLE6A20, ble6a20_callback);
+
+ fifo_init(&ble6a20_fifo, FIFO_DATA_8BIT, ble6a20_buffer, BLE6A20_BUFFER_SIZE);
+ gpio_init(BLE6A20_RTS_PIN, GPI, GPIO_HIGH, GPI_PULL_UP);
+#if(0 == BLE6A20_AUTO_BAUD_RATE) // 关闭自动波特率
+ // 本函数使用的波特率为115200 为蓝牙转串口模块的默认波特率 如需其他波特率请自行配置模块并修改串口的波特率
+ uart_init (BLE6A20_INDEX, BLE6A20_BUAD_RATE, BLE6A20_RX_PIN, BLE6A20_TX_PIN); // 初始化串口
+ uart_rx_interrupt(BLE6A20_INDEX, 1);
+#elif(1 == BLE6A20_AUTO_BAUD_RATE) // 开启自动波特率
+ uint8 rts_init_status = 0;
+
+ ble6a20_auto_baud_flag = BLE6A20_AUTO_BAUD_RATE_INIT;
+ ble6a20_auto_baud_data[0] = 0;
+ ble6a20_auto_baud_data[1] = 1;
+ ble6a20_auto_baud_data[2] = 3;
+
+ rts_init_status = gpio_get_level(BLE6A20_RTS_PIN);
+ gpio_init(BLE6A20_RTS_PIN, GPO, rts_init_status, GPO_PUSH_PULL); // 初始化流控引脚
+
+ uart_init (BLE6A20_INDEX, BLE6A20_BUAD_RATE, BLE6A20_RX_PIN, BLE6A20_TX_PIN); // 初始化串口
+ uart_rx_interrupt(BLE6A20_INDEX, 1);
+
+ system_delay_ms(5); // 模块上电之后需要延时等待
+ gpio_set_level(BLE6A20_RTS_PIN, !rts_init_status); // RTS引脚拉高,进入自动波特率模式
+ system_delay_ms(100); // RTS拉高之后必须延时20ms
+ gpio_toggle_level(BLE6A20_RTS_PIN); // RTS引脚取反
+
+ do
+ {
+ ble6a20_auto_baud_flag = BLE6A20_AUTO_BAUD_RATE_START;
+ uart_write_byte(BLE6A20_INDEX, ble6a20_auto_baud_data[0]); // 发送特定数据 用于模块自动判断波特率
+ uart_write_byte(BLE6A20_INDEX, ble6a20_auto_baud_data[1]); // 发送特定数据 用于模块自动判断波特率
+ uart_write_byte(BLE6A20_INDEX, ble6a20_auto_baud_data[2]); // 发送特定数据 用于模块自动判断波特率
+ system_delay_ms(20);
+
+ if(BLE6A20_AUTO_BAUD_RATE_GET_ACK != ble6a20_auto_baud_flag) // 检验自动波特率是否完成
+ {
+ return_state = 1; // 如果程序进入到此语句内 说明自动波特率失败了
+ break;
+ }
+
+ if( 0xa5 != ble6a20_auto_baud_data[0] && // 检验自动波特率是否正确
+ 0xff != ble6a20_auto_baud_data[1] && // 检验自动波特率是否正确
+ 0xff != ble6a20_auto_baud_data[2] ) // 检验自动波特率是否正确
+ {
+ return_state = 1; // 如果程序进入到此语句内 说明自动波特率失败了
+ break;
+ }
+ ble6a20_auto_baud_flag = BLE6A20_AUTO_BAUD_RATE_SUCCESS;
+
+ gpio_init(BLE6A20_RTS_PIN, GPI, 0, GPI_PULL_UP); // 初始化流控引脚
+ system_delay_ms(10); // 延时等待 模块准备就绪
+ }while(0);
+#endif
+ return return_state;
+}
diff --git a/Example/E03_adc_demo/libraries/zf_device/zf_device_ble6a20.h b/Example/E03_adc_demo/libraries/zf_device/zf_device_ble6a20.h
new file mode 100644
index 0000000..c037ea2
--- /dev/null
+++ b/Example/E03_adc_demo/libraries/zf_device/zf_device_ble6a20.h
@@ -0,0 +1,108 @@
+/*********************************************************************************************************************
+* TC264 Opensourec Library 即(TC264 开源库)是一个基于官方 SDK 接口的第三方开源库
+* Copyright (c) 2022 SEEKFREE 逐飞科技
+*
+* 本文件是 TC264 开源库的一部分
+*
+* TC264 开源库 是免费软件
+* 您可以根据自由软件基金会发布的 GPL(GNU General Public License,即 GNU通用公共许可证)的条款
+* 即 GPL 的第3版(即 GPL3.0)或(您选择的)任何后来的版本,重新发布和/或修改它
+*
+* 本开源库的发布是希望它能发挥作用,但并未对其作任何的保证
+* 甚至没有隐含的适销性或适合特定用途的保证
+* 更多细节请参见 GPL
+*
+* 您应该在收到本开源库的同时收到一份 GPL 的副本
+* 如果没有,请参阅
+*
+* 额外注明:
+* 本开源库使用 GPL3.0 开源许可证协议 以上许可申明为译文版本
+* 许可申明英文版在 libraries/doc 文件夹下的 GPL3_permission_statement.txt 文件中
+* 许可证副本在 libraries 文件夹下 即该文件夹下的 LICENSE 文件
+* 欢迎各位使用并传播本程序 但修改内容时必须保留逐飞科技的版权声明(即本声明)
+*
+* 文件名称 zf_device_ble6a20.h
+* 公司名称 成都逐飞科技有限公司
+* 版本信息 查看 libraries/doc 文件夹内 version 文件 版本说明
+* 开发环境 ADS v1.9.20
+* 适用平台 TC264D
+* 店铺链接 https://seekfree.taobao.com/
+*
+* 修改记录
+* 日期 作者 备注
+* 2024-07-02 pudding first version
+********************************************************************************************************************/
+/*********************************************************************************************************************
+* 接线定义:
+* ------------------------------------
+* 模块管脚 单片机管脚
+* RX 查看 zf_device_ble6a20.h 中 BLE6A20_RX_PIN 宏定义
+* TX 查看 zf_device_ble6a20.h 中 BLE6A20_TX_PIN 宏定义
+* RTS 查看 zf_device_ble6a20.h 中 BLE6A20_RTS_PIN 宏定义
+* VCC 3.3V电源
+* GND 电源地
+* 其余引脚悬空
+* ------------------------------------
+*********************************************************************************************************************/
+
+
+#ifndef _zf_device_ble6a20_h_
+#define _zf_device_ble6a20_h_
+
+#include "zf_common_typedef.h"
+
+
+//=================================================定义 蓝牙串口 基本配置================================================
+
+#define BLE6A20_INDEX (UART_2) // 蓝牙串口对应使用的串口号
+#define BLE6A20_BUAD_RATE (115200) // 蓝牙串口对应使用的串口波特率
+ // 波特率仅支持 9600 57600 115200 230400 460800 921600 1500000 2000000
+#define BLE6A20_TX_PIN (UART2_RX_P10_6) // 蓝牙串口对应模块的 TX 要接到单片机的 RX
+#define BLE6A20_RX_PIN (UART2_TX_P10_5) // 蓝牙串口对应模块的 RX 要接到单片机的 TX
+#define BLE6A20_RTS_PIN (P10_2) // 蓝牙串口对应模块的 RTS 引脚
+
+#define BLE6A20_BUFFER_SIZE ( 64 ) // 蓝牙串口缓冲区大小
+#define BLE6A20_TIMEOUT_COUNT ( 0x64 ) // 蓝牙串口通讯超时范围
+
+// ------------------------------------ 自动波特率 ------------------------------------
+// 注意事项1:开启自动波特率务必连接RTS引脚 否则会开启失败。
+// 注意事项2:模块自动波特率失败的话 可以尝试断电重启
+
+// 开启自动波特率务必阅读上面两条 注意事项
+// 开启自动波特率务必阅读上面两条 注意事项
+// 开启自动波特率务必阅读上面两条 注意事项
+
+// 0:关闭自动波特率
+// 1:开启自动波特率 自动波特率的作用是修改 BLE6A20_BAUD 之后不需要对模块进行配置 模块会自动设置为对应的波特率
+// 自动波特率仅支持 9600 57600 115200 230400 460800 921600 1500000 2000000
+
+#define BLE6A20_AUTO_BAUD_RATE ( 0 )
+
+#if (1 == BLE6A20_AUTO_BAUD_RATE)
+typedef enum
+{
+ BLE6A20_AUTO_BAUD_RATE_SUCCESS,
+ BLE6A20_AUTO_BAUD_RATE_INIT,
+ BLE6A20_AUTO_BAUD_RATE_START,
+ BLE6A20_AUTO_BAUD_RATE_GET_ACK,
+}ble6a20_auto_baudrate_state_enum;
+#endif
+// ------------------------------------ 自动波特率 ------------------------------------
+
+//=================================================定义 蓝牙串口 基本配置================================================
+
+
+//=================================================声明 蓝牙串口 基础函数================================================
+uint32 ble6a20_send_byte (const uint8 data); // 蓝牙转串口模块 发送数据
+uint32 ble6a20_send_buffer (const uint8 *buff, uint32 len); // 蓝牙转串口模块 发送数据块
+uint32 ble6a20_send_string (const char *str); // 蓝牙转串口模块 发送字符串
+void ble6a20_send_image (const uint8 *image_addr, uint32 image_size); // 蓝牙转串口模块 发送摄像头图像至上位机查看图像
+
+uint32 ble6a20_read_buffer (uint8 *buff, uint32 len); // 蓝牙转串口模块 读取缓冲区数据
+
+void ble6a20_callback (void); // 蓝牙转串口模块 串口中断回调函数
+
+uint8 ble6a20_init (void); // 蓝牙转串口模块 初始化
+//=================================================声明 蓝牙串口 基础函数================================================
+
+#endif
diff --git a/Example/E03_adc_demo/libraries/zf_device/zf_device_type.h b/Example/E03_adc_demo/libraries/zf_device/zf_device_type.h
index 6c2b8da..4f8ec53 100644
--- a/Example/E03_adc_demo/libraries/zf_device/zf_device_type.h
+++ b/Example/E03_adc_demo/libraries/zf_device/zf_device_type.h
@@ -54,6 +54,7 @@ typedef enum
{
NO_WIRELESS = 0, // 无设备
WIRELESS_UART, // 无线串口
+ BLE6A20, // 蓝牙串口
BLUETOOTH_CH9141, // 蓝牙 CH9141
WIFI_UART, // 串口 WiFi
RECEIVER_UART, // 枪式遥控器
diff --git a/Example/E03_adc_demo/libraries/zf_device/澶栬鏂囦欢璇存槑.txt b/Example/E03_adc_demo/libraries/zf_device/澶栬鏂囦欢璇存槑.txt
new file mode 100644
index 0000000..1c96965
--- /dev/null
+++ b/Example/E03_adc_demo/libraries/zf_device/澶栬鏂囦欢璇存槑.txt
@@ -0,0 +1,97 @@
+
+如需获取详细资料可联系淘宝店铺客服:https://seekfree.taobao.com/
+如需获取详细资料可联系淘宝店铺客服:https://seekfree.taobao.com/
+如需获取详细资料可联系淘宝店铺客服:https://seekfree.taobao.com/
+
+本文件主要用于说明 zf_device 目录下各个文件所对应的外设模块
+本文件主要用于说明 zf_device 目录下各个文件所对应的外设模块
+本文件主要用于说明 zf_device 目录下各个文件所对应的外设模块
+
+
+=================================================== 测距模块 ===================================================
+
+zf_device_dl1a.h TOF 测距模块 DL1A 频率:33hz 最大距离:1.2 米
+
+zf_device_dl1b.h TOF 测距模块 DL1B 频率:100hz 最大距离:1.4 米
+
+=================================================== 测距模块 ===================================================
+
+
+
+==================================================== 陀螺仪 ====================================================
+
+zf_device_mpu6050.h MPU6050 六轴陀螺仪 传统 IIC 通讯
+
+zf_device_icm20602.h ICM20602 六轴陀螺仪 支持 SPI 采值
+
+zf_device_imu660ra.h IMU660RA 六轴陀螺仪 高精度陀螺仪
+
+zf_device_imu963ra.h IMU963RA 九轴陀螺仪 支持地磁计采集
+
+==================================================== 陀螺仪 ====================================================
+
+
+
+=================================================== 屏幕显示 ===================================================
+
+zf_device_ips114.h IPS114 液晶屏幕 1.14 寸 分辨率:240 * 135
+
+zf_device_ips200.h IPS200 液晶屏幕 2.0 寸 分辨率:240 * 320
+
+zf_device_tft180.h TFT180 屏幕 1.8寸 分辨率:160 * 128
+
+zf_device_oled.h OLED 液晶屏幕 0.96 寸 分辨率:128 * 64
+
+=================================================== 屏幕显示 ===================================================
+
+
+
+================================================== 图像传感器 ==================================================
+
+zf_device_mt9v03x.h MT9V03X 总钻风灰度摄像头
+
+zf_device_ov7725.h OV7725 小钻风硬件二值化摄像头
+
+zf_device_scc8660.h SCC8660 凌瞳彩色摄像头
+
+zf_device_tsl1401.h TSL1401 红孩儿线阵CCD
+
+================================================== 图像传感器 ==================================================
+
+
+
+=================================================== 无线通讯 ===================================================
+
+zf_device_ble6a20.h 蓝牙串口模块 无线通讯
+
+zf_device_bluetooth_ch9141.h CH9141 蓝牙通讯模块 蓝牙组网通讯
+
+zf_device_wifi_spi.h WIFI-SPI 高速WIFI无线通讯模块
+
+zf_device_wifi_uart.h WIFI-UART 串口WIFI无线通讯模块
+
+zf_device_wireless_uart.h 无线串口模块
+
+=================================================== 无线通讯 ===================================================
+
+
+
+=================================================== 远程遥控 ===================================================
+
+zf_device_uart_receiver.h SUBS 串口遥控器 串口通讯 长距离遥控 2.4G频段
+
+=================================================== 远程遥控 ===================================================
+
+
+
+================================================== 其他传感器 ==================================================
+
+zf_device_absolute_encoder.h 360° 位置传感器 绝对式迷你 mini 编码器 分辨率:0.088°
+
+zf_device_gnss.h GPS 及 RTK 定位模块 双频高精度定位模块 亚米级定位
+
+zf_device_key.h GPIO 按键驱动 用于检测主板按键状态
+
+zf_device_virtual_oscilloscope.h VisualScope 虚拟示波器
+
+================================================== 其他传感器 ==================================================
\ No newline at end of file
diff --git a/Example/E04_pwm_demo/libraries/doc/version.txt b/Example/E04_pwm_demo/libraries/doc/version.txt
index 68afc86..c4e0d0a 100644
--- a/Example/E04_pwm_demo/libraries/doc/version.txt
+++ b/Example/E04_pwm_demo/libraries/doc/version.txt
@@ -1,3 +1,5 @@
+V3.3.0
+ 新增蓝牙串口通讯模块
V3.2.13
新增一个微秒延时函数 该延时函数为普通延时 非中断延时
V3.2.12
diff --git a/Example/E04_pwm_demo/libraries/zf_common/zf_common_headfile.h b/Example/E04_pwm_demo/libraries/zf_common/zf_common_headfile.h
index c0d833b..3a140e3 100644
--- a/Example/E04_pwm_demo/libraries/zf_common/zf_common_headfile.h
+++ b/Example/E04_pwm_demo/libraries/zf_common/zf_common_headfile.h
@@ -81,6 +81,7 @@
//===================================================外接设备驱动层===================================================
#include "zf_device_absolute_encoder.h"
+#include "zf_device_ble6a20.h"
#include "zf_device_bluetooth_ch9141.h"
#include "zf_device_gnss.h"
#include "zf_device_camera.h"
diff --git a/Example/E04_pwm_demo/libraries/zf_components/seekfree_assistant.c b/Example/E04_pwm_demo/libraries/zf_components/seekfree_assistant.c
index 0b7cb9d..af3bb96 100644
--- a/Example/E04_pwm_demo/libraries/zf_components/seekfree_assistant.c
+++ b/Example/E04_pwm_demo/libraries/zf_components/seekfree_assistant.c
@@ -1,20 +1,20 @@
/*********************************************************************************************************************
-* RT1064DVL6A Opensourec Library 即(RT1064DVL6A 开源库)是一个基于官方 SDK 接口的第三方开源库
+* TC264 Opensourec Library 即(TC264 开源库)是一个基于官方 SDK 接口的第三方开源库
* Copyright (c) 2022 SEEKFREE 逐飞科技
-*
-* 本文件是 RT1064DVL6A 开源库的一部分
-*
-* RT1064DVL6A 开源库 是免费软件
+*
+* 本文件是 TC264 开源库的一部分
+*
+* TC264 开源库 是免费软件
* 您可以根据自由软件基金会发布的 GPL(GNU General Public License,即 GNU通用公共许可证)的条款
* 即 GPL 的第3版(即 GPL3.0)或(您选择的)任何后来的版本,重新发布和/或修改它
-*
+*
* 本开源库的发布是希望它能发挥作用,但并未对其作任何的保证
* 甚至没有隐含的适销性或适合特定用途的保证
* 更多细节请参见 GPL
-*
+*
* 您应该在收到本开源库的同时收到一份 GPL 的副本
* 如果没有,请参阅
-*
+*
* 额外注明:
* 本开源库使用 GPL3.0 开源许可证协议 以上许可申明为译文版本
* 许可申明英文版在 libraries/doc 文件夹下的 GPL3_permission_statement.txt 文件中
@@ -24,13 +24,13 @@
* 文件名称 seekfree_assistant
* 公司名称 成都逐飞科技有限公司
* 版本信息 查看 libraries/doc 文件夹内 version 文件 版本说明
-* 开发环境 IAR 8.32.4 or MDK 5.33
-* 适用平台 RT1064DVL6A
+* 开发环境 ADS v1.9.20
+* 适用平台 TC264D
* 店铺链接 https://seekfree.taobao.com/
-*
+*
* 修改记录
-* 日期 作者 备注
-* 2024-1-11 SeekFree first version
+* 日期 作者 备注
+* 2024-01-01 pudding first version
********************************************************************************************************************/
#include "zf_common_debug.h"
diff --git a/Example/E04_pwm_demo/libraries/zf_components/seekfree_assistant.h b/Example/E04_pwm_demo/libraries/zf_components/seekfree_assistant.h
index ae0f67c..5e04a1d 100644
--- a/Example/E04_pwm_demo/libraries/zf_components/seekfree_assistant.h
+++ b/Example/E04_pwm_demo/libraries/zf_components/seekfree_assistant.h
@@ -1,20 +1,20 @@
/*********************************************************************************************************************
-* RT1064DVL6A Opensourec Library 即(RT1064DVL6A 开源库)是一个基于官方 SDK 接口的第三方开源库
+* TC264 Opensourec Library 即(TC264 开源库)是一个基于官方 SDK 接口的第三方开源库
* Copyright (c) 2022 SEEKFREE 逐飞科技
-*
-* 本文件是 RT1064DVL6A 开源库的一部分
-*
-* RT1064DVL6A 开源库 是免费软件
+*
+* 本文件是 TC264 开源库的一部分
+*
+* TC264 开源库 是免费软件
* 您可以根据自由软件基金会发布的 GPL(GNU General Public License,即 GNU通用公共许可证)的条款
* 即 GPL 的第3版(即 GPL3.0)或(您选择的)任何后来的版本,重新发布和/或修改它
-*
+*
* 本开源库的发布是希望它能发挥作用,但并未对其作任何的保证
* 甚至没有隐含的适销性或适合特定用途的保证
* 更多细节请参见 GPL
-*
+*
* 您应该在收到本开源库的同时收到一份 GPL 的副本
* 如果没有,请参阅
-*
+*
* 额外注明:
* 本开源库使用 GPL3.0 开源许可证协议 以上许可申明为译文版本
* 许可申明英文版在 libraries/doc 文件夹下的 GPL3_permission_statement.txt 文件中
@@ -24,13 +24,13 @@
* 文件名称 seekfree_assistant
* 公司名称 成都逐飞科技有限公司
* 版本信息 查看 libraries/doc 文件夹内 version 文件 版本说明
-* 开发环境 IAR 8.32.4 or MDK 5.33
-* 适用平台 RT1064DVL6A
+* 开发环境 ADS v1.9.20
+* 适用平台 TC264D
* 店铺链接 https://seekfree.taobao.com/
-*
+*
* 修改记录
-* 日期 作者 备注
-* 2024-1-11 SeekFree first version
+* 日期 作者 备注
+* 2024-01-01 pudding first version
********************************************************************************************************************/
#ifndef _seekfree_assistant_h_
#define _seekfree_assistant_h_
@@ -47,27 +47,27 @@
// 定义接收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 )
diff --git a/Example/E04_pwm_demo/libraries/zf_components/seekfree_assistant_interface.c b/Example/E04_pwm_demo/libraries/zf_components/seekfree_assistant_interface.c
index fdade63..cc42e43 100644
--- a/Example/E04_pwm_demo/libraries/zf_components/seekfree_assistant_interface.c
+++ b/Example/E04_pwm_demo/libraries/zf_components/seekfree_assistant_interface.c
@@ -1,20 +1,20 @@
/*********************************************************************************************************************
-* RT1064DVL6A Opensourec Library 即(RT1064DVL6A 开源库)是一个基于官方 SDK 接口的第三方开源库
+* TC264 Opensourec Library 即(TC264 开源库)是一个基于官方 SDK 接口的第三方开源库
* Copyright (c) 2022 SEEKFREE 逐飞科技
-*
-* 本文件是 RT1064DVL6A 开源库的一部分
-*
-* RT1064DVL6A 开源库 是免费软件
+*
+* 本文件是 TC264 开源库的一部分
+*
+* TC264 开源库 是免费软件
* 您可以根据自由软件基金会发布的 GPL(GNU General Public License,即 GNU通用公共许可证)的条款
* 即 GPL 的第3版(即 GPL3.0)或(您选择的)任何后来的版本,重新发布和/或修改它
-*
+*
* 本开源库的发布是希望它能发挥作用,但并未对其作任何的保证
* 甚至没有隐含的适销性或适合特定用途的保证
* 更多细节请参见 GPL
-*
+*
* 您应该在收到本开源库的同时收到一份 GPL 的副本
* 如果没有,请参阅
-*
+*
* 额外注明:
* 本开源库使用 GPL3.0 开源许可证协议 以上许可申明为译文版本
* 许可申明英文版在 libraries/doc 文件夹下的 GPL3_permission_statement.txt 文件中
@@ -24,13 +24,13 @@
* 文件名称 seekfree_assistant_interface
* 公司名称 成都逐飞科技有限公司
* 版本信息 查看 libraries/doc 文件夹内 version 文件 版本说明
-* 开发环境 IAR 8.32.4 or MDK 5.33
-* 适用平台 RT1064DVL6A
+* 开发环境 ADS v1.9.20
+* 适用平台 TC264D
* 店铺链接 https://seekfree.taobao.com/
-*
+*
* 修改记录
-* 日期 作者 备注
-* 2024-1-11 SeekFree first version
+* 日期 作者 备注
+* 2024-01-01 pudding first version
********************************************************************************************************************/
#include "zf_common_typedef.h"
@@ -38,6 +38,7 @@
#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"
@@ -100,6 +101,12 @@ ZF_WEAK void seekfree_assistant_interface_init (seekfree_assistant_transfer_devi
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;
diff --git a/Example/E04_pwm_demo/libraries/zf_components/seekfree_assistant_interface.h b/Example/E04_pwm_demo/libraries/zf_components/seekfree_assistant_interface.h
index 940b5f7..1d0158c 100644
--- a/Example/E04_pwm_demo/libraries/zf_components/seekfree_assistant_interface.h
+++ b/Example/E04_pwm_demo/libraries/zf_components/seekfree_assistant_interface.h
@@ -1,20 +1,20 @@
/*********************************************************************************************************************
-* RT1064DVL6A Opensourec Library 即(RT1064DVL6A 开源库)是一个基于官方 SDK 接口的第三方开源库
+* TC264 Opensourec Library 即(TC264 开源库)是一个基于官方 SDK 接口的第三方开源库
* Copyright (c) 2022 SEEKFREE 逐飞科技
-*
-* 本文件是 RT1064DVL6A 开源库的一部分
-*
-* RT1064DVL6A 开源库 是免费软件
+*
+* 本文件是 TC264 开源库的一部分
+*
+* TC264 开源库 是免费软件
* 您可以根据自由软件基金会发布的 GPL(GNU General Public License,即 GNU通用公共许可证)的条款
* 即 GPL 的第3版(即 GPL3.0)或(您选择的)任何后来的版本,重新发布和/或修改它
-*
+*
* 本开源库的发布是希望它能发挥作用,但并未对其作任何的保证
* 甚至没有隐含的适销性或适合特定用途的保证
* 更多细节请参见 GPL
-*
+*
* 您应该在收到本开源库的同时收到一份 GPL 的副本
* 如果没有,请参阅
-*
+*
* 额外注明:
* 本开源库使用 GPL3.0 开源许可证协议 以上许可申明为译文版本
* 许可申明英文版在 libraries/doc 文件夹下的 GPL3_permission_statement.txt 文件中
@@ -24,13 +24,13 @@
* 文件名称 seekfree_assistant_interface
* 公司名称 成都逐飞科技有限公司
* 版本信息 查看 libraries/doc 文件夹内 version 文件 版本说明
-* 开发环境 IAR 8.32.4 or MDK 5.33
-* 适用平台 RT1064DVL6A
+* 开发环境 ADS v1.9.20
+* 适用平台 TC264D
* 店铺链接 https://seekfree.taobao.com/
-*
+*
* 修改记录
-* 日期 作者 备注
-* 2024-1-11 SeekFree first version
+* 日期 作者 备注
+* 2024-01-01 pudding first version
********************************************************************************************************************/
#ifndef _seekfree_assistant_interface_h_
@@ -43,6 +43,7 @@ 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
diff --git a/Example/E04_pwm_demo/libraries/zf_device/zf_device_ble6a20.c b/Example/E04_pwm_demo/libraries/zf_device/zf_device_ble6a20.c
new file mode 100644
index 0000000..ea8649e
--- /dev/null
+++ b/Example/E04_pwm_demo/libraries/zf_device/zf_device_ble6a20.c
@@ -0,0 +1,299 @@
+/*********************************************************************************************************************
+* TC264 Opensourec Library 即(TC264 开源库)是一个基于官方 SDK 接口的第三方开源库
+* Copyright (c) 2022 SEEKFREE 逐飞科技
+*
+* 本文件是 TC264 开源库的一部分
+*
+* TC264 开源库 是免费软件
+* 您可以根据自由软件基金会发布的 GPL(GNU General Public License,即 GNU通用公共许可证)的条款
+* 即 GPL 的第3版(即 GPL3.0)或(您选择的)任何后来的版本,重新发布和/或修改它
+*
+* 本开源库的发布是希望它能发挥作用,但并未对其作任何的保证
+* 甚至没有隐含的适销性或适合特定用途的保证
+* 更多细节请参见 GPL
+*
+* 您应该在收到本开源库的同时收到一份 GPL 的副本
+* 如果没有,请参阅
+*
+* 额外注明:
+* 本开源库使用 GPL3.0 开源许可证协议 以上许可申明为译文版本
+* 许可申明英文版在 libraries/doc 文件夹下的 GPL3_permission_statement.txt 文件中
+* 许可证副本在 libraries 文件夹下 即该文件夹下的 LICENSE 文件
+* 欢迎各位使用并传播本程序 但修改内容时必须保留逐飞科技的版权声明(即本声明)
+*
+* 文件名称 zf_device_ble6a20
+* 公司名称 成都逐飞科技有限公司
+* 版本信息 查看 libraries/doc 文件夹内 version 文件 版本说明
+* 开发环境 ADS v1.9.20
+* 适用平台 TC264D
+* 店铺链接 https://seekfree.taobao.com/
+*
+* 修改记录
+* 日期 作者 备注
+* 2024-07-02 pudding first version
+********************************************************************************************************************/
+/*********************************************************************************************************************
+* 接线定义:
+* ------------------------------------
+* 模块管脚 单片机管脚
+* RX 查看 zf_device_ble6a20.h 中 BLE6A20_RX_PIN 宏定义
+* TX 查看 zf_device_ble6a20.h 中 BLE6A20_TX_PIN 宏定义
+* RTS 查看 zf_device_ble6a20.h 中 BLE6A20_RTS_PIN 宏定义
+* VCC 3.3V电源
+* GND 电源地
+* 其余引脚悬空
+* ------------------------------------
+*********************************************************************************************************************/
+
+#include "zf_common_clock.h"
+#include "zf_common_debug.h"
+#include "zf_common_fifo.h"
+#include "zf_driver_delay.h"
+#include "zf_driver_gpio.h"
+#include "zf_driver_uart.h"
+#include "zf_device_type.h"
+#include "zf_device_ble6a20.h"
+
+static fifo_struct ble6a20_fifo;
+static uint8 ble6a20_buffer[BLE6A20_BUFFER_SIZE];
+
+static uint8 ble6a20_data = 0;
+#if (1 == BLE6A20_AUTO_BAUD_RATE)
+static volatile ble6a20_auto_baudrate_state_enum ble6a20_auto_baud_flag = BLE6A20_AUTO_BAUD_RATE_INIT;
+static volatile uint8 ble6a20_auto_baud_data[3] = {0x00, 0x01, 0x03};
+#endif
+
+//-------------------------------------------------------------------------------------------------------------------
+// 函数简介 蓝牙转串口模块 发送数据
+// 参数说明 data 8bit 数据
+// 返回参数 uint32 剩余发送长度 0-发送完毕 1-未发送完成
+// 使用示例 ble6a20_send_byte(data);
+// 备注信息
+//-------------------------------------------------------------------------------------------------------------------
+uint32 ble6a20_send_byte (const uint8 data)
+{
+ uint16 time_count = BLE6A20_TIMEOUT_COUNT;
+ while(time_count)
+ {
+ if(!gpio_get_level(BLE6A20_RTS_PIN))
+ {
+ uart_write_byte(BLE6A20_INDEX, data); // 发送数据
+ break;
+ }
+ time_count --;
+ system_delay_ms(1);
+ }
+ return (0 == time_count);
+}
+
+//-------------------------------------------------------------------------------------------------------------------
+// 函数简介 蓝牙转串口模块 发送数据块
+// 参数说明 *buff 发送缓冲区
+// 参数说明 len 发送数据长度
+// 返回参数 uint32 剩余发送长度
+// 使用示例 ble6a20_send_buffer(buff, 64);
+// 备注信息
+//-------------------------------------------------------------------------------------------------------------------
+uint32 ble6a20_send_buffer (const uint8 *buff, uint32 len)
+{
+ zf_assert(NULL != buff);
+ uint16 time_count = 0;
+ while(0 != len)
+ {
+ if(!gpio_get_level(BLE6A20_RTS_PIN)) // 如果RTS为低电平 则继续发送数据
+ {
+ if(30 <= len) // 数据分 30byte 每包发送
+ {
+ uart_write_buffer(BLE6A20_INDEX, buff, 30); // 发送数据
+ buff += 30; // 地址偏移
+ len -= 30; // 数量
+ time_count = 0;
+ }
+ else // 不足 30byte 的数据一次性发送完毕
+ {
+ uart_write_buffer(BLE6A20_INDEX, buff, len); // 发送数据
+ len = 0;
+ break;
+ }
+ }
+ else // 如果RTS为高电平 则模块忙
+ {
+ if(BLE6A20_TIMEOUT_COUNT <= (++ time_count)) // 超出了最大等待时间
+ {
+ break; // 退出发送
+ }
+ system_delay_ms(1);
+ }
+ }
+ return len;
+}
+
+//-------------------------------------------------------------------------------------------------------------------
+// 函数简介 蓝牙转串口模块 发送字符串
+// 参数说明 *str 要发送的字符串地址
+// 返回参数 uint32 剩余发送长度
+// 使用示例 ble6a20_send_string("Believe in yourself.");
+// 备注信息
+//-------------------------------------------------------------------------------------------------------------------
+uint32 ble6a20_send_string (const char *str)
+{
+ zf_assert(NULL != str);
+ uint16 time_count = 0;
+ uint32 len = strlen(str);
+ while(0 != len)
+ {
+ if(!gpio_get_level(BLE6A20_RTS_PIN)) // 如果RTS为低电平 则继续发送数据
+ {
+ if(128 <= len) // 数据分 128byte 每包发送
+ {
+ uart_write_buffer(BLE6A20_INDEX, (const uint8 *)str, 128); // 发送数据
+ str += 128; // 地址偏移
+ len -= 128; // 数量
+ time_count = 0;
+ }
+ else // 不足 128byte 的数据一次性发送完毕
+ {
+ uart_write_buffer(BLE6A20_INDEX, (const uint8 *)str, len);// 发送数据
+ len = 0;
+ break;
+ }
+ }
+ else // 如果RTS为高电平 则模块忙
+ {
+ if(BLE6A20_TIMEOUT_COUNT <= (++ time_count)) // 超出了最大等待时间
+ {
+ break; // 退出发送
+ }
+ system_delay_ms(1);
+ }
+ }
+ return len;
+}
+
+//-------------------------------------------------------------------------------------------------------------------
+// 函数简介 蓝牙转串口模块 发送摄像头图像至上位机查看图像
+// 参数说明 *image_addr 需要发送的图像地址
+// 参数说明 image_size 图像的大小
+// 返回参数 void
+// 使用示例 ble6a20_send_image(&mt9v03x_image[0][0], MT9V03X_IMAGE_SIZE);
+// 备注信息
+//-------------------------------------------------------------------------------------------------------------------
+void ble6a20_send_image (const uint8 *image_addr, uint32 image_size)
+{
+ zf_assert(NULL != image_addr);
+ extern uint8 camera_send_image_frame_header[4];
+ ble6a20_send_buffer(camera_send_image_frame_header, 4);
+ ble6a20_send_buffer((uint8 *)image_addr, image_size);
+}
+
+//-------------------------------------------------------------------------------------------------------------------
+// 函数简介 蓝牙转串口模块 读取缓冲区数据
+// 参数说明 *buff 接收缓冲区
+// 参数说明 len 读取数据长度
+// 返回参数 uint32 实际读取数据长度
+// 使用示例 ble6a20_read_buffer(buff, 32);
+// 备注信息
+//-------------------------------------------------------------------------------------------------------------------
+uint32 ble6a20_read_buffer (uint8 *buff, uint32 len)
+{
+ zf_assert(NULL != buff);
+ uint32 data_len = len;
+ fifo_read_buffer(&ble6a20_fifo, buff, &data_len, FIFO_READ_AND_CLEAN);
+ return data_len;
+}
+
+//-------------------------------------------------------------------------------------------------------------------
+// 函数简介 蓝牙转串口模块 串口中断回调函数
+// 参数说明 void
+// 返回参数 void
+// 使用示例 ble6a20_callback();
+// 备注信息 该函数在 ISR 文件 串口中断程序被调用
+// 由串口中断服务函数调用 wireless_module_uart_handler() 函数
+// 再由 wireless_module_uart_handler() 函数调用本函数
+//-------------------------------------------------------------------------------------------------------------------
+void ble6a20_callback (void)
+{
+ if(uart_query_byte(BLE6A20_INDEX, &ble6a20_data))
+ {
+ fifo_write_buffer(&ble6a20_fifo, &ble6a20_data, 1);
+#if BLE6A20_AUTO_BAUD_RATE // 开启自动波特率
+ if(BLE6A20_AUTO_BAUD_RATE_START == ble6a20_auto_baud_flag && 3 == fifo_used(&ble6a20_fifo))
+ {
+ uint32 ble6a20_auto_baud_count = 3;
+ ble6a20_auto_baud_flag = BLE6A20_AUTO_BAUD_RATE_GET_ACK;
+ fifo_read_buffer(&ble6a20_fifo, (uint8 *)ble6a20_auto_baud_data, (uint32 *)&ble6a20_auto_baud_count, FIFO_READ_AND_CLEAN);
+ }
+#endif
+ }
+}
+
+//-------------------------------------------------------------------------------------------------------------------
+// 函数简介 蓝牙转串口模块 初始化
+// 参数说明 void
+// 返回参数 void
+// 使用示例 ble6a20_init();
+// 备注信息
+//-------------------------------------------------------------------------------------------------------------------
+uint8 ble6a20_init (void)
+{
+ uint8 return_state = 0;
+
+ // 等待模块初始化
+ system_delay_ms(50);
+
+ set_wireless_type(BLE6A20, ble6a20_callback);
+
+ fifo_init(&ble6a20_fifo, FIFO_DATA_8BIT, ble6a20_buffer, BLE6A20_BUFFER_SIZE);
+ gpio_init(BLE6A20_RTS_PIN, GPI, GPIO_HIGH, GPI_PULL_UP);
+#if(0 == BLE6A20_AUTO_BAUD_RATE) // 关闭自动波特率
+ // 本函数使用的波特率为115200 为蓝牙转串口模块的默认波特率 如需其他波特率请自行配置模块并修改串口的波特率
+ uart_init (BLE6A20_INDEX, BLE6A20_BUAD_RATE, BLE6A20_RX_PIN, BLE6A20_TX_PIN); // 初始化串口
+ uart_rx_interrupt(BLE6A20_INDEX, 1);
+#elif(1 == BLE6A20_AUTO_BAUD_RATE) // 开启自动波特率
+ uint8 rts_init_status = 0;
+
+ ble6a20_auto_baud_flag = BLE6A20_AUTO_BAUD_RATE_INIT;
+ ble6a20_auto_baud_data[0] = 0;
+ ble6a20_auto_baud_data[1] = 1;
+ ble6a20_auto_baud_data[2] = 3;
+
+ rts_init_status = gpio_get_level(BLE6A20_RTS_PIN);
+ gpio_init(BLE6A20_RTS_PIN, GPO, rts_init_status, GPO_PUSH_PULL); // 初始化流控引脚
+
+ uart_init (BLE6A20_INDEX, BLE6A20_BUAD_RATE, BLE6A20_RX_PIN, BLE6A20_TX_PIN); // 初始化串口
+ uart_rx_interrupt(BLE6A20_INDEX, 1);
+
+ system_delay_ms(5); // 模块上电之后需要延时等待
+ gpio_set_level(BLE6A20_RTS_PIN, !rts_init_status); // RTS引脚拉高,进入自动波特率模式
+ system_delay_ms(100); // RTS拉高之后必须延时20ms
+ gpio_toggle_level(BLE6A20_RTS_PIN); // RTS引脚取反
+
+ do
+ {
+ ble6a20_auto_baud_flag = BLE6A20_AUTO_BAUD_RATE_START;
+ uart_write_byte(BLE6A20_INDEX, ble6a20_auto_baud_data[0]); // 发送特定数据 用于模块自动判断波特率
+ uart_write_byte(BLE6A20_INDEX, ble6a20_auto_baud_data[1]); // 发送特定数据 用于模块自动判断波特率
+ uart_write_byte(BLE6A20_INDEX, ble6a20_auto_baud_data[2]); // 发送特定数据 用于模块自动判断波特率
+ system_delay_ms(20);
+
+ if(BLE6A20_AUTO_BAUD_RATE_GET_ACK != ble6a20_auto_baud_flag) // 检验自动波特率是否完成
+ {
+ return_state = 1; // 如果程序进入到此语句内 说明自动波特率失败了
+ break;
+ }
+
+ if( 0xa5 != ble6a20_auto_baud_data[0] && // 检验自动波特率是否正确
+ 0xff != ble6a20_auto_baud_data[1] && // 检验自动波特率是否正确
+ 0xff != ble6a20_auto_baud_data[2] ) // 检验自动波特率是否正确
+ {
+ return_state = 1; // 如果程序进入到此语句内 说明自动波特率失败了
+ break;
+ }
+ ble6a20_auto_baud_flag = BLE6A20_AUTO_BAUD_RATE_SUCCESS;
+
+ gpio_init(BLE6A20_RTS_PIN, GPI, 0, GPI_PULL_UP); // 初始化流控引脚
+ system_delay_ms(10); // 延时等待 模块准备就绪
+ }while(0);
+#endif
+ return return_state;
+}
diff --git a/Example/E04_pwm_demo/libraries/zf_device/zf_device_ble6a20.h b/Example/E04_pwm_demo/libraries/zf_device/zf_device_ble6a20.h
new file mode 100644
index 0000000..c037ea2
--- /dev/null
+++ b/Example/E04_pwm_demo/libraries/zf_device/zf_device_ble6a20.h
@@ -0,0 +1,108 @@
+/*********************************************************************************************************************
+* TC264 Opensourec Library 即(TC264 开源库)是一个基于官方 SDK 接口的第三方开源库
+* Copyright (c) 2022 SEEKFREE 逐飞科技
+*
+* 本文件是 TC264 开源库的一部分
+*
+* TC264 开源库 是免费软件
+* 您可以根据自由软件基金会发布的 GPL(GNU General Public License,即 GNU通用公共许可证)的条款
+* 即 GPL 的第3版(即 GPL3.0)或(您选择的)任何后来的版本,重新发布和/或修改它
+*
+* 本开源库的发布是希望它能发挥作用,但并未对其作任何的保证
+* 甚至没有隐含的适销性或适合特定用途的保证
+* 更多细节请参见 GPL
+*
+* 您应该在收到本开源库的同时收到一份 GPL 的副本
+* 如果没有,请参阅
+*
+* 额外注明:
+* 本开源库使用 GPL3.0 开源许可证协议 以上许可申明为译文版本
+* 许可申明英文版在 libraries/doc 文件夹下的 GPL3_permission_statement.txt 文件中
+* 许可证副本在 libraries 文件夹下 即该文件夹下的 LICENSE 文件
+* 欢迎各位使用并传播本程序 但修改内容时必须保留逐飞科技的版权声明(即本声明)
+*
+* 文件名称 zf_device_ble6a20.h
+* 公司名称 成都逐飞科技有限公司
+* 版本信息 查看 libraries/doc 文件夹内 version 文件 版本说明
+* 开发环境 ADS v1.9.20
+* 适用平台 TC264D
+* 店铺链接 https://seekfree.taobao.com/
+*
+* 修改记录
+* 日期 作者 备注
+* 2024-07-02 pudding first version
+********************************************************************************************************************/
+/*********************************************************************************************************************
+* 接线定义:
+* ------------------------------------
+* 模块管脚 单片机管脚
+* RX 查看 zf_device_ble6a20.h 中 BLE6A20_RX_PIN 宏定义
+* TX 查看 zf_device_ble6a20.h 中 BLE6A20_TX_PIN 宏定义
+* RTS 查看 zf_device_ble6a20.h 中 BLE6A20_RTS_PIN 宏定义
+* VCC 3.3V电源
+* GND 电源地
+* 其余引脚悬空
+* ------------------------------------
+*********************************************************************************************************************/
+
+
+#ifndef _zf_device_ble6a20_h_
+#define _zf_device_ble6a20_h_
+
+#include "zf_common_typedef.h"
+
+
+//=================================================定义 蓝牙串口 基本配置================================================
+
+#define BLE6A20_INDEX (UART_2) // 蓝牙串口对应使用的串口号
+#define BLE6A20_BUAD_RATE (115200) // 蓝牙串口对应使用的串口波特率
+ // 波特率仅支持 9600 57600 115200 230400 460800 921600 1500000 2000000
+#define BLE6A20_TX_PIN (UART2_RX_P10_6) // 蓝牙串口对应模块的 TX 要接到单片机的 RX
+#define BLE6A20_RX_PIN (UART2_TX_P10_5) // 蓝牙串口对应模块的 RX 要接到单片机的 TX
+#define BLE6A20_RTS_PIN (P10_2) // 蓝牙串口对应模块的 RTS 引脚
+
+#define BLE6A20_BUFFER_SIZE ( 64 ) // 蓝牙串口缓冲区大小
+#define BLE6A20_TIMEOUT_COUNT ( 0x64 ) // 蓝牙串口通讯超时范围
+
+// ------------------------------------ 自动波特率 ------------------------------------
+// 注意事项1:开启自动波特率务必连接RTS引脚 否则会开启失败。
+// 注意事项2:模块自动波特率失败的话 可以尝试断电重启
+
+// 开启自动波特率务必阅读上面两条 注意事项
+// 开启自动波特率务必阅读上面两条 注意事项
+// 开启自动波特率务必阅读上面两条 注意事项
+
+// 0:关闭自动波特率
+// 1:开启自动波特率 自动波特率的作用是修改 BLE6A20_BAUD 之后不需要对模块进行配置 模块会自动设置为对应的波特率
+// 自动波特率仅支持 9600 57600 115200 230400 460800 921600 1500000 2000000
+
+#define BLE6A20_AUTO_BAUD_RATE ( 0 )
+
+#if (1 == BLE6A20_AUTO_BAUD_RATE)
+typedef enum
+{
+ BLE6A20_AUTO_BAUD_RATE_SUCCESS,
+ BLE6A20_AUTO_BAUD_RATE_INIT,
+ BLE6A20_AUTO_BAUD_RATE_START,
+ BLE6A20_AUTO_BAUD_RATE_GET_ACK,
+}ble6a20_auto_baudrate_state_enum;
+#endif
+// ------------------------------------ 自动波特率 ------------------------------------
+
+//=================================================定义 蓝牙串口 基本配置================================================
+
+
+//=================================================声明 蓝牙串口 基础函数================================================
+uint32 ble6a20_send_byte (const uint8 data); // 蓝牙转串口模块 发送数据
+uint32 ble6a20_send_buffer (const uint8 *buff, uint32 len); // 蓝牙转串口模块 发送数据块
+uint32 ble6a20_send_string (const char *str); // 蓝牙转串口模块 发送字符串
+void ble6a20_send_image (const uint8 *image_addr, uint32 image_size); // 蓝牙转串口模块 发送摄像头图像至上位机查看图像
+
+uint32 ble6a20_read_buffer (uint8 *buff, uint32 len); // 蓝牙转串口模块 读取缓冲区数据
+
+void ble6a20_callback (void); // 蓝牙转串口模块 串口中断回调函数
+
+uint8 ble6a20_init (void); // 蓝牙转串口模块 初始化
+//=================================================声明 蓝牙串口 基础函数================================================
+
+#endif
diff --git a/Example/E04_pwm_demo/libraries/zf_device/zf_device_type.h b/Example/E04_pwm_demo/libraries/zf_device/zf_device_type.h
index 6c2b8da..4f8ec53 100644
--- a/Example/E04_pwm_demo/libraries/zf_device/zf_device_type.h
+++ b/Example/E04_pwm_demo/libraries/zf_device/zf_device_type.h
@@ -54,6 +54,7 @@ typedef enum
{
NO_WIRELESS = 0, // 无设备
WIRELESS_UART, // 无线串口
+ BLE6A20, // 蓝牙串口
BLUETOOTH_CH9141, // 蓝牙 CH9141
WIFI_UART, // 串口 WiFi
RECEIVER_UART, // 枪式遥控器
diff --git a/Example/E04_pwm_demo/libraries/zf_device/澶栬鏂囦欢璇存槑.txt b/Example/E04_pwm_demo/libraries/zf_device/澶栬鏂囦欢璇存槑.txt
new file mode 100644
index 0000000..1c96965
--- /dev/null
+++ b/Example/E04_pwm_demo/libraries/zf_device/澶栬鏂囦欢璇存槑.txt
@@ -0,0 +1,97 @@
+
+如需获取详细资料可联系淘宝店铺客服:https://seekfree.taobao.com/
+如需获取详细资料可联系淘宝店铺客服:https://seekfree.taobao.com/
+如需获取详细资料可联系淘宝店铺客服:https://seekfree.taobao.com/
+
+本文件主要用于说明 zf_device 目录下各个文件所对应的外设模块
+本文件主要用于说明 zf_device 目录下各个文件所对应的外设模块
+本文件主要用于说明 zf_device 目录下各个文件所对应的外设模块
+
+
+=================================================== 测距模块 ===================================================
+
+zf_device_dl1a.h TOF 测距模块 DL1A 频率:33hz 最大距离:1.2 米
+
+zf_device_dl1b.h TOF 测距模块 DL1B 频率:100hz 最大距离:1.4 米
+
+=================================================== 测距模块 ===================================================
+
+
+
+==================================================== 陀螺仪 ====================================================
+
+zf_device_mpu6050.h MPU6050 六轴陀螺仪 传统 IIC 通讯
+
+zf_device_icm20602.h ICM20602 六轴陀螺仪 支持 SPI 采值
+
+zf_device_imu660ra.h IMU660RA 六轴陀螺仪 高精度陀螺仪
+
+zf_device_imu963ra.h IMU963RA 九轴陀螺仪 支持地磁计采集
+
+==================================================== 陀螺仪 ====================================================
+
+
+
+=================================================== 屏幕显示 ===================================================
+
+zf_device_ips114.h IPS114 液晶屏幕 1.14 寸 分辨率:240 * 135
+
+zf_device_ips200.h IPS200 液晶屏幕 2.0 寸 分辨率:240 * 320
+
+zf_device_tft180.h TFT180 屏幕 1.8寸 分辨率:160 * 128
+
+zf_device_oled.h OLED 液晶屏幕 0.96 寸 分辨率:128 * 64
+
+=================================================== 屏幕显示 ===================================================
+
+
+
+================================================== 图像传感器 ==================================================
+
+zf_device_mt9v03x.h MT9V03X 总钻风灰度摄像头
+
+zf_device_ov7725.h OV7725 小钻风硬件二值化摄像头
+
+zf_device_scc8660.h SCC8660 凌瞳彩色摄像头
+
+zf_device_tsl1401.h TSL1401 红孩儿线阵CCD
+
+================================================== 图像传感器 ==================================================
+
+
+
+=================================================== 无线通讯 ===================================================
+
+zf_device_ble6a20.h 蓝牙串口模块 无线通讯
+
+zf_device_bluetooth_ch9141.h CH9141 蓝牙通讯模块 蓝牙组网通讯
+
+zf_device_wifi_spi.h WIFI-SPI 高速WIFI无线通讯模块
+
+zf_device_wifi_uart.h WIFI-UART 串口WIFI无线通讯模块
+
+zf_device_wireless_uart.h 无线串口模块
+
+=================================================== 无线通讯 ===================================================
+
+
+
+=================================================== 远程遥控 ===================================================
+
+zf_device_uart_receiver.h SUBS 串口遥控器 串口通讯 长距离遥控 2.4G频段
+
+=================================================== 远程遥控 ===================================================
+
+
+
+================================================== 其他传感器 ==================================================
+
+zf_device_absolute_encoder.h 360° 位置传感器 绝对式迷你 mini 编码器 分辨率:0.088°
+
+zf_device_gnss.h GPS 及 RTK 定位模块 双频高精度定位模块 亚米级定位
+
+zf_device_key.h GPIO 按键驱动 用于检测主板按键状态
+
+zf_device_virtual_oscilloscope.h VisualScope 虚拟示波器
+
+================================================== 其他传感器 ==================================================
\ No newline at end of file
diff --git a/Example/E05_pit_demo/libraries/doc/version.txt b/Example/E05_pit_demo/libraries/doc/version.txt
index 68afc86..c4e0d0a 100644
--- a/Example/E05_pit_demo/libraries/doc/version.txt
+++ b/Example/E05_pit_demo/libraries/doc/version.txt
@@ -1,3 +1,5 @@
+V3.3.0
+ 新增蓝牙串口通讯模块
V3.2.13
新增一个微秒延时函数 该延时函数为普通延时 非中断延时
V3.2.12
diff --git a/Example/E05_pit_demo/libraries/zf_common/zf_common_headfile.h b/Example/E05_pit_demo/libraries/zf_common/zf_common_headfile.h
index c0d833b..3a140e3 100644
--- a/Example/E05_pit_demo/libraries/zf_common/zf_common_headfile.h
+++ b/Example/E05_pit_demo/libraries/zf_common/zf_common_headfile.h
@@ -81,6 +81,7 @@
//===================================================外接设备驱动层===================================================
#include "zf_device_absolute_encoder.h"
+#include "zf_device_ble6a20.h"
#include "zf_device_bluetooth_ch9141.h"
#include "zf_device_gnss.h"
#include "zf_device_camera.h"
diff --git a/Example/E05_pit_demo/libraries/zf_components/seekfree_assistant.c b/Example/E05_pit_demo/libraries/zf_components/seekfree_assistant.c
index 0b7cb9d..af3bb96 100644
--- a/Example/E05_pit_demo/libraries/zf_components/seekfree_assistant.c
+++ b/Example/E05_pit_demo/libraries/zf_components/seekfree_assistant.c
@@ -1,20 +1,20 @@
/*********************************************************************************************************************
-* RT1064DVL6A Opensourec Library 即(RT1064DVL6A 开源库)是一个基于官方 SDK 接口的第三方开源库
+* TC264 Opensourec Library 即(TC264 开源库)是一个基于官方 SDK 接口的第三方开源库
* Copyright (c) 2022 SEEKFREE 逐飞科技
-*
-* 本文件是 RT1064DVL6A 开源库的一部分
-*
-* RT1064DVL6A 开源库 是免费软件
+*
+* 本文件是 TC264 开源库的一部分
+*
+* TC264 开源库 是免费软件
* 您可以根据自由软件基金会发布的 GPL(GNU General Public License,即 GNU通用公共许可证)的条款
* 即 GPL 的第3版(即 GPL3.0)或(您选择的)任何后来的版本,重新发布和/或修改它
-*
+*
* 本开源库的发布是希望它能发挥作用,但并未对其作任何的保证
* 甚至没有隐含的适销性或适合特定用途的保证
* 更多细节请参见 GPL
-*
+*
* 您应该在收到本开源库的同时收到一份 GPL 的副本
* 如果没有,请参阅
-*
+*
* 额外注明:
* 本开源库使用 GPL3.0 开源许可证协议 以上许可申明为译文版本
* 许可申明英文版在 libraries/doc 文件夹下的 GPL3_permission_statement.txt 文件中
@@ -24,13 +24,13 @@
* 文件名称 seekfree_assistant
* 公司名称 成都逐飞科技有限公司
* 版本信息 查看 libraries/doc 文件夹内 version 文件 版本说明
-* 开发环境 IAR 8.32.4 or MDK 5.33
-* 适用平台 RT1064DVL6A
+* 开发环境 ADS v1.9.20
+* 适用平台 TC264D
* 店铺链接 https://seekfree.taobao.com/
-*
+*
* 修改记录
-* 日期 作者 备注
-* 2024-1-11 SeekFree first version
+* 日期 作者 备注
+* 2024-01-01 pudding first version
********************************************************************************************************************/
#include "zf_common_debug.h"
diff --git a/Example/E05_pit_demo/libraries/zf_components/seekfree_assistant.h b/Example/E05_pit_demo/libraries/zf_components/seekfree_assistant.h
index ae0f67c..5e04a1d 100644
--- a/Example/E05_pit_demo/libraries/zf_components/seekfree_assistant.h
+++ b/Example/E05_pit_demo/libraries/zf_components/seekfree_assistant.h
@@ -1,20 +1,20 @@
/*********************************************************************************************************************
-* RT1064DVL6A Opensourec Library 即(RT1064DVL6A 开源库)是一个基于官方 SDK 接口的第三方开源库
+* TC264 Opensourec Library 即(TC264 开源库)是一个基于官方 SDK 接口的第三方开源库
* Copyright (c) 2022 SEEKFREE 逐飞科技
-*
-* 本文件是 RT1064DVL6A 开源库的一部分
-*
-* RT1064DVL6A 开源库 是免费软件
+*
+* 本文件是 TC264 开源库的一部分
+*
+* TC264 开源库 是免费软件
* 您可以根据自由软件基金会发布的 GPL(GNU General Public License,即 GNU通用公共许可证)的条款
* 即 GPL 的第3版(即 GPL3.0)或(您选择的)任何后来的版本,重新发布和/或修改它
-*
+*
* 本开源库的发布是希望它能发挥作用,但并未对其作任何的保证
* 甚至没有隐含的适销性或适合特定用途的保证
* 更多细节请参见 GPL
-*
+*
* 您应该在收到本开源库的同时收到一份 GPL 的副本
* 如果没有,请参阅
-*
+*
* 额外注明:
* 本开源库使用 GPL3.0 开源许可证协议 以上许可申明为译文版本
* 许可申明英文版在 libraries/doc 文件夹下的 GPL3_permission_statement.txt 文件中
@@ -24,13 +24,13 @@
* 文件名称 seekfree_assistant
* 公司名称 成都逐飞科技有限公司
* 版本信息 查看 libraries/doc 文件夹内 version 文件 版本说明
-* 开发环境 IAR 8.32.4 or MDK 5.33
-* 适用平台 RT1064DVL6A
+* 开发环境 ADS v1.9.20
+* 适用平台 TC264D
* 店铺链接 https://seekfree.taobao.com/
-*
+*
* 修改记录
-* 日期 作者 备注
-* 2024-1-11 SeekFree first version
+* 日期 作者 备注
+* 2024-01-01 pudding first version
********************************************************************************************************************/
#ifndef _seekfree_assistant_h_
#define _seekfree_assistant_h_
@@ -47,27 +47,27 @@
// 定义接收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 )
diff --git a/Example/E05_pit_demo/libraries/zf_components/seekfree_assistant_interface.c b/Example/E05_pit_demo/libraries/zf_components/seekfree_assistant_interface.c
index fdade63..cc42e43 100644
--- a/Example/E05_pit_demo/libraries/zf_components/seekfree_assistant_interface.c
+++ b/Example/E05_pit_demo/libraries/zf_components/seekfree_assistant_interface.c
@@ -1,20 +1,20 @@
/*********************************************************************************************************************
-* RT1064DVL6A Opensourec Library 即(RT1064DVL6A 开源库)是一个基于官方 SDK 接口的第三方开源库
+* TC264 Opensourec Library 即(TC264 开源库)是一个基于官方 SDK 接口的第三方开源库
* Copyright (c) 2022 SEEKFREE 逐飞科技
-*
-* 本文件是 RT1064DVL6A 开源库的一部分
-*
-* RT1064DVL6A 开源库 是免费软件
+*
+* 本文件是 TC264 开源库的一部分
+*
+* TC264 开源库 是免费软件
* 您可以根据自由软件基金会发布的 GPL(GNU General Public License,即 GNU通用公共许可证)的条款
* 即 GPL 的第3版(即 GPL3.0)或(您选择的)任何后来的版本,重新发布和/或修改它
-*
+*
* 本开源库的发布是希望它能发挥作用,但并未对其作任何的保证
* 甚至没有隐含的适销性或适合特定用途的保证
* 更多细节请参见 GPL
-*
+*
* 您应该在收到本开源库的同时收到一份 GPL 的副本
* 如果没有,请参阅
-*
+*
* 额外注明:
* 本开源库使用 GPL3.0 开源许可证协议 以上许可申明为译文版本
* 许可申明英文版在 libraries/doc 文件夹下的 GPL3_permission_statement.txt 文件中
@@ -24,13 +24,13 @@
* 文件名称 seekfree_assistant_interface
* 公司名称 成都逐飞科技有限公司
* 版本信息 查看 libraries/doc 文件夹内 version 文件 版本说明
-* 开发环境 IAR 8.32.4 or MDK 5.33
-* 适用平台 RT1064DVL6A
+* 开发环境 ADS v1.9.20
+* 适用平台 TC264D
* 店铺链接 https://seekfree.taobao.com/
-*
+*
* 修改记录
-* 日期 作者 备注
-* 2024-1-11 SeekFree first version
+* 日期 作者 备注
+* 2024-01-01 pudding first version
********************************************************************************************************************/
#include "zf_common_typedef.h"
@@ -38,6 +38,7 @@
#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"
@@ -100,6 +101,12 @@ ZF_WEAK void seekfree_assistant_interface_init (seekfree_assistant_transfer_devi
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;
diff --git a/Example/E05_pit_demo/libraries/zf_components/seekfree_assistant_interface.h b/Example/E05_pit_demo/libraries/zf_components/seekfree_assistant_interface.h
index 940b5f7..1d0158c 100644
--- a/Example/E05_pit_demo/libraries/zf_components/seekfree_assistant_interface.h
+++ b/Example/E05_pit_demo/libraries/zf_components/seekfree_assistant_interface.h
@@ -1,20 +1,20 @@
/*********************************************************************************************************************
-* RT1064DVL6A Opensourec Library 即(RT1064DVL6A 开源库)是一个基于官方 SDK 接口的第三方开源库
+* TC264 Opensourec Library 即(TC264 开源库)是一个基于官方 SDK 接口的第三方开源库
* Copyright (c) 2022 SEEKFREE 逐飞科技
-*
-* 本文件是 RT1064DVL6A 开源库的一部分
-*
-* RT1064DVL6A 开源库 是免费软件
+*
+* 本文件是 TC264 开源库的一部分
+*
+* TC264 开源库 是免费软件
* 您可以根据自由软件基金会发布的 GPL(GNU General Public License,即 GNU通用公共许可证)的条款
* 即 GPL 的第3版(即 GPL3.0)或(您选择的)任何后来的版本,重新发布和/或修改它
-*
+*
* 本开源库的发布是希望它能发挥作用,但并未对其作任何的保证
* 甚至没有隐含的适销性或适合特定用途的保证
* 更多细节请参见 GPL
-*
+*
* 您应该在收到本开源库的同时收到一份 GPL 的副本
* 如果没有,请参阅
-*
+*
* 额外注明:
* 本开源库使用 GPL3.0 开源许可证协议 以上许可申明为译文版本
* 许可申明英文版在 libraries/doc 文件夹下的 GPL3_permission_statement.txt 文件中
@@ -24,13 +24,13 @@
* 文件名称 seekfree_assistant_interface
* 公司名称 成都逐飞科技有限公司
* 版本信息 查看 libraries/doc 文件夹内 version 文件 版本说明
-* 开发环境 IAR 8.32.4 or MDK 5.33
-* 适用平台 RT1064DVL6A
+* 开发环境 ADS v1.9.20
+* 适用平台 TC264D
* 店铺链接 https://seekfree.taobao.com/
-*
+*
* 修改记录
-* 日期 作者 备注
-* 2024-1-11 SeekFree first version
+* 日期 作者 备注
+* 2024-01-01 pudding first version
********************************************************************************************************************/
#ifndef _seekfree_assistant_interface_h_
@@ -43,6 +43,7 @@ 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
diff --git a/Example/E05_pit_demo/libraries/zf_device/zf_device_ble6a20.c b/Example/E05_pit_demo/libraries/zf_device/zf_device_ble6a20.c
new file mode 100644
index 0000000..ea8649e
--- /dev/null
+++ b/Example/E05_pit_demo/libraries/zf_device/zf_device_ble6a20.c
@@ -0,0 +1,299 @@
+/*********************************************************************************************************************
+* TC264 Opensourec Library 即(TC264 开源库)是一个基于官方 SDK 接口的第三方开源库
+* Copyright (c) 2022 SEEKFREE 逐飞科技
+*
+* 本文件是 TC264 开源库的一部分
+*
+* TC264 开源库 是免费软件
+* 您可以根据自由软件基金会发布的 GPL(GNU General Public License,即 GNU通用公共许可证)的条款
+* 即 GPL 的第3版(即 GPL3.0)或(您选择的)任何后来的版本,重新发布和/或修改它
+*
+* 本开源库的发布是希望它能发挥作用,但并未对其作任何的保证
+* 甚至没有隐含的适销性或适合特定用途的保证
+* 更多细节请参见 GPL
+*
+* 您应该在收到本开源库的同时收到一份 GPL 的副本
+* 如果没有,请参阅
+*
+* 额外注明:
+* 本开源库使用 GPL3.0 开源许可证协议 以上许可申明为译文版本
+* 许可申明英文版在 libraries/doc 文件夹下的 GPL3_permission_statement.txt 文件中
+* 许可证副本在 libraries 文件夹下 即该文件夹下的 LICENSE 文件
+* 欢迎各位使用并传播本程序 但修改内容时必须保留逐飞科技的版权声明(即本声明)
+*
+* 文件名称 zf_device_ble6a20
+* 公司名称 成都逐飞科技有限公司
+* 版本信息 查看 libraries/doc 文件夹内 version 文件 版本说明
+* 开发环境 ADS v1.9.20
+* 适用平台 TC264D
+* 店铺链接 https://seekfree.taobao.com/
+*
+* 修改记录
+* 日期 作者 备注
+* 2024-07-02 pudding first version
+********************************************************************************************************************/
+/*********************************************************************************************************************
+* 接线定义:
+* ------------------------------------
+* 模块管脚 单片机管脚
+* RX 查看 zf_device_ble6a20.h 中 BLE6A20_RX_PIN 宏定义
+* TX 查看 zf_device_ble6a20.h 中 BLE6A20_TX_PIN 宏定义
+* RTS 查看 zf_device_ble6a20.h 中 BLE6A20_RTS_PIN 宏定义
+* VCC 3.3V电源
+* GND 电源地
+* 其余引脚悬空
+* ------------------------------------
+*********************************************************************************************************************/
+
+#include "zf_common_clock.h"
+#include "zf_common_debug.h"
+#include "zf_common_fifo.h"
+#include "zf_driver_delay.h"
+#include "zf_driver_gpio.h"
+#include "zf_driver_uart.h"
+#include "zf_device_type.h"
+#include "zf_device_ble6a20.h"
+
+static fifo_struct ble6a20_fifo;
+static uint8 ble6a20_buffer[BLE6A20_BUFFER_SIZE];
+
+static uint8 ble6a20_data = 0;
+#if (1 == BLE6A20_AUTO_BAUD_RATE)
+static volatile ble6a20_auto_baudrate_state_enum ble6a20_auto_baud_flag = BLE6A20_AUTO_BAUD_RATE_INIT;
+static volatile uint8 ble6a20_auto_baud_data[3] = {0x00, 0x01, 0x03};
+#endif
+
+//-------------------------------------------------------------------------------------------------------------------
+// 函数简介 蓝牙转串口模块 发送数据
+// 参数说明 data 8bit 数据
+// 返回参数 uint32 剩余发送长度 0-发送完毕 1-未发送完成
+// 使用示例 ble6a20_send_byte(data);
+// 备注信息
+//-------------------------------------------------------------------------------------------------------------------
+uint32 ble6a20_send_byte (const uint8 data)
+{
+ uint16 time_count = BLE6A20_TIMEOUT_COUNT;
+ while(time_count)
+ {
+ if(!gpio_get_level(BLE6A20_RTS_PIN))
+ {
+ uart_write_byte(BLE6A20_INDEX, data); // 发送数据
+ break;
+ }
+ time_count --;
+ system_delay_ms(1);
+ }
+ return (0 == time_count);
+}
+
+//-------------------------------------------------------------------------------------------------------------------
+// 函数简介 蓝牙转串口模块 发送数据块
+// 参数说明 *buff 发送缓冲区
+// 参数说明 len 发送数据长度
+// 返回参数 uint32 剩余发送长度
+// 使用示例 ble6a20_send_buffer(buff, 64);
+// 备注信息
+//-------------------------------------------------------------------------------------------------------------------
+uint32 ble6a20_send_buffer (const uint8 *buff, uint32 len)
+{
+ zf_assert(NULL != buff);
+ uint16 time_count = 0;
+ while(0 != len)
+ {
+ if(!gpio_get_level(BLE6A20_RTS_PIN)) // 如果RTS为低电平 则继续发送数据
+ {
+ if(30 <= len) // 数据分 30byte 每包发送
+ {
+ uart_write_buffer(BLE6A20_INDEX, buff, 30); // 发送数据
+ buff += 30; // 地址偏移
+ len -= 30; // 数量
+ time_count = 0;
+ }
+ else // 不足 30byte 的数据一次性发送完毕
+ {
+ uart_write_buffer(BLE6A20_INDEX, buff, len); // 发送数据
+ len = 0;
+ break;
+ }
+ }
+ else // 如果RTS为高电平 则模块忙
+ {
+ if(BLE6A20_TIMEOUT_COUNT <= (++ time_count)) // 超出了最大等待时间
+ {
+ break; // 退出发送
+ }
+ system_delay_ms(1);
+ }
+ }
+ return len;
+}
+
+//-------------------------------------------------------------------------------------------------------------------
+// 函数简介 蓝牙转串口模块 发送字符串
+// 参数说明 *str 要发送的字符串地址
+// 返回参数 uint32 剩余发送长度
+// 使用示例 ble6a20_send_string("Believe in yourself.");
+// 备注信息
+//-------------------------------------------------------------------------------------------------------------------
+uint32 ble6a20_send_string (const char *str)
+{
+ zf_assert(NULL != str);
+ uint16 time_count = 0;
+ uint32 len = strlen(str);
+ while(0 != len)
+ {
+ if(!gpio_get_level(BLE6A20_RTS_PIN)) // 如果RTS为低电平 则继续发送数据
+ {
+ if(128 <= len) // 数据分 128byte 每包发送
+ {
+ uart_write_buffer(BLE6A20_INDEX, (const uint8 *)str, 128); // 发送数据
+ str += 128; // 地址偏移
+ len -= 128; // 数量
+ time_count = 0;
+ }
+ else // 不足 128byte 的数据一次性发送完毕
+ {
+ uart_write_buffer(BLE6A20_INDEX, (const uint8 *)str, len);// 发送数据
+ len = 0;
+ break;
+ }
+ }
+ else // 如果RTS为高电平 则模块忙
+ {
+ if(BLE6A20_TIMEOUT_COUNT <= (++ time_count)) // 超出了最大等待时间
+ {
+ break; // 退出发送
+ }
+ system_delay_ms(1);
+ }
+ }
+ return len;
+}
+
+//-------------------------------------------------------------------------------------------------------------------
+// 函数简介 蓝牙转串口模块 发送摄像头图像至上位机查看图像
+// 参数说明 *image_addr 需要发送的图像地址
+// 参数说明 image_size 图像的大小
+// 返回参数 void
+// 使用示例 ble6a20_send_image(&mt9v03x_image[0][0], MT9V03X_IMAGE_SIZE);
+// 备注信息
+//-------------------------------------------------------------------------------------------------------------------
+void ble6a20_send_image (const uint8 *image_addr, uint32 image_size)
+{
+ zf_assert(NULL != image_addr);
+ extern uint8 camera_send_image_frame_header[4];
+ ble6a20_send_buffer(camera_send_image_frame_header, 4);
+ ble6a20_send_buffer((uint8 *)image_addr, image_size);
+}
+
+//-------------------------------------------------------------------------------------------------------------------
+// 函数简介 蓝牙转串口模块 读取缓冲区数据
+// 参数说明 *buff 接收缓冲区
+// 参数说明 len 读取数据长度
+// 返回参数 uint32 实际读取数据长度
+// 使用示例 ble6a20_read_buffer(buff, 32);
+// 备注信息
+//-------------------------------------------------------------------------------------------------------------------
+uint32 ble6a20_read_buffer (uint8 *buff, uint32 len)
+{
+ zf_assert(NULL != buff);
+ uint32 data_len = len;
+ fifo_read_buffer(&ble6a20_fifo, buff, &data_len, FIFO_READ_AND_CLEAN);
+ return data_len;
+}
+
+//-------------------------------------------------------------------------------------------------------------------
+// 函数简介 蓝牙转串口模块 串口中断回调函数
+// 参数说明 void
+// 返回参数 void
+// 使用示例 ble6a20_callback();
+// 备注信息 该函数在 ISR 文件 串口中断程序被调用
+// 由串口中断服务函数调用 wireless_module_uart_handler() 函数
+// 再由 wireless_module_uart_handler() 函数调用本函数
+//-------------------------------------------------------------------------------------------------------------------
+void ble6a20_callback (void)
+{
+ if(uart_query_byte(BLE6A20_INDEX, &ble6a20_data))
+ {
+ fifo_write_buffer(&ble6a20_fifo, &ble6a20_data, 1);
+#if BLE6A20_AUTO_BAUD_RATE // 开启自动波特率
+ if(BLE6A20_AUTO_BAUD_RATE_START == ble6a20_auto_baud_flag && 3 == fifo_used(&ble6a20_fifo))
+ {
+ uint32 ble6a20_auto_baud_count = 3;
+ ble6a20_auto_baud_flag = BLE6A20_AUTO_BAUD_RATE_GET_ACK;
+ fifo_read_buffer(&ble6a20_fifo, (uint8 *)ble6a20_auto_baud_data, (uint32 *)&ble6a20_auto_baud_count, FIFO_READ_AND_CLEAN);
+ }
+#endif
+ }
+}
+
+//-------------------------------------------------------------------------------------------------------------------
+// 函数简介 蓝牙转串口模块 初始化
+// 参数说明 void
+// 返回参数 void
+// 使用示例 ble6a20_init();
+// 备注信息
+//-------------------------------------------------------------------------------------------------------------------
+uint8 ble6a20_init (void)
+{
+ uint8 return_state = 0;
+
+ // 等待模块初始化
+ system_delay_ms(50);
+
+ set_wireless_type(BLE6A20, ble6a20_callback);
+
+ fifo_init(&ble6a20_fifo, FIFO_DATA_8BIT, ble6a20_buffer, BLE6A20_BUFFER_SIZE);
+ gpio_init(BLE6A20_RTS_PIN, GPI, GPIO_HIGH, GPI_PULL_UP);
+#if(0 == BLE6A20_AUTO_BAUD_RATE) // 关闭自动波特率
+ // 本函数使用的波特率为115200 为蓝牙转串口模块的默认波特率 如需其他波特率请自行配置模块并修改串口的波特率
+ uart_init (BLE6A20_INDEX, BLE6A20_BUAD_RATE, BLE6A20_RX_PIN, BLE6A20_TX_PIN); // 初始化串口
+ uart_rx_interrupt(BLE6A20_INDEX, 1);
+#elif(1 == BLE6A20_AUTO_BAUD_RATE) // 开启自动波特率
+ uint8 rts_init_status = 0;
+
+ ble6a20_auto_baud_flag = BLE6A20_AUTO_BAUD_RATE_INIT;
+ ble6a20_auto_baud_data[0] = 0;
+ ble6a20_auto_baud_data[1] = 1;
+ ble6a20_auto_baud_data[2] = 3;
+
+ rts_init_status = gpio_get_level(BLE6A20_RTS_PIN);
+ gpio_init(BLE6A20_RTS_PIN, GPO, rts_init_status, GPO_PUSH_PULL); // 初始化流控引脚
+
+ uart_init (BLE6A20_INDEX, BLE6A20_BUAD_RATE, BLE6A20_RX_PIN, BLE6A20_TX_PIN); // 初始化串口
+ uart_rx_interrupt(BLE6A20_INDEX, 1);
+
+ system_delay_ms(5); // 模块上电之后需要延时等待
+ gpio_set_level(BLE6A20_RTS_PIN, !rts_init_status); // RTS引脚拉高,进入自动波特率模式
+ system_delay_ms(100); // RTS拉高之后必须延时20ms
+ gpio_toggle_level(BLE6A20_RTS_PIN); // RTS引脚取反
+
+ do
+ {
+ ble6a20_auto_baud_flag = BLE6A20_AUTO_BAUD_RATE_START;
+ uart_write_byte(BLE6A20_INDEX, ble6a20_auto_baud_data[0]); // 发送特定数据 用于模块自动判断波特率
+ uart_write_byte(BLE6A20_INDEX, ble6a20_auto_baud_data[1]); // 发送特定数据 用于模块自动判断波特率
+ uart_write_byte(BLE6A20_INDEX, ble6a20_auto_baud_data[2]); // 发送特定数据 用于模块自动判断波特率
+ system_delay_ms(20);
+
+ if(BLE6A20_AUTO_BAUD_RATE_GET_ACK != ble6a20_auto_baud_flag) // 检验自动波特率是否完成
+ {
+ return_state = 1; // 如果程序进入到此语句内 说明自动波特率失败了
+ break;
+ }
+
+ if( 0xa5 != ble6a20_auto_baud_data[0] && // 检验自动波特率是否正确
+ 0xff != ble6a20_auto_baud_data[1] && // 检验自动波特率是否正确
+ 0xff != ble6a20_auto_baud_data[2] ) // 检验自动波特率是否正确
+ {
+ return_state = 1; // 如果程序进入到此语句内 说明自动波特率失败了
+ break;
+ }
+ ble6a20_auto_baud_flag = BLE6A20_AUTO_BAUD_RATE_SUCCESS;
+
+ gpio_init(BLE6A20_RTS_PIN, GPI, 0, GPI_PULL_UP); // 初始化流控引脚
+ system_delay_ms(10); // 延时等待 模块准备就绪
+ }while(0);
+#endif
+ return return_state;
+}
diff --git a/Example/E05_pit_demo/libraries/zf_device/zf_device_ble6a20.h b/Example/E05_pit_demo/libraries/zf_device/zf_device_ble6a20.h
new file mode 100644
index 0000000..c037ea2
--- /dev/null
+++ b/Example/E05_pit_demo/libraries/zf_device/zf_device_ble6a20.h
@@ -0,0 +1,108 @@
+/*********************************************************************************************************************
+* TC264 Opensourec Library 即(TC264 开源库)是一个基于官方 SDK 接口的第三方开源库
+* Copyright (c) 2022 SEEKFREE 逐飞科技
+*
+* 本文件是 TC264 开源库的一部分
+*
+* TC264 开源库 是免费软件
+* 您可以根据自由软件基金会发布的 GPL(GNU General Public License,即 GNU通用公共许可证)的条款
+* 即 GPL 的第3版(即 GPL3.0)或(您选择的)任何后来的版本,重新发布和/或修改它
+*
+* 本开源库的发布是希望它能发挥作用,但并未对其作任何的保证
+* 甚至没有隐含的适销性或适合特定用途的保证
+* 更多细节请参见 GPL
+*
+* 您应该在收到本开源库的同时收到一份 GPL 的副本
+* 如果没有,请参阅
+*
+* 额外注明:
+* 本开源库使用 GPL3.0 开源许可证协议 以上许可申明为译文版本
+* 许可申明英文版在 libraries/doc 文件夹下的 GPL3_permission_statement.txt 文件中
+* 许可证副本在 libraries 文件夹下 即该文件夹下的 LICENSE 文件
+* 欢迎各位使用并传播本程序 但修改内容时必须保留逐飞科技的版权声明(即本声明)
+*
+* 文件名称 zf_device_ble6a20.h
+* 公司名称 成都逐飞科技有限公司
+* 版本信息 查看 libraries/doc 文件夹内 version 文件 版本说明
+* 开发环境 ADS v1.9.20
+* 适用平台 TC264D
+* 店铺链接 https://seekfree.taobao.com/
+*
+* 修改记录
+* 日期 作者 备注
+* 2024-07-02 pudding first version
+********************************************************************************************************************/
+/*********************************************************************************************************************
+* 接线定义:
+* ------------------------------------
+* 模块管脚 单片机管脚
+* RX 查看 zf_device_ble6a20.h 中 BLE6A20_RX_PIN 宏定义
+* TX 查看 zf_device_ble6a20.h 中 BLE6A20_TX_PIN 宏定义
+* RTS 查看 zf_device_ble6a20.h 中 BLE6A20_RTS_PIN 宏定义
+* VCC 3.3V电源
+* GND 电源地
+* 其余引脚悬空
+* ------------------------------------
+*********************************************************************************************************************/
+
+
+#ifndef _zf_device_ble6a20_h_
+#define _zf_device_ble6a20_h_
+
+#include "zf_common_typedef.h"
+
+
+//=================================================定义 蓝牙串口 基本配置================================================
+
+#define BLE6A20_INDEX (UART_2) // 蓝牙串口对应使用的串口号
+#define BLE6A20_BUAD_RATE (115200) // 蓝牙串口对应使用的串口波特率
+ // 波特率仅支持 9600 57600 115200 230400 460800 921600 1500000 2000000
+#define BLE6A20_TX_PIN (UART2_RX_P10_6) // 蓝牙串口对应模块的 TX 要接到单片机的 RX
+#define BLE6A20_RX_PIN (UART2_TX_P10_5) // 蓝牙串口对应模块的 RX 要接到单片机的 TX
+#define BLE6A20_RTS_PIN (P10_2) // 蓝牙串口对应模块的 RTS 引脚
+
+#define BLE6A20_BUFFER_SIZE ( 64 ) // 蓝牙串口缓冲区大小
+#define BLE6A20_TIMEOUT_COUNT ( 0x64 ) // 蓝牙串口通讯超时范围
+
+// ------------------------------------ 自动波特率 ------------------------------------
+// 注意事项1:开启自动波特率务必连接RTS引脚 否则会开启失败。
+// 注意事项2:模块自动波特率失败的话 可以尝试断电重启
+
+// 开启自动波特率务必阅读上面两条 注意事项
+// 开启自动波特率务必阅读上面两条 注意事项
+// 开启自动波特率务必阅读上面两条 注意事项
+
+// 0:关闭自动波特率
+// 1:开启自动波特率 自动波特率的作用是修改 BLE6A20_BAUD 之后不需要对模块进行配置 模块会自动设置为对应的波特率
+// 自动波特率仅支持 9600 57600 115200 230400 460800 921600 1500000 2000000
+
+#define BLE6A20_AUTO_BAUD_RATE ( 0 )
+
+#if (1 == BLE6A20_AUTO_BAUD_RATE)
+typedef enum
+{
+ BLE6A20_AUTO_BAUD_RATE_SUCCESS,
+ BLE6A20_AUTO_BAUD_RATE_INIT,
+ BLE6A20_AUTO_BAUD_RATE_START,
+ BLE6A20_AUTO_BAUD_RATE_GET_ACK,
+}ble6a20_auto_baudrate_state_enum;
+#endif
+// ------------------------------------ 自动波特率 ------------------------------------
+
+//=================================================定义 蓝牙串口 基本配置================================================
+
+
+//=================================================声明 蓝牙串口 基础函数================================================
+uint32 ble6a20_send_byte (const uint8 data); // 蓝牙转串口模块 发送数据
+uint32 ble6a20_send_buffer (const uint8 *buff, uint32 len); // 蓝牙转串口模块 发送数据块
+uint32 ble6a20_send_string (const char *str); // 蓝牙转串口模块 发送字符串
+void ble6a20_send_image (const uint8 *image_addr, uint32 image_size); // 蓝牙转串口模块 发送摄像头图像至上位机查看图像
+
+uint32 ble6a20_read_buffer (uint8 *buff, uint32 len); // 蓝牙转串口模块 读取缓冲区数据
+
+void ble6a20_callback (void); // 蓝牙转串口模块 串口中断回调函数
+
+uint8 ble6a20_init (void); // 蓝牙转串口模块 初始化
+//=================================================声明 蓝牙串口 基础函数================================================
+
+#endif
diff --git a/Example/E05_pit_demo/libraries/zf_device/zf_device_type.h b/Example/E05_pit_demo/libraries/zf_device/zf_device_type.h
index 6c2b8da..4f8ec53 100644
--- a/Example/E05_pit_demo/libraries/zf_device/zf_device_type.h
+++ b/Example/E05_pit_demo/libraries/zf_device/zf_device_type.h
@@ -54,6 +54,7 @@ typedef enum
{
NO_WIRELESS = 0, // 无设备
WIRELESS_UART, // 无线串口
+ BLE6A20, // 蓝牙串口
BLUETOOTH_CH9141, // 蓝牙 CH9141
WIFI_UART, // 串口 WiFi
RECEIVER_UART, // 枪式遥控器
diff --git a/Example/E05_pit_demo/libraries/zf_device/澶栬鏂囦欢璇存槑.txt b/Example/E05_pit_demo/libraries/zf_device/澶栬鏂囦欢璇存槑.txt
new file mode 100644
index 0000000..1c96965
--- /dev/null
+++ b/Example/E05_pit_demo/libraries/zf_device/澶栬鏂囦欢璇存槑.txt
@@ -0,0 +1,97 @@
+
+如需获取详细资料可联系淘宝店铺客服:https://seekfree.taobao.com/
+如需获取详细资料可联系淘宝店铺客服:https://seekfree.taobao.com/
+如需获取详细资料可联系淘宝店铺客服:https://seekfree.taobao.com/
+
+本文件主要用于说明 zf_device 目录下各个文件所对应的外设模块
+本文件主要用于说明 zf_device 目录下各个文件所对应的外设模块
+本文件主要用于说明 zf_device 目录下各个文件所对应的外设模块
+
+
+=================================================== 测距模块 ===================================================
+
+zf_device_dl1a.h TOF 测距模块 DL1A 频率:33hz 最大距离:1.2 米
+
+zf_device_dl1b.h TOF 测距模块 DL1B 频率:100hz 最大距离:1.4 米
+
+=================================================== 测距模块 ===================================================
+
+
+
+==================================================== 陀螺仪 ====================================================
+
+zf_device_mpu6050.h MPU6050 六轴陀螺仪 传统 IIC 通讯
+
+zf_device_icm20602.h ICM20602 六轴陀螺仪 支持 SPI 采值
+
+zf_device_imu660ra.h IMU660RA 六轴陀螺仪 高精度陀螺仪
+
+zf_device_imu963ra.h IMU963RA 九轴陀螺仪 支持地磁计采集
+
+==================================================== 陀螺仪 ====================================================
+
+
+
+=================================================== 屏幕显示 ===================================================
+
+zf_device_ips114.h IPS114 液晶屏幕 1.14 寸 分辨率:240 * 135
+
+zf_device_ips200.h IPS200 液晶屏幕 2.0 寸 分辨率:240 * 320
+
+zf_device_tft180.h TFT180 屏幕 1.8寸 分辨率:160 * 128
+
+zf_device_oled.h OLED 液晶屏幕 0.96 寸 分辨率:128 * 64
+
+=================================================== 屏幕显示 ===================================================
+
+
+
+================================================== 图像传感器 ==================================================
+
+zf_device_mt9v03x.h MT9V03X 总钻风灰度摄像头
+
+zf_device_ov7725.h OV7725 小钻风硬件二值化摄像头
+
+zf_device_scc8660.h SCC8660 凌瞳彩色摄像头
+
+zf_device_tsl1401.h TSL1401 红孩儿线阵CCD
+
+================================================== 图像传感器 ==================================================
+
+
+
+=================================================== 无线通讯 ===================================================
+
+zf_device_ble6a20.h 蓝牙串口模块 无线通讯
+
+zf_device_bluetooth_ch9141.h CH9141 蓝牙通讯模块 蓝牙组网通讯
+
+zf_device_wifi_spi.h WIFI-SPI 高速WIFI无线通讯模块
+
+zf_device_wifi_uart.h WIFI-UART 串口WIFI无线通讯模块
+
+zf_device_wireless_uart.h 无线串口模块
+
+=================================================== 无线通讯 ===================================================
+
+
+
+=================================================== 远程遥控 ===================================================
+
+zf_device_uart_receiver.h SUBS 串口遥控器 串口通讯 长距离遥控 2.4G频段
+
+=================================================== 远程遥控 ===================================================
+
+
+
+================================================== 其他传感器 ==================================================
+
+zf_device_absolute_encoder.h 360° 位置传感器 绝对式迷你 mini 编码器 分辨率:0.088°
+
+zf_device_gnss.h GPS 及 RTK 定位模块 双频高精度定位模块 亚米级定位
+
+zf_device_key.h GPIO 按键驱动 用于检测主板按键状态
+
+zf_device_virtual_oscilloscope.h VisualScope 虚拟示波器
+
+================================================== 其他传感器 ==================================================
\ No newline at end of file
diff --git a/Example/E06_exit_demo/libraries/doc/version.txt b/Example/E06_exit_demo/libraries/doc/version.txt
index 68afc86..c4e0d0a 100644
--- a/Example/E06_exit_demo/libraries/doc/version.txt
+++ b/Example/E06_exit_demo/libraries/doc/version.txt
@@ -1,3 +1,5 @@
+V3.3.0
+ 新增蓝牙串口通讯模块
V3.2.13
新增一个微秒延时函数 该延时函数为普通延时 非中断延时
V3.2.12
diff --git a/Example/E06_exit_demo/libraries/zf_common/zf_common_headfile.h b/Example/E06_exit_demo/libraries/zf_common/zf_common_headfile.h
index c0d833b..3a140e3 100644
--- a/Example/E06_exit_demo/libraries/zf_common/zf_common_headfile.h
+++ b/Example/E06_exit_demo/libraries/zf_common/zf_common_headfile.h
@@ -81,6 +81,7 @@
//===================================================外接设备驱动层===================================================
#include "zf_device_absolute_encoder.h"
+#include "zf_device_ble6a20.h"
#include "zf_device_bluetooth_ch9141.h"
#include "zf_device_gnss.h"
#include "zf_device_camera.h"
diff --git a/Example/E06_exit_demo/libraries/zf_components/seekfree_assistant.c b/Example/E06_exit_demo/libraries/zf_components/seekfree_assistant.c
index 0b7cb9d..af3bb96 100644
--- a/Example/E06_exit_demo/libraries/zf_components/seekfree_assistant.c
+++ b/Example/E06_exit_demo/libraries/zf_components/seekfree_assistant.c
@@ -1,20 +1,20 @@
/*********************************************************************************************************************
-* RT1064DVL6A Opensourec Library 即(RT1064DVL6A 开源库)是一个基于官方 SDK 接口的第三方开源库
+* TC264 Opensourec Library 即(TC264 开源库)是一个基于官方 SDK 接口的第三方开源库
* Copyright (c) 2022 SEEKFREE 逐飞科技
-*
-* 本文件是 RT1064DVL6A 开源库的一部分
-*
-* RT1064DVL6A 开源库 是免费软件
+*
+* 本文件是 TC264 开源库的一部分
+*
+* TC264 开源库 是免费软件
* 您可以根据自由软件基金会发布的 GPL(GNU General Public License,即 GNU通用公共许可证)的条款
* 即 GPL 的第3版(即 GPL3.0)或(您选择的)任何后来的版本,重新发布和/或修改它
-*
+*
* 本开源库的发布是希望它能发挥作用,但并未对其作任何的保证
* 甚至没有隐含的适销性或适合特定用途的保证
* 更多细节请参见 GPL
-*
+*
* 您应该在收到本开源库的同时收到一份 GPL 的副本
* 如果没有,请参阅
-*
+*
* 额外注明:
* 本开源库使用 GPL3.0 开源许可证协议 以上许可申明为译文版本
* 许可申明英文版在 libraries/doc 文件夹下的 GPL3_permission_statement.txt 文件中
@@ -24,13 +24,13 @@
* 文件名称 seekfree_assistant
* 公司名称 成都逐飞科技有限公司
* 版本信息 查看 libraries/doc 文件夹内 version 文件 版本说明
-* 开发环境 IAR 8.32.4 or MDK 5.33
-* 适用平台 RT1064DVL6A
+* 开发环境 ADS v1.9.20
+* 适用平台 TC264D
* 店铺链接 https://seekfree.taobao.com/
-*
+*
* 修改记录
-* 日期 作者 备注
-* 2024-1-11 SeekFree first version
+* 日期 作者 备注
+* 2024-01-01 pudding first version
********************************************************************************************************************/
#include "zf_common_debug.h"
diff --git a/Example/E06_exit_demo/libraries/zf_components/seekfree_assistant.h b/Example/E06_exit_demo/libraries/zf_components/seekfree_assistant.h
index ae0f67c..5e04a1d 100644
--- a/Example/E06_exit_demo/libraries/zf_components/seekfree_assistant.h
+++ b/Example/E06_exit_demo/libraries/zf_components/seekfree_assistant.h
@@ -1,20 +1,20 @@
/*********************************************************************************************************************
-* RT1064DVL6A Opensourec Library 即(RT1064DVL6A 开源库)是一个基于官方 SDK 接口的第三方开源库
+* TC264 Opensourec Library 即(TC264 开源库)是一个基于官方 SDK 接口的第三方开源库
* Copyright (c) 2022 SEEKFREE 逐飞科技
-*
-* 本文件是 RT1064DVL6A 开源库的一部分
-*
-* RT1064DVL6A 开源库 是免费软件
+*
+* 本文件是 TC264 开源库的一部分
+*
+* TC264 开源库 是免费软件
* 您可以根据自由软件基金会发布的 GPL(GNU General Public License,即 GNU通用公共许可证)的条款
* 即 GPL 的第3版(即 GPL3.0)或(您选择的)任何后来的版本,重新发布和/或修改它
-*
+*
* 本开源库的发布是希望它能发挥作用,但并未对其作任何的保证
* 甚至没有隐含的适销性或适合特定用途的保证
* 更多细节请参见 GPL
-*
+*
* 您应该在收到本开源库的同时收到一份 GPL 的副本
* 如果没有,请参阅
-*
+*
* 额外注明:
* 本开源库使用 GPL3.0 开源许可证协议 以上许可申明为译文版本
* 许可申明英文版在 libraries/doc 文件夹下的 GPL3_permission_statement.txt 文件中
@@ -24,13 +24,13 @@
* 文件名称 seekfree_assistant
* 公司名称 成都逐飞科技有限公司
* 版本信息 查看 libraries/doc 文件夹内 version 文件 版本说明
-* 开发环境 IAR 8.32.4 or MDK 5.33
-* 适用平台 RT1064DVL6A
+* 开发环境 ADS v1.9.20
+* 适用平台 TC264D
* 店铺链接 https://seekfree.taobao.com/
-*
+*
* 修改记录
-* 日期 作者 备注
-* 2024-1-11 SeekFree first version
+* 日期 作者 备注
+* 2024-01-01 pudding first version
********************************************************************************************************************/
#ifndef _seekfree_assistant_h_
#define _seekfree_assistant_h_
@@ -47,27 +47,27 @@
// 定义接收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 )
diff --git a/Example/E06_exit_demo/libraries/zf_components/seekfree_assistant_interface.c b/Example/E06_exit_demo/libraries/zf_components/seekfree_assistant_interface.c
index fdade63..cc42e43 100644
--- a/Example/E06_exit_demo/libraries/zf_components/seekfree_assistant_interface.c
+++ b/Example/E06_exit_demo/libraries/zf_components/seekfree_assistant_interface.c
@@ -1,20 +1,20 @@
/*********************************************************************************************************************
-* RT1064DVL6A Opensourec Library 即(RT1064DVL6A 开源库)是一个基于官方 SDK 接口的第三方开源库
+* TC264 Opensourec Library 即(TC264 开源库)是一个基于官方 SDK 接口的第三方开源库
* Copyright (c) 2022 SEEKFREE 逐飞科技
-*
-* 本文件是 RT1064DVL6A 开源库的一部分
-*
-* RT1064DVL6A 开源库 是免费软件
+*
+* 本文件是 TC264 开源库的一部分
+*
+* TC264 开源库 是免费软件
* 您可以根据自由软件基金会发布的 GPL(GNU General Public License,即 GNU通用公共许可证)的条款
* 即 GPL 的第3版(即 GPL3.0)或(您选择的)任何后来的版本,重新发布和/或修改它
-*
+*
* 本开源库的发布是希望它能发挥作用,但并未对其作任何的保证
* 甚至没有隐含的适销性或适合特定用途的保证
* 更多细节请参见 GPL
-*
+*
* 您应该在收到本开源库的同时收到一份 GPL 的副本
* 如果没有,请参阅
-*
+*
* 额外注明:
* 本开源库使用 GPL3.0 开源许可证协议 以上许可申明为译文版本
* 许可申明英文版在 libraries/doc 文件夹下的 GPL3_permission_statement.txt 文件中
@@ -24,13 +24,13 @@
* 文件名称 seekfree_assistant_interface
* 公司名称 成都逐飞科技有限公司
* 版本信息 查看 libraries/doc 文件夹内 version 文件 版本说明
-* 开发环境 IAR 8.32.4 or MDK 5.33
-* 适用平台 RT1064DVL6A
+* 开发环境 ADS v1.9.20
+* 适用平台 TC264D
* 店铺链接 https://seekfree.taobao.com/
-*
+*
* 修改记录
-* 日期 作者 备注
-* 2024-1-11 SeekFree first version
+* 日期 作者 备注
+* 2024-01-01 pudding first version
********************************************************************************************************************/
#include "zf_common_typedef.h"
@@ -38,6 +38,7 @@
#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"
@@ -100,6 +101,12 @@ ZF_WEAK void seekfree_assistant_interface_init (seekfree_assistant_transfer_devi
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;
diff --git a/Example/E06_exit_demo/libraries/zf_components/seekfree_assistant_interface.h b/Example/E06_exit_demo/libraries/zf_components/seekfree_assistant_interface.h
index 940b5f7..1d0158c 100644
--- a/Example/E06_exit_demo/libraries/zf_components/seekfree_assistant_interface.h
+++ b/Example/E06_exit_demo/libraries/zf_components/seekfree_assistant_interface.h
@@ -1,20 +1,20 @@
/*********************************************************************************************************************
-* RT1064DVL6A Opensourec Library 即(RT1064DVL6A 开源库)是一个基于官方 SDK 接口的第三方开源库
+* TC264 Opensourec Library 即(TC264 开源库)是一个基于官方 SDK 接口的第三方开源库
* Copyright (c) 2022 SEEKFREE 逐飞科技
-*
-* 本文件是 RT1064DVL6A 开源库的一部分
-*
-* RT1064DVL6A 开源库 是免费软件
+*
+* 本文件是 TC264 开源库的一部分
+*
+* TC264 开源库 是免费软件
* 您可以根据自由软件基金会发布的 GPL(GNU General Public License,即 GNU通用公共许可证)的条款
* 即 GPL 的第3版(即 GPL3.0)或(您选择的)任何后来的版本,重新发布和/或修改它
-*
+*
* 本开源库的发布是希望它能发挥作用,但并未对其作任何的保证
* 甚至没有隐含的适销性或适合特定用途的保证
* 更多细节请参见 GPL
-*
+*
* 您应该在收到本开源库的同时收到一份 GPL 的副本
* 如果没有,请参阅
-*
+*
* 额外注明:
* 本开源库使用 GPL3.0 开源许可证协议 以上许可申明为译文版本
* 许可申明英文版在 libraries/doc 文件夹下的 GPL3_permission_statement.txt 文件中
@@ -24,13 +24,13 @@
* 文件名称 seekfree_assistant_interface
* 公司名称 成都逐飞科技有限公司
* 版本信息 查看 libraries/doc 文件夹内 version 文件 版本说明
-* 开发环境 IAR 8.32.4 or MDK 5.33
-* 适用平台 RT1064DVL6A
+* 开发环境 ADS v1.9.20
+* 适用平台 TC264D
* 店铺链接 https://seekfree.taobao.com/
-*
+*
* 修改记录
-* 日期 作者 备注
-* 2024-1-11 SeekFree first version
+* 日期 作者 备注
+* 2024-01-01 pudding first version
********************************************************************************************************************/
#ifndef _seekfree_assistant_interface_h_
@@ -43,6 +43,7 @@ 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
diff --git a/Example/E06_exit_demo/libraries/zf_device/zf_device_ble6a20.c b/Example/E06_exit_demo/libraries/zf_device/zf_device_ble6a20.c
new file mode 100644
index 0000000..ea8649e
--- /dev/null
+++ b/Example/E06_exit_demo/libraries/zf_device/zf_device_ble6a20.c
@@ -0,0 +1,299 @@
+/*********************************************************************************************************************
+* TC264 Opensourec Library 即(TC264 开源库)是一个基于官方 SDK 接口的第三方开源库
+* Copyright (c) 2022 SEEKFREE 逐飞科技
+*
+* 本文件是 TC264 开源库的一部分
+*
+* TC264 开源库 是免费软件
+* 您可以根据自由软件基金会发布的 GPL(GNU General Public License,即 GNU通用公共许可证)的条款
+* 即 GPL 的第3版(即 GPL3.0)或(您选择的)任何后来的版本,重新发布和/或修改它
+*
+* 本开源库的发布是希望它能发挥作用,但并未对其作任何的保证
+* 甚至没有隐含的适销性或适合特定用途的保证
+* 更多细节请参见 GPL
+*
+* 您应该在收到本开源库的同时收到一份 GPL 的副本
+* 如果没有,请参阅
+*
+* 额外注明:
+* 本开源库使用 GPL3.0 开源许可证协议 以上许可申明为译文版本
+* 许可申明英文版在 libraries/doc 文件夹下的 GPL3_permission_statement.txt 文件中
+* 许可证副本在 libraries 文件夹下 即该文件夹下的 LICENSE 文件
+* 欢迎各位使用并传播本程序 但修改内容时必须保留逐飞科技的版权声明(即本声明)
+*
+* 文件名称 zf_device_ble6a20
+* 公司名称 成都逐飞科技有限公司
+* 版本信息 查看 libraries/doc 文件夹内 version 文件 版本说明
+* 开发环境 ADS v1.9.20
+* 适用平台 TC264D
+* 店铺链接 https://seekfree.taobao.com/
+*
+* 修改记录
+* 日期 作者 备注
+* 2024-07-02 pudding first version
+********************************************************************************************************************/
+/*********************************************************************************************************************
+* 接线定义:
+* ------------------------------------
+* 模块管脚 单片机管脚
+* RX 查看 zf_device_ble6a20.h 中 BLE6A20_RX_PIN 宏定义
+* TX 查看 zf_device_ble6a20.h 中 BLE6A20_TX_PIN 宏定义
+* RTS 查看 zf_device_ble6a20.h 中 BLE6A20_RTS_PIN 宏定义
+* VCC 3.3V电源
+* GND 电源地
+* 其余引脚悬空
+* ------------------------------------
+*********************************************************************************************************************/
+
+#include "zf_common_clock.h"
+#include "zf_common_debug.h"
+#include "zf_common_fifo.h"
+#include "zf_driver_delay.h"
+#include "zf_driver_gpio.h"
+#include "zf_driver_uart.h"
+#include "zf_device_type.h"
+#include "zf_device_ble6a20.h"
+
+static fifo_struct ble6a20_fifo;
+static uint8 ble6a20_buffer[BLE6A20_BUFFER_SIZE];
+
+static uint8 ble6a20_data = 0;
+#if (1 == BLE6A20_AUTO_BAUD_RATE)
+static volatile ble6a20_auto_baudrate_state_enum ble6a20_auto_baud_flag = BLE6A20_AUTO_BAUD_RATE_INIT;
+static volatile uint8 ble6a20_auto_baud_data[3] = {0x00, 0x01, 0x03};
+#endif
+
+//-------------------------------------------------------------------------------------------------------------------
+// 函数简介 蓝牙转串口模块 发送数据
+// 参数说明 data 8bit 数据
+// 返回参数 uint32 剩余发送长度 0-发送完毕 1-未发送完成
+// 使用示例 ble6a20_send_byte(data);
+// 备注信息
+//-------------------------------------------------------------------------------------------------------------------
+uint32 ble6a20_send_byte (const uint8 data)
+{
+ uint16 time_count = BLE6A20_TIMEOUT_COUNT;
+ while(time_count)
+ {
+ if(!gpio_get_level(BLE6A20_RTS_PIN))
+ {
+ uart_write_byte(BLE6A20_INDEX, data); // 发送数据
+ break;
+ }
+ time_count --;
+ system_delay_ms(1);
+ }
+ return (0 == time_count);
+}
+
+//-------------------------------------------------------------------------------------------------------------------
+// 函数简介 蓝牙转串口模块 发送数据块
+// 参数说明 *buff 发送缓冲区
+// 参数说明 len 发送数据长度
+// 返回参数 uint32 剩余发送长度
+// 使用示例 ble6a20_send_buffer(buff, 64);
+// 备注信息
+//-------------------------------------------------------------------------------------------------------------------
+uint32 ble6a20_send_buffer (const uint8 *buff, uint32 len)
+{
+ zf_assert(NULL != buff);
+ uint16 time_count = 0;
+ while(0 != len)
+ {
+ if(!gpio_get_level(BLE6A20_RTS_PIN)) // 如果RTS为低电平 则继续发送数据
+ {
+ if(30 <= len) // 数据分 30byte 每包发送
+ {
+ uart_write_buffer(BLE6A20_INDEX, buff, 30); // 发送数据
+ buff += 30; // 地址偏移
+ len -= 30; // 数量
+ time_count = 0;
+ }
+ else // 不足 30byte 的数据一次性发送完毕
+ {
+ uart_write_buffer(BLE6A20_INDEX, buff, len); // 发送数据
+ len = 0;
+ break;
+ }
+ }
+ else // 如果RTS为高电平 则模块忙
+ {
+ if(BLE6A20_TIMEOUT_COUNT <= (++ time_count)) // 超出了最大等待时间
+ {
+ break; // 退出发送
+ }
+ system_delay_ms(1);
+ }
+ }
+ return len;
+}
+
+//-------------------------------------------------------------------------------------------------------------------
+// 函数简介 蓝牙转串口模块 发送字符串
+// 参数说明 *str 要发送的字符串地址
+// 返回参数 uint32 剩余发送长度
+// 使用示例 ble6a20_send_string("Believe in yourself.");
+// 备注信息
+//-------------------------------------------------------------------------------------------------------------------
+uint32 ble6a20_send_string (const char *str)
+{
+ zf_assert(NULL != str);
+ uint16 time_count = 0;
+ uint32 len = strlen(str);
+ while(0 != len)
+ {
+ if(!gpio_get_level(BLE6A20_RTS_PIN)) // 如果RTS为低电平 则继续发送数据
+ {
+ if(128 <= len) // 数据分 128byte 每包发送
+ {
+ uart_write_buffer(BLE6A20_INDEX, (const uint8 *)str, 128); // 发送数据
+ str += 128; // 地址偏移
+ len -= 128; // 数量
+ time_count = 0;
+ }
+ else // 不足 128byte 的数据一次性发送完毕
+ {
+ uart_write_buffer(BLE6A20_INDEX, (const uint8 *)str, len);// 发送数据
+ len = 0;
+ break;
+ }
+ }
+ else // 如果RTS为高电平 则模块忙
+ {
+ if(BLE6A20_TIMEOUT_COUNT <= (++ time_count)) // 超出了最大等待时间
+ {
+ break; // 退出发送
+ }
+ system_delay_ms(1);
+ }
+ }
+ return len;
+}
+
+//-------------------------------------------------------------------------------------------------------------------
+// 函数简介 蓝牙转串口模块 发送摄像头图像至上位机查看图像
+// 参数说明 *image_addr 需要发送的图像地址
+// 参数说明 image_size 图像的大小
+// 返回参数 void
+// 使用示例 ble6a20_send_image(&mt9v03x_image[0][0], MT9V03X_IMAGE_SIZE);
+// 备注信息
+//-------------------------------------------------------------------------------------------------------------------
+void ble6a20_send_image (const uint8 *image_addr, uint32 image_size)
+{
+ zf_assert(NULL != image_addr);
+ extern uint8 camera_send_image_frame_header[4];
+ ble6a20_send_buffer(camera_send_image_frame_header, 4);
+ ble6a20_send_buffer((uint8 *)image_addr, image_size);
+}
+
+//-------------------------------------------------------------------------------------------------------------------
+// 函数简介 蓝牙转串口模块 读取缓冲区数据
+// 参数说明 *buff 接收缓冲区
+// 参数说明 len 读取数据长度
+// 返回参数 uint32 实际读取数据长度
+// 使用示例 ble6a20_read_buffer(buff, 32);
+// 备注信息
+//-------------------------------------------------------------------------------------------------------------------
+uint32 ble6a20_read_buffer (uint8 *buff, uint32 len)
+{
+ zf_assert(NULL != buff);
+ uint32 data_len = len;
+ fifo_read_buffer(&ble6a20_fifo, buff, &data_len, FIFO_READ_AND_CLEAN);
+ return data_len;
+}
+
+//-------------------------------------------------------------------------------------------------------------------
+// 函数简介 蓝牙转串口模块 串口中断回调函数
+// 参数说明 void
+// 返回参数 void
+// 使用示例 ble6a20_callback();
+// 备注信息 该函数在 ISR 文件 串口中断程序被调用
+// 由串口中断服务函数调用 wireless_module_uart_handler() 函数
+// 再由 wireless_module_uart_handler() 函数调用本函数
+//-------------------------------------------------------------------------------------------------------------------
+void ble6a20_callback (void)
+{
+ if(uart_query_byte(BLE6A20_INDEX, &ble6a20_data))
+ {
+ fifo_write_buffer(&ble6a20_fifo, &ble6a20_data, 1);
+#if BLE6A20_AUTO_BAUD_RATE // 开启自动波特率
+ if(BLE6A20_AUTO_BAUD_RATE_START == ble6a20_auto_baud_flag && 3 == fifo_used(&ble6a20_fifo))
+ {
+ uint32 ble6a20_auto_baud_count = 3;
+ ble6a20_auto_baud_flag = BLE6A20_AUTO_BAUD_RATE_GET_ACK;
+ fifo_read_buffer(&ble6a20_fifo, (uint8 *)ble6a20_auto_baud_data, (uint32 *)&ble6a20_auto_baud_count, FIFO_READ_AND_CLEAN);
+ }
+#endif
+ }
+}
+
+//-------------------------------------------------------------------------------------------------------------------
+// 函数简介 蓝牙转串口模块 初始化
+// 参数说明 void
+// 返回参数 void
+// 使用示例 ble6a20_init();
+// 备注信息
+//-------------------------------------------------------------------------------------------------------------------
+uint8 ble6a20_init (void)
+{
+ uint8 return_state = 0;
+
+ // 等待模块初始化
+ system_delay_ms(50);
+
+ set_wireless_type(BLE6A20, ble6a20_callback);
+
+ fifo_init(&ble6a20_fifo, FIFO_DATA_8BIT, ble6a20_buffer, BLE6A20_BUFFER_SIZE);
+ gpio_init(BLE6A20_RTS_PIN, GPI, GPIO_HIGH, GPI_PULL_UP);
+#if(0 == BLE6A20_AUTO_BAUD_RATE) // 关闭自动波特率
+ // 本函数使用的波特率为115200 为蓝牙转串口模块的默认波特率 如需其他波特率请自行配置模块并修改串口的波特率
+ uart_init (BLE6A20_INDEX, BLE6A20_BUAD_RATE, BLE6A20_RX_PIN, BLE6A20_TX_PIN); // 初始化串口
+ uart_rx_interrupt(BLE6A20_INDEX, 1);
+#elif(1 == BLE6A20_AUTO_BAUD_RATE) // 开启自动波特率
+ uint8 rts_init_status = 0;
+
+ ble6a20_auto_baud_flag = BLE6A20_AUTO_BAUD_RATE_INIT;
+ ble6a20_auto_baud_data[0] = 0;
+ ble6a20_auto_baud_data[1] = 1;
+ ble6a20_auto_baud_data[2] = 3;
+
+ rts_init_status = gpio_get_level(BLE6A20_RTS_PIN);
+ gpio_init(BLE6A20_RTS_PIN, GPO, rts_init_status, GPO_PUSH_PULL); // 初始化流控引脚
+
+ uart_init (BLE6A20_INDEX, BLE6A20_BUAD_RATE, BLE6A20_RX_PIN, BLE6A20_TX_PIN); // 初始化串口
+ uart_rx_interrupt(BLE6A20_INDEX, 1);
+
+ system_delay_ms(5); // 模块上电之后需要延时等待
+ gpio_set_level(BLE6A20_RTS_PIN, !rts_init_status); // RTS引脚拉高,进入自动波特率模式
+ system_delay_ms(100); // RTS拉高之后必须延时20ms
+ gpio_toggle_level(BLE6A20_RTS_PIN); // RTS引脚取反
+
+ do
+ {
+ ble6a20_auto_baud_flag = BLE6A20_AUTO_BAUD_RATE_START;
+ uart_write_byte(BLE6A20_INDEX, ble6a20_auto_baud_data[0]); // 发送特定数据 用于模块自动判断波特率
+ uart_write_byte(BLE6A20_INDEX, ble6a20_auto_baud_data[1]); // 发送特定数据 用于模块自动判断波特率
+ uart_write_byte(BLE6A20_INDEX, ble6a20_auto_baud_data[2]); // 发送特定数据 用于模块自动判断波特率
+ system_delay_ms(20);
+
+ if(BLE6A20_AUTO_BAUD_RATE_GET_ACK != ble6a20_auto_baud_flag) // 检验自动波特率是否完成
+ {
+ return_state = 1; // 如果程序进入到此语句内 说明自动波特率失败了
+ break;
+ }
+
+ if( 0xa5 != ble6a20_auto_baud_data[0] && // 检验自动波特率是否正确
+ 0xff != ble6a20_auto_baud_data[1] && // 检验自动波特率是否正确
+ 0xff != ble6a20_auto_baud_data[2] ) // 检验自动波特率是否正确
+ {
+ return_state = 1; // 如果程序进入到此语句内 说明自动波特率失败了
+ break;
+ }
+ ble6a20_auto_baud_flag = BLE6A20_AUTO_BAUD_RATE_SUCCESS;
+
+ gpio_init(BLE6A20_RTS_PIN, GPI, 0, GPI_PULL_UP); // 初始化流控引脚
+ system_delay_ms(10); // 延时等待 模块准备就绪
+ }while(0);
+#endif
+ return return_state;
+}
diff --git a/Example/E06_exit_demo/libraries/zf_device/zf_device_ble6a20.h b/Example/E06_exit_demo/libraries/zf_device/zf_device_ble6a20.h
new file mode 100644
index 0000000..c037ea2
--- /dev/null
+++ b/Example/E06_exit_demo/libraries/zf_device/zf_device_ble6a20.h
@@ -0,0 +1,108 @@
+/*********************************************************************************************************************
+* TC264 Opensourec Library 即(TC264 开源库)是一个基于官方 SDK 接口的第三方开源库
+* Copyright (c) 2022 SEEKFREE 逐飞科技
+*
+* 本文件是 TC264 开源库的一部分
+*
+* TC264 开源库 是免费软件
+* 您可以根据自由软件基金会发布的 GPL(GNU General Public License,即 GNU通用公共许可证)的条款
+* 即 GPL 的第3版(即 GPL3.0)或(您选择的)任何后来的版本,重新发布和/或修改它
+*
+* 本开源库的发布是希望它能发挥作用,但并未对其作任何的保证
+* 甚至没有隐含的适销性或适合特定用途的保证
+* 更多细节请参见 GPL
+*
+* 您应该在收到本开源库的同时收到一份 GPL 的副本
+* 如果没有,请参阅
+*
+* 额外注明:
+* 本开源库使用 GPL3.0 开源许可证协议 以上许可申明为译文版本
+* 许可申明英文版在 libraries/doc 文件夹下的 GPL3_permission_statement.txt 文件中
+* 许可证副本在 libraries 文件夹下 即该文件夹下的 LICENSE 文件
+* 欢迎各位使用并传播本程序 但修改内容时必须保留逐飞科技的版权声明(即本声明)
+*
+* 文件名称 zf_device_ble6a20.h
+* 公司名称 成都逐飞科技有限公司
+* 版本信息 查看 libraries/doc 文件夹内 version 文件 版本说明
+* 开发环境 ADS v1.9.20
+* 适用平台 TC264D
+* 店铺链接 https://seekfree.taobao.com/
+*
+* 修改记录
+* 日期 作者 备注
+* 2024-07-02 pudding first version
+********************************************************************************************************************/
+/*********************************************************************************************************************
+* 接线定义:
+* ------------------------------------
+* 模块管脚 单片机管脚
+* RX 查看 zf_device_ble6a20.h 中 BLE6A20_RX_PIN 宏定义
+* TX 查看 zf_device_ble6a20.h 中 BLE6A20_TX_PIN 宏定义
+* RTS 查看 zf_device_ble6a20.h 中 BLE6A20_RTS_PIN 宏定义
+* VCC 3.3V电源
+* GND 电源地
+* 其余引脚悬空
+* ------------------------------------
+*********************************************************************************************************************/
+
+
+#ifndef _zf_device_ble6a20_h_
+#define _zf_device_ble6a20_h_
+
+#include "zf_common_typedef.h"
+
+
+//=================================================定义 蓝牙串口 基本配置================================================
+
+#define BLE6A20_INDEX (UART_2) // 蓝牙串口对应使用的串口号
+#define BLE6A20_BUAD_RATE (115200) // 蓝牙串口对应使用的串口波特率
+ // 波特率仅支持 9600 57600 115200 230400 460800 921600 1500000 2000000
+#define BLE6A20_TX_PIN (UART2_RX_P10_6) // 蓝牙串口对应模块的 TX 要接到单片机的 RX
+#define BLE6A20_RX_PIN (UART2_TX_P10_5) // 蓝牙串口对应模块的 RX 要接到单片机的 TX
+#define BLE6A20_RTS_PIN (P10_2) // 蓝牙串口对应模块的 RTS 引脚
+
+#define BLE6A20_BUFFER_SIZE ( 64 ) // 蓝牙串口缓冲区大小
+#define BLE6A20_TIMEOUT_COUNT ( 0x64 ) // 蓝牙串口通讯超时范围
+
+// ------------------------------------ 自动波特率 ------------------------------------
+// 注意事项1:开启自动波特率务必连接RTS引脚 否则会开启失败。
+// 注意事项2:模块自动波特率失败的话 可以尝试断电重启
+
+// 开启自动波特率务必阅读上面两条 注意事项
+// 开启自动波特率务必阅读上面两条 注意事项
+// 开启自动波特率务必阅读上面两条 注意事项
+
+// 0:关闭自动波特率
+// 1:开启自动波特率 自动波特率的作用是修改 BLE6A20_BAUD 之后不需要对模块进行配置 模块会自动设置为对应的波特率
+// 自动波特率仅支持 9600 57600 115200 230400 460800 921600 1500000 2000000
+
+#define BLE6A20_AUTO_BAUD_RATE ( 0 )
+
+#if (1 == BLE6A20_AUTO_BAUD_RATE)
+typedef enum
+{
+ BLE6A20_AUTO_BAUD_RATE_SUCCESS,
+ BLE6A20_AUTO_BAUD_RATE_INIT,
+ BLE6A20_AUTO_BAUD_RATE_START,
+ BLE6A20_AUTO_BAUD_RATE_GET_ACK,
+}ble6a20_auto_baudrate_state_enum;
+#endif
+// ------------------------------------ 自动波特率 ------------------------------------
+
+//=================================================定义 蓝牙串口 基本配置================================================
+
+
+//=================================================声明 蓝牙串口 基础函数================================================
+uint32 ble6a20_send_byte (const uint8 data); // 蓝牙转串口模块 发送数据
+uint32 ble6a20_send_buffer (const uint8 *buff, uint32 len); // 蓝牙转串口模块 发送数据块
+uint32 ble6a20_send_string (const char *str); // 蓝牙转串口模块 发送字符串
+void ble6a20_send_image (const uint8 *image_addr, uint32 image_size); // 蓝牙转串口模块 发送摄像头图像至上位机查看图像
+
+uint32 ble6a20_read_buffer (uint8 *buff, uint32 len); // 蓝牙转串口模块 读取缓冲区数据
+
+void ble6a20_callback (void); // 蓝牙转串口模块 串口中断回调函数
+
+uint8 ble6a20_init (void); // 蓝牙转串口模块 初始化
+//=================================================声明 蓝牙串口 基础函数================================================
+
+#endif
diff --git a/Example/E06_exit_demo/libraries/zf_device/zf_device_type.h b/Example/E06_exit_demo/libraries/zf_device/zf_device_type.h
index 6c2b8da..4f8ec53 100644
--- a/Example/E06_exit_demo/libraries/zf_device/zf_device_type.h
+++ b/Example/E06_exit_demo/libraries/zf_device/zf_device_type.h
@@ -54,6 +54,7 @@ typedef enum
{
NO_WIRELESS = 0, // 无设备
WIRELESS_UART, // 无线串口
+ BLE6A20, // 蓝牙串口
BLUETOOTH_CH9141, // 蓝牙 CH9141
WIFI_UART, // 串口 WiFi
RECEIVER_UART, // 枪式遥控器
diff --git a/Example/E06_exit_demo/libraries/zf_device/澶栬鏂囦欢璇存槑.txt b/Example/E06_exit_demo/libraries/zf_device/澶栬鏂囦欢璇存槑.txt
new file mode 100644
index 0000000..1c96965
--- /dev/null
+++ b/Example/E06_exit_demo/libraries/zf_device/澶栬鏂囦欢璇存槑.txt
@@ -0,0 +1,97 @@
+
+如需获取详细资料可联系淘宝店铺客服:https://seekfree.taobao.com/
+如需获取详细资料可联系淘宝店铺客服:https://seekfree.taobao.com/
+如需获取详细资料可联系淘宝店铺客服:https://seekfree.taobao.com/
+
+本文件主要用于说明 zf_device 目录下各个文件所对应的外设模块
+本文件主要用于说明 zf_device 目录下各个文件所对应的外设模块
+本文件主要用于说明 zf_device 目录下各个文件所对应的外设模块
+
+
+=================================================== 测距模块 ===================================================
+
+zf_device_dl1a.h TOF 测距模块 DL1A 频率:33hz 最大距离:1.2 米
+
+zf_device_dl1b.h TOF 测距模块 DL1B 频率:100hz 最大距离:1.4 米
+
+=================================================== 测距模块 ===================================================
+
+
+
+==================================================== 陀螺仪 ====================================================
+
+zf_device_mpu6050.h MPU6050 六轴陀螺仪 传统 IIC 通讯
+
+zf_device_icm20602.h ICM20602 六轴陀螺仪 支持 SPI 采值
+
+zf_device_imu660ra.h IMU660RA 六轴陀螺仪 高精度陀螺仪
+
+zf_device_imu963ra.h IMU963RA 九轴陀螺仪 支持地磁计采集
+
+==================================================== 陀螺仪 ====================================================
+
+
+
+=================================================== 屏幕显示 ===================================================
+
+zf_device_ips114.h IPS114 液晶屏幕 1.14 寸 分辨率:240 * 135
+
+zf_device_ips200.h IPS200 液晶屏幕 2.0 寸 分辨率:240 * 320
+
+zf_device_tft180.h TFT180 屏幕 1.8寸 分辨率:160 * 128
+
+zf_device_oled.h OLED 液晶屏幕 0.96 寸 分辨率:128 * 64
+
+=================================================== 屏幕显示 ===================================================
+
+
+
+================================================== 图像传感器 ==================================================
+
+zf_device_mt9v03x.h MT9V03X 总钻风灰度摄像头
+
+zf_device_ov7725.h OV7725 小钻风硬件二值化摄像头
+
+zf_device_scc8660.h SCC8660 凌瞳彩色摄像头
+
+zf_device_tsl1401.h TSL1401 红孩儿线阵CCD
+
+================================================== 图像传感器 ==================================================
+
+
+
+=================================================== 无线通讯 ===================================================
+
+zf_device_ble6a20.h 蓝牙串口模块 无线通讯
+
+zf_device_bluetooth_ch9141.h CH9141 蓝牙通讯模块 蓝牙组网通讯
+
+zf_device_wifi_spi.h WIFI-SPI 高速WIFI无线通讯模块
+
+zf_device_wifi_uart.h WIFI-UART 串口WIFI无线通讯模块
+
+zf_device_wireless_uart.h 无线串口模块
+
+=================================================== 无线通讯 ===================================================
+
+
+
+=================================================== 远程遥控 ===================================================
+
+zf_device_uart_receiver.h SUBS 串口遥控器 串口通讯 长距离遥控 2.4G频段
+
+=================================================== 远程遥控 ===================================================
+
+
+
+================================================== 其他传感器 ==================================================
+
+zf_device_absolute_encoder.h 360° 位置传感器 绝对式迷你 mini 编码器 分辨率:0.088°
+
+zf_device_gnss.h GPS 及 RTK 定位模块 双频高精度定位模块 亚米级定位
+
+zf_device_key.h GPIO 按键驱动 用于检测主板按键状态
+
+zf_device_virtual_oscilloscope.h VisualScope 虚拟示波器
+
+================================================== 其他传感器 ==================================================
\ No newline at end of file
diff --git a/Example/E07_encoder_demo/libraries/doc/version.txt b/Example/E07_encoder_demo/libraries/doc/version.txt
index 68afc86..c4e0d0a 100644
--- a/Example/E07_encoder_demo/libraries/doc/version.txt
+++ b/Example/E07_encoder_demo/libraries/doc/version.txt
@@ -1,3 +1,5 @@
+V3.3.0
+ 新增蓝牙串口通讯模块
V3.2.13
新增一个微秒延时函数 该延时函数为普通延时 非中断延时
V3.2.12
diff --git a/Example/E07_encoder_demo/libraries/zf_common/zf_common_headfile.h b/Example/E07_encoder_demo/libraries/zf_common/zf_common_headfile.h
index c0d833b..3a140e3 100644
--- a/Example/E07_encoder_demo/libraries/zf_common/zf_common_headfile.h
+++ b/Example/E07_encoder_demo/libraries/zf_common/zf_common_headfile.h
@@ -81,6 +81,7 @@
//===================================================外接设备驱动层===================================================
#include "zf_device_absolute_encoder.h"
+#include "zf_device_ble6a20.h"
#include "zf_device_bluetooth_ch9141.h"
#include "zf_device_gnss.h"
#include "zf_device_camera.h"
diff --git a/Example/E07_encoder_demo/libraries/zf_components/seekfree_assistant.c b/Example/E07_encoder_demo/libraries/zf_components/seekfree_assistant.c
index 0b7cb9d..af3bb96 100644
--- a/Example/E07_encoder_demo/libraries/zf_components/seekfree_assistant.c
+++ b/Example/E07_encoder_demo/libraries/zf_components/seekfree_assistant.c
@@ -1,20 +1,20 @@
/*********************************************************************************************************************
-* RT1064DVL6A Opensourec Library 即(RT1064DVL6A 开源库)是一个基于官方 SDK 接口的第三方开源库
+* TC264 Opensourec Library 即(TC264 开源库)是一个基于官方 SDK 接口的第三方开源库
* Copyright (c) 2022 SEEKFREE 逐飞科技
-*
-* 本文件是 RT1064DVL6A 开源库的一部分
-*
-* RT1064DVL6A 开源库 是免费软件
+*
+* 本文件是 TC264 开源库的一部分
+*
+* TC264 开源库 是免费软件
* 您可以根据自由软件基金会发布的 GPL(GNU General Public License,即 GNU通用公共许可证)的条款
* 即 GPL 的第3版(即 GPL3.0)或(您选择的)任何后来的版本,重新发布和/或修改它
-*
+*
* 本开源库的发布是希望它能发挥作用,但并未对其作任何的保证
* 甚至没有隐含的适销性或适合特定用途的保证
* 更多细节请参见 GPL
-*
+*
* 您应该在收到本开源库的同时收到一份 GPL 的副本
* 如果没有,请参阅
-*
+*
* 额外注明:
* 本开源库使用 GPL3.0 开源许可证协议 以上许可申明为译文版本
* 许可申明英文版在 libraries/doc 文件夹下的 GPL3_permission_statement.txt 文件中
@@ -24,13 +24,13 @@
* 文件名称 seekfree_assistant
* 公司名称 成都逐飞科技有限公司
* 版本信息 查看 libraries/doc 文件夹内 version 文件 版本说明
-* 开发环境 IAR 8.32.4 or MDK 5.33
-* 适用平台 RT1064DVL6A
+* 开发环境 ADS v1.9.20
+* 适用平台 TC264D
* 店铺链接 https://seekfree.taobao.com/
-*
+*
* 修改记录
-* 日期 作者 备注
-* 2024-1-11 SeekFree first version
+* 日期 作者 备注
+* 2024-01-01 pudding first version
********************************************************************************************************************/
#include "zf_common_debug.h"
diff --git a/Example/E07_encoder_demo/libraries/zf_components/seekfree_assistant.h b/Example/E07_encoder_demo/libraries/zf_components/seekfree_assistant.h
index ae0f67c..5e04a1d 100644
--- a/Example/E07_encoder_demo/libraries/zf_components/seekfree_assistant.h
+++ b/Example/E07_encoder_demo/libraries/zf_components/seekfree_assistant.h
@@ -1,20 +1,20 @@
/*********************************************************************************************************************
-* RT1064DVL6A Opensourec Library 即(RT1064DVL6A 开源库)是一个基于官方 SDK 接口的第三方开源库
+* TC264 Opensourec Library 即(TC264 开源库)是一个基于官方 SDK 接口的第三方开源库
* Copyright (c) 2022 SEEKFREE 逐飞科技
-*
-* 本文件是 RT1064DVL6A 开源库的一部分
-*
-* RT1064DVL6A 开源库 是免费软件
+*
+* 本文件是 TC264 开源库的一部分
+*
+* TC264 开源库 是免费软件
* 您可以根据自由软件基金会发布的 GPL(GNU General Public License,即 GNU通用公共许可证)的条款
* 即 GPL 的第3版(即 GPL3.0)或(您选择的)任何后来的版本,重新发布和/或修改它
-*
+*
* 本开源库的发布是希望它能发挥作用,但并未对其作任何的保证
* 甚至没有隐含的适销性或适合特定用途的保证
* 更多细节请参见 GPL
-*
+*
* 您应该在收到本开源库的同时收到一份 GPL 的副本
* 如果没有,请参阅
-*
+*
* 额外注明:
* 本开源库使用 GPL3.0 开源许可证协议 以上许可申明为译文版本
* 许可申明英文版在 libraries/doc 文件夹下的 GPL3_permission_statement.txt 文件中
@@ -24,13 +24,13 @@
* 文件名称 seekfree_assistant
* 公司名称 成都逐飞科技有限公司
* 版本信息 查看 libraries/doc 文件夹内 version 文件 版本说明
-* 开发环境 IAR 8.32.4 or MDK 5.33
-* 适用平台 RT1064DVL6A
+* 开发环境 ADS v1.9.20
+* 适用平台 TC264D
* 店铺链接 https://seekfree.taobao.com/
-*
+*
* 修改记录
-* 日期 作者 备注
-* 2024-1-11 SeekFree first version
+* 日期 作者 备注
+* 2024-01-01 pudding first version
********************************************************************************************************************/
#ifndef _seekfree_assistant_h_
#define _seekfree_assistant_h_
@@ -47,27 +47,27 @@
// 定义接收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 )
diff --git a/Example/E07_encoder_demo/libraries/zf_components/seekfree_assistant_interface.c b/Example/E07_encoder_demo/libraries/zf_components/seekfree_assistant_interface.c
index fdade63..cc42e43 100644
--- a/Example/E07_encoder_demo/libraries/zf_components/seekfree_assistant_interface.c
+++ b/Example/E07_encoder_demo/libraries/zf_components/seekfree_assistant_interface.c
@@ -1,20 +1,20 @@
/*********************************************************************************************************************
-* RT1064DVL6A Opensourec Library 即(RT1064DVL6A 开源库)是一个基于官方 SDK 接口的第三方开源库
+* TC264 Opensourec Library 即(TC264 开源库)是一个基于官方 SDK 接口的第三方开源库
* Copyright (c) 2022 SEEKFREE 逐飞科技
-*
-* 本文件是 RT1064DVL6A 开源库的一部分
-*
-* RT1064DVL6A 开源库 是免费软件
+*
+* 本文件是 TC264 开源库的一部分
+*
+* TC264 开源库 是免费软件
* 您可以根据自由软件基金会发布的 GPL(GNU General Public License,即 GNU通用公共许可证)的条款
* 即 GPL 的第3版(即 GPL3.0)或(您选择的)任何后来的版本,重新发布和/或修改它
-*
+*
* 本开源库的发布是希望它能发挥作用,但并未对其作任何的保证
* 甚至没有隐含的适销性或适合特定用途的保证
* 更多细节请参见 GPL
-*
+*
* 您应该在收到本开源库的同时收到一份 GPL 的副本
* 如果没有,请参阅
-*
+*
* 额外注明:
* 本开源库使用 GPL3.0 开源许可证协议 以上许可申明为译文版本
* 许可申明英文版在 libraries/doc 文件夹下的 GPL3_permission_statement.txt 文件中
@@ -24,13 +24,13 @@
* 文件名称 seekfree_assistant_interface
* 公司名称 成都逐飞科技有限公司
* 版本信息 查看 libraries/doc 文件夹内 version 文件 版本说明
-* 开发环境 IAR 8.32.4 or MDK 5.33
-* 适用平台 RT1064DVL6A
+* 开发环境 ADS v1.9.20
+* 适用平台 TC264D
* 店铺链接 https://seekfree.taobao.com/
-*
+*
* 修改记录
-* 日期 作者 备注
-* 2024-1-11 SeekFree first version
+* 日期 作者 备注
+* 2024-01-01 pudding first version
********************************************************************************************************************/
#include "zf_common_typedef.h"
@@ -38,6 +38,7 @@
#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"
@@ -100,6 +101,12 @@ ZF_WEAK void seekfree_assistant_interface_init (seekfree_assistant_transfer_devi
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;
diff --git a/Example/E07_encoder_demo/libraries/zf_components/seekfree_assistant_interface.h b/Example/E07_encoder_demo/libraries/zf_components/seekfree_assistant_interface.h
index 940b5f7..1d0158c 100644
--- a/Example/E07_encoder_demo/libraries/zf_components/seekfree_assistant_interface.h
+++ b/Example/E07_encoder_demo/libraries/zf_components/seekfree_assistant_interface.h
@@ -1,20 +1,20 @@
/*********************************************************************************************************************
-* RT1064DVL6A Opensourec Library 即(RT1064DVL6A 开源库)是一个基于官方 SDK 接口的第三方开源库
+* TC264 Opensourec Library 即(TC264 开源库)是一个基于官方 SDK 接口的第三方开源库
* Copyright (c) 2022 SEEKFREE 逐飞科技
-*
-* 本文件是 RT1064DVL6A 开源库的一部分
-*
-* RT1064DVL6A 开源库 是免费软件
+*
+* 本文件是 TC264 开源库的一部分
+*
+* TC264 开源库 是免费软件
* 您可以根据自由软件基金会发布的 GPL(GNU General Public License,即 GNU通用公共许可证)的条款
* 即 GPL 的第3版(即 GPL3.0)或(您选择的)任何后来的版本,重新发布和/或修改它
-*
+*
* 本开源库的发布是希望它能发挥作用,但并未对其作任何的保证
* 甚至没有隐含的适销性或适合特定用途的保证
* 更多细节请参见 GPL
-*
+*
* 您应该在收到本开源库的同时收到一份 GPL 的副本
* 如果没有,请参阅
-*
+*
* 额外注明:
* 本开源库使用 GPL3.0 开源许可证协议 以上许可申明为译文版本
* 许可申明英文版在 libraries/doc 文件夹下的 GPL3_permission_statement.txt 文件中
@@ -24,13 +24,13 @@
* 文件名称 seekfree_assistant_interface
* 公司名称 成都逐飞科技有限公司
* 版本信息 查看 libraries/doc 文件夹内 version 文件 版本说明
-* 开发环境 IAR 8.32.4 or MDK 5.33
-* 适用平台 RT1064DVL6A
+* 开发环境 ADS v1.9.20
+* 适用平台 TC264D
* 店铺链接 https://seekfree.taobao.com/
-*
+*
* 修改记录
-* 日期 作者 备注
-* 2024-1-11 SeekFree first version
+* 日期 作者 备注
+* 2024-01-01 pudding first version
********************************************************************************************************************/
#ifndef _seekfree_assistant_interface_h_
@@ -43,6 +43,7 @@ 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
diff --git a/Example/E07_encoder_demo/libraries/zf_device/zf_device_ble6a20.c b/Example/E07_encoder_demo/libraries/zf_device/zf_device_ble6a20.c
new file mode 100644
index 0000000..ea8649e
--- /dev/null
+++ b/Example/E07_encoder_demo/libraries/zf_device/zf_device_ble6a20.c
@@ -0,0 +1,299 @@
+/*********************************************************************************************************************
+* TC264 Opensourec Library 即(TC264 开源库)是一个基于官方 SDK 接口的第三方开源库
+* Copyright (c) 2022 SEEKFREE 逐飞科技
+*
+* 本文件是 TC264 开源库的一部分
+*
+* TC264 开源库 是免费软件
+* 您可以根据自由软件基金会发布的 GPL(GNU General Public License,即 GNU通用公共许可证)的条款
+* 即 GPL 的第3版(即 GPL3.0)或(您选择的)任何后来的版本,重新发布和/或修改它
+*
+* 本开源库的发布是希望它能发挥作用,但并未对其作任何的保证
+* 甚至没有隐含的适销性或适合特定用途的保证
+* 更多细节请参见 GPL
+*
+* 您应该在收到本开源库的同时收到一份 GPL 的副本
+* 如果没有,请参阅
+*
+* 额外注明:
+* 本开源库使用 GPL3.0 开源许可证协议 以上许可申明为译文版本
+* 许可申明英文版在 libraries/doc 文件夹下的 GPL3_permission_statement.txt 文件中
+* 许可证副本在 libraries 文件夹下 即该文件夹下的 LICENSE 文件
+* 欢迎各位使用并传播本程序 但修改内容时必须保留逐飞科技的版权声明(即本声明)
+*
+* 文件名称 zf_device_ble6a20
+* 公司名称 成都逐飞科技有限公司
+* 版本信息 查看 libraries/doc 文件夹内 version 文件 版本说明
+* 开发环境 ADS v1.9.20
+* 适用平台 TC264D
+* 店铺链接 https://seekfree.taobao.com/
+*
+* 修改记录
+* 日期 作者 备注
+* 2024-07-02 pudding first version
+********************************************************************************************************************/
+/*********************************************************************************************************************
+* 接线定义:
+* ------------------------------------
+* 模块管脚 单片机管脚
+* RX 查看 zf_device_ble6a20.h 中 BLE6A20_RX_PIN 宏定义
+* TX 查看 zf_device_ble6a20.h 中 BLE6A20_TX_PIN 宏定义
+* RTS 查看 zf_device_ble6a20.h 中 BLE6A20_RTS_PIN 宏定义
+* VCC 3.3V电源
+* GND 电源地
+* 其余引脚悬空
+* ------------------------------------
+*********************************************************************************************************************/
+
+#include "zf_common_clock.h"
+#include "zf_common_debug.h"
+#include "zf_common_fifo.h"
+#include "zf_driver_delay.h"
+#include "zf_driver_gpio.h"
+#include "zf_driver_uart.h"
+#include "zf_device_type.h"
+#include "zf_device_ble6a20.h"
+
+static fifo_struct ble6a20_fifo;
+static uint8 ble6a20_buffer[BLE6A20_BUFFER_SIZE];
+
+static uint8 ble6a20_data = 0;
+#if (1 == BLE6A20_AUTO_BAUD_RATE)
+static volatile ble6a20_auto_baudrate_state_enum ble6a20_auto_baud_flag = BLE6A20_AUTO_BAUD_RATE_INIT;
+static volatile uint8 ble6a20_auto_baud_data[3] = {0x00, 0x01, 0x03};
+#endif
+
+//-------------------------------------------------------------------------------------------------------------------
+// 函数简介 蓝牙转串口模块 发送数据
+// 参数说明 data 8bit 数据
+// 返回参数 uint32 剩余发送长度 0-发送完毕 1-未发送完成
+// 使用示例 ble6a20_send_byte(data);
+// 备注信息
+//-------------------------------------------------------------------------------------------------------------------
+uint32 ble6a20_send_byte (const uint8 data)
+{
+ uint16 time_count = BLE6A20_TIMEOUT_COUNT;
+ while(time_count)
+ {
+ if(!gpio_get_level(BLE6A20_RTS_PIN))
+ {
+ uart_write_byte(BLE6A20_INDEX, data); // 发送数据
+ break;
+ }
+ time_count --;
+ system_delay_ms(1);
+ }
+ return (0 == time_count);
+}
+
+//-------------------------------------------------------------------------------------------------------------------
+// 函数简介 蓝牙转串口模块 发送数据块
+// 参数说明 *buff 发送缓冲区
+// 参数说明 len 发送数据长度
+// 返回参数 uint32 剩余发送长度
+// 使用示例 ble6a20_send_buffer(buff, 64);
+// 备注信息
+//-------------------------------------------------------------------------------------------------------------------
+uint32 ble6a20_send_buffer (const uint8 *buff, uint32 len)
+{
+ zf_assert(NULL != buff);
+ uint16 time_count = 0;
+ while(0 != len)
+ {
+ if(!gpio_get_level(BLE6A20_RTS_PIN)) // 如果RTS为低电平 则继续发送数据
+ {
+ if(30 <= len) // 数据分 30byte 每包发送
+ {
+ uart_write_buffer(BLE6A20_INDEX, buff, 30); // 发送数据
+ buff += 30; // 地址偏移
+ len -= 30; // 数量
+ time_count = 0;
+ }
+ else // 不足 30byte 的数据一次性发送完毕
+ {
+ uart_write_buffer(BLE6A20_INDEX, buff, len); // 发送数据
+ len = 0;
+ break;
+ }
+ }
+ else // 如果RTS为高电平 则模块忙
+ {
+ if(BLE6A20_TIMEOUT_COUNT <= (++ time_count)) // 超出了最大等待时间
+ {
+ break; // 退出发送
+ }
+ system_delay_ms(1);
+ }
+ }
+ return len;
+}
+
+//-------------------------------------------------------------------------------------------------------------------
+// 函数简介 蓝牙转串口模块 发送字符串
+// 参数说明 *str 要发送的字符串地址
+// 返回参数 uint32 剩余发送长度
+// 使用示例 ble6a20_send_string("Believe in yourself.");
+// 备注信息
+//-------------------------------------------------------------------------------------------------------------------
+uint32 ble6a20_send_string (const char *str)
+{
+ zf_assert(NULL != str);
+ uint16 time_count = 0;
+ uint32 len = strlen(str);
+ while(0 != len)
+ {
+ if(!gpio_get_level(BLE6A20_RTS_PIN)) // 如果RTS为低电平 则继续发送数据
+ {
+ if(128 <= len) // 数据分 128byte 每包发送
+ {
+ uart_write_buffer(BLE6A20_INDEX, (const uint8 *)str, 128); // 发送数据
+ str += 128; // 地址偏移
+ len -= 128; // 数量
+ time_count = 0;
+ }
+ else // 不足 128byte 的数据一次性发送完毕
+ {
+ uart_write_buffer(BLE6A20_INDEX, (const uint8 *)str, len);// 发送数据
+ len = 0;
+ break;
+ }
+ }
+ else // 如果RTS为高电平 则模块忙
+ {
+ if(BLE6A20_TIMEOUT_COUNT <= (++ time_count)) // 超出了最大等待时间
+ {
+ break; // 退出发送
+ }
+ system_delay_ms(1);
+ }
+ }
+ return len;
+}
+
+//-------------------------------------------------------------------------------------------------------------------
+// 函数简介 蓝牙转串口模块 发送摄像头图像至上位机查看图像
+// 参数说明 *image_addr 需要发送的图像地址
+// 参数说明 image_size 图像的大小
+// 返回参数 void
+// 使用示例 ble6a20_send_image(&mt9v03x_image[0][0], MT9V03X_IMAGE_SIZE);
+// 备注信息
+//-------------------------------------------------------------------------------------------------------------------
+void ble6a20_send_image (const uint8 *image_addr, uint32 image_size)
+{
+ zf_assert(NULL != image_addr);
+ extern uint8 camera_send_image_frame_header[4];
+ ble6a20_send_buffer(camera_send_image_frame_header, 4);
+ ble6a20_send_buffer((uint8 *)image_addr, image_size);
+}
+
+//-------------------------------------------------------------------------------------------------------------------
+// 函数简介 蓝牙转串口模块 读取缓冲区数据
+// 参数说明 *buff 接收缓冲区
+// 参数说明 len 读取数据长度
+// 返回参数 uint32 实际读取数据长度
+// 使用示例 ble6a20_read_buffer(buff, 32);
+// 备注信息
+//-------------------------------------------------------------------------------------------------------------------
+uint32 ble6a20_read_buffer (uint8 *buff, uint32 len)
+{
+ zf_assert(NULL != buff);
+ uint32 data_len = len;
+ fifo_read_buffer(&ble6a20_fifo, buff, &data_len, FIFO_READ_AND_CLEAN);
+ return data_len;
+}
+
+//-------------------------------------------------------------------------------------------------------------------
+// 函数简介 蓝牙转串口模块 串口中断回调函数
+// 参数说明 void
+// 返回参数 void
+// 使用示例 ble6a20_callback();
+// 备注信息 该函数在 ISR 文件 串口中断程序被调用
+// 由串口中断服务函数调用 wireless_module_uart_handler() 函数
+// 再由 wireless_module_uart_handler() 函数调用本函数
+//-------------------------------------------------------------------------------------------------------------------
+void ble6a20_callback (void)
+{
+ if(uart_query_byte(BLE6A20_INDEX, &ble6a20_data))
+ {
+ fifo_write_buffer(&ble6a20_fifo, &ble6a20_data, 1);
+#if BLE6A20_AUTO_BAUD_RATE // 开启自动波特率
+ if(BLE6A20_AUTO_BAUD_RATE_START == ble6a20_auto_baud_flag && 3 == fifo_used(&ble6a20_fifo))
+ {
+ uint32 ble6a20_auto_baud_count = 3;
+ ble6a20_auto_baud_flag = BLE6A20_AUTO_BAUD_RATE_GET_ACK;
+ fifo_read_buffer(&ble6a20_fifo, (uint8 *)ble6a20_auto_baud_data, (uint32 *)&ble6a20_auto_baud_count, FIFO_READ_AND_CLEAN);
+ }
+#endif
+ }
+}
+
+//-------------------------------------------------------------------------------------------------------------------
+// 函数简介 蓝牙转串口模块 初始化
+// 参数说明 void
+// 返回参数 void
+// 使用示例 ble6a20_init();
+// 备注信息
+//-------------------------------------------------------------------------------------------------------------------
+uint8 ble6a20_init (void)
+{
+ uint8 return_state = 0;
+
+ // 等待模块初始化
+ system_delay_ms(50);
+
+ set_wireless_type(BLE6A20, ble6a20_callback);
+
+ fifo_init(&ble6a20_fifo, FIFO_DATA_8BIT, ble6a20_buffer, BLE6A20_BUFFER_SIZE);
+ gpio_init(BLE6A20_RTS_PIN, GPI, GPIO_HIGH, GPI_PULL_UP);
+#if(0 == BLE6A20_AUTO_BAUD_RATE) // 关闭自动波特率
+ // 本函数使用的波特率为115200 为蓝牙转串口模块的默认波特率 如需其他波特率请自行配置模块并修改串口的波特率
+ uart_init (BLE6A20_INDEX, BLE6A20_BUAD_RATE, BLE6A20_RX_PIN, BLE6A20_TX_PIN); // 初始化串口
+ uart_rx_interrupt(BLE6A20_INDEX, 1);
+#elif(1 == BLE6A20_AUTO_BAUD_RATE) // 开启自动波特率
+ uint8 rts_init_status = 0;
+
+ ble6a20_auto_baud_flag = BLE6A20_AUTO_BAUD_RATE_INIT;
+ ble6a20_auto_baud_data[0] = 0;
+ ble6a20_auto_baud_data[1] = 1;
+ ble6a20_auto_baud_data[2] = 3;
+
+ rts_init_status = gpio_get_level(BLE6A20_RTS_PIN);
+ gpio_init(BLE6A20_RTS_PIN, GPO, rts_init_status, GPO_PUSH_PULL); // 初始化流控引脚
+
+ uart_init (BLE6A20_INDEX, BLE6A20_BUAD_RATE, BLE6A20_RX_PIN, BLE6A20_TX_PIN); // 初始化串口
+ uart_rx_interrupt(BLE6A20_INDEX, 1);
+
+ system_delay_ms(5); // 模块上电之后需要延时等待
+ gpio_set_level(BLE6A20_RTS_PIN, !rts_init_status); // RTS引脚拉高,进入自动波特率模式
+ system_delay_ms(100); // RTS拉高之后必须延时20ms
+ gpio_toggle_level(BLE6A20_RTS_PIN); // RTS引脚取反
+
+ do
+ {
+ ble6a20_auto_baud_flag = BLE6A20_AUTO_BAUD_RATE_START;
+ uart_write_byte(BLE6A20_INDEX, ble6a20_auto_baud_data[0]); // 发送特定数据 用于模块自动判断波特率
+ uart_write_byte(BLE6A20_INDEX, ble6a20_auto_baud_data[1]); // 发送特定数据 用于模块自动判断波特率
+ uart_write_byte(BLE6A20_INDEX, ble6a20_auto_baud_data[2]); // 发送特定数据 用于模块自动判断波特率
+ system_delay_ms(20);
+
+ if(BLE6A20_AUTO_BAUD_RATE_GET_ACK != ble6a20_auto_baud_flag) // 检验自动波特率是否完成
+ {
+ return_state = 1; // 如果程序进入到此语句内 说明自动波特率失败了
+ break;
+ }
+
+ if( 0xa5 != ble6a20_auto_baud_data[0] && // 检验自动波特率是否正确
+ 0xff != ble6a20_auto_baud_data[1] && // 检验自动波特率是否正确
+ 0xff != ble6a20_auto_baud_data[2] ) // 检验自动波特率是否正确
+ {
+ return_state = 1; // 如果程序进入到此语句内 说明自动波特率失败了
+ break;
+ }
+ ble6a20_auto_baud_flag = BLE6A20_AUTO_BAUD_RATE_SUCCESS;
+
+ gpio_init(BLE6A20_RTS_PIN, GPI, 0, GPI_PULL_UP); // 初始化流控引脚
+ system_delay_ms(10); // 延时等待 模块准备就绪
+ }while(0);
+#endif
+ return return_state;
+}
diff --git a/Example/E07_encoder_demo/libraries/zf_device/zf_device_ble6a20.h b/Example/E07_encoder_demo/libraries/zf_device/zf_device_ble6a20.h
new file mode 100644
index 0000000..c037ea2
--- /dev/null
+++ b/Example/E07_encoder_demo/libraries/zf_device/zf_device_ble6a20.h
@@ -0,0 +1,108 @@
+/*********************************************************************************************************************
+* TC264 Opensourec Library 即(TC264 开源库)是一个基于官方 SDK 接口的第三方开源库
+* Copyright (c) 2022 SEEKFREE 逐飞科技
+*
+* 本文件是 TC264 开源库的一部分
+*
+* TC264 开源库 是免费软件
+* 您可以根据自由软件基金会发布的 GPL(GNU General Public License,即 GNU通用公共许可证)的条款
+* 即 GPL 的第3版(即 GPL3.0)或(您选择的)任何后来的版本,重新发布和/或修改它
+*
+* 本开源库的发布是希望它能发挥作用,但并未对其作任何的保证
+* 甚至没有隐含的适销性或适合特定用途的保证
+* 更多细节请参见 GPL
+*
+* 您应该在收到本开源库的同时收到一份 GPL 的副本
+* 如果没有,请参阅
+*
+* 额外注明:
+* 本开源库使用 GPL3.0 开源许可证协议 以上许可申明为译文版本
+* 许可申明英文版在 libraries/doc 文件夹下的 GPL3_permission_statement.txt 文件中
+* 许可证副本在 libraries 文件夹下 即该文件夹下的 LICENSE 文件
+* 欢迎各位使用并传播本程序 但修改内容时必须保留逐飞科技的版权声明(即本声明)
+*
+* 文件名称 zf_device_ble6a20.h
+* 公司名称 成都逐飞科技有限公司
+* 版本信息 查看 libraries/doc 文件夹内 version 文件 版本说明
+* 开发环境 ADS v1.9.20
+* 适用平台 TC264D
+* 店铺链接 https://seekfree.taobao.com/
+*
+* 修改记录
+* 日期 作者 备注
+* 2024-07-02 pudding first version
+********************************************************************************************************************/
+/*********************************************************************************************************************
+* 接线定义:
+* ------------------------------------
+* 模块管脚 单片机管脚
+* RX 查看 zf_device_ble6a20.h 中 BLE6A20_RX_PIN 宏定义
+* TX 查看 zf_device_ble6a20.h 中 BLE6A20_TX_PIN 宏定义
+* RTS 查看 zf_device_ble6a20.h 中 BLE6A20_RTS_PIN 宏定义
+* VCC 3.3V电源
+* GND 电源地
+* 其余引脚悬空
+* ------------------------------------
+*********************************************************************************************************************/
+
+
+#ifndef _zf_device_ble6a20_h_
+#define _zf_device_ble6a20_h_
+
+#include "zf_common_typedef.h"
+
+
+//=================================================定义 蓝牙串口 基本配置================================================
+
+#define BLE6A20_INDEX (UART_2) // 蓝牙串口对应使用的串口号
+#define BLE6A20_BUAD_RATE (115200) // 蓝牙串口对应使用的串口波特率
+ // 波特率仅支持 9600 57600 115200 230400 460800 921600 1500000 2000000
+#define BLE6A20_TX_PIN (UART2_RX_P10_6) // 蓝牙串口对应模块的 TX 要接到单片机的 RX
+#define BLE6A20_RX_PIN (UART2_TX_P10_5) // 蓝牙串口对应模块的 RX 要接到单片机的 TX
+#define BLE6A20_RTS_PIN (P10_2) // 蓝牙串口对应模块的 RTS 引脚
+
+#define BLE6A20_BUFFER_SIZE ( 64 ) // 蓝牙串口缓冲区大小
+#define BLE6A20_TIMEOUT_COUNT ( 0x64 ) // 蓝牙串口通讯超时范围
+
+// ------------------------------------ 自动波特率 ------------------------------------
+// 注意事项1:开启自动波特率务必连接RTS引脚 否则会开启失败。
+// 注意事项2:模块自动波特率失败的话 可以尝试断电重启
+
+// 开启自动波特率务必阅读上面两条 注意事项
+// 开启自动波特率务必阅读上面两条 注意事项
+// 开启自动波特率务必阅读上面两条 注意事项
+
+// 0:关闭自动波特率
+// 1:开启自动波特率 自动波特率的作用是修改 BLE6A20_BAUD 之后不需要对模块进行配置 模块会自动设置为对应的波特率
+// 自动波特率仅支持 9600 57600 115200 230400 460800 921600 1500000 2000000
+
+#define BLE6A20_AUTO_BAUD_RATE ( 0 )
+
+#if (1 == BLE6A20_AUTO_BAUD_RATE)
+typedef enum
+{
+ BLE6A20_AUTO_BAUD_RATE_SUCCESS,
+ BLE6A20_AUTO_BAUD_RATE_INIT,
+ BLE6A20_AUTO_BAUD_RATE_START,
+ BLE6A20_AUTO_BAUD_RATE_GET_ACK,
+}ble6a20_auto_baudrate_state_enum;
+#endif
+// ------------------------------------ 自动波特率 ------------------------------------
+
+//=================================================定义 蓝牙串口 基本配置================================================
+
+
+//=================================================声明 蓝牙串口 基础函数================================================
+uint32 ble6a20_send_byte (const uint8 data); // 蓝牙转串口模块 发送数据
+uint32 ble6a20_send_buffer (const uint8 *buff, uint32 len); // 蓝牙转串口模块 发送数据块
+uint32 ble6a20_send_string (const char *str); // 蓝牙转串口模块 发送字符串
+void ble6a20_send_image (const uint8 *image_addr, uint32 image_size); // 蓝牙转串口模块 发送摄像头图像至上位机查看图像
+
+uint32 ble6a20_read_buffer (uint8 *buff, uint32 len); // 蓝牙转串口模块 读取缓冲区数据
+
+void ble6a20_callback (void); // 蓝牙转串口模块 串口中断回调函数
+
+uint8 ble6a20_init (void); // 蓝牙转串口模块 初始化
+//=================================================声明 蓝牙串口 基础函数================================================
+
+#endif
diff --git a/Example/E07_encoder_demo/libraries/zf_device/zf_device_type.h b/Example/E07_encoder_demo/libraries/zf_device/zf_device_type.h
index 6c2b8da..4f8ec53 100644
--- a/Example/E07_encoder_demo/libraries/zf_device/zf_device_type.h
+++ b/Example/E07_encoder_demo/libraries/zf_device/zf_device_type.h
@@ -54,6 +54,7 @@ typedef enum
{
NO_WIRELESS = 0, // 无设备
WIRELESS_UART, // 无线串口
+ BLE6A20, // 蓝牙串口
BLUETOOTH_CH9141, // 蓝牙 CH9141
WIFI_UART, // 串口 WiFi
RECEIVER_UART, // 枪式遥控器
diff --git a/Example/E07_encoder_demo/libraries/zf_device/澶栬鏂囦欢璇存槑.txt b/Example/E07_encoder_demo/libraries/zf_device/澶栬鏂囦欢璇存槑.txt
new file mode 100644
index 0000000..1c96965
--- /dev/null
+++ b/Example/E07_encoder_demo/libraries/zf_device/澶栬鏂囦欢璇存槑.txt
@@ -0,0 +1,97 @@
+
+如需获取详细资料可联系淘宝店铺客服:https://seekfree.taobao.com/
+如需获取详细资料可联系淘宝店铺客服:https://seekfree.taobao.com/
+如需获取详细资料可联系淘宝店铺客服:https://seekfree.taobao.com/
+
+本文件主要用于说明 zf_device 目录下各个文件所对应的外设模块
+本文件主要用于说明 zf_device 目录下各个文件所对应的外设模块
+本文件主要用于说明 zf_device 目录下各个文件所对应的外设模块
+
+
+=================================================== 测距模块 ===================================================
+
+zf_device_dl1a.h TOF 测距模块 DL1A 频率:33hz 最大距离:1.2 米
+
+zf_device_dl1b.h TOF 测距模块 DL1B 频率:100hz 最大距离:1.4 米
+
+=================================================== 测距模块 ===================================================
+
+
+
+==================================================== 陀螺仪 ====================================================
+
+zf_device_mpu6050.h MPU6050 六轴陀螺仪 传统 IIC 通讯
+
+zf_device_icm20602.h ICM20602 六轴陀螺仪 支持 SPI 采值
+
+zf_device_imu660ra.h IMU660RA 六轴陀螺仪 高精度陀螺仪
+
+zf_device_imu963ra.h IMU963RA 九轴陀螺仪 支持地磁计采集
+
+==================================================== 陀螺仪 ====================================================
+
+
+
+=================================================== 屏幕显示 ===================================================
+
+zf_device_ips114.h IPS114 液晶屏幕 1.14 寸 分辨率:240 * 135
+
+zf_device_ips200.h IPS200 液晶屏幕 2.0 寸 分辨率:240 * 320
+
+zf_device_tft180.h TFT180 屏幕 1.8寸 分辨率:160 * 128
+
+zf_device_oled.h OLED 液晶屏幕 0.96 寸 分辨率:128 * 64
+
+=================================================== 屏幕显示 ===================================================
+
+
+
+================================================== 图像传感器 ==================================================
+
+zf_device_mt9v03x.h MT9V03X 总钻风灰度摄像头
+
+zf_device_ov7725.h OV7725 小钻风硬件二值化摄像头
+
+zf_device_scc8660.h SCC8660 凌瞳彩色摄像头
+
+zf_device_tsl1401.h TSL1401 红孩儿线阵CCD
+
+================================================== 图像传感器 ==================================================
+
+
+
+=================================================== 无线通讯 ===================================================
+
+zf_device_ble6a20.h 蓝牙串口模块 无线通讯
+
+zf_device_bluetooth_ch9141.h CH9141 蓝牙通讯模块 蓝牙组网通讯
+
+zf_device_wifi_spi.h WIFI-SPI 高速WIFI无线通讯模块
+
+zf_device_wifi_uart.h WIFI-UART 串口WIFI无线通讯模块
+
+zf_device_wireless_uart.h 无线串口模块
+
+=================================================== 无线通讯 ===================================================
+
+
+
+=================================================== 远程遥控 ===================================================
+
+zf_device_uart_receiver.h SUBS 串口遥控器 串口通讯 长距离遥控 2.4G频段
+
+=================================================== 远程遥控 ===================================================
+
+
+
+================================================== 其他传感器 ==================================================
+
+zf_device_absolute_encoder.h 360° 位置传感器 绝对式迷你 mini 编码器 分辨率:0.088°
+
+zf_device_gnss.h GPS 及 RTK 定位模块 双频高精度定位模块 亚米级定位
+
+zf_device_key.h GPIO 按键驱动 用于检测主板按键状态
+
+zf_device_virtual_oscilloscope.h VisualScope 虚拟示波器
+
+================================================== 其他传感器 ==================================================
\ No newline at end of file
diff --git a/Example/E08_eeprom_demo/libraries/doc/version.txt b/Example/E08_eeprom_demo/libraries/doc/version.txt
index 68afc86..c4e0d0a 100644
--- a/Example/E08_eeprom_demo/libraries/doc/version.txt
+++ b/Example/E08_eeprom_demo/libraries/doc/version.txt
@@ -1,3 +1,5 @@
+V3.3.0
+ 新增蓝牙串口通讯模块
V3.2.13
新增一个微秒延时函数 该延时函数为普通延时 非中断延时
V3.2.12
diff --git a/Example/E08_eeprom_demo/libraries/zf_common/zf_common_headfile.h b/Example/E08_eeprom_demo/libraries/zf_common/zf_common_headfile.h
index c0d833b..3a140e3 100644
--- a/Example/E08_eeprom_demo/libraries/zf_common/zf_common_headfile.h
+++ b/Example/E08_eeprom_demo/libraries/zf_common/zf_common_headfile.h
@@ -81,6 +81,7 @@
//===================================================外接设备驱动层===================================================
#include "zf_device_absolute_encoder.h"
+#include "zf_device_ble6a20.h"
#include "zf_device_bluetooth_ch9141.h"
#include "zf_device_gnss.h"
#include "zf_device_camera.h"
diff --git a/Example/E08_eeprom_demo/libraries/zf_components/seekfree_assistant.c b/Example/E08_eeprom_demo/libraries/zf_components/seekfree_assistant.c
index 0b7cb9d..af3bb96 100644
--- a/Example/E08_eeprom_demo/libraries/zf_components/seekfree_assistant.c
+++ b/Example/E08_eeprom_demo/libraries/zf_components/seekfree_assistant.c
@@ -1,20 +1,20 @@
/*********************************************************************************************************************
-* RT1064DVL6A Opensourec Library 即(RT1064DVL6A 开源库)是一个基于官方 SDK 接口的第三方开源库
+* TC264 Opensourec Library 即(TC264 开源库)是一个基于官方 SDK 接口的第三方开源库
* Copyright (c) 2022 SEEKFREE 逐飞科技
-*
-* 本文件是 RT1064DVL6A 开源库的一部分
-*
-* RT1064DVL6A 开源库 是免费软件
+*
+* 本文件是 TC264 开源库的一部分
+*
+* TC264 开源库 是免费软件
* 您可以根据自由软件基金会发布的 GPL(GNU General Public License,即 GNU通用公共许可证)的条款
* 即 GPL 的第3版(即 GPL3.0)或(您选择的)任何后来的版本,重新发布和/或修改它
-*
+*
* 本开源库的发布是希望它能发挥作用,但并未对其作任何的保证
* 甚至没有隐含的适销性或适合特定用途的保证
* 更多细节请参见 GPL
-*
+*
* 您应该在收到本开源库的同时收到一份 GPL 的副本
* 如果没有,请参阅
-*
+*
* 额外注明:
* 本开源库使用 GPL3.0 开源许可证协议 以上许可申明为译文版本
* 许可申明英文版在 libraries/doc 文件夹下的 GPL3_permission_statement.txt 文件中
@@ -24,13 +24,13 @@
* 文件名称 seekfree_assistant
* 公司名称 成都逐飞科技有限公司
* 版本信息 查看 libraries/doc 文件夹内 version 文件 版本说明
-* 开发环境 IAR 8.32.4 or MDK 5.33
-* 适用平台 RT1064DVL6A
+* 开发环境 ADS v1.9.20
+* 适用平台 TC264D
* 店铺链接 https://seekfree.taobao.com/
-*
+*
* 修改记录
-* 日期 作者 备注
-* 2024-1-11 SeekFree first version
+* 日期 作者 备注
+* 2024-01-01 pudding first version
********************************************************************************************************************/
#include "zf_common_debug.h"
diff --git a/Example/E08_eeprom_demo/libraries/zf_components/seekfree_assistant.h b/Example/E08_eeprom_demo/libraries/zf_components/seekfree_assistant.h
index ae0f67c..5e04a1d 100644
--- a/Example/E08_eeprom_demo/libraries/zf_components/seekfree_assistant.h
+++ b/Example/E08_eeprom_demo/libraries/zf_components/seekfree_assistant.h
@@ -1,20 +1,20 @@
/*********************************************************************************************************************
-* RT1064DVL6A Opensourec Library 即(RT1064DVL6A 开源库)是一个基于官方 SDK 接口的第三方开源库
+* TC264 Opensourec Library 即(TC264 开源库)是一个基于官方 SDK 接口的第三方开源库
* Copyright (c) 2022 SEEKFREE 逐飞科技
-*
-* 本文件是 RT1064DVL6A 开源库的一部分
-*
-* RT1064DVL6A 开源库 是免费软件
+*
+* 本文件是 TC264 开源库的一部分
+*
+* TC264 开源库 是免费软件
* 您可以根据自由软件基金会发布的 GPL(GNU General Public License,即 GNU通用公共许可证)的条款
* 即 GPL 的第3版(即 GPL3.0)或(您选择的)任何后来的版本,重新发布和/或修改它
-*
+*
* 本开源库的发布是希望它能发挥作用,但并未对其作任何的保证
* 甚至没有隐含的适销性或适合特定用途的保证
* 更多细节请参见 GPL
-*
+*
* 您应该在收到本开源库的同时收到一份 GPL 的副本
* 如果没有,请参阅
-*
+*
* 额外注明:
* 本开源库使用 GPL3.0 开源许可证协议 以上许可申明为译文版本
* 许可申明英文版在 libraries/doc 文件夹下的 GPL3_permission_statement.txt 文件中
@@ -24,13 +24,13 @@
* 文件名称 seekfree_assistant
* 公司名称 成都逐飞科技有限公司
* 版本信息 查看 libraries/doc 文件夹内 version 文件 版本说明
-* 开发环境 IAR 8.32.4 or MDK 5.33
-* 适用平台 RT1064DVL6A
+* 开发环境 ADS v1.9.20
+* 适用平台 TC264D
* 店铺链接 https://seekfree.taobao.com/
-*
+*
* 修改记录
-* 日期 作者 备注
-* 2024-1-11 SeekFree first version
+* 日期 作者 备注
+* 2024-01-01 pudding first version
********************************************************************************************************************/
#ifndef _seekfree_assistant_h_
#define _seekfree_assistant_h_
@@ -47,27 +47,27 @@
// 定义接收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 )
diff --git a/Example/E08_eeprom_demo/libraries/zf_components/seekfree_assistant_interface.c b/Example/E08_eeprom_demo/libraries/zf_components/seekfree_assistant_interface.c
index fdade63..cc42e43 100644
--- a/Example/E08_eeprom_demo/libraries/zf_components/seekfree_assistant_interface.c
+++ b/Example/E08_eeprom_demo/libraries/zf_components/seekfree_assistant_interface.c
@@ -1,20 +1,20 @@
/*********************************************************************************************************************
-* RT1064DVL6A Opensourec Library 即(RT1064DVL6A 开源库)是一个基于官方 SDK 接口的第三方开源库
+* TC264 Opensourec Library 即(TC264 开源库)是一个基于官方 SDK 接口的第三方开源库
* Copyright (c) 2022 SEEKFREE 逐飞科技
-*
-* 本文件是 RT1064DVL6A 开源库的一部分
-*
-* RT1064DVL6A 开源库 是免费软件
+*
+* 本文件是 TC264 开源库的一部分
+*
+* TC264 开源库 是免费软件
* 您可以根据自由软件基金会发布的 GPL(GNU General Public License,即 GNU通用公共许可证)的条款
* 即 GPL 的第3版(即 GPL3.0)或(您选择的)任何后来的版本,重新发布和/或修改它
-*
+*
* 本开源库的发布是希望它能发挥作用,但并未对其作任何的保证
* 甚至没有隐含的适销性或适合特定用途的保证
* 更多细节请参见 GPL
-*
+*
* 您应该在收到本开源库的同时收到一份 GPL 的副本
* 如果没有,请参阅
-*
+*
* 额外注明:
* 本开源库使用 GPL3.0 开源许可证协议 以上许可申明为译文版本
* 许可申明英文版在 libraries/doc 文件夹下的 GPL3_permission_statement.txt 文件中
@@ -24,13 +24,13 @@
* 文件名称 seekfree_assistant_interface
* 公司名称 成都逐飞科技有限公司
* 版本信息 查看 libraries/doc 文件夹内 version 文件 版本说明
-* 开发环境 IAR 8.32.4 or MDK 5.33
-* 适用平台 RT1064DVL6A
+* 开发环境 ADS v1.9.20
+* 适用平台 TC264D
* 店铺链接 https://seekfree.taobao.com/
-*
+*
* 修改记录
-* 日期 作者 备注
-* 2024-1-11 SeekFree first version
+* 日期 作者 备注
+* 2024-01-01 pudding first version
********************************************************************************************************************/
#include "zf_common_typedef.h"
@@ -38,6 +38,7 @@
#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"
@@ -100,6 +101,12 @@ ZF_WEAK void seekfree_assistant_interface_init (seekfree_assistant_transfer_devi
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;
diff --git a/Example/E08_eeprom_demo/libraries/zf_components/seekfree_assistant_interface.h b/Example/E08_eeprom_demo/libraries/zf_components/seekfree_assistant_interface.h
index 940b5f7..1d0158c 100644
--- a/Example/E08_eeprom_demo/libraries/zf_components/seekfree_assistant_interface.h
+++ b/Example/E08_eeprom_demo/libraries/zf_components/seekfree_assistant_interface.h
@@ -1,20 +1,20 @@
/*********************************************************************************************************************
-* RT1064DVL6A Opensourec Library 即(RT1064DVL6A 开源库)是一个基于官方 SDK 接口的第三方开源库
+* TC264 Opensourec Library 即(TC264 开源库)是一个基于官方 SDK 接口的第三方开源库
* Copyright (c) 2022 SEEKFREE 逐飞科技
-*
-* 本文件是 RT1064DVL6A 开源库的一部分
-*
-* RT1064DVL6A 开源库 是免费软件
+*
+* 本文件是 TC264 开源库的一部分
+*
+* TC264 开源库 是免费软件
* 您可以根据自由软件基金会发布的 GPL(GNU General Public License,即 GNU通用公共许可证)的条款
* 即 GPL 的第3版(即 GPL3.0)或(您选择的)任何后来的版本,重新发布和/或修改它
-*
+*
* 本开源库的发布是希望它能发挥作用,但并未对其作任何的保证
* 甚至没有隐含的适销性或适合特定用途的保证
* 更多细节请参见 GPL
-*
+*
* 您应该在收到本开源库的同时收到一份 GPL 的副本
* 如果没有,请参阅
-*
+*
* 额外注明:
* 本开源库使用 GPL3.0 开源许可证协议 以上许可申明为译文版本
* 许可申明英文版在 libraries/doc 文件夹下的 GPL3_permission_statement.txt 文件中
@@ -24,13 +24,13 @@
* 文件名称 seekfree_assistant_interface
* 公司名称 成都逐飞科技有限公司
* 版本信息 查看 libraries/doc 文件夹内 version 文件 版本说明
-* 开发环境 IAR 8.32.4 or MDK 5.33
-* 适用平台 RT1064DVL6A
+* 开发环境 ADS v1.9.20
+* 适用平台 TC264D
* 店铺链接 https://seekfree.taobao.com/
-*
+*
* 修改记录
-* 日期 作者 备注
-* 2024-1-11 SeekFree first version
+* 日期 作者 备注
+* 2024-01-01 pudding first version
********************************************************************************************************************/
#ifndef _seekfree_assistant_interface_h_
@@ -43,6 +43,7 @@ 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
diff --git a/Example/E08_eeprom_demo/libraries/zf_device/zf_device_ble6a20.c b/Example/E08_eeprom_demo/libraries/zf_device/zf_device_ble6a20.c
new file mode 100644
index 0000000..ea8649e
--- /dev/null
+++ b/Example/E08_eeprom_demo/libraries/zf_device/zf_device_ble6a20.c
@@ -0,0 +1,299 @@
+/*********************************************************************************************************************
+* TC264 Opensourec Library 即(TC264 开源库)是一个基于官方 SDK 接口的第三方开源库
+* Copyright (c) 2022 SEEKFREE 逐飞科技
+*
+* 本文件是 TC264 开源库的一部分
+*
+* TC264 开源库 是免费软件
+* 您可以根据自由软件基金会发布的 GPL(GNU General Public License,即 GNU通用公共许可证)的条款
+* 即 GPL 的第3版(即 GPL3.0)或(您选择的)任何后来的版本,重新发布和/或修改它
+*
+* 本开源库的发布是希望它能发挥作用,但并未对其作任何的保证
+* 甚至没有隐含的适销性或适合特定用途的保证
+* 更多细节请参见 GPL
+*
+* 您应该在收到本开源库的同时收到一份 GPL 的副本
+* 如果没有,请参阅
+*
+* 额外注明:
+* 本开源库使用 GPL3.0 开源许可证协议 以上许可申明为译文版本
+* 许可申明英文版在 libraries/doc 文件夹下的 GPL3_permission_statement.txt 文件中
+* 许可证副本在 libraries 文件夹下 即该文件夹下的 LICENSE 文件
+* 欢迎各位使用并传播本程序 但修改内容时必须保留逐飞科技的版权声明(即本声明)
+*
+* 文件名称 zf_device_ble6a20
+* 公司名称 成都逐飞科技有限公司
+* 版本信息 查看 libraries/doc 文件夹内 version 文件 版本说明
+* 开发环境 ADS v1.9.20
+* 适用平台 TC264D
+* 店铺链接 https://seekfree.taobao.com/
+*
+* 修改记录
+* 日期 作者 备注
+* 2024-07-02 pudding first version
+********************************************************************************************************************/
+/*********************************************************************************************************************
+* 接线定义:
+* ------------------------------------
+* 模块管脚 单片机管脚
+* RX 查看 zf_device_ble6a20.h 中 BLE6A20_RX_PIN 宏定义
+* TX 查看 zf_device_ble6a20.h 中 BLE6A20_TX_PIN 宏定义
+* RTS 查看 zf_device_ble6a20.h 中 BLE6A20_RTS_PIN 宏定义
+* VCC 3.3V电源
+* GND 电源地
+* 其余引脚悬空
+* ------------------------------------
+*********************************************************************************************************************/
+
+#include "zf_common_clock.h"
+#include "zf_common_debug.h"
+#include "zf_common_fifo.h"
+#include "zf_driver_delay.h"
+#include "zf_driver_gpio.h"
+#include "zf_driver_uart.h"
+#include "zf_device_type.h"
+#include "zf_device_ble6a20.h"
+
+static fifo_struct ble6a20_fifo;
+static uint8 ble6a20_buffer[BLE6A20_BUFFER_SIZE];
+
+static uint8 ble6a20_data = 0;
+#if (1 == BLE6A20_AUTO_BAUD_RATE)
+static volatile ble6a20_auto_baudrate_state_enum ble6a20_auto_baud_flag = BLE6A20_AUTO_BAUD_RATE_INIT;
+static volatile uint8 ble6a20_auto_baud_data[3] = {0x00, 0x01, 0x03};
+#endif
+
+//-------------------------------------------------------------------------------------------------------------------
+// 函数简介 蓝牙转串口模块 发送数据
+// 参数说明 data 8bit 数据
+// 返回参数 uint32 剩余发送长度 0-发送完毕 1-未发送完成
+// 使用示例 ble6a20_send_byte(data);
+// 备注信息
+//-------------------------------------------------------------------------------------------------------------------
+uint32 ble6a20_send_byte (const uint8 data)
+{
+ uint16 time_count = BLE6A20_TIMEOUT_COUNT;
+ while(time_count)
+ {
+ if(!gpio_get_level(BLE6A20_RTS_PIN))
+ {
+ uart_write_byte(BLE6A20_INDEX, data); // 发送数据
+ break;
+ }
+ time_count --;
+ system_delay_ms(1);
+ }
+ return (0 == time_count);
+}
+
+//-------------------------------------------------------------------------------------------------------------------
+// 函数简介 蓝牙转串口模块 发送数据块
+// 参数说明 *buff 发送缓冲区
+// 参数说明 len 发送数据长度
+// 返回参数 uint32 剩余发送长度
+// 使用示例 ble6a20_send_buffer(buff, 64);
+// 备注信息
+//-------------------------------------------------------------------------------------------------------------------
+uint32 ble6a20_send_buffer (const uint8 *buff, uint32 len)
+{
+ zf_assert(NULL != buff);
+ uint16 time_count = 0;
+ while(0 != len)
+ {
+ if(!gpio_get_level(BLE6A20_RTS_PIN)) // 如果RTS为低电平 则继续发送数据
+ {
+ if(30 <= len) // 数据分 30byte 每包发送
+ {
+ uart_write_buffer(BLE6A20_INDEX, buff, 30); // 发送数据
+ buff += 30; // 地址偏移
+ len -= 30; // 数量
+ time_count = 0;
+ }
+ else // 不足 30byte 的数据一次性发送完毕
+ {
+ uart_write_buffer(BLE6A20_INDEX, buff, len); // 发送数据
+ len = 0;
+ break;
+ }
+ }
+ else // 如果RTS为高电平 则模块忙
+ {
+ if(BLE6A20_TIMEOUT_COUNT <= (++ time_count)) // 超出了最大等待时间
+ {
+ break; // 退出发送
+ }
+ system_delay_ms(1);
+ }
+ }
+ return len;
+}
+
+//-------------------------------------------------------------------------------------------------------------------
+// 函数简介 蓝牙转串口模块 发送字符串
+// 参数说明 *str 要发送的字符串地址
+// 返回参数 uint32 剩余发送长度
+// 使用示例 ble6a20_send_string("Believe in yourself.");
+// 备注信息
+//-------------------------------------------------------------------------------------------------------------------
+uint32 ble6a20_send_string (const char *str)
+{
+ zf_assert(NULL != str);
+ uint16 time_count = 0;
+ uint32 len = strlen(str);
+ while(0 != len)
+ {
+ if(!gpio_get_level(BLE6A20_RTS_PIN)) // 如果RTS为低电平 则继续发送数据
+ {
+ if(128 <= len) // 数据分 128byte 每包发送
+ {
+ uart_write_buffer(BLE6A20_INDEX, (const uint8 *)str, 128); // 发送数据
+ str += 128; // 地址偏移
+ len -= 128; // 数量
+ time_count = 0;
+ }
+ else // 不足 128byte 的数据一次性发送完毕
+ {
+ uart_write_buffer(BLE6A20_INDEX, (const uint8 *)str, len);// 发送数据
+ len = 0;
+ break;
+ }
+ }
+ else // 如果RTS为高电平 则模块忙
+ {
+ if(BLE6A20_TIMEOUT_COUNT <= (++ time_count)) // 超出了最大等待时间
+ {
+ break; // 退出发送
+ }
+ system_delay_ms(1);
+ }
+ }
+ return len;
+}
+
+//-------------------------------------------------------------------------------------------------------------------
+// 函数简介 蓝牙转串口模块 发送摄像头图像至上位机查看图像
+// 参数说明 *image_addr 需要发送的图像地址
+// 参数说明 image_size 图像的大小
+// 返回参数 void
+// 使用示例 ble6a20_send_image(&mt9v03x_image[0][0], MT9V03X_IMAGE_SIZE);
+// 备注信息
+//-------------------------------------------------------------------------------------------------------------------
+void ble6a20_send_image (const uint8 *image_addr, uint32 image_size)
+{
+ zf_assert(NULL != image_addr);
+ extern uint8 camera_send_image_frame_header[4];
+ ble6a20_send_buffer(camera_send_image_frame_header, 4);
+ ble6a20_send_buffer((uint8 *)image_addr, image_size);
+}
+
+//-------------------------------------------------------------------------------------------------------------------
+// 函数简介 蓝牙转串口模块 读取缓冲区数据
+// 参数说明 *buff 接收缓冲区
+// 参数说明 len 读取数据长度
+// 返回参数 uint32 实际读取数据长度
+// 使用示例 ble6a20_read_buffer(buff, 32);
+// 备注信息
+//-------------------------------------------------------------------------------------------------------------------
+uint32 ble6a20_read_buffer (uint8 *buff, uint32 len)
+{
+ zf_assert(NULL != buff);
+ uint32 data_len = len;
+ fifo_read_buffer(&ble6a20_fifo, buff, &data_len, FIFO_READ_AND_CLEAN);
+ return data_len;
+}
+
+//-------------------------------------------------------------------------------------------------------------------
+// 函数简介 蓝牙转串口模块 串口中断回调函数
+// 参数说明 void
+// 返回参数 void
+// 使用示例 ble6a20_callback();
+// 备注信息 该函数在 ISR 文件 串口中断程序被调用
+// 由串口中断服务函数调用 wireless_module_uart_handler() 函数
+// 再由 wireless_module_uart_handler() 函数调用本函数
+//-------------------------------------------------------------------------------------------------------------------
+void ble6a20_callback (void)
+{
+ if(uart_query_byte(BLE6A20_INDEX, &ble6a20_data))
+ {
+ fifo_write_buffer(&ble6a20_fifo, &ble6a20_data, 1);
+#if BLE6A20_AUTO_BAUD_RATE // 开启自动波特率
+ if(BLE6A20_AUTO_BAUD_RATE_START == ble6a20_auto_baud_flag && 3 == fifo_used(&ble6a20_fifo))
+ {
+ uint32 ble6a20_auto_baud_count = 3;
+ ble6a20_auto_baud_flag = BLE6A20_AUTO_BAUD_RATE_GET_ACK;
+ fifo_read_buffer(&ble6a20_fifo, (uint8 *)ble6a20_auto_baud_data, (uint32 *)&ble6a20_auto_baud_count, FIFO_READ_AND_CLEAN);
+ }
+#endif
+ }
+}
+
+//-------------------------------------------------------------------------------------------------------------------
+// 函数简介 蓝牙转串口模块 初始化
+// 参数说明 void
+// 返回参数 void
+// 使用示例 ble6a20_init();
+// 备注信息
+//-------------------------------------------------------------------------------------------------------------------
+uint8 ble6a20_init (void)
+{
+ uint8 return_state = 0;
+
+ // 等待模块初始化
+ system_delay_ms(50);
+
+ set_wireless_type(BLE6A20, ble6a20_callback);
+
+ fifo_init(&ble6a20_fifo, FIFO_DATA_8BIT, ble6a20_buffer, BLE6A20_BUFFER_SIZE);
+ gpio_init(BLE6A20_RTS_PIN, GPI, GPIO_HIGH, GPI_PULL_UP);
+#if(0 == BLE6A20_AUTO_BAUD_RATE) // 关闭自动波特率
+ // 本函数使用的波特率为115200 为蓝牙转串口模块的默认波特率 如需其他波特率请自行配置模块并修改串口的波特率
+ uart_init (BLE6A20_INDEX, BLE6A20_BUAD_RATE, BLE6A20_RX_PIN, BLE6A20_TX_PIN); // 初始化串口
+ uart_rx_interrupt(BLE6A20_INDEX, 1);
+#elif(1 == BLE6A20_AUTO_BAUD_RATE) // 开启自动波特率
+ uint8 rts_init_status = 0;
+
+ ble6a20_auto_baud_flag = BLE6A20_AUTO_BAUD_RATE_INIT;
+ ble6a20_auto_baud_data[0] = 0;
+ ble6a20_auto_baud_data[1] = 1;
+ ble6a20_auto_baud_data[2] = 3;
+
+ rts_init_status = gpio_get_level(BLE6A20_RTS_PIN);
+ gpio_init(BLE6A20_RTS_PIN, GPO, rts_init_status, GPO_PUSH_PULL); // 初始化流控引脚
+
+ uart_init (BLE6A20_INDEX, BLE6A20_BUAD_RATE, BLE6A20_RX_PIN, BLE6A20_TX_PIN); // 初始化串口
+ uart_rx_interrupt(BLE6A20_INDEX, 1);
+
+ system_delay_ms(5); // 模块上电之后需要延时等待
+ gpio_set_level(BLE6A20_RTS_PIN, !rts_init_status); // RTS引脚拉高,进入自动波特率模式
+ system_delay_ms(100); // RTS拉高之后必须延时20ms
+ gpio_toggle_level(BLE6A20_RTS_PIN); // RTS引脚取反
+
+ do
+ {
+ ble6a20_auto_baud_flag = BLE6A20_AUTO_BAUD_RATE_START;
+ uart_write_byte(BLE6A20_INDEX, ble6a20_auto_baud_data[0]); // 发送特定数据 用于模块自动判断波特率
+ uart_write_byte(BLE6A20_INDEX, ble6a20_auto_baud_data[1]); // 发送特定数据 用于模块自动判断波特率
+ uart_write_byte(BLE6A20_INDEX, ble6a20_auto_baud_data[2]); // 发送特定数据 用于模块自动判断波特率
+ system_delay_ms(20);
+
+ if(BLE6A20_AUTO_BAUD_RATE_GET_ACK != ble6a20_auto_baud_flag) // 检验自动波特率是否完成
+ {
+ return_state = 1; // 如果程序进入到此语句内 说明自动波特率失败了
+ break;
+ }
+
+ if( 0xa5 != ble6a20_auto_baud_data[0] && // 检验自动波特率是否正确
+ 0xff != ble6a20_auto_baud_data[1] && // 检验自动波特率是否正确
+ 0xff != ble6a20_auto_baud_data[2] ) // 检验自动波特率是否正确
+ {
+ return_state = 1; // 如果程序进入到此语句内 说明自动波特率失败了
+ break;
+ }
+ ble6a20_auto_baud_flag = BLE6A20_AUTO_BAUD_RATE_SUCCESS;
+
+ gpio_init(BLE6A20_RTS_PIN, GPI, 0, GPI_PULL_UP); // 初始化流控引脚
+ system_delay_ms(10); // 延时等待 模块准备就绪
+ }while(0);
+#endif
+ return return_state;
+}
diff --git a/Example/E08_eeprom_demo/libraries/zf_device/zf_device_ble6a20.h b/Example/E08_eeprom_demo/libraries/zf_device/zf_device_ble6a20.h
new file mode 100644
index 0000000..c037ea2
--- /dev/null
+++ b/Example/E08_eeprom_demo/libraries/zf_device/zf_device_ble6a20.h
@@ -0,0 +1,108 @@
+/*********************************************************************************************************************
+* TC264 Opensourec Library 即(TC264 开源库)是一个基于官方 SDK 接口的第三方开源库
+* Copyright (c) 2022 SEEKFREE 逐飞科技
+*
+* 本文件是 TC264 开源库的一部分
+*
+* TC264 开源库 是免费软件
+* 您可以根据自由软件基金会发布的 GPL(GNU General Public License,即 GNU通用公共许可证)的条款
+* 即 GPL 的第3版(即 GPL3.0)或(您选择的)任何后来的版本,重新发布和/或修改它
+*
+* 本开源库的发布是希望它能发挥作用,但并未对其作任何的保证
+* 甚至没有隐含的适销性或适合特定用途的保证
+* 更多细节请参见 GPL
+*
+* 您应该在收到本开源库的同时收到一份 GPL 的副本
+* 如果没有,请参阅
+*
+* 额外注明:
+* 本开源库使用 GPL3.0 开源许可证协议 以上许可申明为译文版本
+* 许可申明英文版在 libraries/doc 文件夹下的 GPL3_permission_statement.txt 文件中
+* 许可证副本在 libraries 文件夹下 即该文件夹下的 LICENSE 文件
+* 欢迎各位使用并传播本程序 但修改内容时必须保留逐飞科技的版权声明(即本声明)
+*
+* 文件名称 zf_device_ble6a20.h
+* 公司名称 成都逐飞科技有限公司
+* 版本信息 查看 libraries/doc 文件夹内 version 文件 版本说明
+* 开发环境 ADS v1.9.20
+* 适用平台 TC264D
+* 店铺链接 https://seekfree.taobao.com/
+*
+* 修改记录
+* 日期 作者 备注
+* 2024-07-02 pudding first version
+********************************************************************************************************************/
+/*********************************************************************************************************************
+* 接线定义:
+* ------------------------------------
+* 模块管脚 单片机管脚
+* RX 查看 zf_device_ble6a20.h 中 BLE6A20_RX_PIN 宏定义
+* TX 查看 zf_device_ble6a20.h 中 BLE6A20_TX_PIN 宏定义
+* RTS 查看 zf_device_ble6a20.h 中 BLE6A20_RTS_PIN 宏定义
+* VCC 3.3V电源
+* GND 电源地
+* 其余引脚悬空
+* ------------------------------------
+*********************************************************************************************************************/
+
+
+#ifndef _zf_device_ble6a20_h_
+#define _zf_device_ble6a20_h_
+
+#include "zf_common_typedef.h"
+
+
+//=================================================定义 蓝牙串口 基本配置================================================
+
+#define BLE6A20_INDEX (UART_2) // 蓝牙串口对应使用的串口号
+#define BLE6A20_BUAD_RATE (115200) // 蓝牙串口对应使用的串口波特率
+ // 波特率仅支持 9600 57600 115200 230400 460800 921600 1500000 2000000
+#define BLE6A20_TX_PIN (UART2_RX_P10_6) // 蓝牙串口对应模块的 TX 要接到单片机的 RX
+#define BLE6A20_RX_PIN (UART2_TX_P10_5) // 蓝牙串口对应模块的 RX 要接到单片机的 TX
+#define BLE6A20_RTS_PIN (P10_2) // 蓝牙串口对应模块的 RTS 引脚
+
+#define BLE6A20_BUFFER_SIZE ( 64 ) // 蓝牙串口缓冲区大小
+#define BLE6A20_TIMEOUT_COUNT ( 0x64 ) // 蓝牙串口通讯超时范围
+
+// ------------------------------------ 自动波特率 ------------------------------------
+// 注意事项1:开启自动波特率务必连接RTS引脚 否则会开启失败。
+// 注意事项2:模块自动波特率失败的话 可以尝试断电重启
+
+// 开启自动波特率务必阅读上面两条 注意事项
+// 开启自动波特率务必阅读上面两条 注意事项
+// 开启自动波特率务必阅读上面两条 注意事项
+
+// 0:关闭自动波特率
+// 1:开启自动波特率 自动波特率的作用是修改 BLE6A20_BAUD 之后不需要对模块进行配置 模块会自动设置为对应的波特率
+// 自动波特率仅支持 9600 57600 115200 230400 460800 921600 1500000 2000000
+
+#define BLE6A20_AUTO_BAUD_RATE ( 0 )
+
+#if (1 == BLE6A20_AUTO_BAUD_RATE)
+typedef enum
+{
+ BLE6A20_AUTO_BAUD_RATE_SUCCESS,
+ BLE6A20_AUTO_BAUD_RATE_INIT,
+ BLE6A20_AUTO_BAUD_RATE_START,
+ BLE6A20_AUTO_BAUD_RATE_GET_ACK,
+}ble6a20_auto_baudrate_state_enum;
+#endif
+// ------------------------------------ 自动波特率 ------------------------------------
+
+//=================================================定义 蓝牙串口 基本配置================================================
+
+
+//=================================================声明 蓝牙串口 基础函数================================================
+uint32 ble6a20_send_byte (const uint8 data); // 蓝牙转串口模块 发送数据
+uint32 ble6a20_send_buffer (const uint8 *buff, uint32 len); // 蓝牙转串口模块 发送数据块
+uint32 ble6a20_send_string (const char *str); // 蓝牙转串口模块 发送字符串
+void ble6a20_send_image (const uint8 *image_addr, uint32 image_size); // 蓝牙转串口模块 发送摄像头图像至上位机查看图像
+
+uint32 ble6a20_read_buffer (uint8 *buff, uint32 len); // 蓝牙转串口模块 读取缓冲区数据
+
+void ble6a20_callback (void); // 蓝牙转串口模块 串口中断回调函数
+
+uint8 ble6a20_init (void); // 蓝牙转串口模块 初始化
+//=================================================声明 蓝牙串口 基础函数================================================
+
+#endif
diff --git a/Example/E08_eeprom_demo/libraries/zf_device/zf_device_type.h b/Example/E08_eeprom_demo/libraries/zf_device/zf_device_type.h
index 6c2b8da..4f8ec53 100644
--- a/Example/E08_eeprom_demo/libraries/zf_device/zf_device_type.h
+++ b/Example/E08_eeprom_demo/libraries/zf_device/zf_device_type.h
@@ -54,6 +54,7 @@ typedef enum
{
NO_WIRELESS = 0, // 无设备
WIRELESS_UART, // 无线串口
+ BLE6A20, // 蓝牙串口
BLUETOOTH_CH9141, // 蓝牙 CH9141
WIFI_UART, // 串口 WiFi
RECEIVER_UART, // 枪式遥控器
diff --git a/Example/E08_eeprom_demo/libraries/zf_device/澶栬鏂囦欢璇存槑.txt b/Example/E08_eeprom_demo/libraries/zf_device/澶栬鏂囦欢璇存槑.txt
new file mode 100644
index 0000000..1c96965
--- /dev/null
+++ b/Example/E08_eeprom_demo/libraries/zf_device/澶栬鏂囦欢璇存槑.txt
@@ -0,0 +1,97 @@
+
+如需获取详细资料可联系淘宝店铺客服:https://seekfree.taobao.com/
+如需获取详细资料可联系淘宝店铺客服:https://seekfree.taobao.com/
+如需获取详细资料可联系淘宝店铺客服:https://seekfree.taobao.com/
+
+本文件主要用于说明 zf_device 目录下各个文件所对应的外设模块
+本文件主要用于说明 zf_device 目录下各个文件所对应的外设模块
+本文件主要用于说明 zf_device 目录下各个文件所对应的外设模块
+
+
+=================================================== 测距模块 ===================================================
+
+zf_device_dl1a.h TOF 测距模块 DL1A 频率:33hz 最大距离:1.2 米
+
+zf_device_dl1b.h TOF 测距模块 DL1B 频率:100hz 最大距离:1.4 米
+
+=================================================== 测距模块 ===================================================
+
+
+
+==================================================== 陀螺仪 ====================================================
+
+zf_device_mpu6050.h MPU6050 六轴陀螺仪 传统 IIC 通讯
+
+zf_device_icm20602.h ICM20602 六轴陀螺仪 支持 SPI 采值
+
+zf_device_imu660ra.h IMU660RA 六轴陀螺仪 高精度陀螺仪
+
+zf_device_imu963ra.h IMU963RA 九轴陀螺仪 支持地磁计采集
+
+==================================================== 陀螺仪 ====================================================
+
+
+
+=================================================== 屏幕显示 ===================================================
+
+zf_device_ips114.h IPS114 液晶屏幕 1.14 寸 分辨率:240 * 135
+
+zf_device_ips200.h IPS200 液晶屏幕 2.0 寸 分辨率:240 * 320
+
+zf_device_tft180.h TFT180 屏幕 1.8寸 分辨率:160 * 128
+
+zf_device_oled.h OLED 液晶屏幕 0.96 寸 分辨率:128 * 64
+
+=================================================== 屏幕显示 ===================================================
+
+
+
+================================================== 图像传感器 ==================================================
+
+zf_device_mt9v03x.h MT9V03X 总钻风灰度摄像头
+
+zf_device_ov7725.h OV7725 小钻风硬件二值化摄像头
+
+zf_device_scc8660.h SCC8660 凌瞳彩色摄像头
+
+zf_device_tsl1401.h TSL1401 红孩儿线阵CCD
+
+================================================== 图像传感器 ==================================================
+
+
+
+=================================================== 无线通讯 ===================================================
+
+zf_device_ble6a20.h 蓝牙串口模块 无线通讯
+
+zf_device_bluetooth_ch9141.h CH9141 蓝牙通讯模块 蓝牙组网通讯
+
+zf_device_wifi_spi.h WIFI-SPI 高速WIFI无线通讯模块
+
+zf_device_wifi_uart.h WIFI-UART 串口WIFI无线通讯模块
+
+zf_device_wireless_uart.h 无线串口模块
+
+=================================================== 无线通讯 ===================================================
+
+
+
+=================================================== 远程遥控 ===================================================
+
+zf_device_uart_receiver.h SUBS 串口遥控器 串口通讯 长距离遥控 2.4G频段
+
+=================================================== 远程遥控 ===================================================
+
+
+
+================================================== 其他传感器 ==================================================
+
+zf_device_absolute_encoder.h 360° 位置传感器 绝对式迷你 mini 编码器 分辨率:0.088°
+
+zf_device_gnss.h GPS 及 RTK 定位模块 双频高精度定位模块 亚米级定位
+
+zf_device_key.h GPIO 按键驱动 用于检测主板按键状态
+
+zf_device_virtual_oscilloscope.h VisualScope 虚拟示波器
+
+================================================== 其他传感器 ==================================================
\ No newline at end of file
diff --git a/Example/E09_timer_demo/libraries/doc/version.txt b/Example/E09_timer_demo/libraries/doc/version.txt
index 68afc86..c4e0d0a 100644
--- a/Example/E09_timer_demo/libraries/doc/version.txt
+++ b/Example/E09_timer_demo/libraries/doc/version.txt
@@ -1,3 +1,5 @@
+V3.3.0
+ 新增蓝牙串口通讯模块
V3.2.13
新增一个微秒延时函数 该延时函数为普通延时 非中断延时
V3.2.12
diff --git a/Example/E09_timer_demo/libraries/zf_common/zf_common_headfile.h b/Example/E09_timer_demo/libraries/zf_common/zf_common_headfile.h
index c0d833b..3a140e3 100644
--- a/Example/E09_timer_demo/libraries/zf_common/zf_common_headfile.h
+++ b/Example/E09_timer_demo/libraries/zf_common/zf_common_headfile.h
@@ -81,6 +81,7 @@
//===================================================外接设备驱动层===================================================
#include "zf_device_absolute_encoder.h"
+#include "zf_device_ble6a20.h"
#include "zf_device_bluetooth_ch9141.h"
#include "zf_device_gnss.h"
#include "zf_device_camera.h"
diff --git a/Example/E09_timer_demo/libraries/zf_components/seekfree_assistant.c b/Example/E09_timer_demo/libraries/zf_components/seekfree_assistant.c
index 0b7cb9d..af3bb96 100644
--- a/Example/E09_timer_demo/libraries/zf_components/seekfree_assistant.c
+++ b/Example/E09_timer_demo/libraries/zf_components/seekfree_assistant.c
@@ -1,20 +1,20 @@
/*********************************************************************************************************************
-* RT1064DVL6A Opensourec Library 即(RT1064DVL6A 开源库)是一个基于官方 SDK 接口的第三方开源库
+* TC264 Opensourec Library 即(TC264 开源库)是一个基于官方 SDK 接口的第三方开源库
* Copyright (c) 2022 SEEKFREE 逐飞科技
-*
-* 本文件是 RT1064DVL6A 开源库的一部分
-*
-* RT1064DVL6A 开源库 是免费软件
+*
+* 本文件是 TC264 开源库的一部分
+*
+* TC264 开源库 是免费软件
* 您可以根据自由软件基金会发布的 GPL(GNU General Public License,即 GNU通用公共许可证)的条款
* 即 GPL 的第3版(即 GPL3.0)或(您选择的)任何后来的版本,重新发布和/或修改它
-*
+*
* 本开源库的发布是希望它能发挥作用,但并未对其作任何的保证
* 甚至没有隐含的适销性或适合特定用途的保证
* 更多细节请参见 GPL
-*
+*
* 您应该在收到本开源库的同时收到一份 GPL 的副本
* 如果没有,请参阅
-*
+*
* 额外注明:
* 本开源库使用 GPL3.0 开源许可证协议 以上许可申明为译文版本
* 许可申明英文版在 libraries/doc 文件夹下的 GPL3_permission_statement.txt 文件中
@@ -24,13 +24,13 @@
* 文件名称 seekfree_assistant
* 公司名称 成都逐飞科技有限公司
* 版本信息 查看 libraries/doc 文件夹内 version 文件 版本说明
-* 开发环境 IAR 8.32.4 or MDK 5.33
-* 适用平台 RT1064DVL6A
+* 开发环境 ADS v1.9.20
+* 适用平台 TC264D
* 店铺链接 https://seekfree.taobao.com/
-*
+*
* 修改记录
-* 日期 作者 备注
-* 2024-1-11 SeekFree first version
+* 日期 作者 备注
+* 2024-01-01 pudding first version
********************************************************************************************************************/
#include "zf_common_debug.h"
diff --git a/Example/E09_timer_demo/libraries/zf_components/seekfree_assistant.h b/Example/E09_timer_demo/libraries/zf_components/seekfree_assistant.h
index ae0f67c..5e04a1d 100644
--- a/Example/E09_timer_demo/libraries/zf_components/seekfree_assistant.h
+++ b/Example/E09_timer_demo/libraries/zf_components/seekfree_assistant.h
@@ -1,20 +1,20 @@
/*********************************************************************************************************************
-* RT1064DVL6A Opensourec Library 即(RT1064DVL6A 开源库)是一个基于官方 SDK 接口的第三方开源库
+* TC264 Opensourec Library 即(TC264 开源库)是一个基于官方 SDK 接口的第三方开源库
* Copyright (c) 2022 SEEKFREE 逐飞科技
-*
-* 本文件是 RT1064DVL6A 开源库的一部分
-*
-* RT1064DVL6A 开源库 是免费软件
+*
+* 本文件是 TC264 开源库的一部分
+*
+* TC264 开源库 是免费软件
* 您可以根据自由软件基金会发布的 GPL(GNU General Public License,即 GNU通用公共许可证)的条款
* 即 GPL 的第3版(即 GPL3.0)或(您选择的)任何后来的版本,重新发布和/或修改它
-*
+*
* 本开源库的发布是希望它能发挥作用,但并未对其作任何的保证
* 甚至没有隐含的适销性或适合特定用途的保证
* 更多细节请参见 GPL
-*
+*
* 您应该在收到本开源库的同时收到一份 GPL 的副本
* 如果没有,请参阅
-*
+*
* 额外注明:
* 本开源库使用 GPL3.0 开源许可证协议 以上许可申明为译文版本
* 许可申明英文版在 libraries/doc 文件夹下的 GPL3_permission_statement.txt 文件中
@@ -24,13 +24,13 @@
* 文件名称 seekfree_assistant
* 公司名称 成都逐飞科技有限公司
* 版本信息 查看 libraries/doc 文件夹内 version 文件 版本说明
-* 开发环境 IAR 8.32.4 or MDK 5.33
-* 适用平台 RT1064DVL6A
+* 开发环境 ADS v1.9.20
+* 适用平台 TC264D
* 店铺链接 https://seekfree.taobao.com/
-*
+*
* 修改记录
-* 日期 作者 备注
-* 2024-1-11 SeekFree first version
+* 日期 作者 备注
+* 2024-01-01 pudding first version
********************************************************************************************************************/
#ifndef _seekfree_assistant_h_
#define _seekfree_assistant_h_
@@ -47,27 +47,27 @@
// 定义接收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 )
diff --git a/Example/E09_timer_demo/libraries/zf_components/seekfree_assistant_interface.c b/Example/E09_timer_demo/libraries/zf_components/seekfree_assistant_interface.c
index fdade63..cc42e43 100644
--- a/Example/E09_timer_demo/libraries/zf_components/seekfree_assistant_interface.c
+++ b/Example/E09_timer_demo/libraries/zf_components/seekfree_assistant_interface.c
@@ -1,20 +1,20 @@
/*********************************************************************************************************************
-* RT1064DVL6A Opensourec Library 即(RT1064DVL6A 开源库)是一个基于官方 SDK 接口的第三方开源库
+* TC264 Opensourec Library 即(TC264 开源库)是一个基于官方 SDK 接口的第三方开源库
* Copyright (c) 2022 SEEKFREE 逐飞科技
-*
-* 本文件是 RT1064DVL6A 开源库的一部分
-*
-* RT1064DVL6A 开源库 是免费软件
+*
+* 本文件是 TC264 开源库的一部分
+*
+* TC264 开源库 是免费软件
* 您可以根据自由软件基金会发布的 GPL(GNU General Public License,即 GNU通用公共许可证)的条款
* 即 GPL 的第3版(即 GPL3.0)或(您选择的)任何后来的版本,重新发布和/或修改它
-*
+*
* 本开源库的发布是希望它能发挥作用,但并未对其作任何的保证
* 甚至没有隐含的适销性或适合特定用途的保证
* 更多细节请参见 GPL
-*
+*
* 您应该在收到本开源库的同时收到一份 GPL 的副本
* 如果没有,请参阅
-*
+*
* 额外注明:
* 本开源库使用 GPL3.0 开源许可证协议 以上许可申明为译文版本
* 许可申明英文版在 libraries/doc 文件夹下的 GPL3_permission_statement.txt 文件中
@@ -24,13 +24,13 @@
* 文件名称 seekfree_assistant_interface
* 公司名称 成都逐飞科技有限公司
* 版本信息 查看 libraries/doc 文件夹内 version 文件 版本说明
-* 开发环境 IAR 8.32.4 or MDK 5.33
-* 适用平台 RT1064DVL6A
+* 开发环境 ADS v1.9.20
+* 适用平台 TC264D
* 店铺链接 https://seekfree.taobao.com/
-*
+*
* 修改记录
-* 日期 作者 备注
-* 2024-1-11 SeekFree first version
+* 日期 作者 备注
+* 2024-01-01 pudding first version
********************************************************************************************************************/
#include "zf_common_typedef.h"
@@ -38,6 +38,7 @@
#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"
@@ -100,6 +101,12 @@ ZF_WEAK void seekfree_assistant_interface_init (seekfree_assistant_transfer_devi
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;
diff --git a/Example/E09_timer_demo/libraries/zf_components/seekfree_assistant_interface.h b/Example/E09_timer_demo/libraries/zf_components/seekfree_assistant_interface.h
index 940b5f7..1d0158c 100644
--- a/Example/E09_timer_demo/libraries/zf_components/seekfree_assistant_interface.h
+++ b/Example/E09_timer_demo/libraries/zf_components/seekfree_assistant_interface.h
@@ -1,20 +1,20 @@
/*********************************************************************************************************************
-* RT1064DVL6A Opensourec Library 即(RT1064DVL6A 开源库)是一个基于官方 SDK 接口的第三方开源库
+* TC264 Opensourec Library 即(TC264 开源库)是一个基于官方 SDK 接口的第三方开源库
* Copyright (c) 2022 SEEKFREE 逐飞科技
-*
-* 本文件是 RT1064DVL6A 开源库的一部分
-*
-* RT1064DVL6A 开源库 是免费软件
+*
+* 本文件是 TC264 开源库的一部分
+*
+* TC264 开源库 是免费软件
* 您可以根据自由软件基金会发布的 GPL(GNU General Public License,即 GNU通用公共许可证)的条款
* 即 GPL 的第3版(即 GPL3.0)或(您选择的)任何后来的版本,重新发布和/或修改它
-*
+*
* 本开源库的发布是希望它能发挥作用,但并未对其作任何的保证
* 甚至没有隐含的适销性或适合特定用途的保证
* 更多细节请参见 GPL
-*
+*
* 您应该在收到本开源库的同时收到一份 GPL 的副本
* 如果没有,请参阅
-*
+*
* 额外注明:
* 本开源库使用 GPL3.0 开源许可证协议 以上许可申明为译文版本
* 许可申明英文版在 libraries/doc 文件夹下的 GPL3_permission_statement.txt 文件中
@@ -24,13 +24,13 @@
* 文件名称 seekfree_assistant_interface
* 公司名称 成都逐飞科技有限公司
* 版本信息 查看 libraries/doc 文件夹内 version 文件 版本说明
-* 开发环境 IAR 8.32.4 or MDK 5.33
-* 适用平台 RT1064DVL6A
+* 开发环境 ADS v1.9.20
+* 适用平台 TC264D
* 店铺链接 https://seekfree.taobao.com/
-*
+*
* 修改记录
-* 日期 作者 备注
-* 2024-1-11 SeekFree first version
+* 日期 作者 备注
+* 2024-01-01 pudding first version
********************************************************************************************************************/
#ifndef _seekfree_assistant_interface_h_
@@ -43,6 +43,7 @@ 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
diff --git a/Example/E09_timer_demo/libraries/zf_device/zf_device_ble6a20.c b/Example/E09_timer_demo/libraries/zf_device/zf_device_ble6a20.c
new file mode 100644
index 0000000..ea8649e
--- /dev/null
+++ b/Example/E09_timer_demo/libraries/zf_device/zf_device_ble6a20.c
@@ -0,0 +1,299 @@
+/*********************************************************************************************************************
+* TC264 Opensourec Library 即(TC264 开源库)是一个基于官方 SDK 接口的第三方开源库
+* Copyright (c) 2022 SEEKFREE 逐飞科技
+*
+* 本文件是 TC264 开源库的一部分
+*
+* TC264 开源库 是免费软件
+* 您可以根据自由软件基金会发布的 GPL(GNU General Public License,即 GNU通用公共许可证)的条款
+* 即 GPL 的第3版(即 GPL3.0)或(您选择的)任何后来的版本,重新发布和/或修改它
+*
+* 本开源库的发布是希望它能发挥作用,但并未对其作任何的保证
+* 甚至没有隐含的适销性或适合特定用途的保证
+* 更多细节请参见 GPL
+*
+* 您应该在收到本开源库的同时收到一份 GPL 的副本
+* 如果没有,请参阅
+*
+* 额外注明:
+* 本开源库使用 GPL3.0 开源许可证协议 以上许可申明为译文版本
+* 许可申明英文版在 libraries/doc 文件夹下的 GPL3_permission_statement.txt 文件中
+* 许可证副本在 libraries 文件夹下 即该文件夹下的 LICENSE 文件
+* 欢迎各位使用并传播本程序 但修改内容时必须保留逐飞科技的版权声明(即本声明)
+*
+* 文件名称 zf_device_ble6a20
+* 公司名称 成都逐飞科技有限公司
+* 版本信息 查看 libraries/doc 文件夹内 version 文件 版本说明
+* 开发环境 ADS v1.9.20
+* 适用平台 TC264D
+* 店铺链接 https://seekfree.taobao.com/
+*
+* 修改记录
+* 日期 作者 备注
+* 2024-07-02 pudding first version
+********************************************************************************************************************/
+/*********************************************************************************************************************
+* 接线定义:
+* ------------------------------------
+* 模块管脚 单片机管脚
+* RX 查看 zf_device_ble6a20.h 中 BLE6A20_RX_PIN 宏定义
+* TX 查看 zf_device_ble6a20.h 中 BLE6A20_TX_PIN 宏定义
+* RTS 查看 zf_device_ble6a20.h 中 BLE6A20_RTS_PIN 宏定义
+* VCC 3.3V电源
+* GND 电源地
+* 其余引脚悬空
+* ------------------------------------
+*********************************************************************************************************************/
+
+#include "zf_common_clock.h"
+#include "zf_common_debug.h"
+#include "zf_common_fifo.h"
+#include "zf_driver_delay.h"
+#include "zf_driver_gpio.h"
+#include "zf_driver_uart.h"
+#include "zf_device_type.h"
+#include "zf_device_ble6a20.h"
+
+static fifo_struct ble6a20_fifo;
+static uint8 ble6a20_buffer[BLE6A20_BUFFER_SIZE];
+
+static uint8 ble6a20_data = 0;
+#if (1 == BLE6A20_AUTO_BAUD_RATE)
+static volatile ble6a20_auto_baudrate_state_enum ble6a20_auto_baud_flag = BLE6A20_AUTO_BAUD_RATE_INIT;
+static volatile uint8 ble6a20_auto_baud_data[3] = {0x00, 0x01, 0x03};
+#endif
+
+//-------------------------------------------------------------------------------------------------------------------
+// 函数简介 蓝牙转串口模块 发送数据
+// 参数说明 data 8bit 数据
+// 返回参数 uint32 剩余发送长度 0-发送完毕 1-未发送完成
+// 使用示例 ble6a20_send_byte(data);
+// 备注信息
+//-------------------------------------------------------------------------------------------------------------------
+uint32 ble6a20_send_byte (const uint8 data)
+{
+ uint16 time_count = BLE6A20_TIMEOUT_COUNT;
+ while(time_count)
+ {
+ if(!gpio_get_level(BLE6A20_RTS_PIN))
+ {
+ uart_write_byte(BLE6A20_INDEX, data); // 发送数据
+ break;
+ }
+ time_count --;
+ system_delay_ms(1);
+ }
+ return (0 == time_count);
+}
+
+//-------------------------------------------------------------------------------------------------------------------
+// 函数简介 蓝牙转串口模块 发送数据块
+// 参数说明 *buff 发送缓冲区
+// 参数说明 len 发送数据长度
+// 返回参数 uint32 剩余发送长度
+// 使用示例 ble6a20_send_buffer(buff, 64);
+// 备注信息
+//-------------------------------------------------------------------------------------------------------------------
+uint32 ble6a20_send_buffer (const uint8 *buff, uint32 len)
+{
+ zf_assert(NULL != buff);
+ uint16 time_count = 0;
+ while(0 != len)
+ {
+ if(!gpio_get_level(BLE6A20_RTS_PIN)) // 如果RTS为低电平 则继续发送数据
+ {
+ if(30 <= len) // 数据分 30byte 每包发送
+ {
+ uart_write_buffer(BLE6A20_INDEX, buff, 30); // 发送数据
+ buff += 30; // 地址偏移
+ len -= 30; // 数量
+ time_count = 0;
+ }
+ else // 不足 30byte 的数据一次性发送完毕
+ {
+ uart_write_buffer(BLE6A20_INDEX, buff, len); // 发送数据
+ len = 0;
+ break;
+ }
+ }
+ else // 如果RTS为高电平 则模块忙
+ {
+ if(BLE6A20_TIMEOUT_COUNT <= (++ time_count)) // 超出了最大等待时间
+ {
+ break; // 退出发送
+ }
+ system_delay_ms(1);
+ }
+ }
+ return len;
+}
+
+//-------------------------------------------------------------------------------------------------------------------
+// 函数简介 蓝牙转串口模块 发送字符串
+// 参数说明 *str 要发送的字符串地址
+// 返回参数 uint32 剩余发送长度
+// 使用示例 ble6a20_send_string("Believe in yourself.");
+// 备注信息
+//-------------------------------------------------------------------------------------------------------------------
+uint32 ble6a20_send_string (const char *str)
+{
+ zf_assert(NULL != str);
+ uint16 time_count = 0;
+ uint32 len = strlen(str);
+ while(0 != len)
+ {
+ if(!gpio_get_level(BLE6A20_RTS_PIN)) // 如果RTS为低电平 则继续发送数据
+ {
+ if(128 <= len) // 数据分 128byte 每包发送
+ {
+ uart_write_buffer(BLE6A20_INDEX, (const uint8 *)str, 128); // 发送数据
+ str += 128; // 地址偏移
+ len -= 128; // 数量
+ time_count = 0;
+ }
+ else // 不足 128byte 的数据一次性发送完毕
+ {
+ uart_write_buffer(BLE6A20_INDEX, (const uint8 *)str, len);// 发送数据
+ len = 0;
+ break;
+ }
+ }
+ else // 如果RTS为高电平 则模块忙
+ {
+ if(BLE6A20_TIMEOUT_COUNT <= (++ time_count)) // 超出了最大等待时间
+ {
+ break; // 退出发送
+ }
+ system_delay_ms(1);
+ }
+ }
+ return len;
+}
+
+//-------------------------------------------------------------------------------------------------------------------
+// 函数简介 蓝牙转串口模块 发送摄像头图像至上位机查看图像
+// 参数说明 *image_addr 需要发送的图像地址
+// 参数说明 image_size 图像的大小
+// 返回参数 void
+// 使用示例 ble6a20_send_image(&mt9v03x_image[0][0], MT9V03X_IMAGE_SIZE);
+// 备注信息
+//-------------------------------------------------------------------------------------------------------------------
+void ble6a20_send_image (const uint8 *image_addr, uint32 image_size)
+{
+ zf_assert(NULL != image_addr);
+ extern uint8 camera_send_image_frame_header[4];
+ ble6a20_send_buffer(camera_send_image_frame_header, 4);
+ ble6a20_send_buffer((uint8 *)image_addr, image_size);
+}
+
+//-------------------------------------------------------------------------------------------------------------------
+// 函数简介 蓝牙转串口模块 读取缓冲区数据
+// 参数说明 *buff 接收缓冲区
+// 参数说明 len 读取数据长度
+// 返回参数 uint32 实际读取数据长度
+// 使用示例 ble6a20_read_buffer(buff, 32);
+// 备注信息
+//-------------------------------------------------------------------------------------------------------------------
+uint32 ble6a20_read_buffer (uint8 *buff, uint32 len)
+{
+ zf_assert(NULL != buff);
+ uint32 data_len = len;
+ fifo_read_buffer(&ble6a20_fifo, buff, &data_len, FIFO_READ_AND_CLEAN);
+ return data_len;
+}
+
+//-------------------------------------------------------------------------------------------------------------------
+// 函数简介 蓝牙转串口模块 串口中断回调函数
+// 参数说明 void
+// 返回参数 void
+// 使用示例 ble6a20_callback();
+// 备注信息 该函数在 ISR 文件 串口中断程序被调用
+// 由串口中断服务函数调用 wireless_module_uart_handler() 函数
+// 再由 wireless_module_uart_handler() 函数调用本函数
+//-------------------------------------------------------------------------------------------------------------------
+void ble6a20_callback (void)
+{
+ if(uart_query_byte(BLE6A20_INDEX, &ble6a20_data))
+ {
+ fifo_write_buffer(&ble6a20_fifo, &ble6a20_data, 1);
+#if BLE6A20_AUTO_BAUD_RATE // 开启自动波特率
+ if(BLE6A20_AUTO_BAUD_RATE_START == ble6a20_auto_baud_flag && 3 == fifo_used(&ble6a20_fifo))
+ {
+ uint32 ble6a20_auto_baud_count = 3;
+ ble6a20_auto_baud_flag = BLE6A20_AUTO_BAUD_RATE_GET_ACK;
+ fifo_read_buffer(&ble6a20_fifo, (uint8 *)ble6a20_auto_baud_data, (uint32 *)&ble6a20_auto_baud_count, FIFO_READ_AND_CLEAN);
+ }
+#endif
+ }
+}
+
+//-------------------------------------------------------------------------------------------------------------------
+// 函数简介 蓝牙转串口模块 初始化
+// 参数说明 void
+// 返回参数 void
+// 使用示例 ble6a20_init();
+// 备注信息
+//-------------------------------------------------------------------------------------------------------------------
+uint8 ble6a20_init (void)
+{
+ uint8 return_state = 0;
+
+ // 等待模块初始化
+ system_delay_ms(50);
+
+ set_wireless_type(BLE6A20, ble6a20_callback);
+
+ fifo_init(&ble6a20_fifo, FIFO_DATA_8BIT, ble6a20_buffer, BLE6A20_BUFFER_SIZE);
+ gpio_init(BLE6A20_RTS_PIN, GPI, GPIO_HIGH, GPI_PULL_UP);
+#if(0 == BLE6A20_AUTO_BAUD_RATE) // 关闭自动波特率
+ // 本函数使用的波特率为115200 为蓝牙转串口模块的默认波特率 如需其他波特率请自行配置模块并修改串口的波特率
+ uart_init (BLE6A20_INDEX, BLE6A20_BUAD_RATE, BLE6A20_RX_PIN, BLE6A20_TX_PIN); // 初始化串口
+ uart_rx_interrupt(BLE6A20_INDEX, 1);
+#elif(1 == BLE6A20_AUTO_BAUD_RATE) // 开启自动波特率
+ uint8 rts_init_status = 0;
+
+ ble6a20_auto_baud_flag = BLE6A20_AUTO_BAUD_RATE_INIT;
+ ble6a20_auto_baud_data[0] = 0;
+ ble6a20_auto_baud_data[1] = 1;
+ ble6a20_auto_baud_data[2] = 3;
+
+ rts_init_status = gpio_get_level(BLE6A20_RTS_PIN);
+ gpio_init(BLE6A20_RTS_PIN, GPO, rts_init_status, GPO_PUSH_PULL); // 初始化流控引脚
+
+ uart_init (BLE6A20_INDEX, BLE6A20_BUAD_RATE, BLE6A20_RX_PIN, BLE6A20_TX_PIN); // 初始化串口
+ uart_rx_interrupt(BLE6A20_INDEX, 1);
+
+ system_delay_ms(5); // 模块上电之后需要延时等待
+ gpio_set_level(BLE6A20_RTS_PIN, !rts_init_status); // RTS引脚拉高,进入自动波特率模式
+ system_delay_ms(100); // RTS拉高之后必须延时20ms
+ gpio_toggle_level(BLE6A20_RTS_PIN); // RTS引脚取反
+
+ do
+ {
+ ble6a20_auto_baud_flag = BLE6A20_AUTO_BAUD_RATE_START;
+ uart_write_byte(BLE6A20_INDEX, ble6a20_auto_baud_data[0]); // 发送特定数据 用于模块自动判断波特率
+ uart_write_byte(BLE6A20_INDEX, ble6a20_auto_baud_data[1]); // 发送特定数据 用于模块自动判断波特率
+ uart_write_byte(BLE6A20_INDEX, ble6a20_auto_baud_data[2]); // 发送特定数据 用于模块自动判断波特率
+ system_delay_ms(20);
+
+ if(BLE6A20_AUTO_BAUD_RATE_GET_ACK != ble6a20_auto_baud_flag) // 检验自动波特率是否完成
+ {
+ return_state = 1; // 如果程序进入到此语句内 说明自动波特率失败了
+ break;
+ }
+
+ if( 0xa5 != ble6a20_auto_baud_data[0] && // 检验自动波特率是否正确
+ 0xff != ble6a20_auto_baud_data[1] && // 检验自动波特率是否正确
+ 0xff != ble6a20_auto_baud_data[2] ) // 检验自动波特率是否正确
+ {
+ return_state = 1; // 如果程序进入到此语句内 说明自动波特率失败了
+ break;
+ }
+ ble6a20_auto_baud_flag = BLE6A20_AUTO_BAUD_RATE_SUCCESS;
+
+ gpio_init(BLE6A20_RTS_PIN, GPI, 0, GPI_PULL_UP); // 初始化流控引脚
+ system_delay_ms(10); // 延时等待 模块准备就绪
+ }while(0);
+#endif
+ return return_state;
+}
diff --git a/Example/E09_timer_demo/libraries/zf_device/zf_device_ble6a20.h b/Example/E09_timer_demo/libraries/zf_device/zf_device_ble6a20.h
new file mode 100644
index 0000000..c037ea2
--- /dev/null
+++ b/Example/E09_timer_demo/libraries/zf_device/zf_device_ble6a20.h
@@ -0,0 +1,108 @@
+/*********************************************************************************************************************
+* TC264 Opensourec Library 即(TC264 开源库)是一个基于官方 SDK 接口的第三方开源库
+* Copyright (c) 2022 SEEKFREE 逐飞科技
+*
+* 本文件是 TC264 开源库的一部分
+*
+* TC264 开源库 是免费软件
+* 您可以根据自由软件基金会发布的 GPL(GNU General Public License,即 GNU通用公共许可证)的条款
+* 即 GPL 的第3版(即 GPL3.0)或(您选择的)任何后来的版本,重新发布和/或修改它
+*
+* 本开源库的发布是希望它能发挥作用,但并未对其作任何的保证
+* 甚至没有隐含的适销性或适合特定用途的保证
+* 更多细节请参见 GPL
+*
+* 您应该在收到本开源库的同时收到一份 GPL 的副本
+* 如果没有,请参阅
+*
+* 额外注明:
+* 本开源库使用 GPL3.0 开源许可证协议 以上许可申明为译文版本
+* 许可申明英文版在 libraries/doc 文件夹下的 GPL3_permission_statement.txt 文件中
+* 许可证副本在 libraries 文件夹下 即该文件夹下的 LICENSE 文件
+* 欢迎各位使用并传播本程序 但修改内容时必须保留逐飞科技的版权声明(即本声明)
+*
+* 文件名称 zf_device_ble6a20.h
+* 公司名称 成都逐飞科技有限公司
+* 版本信息 查看 libraries/doc 文件夹内 version 文件 版本说明
+* 开发环境 ADS v1.9.20
+* 适用平台 TC264D
+* 店铺链接 https://seekfree.taobao.com/
+*
+* 修改记录
+* 日期 作者 备注
+* 2024-07-02 pudding first version
+********************************************************************************************************************/
+/*********************************************************************************************************************
+* 接线定义:
+* ------------------------------------
+* 模块管脚 单片机管脚
+* RX 查看 zf_device_ble6a20.h 中 BLE6A20_RX_PIN 宏定义
+* TX 查看 zf_device_ble6a20.h 中 BLE6A20_TX_PIN 宏定义
+* RTS 查看 zf_device_ble6a20.h 中 BLE6A20_RTS_PIN 宏定义
+* VCC 3.3V电源
+* GND 电源地
+* 其余引脚悬空
+* ------------------------------------
+*********************************************************************************************************************/
+
+
+#ifndef _zf_device_ble6a20_h_
+#define _zf_device_ble6a20_h_
+
+#include "zf_common_typedef.h"
+
+
+//=================================================定义 蓝牙串口 基本配置================================================
+
+#define BLE6A20_INDEX (UART_2) // 蓝牙串口对应使用的串口号
+#define BLE6A20_BUAD_RATE (115200) // 蓝牙串口对应使用的串口波特率
+ // 波特率仅支持 9600 57600 115200 230400 460800 921600 1500000 2000000
+#define BLE6A20_TX_PIN (UART2_RX_P10_6) // 蓝牙串口对应模块的 TX 要接到单片机的 RX
+#define BLE6A20_RX_PIN (UART2_TX_P10_5) // 蓝牙串口对应模块的 RX 要接到单片机的 TX
+#define BLE6A20_RTS_PIN (P10_2) // 蓝牙串口对应模块的 RTS 引脚
+
+#define BLE6A20_BUFFER_SIZE ( 64 ) // 蓝牙串口缓冲区大小
+#define BLE6A20_TIMEOUT_COUNT ( 0x64 ) // 蓝牙串口通讯超时范围
+
+// ------------------------------------ 自动波特率 ------------------------------------
+// 注意事项1:开启自动波特率务必连接RTS引脚 否则会开启失败。
+// 注意事项2:模块自动波特率失败的话 可以尝试断电重启
+
+// 开启自动波特率务必阅读上面两条 注意事项
+// 开启自动波特率务必阅读上面两条 注意事项
+// 开启自动波特率务必阅读上面两条 注意事项
+
+// 0:关闭自动波特率
+// 1:开启自动波特率 自动波特率的作用是修改 BLE6A20_BAUD 之后不需要对模块进行配置 模块会自动设置为对应的波特率
+// 自动波特率仅支持 9600 57600 115200 230400 460800 921600 1500000 2000000
+
+#define BLE6A20_AUTO_BAUD_RATE ( 0 )
+
+#if (1 == BLE6A20_AUTO_BAUD_RATE)
+typedef enum
+{
+ BLE6A20_AUTO_BAUD_RATE_SUCCESS,
+ BLE6A20_AUTO_BAUD_RATE_INIT,
+ BLE6A20_AUTO_BAUD_RATE_START,
+ BLE6A20_AUTO_BAUD_RATE_GET_ACK,
+}ble6a20_auto_baudrate_state_enum;
+#endif
+// ------------------------------------ 自动波特率 ------------------------------------
+
+//=================================================定义 蓝牙串口 基本配置================================================
+
+
+//=================================================声明 蓝牙串口 基础函数================================================
+uint32 ble6a20_send_byte (const uint8 data); // 蓝牙转串口模块 发送数据
+uint32 ble6a20_send_buffer (const uint8 *buff, uint32 len); // 蓝牙转串口模块 发送数据块
+uint32 ble6a20_send_string (const char *str); // 蓝牙转串口模块 发送字符串
+void ble6a20_send_image (const uint8 *image_addr, uint32 image_size); // 蓝牙转串口模块 发送摄像头图像至上位机查看图像
+
+uint32 ble6a20_read_buffer (uint8 *buff, uint32 len); // 蓝牙转串口模块 读取缓冲区数据
+
+void ble6a20_callback (void); // 蓝牙转串口模块 串口中断回调函数
+
+uint8 ble6a20_init (void); // 蓝牙转串口模块 初始化
+//=================================================声明 蓝牙串口 基础函数================================================
+
+#endif
diff --git a/Example/E09_timer_demo/libraries/zf_device/zf_device_type.h b/Example/E09_timer_demo/libraries/zf_device/zf_device_type.h
index 6c2b8da..4f8ec53 100644
--- a/Example/E09_timer_demo/libraries/zf_device/zf_device_type.h
+++ b/Example/E09_timer_demo/libraries/zf_device/zf_device_type.h
@@ -54,6 +54,7 @@ typedef enum
{
NO_WIRELESS = 0, // 无设备
WIRELESS_UART, // 无线串口
+ BLE6A20, // 蓝牙串口
BLUETOOTH_CH9141, // 蓝牙 CH9141
WIFI_UART, // 串口 WiFi
RECEIVER_UART, // 枪式遥控器
diff --git a/Example/E09_timer_demo/libraries/zf_device/澶栬鏂囦欢璇存槑.txt b/Example/E09_timer_demo/libraries/zf_device/澶栬鏂囦欢璇存槑.txt
new file mode 100644
index 0000000..1c96965
--- /dev/null
+++ b/Example/E09_timer_demo/libraries/zf_device/澶栬鏂囦欢璇存槑.txt
@@ -0,0 +1,97 @@
+
+如需获取详细资料可联系淘宝店铺客服:https://seekfree.taobao.com/
+如需获取详细资料可联系淘宝店铺客服:https://seekfree.taobao.com/
+如需获取详细资料可联系淘宝店铺客服:https://seekfree.taobao.com/
+
+本文件主要用于说明 zf_device 目录下各个文件所对应的外设模块
+本文件主要用于说明 zf_device 目录下各个文件所对应的外设模块
+本文件主要用于说明 zf_device 目录下各个文件所对应的外设模块
+
+
+=================================================== 测距模块 ===================================================
+
+zf_device_dl1a.h TOF 测距模块 DL1A 频率:33hz 最大距离:1.2 米
+
+zf_device_dl1b.h TOF 测距模块 DL1B 频率:100hz 最大距离:1.4 米
+
+=================================================== 测距模块 ===================================================
+
+
+
+==================================================== 陀螺仪 ====================================================
+
+zf_device_mpu6050.h MPU6050 六轴陀螺仪 传统 IIC 通讯
+
+zf_device_icm20602.h ICM20602 六轴陀螺仪 支持 SPI 采值
+
+zf_device_imu660ra.h IMU660RA 六轴陀螺仪 高精度陀螺仪
+
+zf_device_imu963ra.h IMU963RA 九轴陀螺仪 支持地磁计采集
+
+==================================================== 陀螺仪 ====================================================
+
+
+
+=================================================== 屏幕显示 ===================================================
+
+zf_device_ips114.h IPS114 液晶屏幕 1.14 寸 分辨率:240 * 135
+
+zf_device_ips200.h IPS200 液晶屏幕 2.0 寸 分辨率:240 * 320
+
+zf_device_tft180.h TFT180 屏幕 1.8寸 分辨率:160 * 128
+
+zf_device_oled.h OLED 液晶屏幕 0.96 寸 分辨率:128 * 64
+
+=================================================== 屏幕显示 ===================================================
+
+
+
+================================================== 图像传感器 ==================================================
+
+zf_device_mt9v03x.h MT9V03X 总钻风灰度摄像头
+
+zf_device_ov7725.h OV7725 小钻风硬件二值化摄像头
+
+zf_device_scc8660.h SCC8660 凌瞳彩色摄像头
+
+zf_device_tsl1401.h TSL1401 红孩儿线阵CCD
+
+================================================== 图像传感器 ==================================================
+
+
+
+=================================================== 无线通讯 ===================================================
+
+zf_device_ble6a20.h 蓝牙串口模块 无线通讯
+
+zf_device_bluetooth_ch9141.h CH9141 蓝牙通讯模块 蓝牙组网通讯
+
+zf_device_wifi_spi.h WIFI-SPI 高速WIFI无线通讯模块
+
+zf_device_wifi_uart.h WIFI-UART 串口WIFI无线通讯模块
+
+zf_device_wireless_uart.h 无线串口模块
+
+=================================================== 无线通讯 ===================================================
+
+
+
+=================================================== 远程遥控 ===================================================
+
+zf_device_uart_receiver.h SUBS 串口遥控器 串口通讯 长距离遥控 2.4G频段
+
+=================================================== 远程遥控 ===================================================
+
+
+
+================================================== 其他传感器 ==================================================
+
+zf_device_absolute_encoder.h 360° 位置传感器 绝对式迷你 mini 编码器 分辨率:0.088°
+
+zf_device_gnss.h GPS 及 RTK 定位模块 双频高精度定位模块 亚米级定位
+
+zf_device_key.h GPIO 按键驱动 用于检测主板按键状态
+
+zf_device_virtual_oscilloscope.h VisualScope 虚拟示波器
+
+================================================== 其他传感器 ==================================================
\ No newline at end of file
diff --git a/Example/E10_printf_debug_log_demo/libraries/doc/version.txt b/Example/E10_printf_debug_log_demo/libraries/doc/version.txt
index 68afc86..c4e0d0a 100644
--- a/Example/E10_printf_debug_log_demo/libraries/doc/version.txt
+++ b/Example/E10_printf_debug_log_demo/libraries/doc/version.txt
@@ -1,3 +1,5 @@
+V3.3.0
+ 新增蓝牙串口通讯模块
V3.2.13
新增一个微秒延时函数 该延时函数为普通延时 非中断延时
V3.2.12
diff --git a/Example/E10_printf_debug_log_demo/libraries/zf_common/zf_common_headfile.h b/Example/E10_printf_debug_log_demo/libraries/zf_common/zf_common_headfile.h
index c0d833b..3a140e3 100644
--- a/Example/E10_printf_debug_log_demo/libraries/zf_common/zf_common_headfile.h
+++ b/Example/E10_printf_debug_log_demo/libraries/zf_common/zf_common_headfile.h
@@ -81,6 +81,7 @@
//===================================================外接设备驱动层===================================================
#include "zf_device_absolute_encoder.h"
+#include "zf_device_ble6a20.h"
#include "zf_device_bluetooth_ch9141.h"
#include "zf_device_gnss.h"
#include "zf_device_camera.h"
diff --git a/Example/E10_printf_debug_log_demo/libraries/zf_components/seekfree_assistant.c b/Example/E10_printf_debug_log_demo/libraries/zf_components/seekfree_assistant.c
index 0b7cb9d..af3bb96 100644
--- a/Example/E10_printf_debug_log_demo/libraries/zf_components/seekfree_assistant.c
+++ b/Example/E10_printf_debug_log_demo/libraries/zf_components/seekfree_assistant.c
@@ -1,20 +1,20 @@
/*********************************************************************************************************************
-* RT1064DVL6A Opensourec Library 即(RT1064DVL6A 开源库)是一个基于官方 SDK 接口的第三方开源库
+* TC264 Opensourec Library 即(TC264 开源库)是一个基于官方 SDK 接口的第三方开源库
* Copyright (c) 2022 SEEKFREE 逐飞科技
-*
-* 本文件是 RT1064DVL6A 开源库的一部分
-*
-* RT1064DVL6A 开源库 是免费软件
+*
+* 本文件是 TC264 开源库的一部分
+*
+* TC264 开源库 是免费软件
* 您可以根据自由软件基金会发布的 GPL(GNU General Public License,即 GNU通用公共许可证)的条款
* 即 GPL 的第3版(即 GPL3.0)或(您选择的)任何后来的版本,重新发布和/或修改它
-*
+*
* 本开源库的发布是希望它能发挥作用,但并未对其作任何的保证
* 甚至没有隐含的适销性或适合特定用途的保证
* 更多细节请参见 GPL
-*
+*
* 您应该在收到本开源库的同时收到一份 GPL 的副本
* 如果没有,请参阅
-*
+*
* 额外注明:
* 本开源库使用 GPL3.0 开源许可证协议 以上许可申明为译文版本
* 许可申明英文版在 libraries/doc 文件夹下的 GPL3_permission_statement.txt 文件中
@@ -24,13 +24,13 @@
* 文件名称 seekfree_assistant
* 公司名称 成都逐飞科技有限公司
* 版本信息 查看 libraries/doc 文件夹内 version 文件 版本说明
-* 开发环境 IAR 8.32.4 or MDK 5.33
-* 适用平台 RT1064DVL6A
+* 开发环境 ADS v1.9.20
+* 适用平台 TC264D
* 店铺链接 https://seekfree.taobao.com/
-*
+*
* 修改记录
-* 日期 作者 备注
-* 2024-1-11 SeekFree first version
+* 日期 作者 备注
+* 2024-01-01 pudding first version
********************************************************************************************************************/
#include "zf_common_debug.h"
diff --git a/Example/E10_printf_debug_log_demo/libraries/zf_components/seekfree_assistant.h b/Example/E10_printf_debug_log_demo/libraries/zf_components/seekfree_assistant.h
index ae0f67c..5e04a1d 100644
--- a/Example/E10_printf_debug_log_demo/libraries/zf_components/seekfree_assistant.h
+++ b/Example/E10_printf_debug_log_demo/libraries/zf_components/seekfree_assistant.h
@@ -1,20 +1,20 @@
/*********************************************************************************************************************
-* RT1064DVL6A Opensourec Library 即(RT1064DVL6A 开源库)是一个基于官方 SDK 接口的第三方开源库
+* TC264 Opensourec Library 即(TC264 开源库)是一个基于官方 SDK 接口的第三方开源库
* Copyright (c) 2022 SEEKFREE 逐飞科技
-*
-* 本文件是 RT1064DVL6A 开源库的一部分
-*
-* RT1064DVL6A 开源库 是免费软件
+*
+* 本文件是 TC264 开源库的一部分
+*
+* TC264 开源库 是免费软件
* 您可以根据自由软件基金会发布的 GPL(GNU General Public License,即 GNU通用公共许可证)的条款
* 即 GPL 的第3版(即 GPL3.0)或(您选择的)任何后来的版本,重新发布和/或修改它
-*
+*
* 本开源库的发布是希望它能发挥作用,但并未对其作任何的保证
* 甚至没有隐含的适销性或适合特定用途的保证
* 更多细节请参见 GPL
-*
+*
* 您应该在收到本开源库的同时收到一份 GPL 的副本
* 如果没有,请参阅
-*
+*
* 额外注明:
* 本开源库使用 GPL3.0 开源许可证协议 以上许可申明为译文版本
* 许可申明英文版在 libraries/doc 文件夹下的 GPL3_permission_statement.txt 文件中
@@ -24,13 +24,13 @@
* 文件名称 seekfree_assistant
* 公司名称 成都逐飞科技有限公司
* 版本信息 查看 libraries/doc 文件夹内 version 文件 版本说明
-* 开发环境 IAR 8.32.4 or MDK 5.33
-* 适用平台 RT1064DVL6A
+* 开发环境 ADS v1.9.20
+* 适用平台 TC264D
* 店铺链接 https://seekfree.taobao.com/
-*
+*
* 修改记录
-* 日期 作者 备注
-* 2024-1-11 SeekFree first version
+* 日期 作者 备注
+* 2024-01-01 pudding first version
********************************************************************************************************************/
#ifndef _seekfree_assistant_h_
#define _seekfree_assistant_h_
@@ -47,27 +47,27 @@
// 定义接收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 )
diff --git a/Example/E10_printf_debug_log_demo/libraries/zf_components/seekfree_assistant_interface.c b/Example/E10_printf_debug_log_demo/libraries/zf_components/seekfree_assistant_interface.c
index fdade63..cc42e43 100644
--- a/Example/E10_printf_debug_log_demo/libraries/zf_components/seekfree_assistant_interface.c
+++ b/Example/E10_printf_debug_log_demo/libraries/zf_components/seekfree_assistant_interface.c
@@ -1,20 +1,20 @@
/*********************************************************************************************************************
-* RT1064DVL6A Opensourec Library 即(RT1064DVL6A 开源库)是一个基于官方 SDK 接口的第三方开源库
+* TC264 Opensourec Library 即(TC264 开源库)是一个基于官方 SDK 接口的第三方开源库
* Copyright (c) 2022 SEEKFREE 逐飞科技
-*
-* 本文件是 RT1064DVL6A 开源库的一部分
-*
-* RT1064DVL6A 开源库 是免费软件
+*
+* 本文件是 TC264 开源库的一部分
+*
+* TC264 开源库 是免费软件
* 您可以根据自由软件基金会发布的 GPL(GNU General Public License,即 GNU通用公共许可证)的条款
* 即 GPL 的第3版(即 GPL3.0)或(您选择的)任何后来的版本,重新发布和/或修改它
-*
+*
* 本开源库的发布是希望它能发挥作用,但并未对其作任何的保证
* 甚至没有隐含的适销性或适合特定用途的保证
* 更多细节请参见 GPL
-*
+*
* 您应该在收到本开源库的同时收到一份 GPL 的副本
* 如果没有,请参阅
-*
+*
* 额外注明:
* 本开源库使用 GPL3.0 开源许可证协议 以上许可申明为译文版本
* 许可申明英文版在 libraries/doc 文件夹下的 GPL3_permission_statement.txt 文件中
@@ -24,13 +24,13 @@
* 文件名称 seekfree_assistant_interface
* 公司名称 成都逐飞科技有限公司
* 版本信息 查看 libraries/doc 文件夹内 version 文件 版本说明
-* 开发环境 IAR 8.32.4 or MDK 5.33
-* 适用平台 RT1064DVL6A
+* 开发环境 ADS v1.9.20
+* 适用平台 TC264D
* 店铺链接 https://seekfree.taobao.com/
-*
+*
* 修改记录
-* 日期 作者 备注
-* 2024-1-11 SeekFree first version
+* 日期 作者 备注
+* 2024-01-01 pudding first version
********************************************************************************************************************/
#include "zf_common_typedef.h"
@@ -38,6 +38,7 @@
#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"
@@ -100,6 +101,12 @@ ZF_WEAK void seekfree_assistant_interface_init (seekfree_assistant_transfer_devi
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;
diff --git a/Example/E10_printf_debug_log_demo/libraries/zf_components/seekfree_assistant_interface.h b/Example/E10_printf_debug_log_demo/libraries/zf_components/seekfree_assistant_interface.h
index 940b5f7..1d0158c 100644
--- a/Example/E10_printf_debug_log_demo/libraries/zf_components/seekfree_assistant_interface.h
+++ b/Example/E10_printf_debug_log_demo/libraries/zf_components/seekfree_assistant_interface.h
@@ -1,20 +1,20 @@
/*********************************************************************************************************************
-* RT1064DVL6A Opensourec Library 即(RT1064DVL6A 开源库)是一个基于官方 SDK 接口的第三方开源库
+* TC264 Opensourec Library 即(TC264 开源库)是一个基于官方 SDK 接口的第三方开源库
* Copyright (c) 2022 SEEKFREE 逐飞科技
-*
-* 本文件是 RT1064DVL6A 开源库的一部分
-*
-* RT1064DVL6A 开源库 是免费软件
+*
+* 本文件是 TC264 开源库的一部分
+*
+* TC264 开源库 是免费软件
* 您可以根据自由软件基金会发布的 GPL(GNU General Public License,即 GNU通用公共许可证)的条款
* 即 GPL 的第3版(即 GPL3.0)或(您选择的)任何后来的版本,重新发布和/或修改它
-*
+*
* 本开源库的发布是希望它能发挥作用,但并未对其作任何的保证
* 甚至没有隐含的适销性或适合特定用途的保证
* 更多细节请参见 GPL
-*
+*
* 您应该在收到本开源库的同时收到一份 GPL 的副本
* 如果没有,请参阅
-*
+*
* 额外注明:
* 本开源库使用 GPL3.0 开源许可证协议 以上许可申明为译文版本
* 许可申明英文版在 libraries/doc 文件夹下的 GPL3_permission_statement.txt 文件中
@@ -24,13 +24,13 @@
* 文件名称 seekfree_assistant_interface
* 公司名称 成都逐飞科技有限公司
* 版本信息 查看 libraries/doc 文件夹内 version 文件 版本说明
-* 开发环境 IAR 8.32.4 or MDK 5.33
-* 适用平台 RT1064DVL6A
+* 开发环境 ADS v1.9.20
+* 适用平台 TC264D
* 店铺链接 https://seekfree.taobao.com/
-*
+*
* 修改记录
-* 日期 作者 备注
-* 2024-1-11 SeekFree first version
+* 日期 作者 备注
+* 2024-01-01 pudding first version
********************************************************************************************************************/
#ifndef _seekfree_assistant_interface_h_
@@ -43,6 +43,7 @@ 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
diff --git a/Example/E10_printf_debug_log_demo/libraries/zf_device/zf_device_ble6a20.c b/Example/E10_printf_debug_log_demo/libraries/zf_device/zf_device_ble6a20.c
new file mode 100644
index 0000000..ea8649e
--- /dev/null
+++ b/Example/E10_printf_debug_log_demo/libraries/zf_device/zf_device_ble6a20.c
@@ -0,0 +1,299 @@
+/*********************************************************************************************************************
+* TC264 Opensourec Library 即(TC264 开源库)是一个基于官方 SDK 接口的第三方开源库
+* Copyright (c) 2022 SEEKFREE 逐飞科技
+*
+* 本文件是 TC264 开源库的一部分
+*
+* TC264 开源库 是免费软件
+* 您可以根据自由软件基金会发布的 GPL(GNU General Public License,即 GNU通用公共许可证)的条款
+* 即 GPL 的第3版(即 GPL3.0)或(您选择的)任何后来的版本,重新发布和/或修改它
+*
+* 本开源库的发布是希望它能发挥作用,但并未对其作任何的保证
+* 甚至没有隐含的适销性或适合特定用途的保证
+* 更多细节请参见 GPL
+*
+* 您应该在收到本开源库的同时收到一份 GPL 的副本
+* 如果没有,请参阅
+*
+* 额外注明:
+* 本开源库使用 GPL3.0 开源许可证协议 以上许可申明为译文版本
+* 许可申明英文版在 libraries/doc 文件夹下的 GPL3_permission_statement.txt 文件中
+* 许可证副本在 libraries 文件夹下 即该文件夹下的 LICENSE 文件
+* 欢迎各位使用并传播本程序 但修改内容时必须保留逐飞科技的版权声明(即本声明)
+*
+* 文件名称 zf_device_ble6a20
+* 公司名称 成都逐飞科技有限公司
+* 版本信息 查看 libraries/doc 文件夹内 version 文件 版本说明
+* 开发环境 ADS v1.9.20
+* 适用平台 TC264D
+* 店铺链接 https://seekfree.taobao.com/
+*
+* 修改记录
+* 日期 作者 备注
+* 2024-07-02 pudding first version
+********************************************************************************************************************/
+/*********************************************************************************************************************
+* 接线定义:
+* ------------------------------------
+* 模块管脚 单片机管脚
+* RX 查看 zf_device_ble6a20.h 中 BLE6A20_RX_PIN 宏定义
+* TX 查看 zf_device_ble6a20.h 中 BLE6A20_TX_PIN 宏定义
+* RTS 查看 zf_device_ble6a20.h 中 BLE6A20_RTS_PIN 宏定义
+* VCC 3.3V电源
+* GND 电源地
+* 其余引脚悬空
+* ------------------------------------
+*********************************************************************************************************************/
+
+#include "zf_common_clock.h"
+#include "zf_common_debug.h"
+#include "zf_common_fifo.h"
+#include "zf_driver_delay.h"
+#include "zf_driver_gpio.h"
+#include "zf_driver_uart.h"
+#include "zf_device_type.h"
+#include "zf_device_ble6a20.h"
+
+static fifo_struct ble6a20_fifo;
+static uint8 ble6a20_buffer[BLE6A20_BUFFER_SIZE];
+
+static uint8 ble6a20_data = 0;
+#if (1 == BLE6A20_AUTO_BAUD_RATE)
+static volatile ble6a20_auto_baudrate_state_enum ble6a20_auto_baud_flag = BLE6A20_AUTO_BAUD_RATE_INIT;
+static volatile uint8 ble6a20_auto_baud_data[3] = {0x00, 0x01, 0x03};
+#endif
+
+//-------------------------------------------------------------------------------------------------------------------
+// 函数简介 蓝牙转串口模块 发送数据
+// 参数说明 data 8bit 数据
+// 返回参数 uint32 剩余发送长度 0-发送完毕 1-未发送完成
+// 使用示例 ble6a20_send_byte(data);
+// 备注信息
+//-------------------------------------------------------------------------------------------------------------------
+uint32 ble6a20_send_byte (const uint8 data)
+{
+ uint16 time_count = BLE6A20_TIMEOUT_COUNT;
+ while(time_count)
+ {
+ if(!gpio_get_level(BLE6A20_RTS_PIN))
+ {
+ uart_write_byte(BLE6A20_INDEX, data); // 发送数据
+ break;
+ }
+ time_count --;
+ system_delay_ms(1);
+ }
+ return (0 == time_count);
+}
+
+//-------------------------------------------------------------------------------------------------------------------
+// 函数简介 蓝牙转串口模块 发送数据块
+// 参数说明 *buff 发送缓冲区
+// 参数说明 len 发送数据长度
+// 返回参数 uint32 剩余发送长度
+// 使用示例 ble6a20_send_buffer(buff, 64);
+// 备注信息
+//-------------------------------------------------------------------------------------------------------------------
+uint32 ble6a20_send_buffer (const uint8 *buff, uint32 len)
+{
+ zf_assert(NULL != buff);
+ uint16 time_count = 0;
+ while(0 != len)
+ {
+ if(!gpio_get_level(BLE6A20_RTS_PIN)) // 如果RTS为低电平 则继续发送数据
+ {
+ if(30 <= len) // 数据分 30byte 每包发送
+ {
+ uart_write_buffer(BLE6A20_INDEX, buff, 30); // 发送数据
+ buff += 30; // 地址偏移
+ len -= 30; // 数量
+ time_count = 0;
+ }
+ else // 不足 30byte 的数据一次性发送完毕
+ {
+ uart_write_buffer(BLE6A20_INDEX, buff, len); // 发送数据
+ len = 0;
+ break;
+ }
+ }
+ else // 如果RTS为高电平 则模块忙
+ {
+ if(BLE6A20_TIMEOUT_COUNT <= (++ time_count)) // 超出了最大等待时间
+ {
+ break; // 退出发送
+ }
+ system_delay_ms(1);
+ }
+ }
+ return len;
+}
+
+//-------------------------------------------------------------------------------------------------------------------
+// 函数简介 蓝牙转串口模块 发送字符串
+// 参数说明 *str 要发送的字符串地址
+// 返回参数 uint32 剩余发送长度
+// 使用示例 ble6a20_send_string("Believe in yourself.");
+// 备注信息
+//-------------------------------------------------------------------------------------------------------------------
+uint32 ble6a20_send_string (const char *str)
+{
+ zf_assert(NULL != str);
+ uint16 time_count = 0;
+ uint32 len = strlen(str);
+ while(0 != len)
+ {
+ if(!gpio_get_level(BLE6A20_RTS_PIN)) // 如果RTS为低电平 则继续发送数据
+ {
+ if(128 <= len) // 数据分 128byte 每包发送
+ {
+ uart_write_buffer(BLE6A20_INDEX, (const uint8 *)str, 128); // 发送数据
+ str += 128; // 地址偏移
+ len -= 128; // 数量
+ time_count = 0;
+ }
+ else // 不足 128byte 的数据一次性发送完毕
+ {
+ uart_write_buffer(BLE6A20_INDEX, (const uint8 *)str, len);// 发送数据
+ len = 0;
+ break;
+ }
+ }
+ else // 如果RTS为高电平 则模块忙
+ {
+ if(BLE6A20_TIMEOUT_COUNT <= (++ time_count)) // 超出了最大等待时间
+ {
+ break; // 退出发送
+ }
+ system_delay_ms(1);
+ }
+ }
+ return len;
+}
+
+//-------------------------------------------------------------------------------------------------------------------
+// 函数简介 蓝牙转串口模块 发送摄像头图像至上位机查看图像
+// 参数说明 *image_addr 需要发送的图像地址
+// 参数说明 image_size 图像的大小
+// 返回参数 void
+// 使用示例 ble6a20_send_image(&mt9v03x_image[0][0], MT9V03X_IMAGE_SIZE);
+// 备注信息
+//-------------------------------------------------------------------------------------------------------------------
+void ble6a20_send_image (const uint8 *image_addr, uint32 image_size)
+{
+ zf_assert(NULL != image_addr);
+ extern uint8 camera_send_image_frame_header[4];
+ ble6a20_send_buffer(camera_send_image_frame_header, 4);
+ ble6a20_send_buffer((uint8 *)image_addr, image_size);
+}
+
+//-------------------------------------------------------------------------------------------------------------------
+// 函数简介 蓝牙转串口模块 读取缓冲区数据
+// 参数说明 *buff 接收缓冲区
+// 参数说明 len 读取数据长度
+// 返回参数 uint32 实际读取数据长度
+// 使用示例 ble6a20_read_buffer(buff, 32);
+// 备注信息
+//-------------------------------------------------------------------------------------------------------------------
+uint32 ble6a20_read_buffer (uint8 *buff, uint32 len)
+{
+ zf_assert(NULL != buff);
+ uint32 data_len = len;
+ fifo_read_buffer(&ble6a20_fifo, buff, &data_len, FIFO_READ_AND_CLEAN);
+ return data_len;
+}
+
+//-------------------------------------------------------------------------------------------------------------------
+// 函数简介 蓝牙转串口模块 串口中断回调函数
+// 参数说明 void
+// 返回参数 void
+// 使用示例 ble6a20_callback();
+// 备注信息 该函数在 ISR 文件 串口中断程序被调用
+// 由串口中断服务函数调用 wireless_module_uart_handler() 函数
+// 再由 wireless_module_uart_handler() 函数调用本函数
+//-------------------------------------------------------------------------------------------------------------------
+void ble6a20_callback (void)
+{
+ if(uart_query_byte(BLE6A20_INDEX, &ble6a20_data))
+ {
+ fifo_write_buffer(&ble6a20_fifo, &ble6a20_data, 1);
+#if BLE6A20_AUTO_BAUD_RATE // 开启自动波特率
+ if(BLE6A20_AUTO_BAUD_RATE_START == ble6a20_auto_baud_flag && 3 == fifo_used(&ble6a20_fifo))
+ {
+ uint32 ble6a20_auto_baud_count = 3;
+ ble6a20_auto_baud_flag = BLE6A20_AUTO_BAUD_RATE_GET_ACK;
+ fifo_read_buffer(&ble6a20_fifo, (uint8 *)ble6a20_auto_baud_data, (uint32 *)&ble6a20_auto_baud_count, FIFO_READ_AND_CLEAN);
+ }
+#endif
+ }
+}
+
+//-------------------------------------------------------------------------------------------------------------------
+// 函数简介 蓝牙转串口模块 初始化
+// 参数说明 void
+// 返回参数 void
+// 使用示例 ble6a20_init();
+// 备注信息
+//-------------------------------------------------------------------------------------------------------------------
+uint8 ble6a20_init (void)
+{
+ uint8 return_state = 0;
+
+ // 等待模块初始化
+ system_delay_ms(50);
+
+ set_wireless_type(BLE6A20, ble6a20_callback);
+
+ fifo_init(&ble6a20_fifo, FIFO_DATA_8BIT, ble6a20_buffer, BLE6A20_BUFFER_SIZE);
+ gpio_init(BLE6A20_RTS_PIN, GPI, GPIO_HIGH, GPI_PULL_UP);
+#if(0 == BLE6A20_AUTO_BAUD_RATE) // 关闭自动波特率
+ // 本函数使用的波特率为115200 为蓝牙转串口模块的默认波特率 如需其他波特率请自行配置模块并修改串口的波特率
+ uart_init (BLE6A20_INDEX, BLE6A20_BUAD_RATE, BLE6A20_RX_PIN, BLE6A20_TX_PIN); // 初始化串口
+ uart_rx_interrupt(BLE6A20_INDEX, 1);
+#elif(1 == BLE6A20_AUTO_BAUD_RATE) // 开启自动波特率
+ uint8 rts_init_status = 0;
+
+ ble6a20_auto_baud_flag = BLE6A20_AUTO_BAUD_RATE_INIT;
+ ble6a20_auto_baud_data[0] = 0;
+ ble6a20_auto_baud_data[1] = 1;
+ ble6a20_auto_baud_data[2] = 3;
+
+ rts_init_status = gpio_get_level(BLE6A20_RTS_PIN);
+ gpio_init(BLE6A20_RTS_PIN, GPO, rts_init_status, GPO_PUSH_PULL); // 初始化流控引脚
+
+ uart_init (BLE6A20_INDEX, BLE6A20_BUAD_RATE, BLE6A20_RX_PIN, BLE6A20_TX_PIN); // 初始化串口
+ uart_rx_interrupt(BLE6A20_INDEX, 1);
+
+ system_delay_ms(5); // 模块上电之后需要延时等待
+ gpio_set_level(BLE6A20_RTS_PIN, !rts_init_status); // RTS引脚拉高,进入自动波特率模式
+ system_delay_ms(100); // RTS拉高之后必须延时20ms
+ gpio_toggle_level(BLE6A20_RTS_PIN); // RTS引脚取反
+
+ do
+ {
+ ble6a20_auto_baud_flag = BLE6A20_AUTO_BAUD_RATE_START;
+ uart_write_byte(BLE6A20_INDEX, ble6a20_auto_baud_data[0]); // 发送特定数据 用于模块自动判断波特率
+ uart_write_byte(BLE6A20_INDEX, ble6a20_auto_baud_data[1]); // 发送特定数据 用于模块自动判断波特率
+ uart_write_byte(BLE6A20_INDEX, ble6a20_auto_baud_data[2]); // 发送特定数据 用于模块自动判断波特率
+ system_delay_ms(20);
+
+ if(BLE6A20_AUTO_BAUD_RATE_GET_ACK != ble6a20_auto_baud_flag) // 检验自动波特率是否完成
+ {
+ return_state = 1; // 如果程序进入到此语句内 说明自动波特率失败了
+ break;
+ }
+
+ if( 0xa5 != ble6a20_auto_baud_data[0] && // 检验自动波特率是否正确
+ 0xff != ble6a20_auto_baud_data[1] && // 检验自动波特率是否正确
+ 0xff != ble6a20_auto_baud_data[2] ) // 检验自动波特率是否正确
+ {
+ return_state = 1; // 如果程序进入到此语句内 说明自动波特率失败了
+ break;
+ }
+ ble6a20_auto_baud_flag = BLE6A20_AUTO_BAUD_RATE_SUCCESS;
+
+ gpio_init(BLE6A20_RTS_PIN, GPI, 0, GPI_PULL_UP); // 初始化流控引脚
+ system_delay_ms(10); // 延时等待 模块准备就绪
+ }while(0);
+#endif
+ return return_state;
+}
diff --git a/Example/E10_printf_debug_log_demo/libraries/zf_device/zf_device_ble6a20.h b/Example/E10_printf_debug_log_demo/libraries/zf_device/zf_device_ble6a20.h
new file mode 100644
index 0000000..c037ea2
--- /dev/null
+++ b/Example/E10_printf_debug_log_demo/libraries/zf_device/zf_device_ble6a20.h
@@ -0,0 +1,108 @@
+/*********************************************************************************************************************
+* TC264 Opensourec Library 即(TC264 开源库)是一个基于官方 SDK 接口的第三方开源库
+* Copyright (c) 2022 SEEKFREE 逐飞科技
+*
+* 本文件是 TC264 开源库的一部分
+*
+* TC264 开源库 是免费软件
+* 您可以根据自由软件基金会发布的 GPL(GNU General Public License,即 GNU通用公共许可证)的条款
+* 即 GPL 的第3版(即 GPL3.0)或(您选择的)任何后来的版本,重新发布和/或修改它
+*
+* 本开源库的发布是希望它能发挥作用,但并未对其作任何的保证
+* 甚至没有隐含的适销性或适合特定用途的保证
+* 更多细节请参见 GPL
+*
+* 您应该在收到本开源库的同时收到一份 GPL 的副本
+* 如果没有,请参阅
+*
+* 额外注明:
+* 本开源库使用 GPL3.0 开源许可证协议 以上许可申明为译文版本
+* 许可申明英文版在 libraries/doc 文件夹下的 GPL3_permission_statement.txt 文件中
+* 许可证副本在 libraries 文件夹下 即该文件夹下的 LICENSE 文件
+* 欢迎各位使用并传播本程序 但修改内容时必须保留逐飞科技的版权声明(即本声明)
+*
+* 文件名称 zf_device_ble6a20.h
+* 公司名称 成都逐飞科技有限公司
+* 版本信息 查看 libraries/doc 文件夹内 version 文件 版本说明
+* 开发环境 ADS v1.9.20
+* 适用平台 TC264D
+* 店铺链接 https://seekfree.taobao.com/
+*
+* 修改记录
+* 日期 作者 备注
+* 2024-07-02 pudding first version
+********************************************************************************************************************/
+/*********************************************************************************************************************
+* 接线定义:
+* ------------------------------------
+* 模块管脚 单片机管脚
+* RX 查看 zf_device_ble6a20.h 中 BLE6A20_RX_PIN 宏定义
+* TX 查看 zf_device_ble6a20.h 中 BLE6A20_TX_PIN 宏定义
+* RTS 查看 zf_device_ble6a20.h 中 BLE6A20_RTS_PIN 宏定义
+* VCC 3.3V电源
+* GND 电源地
+* 其余引脚悬空
+* ------------------------------------
+*********************************************************************************************************************/
+
+
+#ifndef _zf_device_ble6a20_h_
+#define _zf_device_ble6a20_h_
+
+#include "zf_common_typedef.h"
+
+
+//=================================================定义 蓝牙串口 基本配置================================================
+
+#define BLE6A20_INDEX (UART_2) // 蓝牙串口对应使用的串口号
+#define BLE6A20_BUAD_RATE (115200) // 蓝牙串口对应使用的串口波特率
+ // 波特率仅支持 9600 57600 115200 230400 460800 921600 1500000 2000000
+#define BLE6A20_TX_PIN (UART2_RX_P10_6) // 蓝牙串口对应模块的 TX 要接到单片机的 RX
+#define BLE6A20_RX_PIN (UART2_TX_P10_5) // 蓝牙串口对应模块的 RX 要接到单片机的 TX
+#define BLE6A20_RTS_PIN (P10_2) // 蓝牙串口对应模块的 RTS 引脚
+
+#define BLE6A20_BUFFER_SIZE ( 64 ) // 蓝牙串口缓冲区大小
+#define BLE6A20_TIMEOUT_COUNT ( 0x64 ) // 蓝牙串口通讯超时范围
+
+// ------------------------------------ 自动波特率 ------------------------------------
+// 注意事项1:开启自动波特率务必连接RTS引脚 否则会开启失败。
+// 注意事项2:模块自动波特率失败的话 可以尝试断电重启
+
+// 开启自动波特率务必阅读上面两条 注意事项
+// 开启自动波特率务必阅读上面两条 注意事项
+// 开启自动波特率务必阅读上面两条 注意事项
+
+// 0:关闭自动波特率
+// 1:开启自动波特率 自动波特率的作用是修改 BLE6A20_BAUD 之后不需要对模块进行配置 模块会自动设置为对应的波特率
+// 自动波特率仅支持 9600 57600 115200 230400 460800 921600 1500000 2000000
+
+#define BLE6A20_AUTO_BAUD_RATE ( 0 )
+
+#if (1 == BLE6A20_AUTO_BAUD_RATE)
+typedef enum
+{
+ BLE6A20_AUTO_BAUD_RATE_SUCCESS,
+ BLE6A20_AUTO_BAUD_RATE_INIT,
+ BLE6A20_AUTO_BAUD_RATE_START,
+ BLE6A20_AUTO_BAUD_RATE_GET_ACK,
+}ble6a20_auto_baudrate_state_enum;
+#endif
+// ------------------------------------ 自动波特率 ------------------------------------
+
+//=================================================定义 蓝牙串口 基本配置================================================
+
+
+//=================================================声明 蓝牙串口 基础函数================================================
+uint32 ble6a20_send_byte (const uint8 data); // 蓝牙转串口模块 发送数据
+uint32 ble6a20_send_buffer (const uint8 *buff, uint32 len); // 蓝牙转串口模块 发送数据块
+uint32 ble6a20_send_string (const char *str); // 蓝牙转串口模块 发送字符串
+void ble6a20_send_image (const uint8 *image_addr, uint32 image_size); // 蓝牙转串口模块 发送摄像头图像至上位机查看图像
+
+uint32 ble6a20_read_buffer (uint8 *buff, uint32 len); // 蓝牙转串口模块 读取缓冲区数据
+
+void ble6a20_callback (void); // 蓝牙转串口模块 串口中断回调函数
+
+uint8 ble6a20_init (void); // 蓝牙转串口模块 初始化
+//=================================================声明 蓝牙串口 基础函数================================================
+
+#endif
diff --git a/Example/E10_printf_debug_log_demo/libraries/zf_device/zf_device_type.h b/Example/E10_printf_debug_log_demo/libraries/zf_device/zf_device_type.h
index 6c2b8da..4f8ec53 100644
--- a/Example/E10_printf_debug_log_demo/libraries/zf_device/zf_device_type.h
+++ b/Example/E10_printf_debug_log_demo/libraries/zf_device/zf_device_type.h
@@ -54,6 +54,7 @@ typedef enum
{
NO_WIRELESS = 0, // 无设备
WIRELESS_UART, // 无线串口
+ BLE6A20, // 蓝牙串口
BLUETOOTH_CH9141, // 蓝牙 CH9141
WIFI_UART, // 串口 WiFi
RECEIVER_UART, // 枪式遥控器
diff --git a/Example/E10_printf_debug_log_demo/libraries/zf_device/澶栬鏂囦欢璇存槑.txt b/Example/E10_printf_debug_log_demo/libraries/zf_device/澶栬鏂囦欢璇存槑.txt
new file mode 100644
index 0000000..1c96965
--- /dev/null
+++ b/Example/E10_printf_debug_log_demo/libraries/zf_device/澶栬鏂囦欢璇存槑.txt
@@ -0,0 +1,97 @@
+
+如需获取详细资料可联系淘宝店铺客服:https://seekfree.taobao.com/
+如需获取详细资料可联系淘宝店铺客服:https://seekfree.taobao.com/
+如需获取详细资料可联系淘宝店铺客服:https://seekfree.taobao.com/
+
+本文件主要用于说明 zf_device 目录下各个文件所对应的外设模块
+本文件主要用于说明 zf_device 目录下各个文件所对应的外设模块
+本文件主要用于说明 zf_device 目录下各个文件所对应的外设模块
+
+
+=================================================== 测距模块 ===================================================
+
+zf_device_dl1a.h TOF 测距模块 DL1A 频率:33hz 最大距离:1.2 米
+
+zf_device_dl1b.h TOF 测距模块 DL1B 频率:100hz 最大距离:1.4 米
+
+=================================================== 测距模块 ===================================================
+
+
+
+==================================================== 陀螺仪 ====================================================
+
+zf_device_mpu6050.h MPU6050 六轴陀螺仪 传统 IIC 通讯
+
+zf_device_icm20602.h ICM20602 六轴陀螺仪 支持 SPI 采值
+
+zf_device_imu660ra.h IMU660RA 六轴陀螺仪 高精度陀螺仪
+
+zf_device_imu963ra.h IMU963RA 九轴陀螺仪 支持地磁计采集
+
+==================================================== 陀螺仪 ====================================================
+
+
+
+=================================================== 屏幕显示 ===================================================
+
+zf_device_ips114.h IPS114 液晶屏幕 1.14 寸 分辨率:240 * 135
+
+zf_device_ips200.h IPS200 液晶屏幕 2.0 寸 分辨率:240 * 320
+
+zf_device_tft180.h TFT180 屏幕 1.8寸 分辨率:160 * 128
+
+zf_device_oled.h OLED 液晶屏幕 0.96 寸 分辨率:128 * 64
+
+=================================================== 屏幕显示 ===================================================
+
+
+
+================================================== 图像传感器 ==================================================
+
+zf_device_mt9v03x.h MT9V03X 总钻风灰度摄像头
+
+zf_device_ov7725.h OV7725 小钻风硬件二值化摄像头
+
+zf_device_scc8660.h SCC8660 凌瞳彩色摄像头
+
+zf_device_tsl1401.h TSL1401 红孩儿线阵CCD
+
+================================================== 图像传感器 ==================================================
+
+
+
+=================================================== 无线通讯 ===================================================
+
+zf_device_ble6a20.h 蓝牙串口模块 无线通讯
+
+zf_device_bluetooth_ch9141.h CH9141 蓝牙通讯模块 蓝牙组网通讯
+
+zf_device_wifi_spi.h WIFI-SPI 高速WIFI无线通讯模块
+
+zf_device_wifi_uart.h WIFI-UART 串口WIFI无线通讯模块
+
+zf_device_wireless_uart.h 无线串口模块
+
+=================================================== 无线通讯 ===================================================
+
+
+
+=================================================== 远程遥控 ===================================================
+
+zf_device_uart_receiver.h SUBS 串口遥控器 串口通讯 长距离遥控 2.4G频段
+
+=================================================== 远程遥控 ===================================================
+
+
+
+================================================== 其他传感器 ==================================================
+
+zf_device_absolute_encoder.h 360° 位置传感器 绝对式迷你 mini 编码器 分辨率:0.088°
+
+zf_device_gnss.h GPS 及 RTK 定位模块 双频高精度定位模块 亚米级定位
+
+zf_device_key.h GPIO 按键驱动 用于检测主板按键状态
+
+zf_device_virtual_oscilloscope.h VisualScope 虚拟示波器
+
+================================================== 其他传感器 ==================================================
\ No newline at end of file
diff --git a/Example/E11_interrupt_priority_set_demo/libraries/doc/version.txt b/Example/E11_interrupt_priority_set_demo/libraries/doc/version.txt
index 68afc86..c4e0d0a 100644
--- a/Example/E11_interrupt_priority_set_demo/libraries/doc/version.txt
+++ b/Example/E11_interrupt_priority_set_demo/libraries/doc/version.txt
@@ -1,3 +1,5 @@
+V3.3.0
+ 新增蓝牙串口通讯模块
V3.2.13
新增一个微秒延时函数 该延时函数为普通延时 非中断延时
V3.2.12
diff --git a/Example/E11_interrupt_priority_set_demo/libraries/zf_common/zf_common_headfile.h b/Example/E11_interrupt_priority_set_demo/libraries/zf_common/zf_common_headfile.h
index c0d833b..3a140e3 100644
--- a/Example/E11_interrupt_priority_set_demo/libraries/zf_common/zf_common_headfile.h
+++ b/Example/E11_interrupt_priority_set_demo/libraries/zf_common/zf_common_headfile.h
@@ -81,6 +81,7 @@
//===================================================外接设备驱动层===================================================
#include "zf_device_absolute_encoder.h"
+#include "zf_device_ble6a20.h"
#include "zf_device_bluetooth_ch9141.h"
#include "zf_device_gnss.h"
#include "zf_device_camera.h"
diff --git a/Example/E11_interrupt_priority_set_demo/libraries/zf_components/seekfree_assistant.c b/Example/E11_interrupt_priority_set_demo/libraries/zf_components/seekfree_assistant.c
index 0b7cb9d..af3bb96 100644
--- a/Example/E11_interrupt_priority_set_demo/libraries/zf_components/seekfree_assistant.c
+++ b/Example/E11_interrupt_priority_set_demo/libraries/zf_components/seekfree_assistant.c
@@ -1,20 +1,20 @@
/*********************************************************************************************************************
-* RT1064DVL6A Opensourec Library 即(RT1064DVL6A 开源库)是一个基于官方 SDK 接口的第三方开源库
+* TC264 Opensourec Library 即(TC264 开源库)是一个基于官方 SDK 接口的第三方开源库
* Copyright (c) 2022 SEEKFREE 逐飞科技
-*
-* 本文件是 RT1064DVL6A 开源库的一部分
-*
-* RT1064DVL6A 开源库 是免费软件
+*
+* 本文件是 TC264 开源库的一部分
+*
+* TC264 开源库 是免费软件
* 您可以根据自由软件基金会发布的 GPL(GNU General Public License,即 GNU通用公共许可证)的条款
* 即 GPL 的第3版(即 GPL3.0)或(您选择的)任何后来的版本,重新发布和/或修改它
-*
+*
* 本开源库的发布是希望它能发挥作用,但并未对其作任何的保证
* 甚至没有隐含的适销性或适合特定用途的保证
* 更多细节请参见 GPL
-*
+*
* 您应该在收到本开源库的同时收到一份 GPL 的副本
* 如果没有,请参阅
-*
+*
* 额外注明:
* 本开源库使用 GPL3.0 开源许可证协议 以上许可申明为译文版本
* 许可申明英文版在 libraries/doc 文件夹下的 GPL3_permission_statement.txt 文件中
@@ -24,13 +24,13 @@
* 文件名称 seekfree_assistant
* 公司名称 成都逐飞科技有限公司
* 版本信息 查看 libraries/doc 文件夹内 version 文件 版本说明
-* 开发环境 IAR 8.32.4 or MDK 5.33
-* 适用平台 RT1064DVL6A
+* 开发环境 ADS v1.9.20
+* 适用平台 TC264D
* 店铺链接 https://seekfree.taobao.com/
-*
+*
* 修改记录
-* 日期 作者 备注
-* 2024-1-11 SeekFree first version
+* 日期 作者 备注
+* 2024-01-01 pudding first version
********************************************************************************************************************/
#include "zf_common_debug.h"
diff --git a/Example/E11_interrupt_priority_set_demo/libraries/zf_components/seekfree_assistant.h b/Example/E11_interrupt_priority_set_demo/libraries/zf_components/seekfree_assistant.h
index ae0f67c..5e04a1d 100644
--- a/Example/E11_interrupt_priority_set_demo/libraries/zf_components/seekfree_assistant.h
+++ b/Example/E11_interrupt_priority_set_demo/libraries/zf_components/seekfree_assistant.h
@@ -1,20 +1,20 @@
/*********************************************************************************************************************
-* RT1064DVL6A Opensourec Library 即(RT1064DVL6A 开源库)是一个基于官方 SDK 接口的第三方开源库
+* TC264 Opensourec Library 即(TC264 开源库)是一个基于官方 SDK 接口的第三方开源库
* Copyright (c) 2022 SEEKFREE 逐飞科技
-*
-* 本文件是 RT1064DVL6A 开源库的一部分
-*
-* RT1064DVL6A 开源库 是免费软件
+*
+* 本文件是 TC264 开源库的一部分
+*
+* TC264 开源库 是免费软件
* 您可以根据自由软件基金会发布的 GPL(GNU General Public License,即 GNU通用公共许可证)的条款
* 即 GPL 的第3版(即 GPL3.0)或(您选择的)任何后来的版本,重新发布和/或修改它
-*
+*
* 本开源库的发布是希望它能发挥作用,但并未对其作任何的保证
* 甚至没有隐含的适销性或适合特定用途的保证
* 更多细节请参见 GPL
-*
+*
* 您应该在收到本开源库的同时收到一份 GPL 的副本
* 如果没有,请参阅
-*
+*
* 额外注明:
* 本开源库使用 GPL3.0 开源许可证协议 以上许可申明为译文版本
* 许可申明英文版在 libraries/doc 文件夹下的 GPL3_permission_statement.txt 文件中
@@ -24,13 +24,13 @@
* 文件名称 seekfree_assistant
* 公司名称 成都逐飞科技有限公司
* 版本信息 查看 libraries/doc 文件夹内 version 文件 版本说明
-* 开发环境 IAR 8.32.4 or MDK 5.33
-* 适用平台 RT1064DVL6A
+* 开发环境 ADS v1.9.20
+* 适用平台 TC264D
* 店铺链接 https://seekfree.taobao.com/
-*
+*
* 修改记录
-* 日期 作者 备注
-* 2024-1-11 SeekFree first version
+* 日期 作者 备注
+* 2024-01-01 pudding first version
********************************************************************************************************************/
#ifndef _seekfree_assistant_h_
#define _seekfree_assistant_h_
@@ -47,27 +47,27 @@
// 定义接收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 )
diff --git a/Example/E11_interrupt_priority_set_demo/libraries/zf_components/seekfree_assistant_interface.c b/Example/E11_interrupt_priority_set_demo/libraries/zf_components/seekfree_assistant_interface.c
index fdade63..cc42e43 100644
--- a/Example/E11_interrupt_priority_set_demo/libraries/zf_components/seekfree_assistant_interface.c
+++ b/Example/E11_interrupt_priority_set_demo/libraries/zf_components/seekfree_assistant_interface.c
@@ -1,20 +1,20 @@
/*********************************************************************************************************************
-* RT1064DVL6A Opensourec Library 即(RT1064DVL6A 开源库)是一个基于官方 SDK 接口的第三方开源库
+* TC264 Opensourec Library 即(TC264 开源库)是一个基于官方 SDK 接口的第三方开源库
* Copyright (c) 2022 SEEKFREE 逐飞科技
-*
-* 本文件是 RT1064DVL6A 开源库的一部分
-*
-* RT1064DVL6A 开源库 是免费软件
+*
+* 本文件是 TC264 开源库的一部分
+*
+* TC264 开源库 是免费软件
* 您可以根据自由软件基金会发布的 GPL(GNU General Public License,即 GNU通用公共许可证)的条款
* 即 GPL 的第3版(即 GPL3.0)或(您选择的)任何后来的版本,重新发布和/或修改它
-*
+*
* 本开源库的发布是希望它能发挥作用,但并未对其作任何的保证
* 甚至没有隐含的适销性或适合特定用途的保证
* 更多细节请参见 GPL
-*
+*
* 您应该在收到本开源库的同时收到一份 GPL 的副本
* 如果没有,请参阅
-*
+*
* 额外注明:
* 本开源库使用 GPL3.0 开源许可证协议 以上许可申明为译文版本
* 许可申明英文版在 libraries/doc 文件夹下的 GPL3_permission_statement.txt 文件中
@@ -24,13 +24,13 @@
* 文件名称 seekfree_assistant_interface
* 公司名称 成都逐飞科技有限公司
* 版本信息 查看 libraries/doc 文件夹内 version 文件 版本说明
-* 开发环境 IAR 8.32.4 or MDK 5.33
-* 适用平台 RT1064DVL6A
+* 开发环境 ADS v1.9.20
+* 适用平台 TC264D
* 店铺链接 https://seekfree.taobao.com/
-*
+*
* 修改记录
-* 日期 作者 备注
-* 2024-1-11 SeekFree first version
+* 日期 作者 备注
+* 2024-01-01 pudding first version
********************************************************************************************************************/
#include "zf_common_typedef.h"
@@ -38,6 +38,7 @@
#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"
@@ -100,6 +101,12 @@ ZF_WEAK void seekfree_assistant_interface_init (seekfree_assistant_transfer_devi
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;
diff --git a/Example/E11_interrupt_priority_set_demo/libraries/zf_components/seekfree_assistant_interface.h b/Example/E11_interrupt_priority_set_demo/libraries/zf_components/seekfree_assistant_interface.h
index 940b5f7..1d0158c 100644
--- a/Example/E11_interrupt_priority_set_demo/libraries/zf_components/seekfree_assistant_interface.h
+++ b/Example/E11_interrupt_priority_set_demo/libraries/zf_components/seekfree_assistant_interface.h
@@ -1,20 +1,20 @@
/*********************************************************************************************************************
-* RT1064DVL6A Opensourec Library 即(RT1064DVL6A 开源库)是一个基于官方 SDK 接口的第三方开源库
+* TC264 Opensourec Library 即(TC264 开源库)是一个基于官方 SDK 接口的第三方开源库
* Copyright (c) 2022 SEEKFREE 逐飞科技
-*
-* 本文件是 RT1064DVL6A 开源库的一部分
-*
-* RT1064DVL6A 开源库 是免费软件
+*
+* 本文件是 TC264 开源库的一部分
+*
+* TC264 开源库 是免费软件
* 您可以根据自由软件基金会发布的 GPL(GNU General Public License,即 GNU通用公共许可证)的条款
* 即 GPL 的第3版(即 GPL3.0)或(您选择的)任何后来的版本,重新发布和/或修改它
-*
+*
* 本开源库的发布是希望它能发挥作用,但并未对其作任何的保证
* 甚至没有隐含的适销性或适合特定用途的保证
* 更多细节请参见 GPL
-*
+*
* 您应该在收到本开源库的同时收到一份 GPL 的副本
* 如果没有,请参阅
-*
+*
* 额外注明:
* 本开源库使用 GPL3.0 开源许可证协议 以上许可申明为译文版本
* 许可申明英文版在 libraries/doc 文件夹下的 GPL3_permission_statement.txt 文件中
@@ -24,13 +24,13 @@
* 文件名称 seekfree_assistant_interface
* 公司名称 成都逐飞科技有限公司
* 版本信息 查看 libraries/doc 文件夹内 version 文件 版本说明
-* 开发环境 IAR 8.32.4 or MDK 5.33
-* 适用平台 RT1064DVL6A
+* 开发环境 ADS v1.9.20
+* 适用平台 TC264D
* 店铺链接 https://seekfree.taobao.com/
-*
+*
* 修改记录
-* 日期 作者 备注
-* 2024-1-11 SeekFree first version
+* 日期 作者 备注
+* 2024-01-01 pudding first version
********************************************************************************************************************/
#ifndef _seekfree_assistant_interface_h_
@@ -43,6 +43,7 @@ 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
diff --git a/Example/E11_interrupt_priority_set_demo/libraries/zf_device/zf_device_ble6a20.c b/Example/E11_interrupt_priority_set_demo/libraries/zf_device/zf_device_ble6a20.c
new file mode 100644
index 0000000..ea8649e
--- /dev/null
+++ b/Example/E11_interrupt_priority_set_demo/libraries/zf_device/zf_device_ble6a20.c
@@ -0,0 +1,299 @@
+/*********************************************************************************************************************
+* TC264 Opensourec Library 即(TC264 开源库)是一个基于官方 SDK 接口的第三方开源库
+* Copyright (c) 2022 SEEKFREE 逐飞科技
+*
+* 本文件是 TC264 开源库的一部分
+*
+* TC264 开源库 是免费软件
+* 您可以根据自由软件基金会发布的 GPL(GNU General Public License,即 GNU通用公共许可证)的条款
+* 即 GPL 的第3版(即 GPL3.0)或(您选择的)任何后来的版本,重新发布和/或修改它
+*
+* 本开源库的发布是希望它能发挥作用,但并未对其作任何的保证
+* 甚至没有隐含的适销性或适合特定用途的保证
+* 更多细节请参见 GPL
+*
+* 您应该在收到本开源库的同时收到一份 GPL 的副本
+* 如果没有,请参阅
+*
+* 额外注明:
+* 本开源库使用 GPL3.0 开源许可证协议 以上许可申明为译文版本
+* 许可申明英文版在 libraries/doc 文件夹下的 GPL3_permission_statement.txt 文件中
+* 许可证副本在 libraries 文件夹下 即该文件夹下的 LICENSE 文件
+* 欢迎各位使用并传播本程序 但修改内容时必须保留逐飞科技的版权声明(即本声明)
+*
+* 文件名称 zf_device_ble6a20
+* 公司名称 成都逐飞科技有限公司
+* 版本信息 查看 libraries/doc 文件夹内 version 文件 版本说明
+* 开发环境 ADS v1.9.20
+* 适用平台 TC264D
+* 店铺链接 https://seekfree.taobao.com/
+*
+* 修改记录
+* 日期 作者 备注
+* 2024-07-02 pudding first version
+********************************************************************************************************************/
+/*********************************************************************************************************************
+* 接线定义:
+* ------------------------------------
+* 模块管脚 单片机管脚
+* RX 查看 zf_device_ble6a20.h 中 BLE6A20_RX_PIN 宏定义
+* TX 查看 zf_device_ble6a20.h 中 BLE6A20_TX_PIN 宏定义
+* RTS 查看 zf_device_ble6a20.h 中 BLE6A20_RTS_PIN 宏定义
+* VCC 3.3V电源
+* GND 电源地
+* 其余引脚悬空
+* ------------------------------------
+*********************************************************************************************************************/
+
+#include "zf_common_clock.h"
+#include "zf_common_debug.h"
+#include "zf_common_fifo.h"
+#include "zf_driver_delay.h"
+#include "zf_driver_gpio.h"
+#include "zf_driver_uart.h"
+#include "zf_device_type.h"
+#include "zf_device_ble6a20.h"
+
+static fifo_struct ble6a20_fifo;
+static uint8 ble6a20_buffer[BLE6A20_BUFFER_SIZE];
+
+static uint8 ble6a20_data = 0;
+#if (1 == BLE6A20_AUTO_BAUD_RATE)
+static volatile ble6a20_auto_baudrate_state_enum ble6a20_auto_baud_flag = BLE6A20_AUTO_BAUD_RATE_INIT;
+static volatile uint8 ble6a20_auto_baud_data[3] = {0x00, 0x01, 0x03};
+#endif
+
+//-------------------------------------------------------------------------------------------------------------------
+// 函数简介 蓝牙转串口模块 发送数据
+// 参数说明 data 8bit 数据
+// 返回参数 uint32 剩余发送长度 0-发送完毕 1-未发送完成
+// 使用示例 ble6a20_send_byte(data);
+// 备注信息
+//-------------------------------------------------------------------------------------------------------------------
+uint32 ble6a20_send_byte (const uint8 data)
+{
+ uint16 time_count = BLE6A20_TIMEOUT_COUNT;
+ while(time_count)
+ {
+ if(!gpio_get_level(BLE6A20_RTS_PIN))
+ {
+ uart_write_byte(BLE6A20_INDEX, data); // 发送数据
+ break;
+ }
+ time_count --;
+ system_delay_ms(1);
+ }
+ return (0 == time_count);
+}
+
+//-------------------------------------------------------------------------------------------------------------------
+// 函数简介 蓝牙转串口模块 发送数据块
+// 参数说明 *buff 发送缓冲区
+// 参数说明 len 发送数据长度
+// 返回参数 uint32 剩余发送长度
+// 使用示例 ble6a20_send_buffer(buff, 64);
+// 备注信息
+//-------------------------------------------------------------------------------------------------------------------
+uint32 ble6a20_send_buffer (const uint8 *buff, uint32 len)
+{
+ zf_assert(NULL != buff);
+ uint16 time_count = 0;
+ while(0 != len)
+ {
+ if(!gpio_get_level(BLE6A20_RTS_PIN)) // 如果RTS为低电平 则继续发送数据
+ {
+ if(30 <= len) // 数据分 30byte 每包发送
+ {
+ uart_write_buffer(BLE6A20_INDEX, buff, 30); // 发送数据
+ buff += 30; // 地址偏移
+ len -= 30; // 数量
+ time_count = 0;
+ }
+ else // 不足 30byte 的数据一次性发送完毕
+ {
+ uart_write_buffer(BLE6A20_INDEX, buff, len); // 发送数据
+ len = 0;
+ break;
+ }
+ }
+ else // 如果RTS为高电平 则模块忙
+ {
+ if(BLE6A20_TIMEOUT_COUNT <= (++ time_count)) // 超出了最大等待时间
+ {
+ break; // 退出发送
+ }
+ system_delay_ms(1);
+ }
+ }
+ return len;
+}
+
+//-------------------------------------------------------------------------------------------------------------------
+// 函数简介 蓝牙转串口模块 发送字符串
+// 参数说明 *str 要发送的字符串地址
+// 返回参数 uint32 剩余发送长度
+// 使用示例 ble6a20_send_string("Believe in yourself.");
+// 备注信息
+//-------------------------------------------------------------------------------------------------------------------
+uint32 ble6a20_send_string (const char *str)
+{
+ zf_assert(NULL != str);
+ uint16 time_count = 0;
+ uint32 len = strlen(str);
+ while(0 != len)
+ {
+ if(!gpio_get_level(BLE6A20_RTS_PIN)) // 如果RTS为低电平 则继续发送数据
+ {
+ if(128 <= len) // 数据分 128byte 每包发送
+ {
+ uart_write_buffer(BLE6A20_INDEX, (const uint8 *)str, 128); // 发送数据
+ str += 128; // 地址偏移
+ len -= 128; // 数量
+ time_count = 0;
+ }
+ else // 不足 128byte 的数据一次性发送完毕
+ {
+ uart_write_buffer(BLE6A20_INDEX, (const uint8 *)str, len);// 发送数据
+ len = 0;
+ break;
+ }
+ }
+ else // 如果RTS为高电平 则模块忙
+ {
+ if(BLE6A20_TIMEOUT_COUNT <= (++ time_count)) // 超出了最大等待时间
+ {
+ break; // 退出发送
+ }
+ system_delay_ms(1);
+ }
+ }
+ return len;
+}
+
+//-------------------------------------------------------------------------------------------------------------------
+// 函数简介 蓝牙转串口模块 发送摄像头图像至上位机查看图像
+// 参数说明 *image_addr 需要发送的图像地址
+// 参数说明 image_size 图像的大小
+// 返回参数 void
+// 使用示例 ble6a20_send_image(&mt9v03x_image[0][0], MT9V03X_IMAGE_SIZE);
+// 备注信息
+//-------------------------------------------------------------------------------------------------------------------
+void ble6a20_send_image (const uint8 *image_addr, uint32 image_size)
+{
+ zf_assert(NULL != image_addr);
+ extern uint8 camera_send_image_frame_header[4];
+ ble6a20_send_buffer(camera_send_image_frame_header, 4);
+ ble6a20_send_buffer((uint8 *)image_addr, image_size);
+}
+
+//-------------------------------------------------------------------------------------------------------------------
+// 函数简介 蓝牙转串口模块 读取缓冲区数据
+// 参数说明 *buff 接收缓冲区
+// 参数说明 len 读取数据长度
+// 返回参数 uint32 实际读取数据长度
+// 使用示例 ble6a20_read_buffer(buff, 32);
+// 备注信息
+//-------------------------------------------------------------------------------------------------------------------
+uint32 ble6a20_read_buffer (uint8 *buff, uint32 len)
+{
+ zf_assert(NULL != buff);
+ uint32 data_len = len;
+ fifo_read_buffer(&ble6a20_fifo, buff, &data_len, FIFO_READ_AND_CLEAN);
+ return data_len;
+}
+
+//-------------------------------------------------------------------------------------------------------------------
+// 函数简介 蓝牙转串口模块 串口中断回调函数
+// 参数说明 void
+// 返回参数 void
+// 使用示例 ble6a20_callback();
+// 备注信息 该函数在 ISR 文件 串口中断程序被调用
+// 由串口中断服务函数调用 wireless_module_uart_handler() 函数
+// 再由 wireless_module_uart_handler() 函数调用本函数
+//-------------------------------------------------------------------------------------------------------------------
+void ble6a20_callback (void)
+{
+ if(uart_query_byte(BLE6A20_INDEX, &ble6a20_data))
+ {
+ fifo_write_buffer(&ble6a20_fifo, &ble6a20_data, 1);
+#if BLE6A20_AUTO_BAUD_RATE // 开启自动波特率
+ if(BLE6A20_AUTO_BAUD_RATE_START == ble6a20_auto_baud_flag && 3 == fifo_used(&ble6a20_fifo))
+ {
+ uint32 ble6a20_auto_baud_count = 3;
+ ble6a20_auto_baud_flag = BLE6A20_AUTO_BAUD_RATE_GET_ACK;
+ fifo_read_buffer(&ble6a20_fifo, (uint8 *)ble6a20_auto_baud_data, (uint32 *)&ble6a20_auto_baud_count, FIFO_READ_AND_CLEAN);
+ }
+#endif
+ }
+}
+
+//-------------------------------------------------------------------------------------------------------------------
+// 函数简介 蓝牙转串口模块 初始化
+// 参数说明 void
+// 返回参数 void
+// 使用示例 ble6a20_init();
+// 备注信息
+//-------------------------------------------------------------------------------------------------------------------
+uint8 ble6a20_init (void)
+{
+ uint8 return_state = 0;
+
+ // 等待模块初始化
+ system_delay_ms(50);
+
+ set_wireless_type(BLE6A20, ble6a20_callback);
+
+ fifo_init(&ble6a20_fifo, FIFO_DATA_8BIT, ble6a20_buffer, BLE6A20_BUFFER_SIZE);
+ gpio_init(BLE6A20_RTS_PIN, GPI, GPIO_HIGH, GPI_PULL_UP);
+#if(0 == BLE6A20_AUTO_BAUD_RATE) // 关闭自动波特率
+ // 本函数使用的波特率为115200 为蓝牙转串口模块的默认波特率 如需其他波特率请自行配置模块并修改串口的波特率
+ uart_init (BLE6A20_INDEX, BLE6A20_BUAD_RATE, BLE6A20_RX_PIN, BLE6A20_TX_PIN); // 初始化串口
+ uart_rx_interrupt(BLE6A20_INDEX, 1);
+#elif(1 == BLE6A20_AUTO_BAUD_RATE) // 开启自动波特率
+ uint8 rts_init_status = 0;
+
+ ble6a20_auto_baud_flag = BLE6A20_AUTO_BAUD_RATE_INIT;
+ ble6a20_auto_baud_data[0] = 0;
+ ble6a20_auto_baud_data[1] = 1;
+ ble6a20_auto_baud_data[2] = 3;
+
+ rts_init_status = gpio_get_level(BLE6A20_RTS_PIN);
+ gpio_init(BLE6A20_RTS_PIN, GPO, rts_init_status, GPO_PUSH_PULL); // 初始化流控引脚
+
+ uart_init (BLE6A20_INDEX, BLE6A20_BUAD_RATE, BLE6A20_RX_PIN, BLE6A20_TX_PIN); // 初始化串口
+ uart_rx_interrupt(BLE6A20_INDEX, 1);
+
+ system_delay_ms(5); // 模块上电之后需要延时等待
+ gpio_set_level(BLE6A20_RTS_PIN, !rts_init_status); // RTS引脚拉高,进入自动波特率模式
+ system_delay_ms(100); // RTS拉高之后必须延时20ms
+ gpio_toggle_level(BLE6A20_RTS_PIN); // RTS引脚取反
+
+ do
+ {
+ ble6a20_auto_baud_flag = BLE6A20_AUTO_BAUD_RATE_START;
+ uart_write_byte(BLE6A20_INDEX, ble6a20_auto_baud_data[0]); // 发送特定数据 用于模块自动判断波特率
+ uart_write_byte(BLE6A20_INDEX, ble6a20_auto_baud_data[1]); // 发送特定数据 用于模块自动判断波特率
+ uart_write_byte(BLE6A20_INDEX, ble6a20_auto_baud_data[2]); // 发送特定数据 用于模块自动判断波特率
+ system_delay_ms(20);
+
+ if(BLE6A20_AUTO_BAUD_RATE_GET_ACK != ble6a20_auto_baud_flag) // 检验自动波特率是否完成
+ {
+ return_state = 1; // 如果程序进入到此语句内 说明自动波特率失败了
+ break;
+ }
+
+ if( 0xa5 != ble6a20_auto_baud_data[0] && // 检验自动波特率是否正确
+ 0xff != ble6a20_auto_baud_data[1] && // 检验自动波特率是否正确
+ 0xff != ble6a20_auto_baud_data[2] ) // 检验自动波特率是否正确
+ {
+ return_state = 1; // 如果程序进入到此语句内 说明自动波特率失败了
+ break;
+ }
+ ble6a20_auto_baud_flag = BLE6A20_AUTO_BAUD_RATE_SUCCESS;
+
+ gpio_init(BLE6A20_RTS_PIN, GPI, 0, GPI_PULL_UP); // 初始化流控引脚
+ system_delay_ms(10); // 延时等待 模块准备就绪
+ }while(0);
+#endif
+ return return_state;
+}
diff --git a/Example/E11_interrupt_priority_set_demo/libraries/zf_device/zf_device_ble6a20.h b/Example/E11_interrupt_priority_set_demo/libraries/zf_device/zf_device_ble6a20.h
new file mode 100644
index 0000000..c037ea2
--- /dev/null
+++ b/Example/E11_interrupt_priority_set_demo/libraries/zf_device/zf_device_ble6a20.h
@@ -0,0 +1,108 @@
+/*********************************************************************************************************************
+* TC264 Opensourec Library 即(TC264 开源库)是一个基于官方 SDK 接口的第三方开源库
+* Copyright (c) 2022 SEEKFREE 逐飞科技
+*
+* 本文件是 TC264 开源库的一部分
+*
+* TC264 开源库 是免费软件
+* 您可以根据自由软件基金会发布的 GPL(GNU General Public License,即 GNU通用公共许可证)的条款
+* 即 GPL 的第3版(即 GPL3.0)或(您选择的)任何后来的版本,重新发布和/或修改它
+*
+* 本开源库的发布是希望它能发挥作用,但并未对其作任何的保证
+* 甚至没有隐含的适销性或适合特定用途的保证
+* 更多细节请参见 GPL
+*
+* 您应该在收到本开源库的同时收到一份 GPL 的副本
+* 如果没有,请参阅
+*
+* 额外注明:
+* 本开源库使用 GPL3.0 开源许可证协议 以上许可申明为译文版本
+* 许可申明英文版在 libraries/doc 文件夹下的 GPL3_permission_statement.txt 文件中
+* 许可证副本在 libraries 文件夹下 即该文件夹下的 LICENSE 文件
+* 欢迎各位使用并传播本程序 但修改内容时必须保留逐飞科技的版权声明(即本声明)
+*
+* 文件名称 zf_device_ble6a20.h
+* 公司名称 成都逐飞科技有限公司
+* 版本信息 查看 libraries/doc 文件夹内 version 文件 版本说明
+* 开发环境 ADS v1.9.20
+* 适用平台 TC264D
+* 店铺链接 https://seekfree.taobao.com/
+*
+* 修改记录
+* 日期 作者 备注
+* 2024-07-02 pudding first version
+********************************************************************************************************************/
+/*********************************************************************************************************************
+* 接线定义:
+* ------------------------------------
+* 模块管脚 单片机管脚
+* RX 查看 zf_device_ble6a20.h 中 BLE6A20_RX_PIN 宏定义
+* TX 查看 zf_device_ble6a20.h 中 BLE6A20_TX_PIN 宏定义
+* RTS 查看 zf_device_ble6a20.h 中 BLE6A20_RTS_PIN 宏定义
+* VCC 3.3V电源
+* GND 电源地
+* 其余引脚悬空
+* ------------------------------------
+*********************************************************************************************************************/
+
+
+#ifndef _zf_device_ble6a20_h_
+#define _zf_device_ble6a20_h_
+
+#include "zf_common_typedef.h"
+
+
+//=================================================定义 蓝牙串口 基本配置================================================
+
+#define BLE6A20_INDEX (UART_2) // 蓝牙串口对应使用的串口号
+#define BLE6A20_BUAD_RATE (115200) // 蓝牙串口对应使用的串口波特率
+ // 波特率仅支持 9600 57600 115200 230400 460800 921600 1500000 2000000
+#define BLE6A20_TX_PIN (UART2_RX_P10_6) // 蓝牙串口对应模块的 TX 要接到单片机的 RX
+#define BLE6A20_RX_PIN (UART2_TX_P10_5) // 蓝牙串口对应模块的 RX 要接到单片机的 TX
+#define BLE6A20_RTS_PIN (P10_2) // 蓝牙串口对应模块的 RTS 引脚
+
+#define BLE6A20_BUFFER_SIZE ( 64 ) // 蓝牙串口缓冲区大小
+#define BLE6A20_TIMEOUT_COUNT ( 0x64 ) // 蓝牙串口通讯超时范围
+
+// ------------------------------------ 自动波特率 ------------------------------------
+// 注意事项1:开启自动波特率务必连接RTS引脚 否则会开启失败。
+// 注意事项2:模块自动波特率失败的话 可以尝试断电重启
+
+// 开启自动波特率务必阅读上面两条 注意事项
+// 开启自动波特率务必阅读上面两条 注意事项
+// 开启自动波特率务必阅读上面两条 注意事项
+
+// 0:关闭自动波特率
+// 1:开启自动波特率 自动波特率的作用是修改 BLE6A20_BAUD 之后不需要对模块进行配置 模块会自动设置为对应的波特率
+// 自动波特率仅支持 9600 57600 115200 230400 460800 921600 1500000 2000000
+
+#define BLE6A20_AUTO_BAUD_RATE ( 0 )
+
+#if (1 == BLE6A20_AUTO_BAUD_RATE)
+typedef enum
+{
+ BLE6A20_AUTO_BAUD_RATE_SUCCESS,
+ BLE6A20_AUTO_BAUD_RATE_INIT,
+ BLE6A20_AUTO_BAUD_RATE_START,
+ BLE6A20_AUTO_BAUD_RATE_GET_ACK,
+}ble6a20_auto_baudrate_state_enum;
+#endif
+// ------------------------------------ 自动波特率 ------------------------------------
+
+//=================================================定义 蓝牙串口 基本配置================================================
+
+
+//=================================================声明 蓝牙串口 基础函数================================================
+uint32 ble6a20_send_byte (const uint8 data); // 蓝牙转串口模块 发送数据
+uint32 ble6a20_send_buffer (const uint8 *buff, uint32 len); // 蓝牙转串口模块 发送数据块
+uint32 ble6a20_send_string (const char *str); // 蓝牙转串口模块 发送字符串
+void ble6a20_send_image (const uint8 *image_addr, uint32 image_size); // 蓝牙转串口模块 发送摄像头图像至上位机查看图像
+
+uint32 ble6a20_read_buffer (uint8 *buff, uint32 len); // 蓝牙转串口模块 读取缓冲区数据
+
+void ble6a20_callback (void); // 蓝牙转串口模块 串口中断回调函数
+
+uint8 ble6a20_init (void); // 蓝牙转串口模块 初始化
+//=================================================声明 蓝牙串口 基础函数================================================
+
+#endif
diff --git a/Example/E11_interrupt_priority_set_demo/libraries/zf_device/zf_device_type.h b/Example/E11_interrupt_priority_set_demo/libraries/zf_device/zf_device_type.h
index 6c2b8da..4f8ec53 100644
--- a/Example/E11_interrupt_priority_set_demo/libraries/zf_device/zf_device_type.h
+++ b/Example/E11_interrupt_priority_set_demo/libraries/zf_device/zf_device_type.h
@@ -54,6 +54,7 @@ typedef enum
{
NO_WIRELESS = 0, // 无设备
WIRELESS_UART, // 无线串口
+ BLE6A20, // 蓝牙串口
BLUETOOTH_CH9141, // 蓝牙 CH9141
WIFI_UART, // 串口 WiFi
RECEIVER_UART, // 枪式遥控器
diff --git a/Example/E11_interrupt_priority_set_demo/libraries/zf_device/澶栬鏂囦欢璇存槑.txt b/Example/E11_interrupt_priority_set_demo/libraries/zf_device/澶栬鏂囦欢璇存槑.txt
new file mode 100644
index 0000000..1c96965
--- /dev/null
+++ b/Example/E11_interrupt_priority_set_demo/libraries/zf_device/澶栬鏂囦欢璇存槑.txt
@@ -0,0 +1,97 @@
+
+如需获取详细资料可联系淘宝店铺客服:https://seekfree.taobao.com/
+如需获取详细资料可联系淘宝店铺客服:https://seekfree.taobao.com/
+如需获取详细资料可联系淘宝店铺客服:https://seekfree.taobao.com/
+
+本文件主要用于说明 zf_device 目录下各个文件所对应的外设模块
+本文件主要用于说明 zf_device 目录下各个文件所对应的外设模块
+本文件主要用于说明 zf_device 目录下各个文件所对应的外设模块
+
+
+=================================================== 测距模块 ===================================================
+
+zf_device_dl1a.h TOF 测距模块 DL1A 频率:33hz 最大距离:1.2 米
+
+zf_device_dl1b.h TOF 测距模块 DL1B 频率:100hz 最大距离:1.4 米
+
+=================================================== 测距模块 ===================================================
+
+
+
+==================================================== 陀螺仪 ====================================================
+
+zf_device_mpu6050.h MPU6050 六轴陀螺仪 传统 IIC 通讯
+
+zf_device_icm20602.h ICM20602 六轴陀螺仪 支持 SPI 采值
+
+zf_device_imu660ra.h IMU660RA 六轴陀螺仪 高精度陀螺仪
+
+zf_device_imu963ra.h IMU963RA 九轴陀螺仪 支持地磁计采集
+
+==================================================== 陀螺仪 ====================================================
+
+
+
+=================================================== 屏幕显示 ===================================================
+
+zf_device_ips114.h IPS114 液晶屏幕 1.14 寸 分辨率:240 * 135
+
+zf_device_ips200.h IPS200 液晶屏幕 2.0 寸 分辨率:240 * 320
+
+zf_device_tft180.h TFT180 屏幕 1.8寸 分辨率:160 * 128
+
+zf_device_oled.h OLED 液晶屏幕 0.96 寸 分辨率:128 * 64
+
+=================================================== 屏幕显示 ===================================================
+
+
+
+================================================== 图像传感器 ==================================================
+
+zf_device_mt9v03x.h MT9V03X 总钻风灰度摄像头
+
+zf_device_ov7725.h OV7725 小钻风硬件二值化摄像头
+
+zf_device_scc8660.h SCC8660 凌瞳彩色摄像头
+
+zf_device_tsl1401.h TSL1401 红孩儿线阵CCD
+
+================================================== 图像传感器 ==================================================
+
+
+
+=================================================== 无线通讯 ===================================================
+
+zf_device_ble6a20.h 蓝牙串口模块 无线通讯
+
+zf_device_bluetooth_ch9141.h CH9141 蓝牙通讯模块 蓝牙组网通讯
+
+zf_device_wifi_spi.h WIFI-SPI 高速WIFI无线通讯模块
+
+zf_device_wifi_uart.h WIFI-UART 串口WIFI无线通讯模块
+
+zf_device_wireless_uart.h 无线串口模块
+
+=================================================== 无线通讯 ===================================================
+
+
+
+=================================================== 远程遥控 ===================================================
+
+zf_device_uart_receiver.h SUBS 串口遥控器 串口通讯 长距离遥控 2.4G频段
+
+=================================================== 远程遥控 ===================================================
+
+
+
+================================================== 其他传感器 ==================================================
+
+zf_device_absolute_encoder.h 360° 位置传感器 绝对式迷你 mini 编码器 分辨率:0.088°
+
+zf_device_gnss.h GPS 及 RTK 定位模块 双频高精度定位模块 亚米级定位
+
+zf_device_key.h GPIO 按键驱动 用于检测主板按键状态
+
+zf_device_virtual_oscilloscope.h VisualScope 虚拟示波器
+
+================================================== 其他传感器 ==================================================
\ No newline at end of file
diff --git a/Example/E12_cpu1_handles_interrupts_demo/libraries/doc/version.txt b/Example/E12_cpu1_handles_interrupts_demo/libraries/doc/version.txt
index 68afc86..c4e0d0a 100644
--- a/Example/E12_cpu1_handles_interrupts_demo/libraries/doc/version.txt
+++ b/Example/E12_cpu1_handles_interrupts_demo/libraries/doc/version.txt
@@ -1,3 +1,5 @@
+V3.3.0
+ 新增蓝牙串口通讯模块
V3.2.13
新增一个微秒延时函数 该延时函数为普通延时 非中断延时
V3.2.12
diff --git a/Example/E12_cpu1_handles_interrupts_demo/libraries/zf_common/zf_common_headfile.h b/Example/E12_cpu1_handles_interrupts_demo/libraries/zf_common/zf_common_headfile.h
index c0d833b..3a140e3 100644
--- a/Example/E12_cpu1_handles_interrupts_demo/libraries/zf_common/zf_common_headfile.h
+++ b/Example/E12_cpu1_handles_interrupts_demo/libraries/zf_common/zf_common_headfile.h
@@ -81,6 +81,7 @@
//===================================================外接设备驱动层===================================================
#include "zf_device_absolute_encoder.h"
+#include "zf_device_ble6a20.h"
#include "zf_device_bluetooth_ch9141.h"
#include "zf_device_gnss.h"
#include "zf_device_camera.h"
diff --git a/Example/E12_cpu1_handles_interrupts_demo/libraries/zf_components/seekfree_assistant.c b/Example/E12_cpu1_handles_interrupts_demo/libraries/zf_components/seekfree_assistant.c
index 0b7cb9d..af3bb96 100644
--- a/Example/E12_cpu1_handles_interrupts_demo/libraries/zf_components/seekfree_assistant.c
+++ b/Example/E12_cpu1_handles_interrupts_demo/libraries/zf_components/seekfree_assistant.c
@@ -1,20 +1,20 @@
/*********************************************************************************************************************
-* RT1064DVL6A Opensourec Library 即(RT1064DVL6A 开源库)是一个基于官方 SDK 接口的第三方开源库
+* TC264 Opensourec Library 即(TC264 开源库)是一个基于官方 SDK 接口的第三方开源库
* Copyright (c) 2022 SEEKFREE 逐飞科技
-*
-* 本文件是 RT1064DVL6A 开源库的一部分
-*
-* RT1064DVL6A 开源库 是免费软件
+*
+* 本文件是 TC264 开源库的一部分
+*
+* TC264 开源库 是免费软件
* 您可以根据自由软件基金会发布的 GPL(GNU General Public License,即 GNU通用公共许可证)的条款
* 即 GPL 的第3版(即 GPL3.0)或(您选择的)任何后来的版本,重新发布和/或修改它
-*
+*
* 本开源库的发布是希望它能发挥作用,但并未对其作任何的保证
* 甚至没有隐含的适销性或适合特定用途的保证
* 更多细节请参见 GPL
-*
+*
* 您应该在收到本开源库的同时收到一份 GPL 的副本
* 如果没有,请参阅
-*
+*
* 额外注明:
* 本开源库使用 GPL3.0 开源许可证协议 以上许可申明为译文版本
* 许可申明英文版在 libraries/doc 文件夹下的 GPL3_permission_statement.txt 文件中
@@ -24,13 +24,13 @@
* 文件名称 seekfree_assistant
* 公司名称 成都逐飞科技有限公司
* 版本信息 查看 libraries/doc 文件夹内 version 文件 版本说明
-* 开发环境 IAR 8.32.4 or MDK 5.33
-* 适用平台 RT1064DVL6A
+* 开发环境 ADS v1.9.20
+* 适用平台 TC264D
* 店铺链接 https://seekfree.taobao.com/
-*
+*
* 修改记录
-* 日期 作者 备注
-* 2024-1-11 SeekFree first version
+* 日期 作者 备注
+* 2024-01-01 pudding first version
********************************************************************************************************************/
#include "zf_common_debug.h"
diff --git a/Example/E12_cpu1_handles_interrupts_demo/libraries/zf_components/seekfree_assistant.h b/Example/E12_cpu1_handles_interrupts_demo/libraries/zf_components/seekfree_assistant.h
index ae0f67c..5e04a1d 100644
--- a/Example/E12_cpu1_handles_interrupts_demo/libraries/zf_components/seekfree_assistant.h
+++ b/Example/E12_cpu1_handles_interrupts_demo/libraries/zf_components/seekfree_assistant.h
@@ -1,20 +1,20 @@
/*********************************************************************************************************************
-* RT1064DVL6A Opensourec Library 即(RT1064DVL6A 开源库)是一个基于官方 SDK 接口的第三方开源库
+* TC264 Opensourec Library 即(TC264 开源库)是一个基于官方 SDK 接口的第三方开源库
* Copyright (c) 2022 SEEKFREE 逐飞科技
-*
-* 本文件是 RT1064DVL6A 开源库的一部分
-*
-* RT1064DVL6A 开源库 是免费软件
+*
+* 本文件是 TC264 开源库的一部分
+*
+* TC264 开源库 是免费软件
* 您可以根据自由软件基金会发布的 GPL(GNU General Public License,即 GNU通用公共许可证)的条款
* 即 GPL 的第3版(即 GPL3.0)或(您选择的)任何后来的版本,重新发布和/或修改它
-*
+*
* 本开源库的发布是希望它能发挥作用,但并未对其作任何的保证
* 甚至没有隐含的适销性或适合特定用途的保证
* 更多细节请参见 GPL
-*
+*
* 您应该在收到本开源库的同时收到一份 GPL 的副本
* 如果没有,请参阅
-*
+*
* 额外注明:
* 本开源库使用 GPL3.0 开源许可证协议 以上许可申明为译文版本
* 许可申明英文版在 libraries/doc 文件夹下的 GPL3_permission_statement.txt 文件中
@@ -24,13 +24,13 @@
* 文件名称 seekfree_assistant
* 公司名称 成都逐飞科技有限公司
* 版本信息 查看 libraries/doc 文件夹内 version 文件 版本说明
-* 开发环境 IAR 8.32.4 or MDK 5.33
-* 适用平台 RT1064DVL6A
+* 开发环境 ADS v1.9.20
+* 适用平台 TC264D
* 店铺链接 https://seekfree.taobao.com/
-*
+*
* 修改记录
-* 日期 作者 备注
-* 2024-1-11 SeekFree first version
+* 日期 作者 备注
+* 2024-01-01 pudding first version
********************************************************************************************************************/
#ifndef _seekfree_assistant_h_
#define _seekfree_assistant_h_
@@ -47,27 +47,27 @@
// 定义接收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 )
diff --git a/Example/E12_cpu1_handles_interrupts_demo/libraries/zf_components/seekfree_assistant_interface.c b/Example/E12_cpu1_handles_interrupts_demo/libraries/zf_components/seekfree_assistant_interface.c
index fdade63..cc42e43 100644
--- a/Example/E12_cpu1_handles_interrupts_demo/libraries/zf_components/seekfree_assistant_interface.c
+++ b/Example/E12_cpu1_handles_interrupts_demo/libraries/zf_components/seekfree_assistant_interface.c
@@ -1,20 +1,20 @@
/*********************************************************************************************************************
-* RT1064DVL6A Opensourec Library 即(RT1064DVL6A 开源库)是一个基于官方 SDK 接口的第三方开源库
+* TC264 Opensourec Library 即(TC264 开源库)是一个基于官方 SDK 接口的第三方开源库
* Copyright (c) 2022 SEEKFREE 逐飞科技
-*
-* 本文件是 RT1064DVL6A 开源库的一部分
-*
-* RT1064DVL6A 开源库 是免费软件
+*
+* 本文件是 TC264 开源库的一部分
+*
+* TC264 开源库 是免费软件
* 您可以根据自由软件基金会发布的 GPL(GNU General Public License,即 GNU通用公共许可证)的条款
* 即 GPL 的第3版(即 GPL3.0)或(您选择的)任何后来的版本,重新发布和/或修改它
-*
+*
* 本开源库的发布是希望它能发挥作用,但并未对其作任何的保证
* 甚至没有隐含的适销性或适合特定用途的保证
* 更多细节请参见 GPL
-*
+*
* 您应该在收到本开源库的同时收到一份 GPL 的副本
* 如果没有,请参阅
-*
+*
* 额外注明:
* 本开源库使用 GPL3.0 开源许可证协议 以上许可申明为译文版本
* 许可申明英文版在 libraries/doc 文件夹下的 GPL3_permission_statement.txt 文件中
@@ -24,13 +24,13 @@
* 文件名称 seekfree_assistant_interface
* 公司名称 成都逐飞科技有限公司
* 版本信息 查看 libraries/doc 文件夹内 version 文件 版本说明
-* 开发环境 IAR 8.32.4 or MDK 5.33
-* 适用平台 RT1064DVL6A
+* 开发环境 ADS v1.9.20
+* 适用平台 TC264D
* 店铺链接 https://seekfree.taobao.com/
-*
+*
* 修改记录
-* 日期 作者 备注
-* 2024-1-11 SeekFree first version
+* 日期 作者 备注
+* 2024-01-01 pudding first version
********************************************************************************************************************/
#include "zf_common_typedef.h"
@@ -38,6 +38,7 @@
#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"
@@ -100,6 +101,12 @@ ZF_WEAK void seekfree_assistant_interface_init (seekfree_assistant_transfer_devi
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;
diff --git a/Example/E12_cpu1_handles_interrupts_demo/libraries/zf_components/seekfree_assistant_interface.h b/Example/E12_cpu1_handles_interrupts_demo/libraries/zf_components/seekfree_assistant_interface.h
index 940b5f7..1d0158c 100644
--- a/Example/E12_cpu1_handles_interrupts_demo/libraries/zf_components/seekfree_assistant_interface.h
+++ b/Example/E12_cpu1_handles_interrupts_demo/libraries/zf_components/seekfree_assistant_interface.h
@@ -1,20 +1,20 @@
/*********************************************************************************************************************
-* RT1064DVL6A Opensourec Library 即(RT1064DVL6A 开源库)是一个基于官方 SDK 接口的第三方开源库
+* TC264 Opensourec Library 即(TC264 开源库)是一个基于官方 SDK 接口的第三方开源库
* Copyright (c) 2022 SEEKFREE 逐飞科技
-*
-* 本文件是 RT1064DVL6A 开源库的一部分
-*
-* RT1064DVL6A 开源库 是免费软件
+*
+* 本文件是 TC264 开源库的一部分
+*
+* TC264 开源库 是免费软件
* 您可以根据自由软件基金会发布的 GPL(GNU General Public License,即 GNU通用公共许可证)的条款
* 即 GPL 的第3版(即 GPL3.0)或(您选择的)任何后来的版本,重新发布和/或修改它
-*
+*
* 本开源库的发布是希望它能发挥作用,但并未对其作任何的保证
* 甚至没有隐含的适销性或适合特定用途的保证
* 更多细节请参见 GPL
-*
+*
* 您应该在收到本开源库的同时收到一份 GPL 的副本
* 如果没有,请参阅
-*
+*
* 额外注明:
* 本开源库使用 GPL3.0 开源许可证协议 以上许可申明为译文版本
* 许可申明英文版在 libraries/doc 文件夹下的 GPL3_permission_statement.txt 文件中
@@ -24,13 +24,13 @@
* 文件名称 seekfree_assistant_interface
* 公司名称 成都逐飞科技有限公司
* 版本信息 查看 libraries/doc 文件夹内 version 文件 版本说明
-* 开发环境 IAR 8.32.4 or MDK 5.33
-* 适用平台 RT1064DVL6A
+* 开发环境 ADS v1.9.20
+* 适用平台 TC264D
* 店铺链接 https://seekfree.taobao.com/
-*
+*
* 修改记录
-* 日期 作者 备注
-* 2024-1-11 SeekFree first version
+* 日期 作者 备注
+* 2024-01-01 pudding first version
********************************************************************************************************************/
#ifndef _seekfree_assistant_interface_h_
@@ -43,6 +43,7 @@ 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
diff --git a/Example/E12_cpu1_handles_interrupts_demo/libraries/zf_device/zf_device_ble6a20.c b/Example/E12_cpu1_handles_interrupts_demo/libraries/zf_device/zf_device_ble6a20.c
new file mode 100644
index 0000000..ea8649e
--- /dev/null
+++ b/Example/E12_cpu1_handles_interrupts_demo/libraries/zf_device/zf_device_ble6a20.c
@@ -0,0 +1,299 @@
+/*********************************************************************************************************************
+* TC264 Opensourec Library 即(TC264 开源库)是一个基于官方 SDK 接口的第三方开源库
+* Copyright (c) 2022 SEEKFREE 逐飞科技
+*
+* 本文件是 TC264 开源库的一部分
+*
+* TC264 开源库 是免费软件
+* 您可以根据自由软件基金会发布的 GPL(GNU General Public License,即 GNU通用公共许可证)的条款
+* 即 GPL 的第3版(即 GPL3.0)或(您选择的)任何后来的版本,重新发布和/或修改它
+*
+* 本开源库的发布是希望它能发挥作用,但并未对其作任何的保证
+* 甚至没有隐含的适销性或适合特定用途的保证
+* 更多细节请参见 GPL
+*
+* 您应该在收到本开源库的同时收到一份 GPL 的副本
+* 如果没有,请参阅
+*
+* 额外注明:
+* 本开源库使用 GPL3.0 开源许可证协议 以上许可申明为译文版本
+* 许可申明英文版在 libraries/doc 文件夹下的 GPL3_permission_statement.txt 文件中
+* 许可证副本在 libraries 文件夹下 即该文件夹下的 LICENSE 文件
+* 欢迎各位使用并传播本程序 但修改内容时必须保留逐飞科技的版权声明(即本声明)
+*
+* 文件名称 zf_device_ble6a20
+* 公司名称 成都逐飞科技有限公司
+* 版本信息 查看 libraries/doc 文件夹内 version 文件 版本说明
+* 开发环境 ADS v1.9.20
+* 适用平台 TC264D
+* 店铺链接 https://seekfree.taobao.com/
+*
+* 修改记录
+* 日期 作者 备注
+* 2024-07-02 pudding first version
+********************************************************************************************************************/
+/*********************************************************************************************************************
+* 接线定义:
+* ------------------------------------
+* 模块管脚 单片机管脚
+* RX 查看 zf_device_ble6a20.h 中 BLE6A20_RX_PIN 宏定义
+* TX 查看 zf_device_ble6a20.h 中 BLE6A20_TX_PIN 宏定义
+* RTS 查看 zf_device_ble6a20.h 中 BLE6A20_RTS_PIN 宏定义
+* VCC 3.3V电源
+* GND 电源地
+* 其余引脚悬空
+* ------------------------------------
+*********************************************************************************************************************/
+
+#include "zf_common_clock.h"
+#include "zf_common_debug.h"
+#include "zf_common_fifo.h"
+#include "zf_driver_delay.h"
+#include "zf_driver_gpio.h"
+#include "zf_driver_uart.h"
+#include "zf_device_type.h"
+#include "zf_device_ble6a20.h"
+
+static fifo_struct ble6a20_fifo;
+static uint8 ble6a20_buffer[BLE6A20_BUFFER_SIZE];
+
+static uint8 ble6a20_data = 0;
+#if (1 == BLE6A20_AUTO_BAUD_RATE)
+static volatile ble6a20_auto_baudrate_state_enum ble6a20_auto_baud_flag = BLE6A20_AUTO_BAUD_RATE_INIT;
+static volatile uint8 ble6a20_auto_baud_data[3] = {0x00, 0x01, 0x03};
+#endif
+
+//-------------------------------------------------------------------------------------------------------------------
+// 函数简介 蓝牙转串口模块 发送数据
+// 参数说明 data 8bit 数据
+// 返回参数 uint32 剩余发送长度 0-发送完毕 1-未发送完成
+// 使用示例 ble6a20_send_byte(data);
+// 备注信息
+//-------------------------------------------------------------------------------------------------------------------
+uint32 ble6a20_send_byte (const uint8 data)
+{
+ uint16 time_count = BLE6A20_TIMEOUT_COUNT;
+ while(time_count)
+ {
+ if(!gpio_get_level(BLE6A20_RTS_PIN))
+ {
+ uart_write_byte(BLE6A20_INDEX, data); // 发送数据
+ break;
+ }
+ time_count --;
+ system_delay_ms(1);
+ }
+ return (0 == time_count);
+}
+
+//-------------------------------------------------------------------------------------------------------------------
+// 函数简介 蓝牙转串口模块 发送数据块
+// 参数说明 *buff 发送缓冲区
+// 参数说明 len 发送数据长度
+// 返回参数 uint32 剩余发送长度
+// 使用示例 ble6a20_send_buffer(buff, 64);
+// 备注信息
+//-------------------------------------------------------------------------------------------------------------------
+uint32 ble6a20_send_buffer (const uint8 *buff, uint32 len)
+{
+ zf_assert(NULL != buff);
+ uint16 time_count = 0;
+ while(0 != len)
+ {
+ if(!gpio_get_level(BLE6A20_RTS_PIN)) // 如果RTS为低电平 则继续发送数据
+ {
+ if(30 <= len) // 数据分 30byte 每包发送
+ {
+ uart_write_buffer(BLE6A20_INDEX, buff, 30); // 发送数据
+ buff += 30; // 地址偏移
+ len -= 30; // 数量
+ time_count = 0;
+ }
+ else // 不足 30byte 的数据一次性发送完毕
+ {
+ uart_write_buffer(BLE6A20_INDEX, buff, len); // 发送数据
+ len = 0;
+ break;
+ }
+ }
+ else // 如果RTS为高电平 则模块忙
+ {
+ if(BLE6A20_TIMEOUT_COUNT <= (++ time_count)) // 超出了最大等待时间
+ {
+ break; // 退出发送
+ }
+ system_delay_ms(1);
+ }
+ }
+ return len;
+}
+
+//-------------------------------------------------------------------------------------------------------------------
+// 函数简介 蓝牙转串口模块 发送字符串
+// 参数说明 *str 要发送的字符串地址
+// 返回参数 uint32 剩余发送长度
+// 使用示例 ble6a20_send_string("Believe in yourself.");
+// 备注信息
+//-------------------------------------------------------------------------------------------------------------------
+uint32 ble6a20_send_string (const char *str)
+{
+ zf_assert(NULL != str);
+ uint16 time_count = 0;
+ uint32 len = strlen(str);
+ while(0 != len)
+ {
+ if(!gpio_get_level(BLE6A20_RTS_PIN)) // 如果RTS为低电平 则继续发送数据
+ {
+ if(128 <= len) // 数据分 128byte 每包发送
+ {
+ uart_write_buffer(BLE6A20_INDEX, (const uint8 *)str, 128); // 发送数据
+ str += 128; // 地址偏移
+ len -= 128; // 数量
+ time_count = 0;
+ }
+ else // 不足 128byte 的数据一次性发送完毕
+ {
+ uart_write_buffer(BLE6A20_INDEX, (const uint8 *)str, len);// 发送数据
+ len = 0;
+ break;
+ }
+ }
+ else // 如果RTS为高电平 则模块忙
+ {
+ if(BLE6A20_TIMEOUT_COUNT <= (++ time_count)) // 超出了最大等待时间
+ {
+ break; // 退出发送
+ }
+ system_delay_ms(1);
+ }
+ }
+ return len;
+}
+
+//-------------------------------------------------------------------------------------------------------------------
+// 函数简介 蓝牙转串口模块 发送摄像头图像至上位机查看图像
+// 参数说明 *image_addr 需要发送的图像地址
+// 参数说明 image_size 图像的大小
+// 返回参数 void
+// 使用示例 ble6a20_send_image(&mt9v03x_image[0][0], MT9V03X_IMAGE_SIZE);
+// 备注信息
+//-------------------------------------------------------------------------------------------------------------------
+void ble6a20_send_image (const uint8 *image_addr, uint32 image_size)
+{
+ zf_assert(NULL != image_addr);
+ extern uint8 camera_send_image_frame_header[4];
+ ble6a20_send_buffer(camera_send_image_frame_header, 4);
+ ble6a20_send_buffer((uint8 *)image_addr, image_size);
+}
+
+//-------------------------------------------------------------------------------------------------------------------
+// 函数简介 蓝牙转串口模块 读取缓冲区数据
+// 参数说明 *buff 接收缓冲区
+// 参数说明 len 读取数据长度
+// 返回参数 uint32 实际读取数据长度
+// 使用示例 ble6a20_read_buffer(buff, 32);
+// 备注信息
+//-------------------------------------------------------------------------------------------------------------------
+uint32 ble6a20_read_buffer (uint8 *buff, uint32 len)
+{
+ zf_assert(NULL != buff);
+ uint32 data_len = len;
+ fifo_read_buffer(&ble6a20_fifo, buff, &data_len, FIFO_READ_AND_CLEAN);
+ return data_len;
+}
+
+//-------------------------------------------------------------------------------------------------------------------
+// 函数简介 蓝牙转串口模块 串口中断回调函数
+// 参数说明 void
+// 返回参数 void
+// 使用示例 ble6a20_callback();
+// 备注信息 该函数在 ISR 文件 串口中断程序被调用
+// 由串口中断服务函数调用 wireless_module_uart_handler() 函数
+// 再由 wireless_module_uart_handler() 函数调用本函数
+//-------------------------------------------------------------------------------------------------------------------
+void ble6a20_callback (void)
+{
+ if(uart_query_byte(BLE6A20_INDEX, &ble6a20_data))
+ {
+ fifo_write_buffer(&ble6a20_fifo, &ble6a20_data, 1);
+#if BLE6A20_AUTO_BAUD_RATE // 开启自动波特率
+ if(BLE6A20_AUTO_BAUD_RATE_START == ble6a20_auto_baud_flag && 3 == fifo_used(&ble6a20_fifo))
+ {
+ uint32 ble6a20_auto_baud_count = 3;
+ ble6a20_auto_baud_flag = BLE6A20_AUTO_BAUD_RATE_GET_ACK;
+ fifo_read_buffer(&ble6a20_fifo, (uint8 *)ble6a20_auto_baud_data, (uint32 *)&ble6a20_auto_baud_count, FIFO_READ_AND_CLEAN);
+ }
+#endif
+ }
+}
+
+//-------------------------------------------------------------------------------------------------------------------
+// 函数简介 蓝牙转串口模块 初始化
+// 参数说明 void
+// 返回参数 void
+// 使用示例 ble6a20_init();
+// 备注信息
+//-------------------------------------------------------------------------------------------------------------------
+uint8 ble6a20_init (void)
+{
+ uint8 return_state = 0;
+
+ // 等待模块初始化
+ system_delay_ms(50);
+
+ set_wireless_type(BLE6A20, ble6a20_callback);
+
+ fifo_init(&ble6a20_fifo, FIFO_DATA_8BIT, ble6a20_buffer, BLE6A20_BUFFER_SIZE);
+ gpio_init(BLE6A20_RTS_PIN, GPI, GPIO_HIGH, GPI_PULL_UP);
+#if(0 == BLE6A20_AUTO_BAUD_RATE) // 关闭自动波特率
+ // 本函数使用的波特率为115200 为蓝牙转串口模块的默认波特率 如需其他波特率请自行配置模块并修改串口的波特率
+ uart_init (BLE6A20_INDEX, BLE6A20_BUAD_RATE, BLE6A20_RX_PIN, BLE6A20_TX_PIN); // 初始化串口
+ uart_rx_interrupt(BLE6A20_INDEX, 1);
+#elif(1 == BLE6A20_AUTO_BAUD_RATE) // 开启自动波特率
+ uint8 rts_init_status = 0;
+
+ ble6a20_auto_baud_flag = BLE6A20_AUTO_BAUD_RATE_INIT;
+ ble6a20_auto_baud_data[0] = 0;
+ ble6a20_auto_baud_data[1] = 1;
+ ble6a20_auto_baud_data[2] = 3;
+
+ rts_init_status = gpio_get_level(BLE6A20_RTS_PIN);
+ gpio_init(BLE6A20_RTS_PIN, GPO, rts_init_status, GPO_PUSH_PULL); // 初始化流控引脚
+
+ uart_init (BLE6A20_INDEX, BLE6A20_BUAD_RATE, BLE6A20_RX_PIN, BLE6A20_TX_PIN); // 初始化串口
+ uart_rx_interrupt(BLE6A20_INDEX, 1);
+
+ system_delay_ms(5); // 模块上电之后需要延时等待
+ gpio_set_level(BLE6A20_RTS_PIN, !rts_init_status); // RTS引脚拉高,进入自动波特率模式
+ system_delay_ms(100); // RTS拉高之后必须延时20ms
+ gpio_toggle_level(BLE6A20_RTS_PIN); // RTS引脚取反
+
+ do
+ {
+ ble6a20_auto_baud_flag = BLE6A20_AUTO_BAUD_RATE_START;
+ uart_write_byte(BLE6A20_INDEX, ble6a20_auto_baud_data[0]); // 发送特定数据 用于模块自动判断波特率
+ uart_write_byte(BLE6A20_INDEX, ble6a20_auto_baud_data[1]); // 发送特定数据 用于模块自动判断波特率
+ uart_write_byte(BLE6A20_INDEX, ble6a20_auto_baud_data[2]); // 发送特定数据 用于模块自动判断波特率
+ system_delay_ms(20);
+
+ if(BLE6A20_AUTO_BAUD_RATE_GET_ACK != ble6a20_auto_baud_flag) // 检验自动波特率是否完成
+ {
+ return_state = 1; // 如果程序进入到此语句内 说明自动波特率失败了
+ break;
+ }
+
+ if( 0xa5 != ble6a20_auto_baud_data[0] && // 检验自动波特率是否正确
+ 0xff != ble6a20_auto_baud_data[1] && // 检验自动波特率是否正确
+ 0xff != ble6a20_auto_baud_data[2] ) // 检验自动波特率是否正确
+ {
+ return_state = 1; // 如果程序进入到此语句内 说明自动波特率失败了
+ break;
+ }
+ ble6a20_auto_baud_flag = BLE6A20_AUTO_BAUD_RATE_SUCCESS;
+
+ gpio_init(BLE6A20_RTS_PIN, GPI, 0, GPI_PULL_UP); // 初始化流控引脚
+ system_delay_ms(10); // 延时等待 模块准备就绪
+ }while(0);
+#endif
+ return return_state;
+}
diff --git a/Example/E12_cpu1_handles_interrupts_demo/libraries/zf_device/zf_device_ble6a20.h b/Example/E12_cpu1_handles_interrupts_demo/libraries/zf_device/zf_device_ble6a20.h
new file mode 100644
index 0000000..c037ea2
--- /dev/null
+++ b/Example/E12_cpu1_handles_interrupts_demo/libraries/zf_device/zf_device_ble6a20.h
@@ -0,0 +1,108 @@
+/*********************************************************************************************************************
+* TC264 Opensourec Library 即(TC264 开源库)是一个基于官方 SDK 接口的第三方开源库
+* Copyright (c) 2022 SEEKFREE 逐飞科技
+*
+* 本文件是 TC264 开源库的一部分
+*
+* TC264 开源库 是免费软件
+* 您可以根据自由软件基金会发布的 GPL(GNU General Public License,即 GNU通用公共许可证)的条款
+* 即 GPL 的第3版(即 GPL3.0)或(您选择的)任何后来的版本,重新发布和/或修改它
+*
+* 本开源库的发布是希望它能发挥作用,但并未对其作任何的保证
+* 甚至没有隐含的适销性或适合特定用途的保证
+* 更多细节请参见 GPL
+*
+* 您应该在收到本开源库的同时收到一份 GPL 的副本
+* 如果没有,请参阅
+*
+* 额外注明:
+* 本开源库使用 GPL3.0 开源许可证协议 以上许可申明为译文版本
+* 许可申明英文版在 libraries/doc 文件夹下的 GPL3_permission_statement.txt 文件中
+* 许可证副本在 libraries 文件夹下 即该文件夹下的 LICENSE 文件
+* 欢迎各位使用并传播本程序 但修改内容时必须保留逐飞科技的版权声明(即本声明)
+*
+* 文件名称 zf_device_ble6a20.h
+* 公司名称 成都逐飞科技有限公司
+* 版本信息 查看 libraries/doc 文件夹内 version 文件 版本说明
+* 开发环境 ADS v1.9.20
+* 适用平台 TC264D
+* 店铺链接 https://seekfree.taobao.com/
+*
+* 修改记录
+* 日期 作者 备注
+* 2024-07-02 pudding first version
+********************************************************************************************************************/
+/*********************************************************************************************************************
+* 接线定义:
+* ------------------------------------
+* 模块管脚 单片机管脚
+* RX 查看 zf_device_ble6a20.h 中 BLE6A20_RX_PIN 宏定义
+* TX 查看 zf_device_ble6a20.h 中 BLE6A20_TX_PIN 宏定义
+* RTS 查看 zf_device_ble6a20.h 中 BLE6A20_RTS_PIN 宏定义
+* VCC 3.3V电源
+* GND 电源地
+* 其余引脚悬空
+* ------------------------------------
+*********************************************************************************************************************/
+
+
+#ifndef _zf_device_ble6a20_h_
+#define _zf_device_ble6a20_h_
+
+#include "zf_common_typedef.h"
+
+
+//=================================================定义 蓝牙串口 基本配置================================================
+
+#define BLE6A20_INDEX (UART_2) // 蓝牙串口对应使用的串口号
+#define BLE6A20_BUAD_RATE (115200) // 蓝牙串口对应使用的串口波特率
+ // 波特率仅支持 9600 57600 115200 230400 460800 921600 1500000 2000000
+#define BLE6A20_TX_PIN (UART2_RX_P10_6) // 蓝牙串口对应模块的 TX 要接到单片机的 RX
+#define BLE6A20_RX_PIN (UART2_TX_P10_5) // 蓝牙串口对应模块的 RX 要接到单片机的 TX
+#define BLE6A20_RTS_PIN (P10_2) // 蓝牙串口对应模块的 RTS 引脚
+
+#define BLE6A20_BUFFER_SIZE ( 64 ) // 蓝牙串口缓冲区大小
+#define BLE6A20_TIMEOUT_COUNT ( 0x64 ) // 蓝牙串口通讯超时范围
+
+// ------------------------------------ 自动波特率 ------------------------------------
+// 注意事项1:开启自动波特率务必连接RTS引脚 否则会开启失败。
+// 注意事项2:模块自动波特率失败的话 可以尝试断电重启
+
+// 开启自动波特率务必阅读上面两条 注意事项
+// 开启自动波特率务必阅读上面两条 注意事项
+// 开启自动波特率务必阅读上面两条 注意事项
+
+// 0:关闭自动波特率
+// 1:开启自动波特率 自动波特率的作用是修改 BLE6A20_BAUD 之后不需要对模块进行配置 模块会自动设置为对应的波特率
+// 自动波特率仅支持 9600 57600 115200 230400 460800 921600 1500000 2000000
+
+#define BLE6A20_AUTO_BAUD_RATE ( 0 )
+
+#if (1 == BLE6A20_AUTO_BAUD_RATE)
+typedef enum
+{
+ BLE6A20_AUTO_BAUD_RATE_SUCCESS,
+ BLE6A20_AUTO_BAUD_RATE_INIT,
+ BLE6A20_AUTO_BAUD_RATE_START,
+ BLE6A20_AUTO_BAUD_RATE_GET_ACK,
+}ble6a20_auto_baudrate_state_enum;
+#endif
+// ------------------------------------ 自动波特率 ------------------------------------
+
+//=================================================定义 蓝牙串口 基本配置================================================
+
+
+//=================================================声明 蓝牙串口 基础函数================================================
+uint32 ble6a20_send_byte (const uint8 data); // 蓝牙转串口模块 发送数据
+uint32 ble6a20_send_buffer (const uint8 *buff, uint32 len); // 蓝牙转串口模块 发送数据块
+uint32 ble6a20_send_string (const char *str); // 蓝牙转串口模块 发送字符串
+void ble6a20_send_image (const uint8 *image_addr, uint32 image_size); // 蓝牙转串口模块 发送摄像头图像至上位机查看图像
+
+uint32 ble6a20_read_buffer (uint8 *buff, uint32 len); // 蓝牙转串口模块 读取缓冲区数据
+
+void ble6a20_callback (void); // 蓝牙转串口模块 串口中断回调函数
+
+uint8 ble6a20_init (void); // 蓝牙转串口模块 初始化
+//=================================================声明 蓝牙串口 基础函数================================================
+
+#endif
diff --git a/Example/E12_cpu1_handles_interrupts_demo/libraries/zf_device/zf_device_type.h b/Example/E12_cpu1_handles_interrupts_demo/libraries/zf_device/zf_device_type.h
index 6c2b8da..4f8ec53 100644
--- a/Example/E12_cpu1_handles_interrupts_demo/libraries/zf_device/zf_device_type.h
+++ b/Example/E12_cpu1_handles_interrupts_demo/libraries/zf_device/zf_device_type.h
@@ -54,6 +54,7 @@ typedef enum
{
NO_WIRELESS = 0, // 无设备
WIRELESS_UART, // 无线串口
+ BLE6A20, // 蓝牙串口
BLUETOOTH_CH9141, // 蓝牙 CH9141
WIFI_UART, // 串口 WiFi
RECEIVER_UART, // 枪式遥控器
diff --git a/Example/E12_cpu1_handles_interrupts_demo/libraries/zf_device/澶栬鏂囦欢璇存槑.txt b/Example/E12_cpu1_handles_interrupts_demo/libraries/zf_device/澶栬鏂囦欢璇存槑.txt
new file mode 100644
index 0000000..1c96965
--- /dev/null
+++ b/Example/E12_cpu1_handles_interrupts_demo/libraries/zf_device/澶栬鏂囦欢璇存槑.txt
@@ -0,0 +1,97 @@
+
+如需获取详细资料可联系淘宝店铺客服:https://seekfree.taobao.com/
+如需获取详细资料可联系淘宝店铺客服:https://seekfree.taobao.com/
+如需获取详细资料可联系淘宝店铺客服:https://seekfree.taobao.com/
+
+本文件主要用于说明 zf_device 目录下各个文件所对应的外设模块
+本文件主要用于说明 zf_device 目录下各个文件所对应的外设模块
+本文件主要用于说明 zf_device 目录下各个文件所对应的外设模块
+
+
+=================================================== 测距模块 ===================================================
+
+zf_device_dl1a.h TOF 测距模块 DL1A 频率:33hz 最大距离:1.2 米
+
+zf_device_dl1b.h TOF 测距模块 DL1B 频率:100hz 最大距离:1.4 米
+
+=================================================== 测距模块 ===================================================
+
+
+
+==================================================== 陀螺仪 ====================================================
+
+zf_device_mpu6050.h MPU6050 六轴陀螺仪 传统 IIC 通讯
+
+zf_device_icm20602.h ICM20602 六轴陀螺仪 支持 SPI 采值
+
+zf_device_imu660ra.h IMU660RA 六轴陀螺仪 高精度陀螺仪
+
+zf_device_imu963ra.h IMU963RA 九轴陀螺仪 支持地磁计采集
+
+==================================================== 陀螺仪 ====================================================
+
+
+
+=================================================== 屏幕显示 ===================================================
+
+zf_device_ips114.h IPS114 液晶屏幕 1.14 寸 分辨率:240 * 135
+
+zf_device_ips200.h IPS200 液晶屏幕 2.0 寸 分辨率:240 * 320
+
+zf_device_tft180.h TFT180 屏幕 1.8寸 分辨率:160 * 128
+
+zf_device_oled.h OLED 液晶屏幕 0.96 寸 分辨率:128 * 64
+
+=================================================== 屏幕显示 ===================================================
+
+
+
+================================================== 图像传感器 ==================================================
+
+zf_device_mt9v03x.h MT9V03X 总钻风灰度摄像头
+
+zf_device_ov7725.h OV7725 小钻风硬件二值化摄像头
+
+zf_device_scc8660.h SCC8660 凌瞳彩色摄像头
+
+zf_device_tsl1401.h TSL1401 红孩儿线阵CCD
+
+================================================== 图像传感器 ==================================================
+
+
+
+=================================================== 无线通讯 ===================================================
+
+zf_device_ble6a20.h 蓝牙串口模块 无线通讯
+
+zf_device_bluetooth_ch9141.h CH9141 蓝牙通讯模块 蓝牙组网通讯
+
+zf_device_wifi_spi.h WIFI-SPI 高速WIFI无线通讯模块
+
+zf_device_wifi_uart.h WIFI-UART 串口WIFI无线通讯模块
+
+zf_device_wireless_uart.h 无线串口模块
+
+=================================================== 无线通讯 ===================================================
+
+
+
+=================================================== 远程遥控 ===================================================
+
+zf_device_uart_receiver.h SUBS 串口遥控器 串口通讯 长距离遥控 2.4G频段
+
+=================================================== 远程遥控 ===================================================
+
+
+
+================================================== 其他传感器 ==================================================
+
+zf_device_absolute_encoder.h 360° 位置传感器 绝对式迷你 mini 编码器 分辨率:0.088°
+
+zf_device_gnss.h GPS 及 RTK 定位模块 双频高精度定位模块 亚米级定位
+
+zf_device_key.h GPIO 按键驱动 用于检测主板按键状态
+
+zf_device_virtual_oscilloscope.h VisualScope 虚拟示波器
+
+================================================== 其他传感器 ==================================================
\ No newline at end of file
diff --git a/Example/E13_dual_core_demo/libraries/doc/version.txt b/Example/E13_dual_core_demo/libraries/doc/version.txt
index 68afc86..c4e0d0a 100644
--- a/Example/E13_dual_core_demo/libraries/doc/version.txt
+++ b/Example/E13_dual_core_demo/libraries/doc/version.txt
@@ -1,3 +1,5 @@
+V3.3.0
+ 新增蓝牙串口通讯模块
V3.2.13
新增一个微秒延时函数 该延时函数为普通延时 非中断延时
V3.2.12
diff --git a/Example/E13_dual_core_demo/libraries/zf_common/zf_common_headfile.h b/Example/E13_dual_core_demo/libraries/zf_common/zf_common_headfile.h
index c0d833b..3a140e3 100644
--- a/Example/E13_dual_core_demo/libraries/zf_common/zf_common_headfile.h
+++ b/Example/E13_dual_core_demo/libraries/zf_common/zf_common_headfile.h
@@ -81,6 +81,7 @@
//===================================================外接设备驱动层===================================================
#include "zf_device_absolute_encoder.h"
+#include "zf_device_ble6a20.h"
#include "zf_device_bluetooth_ch9141.h"
#include "zf_device_gnss.h"
#include "zf_device_camera.h"
diff --git a/Example/E13_dual_core_demo/libraries/zf_components/seekfree_assistant.c b/Example/E13_dual_core_demo/libraries/zf_components/seekfree_assistant.c
index 0b7cb9d..af3bb96 100644
--- a/Example/E13_dual_core_demo/libraries/zf_components/seekfree_assistant.c
+++ b/Example/E13_dual_core_demo/libraries/zf_components/seekfree_assistant.c
@@ -1,20 +1,20 @@
/*********************************************************************************************************************
-* RT1064DVL6A Opensourec Library 即(RT1064DVL6A 开源库)是一个基于官方 SDK 接口的第三方开源库
+* TC264 Opensourec Library 即(TC264 开源库)是一个基于官方 SDK 接口的第三方开源库
* Copyright (c) 2022 SEEKFREE 逐飞科技
-*
-* 本文件是 RT1064DVL6A 开源库的一部分
-*
-* RT1064DVL6A 开源库 是免费软件
+*
+* 本文件是 TC264 开源库的一部分
+*
+* TC264 开源库 是免费软件
* 您可以根据自由软件基金会发布的 GPL(GNU General Public License,即 GNU通用公共许可证)的条款
* 即 GPL 的第3版(即 GPL3.0)或(您选择的)任何后来的版本,重新发布和/或修改它
-*
+*
* 本开源库的发布是希望它能发挥作用,但并未对其作任何的保证
* 甚至没有隐含的适销性或适合特定用途的保证
* 更多细节请参见 GPL
-*
+*
* 您应该在收到本开源库的同时收到一份 GPL 的副本
* 如果没有,请参阅
-*
+*
* 额外注明:
* 本开源库使用 GPL3.0 开源许可证协议 以上许可申明为译文版本
* 许可申明英文版在 libraries/doc 文件夹下的 GPL3_permission_statement.txt 文件中
@@ -24,13 +24,13 @@
* 文件名称 seekfree_assistant
* 公司名称 成都逐飞科技有限公司
* 版本信息 查看 libraries/doc 文件夹内 version 文件 版本说明
-* 开发环境 IAR 8.32.4 or MDK 5.33
-* 适用平台 RT1064DVL6A
+* 开发环境 ADS v1.9.20
+* 适用平台 TC264D
* 店铺链接 https://seekfree.taobao.com/
-*
+*
* 修改记录
-* 日期 作者 备注
-* 2024-1-11 SeekFree first version
+* 日期 作者 备注
+* 2024-01-01 pudding first version
********************************************************************************************************************/
#include "zf_common_debug.h"
diff --git a/Example/E13_dual_core_demo/libraries/zf_components/seekfree_assistant.h b/Example/E13_dual_core_demo/libraries/zf_components/seekfree_assistant.h
index ae0f67c..5e04a1d 100644
--- a/Example/E13_dual_core_demo/libraries/zf_components/seekfree_assistant.h
+++ b/Example/E13_dual_core_demo/libraries/zf_components/seekfree_assistant.h
@@ -1,20 +1,20 @@
/*********************************************************************************************************************
-* RT1064DVL6A Opensourec Library 即(RT1064DVL6A 开源库)是一个基于官方 SDK 接口的第三方开源库
+* TC264 Opensourec Library 即(TC264 开源库)是一个基于官方 SDK 接口的第三方开源库
* Copyright (c) 2022 SEEKFREE 逐飞科技
-*
-* 本文件是 RT1064DVL6A 开源库的一部分
-*
-* RT1064DVL6A 开源库 是免费软件
+*
+* 本文件是 TC264 开源库的一部分
+*
+* TC264 开源库 是免费软件
* 您可以根据自由软件基金会发布的 GPL(GNU General Public License,即 GNU通用公共许可证)的条款
* 即 GPL 的第3版(即 GPL3.0)或(您选择的)任何后来的版本,重新发布和/或修改它
-*
+*
* 本开源库的发布是希望它能发挥作用,但并未对其作任何的保证
* 甚至没有隐含的适销性或适合特定用途的保证
* 更多细节请参见 GPL
-*
+*
* 您应该在收到本开源库的同时收到一份 GPL 的副本
* 如果没有,请参阅
-*
+*
* 额外注明:
* 本开源库使用 GPL3.0 开源许可证协议 以上许可申明为译文版本
* 许可申明英文版在 libraries/doc 文件夹下的 GPL3_permission_statement.txt 文件中
@@ -24,13 +24,13 @@
* 文件名称 seekfree_assistant
* 公司名称 成都逐飞科技有限公司
* 版本信息 查看 libraries/doc 文件夹内 version 文件 版本说明
-* 开发环境 IAR 8.32.4 or MDK 5.33
-* 适用平台 RT1064DVL6A
+* 开发环境 ADS v1.9.20
+* 适用平台 TC264D
* 店铺链接 https://seekfree.taobao.com/
-*
+*
* 修改记录
-* 日期 作者 备注
-* 2024-1-11 SeekFree first version
+* 日期 作者 备注
+* 2024-01-01 pudding first version
********************************************************************************************************************/
#ifndef _seekfree_assistant_h_
#define _seekfree_assistant_h_
@@ -47,27 +47,27 @@
// 定义接收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 )
diff --git a/Example/E13_dual_core_demo/libraries/zf_components/seekfree_assistant_interface.c b/Example/E13_dual_core_demo/libraries/zf_components/seekfree_assistant_interface.c
index fdade63..cc42e43 100644
--- a/Example/E13_dual_core_demo/libraries/zf_components/seekfree_assistant_interface.c
+++ b/Example/E13_dual_core_demo/libraries/zf_components/seekfree_assistant_interface.c
@@ -1,20 +1,20 @@
/*********************************************************************************************************************
-* RT1064DVL6A Opensourec Library 即(RT1064DVL6A 开源库)是一个基于官方 SDK 接口的第三方开源库
+* TC264 Opensourec Library 即(TC264 开源库)是一个基于官方 SDK 接口的第三方开源库
* Copyright (c) 2022 SEEKFREE 逐飞科技
-*
-* 本文件是 RT1064DVL6A 开源库的一部分
-*
-* RT1064DVL6A 开源库 是免费软件
+*
+* 本文件是 TC264 开源库的一部分
+*
+* TC264 开源库 是免费软件
* 您可以根据自由软件基金会发布的 GPL(GNU General Public License,即 GNU通用公共许可证)的条款
* 即 GPL 的第3版(即 GPL3.0)或(您选择的)任何后来的版本,重新发布和/或修改它
-*
+*
* 本开源库的发布是希望它能发挥作用,但并未对其作任何的保证
* 甚至没有隐含的适销性或适合特定用途的保证
* 更多细节请参见 GPL
-*
+*
* 您应该在收到本开源库的同时收到一份 GPL 的副本
* 如果没有,请参阅
-*
+*
* 额外注明:
* 本开源库使用 GPL3.0 开源许可证协议 以上许可申明为译文版本
* 许可申明英文版在 libraries/doc 文件夹下的 GPL3_permission_statement.txt 文件中
@@ -24,13 +24,13 @@
* 文件名称 seekfree_assistant_interface
* 公司名称 成都逐飞科技有限公司
* 版本信息 查看 libraries/doc 文件夹内 version 文件 版本说明
-* 开发环境 IAR 8.32.4 or MDK 5.33
-* 适用平台 RT1064DVL6A
+* 开发环境 ADS v1.9.20
+* 适用平台 TC264D
* 店铺链接 https://seekfree.taobao.com/
-*
+*
* 修改记录
-* 日期 作者 备注
-* 2024-1-11 SeekFree first version
+* 日期 作者 备注
+* 2024-01-01 pudding first version
********************************************************************************************************************/
#include "zf_common_typedef.h"
@@ -38,6 +38,7 @@
#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"
@@ -100,6 +101,12 @@ ZF_WEAK void seekfree_assistant_interface_init (seekfree_assistant_transfer_devi
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;
diff --git a/Example/E13_dual_core_demo/libraries/zf_components/seekfree_assistant_interface.h b/Example/E13_dual_core_demo/libraries/zf_components/seekfree_assistant_interface.h
index 940b5f7..1d0158c 100644
--- a/Example/E13_dual_core_demo/libraries/zf_components/seekfree_assistant_interface.h
+++ b/Example/E13_dual_core_demo/libraries/zf_components/seekfree_assistant_interface.h
@@ -1,20 +1,20 @@
/*********************************************************************************************************************
-* RT1064DVL6A Opensourec Library 即(RT1064DVL6A 开源库)是一个基于官方 SDK 接口的第三方开源库
+* TC264 Opensourec Library 即(TC264 开源库)是一个基于官方 SDK 接口的第三方开源库
* Copyright (c) 2022 SEEKFREE 逐飞科技
-*
-* 本文件是 RT1064DVL6A 开源库的一部分
-*
-* RT1064DVL6A 开源库 是免费软件
+*
+* 本文件是 TC264 开源库的一部分
+*
+* TC264 开源库 是免费软件
* 您可以根据自由软件基金会发布的 GPL(GNU General Public License,即 GNU通用公共许可证)的条款
* 即 GPL 的第3版(即 GPL3.0)或(您选择的)任何后来的版本,重新发布和/或修改它
-*
+*
* 本开源库的发布是希望它能发挥作用,但并未对其作任何的保证
* 甚至没有隐含的适销性或适合特定用途的保证
* 更多细节请参见 GPL
-*
+*
* 您应该在收到本开源库的同时收到一份 GPL 的副本
* 如果没有,请参阅
-*
+*
* 额外注明:
* 本开源库使用 GPL3.0 开源许可证协议 以上许可申明为译文版本
* 许可申明英文版在 libraries/doc 文件夹下的 GPL3_permission_statement.txt 文件中
@@ -24,13 +24,13 @@
* 文件名称 seekfree_assistant_interface
* 公司名称 成都逐飞科技有限公司
* 版本信息 查看 libraries/doc 文件夹内 version 文件 版本说明
-* 开发环境 IAR 8.32.4 or MDK 5.33
-* 适用平台 RT1064DVL6A
+* 开发环境 ADS v1.9.20
+* 适用平台 TC264D
* 店铺链接 https://seekfree.taobao.com/
-*
+*
* 修改记录
-* 日期 作者 备注
-* 2024-1-11 SeekFree first version
+* 日期 作者 备注
+* 2024-01-01 pudding first version
********************************************************************************************************************/
#ifndef _seekfree_assistant_interface_h_
@@ -43,6 +43,7 @@ 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
diff --git a/Example/E13_dual_core_demo/libraries/zf_device/zf_device_ble6a20.c b/Example/E13_dual_core_demo/libraries/zf_device/zf_device_ble6a20.c
new file mode 100644
index 0000000..ea8649e
--- /dev/null
+++ b/Example/E13_dual_core_demo/libraries/zf_device/zf_device_ble6a20.c
@@ -0,0 +1,299 @@
+/*********************************************************************************************************************
+* TC264 Opensourec Library 即(TC264 开源库)是一个基于官方 SDK 接口的第三方开源库
+* Copyright (c) 2022 SEEKFREE 逐飞科技
+*
+* 本文件是 TC264 开源库的一部分
+*
+* TC264 开源库 是免费软件
+* 您可以根据自由软件基金会发布的 GPL(GNU General Public License,即 GNU通用公共许可证)的条款
+* 即 GPL 的第3版(即 GPL3.0)或(您选择的)任何后来的版本,重新发布和/或修改它
+*
+* 本开源库的发布是希望它能发挥作用,但并未对其作任何的保证
+* 甚至没有隐含的适销性或适合特定用途的保证
+* 更多细节请参见 GPL
+*
+* 您应该在收到本开源库的同时收到一份 GPL 的副本
+* 如果没有,请参阅
+*
+* 额外注明:
+* 本开源库使用 GPL3.0 开源许可证协议 以上许可申明为译文版本
+* 许可申明英文版在 libraries/doc 文件夹下的 GPL3_permission_statement.txt 文件中
+* 许可证副本在 libraries 文件夹下 即该文件夹下的 LICENSE 文件
+* 欢迎各位使用并传播本程序 但修改内容时必须保留逐飞科技的版权声明(即本声明)
+*
+* 文件名称 zf_device_ble6a20
+* 公司名称 成都逐飞科技有限公司
+* 版本信息 查看 libraries/doc 文件夹内 version 文件 版本说明
+* 开发环境 ADS v1.9.20
+* 适用平台 TC264D
+* 店铺链接 https://seekfree.taobao.com/
+*
+* 修改记录
+* 日期 作者 备注
+* 2024-07-02 pudding first version
+********************************************************************************************************************/
+/*********************************************************************************************************************
+* 接线定义:
+* ------------------------------------
+* 模块管脚 单片机管脚
+* RX 查看 zf_device_ble6a20.h 中 BLE6A20_RX_PIN 宏定义
+* TX 查看 zf_device_ble6a20.h 中 BLE6A20_TX_PIN 宏定义
+* RTS 查看 zf_device_ble6a20.h 中 BLE6A20_RTS_PIN 宏定义
+* VCC 3.3V电源
+* GND 电源地
+* 其余引脚悬空
+* ------------------------------------
+*********************************************************************************************************************/
+
+#include "zf_common_clock.h"
+#include "zf_common_debug.h"
+#include "zf_common_fifo.h"
+#include "zf_driver_delay.h"
+#include "zf_driver_gpio.h"
+#include "zf_driver_uart.h"
+#include "zf_device_type.h"
+#include "zf_device_ble6a20.h"
+
+static fifo_struct ble6a20_fifo;
+static uint8 ble6a20_buffer[BLE6A20_BUFFER_SIZE];
+
+static uint8 ble6a20_data = 0;
+#if (1 == BLE6A20_AUTO_BAUD_RATE)
+static volatile ble6a20_auto_baudrate_state_enum ble6a20_auto_baud_flag = BLE6A20_AUTO_BAUD_RATE_INIT;
+static volatile uint8 ble6a20_auto_baud_data[3] = {0x00, 0x01, 0x03};
+#endif
+
+//-------------------------------------------------------------------------------------------------------------------
+// 函数简介 蓝牙转串口模块 发送数据
+// 参数说明 data 8bit 数据
+// 返回参数 uint32 剩余发送长度 0-发送完毕 1-未发送完成
+// 使用示例 ble6a20_send_byte(data);
+// 备注信息
+//-------------------------------------------------------------------------------------------------------------------
+uint32 ble6a20_send_byte (const uint8 data)
+{
+ uint16 time_count = BLE6A20_TIMEOUT_COUNT;
+ while(time_count)
+ {
+ if(!gpio_get_level(BLE6A20_RTS_PIN))
+ {
+ uart_write_byte(BLE6A20_INDEX, data); // 发送数据
+ break;
+ }
+ time_count --;
+ system_delay_ms(1);
+ }
+ return (0 == time_count);
+}
+
+//-------------------------------------------------------------------------------------------------------------------
+// 函数简介 蓝牙转串口模块 发送数据块
+// 参数说明 *buff 发送缓冲区
+// 参数说明 len 发送数据长度
+// 返回参数 uint32 剩余发送长度
+// 使用示例 ble6a20_send_buffer(buff, 64);
+// 备注信息
+//-------------------------------------------------------------------------------------------------------------------
+uint32 ble6a20_send_buffer (const uint8 *buff, uint32 len)
+{
+ zf_assert(NULL != buff);
+ uint16 time_count = 0;
+ while(0 != len)
+ {
+ if(!gpio_get_level(BLE6A20_RTS_PIN)) // 如果RTS为低电平 则继续发送数据
+ {
+ if(30 <= len) // 数据分 30byte 每包发送
+ {
+ uart_write_buffer(BLE6A20_INDEX, buff, 30); // 发送数据
+ buff += 30; // 地址偏移
+ len -= 30; // 数量
+ time_count = 0;
+ }
+ else // 不足 30byte 的数据一次性发送完毕
+ {
+ uart_write_buffer(BLE6A20_INDEX, buff, len); // 发送数据
+ len = 0;
+ break;
+ }
+ }
+ else // 如果RTS为高电平 则模块忙
+ {
+ if(BLE6A20_TIMEOUT_COUNT <= (++ time_count)) // 超出了最大等待时间
+ {
+ break; // 退出发送
+ }
+ system_delay_ms(1);
+ }
+ }
+ return len;
+}
+
+//-------------------------------------------------------------------------------------------------------------------
+// 函数简介 蓝牙转串口模块 发送字符串
+// 参数说明 *str 要发送的字符串地址
+// 返回参数 uint32 剩余发送长度
+// 使用示例 ble6a20_send_string("Believe in yourself.");
+// 备注信息
+//-------------------------------------------------------------------------------------------------------------------
+uint32 ble6a20_send_string (const char *str)
+{
+ zf_assert(NULL != str);
+ uint16 time_count = 0;
+ uint32 len = strlen(str);
+ while(0 != len)
+ {
+ if(!gpio_get_level(BLE6A20_RTS_PIN)) // 如果RTS为低电平 则继续发送数据
+ {
+ if(128 <= len) // 数据分 128byte 每包发送
+ {
+ uart_write_buffer(BLE6A20_INDEX, (const uint8 *)str, 128); // 发送数据
+ str += 128; // 地址偏移
+ len -= 128; // 数量
+ time_count = 0;
+ }
+ else // 不足 128byte 的数据一次性发送完毕
+ {
+ uart_write_buffer(BLE6A20_INDEX, (const uint8 *)str, len);// 发送数据
+ len = 0;
+ break;
+ }
+ }
+ else // 如果RTS为高电平 则模块忙
+ {
+ if(BLE6A20_TIMEOUT_COUNT <= (++ time_count)) // 超出了最大等待时间
+ {
+ break; // 退出发送
+ }
+ system_delay_ms(1);
+ }
+ }
+ return len;
+}
+
+//-------------------------------------------------------------------------------------------------------------------
+// 函数简介 蓝牙转串口模块 发送摄像头图像至上位机查看图像
+// 参数说明 *image_addr 需要发送的图像地址
+// 参数说明 image_size 图像的大小
+// 返回参数 void
+// 使用示例 ble6a20_send_image(&mt9v03x_image[0][0], MT9V03X_IMAGE_SIZE);
+// 备注信息
+//-------------------------------------------------------------------------------------------------------------------
+void ble6a20_send_image (const uint8 *image_addr, uint32 image_size)
+{
+ zf_assert(NULL != image_addr);
+ extern uint8 camera_send_image_frame_header[4];
+ ble6a20_send_buffer(camera_send_image_frame_header, 4);
+ ble6a20_send_buffer((uint8 *)image_addr, image_size);
+}
+
+//-------------------------------------------------------------------------------------------------------------------
+// 函数简介 蓝牙转串口模块 读取缓冲区数据
+// 参数说明 *buff 接收缓冲区
+// 参数说明 len 读取数据长度
+// 返回参数 uint32 实际读取数据长度
+// 使用示例 ble6a20_read_buffer(buff, 32);
+// 备注信息
+//-------------------------------------------------------------------------------------------------------------------
+uint32 ble6a20_read_buffer (uint8 *buff, uint32 len)
+{
+ zf_assert(NULL != buff);
+ uint32 data_len = len;
+ fifo_read_buffer(&ble6a20_fifo, buff, &data_len, FIFO_READ_AND_CLEAN);
+ return data_len;
+}
+
+//-------------------------------------------------------------------------------------------------------------------
+// 函数简介 蓝牙转串口模块 串口中断回调函数
+// 参数说明 void
+// 返回参数 void
+// 使用示例 ble6a20_callback();
+// 备注信息 该函数在 ISR 文件 串口中断程序被调用
+// 由串口中断服务函数调用 wireless_module_uart_handler() 函数
+// 再由 wireless_module_uart_handler() 函数调用本函数
+//-------------------------------------------------------------------------------------------------------------------
+void ble6a20_callback (void)
+{
+ if(uart_query_byte(BLE6A20_INDEX, &ble6a20_data))
+ {
+ fifo_write_buffer(&ble6a20_fifo, &ble6a20_data, 1);
+#if BLE6A20_AUTO_BAUD_RATE // 开启自动波特率
+ if(BLE6A20_AUTO_BAUD_RATE_START == ble6a20_auto_baud_flag && 3 == fifo_used(&ble6a20_fifo))
+ {
+ uint32 ble6a20_auto_baud_count = 3;
+ ble6a20_auto_baud_flag = BLE6A20_AUTO_BAUD_RATE_GET_ACK;
+ fifo_read_buffer(&ble6a20_fifo, (uint8 *)ble6a20_auto_baud_data, (uint32 *)&ble6a20_auto_baud_count, FIFO_READ_AND_CLEAN);
+ }
+#endif
+ }
+}
+
+//-------------------------------------------------------------------------------------------------------------------
+// 函数简介 蓝牙转串口模块 初始化
+// 参数说明 void
+// 返回参数 void
+// 使用示例 ble6a20_init();
+// 备注信息
+//-------------------------------------------------------------------------------------------------------------------
+uint8 ble6a20_init (void)
+{
+ uint8 return_state = 0;
+
+ // 等待模块初始化
+ system_delay_ms(50);
+
+ set_wireless_type(BLE6A20, ble6a20_callback);
+
+ fifo_init(&ble6a20_fifo, FIFO_DATA_8BIT, ble6a20_buffer, BLE6A20_BUFFER_SIZE);
+ gpio_init(BLE6A20_RTS_PIN, GPI, GPIO_HIGH, GPI_PULL_UP);
+#if(0 == BLE6A20_AUTO_BAUD_RATE) // 关闭自动波特率
+ // 本函数使用的波特率为115200 为蓝牙转串口模块的默认波特率 如需其他波特率请自行配置模块并修改串口的波特率
+ uart_init (BLE6A20_INDEX, BLE6A20_BUAD_RATE, BLE6A20_RX_PIN, BLE6A20_TX_PIN); // 初始化串口
+ uart_rx_interrupt(BLE6A20_INDEX, 1);
+#elif(1 == BLE6A20_AUTO_BAUD_RATE) // 开启自动波特率
+ uint8 rts_init_status = 0;
+
+ ble6a20_auto_baud_flag = BLE6A20_AUTO_BAUD_RATE_INIT;
+ ble6a20_auto_baud_data[0] = 0;
+ ble6a20_auto_baud_data[1] = 1;
+ ble6a20_auto_baud_data[2] = 3;
+
+ rts_init_status = gpio_get_level(BLE6A20_RTS_PIN);
+ gpio_init(BLE6A20_RTS_PIN, GPO, rts_init_status, GPO_PUSH_PULL); // 初始化流控引脚
+
+ uart_init (BLE6A20_INDEX, BLE6A20_BUAD_RATE, BLE6A20_RX_PIN, BLE6A20_TX_PIN); // 初始化串口
+ uart_rx_interrupt(BLE6A20_INDEX, 1);
+
+ system_delay_ms(5); // 模块上电之后需要延时等待
+ gpio_set_level(BLE6A20_RTS_PIN, !rts_init_status); // RTS引脚拉高,进入自动波特率模式
+ system_delay_ms(100); // RTS拉高之后必须延时20ms
+ gpio_toggle_level(BLE6A20_RTS_PIN); // RTS引脚取反
+
+ do
+ {
+ ble6a20_auto_baud_flag = BLE6A20_AUTO_BAUD_RATE_START;
+ uart_write_byte(BLE6A20_INDEX, ble6a20_auto_baud_data[0]); // 发送特定数据 用于模块自动判断波特率
+ uart_write_byte(BLE6A20_INDEX, ble6a20_auto_baud_data[1]); // 发送特定数据 用于模块自动判断波特率
+ uart_write_byte(BLE6A20_INDEX, ble6a20_auto_baud_data[2]); // 发送特定数据 用于模块自动判断波特率
+ system_delay_ms(20);
+
+ if(BLE6A20_AUTO_BAUD_RATE_GET_ACK != ble6a20_auto_baud_flag) // 检验自动波特率是否完成
+ {
+ return_state = 1; // 如果程序进入到此语句内 说明自动波特率失败了
+ break;
+ }
+
+ if( 0xa5 != ble6a20_auto_baud_data[0] && // 检验自动波特率是否正确
+ 0xff != ble6a20_auto_baud_data[1] && // 检验自动波特率是否正确
+ 0xff != ble6a20_auto_baud_data[2] ) // 检验自动波特率是否正确
+ {
+ return_state = 1; // 如果程序进入到此语句内 说明自动波特率失败了
+ break;
+ }
+ ble6a20_auto_baud_flag = BLE6A20_AUTO_BAUD_RATE_SUCCESS;
+
+ gpio_init(BLE6A20_RTS_PIN, GPI, 0, GPI_PULL_UP); // 初始化流控引脚
+ system_delay_ms(10); // 延时等待 模块准备就绪
+ }while(0);
+#endif
+ return return_state;
+}
diff --git a/Example/E13_dual_core_demo/libraries/zf_device/zf_device_ble6a20.h b/Example/E13_dual_core_demo/libraries/zf_device/zf_device_ble6a20.h
new file mode 100644
index 0000000..c037ea2
--- /dev/null
+++ b/Example/E13_dual_core_demo/libraries/zf_device/zf_device_ble6a20.h
@@ -0,0 +1,108 @@
+/*********************************************************************************************************************
+* TC264 Opensourec Library 即(TC264 开源库)是一个基于官方 SDK 接口的第三方开源库
+* Copyright (c) 2022 SEEKFREE 逐飞科技
+*
+* 本文件是 TC264 开源库的一部分
+*
+* TC264 开源库 是免费软件
+* 您可以根据自由软件基金会发布的 GPL(GNU General Public License,即 GNU通用公共许可证)的条款
+* 即 GPL 的第3版(即 GPL3.0)或(您选择的)任何后来的版本,重新发布和/或修改它
+*
+* 本开源库的发布是希望它能发挥作用,但并未对其作任何的保证
+* 甚至没有隐含的适销性或适合特定用途的保证
+* 更多细节请参见 GPL
+*
+* 您应该在收到本开源库的同时收到一份 GPL 的副本
+* 如果没有,请参阅
+*
+* 额外注明:
+* 本开源库使用 GPL3.0 开源许可证协议 以上许可申明为译文版本
+* 许可申明英文版在 libraries/doc 文件夹下的 GPL3_permission_statement.txt 文件中
+* 许可证副本在 libraries 文件夹下 即该文件夹下的 LICENSE 文件
+* 欢迎各位使用并传播本程序 但修改内容时必须保留逐飞科技的版权声明(即本声明)
+*
+* 文件名称 zf_device_ble6a20.h
+* 公司名称 成都逐飞科技有限公司
+* 版本信息 查看 libraries/doc 文件夹内 version 文件 版本说明
+* 开发环境 ADS v1.9.20
+* 适用平台 TC264D
+* 店铺链接 https://seekfree.taobao.com/
+*
+* 修改记录
+* 日期 作者 备注
+* 2024-07-02 pudding first version
+********************************************************************************************************************/
+/*********************************************************************************************************************
+* 接线定义:
+* ------------------------------------
+* 模块管脚 单片机管脚
+* RX 查看 zf_device_ble6a20.h 中 BLE6A20_RX_PIN 宏定义
+* TX 查看 zf_device_ble6a20.h 中 BLE6A20_TX_PIN 宏定义
+* RTS 查看 zf_device_ble6a20.h 中 BLE6A20_RTS_PIN 宏定义
+* VCC 3.3V电源
+* GND 电源地
+* 其余引脚悬空
+* ------------------------------------
+*********************************************************************************************************************/
+
+
+#ifndef _zf_device_ble6a20_h_
+#define _zf_device_ble6a20_h_
+
+#include "zf_common_typedef.h"
+
+
+//=================================================定义 蓝牙串口 基本配置================================================
+
+#define BLE6A20_INDEX (UART_2) // 蓝牙串口对应使用的串口号
+#define BLE6A20_BUAD_RATE (115200) // 蓝牙串口对应使用的串口波特率
+ // 波特率仅支持 9600 57600 115200 230400 460800 921600 1500000 2000000
+#define BLE6A20_TX_PIN (UART2_RX_P10_6) // 蓝牙串口对应模块的 TX 要接到单片机的 RX
+#define BLE6A20_RX_PIN (UART2_TX_P10_5) // 蓝牙串口对应模块的 RX 要接到单片机的 TX
+#define BLE6A20_RTS_PIN (P10_2) // 蓝牙串口对应模块的 RTS 引脚
+
+#define BLE6A20_BUFFER_SIZE ( 64 ) // 蓝牙串口缓冲区大小
+#define BLE6A20_TIMEOUT_COUNT ( 0x64 ) // 蓝牙串口通讯超时范围
+
+// ------------------------------------ 自动波特率 ------------------------------------
+// 注意事项1:开启自动波特率务必连接RTS引脚 否则会开启失败。
+// 注意事项2:模块自动波特率失败的话 可以尝试断电重启
+
+// 开启自动波特率务必阅读上面两条 注意事项
+// 开启自动波特率务必阅读上面两条 注意事项
+// 开启自动波特率务必阅读上面两条 注意事项
+
+// 0:关闭自动波特率
+// 1:开启自动波特率 自动波特率的作用是修改 BLE6A20_BAUD 之后不需要对模块进行配置 模块会自动设置为对应的波特率
+// 自动波特率仅支持 9600 57600 115200 230400 460800 921600 1500000 2000000
+
+#define BLE6A20_AUTO_BAUD_RATE ( 0 )
+
+#if (1 == BLE6A20_AUTO_BAUD_RATE)
+typedef enum
+{
+ BLE6A20_AUTO_BAUD_RATE_SUCCESS,
+ BLE6A20_AUTO_BAUD_RATE_INIT,
+ BLE6A20_AUTO_BAUD_RATE_START,
+ BLE6A20_AUTO_BAUD_RATE_GET_ACK,
+}ble6a20_auto_baudrate_state_enum;
+#endif
+// ------------------------------------ 自动波特率 ------------------------------------
+
+//=================================================定义 蓝牙串口 基本配置================================================
+
+
+//=================================================声明 蓝牙串口 基础函数================================================
+uint32 ble6a20_send_byte (const uint8 data); // 蓝牙转串口模块 发送数据
+uint32 ble6a20_send_buffer (const uint8 *buff, uint32 len); // 蓝牙转串口模块 发送数据块
+uint32 ble6a20_send_string (const char *str); // 蓝牙转串口模块 发送字符串
+void ble6a20_send_image (const uint8 *image_addr, uint32 image_size); // 蓝牙转串口模块 发送摄像头图像至上位机查看图像
+
+uint32 ble6a20_read_buffer (uint8 *buff, uint32 len); // 蓝牙转串口模块 读取缓冲区数据
+
+void ble6a20_callback (void); // 蓝牙转串口模块 串口中断回调函数
+
+uint8 ble6a20_init (void); // 蓝牙转串口模块 初始化
+//=================================================声明 蓝牙串口 基础函数================================================
+
+#endif
diff --git a/Example/E13_dual_core_demo/libraries/zf_device/zf_device_type.h b/Example/E13_dual_core_demo/libraries/zf_device/zf_device_type.h
index 6c2b8da..4f8ec53 100644
--- a/Example/E13_dual_core_demo/libraries/zf_device/zf_device_type.h
+++ b/Example/E13_dual_core_demo/libraries/zf_device/zf_device_type.h
@@ -54,6 +54,7 @@ typedef enum
{
NO_WIRELESS = 0, // 无设备
WIRELESS_UART, // 无线串口
+ BLE6A20, // 蓝牙串口
BLUETOOTH_CH9141, // 蓝牙 CH9141
WIFI_UART, // 串口 WiFi
RECEIVER_UART, // 枪式遥控器
diff --git a/Example/E13_dual_core_demo/libraries/zf_device/澶栬鏂囦欢璇存槑.txt b/Example/E13_dual_core_demo/libraries/zf_device/澶栬鏂囦欢璇存槑.txt
new file mode 100644
index 0000000..1c96965
--- /dev/null
+++ b/Example/E13_dual_core_demo/libraries/zf_device/澶栬鏂囦欢璇存槑.txt
@@ -0,0 +1,97 @@
+
+如需获取详细资料可联系淘宝店铺客服:https://seekfree.taobao.com/
+如需获取详细资料可联系淘宝店铺客服:https://seekfree.taobao.com/
+如需获取详细资料可联系淘宝店铺客服:https://seekfree.taobao.com/
+
+本文件主要用于说明 zf_device 目录下各个文件所对应的外设模块
+本文件主要用于说明 zf_device 目录下各个文件所对应的外设模块
+本文件主要用于说明 zf_device 目录下各个文件所对应的外设模块
+
+
+=================================================== 测距模块 ===================================================
+
+zf_device_dl1a.h TOF 测距模块 DL1A 频率:33hz 最大距离:1.2 米
+
+zf_device_dl1b.h TOF 测距模块 DL1B 频率:100hz 最大距离:1.4 米
+
+=================================================== 测距模块 ===================================================
+
+
+
+==================================================== 陀螺仪 ====================================================
+
+zf_device_mpu6050.h MPU6050 六轴陀螺仪 传统 IIC 通讯
+
+zf_device_icm20602.h ICM20602 六轴陀螺仪 支持 SPI 采值
+
+zf_device_imu660ra.h IMU660RA 六轴陀螺仪 高精度陀螺仪
+
+zf_device_imu963ra.h IMU963RA 九轴陀螺仪 支持地磁计采集
+
+==================================================== 陀螺仪 ====================================================
+
+
+
+=================================================== 屏幕显示 ===================================================
+
+zf_device_ips114.h IPS114 液晶屏幕 1.14 寸 分辨率:240 * 135
+
+zf_device_ips200.h IPS200 液晶屏幕 2.0 寸 分辨率:240 * 320
+
+zf_device_tft180.h TFT180 屏幕 1.8寸 分辨率:160 * 128
+
+zf_device_oled.h OLED 液晶屏幕 0.96 寸 分辨率:128 * 64
+
+=================================================== 屏幕显示 ===================================================
+
+
+
+================================================== 图像传感器 ==================================================
+
+zf_device_mt9v03x.h MT9V03X 总钻风灰度摄像头
+
+zf_device_ov7725.h OV7725 小钻风硬件二值化摄像头
+
+zf_device_scc8660.h SCC8660 凌瞳彩色摄像头
+
+zf_device_tsl1401.h TSL1401 红孩儿线阵CCD
+
+================================================== 图像传感器 ==================================================
+
+
+
+=================================================== 无线通讯 ===================================================
+
+zf_device_ble6a20.h 蓝牙串口模块 无线通讯
+
+zf_device_bluetooth_ch9141.h CH9141 蓝牙通讯模块 蓝牙组网通讯
+
+zf_device_wifi_spi.h WIFI-SPI 高速WIFI无线通讯模块
+
+zf_device_wifi_uart.h WIFI-UART 串口WIFI无线通讯模块
+
+zf_device_wireless_uart.h 无线串口模块
+
+=================================================== 无线通讯 ===================================================
+
+
+
+=================================================== 远程遥控 ===================================================
+
+zf_device_uart_receiver.h SUBS 串口遥控器 串口通讯 长距离遥控 2.4G频段
+
+=================================================== 远程遥控 ===================================================
+
+
+
+================================================== 其他传感器 ==================================================
+
+zf_device_absolute_encoder.h 360° 位置传感器 绝对式迷你 mini 编码器 分辨率:0.088°
+
+zf_device_gnss.h GPS 及 RTK 定位模块 双频高精度定位模块 亚米级定位
+
+zf_device_key.h GPIO 按键驱动 用于检测主板按键状态
+
+zf_device_virtual_oscilloscope.h VisualScope 虚拟示波器
+
+================================================== 其他传感器 ==================================================
\ No newline at end of file
diff --git a/Example/E14_specifies_variable_or_code_location_demo/libraries/doc/version.txt b/Example/E14_specifies_variable_or_code_location_demo/libraries/doc/version.txt
index 68afc86..c4e0d0a 100644
--- a/Example/E14_specifies_variable_or_code_location_demo/libraries/doc/version.txt
+++ b/Example/E14_specifies_variable_or_code_location_demo/libraries/doc/version.txt
@@ -1,3 +1,5 @@
+V3.3.0
+ 新增蓝牙串口通讯模块
V3.2.13
新增一个微秒延时函数 该延时函数为普通延时 非中断延时
V3.2.12
diff --git a/Example/E14_specifies_variable_or_code_location_demo/libraries/zf_common/zf_common_headfile.h b/Example/E14_specifies_variable_or_code_location_demo/libraries/zf_common/zf_common_headfile.h
index c0d833b..3a140e3 100644
--- a/Example/E14_specifies_variable_or_code_location_demo/libraries/zf_common/zf_common_headfile.h
+++ b/Example/E14_specifies_variable_or_code_location_demo/libraries/zf_common/zf_common_headfile.h
@@ -81,6 +81,7 @@
//===================================================外接设备驱动层===================================================
#include "zf_device_absolute_encoder.h"
+#include "zf_device_ble6a20.h"
#include "zf_device_bluetooth_ch9141.h"
#include "zf_device_gnss.h"
#include "zf_device_camera.h"
diff --git a/Example/E14_specifies_variable_or_code_location_demo/libraries/zf_components/seekfree_assistant.c b/Example/E14_specifies_variable_or_code_location_demo/libraries/zf_components/seekfree_assistant.c
index 0b7cb9d..af3bb96 100644
--- a/Example/E14_specifies_variable_or_code_location_demo/libraries/zf_components/seekfree_assistant.c
+++ b/Example/E14_specifies_variable_or_code_location_demo/libraries/zf_components/seekfree_assistant.c
@@ -1,20 +1,20 @@
/*********************************************************************************************************************
-* RT1064DVL6A Opensourec Library 即(RT1064DVL6A 开源库)是一个基于官方 SDK 接口的第三方开源库
+* TC264 Opensourec Library 即(TC264 开源库)是一个基于官方 SDK 接口的第三方开源库
* Copyright (c) 2022 SEEKFREE 逐飞科技
-*
-* 本文件是 RT1064DVL6A 开源库的一部分
-*
-* RT1064DVL6A 开源库 是免费软件
+*
+* 本文件是 TC264 开源库的一部分
+*
+* TC264 开源库 是免费软件
* 您可以根据自由软件基金会发布的 GPL(GNU General Public License,即 GNU通用公共许可证)的条款
* 即 GPL 的第3版(即 GPL3.0)或(您选择的)任何后来的版本,重新发布和/或修改它
-*
+*
* 本开源库的发布是希望它能发挥作用,但并未对其作任何的保证
* 甚至没有隐含的适销性或适合特定用途的保证
* 更多细节请参见 GPL
-*
+*
* 您应该在收到本开源库的同时收到一份 GPL 的副本
* 如果没有,请参阅
-*
+*
* 额外注明:
* 本开源库使用 GPL3.0 开源许可证协议 以上许可申明为译文版本
* 许可申明英文版在 libraries/doc 文件夹下的 GPL3_permission_statement.txt 文件中
@@ -24,13 +24,13 @@
* 文件名称 seekfree_assistant
* 公司名称 成都逐飞科技有限公司
* 版本信息 查看 libraries/doc 文件夹内 version 文件 版本说明
-* 开发环境 IAR 8.32.4 or MDK 5.33
-* 适用平台 RT1064DVL6A
+* 开发环境 ADS v1.9.20
+* 适用平台 TC264D
* 店铺链接 https://seekfree.taobao.com/
-*
+*
* 修改记录
-* 日期 作者 备注
-* 2024-1-11 SeekFree first version
+* 日期 作者 备注
+* 2024-01-01 pudding first version
********************************************************************************************************************/
#include "zf_common_debug.h"
diff --git a/Example/E14_specifies_variable_or_code_location_demo/libraries/zf_components/seekfree_assistant.h b/Example/E14_specifies_variable_or_code_location_demo/libraries/zf_components/seekfree_assistant.h
index ae0f67c..5e04a1d 100644
--- a/Example/E14_specifies_variable_or_code_location_demo/libraries/zf_components/seekfree_assistant.h
+++ b/Example/E14_specifies_variable_or_code_location_demo/libraries/zf_components/seekfree_assistant.h
@@ -1,20 +1,20 @@
/*********************************************************************************************************************
-* RT1064DVL6A Opensourec Library 即(RT1064DVL6A 开源库)是一个基于官方 SDK 接口的第三方开源库
+* TC264 Opensourec Library 即(TC264 开源库)是一个基于官方 SDK 接口的第三方开源库
* Copyright (c) 2022 SEEKFREE 逐飞科技
-*
-* 本文件是 RT1064DVL6A 开源库的一部分
-*
-* RT1064DVL6A 开源库 是免费软件
+*
+* 本文件是 TC264 开源库的一部分
+*
+* TC264 开源库 是免费软件
* 您可以根据自由软件基金会发布的 GPL(GNU General Public License,即 GNU通用公共许可证)的条款
* 即 GPL 的第3版(即 GPL3.0)或(您选择的)任何后来的版本,重新发布和/或修改它
-*
+*
* 本开源库的发布是希望它能发挥作用,但并未对其作任何的保证
* 甚至没有隐含的适销性或适合特定用途的保证
* 更多细节请参见 GPL
-*
+*
* 您应该在收到本开源库的同时收到一份 GPL 的副本
* 如果没有,请参阅
-*
+*
* 额外注明:
* 本开源库使用 GPL3.0 开源许可证协议 以上许可申明为译文版本
* 许可申明英文版在 libraries/doc 文件夹下的 GPL3_permission_statement.txt 文件中
@@ -24,13 +24,13 @@
* 文件名称 seekfree_assistant
* 公司名称 成都逐飞科技有限公司
* 版本信息 查看 libraries/doc 文件夹内 version 文件 版本说明
-* 开发环境 IAR 8.32.4 or MDK 5.33
-* 适用平台 RT1064DVL6A
+* 开发环境 ADS v1.9.20
+* 适用平台 TC264D
* 店铺链接 https://seekfree.taobao.com/
-*
+*
* 修改记录
-* 日期 作者 备注
-* 2024-1-11 SeekFree first version
+* 日期 作者 备注
+* 2024-01-01 pudding first version
********************************************************************************************************************/
#ifndef _seekfree_assistant_h_
#define _seekfree_assistant_h_
@@ -47,27 +47,27 @@
// 定义接收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 )
diff --git a/Example/E14_specifies_variable_or_code_location_demo/libraries/zf_components/seekfree_assistant_interface.c b/Example/E14_specifies_variable_or_code_location_demo/libraries/zf_components/seekfree_assistant_interface.c
index fdade63..cc42e43 100644
--- a/Example/E14_specifies_variable_or_code_location_demo/libraries/zf_components/seekfree_assistant_interface.c
+++ b/Example/E14_specifies_variable_or_code_location_demo/libraries/zf_components/seekfree_assistant_interface.c
@@ -1,20 +1,20 @@
/*********************************************************************************************************************
-* RT1064DVL6A Opensourec Library 即(RT1064DVL6A 开源库)是一个基于官方 SDK 接口的第三方开源库
+* TC264 Opensourec Library 即(TC264 开源库)是一个基于官方 SDK 接口的第三方开源库
* Copyright (c) 2022 SEEKFREE 逐飞科技
-*
-* 本文件是 RT1064DVL6A 开源库的一部分
-*
-* RT1064DVL6A 开源库 是免费软件
+*
+* 本文件是 TC264 开源库的一部分
+*
+* TC264 开源库 是免费软件
* 您可以根据自由软件基金会发布的 GPL(GNU General Public License,即 GNU通用公共许可证)的条款
* 即 GPL 的第3版(即 GPL3.0)或(您选择的)任何后来的版本,重新发布和/或修改它
-*
+*
* 本开源库的发布是希望它能发挥作用,但并未对其作任何的保证
* 甚至没有隐含的适销性或适合特定用途的保证
* 更多细节请参见 GPL
-*
+*
* 您应该在收到本开源库的同时收到一份 GPL 的副本
* 如果没有,请参阅
-*
+*
* 额外注明:
* 本开源库使用 GPL3.0 开源许可证协议 以上许可申明为译文版本
* 许可申明英文版在 libraries/doc 文件夹下的 GPL3_permission_statement.txt 文件中
@@ -24,13 +24,13 @@
* 文件名称 seekfree_assistant_interface
* 公司名称 成都逐飞科技有限公司
* 版本信息 查看 libraries/doc 文件夹内 version 文件 版本说明
-* 开发环境 IAR 8.32.4 or MDK 5.33
-* 适用平台 RT1064DVL6A
+* 开发环境 ADS v1.9.20
+* 适用平台 TC264D
* 店铺链接 https://seekfree.taobao.com/
-*
+*
* 修改记录
-* 日期 作者 备注
-* 2024-1-11 SeekFree first version
+* 日期 作者 备注
+* 2024-01-01 pudding first version
********************************************************************************************************************/
#include "zf_common_typedef.h"
@@ -38,6 +38,7 @@
#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"
@@ -100,6 +101,12 @@ ZF_WEAK void seekfree_assistant_interface_init (seekfree_assistant_transfer_devi
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;
diff --git a/Example/E14_specifies_variable_or_code_location_demo/libraries/zf_components/seekfree_assistant_interface.h b/Example/E14_specifies_variable_or_code_location_demo/libraries/zf_components/seekfree_assistant_interface.h
index 940b5f7..1d0158c 100644
--- a/Example/E14_specifies_variable_or_code_location_demo/libraries/zf_components/seekfree_assistant_interface.h
+++ b/Example/E14_specifies_variable_or_code_location_demo/libraries/zf_components/seekfree_assistant_interface.h
@@ -1,20 +1,20 @@
/*********************************************************************************************************************
-* RT1064DVL6A Opensourec Library 即(RT1064DVL6A 开源库)是一个基于官方 SDK 接口的第三方开源库
+* TC264 Opensourec Library 即(TC264 开源库)是一个基于官方 SDK 接口的第三方开源库
* Copyright (c) 2022 SEEKFREE 逐飞科技
-*
-* 本文件是 RT1064DVL6A 开源库的一部分
-*
-* RT1064DVL6A 开源库 是免费软件
+*
+* 本文件是 TC264 开源库的一部分
+*
+* TC264 开源库 是免费软件
* 您可以根据自由软件基金会发布的 GPL(GNU General Public License,即 GNU通用公共许可证)的条款
* 即 GPL 的第3版(即 GPL3.0)或(您选择的)任何后来的版本,重新发布和/或修改它
-*
+*
* 本开源库的发布是希望它能发挥作用,但并未对其作任何的保证
* 甚至没有隐含的适销性或适合特定用途的保证
* 更多细节请参见 GPL
-*
+*
* 您应该在收到本开源库的同时收到一份 GPL 的副本
* 如果没有,请参阅
-*
+*
* 额外注明:
* 本开源库使用 GPL3.0 开源许可证协议 以上许可申明为译文版本
* 许可申明英文版在 libraries/doc 文件夹下的 GPL3_permission_statement.txt 文件中
@@ -24,13 +24,13 @@
* 文件名称 seekfree_assistant_interface
* 公司名称 成都逐飞科技有限公司
* 版本信息 查看 libraries/doc 文件夹内 version 文件 版本说明
-* 开发环境 IAR 8.32.4 or MDK 5.33
-* 适用平台 RT1064DVL6A
+* 开发环境 ADS v1.9.20
+* 适用平台 TC264D
* 店铺链接 https://seekfree.taobao.com/
-*
+*
* 修改记录
-* 日期 作者 备注
-* 2024-1-11 SeekFree first version
+* 日期 作者 备注
+* 2024-01-01 pudding first version
********************************************************************************************************************/
#ifndef _seekfree_assistant_interface_h_
@@ -43,6 +43,7 @@ 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
diff --git a/Example/E14_specifies_variable_or_code_location_demo/libraries/zf_device/zf_device_ble6a20.c b/Example/E14_specifies_variable_or_code_location_demo/libraries/zf_device/zf_device_ble6a20.c
new file mode 100644
index 0000000..ea8649e
--- /dev/null
+++ b/Example/E14_specifies_variable_or_code_location_demo/libraries/zf_device/zf_device_ble6a20.c
@@ -0,0 +1,299 @@
+/*********************************************************************************************************************
+* TC264 Opensourec Library 即(TC264 开源库)是一个基于官方 SDK 接口的第三方开源库
+* Copyright (c) 2022 SEEKFREE 逐飞科技
+*
+* 本文件是 TC264 开源库的一部分
+*
+* TC264 开源库 是免费软件
+* 您可以根据自由软件基金会发布的 GPL(GNU General Public License,即 GNU通用公共许可证)的条款
+* 即 GPL 的第3版(即 GPL3.0)或(您选择的)任何后来的版本,重新发布和/或修改它
+*
+* 本开源库的发布是希望它能发挥作用,但并未对其作任何的保证
+* 甚至没有隐含的适销性或适合特定用途的保证
+* 更多细节请参见 GPL
+*
+* 您应该在收到本开源库的同时收到一份 GPL 的副本
+* 如果没有,请参阅
+*
+* 额外注明:
+* 本开源库使用 GPL3.0 开源许可证协议 以上许可申明为译文版本
+* 许可申明英文版在 libraries/doc 文件夹下的 GPL3_permission_statement.txt 文件中
+* 许可证副本在 libraries 文件夹下 即该文件夹下的 LICENSE 文件
+* 欢迎各位使用并传播本程序 但修改内容时必须保留逐飞科技的版权声明(即本声明)
+*
+* 文件名称 zf_device_ble6a20
+* 公司名称 成都逐飞科技有限公司
+* 版本信息 查看 libraries/doc 文件夹内 version 文件 版本说明
+* 开发环境 ADS v1.9.20
+* 适用平台 TC264D
+* 店铺链接 https://seekfree.taobao.com/
+*
+* 修改记录
+* 日期 作者 备注
+* 2024-07-02 pudding first version
+********************************************************************************************************************/
+/*********************************************************************************************************************
+* 接线定义:
+* ------------------------------------
+* 模块管脚 单片机管脚
+* RX 查看 zf_device_ble6a20.h 中 BLE6A20_RX_PIN 宏定义
+* TX 查看 zf_device_ble6a20.h 中 BLE6A20_TX_PIN 宏定义
+* RTS 查看 zf_device_ble6a20.h 中 BLE6A20_RTS_PIN 宏定义
+* VCC 3.3V电源
+* GND 电源地
+* 其余引脚悬空
+* ------------------------------------
+*********************************************************************************************************************/
+
+#include "zf_common_clock.h"
+#include "zf_common_debug.h"
+#include "zf_common_fifo.h"
+#include "zf_driver_delay.h"
+#include "zf_driver_gpio.h"
+#include "zf_driver_uart.h"
+#include "zf_device_type.h"
+#include "zf_device_ble6a20.h"
+
+static fifo_struct ble6a20_fifo;
+static uint8 ble6a20_buffer[BLE6A20_BUFFER_SIZE];
+
+static uint8 ble6a20_data = 0;
+#if (1 == BLE6A20_AUTO_BAUD_RATE)
+static volatile ble6a20_auto_baudrate_state_enum ble6a20_auto_baud_flag = BLE6A20_AUTO_BAUD_RATE_INIT;
+static volatile uint8 ble6a20_auto_baud_data[3] = {0x00, 0x01, 0x03};
+#endif
+
+//-------------------------------------------------------------------------------------------------------------------
+// 函数简介 蓝牙转串口模块 发送数据
+// 参数说明 data 8bit 数据
+// 返回参数 uint32 剩余发送长度 0-发送完毕 1-未发送完成
+// 使用示例 ble6a20_send_byte(data);
+// 备注信息
+//-------------------------------------------------------------------------------------------------------------------
+uint32 ble6a20_send_byte (const uint8 data)
+{
+ uint16 time_count = BLE6A20_TIMEOUT_COUNT;
+ while(time_count)
+ {
+ if(!gpio_get_level(BLE6A20_RTS_PIN))
+ {
+ uart_write_byte(BLE6A20_INDEX, data); // 发送数据
+ break;
+ }
+ time_count --;
+ system_delay_ms(1);
+ }
+ return (0 == time_count);
+}
+
+//-------------------------------------------------------------------------------------------------------------------
+// 函数简介 蓝牙转串口模块 发送数据块
+// 参数说明 *buff 发送缓冲区
+// 参数说明 len 发送数据长度
+// 返回参数 uint32 剩余发送长度
+// 使用示例 ble6a20_send_buffer(buff, 64);
+// 备注信息
+//-------------------------------------------------------------------------------------------------------------------
+uint32 ble6a20_send_buffer (const uint8 *buff, uint32 len)
+{
+ zf_assert(NULL != buff);
+ uint16 time_count = 0;
+ while(0 != len)
+ {
+ if(!gpio_get_level(BLE6A20_RTS_PIN)) // 如果RTS为低电平 则继续发送数据
+ {
+ if(30 <= len) // 数据分 30byte 每包发送
+ {
+ uart_write_buffer(BLE6A20_INDEX, buff, 30); // 发送数据
+ buff += 30; // 地址偏移
+ len -= 30; // 数量
+ time_count = 0;
+ }
+ else // 不足 30byte 的数据一次性发送完毕
+ {
+ uart_write_buffer(BLE6A20_INDEX, buff, len); // 发送数据
+ len = 0;
+ break;
+ }
+ }
+ else // 如果RTS为高电平 则模块忙
+ {
+ if(BLE6A20_TIMEOUT_COUNT <= (++ time_count)) // 超出了最大等待时间
+ {
+ break; // 退出发送
+ }
+ system_delay_ms(1);
+ }
+ }
+ return len;
+}
+
+//-------------------------------------------------------------------------------------------------------------------
+// 函数简介 蓝牙转串口模块 发送字符串
+// 参数说明 *str 要发送的字符串地址
+// 返回参数 uint32 剩余发送长度
+// 使用示例 ble6a20_send_string("Believe in yourself.");
+// 备注信息
+//-------------------------------------------------------------------------------------------------------------------
+uint32 ble6a20_send_string (const char *str)
+{
+ zf_assert(NULL != str);
+ uint16 time_count = 0;
+ uint32 len = strlen(str);
+ while(0 != len)
+ {
+ if(!gpio_get_level(BLE6A20_RTS_PIN)) // 如果RTS为低电平 则继续发送数据
+ {
+ if(128 <= len) // 数据分 128byte 每包发送
+ {
+ uart_write_buffer(BLE6A20_INDEX, (const uint8 *)str, 128); // 发送数据
+ str += 128; // 地址偏移
+ len -= 128; // 数量
+ time_count = 0;
+ }
+ else // 不足 128byte 的数据一次性发送完毕
+ {
+ uart_write_buffer(BLE6A20_INDEX, (const uint8 *)str, len);// 发送数据
+ len = 0;
+ break;
+ }
+ }
+ else // 如果RTS为高电平 则模块忙
+ {
+ if(BLE6A20_TIMEOUT_COUNT <= (++ time_count)) // 超出了最大等待时间
+ {
+ break; // 退出发送
+ }
+ system_delay_ms(1);
+ }
+ }
+ return len;
+}
+
+//-------------------------------------------------------------------------------------------------------------------
+// 函数简介 蓝牙转串口模块 发送摄像头图像至上位机查看图像
+// 参数说明 *image_addr 需要发送的图像地址
+// 参数说明 image_size 图像的大小
+// 返回参数 void
+// 使用示例 ble6a20_send_image(&mt9v03x_image[0][0], MT9V03X_IMAGE_SIZE);
+// 备注信息
+//-------------------------------------------------------------------------------------------------------------------
+void ble6a20_send_image (const uint8 *image_addr, uint32 image_size)
+{
+ zf_assert(NULL != image_addr);
+ extern uint8 camera_send_image_frame_header[4];
+ ble6a20_send_buffer(camera_send_image_frame_header, 4);
+ ble6a20_send_buffer((uint8 *)image_addr, image_size);
+}
+
+//-------------------------------------------------------------------------------------------------------------------
+// 函数简介 蓝牙转串口模块 读取缓冲区数据
+// 参数说明 *buff 接收缓冲区
+// 参数说明 len 读取数据长度
+// 返回参数 uint32 实际读取数据长度
+// 使用示例 ble6a20_read_buffer(buff, 32);
+// 备注信息
+//-------------------------------------------------------------------------------------------------------------------
+uint32 ble6a20_read_buffer (uint8 *buff, uint32 len)
+{
+ zf_assert(NULL != buff);
+ uint32 data_len = len;
+ fifo_read_buffer(&ble6a20_fifo, buff, &data_len, FIFO_READ_AND_CLEAN);
+ return data_len;
+}
+
+//-------------------------------------------------------------------------------------------------------------------
+// 函数简介 蓝牙转串口模块 串口中断回调函数
+// 参数说明 void
+// 返回参数 void
+// 使用示例 ble6a20_callback();
+// 备注信息 该函数在 ISR 文件 串口中断程序被调用
+// 由串口中断服务函数调用 wireless_module_uart_handler() 函数
+// 再由 wireless_module_uart_handler() 函数调用本函数
+//-------------------------------------------------------------------------------------------------------------------
+void ble6a20_callback (void)
+{
+ if(uart_query_byte(BLE6A20_INDEX, &ble6a20_data))
+ {
+ fifo_write_buffer(&ble6a20_fifo, &ble6a20_data, 1);
+#if BLE6A20_AUTO_BAUD_RATE // 开启自动波特率
+ if(BLE6A20_AUTO_BAUD_RATE_START == ble6a20_auto_baud_flag && 3 == fifo_used(&ble6a20_fifo))
+ {
+ uint32 ble6a20_auto_baud_count = 3;
+ ble6a20_auto_baud_flag = BLE6A20_AUTO_BAUD_RATE_GET_ACK;
+ fifo_read_buffer(&ble6a20_fifo, (uint8 *)ble6a20_auto_baud_data, (uint32 *)&ble6a20_auto_baud_count, FIFO_READ_AND_CLEAN);
+ }
+#endif
+ }
+}
+
+//-------------------------------------------------------------------------------------------------------------------
+// 函数简介 蓝牙转串口模块 初始化
+// 参数说明 void
+// 返回参数 void
+// 使用示例 ble6a20_init();
+// 备注信息
+//-------------------------------------------------------------------------------------------------------------------
+uint8 ble6a20_init (void)
+{
+ uint8 return_state = 0;
+
+ // 等待模块初始化
+ system_delay_ms(50);
+
+ set_wireless_type(BLE6A20, ble6a20_callback);
+
+ fifo_init(&ble6a20_fifo, FIFO_DATA_8BIT, ble6a20_buffer, BLE6A20_BUFFER_SIZE);
+ gpio_init(BLE6A20_RTS_PIN, GPI, GPIO_HIGH, GPI_PULL_UP);
+#if(0 == BLE6A20_AUTO_BAUD_RATE) // 关闭自动波特率
+ // 本函数使用的波特率为115200 为蓝牙转串口模块的默认波特率 如需其他波特率请自行配置模块并修改串口的波特率
+ uart_init (BLE6A20_INDEX, BLE6A20_BUAD_RATE, BLE6A20_RX_PIN, BLE6A20_TX_PIN); // 初始化串口
+ uart_rx_interrupt(BLE6A20_INDEX, 1);
+#elif(1 == BLE6A20_AUTO_BAUD_RATE) // 开启自动波特率
+ uint8 rts_init_status = 0;
+
+ ble6a20_auto_baud_flag = BLE6A20_AUTO_BAUD_RATE_INIT;
+ ble6a20_auto_baud_data[0] = 0;
+ ble6a20_auto_baud_data[1] = 1;
+ ble6a20_auto_baud_data[2] = 3;
+
+ rts_init_status = gpio_get_level(BLE6A20_RTS_PIN);
+ gpio_init(BLE6A20_RTS_PIN, GPO, rts_init_status, GPO_PUSH_PULL); // 初始化流控引脚
+
+ uart_init (BLE6A20_INDEX, BLE6A20_BUAD_RATE, BLE6A20_RX_PIN, BLE6A20_TX_PIN); // 初始化串口
+ uart_rx_interrupt(BLE6A20_INDEX, 1);
+
+ system_delay_ms(5); // 模块上电之后需要延时等待
+ gpio_set_level(BLE6A20_RTS_PIN, !rts_init_status); // RTS引脚拉高,进入自动波特率模式
+ system_delay_ms(100); // RTS拉高之后必须延时20ms
+ gpio_toggle_level(BLE6A20_RTS_PIN); // RTS引脚取反
+
+ do
+ {
+ ble6a20_auto_baud_flag = BLE6A20_AUTO_BAUD_RATE_START;
+ uart_write_byte(BLE6A20_INDEX, ble6a20_auto_baud_data[0]); // 发送特定数据 用于模块自动判断波特率
+ uart_write_byte(BLE6A20_INDEX, ble6a20_auto_baud_data[1]); // 发送特定数据 用于模块自动判断波特率
+ uart_write_byte(BLE6A20_INDEX, ble6a20_auto_baud_data[2]); // 发送特定数据 用于模块自动判断波特率
+ system_delay_ms(20);
+
+ if(BLE6A20_AUTO_BAUD_RATE_GET_ACK != ble6a20_auto_baud_flag) // 检验自动波特率是否完成
+ {
+ return_state = 1; // 如果程序进入到此语句内 说明自动波特率失败了
+ break;
+ }
+
+ if( 0xa5 != ble6a20_auto_baud_data[0] && // 检验自动波特率是否正确
+ 0xff != ble6a20_auto_baud_data[1] && // 检验自动波特率是否正确
+ 0xff != ble6a20_auto_baud_data[2] ) // 检验自动波特率是否正确
+ {
+ return_state = 1; // 如果程序进入到此语句内 说明自动波特率失败了
+ break;
+ }
+ ble6a20_auto_baud_flag = BLE6A20_AUTO_BAUD_RATE_SUCCESS;
+
+ gpio_init(BLE6A20_RTS_PIN, GPI, 0, GPI_PULL_UP); // 初始化流控引脚
+ system_delay_ms(10); // 延时等待 模块准备就绪
+ }while(0);
+#endif
+ return return_state;
+}
diff --git a/Example/E14_specifies_variable_or_code_location_demo/libraries/zf_device/zf_device_ble6a20.h b/Example/E14_specifies_variable_or_code_location_demo/libraries/zf_device/zf_device_ble6a20.h
new file mode 100644
index 0000000..c037ea2
--- /dev/null
+++ b/Example/E14_specifies_variable_or_code_location_demo/libraries/zf_device/zf_device_ble6a20.h
@@ -0,0 +1,108 @@
+/*********************************************************************************************************************
+* TC264 Opensourec Library 即(TC264 开源库)是一个基于官方 SDK 接口的第三方开源库
+* Copyright (c) 2022 SEEKFREE 逐飞科技
+*
+* 本文件是 TC264 开源库的一部分
+*
+* TC264 开源库 是免费软件
+* 您可以根据自由软件基金会发布的 GPL(GNU General Public License,即 GNU通用公共许可证)的条款
+* 即 GPL 的第3版(即 GPL3.0)或(您选择的)任何后来的版本,重新发布和/或修改它
+*
+* 本开源库的发布是希望它能发挥作用,但并未对其作任何的保证
+* 甚至没有隐含的适销性或适合特定用途的保证
+* 更多细节请参见 GPL
+*
+* 您应该在收到本开源库的同时收到一份 GPL 的副本
+* 如果没有,请参阅
+*
+* 额外注明:
+* 本开源库使用 GPL3.0 开源许可证协议 以上许可申明为译文版本
+* 许可申明英文版在 libraries/doc 文件夹下的 GPL3_permission_statement.txt 文件中
+* 许可证副本在 libraries 文件夹下 即该文件夹下的 LICENSE 文件
+* 欢迎各位使用并传播本程序 但修改内容时必须保留逐飞科技的版权声明(即本声明)
+*
+* 文件名称 zf_device_ble6a20.h
+* 公司名称 成都逐飞科技有限公司
+* 版本信息 查看 libraries/doc 文件夹内 version 文件 版本说明
+* 开发环境 ADS v1.9.20
+* 适用平台 TC264D
+* 店铺链接 https://seekfree.taobao.com/
+*
+* 修改记录
+* 日期 作者 备注
+* 2024-07-02 pudding first version
+********************************************************************************************************************/
+/*********************************************************************************************************************
+* 接线定义:
+* ------------------------------------
+* 模块管脚 单片机管脚
+* RX 查看 zf_device_ble6a20.h 中 BLE6A20_RX_PIN 宏定义
+* TX 查看 zf_device_ble6a20.h 中 BLE6A20_TX_PIN 宏定义
+* RTS 查看 zf_device_ble6a20.h 中 BLE6A20_RTS_PIN 宏定义
+* VCC 3.3V电源
+* GND 电源地
+* 其余引脚悬空
+* ------------------------------------
+*********************************************************************************************************************/
+
+
+#ifndef _zf_device_ble6a20_h_
+#define _zf_device_ble6a20_h_
+
+#include "zf_common_typedef.h"
+
+
+//=================================================定义 蓝牙串口 基本配置================================================
+
+#define BLE6A20_INDEX (UART_2) // 蓝牙串口对应使用的串口号
+#define BLE6A20_BUAD_RATE (115200) // 蓝牙串口对应使用的串口波特率
+ // 波特率仅支持 9600 57600 115200 230400 460800 921600 1500000 2000000
+#define BLE6A20_TX_PIN (UART2_RX_P10_6) // 蓝牙串口对应模块的 TX 要接到单片机的 RX
+#define BLE6A20_RX_PIN (UART2_TX_P10_5) // 蓝牙串口对应模块的 RX 要接到单片机的 TX
+#define BLE6A20_RTS_PIN (P10_2) // 蓝牙串口对应模块的 RTS 引脚
+
+#define BLE6A20_BUFFER_SIZE ( 64 ) // 蓝牙串口缓冲区大小
+#define BLE6A20_TIMEOUT_COUNT ( 0x64 ) // 蓝牙串口通讯超时范围
+
+// ------------------------------------ 自动波特率 ------------------------------------
+// 注意事项1:开启自动波特率务必连接RTS引脚 否则会开启失败。
+// 注意事项2:模块自动波特率失败的话 可以尝试断电重启
+
+// 开启自动波特率务必阅读上面两条 注意事项
+// 开启自动波特率务必阅读上面两条 注意事项
+// 开启自动波特率务必阅读上面两条 注意事项
+
+// 0:关闭自动波特率
+// 1:开启自动波特率 自动波特率的作用是修改 BLE6A20_BAUD 之后不需要对模块进行配置 模块会自动设置为对应的波特率
+// 自动波特率仅支持 9600 57600 115200 230400 460800 921600 1500000 2000000
+
+#define BLE6A20_AUTO_BAUD_RATE ( 0 )
+
+#if (1 == BLE6A20_AUTO_BAUD_RATE)
+typedef enum
+{
+ BLE6A20_AUTO_BAUD_RATE_SUCCESS,
+ BLE6A20_AUTO_BAUD_RATE_INIT,
+ BLE6A20_AUTO_BAUD_RATE_START,
+ BLE6A20_AUTO_BAUD_RATE_GET_ACK,
+}ble6a20_auto_baudrate_state_enum;
+#endif
+// ------------------------------------ 自动波特率 ------------------------------------
+
+//=================================================定义 蓝牙串口 基本配置================================================
+
+
+//=================================================声明 蓝牙串口 基础函数================================================
+uint32 ble6a20_send_byte (const uint8 data); // 蓝牙转串口模块 发送数据
+uint32 ble6a20_send_buffer (const uint8 *buff, uint32 len); // 蓝牙转串口模块 发送数据块
+uint32 ble6a20_send_string (const char *str); // 蓝牙转串口模块 发送字符串
+void ble6a20_send_image (const uint8 *image_addr, uint32 image_size); // 蓝牙转串口模块 发送摄像头图像至上位机查看图像
+
+uint32 ble6a20_read_buffer (uint8 *buff, uint32 len); // 蓝牙转串口模块 读取缓冲区数据
+
+void ble6a20_callback (void); // 蓝牙转串口模块 串口中断回调函数
+
+uint8 ble6a20_init (void); // 蓝牙转串口模块 初始化
+//=================================================声明 蓝牙串口 基础函数================================================
+
+#endif
diff --git a/Example/E14_specifies_variable_or_code_location_demo/libraries/zf_device/zf_device_type.h b/Example/E14_specifies_variable_or_code_location_demo/libraries/zf_device/zf_device_type.h
index 6c2b8da..4f8ec53 100644
--- a/Example/E14_specifies_variable_or_code_location_demo/libraries/zf_device/zf_device_type.h
+++ b/Example/E14_specifies_variable_or_code_location_demo/libraries/zf_device/zf_device_type.h
@@ -54,6 +54,7 @@ typedef enum
{
NO_WIRELESS = 0, // 无设备
WIRELESS_UART, // 无线串口
+ BLE6A20, // 蓝牙串口
BLUETOOTH_CH9141, // 蓝牙 CH9141
WIFI_UART, // 串口 WiFi
RECEIVER_UART, // 枪式遥控器
diff --git a/Example/E14_specifies_variable_or_code_location_demo/libraries/zf_device/澶栬鏂囦欢璇存槑.txt b/Example/E14_specifies_variable_or_code_location_demo/libraries/zf_device/澶栬鏂囦欢璇存槑.txt
new file mode 100644
index 0000000..1c96965
--- /dev/null
+++ b/Example/E14_specifies_variable_or_code_location_demo/libraries/zf_device/澶栬鏂囦欢璇存槑.txt
@@ -0,0 +1,97 @@
+
+如需获取详细资料可联系淘宝店铺客服:https://seekfree.taobao.com/
+如需获取详细资料可联系淘宝店铺客服:https://seekfree.taobao.com/
+如需获取详细资料可联系淘宝店铺客服:https://seekfree.taobao.com/
+
+本文件主要用于说明 zf_device 目录下各个文件所对应的外设模块
+本文件主要用于说明 zf_device 目录下各个文件所对应的外设模块
+本文件主要用于说明 zf_device 目录下各个文件所对应的外设模块
+
+
+=================================================== 测距模块 ===================================================
+
+zf_device_dl1a.h TOF 测距模块 DL1A 频率:33hz 最大距离:1.2 米
+
+zf_device_dl1b.h TOF 测距模块 DL1B 频率:100hz 最大距离:1.4 米
+
+=================================================== 测距模块 ===================================================
+
+
+
+==================================================== 陀螺仪 ====================================================
+
+zf_device_mpu6050.h MPU6050 六轴陀螺仪 传统 IIC 通讯
+
+zf_device_icm20602.h ICM20602 六轴陀螺仪 支持 SPI 采值
+
+zf_device_imu660ra.h IMU660RA 六轴陀螺仪 高精度陀螺仪
+
+zf_device_imu963ra.h IMU963RA 九轴陀螺仪 支持地磁计采集
+
+==================================================== 陀螺仪 ====================================================
+
+
+
+=================================================== 屏幕显示 ===================================================
+
+zf_device_ips114.h IPS114 液晶屏幕 1.14 寸 分辨率:240 * 135
+
+zf_device_ips200.h IPS200 液晶屏幕 2.0 寸 分辨率:240 * 320
+
+zf_device_tft180.h TFT180 屏幕 1.8寸 分辨率:160 * 128
+
+zf_device_oled.h OLED 液晶屏幕 0.96 寸 分辨率:128 * 64
+
+=================================================== 屏幕显示 ===================================================
+
+
+
+================================================== 图像传感器 ==================================================
+
+zf_device_mt9v03x.h MT9V03X 总钻风灰度摄像头
+
+zf_device_ov7725.h OV7725 小钻风硬件二值化摄像头
+
+zf_device_scc8660.h SCC8660 凌瞳彩色摄像头
+
+zf_device_tsl1401.h TSL1401 红孩儿线阵CCD
+
+================================================== 图像传感器 ==================================================
+
+
+
+=================================================== 无线通讯 ===================================================
+
+zf_device_ble6a20.h 蓝牙串口模块 无线通讯
+
+zf_device_bluetooth_ch9141.h CH9141 蓝牙通讯模块 蓝牙组网通讯
+
+zf_device_wifi_spi.h WIFI-SPI 高速WIFI无线通讯模块
+
+zf_device_wifi_uart.h WIFI-UART 串口WIFI无线通讯模块
+
+zf_device_wireless_uart.h 无线串口模块
+
+=================================================== 无线通讯 ===================================================
+
+
+
+=================================================== 远程遥控 ===================================================
+
+zf_device_uart_receiver.h SUBS 串口遥控器 串口通讯 长距离遥控 2.4G频段
+
+=================================================== 远程遥控 ===================================================
+
+
+
+================================================== 其他传感器 ==================================================
+
+zf_device_absolute_encoder.h 360° 位置传感器 绝对式迷你 mini 编码器 分辨率:0.088°
+
+zf_device_gnss.h GPS 及 RTK 定位模块 双频高精度定位模块 亚米级定位
+
+zf_device_key.h GPIO 按键驱动 用于检测主板按键状态
+
+zf_device_virtual_oscilloscope.h VisualScope 虚拟示波器
+
+================================================== 其他传感器 ==================================================
\ No newline at end of file
diff --git a/Example/E15_fft_demo/libraries/doc/version.txt b/Example/E15_fft_demo/libraries/doc/version.txt
index 68afc86..c4e0d0a 100644
--- a/Example/E15_fft_demo/libraries/doc/version.txt
+++ b/Example/E15_fft_demo/libraries/doc/version.txt
@@ -1,3 +1,5 @@
+V3.3.0
+ 新增蓝牙串口通讯模块
V3.2.13
新增一个微秒延时函数 该延时函数为普通延时 非中断延时
V3.2.12
diff --git a/Example/E15_fft_demo/libraries/zf_common/zf_common_headfile.h b/Example/E15_fft_demo/libraries/zf_common/zf_common_headfile.h
index c0d833b..3a140e3 100644
--- a/Example/E15_fft_demo/libraries/zf_common/zf_common_headfile.h
+++ b/Example/E15_fft_demo/libraries/zf_common/zf_common_headfile.h
@@ -81,6 +81,7 @@
//===================================================外接设备驱动层===================================================
#include "zf_device_absolute_encoder.h"
+#include "zf_device_ble6a20.h"
#include "zf_device_bluetooth_ch9141.h"
#include "zf_device_gnss.h"
#include "zf_device_camera.h"
diff --git a/Example/E15_fft_demo/libraries/zf_components/seekfree_assistant.c b/Example/E15_fft_demo/libraries/zf_components/seekfree_assistant.c
index 0b7cb9d..af3bb96 100644
--- a/Example/E15_fft_demo/libraries/zf_components/seekfree_assistant.c
+++ b/Example/E15_fft_demo/libraries/zf_components/seekfree_assistant.c
@@ -1,20 +1,20 @@
/*********************************************************************************************************************
-* RT1064DVL6A Opensourec Library 即(RT1064DVL6A 开源库)是一个基于官方 SDK 接口的第三方开源库
+* TC264 Opensourec Library 即(TC264 开源库)是一个基于官方 SDK 接口的第三方开源库
* Copyright (c) 2022 SEEKFREE 逐飞科技
-*
-* 本文件是 RT1064DVL6A 开源库的一部分
-*
-* RT1064DVL6A 开源库 是免费软件
+*
+* 本文件是 TC264 开源库的一部分
+*
+* TC264 开源库 是免费软件
* 您可以根据自由软件基金会发布的 GPL(GNU General Public License,即 GNU通用公共许可证)的条款
* 即 GPL 的第3版(即 GPL3.0)或(您选择的)任何后来的版本,重新发布和/或修改它
-*
+*
* 本开源库的发布是希望它能发挥作用,但并未对其作任何的保证
* 甚至没有隐含的适销性或适合特定用途的保证
* 更多细节请参见 GPL
-*
+*
* 您应该在收到本开源库的同时收到一份 GPL 的副本
* 如果没有,请参阅
-*
+*
* 额外注明:
* 本开源库使用 GPL3.0 开源许可证协议 以上许可申明为译文版本
* 许可申明英文版在 libraries/doc 文件夹下的 GPL3_permission_statement.txt 文件中
@@ -24,13 +24,13 @@
* 文件名称 seekfree_assistant
* 公司名称 成都逐飞科技有限公司
* 版本信息 查看 libraries/doc 文件夹内 version 文件 版本说明
-* 开发环境 IAR 8.32.4 or MDK 5.33
-* 适用平台 RT1064DVL6A
+* 开发环境 ADS v1.9.20
+* 适用平台 TC264D
* 店铺链接 https://seekfree.taobao.com/
-*
+*
* 修改记录
-* 日期 作者 备注
-* 2024-1-11 SeekFree first version
+* 日期 作者 备注
+* 2024-01-01 pudding first version
********************************************************************************************************************/
#include "zf_common_debug.h"
diff --git a/Example/E15_fft_demo/libraries/zf_components/seekfree_assistant.h b/Example/E15_fft_demo/libraries/zf_components/seekfree_assistant.h
index ae0f67c..5e04a1d 100644
--- a/Example/E15_fft_demo/libraries/zf_components/seekfree_assistant.h
+++ b/Example/E15_fft_demo/libraries/zf_components/seekfree_assistant.h
@@ -1,20 +1,20 @@
/*********************************************************************************************************************
-* RT1064DVL6A Opensourec Library 即(RT1064DVL6A 开源库)是一个基于官方 SDK 接口的第三方开源库
+* TC264 Opensourec Library 即(TC264 开源库)是一个基于官方 SDK 接口的第三方开源库
* Copyright (c) 2022 SEEKFREE 逐飞科技
-*
-* 本文件是 RT1064DVL6A 开源库的一部分
-*
-* RT1064DVL6A 开源库 是免费软件
+*
+* 本文件是 TC264 开源库的一部分
+*
+* TC264 开源库 是免费软件
* 您可以根据自由软件基金会发布的 GPL(GNU General Public License,即 GNU通用公共许可证)的条款
* 即 GPL 的第3版(即 GPL3.0)或(您选择的)任何后来的版本,重新发布和/或修改它
-*
+*
* 本开源库的发布是希望它能发挥作用,但并未对其作任何的保证
* 甚至没有隐含的适销性或适合特定用途的保证
* 更多细节请参见 GPL
-*
+*
* 您应该在收到本开源库的同时收到一份 GPL 的副本
* 如果没有,请参阅
-*
+*
* 额外注明:
* 本开源库使用 GPL3.0 开源许可证协议 以上许可申明为译文版本
* 许可申明英文版在 libraries/doc 文件夹下的 GPL3_permission_statement.txt 文件中
@@ -24,13 +24,13 @@
* 文件名称 seekfree_assistant
* 公司名称 成都逐飞科技有限公司
* 版本信息 查看 libraries/doc 文件夹内 version 文件 版本说明
-* 开发环境 IAR 8.32.4 or MDK 5.33
-* 适用平台 RT1064DVL6A
+* 开发环境 ADS v1.9.20
+* 适用平台 TC264D
* 店铺链接 https://seekfree.taobao.com/
-*
+*
* 修改记录
-* 日期 作者 备注
-* 2024-1-11 SeekFree first version
+* 日期 作者 备注
+* 2024-01-01 pudding first version
********************************************************************************************************************/
#ifndef _seekfree_assistant_h_
#define _seekfree_assistant_h_
@@ -47,27 +47,27 @@
// 定义接收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 )
diff --git a/Example/E15_fft_demo/libraries/zf_components/seekfree_assistant_interface.c b/Example/E15_fft_demo/libraries/zf_components/seekfree_assistant_interface.c
index fdade63..cc42e43 100644
--- a/Example/E15_fft_demo/libraries/zf_components/seekfree_assistant_interface.c
+++ b/Example/E15_fft_demo/libraries/zf_components/seekfree_assistant_interface.c
@@ -1,20 +1,20 @@
/*********************************************************************************************************************
-* RT1064DVL6A Opensourec Library 即(RT1064DVL6A 开源库)是一个基于官方 SDK 接口的第三方开源库
+* TC264 Opensourec Library 即(TC264 开源库)是一个基于官方 SDK 接口的第三方开源库
* Copyright (c) 2022 SEEKFREE 逐飞科技
-*
-* 本文件是 RT1064DVL6A 开源库的一部分
-*
-* RT1064DVL6A 开源库 是免费软件
+*
+* 本文件是 TC264 开源库的一部分
+*
+* TC264 开源库 是免费软件
* 您可以根据自由软件基金会发布的 GPL(GNU General Public License,即 GNU通用公共许可证)的条款
* 即 GPL 的第3版(即 GPL3.0)或(您选择的)任何后来的版本,重新发布和/或修改它
-*
+*
* 本开源库的发布是希望它能发挥作用,但并未对其作任何的保证
* 甚至没有隐含的适销性或适合特定用途的保证
* 更多细节请参见 GPL
-*
+*
* 您应该在收到本开源库的同时收到一份 GPL 的副本
* 如果没有,请参阅
-*
+*
* 额外注明:
* 本开源库使用 GPL3.0 开源许可证协议 以上许可申明为译文版本
* 许可申明英文版在 libraries/doc 文件夹下的 GPL3_permission_statement.txt 文件中
@@ -24,13 +24,13 @@
* 文件名称 seekfree_assistant_interface
* 公司名称 成都逐飞科技有限公司
* 版本信息 查看 libraries/doc 文件夹内 version 文件 版本说明
-* 开发环境 IAR 8.32.4 or MDK 5.33
-* 适用平台 RT1064DVL6A
+* 开发环境 ADS v1.9.20
+* 适用平台 TC264D
* 店铺链接 https://seekfree.taobao.com/
-*
+*
* 修改记录
-* 日期 作者 备注
-* 2024-1-11 SeekFree first version
+* 日期 作者 备注
+* 2024-01-01 pudding first version
********************************************************************************************************************/
#include "zf_common_typedef.h"
@@ -38,6 +38,7 @@
#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"
@@ -100,6 +101,12 @@ ZF_WEAK void seekfree_assistant_interface_init (seekfree_assistant_transfer_devi
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;
diff --git a/Example/E15_fft_demo/libraries/zf_components/seekfree_assistant_interface.h b/Example/E15_fft_demo/libraries/zf_components/seekfree_assistant_interface.h
index 940b5f7..1d0158c 100644
--- a/Example/E15_fft_demo/libraries/zf_components/seekfree_assistant_interface.h
+++ b/Example/E15_fft_demo/libraries/zf_components/seekfree_assistant_interface.h
@@ -1,20 +1,20 @@
/*********************************************************************************************************************
-* RT1064DVL6A Opensourec Library 即(RT1064DVL6A 开源库)是一个基于官方 SDK 接口的第三方开源库
+* TC264 Opensourec Library 即(TC264 开源库)是一个基于官方 SDK 接口的第三方开源库
* Copyright (c) 2022 SEEKFREE 逐飞科技
-*
-* 本文件是 RT1064DVL6A 开源库的一部分
-*
-* RT1064DVL6A 开源库 是免费软件
+*
+* 本文件是 TC264 开源库的一部分
+*
+* TC264 开源库 是免费软件
* 您可以根据自由软件基金会发布的 GPL(GNU General Public License,即 GNU通用公共许可证)的条款
* 即 GPL 的第3版(即 GPL3.0)或(您选择的)任何后来的版本,重新发布和/或修改它
-*
+*
* 本开源库的发布是希望它能发挥作用,但并未对其作任何的保证
* 甚至没有隐含的适销性或适合特定用途的保证
* 更多细节请参见 GPL
-*
+*
* 您应该在收到本开源库的同时收到一份 GPL 的副本
* 如果没有,请参阅
-*
+*
* 额外注明:
* 本开源库使用 GPL3.0 开源许可证协议 以上许可申明为译文版本
* 许可申明英文版在 libraries/doc 文件夹下的 GPL3_permission_statement.txt 文件中
@@ -24,13 +24,13 @@
* 文件名称 seekfree_assistant_interface
* 公司名称 成都逐飞科技有限公司
* 版本信息 查看 libraries/doc 文件夹内 version 文件 版本说明
-* 开发环境 IAR 8.32.4 or MDK 5.33
-* 适用平台 RT1064DVL6A
+* 开发环境 ADS v1.9.20
+* 适用平台 TC264D
* 店铺链接 https://seekfree.taobao.com/
-*
+*
* 修改记录
-* 日期 作者 备注
-* 2024-1-11 SeekFree first version
+* 日期 作者 备注
+* 2024-01-01 pudding first version
********************************************************************************************************************/
#ifndef _seekfree_assistant_interface_h_
@@ -43,6 +43,7 @@ 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
diff --git a/Example/E15_fft_demo/libraries/zf_device/zf_device_ble6a20.c b/Example/E15_fft_demo/libraries/zf_device/zf_device_ble6a20.c
new file mode 100644
index 0000000..ea8649e
--- /dev/null
+++ b/Example/E15_fft_demo/libraries/zf_device/zf_device_ble6a20.c
@@ -0,0 +1,299 @@
+/*********************************************************************************************************************
+* TC264 Opensourec Library 即(TC264 开源库)是一个基于官方 SDK 接口的第三方开源库
+* Copyright (c) 2022 SEEKFREE 逐飞科技
+*
+* 本文件是 TC264 开源库的一部分
+*
+* TC264 开源库 是免费软件
+* 您可以根据自由软件基金会发布的 GPL(GNU General Public License,即 GNU通用公共许可证)的条款
+* 即 GPL 的第3版(即 GPL3.0)或(您选择的)任何后来的版本,重新发布和/或修改它
+*
+* 本开源库的发布是希望它能发挥作用,但并未对其作任何的保证
+* 甚至没有隐含的适销性或适合特定用途的保证
+* 更多细节请参见 GPL
+*
+* 您应该在收到本开源库的同时收到一份 GPL 的副本
+* 如果没有,请参阅
+*
+* 额外注明:
+* 本开源库使用 GPL3.0 开源许可证协议 以上许可申明为译文版本
+* 许可申明英文版在 libraries/doc 文件夹下的 GPL3_permission_statement.txt 文件中
+* 许可证副本在 libraries 文件夹下 即该文件夹下的 LICENSE 文件
+* 欢迎各位使用并传播本程序 但修改内容时必须保留逐飞科技的版权声明(即本声明)
+*
+* 文件名称 zf_device_ble6a20
+* 公司名称 成都逐飞科技有限公司
+* 版本信息 查看 libraries/doc 文件夹内 version 文件 版本说明
+* 开发环境 ADS v1.9.20
+* 适用平台 TC264D
+* 店铺链接 https://seekfree.taobao.com/
+*
+* 修改记录
+* 日期 作者 备注
+* 2024-07-02 pudding first version
+********************************************************************************************************************/
+/*********************************************************************************************************************
+* 接线定义:
+* ------------------------------------
+* 模块管脚 单片机管脚
+* RX 查看 zf_device_ble6a20.h 中 BLE6A20_RX_PIN 宏定义
+* TX 查看 zf_device_ble6a20.h 中 BLE6A20_TX_PIN 宏定义
+* RTS 查看 zf_device_ble6a20.h 中 BLE6A20_RTS_PIN 宏定义
+* VCC 3.3V电源
+* GND 电源地
+* 其余引脚悬空
+* ------------------------------------
+*********************************************************************************************************************/
+
+#include "zf_common_clock.h"
+#include "zf_common_debug.h"
+#include "zf_common_fifo.h"
+#include "zf_driver_delay.h"
+#include "zf_driver_gpio.h"
+#include "zf_driver_uart.h"
+#include "zf_device_type.h"
+#include "zf_device_ble6a20.h"
+
+static fifo_struct ble6a20_fifo;
+static uint8 ble6a20_buffer[BLE6A20_BUFFER_SIZE];
+
+static uint8 ble6a20_data = 0;
+#if (1 == BLE6A20_AUTO_BAUD_RATE)
+static volatile ble6a20_auto_baudrate_state_enum ble6a20_auto_baud_flag = BLE6A20_AUTO_BAUD_RATE_INIT;
+static volatile uint8 ble6a20_auto_baud_data[3] = {0x00, 0x01, 0x03};
+#endif
+
+//-------------------------------------------------------------------------------------------------------------------
+// 函数简介 蓝牙转串口模块 发送数据
+// 参数说明 data 8bit 数据
+// 返回参数 uint32 剩余发送长度 0-发送完毕 1-未发送完成
+// 使用示例 ble6a20_send_byte(data);
+// 备注信息
+//-------------------------------------------------------------------------------------------------------------------
+uint32 ble6a20_send_byte (const uint8 data)
+{
+ uint16 time_count = BLE6A20_TIMEOUT_COUNT;
+ while(time_count)
+ {
+ if(!gpio_get_level(BLE6A20_RTS_PIN))
+ {
+ uart_write_byte(BLE6A20_INDEX, data); // 发送数据
+ break;
+ }
+ time_count --;
+ system_delay_ms(1);
+ }
+ return (0 == time_count);
+}
+
+//-------------------------------------------------------------------------------------------------------------------
+// 函数简介 蓝牙转串口模块 发送数据块
+// 参数说明 *buff 发送缓冲区
+// 参数说明 len 发送数据长度
+// 返回参数 uint32 剩余发送长度
+// 使用示例 ble6a20_send_buffer(buff, 64);
+// 备注信息
+//-------------------------------------------------------------------------------------------------------------------
+uint32 ble6a20_send_buffer (const uint8 *buff, uint32 len)
+{
+ zf_assert(NULL != buff);
+ uint16 time_count = 0;
+ while(0 != len)
+ {
+ if(!gpio_get_level(BLE6A20_RTS_PIN)) // 如果RTS为低电平 则继续发送数据
+ {
+ if(30 <= len) // 数据分 30byte 每包发送
+ {
+ uart_write_buffer(BLE6A20_INDEX, buff, 30); // 发送数据
+ buff += 30; // 地址偏移
+ len -= 30; // 数量
+ time_count = 0;
+ }
+ else // 不足 30byte 的数据一次性发送完毕
+ {
+ uart_write_buffer(BLE6A20_INDEX, buff, len); // 发送数据
+ len = 0;
+ break;
+ }
+ }
+ else // 如果RTS为高电平 则模块忙
+ {
+ if(BLE6A20_TIMEOUT_COUNT <= (++ time_count)) // 超出了最大等待时间
+ {
+ break; // 退出发送
+ }
+ system_delay_ms(1);
+ }
+ }
+ return len;
+}
+
+//-------------------------------------------------------------------------------------------------------------------
+// 函数简介 蓝牙转串口模块 发送字符串
+// 参数说明 *str 要发送的字符串地址
+// 返回参数 uint32 剩余发送长度
+// 使用示例 ble6a20_send_string("Believe in yourself.");
+// 备注信息
+//-------------------------------------------------------------------------------------------------------------------
+uint32 ble6a20_send_string (const char *str)
+{
+ zf_assert(NULL != str);
+ uint16 time_count = 0;
+ uint32 len = strlen(str);
+ while(0 != len)
+ {
+ if(!gpio_get_level(BLE6A20_RTS_PIN)) // 如果RTS为低电平 则继续发送数据
+ {
+ if(128 <= len) // 数据分 128byte 每包发送
+ {
+ uart_write_buffer(BLE6A20_INDEX, (const uint8 *)str, 128); // 发送数据
+ str += 128; // 地址偏移
+ len -= 128; // 数量
+ time_count = 0;
+ }
+ else // 不足 128byte 的数据一次性发送完毕
+ {
+ uart_write_buffer(BLE6A20_INDEX, (const uint8 *)str, len);// 发送数据
+ len = 0;
+ break;
+ }
+ }
+ else // 如果RTS为高电平 则模块忙
+ {
+ if(BLE6A20_TIMEOUT_COUNT <= (++ time_count)) // 超出了最大等待时间
+ {
+ break; // 退出发送
+ }
+ system_delay_ms(1);
+ }
+ }
+ return len;
+}
+
+//-------------------------------------------------------------------------------------------------------------------
+// 函数简介 蓝牙转串口模块 发送摄像头图像至上位机查看图像
+// 参数说明 *image_addr 需要发送的图像地址
+// 参数说明 image_size 图像的大小
+// 返回参数 void
+// 使用示例 ble6a20_send_image(&mt9v03x_image[0][0], MT9V03X_IMAGE_SIZE);
+// 备注信息
+//-------------------------------------------------------------------------------------------------------------------
+void ble6a20_send_image (const uint8 *image_addr, uint32 image_size)
+{
+ zf_assert(NULL != image_addr);
+ extern uint8 camera_send_image_frame_header[4];
+ ble6a20_send_buffer(camera_send_image_frame_header, 4);
+ ble6a20_send_buffer((uint8 *)image_addr, image_size);
+}
+
+//-------------------------------------------------------------------------------------------------------------------
+// 函数简介 蓝牙转串口模块 读取缓冲区数据
+// 参数说明 *buff 接收缓冲区
+// 参数说明 len 读取数据长度
+// 返回参数 uint32 实际读取数据长度
+// 使用示例 ble6a20_read_buffer(buff, 32);
+// 备注信息
+//-------------------------------------------------------------------------------------------------------------------
+uint32 ble6a20_read_buffer (uint8 *buff, uint32 len)
+{
+ zf_assert(NULL != buff);
+ uint32 data_len = len;
+ fifo_read_buffer(&ble6a20_fifo, buff, &data_len, FIFO_READ_AND_CLEAN);
+ return data_len;
+}
+
+//-------------------------------------------------------------------------------------------------------------------
+// 函数简介 蓝牙转串口模块 串口中断回调函数
+// 参数说明 void
+// 返回参数 void
+// 使用示例 ble6a20_callback();
+// 备注信息 该函数在 ISR 文件 串口中断程序被调用
+// 由串口中断服务函数调用 wireless_module_uart_handler() 函数
+// 再由 wireless_module_uart_handler() 函数调用本函数
+//-------------------------------------------------------------------------------------------------------------------
+void ble6a20_callback (void)
+{
+ if(uart_query_byte(BLE6A20_INDEX, &ble6a20_data))
+ {
+ fifo_write_buffer(&ble6a20_fifo, &ble6a20_data, 1);
+#if BLE6A20_AUTO_BAUD_RATE // 开启自动波特率
+ if(BLE6A20_AUTO_BAUD_RATE_START == ble6a20_auto_baud_flag && 3 == fifo_used(&ble6a20_fifo))
+ {
+ uint32 ble6a20_auto_baud_count = 3;
+ ble6a20_auto_baud_flag = BLE6A20_AUTO_BAUD_RATE_GET_ACK;
+ fifo_read_buffer(&ble6a20_fifo, (uint8 *)ble6a20_auto_baud_data, (uint32 *)&ble6a20_auto_baud_count, FIFO_READ_AND_CLEAN);
+ }
+#endif
+ }
+}
+
+//-------------------------------------------------------------------------------------------------------------------
+// 函数简介 蓝牙转串口模块 初始化
+// 参数说明 void
+// 返回参数 void
+// 使用示例 ble6a20_init();
+// 备注信息
+//-------------------------------------------------------------------------------------------------------------------
+uint8 ble6a20_init (void)
+{
+ uint8 return_state = 0;
+
+ // 等待模块初始化
+ system_delay_ms(50);
+
+ set_wireless_type(BLE6A20, ble6a20_callback);
+
+ fifo_init(&ble6a20_fifo, FIFO_DATA_8BIT, ble6a20_buffer, BLE6A20_BUFFER_SIZE);
+ gpio_init(BLE6A20_RTS_PIN, GPI, GPIO_HIGH, GPI_PULL_UP);
+#if(0 == BLE6A20_AUTO_BAUD_RATE) // 关闭自动波特率
+ // 本函数使用的波特率为115200 为蓝牙转串口模块的默认波特率 如需其他波特率请自行配置模块并修改串口的波特率
+ uart_init (BLE6A20_INDEX, BLE6A20_BUAD_RATE, BLE6A20_RX_PIN, BLE6A20_TX_PIN); // 初始化串口
+ uart_rx_interrupt(BLE6A20_INDEX, 1);
+#elif(1 == BLE6A20_AUTO_BAUD_RATE) // 开启自动波特率
+ uint8 rts_init_status = 0;
+
+ ble6a20_auto_baud_flag = BLE6A20_AUTO_BAUD_RATE_INIT;
+ ble6a20_auto_baud_data[0] = 0;
+ ble6a20_auto_baud_data[1] = 1;
+ ble6a20_auto_baud_data[2] = 3;
+
+ rts_init_status = gpio_get_level(BLE6A20_RTS_PIN);
+ gpio_init(BLE6A20_RTS_PIN, GPO, rts_init_status, GPO_PUSH_PULL); // 初始化流控引脚
+
+ uart_init (BLE6A20_INDEX, BLE6A20_BUAD_RATE, BLE6A20_RX_PIN, BLE6A20_TX_PIN); // 初始化串口
+ uart_rx_interrupt(BLE6A20_INDEX, 1);
+
+ system_delay_ms(5); // 模块上电之后需要延时等待
+ gpio_set_level(BLE6A20_RTS_PIN, !rts_init_status); // RTS引脚拉高,进入自动波特率模式
+ system_delay_ms(100); // RTS拉高之后必须延时20ms
+ gpio_toggle_level(BLE6A20_RTS_PIN); // RTS引脚取反
+
+ do
+ {
+ ble6a20_auto_baud_flag = BLE6A20_AUTO_BAUD_RATE_START;
+ uart_write_byte(BLE6A20_INDEX, ble6a20_auto_baud_data[0]); // 发送特定数据 用于模块自动判断波特率
+ uart_write_byte(BLE6A20_INDEX, ble6a20_auto_baud_data[1]); // 发送特定数据 用于模块自动判断波特率
+ uart_write_byte(BLE6A20_INDEX, ble6a20_auto_baud_data[2]); // 发送特定数据 用于模块自动判断波特率
+ system_delay_ms(20);
+
+ if(BLE6A20_AUTO_BAUD_RATE_GET_ACK != ble6a20_auto_baud_flag) // 检验自动波特率是否完成
+ {
+ return_state = 1; // 如果程序进入到此语句内 说明自动波特率失败了
+ break;
+ }
+
+ if( 0xa5 != ble6a20_auto_baud_data[0] && // 检验自动波特率是否正确
+ 0xff != ble6a20_auto_baud_data[1] && // 检验自动波特率是否正确
+ 0xff != ble6a20_auto_baud_data[2] ) // 检验自动波特率是否正确
+ {
+ return_state = 1; // 如果程序进入到此语句内 说明自动波特率失败了
+ break;
+ }
+ ble6a20_auto_baud_flag = BLE6A20_AUTO_BAUD_RATE_SUCCESS;
+
+ gpio_init(BLE6A20_RTS_PIN, GPI, 0, GPI_PULL_UP); // 初始化流控引脚
+ system_delay_ms(10); // 延时等待 模块准备就绪
+ }while(0);
+#endif
+ return return_state;
+}
diff --git a/Example/E15_fft_demo/libraries/zf_device/zf_device_ble6a20.h b/Example/E15_fft_demo/libraries/zf_device/zf_device_ble6a20.h
new file mode 100644
index 0000000..c037ea2
--- /dev/null
+++ b/Example/E15_fft_demo/libraries/zf_device/zf_device_ble6a20.h
@@ -0,0 +1,108 @@
+/*********************************************************************************************************************
+* TC264 Opensourec Library 即(TC264 开源库)是一个基于官方 SDK 接口的第三方开源库
+* Copyright (c) 2022 SEEKFREE 逐飞科技
+*
+* 本文件是 TC264 开源库的一部分
+*
+* TC264 开源库 是免费软件
+* 您可以根据自由软件基金会发布的 GPL(GNU General Public License,即 GNU通用公共许可证)的条款
+* 即 GPL 的第3版(即 GPL3.0)或(您选择的)任何后来的版本,重新发布和/或修改它
+*
+* 本开源库的发布是希望它能发挥作用,但并未对其作任何的保证
+* 甚至没有隐含的适销性或适合特定用途的保证
+* 更多细节请参见 GPL
+*
+* 您应该在收到本开源库的同时收到一份 GPL 的副本
+* 如果没有,请参阅
+*
+* 额外注明:
+* 本开源库使用 GPL3.0 开源许可证协议 以上许可申明为译文版本
+* 许可申明英文版在 libraries/doc 文件夹下的 GPL3_permission_statement.txt 文件中
+* 许可证副本在 libraries 文件夹下 即该文件夹下的 LICENSE 文件
+* 欢迎各位使用并传播本程序 但修改内容时必须保留逐飞科技的版权声明(即本声明)
+*
+* 文件名称 zf_device_ble6a20.h
+* 公司名称 成都逐飞科技有限公司
+* 版本信息 查看 libraries/doc 文件夹内 version 文件 版本说明
+* 开发环境 ADS v1.9.20
+* 适用平台 TC264D
+* 店铺链接 https://seekfree.taobao.com/
+*
+* 修改记录
+* 日期 作者 备注
+* 2024-07-02 pudding first version
+********************************************************************************************************************/
+/*********************************************************************************************************************
+* 接线定义:
+* ------------------------------------
+* 模块管脚 单片机管脚
+* RX 查看 zf_device_ble6a20.h 中 BLE6A20_RX_PIN 宏定义
+* TX 查看 zf_device_ble6a20.h 中 BLE6A20_TX_PIN 宏定义
+* RTS 查看 zf_device_ble6a20.h 中 BLE6A20_RTS_PIN 宏定义
+* VCC 3.3V电源
+* GND 电源地
+* 其余引脚悬空
+* ------------------------------------
+*********************************************************************************************************************/
+
+
+#ifndef _zf_device_ble6a20_h_
+#define _zf_device_ble6a20_h_
+
+#include "zf_common_typedef.h"
+
+
+//=================================================定义 蓝牙串口 基本配置================================================
+
+#define BLE6A20_INDEX (UART_2) // 蓝牙串口对应使用的串口号
+#define BLE6A20_BUAD_RATE (115200) // 蓝牙串口对应使用的串口波特率
+ // 波特率仅支持 9600 57600 115200 230400 460800 921600 1500000 2000000
+#define BLE6A20_TX_PIN (UART2_RX_P10_6) // 蓝牙串口对应模块的 TX 要接到单片机的 RX
+#define BLE6A20_RX_PIN (UART2_TX_P10_5) // 蓝牙串口对应模块的 RX 要接到单片机的 TX
+#define BLE6A20_RTS_PIN (P10_2) // 蓝牙串口对应模块的 RTS 引脚
+
+#define BLE6A20_BUFFER_SIZE ( 64 ) // 蓝牙串口缓冲区大小
+#define BLE6A20_TIMEOUT_COUNT ( 0x64 ) // 蓝牙串口通讯超时范围
+
+// ------------------------------------ 自动波特率 ------------------------------------
+// 注意事项1:开启自动波特率务必连接RTS引脚 否则会开启失败。
+// 注意事项2:模块自动波特率失败的话 可以尝试断电重启
+
+// 开启自动波特率务必阅读上面两条 注意事项
+// 开启自动波特率务必阅读上面两条 注意事项
+// 开启自动波特率务必阅读上面两条 注意事项
+
+// 0:关闭自动波特率
+// 1:开启自动波特率 自动波特率的作用是修改 BLE6A20_BAUD 之后不需要对模块进行配置 模块会自动设置为对应的波特率
+// 自动波特率仅支持 9600 57600 115200 230400 460800 921600 1500000 2000000
+
+#define BLE6A20_AUTO_BAUD_RATE ( 0 )
+
+#if (1 == BLE6A20_AUTO_BAUD_RATE)
+typedef enum
+{
+ BLE6A20_AUTO_BAUD_RATE_SUCCESS,
+ BLE6A20_AUTO_BAUD_RATE_INIT,
+ BLE6A20_AUTO_BAUD_RATE_START,
+ BLE6A20_AUTO_BAUD_RATE_GET_ACK,
+}ble6a20_auto_baudrate_state_enum;
+#endif
+// ------------------------------------ 自动波特率 ------------------------------------
+
+//=================================================定义 蓝牙串口 基本配置================================================
+
+
+//=================================================声明 蓝牙串口 基础函数================================================
+uint32 ble6a20_send_byte (const uint8 data); // 蓝牙转串口模块 发送数据
+uint32 ble6a20_send_buffer (const uint8 *buff, uint32 len); // 蓝牙转串口模块 发送数据块
+uint32 ble6a20_send_string (const char *str); // 蓝牙转串口模块 发送字符串
+void ble6a20_send_image (const uint8 *image_addr, uint32 image_size); // 蓝牙转串口模块 发送摄像头图像至上位机查看图像
+
+uint32 ble6a20_read_buffer (uint8 *buff, uint32 len); // 蓝牙转串口模块 读取缓冲区数据
+
+void ble6a20_callback (void); // 蓝牙转串口模块 串口中断回调函数
+
+uint8 ble6a20_init (void); // 蓝牙转串口模块 初始化
+//=================================================声明 蓝牙串口 基础函数================================================
+
+#endif
diff --git a/Example/E15_fft_demo/libraries/zf_device/zf_device_type.h b/Example/E15_fft_demo/libraries/zf_device/zf_device_type.h
index 6c2b8da..4f8ec53 100644
--- a/Example/E15_fft_demo/libraries/zf_device/zf_device_type.h
+++ b/Example/E15_fft_demo/libraries/zf_device/zf_device_type.h
@@ -54,6 +54,7 @@ typedef enum
{
NO_WIRELESS = 0, // 无设备
WIRELESS_UART, // 无线串口
+ BLE6A20, // 蓝牙串口
BLUETOOTH_CH9141, // 蓝牙 CH9141
WIFI_UART, // 串口 WiFi
RECEIVER_UART, // 枪式遥控器
diff --git a/Example/E15_fft_demo/libraries/zf_device/澶栬鏂囦欢璇存槑.txt b/Example/E15_fft_demo/libraries/zf_device/澶栬鏂囦欢璇存槑.txt
new file mode 100644
index 0000000..1c96965
--- /dev/null
+++ b/Example/E15_fft_demo/libraries/zf_device/澶栬鏂囦欢璇存槑.txt
@@ -0,0 +1,97 @@
+
+如需获取详细资料可联系淘宝店铺客服:https://seekfree.taobao.com/
+如需获取详细资料可联系淘宝店铺客服:https://seekfree.taobao.com/
+如需获取详细资料可联系淘宝店铺客服:https://seekfree.taobao.com/
+
+本文件主要用于说明 zf_device 目录下各个文件所对应的外设模块
+本文件主要用于说明 zf_device 目录下各个文件所对应的外设模块
+本文件主要用于说明 zf_device 目录下各个文件所对应的外设模块
+
+
+=================================================== 测距模块 ===================================================
+
+zf_device_dl1a.h TOF 测距模块 DL1A 频率:33hz 最大距离:1.2 米
+
+zf_device_dl1b.h TOF 测距模块 DL1B 频率:100hz 最大距离:1.4 米
+
+=================================================== 测距模块 ===================================================
+
+
+
+==================================================== 陀螺仪 ====================================================
+
+zf_device_mpu6050.h MPU6050 六轴陀螺仪 传统 IIC 通讯
+
+zf_device_icm20602.h ICM20602 六轴陀螺仪 支持 SPI 采值
+
+zf_device_imu660ra.h IMU660RA 六轴陀螺仪 高精度陀螺仪
+
+zf_device_imu963ra.h IMU963RA 九轴陀螺仪 支持地磁计采集
+
+==================================================== 陀螺仪 ====================================================
+
+
+
+=================================================== 屏幕显示 ===================================================
+
+zf_device_ips114.h IPS114 液晶屏幕 1.14 寸 分辨率:240 * 135
+
+zf_device_ips200.h IPS200 液晶屏幕 2.0 寸 分辨率:240 * 320
+
+zf_device_tft180.h TFT180 屏幕 1.8寸 分辨率:160 * 128
+
+zf_device_oled.h OLED 液晶屏幕 0.96 寸 分辨率:128 * 64
+
+=================================================== 屏幕显示 ===================================================
+
+
+
+================================================== 图像传感器 ==================================================
+
+zf_device_mt9v03x.h MT9V03X 总钻风灰度摄像头
+
+zf_device_ov7725.h OV7725 小钻风硬件二值化摄像头
+
+zf_device_scc8660.h SCC8660 凌瞳彩色摄像头
+
+zf_device_tsl1401.h TSL1401 红孩儿线阵CCD
+
+================================================== 图像传感器 ==================================================
+
+
+
+=================================================== 无线通讯 ===================================================
+
+zf_device_ble6a20.h 蓝牙串口模块 无线通讯
+
+zf_device_bluetooth_ch9141.h CH9141 蓝牙通讯模块 蓝牙组网通讯
+
+zf_device_wifi_spi.h WIFI-SPI 高速WIFI无线通讯模块
+
+zf_device_wifi_uart.h WIFI-UART 串口WIFI无线通讯模块
+
+zf_device_wireless_uart.h 无线串口模块
+
+=================================================== 无线通讯 ===================================================
+
+
+
+=================================================== 远程遥控 ===================================================
+
+zf_device_uart_receiver.h SUBS 串口遥控器 串口通讯 长距离遥控 2.4G频段
+
+=================================================== 远程遥控 ===================================================
+
+
+
+================================================== 其他传感器 ==================================================
+
+zf_device_absolute_encoder.h 360° 位置传感器 绝对式迷你 mini 编码器 分辨率:0.088°
+
+zf_device_gnss.h GPS 及 RTK 定位模块 双频高精度定位模块 亚米级定位
+
+zf_device_key.h GPIO 按键驱动 用于检测主板按键状态
+
+zf_device_virtual_oscilloscope.h VisualScope 虚拟示波器
+
+================================================== 其他传感器 ==================================================
\ No newline at end of file
diff --git a/Seekfree_TC264_Opensource_Library/libraries/doc/version.txt b/Seekfree_TC264_Opensource_Library/libraries/doc/version.txt
index 68afc86..c4e0d0a 100644
--- a/Seekfree_TC264_Opensource_Library/libraries/doc/version.txt
+++ b/Seekfree_TC264_Opensource_Library/libraries/doc/version.txt
@@ -1,3 +1,5 @@
+V3.3.0
+ 新增蓝牙串口通讯模块
V3.2.13
新增一个微秒延时函数 该延时函数为普通延时 非中断延时
V3.2.12
diff --git a/Seekfree_TC264_Opensource_Library/libraries/zf_common/zf_common_headfile.h b/Seekfree_TC264_Opensource_Library/libraries/zf_common/zf_common_headfile.h
index c0d833b..3a140e3 100644
--- a/Seekfree_TC264_Opensource_Library/libraries/zf_common/zf_common_headfile.h
+++ b/Seekfree_TC264_Opensource_Library/libraries/zf_common/zf_common_headfile.h
@@ -81,6 +81,7 @@
//===================================================外接设备驱动层===================================================
#include "zf_device_absolute_encoder.h"
+#include "zf_device_ble6a20.h"
#include "zf_device_bluetooth_ch9141.h"
#include "zf_device_gnss.h"
#include "zf_device_camera.h"
diff --git a/Seekfree_TC264_Opensource_Library/libraries/zf_components/seekfree_assistant.c b/Seekfree_TC264_Opensource_Library/libraries/zf_components/seekfree_assistant.c
index 0b7cb9d..af3bb96 100644
--- a/Seekfree_TC264_Opensource_Library/libraries/zf_components/seekfree_assistant.c
+++ b/Seekfree_TC264_Opensource_Library/libraries/zf_components/seekfree_assistant.c
@@ -1,20 +1,20 @@
/*********************************************************************************************************************
-* RT1064DVL6A Opensourec Library 即(RT1064DVL6A 开源库)是一个基于官方 SDK 接口的第三方开源库
+* TC264 Opensourec Library 即(TC264 开源库)是一个基于官方 SDK 接口的第三方开源库
* Copyright (c) 2022 SEEKFREE 逐飞科技
-*
-* 本文件是 RT1064DVL6A 开源库的一部分
-*
-* RT1064DVL6A 开源库 是免费软件
+*
+* 本文件是 TC264 开源库的一部分
+*
+* TC264 开源库 是免费软件
* 您可以根据自由软件基金会发布的 GPL(GNU General Public License,即 GNU通用公共许可证)的条款
* 即 GPL 的第3版(即 GPL3.0)或(您选择的)任何后来的版本,重新发布和/或修改它
-*
+*
* 本开源库的发布是希望它能发挥作用,但并未对其作任何的保证
* 甚至没有隐含的适销性或适合特定用途的保证
* 更多细节请参见 GPL
-*
+*
* 您应该在收到本开源库的同时收到一份 GPL 的副本
* 如果没有,请参阅
-*
+*
* 额外注明:
* 本开源库使用 GPL3.0 开源许可证协议 以上许可申明为译文版本
* 许可申明英文版在 libraries/doc 文件夹下的 GPL3_permission_statement.txt 文件中
@@ -24,13 +24,13 @@
* 文件名称 seekfree_assistant
* 公司名称 成都逐飞科技有限公司
* 版本信息 查看 libraries/doc 文件夹内 version 文件 版本说明
-* 开发环境 IAR 8.32.4 or MDK 5.33
-* 适用平台 RT1064DVL6A
+* 开发环境 ADS v1.9.20
+* 适用平台 TC264D
* 店铺链接 https://seekfree.taobao.com/
-*
+*
* 修改记录
-* 日期 作者 备注
-* 2024-1-11 SeekFree first version
+* 日期 作者 备注
+* 2024-01-01 pudding first version
********************************************************************************************************************/
#include "zf_common_debug.h"
diff --git a/Seekfree_TC264_Opensource_Library/libraries/zf_components/seekfree_assistant.h b/Seekfree_TC264_Opensource_Library/libraries/zf_components/seekfree_assistant.h
index ae0f67c..5e04a1d 100644
--- a/Seekfree_TC264_Opensource_Library/libraries/zf_components/seekfree_assistant.h
+++ b/Seekfree_TC264_Opensource_Library/libraries/zf_components/seekfree_assistant.h
@@ -1,20 +1,20 @@
/*********************************************************************************************************************
-* RT1064DVL6A Opensourec Library 即(RT1064DVL6A 开源库)是一个基于官方 SDK 接口的第三方开源库
+* TC264 Opensourec Library 即(TC264 开源库)是一个基于官方 SDK 接口的第三方开源库
* Copyright (c) 2022 SEEKFREE 逐飞科技
-*
-* 本文件是 RT1064DVL6A 开源库的一部分
-*
-* RT1064DVL6A 开源库 是免费软件
+*
+* 本文件是 TC264 开源库的一部分
+*
+* TC264 开源库 是免费软件
* 您可以根据自由软件基金会发布的 GPL(GNU General Public License,即 GNU通用公共许可证)的条款
* 即 GPL 的第3版(即 GPL3.0)或(您选择的)任何后来的版本,重新发布和/或修改它
-*
+*
* 本开源库的发布是希望它能发挥作用,但并未对其作任何的保证
* 甚至没有隐含的适销性或适合特定用途的保证
* 更多细节请参见 GPL
-*
+*
* 您应该在收到本开源库的同时收到一份 GPL 的副本
* 如果没有,请参阅
-*
+*
* 额外注明:
* 本开源库使用 GPL3.0 开源许可证协议 以上许可申明为译文版本
* 许可申明英文版在 libraries/doc 文件夹下的 GPL3_permission_statement.txt 文件中
@@ -24,13 +24,13 @@
* 文件名称 seekfree_assistant
* 公司名称 成都逐飞科技有限公司
* 版本信息 查看 libraries/doc 文件夹内 version 文件 版本说明
-* 开发环境 IAR 8.32.4 or MDK 5.33
-* 适用平台 RT1064DVL6A
+* 开发环境 ADS v1.9.20
+* 适用平台 TC264D
* 店铺链接 https://seekfree.taobao.com/
-*
+*
* 修改记录
-* 日期 作者 备注
-* 2024-1-11 SeekFree first version
+* 日期 作者 备注
+* 2024-01-01 pudding first version
********************************************************************************************************************/
#ifndef _seekfree_assistant_h_
#define _seekfree_assistant_h_
@@ -47,27 +47,27 @@
// 定义接收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 )
diff --git a/Seekfree_TC264_Opensource_Library/libraries/zf_components/seekfree_assistant_interface.c b/Seekfree_TC264_Opensource_Library/libraries/zf_components/seekfree_assistant_interface.c
index fdade63..cc42e43 100644
--- a/Seekfree_TC264_Opensource_Library/libraries/zf_components/seekfree_assistant_interface.c
+++ b/Seekfree_TC264_Opensource_Library/libraries/zf_components/seekfree_assistant_interface.c
@@ -1,20 +1,20 @@
/*********************************************************************************************************************
-* RT1064DVL6A Opensourec Library 即(RT1064DVL6A 开源库)是一个基于官方 SDK 接口的第三方开源库
+* TC264 Opensourec Library 即(TC264 开源库)是一个基于官方 SDK 接口的第三方开源库
* Copyright (c) 2022 SEEKFREE 逐飞科技
-*
-* 本文件是 RT1064DVL6A 开源库的一部分
-*
-* RT1064DVL6A 开源库 是免费软件
+*
+* 本文件是 TC264 开源库的一部分
+*
+* TC264 开源库 是免费软件
* 您可以根据自由软件基金会发布的 GPL(GNU General Public License,即 GNU通用公共许可证)的条款
* 即 GPL 的第3版(即 GPL3.0)或(您选择的)任何后来的版本,重新发布和/或修改它
-*
+*
* 本开源库的发布是希望它能发挥作用,但并未对其作任何的保证
* 甚至没有隐含的适销性或适合特定用途的保证
* 更多细节请参见 GPL
-*
+*
* 您应该在收到本开源库的同时收到一份 GPL 的副本
* 如果没有,请参阅
-*
+*
* 额外注明:
* 本开源库使用 GPL3.0 开源许可证协议 以上许可申明为译文版本
* 许可申明英文版在 libraries/doc 文件夹下的 GPL3_permission_statement.txt 文件中
@@ -24,13 +24,13 @@
* 文件名称 seekfree_assistant_interface
* 公司名称 成都逐飞科技有限公司
* 版本信息 查看 libraries/doc 文件夹内 version 文件 版本说明
-* 开发环境 IAR 8.32.4 or MDK 5.33
-* 适用平台 RT1064DVL6A
+* 开发环境 ADS v1.9.20
+* 适用平台 TC264D
* 店铺链接 https://seekfree.taobao.com/
-*
+*
* 修改记录
-* 日期 作者 备注
-* 2024-1-11 SeekFree first version
+* 日期 作者 备注
+* 2024-01-01 pudding first version
********************************************************************************************************************/
#include "zf_common_typedef.h"
@@ -38,6 +38,7 @@
#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"
@@ -100,6 +101,12 @@ ZF_WEAK void seekfree_assistant_interface_init (seekfree_assistant_transfer_devi
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;
diff --git a/Seekfree_TC264_Opensource_Library/libraries/zf_components/seekfree_assistant_interface.h b/Seekfree_TC264_Opensource_Library/libraries/zf_components/seekfree_assistant_interface.h
index 940b5f7..1d0158c 100644
--- a/Seekfree_TC264_Opensource_Library/libraries/zf_components/seekfree_assistant_interface.h
+++ b/Seekfree_TC264_Opensource_Library/libraries/zf_components/seekfree_assistant_interface.h
@@ -1,20 +1,20 @@
/*********************************************************************************************************************
-* RT1064DVL6A Opensourec Library 即(RT1064DVL6A 开源库)是一个基于官方 SDK 接口的第三方开源库
+* TC264 Opensourec Library 即(TC264 开源库)是一个基于官方 SDK 接口的第三方开源库
* Copyright (c) 2022 SEEKFREE 逐飞科技
-*
-* 本文件是 RT1064DVL6A 开源库的一部分
-*
-* RT1064DVL6A 开源库 是免费软件
+*
+* 本文件是 TC264 开源库的一部分
+*
+* TC264 开源库 是免费软件
* 您可以根据自由软件基金会发布的 GPL(GNU General Public License,即 GNU通用公共许可证)的条款
* 即 GPL 的第3版(即 GPL3.0)或(您选择的)任何后来的版本,重新发布和/或修改它
-*
+*
* 本开源库的发布是希望它能发挥作用,但并未对其作任何的保证
* 甚至没有隐含的适销性或适合特定用途的保证
* 更多细节请参见 GPL
-*
+*
* 您应该在收到本开源库的同时收到一份 GPL 的副本
* 如果没有,请参阅
-*
+*
* 额外注明:
* 本开源库使用 GPL3.0 开源许可证协议 以上许可申明为译文版本
* 许可申明英文版在 libraries/doc 文件夹下的 GPL3_permission_statement.txt 文件中
@@ -24,13 +24,13 @@
* 文件名称 seekfree_assistant_interface
* 公司名称 成都逐飞科技有限公司
* 版本信息 查看 libraries/doc 文件夹内 version 文件 版本说明
-* 开发环境 IAR 8.32.4 or MDK 5.33
-* 适用平台 RT1064DVL6A
+* 开发环境 ADS v1.9.20
+* 适用平台 TC264D
* 店铺链接 https://seekfree.taobao.com/
-*
+*
* 修改记录
-* 日期 作者 备注
-* 2024-1-11 SeekFree first version
+* 日期 作者 备注
+* 2024-01-01 pudding first version
********************************************************************************************************************/
#ifndef _seekfree_assistant_interface_h_
@@ -43,6 +43,7 @@ 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
diff --git a/Seekfree_TC264_Opensource_Library/libraries/zf_device/zf_device_ble6a20.c b/Seekfree_TC264_Opensource_Library/libraries/zf_device/zf_device_ble6a20.c
new file mode 100644
index 0000000..ea8649e
--- /dev/null
+++ b/Seekfree_TC264_Opensource_Library/libraries/zf_device/zf_device_ble6a20.c
@@ -0,0 +1,299 @@
+/*********************************************************************************************************************
+* TC264 Opensourec Library 即(TC264 开源库)是一个基于官方 SDK 接口的第三方开源库
+* Copyright (c) 2022 SEEKFREE 逐飞科技
+*
+* 本文件是 TC264 开源库的一部分
+*
+* TC264 开源库 是免费软件
+* 您可以根据自由软件基金会发布的 GPL(GNU General Public License,即 GNU通用公共许可证)的条款
+* 即 GPL 的第3版(即 GPL3.0)或(您选择的)任何后来的版本,重新发布和/或修改它
+*
+* 本开源库的发布是希望它能发挥作用,但并未对其作任何的保证
+* 甚至没有隐含的适销性或适合特定用途的保证
+* 更多细节请参见 GPL
+*
+* 您应该在收到本开源库的同时收到一份 GPL 的副本
+* 如果没有,请参阅
+*
+* 额外注明:
+* 本开源库使用 GPL3.0 开源许可证协议 以上许可申明为译文版本
+* 许可申明英文版在 libraries/doc 文件夹下的 GPL3_permission_statement.txt 文件中
+* 许可证副本在 libraries 文件夹下 即该文件夹下的 LICENSE 文件
+* 欢迎各位使用并传播本程序 但修改内容时必须保留逐飞科技的版权声明(即本声明)
+*
+* 文件名称 zf_device_ble6a20
+* 公司名称 成都逐飞科技有限公司
+* 版本信息 查看 libraries/doc 文件夹内 version 文件 版本说明
+* 开发环境 ADS v1.9.20
+* 适用平台 TC264D
+* 店铺链接 https://seekfree.taobao.com/
+*
+* 修改记录
+* 日期 作者 备注
+* 2024-07-02 pudding first version
+********************************************************************************************************************/
+/*********************************************************************************************************************
+* 接线定义:
+* ------------------------------------
+* 模块管脚 单片机管脚
+* RX 查看 zf_device_ble6a20.h 中 BLE6A20_RX_PIN 宏定义
+* TX 查看 zf_device_ble6a20.h 中 BLE6A20_TX_PIN 宏定义
+* RTS 查看 zf_device_ble6a20.h 中 BLE6A20_RTS_PIN 宏定义
+* VCC 3.3V电源
+* GND 电源地
+* 其余引脚悬空
+* ------------------------------------
+*********************************************************************************************************************/
+
+#include "zf_common_clock.h"
+#include "zf_common_debug.h"
+#include "zf_common_fifo.h"
+#include "zf_driver_delay.h"
+#include "zf_driver_gpio.h"
+#include "zf_driver_uart.h"
+#include "zf_device_type.h"
+#include "zf_device_ble6a20.h"
+
+static fifo_struct ble6a20_fifo;
+static uint8 ble6a20_buffer[BLE6A20_BUFFER_SIZE];
+
+static uint8 ble6a20_data = 0;
+#if (1 == BLE6A20_AUTO_BAUD_RATE)
+static volatile ble6a20_auto_baudrate_state_enum ble6a20_auto_baud_flag = BLE6A20_AUTO_BAUD_RATE_INIT;
+static volatile uint8 ble6a20_auto_baud_data[3] = {0x00, 0x01, 0x03};
+#endif
+
+//-------------------------------------------------------------------------------------------------------------------
+// 函数简介 蓝牙转串口模块 发送数据
+// 参数说明 data 8bit 数据
+// 返回参数 uint32 剩余发送长度 0-发送完毕 1-未发送完成
+// 使用示例 ble6a20_send_byte(data);
+// 备注信息
+//-------------------------------------------------------------------------------------------------------------------
+uint32 ble6a20_send_byte (const uint8 data)
+{
+ uint16 time_count = BLE6A20_TIMEOUT_COUNT;
+ while(time_count)
+ {
+ if(!gpio_get_level(BLE6A20_RTS_PIN))
+ {
+ uart_write_byte(BLE6A20_INDEX, data); // 发送数据
+ break;
+ }
+ time_count --;
+ system_delay_ms(1);
+ }
+ return (0 == time_count);
+}
+
+//-------------------------------------------------------------------------------------------------------------------
+// 函数简介 蓝牙转串口模块 发送数据块
+// 参数说明 *buff 发送缓冲区
+// 参数说明 len 发送数据长度
+// 返回参数 uint32 剩余发送长度
+// 使用示例 ble6a20_send_buffer(buff, 64);
+// 备注信息
+//-------------------------------------------------------------------------------------------------------------------
+uint32 ble6a20_send_buffer (const uint8 *buff, uint32 len)
+{
+ zf_assert(NULL != buff);
+ uint16 time_count = 0;
+ while(0 != len)
+ {
+ if(!gpio_get_level(BLE6A20_RTS_PIN)) // 如果RTS为低电平 则继续发送数据
+ {
+ if(30 <= len) // 数据分 30byte 每包发送
+ {
+ uart_write_buffer(BLE6A20_INDEX, buff, 30); // 发送数据
+ buff += 30; // 地址偏移
+ len -= 30; // 数量
+ time_count = 0;
+ }
+ else // 不足 30byte 的数据一次性发送完毕
+ {
+ uart_write_buffer(BLE6A20_INDEX, buff, len); // 发送数据
+ len = 0;
+ break;
+ }
+ }
+ else // 如果RTS为高电平 则模块忙
+ {
+ if(BLE6A20_TIMEOUT_COUNT <= (++ time_count)) // 超出了最大等待时间
+ {
+ break; // 退出发送
+ }
+ system_delay_ms(1);
+ }
+ }
+ return len;
+}
+
+//-------------------------------------------------------------------------------------------------------------------
+// 函数简介 蓝牙转串口模块 发送字符串
+// 参数说明 *str 要发送的字符串地址
+// 返回参数 uint32 剩余发送长度
+// 使用示例 ble6a20_send_string("Believe in yourself.");
+// 备注信息
+//-------------------------------------------------------------------------------------------------------------------
+uint32 ble6a20_send_string (const char *str)
+{
+ zf_assert(NULL != str);
+ uint16 time_count = 0;
+ uint32 len = strlen(str);
+ while(0 != len)
+ {
+ if(!gpio_get_level(BLE6A20_RTS_PIN)) // 如果RTS为低电平 则继续发送数据
+ {
+ if(128 <= len) // 数据分 128byte 每包发送
+ {
+ uart_write_buffer(BLE6A20_INDEX, (const uint8 *)str, 128); // 发送数据
+ str += 128; // 地址偏移
+ len -= 128; // 数量
+ time_count = 0;
+ }
+ else // 不足 128byte 的数据一次性发送完毕
+ {
+ uart_write_buffer(BLE6A20_INDEX, (const uint8 *)str, len);// 发送数据
+ len = 0;
+ break;
+ }
+ }
+ else // 如果RTS为高电平 则模块忙
+ {
+ if(BLE6A20_TIMEOUT_COUNT <= (++ time_count)) // 超出了最大等待时间
+ {
+ break; // 退出发送
+ }
+ system_delay_ms(1);
+ }
+ }
+ return len;
+}
+
+//-------------------------------------------------------------------------------------------------------------------
+// 函数简介 蓝牙转串口模块 发送摄像头图像至上位机查看图像
+// 参数说明 *image_addr 需要发送的图像地址
+// 参数说明 image_size 图像的大小
+// 返回参数 void
+// 使用示例 ble6a20_send_image(&mt9v03x_image[0][0], MT9V03X_IMAGE_SIZE);
+// 备注信息
+//-------------------------------------------------------------------------------------------------------------------
+void ble6a20_send_image (const uint8 *image_addr, uint32 image_size)
+{
+ zf_assert(NULL != image_addr);
+ extern uint8 camera_send_image_frame_header[4];
+ ble6a20_send_buffer(camera_send_image_frame_header, 4);
+ ble6a20_send_buffer((uint8 *)image_addr, image_size);
+}
+
+//-------------------------------------------------------------------------------------------------------------------
+// 函数简介 蓝牙转串口模块 读取缓冲区数据
+// 参数说明 *buff 接收缓冲区
+// 参数说明 len 读取数据长度
+// 返回参数 uint32 实际读取数据长度
+// 使用示例 ble6a20_read_buffer(buff, 32);
+// 备注信息
+//-------------------------------------------------------------------------------------------------------------------
+uint32 ble6a20_read_buffer (uint8 *buff, uint32 len)
+{
+ zf_assert(NULL != buff);
+ uint32 data_len = len;
+ fifo_read_buffer(&ble6a20_fifo, buff, &data_len, FIFO_READ_AND_CLEAN);
+ return data_len;
+}
+
+//-------------------------------------------------------------------------------------------------------------------
+// 函数简介 蓝牙转串口模块 串口中断回调函数
+// 参数说明 void
+// 返回参数 void
+// 使用示例 ble6a20_callback();
+// 备注信息 该函数在 ISR 文件 串口中断程序被调用
+// 由串口中断服务函数调用 wireless_module_uart_handler() 函数
+// 再由 wireless_module_uart_handler() 函数调用本函数
+//-------------------------------------------------------------------------------------------------------------------
+void ble6a20_callback (void)
+{
+ if(uart_query_byte(BLE6A20_INDEX, &ble6a20_data))
+ {
+ fifo_write_buffer(&ble6a20_fifo, &ble6a20_data, 1);
+#if BLE6A20_AUTO_BAUD_RATE // 开启自动波特率
+ if(BLE6A20_AUTO_BAUD_RATE_START == ble6a20_auto_baud_flag && 3 == fifo_used(&ble6a20_fifo))
+ {
+ uint32 ble6a20_auto_baud_count = 3;
+ ble6a20_auto_baud_flag = BLE6A20_AUTO_BAUD_RATE_GET_ACK;
+ fifo_read_buffer(&ble6a20_fifo, (uint8 *)ble6a20_auto_baud_data, (uint32 *)&ble6a20_auto_baud_count, FIFO_READ_AND_CLEAN);
+ }
+#endif
+ }
+}
+
+//-------------------------------------------------------------------------------------------------------------------
+// 函数简介 蓝牙转串口模块 初始化
+// 参数说明 void
+// 返回参数 void
+// 使用示例 ble6a20_init();
+// 备注信息
+//-------------------------------------------------------------------------------------------------------------------
+uint8 ble6a20_init (void)
+{
+ uint8 return_state = 0;
+
+ // 等待模块初始化
+ system_delay_ms(50);
+
+ set_wireless_type(BLE6A20, ble6a20_callback);
+
+ fifo_init(&ble6a20_fifo, FIFO_DATA_8BIT, ble6a20_buffer, BLE6A20_BUFFER_SIZE);
+ gpio_init(BLE6A20_RTS_PIN, GPI, GPIO_HIGH, GPI_PULL_UP);
+#if(0 == BLE6A20_AUTO_BAUD_RATE) // 关闭自动波特率
+ // 本函数使用的波特率为115200 为蓝牙转串口模块的默认波特率 如需其他波特率请自行配置模块并修改串口的波特率
+ uart_init (BLE6A20_INDEX, BLE6A20_BUAD_RATE, BLE6A20_RX_PIN, BLE6A20_TX_PIN); // 初始化串口
+ uart_rx_interrupt(BLE6A20_INDEX, 1);
+#elif(1 == BLE6A20_AUTO_BAUD_RATE) // 开启自动波特率
+ uint8 rts_init_status = 0;
+
+ ble6a20_auto_baud_flag = BLE6A20_AUTO_BAUD_RATE_INIT;
+ ble6a20_auto_baud_data[0] = 0;
+ ble6a20_auto_baud_data[1] = 1;
+ ble6a20_auto_baud_data[2] = 3;
+
+ rts_init_status = gpio_get_level(BLE6A20_RTS_PIN);
+ gpio_init(BLE6A20_RTS_PIN, GPO, rts_init_status, GPO_PUSH_PULL); // 初始化流控引脚
+
+ uart_init (BLE6A20_INDEX, BLE6A20_BUAD_RATE, BLE6A20_RX_PIN, BLE6A20_TX_PIN); // 初始化串口
+ uart_rx_interrupt(BLE6A20_INDEX, 1);
+
+ system_delay_ms(5); // 模块上电之后需要延时等待
+ gpio_set_level(BLE6A20_RTS_PIN, !rts_init_status); // RTS引脚拉高,进入自动波特率模式
+ system_delay_ms(100); // RTS拉高之后必须延时20ms
+ gpio_toggle_level(BLE6A20_RTS_PIN); // RTS引脚取反
+
+ do
+ {
+ ble6a20_auto_baud_flag = BLE6A20_AUTO_BAUD_RATE_START;
+ uart_write_byte(BLE6A20_INDEX, ble6a20_auto_baud_data[0]); // 发送特定数据 用于模块自动判断波特率
+ uart_write_byte(BLE6A20_INDEX, ble6a20_auto_baud_data[1]); // 发送特定数据 用于模块自动判断波特率
+ uart_write_byte(BLE6A20_INDEX, ble6a20_auto_baud_data[2]); // 发送特定数据 用于模块自动判断波特率
+ system_delay_ms(20);
+
+ if(BLE6A20_AUTO_BAUD_RATE_GET_ACK != ble6a20_auto_baud_flag) // 检验自动波特率是否完成
+ {
+ return_state = 1; // 如果程序进入到此语句内 说明自动波特率失败了
+ break;
+ }
+
+ if( 0xa5 != ble6a20_auto_baud_data[0] && // 检验自动波特率是否正确
+ 0xff != ble6a20_auto_baud_data[1] && // 检验自动波特率是否正确
+ 0xff != ble6a20_auto_baud_data[2] ) // 检验自动波特率是否正确
+ {
+ return_state = 1; // 如果程序进入到此语句内 说明自动波特率失败了
+ break;
+ }
+ ble6a20_auto_baud_flag = BLE6A20_AUTO_BAUD_RATE_SUCCESS;
+
+ gpio_init(BLE6A20_RTS_PIN, GPI, 0, GPI_PULL_UP); // 初始化流控引脚
+ system_delay_ms(10); // 延时等待 模块准备就绪
+ }while(0);
+#endif
+ return return_state;
+}
diff --git a/Seekfree_TC264_Opensource_Library/libraries/zf_device/zf_device_ble6a20.h b/Seekfree_TC264_Opensource_Library/libraries/zf_device/zf_device_ble6a20.h
new file mode 100644
index 0000000..c037ea2
--- /dev/null
+++ b/Seekfree_TC264_Opensource_Library/libraries/zf_device/zf_device_ble6a20.h
@@ -0,0 +1,108 @@
+/*********************************************************************************************************************
+* TC264 Opensourec Library 即(TC264 开源库)是一个基于官方 SDK 接口的第三方开源库
+* Copyright (c) 2022 SEEKFREE 逐飞科技
+*
+* 本文件是 TC264 开源库的一部分
+*
+* TC264 开源库 是免费软件
+* 您可以根据自由软件基金会发布的 GPL(GNU General Public License,即 GNU通用公共许可证)的条款
+* 即 GPL 的第3版(即 GPL3.0)或(您选择的)任何后来的版本,重新发布和/或修改它
+*
+* 本开源库的发布是希望它能发挥作用,但并未对其作任何的保证
+* 甚至没有隐含的适销性或适合特定用途的保证
+* 更多细节请参见 GPL
+*
+* 您应该在收到本开源库的同时收到一份 GPL 的副本
+* 如果没有,请参阅
+*
+* 额外注明:
+* 本开源库使用 GPL3.0 开源许可证协议 以上许可申明为译文版本
+* 许可申明英文版在 libraries/doc 文件夹下的 GPL3_permission_statement.txt 文件中
+* 许可证副本在 libraries 文件夹下 即该文件夹下的 LICENSE 文件
+* 欢迎各位使用并传播本程序 但修改内容时必须保留逐飞科技的版权声明(即本声明)
+*
+* 文件名称 zf_device_ble6a20.h
+* 公司名称 成都逐飞科技有限公司
+* 版本信息 查看 libraries/doc 文件夹内 version 文件 版本说明
+* 开发环境 ADS v1.9.20
+* 适用平台 TC264D
+* 店铺链接 https://seekfree.taobao.com/
+*
+* 修改记录
+* 日期 作者 备注
+* 2024-07-02 pudding first version
+********************************************************************************************************************/
+/*********************************************************************************************************************
+* 接线定义:
+* ------------------------------------
+* 模块管脚 单片机管脚
+* RX 查看 zf_device_ble6a20.h 中 BLE6A20_RX_PIN 宏定义
+* TX 查看 zf_device_ble6a20.h 中 BLE6A20_TX_PIN 宏定义
+* RTS 查看 zf_device_ble6a20.h 中 BLE6A20_RTS_PIN 宏定义
+* VCC 3.3V电源
+* GND 电源地
+* 其余引脚悬空
+* ------------------------------------
+*********************************************************************************************************************/
+
+
+#ifndef _zf_device_ble6a20_h_
+#define _zf_device_ble6a20_h_
+
+#include "zf_common_typedef.h"
+
+
+//=================================================定义 蓝牙串口 基本配置================================================
+
+#define BLE6A20_INDEX (UART_2) // 蓝牙串口对应使用的串口号
+#define BLE6A20_BUAD_RATE (115200) // 蓝牙串口对应使用的串口波特率
+ // 波特率仅支持 9600 57600 115200 230400 460800 921600 1500000 2000000
+#define BLE6A20_TX_PIN (UART2_RX_P10_6) // 蓝牙串口对应模块的 TX 要接到单片机的 RX
+#define BLE6A20_RX_PIN (UART2_TX_P10_5) // 蓝牙串口对应模块的 RX 要接到单片机的 TX
+#define BLE6A20_RTS_PIN (P10_2) // 蓝牙串口对应模块的 RTS 引脚
+
+#define BLE6A20_BUFFER_SIZE ( 64 ) // 蓝牙串口缓冲区大小
+#define BLE6A20_TIMEOUT_COUNT ( 0x64 ) // 蓝牙串口通讯超时范围
+
+// ------------------------------------ 自动波特率 ------------------------------------
+// 注意事项1:开启自动波特率务必连接RTS引脚 否则会开启失败。
+// 注意事项2:模块自动波特率失败的话 可以尝试断电重启
+
+// 开启自动波特率务必阅读上面两条 注意事项
+// 开启自动波特率务必阅读上面两条 注意事项
+// 开启自动波特率务必阅读上面两条 注意事项
+
+// 0:关闭自动波特率
+// 1:开启自动波特率 自动波特率的作用是修改 BLE6A20_BAUD 之后不需要对模块进行配置 模块会自动设置为对应的波特率
+// 自动波特率仅支持 9600 57600 115200 230400 460800 921600 1500000 2000000
+
+#define BLE6A20_AUTO_BAUD_RATE ( 0 )
+
+#if (1 == BLE6A20_AUTO_BAUD_RATE)
+typedef enum
+{
+ BLE6A20_AUTO_BAUD_RATE_SUCCESS,
+ BLE6A20_AUTO_BAUD_RATE_INIT,
+ BLE6A20_AUTO_BAUD_RATE_START,
+ BLE6A20_AUTO_BAUD_RATE_GET_ACK,
+}ble6a20_auto_baudrate_state_enum;
+#endif
+// ------------------------------------ 自动波特率 ------------------------------------
+
+//=================================================定义 蓝牙串口 基本配置================================================
+
+
+//=================================================声明 蓝牙串口 基础函数================================================
+uint32 ble6a20_send_byte (const uint8 data); // 蓝牙转串口模块 发送数据
+uint32 ble6a20_send_buffer (const uint8 *buff, uint32 len); // 蓝牙转串口模块 发送数据块
+uint32 ble6a20_send_string (const char *str); // 蓝牙转串口模块 发送字符串
+void ble6a20_send_image (const uint8 *image_addr, uint32 image_size); // 蓝牙转串口模块 发送摄像头图像至上位机查看图像
+
+uint32 ble6a20_read_buffer (uint8 *buff, uint32 len); // 蓝牙转串口模块 读取缓冲区数据
+
+void ble6a20_callback (void); // 蓝牙转串口模块 串口中断回调函数
+
+uint8 ble6a20_init (void); // 蓝牙转串口模块 初始化
+//=================================================声明 蓝牙串口 基础函数================================================
+
+#endif
diff --git a/Seekfree_TC264_Opensource_Library/libraries/zf_device/zf_device_type.h b/Seekfree_TC264_Opensource_Library/libraries/zf_device/zf_device_type.h
index 6c2b8da..4f8ec53 100644
--- a/Seekfree_TC264_Opensource_Library/libraries/zf_device/zf_device_type.h
+++ b/Seekfree_TC264_Opensource_Library/libraries/zf_device/zf_device_type.h
@@ -54,6 +54,7 @@ typedef enum
{
NO_WIRELESS = 0, // 无设备
WIRELESS_UART, // 无线串口
+ BLE6A20, // 蓝牙串口
BLUETOOTH_CH9141, // 蓝牙 CH9141
WIFI_UART, // 串口 WiFi
RECEIVER_UART, // 枪式遥控器
diff --git a/Seekfree_TC264_Opensource_Library/libraries/zf_device/澶栬鏂囦欢璇存槑.txt b/Seekfree_TC264_Opensource_Library/libraries/zf_device/澶栬鏂囦欢璇存槑.txt
new file mode 100644
index 0000000..1c96965
--- /dev/null
+++ b/Seekfree_TC264_Opensource_Library/libraries/zf_device/澶栬鏂囦欢璇存槑.txt
@@ -0,0 +1,97 @@
+
+如需获取详细资料可联系淘宝店铺客服:https://seekfree.taobao.com/
+如需获取详细资料可联系淘宝店铺客服:https://seekfree.taobao.com/
+如需获取详细资料可联系淘宝店铺客服:https://seekfree.taobao.com/
+
+本文件主要用于说明 zf_device 目录下各个文件所对应的外设模块
+本文件主要用于说明 zf_device 目录下各个文件所对应的外设模块
+本文件主要用于说明 zf_device 目录下各个文件所对应的外设模块
+
+
+=================================================== 测距模块 ===================================================
+
+zf_device_dl1a.h TOF 测距模块 DL1A 频率:33hz 最大距离:1.2 米
+
+zf_device_dl1b.h TOF 测距模块 DL1B 频率:100hz 最大距离:1.4 米
+
+=================================================== 测距模块 ===================================================
+
+
+
+==================================================== 陀螺仪 ====================================================
+
+zf_device_mpu6050.h MPU6050 六轴陀螺仪 传统 IIC 通讯
+
+zf_device_icm20602.h ICM20602 六轴陀螺仪 支持 SPI 采值
+
+zf_device_imu660ra.h IMU660RA 六轴陀螺仪 高精度陀螺仪
+
+zf_device_imu963ra.h IMU963RA 九轴陀螺仪 支持地磁计采集
+
+==================================================== 陀螺仪 ====================================================
+
+
+
+=================================================== 屏幕显示 ===================================================
+
+zf_device_ips114.h IPS114 液晶屏幕 1.14 寸 分辨率:240 * 135
+
+zf_device_ips200.h IPS200 液晶屏幕 2.0 寸 分辨率:240 * 320
+
+zf_device_tft180.h TFT180 屏幕 1.8寸 分辨率:160 * 128
+
+zf_device_oled.h OLED 液晶屏幕 0.96 寸 分辨率:128 * 64
+
+=================================================== 屏幕显示 ===================================================
+
+
+
+================================================== 图像传感器 ==================================================
+
+zf_device_mt9v03x.h MT9V03X 总钻风灰度摄像头
+
+zf_device_ov7725.h OV7725 小钻风硬件二值化摄像头
+
+zf_device_scc8660.h SCC8660 凌瞳彩色摄像头
+
+zf_device_tsl1401.h TSL1401 红孩儿线阵CCD
+
+================================================== 图像传感器 ==================================================
+
+
+
+=================================================== 无线通讯 ===================================================
+
+zf_device_ble6a20.h 蓝牙串口模块 无线通讯
+
+zf_device_bluetooth_ch9141.h CH9141 蓝牙通讯模块 蓝牙组网通讯
+
+zf_device_wifi_spi.h WIFI-SPI 高速WIFI无线通讯模块
+
+zf_device_wifi_uart.h WIFI-UART 串口WIFI无线通讯模块
+
+zf_device_wireless_uart.h 无线串口模块
+
+=================================================== 无线通讯 ===================================================
+
+
+
+=================================================== 远程遥控 ===================================================
+
+zf_device_uart_receiver.h SUBS 串口遥控器 串口通讯 长距离遥控 2.4G频段
+
+=================================================== 远程遥控 ===================================================
+
+
+
+================================================== 其他传感器 ==================================================
+
+zf_device_absolute_encoder.h 360° 位置传感器 绝对式迷你 mini 编码器 分辨率:0.088°
+
+zf_device_gnss.h GPS 及 RTK 定位模块 双频高精度定位模块 亚米级定位
+
+zf_device_key.h GPIO 按键驱动 用于检测主板按键状态
+
+zf_device_virtual_oscilloscope.h VisualScope 虚拟示波器
+
+================================================== 其他传感器 ==================================================
\ No newline at end of file
diff --git a/Seekfree_TC264_Opensource_Library/user/cpu0_main.c b/Seekfree_TC264_Opensource_Library/user/cpu0_main.c
index 06c540d..c8dd53d 100644
--- a/Seekfree_TC264_Opensource_Library/user/cpu0_main.c
+++ b/Seekfree_TC264_Opensource_Library/user/cpu0_main.c
@@ -40,7 +40,6 @@
// 本例程是开源库空工程 可用作移植或者测试各类内外设
// 本例程是开源库空工程 可用作移植或者测试各类内外设
-
// **************************** 代码区域 ****************************
int core0_main(void)
{
@@ -59,7 +58,6 @@ int core0_main(void)
-
// 此处编写需要循环执行的代码
}
}
diff --git a/Seekfree_TC264_Opensource_Library/user/isr.c b/Seekfree_TC264_Opensource_Library/user/isr.c
index 125f6d4..17000a4 100644
--- a/Seekfree_TC264_Opensource_Library/user/isr.c
+++ b/Seekfree_TC264_Opensource_Library/user/isr.c
@@ -135,7 +135,6 @@ IFX_INTERRUPT(exti_ch1_ch5_isr, 0, EXTI_CH1_CH5_INT_PRIO)
// exti_flag_clear(ERU_CH6_REQ9_P20_0);
// }
// }
-
IFX_INTERRUPT(exti_ch3_ch7_isr, 0, EXTI_CH3_CH7_INT_PRIO)
{
interrupt_global_enable(0); // 开启中断嵌套