From eecf2e4eeef10c97569759d7c1b40817533ad1e7 Mon Sep 17 00:00:00 2001
From: SEEKFREE_BUDING <2289331269@qq.com>
Date: Wed, 25 Sep 2024 09:24:44 +0800
Subject: [PATCH] =?UTF-8?q?V3.3.0=20=20=20=20=20=20=20=20=20=E6=96=B0?=
=?UTF-8?q?=E5=A2=9E=E8=93=9D=E7=89=99=E4=B8=B2=E5=8F=A3=E9=80=9A=E8=AE=AF?=
=?UTF-8?q?=E6=A8=A1=E5=9D=97?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
Example/E01_gpio_demo/.cproject | 2 +-
.../E01_gpio_demo/libraries/doc/version.txt | 2 +
.../libraries/zf_common/zf_common_headfile.h | 1 +
.../zf_components/seekfree_assistant.c | 26 +-
.../zf_components/seekfree_assistant.h | 40 +--
.../seekfree_assistant_interface.c | 33 +-
.../seekfree_assistant_interface.h | 27 +-
.../libraries/zf_device/zf_device_ble6a20.c | 299 ++++++++++++++++++
.../libraries/zf_device/zf_device_ble6a20.h | 108 +++++++
.../libraries/zf_device/zf_device_type.h | 1 +
.../libraries/zf_device/外设文件说明.txt | 97 ++++++
Example/E01_gpio_demo/user/cpu0_main.c | 4 +-
.../E02_uart_demo/libraries/doc/version.txt | 2 +
.../libraries/zf_common/zf_common_headfile.h | 1 +
.../zf_components/seekfree_assistant.c | 26 +-
.../zf_components/seekfree_assistant.h | 40 +--
.../seekfree_assistant_interface.c | 33 +-
.../seekfree_assistant_interface.h | 27 +-
.../libraries/zf_device/zf_device_ble6a20.c | 299 ++++++++++++++++++
.../libraries/zf_device/zf_device_ble6a20.h | 108 +++++++
.../libraries/zf_device/zf_device_type.h | 1 +
.../libraries/zf_device/外设文件说明.txt | 97 ++++++
.../E03_adc_demo/libraries/doc/version.txt | 2 +
.../libraries/zf_common/zf_common_headfile.h | 1 +
.../zf_components/seekfree_assistant.c | 26 +-
.../zf_components/seekfree_assistant.h | 40 +--
.../seekfree_assistant_interface.c | 33 +-
.../seekfree_assistant_interface.h | 27 +-
.../libraries/zf_device/zf_device_ble6a20.c | 299 ++++++++++++++++++
.../libraries/zf_device/zf_device_ble6a20.h | 108 +++++++
.../libraries/zf_device/zf_device_type.h | 1 +
.../libraries/zf_device/外设文件说明.txt | 97 ++++++
.../E04_pwm_demo/libraries/doc/version.txt | 2 +
.../libraries/zf_common/zf_common_headfile.h | 1 +
.../zf_components/seekfree_assistant.c | 26 +-
.../zf_components/seekfree_assistant.h | 40 +--
.../seekfree_assistant_interface.c | 33 +-
.../seekfree_assistant_interface.h | 27 +-
.../libraries/zf_device/zf_device_ble6a20.c | 299 ++++++++++++++++++
.../libraries/zf_device/zf_device_ble6a20.h | 108 +++++++
.../libraries/zf_device/zf_device_type.h | 1 +
.../libraries/zf_device/外设文件说明.txt | 97 ++++++
.../E05_pit_demo/libraries/doc/version.txt | 2 +
.../libraries/zf_common/zf_common_headfile.h | 1 +
.../zf_components/seekfree_assistant.c | 26 +-
.../zf_components/seekfree_assistant.h | 40 +--
.../seekfree_assistant_interface.c | 33 +-
.../seekfree_assistant_interface.h | 27 +-
.../libraries/zf_device/zf_device_ble6a20.c | 299 ++++++++++++++++++
.../libraries/zf_device/zf_device_ble6a20.h | 108 +++++++
.../libraries/zf_device/zf_device_type.h | 1 +
.../libraries/zf_device/外设文件说明.txt | 97 ++++++
.../E06_exit_demo/libraries/doc/version.txt | 2 +
.../libraries/zf_common/zf_common_headfile.h | 1 +
.../zf_components/seekfree_assistant.c | 26 +-
.../zf_components/seekfree_assistant.h | 40 +--
.../seekfree_assistant_interface.c | 33 +-
.../seekfree_assistant_interface.h | 27 +-
.../libraries/zf_device/zf_device_ble6a20.c | 299 ++++++++++++++++++
.../libraries/zf_device/zf_device_ble6a20.h | 108 +++++++
.../libraries/zf_device/zf_device_type.h | 1 +
.../libraries/zf_device/外设文件说明.txt | 97 ++++++
.../libraries/doc/version.txt | 2 +
.../libraries/zf_common/zf_common_headfile.h | 1 +
.../zf_components/seekfree_assistant.c | 26 +-
.../zf_components/seekfree_assistant.h | 40 +--
.../seekfree_assistant_interface.c | 33 +-
.../seekfree_assistant_interface.h | 27 +-
.../libraries/zf_device/zf_device_ble6a20.c | 299 ++++++++++++++++++
.../libraries/zf_device/zf_device_ble6a20.h | 108 +++++++
.../libraries/zf_device/zf_device_type.h | 1 +
.../libraries/zf_device/外设文件说明.txt | 97 ++++++
.../E08_eeprom_demo/libraries/doc/version.txt | 2 +
.../libraries/zf_common/zf_common_headfile.h | 1 +
.../zf_components/seekfree_assistant.c | 26 +-
.../zf_components/seekfree_assistant.h | 40 +--
.../seekfree_assistant_interface.c | 33 +-
.../seekfree_assistant_interface.h | 27 +-
.../libraries/zf_device/zf_device_ble6a20.c | 299 ++++++++++++++++++
.../libraries/zf_device/zf_device_ble6a20.h | 108 +++++++
.../libraries/zf_device/zf_device_type.h | 1 +
.../libraries/zf_device/外设文件说明.txt | 97 ++++++
.../E09_timer_demo/libraries/doc/version.txt | 2 +
.../libraries/zf_common/zf_common_headfile.h | 1 +
.../zf_components/seekfree_assistant.c | 26 +-
.../zf_components/seekfree_assistant.h | 40 +--
.../seekfree_assistant_interface.c | 33 +-
.../seekfree_assistant_interface.h | 27 +-
.../libraries/zf_device/zf_device_ble6a20.c | 299 ++++++++++++++++++
.../libraries/zf_device/zf_device_ble6a20.h | 108 +++++++
.../libraries/zf_device/zf_device_type.h | 1 +
.../libraries/zf_device/外设文件说明.txt | 97 ++++++
.../libraries/doc/version.txt | 2 +
.../libraries/zf_common/zf_common_headfile.h | 1 +
.../zf_components/seekfree_assistant.c | 26 +-
.../zf_components/seekfree_assistant.h | 40 +--
.../seekfree_assistant_interface.c | 33 +-
.../seekfree_assistant_interface.h | 27 +-
.../libraries/zf_device/zf_device_ble6a20.c | 299 ++++++++++++++++++
.../libraries/zf_device/zf_device_ble6a20.h | 108 +++++++
.../libraries/zf_device/zf_device_type.h | 1 +
.../libraries/zf_device/外设文件说明.txt | 97 ++++++
.../libraries/doc/version.txt | 2 +
.../libraries/zf_common/zf_common_headfile.h | 1 +
.../zf_components/seekfree_assistant.c | 26 +-
.../zf_components/seekfree_assistant.h | 40 +--
.../seekfree_assistant_interface.c | 33 +-
.../seekfree_assistant_interface.h | 27 +-
.../libraries/zf_device/zf_device_ble6a20.c | 299 ++++++++++++++++++
.../libraries/zf_device/zf_device_ble6a20.h | 108 +++++++
.../libraries/zf_device/zf_device_type.h | 1 +
.../libraries/zf_device/外设文件说明.txt | 97 ++++++
.../libraries/doc/version.txt | 2 +
.../libraries/zf_common/zf_common_headfile.h | 1 +
.../zf_components/seekfree_assistant.c | 26 +-
.../zf_components/seekfree_assistant.h | 40 +--
.../seekfree_assistant_interface.c | 33 +-
.../seekfree_assistant_interface.h | 27 +-
.../libraries/zf_device/zf_device_ble6a20.c | 299 ++++++++++++++++++
.../libraries/zf_device/zf_device_ble6a20.h | 108 +++++++
.../libraries/zf_device/zf_device_type.h | 1 +
.../libraries/zf_device/外设文件说明.txt | 97 ++++++
.../libraries/doc/version.txt | 2 +
.../libraries/zf_common/zf_common_headfile.h | 1 +
.../zf_components/seekfree_assistant.c | 26 +-
.../zf_components/seekfree_assistant.h | 40 +--
.../seekfree_assistant_interface.c | 33 +-
.../seekfree_assistant_interface.h | 27 +-
.../libraries/zf_device/zf_device_ble6a20.c | 299 ++++++++++++++++++
.../libraries/zf_device/zf_device_ble6a20.h | 108 +++++++
.../libraries/zf_device/zf_device_type.h | 1 +
.../libraries/zf_device/外设文件说明.txt | 97 ++++++
.../libraries/doc/version.txt | 2 +
.../libraries/zf_common/zf_common_headfile.h | 1 +
.../zf_components/seekfree_assistant.c | 26 +-
.../zf_components/seekfree_assistant.h | 40 +--
.../seekfree_assistant_interface.c | 33 +-
.../seekfree_assistant_interface.h | 27 +-
.../libraries/zf_device/zf_device_ble6a20.c | 299 ++++++++++++++++++
.../libraries/zf_device/zf_device_ble6a20.h | 108 +++++++
.../libraries/zf_device/zf_device_type.h | 1 +
.../libraries/zf_device/外设文件说明.txt | 97 ++++++
.../E15_fft_demo/libraries/doc/version.txt | 2 +
.../libraries/zf_common/zf_common_headfile.h | 1 +
.../zf_components/seekfree_assistant.c | 26 +-
.../zf_components/seekfree_assistant.h | 40 +--
.../seekfree_assistant_interface.c | 33 +-
.../seekfree_assistant_interface.h | 27 +-
.../libraries/zf_device/zf_device_ble6a20.c | 299 ++++++++++++++++++
.../libraries/zf_device/zf_device_ble6a20.h | 108 +++++++
.../libraries/zf_device/zf_device_type.h | 1 +
.../libraries/zf_device/外设文件说明.txt | 97 ++++++
.../libraries/doc/version.txt | 2 +
.../libraries/zf_common/zf_common_headfile.h | 1 +
.../zf_components/seekfree_assistant.c | 26 +-
.../zf_components/seekfree_assistant.h | 40 +--
.../seekfree_assistant_interface.c | 33 +-
.../seekfree_assistant_interface.h | 27 +-
.../libraries/zf_device/zf_device_ble6a20.c | 299 ++++++++++++++++++
.../libraries/zf_device/zf_device_ble6a20.h | 108 +++++++
.../libraries/zf_device/zf_device_type.h | 1 +
.../libraries/zf_device/外设文件说明.txt | 97 ++++++
.../user/cpu0_main.c | 2 -
Seekfree_TC264_Opensource_Library/user/isr.c | 1 -
164 files changed, 9203 insertions(+), 950 deletions(-)
create mode 100644 Example/E01_gpio_demo/libraries/zf_device/zf_device_ble6a20.c
create mode 100644 Example/E01_gpio_demo/libraries/zf_device/zf_device_ble6a20.h
create mode 100644 Example/E01_gpio_demo/libraries/zf_device/外设文件说明.txt
create mode 100644 Example/E02_uart_demo/libraries/zf_device/zf_device_ble6a20.c
create mode 100644 Example/E02_uart_demo/libraries/zf_device/zf_device_ble6a20.h
create mode 100644 Example/E02_uart_demo/libraries/zf_device/外设文件说明.txt
create mode 100644 Example/E03_adc_demo/libraries/zf_device/zf_device_ble6a20.c
create mode 100644 Example/E03_adc_demo/libraries/zf_device/zf_device_ble6a20.h
create mode 100644 Example/E03_adc_demo/libraries/zf_device/外设文件说明.txt
create mode 100644 Example/E04_pwm_demo/libraries/zf_device/zf_device_ble6a20.c
create mode 100644 Example/E04_pwm_demo/libraries/zf_device/zf_device_ble6a20.h
create mode 100644 Example/E04_pwm_demo/libraries/zf_device/外设文件说明.txt
create mode 100644 Example/E05_pit_demo/libraries/zf_device/zf_device_ble6a20.c
create mode 100644 Example/E05_pit_demo/libraries/zf_device/zf_device_ble6a20.h
create mode 100644 Example/E05_pit_demo/libraries/zf_device/外设文件说明.txt
create mode 100644 Example/E06_exit_demo/libraries/zf_device/zf_device_ble6a20.c
create mode 100644 Example/E06_exit_demo/libraries/zf_device/zf_device_ble6a20.h
create mode 100644 Example/E06_exit_demo/libraries/zf_device/外设文件说明.txt
create mode 100644 Example/E07_encoder_demo/libraries/zf_device/zf_device_ble6a20.c
create mode 100644 Example/E07_encoder_demo/libraries/zf_device/zf_device_ble6a20.h
create mode 100644 Example/E07_encoder_demo/libraries/zf_device/外设文件说明.txt
create mode 100644 Example/E08_eeprom_demo/libraries/zf_device/zf_device_ble6a20.c
create mode 100644 Example/E08_eeprom_demo/libraries/zf_device/zf_device_ble6a20.h
create mode 100644 Example/E08_eeprom_demo/libraries/zf_device/外设文件说明.txt
create mode 100644 Example/E09_timer_demo/libraries/zf_device/zf_device_ble6a20.c
create mode 100644 Example/E09_timer_demo/libraries/zf_device/zf_device_ble6a20.h
create mode 100644 Example/E09_timer_demo/libraries/zf_device/外设文件说明.txt
create mode 100644 Example/E10_printf_debug_log_demo/libraries/zf_device/zf_device_ble6a20.c
create mode 100644 Example/E10_printf_debug_log_demo/libraries/zf_device/zf_device_ble6a20.h
create mode 100644 Example/E10_printf_debug_log_demo/libraries/zf_device/外设文件说明.txt
create mode 100644 Example/E11_interrupt_priority_set_demo/libraries/zf_device/zf_device_ble6a20.c
create mode 100644 Example/E11_interrupt_priority_set_demo/libraries/zf_device/zf_device_ble6a20.h
create mode 100644 Example/E11_interrupt_priority_set_demo/libraries/zf_device/外设文件说明.txt
create mode 100644 Example/E12_cpu1_handles_interrupts_demo/libraries/zf_device/zf_device_ble6a20.c
create mode 100644 Example/E12_cpu1_handles_interrupts_demo/libraries/zf_device/zf_device_ble6a20.h
create mode 100644 Example/E12_cpu1_handles_interrupts_demo/libraries/zf_device/外设文件说明.txt
create mode 100644 Example/E13_dual_core_demo/libraries/zf_device/zf_device_ble6a20.c
create mode 100644 Example/E13_dual_core_demo/libraries/zf_device/zf_device_ble6a20.h
create mode 100644 Example/E13_dual_core_demo/libraries/zf_device/外设文件说明.txt
create mode 100644 Example/E14_specifies_variable_or_code_location_demo/libraries/zf_device/zf_device_ble6a20.c
create mode 100644 Example/E14_specifies_variable_or_code_location_demo/libraries/zf_device/zf_device_ble6a20.h
create mode 100644 Example/E14_specifies_variable_or_code_location_demo/libraries/zf_device/外设文件说明.txt
create mode 100644 Example/E15_fft_demo/libraries/zf_device/zf_device_ble6a20.c
create mode 100644 Example/E15_fft_demo/libraries/zf_device/zf_device_ble6a20.h
create mode 100644 Example/E15_fft_demo/libraries/zf_device/外设文件说明.txt
create mode 100644 Seekfree_TC264_Opensource_Library/libraries/zf_device/zf_device_ble6a20.c
create mode 100644 Seekfree_TC264_Opensource_Library/libraries/zf_device/zf_device_ble6a20.h
create mode 100644 Seekfree_TC264_Opensource_Library/libraries/zf_device/外设文件说明.txt
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) // ¹Ø±Õ×Ô¶¯²¨ÌØÂÊ
+ // ±¾º¯ÊýʹÓõIJ¨ÌØÂÊΪ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(); // µÈ´ýËùÓкËÐijõʼ»¯Íê±Ï
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) // ¹Ø±Õ×Ô¶¯²¨ÌØÂÊ
+ // ±¾º¯ÊýʹÓõIJ¨ÌØÂÊΪ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) // ¹Ø±Õ×Ô¶¯²¨ÌØÂÊ
+ // ±¾º¯ÊýʹÓõIJ¨ÌØÂÊΪ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) // ¹Ø±Õ×Ô¶¯²¨ÌØÂÊ
+ // ±¾º¯ÊýʹÓõIJ¨ÌØÂÊΪ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) // ¹Ø±Õ×Ô¶¯²¨ÌØÂÊ
+ // ±¾º¯ÊýʹÓõIJ¨ÌØÂÊΪ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) // ¹Ø±Õ×Ô¶¯²¨ÌØÂÊ
+ // ±¾º¯ÊýʹÓõIJ¨ÌØÂÊΪ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) // ¹Ø±Õ×Ô¶¯²¨ÌØÂÊ
+ // ±¾º¯ÊýʹÓõIJ¨ÌØÂÊΪ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) // ¹Ø±Õ×Ô¶¯²¨ÌØÂÊ
+ // ±¾º¯ÊýʹÓõIJ¨ÌØÂÊΪ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) // ¹Ø±Õ×Ô¶¯²¨ÌØÂÊ
+ // ±¾º¯ÊýʹÓõIJ¨ÌØÂÊΪ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) // ¹Ø±Õ×Ô¶¯²¨ÌØÂÊ
+ // ±¾º¯ÊýʹÓõIJ¨ÌØÂÊΪ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) // ¹Ø±Õ×Ô¶¯²¨ÌØÂÊ
+ // ±¾º¯ÊýʹÓõIJ¨ÌØÂÊΪ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) // ¹Ø±Õ×Ô¶¯²¨ÌØÂÊ
+ // ±¾º¯ÊýʹÓõIJ¨ÌØÂÊΪ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) // ¹Ø±Õ×Ô¶¯²¨ÌØÂÊ
+ // ±¾º¯ÊýʹÓõIJ¨ÌØÂÊΪ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) // ¹Ø±Õ×Ô¶¯²¨ÌØÂÊ
+ // ±¾º¯ÊýʹÓõIJ¨ÌØÂÊΪ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) // ¹Ø±Õ×Ô¶¯²¨ÌØÂÊ
+ // ±¾º¯ÊýʹÓõIJ¨ÌØÂÊΪ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) // ¹Ø±Õ×Ô¶¯²¨ÌØÂÊ
+ // ±¾º¯ÊýʹÓõIJ¨ÌØÂÊΪ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); // ¿ªÆôÖжÏǶÌ×