Compare commits

95 Commits

Author SHA1 Message Date
JKS
0b8a0f194f 1 增加角度编码器例程,2 增加枪式遥控器例程,3逐飞助手库跟新V2,4 增加SCC8660部分例程 2026-05-22 11:06:32 +08:00
JKS
48b359292a 移除双摄库部分资料(双摄库资料单独仓库存放链接:https://gitee.com/seekfree/Seekfree_TC_DualCam_Opensource_Library) 2026-05-13 15:41:00 +08:00
TEK-YONGH\TEK-
e72b5889c3 添加V3.1原理图尺寸图 2026-05-13 09:50:40 +08:00
JKS
3bf885dd03 CCU60的CH0中断函数 2026-04-22 17:13:47 +08:00
JKS
4b0fe00e7d 修改wifi-spi驱动spi模式 2026-04-01 14:54:31 +08:00
JKS
e9b13809d7 增加btb核心板反面尺寸图 2026-03-16 11:31:21 +08:00
JKS
ec62060ac6 修改660RC外部中断初始化为宏定义 2026-03-10 16:57:03 +08:00
JKS
556f85922a 修改660RX定义错误 2026-03-09 18:11:21 +08:00
JKS
51f5ebb6ac 修改660rc默认为硬件SPI 2026-03-09 13:13:29 +08:00
JKS
34217f7f48 V3.4.5 增加660RC驱动 增加660RC例程· 2026-03-09 12:08:43 +08:00
JKS
16f479ccb6 V3.4.4 1更新WIFI_SPI驱动,2修改WIFI-SPI例程,3修改printf宏定义错误,4添加BTB主板负压电机例程 2026-02-27 16:18:36 +08:00
JKS
c637f1b310 增加BTB主板空工程说明 2026-01-26 09:55:56 +08:00
Seekfree_Xukang
dd0315ccc7 调整BTB核心板目录结构 2026-01-22 16:49:30 +08:00
JKS
6c29b09e1c 增加BTB核心板丝印位号图,尺寸图。 2026-01-22 14:59:37 +08:00
Seekfree_Xukang
9dd41b0c07 增加V3.5版本的核心板原理图、丝印图、尺寸图 2026-01-21 17:38:17 +08:00
Seekfree_Xukang
6dbba49dfa 增加缩微主板原理图 2025-12-29 12:30:32 +08:00
JKS
3dd42ec01f 增加BTB主板例程 2025-12-29 09:49:54 +08:00
Seekfree_Xukang
41e0a2668c 添加BTB版本核心板以及转接板原理图 2025-12-23 10:14:34 +08:00
TEK-TANYM\TEK
2fc1f8f9e2 V3.4.3
更新ips200pro驱动
        修改zf_device_config.h文件,解决自动曝光函数无效问题
        解决双摄例程报错
2025-09-09 11:38:27 +08:00
TEK-TANYM\TEK
87d775be9b V3.4.2:优化双摄库,掉帧不卡、修改串口发送数组函数中的发送条件、修改ips200pro注释、修改陀螺仪驱动文件相关函数 2025-08-12 17:23:42 +08:00
TEK-YONGH\TEK-
34fc754575 修改原理图bug 2025-08-08 14:01:06 +08:00
TEK-TANYM\TEK
a7a0cfa186 增加工程说明文档 2025-05-17 17:03:37 +08:00
TEK-TANYM\TEK
ea28e08f5f 优化主板例程库 2025-05-17 10:49:05 +08:00
TEK-TANYM\TEK
1a464e6dbe 增加双摄库 2025-05-01 19:02:16 +08:00
TEK-YONGH\TEK-
1826515668 添加双摄主板原理图 丝印图 尺寸图 位号图 2025-04-30 16:24:43 +08:00
SEEKFREE_BUDING
4311007f8e 更改部分注释 2025-04-21 16:55:20 +08:00
SEEKFREE_BUDING
906fbce543 V3.4.0
新增串口重定向组件,修改zf_components/printf_redirect.h文件内的宏定义即可修改printf输出
       优化串口通讯时序,以115200波特率为例,单次通讯将至多减少1.388ms耗时
       优化“AURIX修改工程名称.bat”工具,现在改名后会直接清理工程临时文件
       修复按键检测逻辑在特殊情况下存在异常的问题
2025-04-19 17:29:04 +08:00
SEEKFREE_BUDING
9bc98d3487 V3.4.0
新增串口重定向组件,修改zf_components/printf_redirect.h文件内的宏定义即可修改printf输出
       优化串口通讯时序,以115200波特率为例,单次通讯将至多减少1.388ms耗时
       优化“AURIX修改工程名称.bat”工具,现在改名后会直接清理工程临时文件
       修复按键检测逻辑在特殊情况下存在异常的问题
2025-04-19 17:23:58 +08:00
Seekfree_Xukang
f33a3cc975 更新IDE软件下载链接的验证码 2025-04-09 14:52:50 +08:00
TEK-TANYM\TEK
0f200a2285 删除主板原理图的无用文件 2025-03-24 18:01:37 +08:00
TEK-TANYM\TEK
34fa0565f0 新增660rx例程 2025-03-18 10:41:11 +08:00
TEK-TANYM\TEK
4841cccf34 V3.3.5 2025-03-18 10:19:00 +08:00
TEK-TANYM\TEK
55901d7b31 新增660rb和660rx库 2025-03-18 10:12:29 +08:00
SeekFree
2490f2c82a add 【软件】上位机 串口助手等/逐飞助手 submodule.
Signed-off-by: SeekFree <1325536866@qq.com>
2025-03-14 01:34:40 +00:00
TEK-TANYM\TEK
f3fae217bc 更新TC264核心板原理图 2025-03-12 15:19:26 +08:00
TEK-TANYM\TEK
94bff7e864 新增主板内容 2025-03-12 14:12:06 +08:00
SEEKFREE_BUDING
5eab42c679 V3.3.4
优化“AURIX修改工程名称.bat”工具,使用更加便捷
2025-02-10 11:52:25 +08:00
SEEKFREE_BUDING
e695e50444 V3.3.3
修正部分注释内容
2025-02-08 16:09:08 +08:00
SEEKFREE_BUDING
18b1f6d2c4 V3.3.2
新增zf_device_menc15a磁编码器外设驱动
        更改uart接收机部分语句
        修正SPI的16位通讯错位问题
        修正部分注释内容
2025-02-07 16:26:57 +08:00
SEEKFREE_BUDING
6d0a26bd9d V3.3.2
新增zf_device_menc15a磁编码器外设驱动
        更改uart接收机部分语句
        修正SPI的16位通讯错位问题
2025-02-07 16:06:42 +08:00
SEEKFREE_BUDING
197916283e V3.3.1
移除正交编码器的断言检测
        新增重命名工程工具
2024-12-19 12:33:11 +08:00
SEEKFREE_BUDING
eecf2e4eee V3.3.0
新增蓝牙串口通讯模块
2024-09-25 09:24:44 +08:00
SEEKFREE_BUDING
a64195a99a V3.2.13
新增一个微秒延时函数 该延时函数为普通延时 非中断延时
2024-06-21 17:24:15 +08:00
SEEKFREE_BUDING
4b6d5ad786 WIFI-SPI 默认端口号更改 2024-05-11 14:00:21 +08:00
SEEKFREE_BUDING
9c5194362e V3.2.12
修复核心1运行异常的问题
        修复凌瞳亮度调节函数名称异常的bug
        更正PWM初始化注释说明
2024-03-18 12:09:52 +08:00
SEEKFREE_BUDING
2252afbdc5 V3.2.12
修复核心1运行异常的问题
2024-03-15 15:12:09 +08:00
SEEKFREE_BUDING
146043d92e V3.2.11
修复凌瞳高帧率版画质噪点问题
        修复延时函数在多中断时可能异常的问题
2024-03-09 17:58:13 +08:00
SEEKFREE_BUDING
9a30f1ec33 V3.2.10
修复spi-wifi初始化失败的问题
        修复spi-wifi获取配置信息错误的问题
2024-02-03 12:29:11 +08:00
SEEKFREE_BUDING
b108ee9187 V3.2.9
新增完整正交采集 仅TIM2 TIM3 TIM4支持
2024-02-02 11:55:53 +08:00
SEEKFREE_BUDING
0853c2d607 V3.2.8
新增凌瞳无MCU版本驱动
        新增SBUS遥控器底层驱动
2024-02-02 10:56:07 +08:00
SEEKFREE_BUDING
2200555483 gps中断函数替换 2024-01-30 15:21:35 +08:00
SEEKFREE_BUDING
31e2a23879 V3.2.7
新增RTK "D" 报头协议
        更正陀螺仪宏转换函数 变量增加括号 防止计算错误
2024-01-30 15:18:47 +08:00
SEEKFREE_BUDING
7371b0c6e6 V3.2.6
更新逐飞助手接口函数 调用初始化时直接传参通信类
        更新wifi SPI驱动文件 提高通信效率
        更新GPS驱动文件,更名为GNSS,兼容普通定位模块及RTK
2024-01-24 10:29:49 +08:00
SEEKFREE_BUDING
9fd45979e5 V3.2.5
修复延时函数初始化参数及中断向量表问题
2023-12-21 14:06:53 +08:00
SEEKFREE_BUDING
4a415c9976 V3.2.4
优化延时函数为中断延时,关闭总中断则为普通延时
        优化ips114屏幕的初始化时间,移除不必要的延时
        修复串口错误中断的串口号异常的问题
        追加更新:
            新增逐飞助手组件支持
            修复fifo高频读写的冲突问题
2023-12-20 11:49:54 +08:00
SEEKFREE_BUDING
0b61a0a0c6 V3.2.4
优化延时函数为中断延时,关闭总中断则为普通延时
        优化ips114屏幕的初始化时间,移除不必要的延时
        修复串口错误中断的串口号异常的问题
2023-11-29 10:13:09 +08:00
SEEKFREE_BUDING
68a58caf81 更新readme的ADS版本号 2023-11-20 17:39:39 +08:00
SEEKFREE_BUDING
e8aec52183 修改readme中的ADS使用版本号 2023-11-20 11:11:53 +08:00
SEEKFREE_BUDING
9b00a674f1 优化串口中断函数 2023-10-09 12:06:32 +08:00
SEEKFREE_BUDING
8942c85ae8 V3.2.3
优化所有SPI通信屏幕(OLED除外)的通信方式,显示速率将提升一倍左右
        修改串口的默认通信方式
2023-10-08 17:16:00 +08:00
SEEKFREE_BUDING
e18d49ffa2 imu660ra新增细化参数说明 2023-09-15 11:50:02 +08:00
SEEKFREE_BUDING
1bc8985845 V3.2.2
pit初始化新增调试状态检测,防止出现权限问题引起的总线报错
2023-08-08 14:08:05 +08:00
SEEKFREE_BUDING
d33dadb382 V3.2.1
flash新增写入时的是否擦除当前页的判断 防止用户因使用不规范导致flash使用报错
2023-07-17 15:34:52 +08:00
SEEKFREE_BUDING
c7397e98a9 修复无法初始化摄像头的bug 2023-07-10 10:39:30 +08:00
SEEKFREE_BUDING
3535c62bcb V3.2.0
新增wifi spi模块驱动文件
        新增detector上位机API接口
        新增四类总线报错提醒,并添加断言保护
        zf_device_type 新增 ToF 类别控制
        新增 ToF 模块 DL1B
        修复 soft_iic transfer 函数读取长度为 0 时发送 restart 信号的 bug
2023-07-06 12:22:30 +08:00
SEEKFREE_BUDING
318a79bd71 V3.1.9
修复单片机可能启动失败的问题
        修复核心板ESR1引脚可能触发复位的问题
        修改屏幕显示浮点数的数据类型为double
2023-05-16 12:29:56 +08:00
SEEKFREE_BUDING
df543507bd V3.1.8
修复摄像头初始化报断言错误的问题
        修复多个SPI同时使用可能产生冲突的问题
        修复多核初始化时卡死在等待同步函数的问题
        外设层增加中文注释
2023-05-03 12:15:13 +08:00
SEEKFREE_BUDING
968395eca9 V3.1.8
修复摄像头初始化报断言错误的问题
2023-04-10 17:38:37 +08:00
SEEKFREE_BUDING
a78d724217 V3.1.6
修改GPS使用串口号,优化GPS计算代码
        isr.c中移除CCD采集函数,有需要可以自行添加
        修改按键驱动文件的按键端口号,适配V2.6主板
2023-04-08 18:29:43 +08:00
SEEKFREE_BUDING
6c8bca6f9e V3.1.5
修复硬件SPI初始化时选择空CS引脚,却依旧会初始化默认CS引脚的bug
2023-03-24 12:23:21 +08:00
SEEKFREE_BUDING
44fd97aefa fft库文件更新 2023-03-22 11:48:11 +08:00
SEEKFREE_BUDING
7832046168 修改多核心同步函数,取消信号量控制方式 2023-03-22 11:45:49 +08:00
SEEKFREE_BUDING
65d2b4dcd0 修复imu660ra注释错误问题,增加部分说明注释 2023-03-20 18:03:33 +08:00
SEEKFREE_BUDING
33e9996278 修复宏定义错误问题 2023-03-17 17:11:19 +08:00
SEEKFREE_BUDING
314d5e9e3d 修复摄像头回调函数判断写反问题 2023-03-16 10:02:53 +08:00
SEEKFREE_BUDING
aed0a8fe9d 修改多核同步函数,防止意外卡顿 2023-03-08 10:51:17 +08:00
SEEKFREE_BUDING
620742250b 新增软件fft例程 2023-03-03 15:46:47 +08:00
SEEKFREE_BUDING
a04aa30139 修复编码器结构体名称错误 2023-02-23 16:23:38 +08:00
SEEKFREE_BUDING
6e4e8d014c 修复部分文件中文乱码问题,修复SPI函数注释错误 2023-02-21 17:53:01 +08:00
SEEKFREE_BUDING
a6bed10c3a V3.1.4
增加DL1A测距模块相关驱动文件
2022-12-28 18:45:21 +08:00
SEEKFREE_BUDING
739d228755 更新readme文档 2022-12-17 10:45:49 +08:00
SEEKFREE_BUDING
8ceeed388d V3.1.3
修复部分注释以及使用示例错误的问题
2022-12-17 10:22:41 +08:00
SEEKFREE_BUDING
4927eab76e 新增数据访问溢出断言接管,修复部分错误 2022-12-16 17:54:46 +08:00
SEEKFREE_BUDING
18883a9dfc 更新ADS使用文档 2022-12-07 13:36:04 +08:00
SEEKFREE_BUDING
f1eca84d08 V3.1.2
修复flash_check函数只检查第一个数据的bug
2022-12-07 13:33:37 +08:00
SEEKFREE_BUDING
7f435dd5f1 V3.1.1 修复调用摄像头初始化后,RAM占用过大的问题 2022-12-02 12:12:45 +08:00
SEEKFREE_BUDING
71244d809a V3.1.0
修复GPS精度不够的问题
        修复部分驱动文件注释错误问题
        新增覆盖用户接口的断言机制 增强 V3 库的健壮性 主要针对空指针
2022-11-28 19:08:53 +08:00
SEEKFREE_BUDING
c4fb9d14ac 修改头文件文字说明 2022-11-19 13:40:45 +08:00
SEEKFREE_BUDING
b081feed40 增量更新版本信息 2022-11-19 11:03:40 +08:00
SEEKFREE_BUDING
cba0c300b6 开源库风格统一,修复总钻风单独配置曝光度时的卡顿问题 2022-11-18 17:16:27 +08:00
SEEKFREE_BUDING
d30ff2e102 清除当前开源库 2022-11-18 17:09:59 +08:00
SEEKFREE_BUDING
766652af22 V3库更新 2022-11-16 18:17:07 +08:00
SEEKFREE_BUDING
4fc928ca19 清除V2版本开源库 2022-11-16 18:07:54 +08:00
SEEKFREE_BUDING
72cc841e66 优化SPI通信 2022-11-04 18:46:12 +08:00
SEEKFREE_BUDING
d58a6d77a1 修复SPI通信数据取反的问题 2022-11-04 18:31:40 +08:00
11875 changed files with 758212 additions and 458654 deletions

3
.gitmodules vendored Normal file
View File

@@ -0,0 +1,3 @@
[submodule "【软件】上位机 串口助手等/逐飞助手"]
path = 【软件】上位机 串口助手等/逐飞助手
url = https://gitee.com/seekfree/seekfree_assistant

File diff suppressed because it is too large Load Diff

View File

@@ -1,40 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<projectDescription>
<name>ADC_Demo</name>
<comment></comment>
<projects>
</projects>
<buildSpec>
<buildCommand>
<name>com.infineon.aurix.buildsystem.builders.booster</name>
<triggers>full,incremental,</triggers>
<arguments>
</arguments>
</buildCommand>
<buildCommand>
<name>com.infineon.aurix.buildsystem.builders.autodiscovery</name>
<triggers>full,incremental,</triggers>
<arguments>
</arguments>
</buildCommand>
<buildCommand>
<name>org.eclipse.cdt.managedbuilder.core.genmakebuilder</name>
<triggers>clean,full,incremental,</triggers>
<arguments>
</arguments>
</buildCommand>
<buildCommand>
<name>org.eclipse.cdt.managedbuilder.core.ScannerConfigBuilder</name>
<triggers>full,incremental,</triggers>
<arguments>
</arguments>
</buildCommand>
</buildSpec>
<natures>
<nature>org.eclipse.cdt.core.cnature</nature>
<nature>org.eclipse.cdt.managedbuilder.core.managedBuildNature</nature>
<nature>org.eclipse.cdt.core.ccnature</nature>
<nature>com.infineon.aurix.buildsystem.aurixnature</nature>
<nature>org.eclipse.cdt.managedbuilder.core.ScannerConfigNature</nature>
</natures>
</projectDescription>

View File

@@ -1,161 +0,0 @@
V1.3.1
<20><>IMU963RA<52><41>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Լ<EFBFBD>
V1.3.0
<20><>icm20602<30>ij<EFBFBD>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϵ<EFBFBD><CFB5>˵<EFBFBD><CBB5>
V1.2.10
<20><><EFBFBD><EFBFBD>IMU963RA<52><41><EFBFBD><EFBFBD>ģ<EFBFBD><C4A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD>
V1.2.9
ɾ<><C9BE>SEEKFREE_IPS200_PARALLEL8<4C>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>SEEKFREE_IPS200<30><30><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD><EFBFBD>ԭ<EFBFBD>е<EFBFBD>2<EFBFBD><32><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ҳ<EFBFBD><D2B2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>µ<EFBFBD>2<EFBFBD><32><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
<20>޸<EFBFBD>spi<70>ײ<EFBFBD><D7B2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>˳<EFBFBD>ʱ<EFBFBD>ж<EFBFBD>cs<63><73><EFBFBD><EFBFBD>״̬<D7B4><CCAC>ȷ<EFBFBD><C8B7>spi<70><69><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɺ<EFBFBD><C9BA>˳<EFBFBD><CBB3><EFBFBD>
<20><>tft<66><74>ips114<31><34><EFBFBD><EFBFBD><EFBFBD>з<EFBFBD><D0B7>͵<EFBFBD>my_delayȥ<79><C8A5>
V1.2.8
<20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ײ<EFBFBD><D7B2><EFBFBD><EFBFBD><EFBFBD>PCLK_MODE<44><45>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD>λ
V1.2.7
<20>޸<EFBFBD>֮ǰ<D6AE><C7B0><EFBFBD>͵<EFBFBD><CDB5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ײ<EFBFBD><D7B2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E1B5BC><EFBFBD><EFBFBD><EFBFBD>׳<EFBFBD><D7B3>ֲɼ<D6B2><C9BC><EFBFBD>λ<EFBFBD><CEBB>
<20><><EFBFBD><EFBFBD>ż<EFBFBD><C5BC><EFBFBD>Ӵ<EFBFBD><D3B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͼ<EFBFBD><CDBC><EFBFBD><EFBFBD>λ<EFBFBD><CEBB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Դ<EFBFBD><D4B4><EFBFBD><EFBFBD>Ӽ<EFBFBD><D3BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>򲢳<EFBFBD><F2B2A2B3>Խ<EFBFBD><D4BD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>޸<EFBFBD><DEB8><EFBFBD>
V1.2.6
<20>޸<EFBFBD><DEB8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ײ㣬<D7B2><E3A3AC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʹ<EFBFBD>÷<EFBFBD>ʽ
<20>޸<EFBFBD><DEB8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ײ㣬<D7B2><E3A3AC><EFBFBD>Ӷ<EFBFBD>V2.1<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>PCLK<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
<20><><EFBFBD><EFBFBD>˫ƵGPS<50><53>λģ<CEBB><C4A3><EFBFBD>ĵײ<C4B5><D7B2><EFBFBD><EFBFBD><EFBFBD>
V1.2.5
<09>Ż<EFBFBD>Ӳ<EFBFBD><D3B2>SPI<50><49><EFBFBD><EFBFBD><EFBFBD><EFBFBD>SPI<50><49>Ļ<EFBFBD><C4BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>SPI<50><49>Ļˢ<C4BB><CBA2><EFBFBD>ٶȣ<D9B6>IPS1.14<EFBFBD><EFBFBD>Ļ<EFBFBD><EFBFBD>ʾ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>188*120<32>ɴ<EFBFBD>31֡<31><D6A1><EFBFBD><EFBFBD>ʾ160*120<32>ɴ<EFBFBD>37֡<37><D6A1>TFT1.8<EFBFBD><EFBFBD>Ļ<EFBFBD><EFBFBD>ʾ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>160*120<32>ɴ<EFBFBD>37֡<37><D6A1>
V1.2.4
<09>޸<EFBFBD>systick_delay_ms<6D><73><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱʱ<CAB1><CAB1><EFBFBD>ϳ<EFBFBD><CFB3><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱʱ<CAB1><EFBFBD><E4B2BB>ȷ<EFBFBD><C8B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
V1.2.3
<09><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͷ<EFBFBD><CDB7>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>н<EFBFBD>PCLK<4C>޸<EFBFBD>Ϊ<EFBFBD><CEAA><EFBFBD><EFBFBD><EFBFBD>ش<EFBFBD><D8B4><EFBFBD>
<09>޸<EFBFBD>systick<63><6B>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>us<75><73><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD>
V1.2.2
<20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͷͼ<CDB7><CDBC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ż<EFBFBD><C5BC><EFBFBD>Դ<EFBFBD>λ<EFBFBD><CEBB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>³<EFBFBD>ʼ<EFBFBD><CABC>DMAʹ<41><CAB9><EFBFBD>´βɼ<CEB2>ͼ<EFBFBD><CDBC><EFBFBD>Զ<EFBFBD><D4B6>ָ<EFBFBD><D6B8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
<20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͷ<EFBFBD><CDB7><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD>޸<EFBFBD>Ϊ<EFBFBD><CEAA><EFBFBD><EFBFBD><EFBFBD>ش<EFBFBD><D8B4><EFBFBD>
<20><><EFBFBD><EFBFBD>ͷȥ<CDB7><C8A5><EFBFBD><EFBFBD>־λ<D6BE><CEBB><EFBFBD><EFBFBD><EFBFBD>ż<EFBFBD><C5BC><EFBFBD><EFBFBD>ɼ<EFBFBD><C9BC><EFBFBD>һ<EFBFBD><D2BB>ͼ<EFBFBD><CDBC><EFBFBD><EFBFBD><EFBFBD>߼<EFBFBD><DFBC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>֡<EFBFBD>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
V1.2.1
<20><><EFBFBD><EFBFBD>printf<74>رյ<D8B1>ʱ<EFBFBD>򣬱<EFBFBD><F2A3ACB1><EFBFBD><EBB1A8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
V1.2.0
<20><><EFBFBD><EFBFBD>CH9141<34><31><EFBFBD><EFBFBD>ת<EFBFBD><D7AA><EFBFBD><EFBFBD>ģ<EFBFBD><C4A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
<20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>͵<EFBFBD>ö<EFBFBD>ٱ<EFBFBD><D9B1><EFBFBD>
<20>޸<EFBFBD> ɾ<><C9BE><EFBFBD><EFBFBD>ʱ<EFBFBD>ļ<EFBFBD>.bat ִ<><D6B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Զ<EFBFBD><D4B6>رմ<D8B1><D5B4><EFBFBD>
<20>޸<EFBFBD> ɾ<><C9BE><EFBFBD><EFBFBD>ʱ<EFBFBD>ļ<EFBFBD>.bat <20><><EFBFBD><EFBFBD>ɾ<EFBFBD><C9BE><EFBFBD>°汾<C2B0><E6B1BE><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD>
<20>޸Ĺ<DEB8><C4B9><EFBFBD><EFBFBD><EFBFBD>Ŀ<EFBFBD>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD><EFBFBD>֧<EFBFBD><D6A7><EFBFBD>°汾<C2B0><E6B1BE><EFBFBD><EFBFBD>
V1.1.10
<20>޸<EFBFBD>ͨ<EFBFBD><CDA8>#pragma section all "cpux_dsram"ָ<><D6B8><EFBFBD><EFBFBD><EFBFBD><EFBFBD>λ<EFBFBD><CEBB>ʧЧ<CAA7><D0A7><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
V1.1.9
<20><><EFBFBD><EFBFBD><EFBFBD>ڵķ<DAB5><C4B7><EFBFBD>buff<66><66><EFBFBD>ӵ<EFBFBD>128<32>ֽ<EFBFBD>
V1.1.8
<20><>isr_config.h<><68> INT_SERVICE<43><45><EFBFBD>ø<EFBFBD>Ϊʹ<CEAA><CAB9>ö<EFBFBD><C3B6>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
<20><><EFBFBD><EFBFBD>illd<6C>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊinfineon_libraries
<20><>TC264<36><34><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD><C4BC>У<EFBFBD><D0A3><EFBFBD><EFBFBD><EFBFBD>Ƶ<EFBFBD><C6B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ѡ<EFBFBD><D1A1>
<20><><EFBFBD><EFBFBD>main<69>ȴ<EFBFBD><C8B4><EFBFBD><EFBFBD>ȴ<EFBFBD><C8B4><EFBFBD><EFBFBD>к<EFBFBD><D0BA>ij<EFBFBD>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD><EFBFBD>ϲſ<CFB2>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD>
<20>޸<EFBFBD>CLK_FREQ<45><EFBFBD><EAB6A8><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ΪCMU_CLK_FREQ
DMA<4D><41><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ַͨ<D6B7><CDA8>ָ<EFBFBD><D6B8><EFBFBD><EFBFBD><EFBFBD>д<EFBFBD><D0B4>ݣ<EFBFBD><DDA3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ա<EFBFBD><D4B1><EFBFBD><EFBFBD>ڲ<EFBFBD><DAB2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͷ<EFBFBD><CDB7>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ص<EFBFBD><D8B5><EFBFBD><EFBFBD><EFBFBD><E9B2BB>ռ<EFBFBD><D5BC>RAM
<20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>pclk<6C><6B>Ϊ<EFBFBD>½<EFBFBD><C2BD>ش<EFBFBD><D8B4><EFBFBD>
<20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ת<EFBFBD><D7AA><EFBFBD>ڵ<EFBFBD>RTS<54><53><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ò<EFBFBD><C3B2><EFBFBD><EFBFBD>޸<EFBFBD>Ϊ<EFBFBD><CEAA><EFBFBD><EFBFBD>
V1.1.7
<20><><EFBFBD>Ӵ<EFBFBD><D3B4>ڰ汾<DAB0><E6B1BE>С<EFBFBD><D0A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
<20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͷ<EFBFBD><CDB7><EFBFBD>ͱ<EFBFBD><CDB1><EFBFBD>ͨ<EFBFBD><CDA8>ö<EFBFBD><C3B6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ж<EFBFBD><D0B6><EFBFBD>
V1.1.6
<20><>printf<74>޸<EFBFBD>Ϊͨ<CEAA><CDA8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
<20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>л<EFBFBD>ΪADS<44>Ĺ<EFBFBD><C4B9>̣<EFBFBD>ADSֱ<53>ӵ<EFBFBD><D3B5><EFBFBD>ɱ<EFBFBD><C9B1><EFBFBD>
V1.1.5
DMA_LINK<4E><EFBFBD><E1B9B9>linked_list<73><74>Աȡ<D4B1><C8A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ<EFBFBD>ɶ<EFBFBD><C9B6><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1>ָ<EFBFBD><D6B8>
dma_link_list<73><EFBFBD><EFBFBD><E5B6A8><EFBFBD><EFBFBD><EFBFBD>Ӷ<EFBFBD><D3B6><EFBFBD>
V1.1.4
<20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD>ע<EFBFBD>ͱ<EFBFBD><CDB1><EFBFBD><EFBFBD><EFBFBD>Ĭ<EFBFBD><C4AC><EFBFBD><EFBFBD><EFBFBD>õ<EFBFBD><C3B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD>µ<EFBFBD>һ<EFBFBD><D2BB>ע<EFBFBD>ͱ<EFBFBD><CDB1>Զ<EFBFBD><D4B6>۵<EFBFBD><DBB5><EFBFBD><EFBFBD><EFBFBD>
V1.1.3
<20>޸<EFBFBD>SPI spi_mosi<73><69><EFBFBD><EFBFBD><EFBFBD>ڽ<EFBFBD><DABD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ<EFBFBD>յ<EFBFBD>ʱ<EFBFBD>򣬳<EFBFBD><F2A3ACB3><EFBFBD><EFBFBD>
V1.1.2
<20>޸<EFBFBD>ATOM_PWM<57><4D><EFBFBD><EFBFBD>ռ<EFBFBD>ձ<EFBFBD><D5B1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><ECB3A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
V1.1.1
<20>޸<EFBFBD>uart_getchar<61><72><EFBFBD><EFBFBD><EFBFBD>յ<EFBFBD><D5B5><EFBFBD>ס<EFBFBD><D7A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
V1.1.0
<20><>ISR<53>ļ<EFBFBD><C4BC>ڵ<EFBFBD><DAB5>жϺ<D0B6><CFBA><EFBFBD>ȫ<EFBFBD><C8AB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>enableInterrupts(); <20><>ʵ<EFBFBD><CAB5><EFBFBD>ж<EFBFBD>Ƕ<EFBFBD>׵Ĺ<D7B5><C4B9><EFBFBD>
<20><><EFBFBD><EFBFBD>RDA5807<30><37>ȡRSSI<53><49><EFBFBD>ܺ<EFBFBD><DCBA><EFBFBD>
<20><>DMA<4D><41><EFBFBD>Ӵ<EFBFBD><D3B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD>õ<EFBFBD><C3B5>ı<EFBFBD><C4B1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ERU_DMA_INT_SERVICE<43><45><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ŵ<EFBFBD><C5B5><EFBFBD>Ӧ<EFBFBD><D3A6>CPU<50><55>
V1.0.9
<20>޸<EFBFBD>RDA5807<30><37><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD><EFBFBD>Ҫ<EFBFBD><D2AA>֤<EFBFBD>ϵ<EFBFBD><CFB5><EFBFBD>1S<31>ڲ<EFBFBD><DAB2><EFBFBD>FMģ<4D><C4A3>
V1.0.8
<20>޸<EFBFBD>CCU61 ͨ<><CDA8>1<EFBFBD>ж<EFBFBD><D0B6><EFBFBD><EFBFBD>ô<EFBFBD><C3B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
<20>޸<EFBFBD>CCU6<55><36><EFBFBD>ߵ<EFBFBD><DFB5>Ե<EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Զ<EFBFBD>ֹͣ<CDA3><D6B9><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ߵ<EFBFBD><DFB5><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>жϵ<D0B6><CFB5><EFBFBD><EFBFBD><EFBFBD>
<20><>CCU6<55><36><EFBFBD><EFBFBD>pit_close<73><65>pit_start<72><74><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڿ<EFBFBD><DABF>ƶ<EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD>Ŀ<EFBFBD>ʼ<EFBFBD><CABC>ֹͣ
<20><>CCU6<55><36><EFBFBD><EFBFBD>pit_disable_interrupt<70><74>pit_enable_interrupt<70><74><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڿ<EFBFBD><DABF><EFBFBD><EFBFBD>жϿ<D0B6><CFBF><EFBFBD>
V1.0.7
<20>޸<EFBFBD>ʹ<EFBFBD><CAB9>systick_getval<61><6C>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱʱ<CAB1><EFBFBD><E4B3AC>4<EFBFBD><34><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
<20>Բ<EFBFBD><D4B2>ִ<EFBFBD><D6B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>#pragma warning<6E><67><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ż<EFBFBD><C5BB>ȼ<EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD>־<EFBFBD><D6BE><EFBFBD>
<20>޸<EFBFBD>1.8<EFBFBD><EFBFBD>TFT<EFBFBD><EFBFBD>Ļ<EFBFBD><EFBFBD>ʼ<EFBFBD><EFBFBD><EFBFBD>й<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ļ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ѡ<EFBFBD>񲿷ֵĴ<EFBFBD><EFBFBD><EFBFBD>
V1.0.6
<20><><EFBFBD><EFBFBD>ADC<44><43><EFBFBD><EFBFBD>Ƶ<EFBFBD><C6B5><EFBFBD><EFBFBD><EFBFBD>õĺ궨<C4BA>壬ADC_SAMPLE_FREQUENCY<43><59><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ10Mhz<68><7A><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ĭ<EFBFBD><C4AC><EFBFBD>µ<EFBFBD><C2B5>ٶ<EFBFBD><D9B6>нϴ<D0BD><CFB4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
V1.0.5
ȡ<><C8A1>HEX<45><58><EFBFBD><EFBFBD>
V1.0.4
Ĭ<>Ϲ<EFBFBD>ѡ<EFBFBD><D1A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>HEX<45>Ĺ<EFBFBD><C4B9><EFBFBD>
<20><>Cpu1_Main.c<>е<EFBFBD>core1_main<69><6E><EFBFBD><EFBFBD>Ĭ<EFBFBD><C4AC><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>жϵĺ<CFB5><C4BA><EFBFBD><EFBFBD><EFBFBD>
<20>޸<EFBFBD>CPU1<55>޷<EFBFBD><DEB7><EFBFBD>Ӧ<EFBFBD>жϵ<D0B6><CFB5><EFBFBD><EFBFBD><EFBFBD>
ɾ<><C9BE><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>еİ<D0B5><C4B0><EFBFBD>·<EFBFBD><C2B7><EFBFBD><EFBFBD>Ϣ
<20>޸<EFBFBD><DEB8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>С<EFBFBD>ֱ<EFBFBD>ֻ<EFBFBD>ɼ<EFBFBD>һ<EFBFBD>ε<EFBFBD><CEB5><EFBFBD><EFBFBD><EFBFBD>
<20><><EFBFBD><EFBFBD>RDA5807 FMģ<4D><C4A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
<20>޸<EFBFBD>LSL<53>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͨ<EFBFBD><CDA8>#pragma <20><>ָ<EFBFBD><D6B8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>߳<EFBFBD><DFB3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ָ<EFBFBD><D6B8>RAM<41><4D><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʹ<EFBFBD><CAB9><EFBFBD><EFBFBD><EFBFBD>ο<EFBFBD><CEBF><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Specifies_Variable_Or_Code_Location_Demo
//ʹ<><CAB9>#pragma section all "cpu0_dsram" <20><> #pragma section all restore<72><65><EFBFBD>Խ<EFBFBD><D4BD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>cpu0_dsram
//<2F><><EFBFBD><EFBFBD>ֻ<EFBFBD><D6BB>Ҫ<EFBFBD><D2AA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>м伴<D0BC>ɣ<EFBFBD>ʹ<EFBFBD><CAB9>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
#pragma section all "cpu0_dsram"
uint8 test_arry[5]; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>cpu0_dsram<61><6D><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>cpu0_dsram<61><6D>Ϊcpu1_dsram <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>cpu1_dsram<61><6D><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
//<2F><><EFBFBD>ǽ<EFBFBD><C7BD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ĸ<EFBFBD>CPUִ<55>У<EFBFBD><D0A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʹ<EFBFBD>õı<C3B5><C4B1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ĸ<EFBFBD><C4B8><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڣ<EFBFBD>Ĭ<EFBFBD>ϲ<EFBFBD>ָ<EFBFBD><D6B8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>±<EFBFBD><C2B1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>cpu1_dsram<61><6D><EFBFBD><EFBFBD>
#pragma section all restore
//ʹ<><CAB9>#pragma section all "cpu0_psram" <20><> #pragma section all restore<72><65><EFBFBD>Խ<EFBFBD><D4BD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ص<EFBFBD>cpu0_psram
//<2F><><EFBFBD><EFBFBD>ֻ<EFBFBD><D6BB>Ҫ<EFBFBD><D2AA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>м伴<D0BC>ɣ<EFBFBD>ʹ<EFBFBD><CAB9>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
#pragma section all "cpu0_psram"
void delay_tset(void) //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ص<EFBFBD>cpu0_psram<61><6D><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ִ<EFBFBD><D6B4>
{
int i;
i = 999;
while(i--);
}
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>cpu0_psram<61><6D>Ϊcpu1_psram <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ص<EFBFBD>cpu1_psram<61><6D><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
//<2F><><EFBFBD>ǽ<EFBFBD><C7BD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ĸ<EFBFBD>CPUִ<55>У<EFBFBD><D0A3>򽫺<EFBFBD><F2BDABBA><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ص<EFBFBD><D8B5><EFBFBD><EFBFBD>ĸ<EFBFBD><C4B8><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڣ<EFBFBD>Ĭ<EFBFBD>ϲ<EFBFBD>ָ<EFBFBD><D6B8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>£<EFBFBD><C2A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ǵ<EFBFBD>flash<73><68><EFBFBD>ز<EFBFBD>ִ<EFBFBD><D6B4>
//ͨ<><CDA8><EFBFBD><EFBFBD><EFBFBD>Ƕ<EFBFBD><C7B6><EFBFBD><EFBFBD><EFBFBD>Ҫ<EFBFBD><D2AA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>RAM<41><4D><EFBFBD>У<EFBFBD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ִ<EFBFBD>еij<D0B5><C4B3><EFBFBD><EFBFBD><EFBFBD>С<EFBFBD><D0A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>cache<68>󣬻<EFBFBD><F3A3ACBB><EFBFBD><EFBFBD>ֳ<EFBFBD><D6B3><EFBFBD>ִ<EFBFBD><D6B4><EFBFBD>ٶȽ<D9B6><C8BD>ͣ<EFBFBD><CDA3><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD>ǾͿ<C7BE><CDBF>Խ<EFBFBD><D4BD><EFBFBD><EFBFBD>ִ<EFBFBD><D6B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>RAMִ<4D>У<EFBFBD><D0A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ٶ<EFBFBD>
#pragma section all restore
V1.0.3
<20><>spi<70><69>uart<72><74>pit<69>в<EFBFBD><D0B2>ֱ<EFBFBD><D6B1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>volatile<6C><65><EFBFBD>Σ<EFBFBD><CEA3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
V1.0.2
<20>޸<EFBFBD>ģ<EFBFBD><C4A3>IICĬ<43><C4AC><EFBFBD><EFBFBD>ʱʱ<CAB1><CAB1>Ϊ20
<20><><EFBFBD><EFBFBD> <20><>Ҫ<EFBFBD>ر<EFBFBD>ע<EFBFBD><D7A2>P20_2<5F>Dz<EFBFBD><C7B2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ģ<EFBFBD><C4A3><EFBFBD><EFBFBD><EFBFBD>ֻ<EFBFBD><D6BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ĺ<EFBFBD><C4B9><EFBFBD> ע<><D7A2><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
<20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͷ<EFBFBD>ɼ<EFBFBD>DMA<4D><41>Ϊlink<6E><6B><EFBFBD><EFBFBD><E4A3AC><EFBFBD>Դ<EFBFBD><D4B4>󽵵<EFBFBD>DMA<4D>жϴ<D0B6><CFB4><EFBFBD>
<20>޸<EFBFBD>Ĭ<EFBFBD>ϵ<EFBFBD><CFB5><EFBFBD><EFBFBD><EFBFBD>IIC<49><43><EFBFBD>Ŷ<EFBFBD><C5B6><EFBFBD>
<20><>6050<35><30> <20><>Ҫ<EFBFBD>õ<EFBFBD><C3B5><EFBFBD><EFBFBD><EFBFBD>IIC<49><43>ģ<EFBFBD><EFBFBD>ڳ<EFBFBD>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ĭ<EFBFBD>ϵ<EFBFBD><CFB5><EFBFBD>ģ<EFBFBD><C4A3>IIC<49><43>ʼ<EFBFBD><CABC>
<20><><EFBFBD><EFBFBD>С<EFBFBD><D0A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
V1.0.1
<20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͷ<EFBFBD>ij<EFBFBD><C4B3>жϽ<D0B6><CFBD><EFBFBD><EFBFBD>޸ģ<DEB8><C4A3>жϱ<D0B6>־λΪ0<CEAA>Ųɼ<C5B2><C9BC><EFBFBD>һ<EFBFBD><D2BB>ͼ<EFBFBD>񣬱<EFBFBD><F1A3ACB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ַ<EFBFBD><D6B7>ʳ<EFBFBD>ͻ
<20>޸<EFBFBD>SPI<50><49>ʼ<EFBFBD><CABC><EFBFBD>еĴ<D0B5><C4B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>˹̶<CBB9><CCB6><EFBFBD>SPI2<49><32><EFBFBD><EFBFBD>ַ
<20>޸<EFBFBD>STM<54><4D><EFBFBD>޷<EFBFBD>ʹ<EFBFBD><CAB9>STM1<4D><31><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
<20>޸<EFBFBD>gtm pwm<77><6D><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ռ<EFBFBD>ձ<EFBFBD>ֻ<EFBFBD><D6BB>GTM_ATOM0_PWM_DUTY_MAX<41><58><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ч<EFBFBD><D0A7><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
V1.0.0
<20><>ʼ<EFBFBD>

View File

@@ -1,53 +0,0 @@
/**********************************************************************************************************************
* \file Ifx_Cfg.h
* \brief Project configuration file.
* \copyright Copyright (C) Infineon Technologies AG 2019
*
* Use of this file is subject to the terms of use agreed between (i) you or the company in which ordinary course of
* business you are acting and (ii) Infineon Technologies AG or its licensees. If and as long as no such terms of use
* are agreed, use of this file is subject to following:
*
* Boost Software License - Version 1.0 - August 17th, 2003
*
* Permission is hereby granted, free of charge, to any person or organization obtaining a copy of the software and
* accompanying documentation covered by this license (the "Software") to use, reproduce, display, distribute, execute,
* and transmit the Software, and to prepare derivative works of the Software, and to permit third-parties to whom the
* Software is furnished to do so, all subject to the following:
*
* The copyright notices in the Software and this entire statement, including the above license grant, this restriction
* and the following disclaimer, must be included in all copies of the Software, in whole or in part, and all
* derivative works of the Software, unless such copies or derivative works are solely in the form of
* machine-executable object code generated by a source language processor.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE
* WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, TITLE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE
* COPYRIGHT HOLDERS OR ANYONE DISTRIBUTING THE SOFTWARE BE LIABLE FOR ANY DAMAGES OR OTHER LIABILITY, WHETHER IN
* CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
* IN THE SOFTWARE.
*********************************************************************************************************************/
#ifndef IFX_CFG_H
#define IFX_CFG_H 1
#include "TC264_config.h"
/*********************************************************************************************************************/
/*------------------------------------------Configuration for IfxScu_cfg.h-------------------------------------------*/
/*********************************************************************************************************************/
/* External oscillator frequency in Hz */
#define IFX_CFG_SCU_XTAL_FREQUENCY (20000000) /* Allowed values are: 16000000, 20000000 or 40000000 */
/* PLL frequency in Hz */
#define IFX_CFG_SCU_PLL_FREQUENCY (200000000) /* Allowed values are: 80000000, 133000000, 160000000
* or 200000000 */
/*********************************************************************************************************************/
/*-----------------------------------Configuration for Software managed interrupt------------------------------------*/
/*********************************************************************************************************************/
/* #define IFX_USE_SW_MANAGED_INT */ /* Decomment this line if the project needs to use Software managed interrupts */
/*********************************************************************************************************************/
/*---------------------------------Configuration for Trap Hook Functions' Extensions---------------------------------*/
/*********************************************************************************************************************/
/* #define IFX_CFG_EXTEND_TRAP_HOOKS */ /* Decomment this line if the project needs to extend trap hook functions */
#endif /* IFX_CFG_H */

View File

@@ -1,416 +0,0 @@
/**
* \file IfxAsclin.c
* \brief ASCLIN basic functionality
*
* \version iLLD_1_0_1_11_0
* \copyright Copyright (c) 2019 Infineon Technologies AG. All rights reserved.
*
*
* IMPORTANT NOTICE
*
*
* Use of this file is subject to the terms of use agreed between (i) you or
* the company in which ordinary course of business you are acting and (ii)
* Infineon Technologies AG or its licensees. If and as long as no such
* terms of use are agreed, use of this file is subject to following:
* Boost Software License - Version 1.0 - August 17th, 2003
* Permission is hereby granted, free of charge, to any person or
* organization obtaining a copy of the software and accompanying
* documentation covered by this license (the "Software") to use, reproduce,
* display, distribute, execute, and transmit the Software, and to prepare
* derivative works of the Software, and to permit third-parties to whom the
* Software is furnished to do so, all subject to the following:
* The copyright notices in the Software and this entire statement, including
* the above license grant, this restriction and the following disclaimer, must
* be included in all copies of the Software, in whole or in part, and all
* derivative works of the Software, unless such copies or derivative works are
* solely in the form of machine-executable object code generated by a source
* language processor.
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
* FITNESS FOR A PARTICULAR PURPOSE, TITLE AND NON-INFRINGEMENT. IN NO EVENT
* SHALL THE COPYRIGHT HOLDERS OR ANYONE DISTRIBUTING THE SOFTWARE BE LIABLE
* FOR ANY DAMAGES OR OTHER LIABILITY, WHETHER IN CONTRACT, TORT OR OTHERWISE,
* ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
* DEALINGS IN THE SOFTWARE.
*
*/
/******************************************************************************/
/*----------------------------------Includes----------------------------------*/
/******************************************************************************/
#include "IfxAsclin.h"
/******************************************************************************/
/*-------------------------Function Implementations---------------------------*/
/******************************************************************************/
void IfxAsclin_disableModule(Ifx_ASCLIN *asclin)
{
uint16 psw = IfxScuWdt_getCpuWatchdogPassword();
IfxScuWdt_clearCpuEndinit(psw); /* clears the endinit protection*/
IfxAsclin_setDisableModuleRequest(asclin); /* disables the module*/
IfxScuWdt_setCpuEndinit(psw); /* sets the endinit protection back on*/
}
void IfxAsclin_enableAscErrorFlags(Ifx_ASCLIN *asclin, boolean parEnable, boolean rfoEnable)
{
IfxAsclin_enableParityErrorFlag(asclin, parEnable); /* enables parity error*/
IfxAsclin_enableRxFifoOverflowFlag(asclin, rfoEnable); /* enables Rx fifo Overflow error*/
}
void IfxAsclin_enableModule(Ifx_ASCLIN *asclin)
{
uint16 psw = IfxScuWdt_getCpuWatchdogPassword();
IfxScuWdt_clearCpuEndinit(psw); /* clears the endinit protection*/
IfxAsclin_setEnableModuleRequest(asclin); /* enables the module*/
IfxScuWdt_setCpuEndinit(psw); /* sets the endinit protection back on*/
}
Ifx_ASCLIN *IfxAsclin_getAddress(IfxAsclin_Index asclin)
{
Ifx_ASCLIN *module;
if (asclin < IFXASCLIN_NUM_MODULES)
{
module = (Ifx_ASCLIN *)IfxAsclin_cfg_indexMap[asclin].module;
}
else
{
module = NULL_PTR;
}
return module;
}
float32 IfxAsclin_getFaFrequency(Ifx_ASCLIN *asclin)
{
float32 frequency;
IfxAsclin_ClockSource clockSource = (IfxAsclin_ClockSource)IfxAsclin_getClockSource(asclin); /* gets the current clock source*/
switch (clockSource)
{
case IfxAsclin_ClockSource_noClock: /* gets the respective frequency*/
frequency = 0.0;
break;
case IfxAsclin_ClockSource_kernelClock:
frequency = IfxScuCcu_getSpbFrequency();
break;
case IfxAsclin_ClockSource_oscillatorClock:
frequency = IfxScuCcu_getOsc0Frequency();
break;
case IfxAsclin_ClockSource_flexRayClock:
frequency = IfxScuCcu_getPllErayFrequency();
break;
case IfxAsclin_ClockSource_ascFastClock:
frequency = IfxScuCcu_getBaud2Frequency();
break;
case IfxAsclin_ClockSource_ascSlowClock:
frequency = IfxScuCcu_getBaud1Frequency();
break;
default:
frequency = 0.0;
break;
}
return frequency;
}
IfxAsclin_Index IfxAsclin_getIndex(Ifx_ASCLIN *asclin)
{
uint32 index;
IfxAsclin_Index result;
result = IfxAsclin_Index_none;
for (index = 0; index < IFXASCLIN_NUM_MODULES; index++)
{
if (IfxAsclin_cfg_indexMap[index].module == asclin)
{
result = (IfxAsclin_Index)IfxAsclin_cfg_indexMap[index].index;
break;
}
}
return result;
}
float32 IfxAsclin_getOvsFrequency(Ifx_ASCLIN *asclin)
{
return (IfxAsclin_getPdFrequency(asclin) * asclin->BRG.B.NUMERATOR) / asclin->BRG.B.DENOMINATOR;
}
float32 IfxAsclin_getPdFrequency(Ifx_ASCLIN *asclin)
{
return IfxAsclin_getFaFrequency(asclin) / (asclin->BITCON.B.PRESCALER + 1);
}
float32 IfxAsclin_getShiftFrequency(Ifx_ASCLIN *asclin)
{
return IfxAsclin_getOvsFrequency(asclin) / asclin->BITCON.B.OVERSAMPLING;
}
volatile Ifx_SRC_SRCR *IfxAsclin_getSrcPointerEr(Ifx_ASCLIN *asclin)
{
return (volatile Ifx_SRC_SRCR *)(&MODULE_SRC.ASCLIN.ASCLIN[IfxAsclin_getIndex(asclin)].ERR);
}
volatile Ifx_SRC_SRCR *IfxAsclin_getSrcPointerRx(Ifx_ASCLIN *asclin)
{
return (volatile Ifx_SRC_SRCR *)(&MODULE_SRC.ASCLIN.ASCLIN[IfxAsclin_getIndex(asclin)].RX);
}
volatile Ifx_SRC_SRCR *IfxAsclin_getSrcPointerTx(Ifx_ASCLIN *asclin)
{
return (volatile Ifx_SRC_SRCR *)(&MODULE_SRC.ASCLIN.ASCLIN[IfxAsclin_getIndex(asclin)].TX);
}
uint32 IfxAsclin_read16(Ifx_ASCLIN *asclin, uint16 *data, uint32 count)
{
volatile Ifx_ASCLIN_RXDATA *rxData = (volatile Ifx_ASCLIN_RXDATA *)&asclin->RXDATA.U;
while (count > 0)
{
*data++ = (uint16)rxData->U;
count--;
}
return count;
}
uint32 IfxAsclin_read32(Ifx_ASCLIN *asclin, uint32 *data, uint32 count)
{
volatile Ifx_ASCLIN_RXDATA *rxData = (volatile Ifx_ASCLIN_RXDATA *)&asclin->RXDATA.U;
while (count > 0)
{
*data++ = rxData->U;
count--;
}
return count;
}
uint32 IfxAsclin_read8(Ifx_ASCLIN *asclin, uint8 *data, uint32 count)
{
volatile Ifx_ASCLIN_RXDATA *rxData = (volatile Ifx_ASCLIN_RXDATA *)&asclin->RXDATA.U;
while (count > 0)
{
*data++ = (uint8)rxData->U;
count--;
}
return count;
}
void IfxAsclin_resetModule(Ifx_ASCLIN *asclin)
{
uint16 passwd = IfxScuWdt_getCpuWatchdogPassword();
IfxScuWdt_clearCpuEndinit(passwd);
asclin->KRST0.B.RST = 1; /* Only if both Kernel reset bits are set a reset is executed */
asclin->KRST1.B.RST = 1;
IfxScuWdt_setCpuEndinit(passwd);
while (0 == asclin->KRST0.B.RSTSTAT) /* Wait until reset is executed */
{}
IfxScuWdt_clearCpuEndinit(passwd);
asclin->KRSTCLR.B.CLR = 1; /* Clear Kernel reset status bit */
IfxScuWdt_setCpuEndinit(passwd);
}
void IfxAsclin_setBaudrateBitFields(Ifx_ASCLIN *asclin, uint16 prescaler, uint16 numerator, uint16 denominator, IfxAsclin_OversamplingFactor oversampling)
{
IfxAsclin_ClockSource clockSource = (IfxAsclin_ClockSource)IfxAsclin_getClockSource(asclin); /* gets the current clock source */
IfxAsclin_setClockSource(asclin, IfxAsclin_ClockSource_noClock); /* turns off the clock for settings */
IfxAsclin_setPrescaler(asclin, prescaler); /* sets the prescaler*/
IfxAsclin_setNumerator(asclin, numerator); /* sets the numerator*/
IfxAsclin_setDenominator(asclin, denominator); /* sets the denominator*/
IfxAsclin_setOversampling(asclin, oversampling); /* sets the oversampling*/
IfxAsclin_setClockSource(asclin, clockSource); /* sets the clock source back on*/
}
boolean IfxAsclin_setBitTiming(Ifx_ASCLIN *asclin, float32 baudrate, IfxAsclin_OversamplingFactor oversampling, IfxAsclin_SamplePointPosition samplepoint, IfxAsclin_SamplesPerBit medianFilter)
{
IfxAsclin_ClockSource source = (IfxAsclin_ClockSource)IfxAsclin_getClockSource(asclin);
float32 fOvs;
uint32 d = 0, n, dBest = 1, nBest = 1;
float32 f;
/* Set the PD frequency */
float32 fpd = IfxAsclin_getPdFrequency(asclin);
oversampling = (IfxAsclin_OversamplingFactor)__maxu((oversampling + 1), 4);
samplepoint = (IfxAsclin_SamplePointPosition)__maxu(samplepoint, 1);
fOvs = baudrate * oversampling;
float32 relError = fOvs;
float32 limit = 0.001 * fOvs; // save the error limit
boolean terminated = FALSE;
float32 newRelError; //modified by Hassan
uint32 adder_facL, adder_facH, adder_facL_min, count; //modified by Hassan
d = (uint32)(fpd / fOvs);
n = 1;
if (d >> 12)
{
if (((uint32)(fpd / (baudrate * 16))) >> 12)
{
/* Increase the value of the prescalar to generate the required baudrate */
IFX_ASSERT(IFX_VERBOSE_LEVEL_WARNING, FALSE);
}
else
{
/* Increase the value of the oversampling to generate the required baudrate */
IFX_ASSERT(IFX_VERBOSE_LEVEL_WARNING, FALSE);
}
}
dBest = d;
nBest = n;
adder_facL_min = 0;
f = (fpd * n) / d;
relError = __absf(fOvs - f);
if (relError <= limit)
{
terminated = TRUE;
}
for (n = 2; ((!terminated) && ((n * d) <= 0xFFF)); n++)
{
if (n == 2)
{
adder_facL = 1;
adder_facH = 1;
}
else
{
adder_facL = (adder_facL_min * n) / nBest;
adder_facH = adder_facL + 1;
}
for (count = adder_facL; count <= adder_facH; count++)
{
f = (fpd * n) / (n * d + count);
newRelError = __absf(fOvs - f);
if (relError > (newRelError))
{
relError = newRelError;
nBest = n;
dBest = (n * d + count);
adder_facL_min = count;
}
}
if (relError <= limit)
{
break;
}
}
IfxAsclin_setClockSource(asclin, IfxAsclin_ClockSource_noClock);
asclin->BRG.B.DENOMINATOR = dBest;
asclin->BRG.B.NUMERATOR = nBest;
/* Set the SHIFT frequency */
asclin->BITCON.B.OVERSAMPLING = oversampling - 1;
/* Set the sampling point */
asclin->BITCON.B.SAMPLEPOINT = samplepoint;
/* Set the median filter */
asclin->BITCON.B.SM = medianFilter ? 1 : 0;
IfxAsclin_setClockSource(asclin, source);
return TRUE;
}
void IfxAsclin_setClockSource(Ifx_ASCLIN *asclin, IfxAsclin_ClockSource clockSource)
{
asclin->CSR.B.CLKSEL = clockSource; /* selects the given clock source*/
/* Waits TW or polls for CSR.CON to change */
if (clockSource == IfxAsclin_ClockSource_noClock)
{
while (IfxAsclin_getClockStatus(asclin) != 0U)
{}
}
else
{
while (IfxAsclin_getClockStatus(asclin) != 1U)
{}
}
}
uint32 IfxAsclin_write16(Ifx_ASCLIN *asclin, uint16 *data, uint32 count)
{
volatile Ifx_ASCLIN_TXDATA *txData = (volatile Ifx_ASCLIN_TXDATA *)&asclin->TXDATA.U;
while ((count > 0))
{
txData->U = *data++;
count--;
}
return count;
}
uint32 IfxAsclin_write32(Ifx_ASCLIN *asclin, uint32 *data, uint32 count)
{
volatile Ifx_ASCLIN_TXDATA *txData = (volatile Ifx_ASCLIN_TXDATA *)&asclin->TXDATA.U;
while ((count > 0))
{
txData->U = *data++;
count--;
}
return count;
}
uint32 IfxAsclin_write8(Ifx_ASCLIN *asclin, uint8 *data, uint32 count)
{
volatile Ifx_ASCLIN_TXDATA *txData = (volatile Ifx_ASCLIN_TXDATA *)&asclin->TXDATA.U;
while ((count > 0))
{
txData->U = *data++;
count--;
}
return count;
}

View File

@@ -1,309 +0,0 @@
/**
* \file IfxCpu_Cstart0.c
* \brief This file contains the Core startup sequence for Cpu0.
* \version iLLD_1_0_1_11_0
* \copyright Copyright (c) 2012 Infineon Technologies AG. All rights reserved.
*
*
*
* IMPORTANT NOTICE
*
*
* Use of this file is subject to the terms of use agreed between (i) you or
* the company in which ordinary course of business you are acting and (ii)
* Infineon Technologies AG or its licensees. If and as long as no such
* terms of use are agreed, use of this file is subject to following:
* Boost Software License - Version 1.0 - August 17th, 2003
* Permission is hereby granted, free of charge, to any person or
* organization obtaining a copy of the software and accompanying
* documentation covered by this license (the "Software") to use, reproduce,
* display, distribute, execute, and transmit the Software, and to prepare
* derivative works of the Software, and to permit third-parties to whom the
* Software is furnished to do so, all subject to the following:
* The copyright notices in the Software and this entire statement, including
* the above license grant, this restriction and the following disclaimer, must
* be included in all copies of the Software, in whole or in part, and all
* derivative works of the Software, unless such copies or derivative works are
* solely in the form of machine-executable object code generated by a source
* language processor.
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
* FITNESS FOR A PARTICULAR PURPOSE, TITLE AND NON-INFRINGEMENT. IN NO EVENT
* SHALL THE COPYRIGHT HOLDERS OR ANYONE DISTRIBUTING THE SOFTWARE BE LIABLE
* FOR ANY DAMAGES OR OTHER LIABILITY, WHETHER IN CONTRACT, TORT OR OTHERWISE,
* ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
* DEALINGS IN THE SOFTWARE.
*
*/
/*******************************************************************************
** Includes **
*******************************************************************************/
#include "Ifx_Cfg.h"
#ifndef IFX_CFG_USE_COMPILER_DEFAULT_LINKER
#include "Scu/Std/IfxScuWdt.h"
#include "Scu/Std/IfxScuCcu.h"
#include "Cpu/Std/IfxCpu.h"
#include "Cpu/CStart/IfxCpu_CStart.h"
#include "IfxScu_reg.h"
#include "IfxCpu_reg.h"
/******************************************************************************/
/* Macros */
/******************************************************************************/
/** \brief Configuration for CpuX enable.
*
*/
#ifndef IFX_CFG_CPU_CSTART_ENABLE_TRICORE0
# define IFX_CFG_CPU_CSTART_ENABLE_TRICORE0 (1) /**< Cpu0 enabled by default*/
#endif
#ifndef IFX_CFG_CPU_CSTART_ENABLE_TRICORE1
# define IFX_CFG_CPU_CSTART_ENABLE_TRICORE1 (1) /**< Cpu1 enabled by default*/
#endif
/** \brief Configuration for cache enable.
*
*/
#ifndef IFX_CFG_CPU_CSTART_ENABLE_TRICORE0_PCACHE
# define IFX_CFG_CPU_CSTART_ENABLE_TRICORE0_PCACHE (1) /**< Program Cache enabled by default*/
#endif
#ifndef IFX_CFG_CPU_CSTART_ENABLE_TRICORE0_DCACHE
# define IFX_CFG_CPU_CSTART_ENABLE_TRICORE0_DCACHE (1) /**< Data Cache enabled by default*/
#endif
#ifndef IFXCPU_CSTART_CCU_INIT_HOOK
#define IFXCPU_CSTART_CCU_INIT_HOOK() (void)IfxScuCcu_init(&IfxScuCcu_defaultClockConfig); /*The status returned by Ccu init is ignored */
#endif
/*******************************************************************************
** Imported Function Declarations **
*******************************************************************************/
IFXCOMPILER_COMMON_LINKER_SYMBOLS()
IFXCOMPILER_CORE_LINKER_SYMBOLS(0)
IFX_EXTERN void core0_main(void); // @suppress("Unused function declaration")
#if defined(__TASKING__)
__asm("\t .extern core0_main");
#endif
/*******************************************************************************
** Private Constant Definitions **
*******************************************************************************/
#define IFXCSTART0_PSW_DEFAULT (0x00000980u)
#define IFXCSTART0_PCX_O_S_DEFAULT (0xfff00000u)
/*********************************************************************************
* _start() - startup code
*********************************************************************************/
#if defined(__HIGHTEC__)
#pragma GCC optimize ("-O2")
#endif
void _Core0_start(void)
{
uint32 pcxi;
uint16 cpuWdtPassword = IfxScuWdt_getCpuWatchdogPasswordInline(&MODULE_SCU.WDTCPU[0]);
IFX_CFG_CPU_CSTART_PRE_C_INIT_HOOK(0); /*Test Stack, CSA and Cache */
/* Load user stack pointer */
__setareg(sp, __USTACK(0));
__dsync();
/* Set the PSW to its reset value in case of a warm start,clear PSW.IS */
__mtcr(CPU_PSW, IFXCSTART0_PSW_DEFAULT);
/* Set the PCXS and PCXO to its reset value in case of a warm start */
pcxi = __mfcr(CPU_PCXI);
pcxi &= IFXCSTART0_PCX_O_S_DEFAULT; /*0xfff00000; */
__mtcr(CPU_PCXI, pcxi);
/*enable/disable program cache depending on the configuration */
IfxCpu_setProgramCache(IFX_CFG_CPU_CSTART_ENABLE_TRICORE0_PCACHE);
/*enable/disable data cache depending on the configuration */
IfxCpu_setDataCache(IFX_CFG_CPU_CSTART_ENABLE_TRICORE0_DCACHE);
/* Clear the ENDINIT bit in the WDT_CON0 register, inline funtion */
IfxScuWdt_clearCpuEndinitInline(&MODULE_SCU.WDTCPU[0], cpuWdtPassword);
/* Load Base Address of Trap Vector Table. */
__mtcr(CPU_BTV, (uint32)__TRAPTAB(0));
/* Load Base Address of Interrupt Vector Table. we will do this later in the program */
__mtcr(CPU_BIV, (uint32)__INTTAB(0));
/* Load interupt stack pointer. */
__mtcr(CPU_ISP, (uint32)__ISTACK(0));
IfxScuWdt_setCpuEndinitInline(&MODULE_SCU.WDTCPU[0], cpuWdtPassword);
/* initialize SDA base pointers */
__setareg(a0, __SDATA1(0));
__setareg(a1, __SDATA2(0));
/* These to be un commented if A8 and A9 are required to be initialized */
__setareg(a8, __SDATA3(0));
__setareg(a9, __SDATA4(0));
/* Setup the context save area linked list. */
IfxCpu_initCSA((uint32 *)__CSA(0), (uint32 *)__CSA_END(0)); /*Initialize the context save area for CPU0 */
{
/*CPU and safety watchdogs are enabled by default, C initialization functions are not servicing the watchdogs */
uint16 safetyWdtPassword = IfxScuWdt_getSafetyWatchdogPassword();
IfxScuWdt_disableCpuWatchdog(cpuWdtPassword);
IfxScuWdt_disableSafetyWatchdog(safetyWdtPassword);
Ifx_C_Init(); /*Initialization of C runtime variables */
IfxScuWdt_enableCpuWatchdog(cpuWdtPassword);
IfxScuWdt_enableSafetyWatchdog(safetyWdtPassword);
}
/*Initialize the clock system */
IFXCPU_CSTART_CCU_INIT_HOOK();
/*Start remaining cores */
#if (IFX_CFG_CPU_CSTART_ENABLE_TRICORE1 != 0)
(void)IfxCpu_startCore(&MODULE_CPU1, (uint32)&_Core1_start); /*The status returned by function call is ignored */
#endif
#if (IFX_CFG_CPU_CSTART_ENABLE_TRICORE0 == 0)
IfxScuWdt_disableCpuWatchdog(cpuWdtPassword);
/*halt the CPU 0 if it is not needed to be enabled */
IfxCpu_setCoreMode(&MODULE_CPU0, IfxCpu_CoreMode_idle);
#endif
/*Call main function of Cpu0 */
__non_return_call(core0_main);
}
#if defined(__HIGHTEC__)
#pragma GCC reset_options
#endif
/******************************************************************************
* reset vector address, user section to inform linker to locate the code at 0x8000 0020
*****************************************************************************/
#if defined(__HIGHTEC__)
#pragma section
#pragma section ".start" x
#endif
#if defined(__TASKING__)
#pragma protect on
#pragma section code "start"
#endif
#if defined(__DCC__)
#pragma section CODE ".start" X
#endif
void _START(void)
{
__non_return_call(_Core0_start);
}
/* reset the sections defined above, to normal region */
#if defined(__HIGHTEC__)
#pragma section
#endif
#if defined(__TASKING__)
#pragma protect restore
#pragma section code restore
#endif
#if defined(__DCC__)
#pragma section CODE
#endif
/*******************************************************************************
** Boot Mode Headers **
*******************************************************************************/
/*Boot Mode Header 0 sections to inform linker to locate them at 0x8000 0000 */
#ifndef IFX_CFG_CPUCSTART_BMHD_NOT_NEEDED
#if defined(__HIGHTEC__)
#pragma section
#pragma section ".bmhd_0" a
#endif
#if defined(__TASKING__)
#pragma protect on
#pragma section farrom "bmhd_0"
#endif
#if defined(__DCC__)
#pragma section CONST ".bmhd_0" R
#endif
/** \brief Boot Mode Header 0
* Boot mode header at memory location 0c8000 0000.
*/
const uint32 BootModeHeader_0[] = {
0x00000000u, /* STADBM first user code at 0x8000 0020h */
0xb3590070u, /* BMI = 0070h BMHDID = B359h */
0x00000000u, /* ChkStart */
0x00000000u, /* ChkEnd */
0x00000000u, /* CRCrange */
0x00000000u, /* !CRCrange */
0x791eb864u, /* CRChead */
0x86e1479bu /* !CRChead */
};
/*reset the sections defined above */
#if defined(__HIGHTEC__)
#pragma section
#endif
#if defined(__TASKING__)
#pragma protect restore
#pragma section farrom restore
#endif
#if defined(__DCC__)
#pragma section CONST
#endif
#ifndef IFX_CFG_CPUCSTART_BMI01_NOT_NEEDED
/*Boot Mode Header 1 sections to inform linker to locate them at 0x8002 0000 */
#if defined(__HIGHTEC__)
#pragma section
#pragma section ".bmhd_1" a
#endif
#if defined(__TASKING__)
#pragma protect on
#pragma section farrom "bmhd_1"
#endif
#if defined(__DCC__)
#pragma section CONST ".bmhd_1" R
#endif
/** \brief Boot Mode Header 1
* Boot mode header at memory location 0c8002 0000.
*/
const uint32 BootModeHeader_1[] = {
0x00000000u, /* STADBM first user code at 0x8000 0020h */
0xB3590070u, /* BMI = 0070h BMHDID = B359h */
0x00000000u, /* ChkStart */
0x00000000u, /* ChkEnd */
0x00000000u, /* CRCrange */
0x00000000u, /* !CRCrange */
0x791eb864u, /* CRChead */
0x86e1479bu /* !CRChead */
};
/*reset the sections defined above */
#if defined(__HIGHTEC__)
#pragma section
#endif
#if defined(__TASKING__)
#pragma protect restore
#pragma section farrom restore
#endif
#if defined(__DCC__)
#pragma section CONST
#endif
#endif /*IFX_CFG_CPUCSTART_BMI01_NOT_NEEDED*/
#endif /*IFX_CFG_CPUCSTART_BMHD_NOT_NEEDED*/
#endif /*#ifndef IFX_CFG_USE_COMPILER_DEFAULT_LINKER */

View File

@@ -1,473 +0,0 @@
/**
* \file IfxCpu_Trap.c
* \brief This file contains the APIs for Trap related functions.
*
*
* \version iLLD_1_0_1_11_0
* \copyright Copyright (c) 2012 Infineon Technologies AG. All rights reserved.
*
*
* IMPORTANT NOTICE
*
*
* Use of this file is subject to the terms of use agreed between (i) you or
* the company in which ordinary course of business you are acting and (ii)
* Infineon Technologies AG or its licensees. If and as long as no such
* terms of use are agreed, use of this file is subject to following:
* Boost Software License - Version 1.0 - August 17th, 2003
* Permission is hereby granted, free of charge, to any person or
* organization obtaining a copy of the software and accompanying
* documentation covered by this license (the "Software") to use, reproduce,
* display, distribute, execute, and transmit the Software, and to prepare
* derivative works of the Software, and to permit third-parties to whom the
* Software is furnished to do so, all subject to the following:
* The copyright notices in the Software and this entire statement, including
* the above license grant, this restriction and the following disclaimer, must
* be included in all copies of the Software, in whole or in part, and all
* derivative works of the Software, unless such copies or derivative works are
* solely in the form of machine-executable object code generated by a source
* language processor.
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
* FITNESS FOR A PARTICULAR PURPOSE, TITLE AND NON-INFRINGEMENT. IN NO EVENT
* SHALL THE COPYRIGHT HOLDERS OR ANYONE DISTRIBUTING THE SOFTWARE BE LIABLE
* FOR ANY DAMAGES OR OTHER LIABILITY, WHETHER IN CONTRACT, TORT OR OTHERWISE,
* ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
* DEALINGS IN THE SOFTWARE.
*
*
*/
/*******************************************************************************
** Includes **
*******************************************************************************/
#include "IfxCpu_Trap.h"
#include "Cpu/Std/IfxCpu.h"
#include "Cpu/Std/IfxCpu_Intrinsics.h"
#include "IfxCpu_reg.h"
#include "Ifx_Cfg.h"
#ifdef IFX_CFG_EXTEND_TRAP_HOOKS
#include "Ifx_Cfg_Trap.h"
#endif
/******************************************************************************/
/* Macros */
/******************************************************************************/
/** \brief Configuration for CpuX enable.
*
*/
#ifndef IFX_CFG_CPU_TRAP_TSR_HOOK
# define IFX_CFG_CPU_TRAP_TSR_HOOK(trapWatch) /**< By default macro is empty*/
#endif
#ifndef IFX_CFG_CPU_TRAP_SYSCALL_CPU0_HOOK
# define IFX_CFG_CPU_TRAP_SYSCALL_CPU0_HOOK(trapWatch) ((void)trapWatch) /**< By default macro is empty*/
#endif
#ifndef IFX_CFG_CPU_TRAP_SYSCALL_CPU1_HOOK
# define IFX_CFG_CPU_TRAP_SYSCALL_CPU1_HOOK(trapWatch) ((void)trapWatch) /**< By default macro is empty*/
#endif
#ifndef IFX_CFG_CPU_TRAP_SYSCALL_CPU2_HOOK
# define IFX_CFG_CPU_TRAP_SYSCALL_CPU2_HOOK(trapWatch) ((void)trapWatch) /**< By default macro is empty*/
#endif
#ifndef IFX_CFG_CPU_TRAP_SYSCALL_CPU3_HOOK
# define IFX_CFG_CPU_TRAP_SYSCALL_CPU3_HOOK(trapWatch) ((void)trapWatch) /**< By default macro is empty*/
#endif
#ifndef IFX_CFG_CPU_TRAP_SYSCALL_CPU4_HOOK
# define IFX_CFG_CPU_TRAP_SYSCALL_CPU4_HOOK(trapWatch) ((void)trapWatch) /**< By default macro is empty*/
#endif
#ifndef IFX_CFG_CPU_TRAP_SYSCALL_CPU5_HOOK
# define IFX_CFG_CPU_TRAP_SYSCALL_CPU5_HOOK(trapWatch) ((void)trapWatch) /**< By default macro is empty*/
#endif
#ifndef IFX_CFG_CPU_TRAP_NMI_HOOK
# define IFX_CFG_CPU_TRAP_NMI_HOOK(trapWatch) ((void)trapWatch) /**< By default NMI macro is empty*/
#endif
#ifndef IFX_CFG_CPU_TRAP_MME_HOOK
# define IFX_CFG_CPU_TRAP_MME_HOOK(trapWatch) ((void)trapWatch) /**< By default memory Management Error macro is empty*/
#endif
#ifndef IFX_CFG_CPU_TRAP_IPE_HOOK
# define IFX_CFG_CPU_TRAP_IPE_HOOK(trapWatch) ((void)trapWatch) /**< By default internal Protection Error macro is empty*/
#endif
#ifndef IFX_CFG_CPU_TRAP_IE_HOOK
# define IFX_CFG_CPU_TRAP_IE_HOOK(trapWatch) ((void)trapWatch) /**< By default instruction Error macro is empty*/
#endif
#ifndef IFX_CFG_CPU_TRAP_CME_HOOK
# define IFX_CFG_CPU_TRAP_CME_HOOK(trapWatch) ((void)trapWatch) /**< By default context Management Error macro is empty*/
#endif
#ifndef IFX_CFG_CPU_TRAP_BE_HOOK
# define IFX_CFG_CPU_TRAP_BE_HOOK(trapWatch) ((void)trapWatch) /**< By default bus Error macro is empty*/
#endif
#ifndef IFX_CFG_CPU_TRAP_ASSERT_HOOK
# define IFX_CFG_CPU_TRAP_ASSERT_HOOK(trapWatch) ((void)trapWatch) /**< By default assertion is empty*/
#endif
#ifndef IFX_CFG_CPU_TRAP_DEBUG
#define IFX_CFG_CPU_TRAP_DEBUG __debug()
#endif
/*******************************************************************************
** variables **
*******************************************************************************/
/*******************************************************************************
** Function definitions **
*******************************************************************************/
IFX_INLINE IfxCpu_Trap IfxCpu_Trap_extractTrapInfo(uint8 trapClass, uint32 tin)
{
IfxCpu_Trap trapInfo;
trapInfo.tAddr = (unsigned int)__getA11();
trapInfo.tClass = trapClass;
trapInfo.tId = tin;
trapInfo.tCpu = IfxCpu_getCoreId();
return trapInfo;
}
void IfxCpu_Trap_memoryManagementError(uint32 tin)
{
volatile IfxCpu_Trap trapWatch;
trapWatch = IfxCpu_Trap_extractTrapInfo(IfxCpu_Trap_Class_memoryManagement, tin);
IFX_CFG_CPU_TRAP_MME_HOOK(trapWatch);
IFX_CFG_CPU_TRAP_DEBUG;
__asm("rslcx"); /* Restore lower context before returning. lower context was stored in the trap vector */
__asm("rfe");
}
void IfxCpu_Trap_internalProtectionError(uint32 tin)
{
volatile IfxCpu_Trap trapWatch;
trapWatch = IfxCpu_Trap_extractTrapInfo(IfxCpu_Trap_Class_internalProtection, tin);
IFX_CFG_CPU_TRAP_IPE_HOOK(trapWatch);
IFX_CFG_CPU_TRAP_DEBUG;
__asm("rslcx"); /* Restore lower context before returning. lower context was stored in the trap vector */
__asm("rfe");
}
void IfxCpu_Trap_instructionError(uint32 tin)
{
volatile IfxCpu_Trap trapWatch;
trapWatch = IfxCpu_Trap_extractTrapInfo(IfxCpu_Trap_Class_instructionErrors, tin);
IFX_CFG_CPU_TRAP_IE_HOOK(trapWatch);
IFX_CFG_CPU_TRAP_DEBUG;
__asm("rslcx"); /* Restore lower context before returning. lower context was stored in the trap vector */
__asm("rfe");
}
void IfxCpu_Trap_contextManagementError(uint32 tin)
{
volatile IfxCpu_Trap trapWatch;
trapWatch = IfxCpu_Trap_extractTrapInfo(IfxCpu_Trap_Class_contextManagement, tin);
IFX_CFG_CPU_TRAP_CME_HOOK(trapWatch);
IFX_CFG_CPU_TRAP_DEBUG;
__asm("rslcx"); /* Restore lower context before returning. lower context was stored in the trap vector */
__asm("rfe");
}
void IfxCpu_Trap_busError(uint32 tin)
{
volatile IfxCpu_Trap trapWatch;
trapWatch = IfxCpu_Trap_extractTrapInfo(IfxCpu_Trap_Class_bus, tin);
IFX_CFG_CPU_TRAP_BE_HOOK(trapWatch);
IFX_CFG_CPU_TRAP_DEBUG;
__asm("rslcx"); /* Restore lower context before returning. lower context was stored in the trap vector */
__asm("rfe");
}
void IfxCpu_Trap_assertion(uint32 tin)
{
volatile IfxCpu_Trap trapWatch;
trapWatch = IfxCpu_Trap_extractTrapInfo(IfxCpu_Trap_Class_assertion, tin);
IFX_CFG_CPU_TRAP_ASSERT_HOOK(trapWatch);
IFX_CFG_CPU_TRAP_DEBUG;
__asm("rslcx"); /* Restore lower context before returning. lower context was stored in the trap vector */
__asm("rfe");
}
void IfxCpu_Trap_systemCall_Cpu0(uint32 tin)
{
volatile IfxCpu_Trap trapWatch;
trapWatch = IfxCpu_Trap_extractTrapInfo(IfxCpu_Trap_Class_systemCall, tin);
IFX_CFG_CPU_TRAP_SYSCALL_CPU0_HOOK(trapWatch);
__asm("rslcx"); /* Restore lower context before returning. lower context was stored in the trap vector */
__asm("rfe");
}
#if IFXCPU_NUM_MODULES >= 2
void IfxCpu_Trap_systemCall_Cpu1(uint32 tin)
{
volatile IfxCpu_Trap trapWatch;
trapWatch = IfxCpu_Trap_extractTrapInfo(IfxCpu_Trap_Class_systemCall, tin);
IFX_CFG_CPU_TRAP_SYSCALL_CPU1_HOOK(trapWatch);
__asm("rslcx"); /* Restore lower context before returning. lower context was stored in the trap vector */
__asm("rfe");
}
#endif
#if IFXCPU_NUM_MODULES >= 3
void IfxCpu_Trap_systemCall_Cpu2(uint32 tin)
{
volatile IfxCpu_Trap trapWatch;
trapWatch = IfxCpu_Trap_extractTrapInfo(IfxCpu_Trap_Class_systemCall, tin);
IFX_CFG_CPU_TRAP_SYSCALL_CPU2_HOOK(trapWatch);
__asm("rslcx"); /* Restore lower context before returning. lower context was stored in the trap vector */
__asm("rfe");
}
#endif
#if IFXCPU_NUM_MODULES >= 4
void IfxCpu_Trap_systemCall_Cpu3(uint32 tin)
{
volatile IfxCpu_Trap trapWatch;
trapWatch = IfxCpu_Trap_extractTrapInfo(IfxCpu_Trap_Class_systemCall, tin);
IFX_CFG_CPU_TRAP_SYSCALL_CPU3_HOOK(trapWatch);
__asm("rslcx"); /* Restore lower context before returning. lower context was stored in the trap vector */
__asm("rfe");
}
#endif
#if IFXCPU_NUM_MODULES >= 5
void IfxCpu_Trap_systemCall_Cpu4(uint32 tin)
{
volatile IfxCpu_Trap trapWatch;
trapWatch = IfxCpu_Trap_extractTrapInfo(IfxCpu_Trap_Class_systemCall, tin);
IFX_CFG_CPU_TRAP_SYSCALL_CPU4_HOOK(trapWatch);
__asm("rslcx"); /* Restore lower context before returning. lower context was stored in the trap vector */
__asm("rfe");
}
#endif
#if IFXCPU_NUM_MODULES >= 6
void IfxCpu_Trap_systemCall_Cpu5(uint32 tin)
{
volatile IfxCpu_Trap trapWatch;
trapWatch = IfxCpu_Trap_extractTrapInfo(IfxCpu_Trap_Class_systemCall, tin);
IFX_CFG_CPU_TRAP_SYSCALL_CPU5_HOOK(trapWatch);
__asm("rslcx"); /* Restore lower context before returning. lower context was stored in the trap vector */
__asm("rfe");
}
#endif
void IfxCpu_Trap_nonMaskableInterrupt(uint32 tin)
{
volatile IfxCpu_Trap trapWatch;
trapWatch = IfxCpu_Trap_extractTrapInfo(IfxCpu_Trap_Class_nonMaskableInterrupt, tin);
IFX_CFG_CPU_TRAP_NMI_HOOK(trapWatch);
__asm("rslcx"); /* Restore lower context before returning. lower context was stored in the trap vector */
__asm("rfe");
}
#if defined(__HIGHTEC__)
#pragma section
#pragma section ".traptab_cpu0" awx
#pragma GCC optimize ("O2")
#endif
#if defined(__DCC__)
#pragma section
#pragma section CODE ".traptab_cpu0" X
#endif
#if defined(__TASKING__)
#pragma protect on
#pragma section code "traptab_cpu0"
#endif
#if defined(__ghs__)
#pragma ghs section
#pragma ghs section text=".traptab_cpu0"
#endif
void IfxCpu_Trap_vectorTable0(void)
{
IfxCpu_Tsr_CallTSR(IfxCpu_Trap_memoryManagementError);
IfxCpu_Tsr_CallTSR(IfxCpu_Trap_internalProtectionError);
IfxCpu_Tsr_CallTSR(IfxCpu_Trap_instructionError);
IfxCpu_Tsr_CallTSR(IfxCpu_Trap_contextManagementError);
IfxCpu_Tsr_CallTSR(IfxCpu_Trap_busError);
IfxCpu_Tsr_CallTSR(IfxCpu_Trap_assertion);
IfxCpu_Tsr_CallTSR(IfxCpu_Trap_systemCall_Cpu0);
IfxCpu_Tsr_CallTSR(IfxCpu_Trap_nonMaskableInterrupt);
}
#if IFXCPU_NUM_MODULES >= 2
#if defined(__HIGHTEC__)
#pragma section
#pragma section ".traptab_cpu1" awx
#endif
#if defined(__DCC__)
#pragma section
#pragma section CODE ".traptab_cpu1" X
#endif
#if defined(__TASKING__)
#pragma section code "traptab_cpu1"
#endif
#if defined(__ghs__)
#pragma ghs section
#pragma ghs section text=".traptab_cpu1"
#endif
void IfxCpu_Trap_vectorTable1(void)
{
IfxCpu_Tsr_CallTSR(IfxCpu_Trap_memoryManagementError);
IfxCpu_Tsr_CallTSR(IfxCpu_Trap_internalProtectionError);
IfxCpu_Tsr_CallTSR(IfxCpu_Trap_instructionError);
IfxCpu_Tsr_CallTSR(IfxCpu_Trap_contextManagementError);
IfxCpu_Tsr_CallTSR(IfxCpu_Trap_busError);
IfxCpu_Tsr_CallTSR(IfxCpu_Trap_assertion);
IfxCpu_Tsr_CallTSR(IfxCpu_Trap_systemCall_Cpu1);
IfxCpu_Tsr_CallTSR(IfxCpu_Trap_nonMaskableInterrupt);
}
#endif
#if IFXCPU_NUM_MODULES >= 3
#if defined(__HIGHTEC__)
#pragma section
#pragma section ".traptab_cpu2" awx
#endif
#if defined(__DCC__)
#pragma section
#pragma section CODE ".traptab_cpu2" X
#endif
#if defined(__TASKING__)
#pragma section code "traptab_cpu2"
#endif
#if defined(__ghs__)
#pragma ghs section
#pragma ghs section text=".traptab_cpu2"
#endif
void IfxCpu_Trap_vectorTable2(void)
{
IfxCpu_Tsr_CallTSR(IfxCpu_Trap_memoryManagementError);
IfxCpu_Tsr_CallTSR(IfxCpu_Trap_internalProtectionError);
IfxCpu_Tsr_CallTSR(IfxCpu_Trap_instructionError);
IfxCpu_Tsr_CallTSR(IfxCpu_Trap_contextManagementError);
IfxCpu_Tsr_CallTSR(IfxCpu_Trap_busError);
IfxCpu_Tsr_CallTSR(IfxCpu_Trap_assertion);
IfxCpu_Tsr_CallTSR(IfxCpu_Trap_systemCall_Cpu2);
IfxCpu_Tsr_CallTSR(IfxCpu_Trap_nonMaskableInterrupt);
}
#endif
#if IFXCPU_NUM_MODULES >= 4
#if defined(__HIGHTEC__)
#pragma section
#pragma section ".traptab_cpu3" awx
#endif
#if defined(__DCC__)
#pragma section
#pragma section CODE ".traptab_cpu3" X
#endif
#if defined(__TASKING__)
#pragma section code "traptab_cpu3"
#endif
#if defined(__ghs__)
#pragma ghs section
#pragma ghs section text=".traptab_cpu3"
#endif
void IfxCpu_Trap_vectorTable3(void)
{
IfxCpu_Tsr_CallTSR(IfxCpu_Trap_memoryManagementError);
IfxCpu_Tsr_CallTSR(IfxCpu_Trap_internalProtectionError);
IfxCpu_Tsr_CallTSR(IfxCpu_Trap_instructionError);
IfxCpu_Tsr_CallTSR(IfxCpu_Trap_contextManagementError);
IfxCpu_Tsr_CallTSR(IfxCpu_Trap_busError);
IfxCpu_Tsr_CallTSR(IfxCpu_Trap_assertion);
IfxCpu_Tsr_CallTSR(IfxCpu_Trap_systemCall_Cpu3);
IfxCpu_Tsr_CallTSR(IfxCpu_Trap_nonMaskableInterrupt);
}
#endif
#if IFXCPU_NUM_MODULES >= 5
#if defined(__HIGHTEC__)
#pragma section
#pragma section ".traptab_cpu4" awx
#endif
#if defined(__DCC__)
#pragma section
#pragma section CODE ".traptab_cpu4" X
#endif
#if defined(__TASKING__)
#pragma section code "traptab_cpu4"
#endif
#if defined(__ghs__)
#pragma ghs section
#pragma ghs section text=".traptab_cpu4"
#endif
void IfxCpu_Trap_vectorTable4(void)
{
IfxCpu_Tsr_CallTSR(IfxCpu_Trap_memoryManagementError);
IfxCpu_Tsr_CallTSR(IfxCpu_Trap_internalProtectionError);
IfxCpu_Tsr_CallTSR(IfxCpu_Trap_instructionError);
IfxCpu_Tsr_CallTSR(IfxCpu_Trap_contextManagementError);
IfxCpu_Tsr_CallTSR(IfxCpu_Trap_busError);
IfxCpu_Tsr_CallTSR(IfxCpu_Trap_assertion);
IfxCpu_Tsr_CallTSR(IfxCpu_Trap_systemCall_Cpu4);
IfxCpu_Tsr_CallTSR(IfxCpu_Trap_nonMaskableInterrupt);
}
#endif
#if IFXCPU_NUM_MODULES >= 6
#if defined(__HIGHTEC__)
#pragma section
#pragma section ".traptab_cpu5" awx
#endif
#if defined(__DCC__)
#pragma section
#pragma section CODE ".traptab_cpu5" X
#endif
#if defined(__TASKING__)
#pragma section code "traptab_cpu5"
#endif
#if defined(__ghs__)
#pragma ghs section
#pragma ghs section text=".traptab_cpu5"
#endif
void IfxCpu_Trap_vectorTable5(void)
{
IfxCpu_Tsr_CallTSR(IfxCpu_Trap_memoryManagementError);
IfxCpu_Tsr_CallTSR(IfxCpu_Trap_internalProtectionError);
IfxCpu_Tsr_CallTSR(IfxCpu_Trap_instructionError);
IfxCpu_Tsr_CallTSR(IfxCpu_Trap_contextManagementError);
IfxCpu_Tsr_CallTSR(IfxCpu_Trap_busError);
IfxCpu_Tsr_CallTSR(IfxCpu_Trap_assertion);
IfxCpu_Tsr_CallTSR(IfxCpu_Trap_systemCall_Cpu5);
IfxCpu_Tsr_CallTSR(IfxCpu_Trap_nonMaskableInterrupt);
}
#endif
#if defined(__HIGHTEC__)
#pragma section
#endif
#if defined(__DCC__)
#pragma section
#endif
#if defined(__DCC__)
#pragma interrupt IfxInterruptEx
#endif
#if defined(__TASKING__)
#pragma endprotect
#endif
#if defined(__ghs__)
#pragma ghs section
#endif

View File

@@ -1,394 +0,0 @@
/*********************************************************************************************************************
* COPYRIGHT NOTICE
* Copyright (c) 2020,<2C><><EFBFBD>ɿƼ<C9BF>
* All rights reserved.
* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>QQȺ<51><C8BA><EFBFBD><EFBFBD>Ⱥ<EFBFBD><C8BA>824575535
*
* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݰ<EFBFBD>Ȩ<EFBFBD><C8A8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɿƼ<C9BF><C6BC><EFBFBD><EFBFBD>У<EFBFBD>δ<EFBFBD><CEB4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ҵ<EFBFBD><D2B5>;<EFBFBD><CDBE>
* <20><>ӭ<EFBFBD><D3AD>λʹ<CEBB>ò<EFBFBD><C3B2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>޸<EFBFBD><DEB8><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EBB1A3><EFBFBD><EFBFBD><EFBFBD>ɿƼ<C9BF><C6BC>İ<EFBFBD>Ȩ<EFBFBD><C8A8><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
*
* @file printf
* @company <09>ɶ<EFBFBD><C9B6><EFBFBD><EFBFBD>ɿƼ<C9BF><C6BC><EFBFBD><EFBFBD>޹<EFBFBD>˾
* @author <09><><EFBFBD>ɿƼ<C9BF>(QQ3184284598)
* @version <09>鿴doc<6F><63>version<6F>ļ<EFBFBD> <20>汾˵<E6B1BE><CBB5>
* @Software ADS v1.2.2
* @Target core TC264D
* @Taobao https://seekfree.taobao.com/
* @date 2020-3-23
********************************************************************************************************************/
#include <stdarg.h>
#include <string.h>
#include "SEEKFREE_PRINTF.h"
uint8 number_conversion_ascii(uint32 dat, int8 *p, uint8 neg_type, uint8 radix)
{
int32 neg_dat;
uint32 pos_dat;
uint8 temp_data = 0;
uint8 valid_num = 0;
if(neg_type)
{
neg_dat = (int32)dat;
if(neg_dat<0) neg_dat = -neg_dat;
while(1)
{
*p = (char)(neg_dat%radix + '0');
neg_dat = neg_dat/radix;
valid_num++;
if(!neg_dat) break;
p++;
}
}
else
{
pos_dat = dat;
while(1)
{
temp_data = pos_dat%radix;
if(10 <= temp_data) temp_data += 'A'-10;
else temp_data += '0';
*p = temp_data;
pos_dat = pos_dat/radix;
valid_num++;
if(!pos_dat) break;
p++;
}
}
return valid_num;
}
void printf_reverse_order(int8 *d_buff, uint32 len)
{
uint32 i;
int8 temp_data;
for(i=0;i<len/2;i++)
{
temp_data = d_buff[len-1-i];
d_buff[len-1-i] = d_buff[i];
d_buff[i] = temp_data;
}
}
//void printf(const int8 *format, ...)
//{
//#if(PRINTF) //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EAB6A8>PRINTFΪ0 <20>򲻱<EFBFBD><F2B2BBB1><EFBFBD>printf<74><66><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݣ<EFBFBD><DDA3><EFBFBD><EFBFBD><EFBFBD>printfû<66><C3BB><EFBFBD>κβ<CEBA><CEB2><EFBFBD>
// va_list arg;
// va_start(arg, format);
//
// while (*format)
// {
// int8 ret = *format;
// if (ret == '%')
// {
// switch (*++format)
// {
// case 'a':// ʮ<><CAAE><EFBFBD><EFBFBD><EFBFBD><EFBFBD>p<EFBFBD><70><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>δʵ<CEB4><CAB5>
// {
//
//
// }break;
//
//
// case 'c':// һ<><D2BB><EFBFBD>ַ<EFBFBD>
// {
// int8 ch = (int8)va_arg(arg, uint32);
// uart_putchar(DEBUG_UART, (int8)ch);
//
// }break;
//
//
// case 'd':
// case 'i':// <20>з<EFBFBD><D0B7><EFBFBD>ʮ<EFBFBD><CAAE><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// {
// int8 vstr[33];
// int32 ival = (int32)va_arg(arg, int32);
// uint8 vlen = number_conversion_ascii((uint32)ival, vstr, 1, 10);
// if(ival<0) uart_putchar(DEBUG_UART, '-');
// printf_reverse_order(vstr,vlen);
// uart_putbuff(DEBUG_UART, (uint8 *)vstr,vlen);
// }break;
//
// case 'f':// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>С<EFBFBD><D0A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>λ <20><><EFBFBD><EFBFBD>ָ<EFBFBD><D6B8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// case 'F':// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>С<EFBFBD><D0A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>λ <20><><EFBFBD><EFBFBD>ָ<EFBFBD><D6B8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// {
// int8 vstr[33];
// double ival = (double)va_arg(arg, double);
// uint8 vlen = number_conversion_ascii((uint32)(int32)ival, vstr, 1, 10);
// if(ival<0) uart_putchar(DEBUG_UART, '-');
// printf_reverse_order(vstr,vlen);
// uart_putbuff(DEBUG_UART, (uint8 *)vstr,vlen);
// uart_putchar(DEBUG_UART, '.');
// ival = ((double)ival - (int32)ival)*1000000;
// vlen = number_conversion_ascii((uint32)(int32)ival, vstr, 1, 10);
// while(6>vlen)
// {
// vstr[vlen] = '0';
// vlen++;
// }
// printf_reverse_order(vstr,vlen);
// uart_putbuff(DEBUG_UART, (uint8 *)vstr,vlen);
// break;
// }
//
// case 'u':// <20>޷<EFBFBD><DEB7><EFBFBD>ʮ<EFBFBD><CAAE><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// {
// int8 vstr[33];
// uint32 ival = (uint32)va_arg(arg, uint32);
// uint8 vlen = number_conversion_ascii(ival, vstr, 0, 10);
// printf_reverse_order(vstr,vlen);
// uart_putbuff(DEBUG_UART, (uint8 *)vstr,vlen);
// }break;
//
// case 'o':// <20>޷<EFBFBD><DEB7>Ű˽<C5B0><CBBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// {
// int8 vstr[33];
// uint32 ival = (uint32)va_arg(arg, uint32);
// uint8 vlen = number_conversion_ascii(ival, vstr, 0, 8);
// printf_reverse_order(vstr,vlen);
// uart_putbuff(DEBUG_UART, (uint8 *)vstr,vlen);
//
// }break;
//
// case 'x':// <20>޷<EFBFBD><DEB7><EFBFBD>ʮ<EFBFBD><CAAE><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// case 'X':// <20>޷<EFBFBD><DEB7><EFBFBD>ʮ<EFBFBD><CAAE><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// {
// int8 vstr[33];
// uint32 ival = (uint32)va_arg(arg, uint32);
// uint8 vlen = number_conversion_ascii(ival, vstr, 0, 16);
// printf_reverse_order(vstr,vlen);
// uart_putbuff(DEBUG_UART, (uint8 *)vstr,vlen);
// }break;
//
//
// case 's':// <20>ַ<EFBFBD><D6B7><EFBFBD>
// {
// int8 *pc = va_arg(arg, int8 *);
// while (*pc)
// {
// uart_putchar(DEBUG_UART, (int8)(*pc));
// pc++;
// }
// }break;
//
// case 'p':// <20><>16<31><36><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʽ<EFBFBD><CABD><EFBFBD><EFBFBD>ָ<EFBFBD><D6B8>
// {
// int8 vstr[33];
// uint32 ival = (uint32)va_arg(arg, uint32);
// uint8 vlen = number_conversion_ascii(ival, vstr, 0, 16);
// printf_reverse_order(vstr,8);
// uart_putbuff(DEBUG_UART, (uint8 *)vstr,8);
//
// }break;
//
//
// case '%':// <20><><EFBFBD><EFBFBD><EFBFBD>ַ<EFBFBD>%
// {
// uart_putchar(DEBUG_UART, '%');
// }break;
// default:break;
// }
// }
// else
// {
// uart_putchar(DEBUG_UART, (int8)(*format));
// }
// format++;
// }
// va_end(arg);
//#endif
//}
uint32 zf_sprintf(int8 *buff, const int8 *format, ...)
{
uint32 buff_len=0;
va_list arg;
va_start(arg, format);
while (*format)
{
int8 ret = *format;
if (ret == '%')
{
switch (*++format)
{
case 'a':// ʮ<><CAAE><EFBFBD><EFBFBD><EFBFBD><EFBFBD>p<EFBFBD><70><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>δʵ<CEB4><CAB5>
{
}break;
case 'c':// һ<><D2BB><EFBFBD>ַ<EFBFBD>
{
int8 ch = (int8)va_arg(arg, uint32);
*buff = ch;
buff++;
buff_len++;
}break;
case 'd':
case 'i':// <20>з<EFBFBD><D0B7><EFBFBD>ʮ<EFBFBD><CAAE><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
{
int8 vstr[33];
int32 ival = (int32)va_arg(arg, int32);
uint8 vlen = number_conversion_ascii((uint32)ival, vstr, 1, 10);
if(ival<0)
{
vstr[vlen] = '-';
vlen++;
}
printf_reverse_order(vstr,vlen);
memcpy(buff,vstr,vlen);
buff += vlen;
buff_len += vlen;
}break;
case 'f':// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>С<EFBFBD><D0A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>λ <20><><EFBFBD><EFBFBD>ָ<EFBFBD><D6B8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
case 'F':// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>С<EFBFBD><D0A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>λ <20><><EFBFBD><EFBFBD>ָ<EFBFBD><D6B8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
{
int8 vstr[33];
double ival = (double)va_arg(arg, double);
uint8 vlen = number_conversion_ascii((uint32)(int32)ival, vstr, 1, 10);
if(ival<0)
{
vstr[vlen] = '-';
vlen++;
}
printf_reverse_order(vstr,vlen);
memcpy(buff,vstr,vlen);
buff += vlen;
buff_len += vlen;
ival = ((double)ival - (int32)ival)*1000000;
if(ival)
{
vlen = number_conversion_ascii((uint32)(int32)ival, vstr, 1, 10);
}
else
{
vstr[0] = vstr[1] = vstr[2] = vstr[3] = vstr[4] = vstr[5] = '0';
vlen = 6;
}
while(6>vlen)
{
vstr[vlen] = '0';
vlen++;
}
vstr[vlen] = '.';
vlen++;
printf_reverse_order(vstr,vlen);
memcpy(buff,vstr,vlen);
buff_len += vlen;
break;
}
case 'u':// <20>޷<EFBFBD><DEB7><EFBFBD>ʮ<EFBFBD><CAAE><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
{
int8 vstr[33];
uint32 ival = (uint32)va_arg(arg, uint32);
uint8 vlen = number_conversion_ascii(ival, vstr, 0, 10);
printf_reverse_order(vstr,vlen);
memcpy(buff,vstr,vlen);
buff += vlen;
buff_len += vlen;
}break;
case 'o':// <20>޷<EFBFBD><DEB7>Ű˽<C5B0><CBBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
{
int8 vstr[33];
uint32 ival = (uint32)va_arg(arg, uint32);
uint8 vlen = number_conversion_ascii(ival, vstr, 0, 8);
printf_reverse_order(vstr,vlen);
memcpy(buff,vstr,vlen);
buff += vlen;
buff_len += vlen;
}break;
case 'x':// <20>޷<EFBFBD><DEB7><EFBFBD>ʮ<EFBFBD><CAAE><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
case 'X':// <20>޷<EFBFBD><DEB7><EFBFBD>ʮ<EFBFBD><CAAE><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
{
int8 vstr[33];
uint32 ival = (uint32)va_arg(arg, uint32);
uint8 vlen = number_conversion_ascii(ival, vstr, 0, 16);
printf_reverse_order(vstr,vlen);
memcpy(buff,vstr,vlen);
buff += vlen;
buff_len += vlen;
}break;
case 's':// <20>ַ<EFBFBD><D6B7><EFBFBD>
{
int8 *pc = va_arg(arg, int8 *);
while (*pc)
{
*buff = *pc;
buff++;
buff_len++;
pc++;
}
}break;
case 'p':// <20><>16<31><36><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʽ<EFBFBD><CABD><EFBFBD><EFBFBD>ָ<EFBFBD><D6B8>
{
int8 vstr[33];
uint32 ival = (uint32)va_arg(arg, uint32);
//uint8 vlen = number_conversion_ascii(ival, vstr, 0, 16);
number_conversion_ascii(ival, vstr, 0, 16);
printf_reverse_order(vstr,8);
memcpy(buff,vstr,8);
buff += 8;
buff_len += 8;
}break;
case '%':// <20><><EFBFBD><EFBFBD><EFBFBD>ַ<EFBFBD>%
{
*buff = '%';
buff++;
buff_len++;
}break;
default:break;
}
}
else
{
*buff = (int8)(*format);
buff++;
buff_len++;
}
format++;
}
va_end(arg);
return buff_len;
}

View File

@@ -1,31 +0,0 @@
/*********************************************************************************************************************
* COPYRIGHT NOTICE
* Copyright (c) 2020,<2C><><EFBFBD>ɿƼ<C9BF>
* All rights reserved.
* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>QQȺ<51><C8BA><EFBFBD><EFBFBD>Ⱥ<EFBFBD><C8BA>824575535
*
* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݰ<EFBFBD>Ȩ<EFBFBD><C8A8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɿƼ<C9BF><C6BC><EFBFBD><EFBFBD>У<EFBFBD>δ<EFBFBD><CEB4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ҵ<EFBFBD><D2B5>;<EFBFBD><CDBE>
* <20><>ӭ<EFBFBD><D3AD>λʹ<CEBB>ò<EFBFBD><C3B2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>޸<EFBFBD><DEB8><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EBB1A3><EFBFBD><EFBFBD><EFBFBD>ɿƼ<C9BF><C6BC>İ<EFBFBD>Ȩ<EFBFBD><C8A8><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
*
* @file printf
* @company <09>ɶ<EFBFBD><C9B6><EFBFBD><EFBFBD>ɿƼ<C9BF><C6BC><EFBFBD><EFBFBD>޹<EFBFBD>˾
* @author <09><><EFBFBD>ɿƼ<C9BF>(QQ3184284598)
* @version <09>鿴doc<6F><63>version<6F>ļ<EFBFBD> <20>汾˵<E6B1BE><CBB5>
* @Software ADS v1.2.2
* @Target core TC264D
* @Taobao https://seekfree.taobao.com/
* @date 2020-3-23
********************************************************************************************************************/
#ifndef _SEEKFREE_PRINTF_h
#define _SEEKFREE_PRINTF_h
#include "common.h"
//void printf(const char *format, ...);
uint32 zf_sprintf(char *buf, const char *fmt, ...);
#endif

View File

@@ -1,52 +0,0 @@
/*********************************************************************************************************************
* COPYRIGHT NOTICE
* Copyright (c) 2020,<2C><><EFBFBD>ɿƼ<C9BF>
* All rights reserved.
* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>QQȺ<51><C8BA><EFBFBD><EFBFBD>Ⱥ<EFBFBD><C8BA>824575535
*
* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݰ<EFBFBD>Ȩ<EFBFBD><C8A8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɿƼ<C9BF><C6BC><EFBFBD><EFBFBD>У<EFBFBD>δ<EFBFBD><CEB4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ҵ<EFBFBD><D2B5>;<EFBFBD><CDBE>
* <20><>ӭ<EFBFBD><D3AD>λʹ<CEBB>ò<EFBFBD><C3B2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>޸<EFBFBD><DEB8><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EBB1A3><EFBFBD><EFBFBD><EFBFBD>ɿƼ<C9BF><C6BC>İ<EFBFBD>Ȩ<EFBFBD><C8A8><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
*
* @file common
* @company <09>ɶ<EFBFBD><C9B6><EFBFBD><EFBFBD>ɿƼ<C9BF><C6BC><EFBFBD><EFBFBD>޹<EFBFBD>˾
* @author <09><><EFBFBD>ɿƼ<C9BF>(QQ3184284598)
* @version <09>鿴doc<6F><63>version<6F>ļ<EFBFBD> <20>汾˵<E6B1BE><CBB5>
* @Software ADS v1.2.2
* @Target core TC264D
* @Taobao https://seekfree.taobao.com/
* @date 2020-3-23
********************************************************************************************************************/
#include "Cpu0_Main.h"
#include "IfxScuEru.h"
#include "SysSe/Bsp/Bsp.h"
#include "TC264_config.h"
#include "zf_uart.h"
#include "common.h"
CAMERA_TYPE_enum camera_type; //<2F><><EFBFBD><EFBFBD>ͷ<EFBFBD>ͺ<EFBFBD>
uint8 *camera_buffer_addr; //<2F><><EFBFBD><EFBFBD>ͷ<EFBFBD><CDB7><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ַ
WIRELESS_TYPE_enum wireless_type;//<2F><><EFBFBD><EFBFBD>ת<EFBFBD><D7AA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
GPS_TYPE_enum gps_type; //gps<70><73><EFBFBD><EFBFBD>
IFX_ALIGN(4) IfxCpu_syncEvent g_cpuSyncEvent = 0;//<2F>¼<EFBFBD>ͬ<EFBFBD><CDAC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
App_Cpu0 g_AppCpu0; //Ƶ<><C6B5><EFBFBD><EFBFBD>Ϣ<EFBFBD><CFA2><EFBFBD><EFBFBD>
void get_clk(void)
{
disableInterrupts();
//<2F><><EFBFBD>ÿ<EFBFBD><C3BF>Ź<EFBFBD>
IfxScuWdt_disableCpuWatchdog(IfxScuWdt_getCpuWatchdogPassword());
IfxScuWdt_disableSafetyWatchdog(IfxScuWdt_getSafetyWatchdogPassword());
//<2F><>ȡʱ<C8A1><CAB1>Ƶ<EFBFBD>ʣ<EFBFBD><CAA3><EFBFBD><EFBFBD>ڲ鿴<DAB2><E9BFB4>ǰϵͳ<CFB5><CDB3><EFBFBD><EFBFBD>Ƶ<EFBFBD><C6B5>
g_AppCpu0.info.pllFreq = IfxScuCcu_getPllFrequency();
g_AppCpu0.info.cpuFreq = IfxScuCcu_getCpuFrequency(IfxCpu_getCoreIndex());
g_AppCpu0.info.sysFreq = IfxScuCcu_getSpbFrequency();
g_AppCpu0.info.stmFreq = IfxStm_getFrequency(&MODULE_STM0);
#if(PRINTF_ENABLE)
uart_init(DEBUG_UART, DEBUG_UART_BAUD, DEBUG_UART_TX_PIN, DEBUG_UART_RX_PIN);
#endif
}

View File

@@ -1,140 +0,0 @@
/*********************************************************************************************************************
* COPYRIGHT NOTICE
* Copyright (c) 2020,<2C><><EFBFBD>ɿƼ<C9BF>
* All rights reserved.
* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>QQȺ<51><C8BA><EFBFBD><EFBFBD>Ⱥ<EFBFBD><C8BA>824575535
*
* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݰ<EFBFBD>Ȩ<EFBFBD><C8A8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɿƼ<C9BF><C6BC><EFBFBD><EFBFBD>У<EFBFBD>δ<EFBFBD><CEB4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ҵ<EFBFBD><D2B5>;<EFBFBD><CDBE>
* <20><>ӭ<EFBFBD><D3AD>λʹ<CEBB>ò<EFBFBD><C3B2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>޸<EFBFBD><DEB8><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EBB1A3><EFBFBD><EFBFBD><EFBFBD>ɿƼ<C9BF><C6BC>İ<EFBFBD>Ȩ<EFBFBD><C8A8><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
*
* @file common
* @company <09>ɶ<EFBFBD><C9B6><EFBFBD><EFBFBD>ɿƼ<C9BF><C6BC><EFBFBD><EFBFBD>޹<EFBFBD>˾
* @author <09><><EFBFBD>ɿƼ<C9BF>(QQ3184284598)
* @version <09>鿴doc<6F><63>version<6F>ļ<EFBFBD> <20>汾˵<E6B1BE><CBB5>
* @Software ADS v1.2.2
* @Target core TC264D
* @Taobao https://seekfree.taobao.com/
* @date 2020-3-23
********************************************************************************************************************/
#ifndef _common_h
#define _common_h
#include "PLATFORM_TYPES.H"
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
//typedef unsigned char uint8; // 8 bits
//typedef unsigned short int uint16; // 16 bits
//typedef unsigned long int uint32; // 32 bits
//typedef unsigned long long uint64; // 64 bits
typedef char int8; // 8 bits
typedef short int int16; // 16 bits
typedef long int int32; // 32 bits
typedef long long int64; // 64 bits
typedef volatile int8 vint8; // 8 bits
typedef volatile int16 vint16; // 16 bits
typedef volatile int32 vint32; // 32 bits
typedef volatile int64 vint64; // 64 bits
typedef volatile uint8 vuint8; // 8 bits
typedef volatile uint16 vuint16; // 16 bits
typedef volatile uint32 vuint32; // 32 bits
typedef volatile uint64 vuint64; // 64 bits
typedef enum //ö<>ٶ˿<D9B6>
{
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>IOʱ<4F><CAB1><EFBFBD><EFBFBD><EFBFBD>и<EFBFBD><D0B8><EFBFBD>Ӳ<EFBFBD><D3B2>ȷ<EFBFBD>ϵ<EFBFBD>ǰоƬ<D0BE>Ƿ<EFBFBD><C7B7><EFBFBD><EFBFBD>д<EFBFBD>IO
P00_0 = 0*32, P00_1, P00_2, P00_3, P00_4, P00_5, P00_6, P00_7,
P00_8, P00_9, P00_10, P00_11, P00_12, P00_13, P00_14, P00_15,
P02_0 = 2*32, P02_1, P02_2, P02_3, P02_4, P02_5, P02_6, P02_7,
P02_8, P02_9, P02_10, P02_11, P02_12, P02_13, P02_14, P02_15,
P10_0 = 10*32, P10_1, P10_2, P10_3, P10_4, P10_5, P10_6, P10_7,
P10_8, P10_9, P10_10, P10_11, P10_12, P10_13, P10_14, P10_15,
P11_0 = 11*32, P11_1, P11_2, P11_3, P11_4, P11_5, P11_6, P11_7,
P11_8, P11_9, P11_10, P11_11, P11_12, P11_13, P11_14, P11_15,
P13_0 = 13*32, P13_1, P13_2, P13_3, P13_4, P13_5, P13_6, P13_7,
P13_8, P13_9, P13_10, P13_11, P13_12, P13_13, P13_14, P13_15,
P14_0 = 14*32, P14_1, P14_2, P14_3, P14_4, P14_5, P14_6, P14_7,
P14_8, P14_9, P14_10, P14_11, P14_12, P14_13, P14_14, P14_15,
P15_0 = 15*32, P15_1, P15_2, P15_3, P15_4, P15_5, P15_6, P15_7,
P15_8, P15_9, P15_10, P15_11, P15_12, P15_13, P15_14, P15_15,
P20_0 = 20*32, P20_1, P20_2, P20_3, P20_4, P20_5, P20_6, P20_7,
P20_8, P20_9, P20_10, P20_11, P20_12, P20_13, P20_14, P20_15,
P21_0 = 21*32, P21_1, P21_2, P21_3, P21_4, P21_5, P21_6, P21_7,
P21_8, P21_9, P21_10, P21_11, P21_12, P21_13, P21_14, P21_15,
P22_0 = 22*32, P22_1, P22_2, P22_3, P22_4, P22_5, P22_6, P22_7,
P22_8, P22_9, P22_10, P22_11, P22_12, P22_13, P22_14, P22_15,
P23_0 = 23*32, P23_1, P23_2, P23_3, P23_4, P23_5, P23_6, P23_7,
P23_8, P23_9, P23_10, P23_11, P23_12, P23_13, P23_14, P23_15,
P32_0 = 32*32, P32_1, P32_2, P32_3, P32_4, P32_5, P32_6, P32_7,
P32_8, P32_9, P32_10, P32_11, P32_12, P32_13, P32_14, P32_15,
P33_0 = 33*32, P33_1, P33_2, P33_3, P33_4, P33_5, P33_6, P33_7,
P33_8, P33_9, P33_10, P33_11, P33_12, P33_13, P33_14, P33_15,
}PIN_enum;
typedef enum //ö<>ٶ˿ڷ<CBBF><DAB7><EFBFBD>
{
GPI = 0, //<2F><><EFBFBD><EFBFBD><EFBFBD>ܽ<EFBFBD><DCBD><EFBFBD><EFBFBD><EFBFBD><EBB7BD>
GPO = 1, //<2F><><EFBFBD><EFBFBD><EFBFBD>ܽ<EFBFBD><DCBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
}GPIODIR_enum;
typedef enum //ö<>ٶ˿ڵ<CBBF>ƽ
{
GPIO_LOW = 0, //<2F><><EFBFBD><EFBFBD><EFBFBD>͵<EFBFBD>ƽ
GPIO_HIGH = 1, //<2F><><EFBFBD><EFBFBD><EFBFBD>ߵ<EFBFBD>ƽ
}GPIOLEVEL_enum;
typedef enum //ö<>ٶ˿ڵ<CBBF>ƽ
{
CAMERA_BIN=1, //С<><D0A1><EFBFBD><EFBFBD>
CAMERA_BIN_UART, //С<><D0A1><EFBFBD><EFBFBD>ڰ汾
CAMERA_GRAYSCALE, //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
CAMERA_COLOR, //<2F><>ͫ
}CAMERA_TYPE_enum;
typedef enum //<2F><><EFBFBD><EFBFBD>ģ<EFBFBD><C4A3>
{
WIRELESS_SI24R1 = 1, //<2F><><EFBFBD><EFBFBD>ת<EFBFBD><D7AA><EFBFBD><EFBFBD>
WIRELESS_CH9141, //<2F><><EFBFBD><EFBFBD>ת<EFBFBD><D7AA><EFBFBD><EFBFBD>
}WIRELESS_TYPE_enum;
typedef enum //<2F><><EFBFBD><EFBFBD>ģ<EFBFBD><C4A3>
{
GPS_TAU1201 = 1, //<2F><><EFBFBD>󱱶<EFBFBD>GPSģ<53><C4A3>
}GPS_TYPE_enum;
#include <math.h>
#include <string.h>
#include "IfxCpu.h"
extern CAMERA_TYPE_enum camera_type; //<2F><><EFBFBD><EFBFBD>ͷ<EFBFBD>ͺ<EFBFBD>
extern uint8 *camera_buffer_addr; //<2F><><EFBFBD><EFBFBD>ͷ<EFBFBD><CDB7><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ַ
extern WIRELESS_TYPE_enum wireless_type;
extern GPS_TYPE_enum gps_type;
extern IfxCpu_syncEvent g_cpuSyncEvent;
void get_clk(void);
#endif

View File

@@ -1,37 +0,0 @@
/*********************************************************************************************************************
* COPYRIGHT NOTICE
* Copyright (c) 2020,<2C><><EFBFBD>ɿƼ<C9BF>
* All rights reserved.
* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>QQȺ<51><C8BA><EFBFBD><EFBFBD>Ⱥ<EFBFBD><C8BA>824575535
*
* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݰ<EFBFBD>Ȩ<EFBFBD><C8A8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɿƼ<C9BF><C6BC><EFBFBD><EFBFBD>У<EFBFBD>δ<EFBFBD><CEB4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ҵ<EFBFBD><D2B5>;<EFBFBD><CDBE>
* <20><>ӭ<EFBFBD><D3AD>λʹ<CEBB>ò<EFBFBD><C3B2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>޸<EFBFBD><DEB8><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EBB1A3><EFBFBD><EFBFBD><EFBFBD>ɿƼ<C9BF><C6BC>İ<EFBFBD>Ȩ<EFBFBD><C8A8><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
*
* @file zf_assert
* @company <09>ɶ<EFBFBD><C9B6><EFBFBD><EFBFBD>ɿƼ<C9BF><C6BC><EFBFBD><EFBFBD>޹<EFBFBD>˾
* @author <09><><EFBFBD>ɿƼ<C9BF>(QQ3184284598)
* @version <09>鿴doc<6F><63>version<6F>ļ<EFBFBD> <20>汾˵<E6B1BE><CBB5>
* @Software ADS v1.2.2
* @Target core TC264D
* @Taobao https://seekfree.taobao.com/
* @date 2020-3-23
********************************************************************************************************************/
#include "stdio.h"
#include "TC264_config.h"
#include "zf_assert.h"
void assert(pchar __file, unsigned int __line, pchar __function)
{
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Դ<EFBFBD><D4B4><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD>Ŀ¼ <20><><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD><C4BC><EFBFBD> <20><><EFBFBD>ú<EFBFBD><C3BA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
#if(DEBUG_PRINTF)
printf("ASSERTION: %s %d %s\n",__file, __line, __function);
#endif
#pragma warning 507
while(TRUE)
{
//<2F>ȴ<EFBFBD><C8B4><EFBFBD><EFBFBD><EFBFBD>Ա<EFBFBD><D4B1><EFBFBD><EFBFBD> <20><><EFBFBD>Դ<EFBFBD><D4B4><EFBFBD>
}
#pragma warning default
}

View File

@@ -1,32 +0,0 @@
/*********************************************************************************************************************
* COPYRIGHT NOTICE
* Copyright (c) 2020,<2C><><EFBFBD>ɿƼ<C9BF>
* All rights reserved.
* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>QQȺ<51><C8BA><EFBFBD><EFBFBD>Ⱥ<EFBFBD><C8BA>824575535
*
* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݰ<EFBFBD>Ȩ<EFBFBD><C8A8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɿƼ<C9BF><C6BC><EFBFBD><EFBFBD>У<EFBFBD>δ<EFBFBD><CEB4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ҵ<EFBFBD><D2B5>;<EFBFBD><CDBE>
* <20><>ӭ<EFBFBD><D3AD>λʹ<CEBB>ò<EFBFBD><C3B2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>޸<EFBFBD><DEB8><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EBB1A3><EFBFBD><EFBFBD><EFBFBD>ɿƼ<C9BF><C6BC>İ<EFBFBD>Ȩ<EFBFBD><C8A8><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
*
* @file zf_assert
* @company <09>ɶ<EFBFBD><C9B6><EFBFBD><EFBFBD>ɿƼ<C9BF><C6BC><EFBFBD><EFBFBD>޹<EFBFBD>˾
* @author <09><><EFBFBD>ɿƼ<C9BF>(QQ3184284598)
* @version <09>鿴doc<6F><63>version<6F>ļ<EFBFBD> <20>汾˵<E6B1BE><CBB5>
* @Software ADS v1.2.2
* @Target core TC264D
* @Taobao https://seekfree.taobao.com/
* @date 2020-3-23
********************************************************************************************************************/
#ifndef _zf_assert_h
#define _zf_assert_h
#include "Ifx_Types.h"
void assert(pchar __file, unsigned int __line, pchar __function);
#define ZF_ASSERT(expr) ((expr) ? ((void)0) : assert(__FILE__, __LINE__, __func__))
#endif

View File

@@ -1,73 +0,0 @@
/*********************************************************************************************************************
* COPYRIGHT NOTICE
* Copyright (c) 2020,<2C><><EFBFBD>ɿƼ<C9BF>
* All rights reserved.
* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>QQȺ<51><C8BA><EFBFBD><EFBFBD>Ⱥ<EFBFBD><C8BA>824575535
*
* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݰ<EFBFBD>Ȩ<EFBFBD><C8A8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɿƼ<C9BF><C6BC><EFBFBD><EFBFBD>У<EFBFBD>δ<EFBFBD><CEB4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ҵ<EFBFBD><D2B5>;<EFBFBD><CDBE>
* <20><>ӭ<EFBFBD><D3AD>λʹ<CEBB>ò<EFBFBD><C3B2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>޸<EFBFBD><DEB8><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EBB1A3><EFBFBD><EFBFBD><EFBFBD>ɿƼ<C9BF><C6BC>İ<EFBFBD>Ȩ<EFBFBD><C8A8><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
*
* @file headfile
* @company <09>ɶ<EFBFBD><C9B6><EFBFBD><EFBFBD>ɿƼ<C9BF><C6BC><EFBFBD><EFBFBD>޹<EFBFBD>˾
* @author <09><><EFBFBD>ɿƼ<C9BF>(QQ3184284598)
* @version <09>鿴doc<6F><63>version<6F>ļ<EFBFBD> <20>汾˵<E6B1BE><CBB5>
* @Software ADS v1.2.2
* @Target core TC264D
* @Taobao https://seekfree.taobao.com/
* @date 2020-3-23
********************************************************************************************************************/
#ifndef _headfile_h
#define _headfile_h
#include "SEEKFREE_PRINTF.h"
#include "zf_assert.h"
#include "stdio.h"
#include "math.h"
//<2F>ٷ<EFBFBD>ͷ<EFBFBD>ļ<EFBFBD>
#include "ifxAsclin_reg.h"
#include "SysSe/Bsp/Bsp.h"
#include "IfxCcu6_Timer.h"
#include "IfxScuEru.h"
//------<2D><><EFBFBD>ɿƼ<C9BF><C6BC><EFBFBD>Ƭ<EFBFBD><C6AC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͷ<EFBFBD>ļ<EFBFBD>
#include "zf_gpio.h"
#include "zf_gtm_pwm.h"
#include "zf_uart.h"
#include "zf_ccu6_pit.h"
#include "zf_stm_systick.h"
#include "zf_spi.h"
#include "zf_eru.h"
#include "zf_eru_dma.h"
#include "zf_vadc.h"
#include "zf_gpt12.h"
#include "zf_eeprom.h"
//------<2D><><EFBFBD>ɿƼ<C9BF><C6BC><EFBFBD>Ʒ<EFBFBD><C6B7><EFBFBD><EFBFBD>ͷ<EFBFBD>ļ<EFBFBD>
#include "SEEKFREE_18TFT.h"
#include "SEEKFREE_FONT.h"
#include "SEEKFREE_FUN.h"
#include "SEEKFREE_IIC.h"
#include "SEEKFREE_IPS114_SPI.h"
#include "SEEKFREE_OLED.h"
#include "SEEKFREE_VIRSCO.h"
#include "SEEKFREE_MT9V03X.h"
#include "SEEKFREE_ICM20602.h"
#include "SEEKFREE_MPU6050.h"
#include "SEEKFREE_IMU963RA.h"
#include "SEEKFREE_MMA8451.h"
#include "SEEKFREE_L3G4200D.h"
#include "SEEKFREE_WIRELESS.h"
#include "SEEKFREE_IPS200.h"
#include "SEEKFREE_7725.h"
#include "SEEKFREE_RDA5807.h"
#include "SEEKFREE_7725_UART.h"
#include "SEEKFREE_BLUETOOTH_CH9141.h"
#include "SEEKFREE_GPS_TAU1201.h"
#endif

View File

@@ -1,198 +0,0 @@
/*********************************************************************************************************************
* COPYRIGHT NOTICE
* Copyright (c) 2020,<2C><><EFBFBD>ɿƼ<C9BF>
* All rights reserved.
* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>QQȺ<51><C8BA><EFBFBD><EFBFBD>Ⱥ<EFBFBD><C8BA>824575535
*
* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݰ<EFBFBD>Ȩ<EFBFBD><C8A8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɿƼ<C9BF><C6BC><EFBFBD><EFBFBD>У<EFBFBD>δ<EFBFBD><CEB4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ҵ<EFBFBD><D2B5>;<EFBFBD><CDBE>
* <20><>ӭ<EFBFBD><D3AD>λʹ<CEBB>ò<EFBFBD><C3B2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>޸<EFBFBD><DEB8><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EBB1A3><EFBFBD><EFBFBD><EFBFBD>ɿƼ<C9BF><C6BC>İ<EFBFBD>Ȩ<EFBFBD><C8A8><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
*
* @file ccu6_pit
* @company <09>ɶ<EFBFBD><C9B6><EFBFBD><EFBFBD>ɿƼ<C9BF><C6BC><EFBFBD><EFBFBD>޹<EFBFBD>˾
* @author <09><><EFBFBD>ɿƼ<C9BF>(QQ3184284598)
* @version <09>鿴doc<6F><63>version<6F>ļ<EFBFBD> <20>汾˵<E6B1BE><CBB5>
* @Software ADS v1.2.2
* @Target core TC264D
* @Taobao https://seekfree.taobao.com/
* @date 2020-3-23
********************************************************************************************************************/
#include "IfxCcu6_Timer.h"
#include "SysSe/Bsp/Bsp.h"
#include "isr_config.h"
#include "zf_ccu6_pit.h"
//-------------------------------------------------------------------------------------------------------------------
// @brief pit<69><74>ʼ<EFBFBD><CABC>
// @param ccu6n ѡ<><D1A1>CCU6ģ<36><C4A3>(CCU6_0<5F><30>CCU6_1)
// @param pit_ch ѡ<><D1A1>ͨ<EFBFBD><CDA8>(PIT_CH0<48><30>PIT_CH1)
// @param time <20><><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1>
// @return void
// @note <09><>ʹ<EFBFBD><CAB9>.h<>ļ<EFBFBD><C4BC><EFBFBD> <20><>ʱ<EFBFBD>䵥λ<E4B5A5>ĺ궨<C4BA><EFBFBD><E5BAAF>
// Sample usage: pit_init(CCU6_0, PIT_CH0, 5000); //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ж<EFBFBD>5000us
//-------------------------------------------------------------------------------------------------------------------
void pit_init(CCU6N_enum ccu6n, CCU6_CHN_enum pit_ch, uint32 time)
{
uint8 i;
volatile Ifx_CCU6 *module;
uint64 timer_input_clk;
IfxCcu6_Timer g_Ccu6Timer;
IfxCcu6_Timer_Config timerConfig;
uint32 timer_period;
boolean interrupt_state = disableInterrupts();
module = IfxCcu6_getAddress((IfxCcu6_Index)ccu6n);
IfxCcu6_Timer_initModuleConfig(&timerConfig, module);
timer_input_clk = IfxScuCcu_getSpbFrequency();
i = 0;
while(i<16)
{
timer_period = (uint32)(timer_input_clk * time / 1000000);
if(timer_period < 0xffff) break;
timer_input_clk >>= 1;
i++;
}
if(16 <= i) IFX_ASSERT(IFX_VERBOSE_LEVEL_ERROR, FALSE);
switch(ccu6n)
{
case CCU6_0:
{
if(PIT_CH0 == pit_ch)
{
timerConfig.interrupt1.typeOfService = CCU6_0_CH0_INT_SERVICE;
timerConfig.interrupt1.priority = CCU6_0_CH0_ISR_PRIORITY;
}
else
{
timerConfig.interrupt2.typeOfService = CCU6_0_CH1_INT_SERVICE;
timerConfig.interrupt2.priority = CCU6_0_CH1_ISR_PRIORITY;
}
}break;
case CCU6_1:
{
if(PIT_CH0 == pit_ch)
{
timerConfig.interrupt1.typeOfService = CCU6_1_CH0_INT_SERVICE;
timerConfig.interrupt1.priority = CCU6_1_CH0_ISR_PRIORITY;
}
else
{
timerConfig.interrupt2.typeOfService = CCU6_1_CH1_INT_SERVICE;
timerConfig.interrupt2.priority = CCU6_1_CH1_ISR_PRIORITY;
}
}break;
}
if(PIT_CH0 == pit_ch)
{
timerConfig.timer = IfxCcu6_TimerId_t12;
timerConfig.interrupt1.source = IfxCcu6_InterruptSource_t12PeriodMatch;
timerConfig.interrupt1.serviceRequest = IfxCcu6_ServiceRequest_1;
timerConfig.base.t12Period = timer_period;
timerConfig.base.t12Frequency = (float)timer_input_clk;
timerConfig.clock.t12countingInputMode = IfxCcu6_CountingInputMode_internal;
}
else
{
timerConfig.timer = IfxCcu6_TimerId_t13;
timerConfig.interrupt2.source = IfxCcu6_InterruptSource_t13PeriodMatch;
timerConfig.interrupt2.serviceRequest = IfxCcu6_ServiceRequest_2;
timerConfig.base.t13Period = timer_period;
timerConfig.base.t13Frequency = (float)timer_input_clk;
timerConfig.clock.t13countingInputMode = IfxCcu6_CountingInputMode_internal;
}
timerConfig.timer12.counterValue = 0;
timerConfig.timer13.counterValue = 0;
timerConfig.trigger.t13InSyncWithT12 = FALSE;
IfxCcu6_Timer_initModule(&g_Ccu6Timer, &timerConfig);
restoreInterrupts(interrupt_state);
IfxCcu6_setSuspendMode(module, IfxCcu6_SuspendMode_hard);
IfxCcu6_Timer_start(&g_Ccu6Timer);
}
//-------------------------------------------------------------------------------------------------------------------
// @brief pit<69>ر<EFBFBD>
// @param ccu6n ѡ<><D1A1>CCU6ģ<36><C4A3>(CCU6_0<5F><30>CCU6_1)
// @param pit_ch ѡ<><D1A1>ͨ<EFBFBD><CDA8>(PIT_CH0<48><30>PIT_CH1)
// @return void
// @note
// Sample usage: pit_close(CCU6_0, PIT_CH0); //<2F>ر<EFBFBD>CCU60 ͨ<><CDA8>0<EFBFBD>ļ<EFBFBD>ʱ<EFBFBD><CAB1>
//-------------------------------------------------------------------------------------------------------------------
void pit_close(CCU6N_enum ccu6n, CCU6_CHN_enum pit_ch)
{
volatile Ifx_CCU6 *module;
IfxCcu6_Timer g_Ccu6Timer;
module = IfxCcu6_getAddress((IfxCcu6_Index)ccu6n);
g_Ccu6Timer.ccu6 = module;
g_Ccu6Timer.timer = (IfxCcu6_TimerId)(pit_ch);
IfxCcu6_Timer_stop(&g_Ccu6Timer);
}
//-------------------------------------------------------------------------------------------------------------------
// @brief pit<69><74>ʼ
// @param ccu6n ѡ<><D1A1>CCU6ģ<36><C4A3>(CCU6_0<5F><30>CCU6_1)
// @param pit_ch ѡ<><D1A1>ͨ<EFBFBD><CDA8>(PIT_CH0<48><30>PIT_CH1)
// @return void
// @note
// Sample usage: pit_start(CCU6_0, PIT_CH0); //<2F><><EFBFBD><EFBFBD>CCU60 ͨ<><CDA8>0<EFBFBD>ļ<EFBFBD>ʱ<EFBFBD><CAB1>
//-------------------------------------------------------------------------------------------------------------------
void pit_start(CCU6N_enum ccu6n, CCU6_CHN_enum pit_ch)
{
volatile Ifx_CCU6 *module;
IfxCcu6_Timer g_Ccu6Timer;
module = IfxCcu6_getAddress((IfxCcu6_Index)ccu6n);
g_Ccu6Timer.ccu6 = module;
g_Ccu6Timer.timer = (IfxCcu6_TimerId)(pit_ch);
IfxCcu6_Timer_start(&g_Ccu6Timer);
}
//-------------------------------------------------------------------------------------------------------------------
// @brief <20><>ֹpit<69>ж<EFBFBD>
// @param ccu6n ѡ<><D1A1>CCU6ģ<36><C4A3>(CCU6_0<5F><30>CCU6_1)
// @param pit_ch ѡ<><D1A1>ͨ<EFBFBD><CDA8>(PIT_CH0<48><30>PIT_CH1)
// @return void
// @note
// Sample usage: pit_disable_interrupt(CCU6_0, PIT_CH0); //<2F><>ֹCCU60 ͨ<><CDA8>0<EFBFBD><30><EFBFBD>ж<EFBFBD>
//-------------------------------------------------------------------------------------------------------------------
void pit_disable_interrupt(CCU6N_enum ccu6n, CCU6_CHN_enum pit_ch)
{
volatile Ifx_CCU6 *module;
module = IfxCcu6_getAddress((IfxCcu6_Index)ccu6n);
IfxCcu6_disableInterrupt(module, pit_ch * 2 + 7);
}
//-------------------------------------------------------------------------------------------------------------------
// @brief ʹ<><CAB9>pit<69>ж<EFBFBD>
// @param ccu6n ѡ<><D1A1>CCU6ģ<36><C4A3>(CCU6_0<5F><30>CCU6_1)
// @param pit_ch ѡ<><D1A1>ͨ<EFBFBD><CDA8>(PIT_CH0<48><30>PIT_CH1)
// @return void
// @note
// Sample usage: pit_enable_interrupt(CCU6_0, PIT_CH0); //<2F><><EFBFBD><EFBFBD>CCU60 ͨ<><CDA8>0<EFBFBD><30><EFBFBD>ж<EFBFBD>
//-------------------------------------------------------------------------------------------------------------------
void pit_enable_interrupt(CCU6N_enum ccu6n, CCU6_CHN_enum pit_ch)
{
volatile Ifx_CCU6 *module;
module = IfxCcu6_getAddress((IfxCcu6_Index)ccu6n);
IfxCcu6_enableInterrupt(module, pit_ch * 2 + 7);
}

View File

@@ -1,62 +0,0 @@
/*********************************************************************************************************************
* COPYRIGHT NOTICE
* Copyright (c) 2020,<2C><><EFBFBD>ɿƼ<C9BF>
* All rights reserved.
* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>QQȺ<51><C8BA><EFBFBD><EFBFBD>Ⱥ<EFBFBD><C8BA>824575535
*
* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݰ<EFBFBD>Ȩ<EFBFBD><C8A8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɿƼ<C9BF><C6BC><EFBFBD><EFBFBD>У<EFBFBD>δ<EFBFBD><CEB4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ҵ<EFBFBD><D2B5>;<EFBFBD><CDBE>
* <20><>ӭ<EFBFBD><D3AD>λʹ<CEBB>ò<EFBFBD><C3B2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>޸<EFBFBD><DEB8><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EBB1A3><EFBFBD><EFBFBD><EFBFBD>ɿƼ<C9BF><C6BC>İ<EFBFBD>Ȩ<EFBFBD><C8A8><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
*
* @file ccu6_pit
* @company <09>ɶ<EFBFBD><C9B6><EFBFBD><EFBFBD>ɿƼ<C9BF><C6BC><EFBFBD><EFBFBD>޹<EFBFBD>˾
* @author <09><><EFBFBD>ɿƼ<C9BF>(QQ3184284598)
* @version <09>鿴doc<6F><63>version<6F>ļ<EFBFBD> <20>汾˵<E6B1BE><CBB5>
* @Software ADS v1.2.2
* @Target core TC264D
* @Taobao https://seekfree.taobao.com/
* @date 2020-3-23
********************************************************************************************************************/
#ifndef _zf_ccu6_pit_h
#define _zf_ccu6_pit_h
#include "common.h"
//<2F><>ö<EFBFBD>ٶ<EFBFBD><D9B6><EFBFBD><E5B2BB><EFBFBD><EFBFBD><EFBFBD>û<EFBFBD><C3BB>޸<EFBFBD>
typedef enum //ö<><C3B6>ģ<EFBFBD><C4A3><EFBFBD><EFBFBD>
{
CCU6_0,
CCU6_1,
}CCU6N_enum;
typedef enum //ö<><C3B6>ͨ<EFBFBD><CDA8><EFBFBD><EFBFBD>
{
PIT_CH0,
PIT_CH1,
}CCU6_CHN_enum;
#define PIT_CLEAR_FLAG(ccu6n,pit_ch) IfxCcu6_clearInterruptStatusFlag(IfxCcu6_getAddress((IfxCcu6_Index)ccu6n), (IfxCcu6_InterruptSource)(7+(pit_ch*2)))
void pit_init(CCU6N_enum ccu6n, CCU6_CHN_enum pit_ch, uint32 time);
void pit_close(CCU6N_enum ccu6n, CCU6_CHN_enum pit_ch);
void pit_start(CCU6N_enum ccu6n, CCU6_CHN_enum pit_ch);
void pit_disable_interrupt(CCU6N_enum ccu6n, CCU6_CHN_enum pit_ch);
void pit_enable_interrupt(CCU6N_enum ccu6n, CCU6_CHN_enum pit_ch);
//------------------------------------<2D><><EFBFBD>´<EFBFBD><C2B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>PIT<49>ж<EFBFBD>------------------------------------
#define pit_interrupt_ms(ccu6n, pit_ch, time) pit_init(ccu6n, pit_ch, time*1000) //(<28><>λΪ <20><><EFBFBD><EFBFBD>)
#define pit_interrupt_us(ccu6n, pit_ch, time) pit_init(ccu6n, pit_ch, time) //(<28><>λΪ ΢<><CEA2>)
#endif

View File

@@ -1,106 +0,0 @@
/*********************************************************************************************************************
* COPYRIGHT NOTICE
* Copyright (c) 2020,<2C><><EFBFBD>ɿƼ<C9BF>
* All rights reserved.
* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>QQȺ<51><C8BA><EFBFBD><EFBFBD>Ⱥ<EFBFBD><C8BA>824575535
*
* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݰ<EFBFBD>Ȩ<EFBFBD><C8A8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɿƼ<C9BF><C6BC><EFBFBD><EFBFBD>У<EFBFBD>δ<EFBFBD><CEB4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ҵ<EFBFBD><D2B5>;<EFBFBD><CDBE>
* <20><>ӭ<EFBFBD><D3AD>λʹ<CEBB>ò<EFBFBD><C3B2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>޸<EFBFBD><DEB8><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EBB1A3><EFBFBD><EFBFBD><EFBFBD>ɿƼ<C9BF><C6BC>İ<EFBFBD>Ȩ<EFBFBD><C8A8><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
*
* @file eeprom(Dflash)
* @company <09>ɶ<EFBFBD><C9B6><EFBFBD><EFBFBD>ɿƼ<C9BF><C6BC><EFBFBD><EFBFBD>޹<EFBFBD>˾
* @author <09><><EFBFBD>ɿƼ<C9BF>(QQ3184284598)
* @version <09>鿴doc<6F><63>version<6F>ļ<EFBFBD> <20>汾˵<E6B1BE><CBB5>
* @Software ADS v1.2.2
* @Target core TC264D
* @Taobao https://seekfree.taobao.com/
* @date 2020-3-23
********************************************************************************************************************/
#include "IfxScuWdt.h"
#include "IfxFlash.h"
#include "zf_assert.h"
#include "zf_eeprom.h"
//-------------------------------------------------------------------------------------------------------------------
// @brief У<><D0A3>FLASH<53>Ƿ<EFBFBD><C7B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// @param sector_num <09><>Ҫд<D2AA><D0B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Χ0-11
// @param page_num <09><>ǰ<EFBFBD><C7B0><EFBFBD><EFBFBD>ҳ<EFBFBD>ı<EFBFBD><C4B1><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Χ0-1023
// @return <09><><EFBFBD><EFBFBD>1<EFBFBD><31><EFBFBD><EFBFBD><EFBFBD>ݣ<EFBFBD><DDA3><EFBFBD><EFBFBD><EFBFBD><30><C3BB><EFBFBD><EFBFBD><EFBFBD>ݣ<EFBFBD><DDA3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ҫ<EFBFBD><D2AA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݵ<EFBFBD><DDB5><EFBFBD><EFBFBD><EFBFBD>д<EFBFBD><D0B4><EFBFBD>µ<EFBFBD><C2B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ӧ<EFBFBD>ö<EFBFBD><C3B6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>в<EFBFBD><D0B2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// @since v1.0
// Sample usage: flash_check(0,0);//У<><D0A3>0<EFBFBD><30><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><30>Ƿ<EFBFBD><C7B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
//-------------------------------------------------------------------------------------------------------------------
uint8 flash_check(uint32 sector_num, uint32 page_num)
{
ZF_ASSERT(EEPROM_SECTOR_NUM>sector_num);
ZF_ASSERT(EEPROM_SECTOR_PAGE_NUM>page_num);
uint32 sector_addr = IfxFlash_dFlashTableEepLog[sector_num].start;
uint32 page_addr = sector_addr + page_num * IFXFLASH_DFLASH_PAGE_LENGTH;
uint32 temp = *(uint32 *)page_addr;
if(0 != temp) return 1;
return 0;
}
//-------------------------------------------------------------------------------------------------------------------
// @brief <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// @param sector_num <09><>Ҫд<D2AA><D0B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Χ0-11
// @return void
// @since v1.0
// Sample usage: eeprom_erase_sector(0);
//-------------------------------------------------------------------------------------------------------------------
void eeprom_erase_sector(uint32 sector_num)
{
ZF_ASSERT(EEPROM_SECTOR_NUM>sector_num);
uint32 flash = 0;
uint16 end_init_sfty_pw;
uint32 sector_addr = IfxFlash_dFlashTableEepLog[sector_num].start;
end_init_sfty_pw = IfxScuWdt_getSafetyWatchdogPassword();
IfxScuWdt_clearSafetyEndinit(end_init_sfty_pw);
IfxFlash_eraseSector(sector_addr);
IfxScuWdt_setSafetyEndinit(end_init_sfty_pw);
IfxFlash_waitUnbusy(flash, IfxFlash_FlashType_D0);
}
//-------------------------------------------------------------------------------------------------------------------
// @brief <20><><EFBFBD><EFBFBD>һҳ
// @param sector_num <09><>Ҫд<D2AA><D0B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Χ0-11
// @param page_num <09><>Ҫд<D2AA><D0B4><EFBFBD><EFBFBD>ҳ<EFBFBD><D2B3><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Χ0-1023
// @param buf <09><>Ҫд<D2AA><D0B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݵ<EFBFBD>ַ <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͱ<EFBFBD><CDB1><EFBFBD>Ϊuint32
// @return void
// @since v1.0
// Sample usage: eeprom_page_program(0,0, &buf);
//-------------------------------------------------------------------------------------------------------------------
void eeprom_page_program(uint32 sector_num, uint32 page_num, uint32 *buf)
{
ZF_ASSERT(EEPROM_SECTOR_NUM>sector_num);
ZF_ASSERT(EEPROM_SECTOR_PAGE_NUM>page_num);
uint32 errors = 0;
uint32 flash = 0;
uint16 end_init_sfty_pw;
uint32 sector_addr = IfxFlash_dFlashTableEepLog[sector_num].start;
end_init_sfty_pw = IfxScuWdt_getSafetyWatchdogPassword();
uint32 page_addr = sector_addr + page_num * IFXFLASH_DFLASH_PAGE_LENGTH;
errors = IfxFlash_enterPageMode(page_addr);
ZF_ASSERT(0 == errors);
IfxFlash_waitUnbusy(flash, IfxFlash_FlashType_D0);
IfxFlash_loadPage(page_addr, buf[0], 0);
IfxScuWdt_clearSafetyEndinit(end_init_sfty_pw);
IfxFlash_writePage(page_addr);
IfxScuWdt_setSafetyEndinit(end_init_sfty_pw);
IfxFlash_waitUnbusy(flash, IfxFlash_FlashType_D0);
}

View File

@@ -1,63 +0,0 @@
/*********************************************************************************************************************
* COPYRIGHT NOTICE
* Copyright (c) 2020,<2C><><EFBFBD>ɿƼ<C9BF>
* All rights reserved.
* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>QQȺ<51><C8BA><EFBFBD><EFBFBD>Ⱥ<EFBFBD><C8BA>824575535
*
* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݰ<EFBFBD>Ȩ<EFBFBD><C8A8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɿƼ<C9BF><C6BC><EFBFBD><EFBFBD>У<EFBFBD>δ<EFBFBD><CEB4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ҵ<EFBFBD><D2B5>;<EFBFBD><CDBE>
* <20><>ӭ<EFBFBD><D3AD>λʹ<CEBB>ò<EFBFBD><C3B2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>޸<EFBFBD><DEB8><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EBB1A3><EFBFBD><EFBFBD><EFBFBD>ɿƼ<C9BF><C6BC>İ<EFBFBD>Ȩ<EFBFBD><C8A8><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
*
* @file eeprom(Dflash)
* @company <09>ɶ<EFBFBD><C9B6><EFBFBD><EFBFBD>ɿƼ<C9BF><C6BC><EFBFBD><EFBFBD>޹<EFBFBD>˾
* @author <09><><EFBFBD>ɿƼ<C9BF>(QQ3184284598)
* @version <09>鿴doc<6F><63>version<6F>ļ<EFBFBD> <20>汾˵<E6B1BE><CBB5>
* @Software ADS v1.2.2
* @Target core TC264D
* @Taobao https://seekfree.taobao.com/
* @date 2020-3-23
********************************************************************************************************************/
#ifndef _zf_eeprom_h
#define _zf_eeprom_h
#include "common.h"
#include "IfxFlash_cfg.h"
#define EEPROM_BASE_ADDR IFXFLASH_DFLASH_START
#define EEPROM_SIZE IFXFLASH_DFLASH_SIZE //һ<><D2BB><EFBFBD><EFBFBD>96KB
#define EEPROM_SECTOR_SIZE (EEPROM_SIZE / IFXFLASH_DFLASH_NUM_LOG_SECTORS)
#define EEPROM_SECTOR_NUM (IFXFLASH_DFLASH_NUM_LOG_SECTORS) //һ<><D2BB><EFBFBD><EFBFBD>12<31><32><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
#define EEPROM_PAGE_SIZE IFXFLASH_DFLASH_PAGE_LENGTH
#define EEPROM_SECTOR_PAGE_NUM (EEPROM_SECTOR_SIZE/EEPROM_PAGE_SIZE) //ÿ<><C3BF><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>1024ҳ
//-------------------------------------------------------------------------------------------------------------------
// @brief ʹ<>ú궨<C3BA><EAB6A8><EFBFBD><EFBFBD>flash<73><68><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݶ<EFBFBD>ȡ
// @param sector_num <09><>Ҫд<D2AA><D0B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// @param page_num <09><>Ҫ<EFBFBD><D2AA>ȡ<EFBFBD><C8A1>ҳ
// @param type <09><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// @return <09><><EFBFBD>ظ<EFBFBD><D8B8><EFBFBD><EFBFBD><EFBFBD>ַ<EFBFBD><D6B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// @since v1.0
// Sample usage: flash_read(0,0,uint32);//<2F><>ȡ0<C8A1><30><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><30><D2B2><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>Ϊuint32
//-------------------------------------------------------------------------------------------------------------------
#define flash_read(sector_num,page_num,type) (*(type *)((uint32)((EEPROM_BASE_ADDR + (sector_num)*EEPROM_SECTOR_SIZE) + (page_num*8))))
//-------------------------------------------------------------------------------------------------------------------
// @brief <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ת<EFBFBD><D7AA>Ϊ<EFBFBD><CEAA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// @param float_data <09><>Ҫת<D2AA><D7AA><EFBFBD>ĸ<EFBFBD><C4B8><EFBFBD><EFBFBD><EFBFBD>
// @return <09><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// @since v1.0
// Sample usage:
//-------------------------------------------------------------------------------------------------------------------
#define float_conversion_uint32(float_data) (*(uint32 *)&float_data)
uint8 flash_check(uint32 sector_num, uint32 page_num);
void eeprom_erase_sector(uint32 sector_num);
void eeprom_page_program(uint32 sector_num, uint32 page_num, uint32 *buf);
#endif

View File

@@ -1,183 +0,0 @@
/*********************************************************************************************************************
* COPYRIGHT NOTICE
* Copyright (c) 2020,<2C><><EFBFBD>ɿƼ<C9BF>
* All rights reserved.
* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>QQȺ<51><C8BA><EFBFBD><EFBFBD>Ⱥ<EFBFBD><C8BA>824575535
*
* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݰ<EFBFBD>Ȩ<EFBFBD><C8A8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɿƼ<C9BF><C6BC><EFBFBD><EFBFBD>У<EFBFBD>δ<EFBFBD><CEB4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ҵ<EFBFBD><D2B5>;<EFBFBD><CDBE>
* <20><>ӭ<EFBFBD><D3AD>λʹ<CEBB>ò<EFBFBD><C3B2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>޸<EFBFBD><DEB8><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EBB1A3><EFBFBD><EFBFBD><EFBFBD>ɿƼ<C9BF><C6BC>İ<EFBFBD>Ȩ<EFBFBD><C8A8><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
*
* @file eru
* @company <09>ɶ<EFBFBD><C9B6><EFBFBD><EFBFBD>ɿƼ<C9BF><C6BC><EFBFBD><EFBFBD>޹<EFBFBD>˾
* @author <09><><EFBFBD>ɿƼ<C9BF>(QQ3184284598)
* @version <09>鿴doc<6F><63>version<6F>ļ<EFBFBD> <20>汾˵<E6B1BE><CBB5>
* @Software ADS v1.2.2
* @Target core TC264D
* @Taobao https://seekfree.taobao.com/
* @date 2020-3-23
********************************************************************************************************************/
#include "Src/Std/IfxSrc.h"
#include "SysSe/Bsp/Bsp.h"
#include "IfxScuEru.h"
#include "zf_assert.h"
#include "isr_config.h"
#include "zf_eru.h"
IfxScu_Req_In* eru_mux(ERU_PIN_enum eru_pin)
{
switch(eru_pin)
{
case ERU_CH0_REQ4_P10_7: return &IfxScu_REQ4_P10_7_IN;
case ERU_CH0_REQ0_P15_4: return &IfxScu_REQ0_P15_4_IN;
case ERU_CH1_REQ5_P10_8: return &IfxScu_REQ5_P10_8_IN;
case ERU_CH1_REQ10_P14_3: return &IfxScu_REQ10_P14_3_IN;
case ERU_CH2_REQ7_P00_4: return &IfxScu_REQ7_P00_4_IN;
case ERU_CH2_REQ14_P02_1: return &IfxScu_REQ14_P02_1_IN;
case ERU_CH2_REQ2_P10_2: return &IfxScu_REQ2_P10_2_IN;
case ERU_CH3_REQ6_P02_0: return &IfxScu_REQ6_P02_0_IN;
case ERU_CH3_REQ3_P10_3: return &IfxScu_REQ3_P10_3_IN;
case ERU_CH3_REQ15_P14_1: return &IfxScu_REQ15_P14_1_IN;
case ERU_CH4_REQ13_P15_5: return &IfxScu_REQ13_P15_5_IN;
case ERU_CH4_REQ8_P33_7: return &IfxScu_REQ8_P33_7_IN;
case ERU_CH5_REQ1_P15_8: return &IfxScu_REQ1_P15_8_IN;
case ERU_CH6_REQ12_P11_10: return &IfxScu_REQ12_P11_10_IN;
case ERU_CH6_REQ9_P20_0: return &IfxScu_REQ9_P20_0_IN;
case ERU_CH7_REQ16_P15_1: return &IfxScu_REQ16_P15_1_IN;
case ERU_CH7_REQ11_P20_9: return &IfxScu_REQ11_P20_9_IN;
default: ZF_ASSERT(FALSE); return NULL;
}
}
//-------------------------------------------------------------------------------------------------------------------
// @brief eru<72><75>ʼ<EFBFBD><CABC>(gpio<69>ж<EFBFBD>)
// @param eru_pin <20><><EFBFBD><EFBFBD>eruͨ<75><CDA8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// @param trigger <20><><EFBFBD>ô<EFBFBD><C3B4><EFBFBD><EFBFBD><EFBFBD>ʽ
// @return void
// Sample usage: eru_init(ERU_CH0_REQ0_P15_4, RISING);//eruͨ<75><CDA8>0 ʹ<><CAB9>P10_7<5F><37><EFBFBD>ţ<EFBFBD><C5A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ش<EFBFBD><D8B4><EFBFBD><EFBFBD>ж<EFBFBD>
//-------------------------------------------------------------------------------------------------------------------
void eru_init(ERU_PIN_enum eru_pin, TRIGGER_enum trigger)
{
boolean interrupt_state = disableInterrupts();
IfxScu_Req_In *reqPin;
reqPin = eru_mux(eru_pin);
IfxScuEru_initReqPin(reqPin, IfxPort_InputMode_pullUp);
IfxScuEru_InputChannel inputChannel = (IfxScuEru_InputChannel)reqPin->channelId;
IfxScuEru_InputNodePointer triggerSelect = (IfxScuEru_InputNodePointer)(eru_pin/3);
IfxScuEru_OutputChannel outputChannel = (IfxScuEru_OutputChannel)(eru_pin/3);
switch(trigger)
{
case RISING:
{
IfxScuEru_disableFallingEdgeDetection(inputChannel);
IfxScuEru_enableRisingEdgeDetection(inputChannel);
}break;
case FALLING:
{
IfxScuEru_enableFallingEdgeDetection(inputChannel);
IfxScuEru_disableRisingEdgeDetection(inputChannel);
}break;
case BOTH:
{
IfxScuEru_enableFallingEdgeDetection(inputChannel);
IfxScuEru_enableRisingEdgeDetection(inputChannel);
}break;
default: ZF_ASSERT(FALSE);
}
IfxScuEru_enableTriggerPulse(inputChannel);
IfxScuEru_connectTrigger(inputChannel, triggerSelect);
IfxScuEru_setFlagPatternDetection(outputChannel, inputChannel, TRUE);
IfxScuEru_enablePatternDetectionTrigger(outputChannel);
IfxScuEru_setInterruptGatingPattern(outputChannel, IfxScuEru_InterruptGatingPattern_alwaysActive);
volatile Ifx_SRC_SRCR *src = &MODULE_SRC.SCU.SCU.ERU[(int)outputChannel % 4];
IfxSrc_Tos eru_service;
uint8 eru_priority;
switch((eru_pin/3)%4)
{
case 0:
{
eru_service = ERU_CH0_CH4_INT_SERVICE;
eru_priority = ERU_CH0_CH4_INT_PRIO;
}break;
case 1:
{
eru_service = ERU_CH1_CH5_INT_SERVICE;
eru_priority = ERU_CH1_CH5_INT_PRIO;
}break;
case 2:
{
eru_service = ERU_CH2_CH6_INT_SERVICE;
eru_priority = ERU_CH2_CH6_INT_PRIO;
}break;
case 3:
{
eru_service = ERU_CH3_CH7_INT_SERVICE;
eru_priority = ERU_CH3_CH7_INT_PRIO;
}break;
}
#pragma warning 507
IfxSrc_init(src, eru_service, eru_priority);
#pragma warning default
IfxSrc_enable(src);
restoreInterrupts(interrupt_state);
}
//-------------------------------------------------------------------------------------------------------------------
// @brief <20><><EFBFBD><EFBFBD>eru<72>ж<EFBFBD>
// @param eru_pin <20><><EFBFBD><EFBFBD>eruͨ<75><CDA8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// @return void
// Sample usage: eru_enable_interrupt(ERU_CH0_REQ0_P15_4);
//-------------------------------------------------------------------------------------------------------------------
void eru_enable_interrupt(ERU_PIN_enum eru_pin)
{
IfxScuEru_OutputChannel outputChannel = (IfxScuEru_OutputChannel)(eru_pin/3);
volatile Ifx_SRC_SRCR *src = &MODULE_SRC.SCU.SCU.ERU[(int)outputChannel % 4];
IfxSrc_enable(src);
}
//-------------------------------------------------------------------------------------------------------------------
// @brief <20>ر<EFBFBD>eru<72>ж<EFBFBD>
// @param eru_pin <20><><EFBFBD><EFBFBD>eruͨ<75><CDA8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// @return void
// Sample usage: eru_disable_interrupt(ERU_CH0_REQ0_P15_4);
//-------------------------------------------------------------------------------------------------------------------
void eru_disable_interrupt(ERU_PIN_enum eru_pin)
{
IfxScuEru_OutputChannel outputChannel = (IfxScuEru_OutputChannel)(eru_pin/3);
volatile Ifx_SRC_SRCR *src = &MODULE_SRC.SCU.SCU.ERU[(int)outputChannel % 4];
IfxSrc_disable(src);
}

View File

@@ -1,73 +0,0 @@
/*********************************************************************************************************************
* COPYRIGHT NOTICE
* Copyright (c) 2020,<2C><><EFBFBD>ɿƼ<C9BF>
* All rights reserved.
* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>QQȺ<51><C8BA><EFBFBD><EFBFBD>Ⱥ<EFBFBD><C8BA>824575535
*
* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݰ<EFBFBD>Ȩ<EFBFBD><C8A8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɿƼ<C9BF><C6BC><EFBFBD><EFBFBD>У<EFBFBD>δ<EFBFBD><CEB4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ҵ<EFBFBD><D2B5>;<EFBFBD><CDBE>
* <20><>ӭ<EFBFBD><D3AD>λʹ<CEBB>ò<EFBFBD><C3B2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>޸<EFBFBD><DEB8><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EBB1A3><EFBFBD><EFBFBD><EFBFBD>ɿƼ<C9BF><C6BC>İ<EFBFBD>Ȩ<EFBFBD><C8A8><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
*
* @file eru
* @company <09>ɶ<EFBFBD><C9B6><EFBFBD><EFBFBD>ɿƼ<C9BF><C6BC><EFBFBD><EFBFBD>޹<EFBFBD>˾
* @author <09><><EFBFBD>ɿƼ<C9BF>(QQ3184284598)
* @version <09>鿴doc<6F><63>version<6F>ļ<EFBFBD> <20>汾˵<E6B1BE><CBB5>
* @Software ADS v1.2.2
* @Target core TC264D
* @Taobao https://seekfree.taobao.com/
* @date 2020-3-23
********************************************************************************************************************/
#ifndef _zf_eru_h
#define _zf_eru_h
#include "common.h"
typedef enum // ö<>ٴ<EFBFBD><D9B4><EFBFBD><EFBFBD><EFBFBD>ʽ
{
RISING,
FALLING,
BOTH,
}TRIGGER_enum;
typedef enum // ö<><C3B6>ERUͨ<55><CDA8>
{
//һ<><D2BB>ͨ<EFBFBD><CDA8>ֻ<EFBFBD><D6BB>ѡ<EFBFBD><D1A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ <20>ⲿ<EFBFBD>жϵ<D0B6><CFB5><EFBFBD><EFBFBD><EFBFBD>
//<2F><><EFBFBD><EFBFBD>ͨ<EFBFBD><CDA8>0 <20><>ѡ<EFBFBD><D1A1><EFBFBD><EFBFBD>ΪP10_7 <20><> P15_4<5F><34>
//<2F><>LQFP144<34><34>װ<EFBFBD><D7B0>û<EFBFBD><C3BB>P10_7
ERU_CH0_REQ4_P10_7 = 0*3, ERU_CH0_REQ0_P15_4, //ͨ<><CDA8>0<EFBFBD><30>ѡ<EFBFBD><D1A1><EFBFBD><EFBFBD> LQFPû<50><C3BB>P10_7<5F><37><EFBFBD><EFBFBD>
//<2F><>LQFP144<34><34>װ<EFBFBD><D7B0>û<EFBFBD><C3BB>P10_8
ERU_CH1_REQ5_P10_8 = 1*3, ERU_CH1_REQ10_P14_3, //ͨ<><CDA8>1<EFBFBD><31>ѡ<EFBFBD><D1A1><EFBFBD><EFBFBD> LQFPû<50><C3BB>P10_8<5F><38><EFBFBD><EFBFBD>
ERU_CH2_REQ7_P00_4 = 2*3, ERU_CH2_REQ14_P02_1, ERU_CH2_REQ2_P10_2, //ͨ<><CDA8>2<EFBFBD><32>ѡ<EFBFBD><D1A1><EFBFBD><EFBFBD>
ERU_CH3_REQ6_P02_0 = 3*3, ERU_CH3_REQ3_P10_3, ERU_CH3_REQ15_P14_1, //ͨ<><CDA8>3<EFBFBD><33>ѡ<EFBFBD><D1A1><EFBFBD><EFBFBD>
//ͨ<><CDA8>4<EFBFBD><34>ͨ<EFBFBD><CDA8>0 <20><><EFBFBD><EFBFBD><EFBFBD>жϺ<D0B6><CFBA><EFBFBD> <20><><EFBFBD>ж<EFBFBD><D0B6><EFBFBD>ͨ<EFBFBD><CDA8><EFBFBD>жϱ<D0B6>־λ<D6BE><CEBB>ʶ<EFBFBD><CAB6><EFBFBD><EFBFBD><EFBFBD>ĸ<EFBFBD>ͨ<EFBFBD><CDA8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ж<EFBFBD>
ERU_CH4_REQ13_P15_5 = 4*3, ERU_CH4_REQ8_P33_7, //ͨ<><CDA8>4<EFBFBD><34>ѡ<EFBFBD><D1A1><EFBFBD><EFBFBD>
//ͨ<><CDA8>5<EFBFBD><35>ͨ<EFBFBD><CDA8>1 <20><><EFBFBD><EFBFBD><EFBFBD>жϺ<D0B6><CFBA><EFBFBD>
ERU_CH5_REQ1_P15_8 = 5*3, //ͨ<><CDA8>5<EFBFBD><35>ѡ<EFBFBD><D1A1><EFBFBD><EFBFBD>
//ͨ<><CDA8>6<EFBFBD><36>ͨ<EFBFBD><CDA8>2 <20><><EFBFBD><EFBFBD><EFBFBD>жϺ<D0B6><CFBA><EFBFBD>
ERU_CH6_REQ12_P11_10 = 6*3, ERU_CH6_REQ9_P20_0, //ͨ<><CDA8>6<EFBFBD><36>ѡ<EFBFBD><D1A1><EFBFBD><EFBFBD>
//ͨ<><CDA8>7<EFBFBD><37>ͨ<EFBFBD><CDA8>3 <20><><EFBFBD><EFBFBD><EFBFBD>жϺ<D0B6><CFBA><EFBFBD>
ERU_CH7_REQ16_P15_1 = 7*3, ERU_CH7_REQ11_P20_9, //ͨ<><CDA8>7<EFBFBD><37>ѡ<EFBFBD><D1A1><EFBFBD><EFBFBD>
}ERU_PIN_enum;
//<2F>ر<EFBFBD>ע<EFBFBD><D7A2>ͨ<EFBFBD><CDA8>2 <20><> ͨ<><CDA8>3<EFBFBD><33><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͷռ<CDB7>ã<EFBFBD><C3A3><EFBFBD>ζ<EFBFBD><CEB6>ֻ<EFBFBD><D6BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ⲿ<EFBFBD>жϿɹ<CFBF><C9B9>û<EFBFBD>ʹ<EFBFBD><CAB9>
//<2F>жϱ<D0B6>־λ<D6BE><CEBB>ȡ
#define GET_GPIO_FLAG(eru_pin) IfxScuEru_getEventFlagStatus((IfxScuEru_InputChannel)(eru_pin/3))
//<2F>жϱ<D0B6>־λ<D6BE><CEBB><EFBFBD><EFBFBD>
#define CLEAR_GPIO_FLAG(eru_pin) IfxScuEru_clearEventFlag((IfxScuEru_InputChannel)(eru_pin/3))
void eru_init(ERU_PIN_enum eru_pin, TRIGGER_enum trigger);
void eru_enable_interrupt(ERU_PIN_enum eru_pin);
void eru_disable_interrupt(ERU_PIN_enum eru_pin);
#endif

View File

@@ -1,175 +0,0 @@
/*********************************************************************************************************************
* COPYRIGHT NOTICE
* Copyright (c) 2020,<2C><><EFBFBD>ɿƼ<C9BF>
* All rights reserved.
* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>QQȺ<51><C8BA><EFBFBD><EFBFBD>Ⱥ<EFBFBD><C8BA>824575535
*
* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݰ<EFBFBD>Ȩ<EFBFBD><C8A8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɿƼ<C9BF><C6BC><EFBFBD><EFBFBD>У<EFBFBD>δ<EFBFBD><CEB4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ҵ<EFBFBD><D2B5>;<EFBFBD><CDBE>
* <20><>ӭ<EFBFBD><D3AD>λʹ<CEBB>ò<EFBFBD><C3B2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>޸<EFBFBD><DEB8><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EBB1A3><EFBFBD><EFBFBD><EFBFBD>ɿƼ<C9BF><C6BC>İ<EFBFBD>Ȩ<EFBFBD><C8A8><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
*
* @file eru_dma
* @company <09>ɶ<EFBFBD><C9B6><EFBFBD><EFBFBD>ɿƼ<C9BF><C6BC><EFBFBD><EFBFBD>޹<EFBFBD>˾
* @author <09><><EFBFBD>ɿƼ<C9BF>(QQ3184284598)
* @version <09>鿴doc<6F><63>version<6F>ļ<EFBFBD> <20>汾˵<E6B1BE><CBB5>
* @Software ADS v1.2.2
* @Target core TC264D
* @Taobao https://seekfree.taobao.com/
* @date 2020-3-23
********************************************************************************************************************/
#include "IfxDma_Dma.h"
#include "IfxScuEru.h"
#include "isr_config.h"
#include "zf_assert.h"
#include "zf_eru_dma.h"
typedef struct
{
Ifx_DMA_CH linked_list[8];//DMA<4D><41><EFBFBD><EFBFBD>
IfxDma_Dma_Channel channel; //DMAͨ<41><CDA8><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
}DMA_LINK;
#if(0 == ERU_DMA_INT_SERVICE)
#pragma section all "cpu0_dsram"
IFX_ALIGN(256) DMA_LINK dma_link_list;
#elif(1 == ERU_DMA_INT_SERVICE)
#pragma section all "cpu1_dsram"
IFX_ALIGN(256) DMA_LINK dma_link_list;
#endif
#pragma section all restore
//-------------------------------------------------------------------------------------------------------------------
// @brief eru<72><75><EFBFBD><EFBFBD>dma<6D><61>ʼ<EFBFBD><CABC>
// @param dma_ch ѡ<><D1A1>DMAͨ<41><CDA8>
// @param source_addr <20><><EFBFBD><EFBFBD>Դ<EFBFBD><D4B4>ַ
// @param destination_addr <20><><EFBFBD><EFBFBD>Ŀ<EFBFBD>ĵ<EFBFBD>ַ
// @param eru_pin <09><><EFBFBD>ô<EFBFBD><C3B4><EFBFBD><EFBFBD><EFBFBD>eruͨ<75><CDA8>
// @param trigger <09><><EFBFBD>ô<EFBFBD><C3B4><EFBFBD><EFBFBD><EFBFBD>ʽ
// @param dma_count <09><><EFBFBD><EFBFBD>dma<6D><61><EFBFBD>ƴ<EFBFBD><C6B4><EFBFBD>
// @return void
// Sample usage:
//-------------------------------------------------------------------------------------------------------------------
uint8 eru_dma_init(IfxDma_ChannelId dma_ch, uint8 *source_addr, uint8 *destination_addr, ERU_PIN_enum eru_pin, TRIGGER_enum trigger, uint16 dma_count)
{
IfxDma_Dma_Channel dmaChn;
//eru<72><75><EFBFBD><EFBFBD>DMAͨ<41><CDA8><EFBFBD><EFBFBD> <20><>eru<72>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>eru<72><75><EFBFBD><EFBFBD><EFBFBD>ȼ<EFBFBD><C8BC><EFBFBD><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͨ<EFBFBD><CDA8>
eru_init(eru_pin, trigger);
IfxDma_Dma_Config dmaConfig;
IfxDma_Dma_initModuleConfig(&dmaConfig, &MODULE_DMA);
IfxDma_Dma dma;
IfxDma_Dma_initModule(&dma, &dmaConfig);
IfxDma_Dma_ChannelConfig cfg;
IfxDma_Dma_initChannelConfig(&cfg, &dma);
uint8 list_num, i;
uint16 single_channel_dma_count;
ZF_ASSERT(!(dma_count%8));//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ8<CEAA>ı<EFBFBD><C4B1><EFBFBD>
list_num = 1;
single_channel_dma_count = dma_count / list_num;
if(16384 < single_channel_dma_count)
{
while(TRUE)
{
single_channel_dma_count = dma_count / list_num;
if((single_channel_dma_count <= 16384) && !(dma_count % list_num))
{
break;
}
list_num++;
if(list_num > 8) ZF_ASSERT(FALSE);
}
}
if(1 == list_num)
{
cfg.shadowControl = IfxDma_ChannelShadow_none;
cfg.operationMode = IfxDma_ChannelOperationMode_single;
cfg.shadowAddress = 0;
}
else
{
cfg.shadowControl = IfxDma_ChannelShadow_linkedList;
cfg.operationMode = IfxDma_ChannelOperationMode_continuous;
cfg.shadowAddress = IFXCPU_GLB_ADDR_DSPR(IfxCpu_getCoreId(), (unsigned)&dma_link_list.linked_list[1]);
}
cfg.requestMode = IfxDma_ChannelRequestMode_oneTransferPerRequest;
cfg.moveSize = IfxDma_ChannelMoveSize_8bit;
cfg.busPriority = IfxDma_ChannelBusPriority_high;
cfg.sourceAddress = IFXCPU_GLB_ADDR_DSPR(IfxCpu_getCoreId(), source_addr);
cfg.sourceAddressCircularRange = IfxDma_ChannelIncrementCircular_none;
cfg.sourceCircularBufferEnabled = TRUE;
cfg.destinationAddressIncrementStep = IfxDma_ChannelIncrementStep_1;
cfg.channelId = (IfxDma_ChannelId)dma_ch;
cfg.hardwareRequestEnabled = FALSE;
cfg.channelInterruptEnabled = TRUE;
cfg.channelInterruptPriority = ERU_DMA_INT_PRIO;
cfg.channelInterruptTypeOfService = ERU_DMA_INT_SERVICE;
cfg.destinationAddress = IFXCPU_GLB_ADDR_DSPR(IfxCpu_getCoreId(), destination_addr);
cfg.transferCount = single_channel_dma_count;
IfxDma_Dma_initChannel(&dmaChn, &cfg);
if(1 < list_num)
{
i = 0;
while(i < list_num)
{
cfg.destinationAddress = IFXCPU_GLB_ADDR_DSPR(IfxCpu_getCoreId(), destination_addr + single_channel_dma_count * i);
if(i == (list_num - 1)) cfg.shadowAddress = IFXCPU_GLB_ADDR_DSPR(IfxCpu_getCoreId(), (unsigned)&dma_link_list.linked_list[0]);
else cfg.shadowAddress = IFXCPU_GLB_ADDR_DSPR(IfxCpu_getCoreId(), (unsigned)&dma_link_list.linked_list[i+1]);
cfg.transferCount = single_channel_dma_count;
IfxDma_Dma_initLinkedListEntry((void *)&dma_link_list.linked_list[i], &cfg);
i++;
}
}
IfxDma_Dma_getSrcPointer(&dma_link_list.channel)->B.CLRR = 1;
return list_num;
}
//-------------------------------------------------------------------------------------------------------------------
// @brief dmaֹͣ
// @param dma_ch ѡ<><D1A1>DMAͨ<41><CDA8>
// @return void
// Sample usage:
//-------------------------------------------------------------------------------------------------------------------
void dma_stop(IfxDma_ChannelId dma_ch)
{
IfxDma_disableChannelTransaction(&MODULE_DMA, dma_ch);
}
//-------------------------------------------------------------------------------------------------------------------
// @brief dma<6D><61><EFBFBD><EFBFBD>
// @param dma_ch ѡ<><D1A1>DMAͨ<41><CDA8>
// @return void
// Sample usage:
//-------------------------------------------------------------------------------------------------------------------
void dma_start(IfxDma_ChannelId dma_ch)
{
IfxDma_enableChannelTransaction(&MODULE_DMA, dma_ch);
}

View File

@@ -1,38 +0,0 @@
/*********************************************************************************************************************
* COPYRIGHT NOTICE
* Copyright (c) 2020,<2C><><EFBFBD>ɿƼ<C9BF>
* All rights reserved.
* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>QQȺ<51><C8BA><EFBFBD><EFBFBD>Ⱥ<EFBFBD><C8BA>824575535
*
* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݰ<EFBFBD>Ȩ<EFBFBD><C8A8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɿƼ<C9BF><C6BC><EFBFBD><EFBFBD>У<EFBFBD>δ<EFBFBD><CEB4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ҵ<EFBFBD><D2B5>;<EFBFBD><CDBE>
* <20><>ӭ<EFBFBD><D3AD>λʹ<CEBB>ò<EFBFBD><C3B2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>޸<EFBFBD><DEB8><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EBB1A3><EFBFBD><EFBFBD><EFBFBD>ɿƼ<C9BF><C6BC>İ<EFBFBD>Ȩ<EFBFBD><C8A8><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
*
* @file eru_dma
* @company <09>ɶ<EFBFBD><C9B6><EFBFBD><EFBFBD>ɿƼ<C9BF><C6BC><EFBFBD><EFBFBD>޹<EFBFBD>˾
* @author <09><><EFBFBD>ɿƼ<C9BF>(QQ3184284598)
* @version <09>鿴doc<6F><63>version<6F>ļ<EFBFBD> <20>汾˵<E6B1BE><CBB5>
* @Software ADS v1.2.2
* @Target core TC264D
* @Taobao https://seekfree.taobao.com/
* @date 2020-3-23
********************************************************************************************************************/
#ifndef _zf_eru_dma_h
#define _zf_eru_dma_h
#include "common.h"
#include "zf_eru.h"
#include "IfxDma.h"
#define CLEAR_DMA_FLAG(dma_ch) IfxDma_clearChannelInterrupt(&MODULE_DMA, dma_ch);
#define DMA_SET_DESTINATION(dma_ch, destination_addr) IfxDma_setChannelDestinationAddress(&MODULE_DMA, dma_ch, (void *)IFXCPU_GLB_ADDR_DSPR(IfxCpu_getCoreId(), destination_addr))
uint8 eru_dma_init(IfxDma_ChannelId dma_ch, uint8 *source_addr, uint8 *destination_addr, ERU_PIN_enum eru_pin, TRIGGER_enum trigger, uint16 dma_count);
void dma_stop(IfxDma_ChannelId dma_ch);
void dma_start(IfxDma_ChannelId dma_ch);
#endif

View File

@@ -1,184 +0,0 @@
/*********************************************************************************************************************
* COPYRIGHT NOTICE
* Copyright (c) 2020,<2C><><EFBFBD>ɿƼ<C9BF>
* All rights reserved.
* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>QQȺ<51><C8BA><EFBFBD><EFBFBD>Ⱥ<EFBFBD><C8BA>824575535
*
* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݰ<EFBFBD>Ȩ<EFBFBD><C8A8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɿƼ<C9BF><C6BC><EFBFBD><EFBFBD>У<EFBFBD>δ<EFBFBD><CEB4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ҵ<EFBFBD><D2B5>;<EFBFBD><CDBE>
* <20><>ӭ<EFBFBD><D3AD>λʹ<CEBB>ò<EFBFBD><C3B2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>޸<EFBFBD><DEB8><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EBB1A3><EFBFBD><EFBFBD><EFBFBD>ɿƼ<C9BF><C6BC>İ<EFBFBD>Ȩ<EFBFBD><C8A8><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
*
* @file gpio
* @company <09>ɶ<EFBFBD><C9B6><EFBFBD><EFBFBD>ɿƼ<C9BF><C6BC><EFBFBD><EFBFBD>޹<EFBFBD>˾
* @author <09><><EFBFBD>ɿƼ<C9BF>(QQ3184284598)
* @version <09>鿴doc<6F><63>version<6F>ļ<EFBFBD> <20>汾˵<E6B1BE><CBB5>
* @Software ADS v1.2.2
* @Target core TC264D
* @Taobao https://seekfree.taobao.com/
* @date 2020-3-23
********************************************************************************************************************/
#include "zf_gpio.h"
//-------------------------------------------------------------------------------------------------------------------
// @brief <20><>ȡGPIO<49><4F><EFBFBD><EFBFBD>ַ
// @param pin ѡ<><D1A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> (<28><>ѡ<EFBFBD><D1A1><EFBFBD><EFBFBD>Χ<EFBFBD><CEA7> common.h <20><>PIN_enumö<6D><C3B6>ֵȷ<D6B5><C8B7>)
// @return void
// Sample usage: <20>ļ<EFBFBD><C4BC>ڲ<EFBFBD>ʹ<EFBFBD>ã<EFBFBD><C3A3>û<EFBFBD><C3BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
//-------------------------------------------------------------------------------------------------------------------
volatile Ifx_P* get_port(PIN_enum pin)
{
volatile Ifx_P *port;
switch(pin&0xffe0)
{
case P00_0: port = &MODULE_P00; break;
case P02_0: port = &MODULE_P02; break;
case P10_0: port = &MODULE_P10; break;
case P11_0: port = &MODULE_P11; break;
case P13_0: port = &MODULE_P13; break;
case P14_0: port = &MODULE_P14; break;
case P15_0: port = &MODULE_P15; break;
case P20_0: port = &MODULE_P20; break;
case P21_0: port = &MODULE_P21; break;
case P22_0: port = &MODULE_P22; break;
case P23_0: port = &MODULE_P23; break;
case P32_0: port = &MODULE_P32; break;
case P33_0: port = &MODULE_P33; break;
default:break;
}
#pragma warning 507
return port;
#pragma warning default
}
//-------------------------------------------------------------------------------------------------------------------
// @brief GPIO<49><4F>ʼ<EFBFBD><CABC>
// @param pin ѡ<><D1A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> (<28><>ѡ<EFBFBD><D1A1><EFBFBD><EFBFBD>Χ<EFBFBD><CEA7> common.h <20><>PIN_enumö<6D><C3B6>ֵȷ<D6B5><C8B7>)
// @param dir <20><><EFBFBD>ŵķ<C5B5><C4B7><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>GPO <20><><EFBFBD>룺GPI
// @param dat <20><><EFBFBD>ų<EFBFBD>ʼ<EFBFBD><CABC>ʱ<EFBFBD><CAB1><EFBFBD>õĵ<C3B5>ƽ״̬<D7B4><CCAC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1>Ч 0<><30><EFBFBD>͵<EFBFBD>ƽ 1<><31><EFBFBD>ߵ<EFBFBD>ƽ
// @param pinmode <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ã<EFBFBD><C3A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ò<EFBFBD><C3B2><EFBFBD><EFBFBD><EFBFBD>zf_gpio.h<>ļ<EFBFBD><C4BC><EFBFBD>GPIOMODE_enumö<6D><C3B6>ֵȷ<D6B5><C8B7><EFBFBD><EFBFBD>
// @return void
// Sample usage: gpio_init(P00_0, GPO, 1, PUSHPULL);//P00_0<5F><30>ʼ<EFBFBD><CABC>ΪGPIO<49><4F><EFBFBD>ܡ<EFBFBD><DCA1><EFBFBD><EFBFBD><EFBFBD>ģʽ<C4A3><CABD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ߵ<EFBFBD>ƽ<EFBFBD><C6BD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// @note <09><>Ҫ<EFBFBD>ر<EFBFBD>ע<EFBFBD><D7A2>P20_2<5F>Dz<EFBFBD><C7B2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ģ<EFBFBD><C4A3><EFBFBD><EFBFBD><EFBFBD>ֻ<EFBFBD><D6BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ĺ<EFBFBD><C4B9><EFBFBD>
//-------------------------------------------------------------------------------------------------------------------
void gpio_init(PIN_enum pin, GPIODIR_enum dir, uint8 dat, GPIOMODE_enum pinmode)
{
IfxPort_Mode port_mode;
if(dir == GPI)
{
switch(pinmode)
{
case NO_PULL: port_mode = IfxPort_Mode_inputNoPullDevice; break;
case PULLUP: port_mode = IfxPort_Mode_inputPullUp; break;
case PULLDOWN: port_mode = IfxPort_Mode_inputPullDown; break;
default: port_mode = IfxPort_Mode_inputPullUp; break;
}
}
else
{
switch(pinmode)
{
case OPENDRAIN: port_mode = IfxPort_Mode_outputOpenDrainGeneral; break;//<2F><>©<EFBFBD><C2A9><EFBFBD><EFBFBD>
default: port_mode = IfxPort_Mode_outputPushPullGeneral; break;//Ĭ<><C4AC>Ϊ<EFBFBD><CEAA><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
}
}
IfxPort_setPinMode(get_port(pin), pin&0x1f, port_mode);
IfxPort_setPinPadDriver(get_port(pin), pin&0x1f, IfxPort_PadDriver_cmosAutomotiveSpeed1);
if(dir == GPO)
{
if(dat) IfxPort_setPinHigh(get_port(pin), pin&0x1f);
else IfxPort_setPinLow(get_port(pin), pin&0x1f);
}
}
//-------------------------------------------------------------------------------------------------------------------
// @brief GPIO<49><4F><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ģʽ
// @param pin ѡ<><D1A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> (<28><>ѡ<EFBFBD><D1A1><EFBFBD><EFBFBD>Χ<EFBFBD><CEA7> common.h <20><>PIN_enumö<6D><C3B6>ֵȷ<D6B5><C8B7>)
// @param pin_driver <09><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ģʽ<C4A3><CABD><EFBFBD><EFBFBD>
// @return void
// Sample usage: gpio_pin_driver(P00_0, IfxPort_PadDriver_cmosAutomotiveSpeed1)
//-------------------------------------------------------------------------------------------------------------------
void gpio_pin_driver(PIN_enum pin, IfxPort_PadDriver pin_driver)
{
IfxPort_setPinPadDriver(get_port(pin), pin&0x1f, pin_driver);
}
//-------------------------------------------------------------------------------------------------------------------
// @brief GPIO<49><4F><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// @param pin ѡ<><D1A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> (<28><>ѡ<EFBFBD><D1A1><EFBFBD><EFBFBD>Χ<EFBFBD><CEA7> common.h <20><>PIN_enumö<6D><C3B6>ֵȷ<D6B5><C8B7>)
// @param dat 0<><30><EFBFBD>͵<EFBFBD>ƽ 1<><31><EFBFBD>ߵ<EFBFBD>ƽ
// @return void
// Sample usage: gpio_set(P00_0, 1);//P00_0 <20><><EFBFBD><EFBFBD><EFBFBD>ߵ<EFBFBD>ƽ
//-------------------------------------------------------------------------------------------------------------------
void gpio_set(PIN_enum pin, uint8 dat)
{
if(dat) IfxPort_setPinHigh(get_port(pin), pin&0x1f);
else IfxPort_setPinLow(get_port(pin), pin&0x1f);
}
//-------------------------------------------------------------------------------------------------------------------
// @brief GPIO״̬<D7B4><CCAC>ȡ
// @param pin ѡ<><D1A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> (<28><>ѡ<EFBFBD><D1A1><EFBFBD><EFBFBD>Χ<EFBFBD><CEA7> common.h <20><>PIN_enumö<6D><C3B6>ֵȷ<D6B5><C8B7>)
// @return uint8 0<><30><EFBFBD>͵<EFBFBD>ƽ 1<><31><EFBFBD>ߵ<EFBFBD>ƽ
// Sample usage: uint8 status = gpio_get(P00_0);//<2F><>ȡP00_0<5F><30><EFBFBD>ŵ<EFBFBD>ƽ
//-------------------------------------------------------------------------------------------------------------------
uint8 gpio_get(PIN_enum pin)
{
return IfxPort_getPinState(get_port(pin), pin&0x1f);
}
//-------------------------------------------------------------------------------------------------------------------
// @brief GPIO<49><4F><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// @param pin ѡ<><D1A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> (<28><>ѡ<EFBFBD><D1A1><EFBFBD><EFBFBD>Χ<EFBFBD><CEA7> common.h <20><>PIN_enumö<6D><C3B6>ֵȷ<D6B5><C8B7>)
// @param dir <20><><EFBFBD>ŵķ<C5B5><C4B7><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>GPO <20><><EFBFBD>룺GPI
// @param pinmode <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ã<EFBFBD><C3A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ò<EFBFBD><C3B2><EFBFBD><EFBFBD><EFBFBD>zf_gpio.h<>ļ<EFBFBD><C4BC><EFBFBD>GPIOMODE_enumö<6D><C3B6>ֵȷ<D6B5><C8B7><EFBFBD><EFBFBD>
// @return void
// Sample usage: gpio_dir(P00_0, GPO, PUSHPULL);//<2F><><EFBFBD><EFBFBD>P00_0Ϊ<30><CEAA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ģʽ
//-------------------------------------------------------------------------------------------------------------------
void gpio_dir(PIN_enum pin, GPIODIR_enum dir, GPIOMODE_enum pinmode)
{
IfxPort_Mode port_mode;
if(dir == GPI)
{
switch(pinmode)
{
case NO_PULL: port_mode = IfxPort_Mode_inputNoPullDevice; break;
case PULLUP: port_mode = IfxPort_Mode_inputPullUp; break;
case PULLDOWN: port_mode = IfxPort_Mode_inputPullDown; break;
default: port_mode = IfxPort_Mode_inputPullUp; break;
}
}
else
{
switch(pinmode)
{
case OPENDRAIN: port_mode = IfxPort_Mode_outputOpenDrainGeneral; break;//<2F><>©<EFBFBD><C2A9><EFBFBD><EFBFBD>
default: port_mode = IfxPort_Mode_outputPushPullGeneral; break;//Ĭ<><C4AC>Ϊ<EFBFBD><CEAA><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
}
}
IfxPort_setPinMode(get_port(pin), pin&0x1f, port_mode);
}
//-------------------------------------------------------------------------------------------------------------------
// @brief GPIO <20><>ת
// @param pin ѡ<><D1A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> (<28><>ѡ<EFBFBD><D1A1><EFBFBD><EFBFBD>Χ<EFBFBD><CEA7> common.h <20><>PIN_enumö<6D><C3B6>ֵȷ<D6B5><C8B7>)
// @return void
// Sample usage: gpio_toggle(P00_0);//P00_0<5F><30><EFBFBD>ŵ<EFBFBD>ƽ<EFBFBD><C6BD>ת
//-------------------------------------------------------------------------------------------------------------------
void gpio_toggle(PIN_enum pin)
{
IfxPort_togglePin(get_port(pin), pin&0x1f);
}

View File

@@ -1,64 +0,0 @@
/*********************************************************************************************************************
* COPYRIGHT NOTICE
* Copyright (c) 2020,<2C><><EFBFBD>ɿƼ<C9BF>
* All rights reserved.
* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>QQȺ<51><C8BA><EFBFBD><EFBFBD>Ⱥ<EFBFBD><C8BA>824575535
*
* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݰ<EFBFBD>Ȩ<EFBFBD><C8A8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɿƼ<C9BF><C6BC><EFBFBD><EFBFBD>У<EFBFBD>δ<EFBFBD><CEB4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ҵ<EFBFBD><D2B5>;<EFBFBD><CDBE>
* <20><>ӭ<EFBFBD><D3AD>λʹ<CEBB>ò<EFBFBD><C3B2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>޸<EFBFBD><DEB8><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EBB1A3><EFBFBD><EFBFBD><EFBFBD>ɿƼ<C9BF><C6BC>İ<EFBFBD>Ȩ<EFBFBD><C8A8><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
*
* @file gpio
* @company <09>ɶ<EFBFBD><C9B6><EFBFBD><EFBFBD>ɿƼ<C9BF><C6BC><EFBFBD><EFBFBD>޹<EFBFBD>˾
* @author <09><><EFBFBD>ɿƼ<C9BF>(QQ3184284598)
* @version <09>鿴doc<6F><63>version<6F>ļ<EFBFBD> <20>汾˵<E6B1BE><CBB5>
* @Software ADS v1.2.2
* @Target core TC264D
* @Taobao https://seekfree.taobao.com/
* @date 2020-3-23
********************************************************************************************************************/
#ifndef _zf_gpio_h
#define _zf_gpio_h
#include "common.h"
#include "IFXPORT.h"
typedef enum // ö<><C3B6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ѡ<EFBFBD><D1A1>
{
NO_PULL, //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
PULLUP, //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
PULLDOWN, //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
PUSHPULL, //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
OPENDRAIN, //<2F><>©<EFBFBD><C2A9><EFBFBD><EFBFBD>
}GPIOMODE_enum;
#define GET_PORT_IN_ADDR(pin) (uint8 *)(&IfxPort_getAddress((IfxPort_Index)(pin/32))->IN + pin%32/8)
//<2F><>Ҫ<EFBFBD>ر<EFBFBD>ע<EFBFBD><D7A2>P20_2<5F>Dz<EFBFBD><C7B2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ģ<EFBFBD><C4A3><EFBFBD><EFBFBD><EFBFBD>ֻ<EFBFBD><D6BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ĺ<EFBFBD><C4B9><EFBFBD>
//<2F><>Ҫ<EFBFBD>ر<EFBFBD>ע<EFBFBD><D7A2>P20_2<5F>Dz<EFBFBD><C7B2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ģ<EFBFBD><C4A3><EFBFBD><EFBFBD><EFBFBD>ֻ<EFBFBD><D6BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ĺ<EFBFBD><C4B9><EFBFBD>
//<2F><>Ҫ<EFBFBD>ر<EFBFBD>ע<EFBFBD><D7A2>P20_2<5F>Dz<EFBFBD><C7B2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ģ<EFBFBD><C4A3><EFBFBD><EFBFBD><EFBFBD>ֻ<EFBFBD><D6BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ĺ<EFBFBD><C4B9><EFBFBD>
//------------------------------------------------------
//ͨ<><CDA8>GPIO<49><4F><EFBFBD><EFBFBD>
void gpio_init(PIN_enum pin, GPIODIR_enum dir, uint8 dat, GPIOMODE_enum pinconf);
void gpio_pin_driver(PIN_enum pin, IfxPort_PadDriver pin_driver);
void gpio_set(PIN_enum pin, uint8 dat);
uint8 gpio_get(PIN_enum pin);
void gpio_dir(PIN_enum pin, GPIODIR_enum dir, GPIOMODE_enum pinconf);
void gpio_toggle(PIN_enum pin);
#endif

View File

@@ -1,187 +0,0 @@
/*********************************************************************************************************************
* COPYRIGHT NOTICE
* Copyright (c) 2020,<2C><><EFBFBD>ɿƼ<C9BF>
* All rights reserved.
* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>QQȺ<51><C8BA><EFBFBD><EFBFBD>Ⱥ<EFBFBD><C8BA>824575535
*
* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݰ<EFBFBD>Ȩ<EFBFBD><C8A8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɿƼ<C9BF><C6BC><EFBFBD><EFBFBD>У<EFBFBD>δ<EFBFBD><CEB4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ҵ<EFBFBD><D2B5>;<EFBFBD><CDBE>
* <20><>ӭ<EFBFBD><D3AD>λʹ<CEBB>ò<EFBFBD><C3B2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>޸<EFBFBD><DEB8><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EBB1A3><EFBFBD><EFBFBD><EFBFBD>ɿƼ<C9BF><C6BC>İ<EFBFBD>Ȩ<EFBFBD><C8A8><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
*
* @file gpt12
* @company <09>ɶ<EFBFBD><C9B6><EFBFBD><EFBFBD>ɿƼ<C9BF><C6BC><EFBFBD><EFBFBD>޹<EFBFBD>˾
* @author <09><><EFBFBD>ɿƼ<C9BF>(QQ3184284598)
* @version <09>鿴doc<6F><63>version<6F>ļ<EFBFBD> <20>汾˵<E6B1BE><CBB5>
* @Software ADS v1.2.2
* @Target core TC264D
* @Taobao https://seekfree.taobao.com/
* @date 2020-3-23
********************************************************************************************************************/
#include "IfxGpt12_IncrEnc.h"
#include "zf_assert.h"
#include "zf_gpt12.h"
void gpt12_mux(GPTN_enum gptn, GPT_PIN_enum count_pin, GPT_PIN_enum dir_pin)
{
IfxGpt12_TxIn_In *count;
IfxGpt12_TxEud_In *dir;
switch(gptn)
{
case GPT12_T2:
{
if (GPT12_T2INA_P00_7 == count_pin) count = &IfxGpt120_T2INA_P00_7_IN;
else if (GPT12_T2INB_P33_7 == count_pin) count = &IfxGpt120_T2INB_P33_7_IN;
else ZF_ASSERT(FALSE);
if (GPT12_T2EUDA_P00_8 == dir_pin) dir = &IfxGpt120_T2EUDA_P00_8_IN;
else if (GPT12_T2EUDB_P33_6 == dir_pin) dir = &IfxGpt120_T2EUDB_P33_6_IN;
else ZF_ASSERT(FALSE);
}break;
case GPT12_T3:
{
if (GPT12_T3INA_P02_6 == count_pin) count = &IfxGpt120_T3INA_P02_6_IN;
else if (GPT12_T3INB_P10_4 == count_pin) count = &IfxGpt120_T3INB_P10_4_IN;
else ZF_ASSERT(FALSE);
if (GPT12_T3EUDA_P02_7 == dir_pin) dir = &IfxGpt120_T3EUDA_P02_7_IN;
else if (GPT12_T3EUDB_P10_7 == dir_pin) dir = &IfxGpt120_T3EUDB_P10_7_IN;
else ZF_ASSERT(FALSE);
}break;
case GPT12_T4:
{
if (GPT12_T4INA_P02_8 == count_pin) count = &IfxGpt120_T4INA_P02_8_IN;
else if (GPT12_T4INB_P10_8 == count_pin) count = &IfxGpt120_T4INB_P10_8_IN;
else ZF_ASSERT(FALSE);
if (GPT12_T4EUDA_P00_9 == dir_pin) dir = &IfxGpt120_T4EUDA_P00_9_IN;
else if (GPT12_T4EUDB_P33_5 == dir_pin) dir = &IfxGpt120_T4EUDB_P33_5_IN;
else ZF_ASSERT(FALSE);
}break;
case GPT12_T5:
{
if (GPT12_T5INA_P21_7 == count_pin) count = &IfxGpt120_T5INA_P21_7_IN;
else if (GPT12_T5INB_P10_3 == count_pin) count = &IfxGpt120_T5INB_P10_3_IN;
else ZF_ASSERT(FALSE);
if (GPT12_T5EUDA_P21_6 == dir_pin) dir = &IfxGpt120_T5EUDA_P21_6_IN;
else if (GPT12_T5EUDB_P10_1 == dir_pin) dir = &IfxGpt120_T5EUDB_P10_1_IN;
else ZF_ASSERT(FALSE);
}break;
case GPT12_T6:
{
if (GPT12_T6INA_P20_3 == count_pin) count = &IfxGpt120_T6INA_P20_3_IN;
else if (GPT12_T6INB_P10_2 == count_pin) count = &IfxGpt120_T6INB_P10_2_IN;
else ZF_ASSERT(FALSE);
if (GPT12_T6EUDA_P20_0 == dir_pin) dir = &IfxGpt120_T6EUDA_P20_0_IN;
else if (GPT12_T6EUDB_P10_0 == dir_pin) dir = &IfxGpt120_T6EUDB_P10_0_IN;
else ZF_ASSERT(FALSE);
}break;
}
#pragma warning 507
IfxGpt12_initTxInPinWithPadLevel(count, IfxPort_InputMode_pullUp, IfxPort_PadDriver_cmosAutomotiveSpeed1);
IfxGpt12_initTxEudInPinWithPadLevel(dir, IfxPort_InputMode_pullUp, IfxPort_PadDriver_cmosAutomotiveSpeed1);
#pragma warning default
}
//-------------------------------------------------------------------------------------------------------------------
// @brief GPT12<31><32>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɼ<EFBFBD><C9BC><EFBFBD>
// @param gptn ѡ<><D1A1><EFBFBD><EFBFBD>ʹ<EFBFBD>õ<EFBFBD>GPT12<31><32>ʱ<EFBFBD><CAB1>
// @param count_pin <09><><EFBFBD>ü<EFBFBD><C3BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// @param dir_pin <09><><EFBFBD>ü<EFBFBD><C3BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// @return void
// Sample usage: gpt12_init(GPT12_T2, GPT12_T2INA_P00_7, GPT12_T2EUDA_P00_8);//ʹ<><CAB9>T2<54><32>ʱ<EFBFBD><CAB1> P00_7<5F><37><EFBFBD>Ž<EFBFBD><C5BD>м<EFBFBD><D0BC><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʹ<EFBFBD><CAB9>P00_8<5F><38><EFBFBD><EFBFBD>
//-------------------------------------------------------------------------------------------------------------------
void gpt12_init(GPTN_enum gptn, GPT_PIN_enum count_pin, GPT_PIN_enum dir_pin)
{
IfxGpt12_enableModule(&MODULE_GPT120);
IfxGpt12_setGpt1BlockPrescaler(&MODULE_GPT120, IfxGpt12_Gpt1BlockPrescaler_4);
IfxGpt12_setGpt2BlockPrescaler(&MODULE_GPT120, IfxGpt12_Gpt2BlockPrescaler_4);
gpt12_mux(gptn, count_pin, dir_pin);
switch(gptn)
{
case GPT12_T2:
{
IfxGpt12_T2_setCounterInputMode(&MODULE_GPT120, IfxGpt12_CounterInputMode_risingEdgeTxIN);
IfxGpt12_T2_setDirectionSource(&MODULE_GPT120, IfxGpt12_TimerDirectionSource_external);
IfxGpt12_T2_setMode(&MODULE_GPT120, IfxGpt12_Mode_counter);
IfxGpt12_T2_run(&MODULE_GPT120, IfxGpt12_TimerRun_start);
}break;
case GPT12_T3:
{
IfxGpt12_T3_setCounterInputMode(&MODULE_GPT120, IfxGpt12_CounterInputMode_risingEdgeTxIN);
IfxGpt12_T3_setDirectionSource(&MODULE_GPT120, IfxGpt12_TimerDirectionSource_external);
IfxGpt12_T3_setMode(&MODULE_GPT120, IfxGpt12_Mode_counter);
IfxGpt12_T3_run(&MODULE_GPT120, IfxGpt12_TimerRun_start);
}break;
case GPT12_T4:
{
IfxGpt12_T4_setCounterInputMode(&MODULE_GPT120, IfxGpt12_CounterInputMode_risingEdgeTxIN);
IfxGpt12_T4_setDirectionSource(&MODULE_GPT120, IfxGpt12_TimerDirectionSource_external);
IfxGpt12_T4_setMode(&MODULE_GPT120, IfxGpt12_Mode_counter);
IfxGpt12_T4_run(&MODULE_GPT120, IfxGpt12_TimerRun_start);
}break;
case GPT12_T5:
{
IfxGpt12_T5_setCounterInputMode(&MODULE_GPT120, IfxGpt12_CounterInputMode_risingEdgeTxIN);
IfxGpt12_T5_setDirectionSource(&MODULE_GPT120, IfxGpt12_TimerDirectionSource_external);
IfxGpt12_T5_setMode(&MODULE_GPT120, IfxGpt12_Mode_counter);
IfxGpt12_T5_run(&MODULE_GPT120, IfxGpt12_TimerRun_start);
}break;
case GPT12_T6:
{
IfxGpt12_T6_setCounterInputMode(&MODULE_GPT120, IfxGpt12_CounterInputMode_risingEdgeTxIN);
IfxGpt12_T6_setDirectionSource(&MODULE_GPT120, IfxGpt12_TimerDirectionSource_external);
IfxGpt12_T6_setMode(&MODULE_GPT120, IfxGpt12_Mode_counter);
IfxGpt12_T6_run(&MODULE_GPT120, IfxGpt12_TimerRun_start);
}break;
}
}
//-------------------------------------------------------------------------------------------------------------------
// @brief GPT12<31><32><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɼ<EFBFBD><C9BC><EFBFBD>
// @param gptn ѡ<><D1A1><EFBFBD><EFBFBD>ʹ<EFBFBD>õ<EFBFBD>GPT12<31><32>ʱ<EFBFBD><CAB1>
// @return void
// Sample usage: speed = gpt12_get(GPT12_T2);//ʹ<><CAB9>T2<54><32>ʱ<EFBFBD><CAB1>
//-------------------------------------------------------------------------------------------------------------------
int16 gpt12_get(GPTN_enum gptn)
{
switch(gptn)
{
case GPT12_T2: return (int16)IfxGpt12_T2_getTimerValue(&MODULE_GPT120);
case GPT12_T3: return (int16)IfxGpt12_T3_getTimerValue(&MODULE_GPT120);
case GPT12_T4: return (int16)IfxGpt12_T4_getTimerValue(&MODULE_GPT120);
case GPT12_T5: return (int16)IfxGpt12_T5_getTimerValue(&MODULE_GPT120);
case GPT12_T6: return (int16)IfxGpt12_T6_getTimerValue(&MODULE_GPT120);
default: return 0;
}
}
//-------------------------------------------------------------------------------------------------------------------
// @brief <20><><EFBFBD><EFBFBD>GPT12<31><32><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɼ<EFBFBD><C9BC><EFBFBD>
// @param gptn ѡ<><D1A1><EFBFBD><EFBFBD>ʹ<EFBFBD>õ<EFBFBD>GPT12<31><32>ʱ<EFBFBD><CAB1>
// @return void
// Sample usage: gpt12_clear(GPT12_T2);//ʹ<><CAB9>T2<54><32>ʱ<EFBFBD><CAB1>
//-------------------------------------------------------------------------------------------------------------------
void gpt12_clear(GPTN_enum gptn)
{
switch(gptn)
{
case GPT12_T2: IfxGpt12_T2_setTimerValue(&MODULE_GPT120, 0); break;
case GPT12_T3: IfxGpt12_T3_setTimerValue(&MODULE_GPT120, 0); break;
case GPT12_T4: IfxGpt12_T4_setTimerValue(&MODULE_GPT120, 0); break;
case GPT12_T5: IfxGpt12_T5_setTimerValue(&MODULE_GPT120, 0); break;
case GPT12_T6: IfxGpt12_T6_setTimerValue(&MODULE_GPT120, 0); break;
}
}

View File

@@ -1,64 +0,0 @@
/*********************************************************************************************************************
* COPYRIGHT NOTICE
* Copyright (c) 2020,<2C><><EFBFBD>ɿƼ<C9BF>
* All rights reserved.
* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>QQȺ<51><C8BA><EFBFBD><EFBFBD>Ⱥ<EFBFBD><C8BA>824575535
*
* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݰ<EFBFBD>Ȩ<EFBFBD><C8A8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɿƼ<C9BF><C6BC><EFBFBD><EFBFBD>У<EFBFBD>δ<EFBFBD><CEB4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ҵ<EFBFBD><D2B5>;<EFBFBD><CDBE>
* <20><>ӭ<EFBFBD><D3AD>λʹ<CEBB>ò<EFBFBD><C3B2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>޸<EFBFBD><DEB8><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EBB1A3><EFBFBD><EFBFBD><EFBFBD>ɿƼ<C9BF><C6BC>İ<EFBFBD>Ȩ<EFBFBD><C8A8><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
*
* @file gpt12
* @company <09>ɶ<EFBFBD><C9B6><EFBFBD><EFBFBD>ɿƼ<C9BF><C6BC><EFBFBD><EFBFBD>޹<EFBFBD>˾
* @author <09><><EFBFBD>ɿƼ<C9BF>(QQ3184284598)
* @version <09>鿴doc<6F><63>version<6F>ļ<EFBFBD> <20>汾˵<E6B1BE><CBB5>
* @Software ADS v1.2.2
* @Target core TC264D
* @Taobao https://seekfree.taobao.com/
* @date 2020-3-23
********************************************************************************************************************/
#ifndef _zf_gpt12_h
#define _zf_gpt12_h
#include "common.h"
typedef enum // ö<><C3B6>GPT12 <20><>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
{
GPT12_T2,
GPT12_T3,
GPT12_T4,
GPT12_T5,
GPT12_T6,
}GPTN_enum;
//<2F><>ö<EFBFBD>ٶ<EFBFBD><D9B6><EFBFBD><E5B2BB><EFBFBD><EFBFBD><EFBFBD>û<EFBFBD><C3BB>޸<EFBFBD>
typedef enum //ö<><C3B6>GPT12<31><32><EFBFBD><EFBFBD>
{
GPT12_T2INA_P00_7, GPT12_T2INB_P33_7, //T2<54><32>ʱ<EFBFBD><CAB1> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ſ<EFBFBD>ѡ<EFBFBD><D1A1>Χ
GPT12_T2EUDA_P00_8, GPT12_T2EUDB_P33_6, //T2<54><32>ʱ<EFBFBD><CAB1> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ſ<EFBFBD>ѡ<EFBFBD><D1A1>Χ
//<2F><>LQFP144<34><34>װ<EFBFBD><D7B0>û<EFBFBD><C3BB>P10_4 <20><>P10_7
GPT12_T3INA_P02_6, GPT12_T3INB_P10_4, //T3<54><33>ʱ<EFBFBD><CAB1> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ſ<EFBFBD>ѡ<EFBFBD><D1A1>Χ
GPT12_T3EUDA_P02_7, GPT12_T3EUDB_P10_7, //T3<54><33>ʱ<EFBFBD><CAB1> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ſ<EFBFBD>ѡ<EFBFBD><D1A1>Χ
//<2F><>LQFP144<34><34>װ<EFBFBD><D7B0>û<EFBFBD><C3BB>P10_8
GPT12_T4INA_P02_8, GPT12_T4INB_P10_8, //T4<54><34>ʱ<EFBFBD><CAB1> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ſ<EFBFBD>ѡ<EFBFBD><D1A1>Χ
GPT12_T4EUDA_P00_9, GPT12_T4EUDB_P33_5, //T4<54><34>ʱ<EFBFBD><CAB1> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ſ<EFBFBD>ѡ<EFBFBD><D1A1>Χ
GPT12_T5INB_P10_3, GPT12_T5INA_P21_7, //T5<54><35>ʱ<EFBFBD><CAB1> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ſ<EFBFBD>ѡ<EFBFBD><D1A1>Χ
GPT12_T5EUDB_P10_1, GPT12_T5EUDA_P21_6, //T5<54><35>ʱ<EFBFBD><CAB1> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ſ<EFBFBD>ѡ<EFBFBD><D1A1>Χ
//<2F><>LQFP144<34><34>װ<EFBFBD><D7B0>û<EFBFBD><C3BB>P10_0
GPT12_T6INB_P10_2, GPT12_T6INA_P20_3, //T6<54><36>ʱ<EFBFBD><CAB1> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ſ<EFBFBD>ѡ<EFBFBD><D1A1>Χ
GPT12_T6EUDB_P10_0, GPT12_T6EUDA_P20_0, //T6<54><36>ʱ<EFBFBD><CAB1> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ſ<EFBFBD>ѡ<EFBFBD><D1A1>Χ
}GPT_PIN_enum;
void gpt12_init(GPTN_enum gptn, GPT_PIN_enum count_pin, GPT_PIN_enum dir_pin);
int16 gpt12_get(GPTN_enum gptn);
void gpt12_clear(GPTN_enum gptn);
#endif

View File

@@ -1,320 +0,0 @@
/*********************************************************************************************************************
* COPYRIGHT NOTICE
* Copyright (c) 2020,<2C><><EFBFBD>ɿƼ<C9BF>
* All rights reserved.
* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>QQȺ<51><C8BA><EFBFBD><EFBFBD>Ⱥ<EFBFBD><C8BA>824575535
*
* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݰ<EFBFBD>Ȩ<EFBFBD><C8A8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɿƼ<C9BF><C6BC><EFBFBD><EFBFBD>У<EFBFBD>δ<EFBFBD><CEB4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ҵ<EFBFBD><D2B5>;<EFBFBD><CDBE>
* <20><>ӭ<EFBFBD><D3AD>λʹ<CEBB>ò<EFBFBD><C3B2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>޸<EFBFBD><DEB8><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EBB1A3><EFBFBD><EFBFBD><EFBFBD>ɿƼ<C9BF><C6BC>İ<EFBFBD>Ȩ<EFBFBD><C8A8><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
*
* @file gtm_pwm
* @company <09>ɶ<EFBFBD><C9B6><EFBFBD><EFBFBD>ɿƼ<C9BF><C6BC><EFBFBD><EFBFBD>޹<EFBFBD>˾
* @author <09><><EFBFBD>ɿƼ<C9BF>(QQ3184284598)
* @version <09>鿴doc<6F><63>version<6F>ļ<EFBFBD> <20>汾˵<E6B1BE><CBB5>
* @Software ADS v1.2.2
* @Target core TC264D
* @Taobao https://seekfree.taobao.com/
* @date 2020-3-23
********************************************************************************************************************/
#include "IfxGtm_Atom_Pwm.h"
#include "zf_gtm_pwm.h"
#define CMU_CLK_FREQ 20000000.0f //CMUʱ<55><CAB1>Ƶ<EFBFBD><C6B5>
IfxGtm_Atom_ToutMap* gtm_atom_mux(ATOM_PIN_enum atom_pin)
{
switch(atom_pin)
{
case ATOM0_CH0_P00_0: return &IfxGtm_ATOM0_0_TOUT9_P00_0_OUT;
case ATOM0_CH0_P02_0: return &IfxGtm_ATOM0_0_TOUT0_P02_0_OUT;
case ATOM0_CH0_P02_8: return &IfxGtm_ATOM0_0_TOUT8_P02_8_OUT;
case ATOM0_CH0_P14_5: return &IfxGtm_ATOM0_0_TOUT85_P14_5_OUT;
case ATOM0_CH0_P21_2: return &IfxGtm_ATOM0_0_TOUT53_P21_2_OUT;
case ATOM0_CH0_P22_1: return &IfxGtm_ATOM0_0_TOUT48_P22_1_OUT;
case ATOM0_CH1_P00_1: return &IfxGtm_ATOM0_1_TOUT10_P00_1_OUT;
case ATOM0_CH1_P00_2: return &IfxGtm_ATOM0_1_TOUT11_P00_2_OUT;
case ATOM0_CH1_P02_1: return &IfxGtm_ATOM0_1_TOUT1_P02_1_OUT;
case ATOM0_CH1_P10_1: return &IfxGtm_ATOM0_1_TOUT103_P10_1_OUT;
case ATOM0_CH1_P14_4: return &IfxGtm_ATOM0_1_TOUT84_P14_4_OUT;
case ATOM0_CH1_P21_3: return &IfxGtm_ATOM0_1_TOUT54_P21_3_OUT;
case ATOM0_CH1_P22_0: return &IfxGtm_ATOM0_1_TOUT47_P22_0_OUT;
case ATOM0_CH1_P33_9: return &IfxGtm_ATOM0_1_TOUT31_P33_9_OUT;
case ATOM0_CH2_P00_3: return &IfxGtm_ATOM0_2_TOUT12_P00_3_OUT;
case ATOM0_CH2_P02_2: return &IfxGtm_ATOM0_2_TOUT2_P02_2_OUT;
case ATOM0_CH2_P10_2: return &IfxGtm_ATOM0_2_TOUT104_P10_2_OUT;
case ATOM0_CH2_P10_5: return &IfxGtm_ATOM0_2_TOUT107_P10_5_OUT;
case ATOM0_CH2_P14_3: return &IfxGtm_ATOM0_2_TOUT83_P14_3_OUT;
case ATOM0_CH2_P21_4: return &IfxGtm_ATOM0_2_TOUT55_P21_4_OUT;
case ATOM0_CH2_P33_11: return &IfxGtm_ATOM0_2_TOUT33_P33_11_OUT;
case ATOM0_CH3_P00_4: return &IfxGtm_ATOM0_3_TOUT13_P00_4_OUT;
case ATOM0_CH3_P02_3: return &IfxGtm_ATOM0_3_TOUT3_P02_3_OUT;
case ATOM0_CH3_P10_3: return &IfxGtm_ATOM0_3_TOUT105_P10_3_OUT;
case ATOM0_CH3_P10_6: return &IfxGtm_ATOM0_3_TOUT108_P10_6_OUT;
case ATOM0_CH3_P14_2: return &IfxGtm_ATOM0_3_TOUT82_P14_2_OUT;
case ATOM0_CH3_P21_5: return &IfxGtm_ATOM0_3_TOUT56_P21_5_OUT;
case ATOM0_CH3_P22_2: return &IfxGtm_ATOM0_3_TOUT49_P22_2_OUT;
case ATOM0_CH4_P00_5: return &IfxGtm_ATOM0_4_TOUT14_P00_5_OUT;
case ATOM0_CH4_P02_4: return &IfxGtm_ATOM0_4_TOUT4_P02_4_OUT;
case ATOM0_CH4_P14_1: return &IfxGtm_ATOM0_4_TOUT81_P14_1_OUT;
case ATOM0_CH4_P20_3: return &IfxGtm_ATOM0_4_TOUT61_P20_3_OUT;
case ATOM0_CH4_P21_6: return &IfxGtm_ATOM0_4_TOUT57_P21_6_OUT;
case ATOM0_CH4_P22_3: return &IfxGtm_ATOM0_4_TOUT50_P22_3_OUT;
case ATOM0_CH5_P00_6: return &IfxGtm_ATOM0_5_TOUT15_P00_6_OUT;
case ATOM0_CH5_P02_5: return &IfxGtm_ATOM0_5_TOUT5_P02_5_OUT;
case ATOM0_CH5_P21_7: return &IfxGtm_ATOM0_5_TOUT58_P21_7_OUT;
case ATOM0_CH5_P32_4: return &IfxGtm_ATOM0_5_TOUT40_P32_4_OUT;
case ATOM0_CH6_P00_7: return &IfxGtm_ATOM0_6_TOUT16_P00_7_OUT;
case ATOM0_CH6_P02_6: return &IfxGtm_ATOM0_6_TOUT6_P02_6_OUT;
case ATOM0_CH6_P20_0: return &IfxGtm_ATOM0_6_TOUT59_P20_0_OUT;
case ATOM0_CH6_P23_1: return &IfxGtm_ATOM0_6_TOUT42_P23_1_OUT;
case ATOM0_CH7_P00_8: return &IfxGtm_ATOM0_7_TOUT17_P00_8_OUT;
case ATOM0_CH7_P02_7: return &IfxGtm_ATOM0_7_TOUT7_P02_7_OUT;
case ATOM0_CH7_P20_8: return &IfxGtm_ATOM0_7_TOUT64_P20_8_OUT;
case ATOM1_CH0_P00_0: return &IfxGtm_ATOM1_0_TOUT9_P00_0_OUT;
case ATOM1_CH0_P02_0: return &IfxGtm_ATOM1_0_TOUT0_P02_0_OUT;
case ATOM1_CH0_P02_8: return &IfxGtm_ATOM1_0_TOUT8_P02_8_OUT;
case ATOM1_CH0_P15_5: return &IfxGtm_ATOM1_0_TOUT76_P15_5_OUT;
case ATOM1_CH0_P15_6: return &IfxGtm_ATOM1_0_TOUT77_P15_6_OUT;
case ATOM1_CH0_P20_12: return &IfxGtm_ATOM1_0_TOUT68_P20_12_OUT;
case ATOM1_CH0_P21_2: return &IfxGtm_ATOM1_0_TOUT53_P21_2_OUT;
case ATOM1_CH0_P22_1: return &IfxGtm_ATOM1_0_TOUT48_P22_1_OUT;
case ATOM1_CH1_P00_1: return &IfxGtm_ATOM1_1_TOUT10_P00_1_OUT;
case ATOM1_CH1_P00_2: return &IfxGtm_ATOM1_1_TOUT11_P00_2_OUT;
case ATOM1_CH1_P02_1: return &IfxGtm_ATOM1_1_TOUT1_P02_1_OUT;
case ATOM1_CH1_P10_1: return &IfxGtm_ATOM1_1_TOUT103_P10_1_OUT;
case ATOM1_CH1_P14_6: return &IfxGtm_ATOM1_1_TOUT86_P14_6_OUT;
case ATOM1_CH1_P15_7: return &IfxGtm_ATOM1_1_TOUT78_P15_7_OUT;
case ATOM1_CH1_P15_8: return &IfxGtm_ATOM1_1_TOUT79_P15_8_OUT;
case ATOM1_CH1_P20_13: return &IfxGtm_ATOM1_1_TOUT69_P20_13_OUT;
case ATOM1_CH1_P21_3: return &IfxGtm_ATOM1_1_TOUT54_P21_3_OUT;
case ATOM1_CH1_P22_0: return &IfxGtm_ATOM1_1_TOUT47_P22_0_OUT;
case ATOM1_CH1_P33_9: return &IfxGtm_ATOM1_1_TOUT31_P33_9_OUT;
case ATOM1_CH2_P00_3: return &IfxGtm_ATOM1_2_TOUT12_P00_3_OUT;
case ATOM1_CH2_P02_2: return &IfxGtm_ATOM1_2_TOUT2_P02_2_OUT;
case ATOM1_CH2_P10_2: return &IfxGtm_ATOM1_2_TOUT104_P10_2_OUT;
case ATOM1_CH2_P10_5: return &IfxGtm_ATOM1_2_TOUT107_P10_5_OUT;
case ATOM1_CH2_P14_0: return &IfxGtm_ATOM1_2_TOUT80_P14_0_OUT;
case ATOM1_CH2_P20_14: return &IfxGtm_ATOM1_2_TOUT70_P20_14_OUT;
case ATOM1_CH2_P21_4: return &IfxGtm_ATOM1_2_TOUT55_P21_4_OUT;
case ATOM1_CH2_P33_11: return &IfxGtm_ATOM1_2_TOUT33_P33_11_OUT;
case ATOM1_CH3_P00_4: return &IfxGtm_ATOM1_3_TOUT13_P00_4_OUT;
case ATOM1_CH3_P02_3: return &IfxGtm_ATOM1_3_TOUT3_P02_3_OUT;
case ATOM1_CH3_P10_3: return &IfxGtm_ATOM1_3_TOUT105_P10_3_OUT;
case ATOM1_CH3_P10_6: return &IfxGtm_ATOM1_3_TOUT108_P10_6_OUT;
case ATOM1_CH3_P15_0: return &IfxGtm_ATOM1_3_TOUT71_P15_0_OUT;
case ATOM1_CH3_P21_5: return &IfxGtm_ATOM1_3_TOUT56_P21_5_OUT;
case ATOM1_CH3_P22_2: return &IfxGtm_ATOM1_3_TOUT49_P22_2_OUT;
case ATOM1_CH4_P00_5: return &IfxGtm_ATOM1_4_TOUT14_P00_5_OUT;
case ATOM1_CH4_P02_4: return &IfxGtm_ATOM1_4_TOUT4_P02_4_OUT;
case ATOM1_CH4_P15_1: return &IfxGtm_ATOM1_4_TOUT72_P15_1_OUT;
case ATOM1_CH4_P20_3: return &IfxGtm_ATOM1_4_TOUT61_P20_3_OUT;
case ATOM1_CH4_P21_6: return &IfxGtm_ATOM1_4_TOUT57_P21_6_OUT;
case ATOM1_CH4_P22_3: return &IfxGtm_ATOM1_4_TOUT50_P22_3_OUT;
case ATOM1_CH5_P00_6: return &IfxGtm_ATOM1_5_TOUT15_P00_6_OUT;
case ATOM1_CH5_P02_5: return &IfxGtm_ATOM1_5_TOUT5_P02_5_OUT;
case ATOM1_CH5_P15_2: return &IfxGtm_ATOM1_5_TOUT73_P15_2_OUT;
case ATOM1_CH5_P20_9: return &IfxGtm_ATOM1_5_TOUT65_P20_9_OUT;
case ATOM1_CH5_P21_7: return &IfxGtm_ATOM1_5_TOUT58_P21_7_OUT;
case ATOM1_CH5_P32_4: return &IfxGtm_ATOM1_5_TOUT40_P32_4_OUT;
case ATOM1_CH6_P00_7: return &IfxGtm_ATOM1_6_TOUT16_P00_7_OUT;
case ATOM1_CH6_P02_6: return &IfxGtm_ATOM1_6_TOUT6_P02_6_OUT;
case ATOM1_CH6_P15_3: return &IfxGtm_ATOM1_6_TOUT74_P15_3_OUT;
case ATOM1_CH6_P20_0: return &IfxGtm_ATOM1_6_TOUT59_P20_0_OUT;
case ATOM1_CH6_P20_10: return &IfxGtm_ATOM1_6_TOUT66_P20_10_OUT;
case ATOM1_CH6_P23_1: return &IfxGtm_ATOM1_6_TOUT42_P23_1_OUT;
case ATOM1_CH7_P00_8: return &IfxGtm_ATOM1_7_TOUT17_P00_8_OUT;
case ATOM1_CH7_P02_7: return &IfxGtm_ATOM1_7_TOUT7_P02_7_OUT;
case ATOM1_CH7_P15_4: return &IfxGtm_ATOM1_7_TOUT75_P15_4_OUT;
case ATOM1_CH7_P20_11: return &IfxGtm_ATOM1_7_TOUT67_P20_11_OUT;
case ATOM2_CH0_P00_9: return &IfxGtm_ATOM2_0_TOUT18_P00_9_OUT;
case ATOM2_CH0_P13_3: return &IfxGtm_ATOM2_0_TOUT94_P13_3_OUT;
case ATOM2_CH0_P20_12: return &IfxGtm_ATOM2_0_TOUT68_P20_12_OUT;
case ATOM2_CH0_P33_4: return &IfxGtm_ATOM2_0_TOUT26_P33_4_OUT;
case ATOM2_CH0_P33_10: return &IfxGtm_ATOM2_0_TOUT32_P33_10_OUT;
case ATOM2_CH1_P11_2: return &IfxGtm_ATOM2_1_TOUT95_P11_2_OUT;
case ATOM2_CH1_P20_13: return &IfxGtm_ATOM2_1_TOUT69_P20_13_OUT;
case ATOM2_CH1_P33_5: return &IfxGtm_ATOM2_1_TOUT27_P33_5_OUT;
case ATOM2_CH2_P11_3: return &IfxGtm_ATOM2_2_TOUT96_P11_3_OUT;
case ATOM2_CH2_P20_14: return &IfxGtm_ATOM2_2_TOUT70_P20_14_OUT;
case ATOM2_CH2_P33_6: return &IfxGtm_ATOM2_2_TOUT28_P33_6_OUT;
case ATOM2_CH3_P00_12: return &IfxGtm_ATOM2_3_TOUT21_P00_12_OUT;
case ATOM2_CH3_P11_6: return &IfxGtm_ATOM2_3_TOUT97_P11_6_OUT;
case ATOM2_CH3_P15_0: return &IfxGtm_ATOM2_3_TOUT71_P15_0_OUT;
case ATOM2_CH3_P33_7: return &IfxGtm_ATOM2_3_TOUT29_P33_7_OUT;
case ATOM2_CH4_P11_9: return &IfxGtm_ATOM2_4_TOUT98_P11_9_OUT;
case ATOM2_CH4_P15_1: return &IfxGtm_ATOM2_4_TOUT72_P15_1_OUT;
case ATOM2_CH4_P33_8: return &IfxGtm_ATOM2_4_TOUT30_P33_8_OUT;
case ATOM2_CH4_P33_12: return &IfxGtm_ATOM2_4_TOUT34_P33_12_OUT;
case ATOM2_CH5_P11_10: return &IfxGtm_ATOM2_5_TOUT99_P11_10_OUT;
case ATOM2_CH5_P13_0: return &IfxGtm_ATOM2_5_TOUT91_P13_0_OUT;
case ATOM2_CH5_P15_2: return &IfxGtm_ATOM2_5_TOUT73_P15_2_OUT;
case ATOM2_CH5_P20_9: return &IfxGtm_ATOM2_5_TOUT65_P20_9_OUT;
case ATOM2_CH5_P33_13: return &IfxGtm_ATOM2_5_TOUT35_P33_13_OUT;
case ATOM2_CH6_P11_11: return &IfxGtm_ATOM2_6_TOUT100_P11_11_OUT;
case ATOM2_CH6_P13_1: return &IfxGtm_ATOM2_6_TOUT92_P13_1_OUT;
case ATOM2_CH6_P15_3: return &IfxGtm_ATOM2_6_TOUT74_P15_3_OUT;
case ATOM2_CH6_P20_6: return &IfxGtm_ATOM2_6_TOUT62_P20_6_OUT;
case ATOM2_CH6_P20_10: return &IfxGtm_ATOM2_6_TOUT66_P20_10_OUT;
case ATOM2_CH6_P32_0: return &IfxGtm_ATOM2_6_TOUT36_P32_0_OUT;
case ATOM2_CH7_P11_12: return &IfxGtm_ATOM2_7_TOUT101_P11_12_OUT;
case ATOM2_CH7_P13_2: return &IfxGtm_ATOM2_7_TOUT93_P13_2_OUT;
case ATOM2_CH7_P15_4: return &IfxGtm_ATOM2_7_TOUT75_P15_4_OUT;
case ATOM2_CH7_P20_7: return &IfxGtm_ATOM2_7_TOUT63_P20_7_OUT;
case ATOM2_CH7_P20_8: return &IfxGtm_ATOM2_7_TOUT64_P20_8_OUT;
case ATOM2_CH7_P20_11: return &IfxGtm_ATOM2_7_TOUT67_P20_11_OUT;
case ATOM3_CH0_P00_9: return &IfxGtm_ATOM3_0_TOUT18_P00_9_OUT;
case ATOM3_CH0_P13_3: return &IfxGtm_ATOM3_0_TOUT94_P13_3_OUT;
case ATOM3_CH0_P14_5: return &IfxGtm_ATOM3_0_TOUT85_P14_5_OUT;
case ATOM3_CH0_P15_5: return &IfxGtm_ATOM3_0_TOUT76_P15_5_OUT;
case ATOM3_CH0_P15_6: return &IfxGtm_ATOM3_0_TOUT77_P15_6_OUT;
case ATOM3_CH0_P33_4: return &IfxGtm_ATOM3_0_TOUT26_P33_4_OUT;
case ATOM3_CH0_P33_10: return &IfxGtm_ATOM3_0_TOUT32_P33_10_OUT;
case ATOM3_CH1_P11_2: return &IfxGtm_ATOM3_1_TOUT95_P11_2_OUT;
case ATOM3_CH1_P14_4: return &IfxGtm_ATOM3_1_TOUT84_P14_4_OUT;
case ATOM3_CH1_P14_6: return &IfxGtm_ATOM3_1_TOUT86_P14_6_OUT;
case ATOM3_CH1_P15_7: return &IfxGtm_ATOM3_1_TOUT78_P15_7_OUT;
case ATOM3_CH1_P15_8: return &IfxGtm_ATOM3_1_TOUT79_P15_8_OUT;
case ATOM3_CH1_P33_5: return &IfxGtm_ATOM3_1_TOUT27_P33_5_OUT;
case ATOM3_CH2_P11_3: return &IfxGtm_ATOM3_2_TOUT96_P11_3_OUT;
case ATOM3_CH2_P14_0: return &IfxGtm_ATOM3_2_TOUT80_P14_0_OUT;
case ATOM3_CH2_P14_3: return &IfxGtm_ATOM3_2_TOUT83_P14_3_OUT;
case ATOM3_CH2_P33_6: return &IfxGtm_ATOM3_2_TOUT28_P33_6_OUT;
case ATOM3_CH3_P00_12: return &IfxGtm_ATOM3_3_TOUT21_P00_12_OUT;
case ATOM3_CH3_P11_6: return &IfxGtm_ATOM3_3_TOUT97_P11_6_OUT;
case ATOM3_CH3_P14_2: return &IfxGtm_ATOM3_3_TOUT82_P14_2_OUT;
case ATOM3_CH3_P33_7: return &IfxGtm_ATOM3_3_TOUT29_P33_7_OUT;
case ATOM3_CH4_P11_9: return &IfxGtm_ATOM3_4_TOUT98_P11_9_OUT;
case ATOM3_CH4_P14_1: return &IfxGtm_ATOM3_4_TOUT81_P14_1_OUT;
case ATOM3_CH4_P33_8: return &IfxGtm_ATOM3_4_TOUT30_P33_8_OUT;
case ATOM3_CH4_P33_12: return &IfxGtm_ATOM3_4_TOUT34_P33_12_OUT;
case ATOM3_CH5_P11_10: return &IfxGtm_ATOM3_5_TOUT99_P11_10_OUT;
case ATOM3_CH5_P13_0: return &IfxGtm_ATOM3_5_TOUT91_P13_0_OUT;
case ATOM3_CH5_P33_13: return &IfxGtm_ATOM3_5_TOUT35_P33_13_OUT;
case ATOM3_CH6_P11_11: return &IfxGtm_ATOM3_6_TOUT100_P11_11_OUT;
case ATOM3_CH6_P13_1: return &IfxGtm_ATOM3_6_TOUT92_P13_1_OUT;
case ATOM3_CH6_P20_6: return &IfxGtm_ATOM3_6_TOUT62_P20_6_OUT;
case ATOM3_CH6_P32_0: return &IfxGtm_ATOM3_6_TOUT36_P32_0_OUT;
case ATOM3_CH7_P11_12: return &IfxGtm_ATOM3_7_TOUT101_P11_12_OUT;
case ATOM3_CH7_P13_2: return &IfxGtm_ATOM3_7_TOUT93_P13_2_OUT;
case ATOM3_CH7_P20_7: return &IfxGtm_ATOM3_7_TOUT63_P20_7_OUT;
default: return NULL;
}
}
//-------------------------------------------------------------------------------------------------------------------
// @brief PWM<57><4D>ʼ<EFBFBD><CABC>
// @param pwmch PWMͨ<4D><CDA8><EFBFBD>ż<EFBFBD><C5BC><EFBFBD><EFBFBD><EFBFBD>
// @param freq PWMƵ<4D><C6B5>
// @param duty PWMռ<4D>ձ<EFBFBD>
// @return void
// Sample usage: gtm_pwm_init(ATOM0_CH7_P02_7, 50, 1000); //ATOM 0ģ<30><C4A3><EFBFBD><EFBFBD>ͨ<EFBFBD><CDA8>7 ʹ<><CAB9>P02_7<5F><37><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>PWM PWMƵ<4D><C6B5>50HZ ռ<>ձȰٷ<C8B0>֮1000/GTM_ATOM0_PWM_DUTY_MAX*100
// GTM_ATOM0_PWM_DUTY_MAX<41><EFBFBD><EAB6A8><EFBFBD><EFBFBD>zf_gtm_pwm.h Ĭ<><C4AC>Ϊ10000
//-------------------------------------------------------------------------------------------------------------------
void gtm_pwm_init(ATOM_PIN_enum pwmch, uint32 freq, uint32 duty)
{
IfxGtm_Atom_Pwm_Config g_atomConfig;
IfxGtm_Atom_Pwm_Driver g_atomDriver;
IfxGtm_Atom_ToutMap *atom_channel;
atom_channel = gtm_atom_mux(pwmch);
switch(atom_channel->atom)
{
case 0: IFX_ASSERT(IFX_VERBOSE_LEVEL_ERROR, duty <= GTM_ATOM0_PWM_DUTY_MAX); break;
case 1: IFX_ASSERT(IFX_VERBOSE_LEVEL_ERROR, duty <= GTM_ATOM1_PWM_DUTY_MAX); break;
case 2: IFX_ASSERT(IFX_VERBOSE_LEVEL_ERROR, duty <= GTM_ATOM2_PWM_DUTY_MAX); break;
case 3: IFX_ASSERT(IFX_VERBOSE_LEVEL_ERROR, duty <= GTM_ATOM3_PWM_DUTY_MAX); break;
}
IfxGtm_enable(&MODULE_GTM);
if(!(MODULE_GTM.CMU.CLK_EN.U & 0x2))
{
IfxGtm_Cmu_setClkFrequency(&MODULE_GTM, IfxGtm_Cmu_Clk_0, CMU_CLK_FREQ);
IfxGtm_Cmu_enableClocks(&MODULE_GTM, IFXGTM_CMU_CLKEN_CLK0);
}
IfxGtm_Atom_Pwm_initConfig(&g_atomConfig, &MODULE_GTM);
g_atomConfig.atom = atom_channel->atom;
g_atomConfig.atomChannel = atom_channel->channel;
g_atomConfig.period = CMU_CLK_FREQ/freq;
g_atomConfig.pin.outputPin = atom_channel;
g_atomConfig.synchronousUpdateEnabled = TRUE;
switch(atom_channel->atom)
{
case 0: g_atomConfig.dutyCycle = (uint32)((uint64)duty * g_atomConfig.period / GTM_ATOM0_PWM_DUTY_MAX); break;
case 1: g_atomConfig.dutyCycle = (uint32)((uint64)duty * g_atomConfig.period / GTM_ATOM1_PWM_DUTY_MAX); break;
case 2: g_atomConfig.dutyCycle = (uint32)((uint64)duty * g_atomConfig.period / GTM_ATOM2_PWM_DUTY_MAX); break;
case 3: g_atomConfig.dutyCycle = (uint32)((uint64)duty * g_atomConfig.period / GTM_ATOM3_PWM_DUTY_MAX); break;
}
IfxGtm_Atom_Pwm_init(&g_atomDriver, &g_atomConfig);
IfxGtm_Atom_Pwm_start(&g_atomDriver, TRUE);
}
//-------------------------------------------------------------------------------------------------------------------
// @brief PWMռ<4D>ձ<EFBFBD><D5B1><EFBFBD><EFBFBD><EFBFBD>
// @param pwmch PWMͨ<4D><CDA8><EFBFBD>ż<EFBFBD><C5BC><EFBFBD><EFBFBD><EFBFBD>
// @param duty PWMռ<4D>ձ<EFBFBD>
// @return void
// Sample usage: pwm_duty(ATOM0_CH7_P02_7, 5000);//<2F><><EFBFBD><EFBFBD>ռ<EFBFBD>ձ<EFBFBD>Ϊ<EFBFBD>ٷ<EFBFBD>֮5000/GTM_ATOM0_PWM_DUTY_MAX*100
// GTM_ATOM0_PWM_DUTY_MAX<41><EFBFBD><EAB6A8><EFBFBD><EFBFBD>zf_gtm_pwm.h Ĭ<><C4AC>Ϊ10000
//-------------------------------------------------------------------------------------------------------------------
void pwm_duty(ATOM_PIN_enum pwmch, uint32 duty)
{
uint32 period;
IfxGtm_Atom_ToutMap *atom_channel;
atom_channel = gtm_atom_mux(pwmch);
period = IfxGtm_Atom_Ch_getCompareZero(&MODULE_GTM.ATOM[atom_channel->atom], atom_channel->channel);
switch(atom_channel->atom)
{
case 0: duty = (uint32)((uint64)duty * period / GTM_ATOM0_PWM_DUTY_MAX); break;
case 1: duty = (uint32)((uint64)duty * period / GTM_ATOM1_PWM_DUTY_MAX); break;
case 2: duty = (uint32)((uint64)duty * period / GTM_ATOM2_PWM_DUTY_MAX); break;
case 3: duty = (uint32)((uint64)duty * period / GTM_ATOM3_PWM_DUTY_MAX); break;
}
IfxGtm_Atom_Ch_setCompareOneShadow(&MODULE_GTM.ATOM[atom_channel->atom], atom_channel->channel, duty);
}

View File

@@ -1,78 +0,0 @@
/*********************************************************************************************************************
* COPYRIGHT NOTICE
* Copyright (c) 2020,<2C><><EFBFBD>ɿƼ<C9BF>
* All rights reserved.
* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>QQȺ<51><C8BA><EFBFBD><EFBFBD>Ⱥ<EFBFBD><C8BA>824575535
*
* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݰ<EFBFBD>Ȩ<EFBFBD><C8A8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɿƼ<C9BF><C6BC><EFBFBD><EFBFBD>У<EFBFBD>δ<EFBFBD><CEB4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ҵ<EFBFBD><D2B5>;<EFBFBD><CDBE>
* <20><>ӭ<EFBFBD><D3AD>λʹ<CEBB>ò<EFBFBD><C3B2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>޸<EFBFBD><DEB8><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EBB1A3><EFBFBD><EFBFBD><EFBFBD>ɿƼ<C9BF><C6BC>İ<EFBFBD>Ȩ<EFBFBD><C8A8><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
*
* @file gtm_pwm
* @company <09>ɶ<EFBFBD><C9B6><EFBFBD><EFBFBD>ɿƼ<C9BF><C6BC><EFBFBD><EFBFBD>޹<EFBFBD>˾
* @author <09><><EFBFBD>ɿƼ<C9BF>(QQ3184284598)
* @version <09>鿴doc<6F><63>version<6F>ļ<EFBFBD> <20>汾˵<E6B1BE><CBB5>
* @Software ADS v1.2.2
* @Target core TC264D
* @Taobao https://seekfree.taobao.com/
* @date 2020-3-23
********************************************************************************************************************/
#ifndef _zf_gtm_pwm_h
#define _zf_gtm_pwm_h
#include "common.h"
#include "ifxGtm_PinMap.h"
#define GTM_ATOM0_PWM_DUTY_MAX 10000 //GTM_ATOM0 PWM<57><4D><EFBFBD><EFBFBD>ռ<EFBFBD>ձ<EFBFBD> <20><><EFBFBD><EFBFBD>ռ<EFBFBD>ձ<EFBFBD>Խ<EFBFBD><D4BD>ռ<EFBFBD>ձȵIJ<C8B5><C4B2><EFBFBD>ֵԽС
#define GTM_ATOM1_PWM_DUTY_MAX 10000 //GTM_ATOM1 PWM<57><4D><EFBFBD><EFBFBD>ռ<EFBFBD>ձ<EFBFBD> <20><><EFBFBD><EFBFBD>ռ<EFBFBD>ձ<EFBFBD>Խ<EFBFBD><D4BD>ռ<EFBFBD>ձȵIJ<C8B5><C4B2><EFBFBD>ֵԽС
#define GTM_ATOM2_PWM_DUTY_MAX 10000 //GTM_ATOM2 PWM<57><4D><EFBFBD><EFBFBD>ռ<EFBFBD>ձ<EFBFBD> <20><><EFBFBD><EFBFBD>ռ<EFBFBD>ձ<EFBFBD>Խ<EFBFBD><D4BD>ռ<EFBFBD>ձȵIJ<C8B5><C4B2><EFBFBD>ֵԽС
#define GTM_ATOM3_PWM_DUTY_MAX 10000 //GTM_ATOM3 PWM<57><4D><EFBFBD><EFBFBD>ռ<EFBFBD>ձ<EFBFBD> <20><><EFBFBD><EFBFBD>ռ<EFBFBD>ձ<EFBFBD>Խ<EFBFBD><D4BD>ռ<EFBFBD>ձȵIJ<C8B5><C4B2><EFBFBD>ֵԽС
//<2F><>ö<EFBFBD>ٶ<EFBFBD><D9B6><EFBFBD><E5B2BB><EFBFBD><EFBFBD><EFBFBD>û<EFBFBD><C3BB>޸<EFBFBD>
typedef enum //ö<>ٴ<EFBFBD><D9B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
{
ATOM0_CH0_P00_0, ATOM0_CH0_P02_0, ATOM0_CH0_P02_8, ATOM0_CH0_P14_5, ATOM0_CH0_P21_2, ATOM0_CH0_P22_1,
ATOM0_CH1_P00_1, ATOM0_CH1_P00_2, ATOM0_CH1_P02_1, ATOM0_CH1_P10_1, ATOM0_CH1_P14_4, ATOM0_CH1_P21_3, ATOM0_CH1_P22_0, ATOM0_CH1_P33_9,
ATOM0_CH2_P00_3, ATOM0_CH2_P02_2, ATOM0_CH2_P10_2, ATOM0_CH2_P10_5, ATOM0_CH2_P14_3, ATOM0_CH2_P21_4, ATOM0_CH2_P33_11,
ATOM0_CH3_P00_4, ATOM0_CH3_P02_3, ATOM0_CH3_P10_3, ATOM0_CH3_P10_6, ATOM0_CH3_P14_2, ATOM0_CH3_P21_5, ATOM0_CH3_P22_2,
ATOM0_CH4_P00_5, ATOM0_CH4_P02_4, ATOM0_CH4_P14_1, ATOM0_CH4_P20_3, ATOM0_CH4_P21_6, ATOM0_CH4_P22_3,
ATOM0_CH5_P00_6, ATOM0_CH5_P02_5, ATOM0_CH5_P21_7, ATOM0_CH5_P32_4,
ATOM0_CH6_P00_7, ATOM0_CH6_P02_6, ATOM0_CH6_P20_0, ATOM0_CH6_P23_1,
ATOM0_CH7_P00_8, ATOM0_CH7_P02_7, ATOM0_CH7_P20_8,
ATOM1_CH0_P00_0, ATOM1_CH0_P02_0, ATOM1_CH0_P02_8, ATOM1_CH0_P15_5, ATOM1_CH0_P15_6, ATOM1_CH0_P20_12, ATOM1_CH0_P21_2, ATOM1_CH0_P22_1,
ATOM1_CH1_P00_1, ATOM1_CH1_P00_2, ATOM1_CH1_P02_1, ATOM1_CH1_P10_1, ATOM1_CH1_P14_6, ATOM1_CH1_P15_7, ATOM1_CH1_P15_8, ATOM1_CH1_P20_13, ATOM1_CH1_P21_3, ATOM1_CH1_P22_0, ATOM1_CH1_P33_9,
ATOM1_CH2_P00_3, ATOM1_CH2_P02_2, ATOM1_CH2_P10_2, ATOM1_CH2_P10_5, ATOM1_CH2_P14_0, ATOM1_CH2_P20_14, ATOM1_CH2_P21_4, ATOM1_CH2_P33_11,
ATOM1_CH3_P00_4, ATOM1_CH3_P02_3, ATOM1_CH3_P10_3, ATOM1_CH3_P10_6, ATOM1_CH3_P15_0, ATOM1_CH3_P21_5, ATOM1_CH3_P22_2,
ATOM1_CH4_P00_5, ATOM1_CH4_P02_4, ATOM1_CH4_P15_1, ATOM1_CH4_P20_3, ATOM1_CH4_P21_6, ATOM1_CH4_P22_3,
ATOM1_CH5_P00_6, ATOM1_CH5_P02_5, ATOM1_CH5_P15_2, ATOM1_CH5_P20_9, ATOM1_CH5_P21_7, ATOM1_CH5_P32_4,
ATOM1_CH6_P00_7, ATOM1_CH6_P02_6, ATOM1_CH6_P15_3, ATOM1_CH6_P20_0, ATOM1_CH6_P20_10, ATOM1_CH6_P23_1,
ATOM1_CH7_P00_8, ATOM1_CH7_P02_7, ATOM1_CH7_P15_4, ATOM1_CH7_P20_11,
ATOM2_CH0_P00_9, ATOM2_CH0_P13_3, ATOM2_CH0_P20_12, ATOM2_CH0_P33_4, ATOM2_CH0_P33_10,
ATOM2_CH1_P11_2, ATOM2_CH1_P20_13, ATOM2_CH1_P33_5,
ATOM2_CH2_P11_3, ATOM2_CH2_P20_14, ATOM2_CH2_P33_6,
ATOM2_CH3_P00_12, ATOM2_CH3_P11_6, ATOM2_CH3_P15_0, ATOM2_CH3_P33_7,
ATOM2_CH4_P11_9, ATOM2_CH4_P15_1, ATOM2_CH4_P33_8, ATOM2_CH4_P33_12,
ATOM2_CH5_P11_10, ATOM2_CH5_P13_0, ATOM2_CH5_P15_2, ATOM2_CH5_P20_9, ATOM2_CH5_P33_13,
ATOM2_CH6_P11_11, ATOM2_CH6_P13_1, ATOM2_CH6_P15_3, ATOM2_CH6_P20_6, ATOM2_CH6_P20_10, ATOM2_CH6_P32_0,
ATOM2_CH7_P11_12, ATOM2_CH7_P13_2, ATOM2_CH7_P15_4, ATOM2_CH7_P20_7, ATOM2_CH7_P20_8, ATOM2_CH7_P20_11,
ATOM3_CH0_P00_9, ATOM3_CH0_P13_3, ATOM3_CH0_P14_5, ATOM3_CH0_P15_5, ATOM3_CH0_P15_6, ATOM3_CH0_P33_4, ATOM3_CH0_P33_10,
ATOM3_CH1_P11_2, ATOM3_CH1_P14_4, ATOM3_CH1_P14_6, ATOM3_CH1_P15_7, ATOM3_CH1_P15_8, ATOM3_CH1_P33_5,
ATOM3_CH2_P11_3, ATOM3_CH2_P14_0, ATOM3_CH2_P14_3, ATOM3_CH2_P33_6,
ATOM3_CH3_P00_12, ATOM3_CH3_P11_6, ATOM3_CH3_P14_2, ATOM3_CH3_P33_7,
ATOM3_CH4_P11_9, ATOM3_CH4_P14_1, ATOM3_CH4_P33_8, ATOM3_CH4_P33_12,
ATOM3_CH5_P11_10, ATOM3_CH5_P13_0, ATOM3_CH5_P33_13,
ATOM3_CH6_P11_11, ATOM3_CH6_P13_1, ATOM3_CH6_P20_6, ATOM3_CH6_P32_0,
ATOM3_CH7_P11_12, ATOM3_CH7_P13_2, ATOM3_CH7_P20_7,
}ATOM_PIN_enum;
void gtm_pwm_init(ATOM_PIN_enum pwmch, uint32 freq, uint32 duty);
void pwm_duty(ATOM_PIN_enum pwmch, uint32 duty);
#endif

View File

@@ -1,398 +0,0 @@
/*********************************************************************************************************************
* COPYRIGHT NOTICE
* Copyright (c) 2020,<2C><><EFBFBD>ɿƼ<C9BF>
* All rights reserved.
* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>QQȺ<51><C8BA><EFBFBD><EFBFBD>Ⱥ<EFBFBD><C8BA>824575535
*
* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݰ<EFBFBD>Ȩ<EFBFBD><C8A8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɿƼ<C9BF><C6BC><EFBFBD><EFBFBD>У<EFBFBD>δ<EFBFBD><CEB4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ҵ<EFBFBD><D2B5>;<EFBFBD><CDBE>
* <20><>ӭ<EFBFBD><D3AD>λʹ<CEBB>ò<EFBFBD><C3B2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>޸<EFBFBD><DEB8><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EBB1A3><EFBFBD><EFBFBD><EFBFBD>ɿƼ<C9BF><C6BC>İ<EFBFBD>Ȩ<EFBFBD><C8A8><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
*
* @file spi
* @company <09>ɶ<EFBFBD><C9B6><EFBFBD><EFBFBD>ɿƼ<C9BF><C6BC><EFBFBD><EFBFBD>޹<EFBFBD>˾
* @author <09><><EFBFBD>ɿƼ<C9BF>(QQ3184284598)
* @version <09>鿴doc<6F><63>version<6F>ļ<EFBFBD> <20>汾˵<E6B1BE><CBB5>
* @Software ADS v1.2.2
* @Target core TC264D
* @Taobao https://seekfree.taobao.com/
* @date 2020-3-23
********************************************************************************************************************/
#include "IFXQSPI_REGDEF.h"
#include "IfxQspi_SpiMaster.h"
#include "IfxQspi.h"
#include "zf_assert.h"
#include "zf_spi.h"
#include "zf_gpio.h"
#define MAX_BAUD 50000000
void spi_mux(SPIN_enum spi_n, SPI_PIN_enum sck_pin, SPI_PIN_enum mosi_pin, SPI_PIN_enum miso_pin, SPI_PIN_enum cs_pin, IfxQspi_SpiMaster_Pins *set_pin, IfxQspi_SpiMaster_Output *set_cs)
{
set_pin->mrstMode = IfxPort_InputMode_pullDown;
set_pin->mtsrMode = IfxPort_OutputMode_pushPull;
set_pin->sclkMode = IfxPort_OutputMode_pushPull;
set_pin->pinDriver = IfxPort_PadDriver_cmosAutomotiveSpeed1;
set_cs->driver = IfxPort_PadDriver_cmosAutomotiveSpeed1;
set_cs->mode = IfxPort_OutputMode_pushPull;
switch(spi_n)
{
case SPI_0:
{
if (SPI0_SCLK_P20_11 == sck_pin) set_pin->sclk = &IfxQspi0_SCLK_P20_11_OUT;
else if (SPI0_SCLK_P20_13 == sck_pin) set_pin->sclk = &IfxQspi0_SCLK_P20_13_OUT;
else ZF_ASSERT(FALSE);
if (SPI0_MOSI_P20_12 == mosi_pin) set_pin->mtsr = &IfxQspi0_MTSR_P20_12_OUT;
else if (SPI0_MOSI_P20_14 == mosi_pin) set_pin->mtsr = &IfxQspi0_MTSR_P20_14_OUT;
else ZF_ASSERT(FALSE);
if (SPI0_MISO_P20_12 == miso_pin) set_pin->mrst = &IfxQspi0_MRSTA_P20_12_IN;
else ZF_ASSERT(FALSE);
if (SPI0_CS0_P20_8 == cs_pin) set_cs->pin = &IfxQspi0_SLSO0_P20_8_OUT;
else if (SPI0_CS1_P20_9 == cs_pin) set_cs->pin = &IfxQspi0_SLSO1_P20_9_OUT;
else if (SPI0_CS2_P20_13 == cs_pin) set_cs->pin = &IfxQspi0_SLSO2_P20_13_OUT;
else if (SPI0_CS3_P11_10 == cs_pin) set_cs->pin = &IfxQspi0_SLSO3_P11_10_OUT;
else if (SPI0_CS4_P11_11 == cs_pin) set_cs->pin = &IfxQspi0_SLSO4_P11_11_OUT;
else if (SPI0_CS5_P11_2 == cs_pin) set_cs->pin = &IfxQspi0_SLSO5_P11_2_OUT;
else if (SPI0_CS6_P20_10 == cs_pin) set_cs->pin = &IfxQspi0_SLSO6_P20_10_OUT;
else if (SPI0_CS7_P33_5 == cs_pin) set_cs->pin = &IfxQspi0_SLSO7_P33_5_OUT;
else if (SPI0_CS8_P20_6 == cs_pin) set_cs->pin = &IfxQspi0_SLSO8_P20_6_OUT;
else if (SPI0_CS9_P20_3 == cs_pin) set_cs->pin = &IfxQspi0_SLSO9_P20_3_OUT;
else if (SPI0_CS13_P15_0 == cs_pin) set_cs->pin = &IfxQspi0_SLSO13_P15_0_OUT;
else ZF_ASSERT(FALSE);
}break;
case SPI_1:
{
if (SPI1_SCLK_P10_2 == sck_pin) set_pin->sclk = &IfxQspi1_SCLK_P10_2_OUT;
else if (SPI1_SCLK_P11_6 == sck_pin) set_pin->sclk = &IfxQspi1_SCLK_P11_6_OUT;
else ZF_ASSERT(FALSE);
if (SPI1_MOSI_P10_1 == mosi_pin) set_pin->mtsr = &IfxQspi1_MTSR_P10_1_OUT;
else if (SPI1_MOSI_P10_3 == mosi_pin) set_pin->mtsr = &IfxQspi1_MTSR_P10_3_OUT;
else if (SPI1_MOSI_P10_4 == mosi_pin) set_pin->mtsr = &IfxQspi1_MTSR_P10_4_OUT;
else if (SPI1_MOSI_P11_9 == mosi_pin) set_pin->mtsr = &IfxQspi1_MTSR_P11_9_OUT;
else ZF_ASSERT(FALSE);
if (SPI1_MISO_P10_1 == miso_pin) set_pin->mrst = &IfxQspi1_MRSTA_P10_1_IN;
else if (SPI1_MISO_P11_3 == miso_pin) set_pin->mrst = &IfxQspi1_MRSTB_P11_3_IN;
else ZF_ASSERT(FALSE);
if (SPI1_CS0_P20_8 == cs_pin) set_cs->pin = &IfxQspi1_SLSO0_P20_8_OUT;
else if (SPI1_CS1_P20_9 == cs_pin) set_cs->pin = &IfxQspi1_SLSO1_P20_9_OUT;
else if (SPI1_CS2_P20_13 == cs_pin) set_cs->pin = &IfxQspi1_SLSO2_P20_13_OUT;
else if (SPI1_CS3_P11_10 == cs_pin) set_cs->pin = &IfxQspi1_SLSO3_P11_10_OUT;
else if (SPI1_CS4_P11_11 == cs_pin) set_cs->pin = &IfxQspi1_SLSO4_P11_11_OUT;
else if (SPI1_CS5_P11_2 == cs_pin) set_cs->pin = &IfxQspi1_SLSO5_P11_2_OUT;
else if (SPI1_CS6_P33_10 == cs_pin) set_cs->pin = &IfxQspi1_SLSO6_P33_10_OUT;
else if (SPI1_CS7_P33_5 == cs_pin) set_cs->pin = &IfxQspi1_SLSO7_P33_5_OUT;
else if (SPI1_CS8_P10_4 == cs_pin) set_cs->pin = &IfxQspi1_SLSO8_P10_4_OUT;
else if (SPI1_CS9_P10_5 == cs_pin) set_cs->pin = &IfxQspi1_SLSO9_P10_5_OUT;
else if (SPI1_CS10_P10_0 == cs_pin) set_cs->pin = &IfxQspi1_SLSO10_P10_0_OUT;
else ZF_ASSERT(FALSE);
}break;
case SPI_2:
{
if (SPI2_SCLK_P13_0 == sck_pin) set_pin->sclk = &IfxQspi2_SCLKN_P13_0_OUT;
else if (SPI2_SCLK_P13_1 == sck_pin) set_pin->sclk = &IfxQspi2_SCLKP_P13_1_OUT;
else if (SPI2_SCLK_P15_3 == sck_pin) set_pin->sclk = &IfxQspi2_SCLK_P15_3_OUT;
else if (SPI2_SCLK_P15_6 == sck_pin) set_pin->sclk = &IfxQspi2_SCLK_P15_6_OUT;
else if (SPI2_SCLK_P15_8 == sck_pin) set_pin->sclk = &IfxQspi2_SCLK_P15_8_OUT;
else ZF_ASSERT(FALSE);
if (SPI2_MOSI_P13_2 == mosi_pin) set_pin->mtsr = &IfxQspi2_MTSRN_P13_2_OUT;
else if (SPI2_MOSI_P13_3 == mosi_pin) set_pin->mtsr = &IfxQspi2_MTSRP_P13_3_OUT;
else if (SPI2_MOSI_P15_5 == mosi_pin) set_pin->mtsr = &IfxQspi2_MTSR_P15_5_OUT;
else if (SPI2_MOSI_P15_6 == mosi_pin) set_pin->mtsr = &IfxQspi2_MTSR_P15_6_OUT;
else ZF_ASSERT(FALSE);
if (SPI2_MISO_P15_2 == miso_pin) set_pin->mrst = &IfxQspi2_MRSTE_P15_2_IN;
else if (SPI2_MISO_P15_4 == miso_pin) set_pin->mrst = &IfxQspi2_MRSTA_P15_4_IN;
else if (SPI2_MISO_P15_7 == miso_pin) set_pin->mrst = &IfxQspi2_MRSTB_P15_7_IN;
else if (SPI2_MISO_P21_2 == miso_pin) set_pin->mrst = &IfxQspi2_MRSTCN_P21_2_IN;
else if (SPI2_MISO_P21_3 == miso_pin) set_pin->mrst = &IfxQspi2_MRSTCP_P21_3_IN;
else ZF_ASSERT(FALSE);
if (SPI2_CS0_P15_2 == cs_pin) set_cs->pin = &IfxQspi2_SLSO0_P15_2_OUT;
else if (SPI2_CS1_P14_2 == cs_pin) set_cs->pin = &IfxQspi2_SLSO1_P14_2_OUT;
else if (SPI2_CS2_P14_6 == cs_pin) set_cs->pin = &IfxQspi2_SLSO2_P14_6_OUT;
else if (SPI2_CS3_P14_3 == cs_pin) set_cs->pin = &IfxQspi2_SLSO3_P14_3_OUT;
else if (SPI2_CS4_P14_7 == cs_pin) set_cs->pin = &IfxQspi2_SLSO4_P14_7_OUT;
else if (SPI2_CS5_P15_1 == cs_pin) set_cs->pin = &IfxQspi2_SLSO5_P15_1_OUT;
else if (SPI2_CS6_P33_13 == cs_pin) set_cs->pin = &IfxQspi2_SLSO6_P33_13_OUT;
else if (SPI2_CS7_P20_10 == cs_pin) set_cs->pin = &IfxQspi2_SLSO7_P20_10_OUT;
else if (SPI2_CS8_P20_6 == cs_pin) set_cs->pin = &IfxQspi2_SLSO8_P20_6_OUT;
else if (SPI2_CS9_P20_3 == cs_pin) set_cs->pin = &IfxQspi2_SLSO9_P20_3_OUT;
else ZF_ASSERT(FALSE);
}break;
case SPI_3:
{
if (SPI3_SCLK_P02_7 == sck_pin) set_pin->sclk = &IfxQspi3_SCLK_P02_7_OUT;
else if (SPI3_SCLK_P10_8 == sck_pin) set_pin->sclk = &IfxQspi3_SCLK_P10_8_OUT;
else if (SPI3_SCLK_P22_0 == sck_pin) set_pin->sclk = &IfxQspi3_SCLKN_P22_0_OUT;
else if (SPI3_SCLK_P22_1 == sck_pin) set_pin->sclk = &IfxQspi3_SCLKP_P22_1_OUT;
else if (SPI3_SCLK_P22_3 == sck_pin) set_pin->sclk = &IfxQspi3_SCLK_P22_3_OUT;
else if (SPI3_SCLK_P33_11 == sck_pin) set_pin->sclk = &IfxQspi3_SCLK_P33_11_OUT;
else ZF_ASSERT(FALSE);
if (SPI3_MOSI_P02_6 == mosi_pin) set_pin->mtsr = &IfxQspi3_MTSR_P02_6_OUT;
else if (SPI3_MOSI_P10_6 == mosi_pin) set_pin->mtsr = &IfxQspi3_MTSR_P10_6_OUT;
else if (SPI3_MOSI_P22_0 == mosi_pin) set_pin->mtsr = &IfxQspi3_MTSR_P22_0_OUT;
else if (SPI3_MOSI_P22_2 == mosi_pin) set_pin->mtsr = &IfxQspi3_MTSRN_P22_2_OUT;
else if (SPI3_MOSI_P22_3 == mosi_pin) set_pin->mtsr = &IfxQspi3_MTSRP_P22_3_OUT;
else if (SPI3_MOSI_P33_12 == mosi_pin) set_pin->mtsr = &IfxQspi3_MTSR_P33_12_OUT;
else ZF_ASSERT(FALSE);
if (SPI3_MISO_P02_5 == miso_pin) set_pin->mrst = &IfxQspi3_MRSTA_P02_5_IN;
else if (SPI3_MISO_P10_7 == miso_pin) set_pin->mrst = &IfxQspi3_MRSTB_P10_7_IN;
else if (SPI3_MISO_P22_1 == miso_pin) set_pin->mrst = &IfxQspi3_MRSTE_P22_1_IN;
else if (SPI3_MISO_P21_2 == miso_pin) set_pin->mrst = &IfxQspi3_MRSTFN_P21_2_IN;
else if (SPI3_MISO_P21_3 == miso_pin) set_pin->mrst = &IfxQspi3_MRSTFP_P21_3_IN;
else if (SPI3_MISO_P33_13 == miso_pin) set_pin->mrst = &IfxQspi3_MRSTD_P33_13_IN;
else ZF_ASSERT(FALSE);
if (SPI3_CS0_P02_4 == cs_pin) set_cs->pin = &IfxQspi3_SLSO0_P02_4_OUT;
else if (SPI3_CS1_P02_0 == cs_pin) set_cs->pin = &IfxQspi3_SLSO1_P02_0_OUT;
else if (SPI3_CS1_P33_9 == cs_pin) set_cs->pin = &IfxQspi3_SLSO1_P33_9_OUT;
else if (SPI3_CS2_P02_1 == cs_pin) set_cs->pin = &IfxQspi3_SLSO2_P02_1_OUT;
else if (SPI3_CS2_P33_8 == cs_pin) set_cs->pin = &IfxQspi3_SLSO2_P33_8_OUT;
else if (SPI3_CS3_P02_2 == cs_pin) set_cs->pin = &IfxQspi3_SLSO3_P02_2_OUT;
else if (SPI3_CS4_P02_3 == cs_pin) set_cs->pin = &IfxQspi3_SLSO4_P02_3_OUT;
else if (SPI3_CS4_P23_5 == cs_pin) set_cs->pin = &IfxQspi3_SLSO4_P23_5_OUT;
else if (SPI3_CS5_P02_8 == cs_pin) set_cs->pin = &IfxQspi3_SLSO5_P02_8_OUT;
else if (SPI3_CS5_P23_4 == cs_pin) set_cs->pin = &IfxQspi3_SLSO5_P23_4_OUT;
else if (SPI3_CS6_P00_8 == cs_pin) set_cs->pin = &IfxQspi3_SLSO6_P00_8_OUT;
else if (SPI3_CS7_P00_9 == cs_pin) set_cs->pin = &IfxQspi3_SLSO7_P00_9_OUT;
else if (SPI3_CS7_P33_7 == cs_pin) set_cs->pin = &IfxQspi3_SLSO7_P33_7_OUT;
else if (SPI3_CS8_P10_5 == cs_pin) set_cs->pin = &IfxQspi3_SLSO8_P10_5_OUT;
else if (SPI3_CS11_P33_10 == cs_pin) set_cs->pin = &IfxQspi3_SLSO11_P33_10_OUT;
else if (SPI3_CS12_P22_2 == cs_pin) set_cs->pin = &IfxQspi3_SLSO12_P22_2_OUT;
else if (SPI3_CS13_P23_1 == cs_pin) set_cs->pin = &IfxQspi3_SLSO13_P23_1_OUT;
else ZF_ASSERT(FALSE);
}break;
}
}
uint8 get_spi_cs_pin(SPI_PIN_enum cs_pin)
{
if (SPI0_CS0_P20_8 == cs_pin) return gpio_get(P20_8);
else if (SPI0_CS1_P20_9 == cs_pin) return gpio_get(P20_9);
else if (SPI0_CS2_P20_13 == cs_pin) return gpio_get(P20_13);
else if (SPI0_CS3_P11_10 == cs_pin) return gpio_get(P11_10);
else if (SPI0_CS4_P11_11 == cs_pin) return gpio_get(P11_11);
else if (SPI0_CS5_P11_2 == cs_pin) return gpio_get(P11_2);
else if (SPI0_CS6_P20_10 == cs_pin) return gpio_get(P20_10);
else if (SPI0_CS7_P33_5 == cs_pin) return gpio_get(P33_5);
else if (SPI0_CS8_P20_6 == cs_pin) return gpio_get(P20_6);
else if (SPI0_CS9_P20_3 == cs_pin) return gpio_get(P20_3);
else if (SPI0_CS13_P15_0 == cs_pin) return gpio_get(P15_0);
else if (SPI1_CS0_P20_8 == cs_pin) return gpio_get(P20_8);
else if (SPI1_CS1_P20_9 == cs_pin) return gpio_get(P20_9);
else if (SPI1_CS2_P20_13 == cs_pin) return gpio_get(P20_13);
else if (SPI1_CS3_P11_10 == cs_pin) return gpio_get(P11_10);
else if (SPI1_CS4_P11_11 == cs_pin) return gpio_get(P11_11);
else if (SPI1_CS5_P11_2 == cs_pin) return gpio_get(P11_2);
else if (SPI1_CS6_P33_10 == cs_pin) return gpio_get(P33_10);
else if (SPI1_CS7_P33_5 == cs_pin) return gpio_get(P33_5);
else if (SPI1_CS8_P10_4 == cs_pin) return gpio_get(P10_4);
else if (SPI1_CS9_P10_5 == cs_pin) return gpio_get(P10_5);
else if (SPI1_CS10_P10_0 == cs_pin) return gpio_get(P10_0);
else if (SPI2_CS0_P15_2 == cs_pin) return gpio_get(P15_2);
else if (SPI2_CS1_P14_2 == cs_pin) return gpio_get(P14_2);
else if (SPI2_CS2_P14_6 == cs_pin) return gpio_get(P14_6);
else if (SPI2_CS3_P14_3 == cs_pin) return gpio_get(P14_3);
else if (SPI2_CS5_P15_1 == cs_pin) return gpio_get(P15_1);
else if (SPI2_CS6_P33_13 == cs_pin) return gpio_get(P33_13);
else if (SPI2_CS7_P20_10 == cs_pin) return gpio_get(P20_10);
else if (SPI2_CS8_P20_6 == cs_pin) return gpio_get(P20_6);
else if (SPI2_CS9_P20_3 == cs_pin) return gpio_get(P20_3);
else if (SPI3_CS0_P02_4 == cs_pin) return gpio_get(P02_4);
else if (SPI3_CS1_P02_0 == cs_pin) return gpio_get(P02_0);
else if (SPI3_CS1_P33_9 == cs_pin) return gpio_get(P33_9);
else if (SPI3_CS2_P02_1 == cs_pin) return gpio_get(P02_1);
else if (SPI3_CS2_P33_8 == cs_pin) return gpio_get(P33_8);
else if (SPI3_CS3_P02_2 == cs_pin) return gpio_get(P02_2);
else if (SPI3_CS4_P02_3 == cs_pin) return gpio_get(P02_3);
else if (SPI3_CS4_P23_5 == cs_pin) return gpio_get(P23_5);
else if (SPI3_CS5_P02_8 == cs_pin) return gpio_get(P02_8);
else if (SPI3_CS6_P00_8 == cs_pin) return gpio_get(P00_8);
else if (SPI3_CS7_P00_9 == cs_pin) return gpio_get(P00_9);
else if (SPI3_CS7_P33_7 == cs_pin) return gpio_get(P33_7);
else if (SPI3_CS8_P10_5 == cs_pin) return gpio_get(P10_5);
else if (SPI3_CS11_P33_10 == cs_pin) return gpio_get(P33_10);
else if (SPI3_CS12_P22_2 == cs_pin) return gpio_get(P22_2);
else if (SPI3_CS13_P23_1 == cs_pin) return gpio_get(P23_1);
else
{
ZF_ASSERT(FALSE);
return 0;//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>˵<EFBFBD><CBB5>CS<43><53><EFBFBD>Ŵ<EFBFBD><C5B4><EFBFBD>
}
}
//-------------------------------------------------------------------------------------------------------------------
// @brief SPI<50><49>ʼ<EFBFBD><CABC>
// @param spi_n ѡ<><D1A1>SPIģ<49><C4A3>(SPI_1-SPI_4)
// @param cs_pin ѡ<><D1A1>SPIƬѡ<C6AC><D1A1><EFBFBD><EFBFBD>
// @param sck_pin ѡ<><D1A1>SPIʱ<49><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// @param mosi_pin ѡ<><D1A1>SPI MOSI<53><49><EFBFBD><EFBFBD>
// @param miso_pin ѡ<><D1A1>SPI MISO<53><4F><EFBFBD><EFBFBD>
// @param mode SPIģʽ 0<><30>CPOL=0 CPHA=0 1<><31>CPOL=0 CPHA=1 2<><32>CPOL=1 CPHA=0 3<><33>CPOL=1 CPHA=1 //<2F><><EFBFBD><EFBFBD>ϸ<EFBFBD>ڿ<EFBFBD><DABF><EFBFBD><EFBFBD>аٶ<D0B0>
// @param baud <20><><EFBFBD><EFBFBD>SPI<50>IJ<EFBFBD><C4B2><EFBFBD><EFBFBD><EFBFBD>
// @return void
// Sample usage: spi_init(SPI_2, SPI2_SCLK_P15_3, SPI2_MOSI_P15_5, SPI2_MISO_P15_4, SPI2_CS0_P15_2, 0, 1*1000*1000);//Ӳ<><D3B2>SPI<50><49>ʼ<EFBFBD><CABC> ģʽ0 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ1Mhz
//-------------------------------------------------------------------------------------------------------------------
void spi_init(SPIN_enum spi_n, SPI_PIN_enum sck_pin, SPI_PIN_enum mosi_pin, SPI_PIN_enum miso_pin, SPI_PIN_enum cs_pin, uint8 mode, uint32 baud)
{
IfxQspi_SpiMaster_Config MasterConfig;
IfxQspi_SpiMaster MasterHandle;
IfxQspi_SpiMaster_Channel MasterChHandle;
IfxQspi_SpiMaster_Pins MasterPins;
IfxQspi_SpiMaster_Output SlsoPin;
volatile Ifx_QSPI *moudle;
moudle = IfxQspi_getAddress((IfxQspi_Index)spi_n);
spi_mux(spi_n, sck_pin, mosi_pin, miso_pin, cs_pin, &MasterPins, &SlsoPin);
IfxQspi_SpiMaster_initModuleConfig(&MasterConfig, moudle);
MasterConfig.base.mode = SpiIf_Mode_master;
MasterConfig.base.maximumBaudrate = MAX_BAUD;
MasterConfig.base.isrProvider = IfxSrc_Tos_cpu0;
MasterConfig.pins = &MasterPins;
IfxQspi_SpiMaster_initModule(&MasterHandle, &MasterConfig);
IfxQspi_SpiMaster_ChannelConfig MasterChConfig;
IfxQspi_SpiMaster_initChannelConfig(&MasterChConfig, &MasterHandle);
MasterChConfig.base.baudrate = (float)baud;
switch(mode)
{
case 0:
{
MasterChConfig.base.mode.clockPolarity = SpiIf_ClockPolarity_idleLow;//CPOL
MasterChConfig.base.mode.shiftClock = SpiIf_ShiftClock_shiftTransmitDataOnTrailingEdge;//CPHA
}break;
case 1:
{
MasterChConfig.base.mode.clockPolarity = SpiIf_ClockPolarity_idleLow;
MasterChConfig.base.mode.shiftClock = SpiIf_ShiftClock_shiftTransmitDataOnLeadingEdge;
}break;
case 2:
{
MasterChConfig.base.mode.clockPolarity = SpiIf_ClockPolarity_idleHigh;
MasterChConfig.base.mode.shiftClock = SpiIf_ShiftClock_shiftTransmitDataOnTrailingEdge;
}break;
case 3:
{
MasterChConfig.base.mode.clockPolarity = SpiIf_ClockPolarity_idleHigh;
MasterChConfig.base.mode.shiftClock = SpiIf_ShiftClock_shiftTransmitDataOnLeadingEdge;
}break;
}
MasterChConfig.base.mode.dataHeading = SpiIf_DataHeading_msbFirst;
MasterChConfig.base.mode.dataWidth = 8;
MasterChConfig.base.mode.csActiveLevel = Ifx_ActiveState_low;
MasterChConfig.sls.output = SlsoPin;
IfxQspi_SpiMaster_initChannel(&MasterChHandle, &MasterChConfig);
}
//-------------------------------------------------------------------------------------------------------------------
// @brief SPI<50><49><EFBFBD>ͽ<EFBFBD><CDBD>պ<EFBFBD><D5BA><EFBFBD>
// @param spi_n ѡ<><D1A1>SPIģ<49><C4A3> (SPI_1-SPI_4)
// @param cs_pin ѡ<><D1A1>SPIƬѡ<C6AC><D1A1><EFBFBD><EFBFBD>
// @param modata <20><><EFBFBD>͵<EFBFBD><CDB5><EFBFBD><EFBFBD>ݻ<EFBFBD><DDBB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ַ
// @param midata <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD>յ<EFBFBD><D5B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݵĴ洢<C4B4><E6B4A2>ַ(<28><><EFBFBD><EFBFBD>Ҫ<EFBFBD><D2AA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> NULL)
// @param len <20><><EFBFBD>͵<EFBFBD><CDB5>ֽ<EFBFBD><D6BD><EFBFBD>
// @param continuous <20><><EFBFBD><EFBFBD>ͨ<EFBFBD><CDA8><EFBFBD><EFBFBD>CS<43>Ƿ<EFBFBD><C7B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ч״̬ 1:<3A><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> 0:ÿ<><C3BF><EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD>ֽڹر<DAB9>CS(һ<><D2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ1 <20><><EFBFBD><EFBFBD>)
// @return void
// @since v2.0
// Sample usage: spi_mosi(SPI_2,SPI2_CS0_P15_2,buf,buf,1,1); //<2F><><EFBFBD><EFBFBD>buff<66><66><EFBFBD><EFBFBD><EFBFBD>ݣ<EFBFBD><DDA3><EFBFBD><EFBFBD><EFBFBD><EFBFBD>յ<EFBFBD>buf<75><EFBFBD><EFA3AC><EFBFBD><EFBFBD>Ϊ1<CEAA>ֽ<EFBFBD> ͨ<><CDA8><EFBFBD>ڼ<EFBFBD>CS<43><53><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
//-------------------------------------------------------------------------------------------------------------------
void spi_mosi(SPIN_enum spi_n, SPI_PIN_enum cs_pin, uint8 *modata, uint8 *midata, uint32 len, uint8 continuous)
{
uint32 i;
Ifx_QSPI_BACON bacon;
volatile Ifx_QSPI *moudle;
moudle = IfxQspi_getAddress((IfxQspi_Index)spi_n);
bacon.U = moudle->BACON.U;
bacon.B.DL = 7;
bacon.B.IDLE = 1;
bacon.B.IPRE = 1;
bacon.B.LEAD = 1;
bacon.B.LPRE = 1;
bacon.B.MSB = 1;
bacon.B.PARTYP = 0;
bacon.B.BYTE = 0;
bacon.B.TRAIL = 1;
bacon.B.TPRE = 1;
bacon.B.CS = cs_pin%102/6-3;
if(continuous) IfxQspi_writeBasicConfigurationBeginStream(moudle, bacon.U);//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݺ<EFBFBD>CS<43><53><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA>
else IfxQspi_writeBasicConfigurationEndStream(moudle, bacon.U); //ÿ<><C3BF><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD>ֽ<EFBFBD>CS<43>ź<EFBFBD><C5BA><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><D2BB>
if(midata)
{
//<2F><>֮ǰfifo<66>е<EFBFBD><D0B5><EFBFBD><EFBFBD><EFBFBD>ȫ<EFBFBD><C8AB><EFBFBD><EFBFBD>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD>
i = moudle->STATUS.B.RXFIFOLEVEL;
while(i--)
{
(uint8)IfxQspi_readReceiveFifo(moudle);
}
}
if(len>1)
{
i = 0;
len -= 1;
while(i < len)
{
IfxQspi_writeTransmitFifo(moudle, *modata++);
if(midata)
{
while(moudle->STATUS.B.RXFIFOLEVEL == 0);
*midata = (uint8)IfxQspi_readReceiveFifo(moudle);
midata++;
}
i++;
while(moudle->STATUS.B.TXFIFOLEVEL != 0);
}
}
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
if(continuous) IfxQspi_writeBasicConfigurationEndStream(moudle, bacon.U);
IfxQspi_writeTransmitFifo(moudle, *modata);
while(moudle->STATUS.B.TXFIFOLEVEL != 0);
if(midata)
{
while(moudle->STATUS.B.RXFIFOLEVEL == 0);
*midata = (uint8)IfxQspi_readReceiveFifo(moudle);
}
while(!get_spi_cs_pin(cs_pin));
}

View File

@@ -1,119 +0,0 @@
/*********************************************************************************************************************
* COPYRIGHT NOTICE
* Copyright (c) 2020,<2C><><EFBFBD>ɿƼ<C9BF>
* All rights reserved.
* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>QQȺ<51><C8BA><EFBFBD><EFBFBD>Ⱥ<EFBFBD><C8BA>824575535
*
* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݰ<EFBFBD>Ȩ<EFBFBD><C8A8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɿƼ<C9BF><C6BC><EFBFBD><EFBFBD>У<EFBFBD>δ<EFBFBD><CEB4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ҵ<EFBFBD><D2B5>;<EFBFBD><CDBE>
* <20><>ӭ<EFBFBD><D3AD>λʹ<CEBB>ò<EFBFBD><C3B2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>޸<EFBFBD><DEB8><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EBB1A3><EFBFBD><EFBFBD><EFBFBD>ɿƼ<C9BF><C6BC>İ<EFBFBD>Ȩ<EFBFBD><C8A8><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
*
* @file spi
* @company <09>ɶ<EFBFBD><C9B6><EFBFBD><EFBFBD>ɿƼ<C9BF><C6BC><EFBFBD><EFBFBD>޹<EFBFBD>˾
* @author <09><><EFBFBD>ɿƼ<C9BF>(QQ3184284598)
* @version <09>鿴doc<6F><63>version<6F>ļ<EFBFBD> <20>汾˵<E6B1BE><CBB5>
* @Software ADS v1.2.2
* @Target core TC264D
* @Taobao https://seekfree.taobao.com/
* @date 2020-3-23
********************************************************************************************************************/
#ifndef _zf_spi_h
#define _zf_spi_h
#include "common.h"
typedef enum // SPIģ<49><C4A3><EFBFBD><EFBFBD>
{
SPI_0,
SPI_1,
SPI_2,
SPI_3,
}SPIN_enum;
typedef enum // ö<><C3B6>SPI<50><49><EFBFBD><EFBFBD>
{
SPI0_SCLK_P20_11 = 0*102+0*6 , SPI0_SCLK_P20_13,//SPI0 CLK <20><><EFBFBD>ſ<EFBFBD>ѡ<EFBFBD><D1A1>Χ
SPI0_MOSI_P20_12 = 0*102+1*6 , SPI0_MOSI_P20_14,//SPI0 MOSI<53><49><EFBFBD>ſ<EFBFBD>ѡ<EFBFBD><D1A1>Χ
SPI0_MISO_P20_12 = 0*102+2*6 , //SPI0 MISO<53><4F><EFBFBD>ſ<EFBFBD>ѡ<EFBFBD><D1A1>Χ
SPI0_CS0_P20_8 = 0*102+3*6 , //SPI0 CS0 <20><><EFBFBD>ſ<EFBFBD>ѡ<EFBFBD><D1A1>Χ
SPI0_CS1_P20_9 = 0*102+4*6 ,
SPI0_CS2_P20_13 = 0*102+5*6 ,
SPI0_CS3_P11_10 = 0*102+6*6 ,
SPI0_CS4_P11_11 = 0*102+7*6 ,
SPI0_CS5_P11_2 = 0*102+8*6 ,
SPI0_CS6_P20_10 = 0*102+9*6 ,
SPI0_CS7_P33_5 = 0*102+10*6,
SPI0_CS8_P20_6 = 0*102+11*6,
SPI0_CS9_P20_3 = 0*102+12*6,
SPI0_CS13_P15_0 = 0*102+16*6,
//----------------------------------------------------------------------------------
//<2F><>LQFP144<34><34>װ<EFBFBD><D7B0>û<EFBFBD><C3BB>P10_4<5F><34>P10_0
SPI1_SCLK_P10_2 = 1*102+0*6 , SPI1_SCLK_P11_6,
SPI1_MOSI_P10_1 = 1*102+1*6 , SPI1_MOSI_P10_3, SPI1_MOSI_P10_4, SPI1_MOSI_P11_9,
SPI1_MISO_P10_1 = 1*102+2*6 , SPI1_MISO_P11_3,
SPI1_CS0_P20_8 = 1*102+3*6 ,
SPI1_CS1_P20_9 = 1*102+4*6 ,
SPI1_CS2_P20_13 = 1*102+5*6 ,
SPI1_CS3_P11_10 = 1*102+6*6 ,
SPI1_CS4_P11_11 = 1*102+7*6 ,
SPI1_CS5_P11_2 = 1*102+8*6 ,
SPI1_CS6_P33_10 = 1*102+9*6 ,
SPI1_CS7_P33_5 = 1*102+10*6,
SPI1_CS8_P10_4 = 1*102+11*6,
SPI1_CS9_P10_5 = 1*102+12*6,
SPI1_CS10_P10_0 = 1*102+13*6,
//----------------------------------------------------------------------------------
//<2F><>LQFP144<34><34>װ<EFBFBD><D7B0>û<EFBFBD><C3BB>P14_7
SPI2_SCLK_P13_0 = 2*102+0*6 , SPI2_SCLK_P13_1, SPI2_SCLK_P15_3, SPI2_SCLK_P15_6, SPI2_SCLK_P15_8,
SPI2_MOSI_P13_2 = 2*102+1*6 , SPI2_MOSI_P13_3, SPI2_MOSI_P15_5, SPI2_MOSI_P15_6,
SPI2_MISO_P15_2 = 2*102+2*6 , SPI2_MISO_P15_4, SPI2_MISO_P15_7, SPI2_MISO_P21_2, SPI2_MISO_P21_3,
SPI2_CS0_P15_2 = 2*102+3*6 ,
SPI2_CS1_P14_2 = 2*102+4*6 ,
SPI2_CS2_P14_6 = 2*102+5*6 ,
SPI2_CS3_P14_3 = 2*102+6*6 ,
SPI2_CS4_P14_7 = 2*102+7*6 ,
SPI2_CS5_P15_1 = 2*102+8*6 ,
SPI2_CS6_P33_13 = 2*102+9*6 ,
SPI2_CS7_P20_10 = 2*102+10*6,
SPI2_CS8_P20_6 = 2*102+11*6,
SPI2_CS9_P20_3 = 2*102+12*6,
//----------------------------------------------------------------------------------
//<2F><>LQFP144<34><34>װ<EFBFBD><D7B0>û<EFBFBD><C3BB>P10_8<5F><38>P10_7<5F><37>P23_5<5F><35>P23_4
SPI3_SCLK_P02_7 = 3*102+0*6 , SPI3_SCLK_P10_8, SPI3_SCLK_P22_0, SPI3_SCLK_P22_1, SPI3_SCLK_P22_3, SPI3_SCLK_P33_11,
SPI3_MOSI_P02_6 = 3*102+1*6 , SPI3_MOSI_P10_6, SPI3_MOSI_P22_0, SPI3_MOSI_P22_2, SPI3_MOSI_P22_3, SPI3_MOSI_P33_12,
SPI3_MISO_P02_5 = 3*102+2*6 , SPI3_MISO_P10_7, SPI3_MISO_P22_1, SPI3_MISO_P21_2, SPI3_MISO_P21_3, SPI3_MISO_P33_13,
SPI3_CS0_P02_4 = 3*102+3*6 ,
SPI3_CS1_P02_0 = 3*102+4*6 , SPI3_CS1_P33_9,
SPI3_CS2_P02_1 = 3*102+5*6 , SPI3_CS2_P33_8,
SPI3_CS3_P02_2 = 3*102+6*6 ,
SPI3_CS4_P02_3 = 3*102+7*6 , SPI3_CS4_P23_5,
SPI3_CS5_P02_8 = 3*102+8*6 , SPI3_CS5_P23_4,
SPI3_CS6_P00_8 = 3*102+9*6 ,
SPI3_CS7_P00_9 = 3*102+10*6, SPI3_CS7_P33_7,
SPI3_CS8_P10_5 = 3*102+11*6,
SPI3_CS11_P33_10 = 3*102+14*6,
SPI3_CS12_P22_2 = 3*102+15*6,
SPI3_CS13_P23_1 = 3*102+16*6,
SPI_CS_NOT_USE,
}SPI_PIN_enum;
void spi_init(SPIN_enum spi_n, SPI_PIN_enum sck_pin, SPI_PIN_enum mosi_pin, SPI_PIN_enum miso_pin, SPI_PIN_enum cs_pin, uint8 mode, uint32 baud);
void spi_mosi(SPIN_enum spi_n, SPI_PIN_enum cs_pin, uint8 *modata, uint8 *midata, uint32 len, uint8 continuous);
#endif

View File

@@ -1,76 +0,0 @@
/*********************************************************************************************************************
* COPYRIGHT NOTICE
* Copyright (c) 2020,<2C><><EFBFBD>ɿƼ<C9BF>
* All rights reserved.
* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>QQȺ<51><C8BA><EFBFBD><EFBFBD>Ⱥ<EFBFBD><C8BA>824575535
*
* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݰ<EFBFBD>Ȩ<EFBFBD><C8A8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɿƼ<C9BF><C6BC><EFBFBD><EFBFBD>У<EFBFBD>δ<EFBFBD><CEB4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ҵ<EFBFBD><D2B5>;<EFBFBD><CDBE>
* <20><>ӭ<EFBFBD><D3AD>λʹ<CEBB>ò<EFBFBD><C3B2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>޸<EFBFBD><DEB8><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EBB1A3><EFBFBD><EFBFBD><EFBFBD>ɿƼ<C9BF><C6BC>İ<EFBFBD>Ȩ<EFBFBD><C8A8><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
*
* @file stm_systick
* @company <09>ɶ<EFBFBD><C9B6><EFBFBD><EFBFBD>ɿƼ<C9BF><C6BC><EFBFBD><EFBFBD>޹<EFBFBD>˾
* @author <09><><EFBFBD>ɿƼ<C9BF>(QQ3184284598)
* @version <09>鿴doc<6F><63>version<6F>ļ<EFBFBD> <20>汾˵<E6B1BE><CBB5>
* @Software ADS v1.2.2
* @Target core TC264D
* @Taobao https://seekfree.taobao.com/
* @date 2020-3-23
********************************************************************************************************************/
#include "IfxStm.h"
#include "IFXSTM_CFG.h"
#include "zf_stm_systick.h"
static uint32 systick_count[2];
//-------------------------------------------------------------------------------------------------------------------
// @brief systick<63><6B>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD>
// @param stmn ѡ<><D1A1>ʹ<EFBFBD>õ<EFBFBD>ģ<EFBFBD><C4A3>
// @param time <20><>ʱһ<CAB1>ֵ<EFBFBD>ʱ<EFBFBD><EFBFBD><E4A3A8>λΪ<CEBB><CEAA><EFBFBD><EFBFBD><EBA3AC><EFBFBD><EFBFBD><EFBFBD>÷<EFBFBD>Χ0-20000000<30><30>
// @param num <20><>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// @return void
// Sample usage: <20><><EFBFBD><EFBFBD><EFBFBD>û<EFBFBD><C3BB><EFBFBD><EFBFBD>ã<EFBFBD><C3A3>û<EFBFBD><C3BB><EFBFBD>ʹ<EFBFBD><CAB9>h<EFBFBD>ļ<EFBFBD><C4BC>еĺ궨<C4BA><EAB6A8>
//-------------------------------------------------------------------------------------------------------------------
void systick_delay(STMN_enum stmn, uint32 time, uint32 num)
{
uint32 stm_clk;
uint32 delay_time;
stm_clk = IfxStm_getFrequency(IfxStm_getAddress((IfxStm_Index)stmn));
delay_time = (uint32)(stm_clk/1000000*time/1000);
while(num--)
{
IfxStm_waitTicks(IfxStm_getAddress((IfxStm_Index)stmn), delay_time);
}
}
//-------------------------------------------------------------------------------------------------------------------
// @brief systick<63><6B>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// @param stmn ѡ<><D1A1>ʹ<EFBFBD>õ<EFBFBD>ģ<EFBFBD><C4A3>
// @return void
// Sample usage: systick_start(STM0);//<2F><>¼<EFBFBD>µ<EFBFBD>ǰ<EFBFBD><C7B0>ʱ<EFBFBD><CAB1>
//-------------------------------------------------------------------------------------------------------------------
void systick_start(STMN_enum stmn)
{
systick_count[stmn] = IfxStm_getLower(IfxStm_getAddress((IfxStm_Index)stmn));
}
//-------------------------------------------------------------------------------------------------------------------
// @brief <20><><EFBFBD>õ<EFBFBD>ǰSystem tick timer<65><72>ֵ
// @param stmn ѡ<><D1A1>ʹ<EFBFBD>õ<EFBFBD>ģ<EFBFBD><C4A3>
// @return uint32 <09><><EFBFBD>شӿ<D8B4>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD><EFBFBD>ڵ<EFBFBD>ʱ<EFBFBD><CAB1>(<28><>λ10ns)
// Sample usage: uint32 tim = systick_getval(STM0);
//-------------------------------------------------------------------------------------------------------------------
uint32 systick_getval(STMN_enum stmn)
{
uint32 time;
uint32 stm_clk;
stm_clk = IfxStm_getFrequency(IfxStm_getAddress((IfxStm_Index)stmn));
time = IfxStm_getLower(IfxStm_getAddress((IfxStm_Index)stmn)) - systick_count[stmn];
time = (uint32)((uint64)time * 100000000 / stm_clk);
return time;
}

View File

@@ -1,49 +0,0 @@
/*********************************************************************************************************************
* COPYRIGHT NOTICE
* Copyright (c) 2020,<2C><><EFBFBD>ɿƼ<C9BF>
* All rights reserved.
* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>QQȺ<51><C8BA><EFBFBD><EFBFBD>Ⱥ<EFBFBD><C8BA>824575535
*
* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݰ<EFBFBD>Ȩ<EFBFBD><C8A8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɿƼ<C9BF><C6BC><EFBFBD><EFBFBD>У<EFBFBD>δ<EFBFBD><CEB4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ҵ<EFBFBD><D2B5>;<EFBFBD><CDBE>
* <20><>ӭ<EFBFBD><D3AD>λʹ<CEBB>ò<EFBFBD><C3B2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>޸<EFBFBD><DEB8><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EBB1A3><EFBFBD><EFBFBD><EFBFBD>ɿƼ<C9BF><C6BC>İ<EFBFBD>Ȩ<EFBFBD><C8A8><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
*
* @file stm_systick
* @company <09>ɶ<EFBFBD><C9B6><EFBFBD><EFBFBD>ɿƼ<C9BF><C6BC><EFBFBD><EFBFBD>޹<EFBFBD>˾
* @author <09><><EFBFBD>ɿƼ<C9BF>(QQ3184284598)
* @version <09>鿴doc<6F><63>version<6F>ļ<EFBFBD> <20>汾˵<E6B1BE><CBB5>
* @Software ADS v1.2.2
* @Target core TC264D
* @Taobao https://seekfree.taobao.com/
* @date 2020-3-23
********************************************************************************************************************/
#ifndef _zf_stm_systick_h
#define _zf_stm_systick_h
#include "common.h"
typedef enum // ö<><C3B6>STMģ<4D><C4A3><EFBFBD><EFBFBD>
{
STM0,
STM1,
}STMN_enum;
void systick_delay(STMN_enum stmn, uint32 time, uint32 num);
void systick_start(STMN_enum stmn);
uint32 systick_getval(STMN_enum stmn);
//------------------------------------<2D><><EFBFBD>º궨<C2BA><EAB6A8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ------------------------------------
#define systick_delay_ms(stmn, time) systick_delay(stmn, 1000000, time) //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱʱ<CAB1><CAB1> <20><>λms
#define systick_delay_us(stmn, time) systick_delay(stmn, time*1000, 1) //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱʱ<CAB1><CAB1> <20><>λus
#define systick_delay_ns(stmn, time) systick_delay(stmn, time, 1) //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱʱ<CAB1><CAB1> <20><>λns
//------------------------------------<2D><><EFBFBD>º궨<C2BA><EAB6A8><EFBFBD><EFBFBD><EFBFBD>ڻ<EFBFBD>ȡ<EFBFBD><C8A1>ǰʱ<C7B0><CAB1>------------------------------------
#define systick_getval_ms(stmn) systick_getval(stmn)/100000 //<2F><>ȡ<EFBFBD><C8A1>ǰ<EFBFBD><C7B0>ʱʱ<CAB1><CAB1> <20><>λms
#define systick_getval_us(stmn) systick_getval(stmn)/100 //<2F><>ȡ<EFBFBD><C8A1>ǰ<EFBFBD><C7B0>ʱʱ<CAB1><CAB1> <20><>λus
#define systick_getval_ns(stmn) systick_getval(stmn)*10 //<2F><>ȡ<EFBFBD><C8A1>ǰ<EFBFBD><C7B0>ʱʱ<CAB1><CAB1> <20><>λns
#endif

View File

@@ -1,367 +0,0 @@
/*********************************************************************************************************************
* COPYRIGHT NOTICE
* Copyright (c) 2020,<2C><><EFBFBD>ɿƼ<C9BF>
* All rights reserved.
* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>QQȺ<51><C8BA><EFBFBD><EFBFBD>Ⱥ<EFBFBD><C8BA>824575535
*
* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݰ<EFBFBD>Ȩ<EFBFBD><C8A8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɿƼ<C9BF><C6BC><EFBFBD><EFBFBD>У<EFBFBD>δ<EFBFBD><CEB4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ҵ<EFBFBD><D2B5>;<EFBFBD><CDBE>
* <20><>ӭ<EFBFBD><D3AD>λʹ<CEBB>ò<EFBFBD><C3B2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>޸<EFBFBD><DEB8><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EBB1A3><EFBFBD><EFBFBD><EFBFBD>ɿƼ<C9BF><C6BC>İ<EFBFBD>Ȩ<EFBFBD><C8A8><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
*
* @file uart
* @company <09>ɶ<EFBFBD><C9B6><EFBFBD><EFBFBD>ɿƼ<C9BF><C6BC><EFBFBD><EFBFBD>޹<EFBFBD>˾
* @author <09><><EFBFBD>ɿƼ<C9BF>(QQ3184284598)
* @version <09>鿴doc<6F><63>version<6F>ļ<EFBFBD> <20>汾˵<E6B1BE><CBB5>
* @Software ADS v1.2.2
* @Target core TC264D
* @Taobao https://seekfree.taobao.com/
* @date 2020-3-23
********************************************************************************************************************/
#include "IFXPORT.h"
#include "stdio.h"
#include "ifxAsclin_reg.h"
#include "ifxCpu_Irq.h"
#include "IFXASCLIN_CFG.h"
#include "SysSe/Bsp/Bsp.h"
#include "zf_assert.h"
#include "isr_config.h"
#include "TC264_config.h"
#include "zf_uart.h"
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>handle<6C><65><EFBFBD><EFBFBD>
IfxAsclin_Asc uart0_handle;
IfxAsclin_Asc uart1_handle;
IfxAsclin_Asc uart2_handle;
IfxAsclin_Asc uart3_handle;
//<2F><><EFBFBD><EFBFBD>һ<EFBFBD><D2BB>ascConfig<69>Ľṹ<C4BD><E1B9B9><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڴ<EFBFBD><DAB4>ڳ<EFBFBD>ʼ<EFBFBD><CABC>ʱֻ<CAB1><D6BB>
static IfxAsclin_Asc_Config uart_config;
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڻ<EFBFBD><DABB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
static uint8 uart0_tx_buffer[UART0_TX_BUFFER_SIZE + sizeof(Ifx_Fifo) + 8];
static uint8 uart0_rx_buffer[UART0_RX_BUFFER_SIZE + sizeof(Ifx_Fifo) + 8];
static uint8 uart1_tx_buffer[UART1_TX_BUFFER_SIZE + sizeof(Ifx_Fifo) + 8];
static uint8 uart1_rx_buffer[UART1_RX_BUFFER_SIZE + sizeof(Ifx_Fifo) + 8];
static uint8 uart2_tx_buffer[UART2_TX_BUFFER_SIZE + sizeof(Ifx_Fifo) + 8];
static uint8 uart2_rx_buffer[UART2_RX_BUFFER_SIZE + sizeof(Ifx_Fifo) + 8];
static uint8 uart3_tx_buffer[UART3_TX_BUFFER_SIZE + sizeof(Ifx_Fifo) + 8];
static uint8 uart3_rx_buffer[UART3_RX_BUFFER_SIZE + sizeof(Ifx_Fifo) + 8];
void uart_set_interrupt_priority(UARTN_enum uartn)
{
switch(uartn)
{
case UART_0:
{
uart_config.interrupt.txPriority = UART0_TX_INT_PRIO;
uart_config.interrupt.rxPriority = UART0_RX_INT_PRIO;
uart_config.interrupt.erPriority = UART0_ER_INT_PRIO;
uart_config.interrupt.typeOfService = UART0_INT_SERVICE;
}break;
case UART_1:
{
uart_config.interrupt.txPriority = UART1_TX_INT_PRIO;
uart_config.interrupt.rxPriority = UART1_RX_INT_PRIO;
uart_config.interrupt.erPriority = UART1_ER_INT_PRIO;
uart_config.interrupt.typeOfService = UART1_INT_SERVICE;
}break;
case UART_2:
{
uart_config.interrupt.txPriority = UART2_TX_INT_PRIO;
uart_config.interrupt.rxPriority = UART2_RX_INT_PRIO;
uart_config.interrupt.erPriority = UART2_ER_INT_PRIO;
uart_config.interrupt.typeOfService = UART2_INT_SERVICE;
}break;
case UART_3:
{
uart_config.interrupt.txPriority = UART3_TX_INT_PRIO;
uart_config.interrupt.rxPriority = UART3_RX_INT_PRIO;
uart_config.interrupt.erPriority = UART3_ER_INT_PRIO;
uart_config.interrupt.typeOfService = UART3_INT_SERVICE;
}break;
default: ZF_ASSERT(FALSE);
}
}
void uart_set_buffer(UARTN_enum uartn)
{
switch(uartn)
{
case UART_0:
{
uart_config.txBuffer = &uart0_tx_buffer;
uart_config.rxBuffer = &uart0_rx_buffer;
uart_config.txBufferSize = UART0_TX_BUFFER_SIZE;
uart_config.rxBufferSize = UART0_RX_BUFFER_SIZE;
}break;
case UART_1:
{
uart_config.txBuffer = &uart1_tx_buffer;
uart_config.rxBuffer = &uart1_rx_buffer;
uart_config.txBufferSize = UART1_TX_BUFFER_SIZE;
uart_config.rxBufferSize = UART1_RX_BUFFER_SIZE;
}break;
case UART_2:
{
uart_config.txBuffer = &uart2_tx_buffer;
uart_config.rxBuffer = &uart2_rx_buffer;
uart_config.txBufferSize = UART2_TX_BUFFER_SIZE;
uart_config.rxBufferSize = UART2_RX_BUFFER_SIZE;
}break;
case UART_3:
{
uart_config.txBuffer = &uart3_tx_buffer;
uart_config.rxBuffer = &uart3_rx_buffer;
uart_config.txBufferSize = UART3_TX_BUFFER_SIZE;
uart_config.rxBufferSize = UART3_RX_BUFFER_SIZE;
}break;
default: IFX_ASSERT(IFX_VERBOSE_LEVEL_ERROR, FALSE);
}
}
IfxAsclin_Asc* uart_get_handle(UARTN_enum uartn)
{
switch(uartn)
{
case UART_0: return &uart0_handle;
case UART_1: return &uart1_handle;
case UART_2: return &uart2_handle;
case UART_3: return &uart3_handle;
default: IFX_ASSERT(IFX_VERBOSE_LEVEL_ERROR, FALSE);
}
return NULL;
}
void uart_mux(UARTN_enum uartn, UART_PIN_enum tx_pin, UART_PIN_enum rx_pin, uint32 *set_tx_pin, uint32 *set_rx_pin)
{
switch(uartn)
{
case UART_0:
{
if (UART0_TX_P14_0 == tx_pin) *set_tx_pin = (uint32)&IfxAsclin0_TX_P14_0_OUT;
else if(UART0_TX_P14_1 == tx_pin) *set_tx_pin = (uint32)&IfxAsclin0_TX_P14_1_OUT;
else if(UART0_TX_P15_2 == tx_pin) *set_tx_pin = (uint32)&IfxAsclin0_TX_P15_2_OUT;
else if(UART0_TX_P15_3 == tx_pin) *set_tx_pin = (uint32)&IfxAsclin0_TX_P15_3_OUT;
else IFX_ASSERT(IFX_VERBOSE_LEVEL_ERROR, FALSE);
if (UART0_RX_P14_1 == rx_pin) *set_rx_pin = (uint32)&IfxAsclin0_RXA_P14_1_IN;
else if(UART0_RX_P15_3 == rx_pin) *set_rx_pin = (uint32)&IfxAsclin0_RXB_P15_3_IN;
else IFX_ASSERT(IFX_VERBOSE_LEVEL_ERROR, FALSE);
}break;
case UART_1:
{
if (UART1_TX_P02_2 == tx_pin) *set_tx_pin = (uint32)&IfxAsclin1_TX_P02_2_OUT;
else if(UART1_TX_P11_12 == tx_pin) *set_tx_pin = (uint32)&IfxAsclin1_TX_P11_12_OUT;
else if(UART1_TX_P14_10 == tx_pin) *set_tx_pin = (uint32)&IfxAsclin1_TX_P14_10_OUT;
else if(UART1_TX_P15_0 == tx_pin) *set_tx_pin = (uint32)&IfxAsclin1_TX_P15_0_OUT;
else if(UART1_TX_P15_1 == tx_pin) *set_tx_pin = (uint32)&IfxAsclin1_TX_P15_1_OUT;
else if(UART1_TX_P15_4 == tx_pin) *set_tx_pin = (uint32)&IfxAsclin1_TX_P15_4_OUT;
else if(UART1_TX_P15_5 == tx_pin) *set_tx_pin = (uint32)&IfxAsclin1_TX_P15_5_OUT;
else if(UART1_TX_P20_10 == tx_pin) *set_tx_pin = (uint32)&IfxAsclin1_TX_P20_10_OUT;
else if(UART1_TX_P33_12 == tx_pin) *set_tx_pin = (uint32)&IfxAsclin1_TX_P33_12_OUT;
else if(UART1_TX_P33_13 == tx_pin) *set_tx_pin = (uint32)&IfxAsclin1_TX_P33_13_OUT;
else IFX_ASSERT(IFX_VERBOSE_LEVEL_ERROR, FALSE);
if (UART1_RX_P15_1 == rx_pin) *set_rx_pin = (uint32)&IfxAsclin1_RXA_P15_1_IN;
else if(UART1_RX_P15_5 == rx_pin) *set_rx_pin = (uint32)&IfxAsclin1_RXB_P15_5_IN;
else if(UART1_RX_P20_9 == rx_pin) *set_rx_pin = (uint32)&IfxAsclin1_RXC_P20_9_IN;
else if(UART1_RX_P14_8 == rx_pin) *set_rx_pin = (uint32)&IfxAsclin1_RXD_P14_8_IN;
else if(UART1_RX_P11_10 == rx_pin) *set_rx_pin = (uint32)&IfxAsclin1_RXE_P11_10_IN;
else if(UART1_RX_P33_13 == rx_pin) *set_rx_pin = (uint32)&IfxAsclin1_RXF_P33_13_IN;
else if(UART1_RX_P02_3 == rx_pin) *set_rx_pin = (uint32)&IfxAsclin1_RXG_P02_3_IN;
else IFX_ASSERT(IFX_VERBOSE_LEVEL_ERROR, FALSE);
}break;
case UART_2:
{
if (UART2_TX_P02_0 == tx_pin) *set_tx_pin = (uint32)&IfxAsclin2_TX_P02_0_OUT;
else if(UART2_TX_P10_5 == tx_pin) *set_tx_pin = (uint32)&IfxAsclin2_TX_P10_5_OUT;
else if(UART2_TX_P14_2 == tx_pin) *set_tx_pin = (uint32)&IfxAsclin2_TX_P14_2_OUT;
else if(UART2_TX_P14_3 == tx_pin) *set_tx_pin = (uint32)&IfxAsclin2_TX_P14_3_OUT;
else if(UART2_TX_P33_8 == tx_pin) *set_tx_pin = (uint32)&IfxAsclin2_TX_P33_8_OUT;
else if(UART2_TX_P33_9 == tx_pin) *set_tx_pin = (uint32)&IfxAsclin2_TX_P33_9_OUT;
else IFX_ASSERT(IFX_VERBOSE_LEVEL_ERROR, FALSE);
if (UART2_RX_P14_3 == rx_pin) *set_rx_pin = (uint32)&IfxAsclin2_RXA_P14_3_IN;
else if(UART2_RX_P02_1 == rx_pin) *set_rx_pin = (uint32)&IfxAsclin2_RXB_P02_1_IN;
else if(UART2_RX_P10_6 == rx_pin) *set_rx_pin = (uint32)&IfxAsclin2_RXD_P10_6_IN;
else if(UART2_RX_P33_8 == rx_pin) *set_rx_pin = (uint32)&IfxAsclin2_RXE_P33_8_IN;
else if(UART2_RX_P02_0 == rx_pin) *set_rx_pin = (uint32)&IfxAsclin2_RXG_P02_0_IN;
else IFX_ASSERT(IFX_VERBOSE_LEVEL_ERROR, FALSE);
}break;
case UART_3:
{
if (UART3_TX_P00_0 == tx_pin) *set_tx_pin = (uint32)&IfxAsclin3_TX_P00_0_OUT;
else if(UART3_TX_P00_1 == tx_pin) *set_tx_pin = (uint32)&IfxAsclin3_TX_P00_1_OUT;
else if(UART3_TX_P15_6 == tx_pin) *set_tx_pin = (uint32)&IfxAsclin3_TX_P15_6_OUT;
else if(UART3_TX_P15_7 == tx_pin) *set_tx_pin = (uint32)&IfxAsclin3_TX_P15_7_OUT;
else if(UART3_TX_P20_0 == tx_pin) *set_tx_pin = (uint32)&IfxAsclin3_TX_P20_0_OUT;
else if(UART3_TX_P20_3 == tx_pin) *set_tx_pin = (uint32)&IfxAsclin3_TX_P20_3_OUT;
else if(UART3_TX_P21_7 == tx_pin) *set_tx_pin = (uint32)&IfxAsclin3_TX_P21_7_OUT;
else if(UART3_TX_P32_2 == tx_pin) *set_tx_pin = (uint32)&IfxAsclin3_TX_P32_2_OUT;
else if(UART3_TX_P32_3 == tx_pin) *set_tx_pin = (uint32)&IfxAsclin3_TX_P32_3_OUT;
else IFX_ASSERT(IFX_VERBOSE_LEVEL_ERROR, FALSE);
if (UART3_RX_P15_7 == rx_pin) *set_rx_pin = (uint32)&IfxAsclin3_RXA_P15_7_IN;
else if(UART3_RX_P20_3 == rx_pin) *set_rx_pin = (uint32)&IfxAsclin3_RXC_P20_3_IN;
else if(UART3_RX_P32_2 == rx_pin) *set_rx_pin = (uint32)&IfxAsclin3_RXD_P32_2_IN;
else if(UART3_RX_P00_1 == rx_pin) *set_rx_pin = (uint32)&IfxAsclin3_RXE_P00_1_IN;
else if(UART3_RX_P21_6 == rx_pin) *set_rx_pin = (uint32)&IfxAsclin3_RXF_P21_6_IN;
else IFX_ASSERT(IFX_VERBOSE_LEVEL_ERROR, FALSE);
}break;
}
}
//-------------------------------------------------------------------------------------------------------------------
// @brief <20><><EFBFBD>ڳ<EFBFBD>ʼ<EFBFBD><CABC>
// @param uartn <20><><EFBFBD><EFBFBD>ģ<EFBFBD><C4A3><EFBFBD><EFBFBD>(UART_0,UART_1,UART_2,UART_3)
// @param baud <20><><EFBFBD>ڲ<EFBFBD><DAB2><EFBFBD><EFBFBD><EFBFBD>
// @param tx_pin <20><><EFBFBD>ڷ<EFBFBD><DAB7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// @param rx_pin <20><><EFBFBD>ڽ<EFBFBD><DABD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// @return uint32 ʵ<>ʲ<EFBFBD><CAB2><EFBFBD><EFBFBD><EFBFBD>
// Sample usage: uart_init(UART_0,115200,UART0_TX_P14_0,UART0_RX_P14_1); // <20><>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>0 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>115200 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʹ<EFBFBD><CAB9>P14_0 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʹ<EFBFBD><CAB9>P14_1
//-------------------------------------------------------------------------------------------------------------------
void uart_init(UARTN_enum uartn, uint32 baud, UART_PIN_enum tx_pin, UART_PIN_enum rx_pin)
{
boolean interrupt_state = disableInterrupts();
volatile Ifx_ASCLIN *moudle = IfxAsclin_getAddress((IfxAsclin_Index)uartn);
IfxAsclin_Asc_initModuleConfig(&uart_config, moudle); //<2F><>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ýṹ<C3BD><E1B9B9>
uart_set_buffer(uartn);//<2F><><EFBFBD>û<EFBFBD><C3BB><EFBFBD><EFBFBD><EFBFBD>
uart_set_interrupt_priority(uartn);//<2F><><EFBFBD><EFBFBD><EFBFBD>ж<EFBFBD><D0B6><EFBFBD><EFBFBD>ȼ<EFBFBD>
uart_config.baudrate.prescaler = 4;
uart_config.baudrate.baudrate = (float32)baud;
uart_config.baudrate.oversampling = IfxAsclin_OversamplingFactor_8;
IfxAsclin_Asc_Pins pins;//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
pins.cts = NULL;
pins.rts = NULL;
uart_mux(uartn, tx_pin, rx_pin, (uint32 *)&pins.tx, (uint32 *)&pins.rx);
pins.rxMode = IfxPort_InputMode_pullUp;
pins.txMode = IfxPort_OutputMode_pushPull;
pins.pinDriver = IfxPort_PadDriver_cmosAutomotiveSpeed1;
uart_config.pins = &pins;
IfxAsclin_Asc_initModule(uart_get_handle(uartn), &uart_config);
restoreInterrupts(interrupt_state);
}
//-------------------------------------------------------------------------------------------------------------------
// @brief <20><><EFBFBD><EFBFBD><EFBFBD>ֽ<EFBFBD><D6BD><EFBFBD><EFBFBD><EFBFBD>
// @param uartn <20><><EFBFBD><EFBFBD>ģ<EFBFBD><C4A3><EFBFBD><EFBFBD>(UART_0,UART_1,UART_2,UART_3)
// @param dat <20><>Ҫ<EFBFBD><D2AA><EFBFBD>͵<EFBFBD><CDB5>ֽ<EFBFBD>
// @return void
// Sample usage: uart_putchar(UART_0, 0xA5); // <20><><EFBFBD><EFBFBD>0<EFBFBD><30><EFBFBD><EFBFBD>0xA5
//-------------------------------------------------------------------------------------------------------------------
void uart_putchar(UARTN_enum uartn, uint8 dat)
{
// IfxAsclin_Asc_blockingWrite(uart_get_handle(uartn),dat);
Ifx_SizeT count = 1;
(void)IfxAsclin_Asc_write(uart_get_handle(uartn), &dat, &count, TIME_INFINITE);
}
//-------------------------------------------------------------------------------------------------------------------
// @brief <20><><EFBFBD>ڷ<EFBFBD><DAB7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// @param uartn <20><><EFBFBD><EFBFBD>ģ<EFBFBD><C4A3><EFBFBD><EFBFBD>(UART_0,UART_1,UART_2,UART_3)
// @param *buff Ҫ<><D2AA><EFBFBD>͵<EFBFBD><CDB5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ַ
// @param len <20><><EFBFBD>ͳ<EFBFBD><CDB3><EFBFBD>
// @return void
// Sample usage: uart_putbuff(UART_0,&a[0],5);
//-------------------------------------------------------------------------------------------------------------------
void uart_putbuff(UARTN_enum uartn, uint8 *buff, uint32 len)
{
while(len)
{
uart_putchar(uartn, *buff);
len--;
buff++;
}
}
//-------------------------------------------------------------------------------------------------------------------
// @brief <20><><EFBFBD>ڷ<EFBFBD><DAB7><EFBFBD><EFBFBD>ַ<EFBFBD><D6B7><EFBFBD>
// @param uartn <20><><EFBFBD><EFBFBD>ģ<EFBFBD><C4A3><EFBFBD><EFBFBD>(UART_0,UART_1,UART_2,UART_3)
// @param *str Ҫ<><D2AA><EFBFBD>͵<EFBFBD><CDB5>ַ<EFBFBD><D6B7><EFBFBD><EFBFBD><EFBFBD>ַ
// @return void
// Sample usage: uart_putstr(UART_0,"i lvoe you");
//-------------------------------------------------------------------------------------------------------------------
void uart_putstr(UARTN_enum uartn, const int8 *str)
{
while(*str)
{
uart_putchar(uartn, *str++);
}
}
//-------------------------------------------------------------------------------------------------------------------
// @brief <20><>ȡ<EFBFBD><C8A1><EFBFBD>ڽ<EFBFBD><DABD>յ<EFBFBD><D5B5><EFBFBD><EFBFBD>ݣ<EFBFBD>whlie<69>ȴ<EFBFBD><C8B4><EFBFBD>
// @param uartn <20><><EFBFBD><EFBFBD>ģ<EFBFBD><C4A3><EFBFBD><EFBFBD>(UART_0,UART_1,UART_2,UART_3)
// @param *dat <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݵĵ<DDB5>ַ
// @return void
// Sample usage: uint8 dat; uart_getchar(UART_0,&dat); // <20><><EFBFBD>մ<EFBFBD><D5B4><EFBFBD>0<EFBFBD><30><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>dat<61><74><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
//-------------------------------------------------------------------------------------------------------------------
void uart_getchar(UARTN_enum uartn, uint8 *dat)
{
while(!IfxAsclin_Asc_getReadCount(uart_get_handle(uartn)));
*dat = IfxAsclin_Asc_blockingRead(uart_get_handle(uartn));
}
//-------------------------------------------------------------------------------------------------------------------
// @brief <20><>ȡ<EFBFBD><C8A1><EFBFBD>ڽ<EFBFBD><DABD>յ<EFBFBD><D5B5><EFBFBD><EFBFBD>ݣ<EFBFBD><DDA3><EFBFBD>ѯ<EFBFBD><D1AF><EFBFBD>գ<EFBFBD>
// @param uartn <20><><EFBFBD><EFBFBD>ģ<EFBFBD><C4A3><EFBFBD><EFBFBD>(UART_0,UART_1,UART_2,UART_3)
// @param *dat <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݵĵ<DDB5>ַ
// @return uint8 1<><31><EFBFBD><EFBFBD><EFBFBD>ճɹ<D5B3> 0<><30>δ<EFBFBD><CEB4><EFBFBD>յ<EFBFBD><D5B5><EFBFBD><EFBFBD><EFBFBD>
// Sample usage: uint8 dat; uart_query(UART_0,&dat); // <20><><EFBFBD>մ<EFBFBD><D5B4><EFBFBD>0<EFBFBD><30><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>dat<61><74><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
//-------------------------------------------------------------------------------------------------------------------
uint8 uart_query(UARTN_enum uartn, uint8 *dat)
{
if(IfxAsclin_Asc_getReadCount(uart_get_handle(uartn)) >0)
{
*dat = IfxAsclin_Asc_blockingRead(uart_get_handle(uartn));
return 1;
}
return 0;
}
#if(1 == PRINTF_ENABLE)
//-------------------------------------------------------------------------------------------------------------------
// @brief <20>ض<EFBFBD><D8B6><EFBFBD>printf <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// @param ch <20><>Ҫ<EFBFBD><D2AA>ӡ<EFBFBD><D3A1><EFBFBD>ֽ<EFBFBD>
// @param stream <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// @note <20>˺<EFBFBD><CBBA><EFBFBD><EFBFBD>ɱ<EFBFBD><C9B1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Դ<EFBFBD><D4B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>printf<74><66><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
//-------------------------------------------------------------------------------------------------------------------
int fputc(int ch, FILE *stream)
{
uart_putchar(DEBUG_UART, (char)ch);
return(ch);
}
#endif

View File

@@ -1,94 +0,0 @@
/*********************************************************************************************************************
* COPYRIGHT NOTICE
* Copyright (c) 2020,<2C><><EFBFBD>ɿƼ<C9BF>
* All rights reserved.
* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>QQȺ<51><C8BA><EFBFBD><EFBFBD>Ⱥ<EFBFBD><C8BA>824575535
*
* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݰ<EFBFBD>Ȩ<EFBFBD><C8A8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɿƼ<C9BF><C6BC><EFBFBD><EFBFBD>У<EFBFBD>δ<EFBFBD><CEB4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ҵ<EFBFBD><D2B5>;<EFBFBD><CDBE>
* <20><>ӭ<EFBFBD><D3AD>λʹ<CEBB>ò<EFBFBD><C3B2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>޸<EFBFBD><DEB8><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EBB1A3><EFBFBD><EFBFBD><EFBFBD>ɿƼ<C9BF><C6BC>İ<EFBFBD>Ȩ<EFBFBD><C8A8><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
*
* @file uart
* @company <09>ɶ<EFBFBD><C9B6><EFBFBD><EFBFBD>ɿƼ<C9BF><C6BC><EFBFBD><EFBFBD>޹<EFBFBD>˾
* @author <09><><EFBFBD>ɿƼ<C9BF>(QQ3184284598)
* @version <09>鿴doc<6F><63>version<6F>ļ<EFBFBD> <20>汾˵<E6B1BE><CBB5>
* @Software ADS v1.2.2
* @Target core TC264D
* @Taobao https://seekfree.taobao.com/
* @date 2020-3-23
********************************************************************************************************************/
#ifndef _zf_uart_h
#define _zf_uart_h
#include "common.h"
#include "ifxAsclin_Asc.h"
#define UART0_TX_BUFFER_SIZE 128//<2F><><EFBFBD><EFBFBD><E5B4AE>0<EFBFBD><30><EFBFBD>ͻ<EFBFBD><CDBB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>С
#define UART0_RX_BUFFER_SIZE 16 //<2F><><EFBFBD><EFBFBD><E5B4AE>0<EFBFBD><30><EFBFBD>ջ<EFBFBD><D5BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>С
#define UART1_TX_BUFFER_SIZE 128
#define UART1_RX_BUFFER_SIZE 16
#define UART2_TX_BUFFER_SIZE 128
#define UART2_RX_BUFFER_SIZE 16
#define UART3_TX_BUFFER_SIZE 128
#define UART3_RX_BUFFER_SIZE 16
//<2F><>ö<EFBFBD>ٶ<EFBFBD><D9B6><EFBFBD><E5B2BB><EFBFBD><EFBFBD><EFBFBD>û<EFBFBD><C3BB>޸<EFBFBD>
typedef enum //ö<>ٴ<EFBFBD><D9B4>ں<EFBFBD>
{
UART_0,
UART_1,
UART_2,
UART_3,
}UARTN_enum;
//<2F><>ö<EFBFBD>ٶ<EFBFBD><D9B6><EFBFBD><E5B2BB><EFBFBD><EFBFBD><EFBFBD>û<EFBFBD><C3BB>޸<EFBFBD>
typedef enum //ö<>ٴ<EFBFBD><D9B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
{
//<2F><><EFBFBD><EFBFBD>0 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ſ<EFBFBD>ѡ<EFBFBD><D1A1>Χ
UART0_TX_P14_0, UART0_TX_P14_1, UART0_TX_P15_2, UART0_TX_P15_3,
//<2F><><EFBFBD><EFBFBD>0 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ſ<EFBFBD>ѡ<EFBFBD><D1A1>Χ
UART0_RX_P14_1, UART0_RX_P15_3,
//<2F><>LQFP144<34><34>װ<EFBFBD><D7B0>û<EFBFBD><C3BB>P14_10<31><30>P14_8
//<2F><><EFBFBD><EFBFBD>1 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ſ<EFBFBD>ѡ<EFBFBD><D1A1>Χ
UART1_TX_P02_2, UART1_TX_P11_12, UART1_TX_P14_10, UART1_TX_P15_0, UART1_TX_P15_1, UART1_TX_P15_4, UART1_TX_P15_5, UART1_TX_P20_10, UART1_TX_P33_12, UART1_TX_P33_13,
//<2F><><EFBFBD><EFBFBD>1 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ſ<EFBFBD>ѡ<EFBFBD><D1A1>Χ
UART1_RX_P02_3, UART1_RX_P11_10, UART1_RX_P14_8, UART1_RX_P15_1, UART1_RX_P15_5, UART1_RX_P20_9, UART1_RX_P33_13,
//<2F><><EFBFBD><EFBFBD>2 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ſ<EFBFBD>ѡ<EFBFBD><D1A1>Χ
UART2_TX_P02_0, UART2_TX_P10_5, UART2_TX_P14_2, UART2_TX_P14_3, UART2_TX_P33_8, UART2_TX_P33_9,
//<2F><><EFBFBD><EFBFBD>2 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ſ<EFBFBD>ѡ<EFBFBD><D1A1>Χ
UART2_RX_P02_0, UART2_RX_P02_1, UART2_RX_P10_6, UART2_RX_P14_3, UART2_RX_P33_8,
//<2F><>LQFP144<34><34>װ<EFBFBD><D7B0>û<EFBFBD><C3BB>P32_2<5F><32>P32_3
//<2F><><EFBFBD><EFBFBD>3 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ſ<EFBFBD>ѡ<EFBFBD><D1A1>Χ
UART3_TX_P00_0, UART3_TX_P00_1, UART3_TX_P15_6, UART3_TX_P15_7, UART3_TX_P20_0, UART3_TX_P20_3, UART3_TX_P21_7, UART3_TX_P32_2, UART3_TX_P32_3,
//<2F><><EFBFBD><EFBFBD>3 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ſ<EFBFBD>ѡ<EFBFBD><D1A1>Χ
UART3_RX_P00_1, UART3_RX_P15_7, UART3_RX_P20_3, UART3_RX_P21_6, UART3_RX_P32_2,
}UART_PIN_enum;
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>handle<6C><65><EFBFBD><EFBFBD>
extern IfxAsclin_Asc uart0_handle;
extern IfxAsclin_Asc uart1_handle;
extern IfxAsclin_Asc uart2_handle;
extern IfxAsclin_Asc uart3_handle;
void uart_init(UARTN_enum uartn, uint32 baud, UART_PIN_enum tx_pin, UART_PIN_enum rx_pin);
void uart_putchar(UARTN_enum uartn, uint8 dat);
void uart_putbuff(UARTN_enum uartn, uint8 *buff, uint32 len);
void uart_putstr(UARTN_enum uartn, const int8 *str);
void uart_getchar(UARTN_enum uartn, uint8 *dat);
uint8 uart_query(UARTN_enum uartn, uint8 *dat);
#endif

View File

@@ -1,132 +0,0 @@
/*********************************************************************************************************************
* COPYRIGHT NOTICE
* Copyright (c) 2020,<2C><><EFBFBD>ɿƼ<C9BF>
* All rights reserved.
* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>QQȺ<51><C8BA><EFBFBD><EFBFBD>Ⱥ<EFBFBD><C8BA>824575535
*
* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݰ<EFBFBD>Ȩ<EFBFBD><C8A8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɿƼ<C9BF><C6BC><EFBFBD><EFBFBD>У<EFBFBD>δ<EFBFBD><CEB4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ҵ<EFBFBD><D2B5>;<EFBFBD><CDBE>
* <20><>ӭ<EFBFBD><D3AD>λʹ<CEBB>ò<EFBFBD><C3B2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>޸<EFBFBD><DEB8><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EBB1A3><EFBFBD><EFBFBD><EFBFBD>ɿƼ<C9BF><C6BC>İ<EFBFBD>Ȩ<EFBFBD><C8A8><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
*
* @file zf_vadc
* @company <09>ɶ<EFBFBD><C9B6><EFBFBD><EFBFBD>ɿƼ<C9BF><C6BC><EFBFBD><EFBFBD>޹<EFBFBD>˾
* @author <09><><EFBFBD>ɿƼ<C9BF>(QQ3184284598)
* @version <09>鿴doc<6F><63>version<6F>ļ<EFBFBD> <20>汾˵<E6B1BE><CBB5>
* @Software ADS v1.2.2
* @Target core TC264D
* @Taobao https://seekfree.taobao.com/
* @date 2020-3-23
********************************************************************************************************************/
#include "Vadc/Adc/IfxVadc_Adc.h"
#include "zf_assert.h"
#include "zf_vadc.h"
#include "stdio.h"
#define ADC_SAMPLE_FREQUENCY 10000000//<2F><><EFBFBD><EFBFBD>10Mhz
//-------------------------------------------------------------------------------------------------------------------
// @brief ADC<44><43>ʼ<EFBFBD><CABC>
// @param adcn ѡ<><D1A1>ADCģ<43><C4A3>(ADC_0<5F><30>ADC_1<5F><31>ADC_2)
// @param ch ѡ<><D1A1>ADCͨ<43><CDA8>
// @return void
// Sample usage: adc_init(ADC_0, ADC0_CH0_A0);
//-------------------------------------------------------------------------------------------------------------------
void adc_init(VADCN_enum vadc_n, VADC_CHN_enum vadc_chn)
{
static uint8 mudule_init_flag = 0;
IfxVadc_Adc vadc;
IfxVadc_Adc_Group adcGroup;
IfxVadc_Adc_Config adcConfig;
IfxVadc_Adc_initModuleConfig(&adcConfig, &MODULE_VADC);
if(!mudule_init_flag)
{
mudule_init_flag = 1;
IfxVadc_Adc_initModule(&vadc, &adcConfig);
}
else
{
vadc.vadc = adcConfig.vadc;
}
IfxVadc_Adc_GroupConfig adcGroupConfig;
IfxVadc_Adc_initGroupConfig(&adcGroupConfig, &vadc);
adcGroupConfig.groupId = (IfxVadc_GroupId)vadc_n;//IfxVadc_GroupId_0;
adcGroupConfig.master = adcGroupConfig.groupId;
adcGroupConfig.arbiter.requestSlotBackgroundScanEnabled = TRUE;
adcGroupConfig.backgroundScanRequest.autoBackgroundScanEnabled = TRUE;
adcGroupConfig.backgroundScanRequest.triggerConfig.gatingMode = IfxVadc_GatingMode_always;
adcGroupConfig.inputClass[0].resolution = IfxVadc_ChannelResolution_12bit;
adcGroupConfig.inputClass[0].sampleTime = 1.0f/ADC_SAMPLE_FREQUENCY;
adcGroupConfig.inputClass[1].resolution = IfxVadc_ChannelResolution_12bit;
adcGroupConfig.inputClass[1].sampleTime = 1.0f/ADC_SAMPLE_FREQUENCY;
IfxVadc_Adc_initGroup(&adcGroup, &adcGroupConfig);
IfxVadc_Adc_ChannelConfig adcChannelConfig;
IfxVadc_Adc_Channel adcChannel;
IfxVadc_Adc_initChannelConfig(&adcChannelConfig, &adcGroup);
adcChannelConfig.channelId = (IfxVadc_ChannelId)(vadc_chn%16);
adcChannelConfig.resultRegister = (IfxVadc_ChannelResult)(vadc_chn%16);
adcChannelConfig.backgroundChannel = TRUE;
IfxVadc_Adc_initChannel(&adcChannel, &adcChannelConfig);
unsigned channels = (1 << adcChannelConfig.channelId);
unsigned mask = channels;
IfxVadc_Adc_setBackgroundScan(&vadc, &adcGroup, channels, mask);
IfxVadc_Adc_startBackgroundScan(&vadc);
}
//-------------------------------------------------------------------------------------------------------------------
// @brief ADCת<43><D7AA>һ<EFBFBD><D2BB>
// @param adcn ѡ<><D1A1>ADCģ<43><C4A3>(ADC_0<5F><30>ADC_1<5F><31>ADC_2)
// @param ch ѡ<><D1A1>ADCͨ<43><CDA8>
// @return void
// Sample usage: adc_convert(ADC_0, ADC0_CH0_A0, ADC_12BIT);
//-------------------------------------------------------------------------------------------------------------------
uint16 adc_convert(VADCN_enum vadc_n, VADC_CHN_enum vadc_chn, VADC_RES_enum vadc_res)
{
Ifx_VADC_RES result;
uint8 temp;
do
{
result = IfxVadc_getResult(&MODULE_VADC.G[vadc_n], vadc_chn%16);
} while (!result.B.VF);
temp = 4 - (vadc_res * 2);
return((result.U&0x0fff)>>temp);
}
//-------------------------------------------------------------------------------------------------------------------
// @brief ADC<44><43>ֵ<EFBFBD>˲<EFBFBD>
// @param adcn ѡ<><D1A1>ADCģ<43><C4A3>(ADC_0<5F><30>ADC_1<5F><31>ADC_2)
// @param ch ѡ<><D1A1>ADCͨ<43><CDA8>
// @param count <20><>ֵ<EFBFBD>˲<EFBFBD><CBB2><EFBFBD><EFBFBD><EFBFBD>
// @return void
// Sample usage: adc_mean_filter(ADC_0, ADC0_CH0_A0, ADC_12BIT, 5);//<2F>ɼ<EFBFBD>5<EFBFBD><35> Ȼ<>󷵻<EFBFBD>ƽ<EFBFBD><C6BD>ֵ
//-------------------------------------------------------------------------------------------------------------------
uint16 adc_mean_filter(VADCN_enum vadc_n, VADC_CHN_enum vadc_chn, VADC_RES_enum vadc_res, uint8 count)
{
uint8 i;
uint32 sum;
ZF_ASSERT(count);//<2F><><EFBFBD>Դ<EFBFBD><D4B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ0
sum = 0;
for(i=0; i<count; i++)
{
sum += adc_convert(vadc_n, vadc_chn, vadc_res);
}
sum = sum/count;
return (uint16)sum;
}

View File

@@ -1,85 +0,0 @@
/*********************************************************************************************************************
* COPYRIGHT NOTICE
* Copyright (c) 2020,<2C><><EFBFBD>ɿƼ<C9BF>
* All rights reserved.
* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>QQȺ<51><C8BA><EFBFBD><EFBFBD>Ⱥ<EFBFBD><C8BA>824575535
*
* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݰ<EFBFBD>Ȩ<EFBFBD><C8A8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɿƼ<C9BF><C6BC><EFBFBD><EFBFBD>У<EFBFBD>δ<EFBFBD><CEB4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ҵ<EFBFBD><D2B5>;<EFBFBD><CDBE>
* <20><>ӭ<EFBFBD><D3AD>λʹ<CEBB>ò<EFBFBD><C3B2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>޸<EFBFBD><DEB8><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EBB1A3><EFBFBD><EFBFBD><EFBFBD>ɿƼ<C9BF><C6BC>İ<EFBFBD>Ȩ<EFBFBD><C8A8><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
*
* @file zf_vadc
* @company <09>ɶ<EFBFBD><C9B6><EFBFBD><EFBFBD>ɿƼ<C9BF><C6BC><EFBFBD><EFBFBD>޹<EFBFBD>˾
* @author <09><><EFBFBD>ɿƼ<C9BF>(QQ3184284598)
* @version <09>鿴doc<6F><63>version<6F>ļ<EFBFBD> <20>汾˵<E6B1BE><CBB5>
* @Software ADS v1.2.2
* @Target core TC264D
* @Taobao https://seekfree.taobao.com/
* @date 2020-3-23
********************************************************************************************************************/
#ifndef _zf_vadc_h
#define _zf_vadc_h
#include "common.h"
//<2F><>ö<EFBFBD>ٶ<EFBFBD><D9B6><EFBFBD><E5B2BB><EFBFBD><EFBFBD><EFBFBD>û<EFBFBD><C3BB>޸<EFBFBD>
typedef enum // ö<><C3B6>ADC<44><43><EFBFBD><EFBFBD>
{
ADC_0,
ADC_1,
ADC_2,
}VADCN_enum;
typedef enum // ö<><C3B6>ADCͨ<43><CDA8>
{
//ADC0<43><30>ѡ<EFBFBD><D1A1><EFBFBD><EFBFBD>
ADC0_CH0_A0 = 0*16 + 0,
ADC0_CH1_A1,
ADC0_CH2_A2,
ADC0_CH3_A3,
ADC0_CH4_A4,
ADC0_CH5_A5,
ADC0_CH6_A6,
ADC0_CH7_A7,
ADC0_CH8_A8,
ADC0_CH10_A10 = 0*16 + 10,
ADC0_CH11_A11,
ADC0_CH12_A12,
ADC0_CH13_A13,
//ADC1<43><31>ѡ<EFBFBD><D1A1><EFBFBD><EFBFBD>
ADC1_CH0_A16 = 1*16 + 0,
ADC1_CH1_A17 = 1*16 + 1,
ADC1_CH4_A20 = 1*16 + 4,
ADC1_CH5_A21 = 1*16 + 5,
ADC1_CH8_A24 = 1*16 + 8,
ADC1_CH9_A25 = 1*16 + 9,
//ADC2<43><32>ѡ<EFBFBD><D1A1><EFBFBD><EFBFBD>
ADC2_CH3_A35 = 2*16 + 3,
ADC2_CH4_A36,
ADC2_CH5_A37,
ADC2_CH6_A38,
ADC2_CH7_A39,
ADC2_CH10_A44 = 2*16 + 10,
ADC2_CH11_A45,
ADC2_CH12_A46,
ADC2_CH13_A47,
ADC2_CH14_A48,
ADC2_CH15_A49,
}VADC_CHN_enum;
//<2F><>ö<EFBFBD>ٶ<EFBFBD><D9B6><EFBFBD><E5B2BB><EFBFBD><EFBFBD><EFBFBD>û<EFBFBD><C3BB>޸<EFBFBD>
typedef enum // ö<><C3B6>ADCͨ<43><CDA8>
{
ADC_8BIT, //8λ<38>ֱ<EFBFBD><D6B1><EFBFBD>
ADC_10BIT, //10λ<30>ֱ<EFBFBD><D6B1><EFBFBD>
ADC_12BIT, //12λ<32>ֱ<EFBFBD><D6B1><EFBFBD>
}VADC_RES_enum;
void adc_init(VADCN_enum vadc_n, VADC_CHN_enum vadc_chn);
uint16 adc_convert(VADCN_enum vadc_n, VADC_CHN_enum vadc_chn, VADC_RES_enum vadc_res);
uint16 adc_mean_filter(VADCN_enum vadc_n, VADC_CHN_enum vadc_chn, VADC_RES_enum vadc_res, uint8 count);
#endif

View File

@@ -1,770 +0,0 @@
/*********************************************************************************************************************
* COPYRIGHT NOTICE
* Copyright (c) 2020,<2C><><EFBFBD>ɿƼ<C9BF>
* All rights reserved.
* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>QQȺ<51><C8BA><EFBFBD><EFBFBD>Ⱥ<EFBFBD><C8BA>824575535
*
* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݰ<EFBFBD>Ȩ<EFBFBD><C8A8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɿƼ<C9BF><C6BC><EFBFBD><EFBFBD>У<EFBFBD>δ<EFBFBD><CEB4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ҵ<EFBFBD><D2B5>;<EFBFBD><CDBE>
* <20><>ӭ<EFBFBD><D3AD>λʹ<CEBB>ò<EFBFBD><C3B2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>޸<EFBFBD><DEB8><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EBB1A3><EFBFBD><EFBFBD><EFBFBD>ɿƼ<C9BF><C6BC>İ<EFBFBD>Ȩ<EFBFBD><C8A8><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
*
* @file 1.8<EFBFBD><EFBFBD>TFT
* @company <09>ɶ<EFBFBD><C9B6><EFBFBD><EFBFBD>ɿƼ<C9BF><C6BC><EFBFBD><EFBFBD>޹<EFBFBD>˾
* @author <09><><EFBFBD>ɿƼ<C9BF>(QQ3184284598)
* @version <09>鿴doc<6F><63>version<6F>ļ<EFBFBD> <20>汾˵<E6B1BE><CBB5>
* @Software ADS v1.2.2
* @Target core TC264D
* @Taobao https://seekfree.taobao.com/
* @date 2020-3-23
* @note
<09><><EFBFBD>߶<EFBFBD><DFB6>
------------------------------------
ģ<><C4A3><EFBFBD>ܽ<EFBFBD> <09><>Ƭ<EFBFBD><C6AC><EFBFBD>ܽ<EFBFBD>
SCL <20>鿴TFT_SCL<43><EFBFBD><EAB6A8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> Ӳ<><D3B2>SPI<50><49><EFBFBD>Ų<EFBFBD><C5B2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>л<EFBFBD>
SDA <20>鿴TFT_SDA<44><EFBFBD><EAB6A8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> Ӳ<><D3B2>SPI<50><49><EFBFBD>Ų<EFBFBD><C5B2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>л<EFBFBD>
RES <20>鿴REST_PIN<49><EFBFBD><EAB6A8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
DC <20>鿴DC_PIN<49><EFBFBD><EAB6A8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
CS <20>鿴TFT_CS<43><EFBFBD><EAB6A8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> Ӳ<><D3B2>SPI<50><49><EFBFBD>Ų<EFBFBD><C5B2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>л<EFBFBD>
<09><>Դ<EFBFBD><D4B4><EFBFBD><EFBFBD>
BL 3.3V<EFBFBD><EFBFBD>Դ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ţ<EFBFBD>Ҳ<EFBFBD><EFBFBD><EFBFBD>Խ<EFBFBD>PWM<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȣ<EFBFBD>
VCC 3.3V<EFBFBD><EFBFBD>Դ
GND <20><>Դ<EFBFBD><D4B4>
<09><><EFBFBD><EFBFBD><EFBFBD>ֱ<EFBFBD><D6B1><EFBFBD>128*160
------------------------------------
********************************************************************************************************************/
#include "zf_spi.h"
#include "zf_gpio.h"
#include "zf_assert.h"
#include "zf_stm_systick.h"
#include "SEEKFREE_PRINTF.h"
#include "SEEKFREE_18TFT.h"
void lcd_writeIndex(uint8 dat) //д<><D0B4><EFBFBD><EFBFBD>
{
DC(0);
spi_mosi(TFT_SPIN,TFT_CS,&dat,NULL,1,1);
}
void lcd_writeData(uint8 dat) //д<><D0B4><EFBFBD><EFBFBD>
{
DC(1);
spi_mosi(TFT_SPIN,TFT_CS,&dat,NULL,1,1);
}
void lcd_writedata_16bit(uint16 dat) //<2F><>Һ<EFBFBD><D2BA><EFBFBD><EFBFBD>дһ<D0B4><D2BB>16λ<36><CEBB><EFBFBD><EFBFBD>
{
uint8 dat1[2];
dat1[0] = dat >> 8;
dat1[1] = (uint8)dat;
DC(1);
spi_mosi(TFT_SPIN,TFT_CS,dat1,NULL,2,1); //д<><D0B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>λ<EFBFBD><CEBB>ǰ <20><>λ<EFBFBD>ں<EFBFBD>
}
//-------------------------------------------------------------------------------------------------------------------
// @brief Һ<><D2BA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// @param x_start <09><><EFBFBD><EFBFBD>x<EFBFBD><78><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// @param y_start <09><><EFBFBD><EFBFBD>y<EFBFBD><79><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// @param x_end <09><><EFBFBD><EFBFBD>x<EFBFBD><78><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>յ<EFBFBD>
// @param y_end <09><><EFBFBD><EFBFBD>y<EFBFBD><79><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>յ<EFBFBD>
// @return void
// @since v1.0
// Sample usage: lcd_set_region(0,0,10,10);// x<><78>y<EFBFBD><79><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E3B6BC>0<EFBFBD><30><EFBFBD>յ㶼<D5B5><E3B6BC>10
//-------------------------------------------------------------------------------------------------------------------
void lcd_set_region(unsigned int x_start,unsigned int y_start,unsigned int x_end,unsigned int y_end)
{
ZF_ASSERT(TFT_X_MAX>x_start);//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ԣ<EFBFBD><D4A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ա<EFBFBD>־<EFBFBD><D6BE><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Χ
ZF_ASSERT(TFT_Y_MAX>y_start);
ZF_ASSERT(TFT_X_MAX>x_end);
ZF_ASSERT(TFT_Y_MAX>y_end);
#if (0 == TFT_DISPLAY_DIR || 1 == TFT_DISPLAY_DIR)
lcd_writeIndex(0x2a);
lcd_writeData(0x00);
lcd_writeData(x_start+2);
lcd_writeData(0x00);
lcd_writeData(x_end+2);
lcd_writeIndex(0x2b);
lcd_writeData(0x00);
lcd_writeData(y_start+1);
lcd_writeData(0x00);
lcd_writeData(y_end+1);
#elif(2 == TFT_DISPLAY_DIR || 3 == TFT_DISPLAY_DIR)
lcd_writeIndex(0x2a);
lcd_writeData(0x00);
lcd_writeData(x_start+1);
lcd_writeData(0x0);
lcd_writeData(x_end+1);
lcd_writeIndex(0x2b);
lcd_writeData(0x00);
lcd_writeData(y_start+2);
lcd_writeData(0x00);
lcd_writeData(y_end+2);
#endif
lcd_writeIndex(0x2c);
}
//-------------------------------------------------------------------------------------------------------------------
// @brief Һ<><D2BA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// @param color <09><>ɫ<EFBFBD><C9AB><EFBFBD><EFBFBD>
// @return void
// @since v1.0
// Sample usage: lcd_clear(YELLOW);// ȫ<><C8AB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA>ɫ
//-------------------------------------------------------------------------------------------------------------------
void lcd_clear(uint16 color)
{
uint8 i,j;
lcd_set_region(0,0,TFT_X_MAX-1,TFT_Y_MAX-1);
for (i=0;i<TFT_Y_MAX;i++)
for (j=0;j<TFT_X_MAX;j++)
lcd_writedata_16bit(color);
}
//-------------------------------------------------------------------------------------------------------------------
// @brief Һ<><D2BA><EFBFBD><EFBFBD>ʼ<EFBFBD><CABC>
// @return void
// @since v1.0
// Sample usage:
//-------------------------------------------------------------------------------------------------------------------
void lcd_init(void)
{
spi_init(TFT_SPIN, TFT_SCL, TFT_SDA, TFT_SDA_IN, TFT_CS, 0, 30*1000*1000);//Ӳ<><D3B2>SPI<50><49>ʼ<EFBFBD><CABC>
gpio_init(BL_PIN,GPO,1,PUSHPULL);
gpio_init(DC_PIN,GPO,0,PUSHPULL);
gpio_init(REST_PIN,GPO,0,PUSHPULL);
REST(0);
systick_delay_ms(STM0, 10);
REST(1);
systick_delay_ms(STM0, 120);
lcd_writeIndex(0x11);
systick_delay_ms(STM0, 120);
lcd_writeIndex(0xB1);
lcd_writeData(0x01);
lcd_writeData(0x2C);
lcd_writeData(0x2D);
lcd_writeIndex(0xB2);
lcd_writeData(0x01);
lcd_writeData(0x2C);
lcd_writeData(0x2D);
lcd_writeIndex(0xB3);
lcd_writeData(0x01);
lcd_writeData(0x2C);
lcd_writeData(0x2D);
lcd_writeData(0x01);
lcd_writeData(0x2C);
lcd_writeData(0x2D);
lcd_writeIndex(0xB4);
lcd_writeData(0x07);
lcd_writeIndex(0xC0);
lcd_writeData(0xA2);
lcd_writeData(0x02);
lcd_writeData(0x84);
lcd_writeIndex(0xC1);
lcd_writeData(0xC5);
lcd_writeIndex(0xC2);
lcd_writeData(0x0A);
lcd_writeData(0x00);
lcd_writeIndex(0xC3);
lcd_writeData(0x8A);
lcd_writeData(0x2A);
lcd_writeIndex(0xC4);
lcd_writeData(0x8A);
lcd_writeData(0xEE);
lcd_writeIndex(0xC5);
lcd_writeData(0x0E);
lcd_writeIndex(0x36);
if (TFT_DISPLAY_DIR==0) lcd_writeData(1<<7 | 1<<6 | 0<<5); //<2F><><EFBFBD><EFBFBD>ģʽ
else if (TFT_DISPLAY_DIR==1) lcd_writeData(0<<7 | 0<<6 | 0<<5); //<2F><><EFBFBD><EFBFBD>ģʽ <20><>ת180
else if (TFT_DISPLAY_DIR==2) lcd_writeData(1<<7 | 0<<6 | 1<<5); //<2F><><EFBFBD><EFBFBD>ģʽ
else lcd_writeData(0<<7 | 1<<6 | 1<<5); //<2F><><EFBFBD><EFBFBD>ģʽ <20><>ת180
lcd_writeIndex(0xe0);
lcd_writeData(0x0f);
lcd_writeData(0x1a);
lcd_writeData(0x0f);
lcd_writeData(0x18);
lcd_writeData(0x2f);
lcd_writeData(0x28);
lcd_writeData(0x20);
lcd_writeData(0x22);
lcd_writeData(0x1f);
lcd_writeData(0x1b);
lcd_writeData(0x23);
lcd_writeData(0x37);
lcd_writeData(0x00);
lcd_writeData(0x07);
lcd_writeData(0x02);
lcd_writeData(0x10);
lcd_writeIndex(0xe1);
lcd_writeData(0x0f);
lcd_writeData(0x1b);
lcd_writeData(0x0f);
lcd_writeData(0x17);
lcd_writeData(0x33);
lcd_writeData(0x2c);
lcd_writeData(0x29);
lcd_writeData(0x2e);
lcd_writeData(0x30);
lcd_writeData(0x30);
lcd_writeData(0x39);
lcd_writeData(0x3f);
lcd_writeData(0x00);
lcd_writeData(0x07);
lcd_writeData(0x03);
lcd_writeData(0x10);
lcd_writeIndex(0x2a);
lcd_writeData(0x00);
lcd_writeData(0x00+2);
lcd_writeData(0x00);
lcd_writeData(0x80+2);
lcd_writeIndex(0x2b);
lcd_writeData(0x00);
lcd_writeData(0x00+3);
lcd_writeData(0x00);
lcd_writeData(0x80+3);
lcd_writeIndex(0xF0);
lcd_writeData(0x01);
lcd_writeIndex(0xF6);
lcd_writeData(0x00);
lcd_writeIndex(0x3A);
lcd_writeData(0x05);
lcd_writeIndex(0x29);
lcd_clear(RGB565_WHITE);//ȫ<><C8AB>
}
//-------------------------------------------------------------------------------------------------------------------
// @brief Һ<><D2BA><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// @param x <20><><EFBFBD><EFBFBD>x<EFBFBD><78><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// @param y <20><><EFBFBD><EFBFBD>y<EFBFBD><79><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// @param dat <20><>Ҫ<EFBFBD><D2AA>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD>ɫ
// @return void
// @since v1.0
// Sample usage: lcd_drawpoint(0,0,RED); //<2F><><EFBFBD><EFBFBD>0,0<><30>һ<EFBFBD><D2BB><EFBFBD><EFBFBD>ɫ<EFBFBD>ĵ<EFBFBD>
//-------------------------------------------------------------------------------------------------------------------
void lcd_drawpoint(uint16 x,uint16 y,uint16 color)
{
lcd_set_region(x,y,x,y);
lcd_writedata_16bit(color);
}
//-------------------------------------------------------------------------------------------------------------------
// @brief Һ<><D2BA><EFBFBD><EFBFBD>ʾ<EFBFBD>ַ<EFBFBD>
// @param x <20><><EFBFBD><EFBFBD>x<EFBFBD><78><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Χ 0 -<2D><>TFT_X_MAX-1<><31>
// @param y <20><><EFBFBD><EFBFBD>y<EFBFBD><79><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Χ 0 -<2D><>TFT_Y_MAX/16-1<><31>
// @param dat <20><>Ҫ<EFBFBD><D2AA>ʾ<EFBFBD><CABE><EFBFBD>ַ<EFBFBD>
// @return void
// @since v1.0
// Sample usage: lcd_showchar(0,0,'x');//<2F><><EFBFBD><EFBFBD>0,0дһ<D0B4><D2BB><EFBFBD>ַ<EFBFBD>x
//-------------------------------------------------------------------------------------------------------------------
void lcd_showchar(uint16 x,uint16 y,const int8 dat)
{
uint8 i,j;
uint8 temp;
for(i=0; i<16; i++)
{
lcd_set_region(x,y+i,x+7,y+i);
temp = tft_ascii[dat-32][i];//<2F><>32<33><32>Ϊ<EFBFBD><CEAA>ȡģ<C8A1>Ǵӿո<D3BF><D5B8><EFBFBD>ʼȡ<CABC><C8A1> <20>ո<EFBFBD><D5B8><EFBFBD>ascii<69><69><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>32
for(j=0; j<8; j++)
{
if(temp&0x01) lcd_writedata_16bit(TFT_PENCOLOR);
else lcd_writedata_16bit(TFT_BGCOLOR);
temp>>=1;
}
}
}
//-------------------------------------------------------------------------------------------------------------------
// @brief Һ<><D2BA><EFBFBD><EFBFBD>ʾ<EFBFBD>ַ<EFBFBD><D6B7><EFBFBD>
// @param x <20><><EFBFBD><EFBFBD>x<EFBFBD><78><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Χ 0 -<2D><>TFT_X_MAX-1<><31>
// @param y <20><><EFBFBD><EFBFBD>y<EFBFBD><79><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Χ 0 -<2D><>TFT_Y_MAX/16-1<><31>
// @param dat <20><>Ҫ<EFBFBD><D2AA>ʾ<EFBFBD><CABE><EFBFBD>ַ<EFBFBD><D6B7><EFBFBD>
// @return void
// @since v1.0
// Sample usage: lcd_showstr(0,0,"seekfree");
//-------------------------------------------------------------------------------------------------------------------
void lcd_showstr(uint16 x,uint16 y,const int8 dat[])
{
uint16 j;
j = 0;
while(dat[j] != '\0')
{
lcd_showchar(x+8*j,y*16,dat[j]);
j++;
}
}
//-------------------------------------------------------------------------------------------------------------------
// @brief Һ<><D2BA><EFBFBD><EFBFBD>ʾ<38>з<EFBFBD><D0B7><EFBFBD>
// @param x <20><><EFBFBD><EFBFBD>x<EFBFBD><78><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Χ 0 -<2D><>TFT_X_MAX-1<><31>
// @param y <20><><EFBFBD><EFBFBD>y<EFBFBD><79><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Χ 0 -<2D><>TFT_Y_MAX/16-1<><31>
// @param dat <20><>Ҫ<EFBFBD><D2AA>ʾ<EFBFBD>ı<EFBFBD><C4B1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>int8
// @return void
// @since v1.0
// Sample usage: lcd_showint8(0,0,x);//xΪint8<74><38><EFBFBD><EFBFBD>
//-------------------------------------------------------------------------------------------------------------------
void lcd_showint8(uint16 x,uint16 y,int8 dat)
{
uint8 a[3];
uint8 i;
if(dat<0)
{
lcd_showchar(x,y*16,'-');
dat = -dat;
}
else lcd_showchar(x,y*16,' ');
a[0] = dat/100;
a[1] = dat/10%10;
a[2] = dat%10;
i = 0;
while(i<3)
{
lcd_showchar(x+(8*(i+1)),y*16,'0' + a[i]);
i++;
}
}
//-------------------------------------------------------------------------------------------------------------------
// @brief Һ<><D2BA><EFBFBD><EFBFBD>ʾ<38>޷<EFBFBD><DEB7><EFBFBD>
// @param x <20><><EFBFBD><EFBFBD>x<EFBFBD><78><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Χ 0 -<2D><>TFT_X_MAX-1<><31>
// @param y <20><><EFBFBD><EFBFBD>y<EFBFBD><79><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Χ 0 -<2D><>TFT_Y_MAX/16-1<><31>
// @param dat <20><>Ҫ<EFBFBD><D2AA>ʾ<EFBFBD>ı<EFBFBD><C4B1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>uint8
// @return void
// @since v1.0
// Sample usage: lcd_showuint8(0,0,x);//xΪuint8<74><38><EFBFBD><EFBFBD>
//-------------------------------------------------------------------------------------------------------------------
void lcd_showuint8(uint16 x,uint16 y,uint8 dat)
{
uint8 a[3];
uint8 i;
a[0] = dat/100;
a[1] = dat/10%10;
a[2] = dat%10;
i = 0;
while(i<3)
{
lcd_showchar(x+(8*i),y*16,'0' + a[i]);
i++;
}
}
//-------------------------------------------------------------------------------------------------------------------
// @brief Һ<><D2BA><EFBFBD><EFBFBD>ʾ16λ<36>з<EFBFBD><D0B7><EFBFBD>
// @param x <20><><EFBFBD><EFBFBD>x<EFBFBD><78><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Χ 0 -<2D><>TFT_X_MAX-1<><31>
// @param y <20><><EFBFBD><EFBFBD>y<EFBFBD><79><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Χ 0 -<2D><>TFT_Y_MAX/16-1<><31>
// @param dat <20><>Ҫ<EFBFBD><D2AA>ʾ<EFBFBD>ı<EFBFBD><C4B1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>int16
// @return void
// @since v1.0
// Sample usage: lcd_showint16(0,0,x);//xΪint16<31><36><EFBFBD><EFBFBD>
//-------------------------------------------------------------------------------------------------------------------
void lcd_showint16(uint16 x,uint16 y,int16 dat)
{
uint8 a[5];
uint8 i;
if(dat<0)
{
lcd_showchar(x,y*16,'-');
dat = -dat;
}
else lcd_showchar(x,y*16,' ');
a[0] = dat/10000;
a[1] = dat/1000%10;
a[2] = dat/100%10;
a[3] = dat/10%10;
a[4] = dat%10;
i = 0;
while(i<5)
{
lcd_showchar(x+(8*(i+1)),y*16,'0' + a[i]);
i++;
}
}
//-------------------------------------------------------------------------------------------------------------------
// @brief Һ<><D2BA><EFBFBD><EFBFBD>ʾ16λ<36>޷<EFBFBD><DEB7><EFBFBD>
// @param x <20><><EFBFBD><EFBFBD>x<EFBFBD><78><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Χ 0 -<2D><>TFT_X_MAX-1<><31>
// @param y <20><><EFBFBD><EFBFBD>y<EFBFBD><79><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Χ 0 -<2D><>TFT_Y_MAX/16-1<><31>
// @param dat <20><>Ҫ<EFBFBD><D2AA>ʾ<EFBFBD>ı<EFBFBD><C4B1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>uint16
// @return void
// @since v1.0
// Sample usage: lcd_showuint16(0,0,x);//xΪuint16<31><36><EFBFBD><EFBFBD>
//-------------------------------------------------------------------------------------------------------------------
void lcd_showuint16(uint16 x,uint16 y,uint16 dat)
{
uint8 a[5];
uint8 i;
a[0] = dat/10000;
a[1] = dat/1000%10;
a[2] = dat/100%10;
a[3] = dat/10%10;
a[4] = dat%10;
i = 0;
while(i<5)
{
lcd_showchar(x+(8*i),y*16,'0' + a[i]);
i++;
}
}
//-------------------------------------------------------------------------------------------------------------------
// @brief Һ<><D2BA><EFBFBD><EFBFBD>ʾ32λ<32>з<EFBFBD><D0B7><EFBFBD><><C8A5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ч<EFBFBD><D0A7>0)
// @param x <20><><EFBFBD><EFBFBD>x<EFBFBD><78><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Χ 0 -<2D><>TFT_X_MAX-1<><31>
// @param y <20><><EFBFBD><EFBFBD>y<EFBFBD><79><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Χ 0 -<2D><>TFT_Y_MAX/16-1<><31>
// @param dat <20><>Ҫ<EFBFBD><D2AA>ʾ<EFBFBD>ı<EFBFBD><C4B1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>uint32
// @param num <20><>Ҫ<EFBFBD><D2AA>ʾ<EFBFBD><CABE>λ<EFBFBD><CEBB> <20><><EFBFBD><EFBFBD>10λ <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// @return void
// @since v1.0
// Sample usage: lcd_showuint32(0,0,x,3);//x<><78><EFBFBD><EFBFBD>Ϊint32 uint16 int16 uint8 int8<74><38><EFBFBD><EFBFBD>
// Sample usage: <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾһ<CABE><D2BB> <20><>-<2D><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾһ<CABE><D2BB><EFBFBD>ո<EFBFBD>
//-------------------------------------------------------------------------------------------------------------------
void lcd_showint32(uint16 x,uint16 y,int32 dat,uint8 num)
{
int8 buff[34];
uint32 length;
if(10<num) num = 10;
num++;
if(0>dat) length = zf_sprintf( &buff[0],"%d",dat);//<2F><><EFBFBD><EFBFBD>
else
{
buff[0] = ' ';
length = zf_sprintf( &buff[1],"%d",dat);
length++;
}
while(length < num)
{
buff[length] = ' ';
length++;
}
buff[num] = '\0';
lcd_showstr(x, y, buff); //<2F><>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD>
}
//-------------------------------------------------------------------------------------------------------------------
// @brief Һ<><D2BA><EFBFBD><EFBFBD>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD><EFBFBD><EFBFBD><><C8A5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ч<EFBFBD><D0A7>0)
// @param x <20><><EFBFBD><EFBFBD>x<EFBFBD><78><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Χ 0 -<2D><>TFT_X_MAX-1<><31>
// @param y <20><><EFBFBD><EFBFBD>y<EFBFBD><79><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Χ 0 -<2D><>TFT_Y_MAX/16-1<><31>
// @param dat <20><>Ҫ<EFBFBD><D2AA>ʾ<EFBFBD>ı<EFBFBD><C4B1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>float<61><74>double
// @param num <20><><EFBFBD><EFBFBD>λ<EFBFBD><CEBB>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>10λ
// @param pointnum С<><D0A1>λ<EFBFBD><CEBB>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
// @return void
// @since v1.0
// Sample usage: lcd_showfloat(0,0,x,2,3);//<2F><>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾС<><D0A1><EFBFBD><EFBFBD>ʾ<EFBFBD><CABE>λ
// @note <20>ر<EFBFBD>ע<EFBFBD><EFBFBD><E2B5B1><EFBFBD><EFBFBD>С<EFBFBD><D0A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾ<EFBFBD><CABE>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD>д<EFBFBD><D0B4><EFBFBD><EFBFBD>ֵ<EFBFBD><D6B5>һ<EFBFBD><D2BB><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD>
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڸ<EFBFBD><DAB8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȶ<EFBFBD>ʧ<EFBFBD><CAA7><EFBFBD><EFBFBD>µģ<C2B5><C4A3><EFBFBD><E2B2A2><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// <20>й<EFBFBD><D0B9><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E9A3AC><EFBFBD><EFBFBD><EFBFBD>аٶ<D0B0>ѧϰ <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȶ<EFBFBD>ʧ<EFBFBD><CAA7><EFBFBD>
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾһ<CABE><D2BB> <20><>-<2D><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾһ<CABE><D2BB><EFBFBD>ո<EFBFBD>
//-------------------------------------------------------------------------------------------------------------------
void lcd_showfloat(uint16 x,uint16 y,double dat,uint8 num,uint8 pointnum)
{
uint32 length;
int8 buff[34];
int8 start,end,point;
if(6<pointnum) pointnum = 6;
if(10<num) num = 10;
if(0>dat) length = zf_sprintf( &buff[0],"%f",dat);//<2F><><EFBFBD><EFBFBD>
else
{
length = zf_sprintf( &buff[1],"%f",dat);
length++;
}
point = (int8)(length - 7); //<2F><><EFBFBD><EFBFBD>С<EFBFBD><D0A1><EFBFBD><EFBFBD>λ<EFBFBD><CEBB>
start = point - num - 1; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʼλ
end = point + pointnum + 1; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>λ
while(0>start)//<2F><><EFBFBD><EFBFBD>λ<EFBFBD><CEBB><EFBFBD><EFBFBD> ĩβӦ<CEB2><D3A6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ո<EFBFBD>
{
buff[end] = ' ';
end++;
start++;
}
if(0>dat) buff[start] = '-';
else buff[start] = ' ';
buff[end] = '\0';
lcd_showstr(x, y, buff); //<2F><>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD>
}
//-------------------------------------------------------------------------------------------------------------------
// @brief <20><>ʾ40*40 QQͼƬ
// @param *p ͼ<><CDBC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ַ
// @return void
// @since v1.0
// Sample usage:
//-------------------------------------------------------------------------------------------------------------------
void showimage(const unsigned char *p)
{
int i,j,k;
unsigned char picH,picL;
lcd_clear(RGB565_WHITE); //<2F><><EFBFBD><EFBFBD>
for(k=0;k<4;k++)
{
for(j=0;j<3;j++)
{
lcd_set_region(40*j,40*k,40*j+39,40*k+39); //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
for(i=0;i<40*40;i++)
{
picL=*(p+i*2); //<2F><><EFBFBD>ݵ<EFBFBD>λ<EFBFBD><CEBB>ǰ
picH=*(p+i*2+1);
lcd_writedata_16bit(picH<<8|picL);
}
}
}
}
//-------------------------------------------------------------------------------------------------------------------
// @brief <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>(<28>Ҷ<EFBFBD><D2B6><EFBFBD><EFBFBD><EFBFBD>ͷ)Һ<><D2BA><EFBFBD><EFBFBD>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD>
// @param *p ͼ<><CDBC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ַ
// @param width ͼ<><CDBC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// @param height ͼ<><CDBC><EFBFBD>߶<EFBFBD>
// @return void
// @since v1.0
// Sample usage: lcd_displayimage032(mt9v03x_csi_image[0], MT9V03X_CSI_W, MT9V03X_CSI_H)//<2F><>ʾ<EFBFBD>Ҷ<EFBFBD><D2B6><EFBFBD><EFBFBD><EFBFBD>ͷ ͼ<><CDBC>
// @note ͼ<><CDBC><EFBFBD>Ŀ<EFBFBD><C4BF><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Һ<EFBFBD><D2BA><EFBFBD>Ŀ<EFBFBD><C4BF>ȣ<EFBFBD><C8A3><EFBFBD><EFBFBD>Զ<EFBFBD><D4B6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾȫ<CABE><C8AB>Ұ
//-------------------------------------------------------------------------------------------------------------------
void lcd_displayimage032(uint8 *p, uint16 width, uint16 height)
{
uint32 i,j;
uint16 color = 0;
uint16 temp = 0;
uint16 coord_x = 0;
uint16 coord_y = 0;
if(0==TFT_DISPLAY_DIR || 1==TFT_DISPLAY_DIR)//<2F><><EFBFBD><EFBFBD>
{
coord_x = height>TFT_X_MAX?TFT_X_MAX:height;
coord_y = width>TFT_Y_MAX?TFT_Y_MAX:width;
for(j=0;j<coord_y;j++)
{
lcd_set_region(0,j,coord_x-1,j);
for(i=0;i<coord_x;i++)
{
temp = *(p+i*width+j*width/coord_y);//<2F><>ȡ<EFBFBD><C8A1><EFBFBD>ص<EFBFBD>
color=(0x001f&((temp)>>3))<<11;
color=color|(((0x003f)&((temp)>>2))<<5);
color=color|(0x001f&((temp)>>3));
lcd_writedata_16bit(color);
}
}
}
else//<2F><><EFBFBD><EFBFBD>
{
coord_x = width>TFT_X_MAX?TFT_X_MAX:width;
coord_y = height>TFT_Y_MAX?TFT_Y_MAX:height;
lcd_set_region(0,0,coord_x-1,coord_y-1);
for(j=0;j<coord_y;j++)
{
for(i=0;i<coord_x;i++)
{
temp = *(p+j*width+i*width/coord_x);//<2F><>ȡ<EFBFBD><C8A1><EFBFBD>ص<EFBFBD>
color=(0x001f&((temp)>>3))<<11;
color=color|(((0x003f)&((temp)>>2))<<5);
color=color|(0x001f&((temp)>>3));
lcd_writedata_16bit(color);
}
}
}
}
//-------------------------------------------------------------------------------------------------------------------
// @brief <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>(<28>Ҷ<EFBFBD><D2B6><EFBFBD><EFBFBD><EFBFBD>ͷ)Һ<><D2BA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD>
// @param *p ͼ<><CDBC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ַ
// @param width ͼ<><CDBC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// @param height ͼ<><CDBC><EFBFBD>߶<EFBFBD>
// @param dis_width ͼ<><CDBC><EFBFBD><EFBFBD>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD> 1 -<2D><>TFT_X_MAX<41><58>
// @param dis_height ͼ<><CDBC><EFBFBD><EFBFBD>ʾ<EFBFBD>߶<EFBFBD> 1 -<2D><>TFT_Y_MAX<41><58>
// @return void
// @since v1.0
// Sample usage: lcd_displayimage032_zoom(mt9v03x_csi_image[0], MT9V03X_CSI_W, MT9V03X_CSI_H, 0, 0, 160, 120)//<2F><>ʾ<EFBFBD>Ҷ<EFBFBD><D2B6><EFBFBD><EFBFBD><EFBFBD>ͷ ͼ<><CDBC>
// @note ͼ<><CDBC><EFBFBD>Ŀ<EFBFBD><C4BF><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Һ<EFBFBD><D2BA><EFBFBD>Ŀ<EFBFBD><C4BF>ȣ<EFBFBD><C8A3><EFBFBD><EFBFBD>Զ<EFBFBD><D4B6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾȫ<CABE><C8AB>Ұ
//-------------------------------------------------------------------------------------------------------------------
void lcd_displayimage032_zoom(uint8 *p, uint16 width, uint16 height, uint16 dis_width, uint16 dis_height)
{
uint32 i,j;
uint16 color = 0;
uint16 temp = 0;
lcd_set_region(0,0,dis_width-1,dis_height-1);//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD>
for(j=0;j<dis_height;j++)
{
for(i=0;i<dis_width;i++)
{
temp = *(p+(j*height/dis_height)*width+i*width/dis_width);//<2F><>ȡ<EFBFBD><C8A1><EFBFBD>ص<EFBFBD>
color=(0x001f&((temp)>>3))<<11;
color=color|(((0x003f)&((temp)>>2))<<5);
color=color|(0x001f&((temp)>>3));
lcd_writedata_16bit(color);
}
}
}
//-------------------------------------------------------------------------------------------------------------------
// @brief <20><>ͫ(<28><>ɫ<EFBFBD><C9AB><EFBFBD><EFBFBD>ͷ)Һ<><D2BA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD>
// @param *p ͼ<><CDBC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ַ
// @param width ͼ<><CDBC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// @param height ͼ<><CDBC><EFBFBD>߶<EFBFBD>
// @param dis_width ͼ<><CDBC><EFBFBD><EFBFBD>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD> 1 -<2D><>TFT_X_MAX<41><58>
// @param dis_height ͼ<><CDBC><EFBFBD><EFBFBD>ʾ<EFBFBD>߶<EFBFBD> 1 -<2D><>TFT_Y_MAX<41><58>
// @return void
// @since v1.0
// Sample usage: lcd_displayimage8660_zoom(scc8660_csi_image[0],SCC8660_CSI_PIC_W,SCC8660_CSI_PIC_H,160,128);
// @note ͼ<><CDBC><EFBFBD>Ŀ<EFBFBD><C4BF><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Һ<EFBFBD><D2BA><EFBFBD>Ŀ<EFBFBD><C4BF>ȣ<EFBFBD><C8A3><EFBFBD><EFBFBD>Զ<EFBFBD><D4B6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾȫ<CABE><C8AB>Ұ
//-------------------------------------------------------------------------------------------------------------------
void lcd_displayimage8660_zoom(uint16 *p, uint16 width, uint16 height, uint16 dis_width, uint16 dis_height)
{
uint32 i,j;
uint16 color = 0;
lcd_set_region(0,0,dis_width-1,dis_height-1);//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD>
for(j=0;j<dis_height;j++)
{
for(i=0;i<dis_width;i++)
{
color = *(p+(j*height/dis_height)*width+i*width/dis_width);//<2F><>ȡ<EFBFBD><C8A1><EFBFBD>ص<EFBFBD>
color = ((color&0xff)<<8) | (color>>8);
lcd_writedata_16bit(color);
}
}
}
//-------------------------------------------------------------------------------------------------------------------
// @brief С<><D0A1><EFBFBD><EFBFBD>(<28><>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͷ)Һ<><D2BA><EFBFBD><EFBFBD>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD>
// @param *p ͼ<><CDBC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ַ
// @param width ͼ<><CDBC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// @param height ͼ<><CDBC><EFBFBD>߶<EFBFBD>
// @return void
// @since v1.0
// @note ͼ<><CDBC><EFBFBD>ֱ<EFBFBD><D6B1><EFBFBD><EFBFBD><EFBFBD>Ҫ<EFBFBD><D2AA><EFBFBD><EFBFBD><EFBFBD><EFBFBD>120(<28><>)*160(<28><>)<29><><EFBFBD><EFBFBD>
//-------------------------------------------------------------------------------------------------------------------
void lcd_displayimage7725(uint8 *p, uint16 width, uint16 height)
{
int i,j;
uint16 temp = 0;
lcd_set_region(0,0,width-1,height-1);
for(i=0;i<height * (width/8);i++)
{
temp = *p;
p++;
for(j=0; j<8; j++)
{
if( (temp<<j)&0x80 ) lcd_writedata_16bit(RGB565_WHITE);
else lcd_writedata_16bit(RGB565_BLACK);
}
}
}
//-------------------------------------------------------------------------------------------------------------------
// @brief <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾ
// @param x <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> 0-<2D><>TFT_X_MAX-1<><31>
// @param y <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> 0-<2D><>TFT_Y_MAX-1<><31>
// @param size ȡģ<C8A1><C4A3>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD>õĺ<C3B5><C4BA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>С<EFBFBD><D0A1>Ҳ<EFBFBD><D2B2><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ռ<EFBFBD>õĵ<C3B5><C4B5>󳤿<EFBFBD>Ϊ<EFBFBD><CEAA><EFBFBD>ٸ<EFBFBD><D9B8>㣬ȡģ<C8A1><C4A3>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD>Ҫ<EFBFBD><D2AA><EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD>ġ<EFBFBD>
// @param *p <20><>Ҫ<EFBFBD><D2AA>ʾ<EFBFBD>ĺ<EFBFBD><C4BA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// @param number <20><>Ҫ<EFBFBD><D2AA>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD>λ
// @param color <20><>ʾ<EFBFBD><CABE>ɫ
// @return void
// @since v1.0
// Sample usage: lcd_display_chinese(0,0,16,chinese_test[0],4,RED);//<2F><>ʾfont<6E>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ʾ<><CABE>
// @Note ʹ<><CAB9>PCtoLCD2002<30><32><EFBFBD><EFBFBD>ȡģ <20><><EFBFBD><EFBFBD><EBA1A2><EFBFBD><EFBFBD>ʽ<EFBFBD><CABD>˳<EFBFBD><CBB3> 16*16
//-------------------------------------------------------------------------------------------------------------------
void lcd_display_chinese(uint16 x, uint16 y, uint8 size, const uint8 *p, uint8 number, uint16 color)
{
int i, j, k;
uint8 temp, temp1, temp2;
const uint8 *p_data;
temp2 = size/8;
lcd_set_region(x,y,number*size-1+x,y+size-1);
for(i=0;i<size;i++)
{
temp1 = number;
p_data = p+i*temp2;
while(temp1--)
{
for(k=0;k<temp2;k++)
{
for(j=8;j>0;j--)
{
temp = (*p_data>>(j-1)) & 0x01;
if(temp) lcd_writedata_16bit(color);
else lcd_writedata_16bit(TFT_BGCOLOR);
}
p_data++;
}
p_data = p_data - temp2 + temp2*size;
}
}
}

View File

@@ -1,128 +0,0 @@
/*********************************************************************************************************************
* COPYRIGHT NOTICE
* Copyright (c) 2020,<2C><><EFBFBD>ɿƼ<C9BF>
* All rights reserved.
* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>QQȺ<51><C8BA><EFBFBD><EFBFBD>Ⱥ<EFBFBD><C8BA>824575535
*
* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݰ<EFBFBD>Ȩ<EFBFBD><C8A8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɿƼ<C9BF><C6BC><EFBFBD><EFBFBD>У<EFBFBD>δ<EFBFBD><CEB4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ҵ<EFBFBD><D2B5>;<EFBFBD><CDBE>
* <20><>ӭ<EFBFBD><D3AD>λʹ<CEBB>ò<EFBFBD><C3B2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>޸<EFBFBD><DEB8><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EBB1A3><EFBFBD><EFBFBD><EFBFBD>ɿƼ<C9BF><C6BC>İ<EFBFBD>Ȩ<EFBFBD><C8A8><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
*
* @file 1.8<EFBFBD><EFBFBD>TFT
* @company <09>ɶ<EFBFBD><C9B6><EFBFBD><EFBFBD>ɿƼ<C9BF><C6BC><EFBFBD><EFBFBD>޹<EFBFBD>˾
* @author <09><><EFBFBD>ɿƼ<C9BF>(QQ3184284598)
* @version <09>鿴doc<6F><63>version<6F>ļ<EFBFBD> <20>汾˵<E6B1BE><CBB5>
* @Software ADS v1.2.2
* @Target core TC264D
* @Taobao https://seekfree.taobao.com/
* @date 2020-3-23
* @note
<09><><EFBFBD>߶<EFBFBD><DFB6>
------------------------------------
ģ<><C4A3><EFBFBD>ܽ<EFBFBD> <09><>Ƭ<EFBFBD><C6AC><EFBFBD>ܽ<EFBFBD>
SCL <20>鿴TFT_SCL<43><EFBFBD><EAB6A8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> Ӳ<><D3B2>SPI<50><49><EFBFBD>Ų<EFBFBD><C5B2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>л<EFBFBD>
SDA <20>鿴TFT_SDA<44><EFBFBD><EAB6A8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> Ӳ<><D3B2>SPI<50><49><EFBFBD>Ų<EFBFBD><C5B2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>л<EFBFBD>
RES <20>鿴REST_PIN<49><EFBFBD><EAB6A8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
DC <20>鿴DC_PIN<49><EFBFBD><EAB6A8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
CS <20>鿴TFT_CS<43><EFBFBD><EAB6A8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> Ӳ<><D3B2>SPI<50><49><EFBFBD>Ų<EFBFBD><C5B2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>л<EFBFBD>
<09><>Դ<EFBFBD><D4B4><EFBFBD><EFBFBD>
BL 3.3V<EFBFBD><EFBFBD>Դ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ţ<EFBFBD>Ҳ<EFBFBD><EFBFBD><EFBFBD>Խ<EFBFBD>PWM<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȣ<EFBFBD>
VCC 3.3V<EFBFBD><EFBFBD>Դ
GND <20><>Դ<EFBFBD><D4B4>
<09><><EFBFBD><EFBFBD><EFBFBD>ֱ<EFBFBD><D6B1><EFBFBD>128*160
------------------------------------
********************************************************************************************************************/
#ifndef _SEEKFREE_18TFT_h
#define _SEEKFREE_18TFT_h
#include "common.h"
#include "SEEKFREE_FONT.h"
//-----------------<2D><><EFBFBD>Ŷ<EFBFBD><C5B6><EFBFBD>------------------------------
#define TFT_SPIN SPI_2 //<2F><><EFBFBD><EFBFBD>ʹ<EFBFBD>õ<EFBFBD>SPI<50><49>
#define TFT_SCL SPI2_SCLK_P15_3 //<2F><><EFBFBD><EFBFBD>SPI_SCK<43><4B><EFBFBD><EFBFBD>
#define TFT_SDA SPI2_MOSI_P15_5 //<2F><><EFBFBD><EFBFBD>SPI_MOSI<53><49><EFBFBD><EFBFBD>
#define TFT_SDA_IN SPI2_MISO_P15_4 //<2F><><EFBFBD><EFBFBD>SPI_MISO<53><4F><EFBFBD><EFBFBD> IPSû<53><C3BB>MISO<53><4F><EFBFBD>ţ<EFBFBD><C5A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ȼ<EFBFBD><C8BB>Ҫ<EFBFBD><D2AA><EFBFBD><EFBFBD><E5A3AC>spi<70>ij<EFBFBD>ʼ<EFBFBD><CABC>ʱ<EFBFBD><CAB1>Ҫʹ<D2AA><CAB9>
#define TFT_CS SPI2_CS0_P15_2 //<2F><><EFBFBD><EFBFBD>SPI_CS<43><53><EFBFBD><EFBFBD>
#define BL_PIN P15_4 //Һ<><D2BA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ŷ<EFBFBD><C5B6><EFBFBD> <20><><EFBFBD><EFBFBD>ʵ<EFBFBD><CAB5>ͨѶδʹ<CEB4><CAB9>P15_4<5F><34><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFB8B4>ΪGPIO
#define REST_PIN P15_1 //Һ<><D2BA><EFBFBD><EFBFBD>λ<EFBFBD><CEBB><EFBFBD>Ŷ<EFBFBD><C5B6><EFBFBD>
#define DC_PIN P15_0 //Һ<><D2BA><EFBFBD><EFBFBD><EFBFBD><EFBFBD>λ<EFBFBD><CEBB><EFBFBD>Ŷ<EFBFBD><C5B6><EFBFBD>
#define DC(x) gpio_set(DC_PIN,x)
#define REST(x) gpio_set(REST_PIN,x)
//-------<2D><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɫ<EFBFBD><C9AB>SEEKFREE_FONT.h<>ļ<EFBFBD><C4BC>ж<EFBFBD><D0B6><EFBFBD>----------
//#define RED 0xF800 //<2F><>ɫ
//#define BLUE 0x001F //<2F><>ɫ
//#define YELLOW 0xFFE0 //<2F><>ɫ
//#define GREEN 0x07E0 //<2F><>ɫ
//#define WHITE 0xFFFF //<2F><>ɫ
//#define BLACK 0x0000 //<2F><>ɫ
//#define GRAY 0X8430 //<2F><>ɫ
//#define BROWN 0XBC40 //<2F><>ɫ
//#define PURPLE 0XF81F //<2F><>ɫ
//#define PINK 0XFE19 //<2F><>ɫ
//<2F><><EFBFBD><EFBFBD>д<EFBFBD>ֱʵ<D6B1><CAB5><EFBFBD>ɫ
#define TFT_PENCOLOR RGB565_RED
//<2F><><EFBFBD><EFBFBD><E5B1B3><EFBFBD><EFBFBD>ɫ
#define TFT_BGCOLOR RGB565_WHITE
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD>
//0 <20><><EFBFBD><EFBFBD>ģʽ
//1 <20><><EFBFBD><EFBFBD>ģʽ <20><>ת180
//2 <20><><EFBFBD><EFBFBD>ģʽ
//3 <20><><EFBFBD><EFBFBD>ģʽ <20><>ת180
#define TFT_DISPLAY_DIR 3
#if (0==TFT_DISPLAY_DIR || 1==TFT_DISPLAY_DIR)
#define TFT_X_MAX 128 //Һ<><D2BA>X<EFBFBD><58><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
#define TFT_Y_MAX 160 //Һ<><D2BA>Y<EFBFBD><59><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
#elif (2==TFT_DISPLAY_DIR || 3==TFT_DISPLAY_DIR)
#define TFT_X_MAX 160 //Һ<><D2BA>X<EFBFBD><58><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
#define TFT_Y_MAX 128 //Һ<><D2BA>Y<EFBFBD><59><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
#else
#error "TFT_DISPLAY_DIR <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>"
#endif
void lcd_init(void);
void lcd_clear(uint16 color);
void lcd_drawpoint(uint16 x,uint16 y,uint16 color);
void lcd_showchar(uint16 x,uint16 y,const int8 dat);
void lcd_showstr(uint16 x,uint16 y,const int8 dat[]);
void lcd_showint8(uint16 x,uint16 y,int8 dat);
void lcd_showuint8(uint16 x,uint16 y,uint8 dat);
void lcd_showint16(uint16 x,uint16 y,int16 dat);
void lcd_showuint16(uint16 x,uint16 y,uint16 dat);
void lcd_showint32(uint16 x,uint16 y,int32 dat,uint8 num);
void lcd_showfloat(uint16 x,uint16 y,double dat,uint8 num,uint8 pointnum);
void showimage(const unsigned char *p);
void lcd_displayimage032(uint8 *p, uint16 width, uint16 height);
void lcd_displayimage032_zoom(uint8 *p, uint16 width, uint16 height, uint16 dis_width, uint16 dis_height);
void lcd_displayimage8660_zoom(uint16 *p, uint16 width, uint16 height, uint16 dis_width, uint16 dis_height);
void lcd_displayimage7725(uint8 *p, uint16 width, uint16 height);
void lcd_display_chinese(uint16 x, uint16 y, uint8 size, const uint8 *p, uint8 number, uint16 color);
#endif

View File

@@ -1,235 +0,0 @@
/*********************************************************************************************************************
* COPYRIGHT NOTICE
* Copyright (c) 2020,<2C><><EFBFBD>ɿƼ<C9BF>
* All rights reserved.
* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>QQȺ<51><C8BA><EFBFBD><EFBFBD>Ⱥ<EFBFBD><C8BA>824575535
*
* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݰ<EFBFBD>Ȩ<EFBFBD><C8A8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɿƼ<C9BF><C6BC><EFBFBD><EFBFBD>У<EFBFBD>δ<EFBFBD><CEB4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ҵ<EFBFBD><D2B5>;<EFBFBD><CDBE>
* <20><>ӭ<EFBFBD><D3AD>λʹ<CEBB>ò<EFBFBD><C3B2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>޸<EFBFBD><DEB8><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EBB1A3><EFBFBD><EFBFBD><EFBFBD>ɿƼ<C9BF><C6BC>İ<EFBFBD>Ȩ<EFBFBD><C8A8><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
*
* @file main
* @company <09>ɶ<EFBFBD><C9B6><EFBFBD><EFBFBD>ɿƼ<C9BF><C6BC><EFBFBD><EFBFBD>޹<EFBFBD>˾
* @author <09><><EFBFBD>ɿƼ<C9BF>(QQ3184284598)
* @version <09>鿴doc<6F><63>version<6F>ļ<EFBFBD> <20>汾˵<E6B1BE><CBB5>
* @Software ADS v1.2.2
* @Target core TC264D
* @Taobao https://seekfree.taobao.com/
* @date 2020-3-23
* @note
<09><><EFBFBD>߶<EFBFBD><DFB6>
------------------------------------
ģ<><C4A3><EFBFBD>ܽ<EFBFBD> <09><>Ƭ<EFBFBD><C6AC><EFBFBD>ܽ<EFBFBD>
SDA <09>鿴SEEKFREE_IIC<49>ļ<EFBFBD><C4BC>ڵ<EFBFBD>SEEKFREE_SDA<44><EFBFBD><EAB6A8>
SCL <20>鿴SEEKFREE_IIC<49>ļ<EFBFBD><C4BC>ڵ<EFBFBD>SEEKFREE_SCL<43><EFBFBD><EAB6A8>
<09><><EFBFBD>ж<EFBFBD>(VSY) <09>鿴SEEKFREE_OV7725.h<>ļ<EFBFBD><C4BC>е<EFBFBD>OV7725_VSYNC_PIN<49><EFBFBD><EAB6A8>
<09><><EFBFBD>ж<EFBFBD>(HREF) δʹ<CEB4>ã<EFBFBD><C3A3><EFBFBD><EFBFBD>˲<EFBFBD><CBB2><EFBFBD>
<09><><EFBFBD><EFBFBD><EFBFBD>ж<EFBFBD>(PCLK) <09>鿴SEEKFREE_OV7725.h<>ļ<EFBFBD><C4BC>е<EFBFBD>OV7725_PCLK_PIN<49><EFBFBD><EAB6A8>
<09><><EFBFBD>ݿ<EFBFBD>(D0-D7) <09>鿴SEEKFREE_OV7725.h<>ļ<EFBFBD><C4BC>е<EFBFBD>OV7725_DATA_PIN<49><EFBFBD><EAB6A8>
------------------------------------
Ĭ<>Ϸֱ<CFB7><D6B1><EFBFBD><EFBFBD><EFBFBD> 160*120
Ĭ<><C4AC>FPS 50֡
********************************************************************************************************************/
#include "IfxDma.h"
#include "IfxScuEru.h"
#include "zf_stm_systick.h"
#include "zf_gpio.h"
#include "zf_eru.h"
#include "zf_eru_dma.h"
#include "SEEKFREE_IIC.h"
#include "SEEKFREE_7725.h"
IFX_ALIGN(4) uint8 image_bin[OV7725_H][OV7725_W/8]; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E6B4A2><EFBFBD><EFBFBD>ͼ<EFBFBD><CDBC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
uint8 image_dec[OV7725_H][OV7725_W];
uint8 ov7725_idcode = 0;
//-------------------------------------------------------------------------------------------------------------------
// @brief С<><D0A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͷ<EFBFBD>ڲ<EFBFBD><DAB2>Ĵ<EFBFBD><C4B4><EFBFBD><EFBFBD><EFBFBD>ʼ<EFBFBD><CABC>(<28>ڲ<EFBFBD>ʹ<EFBFBD>ã<EFBFBD><C3A3>û<EFBFBD><C3BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>)
// @param NULL
// @return uint8 <09><><EFBFBD><EFBFBD>0<EFBFBD><30><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>1<EFBFBD><31><EFBFBD>ɹ<EFBFBD>
// @since v1.0
// Sample usage:
//-------------------------------------------------------------------------------------------------------------------
uint8 ov7725_reg_init(void)
{
simiic_delay_set(700);
simiic_write_reg ( OV7725_DEV_ADD, OV7725_COM7, 0x80 ); //<2F><>λ<EFBFBD><CEBB><EFBFBD><EFBFBD>ͷ
systick_delay_ms(STM0, 50);
ov7725_idcode = simiic_read_reg( OV7725_DEV_ADD, OV7725_VER ,SCCB);
if( ov7725_idcode != OV7725_ID ) return 0; //У<><D0A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͷID<49><44>
//ID<49><44>ȷ<EFBFBD><C8B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD> Ȼ<><C8BB><EFBFBD><EFBFBD><EFBFBD>üĴ<C3BC><C4B4><EFBFBD>
simiic_write_reg(OV7725_DEV_ADD, OV7725_COM4 , 0xC1);
simiic_write_reg(OV7725_DEV_ADD, OV7725_CLKRC , 0x01);
simiic_write_reg(OV7725_DEV_ADD, OV7725_COM2 , 0x03);
simiic_write_reg(OV7725_DEV_ADD, OV7725_COM3 , 0xD0);
simiic_write_reg(OV7725_DEV_ADD, OV7725_COM7 , 0x40);
simiic_write_reg(OV7725_DEV_ADD, OV7725_COM8 , 0xCE); //0xCE:<3A>ر<EFBFBD><D8B1>Զ<EFBFBD><D4B6>ع<EFBFBD> 0xCF<43><46><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Զ<EFBFBD><D4B6>ع<EFBFBD>
simiic_write_reg(OV7725_DEV_ADD, OV7725_HSTART , 0x3F);
simiic_write_reg(OV7725_DEV_ADD, OV7725_HSIZE , 0x50);
simiic_write_reg(OV7725_DEV_ADD, OV7725_VSTRT , 0x03);
simiic_write_reg(OV7725_DEV_ADD, OV7725_VSIZE , 0x78);
simiic_write_reg(OV7725_DEV_ADD, OV7725_HREF , 0x00);
simiic_write_reg(OV7725_DEV_ADD, OV7725_SCAL0 , 0x0A);
simiic_write_reg(OV7725_DEV_ADD, OV7725_AWB_Ctrl0 , 0xE0);
simiic_write_reg(OV7725_DEV_ADD, OV7725_DSPAuto , 0xff);
simiic_write_reg(OV7725_DEV_ADD, OV7725_DSP_Ctrl2 , 0x0C);
simiic_write_reg(OV7725_DEV_ADD, OV7725_DSP_Ctrl3 , 0x00);
simiic_write_reg(OV7725_DEV_ADD, OV7725_DSP_Ctrl4 , 0x00);
if(OV7725_W == 80) simiic_write_reg(OV7725_DEV_ADD, OV7725_HOutSize , 0x14);
else if(OV7725_W == 160) simiic_write_reg(OV7725_DEV_ADD, OV7725_HOutSize , 0x28);
else if(OV7725_W == 240) simiic_write_reg(OV7725_DEV_ADD, OV7725_HOutSize , 0x3c);
else if(OV7725_W == 320) simiic_write_reg(OV7725_DEV_ADD, OV7725_HOutSize , 0x50);
if(OV7725_H == 60) simiic_write_reg(OV7725_DEV_ADD, OV7725_VOutSize , 0x1E);
else if(OV7725_H == 120) simiic_write_reg(OV7725_DEV_ADD, OV7725_VOutSize , 0x3c);
else if(OV7725_H == 180) simiic_write_reg(OV7725_DEV_ADD, OV7725_VOutSize , 0x5a);
else if(OV7725_H == 240) simiic_write_reg(OV7725_DEV_ADD, OV7725_VOutSize , 0x78);
simiic_write_reg(OV7725_DEV_ADD, OV7725_REG28 , 0x01);
simiic_write_reg(OV7725_DEV_ADD, OV7725_EXHCH , 0x10);
simiic_write_reg(OV7725_DEV_ADD, OV7725_EXHCL , 0x1F);
simiic_write_reg(OV7725_DEV_ADD, OV7725_GAM1 , 0x0c);
simiic_write_reg(OV7725_DEV_ADD, OV7725_GAM2 , 0x16);
simiic_write_reg(OV7725_DEV_ADD, OV7725_GAM3 , 0x2a);
simiic_write_reg(OV7725_DEV_ADD, OV7725_GAM4 , 0x4e);
simiic_write_reg(OV7725_DEV_ADD, OV7725_GAM5 , 0x61);
simiic_write_reg(OV7725_DEV_ADD, OV7725_GAM6 , 0x6f);
simiic_write_reg(OV7725_DEV_ADD, OV7725_GAM7 , 0x7b);
simiic_write_reg(OV7725_DEV_ADD, OV7725_GAM8 , 0x86);
simiic_write_reg(OV7725_DEV_ADD, OV7725_GAM9 , 0x8e);
simiic_write_reg(OV7725_DEV_ADD, OV7725_GAM10 , 0x97);
simiic_write_reg(OV7725_DEV_ADD, OV7725_GAM11 , 0xa4);
simiic_write_reg(OV7725_DEV_ADD, OV7725_GAM12 , 0xaf);
simiic_write_reg(OV7725_DEV_ADD, OV7725_GAM13 , 0xc5);
simiic_write_reg(OV7725_DEV_ADD, OV7725_GAM14 , 0xd7);
simiic_write_reg(OV7725_DEV_ADD, OV7725_GAM15 , 0xe8);
simiic_write_reg(OV7725_DEV_ADD, OV7725_SLOP , 0x20);
simiic_write_reg(OV7725_DEV_ADD, OV7725_LC_RADI , 0x00);
simiic_write_reg(OV7725_DEV_ADD, OV7725_LC_COEF , 0x13);
simiic_write_reg(OV7725_DEV_ADD, OV7725_LC_XC , 0x08);
simiic_write_reg(OV7725_DEV_ADD, OV7725_LC_COEFB , 0x14);
simiic_write_reg(OV7725_DEV_ADD, OV7725_LC_COEFR , 0x17);
simiic_write_reg(OV7725_DEV_ADD, OV7725_LC_CTR , 0x05);
simiic_write_reg(OV7725_DEV_ADD, OV7725_BDBase , 0x99);
simiic_write_reg(OV7725_DEV_ADD, OV7725_BDMStep , 0x03);
simiic_write_reg(OV7725_DEV_ADD, OV7725_SDE , 0x04);
simiic_write_reg(OV7725_DEV_ADD, OV7725_BRIGHT , 0x00);
simiic_write_reg(OV7725_DEV_ADD, OV7725_CNST , 0x40);
simiic_write_reg(OV7725_DEV_ADD, OV7725_SIGN , 0x06);
simiic_write_reg(OV7725_DEV_ADD, OV7725_UVADJ0 , 0x11);
simiic_write_reg(OV7725_DEV_ADD, OV7725_UVADJ1 , 0x02);
simiic_delay_set(SIMIIC_DELAY_TIME);//<2F>޸<EFBFBD>ΪĬ<CEAA>ϵ<EFBFBD>20
return 1;
}
//-------------------------------------------------------------------------------------------------------------------
// @brief С<><D0A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͷ<EFBFBD>ɼ<EFBFBD><C9BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʼ<EFBFBD><CABC>(<28>ڲ<EFBFBD>ʹ<EFBFBD>ã<EFBFBD><C3A3>û<EFBFBD><C3BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>)
// @param NULL
// @return void
// @since v1.0
// Sample usage:
//-------------------------------------------------------------------------------------------------------------------
void ov7725_port_init(void)
{
uint8 i;
camera_type = CAMERA_BIN;//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͷ<EFBFBD><CDB7><EFBFBD><EFBFBD>
camera_buffer_addr = image_bin[0];
//<2F><><EFBFBD><EFBFBD>ͷ<EFBFBD>ɼ<EFBFBD><C9BC><EFBFBD>ʼ<EFBFBD><CABC>
//<2F><>ʼ<EFBFBD><CABC> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
for(i=0; i<8; i++)
{
gpio_init((PIN_enum)(OV7725_DATA_PIN+i), GPI, 0, PULLUP);
}
eru_dma_init(OV7725_DMA_CH, GET_PORT_IN_ADDR(OV7725_DATA_PIN), camera_buffer_addr, OV7725_PCLK_PIN, FALLING, OV7725_DMA_NUM);
eru_init(OV7725_VSYNC_PIN, FALLING); //<2F><>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD><EFBFBD>жϣ<D0B6><CFA3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ<EFBFBD>½<EFBFBD><C2BD>ش<EFBFBD><D8B4><EFBFBD><EFBFBD>ж<EFBFBD>
}
//-------------------------------------------------------------------------------------------------------------------
// @brief С<><D0A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͷ<EFBFBD><CDB7>ʼ<EFBFBD><CABC>(<28><><EFBFBD><EFBFBD>֮<EFBFBD><D6AE><EFBFBD><EFBFBD><EFBFBD>ú<EFBFBD><C3BA><EFBFBD><EFBFBD><EFBFBD><EFBFBD>жϺ<D0B6><CFBA><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɲɼ<C9B2>ͼ<EFBFBD><CDBC>)
// @param NULL
// @return 0
// @since v1.0
// Sample usage:
//-------------------------------------------------------------------------------------------------------------------
uint8 ov7725_init(void)
{
simiic_init();
ov7725_reg_init(); //<2F><><EFBFBD><EFBFBD>ͷ<EFBFBD>Ĵ<EFBFBD><C4B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
ov7725_port_init(); //<2F><><EFBFBD><EFBFBD>ͷ<EFBFBD>ж<EFBFBD><D0B6><EFBFBD><EFBFBD>ż<EFBFBD>DMA<4D><41><EFBFBD><EFBFBD>
return 0;
}
uint8 ov7725_finish_flag = 0;
uint8 ov7725_dma_init_flag; //<2F><><EFBFBD>³<EFBFBD>ʼ<EFBFBD><CABC>DMA<4D>ı<EFBFBD>־λ
//-------------------------------------------------------------------------------------------------------------------
// @brief С<><D0A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͷ<EFBFBD><CDB7><EFBFBD>ж<EFBFBD>
// @param NULL
// @return void
// @since v1.0
// Sample usage: <09>˺<EFBFBD><CBBA><EFBFBD><EFBFBD><EFBFBD>isr.c<>б<EFBFBD>eru<72><75>GPIO<49>жϣ<D0B6><CFA3>жϵ<D0B6><CFB5><EFBFBD>
//-------------------------------------------------------------------------------------------------------------------
void ov7725_vsync(void)
{
CLEAR_GPIO_FLAG(OV7725_VSYNC_PIN);
if(ov7725_dma_init_flag)
{
ov7725_dma_init_flag = 0;
IfxDma_resetChannel(&MODULE_DMA, OV7725_DMA_CH);
eru_dma_init(OV7725_DMA_CH, GET_PORT_IN_ADDR(OV7725_DATA_PIN), camera_buffer_addr, OV7725_PCLK_PIN, FALLING, OV7725_DMA_NUM);
dma_start(OV7725_DMA_CH);
}
else
{
DMA_SET_DESTINATION(OV7725_DMA_CH, camera_buffer_addr);
dma_start(OV7725_DMA_CH);
}
}
//-------------------------------------------------------------------------------------------------------------------
// @brief С<><D0A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͷDMA<4D><41><EFBFBD><EFBFBD><EFBFBD>ж<EFBFBD>
// @param NULL
// @return void
// @since v1.0
// Sample usage: <09>˺<EFBFBD><CBBA><EFBFBD><EFBFBD><EFBFBD>isr.c<>б<EFBFBD>dma<6D>жϵ<D0B6><CFB5><EFBFBD>
//-------------------------------------------------------------------------------------------------------------------
void ov7725_dma(void)
{
CLEAR_DMA_FLAG(OV7725_DMA_CH);
if(IfxDma_getChannelTransactionRequestLost(&MODULE_DMA, OV7725_DMA_CH))
{//ͼ<><CDBC><EFBFBD>д<EFBFBD>λ
ov7725_finish_flag = 0;
dma_stop(OV7725_DMA_CH);
IfxDma_clearChannelTransactionRequestLost(&MODULE_DMA, OV7725_DMA_CH);
ov7725_dma_init_flag = 1;
}
else
{
ov7725_finish_flag = 1;
dma_stop(OV7725_DMA_CH);
}
}

View File

@@ -1,240 +0,0 @@
/*********************************************************************************************************************
* COPYRIGHT NOTICE
* Copyright (c) 2020,<2C><><EFBFBD>ɿƼ<C9BF>
* All rights reserved.
* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>QQȺ<51><C8BA><EFBFBD><EFBFBD>Ⱥ<EFBFBD><C8BA>824575535
*
* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݰ<EFBFBD>Ȩ<EFBFBD><C8A8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɿƼ<C9BF><C6BC><EFBFBD><EFBFBD>У<EFBFBD>δ<EFBFBD><CEB4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ҵ<EFBFBD><D2B5>;<EFBFBD><CDBE>
* <20><>ӭ<EFBFBD><D3AD>λʹ<CEBB>ò<EFBFBD><C3B2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>޸<EFBFBD><DEB8><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EBB1A3><EFBFBD><EFBFBD><EFBFBD>ɿƼ<C9BF><C6BC>İ<EFBFBD>Ȩ<EFBFBD><C8A8><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
*
* @file main
* @company <09>ɶ<EFBFBD><C9B6><EFBFBD><EFBFBD>ɿƼ<C9BF><C6BC><EFBFBD><EFBFBD>޹<EFBFBD>˾
* @author <09><><EFBFBD>ɿƼ<C9BF>(QQ3184284598)
* @version <09>鿴doc<6F><63>version<6F>ļ<EFBFBD> <20>汾˵<E6B1BE><CBB5>
* @Software ADS v1.2.2
* @Target core TC264D
* @Taobao https://seekfree.taobao.com/
* @date 2020-3-23
* @note
<09><><EFBFBD>߶<EFBFBD><DFB6>
------------------------------------
ģ<><C4A3><EFBFBD>ܽ<EFBFBD> <09><>Ƭ<EFBFBD><C6AC><EFBFBD>ܽ<EFBFBD>
SDA <20>鿴SEEKFREE_IIC<49>ļ<EFBFBD><C4BC>ڵ<EFBFBD>SEEKFREE_SDA<44><EFBFBD><EAB6A8>
SCL <20>鿴SEEKFREE_IIC<49>ļ<EFBFBD><C4BC>ڵ<EFBFBD>SEEKFREE_SCL<43><EFBFBD><EAB6A8>
<09><><EFBFBD>ж<EFBFBD>(VSY) <20>鿴SEEKFREE_OV7725.h<>ļ<EFBFBD><C4BC>е<EFBFBD>OV7725_VSYNC_PIN<49><EFBFBD><EAB6A8>
<09><><EFBFBD>ж<EFBFBD>(HREF) δʹ<CEB4>ã<EFBFBD><C3A3><EFBFBD><EFBFBD>˲<EFBFBD><CBB2><EFBFBD>
<09><><EFBFBD><EFBFBD><EFBFBD>ж<EFBFBD>(PCLK) <20>鿴SEEKFREE_OV7725.h<>ļ<EFBFBD><C4BC>е<EFBFBD>OV7725_PCLK_PIN<49><EFBFBD><EAB6A8>
<09><><EFBFBD>ݿ<EFBFBD>(D0-D7) <20>鿴SEEKFREE_OV7725.h<>ļ<EFBFBD><C4BC>е<EFBFBD>OV7725_DATA_PIN<49><EFBFBD><EAB6A8>
------------------------------------
Ĭ<>Ϸֱ<CFB7><D6B1><EFBFBD><EFBFBD><EFBFBD> 160*120
Ĭ<><C4AC>FPS 50֡
********************************************************************************************************************/
#ifndef _SEEKFREE_7725_h
#define _SEEKFREE_7725_h
#include "common.h"
#include "IfxDma_cfg.h"
#include "zf_uart.h"
//<2F><><EFBFBD><EFBFBD>ͷID<49><44>
#define OV7725_ID 0x21
//<2F><><EFBFBD><EFBFBD>ͷ<EFBFBD>Ĵ<EFBFBD><C4B4><EFBFBD>
#define OV7725_GAIN 0x00
#define OV7725_BLUE 0x01
#define OV7725_RED 0x02
#define OV7725_GREEN 0x03
#define OV7725_BAVG 0x05
#define OV7725_GAVG 0x06
#define OV7725_RAVG 0x07
#define OV7725_AECH 0x08
#define OV7725_COM2 0x09
#define OV7725_PID 0x0A
#define OV7725_VER 0x0B
#define OV7725_COM3 0x0C
#define OV7725_COM4 0x0D
#define OV7725_COM5 0x0E
#define OV7725_COM6 0x0F
#define OV7725_AEC 0x10
#define OV7725_CLKRC 0x11
#define OV7725_COM7 0x12
#define OV7725_COM8 0x13
#define OV7725_COM9 0x14
#define OV7725_COM10 0x15
#define OV7725_REG16 0x16
#define OV7725_HSTART 0x17
#define OV7725_HSIZE 0x18
#define OV7725_VSTRT 0x19
#define OV7725_VSIZE 0x1A
#define OV7725_PSHFT 0x1B
#define OV7725_MIDH 0x1C
#define OV7725_MIDL 0x1D
#define OV7725_LAEC 0x1F
#define OV7725_COM11 0x20
#define OV7725_BDBase 0x22
#define OV7725_BDMStep 0x23
#define OV7725_AEW 0x24
#define OV7725_AEB 0x25
#define OV7725_VPT 0x26
#define OV7725_REG28 0x28
#define OV7725_HOutSize 0x29
#define OV7725_EXHCH 0x2A
#define OV7725_EXHCL 0x2B
#define OV7725_VOutSize 0x2C
#define OV7725_ADVFL 0x2D
#define OV7725_ADVFH 0x2E
#define OV7725_YAVE 0x2F
#define OV7725_LumHTh 0x30
#define OV7725_LumLTh 0x31
#define OV7725_HREF 0x32
#define OV7725_DM_LNL 0x33
#define OV7725_DM_LNH 0x34
#define OV7725_ADoff_B 0x35
#define OV7725_ADoff_R 0x36
#define OV7725_ADoff_Gb 0x37
#define OV7725_ADoff_Gr 0x38
#define OV7725_Off_B 0x39
#define OV7725_Off_R 0x3A
#define OV7725_Off_Gb 0x3B
#define OV7725_Off_Gr 0x3C
#define OV7725_COM12 0x3D
#define OV7725_COM13 0x3E
#define OV7725_COM14 0x3F
#define OV7725_COM16 0x41
#define OV7725_TGT_B 0x42
#define OV7725_TGT_R 0x43
#define OV7725_TGT_Gb 0x44
#define OV7725_TGT_Gr 0x45
#define OV7725_LC_CTR 0x46
#define OV7725_LC_XC 0x47
#define OV7725_LC_YC 0x48
#define OV7725_LC_COEF 0x49
#define OV7725_LC_RADI 0x4A
#define OV7725_LC_COEFB 0x4B
#define OV7725_LC_COEFR 0x4C
#define OV7725_FixGain 0x4D
#define OV7725_AREF1 0x4F
#define OV7725_AREF6 0x54
#define OV7725_UFix 0x60
#define OV7725_VFix 0x61
#define OV7725_AWBb_blk 0x62
#define OV7725_AWB_Ctrl0 0x63
#define OV7725_DSP_Ctrl1 0x64
#define OV7725_DSP_Ctrl2 0x65
#define OV7725_DSP_Ctrl3 0x66
#define OV7725_DSP_Ctrl4 0x67
#define OV7725_AWB_bias 0x68
#define OV7725_AWBCtrl1 0x69
#define OV7725_AWBCtrl2 0x6A
#define OV7725_AWBCtrl3 0x6B
#define OV7725_AWBCtrl4 0x6C
#define OV7725_AWBCtrl5 0x6D
#define OV7725_AWBCtrl6 0x6E
#define OV7725_AWBCtrl7 0x6F
#define OV7725_AWBCtrl8 0x70
#define OV7725_AWBCtrl9 0x71
#define OV7725_AWBCtrl10 0x72
#define OV7725_AWBCtrl11 0x73
#define OV7725_AWBCtrl12 0x74
#define OV7725_AWBCtrl13 0x75
#define OV7725_AWBCtrl14 0x76
#define OV7725_AWBCtrl15 0x77
#define OV7725_AWBCtrl16 0x78
#define OV7725_AWBCtrl17 0x79
#define OV7725_AWBCtrl18 0x7A
#define OV7725_AWBCtrl19 0x7B
#define OV7725_AWBCtrl20 0x7C
#define OV7725_AWBCtrl21 0x7D
#define OV7725_GAM1 0x7E
#define OV7725_GAM2 0x7F
#define OV7725_GAM3 0x80
#define OV7725_GAM4 0x81
#define OV7725_GAM5 0x82
#define OV7725_GAM6 0x83
#define OV7725_GAM7 0x84
#define OV7725_GAM8 0x85
#define OV7725_GAM9 0x86
#define OV7725_GAM10 0x87
#define OV7725_GAM11 0x88
#define OV7725_GAM12 0x89
#define OV7725_GAM13 0x8A
#define OV7725_GAM14 0x8B
#define OV7725_GAM15 0x8C
#define OV7725_SLOP 0x8D
#define OV7725_DNSTh 0x8E
#define OV7725_EDGE0 0x8F
#define OV7725_EDGE1 0x90
#define OV7725_DNSOff 0x91
#define OV7725_EDGE2 0x92
#define OV7725_EDGE3 0x93
#define OV7725_MTX1 0x94
#define OV7725_MTX2 0x95
#define OV7725_MTX3 0x96
#define OV7725_MTX4 0x97
#define OV7725_MTX5 0x98
#define OV7725_MTX6 0x99
#define OV7725_MTX_Ctrl 0x9A
#define OV7725_BRIGHT 0x9B
#define OV7725_CNST 0x9C
#define OV7725_UVADJ0 0x9E
#define OV7725_UVADJ1 0x9F
#define OV7725_SCAL0 0xA0
#define OV7725_SCAL1 0xA1
#define OV7725_SCAL2 0xA2
#define OV7725_SDE 0xA6
#define OV7725_USAT 0xA7
#define OV7725_VSAT 0xA8
#define OV7725_HUECOS 0xA9
#define OV7725_HUESIN 0xAA
#define OV7725_SIGN 0xAB
#define OV7725_DSPAuto 0xAC
#define OV7725_DEV_ADD 0x42>>1
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͷ<EFBFBD><CDB7><EFBFBD><EFBFBD>
#define OV7725_W 160 //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͷͼ<CDB7><CDBC><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <09><><EFBFBD><EFBFBD><EFBFBD>ò<EFBFBD><C3B2><EFBFBD> 80 160 240 320
#define OV7725_H 120 //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͷͼ<CDB7><CDBC><EFBFBD>߶<EFBFBD> <09><><EFBFBD><EFBFBD><EFBFBD>ò<EFBFBD><C3B2><EFBFBD> 60 120 180 240
#define OV7725_SIZE (OV7725_W * OV7725_H/8 ) //ͼ<><CDBC>ռ<EFBFBD>ÿռ<C3BF><D5BC><EFBFBD>С
#define OV7725_DMA_NUM (OV7725_SIZE) //һ<><D2BB>ͼ<EFBFBD><CDBC>DMA<4D>ɼ<EFBFBD><C9BC><EFBFBD><EFBFBD><EFBFBD>
//--------------------------------------------------------------------------------------------------
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
//--------------------------------------------------------------------------------------------------
#define OV7725_VSYNC_PIN ERU_CH3_REQ6_P02_0 //<2F><><EFBFBD>ж<EFBFBD><D0B6><EFBFBD><EFBFBD><EFBFBD> <09><>ѡ<EFBFBD><D1A1>Χ<EFBFBD>ο<EFBFBD>ERU_PIN_enumö<6D><C3B6> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ѡ<EFBFBD><D1A1>Ϊͬһ<CDAC><D2BB>ͨ<EFBFBD><CDA8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ǹ<EFBFBD><C7B9><EFBFBD><EFBFBD>жϵ<D0B6>ͨ<EFBFBD><CDA8>
//<2F><><EFBFBD><EFBFBD>ж<EFBFBD>ѡ<EFBFBD><D1A1>ERU_CH3 <20><>ô<EFBFBD><C3B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>žͲ<C5BE><CDB2><EFBFBD>ѡ<EFBFBD><D1A1>ERU_CH7<48><37><EFBFBD><EFBFBD>Ϊ3<CEAA><33>7<EFBFBD><37><EFBFBD>ж<EFBFBD><D0B6>ǹ<EFBFBD><C7B9>õġ<C3B5>
#define OV7725_DATA_PIN P00_0 //<2F><><EFBFBD><EFBFBD>D0<44><30><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>D0<44><30><EFBFBD><EFBFBD>ΪP00_0 <20><>ôD1<44><31>ʹ<EFBFBD>õ<EFBFBD><C3B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ΪP00_1<5F><31><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
//<2F><><EFBFBD><EFBFBD><EFBFBD>ò<EFBFBD><C3B2><EFBFBD>P00_0<5F><30>P02_0<5F><30>P15_0<5F><30><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
#define OV7725_PCLK_PIN ERU_CH2_REQ14_P02_1 //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>ѡ<EFBFBD><D1A1>Χ<EFBFBD>ο<EFBFBD>ERU_PIN_enumö<6D><C3B6> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ж<EFBFBD><D0B6><EFBFBD><EFBFBD><EFBFBD>ѡ<EFBFBD><D1A1>Ϊͬһ<CDAC><D2BB>ͨ<EFBFBD><CDA8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ǹ<EFBFBD><C7B9><EFBFBD><EFBFBD>жϵ<D0B6>ͨ<EFBFBD><CDA8>
//<2F><><EFBFBD><EFBFBD>ж<EFBFBD>ѡ<EFBFBD><D1A1>ERU_CH3 <20><>ô<EFBFBD><C3B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>žͲ<C5BE><CDB2><EFBFBD>ѡ<EFBFBD><D1A1>ERU_CH7<48><37><EFBFBD><EFBFBD>Ϊ3<CEAA><33>7<EFBFBD><37><EFBFBD>ж<EFBFBD><D0B6>ǹ<EFBFBD><C7B9>õġ<C3B5>
#define OV7725_DMA_CH IfxDma_ChannelId_5 //<2F><><EFBFBD><EFBFBD>ʹ<EFBFBD>õ<EFBFBD>DMAͨ<41><CDA8> 0-47<34><37>ѡ ͨ<><CDA8><EFBFBD><EFBFBD>Խ<EFBFBD><D4BD><EFBFBD><EFBFBD><EFBFBD>ȼ<EFBFBD>Խ<EFBFBD><D4BD>
//<2F>޸Ĵ˴<C4B4>֮<EFBFBD><D6AE><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ҫ<EFBFBD>޸Ķ<DEB8>Ӧ<EFBFBD><D3A6>ERU<52>ж<EFBFBD><D0B6><EFBFBD><EFBFBD>ȼ<EFBFBD><C8BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>˴<EFBFBD><CBB4><EFBFBD><EFBFBD><EFBFBD>ΪIfxDma_ChannelId_5<5F><35><EFBFBD><EFBFBD>Ӧ<EFBFBD><D3A6>ERU<52>ж<EFBFBD><D0B6><EFBFBD><EFBFBD>ȼ<EFBFBD>Ӧ<EFBFBD><D3A6><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ5
extern uint8 image_bin[OV7725_H][OV7725_W/8]; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E6B4A2><EFBFBD><EFBFBD>ͼ<EFBFBD><CDBC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
extern uint8 image_dec[OV7725_H][OV7725_W]; //ͼ<><CDBC><EFBFBD><EFBFBD>ѹ<EFBFBD><D1B9><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
extern uint8 ov7725_finish_flag; //ͼ<><CDBC><EFBFBD>ɼ<EFBFBD><C9BC><EFBFBD><EFBFBD>ɱ<EFBFBD>־λ
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
uint8 ov7725_init(void);
void ov7725_vsync(void);
void ov7725_dma(void);
#endif

View File

@@ -1,356 +0,0 @@
/*********************************************************************************************************************
* COPYRIGHT NOTICE
* Copyright (c) 2020,<2C><><EFBFBD>ɿƼ<C9BF>
* All rights reserved.
* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>QQȺ<51><C8BA><EFBFBD><EFBFBD>Ⱥ<EFBFBD><C8BA>824575535
*
* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݰ<EFBFBD>Ȩ<EFBFBD><C8A8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɿƼ<C9BF><C6BC><EFBFBD><EFBFBD>У<EFBFBD>δ<EFBFBD><CEB4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ҵ<EFBFBD><D2B5>;<EFBFBD><CDBE>
* <20><>ӭ<EFBFBD><D3AD>λʹ<CEBB>ò<EFBFBD><C3B2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>޸<EFBFBD><DEB8><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EBB1A3><EFBFBD><EFBFBD><EFBFBD>ɿƼ<C9BF><C6BC>İ<EFBFBD>Ȩ<EFBFBD><C8A8><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
*
* @file 7725_UART
* @company <20>ɶ<EFBFBD><C9B6><EFBFBD><EFBFBD>ɿƼ<C9BF><C6BC><EFBFBD><EFBFBD>޹<EFBFBD>˾
* @author <20><><EFBFBD>ɿƼ<C9BF>(QQ3184284598)
* @version <20>鿴doc<6F><63>version<6F>ļ<EFBFBD> <20>汾˵<E6B1BE><CBB5>
* @Software ADS v1.2.2
* @Target core TC264D
* @Taobao https://seekfree.taobao.com/
* @date 2020-3-23
* @note
OV7725<32><35><EFBFBD>߶<EFBFBD><DFB6>
------------------------------------
ģ<><C4A3><EFBFBD>ܽ<EFBFBD> <09><>Ƭ<EFBFBD><C6AC><EFBFBD>ܽ<EFBFBD>
SDA(51<35><31>RX) <09>鿴SEEKFREE_7725_UART.h<>ļ<EFBFBD><C4BC>ڵ<EFBFBD>OV7725_COF_UART_TX <20><EFBFBD><EAB6A8>
SCL(51<35><31>TX) <09>鿴SEEKFREE_7725_UART.h<>ļ<EFBFBD><C4BC>ڵ<EFBFBD>OV7725_COF_UART_RX <20><EFBFBD><EAB6A8>
<20><><EFBFBD>ж<EFBFBD>(VSY) <09>鿴SEEKFREE_7725_UART.h<>ļ<EFBFBD><C4BC>ڵ<EFBFBD>OV7725_UART_VSYNC_PIN <20><EFBFBD><EAB6A8>
<20><><EFBFBD>ж<EFBFBD>(HREF) δʹ<CEB4>ã<EFBFBD><C3A3><EFBFBD><EFBFBD>˲<EFBFBD><CBB2><EFBFBD>
<20><><EFBFBD><EFBFBD><EFBFBD>ж<EFBFBD>(PCLK) <09>鿴SEEKFREE_7725_UART.h<>ļ<EFBFBD><C4BC>ڵ<EFBFBD>OV7725_UART_PCLK_PIN <20><EFBFBD><EAB6A8>
<20><><EFBFBD>ݿ<EFBFBD>(D0-D7) <09>鿴SEEKFREE_7725_UART.h<>ļ<EFBFBD><C4BC>ڵ<EFBFBD>OV7725_UART_DATA_PIN <20><EFBFBD><EAB6A8>
Ĭ<>Ϸֱ<CFB7><D6B1><EFBFBD> 160*120
Ĭ<><C4AC>FPS 50֡
------------------------------------
********************************************************************************************************************/
#include "IfxDma.h"
#include "IfxScuEru.h"
#include "zf_stm_systick.h"
#include "zf_gpio.h"
#include "zf_eru.h"
#include "zf_eru_dma.h"
#include "SEEKFREE_7725_UART.h"
IFX_ALIGN(4) uint8 ov7725_uart_image_bin[OV7725_UART_H][OV7725_UART_W/8]; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E6B4A2><EFBFBD><EFBFBD>ͼ<EFBFBD><CDBC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
uint8 ov7725_uart_image_dec[OV7725_UART_H][OV7725_UART_W];
//<2F><>Ҫ<EFBFBD><D2AA><EFBFBD>õ<EFBFBD><C3B5><EFBFBD><EFBFBD><EFBFBD>ͷ<EFBFBD><CDB7><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
uint16 OV7725_CFG[OV7725_CONFIG_FINISH][2]=
{
{OV7725_RESERVE, 0},
{OV7725_CONTRAST, 0x30}, //<2F>Աȶ<D4B1>0x00-0xff(<28>ı<EFBFBD><C4B1><EFBFBD><EFBFBD><EFBFBD>ֵ <20><><EFBFBD><EFBFBD>ʵ<EFBFBD><CAB5><EFBFBD><EFBFBD>ֵ<EFBFBD>޸ĵ<DEB8>Ч<EFBFBD><D0A7>)
{OV7725_FPS, 50}, //֡<><D6A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ֻ֧<D6BB><D6A7>50 75 100 112 150
{OV7725_COL, OV7725_UART_W}, //ֻ<><D6BB><EFBFBD><EFBFBD>80 160 240 320 <20><><EFBFBD>Ⱥ͸߶<CDB8><DFB6><EFBFBD><EFBFBD><EFBFBD>һһ<D2BB><D2BB>Ӧ<EFBFBD><D3A6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ80<38><30><EFBFBD>߶<EFBFBD>ֻ<EFBFBD><D6BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ60<36><30>
{OV7725_ROW, OV7725_UART_H}, //ֻ<><D6BB><EFBFBD><EFBFBD>60 120 180 240
{OV7725_INIT, 0} //<2F><><EFBFBD><EFBFBD>ͷ<EFBFBD><CDB7>ʼ<EFBFBD><CABC>ʼ<EFBFBD><CABC>
};
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͷ<EFBFBD>ڲ<EFBFBD><DAB2><EFBFBD>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
uint16 OV7725_GET_CFG[OV7725_CONFIG_FINISH-1][2]=
{
{OV7725_RESERVE, 0},
{OV7725_CONTRAST, 0},
{OV7725_FPS, 0},
{OV7725_COL, 0},
{OV7725_ROW, 0}
};
uint8 ov7725_uart_receive[3];
uint8 ov7725_uart_receive_num = 0;
uint8 ov7725_uart_receive_flag = 0;
//-------------------------------------------------------------------------------------------------------------------
// @brief С<><D0A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͷ<EFBFBD><CDB7><EFBFBD><EFBFBD><EFBFBD>жϺ<D0B6><CFBA><EFBFBD>
// @param NULL
// @return void
// @since v1.0
// Sample usage:
// @note <20>ú<EFBFBD><C3BA><EFBFBD><EFBFBD><EFBFBD>ISR<53>ļ<EFBFBD> <20><><EFBFBD><EFBFBD>3<EFBFBD>жϳ<D0B6><CFB3>򱻵<EFBFBD><F2B1BBB5><EFBFBD>
//-------------------------------------------------------------------------------------------------------------------
void ov7725_uart_callback(void)
{
uart_getchar(OV7725_COF_UART, &ov7725_uart_receive[ov7725_uart_receive_num]);;
ov7725_uart_receive_num++;
if(1==ov7725_uart_receive_num && 0XA5!=ov7725_uart_receive[0]) ov7725_uart_receive_num = 0;
if(3 == ov7725_uart_receive_num)
{
ov7725_uart_receive_num = 0;
ov7725_uart_receive_flag = 1;
}
}
//-------------------------------------------------------------------------------------------------------------------
// @brief С<><D0A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͷ<EFBFBD>ڲ<EFBFBD><DAB2>Ĵ<EFBFBD><C4B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>д<EFBFBD><D0B4><EFBFBD><EFBFBD>
// @param UARTN_enum <20><><EFBFBD><EFBFBD>ͷ<EFBFBD><CDB7><EFBFBD><EFBFBD>
// @param buff <20><>Ҫд<D2AA><D0B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// @return void
// @since v1.0
// Sample usage: <09><><EFBFBD>øú<C3B8><C3BA><EFBFBD>ǰ<EFBFBD><C7B0><EFBFBD>ȳ<EFBFBD>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
//-------------------------------------------------------------------------------------------------------------------
void ov7725_set_all_config(UARTN_enum uartn, uint16 buff[OV7725_CONFIG_FINISH-1][2])
{
uint16 temp, i;
uint8 send_buffer[4];
ov7725_uart_receive_flag = 0;
//<2F><><EFBFBD>ò<EFBFBD><C3B2><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ο<EFBFBD><CEBF><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֲ<EFBFBD>
//<2F><>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͷ<EFBFBD><CDB7><EFBFBD><EFBFBD><EFBFBD>³<EFBFBD>ʼ<EFBFBD><CABC>
for(i=0; i<OV7725_CONFIG_FINISH; i++)
{
send_buffer[0] = 0xA5;
send_buffer[1] = (uint8)buff[i][0];
temp = buff[i][1];
send_buffer[2] = temp>>8;
send_buffer[3] = (uint8)temp;
uart_putbuff(uartn, send_buffer,4);
systick_delay_ms(STM0, 2);
}
//<2F>ȴ<EFBFBD><C8B4><EFBFBD><EFBFBD><EFBFBD>ͷ<EFBFBD><CDB7>ʼ<EFBFBD><CABC><EFBFBD>ɹ<EFBFBD>
while(!ov7725_uart_receive_flag);
ov7725_uart_receive_flag = 0;
while((0xff != ov7725_uart_receive[1]) || (0xff != ov7725_uart_receive[2]));
//<2F><><EFBFBD>ϲ<EFBFBD><CFB2>ֶ<EFBFBD><D6B6><EFBFBD><EFBFBD><EFBFBD>ͷ<EFBFBD><CDB7><EFBFBD>õ<EFBFBD><C3B5><EFBFBD><EFBFBD><EFBFBD>ȫ<EFBFBD><C8AB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E1B1A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͷ<EFBFBD><CDB7>51<35><31>Ƭ<EFBFBD><C6AC><EFBFBD><EFBFBD>eeprom<6F><6D>
}
//-------------------------------------------------------------------------------------------------------------------
// @brief С<><D0A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD>ͷ<EFBFBD>ڲ<EFBFBD><DAB2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ
// @param UARTN_enum <20><><EFBFBD><EFBFBD>ͷ<EFBFBD><CDB7><EFBFBD><EFBFBD>
// @param buff <20><>Ҫ<EFBFBD><D2AA>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// @return void
// @since v1.0
// Sample usage: <09><><EFBFBD>øú<C3B8><C3BA><EFBFBD>ǰ<EFBFBD><C7B0><EFBFBD>ȳ<EFBFBD>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
//-------------------------------------------------------------------------------------------------------------------
void ov7725_get_all_config(UARTN_enum uartn, uint16 buff[OV7725_CONFIG_FINISH-1][2])
{
uint16 temp, i;
uint8 send_buffer[4];
for(i=0; i<OV7725_CONFIG_FINISH-1; i++)
{
send_buffer[0] = 0xA5;
send_buffer[1] = OV7725_GET_STATUS;
temp = buff[i][0];
send_buffer[2] = temp>>8;
send_buffer[3] = (uint8)temp;
uart_putbuff(uartn, send_buffer,4);
//<2F>ȴ<EFBFBD><C8B4><EFBFBD><EFBFBD>ܻش<DCBB><D8B4><EFBFBD><EFBFBD><EFBFBD>
while(!ov7725_uart_receive_flag);
ov7725_uart_receive_flag = 0;
buff[i][1] = ov7725_uart_receive[1]<<8 | ov7725_uart_receive[2];
}
}
//-------------------------------------------------------------------------------------------------------------------
// @brief С<><D0A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD>ͷ<EFBFBD>̼<EFBFBD><CCBC>
// @param NULL
// @return void
// @since v1.0
// Sample usage: <09><><EFBFBD>øú<C3B8><C3BA><EFBFBD>ǰ<EFBFBD><C7B0><EFBFBD>ȳ<EFBFBD>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
//-------------------------------------------------------------------------------------------------------------------
uint16 ov7725_get_id(UARTN_enum uartn)
{
uint16 temp;
uint8 send_buffer[4];
send_buffer[0] = 0xA5;
send_buffer[1] = OV7725_GET_WHO_AM_I;
temp = 0;
send_buffer[2] = temp>>8;
send_buffer[3] = (uint8)temp;
uart_putbuff(uartn, send_buffer,4);
//<2F>ȴ<EFBFBD><C8B4><EFBFBD><EFBFBD>ܻش<DCBB><D8B4><EFBFBD><EFBFBD><EFBFBD>
while(!ov7725_uart_receive_flag);
ov7725_uart_receive_flag = 0;
return ((uint16)(ov7725_uart_receive[1]<<8) | ov7725_uart_receive[2]);
}
//-------------------------------------------------------------------------------------------------------------------
// @brief С<><D0A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD>ͷ<EFBFBD>̼<EFBFBD><CCBC>
// @param NULL
// @return void
// @since v1.0
// Sample usage: <09><><EFBFBD>øú<C3B8><C3BA><EFBFBD>ǰ<EFBFBD><C7B0><EFBFBD>ȳ<EFBFBD>ʼ<EFBFBD><CABC>uart3
//-------------------------------------------------------------------------------------------------------------------
uint16 ov7725_get_version(UARTN_enum uartn)
{
uint16 temp;
uint8 send_buffer[4];
send_buffer[0] = 0xA5;
send_buffer[1] = OV7725_GET_STATUS;
temp = OV7725_GET_VERSION;
send_buffer[2] = temp>>8;
send_buffer[3] = (uint8)temp;
uart_putbuff(uartn, send_buffer,4);
//<2F>ȴ<EFBFBD><C8B4><EFBFBD><EFBFBD>ܻش<DCBB><D8B4><EFBFBD><EFBFBD><EFBFBD>
while(!ov7725_uart_receive_flag);
ov7725_uart_receive_flag = 0;
return ((uint16)(ov7725_uart_receive[1]<<8) | ov7725_uart_receive[2]);
}
//-------------------------------------------------------------------------------------------------------------------
// @brief С<><D0A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͷ<EFBFBD><CDB7>ʼ<EFBFBD><CABC>(<28><><EFBFBD><EFBFBD>֮<EFBFBD><D6AE><EFBFBD><EFBFBD><EFBFBD>ú<EFBFBD><C3BA><EFBFBD><EFBFBD><EFBFBD><EFBFBD>жϺ<D0B6><CFBA><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɲɼ<C9B2>ͼ<EFBFBD><CDBC>)
// @param NULL
// @return 0
// @since v1.0
// Sample usage:
//-------------------------------------------------------------------------------------------------------------------
void ov7725_uart_init(void)
{
uint8 i;
camera_type = CAMERA_BIN_UART;//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͷ<EFBFBD><CDB7><EFBFBD><EFBFBD>
camera_buffer_addr = ov7725_uart_image_bin[0];
boolean interrupt_state = disableInterrupts();
uart_init (OV7725_COF_UART, 9600, OV7725_COF_UART_TX, OV7725_COF_UART_RX); //<2F><>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͷ
enableInterrupts();//<2F><><EFBFBD><EFBFBD><EFBFBD>ж<EFBFBD>
ov7725_uart_receive_flag = 0;
//<2F>ȴ<EFBFBD><C8B4><EFBFBD><EFBFBD><EFBFBD>ͷ<EFBFBD>ϵ<EFBFBD><CFB5><EFBFBD>ʼ<EFBFBD><CABC><EFBFBD>ɹ<EFBFBD> <20><>ʽ<EFBFBD><CABD><EFBFBD><EFBFBD><EFBFBD>֣<EFBFBD><D6A3><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD>ͨ<EFBFBD><CDA8><EFBFBD><EFBFBD>ȡ<EFBFBD><C8A1><EFBFBD>õķ<C3B5>ʽ <20><>ѡһ
//systick_delay_ms(STM0, 1000);//<2F><>ʱ<EFBFBD><CAB1>ʽ
ov7725_get_all_config(OV7725_COF_UART, OV7725_GET_CFG);//<2F><>ȡ<EFBFBD><C8A1><EFBFBD>õķ<C3B5>ʽ
ov7725_uart_receive_flag = 0;
ov7725_set_all_config(OV7725_COF_UART, OV7725_CFG);
//<2F><>ȡ<EFBFBD><C8A1><EFBFBD>ñ<EFBFBD><C3B1>ڲ鿴<DAB2><E9BFB4><EFBFBD><EFBFBD><EFBFBD>Ƿ<EFBFBD><C7B7><EFBFBD>ȷ
ov7725_get_all_config(OV7725_COF_UART, OV7725_GET_CFG);
disableInterrupts();
//<2F><><EFBFBD><EFBFBD>ͷ<EFBFBD>ɼ<EFBFBD><C9BC><EFBFBD>ʼ<EFBFBD><CABC>
//<2F><>ʼ<EFBFBD><CABC> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
for(i=0; i<8; i++)
{
gpio_init((PIN_enum)(OV7725_UART_DATA_PIN+i), GPI, 0, PULLUP);
}
eru_dma_init(OV7725_UART_DMA_CH, GET_PORT_IN_ADDR(OV7725_UART_DATA_PIN), camera_buffer_addr, OV7725_UART_PCLK_PIN, FALLING, OV7725_UART_DMA_NUM);
eru_init(OV7725_UART_VSYNC_PIN, FALLING); //<2F><>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD><EFBFBD>жϣ<D0B6><CFA3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ<EFBFBD>½<EFBFBD><C2BD>ش<EFBFBD><D8B4><EFBFBD><EFBFBD>ж<EFBFBD>
restoreInterrupts(interrupt_state);
}
uint8 ov7725_uart_finish_flag = 0;
uint8 ov7725_uart_dma_init_flag; //<2F><><EFBFBD>³<EFBFBD>ʼ<EFBFBD><CABC>DMA<4D>ı<EFBFBD>־λ
//-------------------------------------------------------------------------------------------------------------------
// @brief С<><D0A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͷ<EFBFBD><CDB7><EFBFBD>ж<EFBFBD>
// @param NULL
// @return void
// @since v1.0
// Sample usage: <09><>isr.c<><63><EFBFBD><EFBFBD><EFBFBD>ȴ<EFBFBD><C8B4><EFBFBD><EFBFBD><EFBFBD>Ӧ<EFBFBD><D3A6><EFBFBD>жϺ<D0B6><CFBA><EFBFBD><EFBFBD><EFBFBD>Ȼ<EFBFBD><C8BB><EFBFBD><EFBFBD><EFBFBD>øú<C3B8><C3BA><EFBFBD><><D6AE><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>жϱ<D0B6>־λ)
//-------------------------------------------------------------------------------------------------------------------
void ov7725_uart_vsync(void)
{
CLEAR_GPIO_FLAG(OV7725_UART_VSYNC_PIN);
if(ov7725_uart_dma_init_flag)
{
ov7725_uart_dma_init_flag = 0;
IfxDma_resetChannel(&MODULE_DMA, OV7725_UART_DMA_CH);
eru_dma_init(OV7725_UART_DMA_CH, GET_PORT_IN_ADDR(OV7725_UART_DATA_PIN), camera_buffer_addr, OV7725_UART_PCLK_PIN, FALLING, OV7725_UART_DMA_NUM);
dma_start(OV7725_UART_DMA_CH);
}
else
{
DMA_SET_DESTINATION(OV7725_UART_DMA_CH, camera_buffer_addr);
dma_start(OV7725_UART_DMA_CH);
}
}
//-------------------------------------------------------------------------------------------------------------------
// @brief С<><D0A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͷDMA<4D><41><EFBFBD><EFBFBD><EFBFBD>ж<EFBFBD>
// @param NULL
// @return void
// @since v1.0
// Sample usage: <09><>isr.c<><63><EFBFBD><EFBFBD><EFBFBD>ȴ<EFBFBD><C8B4><EFBFBD><EFBFBD><EFBFBD>Ӧ<EFBFBD><D3A6><EFBFBD>жϺ<D0B6><CFBA><EFBFBD><EFBFBD><EFBFBD>Ȼ<EFBFBD><C8BB><EFBFBD><EFBFBD><EFBFBD>øú<C3B8><C3BA><EFBFBD><><D6AE><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>жϱ<D0B6>־λ)
//-------------------------------------------------------------------------------------------------------------------
void ov7725_uart_dma(void)
{
CLEAR_DMA_FLAG(OV7725_UART_DMA_CH);
if(IfxDma_getChannelTransactionRequestLost(&MODULE_DMA, OV7725_UART_DMA_CH))
{//ͼ<><CDBC><EFBFBD>д<EFBFBD>λ
ov7725_uart_finish_flag = 0;
dma_stop(OV7725_UART_DMA_CH);
IfxDma_clearChannelTransactionRequestLost(&MODULE_DMA, OV7725_UART_DMA_CH);
ov7725_uart_dma_init_flag = 1;
}
else
{
ov7725_uart_finish_flag = 1;
dma_stop(OV7725_UART_DMA_CH);
}
}
//-------------------------------------------------------------------------------------------------------------------
// @brief С<><D0A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͷ<EFBFBD><CDB7><EFBFBD>ݽ<EFBFBD>ѹ<EFBFBD><D1B9><EFBFBD><EFBFBD>
// @param *data1 Դ<><D4B4>ַ
// @param *data2 Ŀ<>ĵ<EFBFBD>ַ
// @return void
// @since v1.0
// Sample usage: Image_Decompression(da1,dat2[0]);//<2F><>һά<D2BB><CEAC><EFBFBD><EFBFBD>dat1<74><31><EFBFBD><EFBFBD><EFBFBD>ݽ<EFBFBD>ѹ<EFBFBD><D1B9><EFBFBD><EFBFBD>ά<EFBFBD><CEAC><EFBFBD><EFBFBD>dat2<74><32>.
//-------------------------------------------------------------------------------------------------------------------
void image_decompression(uint8 *data1,uint8 *data2)
{
uint8 temp[2] = {0,255};
uint16 lenth = OV7725_UART_SIZE;
uint8 i = 8;
while(lenth--)
{
i = 8;
while(i--)
{
*data2++ = temp[(*data1 >> i) & 0x01];
}
data1++;
}
}
//-------------------------------------------------------------------------------------------------------------------
// @brief С<><D0A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͷδ<CDB7><CEB4>ѹͼ<D1B9><CDBC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>λ<EFBFBD><CEBB><EFBFBD>鿴ͼ<E9BFB4><CDBC>
// @param uartn ʹ<>õĴ<C3B5><C4B4>ں<EFBFBD>
// @param image <09><>Ҫ<EFBFBD><D2AA><EFBFBD>͵<EFBFBD>ͼ<EFBFBD><CDBC><EFBFBD><EFBFBD>ַ
// @param width ͼ<><CDBC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// @param height ͼ<><CDBC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// @return void
// @since v1.0
// Sample usage: <09><><EFBFBD>øú<C3B8><C3BA><EFBFBD>ǰ<EFBFBD><C7B0><EFBFBD>ȳ<EFBFBD>ʼ<EFBFBD><CABC>uart2
//-------------------------------------------------------------------------------------------------------------------
void seekfree_sendimg_7725(UARTN_enum uartn, uint8 *image, uint16 width, uint16 height)
{
uart_putchar(uartn, 0x00);uart_putchar(uartn, 0xff);uart_putchar(uartn, 0x01);uart_putchar(uartn, 0x01);//<2F><><EFBFBD><EFBFBD><EFBFBD>ĸ<EFBFBD><C4B8>ֽ<EFBFBD><D6BD><EFBFBD><EFBFBD><EFBFBD>
uart_putbuff(uartn, image, width*height/8); //<2F>ٷ<EFBFBD><D9B7><EFBFBD>ͼ<EFBFBD><CDBC>
}

View File

@@ -1,109 +0,0 @@
/*********************************************************************************************************************
* COPYRIGHT NOTICE
* Copyright (c) 2020,<2C><><EFBFBD>ɿƼ<C9BF>
* All rights reserved.
* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>QQȺ<51><C8BA><EFBFBD><EFBFBD>Ⱥ<EFBFBD><C8BA>824575535
*
* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݰ<EFBFBD>Ȩ<EFBFBD><C8A8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɿƼ<C9BF><C6BC><EFBFBD><EFBFBD>У<EFBFBD>δ<EFBFBD><CEB4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ҵ<EFBFBD><D2B5>;<EFBFBD><CDBE>
* <20><>ӭ<EFBFBD><D3AD>λʹ<CEBB>ò<EFBFBD><C3B2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>޸<EFBFBD><DEB8><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EBB1A3><EFBFBD><EFBFBD><EFBFBD>ɿƼ<C9BF><C6BC>İ<EFBFBD>Ȩ<EFBFBD><C8A8><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
*
* @file 7725_UART
* @company <20>ɶ<EFBFBD><C9B6><EFBFBD><EFBFBD>ɿƼ<C9BF><C6BC><EFBFBD><EFBFBD>޹<EFBFBD>˾
* @author <20><><EFBFBD>ɿƼ<C9BF>(QQ3184284598)
* @version <20>鿴doc<6F><63>version<6F>ļ<EFBFBD> <20>汾˵<E6B1BE><CBB5>
* @Software ADS v1.2.2
* @Target core TC264D
* @Taobao https://seekfree.taobao.com/
* @date 2020-3-23
* @note
OV7725<32><35><EFBFBD>߶<EFBFBD><DFB6>
------------------------------------
ģ<><C4A3><EFBFBD>ܽ<EFBFBD> <09><>Ƭ<EFBFBD><C6AC><EFBFBD>ܽ<EFBFBD>
SDA(51<35><31>RX) <09>鿴SEEKFREE_7725_UART.h<>ļ<EFBFBD><C4BC>ڵ<EFBFBD>OV7725_COF_UART_TX <20><EFBFBD><EAB6A8>
SCL(51<35><31>TX) <09>鿴SEEKFREE_7725_UART.h<>ļ<EFBFBD><C4BC>ڵ<EFBFBD>OV7725_COF_UART_RX <20><EFBFBD><EAB6A8>
<20><><EFBFBD>ж<EFBFBD>(VSY) <09>鿴SEEKFREE_7725_UART.h<>ļ<EFBFBD><C4BC>ڵ<EFBFBD>OV7725_UART_VSYNC_PIN <20><EFBFBD><EAB6A8>
<20><><EFBFBD>ж<EFBFBD>(HREF) δʹ<CEB4>ã<EFBFBD><C3A3><EFBFBD><EFBFBD>˲<EFBFBD><CBB2><EFBFBD>
<20><><EFBFBD><EFBFBD><EFBFBD>ж<EFBFBD>(PCLK) <09>鿴SEEKFREE_7725_UART.h<>ļ<EFBFBD><C4BC>ڵ<EFBFBD>OV7725_UART_PCLK_PIN <20><EFBFBD><EAB6A8>
<20><><EFBFBD>ݿ<EFBFBD>(D0-D7) <09>鿴SEEKFREE_7725_UART.h<>ļ<EFBFBD><C4BC>ڵ<EFBFBD>OV7725_UART_DATA_PIN <20><EFBFBD><EAB6A8>
Ĭ<>Ϸֱ<CFB7><D6B1><EFBFBD> 160*120
Ĭ<><C4AC>FPS 50֡
------------------------------------
********************************************************************************************************************/
#ifndef _SEEKFREE_7725_UART_h
#define _SEEKFREE_7725_UART_h
#include "common.h"
#include "IfxDma_cfg.h"
#include "zf_uart.h"
#define OV7725_UART_W 160 //ֻ<><D6BB><EFBFBD><EFBFBD>80 160 240 320 <20><><EFBFBD>Ⱥ͸߶<CDB8><DFB6><EFBFBD><EFBFBD><EFBFBD>һһ<D2BB><D2BB>Ӧ<EFBFBD><D3A6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ80<38><30><EFBFBD>߶<EFBFBD>ֻ<EFBFBD><D6BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ60<36><30>
#define OV7725_UART_H 120 //ֻ<><D6BB><EFBFBD><EFBFBD>60 120 180 240
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͷ<EFBFBD><CDB7><EFBFBD><EFBFBD>
#define OV7725_UART_SIZE (OV7725_UART_W * OV7725_UART_H/8 ) //ͼ<><CDBC>ռ<EFBFBD>ÿռ<C3BF><D5BC><EFBFBD>С
#define OV7725_UART_DMA_NUM (OV7725_UART_SIZE ) //DMA<4D>ɼ<EFBFBD><C9BC><EFBFBD><EFBFBD><EFBFBD>
//--------------------------------------------------------------------------------------------------
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
//--------------------------------------------------------------------------------------------------
#define OV7725_COF_UART UART_1 //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͷ<EFBFBD><CDB7>ʹ<EFBFBD>õ<EFBFBD><C3B5>Ĵ<EFBFBD><C4B4><EFBFBD>
#define OV7725_COF_UART_TX UART1_TX_P02_2
#define OV7725_COF_UART_RX UART1_RX_P02_3
#define OV7725_UART_VSYNC_PIN ERU_CH3_REQ6_P02_0 //<2F><><EFBFBD>ж<EFBFBD><D0B6><EFBFBD><EFBFBD><EFBFBD> <09><>ѡ<EFBFBD><D1A1>Χ<EFBFBD>ο<EFBFBD>ERU_PIN_enumö<6D><C3B6> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ѡ<EFBFBD><D1A1>Ϊͬһ<CDAC><D2BB>ͨ<EFBFBD><CDA8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ǹ<EFBFBD><C7B9><EFBFBD><EFBFBD>жϵ<D0B6>ͨ<EFBFBD><CDA8>
//<2F><><EFBFBD><EFBFBD>ж<EFBFBD>ѡ<EFBFBD><D1A1>ERU_CH3 <20><>ô<EFBFBD><C3B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>žͲ<C5BE><CDB2><EFBFBD>ѡ<EFBFBD><D1A1>ERU_CH7<48><37><EFBFBD><EFBFBD>Ϊ3<CEAA><33>7<EFBFBD><37><EFBFBD>ж<EFBFBD><D0B6>ǹ<EFBFBD><C7B9>õġ<C3B5>
#define OV7725_UART_DATA_PIN P00_0 //<2F><><EFBFBD><EFBFBD>D0<44><30><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>D0<44><30><EFBFBD><EFBFBD>ΪP00_0 <20><>ôD1<44><31>ʹ<EFBFBD>õ<EFBFBD><C3B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ΪP00_1<5F><31><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
//<2F><><EFBFBD><EFBFBD><EFBFBD>ò<EFBFBD><C3B2><EFBFBD>P00_0<5F><30>P02_0<5F><30>P15_0<5F><30><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
#define OV7725_UART_PCLK_PIN ERU_CH2_REQ14_P02_1 //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>ѡ<EFBFBD><D1A1>Χ<EFBFBD>ο<EFBFBD>ERU_PIN_enumö<6D><C3B6> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ж<EFBFBD><D0B6><EFBFBD><EFBFBD><EFBFBD>ѡ<EFBFBD><D1A1>Ϊͬһ<CDAC><D2BB>ͨ<EFBFBD><CDA8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ǹ<EFBFBD><C7B9><EFBFBD><EFBFBD>жϵ<D0B6>ͨ<EFBFBD><CDA8>
//<2F><><EFBFBD><EFBFBD>ж<EFBFBD>ѡ<EFBFBD><D1A1>ERU_CH3 <20><>ô<EFBFBD><C3B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>žͲ<C5BE><CDB2><EFBFBD>ѡ<EFBFBD><D1A1>ERU_CH7<48><37><EFBFBD><EFBFBD>Ϊ3<CEAA><33>7<EFBFBD><37><EFBFBD>ж<EFBFBD><D0B6>ǹ<EFBFBD><C7B9>õġ<C3B5>
#define OV7725_UART_DMA_CH IfxDma_ChannelId_5 //<2F><><EFBFBD><EFBFBD>ʹ<EFBFBD>õ<EFBFBD>DMAͨ<41><CDA8> 0-47<34><37>ѡ ͨ<><CDA8><EFBFBD><EFBFBD>Խ<EFBFBD><D4BD><EFBFBD><EFBFBD><EFBFBD>ȼ<EFBFBD>Խ<EFBFBD><D4BD>
//<2F>޸Ĵ˴<C4B4>֮<EFBFBD><D6AE><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ҫ<EFBFBD>޸Ķ<DEB8>Ӧ<EFBFBD><D3A6>ERU<52>ж<EFBFBD><D0B6><EFBFBD><EFBFBD>ȼ<EFBFBD><C8BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>˴<EFBFBD><CBB4><EFBFBD><EFBFBD><EFBFBD>ΪIfxDma_ChannelId_5<5F><35><EFBFBD><EFBFBD>Ӧ<EFBFBD><D3A6>ERU<52>ж<EFBFBD><D0B6><EFBFBD><EFBFBD>ȼ<EFBFBD>Ӧ<EFBFBD><D3A6><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ5
typedef enum
{
OV7725_INIT = 0x00, //<2F><>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
OV7725_RESERVE, //<2F><><EFBFBD><EFBFBD>λ
OV7725_CONTRAST, //<2F>Աȶȵ<C8B6><C8B5><EFBFBD> ʵ<><CAB5><EFBFBD><EFBFBD>ֵ<EFBFBD>ĵ<EFBFBD><C4B5><EFBFBD>
OV7725_FPS, //֡<><D6A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ֻ֧<D6BB><D6A7>50 75 100 112 150
OV7725_COL, //<2F>ֱ<EFBFBD><D6B1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ֻ<><D6BB><EFBFBD><EFBFBD>80 160 240 320
OV7725_ROW, //<2F>ֱ<EFBFBD><D6B1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ֻ<><D6BB><EFBFBD><EFBFBD>60 120 180 240
OV7725_CONFIG_FINISH, //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>λ<EFBFBD><CEBB><EFBFBD><EFBFBD>Ҫ<EFBFBD><D2AA><EFBFBD><EFBFBD>ռλ<D5BC><CEBB><EFBFBD><EFBFBD>
OV7725_GET_WHO_AM_I= 0xEF,
OV7725_GET_STATUS = 0xF1,
OV7725_GET_VERSION = 0xF2,
OV7725_SET_ADDR = 0xFE,
OV7725_SET_DATA = 0xFF,
}OV7725_CMD;
extern uint8 ov7725_uart_image_bin[OV7725_UART_H][OV7725_UART_W/8]; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E6B4A2><EFBFBD><EFBFBD>ͼ<EFBFBD><CDBC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
extern uint8 ov7725_uart_image_dec[OV7725_UART_H][OV7725_UART_W]; //ͼ<><CDBC><EFBFBD><EFBFBD>ѹ<EFBFBD><D1B9><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
extern uint8 ov7725_uart_finish_flag; //ͼ<><CDBC><EFBFBD>ɼ<EFBFBD><C9BC><EFBFBD><EFBFBD>ɱ<EFBFBD>־λ
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
void ov7725_uart_callback(void);
void ov7725_uart_init(void);
void ov7725_uart_vsync(void);
void ov7725_uart_dma(void);
void image_decompression(uint8 *data1,uint8 *data2);
void seekfree_sendimg_7725(UARTN_enum uartn, uint8 *image, uint16 width, uint16 height);
#endif

View File

@@ -1,278 +0,0 @@
/*********************************************************************************************************************
* COPYRIGHT NOTICE
* Copyright (c) 2021,<2C><><EFBFBD>ɿƼ<C9BF>
* All rights reserved.
* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>QQȺ<51><C8BA>һȺ<D2BB><C8BA>179029047(<28><><EFBFBD><EFBFBD>) <20><>Ⱥ<EFBFBD><C8BA>244861897
*
* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݰ<EFBFBD>Ȩ<EFBFBD><C8A8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɿƼ<C9BF><C6BC><EFBFBD><EFBFBD>У<EFBFBD>δ<EFBFBD><CEB4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ҵ<EFBFBD><D2B5>;<EFBFBD><CDBE>
* <20><>ӭ<EFBFBD><D3AD>λʹ<CEBB>ò<EFBFBD><C3B2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>޸<EFBFBD><DEB8><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EBB1A3><EFBFBD><EFBFBD><EFBFBD>ɿƼ<C9BF><C6BC>İ<EFBFBD>Ȩ<EFBFBD><C8A8><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
*
* @file <09><><EFBFBD>ɿƼ<C9BF><C6BC><EFBFBD><EFBFBD><EFBFBD>ת<EFBFBD><D7AA><EFBFBD><EFBFBD>ģ<EFBFBD><C4A3>
* @company <09>ɶ<EFBFBD><C9B6><EFBFBD><EFBFBD>ɿƼ<C9BF><C6BC><EFBFBD><EFBFBD>޹<EFBFBD>˾
* @author <09><><EFBFBD>ɿƼ<C9BF>(QQ3184284598)
* @version <09>鿴doc<6F><63>version<6F>ļ<EFBFBD> <20>汾˵<E6B1BE><CBB5>
* @Software IAR 8.3 or MDK 5.33
* @Taobao https://seekfree.taobao.com/
* @date 2021-08-27
* @note
<09><><EFBFBD>߶<EFBFBD><DFB6>
------------------------------------
<20><><EFBFBD><EFBFBD>ת<EFBFBD><D7AA><EFBFBD><EFBFBD> <20><>Ƭ<EFBFBD><C6AC>
RX <20>鿴SEEKFREE_BLUETOOTH_CH9141.h<>ļ<EFBFBD><C4BC>е<EFBFBD>BLUETOOTH_CH9141_UART_TX<54><EFBFBD><EAB6A8>
TX <20>鿴SEEKFREE_BLUETOOTH_CH9141.h<>ļ<EFBFBD><C4BC>е<EFBFBD>BLUETOOTH_CH9141_UART_RX<52><EFBFBD><EAB6A8>
RTS <20>鿴SEEKFREE_BLUETOOTH_CH9141.h<>ļ<EFBFBD><C4BC>е<EFBFBD>BLUETOOTH_CH9141_RTS_PIN<49><EFBFBD><EAB6A8>
CTS <20><><EFBFBD><EFBFBD>
CMD <20><><EFBFBD>ջ<EFBFBD><D5BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
------------------------------------
********************************************************************************************************************/
#include "zf_stm_systick.h"
#include "zf_gpio.h"
#include "zf_uart.h"
#include "zf_assert.h"
#include "SEEKFREE_BLUETOOTH_CH9141.h"
static fifo_struct bluetooth_ch9141_fifo;
static uint8 bluetooth_ch9141_buffer[BLUETOOTH_CH9141_BUFFER_SIZE]; // <20><><EFBFBD>ݴ<EFBFBD><DDB4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
static uint8 bluetooth_ch9141_data;
//-------------------------------------------------------------------------------------------------------------------
// @brief FIFO <20><>ʼ<EFBFBD><CABC> <20><><EFBFBD>ض<EFBFBD>Ӧ<EFBFBD><D3A6><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// @param *fifo FIFO <20><><EFBFBD><EFBFBD>ָ<EFBFBD><D6B8>
// @param *buffer_addr Ҫ<><D2AA><EFBFBD>صĻ<D8B5><C4BB><EFBFBD><EFBFBD><EFBFBD>
// @param size <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>С
// @return fifo_state_enum <20><><EFBFBD><EFBFBD>״̬
// Sample usage:
//-------------------------------------------------------------------------------------------------------------------
fifo_state_enum fifo_init (fifo_struct *fifo, uint8 *buffer_addr, uint32 size)
{
if(buffer_addr == NULL)
return FIFO_BUFFER_NULL;
fifo->buffer = buffer_addr;
fifo->head = 0;
fifo->end = 0;
fifo->size = size;
fifo->max = size;
return FIFO_SUCCESS;
}
//-------------------------------------------------------------------------------------------------------------------
// @brief FIFO ͷָ<CDB7><D6B8>λ<EFBFBD><CEBB>
// @param *fifo FIFO <20><><EFBFBD><EFBFBD>ָ<EFBFBD><D6B8>
// @param offset ƫ<><C6AB><EFBFBD><EFBFBD>
// @return void
// Sample usage:
//-------------------------------------------------------------------------------------------------------------------
void fifo_head_offset (fifo_struct *fifo, uint32 offset)
{
fifo->head += offset;
while(fifo->max <= fifo->head) // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Χ<EFBFBD><CEA7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>С ֱ<><D6B1>С<EFBFBD><D0A1><EFBFBD><EFBFBD><EFBFBD>󻺳<EFBFBD><F3BBBAB3><EFBFBD><EFBFBD><EFBFBD>С
{
fifo->head -= fifo->max;
}
}
//-------------------------------------------------------------------------------------------------------------------
// @brief FIFO βָ<CEB2><D6B8>λ<EFBFBD><CEBB>
// @param *fifo FIFO <20><><EFBFBD><EFBFBD>ָ<EFBFBD><D6B8>
// @param offset ƫ<><C6AB><EFBFBD><EFBFBD>
// @return void
// Sample usage:
//-------------------------------------------------------------------------------------------------------------------
void fifo_end_offset (fifo_struct *fifo, uint32 offset)
{
fifo->end += offset;
while(fifo->max <= fifo->end) // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Χ<EFBFBD><CEA7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>С ֱ<><D6B1>С<EFBFBD><D0A1><EFBFBD><EFBFBD><EFBFBD>󻺳<EFBFBD><F3BBBAB3><EFBFBD><EFBFBD><EFBFBD>С
{
fifo->end -= fifo->max;
}
}
//-------------------------------------------------------------------------------------------------------------------
// @brief FIFO <20><><EFBFBD>û<EFBFBD><C3BB><EFBFBD><EFBFBD><EFBFBD>
// @param *fifo FIFO <20><><EFBFBD><EFBFBD>ָ<EFBFBD><D6B8>
// @return void
// Sample usage:
//-------------------------------------------------------------------------------------------------------------------
void fifo_clear (fifo_struct *fifo)
{
fifo->head = 0;
fifo->end = 0;
fifo->size = fifo->max;
}
//-------------------------------------------------------------------------------------------------------------------
// @brief FIFO <20><>ѯ<EFBFBD><D1AF>ǰ<EFBFBD><C7B0><EFBFBD>ݸ<EFBFBD><DDB8><EFBFBD>
// @param *fifo FIFO <20><><EFBFBD><EFBFBD>ָ<EFBFBD><D6B8>
// @return void
// Sample usage:
//-------------------------------------------------------------------------------------------------------------------
uint32 fifo_used (fifo_struct *fifo)
{
return (fifo->max - fifo->size);
}
//-------------------------------------------------------------------------------------------------------------------
// @brief <20><> FIFO <20><>д<EFBFBD><D0B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// @param *fifo FIFO <20><><EFBFBD><EFBFBD>ָ<EFBFBD><D6B8>
// @param *dat <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Դ<EFBFBD><D4B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ָ<EFBFBD><D6B8>
// @param length <20><>Ҫд<D2AA><D0B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݳ<EFBFBD><DDB3><EFBFBD>
// @return fifo_state_enum <20><><EFBFBD><EFBFBD>״̬
// Sample usage: if(fifo_write_buffer(&fifo,data,32)!=FIFO_SUCCESS) while(1);
//-------------------------------------------------------------------------------------------------------------------
fifo_state_enum fifo_write_buffer (fifo_struct *fifo, uint8 *dat, uint32 length)
{
uint32 temp_length;
if(length < fifo->size) // ʣ<><CAA3><EFBFBD>ռ<EFBFBD><D5BC>㹻װ<E3B9BB>±<EFBFBD><C2B1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
{
temp_length = fifo->max - fifo->head; // <20><><EFBFBD><EFBFBD>ͷָ<CDB7><D6B8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EBBBBA><EFBFBD><EFBFBD>β<EFBFBD><CEB2><EFBFBD>ж<EFBFBD><D0B6>ٿռ<D9BF>
if(length > temp_length) // <20><><EFBFBD><EFBFBD><EBBBBA><EFBFBD><EFBFBD>β<EFBFBD><CEB2><EFBFBD>Ȳ<EFBFBD><C8B2><EFBFBD>д<EFBFBD><D0B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>λ<EFBFBD><CEBB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֶβ<D6B6><CEB2><EFBFBD>
{
memcpy(&fifo->buffer[fifo->head], dat, temp_length); // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
fifo_head_offset(fifo, temp_length); // ͷָ<CDB7><D6B8>ƫ<EFBFBD><C6AB>
dat += temp_length; // <20><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD>ƫ<EFBFBD><C6AB>
memcpy(&fifo->buffer[fifo->head], dat, length - temp_length); // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
fifo_head_offset(fifo, length - temp_length); // ͷָ<CDB7><D6B8>ƫ<EFBFBD><C6AB>
}
else
{
memcpy(&fifo->buffer[fifo->head], dat, length); // һ<><D2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>д<EFBFBD><D0B4>
fifo_head_offset(fifo, length); // ͷָ<CDB7><D6B8>ƫ<EFBFBD><C6AB>
}
fifo->size -= length; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʣ<EFBFBD><EFBFBD>ȼ<EFBFBD>С
}
else
{
return FIFO_SPACE_NO_ENOUGH;
}
return FIFO_SUCCESS;
}
//-------------------------------------------------------------------------------------------------------------------
// @brief <20><> FIFO <20><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD>
// @param *fifo FIFO <20><><EFBFBD><EFBFBD>ָ<EFBFBD><D6B8>
// @param *dat Ŀ<><EFBFBD><EABBBA><EFBFBD><EFBFBD>ָ<EFBFBD><D6B8>
// @param *length <20><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD>ݳ<EFBFBD><DDB3><EFBFBD> <20><><EFBFBD><EFBFBD>û<EFBFBD><C3BB><EFBFBD><EFBFBD>ô<EFBFBD><C3B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>޸<EFBFBD>
// @param flag <20>Ƿ<EFBFBD><C7B7><EFBFBD><EFBFBD><EFBFBD> FIFO ״̬ <20><>ѡ<EFBFBD><D1A1><EFBFBD>Ƿ<EFBFBD><C7B7><EFBFBD><EFBFBD>ն<EFBFBD>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// @return fifo_state_enum <20><><EFBFBD><EFBFBD>״̬
// Sample usage: if(fifo_read_buffer(&fifo,data,32,FIFO_READ_ONLY)!=FIFO_SUCCESS) while(1);
//-------------------------------------------------------------------------------------------------------------------
fifo_state_enum fifo_read_buffer (fifo_struct *fifo, uint8 *dat, uint32 *length, fifo_operation_enum flag)
{
uint8 data_check = 0;
uint32 temp_length;
if(*length > fifo_used(fifo))
{
*length = (fifo->max - fifo->size); // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȡ<EFBFBD>ij<EFBFBD><C4B3><EFBFBD>
data_check = 1; // <20><>־<EFBFBD><D6BE><EFBFBD>ݲ<EFBFBD><DDB2><EFBFBD>
}
temp_length = fifo->max - fifo->end; // <20><><EFBFBD><EFBFBD>βָ<CEB2><D6B8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EBBBBA><EFBFBD><EFBFBD>β<EFBFBD><CEB2><EFBFBD>ж<EFBFBD><D0B6>ٿռ<D9BF>
if(*length <= temp_length) // <20>һ<E3B9BB><D2BB><EFBFBD>Զ<EFBFBD>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD>
{
if(NULL != dat) memcpy(dat, &fifo->buffer[fifo->end], *length); // һ<><D2BB><EFBFBD>Զ<EFBFBD>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD>
}
else
{
if(NULL != dat)
{
memcpy(dat, &fifo->buffer[fifo->end], temp_length); // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
memcpy(&dat[temp_length], &fifo->buffer[0], *length - temp_length); // <20><><EFBFBD><EFBFBD><EFBFBD>ڶ<EFBFBD><DAB6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
}
}
if(flag == FIFO_READ_AND_CLEAN) // <20><><EFBFBD><EFBFBD>ѡ<EFBFBD><D1A1><EFBFBD><EFBFBD>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD> FIFO ״̬
{
fifo_end_offset(fifo, *length); // <20>ƶ<EFBFBD> FIFO ͷָ<CDB7><D6B8>
fifo->size += *length;
}
return (data_check?FIFO_DATA_NO_ENOUGH:FIFO_SUCCESS);
}
//-------------------------------------------------------------------------------------------------------------------
// @brief <20><><EFBFBD><EFBFBD>ת<EFBFBD><D7AA><EFBFBD><EFBFBD>ģ<EFBFBD><C4A3> <20><><EFBFBD><EFBFBD><EFBFBD>жϻص<CFBB><D8B5><EFBFBD><EFBFBD><EFBFBD>
// @param void
// @return void
// Sample usage:
// @note <20>ú<EFBFBD><C3BA><EFBFBD><EFBFBD><EFBFBD>ISR<53>ļ<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>жϳ<D0B6><CFB3>򱻵<EFBFBD><F2B1BBB5><EFBFBD>
//-------------------------------------------------------------------------------------------------------------------
void bluetooth_ch9141_uart_callback (void)
{
// <20><>ȡ<EFBFBD><C8A1><EFBFBD>ߴ<EFBFBD><DFB4>ڵ<EFBFBD><DAB5><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>λ<EFBFBD><CEBB><EFBFBD>ձ<EFBFBD>־
uart_query(BLUETOOTH_CH9141_INDEX, &bluetooth_ch9141_data);
fifo_write_buffer(&bluetooth_ch9141_fifo, &bluetooth_ch9141_data, 1); // <20><><EFBFBD><EFBFBD> FIFO
}
//-------------------------------------------------------------------------------------------------------------------
// @brief <20><><EFBFBD><EFBFBD>ת<EFBFBD><D7AA><EFBFBD><EFBFBD>ģ<EFBFBD><C4A3><EFBFBD><EFBFBD>ʼ<EFBFBD><CABC>
// @param mode <20><><EFBFBD><EFBFBD>ģʽ MASTER_MODE(<28><><EFBFBD><EFBFBD>)<29><><EFBFBD><EFBFBD>SLAVE_MODE(<28>ӻ<EFBFBD>)
// @return uint8 <20><>ʼ<EFBFBD><CABC>״̬ 0-<2D>ɹ<EFBFBD> 1-ʧ<><CAA7>
// Sample usage:
//-------------------------------------------------------------------------------------------------------------------
uint8 bluetooth_ch9141_init (void)
{
wireless_type = WIRELESS_CH9141;
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʹ<EFBFBD>õIJ<C3B5><C4B2><EFBFBD><EFBFBD><EFBFBD>Ϊ115200 Ϊ<><CEAA><EFBFBD><EFBFBD>ת<EFBFBD><D7AA><EFBFBD><EFBFBD>ģ<EFBFBD><C4A3><EFBFBD><EFBFBD>Ĭ<EFBFBD>ϲ<EFBFBD><CFB2><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʹ<EFBFBD><CAB9><EFBFBD><EFBFBD>λ<EFBFBD><CEBB><EFBFBD>޸<EFBFBD>ģ<EFBFBD><C4A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
fifo_init(&bluetooth_ch9141_fifo, bluetooth_ch9141_buffer, BLUETOOTH_CH9141_BUFFER_SIZE);
gpio_init(BLUETOOTH_CH9141_RTS_PIN, GPI, 1, PULLUP); // <20><>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
uart_init(BLUETOOTH_CH9141_INDEX, BLUETOOTH_CH9141_BUAD_RATE, BLUETOOTH_CH9141_RX_PIN, BLUETOOTH_CH9141_TX_PIN);
return 0;
}
//-------------------------------------------------------------------------------------------------------------------
// @brief <20><><EFBFBD><EFBFBD>ת<EFBFBD><D7AA><EFBFBD><EFBFBD>ģ<EFBFBD><C4A3> <20><><EFBFBD>ͺ<EFBFBD><CDBA><EFBFBD>
// @param buff <20><>Ҫ<EFBFBD><D2AA><EFBFBD>͵<EFBFBD><CDB5><EFBFBD><EFBFBD>ݵ<EFBFBD>ַ
// @param len <20><><EFBFBD>ͳ<EFBFBD><CDB3><EFBFBD>
// @return uint32 ʣ<><CAA3>δ<EFBFBD><CEB4><EFBFBD>͵<EFBFBD><CDB5>ֽ<EFBFBD><D6BD><EFBFBD>
// Sample usage:
//-------------------------------------------------------------------------------------------------------------------
uint32 bluetooth_ch9141_send_buff (uint8 *buff, uint32 len)
{
uint16 time_count = 0;
while(len > 30)
{
time_count = 0;
while(gpio_get(BLUETOOTH_CH9141_RTS_PIN) && time_count++ < BLUETOOTH_CH9141_TIMEOUT_COUNT) // <20><><EFBFBD><EFBFBD>RTSΪ<53>͵<EFBFBD>ƽ<EFBFBD><C6BD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
systick_delay_ms(STM0, 1);
if(time_count >= BLUETOOTH_CH9141_TIMEOUT_COUNT)
return len; // ģ<><C4A3>æ,<2C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ǰ<EFBFBD><C7B0><EFBFBD><EFBFBD>ʹ<EFBFBD><CAB9>while<6C>ȴ<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʹ<EFBFBD>ú<EFBFBD><C3BA><EFBFBD>ע<EFBFBD>͵<EFBFBD>while<6C>ȴ<EFBFBD><C8B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E6BBBB>if<69><66><EFBFBD><EFBFBD>
uart_putbuff(BLUETOOTH_CH9141_INDEX, buff, 30);
buff += 30; // <20><>ַƫ<D6B7><C6AB>
len -= 30; // <20><><EFBFBD><EFBFBD>
}
time_count = 0;
while(gpio_get(BLUETOOTH_CH9141_RTS_PIN) && time_count++ < BLUETOOTH_CH9141_TIMEOUT_COUNT) // <20><><EFBFBD><EFBFBD>RTSΪ<53>͵<EFBFBD>ƽ<EFBFBD><C6BD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
systick_delay_ms(STM0, 1);
if(time_count >= BLUETOOTH_CH9141_TIMEOUT_COUNT)
return len; // ģ<><C4A3>æ,<2C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ǰ<EFBFBD><C7B0><EFBFBD><EFBFBD>ʹ<EFBFBD><CAB9>while<6C>ȴ<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʹ<EFBFBD>ú<EFBFBD><C3BA><EFBFBD>ע<EFBFBD>͵<EFBFBD>while<6C>ȴ<EFBFBD><C8B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E6BBBB>if<69><66><EFBFBD><EFBFBD>
uart_putbuff(BLUETOOTH_CH9141_INDEX, buff, len); // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
return 0;
}
//-------------------------------------------------------------------------------------------------------------------
// @brief <20><><EFBFBD><EFBFBD>ת<EFBFBD><D7AA><EFBFBD><EFBFBD>ģ<EFBFBD><C4A3> <20><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD>
// @param buff <20><EFBFBD><E6B4A2><EFBFBD><EFBFBD><EFBFBD>ݵ<EFBFBD>ַ
// @param len <20><><EFBFBD><EFBFBD>
// @return uint32 ʵ<>ʶ<EFBFBD>ȡ<EFBFBD>ֽ<EFBFBD><D6BD><EFBFBD>
// Sample usage:
//-------------------------------------------------------------------------------------------------------------------
uint32 bluetooth_ch9141_read_buff (uint8 *buff, uint32 len)
{
uint32 data_len = len;
fifo_read_buffer(&bluetooth_ch9141_fifo, buff, &data_len, FIFO_READ_AND_CLEAN);
return data_len;
}

View File

@@ -1,95 +0,0 @@
/*********************************************************************************************************************
* COPYRIGHT NOTICE
* Copyright (c) 2021,<2C><><EFBFBD>ɿƼ<C9BF>
* All rights reserved.
* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>QQȺ<51><C8BA>һȺ<D2BB><C8BA>179029047(<28><><EFBFBD><EFBFBD>) <20><>Ⱥ<EFBFBD><C8BA>244861897
*
* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݰ<EFBFBD>Ȩ<EFBFBD><C8A8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɿƼ<C9BF><C6BC><EFBFBD><EFBFBD>У<EFBFBD>δ<EFBFBD><CEB4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ҵ<EFBFBD><D2B5>;<EFBFBD><CDBE>
* <20><>ӭ<EFBFBD><D3AD>λʹ<CEBB>ò<EFBFBD><C3B2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>޸<EFBFBD><DEB8><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EBB1A3><EFBFBD><EFBFBD><EFBFBD>ɿƼ<C9BF><C6BC>İ<EFBFBD>Ȩ<EFBFBD><C8A8><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
*
* @file <09><><EFBFBD>ɿƼ<C9BF><C6BC><EFBFBD><EFBFBD><EFBFBD>ת<EFBFBD><D7AA><EFBFBD><EFBFBD>ģ<EFBFBD><C4A3>
* @company <09>ɶ<EFBFBD><C9B6><EFBFBD><EFBFBD>ɿƼ<C9BF><C6BC><EFBFBD><EFBFBD>޹<EFBFBD>˾
* @author <09><><EFBFBD>ɿƼ<C9BF>(QQ3184284598)
* @version <09>鿴doc<6F><63>version<6F>ļ<EFBFBD> <20>汾˵<E6B1BE><CBB5>
* @Software IAR 8.3 or MDK 5.33
* @Taobao https://seekfree.taobao.com/
* @date 2021-08-27
* @note
<09><><EFBFBD>߶<EFBFBD><DFB6>
------------------------------------
<20><><EFBFBD><EFBFBD>ת<EFBFBD><D7AA><EFBFBD><EFBFBD> <20><>Ƭ<EFBFBD><C6AC>
RX <20>鿴SEEKFREE_BLUETOOTH_CH9141.h<>ļ<EFBFBD><C4BC>е<EFBFBD>BLUETOOTH_CH9141_UART_TX<54><EFBFBD><EAB6A8>
TX <20>鿴SEEKFREE_BLUETOOTH_CH9141.h<>ļ<EFBFBD><C4BC>е<EFBFBD>BLUETOOTH_CH9141_UART_RX<52><EFBFBD><EAB6A8>
RTS <20>鿴SEEKFREE_BLUETOOTH_CH9141.h<>ļ<EFBFBD><C4BC>е<EFBFBD>BLUETOOTH_CH9141_RTS_PIN<49><EFBFBD><EAB6A8>
CTS <20><><EFBFBD><EFBFBD>
CMD <20><><EFBFBD>ջ<EFBFBD><D5BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
------------------------------------
********************************************************************************************************************/
#ifndef SEEKFREE_BLUETOOTH_CH9141_H
#define SEEKFREE_BLUETOOTH_CH9141_H
#include "common.h"
typedef struct
{
uint8 *buffer; // <20><><EFBFBD><EFBFBD>ָ<EFBFBD><D6B8>
uint32 head; // <20><><EFBFBD><EFBFBD>ͷָ<CDB7><D6B8> <20><><EFBFBD><EFBFBD>ָ<EFBFBD><D6B8><EFBFBD>յĻ<D5B5><C4BB><EFBFBD>
uint32 end; // <20><><EFBFBD><EFBFBD>βָ<CEB2><D6B8> <20><><EFBFBD><EFBFBD>ָ<EFBFBD><D6B8><EFBFBD>ǿջ<C7BF><D5BB><EFBFBD><E6A3A8><EFBFBD><EFBFBD>ȫ<EFBFBD>ճ<EFBFBD><D5B3>
uint32 size; // <20><><EFBFBD><EFBFBD>ʣ<EFBFBD><CAA3><EFBFBD><EFBFBD>С
uint32 max; // <20><><EFBFBD><EFBFBD><EFBFBD>ܴ<EFBFBD>С
}fifo_struct;
typedef enum
{
FIFO_SUCCESS,
FIFO_BUFFER_NULL,
FIFO_SPACE_NO_ENOUGH,
FIFO_DATA_NO_ENOUGH,
}fifo_state_enum;
typedef enum
{
FIFO_READ_AND_CLEAN,
FIFO_READ_ONLY,
}fifo_operation_enum;
fifo_state_enum fifo_init (fifo_struct *fifo, uint8 *buffer_addr, uint32 size);
void fifo_head_offset (fifo_struct *fifo, uint32 offset);
void fifo_end_offset (fifo_struct *fifo, uint32 offset);
void fifo_clear (fifo_struct *fifo);
uint32 fifo_used (fifo_struct *fifo);
fifo_state_enum fifo_read_buffer (fifo_struct *fifo, uint8 *dat, uint32 *length, fifo_operation_enum flag);
fifo_state_enum fifo_write_buffer (fifo_struct *fifo, uint8 *dat, uint32 length);
#define BLUETOOTH_CH9141_INDEX UART_2 // <20><><EFBFBD><EFBFBD>ģ<EFBFBD><C4A3> 1 <20><>Ӧʹ<D3A6>õĴ<C3B5><C4B4>ں<EFBFBD>
#define BLUETOOTH_CH9141_BUAD_RATE 115200 // <20><><EFBFBD><EFBFBD>ģ<EFBFBD><C4A3> 1 <20><>Ӧʹ<D3A6>õĴ<C3B5><C4B4>ڲ<EFBFBD><DAB2><EFBFBD><EFBFBD><EFBFBD>
#define BLUETOOTH_CH9141_TX_PIN UART2_RX_P10_6 // <20><><EFBFBD><EFBFBD>ģ<EFBFBD><C4A3> 1 <20><>Ӧģ<D3A6><C4A3><EFBFBD><EFBFBD> TX Ҫ<>ӵ<EFBFBD><D3B5><EFBFBD>Ƭ<EFBFBD><C6AC><EFBFBD><EFBFBD> RX
#define BLUETOOTH_CH9141_RX_PIN UART2_TX_P10_5 // <20><><EFBFBD><EFBFBD>ģ<EFBFBD><C4A3> 1 <20><>Ӧģ<D3A6><C4A3><EFBFBD><EFBFBD> RX Ҫ<>ӵ<EFBFBD><D3B5><EFBFBD>Ƭ<EFBFBD><C6AC><EFBFBD><EFBFBD> TX
#define BLUETOOTH_CH9141_RTS_PIN P10_2 // <20><><EFBFBD><EFBFBD>ģ<EFBFBD><C4A3> 1 <20><>Ӧģ<D3A6><C4A3><EFBFBD><EFBFBD> RTS <20><><EFBFBD><EFBFBD>
#define BLUETOOTH_CH9141_BUFFER_SIZE 64
#define BLUETOOTH_CH9141_TIMEOUT_COUNT 500
void bluetooth_ch9141_uart_callback (void);
uint8 bluetooth_ch9141_init (void);
uint32 bluetooth_ch9141_send_buff (uint8 *buff, uint32 len);
uint32 bluetooth_ch9141_read_buff (uint8 *buff, uint32 len);
#endif

View File

@@ -1,672 +0,0 @@
/*********************************************************************************************************************
* COPYRIGHT NOTICE
* Copyright (c) 2020,<2C><><EFBFBD>ɿƼ<C9BF>
* All rights reserved.
* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>QQȺ<51><C8BA><EFBFBD><EFBFBD>Ⱥ<EFBFBD><C8BA>824575535
*
* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݰ<EFBFBD>Ȩ<EFBFBD><C8A8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɿƼ<C9BF><C6BC><EFBFBD><EFBFBD>У<EFBFBD>δ<EFBFBD><CEB4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ҵ<EFBFBD><D2B5>;<EFBFBD><CDBE>
* <20><>ӭ<EFBFBD><D3AD>λʹ<CEBB>ò<EFBFBD><C3B2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>޸<EFBFBD><DEB8><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EBB1A3><EFBFBD><EFBFBD><EFBFBD>ɿƼ<C9BF><C6BC>İ<EFBFBD>Ȩ<EFBFBD><C8A8><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
*
* @file <09><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @company <09>ɶ<EFBFBD><C9B6><EFBFBD><EFBFBD>ɿƼ<C9BF><C6BC><EFBFBD><EFBFBD>޹<EFBFBD>˾
* @author <09><><EFBFBD>ɿƼ<C9BF>(QQ3184284598)
* @version <09>鿴doc<6F><63>version<6F>ļ<EFBFBD> <20>汾˵<E6B1BE><CBB5>
* @Software ADS v1.2.2
* @Target core TC264D
* @Taobao https://seekfree.taobao.com/
* @date 2020-3-23
********************************************************************************************************************/
#include "SEEKFREE_FONT.h"
const uint8 tft_ascii[95][16] =
{
//<2F><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>ʽ <20>ֿ<EFBFBD>16 <20>ָ<EFBFBD>16 <20><><EFBFBD><EFBFBD>
{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},/*" ",0*/
{0x00,0x00,0x00,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x00,0x00,0x08,0x08,0x00,0x00},/*"!",1*/
{0x00,0x48,0x24,0x24,0x12,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},/*""",2*/
{0x00,0x00,0x00,0x48,0x48,0x48,0x7E,0x24,0x24,0x24,0x7E,0x24,0x24,0x24,0x00,0x00},/*"#",3*/
{0x00,0x00,0x10,0x3C,0x52,0x52,0x12,0x1C,0x30,0x50,0x50,0x52,0x52,0x3C,0x10,0x10},/*"$",4*/
{0x00,0x00,0x00,0x22,0x25,0x15,0x15,0x0D,0x2A,0x58,0x54,0x54,0x52,0x22,0x00,0x00},/*"%",5*/
{0x00,0x00,0x00,0x0C,0x12,0x12,0x12,0x0A,0x76,0x25,0x29,0x19,0x91,0x6E,0x00,0x00},/*"&",6*/
{0x00,0x06,0x04,0x04,0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},/*"'",7*/
{0x00,0x40,0x20,0x10,0x10,0x08,0x08,0x08,0x08,0x08,0x08,0x10,0x10,0x20,0x40,0x00},/*"(",8*/
{0x00,0x02,0x04,0x08,0x08,0x10,0x10,0x10,0x10,0x10,0x10,0x08,0x08,0x04,0x02,0x00},/*")",9*/
{0x00,0x00,0x00,0x00,0x08,0x08,0x6B,0x1C,0x1C,0x6B,0x08,0x08,0x00,0x00,0x00,0x00},/*"*",10*/
{0x00,0x00,0x00,0x00,0x00,0x10,0x10,0x10,0xFE,0x10,0x10,0x10,0x00,0x00,0x00,0x00},/*"+",11*/
{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x06,0x04,0x04,0x02},/*",",12*/
{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x7E,0x00,0x00,0x00,0x00,0x00,0x00,0x00},/*"-",13*/
{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x06,0x06,0x00,0x00},/*".",14*/
{0x00,0x00,0x40,0x20,0x20,0x20,0x10,0x10,0x08,0x08,0x08,0x04,0x04,0x02,0x02,0x00},/*"/",15*/
{0x00,0x00,0x00,0x18,0x24,0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x24,0x18,0x00,0x00},/*"0",16*/
{0x00,0x00,0x00,0x10,0x1C,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x7C,0x00,0x00},/*"1",17*/
{0x00,0x00,0x00,0x3C,0x42,0x42,0x42,0x40,0x20,0x10,0x08,0x04,0x42,0x7E,0x00,0x00},/*"2",18*/
{0x00,0x00,0x00,0x3C,0x42,0x42,0x40,0x20,0x18,0x20,0x40,0x42,0x42,0x3C,0x00,0x00},/*"3",19*/
{0x00,0x00,0x00,0x20,0x30,0x30,0x28,0x24,0x24,0x22,0xFE,0x20,0x20,0xF8,0x00,0x00},/*"4",20*/
{0x00,0x00,0x00,0x7E,0x02,0x02,0x02,0x1E,0x22,0x40,0x40,0x42,0x22,0x1C,0x00,0x00},/*"5",21*/
{0x00,0x00,0x00,0x18,0x24,0x02,0x02,0x3A,0x46,0x42,0x42,0x42,0x44,0x38,0x00,0x00},/*"6",22*/
{0x00,0x00,0x00,0x7E,0x42,0x20,0x20,0x10,0x10,0x08,0x08,0x08,0x08,0x08,0x00,0x00},/*"7",23*/
{0x00,0x00,0x00,0x3C,0x42,0x42,0x42,0x24,0x18,0x24,0x42,0x42,0x42,0x3C,0x00,0x00},/*"8",24*/
{0x00,0x00,0x00,0x1C,0x22,0x42,0x42,0x42,0x62,0x5C,0x40,0x40,0x24,0x18,0x00,0x00},/*"9",25*/
{0x00,0x00,0x00,0x00,0x00,0x00,0x18,0x18,0x00,0x00,0x00,0x00,0x18,0x18,0x00,0x00},/*":",26*/
{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x08,0x00,0x00,0x00,0x00,0x00,0x08,0x08,0x08},/*";",27*/
{0x00,0x00,0x00,0x40,0x20,0x10,0x08,0x04,0x02,0x04,0x08,0x10,0x20,0x40,0x00,0x00},/*"<",28*/
{0x00,0x00,0x00,0x00,0x00,0x00,0x7E,0x00,0x00,0x7E,0x00,0x00,0x00,0x00,0x00,0x00},/*"=",29*/
{0x00,0x00,0x00,0x02,0x04,0x08,0x10,0x20,0x40,0x20,0x10,0x08,0x04,0x02,0x00,0x00},/*">",30*/
{0x00,0x00,0x00,0x3C,0x42,0x42,0x46,0x20,0x10,0x10,0x10,0x00,0x18,0x18,0x00,0x00},/*"?",31*/
{0x00,0x00,0x00,0x1C,0x22,0x5A,0x55,0x55,0x55,0x55,0x55,0x3A,0x42,0x3C,0x00,0x00},/*"@",32*/
{0x00,0x00,0x00,0x08,0x08,0x18,0x14,0x14,0x24,0x3C,0x22,0x42,0x42,0xE7,0x00,0x00},/*"A",33*/
{0x00,0x00,0x00,0x1F,0x22,0x22,0x22,0x1E,0x22,0x42,0x42,0x42,0x22,0x1F,0x00,0x00},/*"B",34*/
{0x00,0x00,0x00,0x7C,0x42,0x42,0x01,0x01,0x01,0x01,0x01,0x42,0x22,0x1C,0x00,0x00},/*"C",35*/
{0x00,0x00,0x00,0x1F,0x22,0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x22,0x1F,0x00,0x00},/*"D",36*/
{0x00,0x00,0x00,0x3F,0x42,0x12,0x12,0x1E,0x12,0x12,0x02,0x42,0x42,0x3F,0x00,0x00},/*"E",37*/
{0x00,0x00,0x00,0x3F,0x42,0x12,0x12,0x1E,0x12,0x12,0x02,0x02,0x02,0x07,0x00,0x00},/*"F",38*/
{0x00,0x00,0x00,0x3C,0x22,0x22,0x01,0x01,0x01,0x71,0x21,0x22,0x22,0x1C,0x00,0x00},/*"G",39*/
{0x00,0x00,0x00,0xE7,0x42,0x42,0x42,0x42,0x7E,0x42,0x42,0x42,0x42,0xE7,0x00,0x00},/*"H",40*/
{0x00,0x00,0x00,0x3E,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x3E,0x00,0x00},/*"I",41*/
{0x00,0x00,0x00,0x7C,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x11,0x0F},/*"J",42*/
{0x00,0x00,0x00,0x77,0x22,0x12,0x0A,0x0E,0x0A,0x12,0x12,0x22,0x22,0x77,0x00,0x00},/*"K",43*/
{0x00,0x00,0x00,0x07,0x02,0x02,0x02,0x02,0x02,0x02,0x02,0x02,0x42,0x7F,0x00,0x00},/*"L",44*/
{0x00,0x00,0x00,0x77,0x36,0x36,0x36,0x36,0x36,0x2A,0x2A,0x2A,0x2A,0x6B,0x00,0x00},/*"M",45*/
{0x00,0x00,0x00,0xE3,0x46,0x46,0x4A,0x4A,0x52,0x52,0x52,0x62,0x62,0x47,0x00,0x00},/*"N",46*/
{0x00,0x00,0x00,0x1C,0x22,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x22,0x1C,0x00,0x00},/*"O",47*/
{0x00,0x00,0x00,0x3F,0x42,0x42,0x42,0x42,0x3E,0x02,0x02,0x02,0x02,0x07,0x00,0x00},/*"P",48*/
{0x00,0x00,0x00,0x1C,0x22,0x41,0x41,0x41,0x41,0x41,0x41,0x4D,0x32,0x1C,0x60,0x00},/*"Q",49*/
{0x00,0x00,0x00,0x3F,0x42,0x42,0x42,0x3E,0x12,0x12,0x22,0x22,0x42,0xC7,0x00,0x00},/*"R",50*/
{0x00,0x00,0x00,0x7C,0x42,0x42,0x02,0x04,0x18,0x20,0x40,0x42,0x42,0x3E,0x00,0x00},/*"S",51*/
{0x00,0x00,0x00,0x7F,0x49,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x1C,0x00,0x00},/*"T",52*/
{0x00,0x00,0x00,0xE7,0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x3C,0x00,0x00},/*"U",53*/
{0x00,0x00,0x00,0xE7,0x42,0x42,0x22,0x24,0x24,0x14,0x14,0x18,0x08,0x08,0x00,0x00},/*"V",54*/
{0x00,0x00,0x00,0x6B,0x2A,0x2A,0x2A,0x2A,0x2A,0x36,0x14,0x14,0x14,0x14,0x00,0x00},/*"W",55*/
{0x00,0x00,0x00,0xE7,0x42,0x24,0x24,0x18,0x18,0x18,0x24,0x24,0x42,0xE7,0x00,0x00},/*"X",56*/
{0x00,0x00,0x00,0x77,0x22,0x22,0x14,0x14,0x08,0x08,0x08,0x08,0x08,0x1C,0x00,0x00},/*"Y",57*/
{0x00,0x00,0x00,0x7E,0x21,0x20,0x10,0x10,0x08,0x04,0x04,0x42,0x42,0x3F,0x00,0x00},/*"Z",58*/
{0x00,0x78,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x78,0x00},/*"[",59*/
{0x00,0x00,0x02,0x04,0x04,0x04,0x08,0x08,0x08,0x10,0x10,0x20,0x20,0x20,0x40,0x40},/*"\",60*/
{0x00,0x1E,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x1E,0x00},/*"]",61*/
{0x00,0x18,0x24,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},/*"^",62*/
{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF},/*"_",63*/
{0x00,0x06,0x08,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},/*"`",64*/
{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1C,0x22,0x30,0x2C,0x22,0x32,0x6C,0x00,0x00},/*"a",65*/
{0x00,0x00,0x00,0x00,0x03,0x02,0x02,0x1A,0x26,0x42,0x42,0x42,0x26,0x1A,0x00,0x00},/*"b",66*/
{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x38,0x44,0x02,0x02,0x02,0x44,0x38,0x00,0x00},/*"c",67*/
{0x00,0x00,0x00,0x00,0x60,0x40,0x40,0x7C,0x42,0x42,0x42,0x42,0x62,0xDC,0x00,0x00},/*"d",68*/
{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x3C,0x42,0x42,0x7E,0x02,0x42,0x3C,0x00,0x00},/*"e",69*/
{0x00,0x00,0x00,0x00,0x30,0x48,0x08,0x3E,0x08,0x08,0x08,0x08,0x08,0x3E,0x00,0x00},/*"f",70*/
{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x7C,0x22,0x22,0x1C,0x02,0x3C,0x42,0x42,0x3C},/*"g",71*/
{0x00,0x00,0x00,0x00,0x03,0x02,0x02,0x3A,0x46,0x42,0x42,0x42,0x42,0xE7,0x00,0x00},/*"h",72*/
{0x00,0x00,0x00,0x0C,0x0C,0x00,0x00,0x0E,0x08,0x08,0x08,0x08,0x08,0x3E,0x00,0x00},/*"i",73*/
{0x00,0x00,0x00,0x30,0x30,0x00,0x00,0x38,0x20,0x20,0x20,0x20,0x20,0x20,0x22,0x1E},/*"j",74*/
{0x00,0x00,0x00,0x00,0x03,0x02,0x02,0x72,0x12,0x0A,0x0E,0x12,0x22,0x77,0x00,0x00},/*"k",75*/
{0x00,0x00,0x00,0x08,0x0E,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x3E,0x00,0x00},/*"l",76*/
{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x7F,0x92,0x92,0x92,0x92,0x92,0xB7,0x00,0x00},/*"m",77*/
{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x3B,0x46,0x42,0x42,0x42,0x42,0xE7,0x00,0x00},/*"n",78*/
{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x3C,0x42,0x42,0x42,0x42,0x42,0x3C,0x00,0x00},/*"o",79*/
{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1B,0x26,0x42,0x42,0x42,0x26,0x1A,0x02,0x07},/*"p",80*/
{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x58,0x64,0x42,0x42,0x42,0x64,0x58,0x40,0xE0},/*"q",81*/
{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x77,0x4C,0x04,0x04,0x04,0x04,0x1F,0x00,0x00},/*"r",82*/
{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x7C,0x42,0x02,0x3C,0x40,0x42,0x3E,0x00,0x00},/*"s",83*/
{0x00,0x00,0x00,0x00,0x00,0x08,0x08,0x3E,0x08,0x08,0x08,0x08,0x48,0x30,0x00,0x00},/*"t",84*/
{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x63,0x42,0x42,0x42,0x42,0x62,0xDC,0x00,0x00},/*"u",85*/
{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x77,0x22,0x22,0x14,0x14,0x08,0x08,0x00,0x00},/*"v",86*/
{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xDB,0x91,0x52,0x5A,0x2A,0x24,0x24,0x00,0x00},/*"w",87*/
{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x6E,0x24,0x18,0x18,0x18,0x24,0x76,0x00,0x00},/*"x",88*/
{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xE7,0x42,0x24,0x24,0x18,0x18,0x08,0x08,0x06},/*"y",89*/
{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x7E,0x22,0x10,0x08,0x08,0x44,0x7E,0x00,0x00},/*"z",90*/
{0x00,0xC0,0x20,0x20,0x20,0x20,0x20,0x20,0x10,0x20,0x20,0x20,0x20,0x20,0xC0,0x00},/*"{",91*/
{0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10},/*"|",92*/
{0x00,0x03,0x04,0x04,0x04,0x04,0x04,0x04,0x08,0x04,0x04,0x04,0x04,0x04,0x03,0x00},/*"}",93*/
{0x04,0x5A,0x20,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},/*"~",94*/
};
//16λBMP 40X40 QQͼ<51><CDBC>ȡģ<C8A1><C4A3><EFBFBD><EFBFBD>
//Image2LCDȡģѡ<C4A3><D1A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
//ˮƽɨ<C6BD><C9A8>
//16λ
//40X40
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͼ<EFBFBD><CDBC>ͷ<EFBFBD><CDB7><EFBFBD><EFBFBD>
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
//<2F>Զ<EFBFBD><D4B6><EFBFBD><EFBFBD><EFBFBD>
//<2F><>λ<EFBFBD><CEBB>ǰ
const unsigned char gImage_qq[3200] = { /*0X00,0X10,0X28,0X00,0X28,0X00,0X01,0X1B,*/
0XDB,0XDE,0X5D,0XEF,0X5D,0XEF,0X7D,0XEF,0X5D,0XEF,0X5D,0XEF,0X5D,0XEF,0X5D,0XEF,
0X5D,0XEF,0X5D,0XEF,0X5D,0XEF,0X5D,0XEF,0X5D,0XEF,0X5D,0XEF,0X5D,0XEF,0XBE,0XF7,
0XFF,0XFF,0XDE,0XFF,0X38,0XC6,0X92,0X8C,0X8E,0X6B,0X6E,0X6B,0X10,0X7C,0X96,0XAD,
0X3C,0XE7,0XFF,0XFF,0XFF,0XFF,0X7D,0XEF,0X5D,0XEF,0X5D,0XEF,0X5D,0XEF,0X5D,0XEF,
0X5D,0XEF,0X5D,0XEF,0X5D,0XEF,0X5D,0XEF,0X5D,0XEF,0X5D,0XEF,0X5D,0XEF,0X5D,0XEF,
0X5D,0XEF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X5D,0XEF,
0X15,0X9D,0X4F,0X63,0X6C,0X42,0X0A,0X32,0X88,0X29,0X46,0X19,0X25,0X19,0X45,0X21,
0XE8,0X31,0X8E,0X6B,0X18,0XBE,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
0X5D,0XEF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XDF,0XFF,0XF5,0X9C,0X0F,0X53,
0X10,0X4B,0X51,0X53,0X0F,0X4B,0X6C,0X3A,0XE9,0X31,0X67,0X21,0X25,0X19,0XE4,0X10,
0XA3,0X08,0X62,0X00,0X83,0X08,0X8A,0X4A,0X59,0XC6,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
0X5D,0XEF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X1C,0XE7,0X4F,0X5B,0XB3,0X63,0XB8,0X7C,
0XF5,0X63,0X11,0X43,0X4D,0X32,0XEA,0X29,0X88,0X21,0X26,0X19,0X05,0X19,0X05,0X19,
0X04,0X11,0X04,0X11,0XE4,0X10,0X83,0X00,0XA3,0X08,0X72,0X8C,0XFF,0XFF,0XFF,0XFF,
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
0X5D,0XEF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XDB,0XDE,0X4B,0X3A,0XF0,0X42,0X35,0X6C,0X54,0X4B,
0XB1,0X32,0X2E,0X2A,0XEB,0X21,0XA9,0X21,0X67,0X19,0X05,0X19,0X04,0X11,0X04,0X11,
0X04,0X11,0X04,0X11,0X04,0X11,0X05,0X19,0XE4,0X10,0X42,0X00,0XAF,0X73,0XFF,0XFF,
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
0X5D,0XEF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
0XFF,0XFF,0XFF,0XFF,0X5D,0XEF,0X09,0X32,0X4C,0X32,0X10,0X4B,0X8F,0X32,0X4F,0X2A,
0X2E,0X2A,0XCC,0X19,0X89,0X19,0X89,0X21,0X47,0X19,0X05,0X19,0X04,0X11,0X04,0X11,
0XC4,0X10,0XC4,0X10,0X04,0X11,0X04,0X11,0X04,0X11,0XE4,0X10,0X42,0X00,0X31,0X84,
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
0X5D,0XEF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
0XFF,0XFF,0XFF,0XFF,0XEC,0X52,0X47,0X19,0X4C,0X32,0X0B,0X2A,0XEC,0X21,0XEC,0X21,
0X0C,0X22,0X91,0X5B,0XEE,0X4A,0X06,0X11,0X26,0X19,0X04,0X19,0XE4,0X10,0XE4,0X10,
0XA7,0X29,0X66,0X21,0XA3,0X08,0X05,0X19,0X04,0X11,0X04,0X11,0XE4,0X10,0X82,0X00,
0XF7,0XBD,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
0X5D,0XEF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
0XFF,0XFF,0X35,0XA5,0X83,0X08,0X88,0X21,0X88,0X21,0X89,0X21,0XAA,0X21,0X8A,0X21,
0X6B,0X42,0X71,0X8C,0XFF,0XFF,0X72,0X8C,0X83,0X08,0X04,0X11,0XC4,0X08,0X29,0X42,
0XFB,0XDE,0X5D,0XEF,0XEC,0X5A,0X83,0X08,0X04,0X11,0X04,0X11,0X04,0X11,0X83,0X08,
0XE8,0X31,0XDF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
0X5D,0XEF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
0XBE,0XF7,0XC7,0X31,0XC4,0X10,0X25,0X19,0X26,0X19,0X47,0X19,0X47,0X19,0XA8,0X29,
0X8A,0X52,0X28,0X4A,0X55,0XAD,0XFF,0XFF,0XE8,0X31,0XA3,0X08,0X05,0X19,0X4D,0X6B,
0X4D,0X6B,0XFF,0XFF,0X7D,0XEF,0X45,0X21,0XC4,0X10,0X04,0X11,0X04,0X11,0X04,0X11,
0X62,0X00,0X76,0XAD,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
0X5D,0XEF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
0X96,0XB5,0X62,0X00,0X04,0X11,0X04,0X19,0X05,0X11,0X05,0X19,0XC4,0X08,0X8B,0X4A,
0XB6,0XB5,0X5D,0XEF,0XF7,0XBD,0XFF,0XFF,0X8E,0X6B,0X62,0X00,0X29,0X42,0XAA,0X5A,
0X08,0X42,0XFF,0XFF,0XFF,0XFF,0XCC,0X52,0X83,0X08,0X04,0X11,0X04,0X11,0X04,0X11,
0XA3,0X08,0XAD,0X52,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
0XBE,0XF7,0XFF,0XFF,0XDF,0XFF,0XDB,0XDE,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
0X4E,0X63,0X62,0X00,0X04,0X11,0X04,0X11,0X04,0X11,0XE4,0X10,0X62,0X00,0X8E,0X63,
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XCF,0X73,0X01,0X00,0XF3,0X9C,0X2C,0X63,
0X96,0XB5,0XFF,0XFF,0XFF,0XFF,0X2D,0X5B,0X83,0X00,0X04,0X11,0X04,0X11,0X04,0X11,
0XE4,0X10,0X67,0X21,0X3D,0XEF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
0XB7,0XB5,0X76,0XAD,0X7D,0XEF,0XCB,0X52,0XB3,0X94,0XFF,0XFF,0XFF,0XFF,0XDF,0XFF,
0XE8,0X31,0XA3,0X08,0X04,0X11,0X04,0X11,0X04,0X11,0X04,0X11,0XA3,0X08,0X49,0X42,
0XFF,0XF7,0XFF,0XF7,0XFF,0XFF,0XFF,0XFF,0X6A,0X4A,0X01,0X00,0X72,0X84,0XFF,0XFF,
0XFF,0XFF,0XFF,0XF7,0XDF,0XEF,0X09,0X3A,0XA3,0X08,0X04,0X11,0X04,0X11,0X04,0X11,
0X04,0X11,0X05,0X11,0X18,0XBE,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
0XF0,0X7B,0X62,0X00,0XE8,0X31,0XC7,0X31,0X41,0X00,0X35,0XA5,0XFF,0XFF,0X5D,0XEF,
0X46,0X21,0XC4,0X10,0X04,0X11,0X04,0X11,0X04,0X11,0X04,0X11,0XE4,0X10,0XA3,0X08,
0X76,0X9D,0XFF,0XF7,0XFF,0XFF,0XB7,0XAD,0XA3,0X08,0XA3,0X08,0XC7,0X31,0X9E,0XE7,
0XFF,0XF7,0XFF,0XF7,0X76,0XA5,0XA3,0X08,0XE4,0X10,0X04,0X11,0X04,0X11,0X04,0X11,
0X05,0X11,0X05,0X11,0X35,0XA5,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
0XDB,0XDE,0XA7,0X29,0X83,0X00,0XC4,0X10,0XC4,0X10,0XC4,0X10,0X1C,0XE7,0X9E,0XEF,
0X05,0X11,0XE4,0X10,0X04,0X11,0X04,0X11,0X04,0X11,0X04,0X11,0X04,0X19,0XC4,0X08,
0XE5,0X10,0XD1,0X6B,0XD1,0X6B,0XC5,0X08,0X64,0X00,0XA5,0X08,0X43,0X00,0X2B,0X32,
0X77,0X9D,0XB3,0X84,0X25,0X19,0XC4,0X10,0X04,0X11,0X04,0X11,0X04,0X11,0X04,0X11,
0X25,0X19,0X26,0X09,0X35,0X9D,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
0XFF,0XFF,0XAF,0X73,0X62,0X00,0X04,0X19,0X05,0X19,0X82,0X00,0X0D,0X5B,0X8E,0X9B,
0X62,0X10,0X05,0X11,0X04,0X11,0X04,0X11,0X04,0X19,0XE4,0X10,0X85,0X00,0X05,0X11,
0XC4,0X39,0X81,0X5A,0X40,0X7B,0X22,0X9C,0X43,0XAC,0X03,0XA4,0X83,0X9B,0X82,0X72,
0X82,0X49,0XC2,0X18,0XA4,0X00,0XC5,0X00,0XE4,0X10,0X04,0X19,0X04,0X11,0X05,0X19,
0X47,0X19,0X67,0X11,0XEC,0X5A,0XBE,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
0XDF,0XFF,0XDB,0XD6,0XC4,0X10,0XE4,0X10,0X04,0X11,0X05,0X11,0XA4,0X18,0X01,0XC0,
0X83,0X88,0XE4,0X00,0X05,0X19,0X04,0X19,0XC5,0X08,0X44,0X21,0X43,0X83,0X23,0XD5,
0X42,0XFE,0XE4,0XFE,0X27,0XFF,0X07,0XFF,0XA4,0XFE,0X64,0XFE,0X03,0XFE,0XA3,0XFD,
0XE2,0XFC,0X42,0XEC,0X83,0XB3,0X24,0X62,0XE5,0X10,0XC4,0X08,0X04,0X19,0X26,0X19,
0XA8,0X19,0X87,0X21,0X00,0X90,0XD3,0XBC,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
0X5D,0XEF,0XFF,0XFF,0XF0,0X7B,0X42,0X00,0X05,0X19,0X05,0X11,0X83,0X28,0X01,0XD0,
0X44,0XF8,0XA3,0X48,0XE4,0X00,0XC5,0X08,0X44,0X5A,0X02,0XED,0XE2,0XFD,0X02,0XFE,
0X66,0XFE,0X74,0XFF,0XB8,0XFF,0X73,0XFF,0XE7,0XF6,0XA6,0XF6,0X45,0XF6,0XA4,0XF5,
0XC3,0XFC,0X62,0XFC,0XC2,0XFC,0XC2,0XFC,0XE3,0XCB,0XC4,0X49,0X06,0X11,0X88,0X19,
0X87,0X01,0XA4,0X90,0X01,0XF8,0XEC,0X9A,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
0X5D,0XEF,0XFF,0XFF,0X9E,0XF7,0XE8,0X31,0X83,0X00,0X05,0X09,0X82,0X40,0X01,0XC0,
0X23,0XF8,0X85,0XF0,0XA3,0X48,0XA4,0X00,0X44,0X5A,0X02,0XFD,0X23,0XCC,0XC2,0XDC,
0X04,0XFE,0X28,0XFE,0X48,0XF6,0X46,0XF6,0X24,0XF6,0XE4,0XF5,0X64,0XFD,0XE3,0XFC,
0X62,0XFC,0XC2,0XFC,0X02,0XE4,0X02,0XDC,0XE2,0XFC,0XA4,0X7A,0X48,0X01,0X67,0X01,
0XC4,0X78,0X24,0XF8,0X02,0XF8,0X84,0XB0,0X7D,0XE7,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
0X5D,0XEF,0XFF,0XFF,0XFF,0XFF,0XDB,0XDE,0X25,0X19,0XA3,0X00,0XC4,0X38,0X02,0XE0,
0X22,0XD8,0X44,0XF8,0XA6,0XF8,0XA4,0X78,0X63,0X00,0X43,0X21,0X83,0X72,0X83,0X39,
0X82,0X9B,0X21,0XF5,0X61,0XFD,0X22,0XFD,0XE2,0XFC,0XA2,0XFC,0X42,0XFC,0X42,0XFC,
0X42,0XFC,0X22,0XAB,0X83,0X41,0XC3,0X92,0X04,0X52,0X26,0X01,0X25,0X19,0XA4,0X98,
0X44,0XF8,0X23,0XF8,0X02,0XF8,0XA4,0XD0,0X9E,0XEF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
0X5D,0XEF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X9A,0XD6,0X87,0X29,0XA5,0X00,0X43,0XB8,
0X22,0XF8,0X23,0XE0,0X65,0XF8,0XE8,0XF8,0X07,0XC9,0X83,0X48,0X42,0X00,0XA3,0X00,
0X84,0X00,0X63,0X29,0XA2,0X7A,0X62,0XB3,0XA2,0XCB,0X62,0XD3,0X02,0XBB,0X82,0X8A,
0X83,0X39,0XA4,0X00,0XE5,0X00,0XE5,0X00,0XE5,0X08,0XC4,0X60,0X64,0XD8,0X44,0XF8,
0X24,0XF8,0X23,0XF8,0X02,0XF8,0X83,0X88,0XDB,0XC6,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
0X5D,0XEF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X3D,0XE7,0X50,0X5B,0X08,0X31,
0X23,0XE8,0X43,0XF8,0X44,0XF0,0X65,0XF8,0X09,0XF9,0XAB,0XF9,0X89,0XD1,0X06,0X89,
0XA3,0X48,0X42,0X18,0X02,0X00,0X42,0X00,0X61,0X00,0X82,0X00,0X62,0X00,0X62,0X00,
0X83,0X00,0XA3,0X20,0XC4,0X50,0XA5,0X88,0X85,0XD8,0X65,0XF8,0X44,0XF8,0X44,0XF8,
0X23,0XF8,0X23,0XF8,0X03,0XD0,0X82,0X10,0XC7,0X29,0X5D,0XEF,0XFF,0XFF,0XFF,0XFF,
0X5D,0XEF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X6C,0X32,
0XA5,0X38,0X02,0XD8,0X23,0XF8,0X65,0XF8,0X66,0XF8,0XA7,0XF8,0X4A,0XF9,0X0C,0XFA,
0X4D,0XFA,0X4C,0XEA,0X0B,0XD2,0XA9,0XB9,0X68,0XB1,0X47,0XA9,0X27,0XB1,0X07,0XB9,
0X07,0XD1,0XE7,0XE8,0XC7,0XF8,0XA7,0XF8,0X65,0XF8,0X65,0XF8,0X44,0XF8,0X23,0XF8,
0X03,0XF8,0X02,0XD0,0XA3,0X28,0X05,0X09,0XC4,0X08,0XEC,0X5A,0XFF,0XFF,0XFF,0XFF,
0X5D,0XEF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFB,0XDE,0X05,0X19,
0XC4,0X00,0XA7,0X41,0XE6,0XC0,0X03,0XF8,0X86,0XF8,0XA7,0XF8,0X87,0XF8,0X86,0XF8,
0XC7,0XF8,0X29,0XF9,0X8A,0XF9,0XAB,0XF9,0XAB,0XF9,0X8B,0XF9,0X6A,0XF9,0X29,0XF9,
0X08,0XF9,0XC7,0XF8,0XA6,0XF8,0X86,0XF8,0X65,0XF8,0X64,0XF8,0X23,0XF8,0X02,0XF0,
0X06,0XB1,0X25,0X29,0XE4,0X00,0XE4,0X10,0X25,0X19,0X25,0X19,0X14,0X9D,0XFF,0XFF,
0X5D,0XEF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X96,0XAD,0X62,0X00,
0X82,0X08,0X35,0X95,0XBA,0XCE,0X8B,0XA2,0X44,0XD0,0X25,0XF8,0X87,0XF8,0XA7,0XF8,
0XC7,0XF8,0XA7,0XF8,0X87,0XF8,0X86,0XF8,0X86,0XF8,0X86,0XF8,0X87,0XF8,0XA7,0XF8,
0XA7,0XF8,0XA6,0XF8,0X85,0XF8,0X65,0XF8,0X64,0XF8,0X24,0XF0,0X64,0XB8,0X0D,0X93,
0XBB,0XB6,0XCF,0X63,0X83,0X08,0X04,0X11,0XE4,0X10,0X66,0X21,0X49,0X3A,0X5D,0XEF,
0X5D,0XEF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XD3,0X94,0X42,0X00,
0XE4,0X10,0XBB,0XCE,0XFF,0XFF,0XBE,0XE7,0X76,0XB5,0XCC,0XAA,0X07,0XC1,0X45,0XE0,
0X45,0XF8,0X46,0XF8,0X66,0XF8,0X86,0XF8,0X86,0XF8,0X86,0XF8,0X86,0XF8,0X65,0XF8,
0X45,0XF8,0X65,0XF8,0X65,0XE8,0X44,0XD0,0X43,0XA8,0X01,0X88,0X82,0X90,0X3C,0XD7,
0XFF,0XEF,0X55,0X95,0X83,0X08,0X04,0X11,0X04,0X11,0X05,0X19,0X46,0X19,0XB3,0X94,
0X5D,0XEF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XB3,0X94,0X41,0X00,
0X86,0X21,0X5D,0XDF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XDF,0XE7,0X7A,0XC6,0XD3,0XB4,
0X4E,0XB3,0X2A,0XC2,0X68,0XD1,0XE6,0XE0,0XA6,0XE8,0XA5,0XE8,0XA5,0XE8,0XE6,0XD8,
0X88,0XC9,0X06,0XA9,0X22,0XA8,0X02,0XA8,0X00,0XA0,0X00,0XC8,0X00,0XD8,0XF7,0XE5,
0XFF,0XE7,0XF8,0XAD,0XC4,0X10,0XE4,0X10,0X04,0X11,0XE4,0X10,0X05,0X11,0X8B,0X4A,
0X5D,0XEF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X55,0XA5,0X41,0X00,
0XA7,0X29,0X5D,0XDF,0XFF,0XF7,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
0XFF,0XEF,0X7D,0XDF,0XDB,0XCE,0X59,0XCE,0XF8,0XCD,0XD7,0XCD,0XF7,0XC5,0X79,0XCE,
0XFB,0XBE,0XAB,0XA2,0X03,0XF0,0X45,0XF8,0X42,0XD0,0X43,0XE8,0X00,0XF0,0X72,0XD4,
0XFF,0XDF,0X39,0XAE,0XE4,0X10,0XE4,0X10,0X04,0X11,0XE4,0X10,0X05,0X11,0X87,0X29,
0X5D,0XEF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X59,0XCE,0X83,0X08,
0X46,0X21,0X1C,0XD7,0XFF,0XF7,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
0XFF,0XEF,0X8B,0XBA,0X04,0XF8,0X45,0XF8,0X62,0XE0,0X44,0XF0,0X00,0XF8,0X8E,0XDB,
0XFF,0XDF,0XF8,0XA5,0XC4,0X10,0XE4,0X10,0XE4,0X10,0X04,0X11,0XE4,0X10,0X25,0X19,
0X5D,0XEF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XBE,0XF7,0X87,0X29,
0X83,0X08,0X39,0XB6,0XFF,0XF7,0XDF,0XF7,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
0XBE,0XE7,0X4A,0XBA,0X03,0XF8,0X45,0XF8,0X64,0XF8,0X44,0XF8,0X00,0XF8,0X6E,0XE3,
0XFF,0XD7,0XF4,0X8C,0X83,0X08,0X04,0X11,0XE4,0X10,0XE4,0X10,0XE4,0X10,0X05,0X19,
0X5D,0XEF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XEF,0X73,
0X00,0X00,0X72,0X84,0XFF,0XEF,0XBE,0XEF,0XDF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
0XDF,0XE7,0X8B,0XBA,0X03,0XF8,0X45,0XF8,0X45,0XF8,0X23,0XF8,0X00,0XF8,0XD3,0XD4,
0XFF,0XD7,0X4E,0X5B,0X21,0X00,0X29,0X3A,0X55,0XA5,0X83,0X08,0XC4,0X10,0X25,0X19,
0X5D,0XEF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFB,0XDE,
0XA3,0X08,0XE8,0X31,0X9E,0XDF,0X9E,0XE7,0XBF,0XEF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
0XFF,0XF7,0X51,0XBC,0X02,0XE0,0X03,0XF8,0X03,0XF0,0X43,0XE0,0XEC,0XC2,0X7E,0XCF,
0XFC,0XBE,0X46,0X21,0X21,0X00,0XD3,0X94,0XFF,0XFF,0X51,0X84,0X00,0X00,0X87,0X29,
0X5D,0XEF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
0X51,0X84,0X00,0X00,0XF4,0X8C,0XFF,0XEF,0X9E,0XE7,0XBF,0XEF,0XDF,0XFF,0XFF,0XFF,
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
0XFF,0XFF,0X3D,0XDF,0X55,0XBD,0X52,0XBC,0X72,0XBC,0XB7,0XB5,0X5D,0XC7,0XFF,0XDF,
0XF0,0X6B,0X00,0X00,0X09,0X3A,0XBF,0XF7,0XFF,0XFF,0XFF,0XFF,0X14,0X9D,0X55,0XA5,
0X5D,0XEF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
0XFF,0XFF,0XAC,0X4A,0XA4,0X08,0XBB,0XBE,0XDF,0XE7,0X7E,0XE7,0XBE,0XEF,0XDF,0XF7,
0XDF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
0XDF,0XFF,0XDF,0XF7,0XFF,0XEF,0XDF,0XDF,0XBF,0XD7,0X9E,0XD7,0XDF,0XDF,0XD8,0XA5,
0X83,0X08,0X26,0X11,0XDB,0XD6,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
0X5D,0XEF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
0X79,0XEE,0X8B,0XDC,0X21,0X31,0XA9,0X21,0X3D,0XCF,0XBF,0XDF,0X7E,0XDF,0X9E,0XE7,
0XBE,0XEF,0XBF,0XEF,0XDF,0XF7,0XDF,0XF7,0XDF,0XF7,0XDF,0XF7,0XDF,0XF7,0XBF,0XEF,
0XBE,0XEF,0X9E,0XE7,0X7E,0XDF,0X5E,0XD7,0X5E,0XD7,0XDF,0XDF,0X9A,0XB6,0X26,0X19,
0X42,0X08,0XED,0XA3,0XBF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
0X5D,0XEF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X74,0XDD,
0XC0,0XDB,0X00,0XFE,0X42,0XEE,0X02,0X42,0X89,0X21,0X7B,0XB6,0XDF,0XDF,0X7E,0XD7,
0X7E,0XDF,0X7E,0XDF,0X9E,0XE7,0X9E,0XE7,0X9E,0XE7,0X9E,0XE7,0X9E,0XE7,0X7E,0XDF,
0X7E,0XDF,0X5D,0XD7,0X5D,0XD7,0X9E,0XDF,0XFF,0XE7,0XF8,0XA5,0X07,0X11,0XE3,0X18,
0X02,0XC5,0X60,0XFD,0XE6,0XD3,0XDB,0XEE,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
0X5D,0XEF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X9E,0XF7,0X84,0XBA,
0XC1,0XFC,0X42,0XFE,0X82,0XFE,0XA2,0XFE,0X81,0X83,0X45,0X21,0X74,0X74,0X5E,0XC7,
0XDF,0XDF,0X7E,0XD7,0X5E,0XD7,0X5D,0XD7,0X5E,0XD7,0X5E,0XD7,0X5D,0XD7,0X5D,0XD7,
0X5E,0XD7,0X9E,0XDF,0XFF,0XE7,0X3D,0XC7,0XF1,0X63,0X84,0X08,0X42,0X52,0X26,0XE6,
0X29,0XFF,0X86,0XFE,0XE0,0XF3,0X6A,0XC3,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
0X5D,0XEF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X18,0XDE,0XC1,0XD2,
0XA2,0XFD,0X22,0XFE,0X42,0XFE,0X42,0XFE,0X62,0XFE,0XE2,0XD4,0X41,0X6A,0X49,0X42,
0X53,0X74,0X3B,0XA6,0X3E,0XC7,0XBF,0XD7,0XBF,0XD7,0XBF,0XD7,0XBF,0XDF,0XBF,0XD7,
0X3E,0XC7,0X1A,0XA6,0XF2,0X63,0XA7,0X29,0X82,0X41,0X22,0XB4,0X62,0XFE,0X83,0XFE,
0XAA,0XFE,0X0F,0XFF,0X67,0XFD,0X63,0XBA,0X3C,0XEF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
0X5D,0XEF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X9A,0XE6,0X80,0XD2,
0X21,0XFD,0XC2,0XFD,0XE2,0XF5,0XC2,0XF5,0X82,0XF5,0X82,0XFD,0X62,0XFD,0X61,0XDC,
0X21,0X9B,0X84,0X6A,0XE9,0X6A,0X2C,0X63,0XAF,0X63,0X11,0X74,0X6E,0X63,0X2C,0X63,
0X89,0X5A,0X04,0X52,0X81,0X7A,0XC2,0XCB,0XE2,0XFC,0X62,0XFD,0X82,0XFD,0XC2,0XFD,
0XC2,0XFD,0XE4,0XFD,0X24,0XFD,0X62,0XCA,0X1C,0XE7,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
0X5D,0XEF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XB1,0XCC,
0X81,0XD2,0XC0,0XF3,0XC1,0XFC,0X02,0XFD,0X02,0XFD,0XE2,0XFC,0XC2,0XFC,0XC2,0XFC,
0X81,0XFC,0X80,0XFB,0XC0,0XC9,0XA4,0X81,0X35,0XAD,0X59,0XCE,0X71,0X9C,0X21,0X81,
0X00,0XDA,0XA1,0XFB,0X82,0XFC,0XA2,0XFC,0X82,0XFC,0XA2,0XFC,0X02,0XFD,0X22,0XFD,
0XE2,0XFC,0X00,0XFC,0X60,0XDA,0X90,0XCC,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
0X5D,0XEF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
0X59,0XDE,0X0D,0XC4,0X06,0XCB,0XE4,0XD2,0X03,0XDB,0X03,0XDB,0XE3,0XDA,0XC3,0XD2,
0XA4,0XC2,0X09,0XB3,0XD2,0XBC,0X9E,0XF7,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFB,0XE6,
0X0E,0XB4,0XA6,0XBA,0X83,0XD2,0XE3,0XE2,0X02,0XEB,0X22,0XEB,0X22,0XE3,0X03,0XDB,
0XE4,0XD2,0X6A,0XC3,0XB6,0XD5,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
};
//-------------------------------------------------------------------------------------------------------------------
// ʹ<><CAB9>PCtoLCD2002<30><32><EFBFBD><EFBFBD>ȡģ
// <20><><EFBFBD><EFBFBD><EBA1A2><EFBFBD><EFBFBD>ʽ<EFBFBD><CABD>˳<EFBFBD><CBB3> 16*16
//-------------------------------------------------------------------------------------------------------------------
const uint8 chinese_test[8][16] =
{
{0x00,0x00,0x23,0xFC,0x10,0x40,0x10,0x80,0x01,0x44,0x06,0x68,0xF0,0xB0,0x11,0x28},
{0x16,0x68,0x10,0xA4,0x11,0x24,0x16,0x20,0x10,0xA0,0x28,0x40,0x47,0xFE,0x00,0x00},/*"<22><>",0*/
{0x00,0x00,0xFF,0xC0,0x00,0x40,0x00,0x44,0x00,0x48,0x00,0x50,0x00,0x60,0x00,0x50},
{0x00,0x48,0x00,0x44,0x00,0x20,0x00,0x20,0x00,0x12,0x00,0x0A,0x00,0x06,0x00,0x02},/*"<22><>",1*/
{0x08,0x10,0x1D,0x10,0xF0,0x90,0x10,0x90,0x10,0x10,0xFD,0x10,0x10,0x90,0x38,0x90},
{0x34,0x10,0x50,0x1E,0x53,0xF0,0x90,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10},/*"<22><>",2*/
{0x10,0x20,0x10,0x20,0x10,0x20,0x13,0xFE,0xFC,0x20,0x10,0x20,0x10,0x20,0x15,0xFC},
{0x18,0x84,0x30,0x88,0xD0,0x48,0x10,0x50,0x10,0x20,0x10,0x50,0x51,0x88,0x26,0x06},/*"<22><>",3*/
};
const uint8 oled_6x8[][6] =
{
{ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, // sp
{ 0x00, 0x00, 0x00, 0x2f, 0x00, 0x00 }, // !
{ 0x00, 0x00, 0x07, 0x00, 0x07, 0x00 }, // "
{ 0x00, 0x14, 0x7f, 0x14, 0x7f, 0x14 }, // #
{ 0x00, 0x24, 0x2a, 0x7f, 0x2a, 0x12 }, // $
{ 0x00, 0x62, 0x64, 0x08, 0x13, 0x23 }, // %
{ 0x00, 0x36, 0x49, 0x55, 0x22, 0x50 }, // &
{ 0x00, 0x00, 0x05, 0x03, 0x00, 0x00 }, // '
{ 0x00, 0x00, 0x1c, 0x22, 0x41, 0x00 }, // (
{ 0x00, 0x00, 0x41, 0x22, 0x1c, 0x00 }, // )
{ 0x00, 0x14, 0x08, 0x3E, 0x08, 0x14 }, // *
{ 0x00, 0x08, 0x08, 0x3E, 0x08, 0x08 }, // +
{ 0x00, 0x00, 0x00, 0xA0, 0x60, 0x00 }, // ,
{ 0x00, 0x08, 0x08, 0x08, 0x08, 0x08 }, // -
{ 0x00, 0x00, 0x60, 0x60, 0x00, 0x00 }, // .
{ 0x00, 0x20, 0x10, 0x08, 0x04, 0x02 }, // /
{ 0x00, 0x3E, 0x51, 0x49, 0x45, 0x3E }, // 0
{ 0x00, 0x00, 0x42, 0x7F, 0x40, 0x00 }, // 1
{ 0x00, 0x42, 0x61, 0x51, 0x49, 0x46 }, // 2
{ 0x00, 0x21, 0x41, 0x45, 0x4B, 0x31 }, // 3
{ 0x00, 0x18, 0x14, 0x12, 0x7F, 0x10 }, // 4
{ 0x00, 0x27, 0x45, 0x45, 0x45, 0x39 }, // 5
{ 0x00, 0x3C, 0x4A, 0x49, 0x49, 0x30 }, // 6
{ 0x00, 0x01, 0x71, 0x09, 0x05, 0x03 }, // 7
{ 0x00, 0x36, 0x49, 0x49, 0x49, 0x36 }, // 8
{ 0x00, 0x06, 0x49, 0x49, 0x29, 0x1E }, // 9
{ 0x00, 0x00, 0x36, 0x36, 0x00, 0x00 }, // :
{ 0x00, 0x00, 0x56, 0x36, 0x00, 0x00 }, // ;
{ 0x00, 0x08, 0x14, 0x22, 0x41, 0x00 }, // <
{ 0x00, 0x14, 0x14, 0x14, 0x14, 0x14 }, // =
{ 0x00, 0x00, 0x41, 0x22, 0x14, 0x08 }, // >
{ 0x00, 0x02, 0x01, 0x51, 0x09, 0x06 }, // ?
{ 0x00, 0x32, 0x49, 0x59, 0x51, 0x3E }, // @
{ 0x00, 0x7C, 0x12, 0x11, 0x12, 0x7C }, // A
{ 0x00, 0x7F, 0x49, 0x49, 0x49, 0x36 }, // B
{ 0x00, 0x3E, 0x41, 0x41, 0x41, 0x22 }, // C
{ 0x00, 0x7F, 0x41, 0x41, 0x22, 0x1C }, // D
{ 0x00, 0x7F, 0x49, 0x49, 0x49, 0x41 }, // E
{ 0x00, 0x7F, 0x09, 0x09, 0x09, 0x01 }, // F
{ 0x00, 0x3E, 0x41, 0x49, 0x49, 0x7A }, // G
{ 0x00, 0x7F, 0x08, 0x08, 0x08, 0x7F }, // H
{ 0x00, 0x00, 0x41, 0x7F, 0x41, 0x00 }, // I
{ 0x00, 0x20, 0x40, 0x41, 0x3F, 0x01 }, // J
{ 0x00, 0x7F, 0x08, 0x14, 0x22, 0x41 }, // K
{ 0x00, 0x7F, 0x40, 0x40, 0x40, 0x40 }, // L
{ 0x00, 0x7F, 0x02, 0x0C, 0x02, 0x7F }, // M
{ 0x00, 0x7F, 0x04, 0x08, 0x10, 0x7F }, // N
{ 0x00, 0x3E, 0x41, 0x41, 0x41, 0x3E }, // O
{ 0x00, 0x7F, 0x09, 0x09, 0x09, 0x06 }, // P
{ 0x00, 0x3E, 0x41, 0x51, 0x21, 0x5E }, // Q
{ 0x00, 0x7F, 0x09, 0x19, 0x29, 0x46 }, // R
{ 0x00, 0x46, 0x49, 0x49, 0x49, 0x31 }, // S
{ 0x00, 0x01, 0x01, 0x7F, 0x01, 0x01 }, // T
{ 0x00, 0x3F, 0x40, 0x40, 0x40, 0x3F }, // U
{ 0x00, 0x1F, 0x20, 0x40, 0x20, 0x1F }, // V
{ 0x00, 0x3F, 0x40, 0x38, 0x40, 0x3F }, // W
{ 0x00, 0x63, 0x14, 0x08, 0x14, 0x63 }, // X
{ 0x00, 0x07, 0x08, 0x70, 0x08, 0x07 }, // Y
{ 0x00, 0x61, 0x51, 0x49, 0x45, 0x43 }, // Z
{ 0x00, 0x00, 0x7F, 0x41, 0x41, 0x00 }, // [
{ 0x00, 0x55, 0x2A, 0x55, 0x2A, 0x55 }, // 55
{ 0x00, 0x00, 0x41, 0x41, 0x7F, 0x00 }, // ]
{ 0x00, 0x04, 0x02, 0x01, 0x02, 0x04 }, // ^
{ 0x00, 0x40, 0x40, 0x40, 0x40, 0x40 }, // _
{ 0x00, 0x00, 0x01, 0x02, 0x04, 0x00 }, // '
{ 0x00, 0x20, 0x54, 0x54, 0x54, 0x78 }, // a
{ 0x00, 0x7F, 0x48, 0x44, 0x44, 0x38 }, // b
{ 0x00, 0x38, 0x44, 0x44, 0x44, 0x20 }, // c
{ 0x00, 0x38, 0x44, 0x44, 0x48, 0x7F }, // d
{ 0x00, 0x38, 0x54, 0x54, 0x54, 0x18 }, // e
{ 0x00, 0x08, 0x7E, 0x09, 0x01, 0x02 }, // f
{ 0x00, 0x18, 0xA4, 0xA4, 0xA4, 0x7C }, // g
{ 0x00, 0x7F, 0x08, 0x04, 0x04, 0x78 }, // h
{ 0x00, 0x00, 0x44, 0x7D, 0x40, 0x00 }, // i
{ 0x00, 0x40, 0x80, 0x84, 0x7D, 0x00 }, // j
{ 0x00, 0x7F, 0x10, 0x28, 0x44, 0x00 }, // k
{ 0x00, 0x00, 0x41, 0x7F, 0x40, 0x00 }, // l
{ 0x00, 0x7C, 0x04, 0x18, 0x04, 0x78 }, // m
{ 0x00, 0x7C, 0x08, 0x04, 0x04, 0x78 }, // n
{ 0x00, 0x38, 0x44, 0x44, 0x44, 0x38 }, // o
{ 0x00, 0xFC, 0x24, 0x24, 0x24, 0x18 }, // p
{ 0x00, 0x18, 0x24, 0x24, 0x18, 0xFC }, // q
{ 0x00, 0x7C, 0x08, 0x04, 0x04, 0x08 }, // r
{ 0x00, 0x48, 0x54, 0x54, 0x54, 0x20 }, // s
{ 0x00, 0x04, 0x3F, 0x44, 0x40, 0x20 }, // t
{ 0x00, 0x3C, 0x40, 0x40, 0x20, 0x7C }, // u
{ 0x00, 0x1C, 0x20, 0x40, 0x20, 0x1C }, // v
{ 0x00, 0x3C, 0x40, 0x30, 0x40, 0x3C }, // w
{ 0x00, 0x44, 0x28, 0x10, 0x28, 0x44 }, // x
{ 0x00, 0x1C, 0xA0, 0xA0, 0xA0, 0x7C }, // y
{ 0x00, 0x44, 0x64, 0x54, 0x4C, 0x44 }, // z
{ 0x14, 0x14, 0x14, 0x14, 0x14, 0x14 } // horiz lines
};
const uint8 oled_8x16[]=
{
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,// 0
0x00,0x00,0x00,0xF8,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x33,0x30,0x00,0x00,0x00,//! 1
0x00,0x10,0x0C,0x06,0x10,0x0C,0x06,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,//" 2
0x40,0xC0,0x78,0x40,0xC0,0x78,0x40,0x00,0x04,0x3F,0x04,0x04,0x3F,0x04,0x04,0x00,//# 3
0x00,0x70,0x88,0xFC,0x08,0x30,0x00,0x00,0x00,0x18,0x20,0xFF,0x21,0x1E,0x00,0x00,//$ 4
0xF0,0x08,0xF0,0x00,0xE0,0x18,0x00,0x00,0x00,0x21,0x1C,0x03,0x1E,0x21,0x1E,0x00,//% 5
0x00,0xF0,0x08,0x88,0x70,0x00,0x00,0x00,0x1E,0x21,0x23,0x24,0x19,0x27,0x21,0x10,//& 6
0x10,0x16,0x0E,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,//' 7
0x00,0x00,0x00,0xE0,0x18,0x04,0x02,0x00,0x00,0x00,0x00,0x07,0x18,0x20,0x40,0x00,//( 8
0x00,0x02,0x04,0x18,0xE0,0x00,0x00,0x00,0x00,0x40,0x20,0x18,0x07,0x00,0x00,0x00,//) 9
0x40,0x40,0x80,0xF0,0x80,0x40,0x40,0x00,0x02,0x02,0x01,0x0F,0x01,0x02,0x02,0x00,//* 10
0x00,0x00,0x00,0xF0,0x00,0x00,0x00,0x00,0x01,0x01,0x01,0x1F,0x01,0x01,0x01,0x00,//+ 11
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0xB0,0x70,0x00,0x00,0x00,0x00,0x00,//, 12
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x01,0x01,0x01,0x01,0x01,0x01,//- 13
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x30,0x00,0x00,0x00,0x00,0x00,//. 14
0x00,0x00,0x00,0x00,0x80,0x60,0x18,0x04,0x00,0x60,0x18,0x06,0x01,0x00,0x00,0x00,/// 15
0x00,0xE0,0x10,0x08,0x08,0x10,0xE0,0x00,0x00,0x0F,0x10,0x20,0x20,0x10,0x0F,0x00,//0 16
0x00,0x10,0x10,0xF8,0x00,0x00,0x00,0x00,0x00,0x20,0x20,0x3F,0x20,0x20,0x00,0x00,//1 17
0x00,0x70,0x08,0x08,0x08,0x88,0x70,0x00,0x00,0x30,0x28,0x24,0x22,0x21,0x30,0x00,//2 18
0x00,0x30,0x08,0x88,0x88,0x48,0x30,0x00,0x00,0x18,0x20,0x20,0x20,0x11,0x0E,0x00,//3 19
0x00,0x00,0xC0,0x20,0x10,0xF8,0x00,0x00,0x00,0x07,0x04,0x24,0x24,0x3F,0x24,0x00,//4 20
0x00,0xF8,0x08,0x88,0x88,0x08,0x08,0x00,0x00,0x19,0x21,0x20,0x20,0x11,0x0E,0x00,//5 21
0x00,0xE0,0x10,0x88,0x88,0x18,0x00,0x00,0x00,0x0F,0x11,0x20,0x20,0x11,0x0E,0x00,//6 22
0x00,0x38,0x08,0x08,0xC8,0x38,0x08,0x00,0x00,0x00,0x00,0x3F,0x00,0x00,0x00,0x00,//7 23
0x00,0x70,0x88,0x08,0x08,0x88,0x70,0x00,0x00,0x1C,0x22,0x21,0x21,0x22,0x1C,0x00,//8 24
0x00,0xE0,0x10,0x08,0x08,0x10,0xE0,0x00,0x00,0x00,0x31,0x22,0x22,0x11,0x0F,0x00,//9 25
0x00,0x00,0x00,0xC0,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x30,0x00,0x00,0x00,//: 26
0x00,0x00,0x00,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x60,0x00,0x00,0x00,0x00,//; 27
0x00,0x00,0x80,0x40,0x20,0x10,0x08,0x00,0x00,0x01,0x02,0x04,0x08,0x10,0x20,0x00,//< 28
0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x00,0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x00,//= 29
0x00,0x08,0x10,0x20,0x40,0x80,0x00,0x00,0x00,0x20,0x10,0x08,0x04,0x02,0x01,0x00,//> 30
0x00,0x70,0x48,0x08,0x08,0x08,0xF0,0x00,0x00,0x00,0x00,0x30,0x36,0x01,0x00,0x00,//? 31
0xC0,0x30,0xC8,0x28,0xE8,0x10,0xE0,0x00,0x07,0x18,0x27,0x24,0x23,0x14,0x0B,0x00,//@ 32
0x00,0x00,0xC0,0x38,0xE0,0x00,0x00,0x00,0x20,0x3C,0x23,0x02,0x02,0x27,0x38,0x20,//A 33
0x08,0xF8,0x88,0x88,0x88,0x70,0x00,0x00,0x20,0x3F,0x20,0x20,0x20,0x11,0x0E,0x00,//B 34
0xC0,0x30,0x08,0x08,0x08,0x08,0x38,0x00,0x07,0x18,0x20,0x20,0x20,0x10,0x08,0x00,//C 35
0x08,0xF8,0x08,0x08,0x08,0x10,0xE0,0x00,0x20,0x3F,0x20,0x20,0x20,0x10,0x0F,0x00,//D 36
0x08,0xF8,0x88,0x88,0xE8,0x08,0x10,0x00,0x20,0x3F,0x20,0x20,0x23,0x20,0x18,0x00,//E 37
0x08,0xF8,0x88,0x88,0xE8,0x08,0x10,0x00,0x20,0x3F,0x20,0x00,0x03,0x00,0x00,0x00,//F 38
0xC0,0x30,0x08,0x08,0x08,0x38,0x00,0x00,0x07,0x18,0x20,0x20,0x22,0x1E,0x02,0x00,//G 39
0x08,0xF8,0x08,0x00,0x00,0x08,0xF8,0x08,0x20,0x3F,0x21,0x01,0x01,0x21,0x3F,0x20,//H 40
0x00,0x08,0x08,0xF8,0x08,0x08,0x00,0x00,0x00,0x20,0x20,0x3F,0x20,0x20,0x00,0x00,//I 41
0x00,0x00,0x08,0x08,0xF8,0x08,0x08,0x00,0xC0,0x80,0x80,0x80,0x7F,0x00,0x00,0x00,//J 42
0x08,0xF8,0x88,0xC0,0x28,0x18,0x08,0x00,0x20,0x3F,0x20,0x01,0x26,0x38,0x20,0x00,//K 43
0x08,0xF8,0x08,0x00,0x00,0x00,0x00,0x00,0x20,0x3F,0x20,0x20,0x20,0x20,0x30,0x00,//L 44
0x08,0xF8,0xF8,0x00,0xF8,0xF8,0x08,0x00,0x20,0x3F,0x00,0x3F,0x00,0x3F,0x20,0x00,//M 45
0x08,0xF8,0x30,0xC0,0x00,0x08,0xF8,0x08,0x20,0x3F,0x20,0x00,0x07,0x18,0x3F,0x00,//N 46
0xE0,0x10,0x08,0x08,0x08,0x10,0xE0,0x00,0x0F,0x10,0x20,0x20,0x20,0x10,0x0F,0x00,//O 47
0x08,0xF8,0x08,0x08,0x08,0x08,0xF0,0x00,0x20,0x3F,0x21,0x01,0x01,0x01,0x00,0x00,//P 48
0xE0,0x10,0x08,0x08,0x08,0x10,0xE0,0x00,0x0F,0x18,0x24,0x24,0x38,0x50,0x4F,0x00,//Q 49
0x08,0xF8,0x88,0x88,0x88,0x88,0x70,0x00,0x20,0x3F,0x20,0x00,0x03,0x0C,0x30,0x20,//R 50
0x00,0x70,0x88,0x08,0x08,0x08,0x38,0x00,0x00,0x38,0x20,0x21,0x21,0x22,0x1C,0x00,//S 51
0x18,0x08,0x08,0xF8,0x08,0x08,0x18,0x00,0x00,0x00,0x20,0x3F,0x20,0x00,0x00,0x00,//T 52
0x08,0xF8,0x08,0x00,0x00,0x08,0xF8,0x08,0x00,0x1F,0x20,0x20,0x20,0x20,0x1F,0x00,//U 53
0x08,0x78,0x88,0x00,0x00,0xC8,0x38,0x08,0x00,0x00,0x07,0x38,0x0E,0x01,0x00,0x00,//V 54
0xF8,0x08,0x00,0xF8,0x00,0x08,0xF8,0x00,0x03,0x3C,0x07,0x00,0x07,0x3C,0x03,0x00,//W 55
0x08,0x18,0x68,0x80,0x80,0x68,0x18,0x08,0x20,0x30,0x2C,0x03,0x03,0x2C,0x30,0x20,//X 56
0x08,0x38,0xC8,0x00,0xC8,0x38,0x08,0x00,0x00,0x00,0x20,0x3F,0x20,0x00,0x00,0x00,//Y 57
0x10,0x08,0x08,0x08,0xC8,0x38,0x08,0x00,0x20,0x38,0x26,0x21,0x20,0x20,0x18,0x00,//Z 58
0x00,0x00,0x00,0xFE,0x02,0x02,0x02,0x00,0x00,0x00,0x00,0x7F,0x40,0x40,0x40,0x00,//[ 59
0x00,0x0C,0x30,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x06,0x38,0xC0,0x00,//\ 60
0x00,0x02,0x02,0x02,0xFE,0x00,0x00,0x00,0x00,0x40,0x40,0x40,0x7F,0x00,0x00,0x00,//] 61
0x00,0x00,0x04,0x02,0x02,0x02,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,//^ 62
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,//_ 63
0x00,0x02,0x02,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,//` 64
0x00,0x00,0x80,0x80,0x80,0x80,0x00,0x00,0x00,0x19,0x24,0x22,0x22,0x22,0x3F,0x20,//a 65
0x08,0xF8,0x00,0x80,0x80,0x00,0x00,0x00,0x00,0x3F,0x11,0x20,0x20,0x11,0x0E,0x00,//b 66
0x00,0x00,0x00,0x80,0x80,0x80,0x00,0x00,0x00,0x0E,0x11,0x20,0x20,0x20,0x11,0x00,//c 67
0x00,0x00,0x00,0x80,0x80,0x88,0xF8,0x00,0x00,0x0E,0x11,0x20,0x20,0x10,0x3F,0x20,//d 68
0x00,0x00,0x80,0x80,0x80,0x80,0x00,0x00,0x00,0x1F,0x22,0x22,0x22,0x22,0x13,0x00,//e 69
0x00,0x80,0x80,0xF0,0x88,0x88,0x88,0x18,0x00,0x20,0x20,0x3F,0x20,0x20,0x00,0x00,//f 70
0x00,0x00,0x80,0x80,0x80,0x80,0x80,0x00,0x00,0x6B,0x94,0x94,0x94,0x93,0x60,0x00,//g 71
0x08,0xF8,0x00,0x80,0x80,0x80,0x00,0x00,0x20,0x3F,0x21,0x00,0x00,0x20,0x3F,0x20,//h 72
0x00,0x80,0x98,0x98,0x00,0x00,0x00,0x00,0x00,0x20,0x20,0x3F,0x20,0x20,0x00,0x00,//i 73
0x00,0x00,0x00,0x80,0x98,0x98,0x00,0x00,0x00,0xC0,0x80,0x80,0x80,0x7F,0x00,0x00,//j 74
0x08,0xF8,0x00,0x00,0x80,0x80,0x80,0x00,0x20,0x3F,0x24,0x02,0x2D,0x30,0x20,0x00,//k 75
0x00,0x08,0x08,0xF8,0x00,0x00,0x00,0x00,0x00,0x20,0x20,0x3F,0x20,0x20,0x00,0x00,//l 76
0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x00,0x20,0x3F,0x20,0x00,0x3F,0x20,0x00,0x3F,//m 77
0x80,0x80,0x00,0x80,0x80,0x80,0x00,0x00,0x20,0x3F,0x21,0x00,0x00,0x20,0x3F,0x20,//n 78
0x00,0x00,0x80,0x80,0x80,0x80,0x00,0x00,0x00,0x1F,0x20,0x20,0x20,0x20,0x1F,0x00,//o 79
0x80,0x80,0x00,0x80,0x80,0x00,0x00,0x00,0x80,0xFF,0xA1,0x20,0x20,0x11,0x0E,0x00,//p 80
0x00,0x00,0x00,0x80,0x80,0x80,0x80,0x00,0x00,0x0E,0x11,0x20,0x20,0xA0,0xFF,0x80,//q 81
0x80,0x80,0x80,0x00,0x80,0x80,0x80,0x00,0x20,0x20,0x3F,0x21,0x20,0x00,0x01,0x00,//r 82
0x00,0x00,0x80,0x80,0x80,0x80,0x80,0x00,0x00,0x33,0x24,0x24,0x24,0x24,0x19,0x00,//s 83
0x00,0x80,0x80,0xE0,0x80,0x80,0x00,0x00,0x00,0x00,0x00,0x1F,0x20,0x20,0x00,0x00,//t 84
0x80,0x80,0x00,0x00,0x00,0x80,0x80,0x00,0x00,0x1F,0x20,0x20,0x20,0x10,0x3F,0x20,//u 85
0x80,0x80,0x80,0x00,0x00,0x80,0x80,0x80,0x00,0x01,0x0E,0x30,0x08,0x06,0x01,0x00,//v 86
0x80,0x80,0x00,0x80,0x00,0x80,0x80,0x80,0x0F,0x30,0x0C,0x03,0x0C,0x30,0x0F,0x00,//w 87
0x00,0x80,0x80,0x00,0x80,0x80,0x80,0x00,0x00,0x20,0x31,0x2E,0x0E,0x31,0x20,0x00,//x 88
0x80,0x80,0x80,0x00,0x00,0x80,0x80,0x80,0x80,0x81,0x8E,0x70,0x18,0x06,0x01,0x00,//y 89
0x00,0x80,0x80,0x80,0x80,0x80,0x80,0x00,0x00,0x21,0x30,0x2C,0x22,0x21,0x30,0x00,//z 90
0x00,0x00,0x00,0x00,0x80,0x7C,0x02,0x02,0x00,0x00,0x00,0x00,0x00,0x3F,0x40,0x40,//{ 91
0x00,0x00,0x00,0x00,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0x00,0x00,0x00,//| 92
0x00,0x02,0x02,0x7C,0x80,0x00,0x00,0x00,0x00,0x40,0x40,0x3F,0x00,0x00,0x00,0x00,//} 93
0x00,0x06,0x01,0x01,0x02,0x02,0x04,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,//~ 94
};
//-------------------------------------------------------------------------------------------------------------------
// ʹ<><CAB9>PCtoLCD2002<30><32><EFBFBD><EFBFBD>ȡģ
// <20><><EFBFBD><EFBFBD><EBA1A2><EFBFBD><EFBFBD>ʽ<EFBFBD><CABD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> 16*16
//-------------------------------------------------------------------------------------------------------------------
const uint8 oled_16x16_chinese[][16]=
{
{0x40,0x40,0x42,0xCC,0x00,0x20,0x22,0x92,0x4A,0x36,0xE2,0x42,0xA2,0x12,0x00,0x00},
{0x00,0x40,0x20,0x1F,0x20,0x49,0x49,0x44,0x52,0x61,0x5F,0x40,0x41,0x46,0x40,0x00},/*"<22><>",0*/
{0x02,0x02,0x02,0x02,0x02,0x02,0x02,0x02,0x02,0xFE,0x40,0xA0,0x10,0x08,0x00,0x00},
{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x0C,0x10,0x21,0x42,0xF0,0x00},/*"<22><>",1*/
{0x24,0x24,0xA4,0xFE,0xA3,0x22,0x00,0x22,0xCC,0x00,0x00,0xFF,0x00,0x00,0x00,0x00},
{0x08,0x06,0x01,0xFF,0x00,0x01,0x04,0x04,0x04,0x04,0x04,0xFF,0x02,0x02,0x02,0x00},/*"<22><>",2*/
{0x10,0x10,0x10,0xFF,0x10,0x90,0x08,0x88,0x88,0x88,0xFF,0x88,0x88,0x88,0x08,0x00},
{0x04,0x44,0x82,0x7F,0x01,0x80,0x80,0x40,0x43,0x2C,0x10,0x28,0x46,0x81,0x80,0x00},/*"<22><>",3*/
};

View File

@@ -1,54 +0,0 @@
/*********************************************************************************************************************
* COPYRIGHT NOTICE
* Copyright (c) 2020,<2C><><EFBFBD>ɿƼ<C9BF>
* All rights reserved.
* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>QQȺ<51><C8BA><EFBFBD><EFBFBD>Ⱥ<EFBFBD><C8BA>824575535
*
* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݰ<EFBFBD>Ȩ<EFBFBD><C8A8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɿƼ<C9BF><C6BC><EFBFBD><EFBFBD>У<EFBFBD>δ<EFBFBD><CEB4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ҵ<EFBFBD><D2B5>;<EFBFBD><CDBE>
* <20><>ӭ<EFBFBD><D3AD>λʹ<CEBB>ò<EFBFBD><C3B2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>޸<EFBFBD><DEB8><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EBB1A3><EFBFBD><EFBFBD><EFBFBD>ɿƼ<C9BF><C6BC>İ<EFBFBD>Ȩ<EFBFBD><C8A8><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
*
* @file <09><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @company <09>ɶ<EFBFBD><C9B6><EFBFBD><EFBFBD>ɿƼ<C9BF><C6BC><EFBFBD><EFBFBD>޹<EFBFBD>˾
* @author <09><><EFBFBD>ɿƼ<C9BF>(QQ3184284598)
* @version <09>鿴doc<6F><63>version<6F>ļ<EFBFBD> <20>汾˵<E6B1BE><CBB5>
* @Software ADS v1.2.2
* @Target core TC264D
* @Taobao https://seekfree.taobao.com/
* @date 2020-3-23
********************************************************************************************************************/
#ifndef _SEEKFREE_FONT_h
#define _SEEKFREE_FONT_h
#include "common.h"
//-------<2D><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɫ----------
#define RGB565_RED 0xF800 //<2F><>ɫ
#define RGB565_BLUE 0x001F //<2F><>ɫ
#define RGB565_YELLOW 0xFFE0 //<2F><>ɫ
#define RGB565_GREEN 0x07E0 //<2F><>ɫ
#define RGB565_WHITE 0xFFFF //<2F><>ɫ
#define RGB565_BLACK 0x0000 //<2F><>ɫ
#define RGB565_GRAY 0X8430 //<2F><>ɫ
#define RGB565_BROWN 0XBC40 //<2F><>ɫ
#define RGB565_PURPLE 0XF81F //<2F><>ɫ
#define RGB565_PINK 0XFE19 //<2F><>ɫ
extern const uint8 tft_ascii[95][16];
extern const uint8 gImage_qq[3200];
extern const uint8 chinese_test[8][16];
extern const uint8 oled_6x8[][6];
extern const uint8 oled_8x16[];
extern const uint8 oled_16x16_chinese[][16];
#endif

View File

@@ -1,79 +0,0 @@
/*********************************************************************************************************************
* COPYRIGHT NOTICE
* Copyright (c) 2020,<2C><><EFBFBD>ɿƼ<C9BF>
* All rights reserved.
* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>QQȺ<51><C8BA><EFBFBD><EFBFBD>Ⱥ<EFBFBD><C8BA>824575535
*
* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݰ<EFBFBD>Ȩ<EFBFBD><C8A8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɿƼ<C9BF><C6BC><EFBFBD><EFBFBD>У<EFBFBD>δ<EFBFBD><CEB4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ҵ<EFBFBD><D2B5>;<EFBFBD><CDBE>
* <20><>ӭ<EFBFBD><D3AD>λʹ<CEBB>ò<EFBFBD><C3B2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>޸<EFBFBD><DEB8><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EBB1A3><EFBFBD><EFBFBD><EFBFBD>ɿƼ<C9BF><C6BC>İ<EFBFBD>Ȩ<EFBFBD><C8A8><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
*
* @file FUN
* @company <09>ɶ<EFBFBD><C9B6><EFBFBD><EFBFBD>ɿƼ<C9BF><C6BC><EFBFBD><EFBFBD>޹<EFBFBD>˾
* @author <09><><EFBFBD>ɿƼ<C9BF>(QQ3184284598)
* @version <09>鿴doc<6F><63>version<6F>ļ<EFBFBD> <20>汾˵<E6B1BE><CBB5>
* @Software ADS v1.2.2
* @Target core TC264D
* @Taobao https://seekfree.taobao.com/
* @date 2020-3-23
********************************************************************************************************************/
#include "SEEKFREE_FUN.h"
//-------------------------------------------------------------------------------------------------------------------
// @brief <20><><EFBFBD><EFBFBD>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD>
// @param dat <09><>Ҫ<EFBFBD><D2AA><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD>
// @return int <09><><EFBFBD>ؾ<EFBFBD><D8BE><EFBFBD>ֵ
// Sample usage: dat = myabs(dat);//<2F><>dat<61><74><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
//-------------------------------------------------------------------------------------------------------------------
int myabs(int dat)
{
if(dat>=0) return dat;
else return -dat;
}
//-------------------------------------------------------------------------------------------------------------------
// @brief <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ
// @param t <09><>ʱʱ<CAB1><CAB1>
// @return void
// Sample usage:
//-------------------------------------------------------------------------------------------------------------------
void my_delay(long t)
{
while(t--);
}
//-------------------------------------------------------------------------------------------------------------------
// @brief <20>޷<EFBFBD>
// @param x <09><><EFBFBD>޷<EFBFBD><DEB7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// @param y <09>޷<EFBFBD><DEB7><EFBFBD>Χ(<28><><EFBFBD>ݻᱻ<DDBB><E1B1BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>-y<><79>+y֮<79><D6AE>)
// @return float <09>޷<EFBFBD>֮<EFBFBD><D6AE><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// Sample usage: float dat = limit(500,300);//<2F><><EFBFBD>ݱ<EFBFBD><DDB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>-300<30><30>+300֮<30><D6AE> <20><><EFBFBD>˷<EFBFBD><CBB7>صĽ<D8B5><C4BD><EFBFBD><EFBFBD><EFBFBD>300
//-------------------------------------------------------------------------------------------------------------------
float limit(float x, int32 y)
{
if(x>y) return (float)y;
else if(x<-y) return (float)(-y);
else return x;
}
//-------------------------------------------------------------------------------------------------------------------
// @brief ˫<><CBAB><EFBFBD>޷<EFBFBD>
// @param x <09><><EFBFBD>޷<EFBFBD><DEB7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// @param a <09>޷<EFBFBD><DEB7><EFBFBD>Χ<EFBFBD><CEA7><EFBFBD>߽<EFBFBD>
// @param b <09>޷<EFBFBD><DEB7><EFBFBD>Χ<EFBFBD>ұ߽<D2B1>
// @return float <09>޷<EFBFBD>֮<EFBFBD><D6AE><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// Sample usage: int16 dat = limit_ab(500,-300<30><30>400);//<2F><><EFBFBD>ݱ<EFBFBD><DDB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>-300<30><30>+400֮<30><D6AE> <20><><EFBFBD>˷<EFBFBD><CBB7>صĽ<D8B5><C4BD><EFBFBD><EFBFBD><EFBFBD>400
//-------------------------------------------------------------------------------------------------------------------
int16 limit_ab(int16 x, int16 a, int16 b)
{
if(x<a) x = a;
if(x>b) x = b;
return x;
}

View File

@@ -1,43 +0,0 @@
/*********************************************************************************************************************
* COPYRIGHT NOTICE
* Copyright (c) 2020,<2C><><EFBFBD>ɿƼ<C9BF>
* All rights reserved.
* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>QQȺ<51><C8BA><EFBFBD><EFBFBD>Ⱥ<EFBFBD><C8BA>824575535
*
* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݰ<EFBFBD>Ȩ<EFBFBD><C8A8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɿƼ<C9BF><C6BC><EFBFBD><EFBFBD>У<EFBFBD>δ<EFBFBD><CEB4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ҵ<EFBFBD><D2B5>;<EFBFBD><CDBE>
* <20><>ӭ<EFBFBD><D3AD>λʹ<CEBB>ò<EFBFBD><C3B2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>޸<EFBFBD><DEB8><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EBB1A3><EFBFBD><EFBFBD><EFBFBD>ɿƼ<C9BF><C6BC>İ<EFBFBD>Ȩ<EFBFBD><C8A8><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
*
* @file FUN
* @company <09>ɶ<EFBFBD><C9B6><EFBFBD><EFBFBD>ɿƼ<C9BF><C6BC><EFBFBD><EFBFBD>޹<EFBFBD>˾
* @author <09><><EFBFBD>ɿƼ<C9BF>(QQ3184284598)
* @version <09>鿴doc<6F><63>version<6F>ļ<EFBFBD> <20>汾˵<E6B1BE><CBB5>
* @Software ADS v1.2.2
* @Target core TC264D
* @Taobao https://seekfree.taobao.com/
* @date 2020-3-23
********************************************************************************************************************/
#ifndef _SEEKFREE_FUN_h
#define _SEEKFREE_FUN_h
#include "common.h"
int myabs(int dat);
void my_delay(long t);
float limit(float x, int32 y);
int16 limit_ab(int16 x, int16 a, int16 b);
#endif

View File

@@ -1,514 +0,0 @@
/*********************************************************************************************************************
* COPYRIGHT NOTICE
* Copyright (c) 2021,<2C><><EFBFBD>ɿƼ<C9BF>
* All rights reserved.
* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>QQȺ<51><C8BA>һȺ<D2BB><C8BA>179029047(<28><><EFBFBD><EFBFBD>) <20><>Ⱥ<EFBFBD><C8BA>244861897
*
* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݰ<EFBFBD>Ȩ<EFBFBD><C8A8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɿƼ<C9BF><C6BC><EFBFBD><EFBFBD>У<EFBFBD>δ<EFBFBD><CEB4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ҵ<EFBFBD><D2B5>;<EFBFBD><CDBE>
* <20><>ӭ<EFBFBD><D3AD>λʹ<CEBB>ò<EFBFBD><C3B2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>޸<EFBFBD><DEB8><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EBB1A3><EFBFBD><EFBFBD><EFBFBD>ɿƼ<C9BF><C6BC>İ<EFBFBD>Ȩ<EFBFBD><C8A8><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
*
* @file SEEKFREE_GPS_TAU1201.c
* @company <09>ɶ<EFBFBD><C9B6><EFBFBD><EFBFBD>ɿƼ<C9BF><C6BC><EFBFBD><EFBFBD>޹<EFBFBD>˾
* @author <09><><EFBFBD>ɿƼ<C9BF>(QQ3184284598)
* @version <09>鿴doc<6F><63>version<6F>ļ<EFBFBD> <20>汾˵<E6B1BE><CBB5>
* @Software IAR 8.32.4 or MDK 5.28
* @Taobao https://seekfree.taobao.com/
* @date 2021-12-30
* @note
* <09><><EFBFBD>߶<EFBFBD><DFB6>
* ------------------------------------
* ģ<><C4A3><EFBFBD>ܽ<EFBFBD> <09><>Ƭ<EFBFBD><C6AC><EFBFBD>ܽ<EFBFBD>
* RX <09>鿴 GPS_TAU1201_TX<54><EFBFBD><EAB6A8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* TX <20>鿴 GPS_TAU1201_TX<54><EFBFBD><EAB6A8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* GND <09><>Դ<EFBFBD><D4B4>
* VCC 5V<35><56>Դ
* ------------------------------------
********************************************************************************************************************/
#include "zf_stm_systick.h"
#include "zf_uart.h"
#include "math.h"
#include "SEEKFREE_GPS_TAU1201.h"
#include <string.h>
gps_info_struct gps_tau1201;
uint8 gps_tau1201_buffer[100];
uint8 gps_tau1201_num; //<2F><>ǰ<EFBFBD><C7B0><EFBFBD><EFBFBD><EFBFBD>ַ<EFBFBD><D6B7><EFBFBD><EFBFBD><EFBFBD>
uint8 gps_tau1201_flag; //1<><31><EFBFBD>ɼ<EFBFBD><C9BC><EFBFBD><EFBFBD><EFBFBD> 0<><30>û<EFBFBD>вɼ<D0B2><C9BC><EFBFBD><EFBFBD><EFBFBD>
//-------------------------------------------------------------------------------------------------------------------
// @brief <09><>ȡָ<C8A1><D6B8>,<2C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// @param num <20>ڼ<EFBFBD><DABC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// @param *str <20>ַ<EFBFBD><D6B7><EFBFBD>
// @return uint8 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// @since v1.0
// Sample usage:
//-------------------------------------------------------------------------------------------------------------------
uint8 get_parameter_index(uint8 num, char *str)
{
uint8 i, j = 0;
int8* temp;
uint8 len = 0, len1;
temp = strchr(str, '\n');
if(NULL != temp)
{
len = (uint8)((uint32)temp - (uint32)str + 1);
}
for(i = 0;i < len;i ++)
{
if(str[i] == ',')
{
j++;
}
if(j == num)
{
len1 = i + 1;
break;
}
}
return len1;
}
//-------------------------------------------------------------------------------------------------------------------
// @brief <09><><EFBFBD><EFBFBD><EFBFBD>ַ<EFBFBD><D6B7><EFBFBD>ת<EFBFBD><D7AA>Ϊint
// @param *s <20>ַ<EFBFBD><D6B7><EFBFBD>
// @return double <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ
// @since v1.0
// Sample usage:
//-------------------------------------------------------------------------------------------------------------------
int str_to_int(char *buf)
{
int return_value = 0;
int dat;
char *str = buf;
while(*str != '\0')
{
dat = *str - '0';
return_value = return_value * 10 + dat;
str ++;
}
return return_value;
}
//-------------------------------------------------------------------------------------------------------------------
// @brief <09><><EFBFBD><EFBFBD><EFBFBD>ַ<EFBFBD><D6B7><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><D2BB>,֮ǰ<D6AE><C7B0><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ת<EFBFBD><D7AA>Ϊint
// @param *s <20>ַ<EFBFBD><D6B7><EFBFBD>
// @return float <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ
// @since v1.0
// Sample usage:
//-------------------------------------------------------------------------------------------------------------------
int get_int_number(char *s)
{
char buf[10];
uint8 i;
int return_value;
i = get_parameter_index(1, s);
i = i - 1;
strncpy(buf, s, i);
buf[i] = 0;
return_value = str_to_int(buf);
return return_value;
}
//-------------------------------------------------------------------------------------------------------------------
// @brief <09><><EFBFBD><EFBFBD><EFBFBD>ַ<EFBFBD><D6B7><EFBFBD>ת<EFBFBD><D7AA>Ϊdouble
// @param *s <20>ַ<EFBFBD><D6B7><EFBFBD>
// @return double <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ
// @since v1.0
// Sample usage:
//-------------------------------------------------------------------------------------------------------------------
double str_to_double(char *buf)
{
double return_value = 0;
double dat;
int integer = 1;
char *str = buf;
int8 negative_flag = 1;
int i;
if('-' == *str)
{
negative_flag = -1;
str++;
}
while(*str != '\0')
{
dat = *str - '0';
if('.' == *str)
{
integer = 0;
i = 1;
}
else
{
if( integer == 1 )
{
return_value = return_value * 10 + dat;
}
else
{
return_value = return_value + dat / (10 * i);
i = i * 10 ;
}
}
str ++;
}
return return_value*negative_flag;
}
//-------------------------------------------------------------------------------------------------------------------
// @brief <09><><EFBFBD><EFBFBD><EFBFBD>ַ<EFBFBD><D6B7><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><D2BB>,֮ǰ<D6AE><C7B0><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ת<EFBFBD><D7AA>Ϊfloat
// @param *s <20>ַ<EFBFBD><D6B7><EFBFBD>
// @return float <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ
// @since v1.0
// Sample usage:
//-------------------------------------------------------------------------------------------------------------------
float get_float_number(char *s)
{
uint8 i;
char buf[10];
float return_value;
i=get_parameter_index(1, s);
i = i - 1;
strncpy(buf, s, i);
buf[i] = 0;
return_value = (float)str_to_double(buf);
return return_value;
}
//-------------------------------------------------------------------------------------------------------------------
// @brief <09><><EFBFBD><EFBFBD><EFBFBD>ַ<EFBFBD><D6B7><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><D2BB>,֮ǰ<D6AE><C7B0><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ת<EFBFBD><D7AA>Ϊdouble
// @param *s <20>ַ<EFBFBD><D6B7><EFBFBD>
// @return double <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ
// @since v1.0
// Sample usage:
//-------------------------------------------------------------------------------------------------------------------
double get_double_number(char *s)
{
uint8 i;
char buf[10];
double return_value;
i = get_parameter_index(1, s);
i = i - 1;
strncpy(buf, s, i);
buf[i] = 0;
return_value = str_to_double(buf);
return return_value;
}
//-------------------------------------------------------------------------------------------------------------------
// @brief <09><><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1>ת<EFBFBD><D7AA>Ϊ<EFBFBD><CEAA><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1>
// @param *time <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1>
// @return void
// @since v1.0
// Sample usage:
//-------------------------------------------------------------------------------------------------------------------
void utc_to_btc(gps_time_struct *time)
{
uint8 day_num;
time->hour = time->hour + 8;
if(time->hour > 23)
{
time->hour -= 24;
time->day += 1;
if(2 == time->month)
{
day_num = 28;
if((time->year%4 == 0 && time->year%100 != 0) || time->year%400 == 0)//<2F>ж<EFBFBD><D0B6>Ƿ<EFBFBD>Ϊ<EFBFBD><CEAA><EFBFBD><EFBFBD>
{
day_num ++;//<2F><><EFBFBD><EFBFBD> 2<><32>Ϊ29<32><39>
}
}
else
{
day_num = 31;//1 3 5 7 8 10 12<31><32>Щ<EFBFBD>·<EFBFBD>Ϊ31<33><31>
if(4 == time->month || 6 == time->month || 9 == time->month || 11 == time->month )
{
day_num = 30;
}
}
if(time->day > day_num)
{
time->day = 1;
time->month++;
if(time->month > 12)
{
time->month -= 12;
time->year ++;
}
}
}
}
//-------------------------------------------------------------------------------------------------------------------
// @brief RMC<4D><43><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// @param *line <20><><EFBFBD>յ<EFBFBD><D5B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ
// @param *gps <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// @return uint8 1<><31><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɹ<EFBFBD> 0<><30><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ܽ<EFBFBD><DCBD><EFBFBD>
// @since v1.0
// Sample usage:
//-------------------------------------------------------------------------------------------------------------------
uint8 gps_gnrmc_parse(char *line, gps_info_struct *gps)
{
uint8 state, temp;
double latitude; //<2F><><EFBFBD><EFBFBD>
double longitude;//γ<><CEB3>
float lati_cent_tmp, lati_second_tmp;
float long_cent_tmp, long_second_tmp;
float speed_tmp;
char *buf = line;
uint8 return_value = 0;
state = buf[get_parameter_index(2, buf)];
gps->state = 0;
if (state == 'A') //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ч<EFBFBD><D0A7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
{
return_value = 1;
gps->state = 1;
gps -> ns = buf[get_parameter_index(4, buf)];
gps -> ew = buf[get_parameter_index(6, buf)];
latitude = get_double_number(&buf[get_parameter_index(3, buf)]);
longitude = get_double_number(&buf[get_parameter_index( 5, buf)]);
gps->latitude_degree = (int)latitude / 100; //γ<><CEB3>ת<EFBFBD><D7AA>Ϊ<EFBFBD>ȷ<EFBFBD><C8B7><EFBFBD>
lati_cent_tmp = (latitude - gps->latitude_degree * 100);
gps->latitude_cent = (int)lati_cent_tmp;
lati_second_tmp = (lati_cent_tmp - gps->latitude_cent) * 10000;
gps->latitude_second = (int)lati_second_tmp;
gps->longitude_degree = (int)longitude / 100; //<2F><><EFBFBD><EFBFBD>ת<EFBFBD><D7AA>Ϊ<EFBFBD>ȷ<EFBFBD><C8B7><EFBFBD>
long_cent_tmp = (longitude - gps->longitude_degree * 100);
gps->longitude_cent = (int)long_cent_tmp;
long_second_tmp = (long_cent_tmp - gps->longitude_cent) * 10000;
gps->longitude_second = (int)long_second_tmp;
gps->latitude = gps->latitude_degree + (double)gps->latitude_cent/60 + (double)gps->latitude_second/600000;
gps->longitude = gps->longitude_degree + (double)gps->longitude_cent/60 + (double)gps->longitude_second/600000;
speed_tmp = get_float_number(&buf[get_parameter_index(7, buf)]); //<2F>ٶ<EFBFBD>(<28><><EFBFBD><EFBFBD>/Сʱ)
gps->speed = speed_tmp * 1.85f; //ת<><D7AA>Ϊ<EFBFBD><CEAA><EFBFBD><EFBFBD>/Сʱ
gps->direction = get_float_number(&buf[get_parameter_index(8, buf)]); //<2F>Ƕ<EFBFBD>
}
//<2F>ڶ<EFBFBD>λû<CEBB><C3BB><EFBFBD><EFBFBD>ЧǰҲ<C7B0><D2B2><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD>ݵģ<DDB5><C4A3><EFBFBD><EFBFBD><EFBFBD>ֱ<EFBFBD>ӽ<EFBFBD><D3BD><EFBFBD>
gps->time.hour = (buf[7] - '0') * 10 + (buf[8] - '0'); //ʱ<><CAB1>
gps->time.minute = (buf[9] - '0') * 10 + (buf[10] - '0');
gps->time.second = (buf[11] - '0') * 10 + (buf[12] - '0');
temp = get_parameter_index(9, buf);
gps->time.day = (buf[temp + 0] - '0') * 10 + (buf[temp + 1] - '0'); //<2F><><EFBFBD><EFBFBD>
gps->time.month = (buf[temp + 2] - '0') * 10 + (buf[temp + 3] - '0');
gps->time.year = (buf[temp + 4] - '0') * 10 + (buf[temp + 5] - '0')+2000;
utc_to_btc(&gps->time);
return return_value;
}
//-------------------------------------------------------------------------------------------------------------------
// @brief GGA<47><41><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// @param *line <20><><EFBFBD>յ<EFBFBD><D5B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ
// @param *gps <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// @return uint8 1<><31><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɹ<EFBFBD> 0<><30><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ܽ<EFBFBD><DCBD><EFBFBD>
// @since v1.0
// Sample usage:
//-------------------------------------------------------------------------------------------------------------------
uint8 gps_gngga_parse(char *line, gps_info_struct *gps)
{
uint8 state;
char *buf = line;
uint8 return_value = 0;
state = buf[get_parameter_index(2, buf)];
if (state != ',')
{
gps->satellite_used = (uint8)get_int_number(&buf[get_parameter_index(7, buf)]);
gps->height = get_float_number(&buf[get_parameter_index(9, buf)]) + get_float_number(&buf[get_parameter_index(11, buf)]); //<2F>߶<EFBFBD> = <20><><EFBFBD>θ߶<CEB8> + <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Դ<EFBFBD><D4B4><EFBFBD>ˮ׼<CBAE><D7BC><EFBFBD>ĸ߶<C4B8>
return_value = 1;
}
return return_value;
}
//-------------------------------------------------------------------------------------------------------------------
// @brief <09><><EFBFBD><EFBFBD><EFBFBD>ӵ<EFBFBD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD>ڶ<EFBFBD><DAB6><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ľ<EFBFBD><C4BE><EFBFBD>
// @param latitude1 <09><>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>γ<EFBFBD><CEB3>
// @param longitude1 <09><>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD>ľ<EFBFBD><C4BE><EFBFBD>
// @param latitude2 <09>ڶ<EFBFBD><DAB6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>γ<EFBFBD><CEB3>
// @param longitude2 <09>ڶ<EFBFBD><DAB6><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ľ<EFBFBD><C4BE><EFBFBD>
// @return double <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// @since v1.0
// Sample usage:
//-------------------------------------------------------------------------------------------------------------------
double get_two_points_distance(double latitude1, double longitude1, double latitude2, double longitude2)
{
const double EARTH_RADIUS = 6378137;//<2F><><EFBFBD><EFBFBD><EFBFBD>뾶(<28><>λ<EFBFBD><CEBB>m)
double rad_latitude1;
double rad_latitude2;
double rad_longitude1;
double rad_longitude2;
double distance;
double a;
double b;
rad_latitude1 = ANGLE_TO_RAD(latitude1);//<2F><><EFBFBD>ݽǶȼ<C7B6><C8BC><EFBFBD><E3BBA1>
rad_latitude2 = ANGLE_TO_RAD(latitude2);
rad_longitude1 = ANGLE_TO_RAD(longitude1);
rad_longitude2 = ANGLE_TO_RAD(longitude2);
a = rad_latitude1 - rad_latitude2;
b = rad_longitude1 - rad_longitude2;
distance = 2 * asin(sqrt(pow(sin(a/2),2) + cos(rad_latitude1)*cos(rad_latitude2)*pow(sin(b/2),2)));//google maps<70><73><EFBFBD><EFBFBD>ʵ<EFBFBD>ֵ<EFBFBD><D6B5>
distance = distance * EARTH_RADIUS;
return distance;
}
//-------------------------------------------------------------------------------------------------------------------
// @brief <09><><EFBFBD><EFBFBD><EFBFBD>ӵ<EFBFBD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD>ڶ<EFBFBD><DAB6><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ķ<EFBFBD>λ<EFBFBD><CEBB>
// @param latitude1 <09><>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>γ<EFBFBD><CEB3>
// @param longitude1 <09><>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD>ľ<EFBFBD><C4BE><EFBFBD>
// @param latitude2 <09>ڶ<EFBFBD><DAB6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>γ<EFBFBD><CEB3>
// @param longitude2 <09>ڶ<EFBFBD><DAB6><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ľ<EFBFBD><C4BE><EFBFBD>
// @return double <20><><EFBFBD>ط<EFBFBD>λ<EFBFBD>ǣ<EFBFBD>0<EFBFBD><30>360<36><30>
// @since v1.0
// Sample usage:
//-------------------------------------------------------------------------------------------------------------------
double get_two_points_azimuth(double latitude1, double longitude1, double latitude2, double longitude2)
{
latitude1 = ANGLE_TO_RAD(latitude1);
latitude2 = ANGLE_TO_RAD(latitude2);
longitude1 = ANGLE_TO_RAD(longitude1);
longitude2 = ANGLE_TO_RAD(longitude2);
double x = sin(longitude2 - longitude1) * cos(latitude2);
double y = cos(latitude1) * sin(latitude2) - sin(latitude1) * cos(latitude2) * cos(longitude2 - longitude1);
double angle = RAD_TO_ANGLE(atan2(x,y));
return angle>0?angle:angle+360;
}
//-------------------------------------------------------------------------------------------------------------------
// @brief <09><><EFBFBD><EFBFBD>GPS<50><53><EFBFBD><EFBFBD>
// @param void
// @return void
// @since v1.0
// Sample usage:
//-------------------------------------------------------------------------------------------------------------------
void gps_data_parse(void)
{
if(0 == strncmp((char *)&gps_tau1201_buffer[3], "RMC", 3))
{
gps_gnrmc_parse((char *)gps_tau1201_buffer, &gps_tau1201);
}
else if(0 == strncmp((char *)&gps_tau1201_buffer[3], "GGA", 3))
{
gps_gngga_parse((char *)gps_tau1201_buffer, &gps_tau1201);
}
}
//-------------------------------------------------------------------------------------------------------------------
// @brief GPS<50><53><EFBFBD>ڻص<DABB><D8B5><EFBFBD><EFBFBD><EFBFBD>
// @param void
// @return void
// @since v1.0
// Sample usage: <09>˺<EFBFBD><CBBA><EFBFBD><EFBFBD><EFBFBD>Ҫ<EFBFBD>ڴ<EFBFBD><DAB4>ڽ<EFBFBD><DABD><EFBFBD><EFBFBD>ж<EFBFBD><D0B6>ڽ<EFBFBD><DABD>е<EFBFBD><D0B5><EFBFBD>
//-------------------------------------------------------------------------------------------------------------------
void gps_uart_callback(void)
{
uint8 dat;
uart_query(GPS_TAU1201_UART, &dat);
if('$' == dat || ('$' != gps_tau1201_buffer[0]))//֡ͷУ<CDB7><D0A3>
{
gps_tau1201_num = 0;
}
gps_tau1201_buffer[gps_tau1201_num++] = dat;
if('\n' == dat)
{
//<2F>յ<EFBFBD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
gps_tau1201_buffer[gps_tau1201_num] = 0; //<2F><>ĩβ<C4A9><CEB2><EFBFBD><EFBFBD>\0
gps_data_parse(); //<2F><>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
gps_tau1201_flag = 1;
}
}
//-------------------------------------------------------------------------------------------------------------------
// @brief GPS<50><53>ʼ<EFBFBD><CABC>
// @param void
// @return void
// @since v1.0
// Sample usage:
//-------------------------------------------------------------------------------------------------------------------
void gps_init(void)
{
const uint8 set_rate[] = {0xF1, 0xD9, 0x06, 0x42, 0x14, 0x00, 0x00, 0x0A, 0x05, 0x00, 0x64, 0x00, 0x00, 0x00, 0x60, 0xEA, 0x00, 0x00, 0xD0, 0x07, 0x00, 0x00, 0xC8, 0x00, 0x00, 0x00, 0xB8, 0xED};
const uint8 open_gga[] = {0xF1, 0xD9, 0x06, 0x01, 0x03, 0x00, 0xF0, 0x00, 0x01, 0xFB, 0x10};
const uint8 open_rmc[] = {0xF1, 0xD9, 0x06, 0x01, 0x03, 0x00, 0xF0, 0x05, 0x01, 0x00, 0x1A};
const uint8 close_gll[] = {0xF1, 0xD9, 0x06, 0x01, 0x03, 0x00, 0xF0, 0x01, 0x00, 0xFB, 0x11};
const uint8 close_gsa[] = {0xF1, 0xD9, 0x06, 0x01, 0x03, 0x00, 0xF0, 0x02, 0x00, 0xFC, 0x13};
const uint8 close_grs[] = {0xF1, 0xD9, 0x06, 0x01, 0x03, 0x00, 0xF0, 0x03, 0x00, 0xFD, 0x15};
const uint8 close_gsv[] = {0xF1, 0xD9, 0x06, 0x01, 0x03, 0x00, 0xF0, 0x04, 0x00, 0xFE, 0x17};
const uint8 close_vtg[] = {0xF1, 0xD9, 0x06, 0x01, 0x03, 0x00, 0xF0, 0x06, 0x00, 0x00, 0x1B};
const uint8 close_zda[] = {0xF1, 0xD9, 0x06, 0x01, 0x03, 0x00, 0xF0, 0x07, 0x00, 0x01, 0x1D};
const uint8 close_gst[] = {0xF1, 0xD9, 0x06, 0x01, 0x03, 0x00, 0xF0, 0x08, 0x00, 0x02, 0x1F};
const uint8 close_txt[] = {0xF1, 0xD9, 0x06, 0x01, 0x03, 0x00, 0xF0, 0x40, 0x00, 0x3A, 0x8F};
const uint8 close_txt_ant[] = {0xF1, 0xD9, 0x06, 0x01, 0x03, 0x00, 0xF0, 0x20, 0x00, 0x1A, 0x4F};
gps_type = GPS_TAU1201;
enableInterrupts();
systick_delay_ms(STM0, 500);//<2F>ȴ<EFBFBD>GPS<50><53><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʼ<EFBFBD><CABC>ʼ<EFBFBD><CABC>
uart_init(GPS_TAU1201_UART, 115200, GPS_TAU1201_RX, GPS_TAU1201_TX);
uart_putbuff(GPS_TAU1201_UART, (uint8 *)set_rate, sizeof(set_rate));//<2F><><EFBFBD><EFBFBD>GPS<50><53><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ10hz<68><7A><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ô<EFBFBD><C3B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ĭ<EFBFBD><C4AC>Ϊ1hz
systick_delay_ms(STM0, 200);
uart_putbuff(GPS_TAU1201_UART, (uint8 *)open_rmc, sizeof(open_rmc));//<2F><><EFBFBD><EFBFBD>rmc<6D><63><EFBFBD><EFBFBD>
systick_delay_ms(STM0, 50);
uart_putbuff(GPS_TAU1201_UART, (uint8 *)open_gga, sizeof(open_gga));//<2F><><EFBFBD><EFBFBD>gga<67><61><EFBFBD><EFBFBD>
systick_delay_ms(STM0, 50);
uart_putbuff(GPS_TAU1201_UART, (uint8 *)close_gll, sizeof(close_gll));
systick_delay_ms(STM0, 50);
uart_putbuff(GPS_TAU1201_UART, (uint8 *)close_gsa, sizeof(close_gsa));
systick_delay_ms(STM0, 50);
uart_putbuff(GPS_TAU1201_UART, (uint8 *)close_grs, sizeof(close_grs));
systick_delay_ms(STM0, 50);
uart_putbuff(GPS_TAU1201_UART, (uint8 *)close_gsv, sizeof(close_gsv));
systick_delay_ms(STM0, 50);
uart_putbuff(GPS_TAU1201_UART, (uint8 *)close_vtg, sizeof(close_vtg));
systick_delay_ms(STM0, 50);
uart_putbuff(GPS_TAU1201_UART, (uint8 *)close_zda, sizeof(close_zda));
systick_delay_ms(STM0, 50);
uart_putbuff(GPS_TAU1201_UART, (uint8 *)close_gst, sizeof(close_gst));
systick_delay_ms(STM0, 50);
uart_putbuff(GPS_TAU1201_UART, (uint8 *)close_txt, sizeof(close_txt));
systick_delay_ms(STM0, 50);
uart_putbuff(GPS_TAU1201_UART, (uint8 *)close_txt_ant, sizeof(close_txt_ant));
systick_delay_ms(STM0, 50);
disableInterrupts();
}

View File

@@ -1,107 +0,0 @@
/*********************************************************************************************************************
* COPYRIGHT NOTICE
* Copyright (c) 2021,<2C><><EFBFBD>ɿƼ<C9BF>
* All rights reserved.
* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>QQȺ<51><C8BA>һȺ<D2BB><C8BA>179029047(<28><><EFBFBD><EFBFBD>) <20><>Ⱥ<EFBFBD><C8BA>244861897
*
* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݰ<EFBFBD>Ȩ<EFBFBD><C8A8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɿƼ<C9BF><C6BC><EFBFBD><EFBFBD>У<EFBFBD>δ<EFBFBD><CEB4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ҵ<EFBFBD><D2B5>;<EFBFBD><CDBE>
* <20><>ӭ<EFBFBD><D3AD>λʹ<CEBB>ò<EFBFBD><C3B2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>޸<EFBFBD><DEB8><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EBB1A3><EFBFBD><EFBFBD><EFBFBD>ɿƼ<C9BF><C6BC>İ<EFBFBD>Ȩ<EFBFBD><C8A8><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
*
* @file SEEKFREE_GPS_TAU1201.c
* @company <09>ɶ<EFBFBD><C9B6><EFBFBD><EFBFBD>ɿƼ<C9BF><C6BC><EFBFBD><EFBFBD>޹<EFBFBD>˾
* @author <09><><EFBFBD>ɿƼ<C9BF>(QQ3184284598)
* @version <09>鿴doc<6F><63>version<6F>ļ<EFBFBD> <20>汾˵<E6B1BE><CBB5>
* @Software IAR 8.32.4 or MDK 5.28
* @Taobao https://seekfree.taobao.com/
* @date 2021-12-30
* @note
* <09><><EFBFBD>߶<EFBFBD><DFB6>
* ------------------------------------
* ģ<><C4A3><EFBFBD>ܽ<EFBFBD> <09><>Ƭ<EFBFBD><C6AC><EFBFBD>ܽ<EFBFBD>
* RX <09>鿴 GPS_TAU1201_RX<52><EFBFBD><EAB6A8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* TX <20>鿴 GPS_TAU1201_TX<54><EFBFBD><EAB6A8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* GND <09><>Դ<EFBFBD><D4B4>
* VCC 5V<35><56>Դ
* ------------------------------------
********************************************************************************************************************/
#ifndef _SEEKFREE_GPS_TAU1201_h
#define _SEEKFREE_GPS_TAU1201_h
#include "common.h"
//--------------------------------------------------------------------------------------------------
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
//--------------------------------------------------------------------------------------------------
#define GPS_TAU1201_UART UART_3
#define GPS_TAU1201_RX UART3_TX_P15_6 // GPS RX<52><58><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ӵ<EFBFBD><D3B5><EFBFBD>Ƭ<EFBFBD><C6AC><EFBFBD><EFBFBD>
#define GPS_TAU1201_TX UART3_RX_P15_7 // GPS TX<54><58><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
#define ANGLE_TO_RAD(X) (X * PI / 180.0)//<2F>Ƕ<EFBFBD>ת<EFBFBD><D7AA>Ϊ<EFBFBD><CEAA><EFBFBD><EFBFBD>
#define RAD_TO_ANGLE(X) (X * 180.0 / PI)//<2F><><EFBFBD><EFBFBD>ת<EFBFBD><D7AA>Ϊ<EFBFBD>Ƕ<EFBFBD>
#define PI 3.1415926535898
typedef struct{
uint16 year;
uint8 month;
uint8 day;
uint8 hour;
uint8 minute;
uint8 second;
}gps_time_struct;
typedef struct{
gps_time_struct time; //ʱ<><CAB1>
uint8 state; //<2F><>Ч״̬ 1<><31><EFBFBD><EFBFBD>λ<EFBFBD><CEBB>Ч 0<><30><EFBFBD><EFBFBD>λ<EFBFBD><CEBB>Ч
uint16 latitude_degree; //<2F><>
uint16 latitude_cent; //<2F><>
uint16 latitude_second; //<2F><>
uint16 longitude_degree; //<2F><>
uint16 longitude_cent; //<2F><>
uint16 longitude_second; //<2F><>
double latitude; //<2F><><EFBFBD><EFBFBD>
double longitude; //γ<><CEB3>
int8 ns; //γ<>Ȱ<EFBFBD><C8B0><EFBFBD> N<><4E><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>򣩻<EFBFBD> S<><53><EFBFBD>ϰ<EFBFBD><CFB0><EFBFBD><EFBFBD><EFBFBD>
int8 ew; //<2F><><EFBFBD>Ȱ<EFBFBD><C8B0><EFBFBD> E<><45><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> W<><57><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
float speed; //<2F>ٶȣ<D9B6><C8A3><EFBFBD><EFBFBD><EFBFBD>/ÿСʱ<D0A1><CAB1>
float direction; //<2F><><EFBFBD><EFBFBD><E6BABD><EFBFBD><EFBFBD>000.0~359.9 <20>ȣ<EFBFBD><C8A3><EFBFBD><EFBFBD><EFBFBD><E6B1B1>Ϊ<EFBFBD>ο<EFBFBD><CEBF><EFBFBD>׼<EFBFBD><D7BC>
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ<EFBFBD><CFA2>GNGGA<47><41><EFBFBD><EFBFBD><EFBFBD>л<EFBFBD>ȡ
uint8 satellite_used; //<2F><><EFBFBD>ڶ<EFBFBD>λ<EFBFBD><CEBB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
float height; //<2F>߶<EFBFBD>
}gps_info_struct;
extern gps_info_struct gps_tau1201;
extern uint8 gps_tau1201_flag;
double get_two_points_distance(double lat1, double lng1, double lat2, double lng2);
double get_two_points_azimuth(double lat1, double lon1, double lat2, double lon2);
void gps_uart_callback(void);
void gps_init(void);
#endif

View File

@@ -1,433 +0,0 @@
/*********************************************************************************************************************
* COPYRIGHT NOTICE
* Copyright (c) 2020,<2C><><EFBFBD>ɿƼ<C9BF>
* All rights reserved.
* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>QQȺ<51><C8BA><EFBFBD><EFBFBD>Ⱥ<EFBFBD><C8BA>824575535
*
* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݰ<EFBFBD>Ȩ<EFBFBD><C8A8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɿƼ<C9BF><C6BC><EFBFBD><EFBFBD>У<EFBFBD>δ<EFBFBD><CEB4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ҵ<EFBFBD><D2B5>;<EFBFBD><CDBE>
* <20><>ӭ<EFBFBD><D3AD>λʹ<CEBB>ò<EFBFBD><C3B2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>޸<EFBFBD><DEB8><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EBB1A3><EFBFBD><EFBFBD><EFBFBD>ɿƼ<C9BF><C6BC>İ<EFBFBD>Ȩ<EFBFBD><C8A8><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
*
* @file ICM20602
* @company <09>ɶ<EFBFBD><C9B6><EFBFBD><EFBFBD>ɿƼ<C9BF><C6BC><EFBFBD><EFBFBD>޹<EFBFBD>˾
* @author <09><><EFBFBD>ɿƼ<C9BF>(QQ3184284598)
* @version <09>鿴doc<6F><63>version<6F>ļ<EFBFBD> <20>汾˵<E6B1BE><CBB5>
* @Software ADS v1.2.2
* @Target core TC264D
* @Taobao https://seekfree.taobao.com/
* @date 2020-3-23
* @note
<09><><EFBFBD>߶<EFBFBD><DFB6>
------------------------------------
SCL <20>鿴SEEKFREE_IIC<49>ļ<EFBFBD><C4BC>ڵ<EFBFBD>SEEKFREE_SCL<43><EFBFBD><EAB6A8>
SDA <20>鿴SEEKFREE_IIC<49>ļ<EFBFBD><C4BC>ڵ<EFBFBD>SEEKFREE_SDA<44><EFBFBD><EAB6A8>
------------------------------------
********************************************************************************************************************/
#include "zf_stm_systick.h"
#include "zf_gpio.h"
#include "zf_spi.h"
#include "SEEKFREE_IIC.h"
#include "SEEKFREE_ICM20602.h"
int16 icm_gyro_x,icm_gyro_y,icm_gyro_z;
int16 icm_acc_x,icm_acc_y,icm_acc_z;
//-------------------------------------------------------------------------------------------------------------------
// @brief ICM20602<30>Լ캯<D4BC><ECBAAF>
// @param NULL
// @return void
// @since v1.0
// Sample usage: <09><><EFBFBD>øú<C3B8><C3BA><EFBFBD>ǰ<EFBFBD><C7B0><EFBFBD><EFBFBD><EFBFBD>ȵ<EFBFBD><C8B5><EFBFBD>ģ<EFBFBD><C4A3>IIC<49>ij<EFBFBD>ʼ<EFBFBD><CABC>
//-------------------------------------------------------------------------------------------------------------------
void icm20602_self1_check(void)
{
uint8 dat=0;
while(0x12 != dat) //<2F><>ȡICM20602 ID
{
dat = simiic_read_reg(ICM20602_DEV_ADDR,ICM20602_WHO_AM_I,SIMIIC);
systick_delay_ms(STM0, 10);
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ԭ<EFBFBD><D4AD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>¼<EFBFBD><C2BC><EFBFBD>
//1 ICM20602<30><32><EFBFBD>ˣ<EFBFBD><CBA3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>µ<EFBFBD><C2B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ĸ<EFBFBD><C4B8>ʼ<EFBFBD><CABC><EFBFBD>
//2 <20><><EFBFBD>ߴ<EFBFBD><DFB4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>û<EFBFBD>нӺ<D0BD>
//3 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ҫ<EFBFBD><D2AA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E8A3AC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>3.3V
//4 <20><><EFBFBD><EFBFBD>û<EFBFBD>е<EFBFBD><D0B5><EFBFBD>ģ<EFBFBD><C4A3>IIC<49>ij<EFBFBD>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
}
}
//-------------------------------------------------------------------------------------------------------------------
// @brief <20><>ʼ<EFBFBD><CABC>ICM20602
// @param NULL
// @return void
// @since v1.0
// Sample usage: <09><><EFBFBD>øú<C3B8><C3BA><EFBFBD>ǰ<EFBFBD><C7B0><EFBFBD><EFBFBD><EFBFBD>ȵ<EFBFBD><C8B5><EFBFBD>ģ<EFBFBD><C4A3>IIC<49>ij<EFBFBD>ʼ<EFBFBD><CABC>
//-------------------------------------------------------------------------------------------------------------------
void icm20602_init(void)
{
simiic_init();
systick_delay_ms(STM0, 10); //<2F>ϵ<EFBFBD><CFB5><EFBFBD>ʱ
//<2F><><EFBFBD><EFBFBD>
icm20602_self1_check();
//<2F><>λ
simiic_write_reg(ICM20602_DEV_ADDR,ICM20602_PWR_MGMT_1,0x80); //<2F><>λ<EFBFBD>
systick_delay_ms(STM0, 2); //<2F><>ʱ
while(0x80 & simiic_read_reg(ICM20602_DEV_ADDR,ICM20602_PWR_MGMT_1,SIMIIC));//<2F>ȴ<EFBFBD><C8B4><EFBFBD>λ<EFBFBD><CEBB><EFBFBD><EFBFBD>
//<2F><><EFBFBD>ò<EFBFBD><C3B2><EFBFBD>
simiic_write_reg(ICM20602_DEV_ADDR,ICM20602_PWR_MGMT_1,0x01); //ʱ<><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
simiic_write_reg(ICM20602_DEV_ADDR,ICM20602_PWR_MGMT_2,0x00); //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ǻͼ<C7BA><CDBC>ٶȼ<D9B6>
simiic_write_reg(ICM20602_DEV_ADDR,ICM20602_CONFIG,0x01); //176HZ 1KHZ
simiic_write_reg(ICM20602_DEV_ADDR,ICM20602_SMPLRT_DIV,0x07); //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> SAMPLE_RATE = INTERNAL_SAMPLE_RATE / (1 + SMPLRT_DIV)
simiic_write_reg(ICM20602_DEV_ADDR,ICM20602_GYRO_CONFIG,0x18); //<2F><>2000 dps
simiic_write_reg(ICM20602_DEV_ADDR,ICM20602_ACCEL_CONFIG,0x10); //<2F><>8g
simiic_write_reg(ICM20602_DEV_ADDR,ICM20602_ACCEL_CONFIG_2,0x03); //Average 4 samples 44.8HZ //0x23 Average 16 samples
}
//-------------------------------------------------------------------------------------------------------------------
// @brief <20><>ȡICM20602<30><32><EFBFBD>ٶȼ<D9B6><C8BC><EFBFBD><EFBFBD><EFBFBD>
// @param NULL
// @return void
// @since v1.0
// Sample usage: ִ<>иú<D0B8><C3BA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֱ<EFBFBD>Ӳ鿴<D3B2><E9BFB4>Ӧ<EFBFBD>ı<EFBFBD><C4B1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
//-------------------------------------------------------------------------------------------------------------------
void get_icm20602_accdata(void)
{
uint8 dat[6];
simiic_read_regs(ICM20602_DEV_ADDR, ICM20602_ACCEL_XOUT_H, dat, 6, SIMIIC);
icm_acc_x = (int16)(((uint16)dat[0]<<8 | dat[1]));
icm_acc_y = (int16)(((uint16)dat[2]<<8 | dat[3]));
icm_acc_z = (int16)(((uint16)dat[4]<<8 | dat[5]));
}
//-------------------------------------------------------------------------------------------------------------------
// @brief <20><>ȡICM20602<30><32><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// @param NULL
// @return void
// @since v1.0
// Sample usage: ִ<>иú<D0B8><C3BA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֱ<EFBFBD>Ӳ鿴<D3B2><E9BFB4>Ӧ<EFBFBD>ı<EFBFBD><C4B1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
//-------------------------------------------------------------------------------------------------------------------
void get_icm20602_gyro(void)
{
uint8 dat[6];
simiic_read_regs(ICM20602_DEV_ADDR, ICM20602_GYRO_XOUT_H, dat, 6, SIMIIC);
icm_gyro_x = (int16)(((uint16)dat[0]<<8 | dat[1]));
icm_gyro_y = (int16)(((uint16)dat[2]<<8 | dat[3]));
icm_gyro_z = (int16)(((uint16)dat[4]<<8 | dat[5]));
}
//-------------------------------------------------------------------------------------------------------------------
// <20><><EFBFBD>Ϻ<EFBFBD><CFBA><EFBFBD><EFBFBD><EFBFBD>ʹ<EFBFBD><CAB9><EFBFBD><EFBFBD><EFBFBD><EFBFBD>IICͨ<43>ţ<EFBFBD><C5A3><EFBFBD><EFBFBD>Ƚ<EFBFBD>Ӳ<EFBFBD><D3B2>IIC<49><43><EFBFBD><EFBFBD><EFBFBD><EFBFBD>IIC<49><43><EFBFBD>Ÿ<EFBFBD><C5B8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EEA3AC><EFBFBD><EFBFBD>ʹ<EFBFBD><CAB9><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͨIO
//-------------------------------------------------------------------------------------------------------------------
////-------------------------------------------------------------------------------------------------------------------
//// <20><><EFBFBD>º<EFBFBD><C2BA><EFBFBD><EFBFBD><EFBFBD>ʹ<EFBFBD><CAB9>Ӳ<EFBFBD><D3B2>IICͨ<43>ţ<EFBFBD><C5A3><EFBFBD><EFBFBD>Ƚ<EFBFBD><C8BD><EFBFBD><EFBFBD><EFBFBD>IIC<49><43>Ӳ<EFBFBD><D3B2>IIC<49>ٶȿ<D9B6><C8BF><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
////-------------------------------------------------------------------------------------------------------------------
//
//#define IIC_NUM IIC_1
//#define IIC_SDA_PIN IIC1_SDA_B17
//#define IIC_SCL_PIN IIC1_SCL_B16
////-------------------------------------------------------------------------------------------------------------------
//// @brief ICM20602<30>Լ캯<D4BC><ECBAAF>
//// @param NULL
//// @return void
//// @since v1.0
//// Sample usage:
////-------------------------------------------------------------------------------------------------------------------
//void icm20602_self2_check(void)
//{
// uint8 dat=0;
// while(0x12 != dat) //<2F><>ȡICM20602 ID
// {
// iic_read_reg(IIC_NUM, ICM20602_DEV_ADDR, ICM20602_WHO_AM_I, &dat);
// systick_delay_ms(STM0, 10);
// //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ԭ<EFBFBD><D4AD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>¼<EFBFBD><C2BC><EFBFBD>
// //1 ICM20602<30><32><EFBFBD>ˣ<EFBFBD><CBA3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>µ<EFBFBD><C2B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ĸ<EFBFBD><C4B8>ʼ<EFBFBD><CABC><EFBFBD>
// //2 <20><><EFBFBD>ߴ<EFBFBD><DFB4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>û<EFBFBD>нӺ<D0BD>
// //3 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ҫ<EFBFBD><D2AA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E8A3AC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>3.3V
// }
//}
//
////-------------------------------------------------------------------------------------------------------------------
//// @brief <20><>ʼ<EFBFBD><CABC>ICM20602
//// @param NULL
//// @return void
//// @since v1.0
//// Sample usage:
////-------------------------------------------------------------------------------------------------------------------
//void icm20602_init_hardware(void)
//{
// uint8 dat = 0;
// systick_delay_ms(STM0, 10); //<2F>ϵ<EFBFBD><CFB5><EFBFBD>ʱ
// iic_init(IIC_NUM, IIC_SDA_PIN, IIC_SCL_PIN,400*1000); //Ӳ<><D3B2>IIC<49><43>ʼ<EFBFBD><CABC> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>400K
//
// //<2F><><EFBFBD><EFBFBD>
// icm20602_self2_check();
//
// //<2F><>λ
// iic_write_reg(IIC_NUM,ICM20602_DEV_ADDR, ICM20602_PWR_MGMT_1, 0x80); //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>״̬
// systick_delay_ms(STM0, 2); //<2F><>ʱ
//
//
// while(0x80 & dat) //<2F>ȴ<EFBFBD><C8B4><EFBFBD>λ<EFBFBD><CEBB><EFBFBD><EFBFBD>
// {
// iic_read_reg(IIC_NUM, ICM20602_DEV_ADDR, ICM20602_PWR_MGMT_1, &dat);
// systick_delay_ms(STM0, 10);
// }
//
// //<2F><><EFBFBD>ò<EFBFBD><C3B2><EFBFBD>
// iic_write_reg(IIC_NUM,ICM20602_DEV_ADDR, ICM20602_PWR_MGMT_1, 0x01); //ʱ<><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// iic_write_reg(IIC_NUM,ICM20602_DEV_ADDR, ICM20602_PWR_MGMT_2, 0x00); //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ǻͼ<C7BA><CDBC>ٶȼ<D9B6>
// iic_write_reg(IIC_NUM,ICM20602_DEV_ADDR, ICM20602_CONFIG, 0x01); //176HZ 1KHZ
// iic_write_reg(IIC_NUM,ICM20602_DEV_ADDR, ICM20602_SMPLRT_DIV, 0x07); //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> SAMPLE_RATE = INTERNAL_SAMPLE_RATE / (1 + SMPLRT_DIV)
// iic_write_reg(IIC_NUM,ICM20602_DEV_ADDR, ICM20602_GYRO_CONFIG, 0x18); //<2F><>2000 dps
// iic_write_reg(IIC_NUM,ICM20602_DEV_ADDR, ICM20602_ACCEL_CONFIG, 0x10); //<2F><>8g
// iic_write_reg(IIC_NUM,ICM20602_DEV_ADDR, ICM20602_ACCEL_CONFIG_2, 0x03); //Average 4 samples 44.8HZ //0x23 Average 16 samples
//ICM20602_GYRO_CONFIG<49>Ĵ<EFBFBD><C4B4><EFBFBD>
//<2F><><EFBFBD><EFBFBD>Ϊ:0x00 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ:<3A><>250 dps <20><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݳ<EFBFBD><DDB3><EFBFBD>131 <20><><EFBFBD><EFBFBD>ת<EFBFBD><D7AA>Ϊ<EFBFBD><CEAA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>λ<EFBFBD><CEBB><EFBFBD><EFBFBD><EFBFBD>ݣ<EFBFBD><DDA3><EFBFBD>λΪ<CEBB><CEAA><EFBFBD><EFBFBD>/s
//<2F><><EFBFBD><EFBFBD>Ϊ:0x08 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ:<3A><>500 dps <20><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݳ<EFBFBD><DDB3><EFBFBD>65.5 <20><><EFBFBD><EFBFBD>ת<EFBFBD><D7AA>Ϊ<EFBFBD><CEAA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>λ<EFBFBD><CEBB><EFBFBD><EFBFBD><EFBFBD>ݣ<EFBFBD><DDA3><EFBFBD>λΪ<CEBB><CEAA><EFBFBD><EFBFBD>/s
//<2F><><EFBFBD><EFBFBD>Ϊ:0x10 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ:<3A><>1000dps <20><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݳ<EFBFBD><DDB3><EFBFBD>32.8 <20><><EFBFBD><EFBFBD>ת<EFBFBD><D7AA>Ϊ<EFBFBD><CEAA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>λ<EFBFBD><CEBB><EFBFBD><EFBFBD><EFBFBD>ݣ<EFBFBD><DDA3><EFBFBD>λΪ<CEBB><CEAA><EFBFBD><EFBFBD>/s
//<2F><><EFBFBD><EFBFBD>Ϊ:0x18 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ:<3A><>2000dps <20><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݳ<EFBFBD><DDB3><EFBFBD>16.4 <20><><EFBFBD><EFBFBD>ת<EFBFBD><D7AA>Ϊ<EFBFBD><CEAA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>λ<EFBFBD><CEBB><EFBFBD><EFBFBD><EFBFBD>ݣ<EFBFBD><DDA3><EFBFBD>λΪ<CEBB><CEAA><EFBFBD><EFBFBD>/s
//ICM20602_ACCEL_CONFIG<49>Ĵ<EFBFBD><C4B4><EFBFBD>
//<2F><><EFBFBD><EFBFBD>Ϊ:0x00 <20><><EFBFBD>ٶȼ<D9B6><C8BC><EFBFBD><EFBFBD><EFBFBD>Ϊ:<3A><>2g <20><>ȡ<EFBFBD><C8A1><EFBFBD>ļ<EFBFBD><C4BC>ٶȼ<D9B6><C8BC><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>16384 <20><><EFBFBD><EFBFBD>ת<EFBFBD><D7AA>Ϊ<EFBFBD><CEAA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>λ<EFBFBD><CEBB><EFBFBD><EFBFBD><EFBFBD>ݣ<EFBFBD><DDA3><EFBFBD>λ<EFBFBD><CEBB>g(m/s^2)
//<2F><><EFBFBD><EFBFBD>Ϊ:0x08 <20><><EFBFBD>ٶȼ<D9B6><C8BC><EFBFBD><EFBFBD><EFBFBD>Ϊ:<3A><>4g <20><>ȡ<EFBFBD><C8A1><EFBFBD>ļ<EFBFBD><C4BC>ٶȼ<D9B6><C8BC><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>8192 <20><><EFBFBD><EFBFBD>ת<EFBFBD><D7AA>Ϊ<EFBFBD><CEAA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>λ<EFBFBD><CEBB><EFBFBD><EFBFBD><EFBFBD>ݣ<EFBFBD><DDA3><EFBFBD>λ<EFBFBD><CEBB>g(m/s^2)
//<2F><><EFBFBD><EFBFBD>Ϊ:0x10 <20><><EFBFBD>ٶȼ<D9B6><C8BC><EFBFBD><EFBFBD><EFBFBD>Ϊ:<3A><>8g <20><>ȡ<EFBFBD><C8A1><EFBFBD>ļ<EFBFBD><C4BC>ٶȼ<D9B6><C8BC><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>4096 <20><><EFBFBD><EFBFBD>ת<EFBFBD><D7AA>Ϊ<EFBFBD><CEAA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>λ<EFBFBD><CEBB><EFBFBD><EFBFBD><EFBFBD>ݣ<EFBFBD><DDA3><EFBFBD>λ<EFBFBD><CEBB>g(m/s^2)
//<2F><><EFBFBD><EFBFBD>Ϊ:0x18 <20><><EFBFBD>ٶȼ<D9B6><C8BC><EFBFBD><EFBFBD><EFBFBD>Ϊ:<3A><>16g <20><>ȡ<EFBFBD><C8A1><EFBFBD>ļ<EFBFBD><C4BC>ٶȼ<D9B6><C8BC><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>2048 <20><><EFBFBD><EFBFBD>ת<EFBFBD><D7AA>Ϊ<EFBFBD><CEAA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>λ<EFBFBD><CEBB><EFBFBD><EFBFBD><EFBFBD>ݣ<EFBFBD><DDA3><EFBFBD>λ<EFBFBD><CEBB>g(m/s^2)
//
//}
//
//
////-------------------------------------------------------------------------------------------------------------------
//// @brief <20><>ȡICM20602<30><32><EFBFBD>ٶȼ<D9B6><C8BC><EFBFBD><EFBFBD><EFBFBD>
//// @param NULL
//// @return void
//// @since v1.0
//// Sample usage: ִ<>иú<D0B8><C3BA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֱ<EFBFBD>Ӳ鿴<D3B2><E9BFB4>Ӧ<EFBFBD>ı<EFBFBD><C4B1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
////-------------------------------------------------------------------------------------------------------------------
//void get_icm20602_accdata_hardware(void)
//{
// uint8 dat[6];
//
// iic_read_reg_bytes(IIC_NUM,ICM20602_DEV_ADDR, ICM20602_ACCEL_XOUT_H, dat, 6);
// icm_acc_x = (int16)(((uint16)dat[0]<<8 | dat[1]));
// icm_acc_y = (int16)(((uint16)dat[2]<<8 | dat[3]));
// icm_acc_z = (int16)(((uint16)dat[4]<<8 | dat[5]));
//}
//
////-------------------------------------------------------------------------------------------------------------------
//// @brief <20><>ȡICM20602<30><32><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
//// @param NULL
//// @return void
//// @since v1.0
//// Sample usage: ִ<>иú<D0B8><C3BA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֱ<EFBFBD>Ӳ鿴<D3B2><E9BFB4>Ӧ<EFBFBD>ı<EFBFBD><C4B1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
////-------------------------------------------------------------------------------------------------------------------
//void get_icm20602_gyro_hardware(void)
//{
// uint8 dat[6];
//
// iic_read_reg_bytes(IIC_NUM,ICM20602_DEV_ADDR, ICM20602_GYRO_XOUT_H, dat, 6);
// icm_gyro_x = (int16)(((uint16)dat[0]<<8 | dat[1]));
// icm_gyro_y = (int16)(((uint16)dat[2]<<8 | dat[3]));
// icm_gyro_z = (int16)(((uint16)dat[4]<<8 | dat[5]));
//}
//-------------------------------------------------------------------------------------------------------------------
// <20><><EFBFBD>º<EFBFBD><C2BA><EFBFBD><EFBFBD><EFBFBD>ʹ<EFBFBD><CAB9>Ӳ<EFBFBD><D3B2>SPIͨ<49>ţ<EFBFBD><C5A3><EFBFBD><EFBFBD>Ƚ<EFBFBD>IIC<49><43><EFBFBD>ٶȱ<D9B6>IIC<49><43><EFBFBD>dz<EFBFBD><C7B3>
//-------------------------------------------------------------------------------------------------------------------
#define SPI_NUM SPI_0
#define SPI_SCK_PIN SPI0_SCLK_P20_11 //<2F><>ģ<EFBFBD><C4A3>SPC
#define SPI_MOSI_PIN SPI0_MOSI_P20_14 //<2F><>ģ<EFBFBD><C4A3>SDI
#define SPI_MISO_PIN SPI0_MISO_P20_12 //<2F><>ģ<EFBFBD><C4A3>SDO
#define SPI_CS_PIN SPI0_CS2_P20_13 //<2F><>ģ<EFBFBD><C4A3>CS
//-------------------------------------------------------------------------------------------------------------------
// @brief ICM20602 SPIд<49>Ĵ<EFBFBD><C4B4><EFBFBD>
// @param cmd <20>Ĵ<EFBFBD><C4B4><EFBFBD><EFBFBD><EFBFBD>ַ
// @param val <20><>Ҫд<D2AA><D0B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// @return void
// @since v1.0
// Sample usage:
//-------------------------------------------------------------------------------------------------------------------
void icm_spi_w_reg_byte(uint8 cmd, uint8 val)
{
uint8 dat[2];
dat[0] = cmd | ICM20602_SPI_W;
dat[1] = val;
spi_mosi(SPI_NUM,SPI_CS_PIN,dat,dat,2,1);
}
//-------------------------------------------------------------------------------------------------------------------
// @brief ICM20602 SPI<50><49><EFBFBD>Ĵ<EFBFBD><C4B4><EFBFBD>
// @param cmd <20>Ĵ<EFBFBD><C4B4><EFBFBD><EFBFBD><EFBFBD>ַ
// @param *val <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݵĵ<DDB5>ַ
// @return void
// @since v1.0
// Sample usage:
//-------------------------------------------------------------------------------------------------------------------
void icm_spi_r_reg_byte(uint8 cmd, uint8 *val)
{
uint8 dat[2];
dat[0] = cmd | ICM20602_SPI_R;
dat[1] = *val;
spi_mosi(SPI_NUM,SPI_CS_PIN,dat,dat,2,1);
*val = dat[1];
}
//-------------------------------------------------------------------------------------------------------------------
// @brief ICM20602 SPI<50><49><EFBFBD>ֽڶ<D6BD><DAB6>Ĵ<EFBFBD><C4B4><EFBFBD>
// @param *val <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݵĵ<DDB5>ַ
// @param num <20><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD>
// @return void
// @since v1.0
// Sample usage:
//-------------------------------------------------------------------------------------------------------------------
void icm_spi_r_reg_bytes(uint8 * val, uint8 num)
{
spi_mosi(SPI_NUM,SPI_CS_PIN,val,val,num,1);
}
//-------------------------------------------------------------------------------------------------------------------
// @brief ICM20602<30>Լ캯<D4BC><ECBAAF>
// @param NULL
// @return void
// @since v1.0
// Sample usage:
//-------------------------------------------------------------------------------------------------------------------
void icm20602_self3_check(void)
{
uint8 dat=0;
while(0x12 != dat) //<2F><>ȡICM20602 ID
{
icm_spi_r_reg_byte(ICM20602_WHO_AM_I,&dat);
systick_delay_ms(STM0, 10);
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ԭ<EFBFBD><D4AD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>¼<EFBFBD><C2BC><EFBFBD>
//1 ICM20602<30><32><EFBFBD>ˣ<EFBFBD><CBA3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>µ<EFBFBD><C2B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ĸ<EFBFBD><C4B8>ʼ<EFBFBD><CABC><EFBFBD>
//2 <20><><EFBFBD>ߴ<EFBFBD><DFB4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>û<EFBFBD>нӺ<D0BD>
//3 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ҫ<EFBFBD><D2AA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E8A3AC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>3.3V
}
}
//-------------------------------------------------------------------------------------------------------------------
// @brief <20><>ʼ<EFBFBD><CABC>ICM20602
// @param NULL
// @return void
// @since v1.0
// Sample usage:
//-------------------------------------------------------------------------------------------------------------------
void icm20602_init_spi(void)
{
uint8 val = 0x0;
systick_delay_ms(STM0, 10); //<2F>ϵ<EFBFBD><CFB5><EFBFBD>ʱ
(void)spi_init(SPI_NUM, SPI_SCK_PIN, SPI_MOSI_PIN, SPI_MISO_PIN, SPI_CS_PIN, 3, 10*1000*1000);//Ӳ<><D3B2>SPI<50><49>ʼ<EFBFBD><CABC>
icm20602_self3_check();//<2F><><EFBFBD><EFBFBD>
icm_spi_w_reg_byte(ICM20602_PWR_MGMT_1,0x80);//<2F><>λ<EFBFBD>
systick_delay_ms(STM0, 2);
do
{//<2F>ȴ<EFBFBD><C8B4><EFBFBD>λ<EFBFBD>ɹ<EFBFBD>
icm_spi_r_reg_byte(ICM20602_PWR_MGMT_1,&val);
}while(0x41 != val);
icm_spi_w_reg_byte(ICM20602_PWR_MGMT_1, 0x01); //ʱ<><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
icm_spi_w_reg_byte(ICM20602_PWR_MGMT_2, 0x00); //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ǻͼ<C7BA><CDBC>ٶȼ<D9B6>
icm_spi_w_reg_byte(ICM20602_CONFIG, 0x01); //176HZ 1KHZ
icm_spi_w_reg_byte(ICM20602_SMPLRT_DIV, 0x07); //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> SAMPLE_RATE = INTERNAL_SAMPLE_RATE / (1 + SMPLRT_DIV)
icm_spi_w_reg_byte(ICM20602_GYRO_CONFIG, 0x18); //<2F><>2000 dps
icm_spi_w_reg_byte(ICM20602_ACCEL_CONFIG, 0x10); //<2F><>8g
icm_spi_w_reg_byte(ICM20602_ACCEL_CONFIG_2, 0x03); //Average 4 samples 44.8HZ //0x23 Average 16 samples
//ICM20602_GYRO_CONFIG<49>Ĵ<EFBFBD><C4B4><EFBFBD>
//<2F><><EFBFBD><EFBFBD>Ϊ:0x00 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ:<3A><>250 dps <20><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݳ<EFBFBD><DDB3><EFBFBD>131 <20><><EFBFBD><EFBFBD>ת<EFBFBD><D7AA>Ϊ<EFBFBD><CEAA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>λ<EFBFBD><CEBB><EFBFBD><EFBFBD><EFBFBD>ݣ<EFBFBD><DDA3><EFBFBD>λΪ<CEBB><CEAA><EFBFBD><EFBFBD>/s
//<2F><><EFBFBD><EFBFBD>Ϊ:0x08 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ:<3A><>500 dps <20><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݳ<EFBFBD><DDB3><EFBFBD>65.5 <20><><EFBFBD><EFBFBD>ת<EFBFBD><D7AA>Ϊ<EFBFBD><CEAA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>λ<EFBFBD><CEBB><EFBFBD><EFBFBD><EFBFBD>ݣ<EFBFBD><DDA3><EFBFBD>λΪ<CEBB><CEAA><EFBFBD><EFBFBD>/s
//<2F><><EFBFBD><EFBFBD>Ϊ:0x10 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ:<3A><>1000dps <20><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݳ<EFBFBD><DDB3><EFBFBD>32.8 <20><><EFBFBD><EFBFBD>ת<EFBFBD><D7AA>Ϊ<EFBFBD><CEAA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>λ<EFBFBD><CEBB><EFBFBD><EFBFBD><EFBFBD>ݣ<EFBFBD><DDA3><EFBFBD>λΪ<CEBB><CEAA><EFBFBD><EFBFBD>/s
//<2F><><EFBFBD><EFBFBD>Ϊ:0x18 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ:<3A><>2000dps <20><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݳ<EFBFBD><DDB3><EFBFBD>16.4 <20><><EFBFBD><EFBFBD>ת<EFBFBD><D7AA>Ϊ<EFBFBD><CEAA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>λ<EFBFBD><CEBB><EFBFBD><EFBFBD><EFBFBD>ݣ<EFBFBD><DDA3><EFBFBD>λΪ<CEBB><CEAA><EFBFBD><EFBFBD>/s
//ICM20602_ACCEL_CONFIG<49>Ĵ<EFBFBD><C4B4><EFBFBD>
//<2F><><EFBFBD><EFBFBD>Ϊ:0x00 <20><><EFBFBD>ٶȼ<D9B6><C8BC><EFBFBD><EFBFBD><EFBFBD>Ϊ:<3A><>2g <20><>ȡ<EFBFBD><C8A1><EFBFBD>ļ<EFBFBD><C4BC>ٶȼ<D9B6><C8BC><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>16384 <20><><EFBFBD><EFBFBD>ת<EFBFBD><D7AA>Ϊ<EFBFBD><CEAA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>λ<EFBFBD><CEBB><EFBFBD><EFBFBD><EFBFBD>ݣ<EFBFBD><DDA3><EFBFBD>λ<EFBFBD><CEBB>g(m/s^2)
//<2F><><EFBFBD><EFBFBD>Ϊ:0x08 <20><><EFBFBD>ٶȼ<D9B6><C8BC><EFBFBD><EFBFBD><EFBFBD>Ϊ:<3A><>4g <20><>ȡ<EFBFBD><C8A1><EFBFBD>ļ<EFBFBD><C4BC>ٶȼ<D9B6><C8BC><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>8192 <20><><EFBFBD><EFBFBD>ת<EFBFBD><D7AA>Ϊ<EFBFBD><CEAA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>λ<EFBFBD><CEBB><EFBFBD><EFBFBD><EFBFBD>ݣ<EFBFBD><DDA3><EFBFBD>λ<EFBFBD><CEBB>g(m/s^2)
//<2F><><EFBFBD><EFBFBD>Ϊ:0x10 <20><><EFBFBD>ٶȼ<D9B6><C8BC><EFBFBD><EFBFBD><EFBFBD>Ϊ:<3A><>8g <20><>ȡ<EFBFBD><C8A1><EFBFBD>ļ<EFBFBD><C4BC>ٶȼ<D9B6><C8BC><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>4096 <20><><EFBFBD><EFBFBD>ת<EFBFBD><D7AA>Ϊ<EFBFBD><CEAA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>λ<EFBFBD><CEBB><EFBFBD><EFBFBD><EFBFBD>ݣ<EFBFBD><DDA3><EFBFBD>λ<EFBFBD><CEBB>g(m/s^2)
//<2F><><EFBFBD><EFBFBD>Ϊ:0x18 <20><><EFBFBD>ٶȼ<D9B6><C8BC><EFBFBD><EFBFBD><EFBFBD>Ϊ:<3A><>16g <20><>ȡ<EFBFBD><C8A1><EFBFBD>ļ<EFBFBD><C4BC>ٶȼ<D9B6><C8BC><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>2048 <20><><EFBFBD><EFBFBD>ת<EFBFBD><D7AA>Ϊ<EFBFBD><CEAA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>λ<EFBFBD><CEBB><EFBFBD><EFBFBD><EFBFBD>ݣ<EFBFBD><DDA3><EFBFBD>λ<EFBFBD><CEBB>g(m/s^2)
}
//-------------------------------------------------------------------------------------------------------------------
// @brief <20><>ȡICM20602<30><32><EFBFBD>ٶȼ<D9B6><C8BC><EFBFBD><EFBFBD><EFBFBD>
// @param NULL
// @return void
// @since v1.0
// Sample usage: ִ<>иú<D0B8><C3BA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֱ<EFBFBD>Ӳ鿴<D3B2><E9BFB4>Ӧ<EFBFBD>ı<EFBFBD><C4B1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
//-------------------------------------------------------------------------------------------------------------------
void get_icm20602_accdata_spi(void)
{
struct
{
uint8 reg;
uint8 dat[6];
}buf;
buf.reg = ICM20602_ACCEL_XOUT_H | ICM20602_SPI_R;
icm_spi_r_reg_bytes(&buf.reg, 7);
icm_acc_x = (int16)(((uint16)buf.dat[0]<<8 | buf.dat[1]));
icm_acc_y = (int16)(((uint16)buf.dat[2]<<8 | buf.dat[3]));
icm_acc_z = (int16)(((uint16)buf.dat[4]<<8 | buf.dat[5]));
}
//-------------------------------------------------------------------------------------------------------------------
// @brief <20><>ȡICM20602<30><32><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// @param NULL
// @return void
// @since v1.0
// Sample usage: ִ<>иú<D0B8><C3BA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֱ<EFBFBD>Ӳ鿴<D3B2><E9BFB4>Ӧ<EFBFBD>ı<EFBFBD><C4B1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
//-------------------------------------------------------------------------------------------------------------------
void get_icm20602_gyro_spi(void)
{
struct
{
uint8 reg;
uint8 dat[6];
}buf;
buf.reg = ICM20602_GYRO_XOUT_H | ICM20602_SPI_R;
icm_spi_r_reg_bytes(&buf.reg, 7);
icm_gyro_x = (int16)(((uint16)buf.dat[0]<<8 | buf.dat[1]));
icm_gyro_y = (int16)(((uint16)buf.dat[2]<<8 | buf.dat[3]));
icm_gyro_z = (int16)(((uint16)buf.dat[4]<<8 | buf.dat[5]));
}

View File

@@ -1,124 +0,0 @@
/*********************************************************************************************************************
* COPYRIGHT NOTICE
* Copyright (c) 2020,<2C><><EFBFBD>ɿƼ<C9BF>
* All rights reserved.
* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>QQȺ<51><C8BA><EFBFBD><EFBFBD>Ⱥ<EFBFBD><C8BA>824575535
*
* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݰ<EFBFBD>Ȩ<EFBFBD><C8A8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɿƼ<C9BF><C6BC><EFBFBD><EFBFBD>У<EFBFBD>δ<EFBFBD><CEB4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ҵ<EFBFBD><D2B5>;<EFBFBD><CDBE>
* <20><>ӭ<EFBFBD><D3AD>λʹ<CEBB>ò<EFBFBD><C3B2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>޸<EFBFBD><DEB8><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EBB1A3><EFBFBD><EFBFBD><EFBFBD>ɿƼ<C9BF><C6BC>İ<EFBFBD>Ȩ<EFBFBD><C8A8><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
*
* @file ICM20602
* @company <09>ɶ<EFBFBD><C9B6><EFBFBD><EFBFBD>ɿƼ<C9BF><C6BC><EFBFBD><EFBFBD>޹<EFBFBD>˾
* @author <09><><EFBFBD>ɿƼ<C9BF>(QQ3184284598)
* @version <09>鿴doc<6F><63>version<6F>ļ<EFBFBD> <20>汾˵<E6B1BE><CBB5>
* @Software ADS v1.2.2
* @Target core TC264D
* @Taobao https://seekfree.taobao.com/
* @date 2020-3-23
* @note
<09><><EFBFBD>߶<EFBFBD><DFB6>
------------------------------------
SCL <20>鿴SEEKFREE_IIC<49>ļ<EFBFBD><C4BC>ڵ<EFBFBD>SEEKFREE_SCL<43><EFBFBD><EAB6A8>
SDA <20>鿴SEEKFREE_IIC<49>ļ<EFBFBD><C4BC>ڵ<EFBFBD>SEEKFREE_SDA<44><EFBFBD><EAB6A8>
------------------------------------
********************************************************************************************************************/
#ifndef _SEEKFREE_ICM20602_h
#define _SEEKFREE_ICM20602_h
#include "common.h"
#define ICM20602_DEV_ADDR 0x69 //SA0<41>ӵأ<D3B5>0x68 SA0<41><30><EFBFBD><EFBFBD><EFBFBD><EFBFBD>0x69 ģ<><C4A3>Ĭ<EFBFBD><C4AC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
#define ICM20602_SPI_W 0x00
#define ICM20602_SPI_R 0x80
#define ICM20602_XG_OFFS_TC_H 0x04
#define ICM20602_XG_OFFS_TC_L 0x05
#define ICM20602_YG_OFFS_TC_H 0x07
#define ICM20602_YG_OFFS_TC_L 0x08
#define ICM20602_ZG_OFFS_TC_H 0x0A
#define ICM20602_ZG_OFFS_TC_L 0x0B
#define ICM20602_SELF_TEST_X_ACCEL 0x0D
#define ICM20602_SELF_TEST_Y_ACCEL 0x0E
#define ICM20602_SELF_TEST_Z_ACCEL 0x0F
#define ICM20602_XG_OFFS_USRH 0x13
#define ICM20602_XG_OFFS_USRL 0x14
#define ICM20602_YG_OFFS_USRH 0x15
#define ICM20602_YG_OFFS_USRL 0x16
#define ICM20602_ZG_OFFS_USRH 0x17
#define ICM20602_ZG_OFFS_USRL 0x18
#define ICM20602_SMPLRT_DIV 0x19
#define ICM20602_CONFIG 0x1A
#define ICM20602_GYRO_CONFIG 0x1B
#define ICM20602_ACCEL_CONFIG 0x1C
#define ICM20602_ACCEL_CONFIG_2 0x1D
#define ICM20602_LP_MODE_CFG 0x1E
#define ICM20602_ACCEL_WOM_X_THR 0x20
#define ICM20602_ACCEL_WOM_Y_THR 0x21
#define ICM20602_ACCEL_WOM_Z_THR 0x22
#define ICM20602_FIFO_EN 0x23
#define ICM20602_FSYNC_INT 0x36
#define ICM20602_INT_PIN_CFG 0x37
#define ICM20602_INT_ENABLE 0x38
#define ICM20602_FIFO_WM_INT_STATUS 0x39
#define ICM20602_INT_STATUS 0x3A
#define ICM20602_ACCEL_XOUT_H 0x3B
#define ICM20602_ACCEL_XOUT_L 0x3C
#define ICM20602_ACCEL_YOUT_H 0x3D
#define ICM20602_ACCEL_YOUT_L 0x3E
#define ICM20602_ACCEL_ZOUT_H 0x3F
#define ICM20602_ACCEL_ZOUT_L 0x40
#define ICM20602_TEMP_OUT_H 0x41
#define ICM20602_TEMP_OUT_L 0x42
#define ICM20602_GYRO_XOUT_H 0x43
#define ICM20602_GYRO_XOUT_L 0x44
#define ICM20602_GYRO_YOUT_H 0x45
#define ICM20602_GYRO_YOUT_L 0x46
#define ICM20602_GYRO_ZOUT_H 0x47
#define ICM20602_GYRO_ZOUT_L 0x48
#define ICM20602_SELF_TEST_X_GYRO 0x50
#define ICM20602_SELF_TEST_Y_GYRO 0x51
#define ICM20602_SELF_TEST_Z_GYRO 0x52
#define ICM20602_FIFO_WM_TH1 0x60
#define ICM20602_FIFO_WM_TH2 0x61
#define ICM20602_SIGNAL_PATH_RESET 0x68
#define ICM20602_ACCEL_INTEL_CTRL 0x69
#define ICM20602_USER_CTRL 0x6A
#define ICM20602_PWR_MGMT_1 0x6B
#define ICM20602_PWR_MGMT_2 0x6C
#define ICM20602_I2C_IF 0x70
#define ICM20602_FIFO_COUNTH 0x72
#define ICM20602_FIFO_COUNTL 0x73
#define ICM20602_FIFO_R_W 0x74
#define ICM20602_WHO_AM_I 0x75
#define ICM20602_XA_OFFSET_H 0x77
#define ICM20602_XA_OFFSET_L 0x78
#define ICM20602_YA_OFFSET_H 0x7A
#define ICM20602_YA_OFFSET_L 0x7B
#define ICM20602_ZA_OFFSET_H 0x7D
#define ICM20602_ZA_OFFSET_L 0x7E
extern int16 icm_gyro_x,icm_gyro_y,icm_gyro_z;
extern int16 icm_acc_x,icm_acc_y,icm_acc_z;
//--------<2D><><EFBFBD><EFBFBD>IIC--------------
void icm20602_init(void);
void get_icm20602_accdata(void);
void get_icm20602_gyro(void);
//--------Ӳ<><D3B2>IIC--------------
void icm20602_init_hardware(void);
void get_icm20602_accdata_hardware(void);
void get_icm20602_gyro_hardware(void);
//--------Ӳ<><D3B2>SPI--------------
void icm20602_init_spi(void);
void get_icm20602_accdata_spi(void);
void get_icm20602_gyro_spi(void);
#endif

View File

@@ -1,279 +0,0 @@
/*********************************************************************************************************************
* COPYRIGHT NOTICE
* Copyright (c) 2020,<2C><><EFBFBD>ɿƼ<C9BF>
* All rights reserved.
* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>QQȺ<51><C8BA><EFBFBD><EFBFBD>Ⱥ<EFBFBD><C8BA>824575535
*
* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݰ<EFBFBD>Ȩ<EFBFBD><C8A8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɿƼ<C9BF><C6BC><EFBFBD><EFBFBD>У<EFBFBD>δ<EFBFBD><CEB4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ҵ<EFBFBD><D2B5>;<EFBFBD><CDBE>
* <20><>ӭ<EFBFBD><D3AD>λʹ<CEBB>ò<EFBFBD><C3B2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>޸<EFBFBD><DEB8><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EBB1A3><EFBFBD><EFBFBD><EFBFBD>ɿƼ<C9BF><C6BC>İ<EFBFBD>Ȩ<EFBFBD><C8A8><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
*
* @file ģ<><C4A3>IIC
* @company <09>ɶ<EFBFBD><C9B6><EFBFBD><EFBFBD>ɿƼ<C9BF><C6BC><EFBFBD><EFBFBD>޹<EFBFBD>˾
* @author <09><><EFBFBD>ɿƼ<C9BF>(QQ3184284598)
* @version <09>鿴doc<6F><63>version<6F>ļ<EFBFBD> <20>汾˵<E6B1BE><CBB5>
* @Software ADS v1.2.2
* @Target core TC264D
* @Taobao https://seekfree.taobao.com/
* @date 2020-3-23
* @note
<09><><EFBFBD>߶<EFBFBD><DFB6>
------------------------------------
SCL <20>鿴SEEKFREE_IIC<49>ļ<EFBFBD><C4BC>ڵ<EFBFBD>SEEKFREE_SCL<43><EFBFBD><EAB6A8>
SDA <20>鿴SEEKFREE_IIC<49>ļ<EFBFBD><C4BC>ڵ<EFBFBD>SEEKFREE_SDA<44><EFBFBD><EAB6A8>
------------------------------------
********************************************************************************************************************/
#include "zf_gpio.h"
#include "zf_stm_systick.h"
#include "SEEKFREE_IIC.h"
#define SDA gpio_get (SEEKFREE_SDA)
#define SDA0() gpio_set (SEEKFREE_SDA, 0) //IO<49><4F><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>͵<EFBFBD>ƽ
#define SDA1() gpio_set (SEEKFREE_SDA, 1) //IO<49><4F><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ߵ<EFBFBD>ƽ
#define SCL0() gpio_set (SEEKFREE_SCL, 0) //IO<49><4F><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>͵<EFBFBD>ƽ
#define SCL1() gpio_set (SEEKFREE_SCL, 1) //IO<49><4F><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ߵ<EFBFBD>ƽ
#define DIR_OUT() gpio_dir (SEEKFREE_SDA, GPO, PUSHPULL) //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
#define DIR_IN() gpio_dir (SEEKFREE_SDA, GPI, NO_PULL) //<2F><><EFBFBD><EFBFBD><EBB7BD>
//<2F>ڲ<EFBFBD><DAB2><EFBFBD><EFBFBD>ݶ<EFBFBD><DDB6><EFBFBD>
uint8 IIC_ad_main; //<2F><><EFBFBD><EFBFBD><EFBFBD>ӵ<EFBFBD>ַ
uint8 IIC_ad_sub; //<2F><><EFBFBD><EFBFBD><EFBFBD>ӵ<EFBFBD>ַ
uint8 *IIC_buf; //<2F><><EFBFBD><EFBFBD>|<7C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݻ<EFBFBD><DDBB><EFBFBD><EFBFBD><EFBFBD>
uint8 IIC_num; //<2F><><EFBFBD><EFBFBD>|<7C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݸ<EFBFBD><DDB8><EFBFBD>
#define ack 1 //<2F><>Ӧ<EFBFBD><D3A6>
#define no_ack 0 //<2F><>Ӧ<EFBFBD><D3A6>
uint16 simiic_delay_time = SIMIIC_DELAY_TIME; //ICM<43>ȴ<EFBFBD><C8B4><EFBFBD><EFBFBD><EFBFBD>Ӧ<EFBFBD><D3A6><EFBFBD><EFBFBD>Ϊ20
//-------------------------------------------------------------------------------------------------------------------
// @brief ģ<><C4A3>IIC<49><43>ʱ ʱ<><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// @return void
// @since v1.0
// Sample usage: <09><><EFBFBD><EFBFBD>IICͨѶʧ<D1B6>ܿ<EFBFBD><DCBF>Գ<EFBFBD><D4B3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>simiic_delay_time<6D><65>ֵ
//-------------------------------------------------------------------------------------------------------------------
void simiic_delay_set(uint16 time)
{
simiic_delay_time = time; //ICM<43>ȴ<EFBFBD><C8B4><EFBFBD><EFBFBD><EFBFBD>Ӧ<EFBFBD><D3A6><EFBFBD><EFBFBD>Ϊ100
}
//-------------------------------------------------------------------------------------------------------------------
// @brief ģ<><C4A3>IIC<49><43>ʱ
// @return void
// @since v1.0
// Sample usage: <09><><EFBFBD><EFBFBD>IICͨѶʧ<D1B6>ܿ<EFBFBD><DCBF>Գ<EFBFBD><D4B3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>simiic_delay_time<6D><65>ֵ
//-------------------------------------------------------------------------------------------------------------------
void simiic_delay(void)
{
uint16 delay_time;
delay_time = simiic_delay_time;
while(delay_time--);
}
//<2F>ڲ<EFBFBD>ʹ<EFBFBD>ã<EFBFBD><C3A3>û<EFBFBD><C3BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
void simiic_start(void)
{
SDA1();
SCL1();
simiic_delay();
SDA0();
simiic_delay();
SCL0();
}
//<2F>ڲ<EFBFBD>ʹ<EFBFBD>ã<EFBFBD><C3A3>û<EFBFBD><C3BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
void simiic_stop(void)
{
SDA0();
SCL0();
simiic_delay();
SCL1();
simiic_delay();
SDA1();
simiic_delay();
}
//<2F><>Ӧ<EFBFBD><D3A6>(<28><><EFBFBD><EFBFBD>ack:SDA=0<><30>no_ack:SDA=0)
//<2F>ڲ<EFBFBD>ʹ<EFBFBD>ã<EFBFBD><C3A3>û<EFBFBD><C3BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
void simiic_sendack(unsigned char ack_dat)
{
SCL0();
simiic_delay();
if(ack_dat) SDA0();
else SDA1();
SCL1();
simiic_delay();
SCL0();
simiic_delay();
}
static int sccb_waitack(void)
{
SCL0();
DIR_IN();
simiic_delay();
SCL1();
simiic_delay();
if(SDA) //Ӧ<><D3A6>Ϊ<EFBFBD>ߵ<EFBFBD>ƽ<EFBFBD><C6BD><EFBFBD><EFBFBD><ECB3A3>ͨ<EFBFBD><CDA8>ʧ<EFBFBD><CAA7>
{
DIR_OUT();
SCL0();
return 0;
}
DIR_OUT();
SCL0();
simiic_delay();
return 1;
}
//<2F>ֽڷ<D6BD><DAB7>ͳ<EFBFBD><CDB3><EFBFBD>
//<2F><><EFBFBD><EFBFBD>c(<28><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ҳ<EFBFBD><D2B2><EFBFBD>ǵ<EFBFBD>ַ)<29><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>մ<EFBFBD>Ӧ<EFBFBD><D3A6>
//<2F><><EFBFBD><EFBFBD><EFBFBD>Ǵ<EFBFBD>Ӧ<EFBFBD><D3A6>λ
//<2F>ڲ<EFBFBD>ʹ<EFBFBD>ã<EFBFBD><C3A3>û<EFBFBD><C3BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
void send_ch(uint8 c)
{
uint8 i = 8;
while(i--)
{
if(c & 0x80) SDA1();//SDA <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
else SDA0();
c <<= 1;
simiic_delay();
SCL1(); //SCL <20><><EFBFBD>ߣ<EFBFBD><DFA3>ɼ<EFBFBD><C9BC>ź<EFBFBD>
simiic_delay();
SCL0(); //SCL ʱ<><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
}
sccb_waitack();
}
//<2F>ֽڽ<D6BD><DABD>ճ<EFBFBD><D5B3><EFBFBD>
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݣ<EFBFBD><DDA3>˳<EFBFBD><CBB3><EFBFBD>Ӧ<EFBFBD><D3A6><EFBFBD><EFBFBD>|<7C><>Ӧ<EFBFBD><D3A6><EFBFBD><EFBFBD><EFBFBD><EFBFBD>|ʹ<><CAB9>
//<2F>ڲ<EFBFBD>ʹ<EFBFBD>ã<EFBFBD><C3A3>û<EFBFBD><C3BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
uint8 read_ch(uint8 ack_x)
{
uint8 i;
uint8 c;
c=0;
SCL0();
simiic_delay();
SDA1();
DIR_IN(); //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA><EFBFBD>ʽ
for(i=0;i<8;i++)
{
simiic_delay();
SCL0(); //<2F><>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD>Ϊ<EFBFBD>ͣ<EFBFBD>׼<EFBFBD><D7BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>λ
simiic_delay();
SCL1(); //<2F><>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD>Ϊ<EFBFBD>ߣ<EFBFBD>ʹ<EFBFBD><CAB9><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ч
simiic_delay();
c<<=1;
if(SDA)
{
c+=1; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>λ<EFBFBD><CEBB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>յ<EFBFBD><D5B5><EFBFBD><EFBFBD>ݴ<EFBFBD>c
}
}
DIR_OUT();
SCL0();
simiic_delay();
simiic_sendack(ack_x);
return c;
}
//-------------------------------------------------------------------------------------------------------------------
// @brief ģ<><C4A3>IICд<43><D0B4><EFBFBD>ݵ<EFBFBD><DDB5><EFBFBD>Ĵ<EFBFBD><C4B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// @param dev_add <09><EFBFBD><E8B1B8>ַ(<28><><EFBFBD><EFBFBD>λ<EFBFBD><CEBB>ַ)
// @param reg <09>Ĵ<EFBFBD><C4B4><EFBFBD><EFBFBD><EFBFBD>ַ
// @param dat д<><D0B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// @return void
// @since v1.0
// Sample usage:
//-------------------------------------------------------------------------------------------------------------------
void simiic_write_reg(uint8 dev_add, uint8 reg, uint8 dat)
{
simiic_start();
send_ch( (dev_add<<1) | 0x00); //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ַ<EFBFBD><D6B7>дλ
send_ch( reg ); //<2F><><EFBFBD>ʹӻ<CDB4><D3BB>Ĵ<EFBFBD><C4B4><EFBFBD><EFBFBD><EFBFBD>ַ
send_ch( dat ); //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ҫд<D2AA><D0B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
simiic_stop();
}
//-------------------------------------------------------------------------------------------------------------------
// @brief ģ<><C4A3>IIC<49><43><EFBFBD><EFBFBD>Ĵ<EFBFBD><C4B4><EFBFBD><EFBFBD><EFBFBD>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD>
// @param dev_add <09><EFBFBD><E8B1B8>ַ(<28><><EFBFBD><EFBFBD>λ<EFBFBD><CEBB>ַ)
// @param reg <09>Ĵ<EFBFBD><C4B4><EFBFBD><EFBFBD><EFBFBD>ַ
// @param type ѡ<><D1A1>ͨ<EFBFBD>ŷ<EFBFBD>ʽ<EFBFBD><CABD>IIC <20><><EFBFBD><EFBFBD> SCCB
// @return uint8 <09><><EFBFBD>ؼĴ<D8BC><C4B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// @since v1.0
// Sample usage:
//-------------------------------------------------------------------------------------------------------------------
uint8 simiic_read_reg(uint8 dev_add, uint8 reg, IIC_type type)
{
uint8 dat;
simiic_start();
send_ch( (dev_add<<1) | 0x00); //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ַ<EFBFBD><D6B7>дλ
send_ch( reg ); //<2F><><EFBFBD>ʹӻ<CDB4><D3BB>Ĵ<EFBFBD><C4B4><EFBFBD><EFBFBD><EFBFBD>ַ
if(type == SCCB)simiic_stop();
simiic_start();
send_ch( (dev_add<<1) | 0x01); //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ַ<EFBFBD>Ӷ<EFBFBD>λ
dat = read_ch(no_ack); //<2F><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD>
simiic_stop();
return dat;
}
//-------------------------------------------------------------------------------------------------------------------
// @brief ģ<><C4A3>IIC<49><43>ȡ<EFBFBD><C8A1><EFBFBD>ֽ<EFBFBD><D6BD><EFBFBD><EFBFBD><EFBFBD>
// @param dev_add <09><EFBFBD><E8B1B8>ַ(<28><><EFBFBD><EFBFBD>λ<EFBFBD><CEBB>ַ)
// @param reg <09>Ĵ<EFBFBD><C4B4><EFBFBD><EFBFBD><EFBFBD>ַ
// @param dat_add <09><><EFBFBD>ݱ<EFBFBD><DDB1><EFBFBD><EFBFBD>ĵ<EFBFBD>ַָ<D6B7><D6B8>
// @param num <09><>ȡ<EFBFBD>ֽ<EFBFBD><D6BD><EFBFBD><EFBFBD><EFBFBD>
// @param type ѡ<><D1A1>ͨ<EFBFBD>ŷ<EFBFBD>ʽ<EFBFBD><CABD>IIC <20><><EFBFBD><EFBFBD> SCCB
// @return uint8 <09><><EFBFBD>ؼĴ<D8BC><C4B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// @since v1.0
// Sample usage:
//-------------------------------------------------------------------------------------------------------------------
void simiic_read_regs(uint8 dev_add, uint8 reg, uint8 *dat_add, uint8 num, IIC_type type)
{
simiic_start();
send_ch( (dev_add<<1) | 0x00); //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ַ<EFBFBD><D6B7>дλ
send_ch( reg ); //<2F><><EFBFBD>ʹӻ<CDB4><D3BB>Ĵ<EFBFBD><C4B4><EFBFBD><EFBFBD><EFBFBD>ַ
if(type == SCCB)simiic_stop();
simiic_start();
send_ch( (dev_add<<1) | 0x01); //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ַ<EFBFBD>Ӷ<EFBFBD>λ
while(--num)
{
*dat_add = read_ch(ack); //<2F><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD>
dat_add++;
}
*dat_add = read_ch(no_ack); //<2F><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD>
simiic_stop();
}
//-------------------------------------------------------------------------------------------------------------------
// @brief ģ<><C4A3>IIC<49>˿ڳ<CBBF>ʼ<EFBFBD><CABC>
// @param NULL
// @return void
// @since v1.0
// Sample usage:
//-------------------------------------------------------------------------------------------------------------------
void simiic_init(void)
{
gpio_init (SEEKFREE_SCL, GPO, 1, PUSHPULL);
gpio_init (SEEKFREE_SDA, GPO, 1, PUSHPULL);
}

View File

@@ -1,74 +0,0 @@
/*********************************************************************************************************************
* COPYRIGHT NOTICE
* Copyright (c) 2020,<2C><><EFBFBD>ɿƼ<C9BF>
* All rights reserved.
* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>QQȺ<51><C8BA><EFBFBD><EFBFBD>Ⱥ<EFBFBD><C8BA>824575535
*
* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݰ<EFBFBD>Ȩ<EFBFBD><C8A8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɿƼ<C9BF><C6BC><EFBFBD><EFBFBD>У<EFBFBD>δ<EFBFBD><CEB4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ҵ<EFBFBD><D2B5>;<EFBFBD><CDBE>
* <20><>ӭ<EFBFBD><D3AD>λʹ<CEBB>ò<EFBFBD><C3B2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>޸<EFBFBD><DEB8><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EBB1A3><EFBFBD><EFBFBD><EFBFBD>ɿƼ<C9BF><C6BC>İ<EFBFBD>Ȩ<EFBFBD><C8A8><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
*
* @file ģ<><C4A3>IIC
* @company <09>ɶ<EFBFBD><C9B6><EFBFBD><EFBFBD>ɿƼ<C9BF><C6BC><EFBFBD><EFBFBD>޹<EFBFBD>˾
* @author <09><><EFBFBD>ɿƼ<C9BF>(QQ3184284598)
* @version <09>鿴doc<6F><63>version<6F>ļ<EFBFBD> <20>汾˵<E6B1BE><CBB5>
* @Software ADS v1.2.2
* @Target core TC264D
* @Taobao https://seekfree.taobao.com/
* @date 2020-3-23
* @note
<09><><EFBFBD>߶<EFBFBD><DFB6>
------------------------------------
SCL <20>鿴SEEKFREE_IIC<49>ļ<EFBFBD><C4BC>ڵ<EFBFBD>SEEKFREE_SCL<43><EFBFBD><EAB6A8>
SDA <20>鿴SEEKFREE_IIC<49>ļ<EFBFBD><C4BC>ڵ<EFBFBD>SEEKFREE_SDA<44><EFBFBD><EAB6A8>
------------------------------------
********************************************************************************************************************/
#ifndef _SEEKFREE_IIC_h
#define _SEEKFREE_IIC_h
#include "common.h"
#define SEEKFREE_SCL P02_3 //<2F><><EFBFBD><EFBFBD>SCL<43><4C><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA><EFBFBD><EFBFBD>IO
#define SEEKFREE_SDA P02_2 //<2F><><EFBFBD><EFBFBD>SDA<44><41><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA><EFBFBD><EFBFBD>IO
#define SIMIIC_DELAY_TIME 20
typedef enum IIC //IIC<49><43><EFBFBD><EFBFBD>ö<EFBFBD><C3B6>
{
SIMIIC,
SCCB
} IIC_type;
extern uint16 simiic_delay_time; //ICM<43>ȴ<EFBFBD><C8B4><EFBFBD><EFBFBD><EFBFBD>Ӧ<EFBFBD><D3A6><EFBFBD><EFBFBD>Ϊ20
void simiic_delay_set(uint16 time);
void simiic_start(void);
void simiic_stop(void);
void simiic_ack_main(uint8 ack_main);
void send_ch(uint8 c);
uint8 read_ch(uint8 ack);
void simiic_write_reg(uint8 dev_add, uint8 reg, uint8 dat);
uint8 simiic_read_reg(uint8 dev_add, uint8 reg, IIC_type type);
void simiic_read_regs(uint8 dev_add, uint8 reg, uint8 *dat_add, uint8 num, IIC_type type);
void simiic_init(void);
#endif

View File

@@ -1,366 +0,0 @@
/*********************************************************************************************************************
* COPYRIGHT NOTICE
* Copyright (c) 2022,<2C><><EFBFBD>ɿƼ<C9BF>
* All rights reserved.
*
* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݰ<EFBFBD>Ȩ<EFBFBD><C8A8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɿƼ<C9BF><C6BC><EFBFBD><EFBFBD>У<EFBFBD>δ<EFBFBD><CEB4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ҵ<EFBFBD><D2B5>;<EFBFBD><CDBE>
* <20><>ӭ<EFBFBD><D3AD>λʹ<CEBB>ò<EFBFBD><C3B2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>޸<EFBFBD><DEB8><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EBB1A3><EFBFBD><EFBFBD><EFBFBD>ɿƼ<C9BF><C6BC>İ<EFBFBD>Ȩ<EFBFBD><C8A8><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
*
* @file zf_device_imu963ra
* @company <20>ɶ<EFBFBD><C9B6><EFBFBD><EFBFBD>ɿƼ<C9BF><C6BC><EFBFBD><EFBFBD>޹<EFBFBD>˾
* @author <20><><EFBFBD>ɿƼ<C9BF>(QQ3184284598)
* @version <20>鿴doc<6F><63>version<6F>ļ<EFBFBD> <20>汾˵<E6B1BE><CBB5>
* @Software ADS v1.5.2
* @Target core TC264
* @Taobao https://seekfree.taobao.com/
* @date 2022-05-04
* @note <20><><EFBFBD>߶<EFBFBD><DFB6>
* ------------------------------------
* ģ<><C4A3><EFBFBD>ܽ<EFBFBD> <20><>Ƭ<EFBFBD><C6AC><EFBFBD>ܽ<EFBFBD>
* // Ӳ<><D3B2> SPI <20><><EFBFBD><EFBFBD>
* SCL/SPC <20>鿴 zf_device_imu963ra.h <20><> IMU963RA_SPC_PIN <20><EFBFBD><EAB6A8>
* SDA/DSI <20>鿴 zf_device_imu963ra.h <20><> IMU963RA_SDI_PIN <20><EFBFBD><EAB6A8>
* SA0/SDO <20>鿴 zf_device_imu963ra.h <20><> IMU963RA_SDO_PIN <20><EFBFBD><EAB6A8>
* CS <20>鿴 zf_device_imu963ra.h <20><> IMU963RA_CS_PIN <20><EFBFBD><EAB6A8>
* VCC 3.3V<EFBFBD><EFBFBD>Դ
* GND <20><>Դ<EFBFBD><D4B4>
* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
*
* // <20><><EFBFBD><EFBFBD> IIC <20><><EFBFBD><EFBFBD>
* SCL/SPC <20>鿴 SEEKFREE_IIC.h <20><> SEEKFREE_SCL <20><EFBFBD><EAB6A8>
* SDA/DSI <20>鿴 SEEKFREE_IIC.h <20><> SEEKFREE_SDA <20><EFBFBD><EAB6A8>
* VCC 3.3V<EFBFBD><EFBFBD>Դ
* GND <20><>Դ<EFBFBD><D4B4>
* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* ------------------------------------
********************************************************************************************************************/
#include "zf_stm_systick.h"
#include "zf_gpio.h"
#include "zf_spi.h"
#include "SEEKFREE_IIC.h"
#include "SEEKFREE_IMU963RA.h"
int16 imu963ra_gyro_x, imu963ra_gyro_y, imu963ra_gyro_z;
int16 imu963ra_acc_x, imu963ra_acc_y, imu963ra_acc_z;
int16 imu963ra_mag_x, imu963ra_mag_y, imu963ra_mag_z;
#if IMU963RA_USE_SOFT_IIC
#define imu963ra_write_acc_gyro_register(reg,data) simiic_write_reg(IMU963RA_DEV_ADDR, reg, data)
#define imu963ra_read_acc_gyro_register(reg) simiic_read_reg (IMU963RA_DEV_ADDR, reg, SIMIIC)
#define imu963ra_read_acc_gyro_registers(reg,data,len) simiic_read_regs(IMU963RA_DEV_ADDR, reg, data, len, SIMIIC)
#else
//-------------------------------------------------------------------------------------------------------------------
// @brief IMU963RA д<>Ĵ<EFBFBD><C4B4><EFBFBD> <20>ڲ<EFBFBD><DAB2><EFBFBD><EFBFBD><EFBFBD>
// @param reg <20>Ĵ<EFBFBD><C4B4><EFBFBD><EFBFBD><EFBFBD>ַ
// @param data <20><><EFBFBD><EFBFBD>
// @return void
//-------------------------------------------------------------------------------------------------------------------
static void imu963ra_write_acc_gyro_register(uint8 reg, uint8 data)
{
uint8 dat[2];
dat[0] = reg | IMU963RA_SPI_W;
dat[1] = data;
spi_mosi(IMU963RA_SPI,IMU963RA_CS_PIN,dat,dat,2,1);
}
//-------------------------------------------------------------------------------------------------------------------
// @brief IMU963RA <20><><EFBFBD>Ĵ<EFBFBD><C4B4><EFBFBD> <20>ڲ<EFBFBD><DAB2><EFBFBD><EFBFBD><EFBFBD>
// @param reg <20>Ĵ<EFBFBD><C4B4><EFBFBD><EFBFBD><EFBFBD>ַ
// @return uint8 <20><><EFBFBD><EFBFBD>
//-------------------------------------------------------------------------------------------------------------------
static uint8 imu963ra_read_acc_gyro_register(uint8 reg)
{
uint8 dat[2];
dat[0] = reg | IMU963RA_SPI_R;
dat[1] = 0;
spi_mosi(IMU963RA_SPI,IMU963RA_CS_PIN,dat,dat,2,1);
return dat[1];
}
//-------------------------------------------------------------------------------------------------------------------
// @brief IMU963RA <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ڲ<EFBFBD><DAB2><EFBFBD><EFBFBD><EFBFBD>
// @param reg <20>Ĵ<EFBFBD><C4B4><EFBFBD><EFBFBD><EFBFBD>ַ
// @param data <20><><EFBFBD>ݻ<EFBFBD><DDBB><EFBFBD><EFBFBD><EFBFBD>
// @param len <20><><EFBFBD>ݳ<EFBFBD><DDB3><EFBFBD>
// @return void
//-------------------------------------------------------------------------------------------------------------------
static void imu963ra_read_acc_gyro_registers(uint8 *data, uint32 len)
{
spi_mosi(IMU963RA_SPI, IMU963RA_CS_PIN, data, data, len, 1);
}
#endif
//-------------------------------------------------------------------------------------------------------------------
// @brief IMU963RA<52><41>ΪIIC<49><43><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>д<EFBFBD><D0B4><EFBFBD>ݣ<EFBFBD><DDA3>ڲ<EFBFBD><DAB2><EFBFBD><EFBFBD><EFBFBD>
// @param void
// @return void
// Sample usage: <20>ڲ<EFBFBD><DAB2><EFBFBD><EFBFBD>ã<EFBFBD><C3A3>û<EFBFBD><C3BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
//-------------------------------------------------------------------------------------------------------------------
void imu963ra_write_mag_register(uint8 addr, uint8 reg, uint8 data)
{
addr = addr << 1;
imu963ra_write_acc_gyro_register(IMU963RA_SLV0_CONFIG, 0x00); // <20>ӻ<EFBFBD>0<EFBFBD><30><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
imu963ra_write_acc_gyro_register(IMU963RA_SLV0_ADD, addr | 0); // <20><><EFBFBD>õشżƵ<C5BC>ַ<EFBFBD><D6B7>ע<EFBFBD><D7A2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ҫ<EFBFBD><D2AA><EFBFBD><EFBFBD><38><CEBB>I2C<32><43>ַ<EFBFBD><D6B7> 0x2C
imu963ra_write_acc_gyro_register(IMU963RA_SLV0_SUBADD, reg); // <20><>Ҫд<D2AA><D0B4><EFBFBD>ļĴ<C4BC><C4B4><EFBFBD><EFBFBD><EFBFBD>ַ
imu963ra_write_acc_gyro_register(IMU963RA_DATAWRITE_SLV0, data); // <20><>Ҫд<D2AA><D0B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
imu963ra_write_acc_gyro_register(IMU963RA_MASTER_CONFIG, 0x4C); // <20><><EFBFBD>ڵ<EFBFBD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͨѶ <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> I2C<32><43><EFBFBD><EFBFBD>ʹ<EFBFBD><CAB9>
//<2F>ȴ<EFBFBD>ͨѶ<CDA8>ɹ<EFBFBD>
while(0 == (0x80 & imu963ra_read_acc_gyro_register(IMU963RA_STATUS_MASTER)))
{
systick_delay_ms(STM0, 2);
}
}
//-------------------------------------------------------------------------------------------------------------------
// @brief IMU963RA<52><41>ΪIIC<49><43><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ƶ<EFBFBD><C6B6><EFBFBD><EFBFBD>ݣ<EFBFBD><DDA3>ڲ<EFBFBD><DAB2><EFBFBD><EFBFBD><EFBFBD>
// @param void
// @return void
// Sample usage: <20>ڲ<EFBFBD><DAB2><EFBFBD><EFBFBD>ã<EFBFBD><C3A3>û<EFBFBD><C3BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
//-------------------------------------------------------------------------------------------------------------------
uint8 imu963ra_read_mag_register(uint8 addr, uint8 reg)
{
addr = addr << 1;
imu963ra_write_acc_gyro_register(IMU963RA_SLV0_ADD, addr | 1); // <20><><EFBFBD>õشżƵ<C5BC>ַ<EFBFBD><D6B7>ע<EFBFBD><D7A2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ҫ<EFBFBD><D2AA><EFBFBD><EFBFBD><38><CEBB>I2C<32><43>ַ<EFBFBD><D6B7> 0x2C
imu963ra_write_acc_gyro_register(IMU963RA_SLV0_SUBADD, reg); // <20><>Ҫ<EFBFBD><D2AA>ȡ<EFBFBD>ļĴ<C4BC><C4B4><EFBFBD><EFBFBD><EFBFBD>ַ
imu963ra_write_acc_gyro_register(IMU963RA_SLV0_CONFIG, 0x01);
imu963ra_write_acc_gyro_register(IMU963RA_MASTER_CONFIG, 0x4C); // <20><><EFBFBD>ڵ<EFBFBD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͨѶ <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> I2C<32><43><EFBFBD><EFBFBD>ʹ<EFBFBD><CAB9>
//<2F>ȴ<EFBFBD>ͨѶ<CDA8>ɹ<EFBFBD>
while(0 == (0x01 & imu963ra_read_acc_gyro_register(IMU963RA_STATUS_MASTER)))
{
systick_delay_ms(STM0, 2);
}
return (imu963ra_read_acc_gyro_register(IMU963RA_SENSOR_HUB_1)); // <20><><EFBFBD>ض<EFBFBD>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
}
//-------------------------------------------------------------------------------------------------------------------
// @brief IMU963RA<52><41>ΪIIC<49><43><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Զ<EFBFBD>д<EFBFBD><D0B4><EFBFBD>ݣ<EFBFBD><DDA3>ڲ<EFBFBD><DAB2><EFBFBD><EFBFBD><EFBFBD>
// @param void
// @return void
// Sample usage: <20>ڲ<EFBFBD><DAB2><EFBFBD><EFBFBD>ã<EFBFBD><C3A3>û<EFBFBD><C3BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
//-------------------------------------------------------------------------------------------------------------------
void imu963ra_connect_mag(uint8 addr, uint8 reg)
{
addr = addr << 1;
imu963ra_write_acc_gyro_register(IMU963RA_SLV0_ADD, addr | 1); // <20><><EFBFBD>õشżƵ<C5BC>ַ<EFBFBD><D6B7>ע<EFBFBD><D7A2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ҫ<EFBFBD><D2AA><EFBFBD><EFBFBD><38><CEBB>I2C<32><43>ַ<EFBFBD><D6B7> 0x2C
imu963ra_write_acc_gyro_register(IMU963RA_SLV0_SUBADD, reg); // <20><>Ҫ<EFBFBD><D2AA>ȡ<EFBFBD>ļĴ<C4BC><C4B4><EFBFBD><EFBFBD><EFBFBD>ַ
imu963ra_write_acc_gyro_register(IMU963RA_SLV0_CONFIG, 0x06);
imu963ra_write_acc_gyro_register(IMU963RA_MASTER_CONFIG, 0x6C); // <20><><EFBFBD>ڵ<EFBFBD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͨѶ <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> I2C<32><43><EFBFBD><EFBFBD>ʹ<EFBFBD><CAB9>
}
//-------------------------------------------------------------------------------------------------------------------
// @brief IMU963RA <20><><EFBFBD><EFBFBD><EFBFBD>Լ<EFBFBD> <20>ڲ<EFBFBD><DAB2><EFBFBD><EFBFBD><EFBFBD>
// @param void
// @return uint8 1-<2D>Լ<EFBFBD>ʧ<EFBFBD><CAA7> 0-<2D>Լ<EFBFBD><D4BC>ɹ<EFBFBD>
//-------------------------------------------------------------------------------------------------------------------
static uint8 imu963ra_acc_gyro_self_check (void)
{
uint8 dat = 0;
// uint16 timeout_count = 0;
while(0x6B != dat) // <20>ж<EFBFBD> ID <20>Ƿ<EFBFBD><C7B7><EFBFBD>ȷ
{
// if(timeout_count++ > IMU963RA_TIMEOUT_COUNT)
// return 1;
dat = imu963ra_read_acc_gyro_register(IMU963RA_WHO_AM_I);
systick_delay_ms(STM0, 1);
}
return 0;
}
//-------------------------------------------------------------------------------------------------------------------
// @brief IMU963RA <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Լ<EFBFBD> <20>ڲ<EFBFBD><DAB2><EFBFBD><EFBFBD><EFBFBD>
// @param void
// @return uint8 1-<2D>Լ<EFBFBD>ʧ<EFBFBD><CAA7> 0-<2D>Լ<EFBFBD><D4BC>ɹ<EFBFBD>
//-------------------------------------------------------------------------------------------------------------------
static uint8 imu963ra_mag_self_check (void)
{
uint8 dat = 0;
// uint16 timeout_count = 0;
while(0xff != dat) // <20>ж<EFBFBD> ID <20>Ƿ<EFBFBD><C7B7><EFBFBD>ȷ
{
// if(timeout_count++ > IMU963RA_TIMEOUT_COUNT)
// return 1;
dat = imu963ra_read_mag_register(IMU963RA_MAG_ADDR, IMU963RA_MAG_CHIP_ID);
systick_delay_ms(STM0, 1);
}
return 0;
}
//-------------------------------------------------------------------------------------------------------------------
// @brief <20><>ȡ IMU963RA <20><><EFBFBD>ٶȼ<D9B6><C8BC><EFBFBD><EFBFBD><EFBFBD>
// @param void
// @return void
// Sample usage: ִ<>иú<D0B8><C3BA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֱ<EFBFBD>Ӳ鿴<D3B2><E9BFB4>Ӧ<EFBFBD>ı<EFBFBD><C4B1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
//-------------------------------------------------------------------------------------------------------------------
void imu963ra_get_acc (void)
{
struct
{
uint8 reg;
uint8 dat[6];
}buf;
#if IMU963RA_USE_SOFT_IIC
imu963ra_read_acc_gyro_registers(IMU963RA_OUTX_L_A, &buf.dat[0], 7);
#else
buf.reg = IMU963RA_OUTX_L_A | IMU963RA_SPI_R;
imu963ra_read_acc_gyro_registers(&buf.reg, 7);
#endif
imu963ra_acc_x = (int16)(((uint16)buf.dat[1]<<8 | buf.dat[0]));
imu963ra_acc_y = (int16)(((uint16)buf.dat[3]<<8 | buf.dat[2]));
imu963ra_acc_z = (int16)(((uint16)buf.dat[5]<<8 | buf.dat[4]));
}
//-------------------------------------------------------------------------------------------------------------------
// @brief <20><>ȡIMU963RA<52><41><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// @param void
// @return void
// Sample usage: ִ<>иú<D0B8><C3BA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֱ<EFBFBD>Ӳ鿴<D3B2><E9BFB4>Ӧ<EFBFBD>ı<EFBFBD><C4B1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
//-------------------------------------------------------------------------------------------------------------------
void imu963ra_get_gyro (void)
{
struct
{
uint8 reg;
uint8 dat[6];
}buf;
#if IMU963RA_USE_SOFT_IIC
imu963ra_read_acc_gyro_registers(IMU963RA_OUTX_L_G, &buf.dat[0], 6);
#else
buf.reg = IMU963RA_OUTX_L_G | IMU963RA_SPI_R;
imu963ra_read_acc_gyro_registers(&buf.reg, 7);
#endif
imu963ra_gyro_x = (int16)(((uint16)buf.dat[1]<<8 | buf.dat[0]));
imu963ra_gyro_y = (int16)(((uint16)buf.dat[3]<<8 | buf.dat[2]));
imu963ra_gyro_z = (int16)(((uint16)buf.dat[5]<<8 | buf.dat[4]));
}
//-------------------------------------------------------------------------------------------------------------------
// @brief <20><>ȡ IMU963RA <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// @param void
// @return void
// Sample usage: ִ<>иú<D0B8><C3BA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֱ<EFBFBD>Ӳ鿴<D3B2><E9BFB4>Ӧ<EFBFBD>ı<EFBFBD><C4B1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
//-------------------------------------------------------------------------------------------------------------------
void imu963ra_get_mag (void)
{
uint8 temp_status;
struct
{
uint8 reg;
uint8 dat[6];
}buf;
imu963ra_write_acc_gyro_register(IMU963RA_FUNC_CFG_ACCESS, 0x40);
temp_status = imu963ra_read_acc_gyro_register(IMU963RA_STATUS_MASTER);
if(0x01 & temp_status)
{
#if IMU963RA_USE_SOFT_IIC
imu963ra_read_acc_gyro_registers(IMU963RA_SENSOR_HUB_1, &buf.dat[0], 6);
#else
buf.reg = IMU963RA_SENSOR_HUB_1 | IMU963RA_SPI_R;
imu963ra_read_acc_gyro_registers(&buf.reg, 7);
#endif
imu963ra_mag_x = (int16)(((uint16)buf.dat[1]<<8 | buf.dat[0]));
imu963ra_mag_y = (int16)(((uint16)buf.dat[3]<<8 | buf.dat[2]));
imu963ra_mag_z = (int16)(((uint16)buf.dat[5]<<8 | buf.dat[4]));
}
imu963ra_write_acc_gyro_register(IMU963RA_FUNC_CFG_ACCESS, 0x00);
}
//-------------------------------------------------------------------------------------------------------------------
// @brief <20><>ʼ<EFBFBD><CABC> IMU963RA
// @param void
// @return uint8 1-<2D><>ʼ<EFBFBD><CABC>ʧ<EFBFBD><CAA7> 0-<2D><>ʼ<EFBFBD><CABC><EFBFBD>ɹ<EFBFBD>
// Sample usage:
//-------------------------------------------------------------------------------------------------------------------
uint8 imu963ra_init (void)
{
systick_delay_ms(STM0, 10); // <20>ϵ<EFBFBD><CFB5><EFBFBD>ʱ
#if IMU963RA_USE_SOFT_IIC
simiic_delay_set(IMU963RA_SOFT_IIC_DELAY);
simiic_init();
#else
spi_init(IMU963RA_SPI, IMU963RA_SPC_PIN, IMU963RA_SDI_PIN, IMU963RA_SDO_PIN, IMU963RA_CS_PIN, 0, 10*1000*1000);//Ӳ<><D3B2>SPI<50><49>ʼ<EFBFBD><CABC>
#endif
imu963ra_write_acc_gyro_register(IMU963RA_FUNC_CFG_ACCESS, 0x00); // <20>ر<EFBFBD>HUB<55>Ĵ<EFBFBD><C4B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
imu963ra_write_acc_gyro_register(IMU963RA_CTRL3_C, 0x01); // <20><>λ<EFBFBD>
systick_delay_ms(STM0, 2);
imu963ra_write_acc_gyro_register(IMU963RA_FUNC_CFG_ACCESS, 0x00); // <20>ر<EFBFBD>HUB<55>Ĵ<EFBFBD><C4B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
imu963ra_acc_gyro_self_check(); // <20><><EFBFBD><EFBFBD><EFBFBD>Լ<EFBFBD>
imu963ra_write_acc_gyro_register(IMU963RA_INT1_CTRL, 0x03); // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>ٶ<EFBFBD><D9B6><EFBFBD><EFBFBD>ݾ<EFBFBD><DDBE><EFBFBD><EFBFBD>ж<EFBFBD>
imu963ra_write_acc_gyro_register(IMU963RA_CTRL1_XL, 0x4C); // <20><><EFBFBD>ü<EFBFBD><C3BC>ٶȼ<D9B6><C8BC><EFBFBD><EFBFBD>̡<EFBFBD>8G<38>Լ<EFBFBD><D4BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>104hz <20>Լ<EFBFBD><D4BC><EFBFBD><EFBFBD>ٶ<EFBFBD><D9B6><EFBFBD>Ϣ<EFBFBD>ӵ<EFBFBD>һ<EFBFBD><D2BB><EFBFBD>˲<EFBFBD><CBB2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
//IMU963RA_CTRL1_XL<58>Ĵ<EFBFBD><C4B4><EFBFBD>
//<2F><><EFBFBD><EFBFBD>Ϊ:0x40 <20><><EFBFBD>ٶ<EFBFBD><D9B6><EFBFBD><EFBFBD><EFBFBD>Ϊ:<3A><>2G <20><>ȡ<EFBFBD><C8A1><EFBFBD>ļ<EFBFBD><C4BC>ٶȼ<D9B6><C8BC><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>16393<39><33><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ת<EFBFBD><D7AA>Ϊ<EFBFBD><CEAA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>λ<EFBFBD><CEBB><EFBFBD><EFBFBD><EFBFBD>ݣ<EFBFBD><DDA3><EFBFBD>λ<EFBFBD><CEBB>g(m/s^2)
//<2F><><EFBFBD><EFBFBD>Ϊ:0x48 <20><><EFBFBD>ٶ<EFBFBD><D9B6><EFBFBD><EFBFBD><EFBFBD>Ϊ:<3A><>4G <20><>ȡ<EFBFBD><C8A1><EFBFBD>ļ<EFBFBD><C4BC>ٶȼ<D9B6><C8BC><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>8197<39><37> <20><><EFBFBD><EFBFBD>ת<EFBFBD><D7AA>Ϊ<EFBFBD><CEAA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>λ<EFBFBD><CEBB><EFBFBD><EFBFBD><EFBFBD>ݣ<EFBFBD><DDA3><EFBFBD>λ<EFBFBD><CEBB>g(m/s^2)
//<2F><><EFBFBD><EFBFBD>Ϊ:0x4C <20><><EFBFBD>ٶ<EFBFBD><D9B6><EFBFBD><EFBFBD><EFBFBD>Ϊ:<3A><>8G <20><>ȡ<EFBFBD><C8A1><EFBFBD>ļ<EFBFBD><C4BC>ٶȼ<D9B6><C8BC><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>4098<39><38> <20><><EFBFBD><EFBFBD>ת<EFBFBD><D7AA>Ϊ<EFBFBD><CEAA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>λ<EFBFBD><CEBB><EFBFBD><EFBFBD><EFBFBD>ݣ<EFBFBD><DDA3><EFBFBD>λ<EFBFBD><CEBB>g(m/s^2)
//<2F><><EFBFBD><EFBFBD>Ϊ:0x44 <20><><EFBFBD>ٶ<EFBFBD><D9B6><EFBFBD><EFBFBD><EFBFBD>Ϊ:<3A><>16G <20><>ȡ<EFBFBD><C8A1><EFBFBD>ļ<EFBFBD><C4BC>ٶȼ<D9B6><C8BC><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>2049<34><39> <20><><EFBFBD><EFBFBD>ת<EFBFBD><D7AA>Ϊ<EFBFBD><CEAA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>λ<EFBFBD><CEBB><EFBFBD><EFBFBD><EFBFBD>ݣ<EFBFBD><DDA3><EFBFBD>λ<EFBFBD><CEBB>g(m/s^2)
imu963ra_write_acc_gyro_register(IMU963RA_CTRL2_G, 0x6C); // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ǽ<EFBFBD><C7BC><EFBFBD><EFBFBD>̡<EFBFBD>2000dps<70>Լ<EFBFBD><D4BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>416hz
//ICM20602_GYRO_CONFIG<49>Ĵ<EFBFBD><C4B4><EFBFBD>
//<2F><><EFBFBD><EFBFBD>Ϊ:0x62 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ:<3A><>125dps <20><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݳ<EFBFBD><DDB3><EFBFBD>228.6<EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>ת<EFBFBD><D7AA>Ϊ<EFBFBD><CEAA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>λ<EFBFBD><CEBB><EFBFBD><EFBFBD><EFBFBD>ݣ<EFBFBD><DDA3><EFBFBD>λΪ<CEBB><CEAA><EFBFBD><EFBFBD>/s
//<2F><><EFBFBD><EFBFBD>Ϊ:0x60 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ:<3A><>250dps <20><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݳ<EFBFBD><DDB3><EFBFBD>114.3<EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>ת<EFBFBD><D7AA>Ϊ<EFBFBD><CEAA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>λ<EFBFBD><CEBB><EFBFBD><EFBFBD><EFBFBD>ݣ<EFBFBD><DDA3><EFBFBD>λΪ<CEBB><CEAA><EFBFBD><EFBFBD>/s
//<2F><><EFBFBD><EFBFBD>Ϊ:0x64 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ:<3A><>500dps <20><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݳ<EFBFBD><DDB3><EFBFBD>57.1<EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>ת<EFBFBD><D7AA>Ϊ<EFBFBD><CEAA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>λ<EFBFBD><CEBB><EFBFBD><EFBFBD><EFBFBD>ݣ<EFBFBD><DDA3><EFBFBD>λΪ<CEBB><CEAA><EFBFBD><EFBFBD>/s
//<2F><><EFBFBD><EFBFBD>Ϊ:0x68 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ:<3A><>1000dps <20><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݳ<EFBFBD><DDB3><EFBFBD>28.6<EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>ת<EFBFBD><D7AA>Ϊ<EFBFBD><CEAA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>λ<EFBFBD><CEBB><EFBFBD><EFBFBD><EFBFBD>ݣ<EFBFBD><DDA3><EFBFBD>λΪ<CEBB><CEAA><EFBFBD><EFBFBD>/s
//<2F><><EFBFBD><EFBFBD>Ϊ:0x6C <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ:<3A><>2000dps <20><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݳ<EFBFBD><DDB3><EFBFBD>14.3<EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>ת<EFBFBD><D7AA>Ϊ<EFBFBD><CEAA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>λ<EFBFBD><CEBB><EFBFBD><EFBFBD><EFBFBD>ݣ<EFBFBD><DDA3><EFBFBD>λΪ<CEBB><CEAA><EFBFBD><EFBFBD>/s
//<2F><><EFBFBD><EFBFBD>Ϊ:0x61 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ:<3A><>4000dps <20><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݳ<EFBFBD><DDB3><EFBFBD>7.1<EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>ת<EFBFBD><D7AA>Ϊ<EFBFBD><CEAA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>λ<EFBFBD><CEBB><EFBFBD><EFBFBD><EFBFBD>ݣ<EFBFBD><DDA3><EFBFBD>λΪ<CEBB><CEAA><EFBFBD><EFBFBD>/s
imu963ra_write_acc_gyro_register(IMU963RA_CTRL3_C, 0x44); // ʹ<><CAB9><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ<EFBFBD>ͨ<EFBFBD>˲<EFBFBD><CBB2><EFBFBD>
imu963ra_write_acc_gyro_register(IMU963RA_CTRL4_C, 0x02); // ʹ<><CAB9><EFBFBD><EFBFBD><EFBFBD>ֵ<EFBFBD>ͨ<EFBFBD>˲<EFBFBD><CBB2><EFBFBD>
imu963ra_write_acc_gyro_register(IMU963RA_CTRL5_C, 0x00); // <20><><EFBFBD>ٶȼ<D9B6><C8BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
imu963ra_write_acc_gyro_register(IMU963RA_CTRL6_C, 0x00); // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ٶȼƸ<C8BC><C6B8><EFBFBD><EFBFBD><EFBFBD>ģʽ <20><><EFBFBD><EFBFBD><EFBFBD>ǵ<EFBFBD>ͨ<EFBFBD>˲<EFBFBD> 133hz
imu963ra_write_acc_gyro_register(IMU963RA_CTRL7_G, 0x00); // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ǹ<EFBFBD><C7B8><EFBFBD><EFBFBD><EFBFBD>ģʽ <20>رո<D8B1>ͨ<EFBFBD>˲<EFBFBD>
imu963ra_write_acc_gyro_register(IMU963RA_CTRL9_XL, 0x01); // <20>ر<EFBFBD>I3C<33>ӿ<EFBFBD>
imu963ra_write_acc_gyro_register(IMU963RA_FUNC_CFG_ACCESS, 0x40); // <20><><EFBFBD><EFBFBD>HUB<55>Ĵ<EFBFBD><C4B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>õشż<D8B4>
imu963ra_write_acc_gyro_register(IMU963RA_MASTER_CONFIG, 0x80); // <20><>λI2C<32><43><EFBFBD><EFBFBD>
systick_delay_ms(STM0, 2);
imu963ra_write_acc_gyro_register(IMU963RA_MASTER_CONFIG, 0x00); // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>λ<EFBFBD><CEBB>־
systick_delay_ms(STM0, 2);
imu963ra_write_mag_register(IMU963RA_MAG_ADDR, IMU963RA_MAG_CONTROL2, 0x80); // <20><>λ<EFBFBD><CEBB><EFBFBD>ӵ<EFBFBD><D3B5><EFBFBD><EFBFBD><EFBFBD>
systick_delay_ms(STM0, 2);
imu963ra_write_mag_register(IMU963RA_MAG_ADDR, IMU963RA_MAG_CONTROL2, 0x00);
systick_delay_ms(STM0, 2);
imu963ra_mag_self_check(); //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Լ<EFBFBD>
imu963ra_write_mag_register(IMU963RA_MAG_ADDR, IMU963RA_MAG_CONTROL1, 0x19); // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>100hz <20><><EFBFBD><EFBFBD>ģʽ
//IMU963RA_MAG_ADDR<44>Ĵ<EFBFBD><C4B4><EFBFBD>
//<2F><><EFBFBD><EFBFBD>Ϊ:0x19 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ:8G <20><>ȡ<EFBFBD><C8A1><EFBFBD>ļ<EFBFBD><C4BC>ٶȼ<D9B6><C8BC><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>3000<30><30> <20><><EFBFBD><EFBFBD>ת<EFBFBD><D7AA>Ϊ<EFBFBD><CEAA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>λ<EFBFBD><CEBB><EFBFBD><EFBFBD><EFBFBD>ݣ<EFBFBD><DDA3><EFBFBD>λ<EFBFBD><CEBB>G(<28><>˹)
//<2F><><EFBFBD><EFBFBD>Ϊ:0x09 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ:2G <20><>ȡ<EFBFBD><C8A1><EFBFBD>ļ<EFBFBD><C4BC>ٶȼ<D9B6><C8BC><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>12000<30><30><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ת<EFBFBD><D7AA>Ϊ<EFBFBD><CEAA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>λ<EFBFBD><CEBB><EFBFBD><EFBFBD><EFBFBD>ݣ<EFBFBD><DDA3><EFBFBD>λ<EFBFBD><CEBB>G(<28><>˹)
imu963ra_write_mag_register(IMU963RA_MAG_ADDR, IMU963RA_MAG_FBR, 0x01);
imu963ra_connect_mag(IMU963RA_MAG_ADDR, IMU963RA_MAG_OUTX_L);
imu963ra_write_acc_gyro_register(IMU963RA_FUNC_CFG_ACCESS, 0x00); // <20>ر<EFBFBD>HUB<55>Ĵ<EFBFBD><C4B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
systick_delay_ms(STM0, 20); // <20>ȴ<EFBFBD><C8B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ƻ<EFBFBD>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD>
return 0;
}

View File

@@ -1,209 +0,0 @@
/*********************************************************************************************************************
* COPYRIGHT NOTICE
* Copyright (c) 2022,<2C><><EFBFBD>ɿƼ<C9BF>
* All rights reserved.
*
* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݰ<EFBFBD>Ȩ<EFBFBD><C8A8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɿƼ<C9BF><C6BC><EFBFBD><EFBFBD>У<EFBFBD>δ<EFBFBD><CEB4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ҵ<EFBFBD><D2B5>;<EFBFBD><CDBE>
* <20><>ӭ<EFBFBD><D3AD>λʹ<CEBB>ò<EFBFBD><C3B2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>޸<EFBFBD><DEB8><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EBB1A3><EFBFBD><EFBFBD><EFBFBD>ɿƼ<C9BF><C6BC>İ<EFBFBD>Ȩ<EFBFBD><C8A8><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
*
* @file zf_device_imu963ra
* @company <20>ɶ<EFBFBD><C9B6><EFBFBD><EFBFBD>ɿƼ<C9BF><C6BC><EFBFBD><EFBFBD>޹<EFBFBD>˾
* @author <20><><EFBFBD>ɿƼ<C9BF>(QQ3184284598)
* @version <20>鿴doc<6F><63>version<6F>ļ<EFBFBD> <20>汾˵<E6B1BE><CBB5>
* @Software ADS v1.5.2
* @Target core TC264
* @Taobao https://seekfree.taobao.com/
* @date 2022-05-04
* @note <20><><EFBFBD>߶<EFBFBD><DFB6>
* ------------------------------------
* ģ<><C4A3><EFBFBD>ܽ<EFBFBD> <20><>Ƭ<EFBFBD><C6AC><EFBFBD>ܽ<EFBFBD>
* // Ӳ<><D3B2> SPI <20><><EFBFBD><EFBFBD>
* SCL/SPC <20>鿴 zf_device_imu963ra.h <20><> IMU963RA_SPC_PIN <20><EFBFBD><EAB6A8>
* SDA/DSI <20>鿴 zf_device_imu963ra.h <20><> IMU963RA_SDI_PIN <20><EFBFBD><EAB6A8>
* SA0/SDO <20>鿴 zf_device_imu963ra.h <20><> IMU963RA_SDO_PIN <20><EFBFBD><EAB6A8>
* CS <20>鿴 zf_device_imu963ra.h <20><> IMU963RA_CS_PIN <20><EFBFBD><EAB6A8>
* VCC 3.3V<EFBFBD><EFBFBD>Դ
* GND <20><>Դ<EFBFBD><D4B4>
* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
*
* // <20><><EFBFBD><EFBFBD> IIC <20><><EFBFBD><EFBFBD>
* SCL/SPC <20>鿴 SEEKFREE_IIC.h <20><> SEEKFREE_SCL <20><EFBFBD><EAB6A8>
* SDA/DSI <20>鿴 SEEKFREE_IIC.h <20><> SEEKFREE_SDA <20><EFBFBD><EAB6A8>
* <20><>Դ<EFBFBD><D4B4><EFBFBD><EFBFBD>
* VCC 3.3V<EFBFBD><EFBFBD>Դ
* GND <20><>Դ<EFBFBD><D4B4>
* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* ------------------------------------
********************************************************************************************************************/
#ifndef _SEEKFREE_IMU963RA_h
#define _SEEKFREE_IMU963RA_h
#include "common.h"
#define IMU963RA_USE_SOFT_IIC (0) // Ĭ<><C4AC>ʹ<EFBFBD><CAB9>Ӳ<EFBFBD><D3B2> SPI <20><>ʽ<EFBFBD><CABD><EFBFBD><EFBFBD>
#if IMU963RA_USE_SOFT_IIC // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>ɫ<EFBFBD><C9AB><EFBFBD><EFBFBD><EFBFBD>IJ<EFBFBD><C4B2><EFBFBD><EFBFBD><EFBFBD>ȷ<EFBFBD><C8B7> <20><>ɫ<EFBFBD>ҵľ<D2B5><C4BE><EFBFBD>û<EFBFBD><C3BB><EFBFBD>õ<EFBFBD>
//====================================================<3D><><EFBFBD><EFBFBD> IIC <20><><EFBFBD><EFBFBD>====================================================
#define IMU963RA_SOFT_IIC_DELAY (20) // <20><><EFBFBD><EFBFBD> IIC <20><>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD> <20><>ֵԽС IIC ͨ<><CDA8><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Խ<EFBFBD><D4BD>
//#define IMU963RA_SCL_PIN <20>鿴 SEEKFREE_IIC.h <20><> SEEKFREE_SCL <20><EFBFBD><EAB6A8>
//#define IMU963RA_SDA_PIN <20>鿴 SEEKFREE_IIC.h <20><> SEEKFREE_SDA <20><EFBFBD><EAB6A8>
//====================================================<3D><><EFBFBD><EFBFBD> IIC <20><><EFBFBD><EFBFBD>====================================================
#else
//====================================================Ӳ<><D3B2> SPI <20><><EFBFBD><EFBFBD>====================================================
#define IMU963RA_SPI_SPEED (10*1000*1000) // Ӳ<><D3B2> SPI <20><><EFBFBD><EFBFBD>
#define IMU963RA_SPI (SPI_0 ) // Ӳ<><D3B2> SPI <20><>
#define IMU963RA_SPC_PIN (SPI0_SCLK_P20_11) // Ӳ<><D3B2> SPI SCK <20><><EFBFBD><EFBFBD>
#define IMU963RA_SDI_PIN (SPI0_MOSI_P20_14) // Ӳ<><D3B2> SPI MOSI <20><><EFBFBD><EFBFBD>
#define IMU963RA_SDO_PIN (SPI0_MISO_P20_12) // Ӳ<><D3B2> SPI MISO <20><><EFBFBD><EFBFBD>
#define IMU963RA_CS_PIN (SPI0_CS2_P20_13 ) // Ӳ<><D3B2> CS Ƭѡ<C6AC><D1A1><EFBFBD><EFBFBD>
//====================================================Ӳ<><D3B2> SPI <20><><EFBFBD><EFBFBD>====================================================
#endif
//#define IMU963RA_TIMEOUT_COUNT 0x00FF // IMU963RA <20><>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD>
//================================================<3D><><EFBFBD><EFBFBD> IMU963RA <20>ڲ<EFBFBD><DAB2><EFBFBD>ַ================================================
#define IMU963RA_DEV_ADDR 0x6B // SA0<41>ӵأ<D3B5>0x6A SA0<41><30><EFBFBD><EFBFBD><EFBFBD><EFBFBD>0x6B ģ<><C4A3>Ĭ<EFBFBD><C4AC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
#define IMU963RA_SPI_W 0x00
#define IMU963RA_SPI_R 0x80
#define IMU963RA_FUNC_CFG_ACCESS 0x01
#define IMU963RA_PIN_CTRL 0x02
#define IMU963RA_S4S_TPH_L 0x04
#define IMU963RA_S4S_TPH_H 0x05
#define IMU963RA_S4S_RR 0x06
#define IMU963RA_FIFO_CTRL1 0x07
#define IMU963RA_FIFO_CTRL2 0x08
#define IMU963RA_FIFO_CTRL3 0x09
#define IMU963RA_FIFO_CTRL4 0x0A
#define IMU963RA_COUNTER_BDR_REG1 0x0B
#define IMU963RA_COUNTER_BDR_REG2 0x0C
#define IMU963RA_INT1_CTRL 0x0D
#define IMU963RA_INT2_CTRL 0x0E
#define IMU963RA_WHO_AM_I 0x0F
#define IMU963RA_CTRL1_XL 0x10
#define IMU963RA_CTRL2_G 0x11
#define IMU963RA_CTRL3_C 0x12
#define IMU963RA_CTRL4_C 0x13
#define IMU963RA_CTRL5_C 0x14
#define IMU963RA_CTRL6_C 0x15
#define IMU963RA_CTRL7_G 0x16
#define IMU963RA_CTRL8_XL 0x17
#define IMU963RA_CTRL9_XL 0x18
#define IMU963RA_CTRL10_C 0x19
#define IMU963RA_ALL_INT_SRC 0x1A
#define IMU963RA_WAKE_UP_SRC 0x1B
#define IMU963RA_TAP_SRC 0x1C
#define IMU963RA_D6D_SRC 0x1D
#define IMU963RA_STATUS_REG 0x1E
#define IMU963RA_OUT_TEMP_L 0x20
#define IMU963RA_OUT_TEMP_H 0x21
#define IMU963RA_OUTX_L_G 0x22
#define IMU963RA_OUTX_H_G 0x23
#define IMU963RA_OUTY_L_G 0x24
#define IMU963RA_OUTY_H_G 0x25
#define IMU963RA_OUTZ_L_G 0x26
#define IMU963RA_OUTZ_H_G 0x27
#define IMU963RA_OUTX_L_A 0x28
#define IMU963RA_OUTX_H_A 0x29
#define IMU963RA_OUTY_L_A 0x2A
#define IMU963RA_OUTY_H_A 0x2B
#define IMU963RA_OUTZ_L_A 0x2C
#define IMU963RA_OUTZ_H_A 0x2D
#define IMU963RA_EMB_FUNC_STATUS_MAINPAGE 0x35
#define IMU963RA_FSM_STATUS_A_MAINPAGE 0x36
#define IMU963RA_FSM_STATUS_B_MAINPAGE 0x37
#define IMU963RA_STATUS_MASTER_MAINPAGE 0x39
#define IMU963RA_FIFO_STATUS1 0x3A
#define IMU963RA_FIFO_STATUS2 0x3B
#define IMU963RA_TIMESTAMP0 0x40
#define IMU963RA_TIMESTAMP1 0x41
#define IMU963RA_TIMESTAMP2 0x42
#define IMU963RA_TIMESTAMP3 0x43
#define IMU963RA_TAP_CFG0 0x56
#define IMU963RA_TAP_CFG1 0x57
#define IMU963RA_TAP_CFG2 0x58
#define IMU963RA_TAP_THS_6D 0x59
#define IMU963RA_INT_DUR2 0x5A
#define IMU963RA_WAKE_UP_THS 0x5B
#define IMU963RA_WAKE_UP_DUR 0x5C
#define IMU963RA_FREE_FALL 0x5D
#define IMU963RA_MD1_CFG 0x5E
#define IMU963RA_MD2_CFG 0x5F
#define IMU963RA_S4S_ST_CMD_CODE 0x60
#define IMU963RA_S4S_DT_REG 0x61
#define IMU963RA_I3C_BUS_AVB 0x62
#define IMU963RA_INTERNAL_FREQ_FINE 0x63
#define IMU963RA_INT_OIS 0x6F
#define IMU963RA_CTRL1_OIS 0x70
#define IMU963RA_CTRL2_OIS 0x71
#define IMU963RA_CTRL3_OIS 0x72
#define IMU963RA_X_OFS_USR 0x73
#define IMU963RA_Y_OFS_USR 0x74
#define IMU963RA_Z_OFS_USR 0x75
#define IMU963RA_FIFO_DATA_OUT_TAG 0x78
#define IMU963RA_FIFO_DATA_OUT_X_L 0x79
#define IMU963RA_FIFO_DATA_OUT_X_H 0x7A
#define IMU963RA_FIFO_DATA_OUT_Y_L 0x7B
#define IMU963RA_FIFO_DATA_OUT_Y_H 0x7C
#define IMU963RA_FIFO_DATA_OUT_Z_L 0x7D
#define IMU963RA_FIFO_DATA_OUT_Z_H 0x7E
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ؼĴ<D8BC><C4B4><EFBFBD> <20><>Ҫ<EFBFBD><D2AA>FUNC_CFG_ACCESS<53><53>SHUB_REG_ACCESSλ<53><CEBB><EFBFBD><EFBFBD>Ϊ1<CEAA><31><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȷ<EFBFBD><C8B7><EFBFBD><EFBFBD>
#define IMU963RA_SENSOR_HUB_1 0x02
#define IMU963RA_SENSOR_HUB_2 0x03
#define IMU963RA_SENSOR_HUB_3 0x04
#define IMU963RA_SENSOR_HUB_4 0x05
#define IMU963RA_SENSOR_HUB_5 0x06
#define IMU963RA_SENSOR_HUB_6 0x07
#define IMU963RA_SENSOR_HUB_7 0x08
#define IMU963RA_SENSOR_HUB_8 0x09
#define IMU963RA_SENSOR_HUB_9 0x0A
#define IMU963RA_SENSOR_HUB_10 0x0B
#define IMU963RA_SENSOR_HUB_11 0x0C
#define IMU963RA_SENSOR_HUB_12 0x0D
#define IMU963RA_SENSOR_HUB_13 0x0E
#define IMU963RA_SENSOR_HUB_14 0x0F
#define IMU963RA_SENSOR_HUB_15 0x10
#define IMU963RA_SENSOR_HUB_16 0x11
#define IMU963RA_SENSOR_HUB_17 0x12
#define IMU963RA_SENSOR_HUB_18 0x13
#define IMU963RA_MASTER_CONFIG 0x14
#define IMU963RA_SLV0_ADD 0x15
#define IMU963RA_SLV0_SUBADD 0x16
#define IMU963RA_SLV0_CONFIG 0x17
#define IMU963RA_SLV1_ADD 0x18
#define IMU963RA_SLV1_SUBADD 0x19
#define IMU963RA_SLV1_CONFIG 0x1A
#define IMU963RA_SLV2_ADD 0x1B
#define IMU963RA_SLV2_SUBADD 0x1C
#define IMU963RA_SLV2_CONFIG 0x1D
#define IMU963RA_SLV3_ADD 0x1E
#define IMU963RA_SLV3_SUBADD 0x1F
#define IMU963RA_SLV3_CONFIG 0x20
#define IMU963RA_DATAWRITE_SLV0 0x21
#define IMU963RA_STATUS_MASTER 0x22
#define IMU963RA_MAG_ADDR 0x0D //7λIIC<49><43>ַ
#define IMU963RA_MAG_OUTX_L 0x00
#define IMU963RA_MAG_CONTROL1 0x09
#define IMU963RA_MAG_CONTROL2 0x0A
#define IMU963RA_MAG_FBR 0x0B
#define IMU963RA_MAG_CHIP_ID 0x0D
extern int16 imu963ra_acc_x, imu963ra_acc_y, imu963ra_acc_z;
extern int16 imu963ra_gyro_x, imu963ra_gyro_y, imu963ra_gyro_z;
extern int16 imu963ra_mag_x, imu963ra_mag_y, imu963ra_mag_z;
void imu963ra_get_acc (void);
void imu963ra_get_gyro (void);
void imu963ra_get_mag (void);
uint8 imu963ra_init (void);
#endif

View File

@@ -1,780 +0,0 @@
/*********************************************************************************************************************
* COPYRIGHT NOTICE
* Copyright (c) 2020,<2C><><EFBFBD>ɿƼ<C9BF>
* All rights reserved.
* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>QQȺ<51><C8BA><EFBFBD><EFBFBD>Ⱥ<EFBFBD><C8BA>824575535
*
* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݰ<EFBFBD>Ȩ<EFBFBD><C8A8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɿƼ<C9BF><C6BC><EFBFBD><EFBFBD>У<EFBFBD>δ<EFBFBD><CEB4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ҵ<EFBFBD><D2B5>;<EFBFBD><CDBE>
* <20><>ӭ<EFBFBD><D3AD>λʹ<CEBB>ò<EFBFBD><C3B2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>޸<EFBFBD><DEB8><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EBB1A3><EFBFBD><EFBFBD><EFBFBD>ɿƼ<C9BF><C6BC>İ<EFBFBD>Ȩ<EFBFBD><C8A8><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
*
* @file 1.14<EFBFBD><EFBFBD>IPS<EFBFBD><EFBFBD>Ļ
* @company <09>ɶ<EFBFBD><C9B6><EFBFBD><EFBFBD>ɿƼ<C9BF><C6BC><EFBFBD><EFBFBD>޹<EFBFBD>˾
* @author <09><><EFBFBD>ɿƼ<C9BF>(QQ3184284598)
* @version <09>鿴doc<6F><63>version<6F>ļ<EFBFBD> <20>汾˵<E6B1BE><CBB5>
* @Software ADS v1.2.2
* @Target core TC264D
* @Taobao https://seekfree.taobao.com/
* @date 2020-3-23
* @note
<09><><EFBFBD>߶<EFBFBD><DFB6>
------------------------------------
ģ<><C4A3><EFBFBD>ܽ<EFBFBD> <09><>Ƭ<EFBFBD><C6AC><EFBFBD>ܽ<EFBFBD>
SCL <20>鿴IPS114_SCL_PIN<49><EFBFBD><EAB6A8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> Ӳ<><D3B2>SPI<50><49><EFBFBD>Ų<EFBFBD><C5B2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>л<EFBFBD>
SDA <20>鿴IPS114_SDA_PIN<49><EFBFBD><EAB6A8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> Ӳ<><D3B2>SPI<50><49><EFBFBD>Ų<EFBFBD><C5B2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>л<EFBFBD>
RES <20>鿴IPS114_REST_PIN<49><EFBFBD><EAB6A8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
DC <20>鿴IPS114_DC_PIN<49><EFBFBD><EAB6A8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
CS <20>鿴IPS114_CS_PIN<49><EFBFBD><EAB6A8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> Ӳ<><D3B2>SPI<50><49><EFBFBD>Ų<EFBFBD><C5B2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>л<EFBFBD>
<09><>Դ<EFBFBD><D4B4><EFBFBD><EFBFBD>
BL 3.3V<EFBFBD><EFBFBD>Դ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ţ<EFBFBD>Ҳ<EFBFBD><EFBFBD><EFBFBD>Խ<EFBFBD>PWM<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȣ<EFBFBD>
VCC 3.3V<EFBFBD><EFBFBD>Դ
GND <20><>Դ<EFBFBD><D4B4>
<09><><EFBFBD><EFBFBD><EFBFBD>ֱ<EFBFBD><D6B1><EFBFBD>135*240
------------------------------------
********************************************************************************************************************/
#include "zf_spi.h"
#include "zf_gpio.h"
#include "zf_assert.h"
#include "zf_stm_systick.h"
#include "SEEKFREE_PRINTF.h"
#include "SEEKFREE_IPS114_SPI.h"
//-------------------------------------------------------------------------------------------------------------------
// @brief <20>ڲ<EFBFBD><DAB2><EFBFBD><EFBFBD>ã<EFBFBD><C3A3>û<EFBFBD><C3BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// @param void
// @return
// @since v1.0
// Sample usage:
//-------------------------------------------------------------------------------------------------------------------
void ips114_writeIndex(uint8 dat) //д<><D0B4><EFBFBD><EFBFBD>
{
IPS114_DC(0);
spi_mosi(IPS114_SPIN_PIN,IPS114_CS_PIN,&dat,NULL,1,1);
}
//-------------------------------------------------------------------------------------------------------------------
// @brief <20>ڲ<EFBFBD><DAB2><EFBFBD><EFBFBD>ã<EFBFBD><C3A3>û<EFBFBD><C3BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// @param void
// @return
// @since v1.0
// Sample usage:
//-------------------------------------------------------------------------------------------------------------------
void ips114_writeData(uint8 dat) //д<><D0B4><EFBFBD><EFBFBD>
{
IPS114_DC(1);
spi_mosi(IPS114_SPIN_PIN,IPS114_CS_PIN,&dat,NULL,1,1);
}
//-------------------------------------------------------------------------------------------------------------------
// @brief <20>ڲ<EFBFBD><DAB2><EFBFBD><EFBFBD>ã<EFBFBD><C3A3>û<EFBFBD><C3BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// @param void
// @return
// @since v1.0
// Sample usage:
//-------------------------------------------------------------------------------------------------------------------
void ips114_writedata_16bit(uint16 dat) //<2F><>Һ<EFBFBD><D2BA><EFBFBD><EFBFBD>дһ<D0B4><D2BB>16λ<36><CEBB><EFBFBD><EFBFBD>
{
uint8 dat1[2];
dat1[0] = dat >> 8;
dat1[1] = (uint8)dat;
IPS114_DC(1);
spi_mosi(IPS114_SPIN_PIN,IPS114_CS_PIN,dat1,NULL,2,1); //д<><D0B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>λ<EFBFBD><CEBB>ǰ <20><>λ<EFBFBD>ں<EFBFBD>
}
//-------------------------------------------------------------------------------------------------------------------
// @brief 1.14<EFBFBD><EFBFBD> IPSҺ<53><D2BA><EFBFBD><EFBFBD>ʼ<EFBFBD><CABC>
// @return void
// @since v1.0
// Sample usage:
//-------------------------------------------------------------------------------------------------------------------
void ips114_init(void)
{
spi_init(IPS114_SPIN_PIN, IPS114_SCL_PIN, IPS114_SDA_PIN, IPS114_SDA_IN_PIN, IPS114_CS_PIN, 0, 48*1000*1000);//Ӳ<><D3B2>SPI<50><49>ʼ<EFBFBD><CABC>
gpio_init(IPS114_BL_PIN,GPO,1,PUSHPULL);
gpio_init(IPS114_DC_PIN,GPO,0,PUSHPULL);
gpio_init(IPS114_REST_PIN,GPO,0,PUSHPULL);
IPS114_REST(0);
systick_delay_ms(STM0, 200);
IPS114_REST(1);
systick_delay_ms(STM0, 100);
ips114_writeIndex(0x36);
if (IPS114_DISPLAY_DIR==0) ips114_writeData(0x00);
else if (IPS114_DISPLAY_DIR==1) ips114_writeData(0xC0);
else if (IPS114_DISPLAY_DIR==2) ips114_writeData(0x70);
else ips114_writeData(0xA0);
ips114_writeIndex(0x3A);
ips114_writeData(0x05);
ips114_writeIndex(0xB2);
ips114_writeData(0x0C);
ips114_writeData(0x0C);
ips114_writeData(0x00);
ips114_writeData(0x33);
ips114_writeData(0x33);
ips114_writeIndex(0xB7);
ips114_writeData(0x35);
ips114_writeIndex(0xBB);
ips114_writeData(0x37);
ips114_writeIndex(0xC0);
ips114_writeData(0x2C);
ips114_writeIndex(0xC2);
ips114_writeData(0x01);
ips114_writeIndex(0xC3);
ips114_writeData(0x12);
ips114_writeIndex(0xC4);
ips114_writeData(0x20);
ips114_writeIndex(0xC6);
ips114_writeData(0x0F);
ips114_writeIndex(0xD0);
ips114_writeData(0xA4);
ips114_writeData(0xA1);
ips114_writeIndex(0xE0);
ips114_writeData(0xD0);
ips114_writeData(0x04);
ips114_writeData(0x0D);
ips114_writeData(0x11);
ips114_writeData(0x13);
ips114_writeData(0x2B);
ips114_writeData(0x3F);
ips114_writeData(0x54);
ips114_writeData(0x4C);
ips114_writeData(0x18);
ips114_writeData(0x0D);
ips114_writeData(0x0B);
ips114_writeData(0x1F);
ips114_writeData(0x23);
ips114_writeIndex(0xE1);
ips114_writeData(0xD0);
ips114_writeData(0x04);
ips114_writeData(0x0C);
ips114_writeData(0x11);
ips114_writeData(0x13);
ips114_writeData(0x2C);
ips114_writeData(0x3F);
ips114_writeData(0x44);
ips114_writeData(0x51);
ips114_writeData(0x2F);
ips114_writeData(0x1F);
ips114_writeData(0x1F);
ips114_writeData(0x20);
ips114_writeData(0x23);
ips114_writeIndex(0x21);
ips114_writeIndex(0x11);
systick_delay_ms(STM0, 120);
ips114_writeIndex(0x29);
ips114_clear(IPS114_BGCOLOR);
}
void ips114_set_region(uint16 x1,uint16 y1,uint16 x2,uint16 y2)
{
if(IPS114_DISPLAY_DIR==0)
{
ips114_writeIndex(0x2a);//<2F>е<EFBFBD>ַ<EFBFBD><D6B7><EFBFBD><EFBFBD>
ips114_writedata_16bit(x1+52);
ips114_writedata_16bit(x2+52);
ips114_writeIndex(0x2b);//<2F>е<EFBFBD>ַ<EFBFBD><D6B7><EFBFBD><EFBFBD>
ips114_writedata_16bit(y1+40);
ips114_writedata_16bit(y2+40);
ips114_writeIndex(0x2c);//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>д
}
else if(IPS114_DISPLAY_DIR==1)
{
ips114_writeIndex(0x2a);//<2F>е<EFBFBD>ַ<EFBFBD><D6B7><EFBFBD><EFBFBD>
ips114_writedata_16bit(x1+53);
ips114_writedata_16bit(x2+53);
ips114_writeIndex(0x2b);//<2F>е<EFBFBD>ַ<EFBFBD><D6B7><EFBFBD><EFBFBD>
ips114_writedata_16bit(y1+40);
ips114_writedata_16bit(y2+40);
ips114_writeIndex(0x2c);//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>д
}
else if(IPS114_DISPLAY_DIR==2)
{
ips114_writeIndex(0x2a);//<2F>е<EFBFBD>ַ<EFBFBD><D6B7><EFBFBD><EFBFBD>
ips114_writedata_16bit(x1+40);
ips114_writedata_16bit(x2+40);
ips114_writeIndex(0x2b);//<2F>е<EFBFBD>ַ<EFBFBD><D6B7><EFBFBD><EFBFBD>
ips114_writedata_16bit(y1+53);
ips114_writedata_16bit(y2+53);
ips114_writeIndex(0x2c);//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>д
}
else
{
ips114_writeIndex(0x2a);//<2F>е<EFBFBD>ַ<EFBFBD><D6B7><EFBFBD><EFBFBD>
ips114_writedata_16bit(x1+40);
ips114_writedata_16bit(x2+40);
ips114_writeIndex(0x2b);//<2F>е<EFBFBD>ַ<EFBFBD><D6B7><EFBFBD><EFBFBD>
ips114_writedata_16bit(y1+52);
ips114_writedata_16bit(y2+52);
ips114_writeIndex(0x2c);//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>д
}
}
//-------------------------------------------------------------------------------------------------------------------
// @brief Һ<><D2BA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// @param color <09><>ɫ<EFBFBD><C9AB><EFBFBD><EFBFBD>
// @return void
// @since v1.0
// Sample usage: ips114_clear(YELLOW);// ȫ<><C8AB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA>ɫ
//-------------------------------------------------------------------------------------------------------------------
void ips114_clear(uint16 color)
{
uint16 i,j;
ips114_set_region(0,0,IPS114_X_MAX-1,IPS114_Y_MAX-1);
for(i=0;i<IPS114_X_MAX;i++)
{
for (j=0;j<IPS114_Y_MAX;j++)
{
ips114_writedata_16bit(color);
}
}
}
//-------------------------------------------------------------------------------------------------------------------
// @brief Һ<><D2BA><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// @param x <20><><EFBFBD><EFBFBD>x<EFBFBD><78><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// @param y <20><><EFBFBD><EFBFBD>y<EFBFBD><79><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// @param dat <20><>Ҫ<EFBFBD><D2AA>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD>ɫ
// @return void
// @since v1.0
// Sample usage: ips114_drawpoint(0,0,RED); //<2F><><EFBFBD><EFBFBD>0,0<><30>һ<EFBFBD><D2BB><EFBFBD><EFBFBD>ɫ<EFBFBD>ĵ<EFBFBD>
//-------------------------------------------------------------------------------------------------------------------
void ips114_drawpoint(uint16 x,uint16 y,uint16 color)
{
ips114_set_region(x,y,x,y);
ips114_writedata_16bit(color);
}
//-------------------------------------------------------------------------------------------------------------------
// @brief Һ<><D2BA><EFBFBD><EFBFBD>ʾ<EFBFBD>ַ<EFBFBD>
// @param x <20><><EFBFBD><EFBFBD>x<EFBFBD><78><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Χ 0 -<2D><>IPS114_X_MAX-1<><31>
// @param y <20><><EFBFBD><EFBFBD>y<EFBFBD><79><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Χ 0 -<2D><>IPS114_Y_MAX/16-1<><31>
// @param dat <20><>Ҫ<EFBFBD><D2AA>ʾ<EFBFBD><CABE><EFBFBD>ַ<EFBFBD>
// @return void
// @since v1.0
// Sample usage: ips114_showchar(0,0,'x');//<2F><><EFBFBD><EFBFBD>0,0дһ<D0B4><D2BB><EFBFBD>ַ<EFBFBD>x
//-------------------------------------------------------------------------------------------------------------------
void ips114_showchar(uint16 x,uint16 y,const int8 dat)
{
uint8 i,j;
uint8 temp;
for(i=0; i<16; i++)
{
ips114_set_region(x,y+i,x+7,y+i);
temp = tft_ascii[dat-32][i];//<2F><>32<33><32>Ϊ<EFBFBD><CEAA>ȡģ<C8A1>Ǵӿո<D3BF><D5B8><EFBFBD>ʼȡ<CABC><C8A1> <20>ո<EFBFBD><D5B8><EFBFBD>ascii<69><69><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>32
for(j=0; j<8; j++)
{
if(temp&0x01)
{
ips114_writedata_16bit(IPS114_PENCOLOR);
}
else ips114_writedata_16bit(IPS114_BGCOLOR);
temp>>=1;
}
}
}
//-------------------------------------------------------------------------------------------------------------------
// @brief Һ<><D2BA><EFBFBD><EFBFBD>ʾ<EFBFBD>ַ<EFBFBD><D6B7><EFBFBD>
// @param x <20><><EFBFBD><EFBFBD>x<EFBFBD><78><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Χ 0 -<2D><>IPS114_X_MAX-1<><31>
// @param y <20><><EFBFBD><EFBFBD>y<EFBFBD><79><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Χ 0 -<2D><>IPS114_Y_MAX/16-1<><31>
// @param dat <20><>Ҫ<EFBFBD><D2AA>ʾ<EFBFBD><CABE><EFBFBD>ַ<EFBFBD><D6B7><EFBFBD>
// @return void
// @since v1.0
// Sample usage: ips114_showstr(0,0,"seekfree");
//-------------------------------------------------------------------------------------------------------------------
void ips114_showstr(uint16 x,uint16 y,const int8 dat[])
{
uint16 j;
j = 0;
while(dat[j] != '\0')
{
ips114_showchar(x+8*j,y*16,dat[j]);
j++;
}
}
//-------------------------------------------------------------------------------------------------------------------
// @brief Һ<><D2BA><EFBFBD><EFBFBD>ʾ<38>з<EFBFBD><D0B7><EFBFBD>
// @param x <20><><EFBFBD><EFBFBD>x<EFBFBD><78><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Χ 0 -<2D><>IPS114_X_MAX-1<><31>
// @param y <20><><EFBFBD><EFBFBD>y<EFBFBD><79><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Χ 0 -<2D><>IPS114_Y_MAX/16-1<><31>
// @param dat <20><>Ҫ<EFBFBD><D2AA>ʾ<EFBFBD>ı<EFBFBD><C4B1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>int8
// @return void
// @since v1.0
// Sample usage: ips114_showint8(0,0,x);//xΪint8<74><38><EFBFBD><EFBFBD>
//-------------------------------------------------------------------------------------------------------------------
void ips114_showint8(uint16 x,uint16 y,int8 dat)
{
uint8 a[3];
uint8 i;
if(dat<0)
{
ips114_showchar(x,y*16,'-');
dat = -dat;
}
else ips114_showchar(x,y*16,' ');
a[0] = dat/100;
a[1] = dat/10%10;
a[2] = dat%10;
i = 0;
while(i<3)
{
ips114_showchar(x+(8*(i+1)),y*16,'0' + a[i]);
i++;
}
}
//-------------------------------------------------------------------------------------------------------------------
// @brief Һ<><D2BA><EFBFBD><EFBFBD>ʾ<38>޷<EFBFBD><DEB7><EFBFBD>
// @param x <20><><EFBFBD><EFBFBD>x<EFBFBD><78><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Χ 0 -<2D><>IPS114_X_MAX-1<><31>
// @param y <20><><EFBFBD><EFBFBD>y<EFBFBD><79><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Χ 0 -<2D><>IPS114_Y_MAX/16-1<><31>
// @param dat <20><>Ҫ<EFBFBD><D2AA>ʾ<EFBFBD>ı<EFBFBD><C4B1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>uint8
// @return void
// @since v1.0
// Sample usage: ips114_showuint8(0,0,x);//xΪuint8<74><38><EFBFBD><EFBFBD>
//-------------------------------------------------------------------------------------------------------------------
void ips114_showuint8(uint16 x,uint16 y,uint8 dat)
{
uint8 a[3];
uint8 i;
a[0] = dat/100;
a[1] = dat/10%10;
a[2] = dat%10;
i = 0;
while(i<3)
{
ips114_showchar(x+(8*i),y*16,'0' + a[i]);
i++;
}
}
//-------------------------------------------------------------------------------------------------------------------
// @brief Һ<><D2BA><EFBFBD><EFBFBD>ʾ16λ<36>з<EFBFBD><D0B7><EFBFBD>
// @param x <20><><EFBFBD><EFBFBD>x<EFBFBD><78><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Χ 0 -<2D><>IPS114_X_MAX-1<><31>
// @param y <20><><EFBFBD><EFBFBD>y<EFBFBD><79><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Χ 0 -<2D><>IPS114_Y_MAX/16-1<><31>
// @param dat <20><>Ҫ<EFBFBD><D2AA>ʾ<EFBFBD>ı<EFBFBD><C4B1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>int16
// @return void
// @since v1.0
// Sample usage: ips114_showint16(0,0,x);//xΪint16<31><36><EFBFBD><EFBFBD>
//-------------------------------------------------------------------------------------------------------------------
void ips114_showint16(uint16 x,uint16 y,int16 dat)
{
uint8 a[5];
uint8 i;
if(dat<0)
{
ips114_showchar(x,y*16,'-');
dat = -dat;
}
else ips114_showchar(x,y*16,' ');
a[0] = dat/10000;
a[1] = dat/1000%10;
a[2] = dat/100%10;
a[3] = dat/10%10;
a[4] = dat%10;
i = 0;
while(i<5)
{
ips114_showchar(x+(8*(i+1)),y*16,'0' + a[i]);
i++;
}
}
//-------------------------------------------------------------------------------------------------------------------
// @brief Һ<><D2BA><EFBFBD><EFBFBD>ʾ16λ<36>޷<EFBFBD><DEB7><EFBFBD>
// @param x <20><><EFBFBD><EFBFBD>x<EFBFBD><78><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Χ 0 -<2D><>IPS114_X_MAX-1<><31>
// @param y <20><><EFBFBD><EFBFBD>y<EFBFBD><79><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Χ 0 -<2D><>IPS114_Y_MAX/16-1<><31>
// @param dat <20><>Ҫ<EFBFBD><D2AA>ʾ<EFBFBD>ı<EFBFBD><C4B1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>uint16
// @return void
// @since v1.0
// Sample usage: ips114_showuint16(0,0,x);//xΪuint16<31><36><EFBFBD><EFBFBD>
//-------------------------------------------------------------------------------------------------------------------
void ips114_showuint16(uint16 x,uint16 y,uint16 dat)
{
uint8 a[5];
uint8 i;
a[0] = dat/10000;
a[1] = dat/1000%10;
a[2] = dat/100%10;
a[3] = dat/10%10;
a[4] = dat%10;
i = 0;
while(i<5)
{
ips114_showchar(x+(8*i),y*16,'0' + a[i]);
i++;
}
}
//-------------------------------------------------------------------------------------------------------------------
// @brief Һ<><D2BA><EFBFBD><EFBFBD>ʾ32λ<32>з<EFBFBD><D0B7><EFBFBD><><C8A5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ч<EFBFBD><D0A7>0)
// @param x <20><><EFBFBD><EFBFBD>x<EFBFBD><78><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Χ 0 -<2D><>IPS114_X_MAX-1<><31>
// @param y <20><><EFBFBD><EFBFBD>y<EFBFBD><79><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Χ 0 -<2D><>IPS114_Y_MAX/16-1<><31>
// @param dat <20><>Ҫ<EFBFBD><D2AA>ʾ<EFBFBD>ı<EFBFBD><C4B1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>uint32
// @param num <20><>Ҫ<EFBFBD><D2AA>ʾ<EFBFBD><CABE>λ<EFBFBD><CEBB> <20><><EFBFBD><EFBFBD>10λ <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// @return void
// @since v1.0
// Sample usage: ips114_showuint32(0,0,x,3);//x<><78><EFBFBD><EFBFBD>Ϊint32 uint16 int16 uint8 int8<74><38><EFBFBD><EFBFBD>
// Sample usage: <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾһ<CABE><D2BB> <20><>-<2D><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾһ<CABE><D2BB><EFBFBD>ո<EFBFBD>
//-------------------------------------------------------------------------------------------------------------------
void ips114_showint32(uint16 x,uint16 y,int32 dat,uint8 num)
{
int8 buff[34];
uint32 length;
if(10<num) num = 10;
num++;
if(0>dat) length = zf_sprintf( &buff[0],"%d",dat);//<2F><><EFBFBD><EFBFBD>
else
{
buff[0] = ' ';
length = zf_sprintf( &buff[1],"%d",dat);
length++;
}
while(length < num)
{
buff[length] = ' ';
length++;
}
buff[num] = '\0';
ips114_showstr(x, y, buff); //<2F><>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD>
}
//-------------------------------------------------------------------------------------------------------------------
// @brief Һ<><D2BA><EFBFBD><EFBFBD>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD><EFBFBD><EFBFBD><><C8A5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ч<EFBFBD><D0A7>0)
// @param x <20><><EFBFBD><EFBFBD>x<EFBFBD><78><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Χ 0 -<2D><>IPS114_X_MAX-1<><31>
// @param y <20><><EFBFBD><EFBFBD>y<EFBFBD><79><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Χ 0 -<2D><>IPS114_Y_MAX/16-1<><31>
// @param dat <20><>Ҫ<EFBFBD><D2AA>ʾ<EFBFBD>ı<EFBFBD><C4B1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>float<61><74>double
// @param num <20><><EFBFBD><EFBFBD>λ<EFBFBD><CEBB>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>10λ
// @param pointnum С<><D0A1>λ<EFBFBD><CEBB>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
// @return void
// @since v1.0
// Sample usage: ips114_showfloat(0,0,x,2,3);//<2F><>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾС<><D0A1><EFBFBD><EFBFBD>ʾ<EFBFBD><CABE>λ
// @note <20>ر<EFBFBD>ע<EFBFBD><EFBFBD><E2B5B1><EFBFBD><EFBFBD>С<EFBFBD><D0A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾ<EFBFBD><CABE>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD>д<EFBFBD><D0B4><EFBFBD><EFBFBD>ֵ<EFBFBD><D6B5>һ<EFBFBD><D2BB><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD>
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڸ<EFBFBD><DAB8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȶ<EFBFBD>ʧ<EFBFBD><CAA7><EFBFBD><EFBFBD>µģ<C2B5><C4A3><EFBFBD><E2B2A2><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// <20>й<EFBFBD><D0B9><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E9A3AC><EFBFBD><EFBFBD><EFBFBD>аٶ<D0B0>ѧϰ <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȶ<EFBFBD>ʧ<EFBFBD><CAA7><EFBFBD>
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾһ<CABE><D2BB> <20><>-<2D><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾһ<CABE><D2BB><EFBFBD>ո<EFBFBD>
//-------------------------------------------------------------------------------------------------------------------
void ips114_showfloat(uint16 x,uint16 y,double dat,uint8 num,uint8 pointnum)
{
uint32 length;
int8 buff[34];
int8 start,end,point;
if(6<pointnum) pointnum = 6;
if(10<num) num = 10;
if(0>dat) length = zf_sprintf( &buff[0],"%f",dat);//<2F><><EFBFBD><EFBFBD>
else
{
length = zf_sprintf( &buff[1],"%f",dat);
length++;
}
point = (int8)(length - 7); //<2F><><EFBFBD><EFBFBD>С<EFBFBD><D0A1><EFBFBD><EFBFBD>λ<EFBFBD><CEBB>
start = point - num - 1; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʼλ
end = point + pointnum + 1; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>λ
while(0>start)//<2F><><EFBFBD><EFBFBD>λ<EFBFBD><CEBB><EFBFBD><EFBFBD> ĩβӦ<CEB2><D3A6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ո<EFBFBD>
{
buff[end] = ' ';
end++;
start++;
}
if(0>dat) buff[start] = '-';
else buff[start] = ' ';
buff[end] = '\0';
ips114_showstr(x, y, buff); //<2F><>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD>
}
//-------------------------------------------------------------------------------------------------------------------
// @brief <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>(<28>Ҷ<EFBFBD><D2B6><EFBFBD><EFBFBD><EFBFBD>ͷ)Һ<><D2BA><EFBFBD><EFBFBD>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD>
// @param *p ͼ<><CDBC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ַ
// @param width ͼ<><CDBC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// @param height ͼ<><CDBC><EFBFBD>߶<EFBFBD>
// @return void
// @since v1.0
// Sample usage: ips114_displayimage032(mt9v03x_csi_image[0], MT9V03X_CSI_W, MT9V03X_CSI_H)//<2F><>ʾ<EFBFBD>Ҷ<EFBFBD><D2B6><EFBFBD><EFBFBD><EFBFBD>ͷ ͼ<><CDBC>
// @note ͼ<><CDBC><EFBFBD>Ŀ<EFBFBD><C4BF><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Һ<EFBFBD><D2BA><EFBFBD>Ŀ<EFBFBD><C4BF>ȣ<EFBFBD><C8A3><EFBFBD><EFBFBD>Զ<EFBFBD><D4B6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾȫ<CABE><C8AB>Ұ
//-------------------------------------------------------------------------------------------------------------------
void ips114_displayimage032(uint8 *p, uint16 width, uint16 height)
{
uint32 i,j;
uint16 color = 0;
uint16 temp = 0;
uint16 coord_x = 0;
uint16 coord_y = 0;
coord_x = width>IPS114_X_MAX?IPS114_X_MAX:width;
coord_y = height>IPS114_Y_MAX?IPS114_Y_MAX:height;
ips114_set_region(0,0,coord_x-1,coord_y-1);
for(j=0;j<coord_y;j++)
{
for(i=0;i<coord_x;i++)
{
temp = *(p+j*width+i*width/coord_x);//<2F><>ȡ<EFBFBD><C8A1><EFBFBD>ص<EFBFBD>
color=(0x001f&((temp)>>3))<<11;
color=color|(((0x003f)&((temp)>>2))<<5);
color=color|(0x001f&((temp)>>3));
ips114_writedata_16bit(color);
}
}
}
//-------------------------------------------------------------------------------------------------------------------
// @brief <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>(<28>Ҷ<EFBFBD><D2B6><EFBFBD><EFBFBD><EFBFBD>ͷ)Һ<><D2BA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD>
// @param *p ͼ<><CDBC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ַ
// @param width ͼ<><CDBC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// @param height ͼ<><CDBC><EFBFBD>߶<EFBFBD>
// @param dis_width ͼ<><CDBC><EFBFBD><EFBFBD>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD> 1 -<2D><>IPS114_X_MAX<41><58>
// @param dis_height ͼ<><CDBC><EFBFBD><EFBFBD>ʾ<EFBFBD>߶<EFBFBD> 1 -<2D><>IPS114_Y_MAX<41><58>
// @return void
// @since v1.0
// Sample usage: ips114_displayimage032_zoom(mt9v03x_csi_image[0], MT9V03X_CSI_W, MT9V03X_CSI_H, MT9V03X_CSI_W, MT9V03X_CSI_H)//<2F><>ʾ<EFBFBD>Ҷ<EFBFBD><D2B6><EFBFBD><EFBFBD><EFBFBD>ͷ ͼ<><CDBC>
// @note ͼ<><CDBC><EFBFBD>Ŀ<EFBFBD><C4BF><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Һ<EFBFBD><D2BA><EFBFBD>Ŀ<EFBFBD><C4BF>ȣ<EFBFBD><C8A3><EFBFBD><EFBFBD>Զ<EFBFBD><D4B6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾȫ<CABE><C8AB>Ұ
//-------------------------------------------------------------------------------------------------------------------
void ips114_displayimage032_zoom(uint8 *p, uint16 width, uint16 height, uint16 dis_width, uint16 dis_height)
{
uint32 i,j;
uint16 color = 0;
uint16 temp = 0;
ips114_set_region(0,0,dis_width-1,dis_height-1);//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD>
for(j=0;j<dis_height;j++)
{
for(i=0;i<dis_width;i++)
{
temp = *(p+(j*height/dis_height)*width+i*width/dis_width);//<2F><>ȡ<EFBFBD><C8A1><EFBFBD>ص<EFBFBD>
color=(0x001f&((temp)>>3))<<11;
color=color|(((0x003f)&((temp)>>2))<<5);
color=color|(0x001f&((temp)>>3));
ips114_writedata_16bit(color);
}
}
}
//-------------------------------------------------------------------------------------------------------------------
// @brief <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>(<28>Ҷ<EFBFBD><D2B6><EFBFBD><EFBFBD><EFBFBD>ͷ)Һ<><D2BA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD>
// @param *p ͼ<><CDBC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ַ
// @param width ͼ<><CDBC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// @param height ͼ<><CDBC><EFBFBD>߶<EFBFBD>
// @param start_x <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD><EFBFBD><EFBFBD>x<EFBFBD><78><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// @param start_y <09><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD><EFBFBD><EFBFBD>y<EFBFBD><79><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// @param dis_width ͼ<><CDBC><EFBFBD><EFBFBD>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD> 1 -<2D><>IPS114_X_MAX<41><58>
// @param dis_height ͼ<><CDBC><EFBFBD><EFBFBD>ʾ<EFBFBD>߶<EFBFBD> 1 -<2D><>IPS114_Y_MAX<41><58>
// @return void
// @since v1.0
// Sample usage: ips114_displayimage032_zoom1(mt9v03x_csi_image[0], MT9V03X_CSI_W, MT9V03X_CSI_H, 0, 0, MT9V03X_CSI_W, MT9V03X_CSI_H)//<2F><>ʾ<EFBFBD>Ҷ<EFBFBD><D2B6><EFBFBD><EFBFBD><EFBFBD>ͷ ͼ<><CDBC>
//-------------------------------------------------------------------------------------------------------------------
void ips114_displayimage032_zoom1(uint8 *p, uint16 width, uint16 height, uint16 start_x, uint16 start_y, uint16 dis_width, uint16 dis_height)
{
uint32 i,j;
uint16 color = 0;
uint16 temp = 0;
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>õIJ<C3B5><C4B2><EFBFBD><EFBFBD>Ƿ񳬹<C7B7><F1B3ACB9><EFBFBD>Ļ<EFBFBD>ķֱ<C4B7><D6B1><EFBFBD>
if((start_x+dis_width)>IPS114_X_MAX) ZF_ASSERT(0);
if((start_y+dis_height)>IPS114_Y_MAX) ZF_ASSERT(0);
ips114_set_region(start_x,start_y,start_x+dis_width-1,start_y+dis_height-1);//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD>
for(j=0;j<dis_height;j++)
{
for(i=0;i<dis_width;i++)
{
temp = *(p+(j*height/dis_height)*width+i*width/dis_width);//<2F><>ȡ<EFBFBD><C8A1><EFBFBD>ص<EFBFBD>
color=(0x001f&((temp)>>3))<<11;
color=color|(((0x003f)&((temp)>>2))<<5);
color=color|(0x001f&((temp)>>3));
ips114_writedata_16bit(color);
}
}
}
//-------------------------------------------------------------------------------------------------------------------
// @brief <20><>ͫ(<28><>ɫ<EFBFBD><C9AB><EFBFBD><EFBFBD>ͷ)Һ<><D2BA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD>
// @param *p ͼ<><CDBC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ַ
// @param width ͼ<><CDBC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// @param height ͼ<><CDBC><EFBFBD>߶<EFBFBD>
// @param dis_width ͼ<><CDBC><EFBFBD><EFBFBD>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD> 0 -<2D><>TFT_X_MAX-1<><31>
// @param dis_height ͼ<><CDBC><EFBFBD><EFBFBD>ʾ<EFBFBD>߶<EFBFBD> 0 -<2D><>TFT_Y_MAX-1<><31>
// @return void
// @since v1.0
// Sample usage: ips114_displayimage8660_zoom(scc8660_csi_image[0], SCC8660_CSI_PIC_W, SCC8660_CSI_PIC_H, 320, 240)//<2F><>ʾ<EFBFBD><CABE>ɫ<EFBFBD><C9AB><EFBFBD><EFBFBD>ͷ ͼ<><CDBC>
// @note ͼ<><CDBC><EFBFBD>Ŀ<EFBFBD><C4BF><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Һ<EFBFBD><D2BA><EFBFBD>Ŀ<EFBFBD><C4BF>ȣ<EFBFBD><C8A3><EFBFBD><EFBFBD>Զ<EFBFBD><D4B6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾȫ<CABE><C8AB>Ұ
//-------------------------------------------------------------------------------------------------------------------
void ips114_displayimage8660_zoom(uint16 *p, uint16 width, uint16 height, uint16 dis_width, uint16 dis_height)
{
uint32 i,j;
uint16 color = 0;
ips114_set_region(0,0,dis_width-1,dis_height-1);//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD>
for(j=0;j<dis_height;j++)
{
for(i=0;i<dis_width;i++)
{
color = *(p+(j*height/dis_height)*width+i*width/dis_width);//<2F><>ȡ<EFBFBD><C8A1><EFBFBD>ص<EFBFBD>
color = ((color&0xff)<<8) | (color>>8);
ips114_writedata_16bit(color);
}
}
}
//-------------------------------------------------------------------------------------------------------------------
// @brief <20><>ͫ(<28><>ɫ<EFBFBD><C9AB><EFBFBD><EFBFBD>ͷ)Һ<><D2BA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD>
// @param *p ͼ<><CDBC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ַ
// @param width ͼ<><CDBC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// @param height ͼ<><CDBC><EFBFBD>߶<EFBFBD>
// @param start_x <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD><EFBFBD><EFBFBD>x<EFBFBD><78><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// @param start_y <09><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD><EFBFBD><EFBFBD>y<EFBFBD><79><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// @param dis_width ͼ<><CDBC><EFBFBD><EFBFBD>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD> 1 -<2D><>TFT_X_MAX<41><58>
// @param dis_height ͼ<><CDBC><EFBFBD><EFBFBD>ʾ<EFBFBD>߶<EFBFBD> 1 -<2D><>TFT_Y_MAX<41><58>
// @return void
// @since v1.0
// Sample usage: ips114_displayimage8660_zoom1(scc8660_csi_image[0], SCC8660_CSI_PIC_W, SCC8660_CSI_PIC_H, 0, 0, 320, 240);
//-------------------------------------------------------------------------------------------------------------------
void ips114_displayimage8660_zoom1(uint8 *p, uint16 width, uint16 height, uint16 start_x, uint16 start_y, uint16 dis_width, uint16 dis_height)
{
uint32 i,j;
uint16 color = 0;
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>õIJ<C3B5><C4B2><EFBFBD><EFBFBD>Ƿ񳬹<C7B7><F1B3ACB9><EFBFBD>Ļ<EFBFBD>ķֱ<C4B7><D6B1><EFBFBD>
if((start_x+dis_width)>IPS114_X_MAX) ZF_ASSERT(0);
if((start_y+dis_height)>IPS114_Y_MAX) ZF_ASSERT(0);
ips114_set_region(start_x,start_y,start_x+dis_width-1,start_y+dis_height-1);//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD>
for(j=0;j<dis_height;j++)
{
for(i=0;i<dis_width;i++)
{
color = *(p+(j*height/dis_height)*width+i*width/dis_width);//<2F><>ȡ<EFBFBD><C8A1><EFBFBD>ص<EFBFBD>
color = ((color&0xff)<<8) | (color>>8);
ips114_writedata_16bit(color);
}
}
}
//-------------------------------------------------------------------------------------------------------------------
// @brief С<><D0A1><EFBFBD><EFBFBD>(<28><>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͷ)Һ<><D2BA><EFBFBD><EFBFBD>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD>
// @param *p ͼ<><CDBC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ַ
// @param width ͼ<><CDBC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// @param height ͼ<><CDBC><EFBFBD>߶<EFBFBD>
// @return void
// @since v1.0
// @note ͼ<><CDBC><EFBFBD>ֱ<EFBFBD><D6B1><EFBFBD><EFBFBD><EFBFBD>Ҫ<EFBFBD><D2AA><EFBFBD><EFBFBD><EFBFBD><EFBFBD>120(<28><>)*160(<28><>)<29><><EFBFBD><EFBFBD>
//-------------------------------------------------------------------------------------------------------------------
void ips114_displayimage7725(uint8 *p, uint16 width, uint16 height)
{
int i,j;
uint16 temp = 0;
ips114_set_region(0,0,width-1,height-1);
for(i=0;i<height * (width/8);i++)
{
temp = *p;
p++;
for(j=0; j<8; j++)
{
if( (temp<<j)&0x80 ) ips114_writedata_16bit(RGB565_WHITE);
else ips114_writedata_16bit(RGB565_BLACK);
}
}
}
//-------------------------------------------------------------------------------------------------------------------
// @brief <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾ
// @param x <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> 0-<2D><>IPS114_X_MAX-1<><31>
// @param y <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> 0-<2D><>IPS114_Y_MAX-1<><31>
// @param size ȡģ<C8A1><C4A3>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD>õĺ<C3B5><C4BA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>С<EFBFBD><D0A1>Ҳ<EFBFBD><D2B2><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ռ<EFBFBD>õĵ<C3B5><C4B5>󳤿<EFBFBD>Ϊ<EFBFBD><CEAA><EFBFBD>ٸ<EFBFBD><D9B8>㣬ȡģ<C8A1><C4A3>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD>Ҫ<EFBFBD><D2AA><EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD>ġ<EFBFBD>
// @param *p <20><>Ҫ<EFBFBD><D2AA>ʾ<EFBFBD>ĺ<EFBFBD><C4BA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// @param number <20><>Ҫ<EFBFBD><D2AA>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD>λ
// @param color <20><>ʾ<EFBFBD><CABE>ɫ
// @return void
// @since v1.0
// Sample usage: ips114_display_chinese(0,0,16,chinese_test[0],4,RED);//<2F><>ʾfont<6E>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ʾ<><CABE>
// @Note ʹ<><CAB9>PCtoLCD2002<30><32><EFBFBD><EFBFBD>ȡģ <20><><EFBFBD><EFBFBD><EBA1A2><EFBFBD><EFBFBD>ʽ<EFBFBD><CABD>˳<EFBFBD><CBB3> 16*16
//-------------------------------------------------------------------------------------------------------------------
void ips114_display_chinese(uint16 x, uint16 y, uint8 size, const uint8 *p, uint8 number, uint16 color)
{
int i, j, k;
uint8 temp, temp1, temp2;
const uint8 *p_data;
temp2 = size/8;
ips114_set_region(x,y,number*size-1+x,y+size-1);
for(i=0;i<size;i++)
{
temp1 = number;
p_data = p+i*temp2;
while(temp1--)
{
for(k=0;k<temp2;k++)
{
for(j=8;j>0;j--)
{
temp = (*p_data>>(j-1)) & 0x01;
if(temp) ips114_writedata_16bit(color);
else ips114_writedata_16bit(IPS114_BGCOLOR);
}
p_data++;
}
p_data = p_data - temp2 + temp2*size;
}
}
}

View File

@@ -1,130 +0,0 @@
/*********************************************************************************************************************
* COPYRIGHT NOTICE
* Copyright (c) 2020,<2C><><EFBFBD>ɿƼ<C9BF>
* All rights reserved.
* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>QQȺ<51><C8BA><EFBFBD><EFBFBD>Ⱥ<EFBFBD><C8BA>824575535
*
* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݰ<EFBFBD>Ȩ<EFBFBD><C8A8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɿƼ<C9BF><C6BC><EFBFBD><EFBFBD>У<EFBFBD>δ<EFBFBD><CEB4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ҵ<EFBFBD><D2B5>;<EFBFBD><CDBE>
* <20><>ӭ<EFBFBD><D3AD>λʹ<CEBB>ò<EFBFBD><C3B2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>޸<EFBFBD><DEB8><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EBB1A3><EFBFBD><EFBFBD><EFBFBD>ɿƼ<C9BF><C6BC>İ<EFBFBD>Ȩ<EFBFBD><C8A8><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
*
* @file 1.14<EFBFBD><EFBFBD>IPS<EFBFBD><EFBFBD>Ļ
* @company <09>ɶ<EFBFBD><C9B6><EFBFBD><EFBFBD>ɿƼ<C9BF><C6BC><EFBFBD><EFBFBD>޹<EFBFBD>˾
* @author <09><><EFBFBD>ɿƼ<C9BF>(QQ3184284598)
* @version <09>鿴doc<6F><63>version<6F>ļ<EFBFBD> <20>汾˵<E6B1BE><CBB5>
* @Software ADS v1.2.2
* @Target core TC264D
* @Taobao https://seekfree.taobao.com/
* @date 2020-3-23
* @note
<09><><EFBFBD>߶<EFBFBD><DFB6>
------------------------------------
ģ<><C4A3><EFBFBD>ܽ<EFBFBD> <09><>Ƭ<EFBFBD><C6AC><EFBFBD>ܽ<EFBFBD>
SCL <20>鿴IPS114_SCL_PIN<49><EFBFBD><EAB6A8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> Ӳ<><D3B2>SPI<50><49><EFBFBD>Ų<EFBFBD><C5B2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>л<EFBFBD>
SDA <20>鿴IPS114_SDA_PIN<49><EFBFBD><EAB6A8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> Ӳ<><D3B2>SPI<50><49><EFBFBD>Ų<EFBFBD><C5B2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>л<EFBFBD>
RES <20>鿴IPS114_REST_PIN<49><EFBFBD><EAB6A8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
DC <20>鿴IPS114_DC_PIN<49><EFBFBD><EAB6A8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
CS <20>鿴IPS114_CS_PIN<49><EFBFBD><EAB6A8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> Ӳ<><D3B2>SPI<50><49><EFBFBD>Ų<EFBFBD><C5B2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>л<EFBFBD>
<09><>Դ<EFBFBD><D4B4><EFBFBD><EFBFBD>
BL 3.3V<EFBFBD><EFBFBD>Դ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ţ<EFBFBD>Ҳ<EFBFBD><EFBFBD><EFBFBD>Խ<EFBFBD>PWM<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȣ<EFBFBD>
VCC 3.3V<EFBFBD><EFBFBD>Դ
GND <20><>Դ<EFBFBD><D4B4>
<09><><EFBFBD><EFBFBD><EFBFBD>ֱ<EFBFBD><D6B1><EFBFBD>135*240
------------------------------------
********************************************************************************************************************/
#ifndef _SEEKFREE_IPS114_H
#define _SEEKFREE_IPS114_H
#include "common.h"
#include "SEEKFREE_FONT.h"
//-----------------<2D><><EFBFBD>Ŷ<EFBFBD><C5B6><EFBFBD>------------------------------
#define IPS114_SPIN_PIN SPI_2 //<2F><><EFBFBD><EFBFBD>ʹ<EFBFBD>õ<EFBFBD>SPI<50><49>
#define IPS114_SCL_PIN SPI2_SCLK_P15_3 //<2F><><EFBFBD><EFBFBD>SPI_SCK<43><4B><EFBFBD><EFBFBD>
#define IPS114_SDA_PIN SPI2_MOSI_P15_5 //<2F><><EFBFBD><EFBFBD>SPI_MOSI<53><49><EFBFBD><EFBFBD>
#define IPS114_SDA_IN_PIN SPI2_MISO_P15_4 //<2F><><EFBFBD><EFBFBD>SPI_MISO<53><4F><EFBFBD><EFBFBD> IPSû<53><C3BB>MISO<53><4F><EFBFBD>ţ<EFBFBD><C5A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ȼ<EFBFBD><C8BB>Ҫ<EFBFBD><D2AA><EFBFBD><EFBFBD><E5A3AC>spi<70>ij<EFBFBD>ʼ<EFBFBD><CABC>ʱ<EFBFBD><CAB1>Ҫʹ<D2AA><CAB9>
#define IPS114_CS_PIN SPI2_CS0_P15_2 //<2F><><EFBFBD><EFBFBD>SPI_CS<43><53><EFBFBD><EFBFBD>
#define IPS114_BL_PIN P15_4 //Һ<><D2BA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ŷ<EFBFBD><C5B6><EFBFBD> <20><><EFBFBD><EFBFBD>ʵ<EFBFBD><CAB5>ͨѶδʹ<CEB4><CAB9>P15_4<5F><34><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFB8B4>ΪGPIO
#define IPS114_REST_PIN P15_1 //Һ<><D2BA><EFBFBD><EFBFBD>λ<EFBFBD><CEBB><EFBFBD>Ŷ<EFBFBD><C5B6><EFBFBD>
#define IPS114_DC_PIN P15_0 //Һ<><D2BA><EFBFBD><EFBFBD><EFBFBD><EFBFBD>λ<EFBFBD><CEBB><EFBFBD>Ŷ<EFBFBD><C5B6><EFBFBD>
#define IPS114_DC(x) gpio_set(IPS114_DC_PIN,x)
#define IPS114_REST(x) gpio_set(IPS114_REST_PIN,x)
//-------<2D><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɫ<EFBFBD><C9AB>SEEKFREE_FONT.h<>ļ<EFBFBD><C4BC>ж<EFBFBD><D0B6><EFBFBD>----------
//#define RED 0xF800 //<2F><>ɫ
//#define BLUE 0x001F //<2F><>ɫ
//#define YELLOW 0xFFE0 //<2F><>ɫ
//#define GREEN 0x07E0 //<2F><>ɫ
//#define WHITE 0xFFFF //<2F><>ɫ
//#define BLACK 0x0000 //<2F><>ɫ
//#define GRAY 0X8430 //<2F><>ɫ
//#define BROWN 0XBC40 //<2F><>ɫ
//#define PURPLE 0XF81F //<2F><>ɫ
//#define PINK 0XFE19 //<2F><>ɫ
//<2F><><EFBFBD><EFBFBD>д<EFBFBD>ֱʵ<D6B1><CAB5><EFBFBD>ɫ
#define IPS114_PENCOLOR RGB565_RED
//<2F><><EFBFBD><EFBFBD><E5B1B3><EFBFBD><EFBFBD>ɫ
#define IPS114_BGCOLOR RGB565_WHITE
#define IPS114_W 135
#define IPS114_H 240
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD>
//0 <20><><EFBFBD><EFBFBD>ģʽ
//1 <20><><EFBFBD><EFBFBD>ģʽ <20><>ת180
//2 <20><><EFBFBD><EFBFBD>ģʽ
//3 <20><><EFBFBD><EFBFBD>ģʽ <20><>ת180
#define IPS114_DISPLAY_DIR 3
#if (0==IPS114_DISPLAY_DIR || 1==IPS114_DISPLAY_DIR)
#define IPS114_X_MAX IPS114_W //Һ<><D2BA>X<EFBFBD><58><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
#define IPS114_Y_MAX IPS114_H //Һ<><D2BA>Y<EFBFBD><59><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
#elif (2==IPS114_DISPLAY_DIR || 3==IPS114_DISPLAY_DIR)
#define IPS114_X_MAX IPS114_H //Һ<><D2BA>X<EFBFBD><58><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
#define IPS114_Y_MAX IPS114_W //Һ<><D2BA>Y<EFBFBD><59><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
#else
#error "IPS114_DISPLAY_DIR <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>"
#endif
void ips114_init(void);
void ips114_clear(uint16 color);
void ips114_drawpoint(uint16 x,uint16 y,uint16 color);
void ips114_showchar(uint16 x,uint16 y,const int8 dat);
void ips114_showstr(uint16 x,uint16 y,const int8 dat[]);
void ips114_showint8(uint16 x,uint16 y,int8 dat);
void ips114_showuint8(uint16 x,uint16 y,uint8 dat);
void ips114_showint16(uint16 x,uint16 y,int16 dat);
void ips114_showuint16(uint16 x,uint16 y,uint16 dat);
void ips114_showint32(uint16 x,uint16 y,int32 dat,uint8 num);
void ips114_showfloat(uint16 x,uint16 y,double dat,uint8 num,uint8 pointnum);
void ips114_displayimage032(uint8 *p, uint16 width, uint16 height);
void ips114_displayimage032_zoom(uint8 *p, uint16 width, uint16 height, uint16 dis_width, uint16 dis_height);
void ips114_displayimage032_zoom1(uint8 *p, uint16 width, uint16 height, uint16 start_x, uint16 start_y, uint16 dis_width, uint16 dis_height);
void ips114_displayimage8660_zoom(uint16 *p, uint16 width, uint16 height, uint16 dis_width, uint16 dis_height);
void ips114_displayimage8660_zoom1(uint8 *p, uint16 width, uint16 height, uint16 start_x, uint16 start_y, uint16 dis_width, uint16 dis_height);
void ips114_displayimage7725(uint8 *p, uint16 width, uint16 height);
void ips114_display_chinese(uint16 x, uint16 y, uint8 size, const uint8 *p, uint8 number, uint16 color);
#endif

View File

@@ -1,931 +0,0 @@
/*********************************************************************************************************************
* COPYRIGHT NOTICE
* Copyright (c) 2020,<2C><><EFBFBD>ɿƼ<C9BF>
* All rights reserved.
* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>QQȺ<51><C8BA><EFBFBD><EFBFBD>Ⱥ<EFBFBD><C8BA>824575535
*
* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݰ<EFBFBD>Ȩ<EFBFBD><C8A8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɿƼ<C9BF><C6BC><EFBFBD><EFBFBD>У<EFBFBD>δ<EFBFBD><CEB4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ҵ<EFBFBD><D2B5>;<EFBFBD><CDBE>
* <20><>ӭ<EFBFBD><D3AD>λʹ<CEBB>ò<EFBFBD><C3B2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>޸<EFBFBD><DEB8><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EBB1A3><EFBFBD><EFBFBD><EFBFBD>ɿƼ<C9BF><C6BC>İ<EFBFBD>Ȩ<EFBFBD><C8A8><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
*
* @file 2.0<EFBFBD><EFBFBD>IPS<EFBFBD><EFBFBD>Ļ
* @company <09>ɶ<EFBFBD><C9B6><EFBFBD><EFBFBD>ɿƼ<C9BF><C6BC><EFBFBD><EFBFBD>޹<EFBFBD>˾
* @author <09><><EFBFBD>ɿƼ<C9BF>(QQ3184284598)
* @version <09>鿴doc<6F><63>version<6F>ļ<EFBFBD> <20>汾˵<E6B1BE><CBB5>
* @Software ADS v1.5.2
* @Target core TC264
* @Taobao https://seekfree.taobao.com/
* @date 2022-05-07
* @note
<20><><EFBFBD>߶<EFBFBD><DFB6>
------------------------------------------------------------------------
* ģ<><C4A3><EFBFBD>ܽ<EFBFBD> <20><>Ƭ<EFBFBD><C6AC><EFBFBD>ܽ<EFBFBD>
* // ˫<><CBAB><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> Ӳ<><D3B2><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* RD <20>鿴 SEEKFREE_IPS200.h <20><> IPS200_RD_PIN_PARALLEL8 <20><EFBFBD><EAB6A8>
* WR <20>鿴 SEEKFREE_IPS200.h <20><> IPS200_WR_PIN_PARALLEL8 <20><EFBFBD><EAB6A8>
* RS <20>鿴 SEEKFREE_IPS200.h <20><> IPS200_RS_PIN_PARALLEL8 <20><EFBFBD><EAB6A8>
* RST <20>鿴 SEEKFREE_IPS200.h <20><> IPS200_RST_PIN_PARALLEL8 <20><EFBFBD><EAB6A8>
* CS <20>鿴 SEEKFREE_IPS200.h <20><> IPS200_CS_PIN_PARALLEL8 <20><EFBFBD><EAB6A8>
* BL <20>鿴 SEEKFREE_IPS200.h <20><> IPS200_BL_PIN_PARALLEL8 <20><EFBFBD><EAB6A8>
* D0-D7 <20>鿴 SEEKFREE_IPS200.h <20><> IPS200_Dx_PIN_PARALLEL8 <20><EFBFBD><EAB6A8>
* VCC 3.3V<EFBFBD><EFBFBD>Դ
* GND <20><>Դ<EFBFBD><D4B4>
* // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> SPI <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> Ӳ<><D3B2><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* SCL <20>鿴 SEEKFREE_IPS200.h <20><> IPS200_SCL_PIN_SPI <20><EFBFBD><EAB6A8>
* SDA <20>鿴 SEEKFREE_IPS200.h <20><> IPS200_SDA_PIN_SPI <20><EFBFBD><EAB6A8>
* RST <20>鿴 SEEKFREE_IPS200.h <20><> IPS200_RST_PIN_SPI <20><EFBFBD><EAB6A8>
* DC <20>鿴 SEEKFREE_IPS200.h <20><> IPS200_DC_PIN_SPI <20><EFBFBD><EAB6A8>
* CS <20>鿴 SEEKFREE_IPS200.h <20><> IPS200_CS_PIN_SPI <20><EFBFBD><EAB6A8>
* BL <20>鿴 SEEKFREE_IPS200.h <20><> IPS200_BL_PIN_SPI <20><EFBFBD><EAB6A8>
* VCC 3.3V<EFBFBD><EFBFBD>Դ
* GND <20><>Դ<EFBFBD><D4B4>
* <20><><EFBFBD><EFBFBD><EFBFBD>ֱ<EFBFBD><D6B1><EFBFBD> 320 * 240
* ------------------------------------------------------------------------
********************************************************************************************************************/
#include "SEEKFREE_IPS200.h"
static ips200_type_enum ips200_display_type = IPS200_TYPE_SPI;
static PIN_enum ips_rst_pin = IPS200_RST_PIN_SPI;
//-------------------------------------------------------------------------------------------------------------------
// @brief <20>ڲ<EFBFBD><DAB2><EFBFBD><EFBFBD>ã<EFBFBD><C3A3>û<EFBFBD><C3BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// @param dat <20><><EFBFBD><EFBFBD>
// @return
// @since v1.0
// Sample usage:
//-------------------------------------------------------------------------------------------------------------------
void ips200_w_data(uint8 dat) //д<><D0B4><EFBFBD><EFBFBD>
{
IPS200_DATAPORT1 = (dat << DATA_START_NUM1) | (IPS200_DATAPORT1 & ~((uint32)(0x0F << DATA_START_NUM1)) );
IPS200_DATAPORT2 = ((dat>>4) << DATA_START_NUM2) | (IPS200_DATAPORT2 & ~((uint32)(0x0F << DATA_START_NUM2)) );
}
//-------------------------------------------------------------------------------------------------------------------
// @brief <20>ڲ<EFBFBD><DAB2><EFBFBD><EFBFBD>ã<EFBFBD><C3A3>û<EFBFBD><C3BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// @param command <20><><EFBFBD><EFBFBD>
// @return
// @since v1.0
// Sample usage:
//-------------------------------------------------------------------------------------------------------------------
void ips200_wr_reg(uint8 command) //д<><D0B4><EFBFBD><EFBFBD>
{
if(IPS200_TYPE_SPI == ips200_display_type)
{
IPS200_DC(0);
spi_mosi(IPS200_SPIN,IPS200_CS_PIN_SPI,&command,NULL,1,1);
IPS200_DC(1);
}
else
{
IPS200_CS(0);
IPS200_RS(0);
IPS200_RD(1);
IPS200_WR(0);
ips200_w_data(command);
IPS200_WR(1);
IPS200_CS(1);
}
}
//-------------------------------------------------------------------------------------------------------------------
// @brief <20>ڲ<EFBFBD><DAB2><EFBFBD><EFBFBD>ã<EFBFBD><C3A3>û<EFBFBD><C3BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// @param dat 8λ<38><CEBB><EFBFBD><EFBFBD>
// @return
// @since v1.0
// Sample usage:
//-------------------------------------------------------------------------------------------------------------------
void ips200_wr_data(uint8 dat) //<2F><>Һ<EFBFBD><D2BA><EFBFBD><EFBFBD>дһ<D0B4><D2BB><38><CEBB><EFBFBD><EFBFBD>
{
if(IPS200_TYPE_SPI == ips200_display_type)
{
spi_mosi(IPS200_SPIN,IPS200_CS_PIN_SPI,&dat,NULL,1,1);
}
else
{
IPS200_CS(0);
IPS200_RS(1);
IPS200_RD(1);
IPS200_WR(0);
ips200_w_data(dat);
IPS200_WR(1);
IPS200_CS(1);
}
}
//-------------------------------------------------------------------------------------------------------------------
// @brief <20>ڲ<EFBFBD><DAB2><EFBFBD><EFBFBD>ã<EFBFBD><C3A3>û<EFBFBD><C3BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// @param dat 16λ<36><CEBB><EFBFBD><EFBFBD>
// @return
// @since v1.0
// Sample usage:
//-------------------------------------------------------------------------------------------------------------------
void ips200_wr_data16(uint16 dat) //<2F><>Һ<EFBFBD><D2BA><EFBFBD><EFBFBD>дһ<D0B4><D2BB>16λ<36><CEBB><EFBFBD><EFBFBD>
{
if(IPS200_TYPE_SPI == ips200_display_type)
{
uint8 dat1[2];
dat1[0] = dat >> 8;
dat1[1] = (uint8)dat;
spi_mosi(IPS200_SPIN,IPS200_CS_PIN_SPI,dat1,NULL,2,1);
}
else
{
IPS200_CS(0);
IPS200_RS(1);
IPS200_RD(1);
IPS200_WR(0);
ips200_w_data((uint8)(dat>>8));
IPS200_WR(1);
IPS200_WR(0);
ips200_w_data((uint8)(dat));
IPS200_WR(1);
IPS200_CS(1);
}
}
//-------------------------------------------------------------------------------------------------------------------
// @brief <20>ڲ<EFBFBD><DAB2><EFBFBD><EFBFBD>ã<EFBFBD><C3A3>û<EFBFBD><C3BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// @param com <20><><EFBFBD><EFBFBD>
// @param dat <20><><EFBFBD><EFBFBD>
// @return
// @since v1.0
// Sample usage:
//-------------------------------------------------------------------------------------------------------------------
void ips200_w_reg(uint8 com,uint8 dat) //д<>Ĵ<EFBFBD><C4B4><EFBFBD>
{
ips200_wr_reg(com);
ips200_wr_data(dat);
}
//-------------------------------------------------------------------------------------------------------------------
// @brief <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD> <20>ڲ<EFBFBD><DAB2><EFBFBD><EFBFBD><EFBFBD>
// @param x1 <20><>ʼx<CABC><78><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// @param y1 <20><>ʼy<CABC><79><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// @param x2 <20><><EFBFBD><EFBFBD>x<EFBFBD><78><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// @param y2 <20><><EFBFBD><EFBFBD>y<EFBFBD><79><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// @return
// @since v1.0
// Sample usage:
//-------------------------------------------------------------------------------------------------------------------
void ips200_address_set(uint16 x1,uint16 y1,uint16 x2,uint16 y2)
{
ips200_wr_reg(0x2a);
ips200_wr_data16(x1);
ips200_wr_data16(x2);
ips200_wr_reg(0x2b);
ips200_wr_data16(y1);
ips200_wr_data16(y2);
ips200_wr_reg(0x2c);
}
//-------------------------------------------------------------------------------------------------------------------
// @brief 2.0<EFBFBD><EFBFBD> IPSҺ<53><D2BA><EFBFBD><EFBFBD>ʼ<EFBFBD><CABC>
// @return type_select <20><><EFBFBD>ڻ<EFBFBD><DABB>ߴ<EFBFBD><DFB4><EFBFBD>ѡ<EFBFBD><D1A1>
// @since v1.0
// Sample usage:
//-------------------------------------------------------------------------------------------------------------------
void ips200_init(ips200_type_enum type_select)
{
if(IPS200_TYPE_SPI == type_select)
{
ips200_display_type = IPS200_TYPE_SPI;
ips_rst_pin = IPS200_RST_PIN_SPI;
spi_init(IPS200_SPIN, IPS200_SCL_PIN_SPI, IPS200_SDA_PIN_SPI, IPS200_SDA_IN_PIN_SPI, IPS200_CS_PIN_SPI, 0, 30*1000*1000);//Ӳ<><D3B2>SPI<50><49>ʼ<EFBFBD><CABC>
gpio_init(IPS200_BL_PIN_SPI,GPO,1,PUSHPULL);
gpio_init(IPS200_DC_PIN_SPI,GPO,0,PUSHPULL);
gpio_init(ips_rst_pin,GPO,0,PUSHPULL);
}
else
{
ips200_display_type = IPS200_TYPE_PARALLEL8;
ips_rst_pin = IPS200_RST_PIN_PARALLEL8;
gpio_init(IPS200_D0_PIN_PARALLEL8, GPO, 0, PUSHPULL);
gpio_init(IPS200_D1_PIN_PARALLEL8, GPO, 0, PUSHPULL);
gpio_init(IPS200_D2_PIN_PARALLEL8, GPO, 0, PUSHPULL);
gpio_init(IPS200_D3_PIN_PARALLEL8, GPO, 0, PUSHPULL);
gpio_init(IPS200_D4_PIN_PARALLEL8, GPO, 0, PUSHPULL);
gpio_init(IPS200_D5_PIN_PARALLEL8, GPO, 0, PUSHPULL);
gpio_init(IPS200_D6_PIN_PARALLEL8, GPO, 0, PUSHPULL);
gpio_init(IPS200_D7_PIN_PARALLEL8, GPO, 0, PUSHPULL);
gpio_init(IPS200_BL_PIN_PARALLEL8, GPO, 0, PUSHPULL);
gpio_init(IPS200_CS_PIN_PARALLEL8, GPO, 0, PUSHPULL);
gpio_init(ips_rst_pin, GPO, 0, PUSHPULL);
gpio_init(IPS200_RS_PIN_PARALLEL8, GPO, 0, PUSHPULL);
gpio_init(IPS200_WR_PIN_PARALLEL8, GPO, 0, PUSHPULL);
gpio_init(IPS200_RD_PIN_PARALLEL8, GPO, 0, PUSHPULL);
}
IPS200_BL(1);
IPS200_RST(0);
systick_delay_ms(STM0, 5);
IPS200_RST(1);
systick_delay_ms(STM0, 5);
ips200_wr_reg(0x11);
systick_delay_ms(STM0, 120);
ips200_wr_reg(0x36);
if (IPS200_DISPLAY_DIR==0) ips200_wr_data(0x00);
else if (IPS200_DISPLAY_DIR==1) ips200_wr_data(0xC0);
else if (IPS200_DISPLAY_DIR==2) ips200_wr_data(0x70);
else ips200_wr_data(0xA0);
ips200_wr_reg(0x3A);
ips200_wr_data(0x05);
ips200_wr_reg(0xB2);
ips200_wr_data(0x0C);
ips200_wr_data(0x0C);
ips200_wr_data(0x00);
ips200_wr_data(0x33);
ips200_wr_data(0x33);
ips200_wr_reg(0xB7);
ips200_wr_data(0x35);
ips200_wr_reg(0xBB);
ips200_wr_data(0x29); //32 Vcom=1.35V
ips200_wr_reg(0xC2);
ips200_wr_data(0x01);
ips200_wr_reg(0xC3);
ips200_wr_data(0x19); //GVDD=4.8V
ips200_wr_reg(0xC4);
ips200_wr_data(0x20); //VDV, 0x20:0v
ips200_wr_reg(0xC5);
ips200_wr_data(0x1A);//VCOM Offset Set
ips200_wr_reg(0xC6);
ips200_wr_data(0x01F); //0x0F:60Hz
ips200_wr_reg(0xD0);
ips200_wr_data(0xA4);
ips200_wr_data(0xA1);
ips200_wr_reg(0xE0);
ips200_wr_data(0xD0);
ips200_wr_data(0x08);
ips200_wr_data(0x0E);
ips200_wr_data(0x09);
ips200_wr_data(0x09);
ips200_wr_data(0x05);
ips200_wr_data(0x31);
ips200_wr_data(0x33);
ips200_wr_data(0x48);
ips200_wr_data(0x17);
ips200_wr_data(0x14);
ips200_wr_data(0x15);
ips200_wr_data(0x31);
ips200_wr_data(0x34);
ips200_wr_reg(0xE1);
ips200_wr_data(0xD0);
ips200_wr_data(0x08);
ips200_wr_data(0x0E);
ips200_wr_data(0x09);
ips200_wr_data(0x09);
ips200_wr_data(0x15);
ips200_wr_data(0x31);
ips200_wr_data(0x33);
ips200_wr_data(0x48);
ips200_wr_data(0x17);
ips200_wr_data(0x14);
ips200_wr_data(0x15);
ips200_wr_data(0x31);
ips200_wr_data(0x34);
ips200_wr_reg(0x21);
ips200_wr_reg(0x29);
ips200_clear(IPS200_BGCOLOR); //<2F><>ʼ<EFBFBD><CABC>Ϊ<EFBFBD><CEAA><EFBFBD><EFBFBD>
}
//-------------------------------------------------------------------------------------------------------------------
// @brief Һ<><D2BA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// @param color <09><>ɫ<EFBFBD><C9AB><EFBFBD><EFBFBD>
// @return void
// @since v1.0
// Sample usage: ips200_clear(YELLOW);// ȫ<><C8AB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA>ɫ
//-------------------------------------------------------------------------------------------------------------------
void ips200_clear(uint16 color)
{
uint16 i,j;
ips200_address_set(0,0,IPS200_X_MAX-1,IPS200_Y_MAX-1);
for(i=0;i<IPS200_X_MAX;i++)
{
for (j=0;j<IPS200_Y_MAX;j++)
{
ips200_wr_data16(color);
}
}
}
//-------------------------------------------------------------------------------------------------------------------
// @brief Һ<><D2BA><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// @param x <20><><EFBFBD><EFBFBD>x<EFBFBD><78><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// @param y <20><><EFBFBD><EFBFBD>y<EFBFBD><79><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// @param dat <20><>Ҫ<EFBFBD><D2AA>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD>ɫ
// @return void
// @since v1.0
// Sample usage: ips200_drawpoint(0,0,RED); //<2F><><EFBFBD><EFBFBD>0,0<><30>һ<EFBFBD><D2BB><EFBFBD><EFBFBD>ɫ<EFBFBD>ĵ<EFBFBD>
//-------------------------------------------------------------------------------------------------------------------
void ips200_drawpoint(uint16 x,uint16 y,uint16 color)
{
ips200_address_set(x,y,x,y);
ips200_wr_data16(color);
}
//-------------------------------------------------------------------------------------------------------------------
// @brief Һ<><D2BA><EFBFBD><EFBFBD>ʾ<EFBFBD>ַ<EFBFBD>
// @param x <20><><EFBFBD><EFBFBD>x<EFBFBD><78><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Χ 0 - (IPS200_X_MAX-1)
// @param y <20><><EFBFBD><EFBFBD>y<EFBFBD><79><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Χ 0 - (IPS200_Y_MAX/16-1)
// @param dat <20><>Ҫ<EFBFBD><D2AA>ʾ<EFBFBD><CABE><EFBFBD>ַ<EFBFBD>
// @return void
// @since v1.0
// Sample usage: ips200_showchar(0,0,'x');//<2F><><EFBFBD><EFBFBD>0,0дһ<D0B4><D2BB><EFBFBD>ַ<EFBFBD>x
//-------------------------------------------------------------------------------------------------------------------
void ips200_showchar(uint16 x,uint16 y,const int8 dat)
{
uint8 i,j;
uint8 temp;
for(i=0; i<16; i++)
{
ips200_address_set(x,y+i,x+7,y+i);
temp = tft_ascii[(uint16)dat-32][i];//<2F><>32<33><32>Ϊ<EFBFBD><CEAA>ȡģ<C8A1>Ǵӿո<D3BF><D5B8><EFBFBD>ʼȡ<CABC><C8A1> <20>ո<EFBFBD><D5B8><EFBFBD>ascii<69><69><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>32
for(j=0; j<8; j++)
{
if(temp&0x01) ips200_wr_data16(IPS200_PENCOLOR);
else ips200_wr_data16(IPS200_BGCOLOR);
temp>>=1;
}
}
}
//-------------------------------------------------------------------------------------------------------------------
// @brief Һ<><D2BA><EFBFBD><EFBFBD>ʾ<EFBFBD>ַ<EFBFBD><D6B7><EFBFBD>
// @param x <20><><EFBFBD><EFBFBD>x<EFBFBD><78><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Χ 0 - (IPS200_X_MAX-1)
// @param y <20><><EFBFBD><EFBFBD>y<EFBFBD><79><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Χ 0 - (IPS200_Y_MAX/16-1)
// @param dat <20><>Ҫ<EFBFBD><D2AA>ʾ<EFBFBD><CABE><EFBFBD>ַ<EFBFBD><D6B7><EFBFBD>
// @return void
// @since v1.0
// Sample usage: ips200_showstr(0,0,"seekfree");
//-------------------------------------------------------------------------------------------------------------------
void ips200_showstr(uint16 x,uint16 y,const int8 dat[])
{
uint16 j;
j = 0;
while(dat[j] != '\0')
{
ips200_showchar(x+8*j,y*16,dat[j]);
j++;
}
}
//-------------------------------------------------------------------------------------------------------------------
// @brief Һ<><D2BA><EFBFBD><EFBFBD>ʾ<38>з<EFBFBD><D0B7><EFBFBD>
// @param x <20><><EFBFBD><EFBFBD>x<EFBFBD><78><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Χ 0 -<2D><>IPS200_X_MAX-1<><31>
// @param y <20><><EFBFBD><EFBFBD>y<EFBFBD><79><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Χ 0 -<2D><>IPS200_Y_MAX/16-1<><31>
// @param dat <20><>Ҫ<EFBFBD><D2AA>ʾ<EFBFBD>ı<EFBFBD><C4B1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>int8
// @return void
// @since v1.0
// Sample usage: ips200_showint8(0,0,x);//xΪint8<74><38><EFBFBD><EFBFBD>
//-------------------------------------------------------------------------------------------------------------------
void ips200_showint8(uint16 x,uint16 y,int8 dat)
{
uint8 a[3];
uint8 i;
if(dat<0)
{
ips200_showchar(x,y*16,'-');
dat = -dat;
}
else ips200_showchar(x,y*16,' ');
a[0] = dat/100;
a[1] = dat/10%10;
a[2] = dat%10;
i = 0;
while(i<3)
{
ips200_showchar(x+(8*(i+1)),y*16,'0' + a[i]);
i++;
}
}
//-------------------------------------------------------------------------------------------------------------------
// @brief Һ<><D2BA><EFBFBD><EFBFBD>ʾ<38>޷<EFBFBD><DEB7><EFBFBD>
// @param x <20><><EFBFBD><EFBFBD>x<EFBFBD><78><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Χ 0 -<2D><>IPS200_X_MAX-1<><31>
// @param y <20><><EFBFBD><EFBFBD>y<EFBFBD><79><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Χ 0 -<2D><>IPS200_Y_MAX/16-1<><31>
// @param dat <20><>Ҫ<EFBFBD><D2AA>ʾ<EFBFBD>ı<EFBFBD><C4B1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>uint8
// @return void
// @since v1.0
// Sample usage: ips200_showuint8(0,0,x);//xΪuint8<74><38><EFBFBD><EFBFBD>
//-------------------------------------------------------------------------------------------------------------------
void ips200_showuint8(uint16 x,uint16 y,uint8 dat)
{
uint8 a[3];
uint8 i;
a[0] = dat/100;
a[1] = dat/10%10;
a[2] = dat%10;
i = 0;
while(i<3)
{
ips200_showchar(x+(8*i),y*16,'0' + a[i]);
i++;
}
}
//-------------------------------------------------------------------------------------------------------------------
// @brief Һ<><D2BA><EFBFBD><EFBFBD>ʾ16λ<36>з<EFBFBD><D0B7><EFBFBD>
// @param x <20><><EFBFBD><EFBFBD>x<EFBFBD><78><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Χ 0 -<2D><>IPS200_X_MAX-1<><31>
// @param y <20><><EFBFBD><EFBFBD>y<EFBFBD><79><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Χ 0 -<2D><>IPS200_Y_MAX/16-1<><31>
// @param dat <20><>Ҫ<EFBFBD><D2AA>ʾ<EFBFBD>ı<EFBFBD><C4B1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>int16
// @return void
// @since v1.0
// Sample usage: ips200_showint16(0,0,x);//xΪint16<31><36><EFBFBD><EFBFBD>
//-------------------------------------------------------------------------------------------------------------------
void ips200_showint16(uint16 x,uint16 y,int16 dat)
{
uint8 a[5];
uint8 i;
if(dat<0)
{
ips200_showchar(x,y*16,'-');
dat = -dat;
}
else ips200_showchar(x,y*16,' ');
a[0] = dat/10000;
a[1] = dat/1000%10;
a[2] = dat/100%10;
a[3] = dat/10%10;
a[4] = dat%10;
i = 0;
while(i<5)
{
ips200_showchar(x+(8*(i+1)),y*16,'0' + a[i]);
i++;
}
}
//-------------------------------------------------------------------------------------------------------------------
// @brief Һ<><D2BA><EFBFBD><EFBFBD>ʾ16λ<36>޷<EFBFBD><DEB7><EFBFBD>
// @param x <20><><EFBFBD><EFBFBD>x<EFBFBD><78><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Χ 0 -<2D><>IPS200_X_MAX-1<><31>
// @param y <20><><EFBFBD><EFBFBD>y<EFBFBD><79><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Χ 0 -<2D><>IPS200_Y_MAX/16-1<><31>
// @param dat <20><>Ҫ<EFBFBD><D2AA>ʾ<EFBFBD>ı<EFBFBD><C4B1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>uint16
// @return void
// @since v1.0
// Sample usage: ips200_showuint16(0,0,x);//xΪuint16<31><36><EFBFBD><EFBFBD>
//-------------------------------------------------------------------------------------------------------------------
void ips200_showuint16(uint16 x,uint16 y,uint16 dat)
{
uint8 a[5];
uint8 i;
a[0] = dat/10000;
a[1] = dat/1000%10;
a[2] = dat/100%10;
a[3] = dat/10%10;
a[4] = dat%10;
i = 0;
while(i<5)
{
ips200_showchar(x+(8*i),y*16,'0' + a[i]);
i++;
}
}
//-------------------------------------------------------------------------------------------------------------------
// @brief Һ<><D2BA><EFBFBD><EFBFBD>ʾ32λ<32>з<EFBFBD><D0B7><EFBFBD><><C8A5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ч<EFBFBD><D0A7>0)
// @param x <20><><EFBFBD><EFBFBD>x<EFBFBD><78><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Χ 0 -<2D><>IPS200_X_MAX-1<><31>
// @param y <20><><EFBFBD><EFBFBD>y<EFBFBD><79><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Χ 0 -<2D><>IPS200_Y_MAX/16-1<><31>
// @param dat <20><>Ҫ<EFBFBD><D2AA>ʾ<EFBFBD>ı<EFBFBD><C4B1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>uint32
// @param num <20><>Ҫ<EFBFBD><D2AA>ʾ<EFBFBD><CABE>λ<EFBFBD><CEBB> <20><><EFBFBD><EFBFBD>10λ <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// @return void
// @since v1.0
// Sample usage: ips200_showint32(0,0,x,3);//x<><78><EFBFBD><EFBFBD>Ϊint32 uint16 int16 uint8 int8<74><38><EFBFBD><EFBFBD>
// Sample usage: <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾһ<CABE><D2BB> <20><>-<2D><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾһ<CABE><D2BB><EFBFBD>ո<EFBFBD>
//-------------------------------------------------------------------------------------------------------------------
void ips200_showint32(uint16 x,uint16 y,int dat,uint8 num)
{
int8 buff[34];
uint32 length;
if(10<num) num = 10;
num++;
if(0>dat) length = zf_sprintf(&buff[0],"%d",dat);//<2F><><EFBFBD><EFBFBD>
else
{
buff[0] = ' ';
length = zf_sprintf(&buff[1],"%d",dat);
length++;
}
while(length < num)
{
buff[length] = ' ';
length++;
}
buff[num] = '\0';
ips200_showstr(x, y, buff); //<2F><>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD>
}
//-------------------------------------------------------------------------------------------------------------------
// @brief Һ<><D2BA><EFBFBD><EFBFBD>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD><EFBFBD><EFBFBD><><C8A5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ч<EFBFBD><D0A7>0)
// @param x <20><><EFBFBD><EFBFBD>x<EFBFBD><78><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Χ 0 -<2D><>IPS200_X_MAX-1<><31>
// @param y <20><><EFBFBD><EFBFBD>y<EFBFBD><79><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Χ 0 -<2D><>IPS200_Y_MAX/16-1<><31>
// @param dat <20><>Ҫ<EFBFBD><D2AA>ʾ<EFBFBD>ı<EFBFBD><C4B1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>float<61><74>double
// @param num <20><><EFBFBD><EFBFBD>λ<EFBFBD><CEBB>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>10λ
// @param pointnum С<><D0A1>λ<EFBFBD><CEBB>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
// @return void
// @since v1.0
// Sample usage: ips_showfloat(0,0,x,2,3);//<2F><>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾС<><D0A1><EFBFBD><EFBFBD>ʾ<EFBFBD><CABE>λ
// @note <20>ر<EFBFBD>ע<EFBFBD><EFBFBD><E2B5B1><EFBFBD><EFBFBD>С<EFBFBD><D0A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾ<EFBFBD><CABE>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD>д<EFBFBD><D0B4><EFBFBD><EFBFBD>ֵ<EFBFBD><D6B5>һ<EFBFBD><D2BB><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD>
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڸ<EFBFBD><DAB8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȶ<EFBFBD>ʧ<EFBFBD><CAA7><EFBFBD><EFBFBD>µģ<C2B5><C4A3><EFBFBD><E2B2A2><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// <20>й<EFBFBD><D0B9><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E9A3AC><EFBFBD><EFBFBD><EFBFBD>аٶ<D0B0>ѧϰ <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȶ<EFBFBD>ʧ<EFBFBD><CAA7><EFBFBD>
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾһ<CABE><D2BB> <20><>-<2D><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾһ<CABE><D2BB><EFBFBD>ո<EFBFBD>
//-------------------------------------------------------------------------------------------------------------------
void ips200_showfloat(uint16 x,uint16 y,double dat,int8 num,int8 pointnum)
{
uint32 length;
int8 buff[34];
int8 start,end,point;
if(6<pointnum) pointnum = 6;
if(10<num) num = 10;
if(0>dat) length = zf_sprintf( &buff[0],"%f",dat);//<2F><><EFBFBD><EFBFBD>
else
{
length = zf_sprintf( &buff[1],"%f",dat);
length++;
}
point = (int8)(length - 7); //<2F><><EFBFBD><EFBFBD>С<EFBFBD><D0A1><EFBFBD><EFBFBD>λ<EFBFBD><CEBB>
start = point - num - 1; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʼλ
end = point + pointnum + 1; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>λ
while(0>start)//<2F><><EFBFBD><EFBFBD>λ<EFBFBD><CEBB><EFBFBD><EFBFBD> ĩβӦ<CEB2><D3A6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ո<EFBFBD>
{
buff[end] = ' ';
end++;
start++;
}
if(0>dat) buff[start] = '-';
else buff[start] = ' ';
buff[end] = '\0';
ips200_showstr(x, y, buff); //<2F><>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD>
}
//-------------------------------------------------------------------------------------------------------------------
// @brief Һ<><D2BA><EFBFBD><EFBFBD>ʾ<38>޷<EFBFBD><DEB7><EFBFBD>
// @param x <20><><EFBFBD><EFBFBD>x<EFBFBD><78><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Χ 0 -<2D><>IPS200_X_MAX-1<><31>
// @param y <20><><EFBFBD><EFBFBD>y<EFBFBD><79><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Χ 0 -<2D><>IPS200_Y_MAX/16-1<><31>
// @param w ͼ<><CDBC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// @param l ͼ<><CDBC><EFBFBD>߶<EFBFBD>
// @param *p ͼ<><CDBC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ַ
// @return void
// @since v1.0
// Sample usage: ips200_showimage(0,0,10,20,&image);//ͼ<><CDBC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>(0,0)<29><><EFBFBD><EFBFBD>10<31><30><EFBFBD><EFBFBD>20<32><30>
//-------------------------------------------------------------------------------------------------------------------
void ips200_showimage(uint16 x,uint16 y,uint16 w,uint16 l,const unsigned char *p)
{
int i;
unsigned char picH,picL;
ips200_address_set(x,y,x+w-1,y+l-1);
for(i=0;i<w*l;i++)
{
picL=*(p+i*2);
picH=*(p+i*2+1);
ips200_wr_data16(picH<<8|picL);
}
}
//-------------------------------------------------------------------------------------------------------------------
// @brief <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>(<28>Ҷ<EFBFBD><D2B6><EFBFBD><EFBFBD><EFBFBD>ͷ)Һ<><D2BA><EFBFBD><EFBFBD>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD>
// @param *p ͼ<><CDBC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ַ
// @param width ͼ<><CDBC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// @param height ͼ<><CDBC><EFBFBD>߶<EFBFBD>
// @return void
// @since v1.0
// Sample usage: ips200_displayimage032(mt9v03x_csi_image[0], MT9V03X_CSI_W, MT9V03X_CSI_H)//<2F><>ʾ<EFBFBD>Ҷ<EFBFBD><D2B6><EFBFBD><EFBFBD><EFBFBD>ͷ ͼ<><CDBC>
// @note ͼ<><CDBC><EFBFBD>Ŀ<EFBFBD><C4BF><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Һ<EFBFBD><D2BA><EFBFBD>Ŀ<EFBFBD><C4BF>ȣ<EFBFBD><C8A3><EFBFBD><EFBFBD>Զ<EFBFBD><D4B6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾȫ<CABE><C8AB>Ұ
//-------------------------------------------------------------------------------------------------------------------
void ips200_displayimage032(uint8 *p, uint16 width, uint16 height)
{
uint32 i,j;
uint16 color = 0;
uint16 temp = 0;
uint16 coord_x = 0;
uint16 coord_y = 0;
coord_x = width>IPS200_X_MAX?IPS200_X_MAX:width;
coord_y = height>IPS200_Y_MAX?IPS200_Y_MAX:height;
ips200_address_set(0,0,coord_x-1,coord_y-1);
for(j=0;j<coord_y;j++)
{
for(i=0;i<coord_x;i++)
{
temp = *(p+j*width+i*width/coord_x);//<2F><>ȡ<EFBFBD><C8A1><EFBFBD>ص<EFBFBD>
color=(0x001f&((temp)>>3))<<11;
color=color|(((0x003f)&((temp)>>2))<<5);
color=color|(0x001f&((temp)>>3));
ips200_wr_data16(color);
}
}
}
//-------------------------------------------------------------------------------------------------------------------
// @brief <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>(<28>Ҷ<EFBFBD><D2B6><EFBFBD><EFBFBD><EFBFBD>ͷ)Һ<><D2BA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD>
// @param *p ͼ<><CDBC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ַ
// @param width ͼ<><CDBC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// @param height ͼ<><CDBC><EFBFBD>߶<EFBFBD>
// @param dis_width ͼ<><CDBC><EFBFBD><EFBFBD>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD> 0 -<2D><>IPS200_X_MAX-1<><31>
// @param dis_height ͼ<><CDBC><EFBFBD><EFBFBD>ʾ<EFBFBD>߶<EFBFBD> 0 -<2D><>IPS200_Y_MAX-1<><31>
// @return void
// @since v1.0
// Sample usage: ips200_displayimage032_zoom(mt9v03x_csi_image[0], MT9V03X_CSI_W, MT9V03X_CSI_H, MT9V03X_CSI_W, MT9V03X_CSI_H)//<2F><>ʾ<EFBFBD>Ҷ<EFBFBD><D2B6><EFBFBD><EFBFBD><EFBFBD>ͷ ͼ<><CDBC>
// @note ͼ<><CDBC><EFBFBD>Ŀ<EFBFBD><C4BF><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Һ<EFBFBD><D2BA><EFBFBD>Ŀ<EFBFBD><C4BF>ȣ<EFBFBD><C8A3><EFBFBD><EFBFBD>Զ<EFBFBD><D4B6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾȫ<CABE><C8AB>Ұ
//-------------------------------------------------------------------------------------------------------------------
void ips200_displayimage032_zoom(uint8 *p, uint16 width, uint16 height, uint16 dis_width, uint16 dis_height)
{
uint32 i,j;
uint16 color = 0;
uint16 temp = 0;
ips200_address_set(0,0,dis_width-1,dis_height-1);//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD>
for(j=0;j<dis_height;j++)
{
for(i=0;i<dis_width;i++)
{
temp = *(p+(j*height/dis_height)*width+i*width/dis_width);//<2F><>ȡ<EFBFBD><C8A1><EFBFBD>ص<EFBFBD>
color=(0x001f&((temp)>>3))<<11;
color=color|(((0x003f)&((temp)>>2))<<5);
color=color|(0x001f&((temp)>>3));
ips200_wr_data16(color);
}
}
}
//-------------------------------------------------------------------------------------------------------------------
// @brief <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>(<28>Ҷ<EFBFBD><D2B6><EFBFBD><EFBFBD><EFBFBD>ͷ)Һ<><D2BA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD>
// @param *p ͼ<><CDBC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ַ
// @param width ͼ<><CDBC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// @param height ͼ<><CDBC><EFBFBD>߶<EFBFBD>
// @param start_x <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD><EFBFBD><EFBFBD>x<EFBFBD><78><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// @param start_y <09><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD><EFBFBD><EFBFBD>y<EFBFBD><79><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// @param dis_width ͼ<><CDBC><EFBFBD><EFBFBD>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD> 1 -<2D><>TFT_X_MAX<41><58>
// @param dis_height ͼ<><CDBC><EFBFBD><EFBFBD>ʾ<EFBFBD>߶<EFBFBD> 1 -<2D><>TFT_Y_MAX<41><58>
// @return void
// @since v1.0
// Sample usage: ips200_displayimage032_zoom1(mt9v03x_csi_image[0], MT9V03X_CSI_W, MT9V03X_CSI_H, 0, 0, MT9V03X_CSI_W, MT9V03X_CSI_H)//<2F><>ʾ<EFBFBD>Ҷ<EFBFBD><D2B6><EFBFBD><EFBFBD><EFBFBD>ͷ ͼ<><CDBC>
//-------------------------------------------------------------------------------------------------------------------
void ips200_displayimage032_zoom1(uint8 *p, uint16 width, uint16 height, uint16 start_x, uint16 start_y, uint16 dis_width, uint16 dis_height)
{
uint32 i,j;
uint16 color = 0;
uint16 temp = 0;
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>õIJ<C3B5><C4B2><EFBFBD><EFBFBD>Ƿ񳬹<C7B7><F1B3ACB9><EFBFBD>Ļ<EFBFBD>ķֱ<C4B7><D6B1><EFBFBD>
if((start_x+dis_width)>IPS200_X_MAX) ZF_ASSERT(0);
if((start_y+dis_height)>IPS200_Y_MAX) ZF_ASSERT(0);
ips200_address_set(start_x,start_y,start_x+dis_width-1,start_y+dis_height-1);//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD>
for(j=0;j<dis_height;j++)
{
for(i=0;i<dis_width;i++)
{
temp = *(p+(j*height/dis_height)*width+i*width/dis_width);//<2F><>ȡ<EFBFBD><C8A1><EFBFBD>ص<EFBFBD>
color=(0x001f&((temp)>>3))<<11;
color=color|(((0x003f)&((temp)>>2))<<5);
color=color|(0x001f&((temp)>>3));
ips200_wr_data16(color);
}
}
}
//-------------------------------------------------------------------------------------------------------------------
// @brief <20><>ͫ(<28><>ɫ<EFBFBD><C9AB><EFBFBD><EFBFBD>ͷ)Һ<><D2BA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD>
// @param *p ͼ<><CDBC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ַ
// @param width ͼ<><CDBC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// @param height ͼ<><CDBC><EFBFBD>߶<EFBFBD>
// @param dis_width ͼ<><CDBC><EFBFBD><EFBFBD>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD> 0 -<2D><>TFT_X_MAX-1<><31>
// @param dis_height ͼ<><CDBC><EFBFBD><EFBFBD>ʾ<EFBFBD>߶<EFBFBD> 0 -<2D><>TFT_Y_MAX-1<><31>
// @return void
// @since v1.0
// Sample usage: ips200_displayimage8660_zoom(scc8660_csi_image[0], SCC8660_CSI_PIC_W, SCC8660_CSI_PIC_H, 320, 240);//<2F><>ʾ<EFBFBD><CABE>ɫ<EFBFBD><C9AB><EFBFBD><EFBFBD>ͷ ͼ<><CDBC>
// @note <20>˺<EFBFBD><CBBA><EFBFBD><EFBFBD><EFBFBD>֧<EFBFBD><D6A7><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͷ<EFBFBD><CDB7><EFBFBD>ݸ<EFBFBD>ʽ(SCC8660_DATA_FORMAT)<29><><EFBFBD><EFBFBD>Ϊ0ʱ<30><CAB1><EFBFBD><EFBFBD>ʾ<EFBFBD><CABE>ɫͼ<C9AB><CDBC>
// ͼ<><CDBC><EFBFBD>Ŀ<EFBFBD><C4BF><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Һ<EFBFBD><D2BA><EFBFBD>Ŀ<EFBFBD><C4BF>ȣ<EFBFBD><C8A3><EFBFBD><EFBFBD>Զ<EFBFBD><D4B6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾȫ<CABE><C8AB>Ұ
//-------------------------------------------------------------------------------------------------------------------
void ips200_displayimage8660_zoom(uint16 *p, uint16 width, uint16 height, uint16 dis_width, uint16 dis_height)
{
uint32 i,j;
uint16 color = 0;
ips200_address_set(0,0,dis_width-1,dis_height-1);//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD>
for(j=0;j<dis_height;j++)
{
for(i=0;i<dis_width;i++)
{
color = *(p+(j*height/dis_height)*width+i*width/dis_width);//<2F><>ȡ<EFBFBD><C8A1><EFBFBD>ص<EFBFBD>
color = ((color&0xff)<<8) | (color>>8);
ips200_wr_data16(color);
}
}
}
//-------------------------------------------------------------------------------------------------------------------
// @brief <20><>ͫ(<28><>ɫ<EFBFBD><C9AB><EFBFBD><EFBFBD>ͷ)Һ<><D2BA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD>
// @param *p ͼ<><CDBC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ַ
// @param width ͼ<><CDBC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// @param height ͼ<><CDBC><EFBFBD>߶<EFBFBD>
// @param start_x <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD><EFBFBD><EFBFBD>x<EFBFBD><78><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// @param start_y <09><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD><EFBFBD><EFBFBD>y<EFBFBD><79><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// @param dis_width ͼ<><CDBC><EFBFBD><EFBFBD>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD> 1 -<2D><>TFT_X_MAX<41><58>
// @param dis_height ͼ<><CDBC><EFBFBD><EFBFBD>ʾ<EFBFBD>߶<EFBFBD> 1 -<2D><>TFT_Y_MAX<41><58>
// @return void
// @since v1.0
// Sample usage: ips200_displayimage8660_zoom1(scc8660_csi_image[0], SCC8660_CSI_PIC_W, SCC8660_CSI_PIC_H, 0, 0, 320, 240);
//-------------------------------------------------------------------------------------------------------------------
void ips200_displayimage8660_zoom1(uint16 *p, uint16 width, uint16 height, uint16 start_x, uint16 start_y, uint16 dis_width, uint16 dis_height)
{
uint32 i,j;
uint16 color = 0;
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>õIJ<C3B5><C4B2><EFBFBD><EFBFBD>Ƿ񳬹<C7B7><F1B3ACB9><EFBFBD>Ļ<EFBFBD>ķֱ<C4B7><D6B1><EFBFBD>
if((start_x+dis_width)>IPS200_X_MAX) ZF_ASSERT(0);
if((start_y+dis_height)>IPS200_Y_MAX) ZF_ASSERT(0);
ips200_address_set(start_x,start_y,start_x+dis_width-1,start_y+dis_height-1);//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD>
for(j=0;j<dis_height;j++)
{
for(i=0;i<dis_width;i++)
{
color = *(p+(j*height/dis_height)*width+i*width/dis_width);//<2F><>ȡ<EFBFBD><C8A1><EFBFBD>ص<EFBFBD>
color = ((color&0xff)<<8) | (color>>8);
ips200_wr_data16(color);
}
}
}
//-------------------------------------------------------------------------------------------------------------------
// @brief <20><>ͫ(<28><>ɫ<EFBFBD><C9AB><EFBFBD><EFBFBD>ͷ)Һ<><D2BA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD>(<28><>ʾ<EFBFBD>Ҷ<EFBFBD>)
// @param *p ͼ<><CDBC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ַ
// @param width ͼ<><CDBC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// @param height ͼ<><CDBC><EFBFBD>߶<EFBFBD>
// @param dis_width ͼ<><CDBC><EFBFBD><EFBFBD>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD> 0 -<2D><>TFT_X_MAX-1<><31>
// @param dis_height ͼ<><CDBC><EFBFBD><EFBFBD>ʾ<EFBFBD>߶<EFBFBD> 0 -<2D><>TFT_Y_MAX-1<><31>
// @return void
// @since v1.0
// Sample usage: ips200_displayimage8660_grayscale_zoom(scc8660_csi_image[0], SCC8660_CSI_PIC_W, SCC8660_CSI_PIC_H, 320, 240)//<2F><>ʾ<EFBFBD><CABE>ɫ<EFBFBD><C9AB><EFBFBD><EFBFBD>ͷͼ<CDB7><CDBC> <20><>ʾY<CABE><59><EFBFBD><EFBFBD>
// @note <20>˺<EFBFBD><CBBA><EFBFBD><EFBFBD><EFBFBD>֧<EFBFBD><D6A7><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͷ<EFBFBD><CDB7><EFBFBD>ݸ<EFBFBD>ʽ(SCC8660_DATA_FORMAT)<29><><EFBFBD><EFBFBD>Ϊ2ʱ<32><CAB1><EFBFBD><EFBFBD>ȡY<C8A1><59><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾ<EFBFBD>Ҷ<EFBFBD>ͼ<EFBFBD><CDBC>
// ͼ<><CDBC><EFBFBD>Ŀ<EFBFBD><C4BF><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Һ<EFBFBD><D2BA><EFBFBD>Ŀ<EFBFBD><C4BF>ȣ<EFBFBD><C8A3><EFBFBD><EFBFBD>Զ<EFBFBD><D4B6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾȫ<CABE><C8AB>Ұ
//-------------------------------------------------------------------------------------------------------------------
void ips200_displayimage8660_grayscale_zoom(uint16 *p, uint16 width, uint16 height, uint16 dis_width, uint16 dis_height)
{
uint32 i,j;
uint16 color = 0;
uint16 temp = 0;
ips200_address_set(0,0,dis_width-1,dis_height-1);//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD>
for(j=0;j<dis_height;j++)
{
for(i=0;i<dis_width;i++)
{
temp = *(p+(j*height/dis_height)*width+i*width/dis_width);//<2F><>ȡ<EFBFBD><C8A1><EFBFBD>ص<EFBFBD>
temp = temp&0xff;
color=(0x001f&((temp)>>3))<<11;
color=color|(((0x003f)&((temp)>>2))<<5);
color=color|(0x001f&((temp)>>3));
ips200_wr_data16(color);
}
}
}
//-------------------------------------------------------------------------------------------------------------------
// @brief С<><D0A1><EFBFBD><EFBFBD>(<28><>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͷ)Һ<><D2BA><EFBFBD><EFBFBD>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD>
// @param *p ͼ<><CDBC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ַ
// @param width ͼ<><CDBC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// @param height ͼ<><CDBC><EFBFBD>߶<EFBFBD>
// @return void
// @since v1.0
// @note ͼ<><CDBC><EFBFBD>ֱ<EFBFBD><D6B1><EFBFBD><EFBFBD><EFBFBD>Ҫ<EFBFBD><D2AA><EFBFBD><EFBFBD><EFBFBD><EFBFBD>120(<28><>)*160(<28><>)<29><><EFBFBD><EFBFBD>
//-------------------------------------------------------------------------------------------------------------------
void ips200_displayimage7725(uint8 *p, uint16 width, uint16 height)
{
int i,j;
uint16 temp = 0;
ips200_address_set(0,0,width-1,height-1);
for(i=0;i<height * (width/8);i++)
{
temp = *p;
p++;
for(j=0; j<8; j++)
{
if( (temp<<j)&0x80 ) ips200_wr_data16(RGB565_WHITE);
else ips200_wr_data16(RGB565_BLACK);
}
}
}
//-------------------------------------------------------------------------------------------------------------------
// @brief <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾ
// @param x <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> 0-<2D><>IPS200_X_MAX-1<><31>
// @param y <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> 0-<2D><>IPS200_Y_MAX-1<><31>
// @param size ȡģ<C8A1><C4A3>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD>õĺ<C3B5><C4BA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>С<EFBFBD><D0A1>Ҳ<EFBFBD><D2B2><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ռ<EFBFBD>õĵ<C3B5><C4B5>󳤿<EFBFBD>Ϊ<EFBFBD><CEAA><EFBFBD>ٸ<EFBFBD><D9B8>㣬ȡģ<C8A1><C4A3>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD>Ҫ<EFBFBD><D2AA><EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD>ġ<EFBFBD>
// @param *p <20><>Ҫ<EFBFBD><D2AA>ʾ<EFBFBD>ĺ<EFBFBD><C4BA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// @param number <20><>Ҫ<EFBFBD><D2AA>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD>λ
// @param color <20><>ʾ<EFBFBD><CABE>ɫ
// @return void
// @since v1.0
// Sample usage: ips200_display_chinese(0,0,16,chinese_test[0],4,RED);//<2F><>ʾfont<6E>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ʾ<><CABE>
// @Note ʹ<><CAB9>PCtoLCD2002<30><32><EFBFBD><EFBFBD>ȡģ <20><><EFBFBD><EFBFBD><EBA1A2><EFBFBD><EFBFBD>ʽ<EFBFBD><CABD>˳<EFBFBD><CBB3> 16*16
//-------------------------------------------------------------------------------------------------------------------
void ips200_display_chinese(uint16 x, uint16 y, uint8 size, const uint8 *p, uint8 number, uint16 color)
{
int i, j, k;
uint8 temp, temp1, temp2;
const uint8 *p_data;
temp2 = size/8;
ips200_address_set(x,y,number*size-1+x,y+size-1);
for(i=0;i<size;i++)
{
temp1 = number;
p_data = p+i*temp2;
while(temp1--)
{
for(k=0;k<temp2;k++)
{
for(j=8;j>0;j--)
{
temp = (*p_data>>(j-1)) & 0x01;
if(temp) ips200_wr_data16(color);
else ips200_wr_data16(IPS200_BGCOLOR);
}
p_data++;
}
p_data = p_data - temp2 + temp2*size;
}
}
}

View File

@@ -1,199 +0,0 @@
/*/*********************************************************************************************************************
* COPYRIGHT NOTICE
* Copyright (c) 2020,<2C><><EFBFBD>ɿƼ<C9BF>
* All rights reserved.
* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>QQȺ<51><C8BA><EFBFBD><EFBFBD>Ⱥ<EFBFBD><C8BA>824575535
*
* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݰ<EFBFBD>Ȩ<EFBFBD><C8A8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɿƼ<C9BF><C6BC><EFBFBD><EFBFBD>У<EFBFBD>δ<EFBFBD><CEB4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ҵ<EFBFBD><D2B5>;<EFBFBD><CDBE>
* <20><>ӭ<EFBFBD><D3AD>λʹ<CEBB>ò<EFBFBD><C3B2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>޸<EFBFBD><DEB8><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EBB1A3><EFBFBD><EFBFBD><EFBFBD>ɿƼ<C9BF><C6BC>İ<EFBFBD>Ȩ<EFBFBD><C8A8><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
*
* @file 2.0<EFBFBD><EFBFBD>IPS<EFBFBD><EFBFBD>Ļ
* @company <09>ɶ<EFBFBD><C9B6><EFBFBD><EFBFBD>ɿƼ<C9BF><C6BC><EFBFBD><EFBFBD>޹<EFBFBD>˾
* @author <09><><EFBFBD>ɿƼ<C9BF>(QQ3184284598)
* @version <09>鿴doc<6F><63>version<6F>ļ<EFBFBD> <20>汾˵<E6B1BE><CBB5>
* @Software ADS v1.5.2
* @Target core TC264
* @Taobao https://seekfree.taobao.com/
* @date 2020-05-07
* @note
<20><><EFBFBD>߶<EFBFBD><DFB6>
------------------------------------
* ģ<><C4A3><EFBFBD>ܽ<EFBFBD> <20><>Ƭ<EFBFBD><C6AC><EFBFBD>ܽ<EFBFBD>
* // ˫<><CBAB><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> Ӳ<><D3B2><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* RD <20>鿴 SEEKFREE_IPS200.h <20><> IPS200_RD_PIN_PARALLEL8 <20><EFBFBD><EAB6A8>
* WR <20>鿴 SEEKFREE_IPS200.h <20><> IPS200_WR_PIN_PARALLEL8 <20><EFBFBD><EAB6A8>
* RS <20>鿴 SEEKFREE_IPS200.h <20><> IPS200_RS_PIN_PARALLEL8 <20><EFBFBD><EAB6A8>
* RST <20>鿴 SEEKFREE_IPS200.h <20><> IPS200_RST_PIN_PARALLEL8 <20><EFBFBD><EAB6A8>
* CS <20>鿴 SEEKFREE_IPS200.h <20><> IPS200_CS_PIN_PARALLEL8 <20><EFBFBD><EAB6A8>
* BL <20>鿴 SEEKFREE_IPS200.h <20><> IPS200_BL_PIN_PARALLEL8 <20><EFBFBD><EAB6A8>
* D0-D7 <20>鿴 SEEKFREE_IPS200.h <20><> IPS200_Dx_PIN_PARALLEL8 <20><EFBFBD><EAB6A8>
* // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> SPI <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> Ӳ<><D3B2><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* SCL <20>鿴 SEEKFREE_IPS200.h <20><> IPS200_SCL_PIN_SPI <20><EFBFBD><EAB6A8>
* SDA <20>鿴 SEEKFREE_IPS200.h <20><> IPS200_SDA_PIN_SPI <20><EFBFBD><EAB6A8>
* RST <20>鿴 SEEKFREE_IPS200.h <20><> IPS200_RST_PIN_SPI <20><EFBFBD><EAB6A8>
* DC <20>鿴 SEEKFREE_IPS200.h <20><> IPS200_DC_PIN_SPI <20><EFBFBD><EAB6A8>
* CS <20>鿴 SEEKFREE_IPS200.h <20><> IPS200_CS_PIN_SPI <20><EFBFBD><EAB6A8>
* BL <20>鿴 SEEKFREE_IPS200.h <20><> IPS200_BL_PIN_SPI <20><EFBFBD><EAB6A8>
* <20><>Դ<EFBFBD><D4B4><EFBFBD><EFBFBD>
* VCC 3.3V<EFBFBD><EFBFBD>Դ
* GND <20><>Դ<EFBFBD><D4B4>
* <20><><EFBFBD><EFBFBD><EFBFBD>ֱ<EFBFBD><D6B1><EFBFBD> 320 * 240
* ------------------------------------
********************************************************************************************************************/
#ifndef _SEEKFREE_IPS200_H
#define _SEEKFREE_IPS200_H
#include "common.h"
#include "stdlib.h"
#include "string.h"
#include "stdio.h"
#include "zf_stm_systick.h"
#include "zf_gpio.h"
#include "zf_assert.h"
#include "SEEKFREE_PRINTF.h"
#include "zf_spi.h"
#include "SEEKFREE_FUN.h"
#include "SEEKFREE_FONT.h"
//-------<2D><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɫ<EFBFBD><C9AB>SEEKFREE_FONT.h<>ļ<EFBFBD><C4BC>ж<EFBFBD><D0B6><EFBFBD>----------
//#define RED 0xF800 //<2F><>ɫ
//#define BLUE 0x001F //<2F><>ɫ
//#define YELLOW 0xFFE0 //<2F><>ɫ
//#define GREEN 0x07E0 //<2F><>ɫ
//#define WHITE 0xFFFF //<2F><>ɫ
//#define BLACK 0x0000 //<2F><>ɫ
//#define GRAY 0X8430 //<2F><>ɫ
//#define BROWN 0XBC40 //<2F><>ɫ
//#define PURPLE 0XF81F //<2F><>ɫ
//#define PINK 0XFE19 //<2F><>ɫ
#define IPS200_BGCOLOR RGB565_WHITE //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɫ
#define IPS200_PENCOLOR RGB565_RED //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɫ
// <20><><EFBFBD><EFBFBD>ʹ<EFBFBD>õ<EFBFBD><C3B5>ǵ<EFBFBD><C7B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ļ SPI <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>޸<EFBFBD>
#define IPS200_SPIN SPI_2 //<2F><><EFBFBD><EFBFBD>ʹ<EFBFBD>õ<EFBFBD>SPI<50><49>
#define IPS200_SCL_PIN_SPI SPI2_SCLK_P15_3 //<2F><><EFBFBD><EFBFBD>SPI_SCK<43><4B><EFBFBD><EFBFBD>
#define IPS200_SDA_PIN_SPI SPI2_MOSI_P15_5 //<2F><><EFBFBD><EFBFBD>SPI_MOSI<53><49><EFBFBD><EFBFBD>
#define IPS200_SDA_IN_PIN_SPI SPI2_MISO_P15_4 //<2F><><EFBFBD><EFBFBD>SPI_MISO<53><4F><EFBFBD><EFBFBD> IPSû<53><C3BB>MISO<53><4F><EFBFBD>ţ<EFBFBD><C5A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ȼ<EFBFBD><C8BB>Ҫ<EFBFBD><D2AA><EFBFBD><EFBFBD><E5A3AC>spi<70>ij<EFBFBD>ʼ<EFBFBD><CABC>ʱ<EFBFBD><CAB1>Ҫʹ<D2AA><CAB9>
#define IPS200_CS_PIN_SPI SPI2_CS0_P15_2 //<2F><><EFBFBD><EFBFBD>SPI_CS<43><53><EFBFBD><EFBFBD>
// <20><><EFBFBD><EFBFBD>ʹ<EFBFBD>õ<EFBFBD><C3B5>ǵ<EFBFBD><C7B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ļ SPI <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>޸<EFBFBD>
#define IPS200_RST_PIN_SPI P15_1 // Һ<><D2BA><EFBFBD><EFBFBD>λ<EFBFBD><CEBB><EFBFBD>Ŷ<EFBFBD><C5B6><EFBFBD>
#define IPS200_DC_PIN_SPI P15_0
#define IPS200_BL_PIN_SPI P15_4
//<2F><><EFBFBD><EFBFBD>ʹ<EFBFBD>õ<EFBFBD><C3B5><EFBFBD>˫<EFBFBD><CBAB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ļ <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>޸<EFBFBD>
//<2F><><EFBFBD><EFBFBD>ֻ<EFBFBD><D6BB>ѡ<EFBFBD><D1A1>B C D<><44><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>˿<EFBFBD><CBBF>е<EFBFBD><D0B5><EFBFBD><EFBFBD>ţ<EFBFBD><C5A3><EFBFBD><EFBFBD><EFBFBD>ʹ<EFBFBD>ÿ<EFBFBD><C3BF><EFBFBD>GPIO<49><4F><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾ<EFBFBD>ٶ<EFBFBD>
#define IPS200_RD_PIN_PARALLEL8 P15_3
#define IPS200_WR_PIN_PARALLEL8 P15_5
#define IPS200_RS_PIN_PARALLEL8 P15_1
#define IPS200_RST_PIN_PARALLEL8 P15_0
#define IPS200_CS_PIN_PARALLEL8 P15_2
#define IPS200_BL_PIN_PARALLEL8 P15_4
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>޸<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ļ<EFBFBD><C4BB>˫<EFBFBD><CBAB><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>õõ<C3B5>
//D0-D3<44>ĸ<EFBFBD><C4B8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ű<EFBFBD><C5B1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>C0-C3,C1-C4<43>ȵȣ<C8B5>
//D4-D7<44>ĸ<EFBFBD><C4B8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ű<EFBFBD><C5B1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>B0-B3,B1-B4<42>ȵȡ<C8B5>
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ӵ<EFBFBD><D3B5><EFBFBD>ͬ<EFBFBD>˿ڵ<CBBF><DAB5><EFBFBD>˼<EFBFBD><CBBC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ļ<EFBFBD><C4BB>D0-D3<44><33>C1-C4<43><34><EFBFBD>ӣ<EFBFBD>D4-D7<44><37>B2-B5<42><35><EFBFBD>ӡ<EFBFBD>
//<2F>л<EFBFBD><D0BB><EFBFBD><EFBFBD>ź<EFBFBD>ע<EFBFBD><D7A2><EFBFBD>޸<EFBFBD>IPS200_DATA_PORT1<54><31>IPS200_DATA_PORT2<54><EFBFBD><EAB6A8>
#define IPS200_D0_PIN_PARALLEL8 P11_9
#define IPS200_D1_PIN_PARALLEL8 P11_10
#define IPS200_D2_PIN_PARALLEL8 P11_11
#define IPS200_D3_PIN_PARALLEL8 P11_12
#define IPS200_D4_PIN_PARALLEL8 P13_0
#define IPS200_D5_PIN_PARALLEL8 P13_1
#define IPS200_D6_PIN_PARALLEL8 P13_2
#define IPS200_D7_PIN_PARALLEL8 P13_3
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݶ˿<DDB6><CBBF><EFBFBD><EFBFBD><EFBFBD>PORT<52><54><EFBFBD>л<EFBFBD><D0BB><EFBFBD><EFBFBD>ź<EFBFBD><C5BA><EFBFBD><EFBFBD>ظ<EFBFBD><D8B8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>PORT<52><54><EFBFBD>и<EFBFBD><D0B8><EFBFBD>
#define IPS200_DATA_PORT1 3 //0<><30>P00<30>˿<EFBFBD> 1<><31>P02<30>˿<EFBFBD> 2<><32>P10<31>˿<EFBFBD> 3<><33>P11<31>˿<EFBFBD> 4<><34>P13<31>˿<EFBFBD> 5<><35>P14<31>˿<EFBFBD> 6<><36>P15<31>˿<EFBFBD> 7<><37>P20<32>˿<EFBFBD> 8<><38>P21<32>˿<EFBFBD> 9<><39>P22<32>˿<EFBFBD> 10<31><30>P23<32>˿<EFBFBD> 11<31><31>P32<33>˿<EFBFBD> 12<31><32>P33<33>˿<EFBFBD>
#define IPS200_DATAPORT1 (((Ifx_P *)IfxPort_cfg_indexMap[IPS200_DATA_PORT1].module)->OUT.U) //<2F><EFBFBD><EAB6A8><EFBFBD><EFBFBD><EFBFBD>ݿ<EFBFBD>GPIO<49><4F><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ĵ<EFBFBD><C4B4><EFBFBD>
#define DATA_START_NUM1 (IPS200_D0_PIN_PARALLEL8&0x1f) //<2F><EFBFBD><EAB6A8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ŵ<EFBFBD><C5B5><EFBFBD>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD>
#define IPS200_DATA_PORT2 4 //0<><30>P00<30>˿<EFBFBD> 1<><31>P02<30>˿<EFBFBD> 2<><32>P10<31>˿<EFBFBD> 3<><33>P11<31>˿<EFBFBD> 4<><34>P13<31>˿<EFBFBD> 5<><35>P14<31>˿<EFBFBD> 6<><36>P15<31>˿<EFBFBD> 7<><37>P20<32>˿<EFBFBD> 8<><38>P21<32>˿<EFBFBD> 9<><39>P22<32>˿<EFBFBD> 10<31><30>P23<32>˿<EFBFBD> 11<31><31>P32<33>˿<EFBFBD> 12<31><32>P33<33>˿<EFBFBD>
#define IPS200_DATAPORT2 (((Ifx_P *)IfxPort_cfg_indexMap[IPS200_DATA_PORT2].module)->OUT.U) //<2F><EFBFBD><EAB6A8><EFBFBD><EFBFBD><EFBFBD>ݿ<EFBFBD>GPIO<49><4F><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ĵ<EFBFBD><C4B4><EFBFBD>
#define DATA_START_NUM2 (IPS200_D4_PIN_PARALLEL8&0x1f) //<2F><EFBFBD><EAB6A8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ŵ<EFBFBD><C5B5><EFBFBD>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD>
#define IPS200_BL(x) gpio_set(IPS200_BL_PIN_PARALLEL8,x)
#define IPS200_CS(x) gpio_set(IPS200_CS_PIN_PARALLEL8,x)
#define IPS200_RD(x) gpio_set(IPS200_RD_PIN_PARALLEL8,x)
#define IPS200_WR(x) gpio_set(IPS200_WR_PIN_PARALLEL8,x)
#define IPS200_RS(x) gpio_set(IPS200_RS_PIN_PARALLEL8,x)
#define IPS200_RST(x) gpio_set(ips_rst_pin,x)
#define IPS200_DC(x) gpio_set(IPS200_DC_PIN_SPI,x)
#define IPS200_W 240
#define IPS200_H 320
typedef enum
{
IPS200_TYPE_SPI, // SPI <20><><EFBFBD><EFBFBD>
IPS200_TYPE_PARALLEL8, // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
}ips200_type_enum;
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD>
//0 <20><><EFBFBD><EFBFBD>ģʽ
//1 <20><><EFBFBD><EFBFBD>ģʽ <20><>ת180<38><30>
//2 <20><><EFBFBD><EFBFBD>ģʽ
//3 <20><><EFBFBD><EFBFBD>ģʽ <20><>ת180<38><30>
#define IPS200_DISPLAY_DIR 0
#if (0==IPS200_DISPLAY_DIR || 1==IPS200_DISPLAY_DIR)
#define IPS200_X_MAX IPS200_W //Һ<><D2BA>X<EFBFBD><58><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
#define IPS200_Y_MAX IPS200_H //Һ<><D2BA>Y<EFBFBD><59><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
#elif (2==IPS200_DISPLAY_DIR || 3==IPS200_DISPLAY_DIR)
#define IPS200_X_MAX IPS200_H //Һ<><D2BA>X<EFBFBD><58><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
#define IPS200_Y_MAX IPS200_W //Һ<><D2BA>Y<EFBFBD><59><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
#else
#error "IPS200_DISPLAY_DIR <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>"
#endif
void ips200_init(ips200_type_enum type_select); //<2F><>ʼ<EFBFBD><CABC>Ӳ<EFBFBD><D3B2>
void ips200_w_data(uint8 dat);
void ips200_wr_reg(uint8 com);
void ips200_wr_data(uint8 dat);
void ips200_wr_data16(uint16 dat);
void ips200_w_reg(uint8 com,uint8 dat);
void ips200_address_set(uint16 x1,uint16 y1,uint16 x2,uint16 y2);
void ips200_clear(uint16 color);
void ips200_drawpoint(uint16 x,uint16 y,uint16 color);
void ips200_showchar(uint16 x,uint16 y,const int8 dat);
void ips200_showstr(uint16 x,uint16 y,const int8 dat[]);
void ips200_showint8(uint16 x,uint16 y,int8 dat);
void ips200_showuint8(uint16 x,uint16 y,uint8 dat);
void ips200_showint16(uint16 x,uint16 y,int16 dat);
void ips200_showuint16(uint16 x,uint16 y,uint16 dat);
void ips200_showint32(uint16 x,uint16 y,int dat,uint8 num);
void ips200_showfloat(uint16 x,uint16 y,double dat,int8 num,int8 pointnum);
void ips200_showimage(uint16 x,uint16 y,uint16 w,uint16 l,const unsigned char *p);
void ips200_displayimage032(uint8 *p, uint16 width, uint16 height);
void ips200_displayimage032_zoom(uint8 *p, uint16 width, uint16 height, uint16 dis_width, uint16 dis_height);
void ips200_displayimage032_zoom1(uint8 *p, uint16 width, uint16 height, uint16 start_x, uint16 start_y, uint16 dis_width, uint16 dis_height);
void ips200_displayimage8660_zoom(uint16 *p, uint16 width, uint16 height, uint16 dis_width, uint16 dis_height);
void ips200_displayimage8660_zoom1(uint16 *p, uint16 width, uint16 height, uint16 start_x, uint16 start_y, uint16 dis_width, uint16 dis_height);
void ips200_displayimage8660_grayscale_zoom(uint16 *p, uint16 width, uint16 height, uint16 dis_width, uint16 dis_height);
void ips200_displayimage7725(uint8 *p, uint16 width, uint16 height);
void ips200_display_chinese(uint16 x, uint16 y, uint8 size, const uint8 *p, uint8 number, uint16 color);
#endif

View File

@@ -1,101 +0,0 @@
/*********************************************************************************************************************
* COPYRIGHT NOTICE
* Copyright (c) 2020,<2C><><EFBFBD>ɿƼ<C9BF>
* All rights reserved.
* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>QQȺ<51><C8BA><EFBFBD><EFBFBD>Ⱥ<EFBFBD><C8BA>824575535
*
* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݰ<EFBFBD>Ȩ<EFBFBD><C8A8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɿƼ<C9BF><C6BC><EFBFBD><EFBFBD>У<EFBFBD>δ<EFBFBD><CEB4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ҵ<EFBFBD><D2B5>;<EFBFBD><CDBE>
* <20><>ӭ<EFBFBD><D3AD>λʹ<CEBB>ò<EFBFBD><C3B2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>޸<EFBFBD><DEB8><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EBB1A3><EFBFBD><EFBFBD><EFBFBD>ɿƼ<C9BF><C6BC>İ<EFBFBD>Ȩ<EFBFBD><C8A8><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
*
* @file L3G4200D
* @company <09>ɶ<EFBFBD><C9B6><EFBFBD><EFBFBD>ɿƼ<C9BF><C6BC><EFBFBD><EFBFBD>޹<EFBFBD>˾
* @author <09><><EFBFBD>ɿƼ<C9BF>(QQ3184284598)
* @version <09>鿴doc<6F><63>version<6F>ļ<EFBFBD> <20>汾˵<E6B1BE><CBB5>
* @Software ADS v1.2.2
* @Target core TC264D
* @Taobao https://seekfree.taobao.com/
* @date 2020-3-23
* @note
<09><><EFBFBD>߶<EFBFBD><DFB6>
------------------------------------
SCL <20>鿴SEEKFREE_SIMIIC<49>ļ<EFBFBD><C4BC>ڵ<EFBFBD>SEEKFREE_SCL<43><EFBFBD><EAB6A8>
SDA <20>鿴SEEKFREE_SIMIIC<49>ļ<EFBFBD><C4BC>ڵ<EFBFBD>SEEKFREE_SDA<44><EFBFBD><EAB6A8>
------------------------------------
********************************************************************************************************************/
#include "zf_stm_systick.h"
#include "SEEKFREE_IIC.h"
#include "SEEKFREE_L3G4200D.h"
int16 gyro_x = 0, gyro_y = 0, gyro_z = 0;
uint8 temperature = 0;
//-------------------------------------------------------------------------------------------------------------------
// @brief L3G4200D<30>Լ캯<D4BC><ECBAAF>
// @param NULL
// @return void
// @since v1.0
// Sample usage: <09><><EFBFBD>øú<C3B8><C3BA><EFBFBD>ǰ<EFBFBD><C7B0><EFBFBD><EFBFBD><EFBFBD>ȵ<EFBFBD><C8B5><EFBFBD>ģ<EFBFBD><C4A3>IIC<49>ij<EFBFBD>ʼ<EFBFBD><CABC>
//-------------------------------------------------------------------------------------------------------------------
void l3g4200d_self_check(void)
{
simiic_write_reg(L3G4200_DEV_ADD, CTRL_REG1_4200, 0x4f);
while(0x4f != simiic_read_reg(L3G4200_DEV_ADD, CTRL_REG1_4200,SIMIIC))
{
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ԭ<EFBFBD><D4AD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>¼<EFBFBD><C2BC><EFBFBD>
//1 ģ<><EFBFBD>ˣ<EFBFBD><CBA3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>µ<EFBFBD><C2B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ĸ<EFBFBD><C4B8>ʼ<EFBFBD><CABC><EFBFBD>
//2 <20><><EFBFBD>ߴ<EFBFBD><DFB4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>û<EFBFBD>нӺ<D0BD>
//3 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ҫ<EFBFBD><D2AA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E8A3AC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>3.3V
//4 <20><><EFBFBD><EFBFBD>û<EFBFBD>е<EFBFBD><D0B5><EFBFBD>ģ<EFBFBD><C4A3>IIC<49>ij<EFBFBD>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
}
}
//-------------------------------------------------------------------------------------------------------------------
// @brief <20><>ʼ<EFBFBD><CABC>L3G4200D<30><44><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// @param NULL
// @return void
// @since v1.0
// Sample usage: <09><><EFBFBD>øú<C3B8><C3BA><EFBFBD>ǰ<EFBFBD><C7B0><EFBFBD><EFBFBD><EFBFBD>ȵ<EFBFBD><C8B5><EFBFBD>ģ<EFBFBD><C4A3>SIMIIC<49>ij<EFBFBD>ʼ<EFBFBD><CABC>
//-------------------------------------------------------------------------------------------------------------------
void l3g4200d_init(void)
{
simiic_init();
systick_delay_ms(STM0, 50);
l3g4200d_self_check();
simiic_write_reg(L3G4200_DEV_ADD, CTRL_REG1_4200, 0x4f); //
simiic_write_reg(L3G4200_DEV_ADD, CTRL_REG2_4200, 0x00); //00
simiic_write_reg(L3G4200_DEV_ADD, CTRL_REG3_4200, 0x08); //
simiic_write_reg(L3G4200_DEV_ADD, CTRL_REG4_4200, 0xB0); //+-2000dps
simiic_write_reg(L3G4200_DEV_ADD, CTRL_REG5_4200, 0x00);
temperature = simiic_read_reg(L3G4200_DEV_ADD, OUT_TEMP_4200, SIMIIC);
}
//-------------------------------------------------------------------------------------------------------------------
// @brief <20><>ȡL3G4200D<30><44><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// @param NULL
// @return void
// @since v1.0
// Sample usage: ִ<>иú<D0B8><C3BA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֱ<EFBFBD>Ӳ鿴<D3B2><E9BFB4>Ӧ<EFBFBD>ı<EFBFBD><C4B1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
//-------------------------------------------------------------------------------------------------------------------
void get_l3g4200d(void)
{
uint8 dat[6];
uint8 status;
status = simiic_read_reg(L3G4200_DEV_ADD, STATUS_REG_4200, SIMIIC);
if( status&0x80 )//<2F><EFBFBD><E9BFB4><EFBFBD><EFBFBD><EFBFBD>Ƿ<EFBFBD>׼<EFBFBD><D7BC><EFBFBD><EFBFBD><EFBFBD>ˡ<EFBFBD><CBA1><EFBFBD><EFBFBD><EFBFBD>û<EFBFBD><C3BB>׼<EFBFBD><D7BC><EFBFBD>ã<EFBFBD><C3A3><EFBFBD>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD>ܶ<EFBFBD>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݡ<EFBFBD><DDA1><EFBFBD>ȡƵ<C8A1><C6B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ǹ<EFBFBD><C7B8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƶ<EFBFBD><C6B5>
{
simiic_read_regs(L3G4200_DEV_ADD, OUT_X_L_4200|0X80, dat, 6, SIMIIC); //<2F><><EFBFBD><EFBFBD>0x80<38><30><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA>Ҫ<EFBFBD><D2AA><EFBFBD>ֽڶ<D6BD>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD>
gyro_x = (int16)((uint16)dat[1]<<8 | dat[0]);
gyro_y = (int16)((uint16)dat[3]<<8 | dat[2]);
gyro_z = (int16)((uint16)dat[5]<<8 | dat[4]);
}
}

View File

@@ -1,81 +0,0 @@
/*********************************************************************************************************************
* COPYRIGHT NOTICE
* Copyright (c) 2020,<2C><><EFBFBD>ɿƼ<C9BF>
* All rights reserved.
* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>QQȺ<51><C8BA><EFBFBD><EFBFBD>Ⱥ<EFBFBD><C8BA>824575535
*
* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݰ<EFBFBD>Ȩ<EFBFBD><C8A8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɿƼ<C9BF><C6BC><EFBFBD><EFBFBD>У<EFBFBD>δ<EFBFBD><CEB4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ҵ<EFBFBD><D2B5>;<EFBFBD><CDBE>
* <20><>ӭ<EFBFBD><D3AD>λʹ<CEBB>ò<EFBFBD><C3B2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>޸<EFBFBD><DEB8><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EBB1A3><EFBFBD><EFBFBD><EFBFBD>ɿƼ<C9BF><C6BC>İ<EFBFBD>Ȩ<EFBFBD><C8A8><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
*
* @file L3G4200D
* @company <09>ɶ<EFBFBD><C9B6><EFBFBD><EFBFBD>ɿƼ<C9BF><C6BC><EFBFBD><EFBFBD>޹<EFBFBD>˾
* @author <09><><EFBFBD>ɿƼ<C9BF>(QQ3184284598)
* @version <09>鿴doc<6F><63>version<6F>ļ<EFBFBD> <20>汾˵<E6B1BE><CBB5>
* @Software ADS v1.2.2
* @Target core TC264D
* @Taobao https://seekfree.taobao.com/
* @date 2020-3-23
* @note
<09><><EFBFBD>߶<EFBFBD><DFB6>
------------------------------------
SCL <20>鿴SEEKFREE_SIMIIC<49>ļ<EFBFBD><C4BC>ڵ<EFBFBD>SEEKFREE_SCL<43><EFBFBD><EAB6A8>
SDA <20>鿴SEEKFREE_SIMIIC<49>ļ<EFBFBD><C4BC>ڵ<EFBFBD>SEEKFREE_SDA<44><EFBFBD><EAB6A8>
------------------------------------
********************************************************************************************************************/
#ifndef _SEEKFREE_L3G4200D_H
#define _SEEKFREE_L3G4200D_H
#include "common.h"
//----------L3G4200D<30>ڲ<EFBFBD><DAB2>Ĵ<EFBFBD><C4B4><EFBFBD><EFBFBD><EFBFBD>ַ---------
#define L3G4200D_ID 0x69
#define WHO_AM_I_4200 0x0F
#define CTRL_REG1_4200 0x20
#define CTRL_REG2_4200 0x21
#define CTRL_REG3_4200 0x22
#define CTRL_REG4_4200 0x23
#define CTRL_REG5_4200 0x24
#define REFERENCE_4200 0x25
#define OUT_TEMP_4200 0x26
#define STATUS_REG_4200 0x27
#define OUT_X_L_4200 0x28
#define OUT_X_H_4200 0x29
#define OUT_Y_L_4200 0x2A
#define OUT_Y_H_4200 0x2B
#define OUT_Z_L_4200 0x2C
#define OUT_Z_H_4200 0x2D
#define FIFO_CTRL_REG_4200 0x2E
#define FIFO_SRC_REG_4200 0x2F
#define INT1_CFG_4200 0x30
#define INT1_SRC_4200 0x31
#define INT1_TSH_XH_4200 0x32
#define INT1_TSH_XL_4200 0x33
#define INT1_TSH_YH_4200 0x34
#define INT1_TSH_YL_4200 0x35
#define INT1_TSH_ZH_4200 0x36
#define INT1_TSH_ZL_4200 0x37
#define INT1_DURATION_4200 0x38
#define L3G4200_DEV_ADD 0xD2>>1 //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>IIC<49><43><EFBFBD><EFBFBD><EFBFBD>еĴӵ<C4B4>ַ,<2C><><EFBFBD><EFBFBD>ALT ADDRESS<53><53>ַ<EFBFBD><D6B7><EFBFBD>Ų<EFBFBD>ͬ<EFBFBD>޸<EFBFBD>
extern int16 gyro_x, gyro_y, gyro_z;
void l3g4200d_init(void);
void get_l3g4200d(void);
#endif

View File

@@ -1,134 +0,0 @@
/*********************************************************************************************************************
* COPYRIGHT NOTICE
* Copyright (c) 2020,<2C><><EFBFBD>ɿƼ<C9BF>
* All rights reserved.
* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>QQȺ<51><C8BA><EFBFBD><EFBFBD>Ⱥ<EFBFBD><C8BA>824575535
*
* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݰ<EFBFBD>Ȩ<EFBFBD><C8A8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɿƼ<C9BF><C6BC><EFBFBD><EFBFBD>У<EFBFBD>δ<EFBFBD><CEB4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ҵ<EFBFBD><D2B5>;<EFBFBD><CDBE>
* <20><>ӭ<EFBFBD><D3AD>λʹ<CEBB>ò<EFBFBD><C3B2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>޸<EFBFBD><DEB8><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EBB1A3><EFBFBD><EFBFBD><EFBFBD>ɿƼ<C9BF><C6BC>İ<EFBFBD>Ȩ<EFBFBD><C8A8><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
*
* @file MMA8451
* @company <09>ɶ<EFBFBD><C9B6><EFBFBD><EFBFBD>ɿƼ<C9BF><C6BC><EFBFBD><EFBFBD>޹<EFBFBD>˾
* @author <09><><EFBFBD>ɿƼ<C9BF>(QQ3184284598)
* @version <09>鿴doc<6F><63>version<6F>ļ<EFBFBD> <20>汾˵<E6B1BE><CBB5>
* @Software ADS v1.2.2
* @Target core TC264D
* @Taobao https://seekfree.taobao.com/
* @date 2020-3-23
* @note
<09><><EFBFBD>߶<EFBFBD><DFB6>
------------------------------------
SCL <20>鿴SEEKFREE_IIC<49>ļ<EFBFBD><C4BC>ڵ<EFBFBD>SEEKFREE_SCL<43><EFBFBD><EAB6A8>
SDA <20>鿴SEEKFREE_IIC<49>ļ<EFBFBD><C4BC>ڵ<EFBFBD>SEEKFREE_SDA<44><EFBFBD><EAB6A8>
------------------------------------
********************************************************************************************************************/
#include "zf_stm_systick.h"
#include "SEEKFREE_IIC.h"
#include "SEEKFREE_MMA8451.h"
//SA0<41><30><EFBFBD><EFBFBD><EFBFBD>ӵ<EFBFBD>
int16 acc_x = 0, acc_y = 0, acc_z = 0;
//-------------------------------------------------------------------------------------------------------------------
// @brief L3G4200D<30>Լ캯<D4BC><ECBAAF>
// @param NULL
// @return void
// @since v1.0
// Sample usage: <09><><EFBFBD>øú<C3B8><C3BA><EFBFBD>ǰ<EFBFBD><C7B0><EFBFBD><EFBFBD><EFBFBD>ȵ<EFBFBD><C8B5><EFBFBD>ģ<EFBFBD><C4A3>IIC<49>ij<EFBFBD>ʼ<EFBFBD><CABC>
//-------------------------------------------------------------------------------------------------------------------
void mma8451_self_check(void)
{
uint16 v;
do
{
v= simiic_read_reg(MMA8451_DEV_ADD, WHO_AM_I_REG, SIMIIC);
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ԭ<EFBFBD><D4AD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>¼<EFBFBD><C2BC><EFBFBD>
//1 ģ<><EFBFBD>ˣ<EFBFBD><CBA3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>µ<EFBFBD><C2B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ĸ<EFBFBD><C4B8>ʼ<EFBFBD><CABC><EFBFBD>
//2 <20><><EFBFBD>ߴ<EFBFBD><DFB4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>û<EFBFBD>нӺ<D0BD>
//3 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ҫ<EFBFBD><D2AA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E8A3AC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>3.3V
//4 <20><><EFBFBD><EFBFBD>û<EFBFBD>е<EFBFBD><D0B5><EFBFBD>ģ<EFBFBD><C4A3>IIC<49>ij<EFBFBD>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
}while((v != MMA8451Q_ID)&&(v != MMA8452Q_ID)&&(v != MMA8453Q_ID));
}
//-------------------------------------------------------------------------------------------------------------------
// @brief <20><>ʼ<EFBFBD><CABC>MMA8451<35><31><EFBFBD>ٶȼ<D9B6>
// @param NULL
// @return uint8 <09><><EFBFBD><EFBFBD>1<EFBFBD>ɹ<EFBFBD><C9B9><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><30><CAA7>
// @since v1.0
// Sample usage: <09><><EFBFBD>øú<C3B8><C3BA><EFBFBD>ǰ<EFBFBD><C7B0><EFBFBD><EFBFBD><EFBFBD>ȵ<EFBFBD><C8B5><EFBFBD>ģ<EFBFBD><C4A3>IIC<49>ij<EFBFBD>ʼ<EFBFBD><CABC>
//-------------------------------------------------------------------------------------------------------------------
uint8 mma845x_init(void)
{
simiic_init();
systick_delay_ms(STM0, 50);
mma8451_self_check();
simiic_write_reg(MMA8451_DEV_ADD, CTRL_REG1,ASLP_RATE_20MS+DATA_RATE_2500US);
simiic_write_reg(MMA8451_DEV_ADD, XYZ_DATA_CFG_REG, FULL_SCALE_2G); //2G
simiic_write_reg(MMA8451_DEV_ADD, CTRL_REG1, (ACTIVE_MASK+ASLP_RATE_20MS+DATA_RATE_5MS)&(~FREAD_MASK)); //<2F><><EFBFBD><EFBFBD>״̬ 14bit
return 0;
}
//-------------------------------------------------------------------------------------------------------------------
// @brief <20><>ȡMMA8451<35><31><EFBFBD>ٶȼ<D9B6><C8BC><EFBFBD><EFBFBD><EFBFBD>
// @param NULL
// @return void
// @since v1.0
// Sample usage: ִ<>иú<D0B8><C3BA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֱ<EFBFBD>Ӳ鿴<D3B2><E9BFB4>Ӧ<EFBFBD>ı<EFBFBD><C4B1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
//-------------------------------------------------------------------------------------------------------------------
void get_mma8451(void)
{
uint8 dat[6];
uint16 wx,wy,wz;
simiic_read_regs(MMA8451_DEV_ADD, OUT_X_MSB_REG, dat, 6, SIMIIC);
wx = (uint16)dat[0]<<8 | dat[1];
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ٶ<EFBFBD>ԭʼ<D4AD><CABC>Ӧ<EFBFBD><D3A6>ֵ
if(dat[0]>0x7f) acc_x=-(int16)((~(wx>>2) + 1)&0X3FFF); //<2F><>λȡ<CEBB><C8A1><EFBFBD><EFBFBD>һ<EFBFBD><D2BB>ȥ<EFBFBD><C8A5><EFBFBD><EFBFBD>Ч<EFBFBD>ַ<EFBFBD>
else acc_x=(wx>>2)&0X3FFF; //<2F><>λ<EFBFBD><CEBB><EFBFBD><EFBFBD>Ч<EFBFBD>ַ<EFBFBD>
wy = (uint16)dat[2]<<8 | dat[3];
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ٶ<EFBFBD>ԭʼ<D4AD><CABC>Ӧ<EFBFBD><D3A6>ֵ
if(dat[2]>0x7f) acc_y=-(int16)((~(wy>>2) + 1)&0X3FFF); //<2F><>λȡ<CEBB><C8A1><EFBFBD><EFBFBD>һ<EFBFBD><D2BB>ȥ<EFBFBD><C8A5><EFBFBD><EFBFBD>Ч<EFBFBD>ַ<EFBFBD>
else acc_y=(wy>>2)&0X3FFF; //<2F><>λ<EFBFBD><CEBB><EFBFBD><EFBFBD>Ч<EFBFBD>ַ<EFBFBD>
wz = (uint16)dat[4]<<8 | dat[5];
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ٶ<EFBFBD>ԭʼ<D4AD><CABC>Ӧ<EFBFBD><D3A6>ֵ
if(dat[4]>0x7f) acc_z=-(int16)((~(wz>>2) + 1)&0X3FFF); //<2F><>λȡ<CEBB><C8A1><EFBFBD><EFBFBD>һ<EFBFBD><D2BB>ȥ<EFBFBD><C8A5><EFBFBD><EFBFBD>Ч<EFBFBD>ַ<EFBFBD>
else acc_z=(wz>>2)&0X3FFF; //<2F><>λ<EFBFBD><CEBB><EFBFBD><EFBFBD>Ч<EFBFBD>ַ<EFBFBD>
}

View File

@@ -1,414 +0,0 @@
/*********************************************************************************************************************
* COPYRIGHT NOTICE
* Copyright (c) 2020,<2C><><EFBFBD>ɿƼ<C9BF>
* All rights reserved.
* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>QQȺ<51><C8BA><EFBFBD><EFBFBD>Ⱥ<EFBFBD><C8BA>824575535
*
* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݰ<EFBFBD>Ȩ<EFBFBD><C8A8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɿƼ<C9BF><C6BC><EFBFBD><EFBFBD>У<EFBFBD>δ<EFBFBD><CEB4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ҵ<EFBFBD><D2B5>;<EFBFBD><CDBE>
* <20><>ӭ<EFBFBD><D3AD>λʹ<CEBB>ò<EFBFBD><C3B2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>޸<EFBFBD><DEB8><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EBB1A3><EFBFBD><EFBFBD><EFBFBD>ɿƼ<C9BF><C6BC>İ<EFBFBD>Ȩ<EFBFBD><C8A8><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
*
* @file MMA8451
* @company <09>ɶ<EFBFBD><C9B6><EFBFBD><EFBFBD>ɿƼ<C9BF><C6BC><EFBFBD><EFBFBD>޹<EFBFBD>˾
* @author <09><><EFBFBD>ɿƼ<C9BF>(QQ3184284598)
* @version <09>鿴doc<6F><63>version<6F>ļ<EFBFBD> <20>汾˵<E6B1BE><CBB5>
* @Software ADS v1.2.2
* @Target core TC264D
* @Taobao https://seekfree.taobao.com/
* @date 2020-3-23
* @note
<09><><EFBFBD>߶<EFBFBD><DFB6>
------------------------------------
SCL <20>鿴SEEKFREE_IIC<49>ļ<EFBFBD><C4BC>ڵ<EFBFBD>SEEKFREE_SCL<43><EFBFBD><EAB6A8>
SDA <20>鿴SEEKFREE_IIC<49>ļ<EFBFBD><C4BC>ڵ<EFBFBD>SEEKFREE_SDA<44><EFBFBD><EAB6A8>
------------------------------------
********************************************************************************************************************/
#ifndef _SEEKFREEMMA8451_H__
#define _SEEKFREEMMA8451_H__
#include "common.h"
//MSB<53><42>ʽ<EFBFBD><CABD>:SA0=0;Write add 0x38,read add 0x39
//LSB<53><42>ʽ<EFBFBD><CABD>:SA0=1;Write add 0x3a,read add 0x3b
#define MMA8451_DEV_ADD 0x38>>1
#define STATUS_00_REG 0x00
// XYZ Data Registers
#define OUT_X_MSB_REG 0x01
#define OUT_X_LSB_REG 0x02
#define OUT_Y_MSB_REG 0x03
#define OUT_Y_LSB_REG 0x04
#define OUT_Z_MSB_REG 0x05
#define OUT_Z_LSB_REG 0x06
// WHO_AM_I Device ID Register
#define WHO_AM_I_REG 0x0D
#define MMA8451Q_ID 0x1A
#define MMA8452Q_ID 0x2A
#define MMA8453Q_ID 0x3A
// F_STATUS FIFO Status Register
#define F_STATUS_REG 0x00
// F_SETUP FIFO Setup Register
#define F_SETUP_REG 0x09
// TRIG CFG Register
#define TRIG_CFG_REG 0x0A
//
#define ZYXDR_MASK 0x08
// SYSMOD System Mode Register
#define SYSMOD_REG 0x0B
//
#define FGERR_MASK 0x80
#define FGT_4MASK 0x40
#define FGT_3MASK 0x20
#define FGT_2MASK 0x10
#define FGT_1MASK 0x08
#define FGT_0MASK 0x04
#define FGT_MASK 0x7C
#define SYSMOD1_MASK 0x02
#define SYSMOD0_MASK 0x01
#define SYSMOD_MASK 0x03
// INT_SOURCE System Interrupt Status Register
#define INT_SOURCE_REG 0x0C
//
#define SRC_ASLP_MASK 0x80
#define SRC_FIFO_MASK 0x40
#define SRC_TRANS_MASK 0x20
#define SRC_LNDPRT_MASK 0x10
#define SRC_PULSE_MASK 0x08
#define SRC_FF_MT_1_MASK 0x04
#define SRC_FF_MT_2_MASK 0x02
#define SRC_DRDY_MASK 0x01
// XYZ_DATA_CFG Sensor Data Configuration Register
#define XYZ_DATA_CFG_REG 0x0E
//
#define HPF_OUT_BIT Bit._4
#define FS1_BIT Bit._1
#define FS0_BIT Bit._0
//
#define HPF_OUT_MASK 0x10
#define FS1_MASK 0x02
#define FS0_MASK 0x01
#define FS_MASK 0x03
#define FULL_SCALE_8G FS1_MASK
#define FULL_SCALE_4G FS0_MASK
#define FULL_SCALE_2G 0x00
// HP_FILTER_CUTOFF High Pass Filter Register
#define HP_FILTER_CUTOFF_REG 0x0F
//
#define PULSE_HPF_BYP Bit._5
#define PULSE_LPF_EN Bit._4
#define SEL1_BIT Bit._1
#define SEL0_BIT Bit._0
//
#define PULSE_HPF_BYP_MASK 0x20
#define PULSE_LPF_EN_MASK 0x10
#define SEL1_MASK 0x02
#define SEL0_MASK 0x01
#define SEL_MASK 0x03
// PL_STATUS Portrait/Landscape Status Register
// PL_PRE_STATUS Portrait/Landscape Previous Data Status Register
#define PL_STATUS_REG 0x10
//
#define NEWLP_MASK 0x80
#define LO_MASK 0x40
#define LAPO1_MASK 0x04
#define LAPO0_MASK 0x02
#define LAPO_MASK 0x06
#define BAFRO_MASK 0x01
// PL_CFG Portrait/Landscape Configuration Register
#define PL_CFG_REG 0x11
//
#define DBCNTM_BIT Bit._7
#define PL_EN_BIT Bit._6
//
#define DBCNTM_MASK 0x80
#define PL_EN_MASK 0x40
// PL_COUNT Portrait/Landscape Debounce Register
#define PL_COUNT_REG 0x12
// PL_BF_ZCOMP Back/Front and Z Compensation Register
#define PL_BF_ZCOMP_REG 0x13
//
#define BKFR1_MASK 0x80
#define BKFR0_MASK 0x40
#define ZLOCK2_MASK 0x04
#define ZLOCK1_MASK 0x02
#define ZLOCK0_MASK 0x01
#define BKFR_MASK 0xC0
#define ZLOCK_MASK 0x07
// PL_P_L_THS Portrait to Landscape Threshold Registers
#define PL_P_L_THS_REG 0x14
// FF_MT_CFG Freefall and Motion Configuration Registers
#define FF_MT_CFG_1_REG 0x15
#define FF_MT_CFG_2_REG 0x19
#define ELE_MASK 0x80
#define OAE_MASK 0x40
#define ZEFE_MASK 0x20
#define YEFE_MASK 0x10
#define XEFE_MASK 0x08
// FF_MT_SRC Freefall and Motion Source Registers
#define FF_MT_SRC_1_REG 0x16
#define FF_MT_SRC_2_REG 0x1A
//
#define EA_MASK 0x80
#define ZHE_MASK 0x20
#define ZHP_MASK 0x10
#define YHE_MASK 0x08
#define YHP_MASK 0x04
#define XHE_MASK 0x02
#define XHP_MASK 0x01
// FF_MT_THS Freefall and Motion Threshold Registers
// TRANSIENT_THS Transient Threshold Register
#define FT_MT_THS_1_REG 0x17
#define FT_MT_THS_2_REG 0x1B
#define TRANSIENT_THS_REG 0x1F
//
#define DBCNTM_MASK 0x80
#define THS6_MASK 0x40
#define THS5_MASK 0x20
#define THS4_MASK 0x10
#define THS3_MASK 0x08
#define THS2_MASK 0x04
#define TXS1_MASK 0x02
#define THS0_MASK 0x01
#define THS_MASK 0x7F
// FF_MT_COUNT Freefall Motion Count Registers
#define FF_MT_COUNT_1_REG 0x18
#define FF_MT_COUNT_2_REG 0x1C
// TRANSIENT_CFG Transient Configuration Register
#define TRANSIENT_CFG_REG 0x1D
//
#define TELE_MASK 0x10
#define ZTEFE_MASK 0x08
#define YTEFE_MASK 0x04
#define XTEFE_MASK 0x02
#define HPF_BYP_MASK 0x01
// TRANSIENT_SRC Transient Source Register
#define TRANSIENT_SRC_REG 0x1E
//
#define TEA_MASK 0x40
#define ZTRANSE_MASK 0x20
#define ZTRANSEPOL_MASK 0x10
#define YTRANSE_MASK 0x08
#define YTRANSEPOL_MASK 0x04
#define XTRANSE_MASK 0x02
#define XTRANSEPOL_MASK 0x01
// TRANSIENT_COUNT Transient Debounce Register
#define TRANSIENT_COUNT_REG 0x20
// PULSE_CFG Pulse Configuration Register
#define PULSE_CFG_REG 0x21
//
#define DPA_MASK 0x80
#define PELE_MASK 0x40
#define ZDPEFE_MASK 0x20
#define ZSPEFE_MASK 0x10
#define YDPEFE_MASK 0x08
#define YSPEFE_MASK 0x04
#define XDPEFE_MASK 0x02
#define XSPEFE_MASK 0x01
// PULSE_SRC Pulse Source Register
#define PULSE_SRC_REG 0x22
//
#define PEA_MASK 0x80
#define PAXZ_MASK 0x40
#define PAXY_MASK 0x20
#define PAXX_MASK 0x10
#define PDPE_MASK 0x08
#define POLZ_MASK 0x04
#define POLY_MASK 0x02
#define POLX_MASK 0x01
// PULSE_THS XYZ Pulse Threshold Registers
#define PULSE_THSX_REG 0x23
#define PULSE_THSY_REG 0x24
#define PULSE_THSZ_REG 0x25
//
#define PTHS_MASK 0x7F
// PULSE_TMLT Pulse Time Window Register
#define PULSE_TMLT_REG 0x26
// PULSE_LTCY Pulse Latency Timer Register
#define PULSE_LTCY_REG 0x27
// PULSE_WIND Second Pulse Time Window Register
#define PULSE_WIND_REG 0x28
// ASLP_COUNT Auto Sleep Inactivity Timer Register
#define ASLP_COUNT_REG 0x29
// CTRL_REG1 System Control 1 Register
#define CTRL_REG1 0x2A
//
#define ASLP_RATE1_MASK 0x80
#define ASLP_RATE0_MASK 0x40
#define DR2_MASK 0x20
#define DR1_MASK 0x10
#define DR0_MASK 0x08
#define LNOISE_MASK 0x04
#define FREAD_MASK 0x02
#define ACTIVE_MASK 0x01
#define ASLP_RATE_MASK 0xC0
#define DR_MASK 0x38
//
#define ASLP_RATE_20MS 0x00
#define ASLP_RATE_80MS ASLP_RATE0_MASK
#define ASLP_RATE_160MS ASLP_RATE1_MASK
#define ASLP_RATE_640MS ASLP_RATE1_MASK+ASLP_RATE0_MASK
//
#define DATA_RATE_1250US 0x00
#define DATA_RATE_2500US DR0_MASK
#define DATA_RATE_5MS DR1_MASK
#define DATA_RATE_10MS DR1_MASK+DR0_MASK
#define DATA_RATE_20MS DR2_MASK
#define DATA_RATE_80MS DR2_MASK+DR0_MASK
#define DATA_RATE_160MS DR2_MASK+DR1_MASK
#define DATA_RATE_640MS DR2_MASK+DR1_MASK+DR0_MASK
// CTRL_REG2 System Control 2 Register
#define CTRL_REG2 0x2B
//
#define ST_MASK 0x80
#define BOOT_MASK 0x40
#define SMODS1_MASK 0x20
#define SMODS0_MASK 0x10
#define SLPE_MASK 0x04
#define MODS1_MASK 0x02
#define MODS0_MASK 0x01
#define SMODS_MASK 0x18
#define MODS_MASK 0x03
// CTRL_REG3 Interrupt Control Register
#define CTRL_REG3 0x2C
//
#define FIFO_GATE_MASK 0x80
#define WAKE_TRANS_MASK 0x40
#define WAKE_LNDPRT_MASK 0x20
#define WAKE_PULSE_MASK 0x10
#define WAKE_FF_MT_1_MASK 0x08
#define WAKE_FF_MT_2_MASK 0x04
#define IPOL_MASK 0x02
#define PP_OD_MASK 0x01
// CTRL_REG4 Interrupt Enable Register
#define CTRL_REG4 0x2D
//
#define INT_EN_ASLP_MASK 0x80
#define INT_EN_FIFO_MASK 0x40
#define INT_EN_TRANS_MASK 0x20
#define INT_EN_LNDPRT_MASK 0x10
#define INT_EN_PULSE_MASK 0x08
#define INT_EN_FF_MT_1_MASK 0x04
#define INT_EN_FF_MT_2_MASK 0x02
#define INT_EN_DRDY_MASK 0x01
// CTRL_REG5 Interrupt Configuration Register
#define CTRL_REG5 0x2E
//
#define INT_CFG_ASLP_MASK 0x80
#define INT_CFG_FIFO_MASK 0x40
#define INT_CFG_TRANS_MASK 0x20
#define INT_CFG_LNDPRT_MASK 0x10
#define INT_CFG_PULSE_MASK 0x08
#define INT_CFG_FF_MT_1_MASK 0x04
#define INT_CFG_FF_MT_2_MASK 0x02
#define INT_CFG_DRDY_MASK 0x01
// XYZ Offset Correction Registers
#define OFF_X_REG 0x2F
#define OFF_Y_REG 0x30
#define OFF_Z_REG 0x31
extern int16 acc_x, acc_y, acc_z;
uint8 mma845x_init(void);
void get_mma8451(void);
#endif

View File

@@ -1,225 +0,0 @@
/*********************************************************************************************************************
* COPYRIGHT NOTICE
* Copyright (c) 2020,<2C><><EFBFBD>ɿƼ<C9BF>
* All rights reserved.
* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>QQȺ<51><C8BA><EFBFBD><EFBFBD>Ⱥ<EFBFBD><C8BA>824575535
*
* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݰ<EFBFBD>Ȩ<EFBFBD><C8A8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɿƼ<C9BF><C6BC><EFBFBD><EFBFBD>У<EFBFBD>δ<EFBFBD><CEB4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ҵ<EFBFBD><D2B5>;<EFBFBD><CDBE>
* <20><>ӭ<EFBFBD><D3AD>λʹ<CEBB>ò<EFBFBD><C3B2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>޸<EFBFBD><DEB8><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EBB1A3><EFBFBD><EFBFBD><EFBFBD>ɿƼ<C9BF><C6BC>İ<EFBFBD>Ȩ<EFBFBD><C8A8><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
*
* @file MPU6050
* @company <09>ɶ<EFBFBD><C9B6><EFBFBD><EFBFBD>ɿƼ<C9BF><C6BC><EFBFBD><EFBFBD>޹<EFBFBD>˾
* @author <09><><EFBFBD>ɿƼ<C9BF>(QQ3184284598)
* @version <09>鿴doc<6F><63>version<6F>ļ<EFBFBD> <20>汾˵<E6B1BE><CBB5>
* @Software ADS v1.2.2
* @Target core TC264D
* @Taobao https://seekfree.taobao.com/
* @date 2020-3-23
* @note
<09><><EFBFBD>߶<EFBFBD><DFB6>
------------------------------------
<09><><EFBFBD><EFBFBD>IIC
SCL <20>鿴SEEKFREE_IIC<49>ļ<EFBFBD><C4BC>ڵ<EFBFBD>SEEKFREE_SCL<43><EFBFBD><EAB6A8>
SDA <20>鿴SEEKFREE_IIC<49>ļ<EFBFBD><C4BC>ڵ<EFBFBD>SEEKFREE_SDA<44><EFBFBD><EAB6A8>
Ӳ<><D3B2>IIC
SCL <20>鿴init_mpu6050_hardware<72><65><EFBFBD><EFBFBD><EFBFBD><EFBFBD>IIC<49><43>ʼ<EFBFBD><CABC>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
SDA <20>鿴init_mpu6050_hardware<72><65><EFBFBD><EFBFBD><EFBFBD><EFBFBD>IIC<49><43>ʼ<EFBFBD><CABC>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
------------------------------------
********************************************************************************************************************/
//#include "zf_iic.h"
#include "zf_stm_systick.h"
#include "SEEKFREE_IIC.h"
#include "SEEKFREE_MPU6050.h"
int16 mpu_gyro_x,mpu_gyro_y,mpu_gyro_z;
int16 mpu_acc_x,mpu_acc_y,mpu_acc_z;
//-------------------------------------------------------------------------------------------------------------------
// @brief MPU6050<35>Լ캯<D4BC><ECBAAF>
// @param NULL
// @return void
// @since v1.0
// Sample usage: <09><><EFBFBD>øú<C3B8><C3BA><EFBFBD>ǰ<EFBFBD><C7B0><EFBFBD><EFBFBD><EFBFBD>ȵ<EFBFBD><C8B5><EFBFBD>ģ<EFBFBD><C4A3>IIC<49>ij<EFBFBD>ʼ<EFBFBD><CABC>
//-------------------------------------------------------------------------------------------------------------------
void mpu6050_self1_check(void)
{
simiic_write_reg(MPU6050_DEV_ADDR, PWR_MGMT_1, 0x00); //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>״̬
simiic_write_reg(MPU6050_DEV_ADDR, SMPLRT_DIV, 0x07); //125HZ<48><5A><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
while(0x07 != simiic_read_reg(MPU6050_DEV_ADDR, SMPLRT_DIV,SIMIIC))
{
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ԭ<EFBFBD><D4AD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>¼<EFBFBD><C2BC><EFBFBD>
//1 MPU6050<35><30><EFBFBD>ˣ<EFBFBD><CBA3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>µ<EFBFBD><C2B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ĸ<EFBFBD><C4B8>ʼ<EFBFBD><CABC><EFBFBD>
//2 <20><><EFBFBD>ߴ<EFBFBD><DFB4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>û<EFBFBD>нӺ<D0BD>
//3 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ҫ<EFBFBD><D2AA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E8A3AC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>3.3V
//4 <20><><EFBFBD><EFBFBD>û<EFBFBD>е<EFBFBD><D0B5><EFBFBD>ģ<EFBFBD><C4A3>IIC<49>ij<EFBFBD>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
}
}
//-------------------------------------------------------------------------------------------------------------------
// @brief <20><>ʼ<EFBFBD><CABC>MPU6050
// @param NULL
// @return void
// @since v1.0
// Sample usage: <09><><EFBFBD>øú<C3B8><C3BA><EFBFBD>ǰ<EFBFBD><C7B0><EFBFBD><EFBFBD><EFBFBD>ȵ<EFBFBD><C8B5><EFBFBD>ģ<EFBFBD><C4A3>IIC<49>ij<EFBFBD>ʼ<EFBFBD><CABC>
//-------------------------------------------------------------------------------------------------------------------
void mpu6050_init(void)
{
simiic_init();
systick_delay_ms(STM0, 100); //<2F>ϵ<EFBFBD><CFB5><EFBFBD>ʱ
mpu6050_self1_check();
simiic_write_reg(MPU6050_DEV_ADDR, PWR_MGMT_1, 0x00); //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>״̬
simiic_write_reg(MPU6050_DEV_ADDR, SMPLRT_DIV, 0x07); //125HZ<48><5A><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
simiic_write_reg(MPU6050_DEV_ADDR, MPU6050_CONFIG, 0x04); //
simiic_write_reg(MPU6050_DEV_ADDR, GYRO_CONFIG, 0x18); //2000
simiic_write_reg(MPU6050_DEV_ADDR, ACCEL_CONFIG, 0x10); //8g
simiic_write_reg(MPU6050_DEV_ADDR, User_Control, 0x00);
simiic_write_reg(MPU6050_DEV_ADDR, INT_PIN_CFG, 0x02);
}
//-------------------------------------------------------------------------------------------------------------------
// @brief <20><>ȡMPU6050<35><30><EFBFBD>ٶȼ<D9B6><C8BC><EFBFBD><EFBFBD><EFBFBD>
// @param NULL
// @return void
// @since v1.0
// Sample usage: ִ<>иú<D0B8><C3BA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֱ<EFBFBD>Ӳ鿴<D3B2><E9BFB4>Ӧ<EFBFBD>ı<EFBFBD><C4B1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
//-------------------------------------------------------------------------------------------------------------------
void get_accdata(void)
{
uint8 dat[6];
simiic_read_regs(MPU6050_DEV_ADDR, ACCEL_XOUT_H, dat, 6, SIMIIC);
mpu_acc_x = (int16)(((uint16)dat[0]<<8 | dat[1]));
mpu_acc_y = (int16)(((uint16)dat[2]<<8 | dat[3]));
mpu_acc_z = (int16)(((uint16)dat[4]<<8 | dat[5]));
}
//-------------------------------------------------------------------------------------------------------------------
// @brief <20><>ȡMPU6050<35><30><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// @param NULL
// @return void
// @since v1.0
// Sample usage: ִ<>иú<D0B8><C3BA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֱ<EFBFBD>Ӳ鿴<D3B2><E9BFB4>Ӧ<EFBFBD>ı<EFBFBD><C4B1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
//-------------------------------------------------------------------------------------------------------------------
void get_gyro(void)
{
uint8 dat[6];
simiic_read_regs(MPU6050_DEV_ADDR, GYRO_XOUT_H, dat, 6, SIMIIC);
mpu_gyro_x = (int16)(((uint16)dat[0]<<8 | dat[1]));
mpu_gyro_y = (int16)(((uint16)dat[2]<<8 | dat[3]));
mpu_gyro_z = (int16)(((uint16)dat[4]<<8 | dat[5]));
}
//-------------------------------------------------------------------------------------------------------------------
// <20><><EFBFBD>Ϻ<EFBFBD><CFBA><EFBFBD><EFBFBD><EFBFBD>ʹ<EFBFBD><CAB9><EFBFBD><EFBFBD><EFBFBD><EFBFBD>IICͨ<43>ţ<EFBFBD><C5A3><EFBFBD><EFBFBD>Ƚ<EFBFBD>Ӳ<EFBFBD><D3B2>IIC<49><43><EFBFBD><EFBFBD><EFBFBD><EFBFBD>IIC<49><43><EFBFBD>Ÿ<EFBFBD><C5B8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EEA3AC><EFBFBD><EFBFBD>ʹ<EFBFBD><CAB9><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͨIO
//-------------------------------------------------------------------------------------------------------------------
////-------------------------------------------------------------------------------------------------------------------
//// <20><><EFBFBD>º<EFBFBD><C2BA><EFBFBD><EFBFBD><EFBFBD>ʹ<EFBFBD><CAB9>Ӳ<EFBFBD><D3B2>IICͨ<43>ţ<EFBFBD><C5A3><EFBFBD><EFBFBD>Ƚ<EFBFBD><C8BD><EFBFBD><EFBFBD><EFBFBD>IIC<49><43>Ӳ<EFBFBD><D3B2>IIC<49>ٶȿ<D9B6><C8BF><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
////-------------------------------------------------------------------------------------------------------------------
//
//#define IIC_NUM IIC_1
//#define IIC_SDA_PIN IIC1_SDA_B17
//#define IIC_SCL_PIN IIC1_SCL_B16
////-------------------------------------------------------------------------------------------------------------------
//// @brief MPU6050<35>Լ캯<D4BC><ECBAAF>
//// @param NULL
//// @return void
//// @since v1.0
//// Sample usage:
////-------------------------------------------------------------------------------------------------------------------
//void mpu6050_self2_check(void)
//{
// uint8 dat=0;
//
// iic_write_reg(IIC_NUM, MPU6050_DEV_ADDR, PWR_MGMT_1, 0x00); //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>״̬
// iic_write_reg(IIC_NUM, MPU6050_DEV_ADDR, SMPLRT_DIV, 0x07); //125HZ<48><5A><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// while(0x07 != dat)
// {
// iic_read_reg(IIC_NUM, MPU6050_DEV_ADDR, SMPLRT_DIV, &dat);
// systick_delay_ms(STM0, 10);
// //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ԭ<EFBFBD><D4AD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>¼<EFBFBD><C2BC><EFBFBD>
// //1 MPU6050<35><30><EFBFBD>ˣ<EFBFBD><CBA3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>µ<EFBFBD><C2B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ĸ<EFBFBD><C4B8>ʼ<EFBFBD><CABC><EFBFBD>
// //2 <20><><EFBFBD>ߴ<EFBFBD><DFB4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>û<EFBFBD>нӺ<D0BD>
// //3 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ҫ<EFBFBD><D2AA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E8A3AC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>3.3V
// }
//}
//
////-------------------------------------------------------------------------------------------------------------------
//// @brief <20><>ʼ<EFBFBD><CABC>MPU6050
//// @param NULL
//// @return void
//// @since v1.0
//// Sample usage:
////-------------------------------------------------------------------------------------------------------------------
//void mpu6050_init_hardware(void)
//{
// systick_delay_ms(STM0, 100); //<2F>ϵ<EFBFBD><CFB5><EFBFBD>ʱ
// iic_init(IIC_NUM, IIC_SDA_PIN, IIC_SCL_PIN,400*1000); //Ӳ<><D3B2>IIC<49><43>ʼ<EFBFBD><CABC> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>400K
//
// mpu6050_self2_check();
// iic_write_reg(IIC_NUM,MPU6050_DEV_ADDR, PWR_MGMT_1, 0x00); //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>״̬
// iic_write_reg(IIC_NUM,MPU6050_DEV_ADDR, SMPLRT_DIV, 0x07); //125HZ<48><5A><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// iic_write_reg(IIC_NUM,MPU6050_DEV_ADDR, MPU6050_CONFIG, 0x04); //
// iic_write_reg(IIC_NUM,MPU6050_DEV_ADDR, GYRO_CONFIG, 0x18); //2000
// iic_write_reg(IIC_NUM,MPU6050_DEV_ADDR, ACCEL_CONFIG, 0x10); //8g
// iic_write_reg(IIC_NUM,MPU6050_DEV_ADDR, User_Control, 0x00);
// iic_write_reg(IIC_NUM,MPU6050_DEV_ADDR, INT_PIN_CFG, 0x02);
//}
//
////-------------------------------------------------------------------------------------------------------------------
//// @brief <20><>ȡMPU6050<35><30><EFBFBD>ٶȼ<D9B6><C8BC><EFBFBD><EFBFBD><EFBFBD>
//// @param NULL
//// @return void
//// @since v1.0
//// Sample usage: ִ<>иú<D0B8><C3BA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֱ<EFBFBD>Ӳ鿴<D3B2><E9BFB4>Ӧ<EFBFBD>ı<EFBFBD><C4B1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
////-------------------------------------------------------------------------------------------------------------------
//void get_accdata_hardware(void)
//{
// uint8 dat[6];
//
// iic_read_reg_bytes(IIC_NUM,MPU6050_DEV_ADDR, ACCEL_XOUT_H, dat, 6);
// mpu_acc_x = (int16)(((uint16)dat[0]<<8 | dat[1]));
// mpu_acc_y = (int16)(((uint16)dat[2]<<8 | dat[3]));
// mpu_acc_z = (int16)(((uint16)dat[4]<<8 | dat[5]));
//}
//
////-------------------------------------------------------------------------------------------------------------------
//// @brief <20><>ȡMPU6050<35><30><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
//// @param NULL
//// @return void
//// @since v1.0
//// Sample usage: ִ<>иú<D0B8><C3BA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֱ<EFBFBD>Ӳ鿴<D3B2><E9BFB4>Ӧ<EFBFBD>ı<EFBFBD><C4B1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
////-------------------------------------------------------------------------------------------------------------------
//void get_gyro_hardware(void)
//{
// uint8 dat[6];
//
// iic_read_reg_bytes(IIC_NUM,MPU6050_DEV_ADDR, GYRO_XOUT_H, dat, 6);
// mpu_gyro_x = (int16)(((uint16)dat[0]<<8 | dat[1]));
// mpu_gyro_y = (int16)(((uint16)dat[2]<<8 | dat[3]));
// mpu_gyro_z = (int16)(((uint16)dat[4]<<8 | dat[5]));
//}

View File

@@ -1,81 +0,0 @@
/*********************************************************************************************************************
* COPYRIGHT NOTICE
* Copyright (c) 2020,<2C><><EFBFBD>ɿƼ<C9BF>
* All rights reserved.
* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>QQȺ<51><C8BA><EFBFBD><EFBFBD>Ⱥ<EFBFBD><C8BA>824575535
*
* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݰ<EFBFBD>Ȩ<EFBFBD><C8A8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɿƼ<C9BF><C6BC><EFBFBD><EFBFBD>У<EFBFBD>δ<EFBFBD><CEB4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ҵ<EFBFBD><D2B5>;<EFBFBD><CDBE>
* <20><>ӭ<EFBFBD><D3AD>λʹ<CEBB>ò<EFBFBD><C3B2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>޸<EFBFBD><DEB8><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EBB1A3><EFBFBD><EFBFBD><EFBFBD>ɿƼ<C9BF><C6BC>İ<EFBFBD>Ȩ<EFBFBD><C8A8><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
*
* @file MPU6050
* @company <09>ɶ<EFBFBD><C9B6><EFBFBD><EFBFBD>ɿƼ<C9BF><C6BC><EFBFBD><EFBFBD>޹<EFBFBD>˾
* @author <09><><EFBFBD>ɿƼ<C9BF>(QQ3184284598)
* @version <09>鿴doc<6F><63>version<6F>ļ<EFBFBD> <20>汾˵<E6B1BE><CBB5>
* @Software ADS v1.2.2
* @Target core TC264D
* @Taobao https://seekfree.taobao.com/
* @date 2020-3-23
* @note
<09><><EFBFBD>߶<EFBFBD><DFB6>
------------------------------------
<09><><EFBFBD><EFBFBD>IIC
SCL <20>鿴SEEKFREE_IIC<49>ļ<EFBFBD><C4BC>ڵ<EFBFBD>SEEKFREE_SCL<43><EFBFBD><EAB6A8>
SDA <20>鿴SEEKFREE_IIC<49>ļ<EFBFBD><C4BC>ڵ<EFBFBD>SEEKFREE_SDA<44><EFBFBD><EAB6A8>
Ӳ<><D3B2>IIC
SCL <20>鿴init_mpu6050_hardware<72><65><EFBFBD><EFBFBD><EFBFBD><EFBFBD>IIC<49><43>ʼ<EFBFBD><CABC>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
SDA <20>鿴init_mpu6050_hardware<72><65><EFBFBD><EFBFBD><EFBFBD><EFBFBD>IIC<49><43>ʼ<EFBFBD><CABC>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
------------------------------------
********************************************************************************************************************/
#ifndef _SEEKFREE_MPU6050_h
#define _SEEKFREE_MPU6050_h
#include "common.h"
// <20><><EFBFBD><EFBFBD>MPU6050<35>ڲ<EFBFBD><DAB2><EFBFBD>ַ
#define MPU6050_DEV_ADDR 0xD0>>1 //IICд<43><D0B4>ʱ<EFBFBD>ĵ<EFBFBD>ַ<EFBFBD>ֽ<EFBFBD><D6BD><EFBFBD><EFBFBD>ݣ<EFBFBD>+1Ϊ<31><CEAA>ȡ
#define SMPLRT_DIV 0x19 //<2F><><EFBFBD><EFBFBD><EFBFBD>Dz<EFBFBD><C7B2><EFBFBD><EFBFBD>ʣ<EFBFBD><CAA3><EFBFBD><EFBFBD><EFBFBD>ֵ<EFBFBD><D6B5>0x07(125Hz)
#define MPU6050_CONFIG 0x1A //<2F><>ͨ<EFBFBD>˲<EFBFBD>Ƶ<EFBFBD>ʣ<EFBFBD><CAA3><EFBFBD><EFBFBD><EFBFBD>ֵ<EFBFBD><D6B5>0x06(5Hz)
#define GYRO_CONFIG 0x1B //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Լ켰<D4BC><ECBCB0><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Χ<EFBFBD><CEA7><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ<EFBFBD><D6B5>0x18(<28><><EFBFBD>Լ죬2000deg/s)
#define ACCEL_CONFIG 0x1C //<2F><><EFBFBD>ټ<EFBFBD><D9BC>Լ졢<D4BC><ECA1A2><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Χ<EFBFBD><CEA7><EFBFBD><EFBFBD>ͨ<EFBFBD>˲<EFBFBD>Ƶ<EFBFBD>ʣ<EFBFBD><CAA3><EFBFBD><EFBFBD><EFBFBD>ֵ<EFBFBD><D6B5>0x01(<28><><EFBFBD>Լ죬2G<32><47>5Hz)
#define INT_PIN_CFG 0x37 //<2F><><EFBFBD><EFBFBD>6050<35><30><EFBFBD><EFBFBD>I2CΪֱͨģʽ<C4A3>Ĵ<EFBFBD><C4B4><EFBFBD>
#define ACCEL_XOUT_H 0x3B
#define ACCEL_XOUT_L 0x3C
#define ACCEL_YOUT_H 0x3D
#define ACCEL_YOUT_L 0x3E
#define ACCEL_ZOUT_H 0x3F
#define ACCEL_ZOUT_L 0x40
#define GYRO_XOUT_H 0x43
#define GYRO_XOUT_L 0x44
#define GYRO_YOUT_H 0x45
#define GYRO_YOUT_L 0x46
#define GYRO_ZOUT_H 0x47
#define GYRO_ZOUT_L 0x48
#define User_Control 0x6A //<2F>ر<EFBFBD>6050<35>Ը<EFBFBD><D4B8><EFBFBD>I2C<32><EFBFBD>Ŀ<EFBFBD><C4BF><EFBFBD>
#define PWR_MGMT_1 0x6B //<2F><>Դ<EFBFBD><D4B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ<EFBFBD><D6B5>0x00(<28><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>)
#define WHO_AM_I 0x75 //IIC<49><43>ַ<EFBFBD>Ĵ<EFBFBD><C4B4><EFBFBD><><C4AC><EFBFBD><EFBFBD>ֵ0x68<36><38>ֻ<EFBFBD><D6BB>)
extern int16 mpu_gyro_x,mpu_gyro_y,mpu_gyro_z;
extern int16 mpu_acc_x,mpu_acc_y,mpu_acc_z;
void mpu6050_init(void); //<2F><>ʼ<EFBFBD><CABC>MPU6050
void get_accdata(void);
void get_gyro(void);
void mpu6050_init_hardware(void);
void get_accdata_hardware(void);
void get_gyro_hardware(void);
#endif

View File

@@ -1,432 +0,0 @@
/*********************************************************************************************************************
* COPYRIGHT NOTICE
* Copyright (c) 2020,<2C><><EFBFBD>ɿƼ<C9BF>
* All rights reserved.
* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>QQȺ<51><C8BA><EFBFBD><EFBFBD>Ⱥ<EFBFBD><C8BA>824575535
*
* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݰ<EFBFBD>Ȩ<EFBFBD><C8A8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɿƼ<C9BF><C6BC><EFBFBD><EFBFBD>У<EFBFBD>δ<EFBFBD><CEB4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ҵ<EFBFBD><D2B5>;<EFBFBD><CDBE>
* <20><>ӭ<EFBFBD><D3AD>λʹ<CEBB>ò<EFBFBD><C3B2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>޸<EFBFBD><DEB8><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EBB1A3><EFBFBD><EFBFBD><EFBFBD>ɿƼ<C9BF><C6BC>İ<EFBFBD>Ȩ<EFBFBD><C8A8><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
*
* @file <09><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @company <09>ɶ<EFBFBD><C9B6><EFBFBD><EFBFBD>ɿƼ<C9BF><C6BC><EFBFBD><EFBFBD>޹<EFBFBD>˾
* @author <09><><EFBFBD>ɿƼ<C9BF>(QQ3184284598)
* @version <09>鿴doc<6F><63>version<6F>ļ<EFBFBD> <20>汾˵<E6B1BE><CBB5>
* @Software ADS v1.2.2
* @Target core TC264D
* @Taobao https://seekfree.taobao.com/
* @date 2020-3-23
* @note
<09><><EFBFBD>߶<EFBFBD><DFB6>
------------------------------------
ģ<><C4A3><EFBFBD>ܽ<EFBFBD> <09><>Ƭ<EFBFBD><C6AC><EFBFBD>ܽ<EFBFBD>
SDA(51<35><31>RX) <09>鿴SEEKFREE_MT9V03X.h<>ļ<EFBFBD><C4BC>е<EFBFBD>MT9V03X_COF_UART_TX<54><EFBFBD><EAB6A8>
SCL(51<35><31>TX) <09>鿴SEEKFREE_MT9V03X.h<>ļ<EFBFBD><C4BC>е<EFBFBD>MT9V03X_COF_UART_RX<52><EFBFBD><EAB6A8>
<09><><EFBFBD>ж<EFBFBD>(VSY) <09>鿴SEEKFREE_MT9V03X.h<>ļ<EFBFBD><C4BC>е<EFBFBD>MT9V03X_VSYNC_PIN<49><EFBFBD><EAB6A8>
<09><><EFBFBD>ж<EFBFBD>(HREF) <09><><EFBFBD><EFBFBD>û<EFBFBD><C3BB>ʹ<EFBFBD>ã<EFBFBD><C3A3><EFBFBD><EFBFBD>˲<EFBFBD><CBB2><EFBFBD><EFBFBD><EFBFBD>
<09><><EFBFBD><EFBFBD><EFBFBD>ж<EFBFBD>(PCLK) <09>鿴SEEKFREE_MT9V03X.h<>ļ<EFBFBD><C4BC>е<EFBFBD>MT9V03X_PCLK_PIN<49><EFBFBD><EAB6A8>
<09><><EFBFBD>ݿ<EFBFBD>(D0-D7) <09>鿴SEEKFREE_MT9V03X.h<>ļ<EFBFBD><C4BC>е<EFBFBD>MT9V03X_DATA_PIN<49><EFBFBD><EAB6A8>
------------------------------------
Ĭ<>Ϸֱ<CFB7><D6B1><EFBFBD><EFBFBD><EFBFBD> 188*120
Ĭ<><C4AC>FPS 50֡
********************************************************************************************************************/
#include "IfxDma.h"
#include "IfxScuEru.h"
#include "zf_stm_systick.h"
#include "zf_gpio.h"
#include "zf_eru.h"
#include "zf_eru_dma.h"
#include "SEEKFREE_MT9V03X.h"
//<2F><><EFBFBD><EFBFBD>4<EFBFBD>ֽڶ<D6BD><DAB6><EFBFBD>
IFX_ALIGN(4) uint8 mt9v03x_image[MT9V03X_H][MT9V03X_W];
uint8 receive[3];
uint8 receive_num = 0;
vuint8 uart_receive_flag;
uint8 link_list_num;
int16 timeout = MT9V03X_INIT_TIMEOUT;
//<2F><>Ҫ<EFBFBD><D2AA><EFBFBD>õ<EFBFBD><C3B5><EFBFBD><EFBFBD><EFBFBD>ͷ<EFBFBD><CDB7><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
int16 MT9V03X_CFG[CONFIG_FINISH][2]=
{
{AUTO_EXP, 0}, //<2F>Զ<EFBFBD><D4B6>ع<EFBFBD><D8B9><EFBFBD><EFBFBD><EFBFBD> <20><>Χ1-63 0Ϊ<30>ر<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>Զ<EFBFBD><D4B6>ع⿪<D8B9><E2BFAA> EXP_TIME<4D><45><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>õ<EFBFBD><C3B5><EFBFBD><EFBFBD>ݽ<EFBFBD><DDBD><EFBFBD><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA><EFBFBD><EFBFBD><EFBFBD>ع<EFBFBD>ʱ<EFBFBD>䣬Ҳ<E4A3AC><D2B2><EFBFBD><EFBFBD><EFBFBD>Զ<EFBFBD><D4B6>ع<EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
//һ<><D2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Dz<EFBFBD><C7B2><EFBFBD>Ҫ<EFBFBD><D2AA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ܣ<EFBFBD><DCA3><EFBFBD>Ϊ<EFBFBD><CEAA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ع<EFBFBD><D8B9><EFBFBD>һ<EFBFBD><EFBFBD>ȽϾ<C8BD><CFBE>ȣ<EFBFBD><C8A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>߷dz<DFB7><C7B3><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȵ<EFBFBD><C8B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Գ<EFBFBD><D4B3><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ø<EFBFBD>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͼ<EFBFBD><CDBC><EFBFBD>ȶ<EFBFBD><C8B6><EFBFBD>
{EXP_TIME, 450}, //<2F>ع<EFBFBD>ʱ<EFBFBD><CAB1> <20><><EFBFBD><EFBFBD>ͷ<EFBFBD>յ<EFBFBD><D5B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Զ<EFBFBD><D4B6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ع<EFBFBD>ʱ<EFBFBD><EFBFBD><E4A3AC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ù<EFBFBD><C3B9><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ع<EFBFBD>ֵ
{FPS, 50}, //ͼ<><CDBC>֡<EFBFBD><D6A1> <20><><EFBFBD><EFBFBD>ͷ<EFBFBD>յ<EFBFBD><D5B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Զ<EFBFBD><D4B6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>FPS<50><53><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>FPS
{SET_COL, MT9V03X_W}, //ͼ<><CDBC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>Χ1-752 K60<36>ɼ<EFBFBD><C9BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>188
{SET_ROW, MT9V03X_H}, //ͼ<><CDBC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>Χ1-480
{LR_OFFSET, 0}, //ͼ<><CDBC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ƫ<EFBFBD><C6AB><EFBFBD><EFBFBD> <20><>ֵ <20><>ƫ<EFBFBD><C6AB> <20><>ֵ <20><>ƫ<EFBFBD><C6AB> <20><>Ϊ188 376 752ʱ<32>޷<EFBFBD><DEB7><EFBFBD><EFBFBD><EFBFBD>ƫ<EFBFBD><C6AB> <20><><EFBFBD><EFBFBD>ͷ<EFBFBD><CDB7>ƫ<EFBFBD><C6AB><EFBFBD><EFBFBD><EFBFBD>ݺ<EFBFBD><DDBA><EFBFBD><EFBFBD>Զ<EFBFBD><D4B6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ƫ<EFBFBD>ƣ<EFBFBD><C6A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ü<EFBFBD><C3BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ƫ<EFBFBD><C6AB>
{UD_OFFSET, 0}, //ͼ<><CDBC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ƫ<EFBFBD><C6AB><EFBFBD><EFBFBD> <20><>ֵ <20><>ƫ<EFBFBD><C6AB> <20><>ֵ <20><>ƫ<EFBFBD><C6AB> <20><>Ϊ120 240 480ʱ<30>޷<EFBFBD><DEB7><EFBFBD><EFBFBD><EFBFBD>ƫ<EFBFBD><C6AB> <20><><EFBFBD><EFBFBD>ͷ<EFBFBD><CDB7>ƫ<EFBFBD><C6AB><EFBFBD><EFBFBD><EFBFBD>ݺ<EFBFBD><DDBA><EFBFBD><EFBFBD>Զ<EFBFBD><D4B6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ƫ<EFBFBD>ƣ<EFBFBD><C6A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ü<EFBFBD><C3BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ƫ<EFBFBD><C6AB>
{GAIN, 32}, //ͼ<><CDBC><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>Χ16-64 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ع<EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD>̶<EFBFBD><CCB6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>¸ı<C2B8>ͼ<EFBFBD><CDBC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>̶<EFBFBD>
{PCLK_MODE, 0}, //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>MT9V034 V2.0<EFBFBD>Լ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϰ汾֧<EFBFBD>ָ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
//<2F><><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1>ģʽ<C4A3><CABD><EFBFBD><EFBFBD> PCLKģʽ Ĭ<>ϣ<EFBFBD>0 <20><>ѡ<EFBFBD><D1A1><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA>0 1<><31> 0<><30><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>źţ<C5BA>1<EFBFBD><31><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>źš<C5BA><><CDA8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ0<CEAA><30><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʹ<EFBFBD><CAB9>CH32V307<30><37>DVP<56>ӿڻ<D3BF>STM32<33><32>DCMI<4D>ӿڲɼ<DAB2><C9BC><EFBFBD>Ҫ<EFBFBD><D2AA><EFBFBD><EFBFBD>Ϊ1)
{INIT, 0} //<2F><><EFBFBD><EFBFBD>ͷ<EFBFBD><CDB7>ʼ<EFBFBD><CABC>ʼ<EFBFBD><CABC>
};
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͷ<EFBFBD>ڲ<EFBFBD><DAB2><EFBFBD>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
int16 GET_CFG[CONFIG_FINISH-1][2]=
{
{AUTO_EXP, 0}, //<2F>Զ<EFBFBD><D4B6>ع<EFBFBD><D8B9><EFBFBD><EFBFBD><EFBFBD>
{EXP_TIME, 0}, //<2F>ع<EFBFBD>ʱ<EFBFBD><CAB1>
{FPS, 0}, //ͼ<><CDBC>֡<EFBFBD><D6A1>
{SET_COL, 0}, //ͼ<><CDBC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
{SET_ROW, 0}, //ͼ<><CDBC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
{LR_OFFSET, 0}, //ͼ<><CDBC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ƫ<EFBFBD><C6AB><EFBFBD><EFBFBD>
{UD_OFFSET, 0}, //ͼ<><CDBC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ƫ<EFBFBD><C6AB><EFBFBD><EFBFBD>
{GAIN, 0}, //ͼ<><CDBC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
{PCLK_MODE, 0}, //<2F><><EFBFBD><EFBFBD><EFBFBD>ź<EFBFBD>
};
//-------------------------------------------------------------------------------------------------------------------
// @brief MT9V03X<33><58><EFBFBD><EFBFBD>ͷ<EFBFBD><CDB7><EFBFBD><EFBFBD><EFBFBD>жϺ<D0B6><CFBA><EFBFBD>
// @param NULL
// @return void
// @since v1.0
// Sample usage:
// @note <20>˺<EFBFBD><CBBA><EFBFBD><EFBFBD><EFBFBD>isr.c<><63> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>жϺ<D0B6><CFBA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
//-------------------------------------------------------------------------------------------------------------------
void mt9v03x_uart_callback(void)
{
while(uart_query(MT9V03X_COF_UART, &receive[receive_num]))
{
receive_num++;
if(1==receive_num && 0XA5!=receive[0]) receive_num = 0;
if(3 == receive_num)
{
receive_num = 0;
uart_receive_flag = 1;
}
}
}
//-------------------------------------------------------------------------------------------------------------------
// @brief <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͷ<EFBFBD>ڲ<EFBFBD><DAB2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ
// @param uartn ѡ<><D1A1>ʹ<EFBFBD>õĴ<C3B5><C4B4><EFBFBD>
// @param buff <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ<EFBFBD>ĵ<EFBFBD>ַ
// @return void
// @since v1.0
// Sample usage: <20><><EFBFBD>øú<C3B8><C3BA><EFBFBD>ǰ<EFBFBD><C7B0><EFBFBD>ȳ<EFBFBD>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
//-------------------------------------------------------------------------------------------------------------------
void set_config(UARTN_enum uartn, int16 buff[CONFIG_FINISH-1][2])
{
uint16 temp, i;
uint8 send_buffer[4];
uart_receive_flag = 0;
//<2F><><EFBFBD>ò<EFBFBD><C3B2><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ο<EFBFBD><CEBF><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֲ<EFBFBD>
//<2F><>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͷ<EFBFBD><CDB7><EFBFBD><EFBFBD><EFBFBD>³<EFBFBD>ʼ<EFBFBD><CABC>
for(i=0; i<CONFIG_FINISH; i++)
{
send_buffer[0] = 0xA5;
send_buffer[1] = (uint8)buff[i][0];
temp = buff[i][1];
send_buffer[2] = temp>>8;
send_buffer[3] = (uint8)temp;
uart_putbuff(uartn,send_buffer,4);
systick_delay_ms(STM0, 2);
}
timeout = MT9V03X_INIT_TIMEOUT;
//<2F>ȴ<EFBFBD><C8B4><EFBFBD><EFBFBD><EFBFBD>ͷ<EFBFBD><CDB7>ʼ<EFBFBD><CABC><EFBFBD>ɹ<EFBFBD>
while(!uart_receive_flag && timeout-- > 0)
{
systick_delay_ms(STM0, 1);
}
uart_receive_flag = 0;
timeout = MT9V03X_INIT_TIMEOUT;
//<2F>ȴ<EFBFBD><C8B4><EFBFBD><EFBFBD>ܻش<DCBB><D8B4><EFBFBD><EFBFBD><EFBFBD>
while(((0xff != receive[1]) || (0xff != receive[2])) && timeout-- > 0)
{
systick_delay_ms(STM0, 1);
}
//<2F><><EFBFBD>ϲ<EFBFBD><CFB2>ֶ<EFBFBD><D6B6><EFBFBD><EFBFBD><EFBFBD>ͷ<EFBFBD><CDB7><EFBFBD>õ<EFBFBD><C3B5><EFBFBD><EFBFBD><EFBFBD>ȫ<EFBFBD><C8AB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E1B1A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͷ<EFBFBD><CDB7>51<35><31>Ƭ<EFBFBD><C6AC><EFBFBD><EFBFBD>eeprom<6F><6D>
//<2F><><EFBFBD><EFBFBD>set_exposure_time<6D><65><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>õ<EFBFBD><C3B5>ع<EFBFBD><D8B9><EFBFBD><EFBFBD>ݲ<EFBFBD><DDB2><EFBFBD><E6B4A2>eeprom<6F><6D>
}
//-------------------------------------------------------------------------------------------------------------------
// @brief <20><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD>ͷ<EFBFBD>ڲ<EFBFBD><DAB2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ
// @param uartn ѡ<><D1A1>ʹ<EFBFBD>õĴ<C3B5><C4B4><EFBFBD>
// @param buff <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ<EFBFBD>ĵ<EFBFBD>ַ
// @return void
// @since v1.0
// Sample usage: <20><><EFBFBD>øú<C3B8><C3BA><EFBFBD>ǰ<EFBFBD><C7B0><EFBFBD>ȳ<EFBFBD>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
//-------------------------------------------------------------------------------------------------------------------
void get_config(UARTN_enum uartn, int16 buff[CONFIG_FINISH-1][2])
{
uint16 temp, i;
uint8 send_buffer[4];
for(i=0; i<CONFIG_FINISH-1; i++)
{
send_buffer[0] = 0xA5;
send_buffer[1] = GET_STATUS;
temp = buff[i][0];
send_buffer[2] = temp>>8;
send_buffer[3] = (uint8)temp;
uart_putbuff(uartn,send_buffer,4);
timeout = MT9V03X_INIT_TIMEOUT;
//<2F>ȴ<EFBFBD><C8B4><EFBFBD><EFBFBD>ܻش<DCBB><D8B4><EFBFBD><EFBFBD><EFBFBD>
while(!uart_receive_flag && timeout-- > 0)
{
systick_delay_ms(STM0, 1);
}
uart_receive_flag = 0;
buff[i][1] = receive[1]<<8 | receive[2];
}
}
//-------------------------------------------------------------------------------------------------------------------
// @brief <20><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD>ͷ<EFBFBD>̼<EFBFBD><CCBC>
// @param uartn ѡ<><D1A1>ʹ<EFBFBD>õĴ<C3B5><C4B4><EFBFBD>
// @return void
// @since v1.0
// Sample usage: <20><><EFBFBD>øú<C3B8><C3BA><EFBFBD>ǰ<EFBFBD><C7B0><EFBFBD>ȳ<EFBFBD>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
//-------------------------------------------------------------------------------------------------------------------
uint16 get_version(UARTN_enum uartn)
{
uint16 temp;
uint8 send_buffer[4];
send_buffer[0] = 0xA5;
send_buffer[1] = GET_STATUS;
temp = GET_VERSION;
send_buffer[2] = temp>>8;
send_buffer[3] = (uint8)temp;
uart_putbuff(uartn,send_buffer,4);
timeout = MT9V03X_INIT_TIMEOUT;
//<2F>ȴ<EFBFBD><C8B4><EFBFBD><EFBFBD>ܻش<DCBB><D8B4><EFBFBD><EFBFBD><EFBFBD>
while(!uart_receive_flag && timeout-- > 0)
{
systick_delay_ms(STM0, 1);
}
uart_receive_flag = 0;
return ((uint16)(receive[1]<<8) | receive[2]);
}
//-------------------------------------------------------------------------------------------------------------------
// @brief <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͷ<EFBFBD>ع<EFBFBD>ʱ<EFBFBD><CAB1>
// @param uartn ѡ<><D1A1>ʹ<EFBFBD>õĴ<C3B5><C4B4><EFBFBD>
// @param light <20><><EFBFBD><EFBFBD><EFBFBD>ع<EFBFBD>ʱ<EFBFBD><CAB1>Խ<EFBFBD><D4BD>ͼ<EFBFBD><CDBC>Խ<EFBFBD><D4BD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͷ<EFBFBD>յ<EFBFBD><D5B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݷֱ<DDB7><D6B1>ʼ<EFBFBD>FPS<50><53><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ع<EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>õ<EFBFBD><C3B5><EFBFBD><EFBFBD>ݹ<EFBFBD><DDB9><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ô<EFBFBD><C3B4><EFBFBD><EFBFBD>ͷ<EFBFBD><CDB7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ
// @return uint16 <20><>ǰ<EFBFBD>ع<EFBFBD>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȷ<EFBFBD><C8B7><EFBFBD>Ƿ<EFBFBD><C7B7><EFBFBD>ȷд<C8B7><D0B4>
// @since v1.0
// Sample usage: <20><><EFBFBD>øú<C3B8><C3BA><EFBFBD>ǰ<EFBFBD><C7B0><EFBFBD>ȳ<EFBFBD>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
//-------------------------------------------------------------------------------------------------------------------
uint16 set_exposure_time(UARTN_enum uartn, uint16 light)
{
uint16 temp;
uint8 send_buffer[4];
send_buffer[0] = 0xA5;
send_buffer[1] = SET_EXP_TIME;
temp = light;
send_buffer[2] = temp>>8;
send_buffer[3] = (uint8)temp;
uart_putbuff(uartn,send_buffer,4);
timeout = MT9V03X_INIT_TIMEOUT;
//<2F>ȴ<EFBFBD><C8B4><EFBFBD><EFBFBD>ܻش<DCBB><D8B4><EFBFBD><EFBFBD><EFBFBD>
while(!uart_receive_flag && timeout-- > 0)
{
systick_delay_ms(STM0, 1);
}
uart_receive_flag = 0;
temp = receive[1]<<8 | receive[2];
return temp;
}
//-------------------------------------------------------------------------------------------------------------------
// @brief <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͷ<EFBFBD>ڲ<EFBFBD><DAB2>Ĵ<EFBFBD><C4B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>д<EFBFBD><D0B4><EFBFBD><EFBFBD>
// @param uartn ѡ<><D1A1>ʹ<EFBFBD>õĴ<C3B5><C4B4><EFBFBD>
// @param addr <20><><EFBFBD><EFBFBD>ͷ<EFBFBD>ڲ<EFBFBD><DAB2>Ĵ<EFBFBD><C4B4><EFBFBD><EFBFBD><EFBFBD>ַ
// @param data <20><>Ҫд<D2AA><D0B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// @return uint16 <20>Ĵ<EFBFBD><C4B4><EFBFBD><EFBFBD><EFBFBD>ǰ<EFBFBD><C7B0><EFBFBD>ݣ<EFBFBD><DDA3><EFBFBD><EFBFBD><EFBFBD>ȷ<EFBFBD><C8B7><EFBFBD>Ƿ<EFBFBD>д<EFBFBD><D0B4><EFBFBD>ɹ<EFBFBD>
// @since v1.0
// Sample usage: <09><><EFBFBD>øú<C3B8><C3BA><EFBFBD>ǰ<EFBFBD><C7B0><EFBFBD>ȳ<EFBFBD>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
//-------------------------------------------------------------------------------------------------------------------
uint16 set_mt9v03x_reg(UARTN_enum uartn, uint8 addr, uint16 data)
{
uint16 temp;
uint8 send_buffer[4];
send_buffer[0] = 0xA5;
send_buffer[1] = SET_ADDR;
temp = addr;
send_buffer[2] = temp>>8;
send_buffer[3] = (uint8)temp;
uart_putbuff(uartn,send_buffer,4);
systick_delay_ms(STM0, 10);
send_buffer[0] = 0xA5;
send_buffer[1] = SET_DATA;
temp = data;
send_buffer[2] = temp>>8;
send_buffer[3] = (uint8)temp;
uart_putbuff(uartn,send_buffer,4);
timeout = MT9V03X_INIT_TIMEOUT;
//<2F>ȴ<EFBFBD><C8B4><EFBFBD><EFBFBD>ܻش<DCBB><D8B4><EFBFBD><EFBFBD><EFBFBD>
while(!uart_receive_flag && timeout-- > 0)
{
systick_delay_ms(STM0, 1);
}
uart_receive_flag = 0;
temp = receive[1]<<8 | receive[2];
return temp;
}
//-------------------------------------------------------------------------------------------------------------------
// @brief MT9V03X<33><58><EFBFBD><EFBFBD>ͷ<EFBFBD><CDB7>ʼ<EFBFBD><CABC>
// @param NULL
// @return void
// @since v1.0
// Sample usage: ʹ<><CAB9>FLEXIO<49>ӿڲɼ<DAB2><C9BC><EFBFBD><EFBFBD><EFBFBD>ͷ
//-------------------------------------------------------------------------------------------------------------------
void mt9v03x_init(void)
{
uint8 i;
camera_type = CAMERA_GRAYSCALE;//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͷ<EFBFBD><CDB7><EFBFBD><EFBFBD>
camera_buffer_addr = mt9v03x_image[0];
boolean interrupt_state = disableInterrupts();
uart_init (MT9V03X_COF_UART, 9600, MT9V03X_COF_UART_TX, MT9V03X_COF_UART_RX); //<2F><>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͷ
enableInterrupts();//<2F><><EFBFBD><EFBFBD><EFBFBD>ж<EFBFBD>
//<2F>ȴ<EFBFBD><C8B4><EFBFBD><EFBFBD><EFBFBD>ͷ<EFBFBD>ϵ<EFBFBD><CFB5><EFBFBD>ʼ<EFBFBD><CABC><EFBFBD>ɹ<EFBFBD> <20><>ʽ<EFBFBD><CABD><EFBFBD><EFBFBD><EFBFBD>֣<EFBFBD><D6A3><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD>ͨ<EFBFBD><CDA8><EFBFBD><EFBFBD>ȡ<EFBFBD><C8A1><EFBFBD>õķ<C3B5>ʽ <20><>ѡһ
//systick_delay_ms(STM0, 1000);//<2F><>ʱ<EFBFBD><CAB1>ʽ
get_config(MT9V03X_COF_UART, GET_CFG);//<2F><>ȡ<EFBFBD><C8A1><EFBFBD>õķ<C3B5>ʽ
uart_receive_flag = 0;
set_config(MT9V03X_COF_UART, MT9V03X_CFG);
//<2F><>ȡ<EFBFBD><C8A1><EFBFBD>ñ<EFBFBD><C3B1>ڲ鿴<DAB2><E9BFB4><EFBFBD><EFBFBD><EFBFBD>Ƿ<EFBFBD><C7B7><EFBFBD>ȷ
get_config(MT9V03X_COF_UART, GET_CFG);
disableInterrupts();
//<2F><><EFBFBD><EFBFBD>ͷ<EFBFBD>ɼ<EFBFBD><C9BC><EFBFBD>ʼ<EFBFBD><CABC>
//<2F><>ʼ<EFBFBD><CABC> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
for(i=0; i<8; i++)
{
gpio_init((PIN_enum)(MT9V03X_DATA_PIN+i), GPI, 0, PULLUP);
}
link_list_num = eru_dma_init(MT9V03X_DMA_CH, GET_PORT_IN_ADDR(MT9V03X_DATA_PIN), camera_buffer_addr, MT9V03X_PCLK_PIN, RISING, MT9V03X_W*MT9V03X_H);//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƶ<EFBFBD><C6B5>300M <20><><EFBFBD><EFBFBD><EFBFBD>ڶ<EFBFBD><DAB6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ΪFALLING
eru_init(MT9V03X_VSYNC_PIN, FALLING); //<2F><>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD><EFBFBD>жϣ<D0B6><CFA3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ<EFBFBD>½<EFBFBD><C2BD>ش<EFBFBD><D8B4><EFBFBD><EFBFBD>ж<EFBFBD>
restoreInterrupts(interrupt_state);
}
uint8 mt9v03x_finish_flag = 0;//һ<><D2BB>ͼ<EFBFBD><CDBC><EFBFBD>ɼ<EFBFBD><C9BC><EFBFBD><EFBFBD>ɱ<EFBFBD>־λ
uint8 mt9v03x_lost_flag = 1; //ͼ<><CDBC><EFBFBD><EFBFBD>ʧ<EFBFBD><CAA7>־λ
uint8 mt9v03x_dma_int_num; //<2F><>ǰDMA<4D>жϴ<D0B6><CFB4><EFBFBD>
uint8 mt9v03x_dma_init_flag; //<2F>Ƿ<EFBFBD><C7B7><EFBFBD>Ҫ<EFBFBD><D2AA><EFBFBD>³<EFBFBD>ʼ<EFBFBD><CABC>
//-------------------------------------------------------------------------------------------------------------------
// @brief MT9V03X<33><58><EFBFBD><EFBFBD>ͷ<EFBFBD><CDB7><EFBFBD>ж<EFBFBD>
// @param NULL
// @return void
// @since v1.0
// Sample usage: <09>˺<EFBFBD><CBBA><EFBFBD><EFBFBD><EFBFBD>isr.c<>б<EFBFBD>eru<72><75>GPIO<49>жϣ<D0B6><CFA3>жϵ<D0B6><CFB5><EFBFBD>
//-------------------------------------------------------------------------------------------------------------------
void mt9v03x_vsync(void)
{
CLEAR_GPIO_FLAG(MT9V03X_VSYNC_PIN);
mt9v03x_dma_int_num = 0;
if(mt9v03x_dma_init_flag || mt9v03x_lost_flag)
{
mt9v03x_dma_init_flag = 0;
IfxDma_resetChannel(&MODULE_DMA, MT9V03X_DMA_CH);
link_list_num = eru_dma_init(MT9V03X_DMA_CH, GET_PORT_IN_ADDR(MT9V03X_DATA_PIN), camera_buffer_addr, MT9V03X_PCLK_PIN, RISING, MT9V03X_W*MT9V03X_H);
dma_start(MT9V03X_DMA_CH);
}
else
{
if(1 == link_list_num)
{
//û<>в<EFBFBD><D0B2><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ӵ<EFBFBD><D3B4><EFBFBD>ģʽ <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ŀ<EFBFBD>ĵ<EFBFBD>ַ
DMA_SET_DESTINATION(MT9V03X_DMA_CH, camera_buffer_addr);
}
dma_start(MT9V03X_DMA_CH);
}
mt9v03x_lost_flag = 1;
}
//-------------------------------------------------------------------------------------------------------------------
// @brief MT9V03X<33><58><EFBFBD><EFBFBD>ͷDMA<4D><41><EFBFBD><EFBFBD><EFBFBD>ж<EFBFBD>
// @param NULL
// @return void
// @since v1.0
// Sample usage: <09>˺<EFBFBD><CBBA><EFBFBD><EFBFBD><EFBFBD>isr.c<>б<EFBFBD>dma<6D>жϵ<D0B6><CFB5><EFBFBD>
//-------------------------------------------------------------------------------------------------------------------
void mt9v03x_dma(void)
{
CLEAR_DMA_FLAG(MT9V03X_DMA_CH);
if(IfxDma_getChannelTransactionRequestLost(&MODULE_DMA, MT9V03X_DMA_CH))
{ //ͼ<><CDBC><EFBFBD><EFBFBD>λ
mt9v03x_finish_flag = 0;
dma_stop(MT9V03X_DMA_CH);
IfxDma_clearChannelTransactionRequestLost(&MODULE_DMA, MT9V03X_DMA_CH);
mt9v03x_dma_init_flag = 1;
}
else
{
mt9v03x_dma_int_num++;
if(mt9v03x_dma_int_num >= link_list_num)
{
//<2F>ɼ<EFBFBD><C9BC><EFBFBD><EFBFBD><EFBFBD>
mt9v03x_dma_int_num = 0;
mt9v03x_lost_flag = 0;
mt9v03x_finish_flag = 1;//һ<><D2BB>ͼ<EFBFBD><CDBC><EFBFBD>Ӳɼ<D3B2><C9BC><EFBFBD>ʼ<EFBFBD><CABC><EFBFBD>ɼ<EFBFBD><C9BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ3.8MS<EFBFBD><EFBFBD><EFBFBD><EFBFBD>(50FPS<50><53>188*120<32>ֱ<EFBFBD><D6B1><EFBFBD>)
dma_stop(MT9V03X_DMA_CH);
}
}
}
//-------------------------------------------------------------------------------------------------------------------
// @brief <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͷͼ<CDB7><CDBC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>λ<EFBFBD><CEBB><EFBFBD>鿴ͼ<E9BFB4><CDBC>
// @param uartn ʹ<>õĴ<C3B5><C4B4>ں<EFBFBD>
// @param image <09><>Ҫ<EFBFBD><D2AA><EFBFBD>͵<EFBFBD>ͼ<EFBFBD><CDBC><EFBFBD><EFBFBD>ַ
// @param width ͼ<><CDBC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// @param height ͼ<><CDBC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// @return void
// @since v1.0
// Sample usage:
//-------------------------------------------------------------------------------------------------------------------
void seekfree_sendimg_03x(UARTN_enum uartn, uint8 *image, uint16 width, uint16 height)
{
uart_putchar(uartn,0x00);uart_putchar(uartn,0xff);uart_putchar(uartn,0x01);uart_putchar(uartn,0x01);//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
uart_putbuff(uartn, image, width*height); //<2F><><EFBFBD><EFBFBD>ͼ<EFBFBD><CDBC>
}

View File

@@ -1,118 +0,0 @@
/*********************************************************************************************************************
* COPYRIGHT NOTICE
* Copyright (c) 2020,<2C><><EFBFBD>ɿƼ<C9BF>
* All rights reserved.
* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>QQȺ<51><C8BA><EFBFBD><EFBFBD>Ⱥ<EFBFBD><C8BA>824575535
*
* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݰ<EFBFBD>Ȩ<EFBFBD><C8A8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɿƼ<C9BF><C6BC><EFBFBD><EFBFBD>У<EFBFBD>δ<EFBFBD><CEB4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ҵ<EFBFBD><D2B5>;<EFBFBD><CDBE>
* <20><>ӭ<EFBFBD><D3AD>λʹ<CEBB>ò<EFBFBD><C3B2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>޸<EFBFBD><DEB8><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EBB1A3><EFBFBD><EFBFBD><EFBFBD>ɿƼ<C9BF><C6BC>İ<EFBFBD>Ȩ<EFBFBD><C8A8><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
*
* @file <09><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @company <09>ɶ<EFBFBD><C9B6><EFBFBD><EFBFBD>ɿƼ<C9BF><C6BC><EFBFBD><EFBFBD>޹<EFBFBD>˾
* @author <09><><EFBFBD>ɿƼ<C9BF>(QQ3184284598)
* @version <09>鿴doc<6F><63>version<6F>ļ<EFBFBD> <20>汾˵<E6B1BE><CBB5>
* @Software ADS v1.2.2
* @Target core TC264D
* @Taobao https://seekfree.taobao.com/
* @date 2020-3-23
* @note
<09><><EFBFBD>߶<EFBFBD><DFB6>
------------------------------------
ģ<><C4A3><EFBFBD>ܽ<EFBFBD> <09><>Ƭ<EFBFBD><C6AC><EFBFBD>ܽ<EFBFBD>
SDA(51<35><31>RX) <09>鿴SEEKFREE_MT9V03X.h<>ļ<EFBFBD><C4BC>е<EFBFBD>MT9V03X_COF_UART_TX<54><EFBFBD><EAB6A8>
SCL(51<35><31>TX) <09>鿴SEEKFREE_MT9V03X.h<>ļ<EFBFBD><C4BC>е<EFBFBD>MT9V03X_COF_UART_RX<52><EFBFBD><EAB6A8>
<09><><EFBFBD>ж<EFBFBD>(VSY) <09>鿴SEEKFREE_MT9V03X.h<>ļ<EFBFBD><C4BC>е<EFBFBD>MT9V03X_VSYNC_PIN<49><EFBFBD><EAB6A8>
<09><><EFBFBD>ж<EFBFBD>(HREF) <09><><EFBFBD><EFBFBD>û<EFBFBD><C3BB>ʹ<EFBFBD>ã<EFBFBD><C3A3><EFBFBD><EFBFBD>˲<EFBFBD><CBB2><EFBFBD><EFBFBD><EFBFBD>
<09><><EFBFBD><EFBFBD><EFBFBD>ж<EFBFBD>(PCLK) <09>鿴SEEKFREE_MT9V03X.h<>ļ<EFBFBD><C4BC>е<EFBFBD>MT9V03X_PCLK_PIN<49><EFBFBD><EAB6A8>
<09><><EFBFBD>ݿ<EFBFBD>(D0-D7) <09>鿴SEEKFREE_MT9V03X.h<>ļ<EFBFBD><C4BC>е<EFBFBD>MT9V03X_DATA_PIN<49><EFBFBD><EAB6A8>
------------------------------------
Ĭ<>Ϸֱ<CFB7><D6B1><EFBFBD><EFBFBD><EFBFBD> 188*120
Ĭ<><C4AC>FPS 50֡
********************************************************************************************************************/
#ifndef _SEEKFREE_MT9V03X_h
#define _SEEKFREE_MT9V03X_h
#include "common.h"
#include "IfxDma_cfg.h"
#include "zf_uart.h"
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͷ<EFBFBD><CDB7><EFBFBD><EFBFBD>
#define MT9V03X_W 188 //ͼ<><CDBC><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <09><>Χ1-188
#define MT9V03X_H 120 //ͼ<><CDBC><EFBFBD>߶<EFBFBD> <09><>Χ1-120
//<2F><>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD>
#define MT9V03X_INIT_TIMEOUT 0x0080
//--------------------------------------------------------------------------------------------------
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
//--------------------------------------------------------------------------------------------------
#define MT9V03X_COF_UART UART_1 //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͷ<EFBFBD><CDB7>ʹ<EFBFBD>õ<EFBFBD><C3B5>Ĵ<EFBFBD><C4B4><EFBFBD>
#define MT9V03X_COF_UART_TX UART1_TX_P02_2
#define MT9V03X_COF_UART_RX UART1_RX_P02_3
#define MT9V03X_VSYNC_PIN ERU_CH3_REQ6_P02_0 //<2F><><EFBFBD>ж<EFBFBD><D0B6><EFBFBD><EFBFBD><EFBFBD> <09><>ѡ<EFBFBD><D1A1>Χ<EFBFBD>ο<EFBFBD>ERU_PIN_enumö<6D><C3B6> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ѡ<EFBFBD><D1A1>Ϊͬһ<CDAC><D2BB>ͨ<EFBFBD><CDA8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ǹ<EFBFBD><C7B9><EFBFBD><EFBFBD>жϵ<D0B6>ͨ<EFBFBD><CDA8>
//<2F><><EFBFBD><EFBFBD>ж<EFBFBD>ѡ<EFBFBD><D1A1>ERU_CH3 <20><>ô<EFBFBD><C3B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>žͲ<C5BE><CDB2><EFBFBD>ѡ<EFBFBD><D1A1>ERU_CH7<48><37><EFBFBD><EFBFBD>Ϊ3<CEAA><33>7<EFBFBD><37><EFBFBD>ж<EFBFBD><D0B6>ǹ<EFBFBD><C7B9>õġ<C3B5>
#define MT9V03X_DATA_PIN P00_0 //<2F><><EFBFBD><EFBFBD>D0<44><30><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>D0<44><30><EFBFBD><EFBFBD>ΪP00_0 <20><>ôD1<44><31>ʹ<EFBFBD>õ<EFBFBD><C3B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ΪP00_1<5F><31><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
//<2F><><EFBFBD><EFBFBD><EFBFBD>ò<EFBFBD><C3B2><EFBFBD>P00_0<5F><30>P02_0<5F><30>P15_0<5F><30><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
#define MT9V03X_PCLK_PIN ERU_CH2_REQ14_P02_1 //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>ѡ<EFBFBD><D1A1>Χ<EFBFBD>ο<EFBFBD>ERU_PIN_enumö<6D><C3B6> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ж<EFBFBD><D0B6><EFBFBD><EFBFBD><EFBFBD>ѡ<EFBFBD><D1A1>Ϊͬһ<CDAC><D2BB>ͨ<EFBFBD><CDA8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ǹ<EFBFBD><C7B9><EFBFBD><EFBFBD>жϵ<D0B6>ͨ<EFBFBD><CDA8>
//<2F><><EFBFBD><EFBFBD>ж<EFBFBD>ѡ<EFBFBD><D1A1>ERU_CH3 <20><>ô<EFBFBD><C3B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>žͲ<C5BE><CDB2><EFBFBD>ѡ<EFBFBD><D1A1>ERU_CH7<48><37><EFBFBD><EFBFBD>Ϊ3<CEAA><33>7<EFBFBD><37><EFBFBD>ж<EFBFBD><D0B6>ǹ<EFBFBD><C7B9>õġ<C3B5>
#define MT9V03X_DMA_CH IfxDma_ChannelId_5 //<2F><><EFBFBD><EFBFBD>ʹ<EFBFBD>õ<EFBFBD>DMAͨ<41><CDA8> 0-47<34><37>ѡ ͨ<><CDA8><EFBFBD><EFBFBD>Խ<EFBFBD><D4BD><EFBFBD><EFBFBD><EFBFBD>ȼ<EFBFBD>Խ<EFBFBD><D4BD>
//<2F><><EFBFBD><EFBFBD>ͷ<EFBFBD><CDB7><EFBFBD><EFBFBD>ö<EFBFBD><C3B6>
typedef enum
{
INIT = 0, //<2F><><EFBFBD><EFBFBD>ͷ<EFBFBD><CDB7>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
AUTO_EXP, //<2F>Զ<EFBFBD><D4B6>ع<EFBFBD><D8B9><EFBFBD><EFBFBD><EFBFBD>
EXP_TIME, //<2F>ع<EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
FPS, //<2F><><EFBFBD><EFBFBD>ͷ֡<CDB7><D6A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
SET_COL, //ͼ<><CDBC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
SET_ROW, //ͼ<><CDBC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
LR_OFFSET, //ͼ<><CDBC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ƫ<EFBFBD><C6AB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
UD_OFFSET, //ͼ<><CDBC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ƫ<EFBFBD><C6AB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
GAIN, //ͼ<><CDBC>ƫ<EFBFBD><C6AB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
PCLK_MODE,
CONFIG_FINISH, //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>λ<EFBFBD><CEBB><EFBFBD><EFBFBD>Ҫ<EFBFBD><D2AA><EFBFBD><EFBFBD>ռλ<D5BC><CEBB><EFBFBD><EFBFBD>
COLOR_GET_WHO_AM_I = 0xEF,
SET_EXP_TIME = 0XF0, //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ع<EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
GET_STATUS, //<2F><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD>ͷ<EFBFBD><CDB7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
GET_VERSION, //<2F>̼<EFBFBD><CCBC><EFBFBD><E6B1BE><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
SET_ADDR = 0XFE, //<2F>Ĵ<EFBFBD><C4B4><EFBFBD><EFBFBD><EFBFBD>ַ<EFBFBD><D6B7><EFBFBD><EFBFBD>
SET_DATA //<2F>Ĵ<EFBFBD><C4B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
}CMD;
extern uint8 receive[3]; //<2F><><EFBFBD><EFBFBD><EFBFBD>ڽ<EFBFBD><DABD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣʱ<CFA2><CAB1><EFBFBD><EFBFBD> <20><>ֹ<EFBFBD>û<EFBFBD>ʹ<EFBFBD>øñ<C3B8><C3B1><EFBFBD>
extern uint8 receive_num; //<2F><><EFBFBD><EFBFBD><EFBFBD>ڽ<EFBFBD><DABD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣʱ<CFA2><CAB1><EFBFBD><EFBFBD> <20><>ֹ<EFBFBD>û<EFBFBD>ʹ<EFBFBD>øñ<C3B8><C3B1><EFBFBD>
extern vuint8 uart_receive_flag; //<2F><><EFBFBD><EFBFBD><EFBFBD>ڽ<EFBFBD><DABD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣʱ<CFA2><CAB1><EFBFBD><EFBFBD> <20><>ֹ<EFBFBD>û<EFBFBD>ʹ<EFBFBD>øñ<C3B8><C3B1><EFBFBD>
extern uint8 mt9v03x_finish_flag;//һ<><D2BB>ͼ<EFBFBD><CDBC><EFBFBD>ɼ<EFBFBD><C9BC><EFBFBD><EFBFBD>ɱ<EFBFBD>־λ
extern uint8 mt9v03x_image[MT9V03X_H][MT9V03X_W];
void mt9v03x_uart_callback(void);
void set_config(UARTN_enum uartn, int16 buff[CONFIG_FINISH-1][2]);
void get_config(UARTN_enum uartn, int16 buff[CONFIG_FINISH-1][2]);
uint16 get_version(UARTN_enum uartn);
uint16 set_exposure_time(UARTN_enum uartn, uint16 light);
void mt9v03x_init(void);
void mt9v03x_vsync(void);
void mt9v03x_dma(void);
void seekfree_sendimg_03x(UARTN_enum uartn, uint8 *image, uint16 width, uint16 height);
void seekfree_sendimg_03x_usb_cdc(uint8 *image, uint16 width, uint16 height);
#endif

View File

@@ -1,531 +0,0 @@
/*********************************************************************************************************************
* COPYRIGHT NOTICE
* Copyright (c) 2020,<2C><><EFBFBD>ɿƼ<C9BF>
* All rights reserved.
* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>QQȺ<51><C8BA><EFBFBD><EFBFBD>Ⱥ<EFBFBD><C8BA>824575535
*
* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݰ<EFBFBD>Ȩ<EFBFBD><C8A8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɿƼ<C9BF><C6BC><EFBFBD><EFBFBD>У<EFBFBD>δ<EFBFBD><CEB4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ҵ<EFBFBD><D2B5>;<EFBFBD><CDBE>
* <20><>ӭ<EFBFBD><D3AD>λʹ<CEBB>ò<EFBFBD><C3B2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>޸<EFBFBD><DEB8><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EBB1A3><EFBFBD><EFBFBD><EFBFBD>ɿƼ<C9BF><C6BC>İ<EFBFBD>Ȩ<EFBFBD><C8A8><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
*
* @file OLED
* @company <09>ɶ<EFBFBD><C9B6><EFBFBD><EFBFBD>ɿƼ<C9BF><C6BC><EFBFBD><EFBFBD>޹<EFBFBD>˾
* @author <09><><EFBFBD>ɿƼ<C9BF>(QQ3184284598)
* @version <09>鿴doc<6F><63>version<6F>ļ<EFBFBD> <20>汾˵<E6B1BE><CBB5>
* @Software ADS v1.2.2
* @Target core TC264D
* @Taobao https://seekfree.taobao.com/
* @date 2020-3-23
* @note
<09><><EFBFBD>߶<EFBFBD><DFB6>
------------------------------------
OLEDҺ<44><D2BA> <20><>Ƭ<EFBFBD><C6AC>
D0 <09>鿴SEEKFREE_OLED<45>ļ<EFBFBD><C4BC>ڵ<EFBFBD>OLED_SCL_PIN <20><EFBFBD><EAB6A8>
D1 <09>鿴SEEKFREE_OLED<45>ļ<EFBFBD><C4BC>ڵ<EFBFBD>OLED_SDA_PIN <20><EFBFBD><EAB6A8>
RES <09>鿴SEEKFREE_OLED<45>ļ<EFBFBD><C4BC>ڵ<EFBFBD>OLED_RST_PIN <20><EFBFBD><EAB6A8>
DC <09>鿴SEEKFREE_OLED<45>ļ<EFBFBD><C4BC>ڵ<EFBFBD>OLED_DC_PIN <20><EFBFBD><EAB6A8>
CS <09>鿴SEEKFREE_OLED<45>ļ<EFBFBD><C4BC>ڵ<EFBFBD>OLED_CS_PIN <20><EFBFBD><EAB6A8>
------------------------------------
********************************************************************************************************************/
#include "zf_assert.h"
#include "zf_gpio.h"
#include "zf_stm_systick.h"
#include "SEEKFREE_FONT.h"
#include "SEEKFREE_PRINTF.h"
#include "SEEKFREE_OLED.h"
#define OLED_SCL(x) gpio_set (OLED_SCL_PIN , x)
#define OLED_SDA(x) gpio_set (OLED_SDA_PIN , x)
#define OLED_RST(x) gpio_set (OLED_RST_PIN , x)
#define OLED_DC(x) gpio_set (OLED_DC_PIN , x)
#define OLED_CS(x) gpio_set (OLED_CS_PIN , x)
//-------------------------------------------------------------------------------------------------------------------
// @brief <20>ڲ<EFBFBD><DAB2><EFBFBD><EFBFBD>ã<EFBFBD><C3A3>û<EFBFBD><C3BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// @param void
// @return
// @since v1.0
// Sample usage:
//-------------------------------------------------------------------------------------------------------------------
void oled_wrdat(uint8 data)
{
uint8 i=8;
OLED_CS(0); //ʹ<><CAB9><EFBFBD>źŶˣ<C5B6><CBA3><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD>ʹ<EFBFBD><CAB9>
OLED_DC(1);
OLED_SCL(0);
while(i--)
{
if(data&0x80){OLED_SDA(1);}
else{OLED_SDA(0);}
OLED_SCL(1);
OLED_SCL(0);
data<<=1;
}
OLED_CS(1); //ʹ<><CAB9><EFBFBD>źŶˣ<C5B6><CBA3><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD>ʹ<EFBFBD><CAB9>
}
//-------------------------------------------------------------------------------------------------------------------
// @brief <20>ڲ<EFBFBD><DAB2><EFBFBD><EFBFBD>ã<EFBFBD><C3A3>û<EFBFBD><C3BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// @param void
// @return
// @since v1.0
// Sample usage:
//-------------------------------------------------------------------------------------------------------------------
void oled_wr6dat(uint8 data)
{
uint8 i=6;
OLED_CS(0); //ʹ<><CAB9><EFBFBD>źŶˣ<C5B6><CBA3><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD>ʹ<EFBFBD><CAB9>
OLED_DC(1);
OLED_SCL(0);
while(i--)
{
if(data&0x80){OLED_SDA(1);}
else{OLED_SDA(0);}
OLED_SCL(1);
OLED_SCL(0);
data<<=1;
}
OLED_CS(1); //ʹ<><CAB9><EFBFBD>źŶˣ<C5B6><CBA3><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD>ʹ<EFBFBD><CAB9>
}
//-------------------------------------------------------------------------------------------------------------------
// @brief <20>ڲ<EFBFBD><DAB2><EFBFBD><EFBFBD>ã<EFBFBD><C3A3>û<EFBFBD><C3BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// @param void
// @return
// @since v1.0
// Sample usage:
//-------------------------------------------------------------------------------------------------------------------
void oled_wrcmd(uint8 cmd)
{
uint8 i=8;
OLED_CS(0); //ʹ<><CAB9><EFBFBD>źŶˣ<C5B6><CBA3><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD>ʹ<EFBFBD><CAB9>
OLED_DC(0);
OLED_SCL(0);;
while(i--)
{
if(cmd&0x80){OLED_SDA(1);}
else{OLED_SDA(0);}
OLED_SCL(1);
OLED_SCL(0);
cmd<<=1;
}
OLED_CS(1); //ʹ<><CAB9><EFBFBD>źŶˣ<C5B6><CBA3><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD>ʹ<EFBFBD><CAB9>
}
//-------------------------------------------------------------------------------------------------------------------
// @brief <20>ڲ<EFBFBD><DAB2><EFBFBD><EFBFBD>ã<EFBFBD><C3A3>û<EFBFBD><C3BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// @param void
// @return
// @since v1.0
// Sample usage:
//-------------------------------------------------------------------------------------------------------------------
void oled_hexascii(uint16 hex,int8 * Print)
{
uint8 hexcheck ;
uint8 TEMP ;
TEMP = 6 ;
Print[TEMP ]='\0';
while(TEMP)
{
TEMP -- ;
hexcheck = hex%10 ;
hex /=10 ;
Print[TEMP ] = hexcheck + 0x30 ;
}
}
//-------------------------------------------------------------------------------------------------------------------
// @brief OLED<45><44>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// @param NULL
// @return void
// @since v1.0
// Sample usage:
//-------------------------------------------------------------------------------------------------------------------
void oled_init(void)
{
gpio_init (OLED_SCL_PIN, GPO,1,PUSHPULL);
gpio_init (OLED_SDA_PIN, GPO,0,PUSHPULL);
gpio_init (OLED_RST_PIN, GPO,1,PUSHPULL);
gpio_init (OLED_DC_PIN , GPO,1,PUSHPULL);
gpio_init (OLED_CS_PIN , GPO,1,PUSHPULL);
OLED_SCL(1);
OLED_RST(0);
systick_delay_ms(STM0, 50);
OLED_RST(1);
oled_wrcmd(0xae);//--turn off oled panel
oled_wrcmd(0x00);//---set low column address
oled_wrcmd(0x10);//---set high column address
oled_wrcmd(0x40);//--set start line address Set Mapping RAM Display Start Line (0x00~0x3F)
oled_wrcmd(0x81);//--set contrast control register
oled_wrcmd(Brightness); // Set SEG Output Current Brightness
#if (0 == OLED_DISPLAY_DIR)
oled_wrcmd(0xa1);//--Set SEG/Column Mapping 0xa0<61><30><EFBFBD>ҷ<EFBFBD><D2B7><EFBFBD> 0xa1<61><31><EFBFBD><EFBFBD>
oled_wrcmd(0xc8);//Set COM/Row Scan Direction 0xc0<63><30><EFBFBD>·<EFBFBD><C2B7><EFBFBD> 0xc8<63><38><EFBFBD><EFBFBD>
#else
oled_wrcmd(0xa0);//--Set SEG/Column Mapping 0xa0<61><30><EFBFBD>ҷ<EFBFBD><D2B7><EFBFBD> 0xa1<61><31><EFBFBD><EFBFBD>
oled_wrcmd(0xc0);//Set COM/Row Scan Direction 0xc0<63><30><EFBFBD>·<EFBFBD><C2B7><EFBFBD> 0xc8<63><38><EFBFBD><EFBFBD>
#endif
oled_wrcmd(0xa6);//--set normal display
oled_wrcmd(0xa8);//--set multiplex ratio(1 to 64)
oled_wrcmd(0x3f);//--1/64 duty
oled_wrcmd(0xd3);//-set display offset Shift Mapping RAM Counter (0x00~0x3F)
oled_wrcmd(0x00);//-not offset
oled_wrcmd(0xd5);//--set display clock divide ratio/oscillator frequency
oled_wrcmd(0x80);//--set divide ratio, Set Clock as 100 Frames/Sec
oled_wrcmd(0xd9);//--set pre-charge period
oled_wrcmd(0xf1);//Set Pre-Charge as 15 Clocks & Discharge as 1 Clock
oled_wrcmd(0xda);//--set com pins hardware configuration
oled_wrcmd(0x12);
oled_wrcmd(0xdb);//--set vcomh
oled_wrcmd(0x40);//Set VCOM Deselect Level
oled_wrcmd(0x20);//-Set Page Addressing Mode (0x00/0x01/0x02)
oled_wrcmd(0x02);//
oled_wrcmd(0x8d);//--set Charge Pump enable/disable
oled_wrcmd(0x14);//--set(0x10) disable
oled_wrcmd(0xa4);// Disable Entire Display On (0xa4/0xa5)
oled_wrcmd(0xa6);// Disable Inverse Display On (0xa6/a7)
oled_wrcmd(0xaf);//--turn on oled panel
oled_fill(0x00); //<2F><>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD>
oled_set_pos(0,0);
}
//-------------------------------------------------------------------------------------------------------------------
// @brief OLED<45><44>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// @param x x<><78><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>0-127
// @param y y<><79><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>0-7
// @return void
// @since v1.0
// Sample usage:
//-------------------------------------------------------------------------------------------------------------------
void oled_set_pos(uint8 x, uint8 y)
{
ZF_ASSERT(X_WIDTH>x); //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ԣ<EFBFBD><D4A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ա<EFBFBD>־<EFBFBD><D6BE><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Χ
ZF_ASSERT((Y_WIDTH/8)>y);
oled_wrcmd(0xb0+y);
oled_wrcmd(((x&0xf0)>>4)|0x10);
oled_wrcmd((x&0x0f)|0x00);
}
//-------------------------------------------------------------------------------------------------------------------
// @brief OLED<45><44><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// @param bmp_data <09><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɫѡ<C9AB><D1A1>(0x00 or 0xff)
// @return void
// @since v1.0
// Sample usage:
//-------------------------------------------------------------------------------------------------------------------
void oled_fill(uint8 bmp_data)
{
uint8 y,x;
for(y=0;y<8;y++)
{
oled_wrcmd(0xb0+y);
oled_wrcmd(0x01);
oled_wrcmd(0x10);
for(x=0;x<X_WIDTH;x++) oled_wrdat(bmp_data);
}
}
//-------------------------------------------------------------------------------------------------------------------
// @brief OLED<45><44><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>8<EFBFBD><38><EFBFBD><EFBFBD><EFBFBD>صĵ<D8B5><C4B5><EFBFBD><EFBFBD><EFBFBD>Ϩ<EFBFBD><CFA8>
// @param x x<><78><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>0-127
// @param y y<><79><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>0-7
// @return void
// @since v1.0
// Sample usage: oled_putpixel(0,0,0xff);//<2F><>0,0<><30><EFBFBD><EFBFBD> 8<><38><EFBFBD><EFBFBD>ȫ<EFBFBD><C8AB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// Sample usage: oled_putpixel(0,0,0x01);//<2F><>0,0<><30><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>λ<EFBFBD><CEBB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>7<EFBFBD><37>Ϩ<EFBFBD><CFA8>
// @note ͬ<><CDAC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>8<EFBFBD><38><EFBFBD><EFBFBD><EFBFBD>صĵ<D8B5><C4B5><EFBFBD><EFBFBD><EFBFBD>Ϩ<EFBFBD><CFA8>
//-------------------------------------------------------------------------------------------------------------------
void oled_putpixel(uint8 x,uint8 y,uint8 data1)
{
oled_set_pos(x,y);
oled_wrcmd(0xb0+y);
oled_wrcmd(((x&0xf0)>>4)|0x10);
oled_wrcmd((x&0x0f)|0x00);
oled_wrdat(data1);
}
//-------------------------------------------------------------------------------------------------------------------
// @brief OLED<45>ر<EFBFBD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// @param x x<><78><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>0-127
// @param y y<><79><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>0-7
// @return void
// @since v1.0
// Sample usage:
//-------------------------------------------------------------------------------------------------------------------
void oled_clrpixel(uint8 x,uint8 y)
{
oled_set_pos(x,y);
oled_wrcmd(0xb0+y);
oled_wrcmd(((x&0xf0)>>4)|0x10);
oled_wrcmd((x&0x0f)|0x00);
oled_wrdat(0x00);
}
//-------------------------------------------------------------------------------------------------------------------
// @brief OLED<45><44>ʾ<EFBFBD>ַ<EFBFBD><D6B7><EFBFBD>(6*8<><38><EFBFBD><EFBFBD>)
// @param x x<><78><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>0-127
// @param y y<><79><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>0-7
// @param ch[] <20>ַ<EFBFBD><D6B7><EFBFBD>
// @return void
// @since v1.0
// Sample usage:
//-------------------------------------------------------------------------------------------------------------------
void oled_p6x8str(uint8 x,uint8 y,const int8 ch[])
{
uint8 c=0,i=0,j=0;
while (ch[j]!='\0')
{
c =ch[j]-32;
if(x>126){x=0;y++;}
oled_set_pos(x,y);
for(i=0;i<6;i++) oled_wrdat(oled_6x8[c][i]);
x+=6;
j++;
}
}
//-------------------------------------------------------------------------------------------------------------------
// @brief OLED<45><44>ʾ<EFBFBD>ַ<EFBFBD><D6B7><EFBFBD>(8*16<31><36><EFBFBD><EFBFBD>)
// @param x x<><78><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>0-127
// @param y y<><79><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>0-7
// @param ch[] <20>ַ<EFBFBD><D6B7><EFBFBD>
// @return void
// @since v1.0
// Sample usage: <09><><EFBFBD><EFBFBD>ע<EFBFBD><EFBFBD><E2A3AC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ַ<EFBFBD><D6B7>и<EFBFBD>λ16<31><36><EFBFBD><EFBFBD><EFBFBD><EFBFBD><79><D3A6><EFBFBD><EFBFBD>ÿ<EFBFBD>ε<EFBFBD><CEB5><EFBFBD>2
//-------------------------------------------------------------------------------------------------------------------
void oled_p8x16str(uint8 x,uint8 y,const int8 ch[])
{
uint8 c=0,i=0,j=0;
while (ch[j]!='\0')
{
c =ch[j]-32;
if(x>120){x=0;y++;}
oled_set_pos(x,y);
for(i=0;i<8;i++) oled_wrdat(oled_8x16[c*16+i]);
oled_set_pos(x,y+1);
for(i=0;i<8;i++) oled_wrdat(oled_8x16[c*16+i+8]);
x+=8;
j++;
}
}
//-------------------------------------------------------------------------------------------------------------------
// @brief OLED<45><44>ʾ<EFBFBD>޷<EFBFBD><DEB7><EFBFBD><EFBFBD><EFBFBD>(6*8<><38><EFBFBD><EFBFBD>)
// @param x x<><78><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>0-127
// @param y y<><79><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>0-7
// @param num <20>޷<EFBFBD><DEB7><EFBFBD><EFBFBD><EFBFBD>
// @return void
// @since v1.0
// Sample usage:
//-------------------------------------------------------------------------------------------------------------------
void oled_uint16(uint8 x, uint8 y, uint16 num)
{
int8 ch[7];
oled_hexascii(num,ch);
oled_p6x8str(x, y, &ch[1]); //<2F><>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD> 6*8<><38><EFBFBD><EFBFBD>
//oled_p8x16str(x, y, &ch[1]); //<2F><>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD> 8*16<31><36><EFBFBD><EFBFBD>
}
//-------------------------------------------------------------------------------------------------------------------
// @brief OLED<45><44>ʾ<EFBFBD>з<EFBFBD><D0B7><EFBFBD><EFBFBD><EFBFBD>(6*8<><38><EFBFBD><EFBFBD>)
// @param x x<><78><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>0-127
// @param y y<><79><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>0-7
// @param num <20>з<EFBFBD><D0B7><EFBFBD><EFBFBD><EFBFBD>
// @return void
// @since v1.0
// Sample usage:
//-------------------------------------------------------------------------------------------------------------------
void oled_int16(uint8 x, uint8 y, int16 num)
{
int8 ch[7];
if(num<0) {num = -num;oled_p6x8str(x, y, "-");}
else oled_p6x8str(x, y, " ");
x+=6;
oled_hexascii(num,ch);
oled_p6x8str(x, y, &ch[1]); //<2F><>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD> 6*8<><38><EFBFBD><EFBFBD>
}
//-------------------------------------------------------------------------------------------------------------------
// @brief OLED<45><44>ʾ32λ<32>з<EFBFBD><D0B7><EFBFBD><><C8A5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ч<EFBFBD><D0A7>0)
// @param x x<><78><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>0-127
// @param y y<><79><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>0-7
// @param dat <09><>Ҫ<EFBFBD><D2AA>ʾ<EFBFBD>ı<EFBFBD><C4B1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>uint32
// @param num <09><>Ҫ<EFBFBD><D2AA>ʾ<EFBFBD><CABE>λ<EFBFBD><CEBB> <20><><EFBFBD><EFBFBD>10λ <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// @return void
// @since v1.0
// Sample usage: oled_printf_int32(0,0,x,5);//x<><78><EFBFBD><EFBFBD>Ϊint32 uint16 int16 uint8 int8<74><38><EFBFBD><EFBFBD>
// Sample usage: <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾһ<CABE><D2BB> <20><>-<2D><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾһ<CABE><D2BB><EFBFBD>ո<EFBFBD>
//-------------------------------------------------------------------------------------------------------------------
void oled_printf_int32(uint16 x,uint16 y,int32 dat,uint8 num)
{
int8 buff[34];
uint32 length;
if(10<num) num = 10;
num++;
if(0>dat) length = zf_sprintf( &buff[0],"%d",dat);//<2F><><EFBFBD><EFBFBD>
else
{
buff[0] = ' ';
length = zf_sprintf( &buff[1],"%d",dat);
length++;
}
while(length < num)
{
buff[length] = ' ';
length++;
}
buff[num] = '\0';
oled_p6x8str((uint8)x, (uint8)y, buff); //<2F><>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD>
}
//-------------------------------------------------------------------------------------------------------------------
// @brief OLED<45><44>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD><EFBFBD><EFBFBD><><C8A5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ч<EFBFBD><D0A7>0)
// @param x x<><78><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>0-127
// @param y y<><79><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>0-7
// @param dat <09><>Ҫ<EFBFBD><D2AA>ʾ<EFBFBD>ı<EFBFBD><C4B1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>float<61><74>double
// @param num <20><><EFBFBD><EFBFBD>λ<EFBFBD><CEBB>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>10λ
// @param pointnum С<><D0A1>λ<EFBFBD><CEBB>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
// @return void
// @since v1.0
// Sample usage: oled_printf_float(0,0,x,2,3);//<2F><>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾС<><D0A1><EFBFBD><EFBFBD>ʾ<EFBFBD><CABE>λ
// @note <20>ر<EFBFBD>ע<EFBFBD><EFBFBD><E2B5B1><EFBFBD><EFBFBD>С<EFBFBD><D0A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾ<EFBFBD><CABE>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD>д<EFBFBD><D0B4><EFBFBD><EFBFBD>ֵ<EFBFBD><D6B5>һ<EFBFBD><D2BB><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD>
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڸ<EFBFBD><DAB8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȶ<EFBFBD>ʧ<EFBFBD><CAA7><EFBFBD><EFBFBD>µģ<C2B5><C4A3><EFBFBD><E2B2A2><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// <20>й<EFBFBD><D0B9><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E9A3AC><EFBFBD><EFBFBD><EFBFBD>аٶ<D0B0>ѧϰ <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȶ<EFBFBD>ʧ<EFBFBD><CAA7><EFBFBD>
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾһ<CABE><D2BB> <20><>-<2D><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾһ<CABE><D2BB><EFBFBD>ո<EFBFBD>
//-------------------------------------------------------------------------------------------------------------------
void oled_printf_float(uint16 x,uint16 y,double dat,uint8 num,uint8 pointnum)
{
uint32 length;
int8 buff[34];
int8 start,end,point;
if(6<pointnum) pointnum = 6;
if(10<num) num = 10;
if(0>dat) length = zf_sprintf( &buff[0],"%f",dat);//<2F><><EFBFBD><EFBFBD>
else
{
length = zf_sprintf( &buff[1],"%f",dat);
length++;
}
point = (int8)(length - 7); //<2F><><EFBFBD><EFBFBD>С<EFBFBD><D0A1><EFBFBD><EFBFBD>λ<EFBFBD><CEBB>
start = point - num - 1; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʼλ
end = point + pointnum + 1; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>λ
while(0>start)//<2F><><EFBFBD><EFBFBD>λ<EFBFBD><CEBB><EFBFBD><EFBFBD> ĩβӦ<CEB2><D3A6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ո<EFBFBD>
{
buff[end] = ' ';
end++;
start++;
}
if(0>dat) buff[start] = '-';
else buff[start] = ' ';
buff[end] = '\0';
oled_p6x8str((uint8)x, (uint8)y, buff); //<2F><>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD>
}
//-------------------------------------------------------------------------------------------------------------------
// @brief OLED<45><44>ʾͼ<CABE><CDBC>
// @param high ͼ<><CDBC><EFBFBD>߶<EFBFBD>
// @param width ͼ<><CDBC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// @param *p ͼ<><CDBC><EFBFBD><EFBFBD>ַ<EFBFBD><D6B7><EFBFBD><EFBFBD><EFBFBD>
// @param value <09><>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD>ֵ
// @return void
// @since v1.0
// Sample usage:
// @Note ʹ<><CAB9>Image2lcd V3.2<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȡģ C<><43><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ˮƽɨ<C6BD><C9A8>
// <20><><EFBFBD>ȸ߶<C8B8><DFB6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>ɫ<EFBFBD><C9AB>ת 256ɫ
//-------------------------------------------------------------------------------------------------------------------
void oled_dis_bmp(uint16 high, uint16 width, uint8 *p,uint8 value)
{
int16 i,j;
int16 temp,temp1;
uint8 dat;
temp1 = high%8;
if(temp1 == 0) temp = high/8;
else temp = high/8+1;
for(i=0; i<temp; i++)
{
oled_set_pos(0,(uint8)i);
for(j=0; j<width; j++)
{
dat = 0;
dat |= (*(p+i*8*width+j+width*0) > value? 1: 0)<<0;
if( i<(temp-1) || !temp1 || temp1>=2)dat |= (*(p+i*8*width+j+width*1) > value? 1: 0)<<1;
if( i<(temp-1) || !temp1 || temp1>=3)dat |= (*(p+i*8*width+j+width*2) > value? 1: 0)<<2;
if( i<(temp-1) || !temp1 || temp1>=4)dat |= (*(p+i*8*width+j+width*3) > value? 1: 0)<<3;
if( i<(temp-1) || !temp1 || temp1>=5)dat |= (*(p+i*8*width+j+width*4) > value? 1: 0)<<4;
if( i<(temp-1) || !temp1 || temp1>=6)dat |= (*(p+i*8*width+j+width*5) > value? 1: 0)<<5;
if( i<(temp-1) || !temp1 || temp1>=7)dat |= (*(p+i*8*width+j+width*6) > value? 1: 0)<<6;
if( i<(temp-1) || !temp1 || temp1>=8)dat |= (*(p+i*8*width+j+width*7) > value? 1: 0)<<7;
oled_wrdat(dat);
}
}
}
//-------------------------------------------------------------------------------------------------------------------
// @brief <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾ
// @param x <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> 0-127
// @param y <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> 0-7
// @param size ȡģ<C8A1><C4A3>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD>õĺ<C3B5><C4BA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>С<EFBFBD><D0A1>Ҳ<EFBFBD><D2B2><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ռ<EFBFBD>õĵ<C3B5><C4B5>󳤿<EFBFBD>Ϊ<EFBFBD><CEAA><EFBFBD>ٸ<EFBFBD><D9B8>㣬ȡģ<C8A1><C4A3>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD>Ҫ<EFBFBD><D2AA><EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD>ġ<EFBFBD>
// @param *p <20><>Ҫ<EFBFBD><D2AA>ʾ<EFBFBD>ĺ<EFBFBD><C4BA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// @param len <20><>Ҫ<EFBFBD><D2AA>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD>λ
// @return void
// @since v1.0
// Sample usage:
// @Note ʹ<><CAB9>PCtoLCD2002<30><32><EFBFBD><EFBFBD>ȡģ <20><><EFBFBD><EFBFBD><EBA1A2><EFBFBD><EFBFBD>ʽ<EFBFBD><CABD>˳<EFBFBD><CBB3> 16*16
//-------------------------------------------------------------------------------------------------------------------
void oled_print_chinese(uint8 x, uint8 y, uint8 size, const uint8 *p, uint8 len)
{
int16 i,j,k;
for(i=0; i<len; i++)
{
for(j=0; j<(size/8); j++)
{
oled_set_pos(x+i*size,y+j);
for(k=0; k<16; k++)
{
oled_wrdat(*p);
p++;
}
}
}
}

View File

@@ -1,91 +0,0 @@
/*********************************************************************************************************************
* COPYRIGHT NOTICE
* Copyright (c) 2020,<2C><><EFBFBD>ɿƼ<C9BF>
* All rights reserved.
* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>QQȺ<51><C8BA><EFBFBD><EFBFBD>Ⱥ<EFBFBD><C8BA>824575535
*
* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݰ<EFBFBD>Ȩ<EFBFBD><C8A8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɿƼ<C9BF><C6BC><EFBFBD><EFBFBD>У<EFBFBD>δ<EFBFBD><CEB4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ҵ<EFBFBD><D2B5>;<EFBFBD><CDBE>
* <20><>ӭ<EFBFBD><D3AD>λʹ<CEBB>ò<EFBFBD><C3B2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>޸<EFBFBD><DEB8><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EBB1A3><EFBFBD><EFBFBD><EFBFBD>ɿƼ<C9BF><C6BC>İ<EFBFBD>Ȩ<EFBFBD><C8A8><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
*
* @file OLED
* @company <09>ɶ<EFBFBD><C9B6><EFBFBD><EFBFBD>ɿƼ<C9BF><C6BC><EFBFBD><EFBFBD>޹<EFBFBD>˾
* @author <09><><EFBFBD>ɿƼ<C9BF>(QQ3184284598)
* @version <09>鿴doc<6F><63>version<6F>ļ<EFBFBD> <20>汾˵<E6B1BE><CBB5>
* @Software ADS v1.2.2
* @Target core TC264D
* @Taobao https://seekfree.taobao.com/
* @date 2020-3-23
* @note
<09><><EFBFBD>߶<EFBFBD><DFB6>
------------------------------------
OLEDҺ<44><D2BA> <20><>Ƭ<EFBFBD><C6AC>
D0 <09>鿴SEEKFREE_OLED<45>ļ<EFBFBD><C4BC>ڵ<EFBFBD>OLED_SCL_PIN <20><EFBFBD><EAB6A8>
D1 <09>鿴SEEKFREE_OLED<45>ļ<EFBFBD><C4BC>ڵ<EFBFBD>OLED_SDA_PIN <20><EFBFBD><EAB6A8>
RES <09>鿴SEEKFREE_OLED<45>ļ<EFBFBD><C4BC>ڵ<EFBFBD>OLED_RST_PIN <20><EFBFBD><EAB6A8>
DC <09>鿴SEEKFREE_OLED<45>ļ<EFBFBD><C4BC>ڵ<EFBFBD>OLED_DC_PIN <20><EFBFBD><EAB6A8>
CS <09>鿴SEEKFREE_OLED<45>ļ<EFBFBD><C4BC>ڵ<EFBFBD>OLED_CS_PIN <20><EFBFBD><EAB6A8>
------------------------------------
********************************************************************************************************************/
#ifndef _SEEKFREE_OLED_h
#define _SEEKFREE_OLED_h
#include "common.h"
//----<2D><EFBFBD><EAB6A8>OLED<45><44><EFBFBD><EFBFBD>----
#define OLED_SCL_PIN P15_3
#define OLED_SDA_PIN P15_5
#define OLED_RST_PIN P15_1
#define OLED_DC_PIN P15_0
#define OLED_CS_PIN P15_2
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD>
//0 <20><><EFBFBD><EFBFBD>ģʽ
//1 <20><><EFBFBD><EFBFBD>ģʽ <20><>ת180
#define OLED_DISPLAY_DIR 0
#if (0==OLED_DISPLAY_DIR || 1==OLED_DISPLAY_DIR)
#define X_WIDTH 128
#define Y_WIDTH 64
#else
#error "OLED_DISPLAY_DIR <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>"
#endif
#define Brightness 0x7f //<2F><><EFBFBD><EFBFBD>OLED<45><44><EFBFBD><EFBFBD> Խ<><D4BD>Խ<EFBFBD><D4BD> <20><>Χ0-0XFF
#define XLevelL 0x00
#define XLevelH 0x10
#define XLevel ((XLevelH&0x0F)*16+XLevelL)
#define Max_Column 128
#define Max_Row 64
void oled_init(void);
void oled_fill(uint8 dat);
void oled_set_pos(uint8 x, uint8 y);
void oled_putpixel(uint8 x,uint8 y,uint8 data1);
void oled_clrpixel(uint8 x,uint8 y);
void oled_p6x8str(uint8 x,uint8 y,const int8 ch[]);
void oled_p8x16str(uint8 x,uint8 y,const int8 ch[]);
void oled_uint16(uint8 x, uint8 y, uint16 num);
void oled_int16(uint8 x, uint8 y, int16 num);
void oled_printf_int32(uint16 x,uint16 y,int32 dat,uint8 num);
void oled_printf_float(uint16 x,uint16 y,double dat,uint8 num,uint8 pointnum);
void oled_dis_bmp(uint16 high, uint16 width, uint8 *p,uint8 value);
void oled_print_chinese(uint8 x, uint8 y, uint8 size, const uint8 *p, uint8 len);
/********************************************************************/
#endif

View File

@@ -1,251 +0,0 @@
/*********************************************************************************************************************
* COPYRIGHT NOTICE
* Copyright (c) 2020,<2C><><EFBFBD>ɿƼ<C9BF>
* All rights reserved.
* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>QQȺ<51><C8BA><EFBFBD><EFBFBD>Ⱥ<EFBFBD><C8BA>824575535
*
* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݰ<EFBFBD>Ȩ<EFBFBD><C8A8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɿƼ<C9BF><C6BC><EFBFBD><EFBFBD>У<EFBFBD>δ<EFBFBD><CEB4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ҵ<EFBFBD><D2B5>;<EFBFBD><CDBE>
* <20><>ӭ<EFBFBD><D3AD>λʹ<CEBB>ò<EFBFBD><C3B2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>޸<EFBFBD><DEB8><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EBB1A3><EFBFBD><EFBFBD><EFBFBD>ɿƼ<C9BF><C6BC>İ<EFBFBD>Ȩ<EFBFBD><C8A8><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
*
* @file MPU6050
* @company <09>ɶ<EFBFBD><C9B6><EFBFBD><EFBFBD>ɿƼ<C9BF><C6BC><EFBFBD><EFBFBD>޹<EFBFBD>˾
* @author <09><><EFBFBD>ɿƼ<C9BF>(QQ3184284598)
* @version <09>鿴doc<6F><63>version<6F>ļ<EFBFBD> <20>汾˵<E6B1BE><CBB5>
* @Software ADS v1.2.2
* @Target core TC264D
* @Taobao https://seekfree.taobao.com/
* @date 2020-3-23
* @note
<09><><EFBFBD>߶<EFBFBD><DFB6>
------------------------------------
<09><><EFBFBD><EFBFBD>IIC
SCL <20>鿴SEEKFREE_IIC<49>ļ<EFBFBD><C4BC>ڵ<EFBFBD>SEEKFREE_SCL<43><EFBFBD><EAB6A8>
SDA <20>鿴SEEKFREE_IIC<49>ļ<EFBFBD><C4BC>ڵ<EFBFBD>SEEKFREE_SDA<44><EFBFBD><EAB6A8>
Ӳ<><D3B2>IIC
SCL <20>鿴init_mpu6050_hardware<72><65><EFBFBD><EFBFBD><EFBFBD><EFBFBD>IIC<49><43>ʼ<EFBFBD><CABC>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
SDA <20>鿴init_mpu6050_hardware<72><65><EFBFBD><EFBFBD><EFBFBD><EFBFBD>IIC<49><43>ʼ<EFBFBD><CABC>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
------------------------------------
ע<><D7A2><EFBFBD><EFBFBD><EFBFBD>RDA5807<30><37>SCL<43><4C>SDA<44><41><EFBFBD><EFBFBD>Ҫ<EFBFBD><D2AA><EFBFBD><EFBFBD>1K<31><4B><EFBFBD><EFBFBD>Ȼ<EFBFBD><C8BB><EFBFBD><EFBFBD><EFBFBD>뵥Ƭ<EBB5A5><C6AC><EFBFBD><EFBFBD><EFBFBD>ӣ<EFBFBD><D3A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>޷<EFBFBD>ͨ<EFBFBD><CDA8>
********************************************************************************************************************/
#include "SEEKFREE_IIC.h"
#include "zf_stm_systick.h"
#include "SEEKFREE_RDA5807.h"
#define ack 1 //<2F><>Ӧ<EFBFBD><D3A6>
#define no_ack 0 //<2F><>Ӧ<EFBFBD><D3A6>
#define FM_ADDRESS 0x20>>1
uint8 rda5807_config_reg[] = {
0xc0, 0x03, // Register 0x2
0x00, 0x00, // Register 0x3
0x0a, 0x00, // Register 0x4
0x88, 0x0f, // Register 0x5
0x00, 0x00, // Register 0x6
0x42, 0x02, // Register 0x7
};
//-------------------------------------------------------------------------------------------------------------------
// @brief rda5807ģ<37><C4A3>IIC<49><43>ȡ<EFBFBD><C8A1><EFBFBD>ֽ<EFBFBD><D6BD><EFBFBD><EFBFBD><EFBFBD>
// @param dev_add <09><EFBFBD><E8B1B8>ַ(<28><><EFBFBD><EFBFBD>λ<EFBFBD><CEBB>ַ)
// @param data[] <09><><EFBFBD>ݱ<EFBFBD><DDB1><EFBFBD><EFBFBD>ĵ<EFBFBD>ַָ<D6B7><D6B8>
// @param num <09><>ȡ<EFBFBD>ֽ<EFBFBD><D6BD><EFBFBD><EFBFBD><EFBFBD>
// @return void
// @since v1.0
// Sample usage:
//-------------------------------------------------------------------------------------------------------------------
void rad5807m_simiic_write(uint8 dev_add, uint8 data[], uint8 num)
{
uint8 i;
uint16 temp_delay_time = 0;
temp_delay_time = simiic_delay_time;
simiic_delay_set(RAD5807_DELAY_TIME);//<2F><><EFBFBD><EFBFBD>ģ<EFBFBD><C4A3>IIC<49><43>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD>ΪĬ<CEAA><C4AC><EFBFBD><EFBFBD><EFBFBD>ʽϸ<CABD>
simiic_start();
send_ch( (dev_add<<1) | 0x00); //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ַ<EFBFBD><D6B7>дλ
for(i=0;i<num;i++)
send_ch(data[i]); //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ҫд<D2AA><D0B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
simiic_stop();
simiic_delay_set(temp_delay_time); //<2F><>ԭģ<D4AD><C4A3>IICĬ<43><C4AC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
}
//-------------------------------------------------------------------------------------------------------------------
// @brief ģ<><C4A3>IIC<49><43>ȡ<EFBFBD><C8A1><EFBFBD>ֽ<EFBFBD><D6BD><EFBFBD><EFBFBD><EFBFBD>
// @param dev_add <09><EFBFBD><E8B1B8>ַ(<28><><EFBFBD><EFBFBD>λ<EFBFBD><CEBB>ַ)
// @param dat_add <09><><EFBFBD>ݱ<EFBFBD><DDB1><EFBFBD><EFBFBD>ĵ<EFBFBD>ַָ<D6B7><D6B8>
// @param num <09><>ȡ<EFBFBD>ֽ<EFBFBD><D6BD><EFBFBD><EFBFBD><EFBFBD>
// @return uint8 <09><><EFBFBD>ؼĴ<D8BC><C4B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// @since v1.0
// Sample usage:
//-------------------------------------------------------------------------------------------------------------------
void rda5807m_simiic_read(uint8 dev_add,uint8 *dat_add,uint8 num)
{
uint16 temp_delay_time = 0;
temp_delay_time = simiic_delay_time;
simiic_delay_set(RAD5807_DELAY_TIME);//<2F><><EFBFBD><EFBFBD>ģ<EFBFBD><C4A3>IIC<49><43>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD>ΪĬ<CEAA><C4AC><EFBFBD><EFBFBD><EFBFBD>ʽϸ<CABD>
simiic_start();
send_ch( (dev_add<<1) | 0x01); //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ַ<EFBFBD>Ӷ<EFBFBD>λ
while(--num)
{
*dat_add = read_ch(ack); //<2F><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD>
dat_add++;
}
*dat_add = read_ch(no_ack); //<2F><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD>
simiic_stop();
simiic_delay_set(temp_delay_time); //<2F><>ԭģ<D4AD><C4A3>IICĬ<43><C4AC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
}
//-------------------------------------------------------------------------------------------------------------------
// @brief Ƶ<>ʼĴ<CABC><C4B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ã<EFBFBD><C3A3>ڲ<EFBFBD>ʹ<EFBFBD>ã<EFBFBD><C3A3>û<EFBFBD><C3BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ģ<EFBFBD>
// @param channel Ƶ<>ʼĴ<CABC><C4B4><EFBFBD>ֵ
// @return void
// @since v1.0
// Sample usage:
//-------------------------------------------------------------------------------------------------------------------
void rda5807_channel_config(uint16 reg_chn)
{
rda5807_config_reg[0] = 0xc0;
rda5807_config_reg[1] = 0x01;
rda5807_config_reg[2] = (uint8)(reg_chn >> 2);
rda5807_config_reg[3] = (uint8)(((reg_chn & 0x3) << 6) | 0x18);
}
//-------------------------------------------------------------------------------------------------------------------
// @brief rda5807<30><37><EFBFBD><EFBFBD>Ƶ<EFBFBD><C6B5> <09><><EFBFBD>ڲ<EFBFBD>ʹ<EFBFBD>ã<EFBFBD><C3A3>û<EFBFBD><C3BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ģ<EFBFBD>
// @param freq Ƶ<><C6B5>ֵ
// @return void
// @since v1.0
// Sample usage:
//-------------------------------------------------------------------------------------------------------------------
void rda5807_set_channel(float freq)
{
uint16 reg_chn=0;
reg_chn = (int)((freq - 76.0) * 10.0 + 0.5);
rda5807_channel_config(reg_chn);
rad5807m_simiic_write(FM_ADDRESS,rda5807_config_reg, 4);
}
//-------------------------------------------------------------------------------------------------------------------
// @brief rda5807<30><37><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA><EFBFBD><EFBFBD>ģʽ
// @param NULL
// @return void
// @since v1.0
// Sample usage:
//-------------------------------------------------------------------------------------------------------------------
void rda5807_set_idle(void)
{
rda5807_config_reg[1] &= ~(1<<0);//Power Up Disabled.
rad5807m_simiic_write(FM_ADDRESS,rda5807_config_reg, 4);
}
//-------------------------------------------------------------------------------------------------------------------
// @brief rda5807<30><37><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA><EFBFBD><EFBFBD>ģʽ
// @param NULL
// @return void
// @since v1.0
// Sample usage:
//-------------------------------------------------------------------------------------------------------------------
void rda5807_set_transimt(void)
{
rda5807_config_reg[1] |= 1<<0;//Power Up Enable.
rad5807m_simiic_write(FM_ADDRESS,rda5807_config_reg, 4);
}
uint8 rda5807_read_reg[10];
//-------------------------------------------------------------------------------------------------------------------
// @brief rda5807<30><37>ȡID<49><44><EFBFBD>ڲ<EFBFBD>ʹ<EFBFBD>ã<EFBFBD><C3A3>û<EFBFBD><C3BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ģ<EFBFBD>
// @param NULL
// @return void
// @since v1.0
// Sample usage:
//-------------------------------------------------------------------------------------------------------------------
void rda5807_read_id(void)
{
rda5807m_simiic_read(FM_ADDRESS,rda5807_read_reg,10);
}
//-------------------------------------------------------------------------------------------------------------------
// @brief rda5807<30><37>ȡRSSI(<28>ź<EFBFBD>ǿ<EFBFBD><C7BF>)
// @param NULL
// @return void
// @since v1.0
// Sample usage:
//-------------------------------------------------------------------------------------------------------------------
uint8 rda5807_read_rssi(void)
{
uint8 rssi;
rda5807m_simiic_read(FM_ADDRESS,rda5807_read_reg,3);
rssi = rda5807_read_reg[2] >> 1;
return rssi;
}
//-------------------------------------------------------------------------------------------------------------------
// @brief rda5807<30><37>ʼ<EFBFBD><CABC>
// @param NULL
// @return void
// @since v1.0
// Sample usage:
//-------------------------------------------------------------------------------------------------------------------
void rda5807_init(float freq)
{
uint8 dat[2] = {0x00,0x02};
//iic<69><63>ʼ<EFBFBD><CABC>
simiic_init();
systick_delay_ms(STM0, 1000);//<2F><>Ҫ<EFBFBD><D2AA>֤<EFBFBD>ϵ<EFBFBD><CFB5><EFBFBD>1S<31>ڲ<EFBFBD><DAB2><EFBFBD> FMģ<4D><C4A3>
while(rda5807_read_reg[8] != 0x58)
{
//<2F><>λ
rad5807m_simiic_write(FM_ADDRESS,dat,2);
systick_delay_ms(STM0, 10);
//<2F><>ȡ<EFBFBD>Ĵ<EFBFBD><C4B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Լ졣
rda5807m_simiic_read(FM_ADDRESS,rda5807_read_reg,10);
//<2F><><EFBFBD><EFBFBD>һֱ<D2BB><D6B1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>鿴SCL<43><4C>SDA<44>Ƿ<EFBFBD><C7B7><EFBFBD><EFBFBD>Ӻá<D3BA>
//Ҳ<><D2B2><EFBFBD>Գ<EFBFBD><D4B3><EFBFBD> <20>ʵ<EFBFBD><CAB5><EFBFBD><EFBFBD><EFBFBD>5807.h<>ļ<EFBFBD><C4BC>е<EFBFBD>RAD5807_DELAY_TIME<4D><EFBFBD><EAB6A8><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ
//<2F><><EFBFBD><EFBFBD>SDA SCLû<4C>д<EFBFBD><D0B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E8A3A8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ŷ<EFBFBD><C5B6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Գ<EFBFBD><D4B3><EFBFBD><EFBFBD>޸ĵײ<C4B5><D7B2><EFBFBD><EFBFBD>ļ<EFBFBD>
//<2F><>gpio_init<69><74><EFBFBD><EFBFBD><EFBFBD>е<EFBFBD>IfxPort_PadDriver_cmosAutomotiveSpeed1<64><31>ΪIfxPort_PadDriver_cmosAutomotiveSpeed4
}
//<2F><><EFBFBD><EFBFBD>
rad5807m_simiic_write(FM_ADDRESS,rda5807_config_reg,sizeof(rda5807_config_reg));
//Ƶ<><C6B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
rda5807_set_channel(freq);
}

View File

@@ -1,56 +0,0 @@
/*********************************************************************************************************************
* COPYRIGHT NOTICE
* Copyright (c) 2020,<2C><><EFBFBD>ɿƼ<C9BF>
* All rights reserved.
* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>QQȺ<51><C8BA><EFBFBD><EFBFBD>Ⱥ<EFBFBD><C8BA>824575535
*
* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݰ<EFBFBD>Ȩ<EFBFBD><C8A8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɿƼ<C9BF><C6BC><EFBFBD><EFBFBD>У<EFBFBD>δ<EFBFBD><CEB4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ҵ<EFBFBD><D2B5>;<EFBFBD><CDBE>
* <20><>ӭ<EFBFBD><D3AD>λʹ<CEBB>ò<EFBFBD><C3B2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>޸<EFBFBD><DEB8><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EBB1A3><EFBFBD><EFBFBD><EFBFBD>ɿƼ<C9BF><C6BC>İ<EFBFBD>Ȩ<EFBFBD><C8A8><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
*
* @file MPU6050
* @company <09>ɶ<EFBFBD><C9B6><EFBFBD><EFBFBD>ɿƼ<C9BF><C6BC><EFBFBD><EFBFBD>޹<EFBFBD>˾
* @author <09><><EFBFBD>ɿƼ<C9BF>(QQ3184284598)
* @version <09>鿴doc<6F><63>version<6F>ļ<EFBFBD> <20>汾˵<E6B1BE><CBB5>
* @Software ADS v1.2.2
* @Target core TC264D
* @Taobao https://seekfree.taobao.com/
* @date 2020-3-23
* @note
<09><><EFBFBD>߶<EFBFBD><DFB6>
------------------------------------
<09><><EFBFBD><EFBFBD>IIC
SCL <20>鿴SEEKFREE_IIC<49>ļ<EFBFBD><C4BC>ڵ<EFBFBD>SEEKFREE_SCL<43><EFBFBD><EAB6A8>
SDA <20>鿴SEEKFREE_IIC<49>ļ<EFBFBD><C4BC>ڵ<EFBFBD>SEEKFREE_SDA<44><EFBFBD><EAB6A8>
Ӳ<><D3B2>IIC
SCL <20>鿴init_mpu6050_hardware<72><65><EFBFBD><EFBFBD><EFBFBD><EFBFBD>IIC<49><43>ʼ<EFBFBD><CABC>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
SDA <20>鿴init_mpu6050_hardware<72><65><EFBFBD><EFBFBD><EFBFBD><EFBFBD>IIC<49><43>ʼ<EFBFBD><CABC>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
------------------------------------
ע<><D7A2><EFBFBD><EFBFBD><EFBFBD>RDA5807<30><37>SCL<43><4C>SDA<44><41><EFBFBD><EFBFBD>Ҫ<EFBFBD><D2AA><EFBFBD><EFBFBD>1K<31><4B><EFBFBD><EFBFBD>Ȼ<EFBFBD><C8BB><EFBFBD><EFBFBD><EFBFBD>뵥Ƭ<EBB5A5><C6AC><EFBFBD><EFBFBD><EFBFBD>ӣ<EFBFBD><D3A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>޷<EFBFBD>ͨ<EFBFBD><CDA8>
********************************************************************************************************************/
#ifndef _FM5807_H
#define _FM5807_H
#include "common.h"
#include "SEEKFREE_FONT.h"
#define RAD5807_DELAY_TIME 200
void rda5807_init(float freq);
void rda5807_set_transimt(void);
void rda5807_set_idle(void);
void rda5807_set_channel(float freq);
void rda5807_channel_config(uint16 reg_chn);
uint8 rda5807_read_rssi(void);
#endif

View File

@@ -1,87 +0,0 @@
/*********************************************************************************************************************
* COPYRIGHT NOTICE
* Copyright (c) 2018,<2C><><EFBFBD>ɿƼ<C9BF>
* All rights reserved.
* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>QQȺ<51><C8BA>һȺ<D2BB><C8BA>179029047(<28><><EFBFBD><EFBFBD>) <20><>Ⱥ<EFBFBD><C8BA>244861897
*
* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݰ<EFBFBD>Ȩ<EFBFBD><C8A8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɿƼ<C9BF><C6BC><EFBFBD><EFBFBD>У<EFBFBD>δ<EFBFBD><CEB4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ҵ<EFBFBD><D2B5>;<EFBFBD><CDBE>
* <20><>ӭ<EFBFBD><D3AD>λʹ<CEBB>ò<EFBFBD><C3B2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>޸<EFBFBD><DEB8><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EBB1A3><EFBFBD><EFBFBD><EFBFBD>ɿƼ<C9BF><C6BC>İ<EFBFBD>Ȩ<EFBFBD><C8A8><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
*
* @file <09><><EFBFBD><EFBFBD>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD>Э<EFBFBD><D0AD>
* @company <09>ɶ<EFBFBD><C9B6><EFBFBD><EFBFBD>ɿƼ<C9BF><C6BC><EFBFBD><EFBFBD>޹<EFBFBD>˾
* @author <09><><EFBFBD>ɿƼ<C9BF>(QQ3184284598)
* @version <09>鿴doc<6F><63>version<6F>ļ<EFBFBD> <20>汾˵<E6B1BE><CBB5>
* @Software IAR 8.3 or MDK 5.28
* @Taobao https://seekfree.taobao.com/
* @date 2019-04-30
* @note ʾ<><CABE><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ص<EFBFBD>ַ<EFBFBD><D6B7>https://pan.baidu.com/s/198CMXTZsbI3HAEqNXDngBw<42><77><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>廪ֱ<E5BBAA><D6B1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϣ<EFBFBD>
********************************************************************************************************************/
#include "zf_uart.h"
#include "SEEKFREE_VIRSCO.h"
uint8 virtual_scope_data[10];
//-------------------------------------------------------------------------------------------------------------------
// @brief CRCУ<43><EFBFBD>ڲ<EFBFBD>ʹ<EFBFBD>ã<EFBFBD><C3A3>û<EFBFBD><C3BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ģ<EFBFBD>
// @param Buf <20><>Ҫ<EFBFBD><D2AA><EFBFBD><EFBFBD>CRC<52><43><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݵ<EFBFBD>ַ
// @param CRC_CNT <20><>Ҫ<EFBFBD><D2AA><EFBFBD><EFBFBD>CRC<52><43><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݸ<EFBFBD><DDB8><EFBFBD>
// @return void
// @since v1.0
// Sample usage:
//-------------------------------------------------------------------------------------------------------------------
uint16 CRC_CHECK(uint8 *Buf, uint8 CRC_CNT)
{
uint16 CRC_Temp;
uint8 i,j;
CRC_Temp = 0xffff;
for (i=0;i<CRC_CNT; i++){
CRC_Temp ^= Buf[i];
for (j=0;j<8;j++) {
if (CRC_Temp & 0x01)
CRC_Temp = (CRC_Temp >>1 ) ^ 0xa001;
else
CRC_Temp = CRC_Temp >> 1;
}
}
return(CRC_Temp);
}
//-------------------------------------------------------------------------------------------------------------------
// @brief <20><><EFBFBD><EFBFBD>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ת<EFBFBD><D7AA><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// @param data1 Ҫ<><D2AA><EFBFBD>͵ĵ<CDB5>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// @param data2 Ҫ<><D2AA><EFBFBD>͵ĵڶ<C4B5><DAB6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// @param data3 Ҫ<><D2AA><EFBFBD>͵ĵ<CDB5><C4B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// @param data4 Ҫ<><D2AA><EFBFBD>͵ĵ<CDB5><C4B5>ĸ<EFBFBD><C4B8><EFBFBD><EFBFBD><EFBFBD>
// @param *dat ת<><D7AA>֮<EFBFBD><D6AE><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݵĵ<DDB5>ַ
// @return void
// @since v1.0
// Sample usage:
//-------------------------------------------------------------------------------------------------------------------
void data_conversion(int16 data1, int16 data2, int16 data3, int16 data4, uint8 *dat)
{
uint16 CRC16 = 0;
dat[0] = (uint8)((uint16)data1&0xff);
dat[1] = (uint8)((uint16)data1>>8);
dat[2] = (uint8)((uint16)data2&0xff);
dat[3] = (uint8)((uint16)data2>>8);
dat[4] = (uint8)((uint16)data3&0xff);
dat[5] = (uint8)((uint16)data3>>8);
dat[6] = (uint8)((uint16)data4&0xff);
dat[7] = (uint8)((uint16)data4>>8);
CRC16 = CRC_CHECK(dat,8);
dat[8] = (uint8)(CRC16&0xff);
dat[9] = (uint8)(CRC16>>8);
//uart_putbuff(UART_0,dat,10); //<2F><><EFBFBD><EFBFBD>ת<EFBFBD><D7AA><EFBFBD><EFBFBD><EFBFBD>ɺ<EFBFBD><C9BA><EFBFBD>ʹ<EFBFBD>ô<EFBFBD><C3B4>ڷ<EFBFBD><DAB7>ͽ<EFBFBD><CDBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݷ<EFBFBD><DDB7>ͳ<EFBFBD>ȥ
}

View File

@@ -1,31 +0,0 @@
/*********************************************************************************************************************
* COPYRIGHT NOTICE
* Copyright (c) 2018,<2C><><EFBFBD>ɿƼ<C9BF>
* All rights reserved.
* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>QQȺ<51><C8BA>һȺ<D2BB><C8BA>179029047(<28><><EFBFBD><EFBFBD>) <20><>Ⱥ<EFBFBD><C8BA>244861897
*
* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݰ<EFBFBD>Ȩ<EFBFBD><C8A8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɿƼ<C9BF><C6BC><EFBFBD><EFBFBD>У<EFBFBD>δ<EFBFBD><CEB4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ҵ<EFBFBD><D2B5>;<EFBFBD><CDBE>
* <20><>ӭ<EFBFBD><D3AD>λʹ<CEBB>ò<EFBFBD><C3B2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>޸<EFBFBD><DEB8><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EBB1A3><EFBFBD><EFBFBD><EFBFBD>ɿƼ<C9BF><C6BC>İ<EFBFBD>Ȩ<EFBFBD><C8A8><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
*
* @file <09><><EFBFBD><EFBFBD>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD>Э<EFBFBD><D0AD>
* @company <09>ɶ<EFBFBD><C9B6><EFBFBD><EFBFBD>ɿƼ<C9BF><C6BC><EFBFBD><EFBFBD>޹<EFBFBD>˾
* @author <09><><EFBFBD>ɿƼ<C9BF>(QQ3184284598)
* @version <09>鿴doc<6F><63>version<6F>ļ<EFBFBD> <20>汾˵<E6B1BE><CBB5>
* @Software IAR 8.3 or MDK 5.28
* @Taobao https://seekfree.taobao.com/
* @date 2019-04-30
* @note ʾ<><CABE><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ص<EFBFBD>ַ<EFBFBD><D6B7>https://pan.baidu.com/s/198CMXTZsbI3HAEqNXDngBw<42><77><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>廪ֱ<E5BBAA><D6B1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϣ<EFBFBD>
********************************************************************************************************************/
#ifndef _SEEKFREE_VIRSCO_H
#define _SEEKFREE_VIRSCO_H
#include "common.h"
extern uint8 virtual_scope_data[10];
void data_conversion(int16 data1, int16 data2, int16 data3, int16 data4, uint8 *dat);
#endif

View File

@@ -1,172 +0,0 @@
/*********************************************************************************************************************
* COPYRIGHT NOTICE
* Copyright (c) 2020,<2C><><EFBFBD>ɿƼ<C9BF>
* All rights reserved.
* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>QQȺ<51><C8BA><EFBFBD><EFBFBD>Ⱥ<EFBFBD><C8BA>824575535
*
* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݰ<EFBFBD>Ȩ<EFBFBD><C8A8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɿƼ<C9BF><C6BC><EFBFBD><EFBFBD>У<EFBFBD>δ<EFBFBD><CEB4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ҵ<EFBFBD><D2B5>;<EFBFBD><CDBE>
* <20><>ӭ<EFBFBD><D3AD>λʹ<CEBB>ò<EFBFBD><C3B2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>޸<EFBFBD><DEB8><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EBB1A3><EFBFBD><EFBFBD><EFBFBD>ɿƼ<C9BF><C6BC>İ<EFBFBD>Ȩ<EFBFBD><C8A8><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
*
* @file <09><><EFBFBD><EFBFBD>ת<EFBFBD><D7AA><EFBFBD><EFBFBD>ģ<EFBFBD><C4A3>
* @company <09>ɶ<EFBFBD><C9B6><EFBFBD><EFBFBD>ɿƼ<C9BF><C6BC><EFBFBD><EFBFBD>޹<EFBFBD>˾
* @author <09><><EFBFBD>ɿƼ<C9BF>(QQ3184284598)
* @version <09>鿴doc<6F><63>version<6F>ļ<EFBFBD> <20>汾˵<E6B1BE><CBB5>
* @Software ADS v1.2.2
* @Target core TC264D
* @Taobao https://seekfree.taobao.com/
* @date 2020-3-23
* @note
<09><><EFBFBD>߶<EFBFBD><DFB6>
------------------------------------
<20><><EFBFBD><EFBFBD>ת<EFBFBD><D7AA><EFBFBD><EFBFBD> <20><>Ƭ<EFBFBD><C6AC>
RX <20>鿴SEEKFREE_WIRELESS.h<>ļ<EFBFBD><C4BC>е<EFBFBD>WIRELESS_UART_TX<54><EFBFBD><EAB6A8>
TX <20>鿴SEEKFREE_WIRELESS.h<>ļ<EFBFBD><C4BC>е<EFBFBD>WIRELESS_UART_RX<52><EFBFBD><EAB6A8>
RTS <20>鿴SEEKFREE_WIRELESS.h<>ļ<EFBFBD><C4BC>е<EFBFBD>RTS_PIN<49><EFBFBD><EAB6A8>
CMD <20><><EFBFBD>ջ<EFBFBD><D5BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
------------------------------------
********************************************************************************************************************/
#include "zf_stm_systick.h"
#include "zf_gpio.h"
#include "zf_uart.h"
#include "SEEKFREE_WIRELESS.h"
uint8 wireless_send_buffer[WIRELESS_BUFFER_SIZE];
uint32 wireless_rx_index = 0;
vuint8 wireless_auto_baud_num;
vuint8 wireless_auto_baud_flag = 0;
vuint8 wireless_auto_baud_data[3] = {0x00, 0x01, 0x03};
uint8 wireless_rx_buffer;
//-------------------------------------------------------------------------------------------------------------------
// @brief <20><><EFBFBD><EFBFBD>ת<EFBFBD><D7AA><EFBFBD><EFBFBD>ģ<EFBFBD><C4A3> <20><><EFBFBD><EFBFBD><EFBFBD>жϺ<D0B6><CFBA><EFBFBD>
// @param void
// @return void
// @since v1.0
// Sample usage:
// @note <20>ú<EFBFBD><C3BA><EFBFBD><EFBFBD><EFBFBD>ISR<53>ļ<EFBFBD> <20><><EFBFBD><EFBFBD>2<EFBFBD>жϳ<D0B6><CFB3>򱻵<EFBFBD><F2B1BBB5><EFBFBD>
//-------------------------------------------------------------------------------------------------------------------
void wireless_uart_callback(void)
{
//<2F><>ȡ<EFBFBD>յ<EFBFBD><D5B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
while(uart_query(WIRELESS_UART, &wireless_rx_buffer));
if(wireless_auto_baud_flag == 1 && (wireless_auto_baud_num<3))
{
wireless_auto_baud_data[wireless_auto_baud_num] = wireless_rx_buffer;
wireless_auto_baud_num++;
if(3 == wireless_auto_baud_num)
{
wireless_auto_baud_flag = 2;
}
}
else
{
wireless_send_buffer[wireless_rx_index++] = wireless_rx_buffer;
if(wireless_rx_index == WIRELESS_BUFFER_SIZE)
wireless_rx_index=0;
}
}
//-------------------------------------------------------------------------------------------------------------------
// @brief <20><><EFBFBD><EFBFBD>ת<EFBFBD><D7AA><EFBFBD><EFBFBD>ģ<EFBFBD><C4A3><EFBFBD><EFBFBD>ʼ<EFBFBD><CABC>
// @param NULL
// @return void
// @since v1.0
// Sample usage:
// @note
//-------------------------------------------------------------------------------------------------------------------
void seekfree_wireless_init(void)
{
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʹ<EFBFBD>õIJ<C3B5><C4B2><EFBFBD><EFBFBD><EFBFBD>Ϊ115200<30><30>Ϊ<EFBFBD><CEAA><EFBFBD><EFBFBD>ת<EFBFBD><D7AA><EFBFBD><EFBFBD>ģ<EFBFBD><C4A3><EFBFBD><EFBFBD>Ĭ<EFBFBD>ϲ<EFBFBD><CFB2><EFBFBD><EFBFBD>ʣ<EFBFBD><CAA3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ģ<EFBFBD><EFBFBD>޸Ĵ<DEB8><C4B4>ڵIJ<DAB5><C4B2><EFBFBD><EFBFBD><EFBFBD>
wireless_type = WIRELESS_SI24R1;
gpio_init(RTS_PIN, GPI, 0, PULLDOWN);//<2F><>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
#if(0 == WIRELESS_AUTO_UART_BAUD)
uart_init (WIRELESS_UART, WIRELESS_UART_BAUD, WIRELESS_UART_TX, WIRELESS_UART_RX); //<2F><>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
#elif(1 == WIRELESS_AUTO_UART_BAUD)//<2F><><EFBFBD><EFBFBD><EFBFBD>Զ<EFBFBD><D4B6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
boolean temp_isr;
gpio_init(RTS_PIN, GPI, 0, PULLDOWN);//<2F><>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
uint8 rts_init_status;
rts_init_status = gpio_get(RTS_PIN);
temp_isr = areInterruptsEnabled();
enableInterrupts();
gpio_init(RTS_PIN, GPO, rts_init_status, PUSHPULL);//<2F><>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
uart_init (WIRELESS_UART, WIRELESS_UART_BAUD, WIRELESS_UART_TX, WIRELESS_UART_RX); //<2F><>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
systick_delay_ms(STM0, 5); //ģ<><C4A3><EFBFBD>ϵ<EFBFBD>֮<EFBFBD><D6AE><EFBFBD><EFBFBD>Ҫ<EFBFBD><D2AA>ʱ<EFBFBD>ȴ<EFBFBD>
gpio_set(RTS_PIN, !rts_init_status); //RTS<54><53><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ߣ<EFBFBD><DFA3><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Զ<EFBFBD><D4B6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ģʽ
systick_delay_ms(STM0, 100); //RTS<54><53><EFBFBD><EFBFBD>֮<EFBFBD><D6AE><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ20ms
gpio_toggle(RTS_PIN); //RTS<54><53><EFBFBD><EFBFBD>ȡ<EFBFBD><C8A1>
//gpio_set(RTS_PIN, 0); //RTS<54><53><EFBFBD><EFBFBD>
wireless_auto_baud_flag = 1;
//<2F><><EFBFBD><EFBFBD><EFBFBD>ض<EFBFBD><D8B6><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>ģ<EFBFBD><C4A3><EFBFBD>Զ<EFBFBD><D4B6>жϲ<D0B6><CFB2><EFBFBD><EFBFBD><EFBFBD>
uart_putchar(WIRELESS_UART, wireless_auto_baud_data[0]);
uart_putchar(WIRELESS_UART, wireless_auto_baud_data[1]);
uart_putchar(WIRELESS_UART, wireless_auto_baud_data[2]);
systick_delay_ms(STM0, 20);
//<2F><><EFBFBD><EFBFBD><EFBFBD>Զ<EFBFBD><D4B6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƿ<EFBFBD><C7B7><EFBFBD><EFBFBD><EFBFBD>
if(2 != wireless_auto_baud_flag)
{
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EBB5BD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڣ<EFBFBD>˵<EFBFBD><CBB5><EFBFBD>Զ<EFBFBD><D4B6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʧ<EFBFBD><CAA7><EFBFBD><EFBFBD>
systick_delay_ms(STM0, 500);
while(1);
}
//<2F><><EFBFBD><EFBFBD><EFBFBD>Զ<EFBFBD><D4B6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƿ<EFBFBD><C7B7><EFBFBD>ȷ
if(0xa5 != wireless_auto_baud_data[0] &&
0xff != wireless_auto_baud_data[1] &&
0xff != wireless_auto_baud_data[2] )
{
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EBB5BD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڣ<EFBFBD>˵<EFBFBD><CBB5><EFBFBD>Զ<EFBFBD><D4B6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʧ<EFBFBD><CAA7><EFBFBD><EFBFBD>
systick_delay_ms(STM0, 500);
while(1);
}
gpio_init(RTS_PIN, GPI, 0, PUSHPULL);//<2F><>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
systick_delay_ms(STM0, 10);//<2F><>ʱ<EFBFBD>ȴ<EFBFBD> ģ<><C4A3>׼<EFBFBD><D7BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
restoreInterrupts(temp_isr);
#endif
}
//-------------------------------------------------------------------------------------------------------------------
// @brief <20><><EFBFBD><EFBFBD>ת<EFBFBD><D7AA><EFBFBD><EFBFBD>ģ<EFBFBD><C4A3> <20><><EFBFBD>ͺ<EFBFBD><CDBA><EFBFBD>
// @param buff <20><>Ҫ<EFBFBD><D2AA><EFBFBD>͵<EFBFBD><CDB5><EFBFBD><EFBFBD>ݵ<EFBFBD>ַ
// @param len <20><><EFBFBD>ͳ<EFBFBD><CDB3><EFBFBD>
// @return uint32 ʣ<><CAA3>δ<EFBFBD><CEB4><EFBFBD>͵<EFBFBD><CDB5>ֽ<EFBFBD><D6BD><EFBFBD>
// @since v1.0
// Sample usage:
// @note
//-------------------------------------------------------------------------------------------------------------------
uint32 seekfree_wireless_send_buff(uint8 *buff, uint32 len)
{
while(len>30)
{
// if(gpio_get(RTS_PIN))
// {
// return len;//ģ<><C4A3>æ,<2C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ǰ<EFBFBD><C7B0><EFBFBD><EFBFBD>ʹ<EFBFBD><CAB9>while<6C>ȴ<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʹ<EFBFBD>ú<EFBFBD><C3BA><EFBFBD>ע<EFBFBD>͵<EFBFBD>while<6C>ȴ<EFBFBD><C8B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E6BBBB>if<69><66><EFBFBD><EFBFBD>
// }
while(gpio_get(RTS_PIN)); //<2F><><EFBFBD><EFBFBD>RTSΪ<53>͵<EFBFBD>ƽ<EFBFBD><C6BD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
uart_putbuff(WIRELESS_UART,buff,30);
buff += 30; //<2F><>ַƫ<D6B7><C6AB>
len -= 30;//<2F><><EFBFBD><EFBFBD>
}
// if(gpio_get(RTS_PIN))
// {
// return len;//ģ<><C4A3>æ,<2C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ǰ<EFBFBD><C7B0><EFBFBD><EFBFBD>ʹ<EFBFBD><CAB9>while<6C>ȴ<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʹ<EFBFBD>ú<EFBFBD><C3BA><EFBFBD>ע<EFBFBD>͵<EFBFBD>while<6C>ȴ<EFBFBD><C8B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E6BBBB>if<69><66><EFBFBD><EFBFBD>
// }
while(gpio_get(RTS_PIN)); //<2F><><EFBFBD><EFBFBD>RTSΪ<53>͵<EFBFBD>ƽ<EFBFBD><C6BD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
uart_putbuff(WIRELESS_UART,buff,len);//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
return 0;
}

View File

@@ -1,66 +0,0 @@
/*********************************************************************************************************************
* COPYRIGHT NOTICE
* Copyright (c) 2020,<2C><><EFBFBD>ɿƼ<C9BF>
* All rights reserved.
* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>QQȺ<51><C8BA><EFBFBD><EFBFBD>Ⱥ<EFBFBD><C8BA>824575535
*
* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݰ<EFBFBD>Ȩ<EFBFBD><C8A8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɿƼ<C9BF><C6BC><EFBFBD><EFBFBD>У<EFBFBD>δ<EFBFBD><CEB4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ҵ<EFBFBD><D2B5>;<EFBFBD><CDBE>
* <20><>ӭ<EFBFBD><D3AD>λʹ<CEBB>ò<EFBFBD><C3B2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>޸<EFBFBD><DEB8><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EBB1A3><EFBFBD><EFBFBD><EFBFBD>ɿƼ<C9BF><C6BC>İ<EFBFBD>Ȩ<EFBFBD><C8A8><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
*
* @file <09><><EFBFBD><EFBFBD>ת<EFBFBD><D7AA><EFBFBD><EFBFBD>ģ<EFBFBD><C4A3>
* @company <09>ɶ<EFBFBD><C9B6><EFBFBD><EFBFBD>ɿƼ<C9BF><C6BC><EFBFBD><EFBFBD>޹<EFBFBD>˾
* @author <09><><EFBFBD>ɿƼ<C9BF>(QQ3184284598)
* @version <09>鿴doc<6F><63>version<6F>ļ<EFBFBD> <20>汾˵<E6B1BE><CBB5>
* @Software ADS v1.2.2
* @Target core TC264D
* @Taobao https://seekfree.taobao.com/
* @date 2020-3-23
* @note
<09><><EFBFBD>߶<EFBFBD><DFB6>
------------------------------------
<20><><EFBFBD><EFBFBD>ת<EFBFBD><D7AA><EFBFBD><EFBFBD> <20><>Ƭ<EFBFBD><C6AC>
RX <20>鿴SEEKFREE_WIRELESS.h<>ļ<EFBFBD><C4BC>е<EFBFBD>WIRELESS_UART_TX<54><EFBFBD><EAB6A8>
TX <20>鿴SEEKFREE_WIRELESS.h<>ļ<EFBFBD><C4BC>е<EFBFBD>WIRELESS_UART_RX<52><EFBFBD><EAB6A8>
RTS <20>鿴SEEKFREE_WIRELESS.h<>ļ<EFBFBD><C4BC>е<EFBFBD>RTS_PIN<49><EFBFBD><EAB6A8>
CMD <20><><EFBFBD>ջ<EFBFBD><D5BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
------------------------------------
********************************************************************************************************************/
#ifndef _SEEKFREE_WIRELESS
#define _SEEKFREE_WIRELESS
#include "common.h"
#define WIRELESS_UART UART_2 //<2F><><EFBFBD><EFBFBD>ת<EFBFBD><D7AA><EFBFBD><EFBFBD>ģ<EFBFBD><C4A3> <20><>ʹ<EFBFBD>õ<EFBFBD><C3B5>Ĵ<EFBFBD><C4B4><EFBFBD>
#define WIRELESS_UART_TX UART2_TX_P10_5
#define WIRELESS_UART_RX UART2_RX_P10_6
#define WIRELESS_UART_BAUD 115200
// ------------------------------------ <20>Զ<EFBFBD><D4B6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ------------------------------------
// ע<><D7A2><EFBFBD><EFBFBD><EFBFBD><EFBFBD>1<EFBFBD><31><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ת<EFBFBD><D7AA><EFBFBD><EFBFBD>ģ<EFBFBD><C4A3><EFBFBD><EFBFBD><E6B1BE>V2.0<EFBFBD><EFBFBD><EFBFBD>µ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>޷<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Զ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʵġ<EFBFBD>
// ע<><D7A2><EFBFBD><EFBFBD><EFBFBD><EFBFBD>2<EFBFBD><32><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Զ<EFBFBD><D4B6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>RTS<54><53><EFBFBD>ţ<EFBFBD><C5A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E1BFAA>ʧ<EFBFBD>ܡ<EFBFBD>
// ע<><D7A2><EFBFBD><EFBFBD><EFBFBD><EFBFBD>3<EFBFBD><33>ģ<EFBFBD><C4A3><EFBFBD>Զ<EFBFBD><D4B6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʧ<EFBFBD>ܵĻ<DCB5><C4BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Գ<EFBFBD><D4B3>Զϵ<D4B6><CFB5><EFBFBD><EFBFBD><EFBFBD>
// <20><><EFBFBD><EFBFBD><EFBFBD>Զ<EFBFBD><D4B6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ķ<EFBFBD><C4B6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ע<><D7A2><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// <20><><EFBFBD><EFBFBD><EFBFBD>Զ<EFBFBD><D4B6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ķ<EFBFBD><C4B6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ע<><D7A2><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// <20><><EFBFBD><EFBFBD><EFBFBD>Զ<EFBFBD><D4B6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ķ<EFBFBD><C4B6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ע<><D7A2><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// 0<><30><EFBFBD>ر<EFBFBD><D8B1>Զ<EFBFBD><D4B6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// 1<><31><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Զ<EFBFBD><D4B6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>Զ<EFBFBD><D4B6><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʵ<EFBFBD><CAB5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>޸<EFBFBD>WIRELESS_UART_BAUD֮<44><D6AE><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ҫ<EFBFBD><D2AA>ģ<EFBFBD><C4A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ã<EFBFBD>ģ<EFBFBD><C4A3><EFBFBD><EFBFBD><EFBFBD>Զ<EFBFBD><D4B6><EFBFBD><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA>Ӧ<EFBFBD>IJ<EFBFBD><C4B2><EFBFBD><EFBFBD><EFBFBD>
#define WIRELESS_AUTO_UART_BAUD 0
// ------------------------------------ <20>Զ<EFBFBD><D4B6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ------------------------------------
#define RTS_PIN P10_2 //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>λ<EFBFBD><CEBB><EFBFBD><EFBFBD> ָʾ<D6B8><CABE>ǰģ<C7B0><C4A3><EFBFBD>Ƿ<EFBFBD><C7B7><EFBFBD><EFBFBD>Խ<EFBFBD><D4BD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> 0<><30><EFBFBD>Լ<EFBFBD><D4BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> 1<><31><EFBFBD><EFBFBD><EFBFBD>Լ<EFBFBD><D4BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
#define WIRELESS_BUFFER_SIZE 16
extern uint8 wireless_send_buffer[WIRELESS_BUFFER_SIZE];
extern uint32 wireless_rx_index;
void wireless_uart_callback(void);
void seekfree_wireless_init(void);
uint32 seekfree_wireless_send_buff(uint8 *buff, uint32 len);
#endif

View File

@@ -1,28 +0,0 @@
CACHE CODE 1 8192 4 0
CACHE DATA 1 8192 4 0
SCRATCH CODE0 0XC0000000 0XC0003FFF 0
MIRROR 0X00100000 0XC0000000 0X00100000
PSPR1 0X60100000 0X60107FFF 0
SCRATCH DATA0 0XD0000000 0XD0011FFF 0
MIRROR 0X00000000 0XD0000000 0X00100000
DSPR1 0X60000000 0X6001DFFF 0
DFLASH0 0XAF000000 0XAF017FFF 0 8
DFLASH0 0XAF100000 0xAF103FFF 0 8
PFLASH0 0XA0000000 0XA00FFFFF 0 8
PFLASH1 0XA0100000 0xA027FFFF 0 8
MCS00_RAM 0XF0138000 0XF0139FFF 0
MCS01_RAM 0XF0140000 0XF0141FFF 0
MCS02_RAM 0XF0148000 0XF0149FFF 0
SFR_BASE_ADDRESS 0XF8810000
CPS_BASE_ADDRESS 0XF8800000
WDT_BASE_ADDRESS 0XF0036000
STM_BASE_ADDRESS 0XF0000000
GPTU0_BASE_ADDRESS 0XF0000600
SFR_BASE_ADDRESS_TC1 0xF8820000 0xF883FFFF 0
SFR_BASE_ADDRESS_GTM 0xF0190000 0xF019FFFF 0

View File

@@ -1,52 +0,0 @@
/*********************************************************************************************************************
* COPYRIGHT NOTICE
* Copyright (c) 2020,<2C><><EFBFBD>ɿƼ<C9BF>
* All rights reserved.
* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>QQȺ<51><C8BA><EFBFBD><EFBFBD>Ⱥ<EFBFBD><C8BA>824575535
*
* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݰ<EFBFBD>Ȩ<EFBFBD><C8A8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɿƼ<C9BF><C6BC><EFBFBD><EFBFBD>У<EFBFBD>δ<EFBFBD><CEB4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ҵ<EFBFBD><D2B5>;<EFBFBD><CDBE>
* <20><>ӭ<EFBFBD><D3AD>λʹ<CEBB>ò<EFBFBD><C3B2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>޸<EFBFBD><DEB8><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EBB1A3><EFBFBD><EFBFBD><EFBFBD>ɿƼ<C9BF><C6BC>İ<EFBFBD>Ȩ<EFBFBD><C8A8><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
*
* @file main
* @company <09>ɶ<EFBFBD><C9B6><EFBFBD><EFBFBD>ɿƼ<C9BF><C6BC><EFBFBD><EFBFBD>޹<EFBFBD>˾
* @author <09><><EFBFBD>ɿƼ<C9BF>(QQ3184284598)
* @version <09>鿴doc<6F><63>version<6F>ļ<EFBFBD> <20>汾˵<E6B1BE><CBB5>
* @Software ADS v1.2.2
* @Target core TC264D
* @Taobao https://seekfree.taobao.com/
* @date 2020-3-23
********************************************************************************************************************/
#include "headfile.h"
#pragma section all "cpu0_dsram"
uint16 adc_result;
int core0_main(void)
{
disableInterrupts();
get_clk();//<2F><>ȡʱ<C8A1><CAB1>Ƶ<EFBFBD><C6B5> <20><><EFBFBD>ر<EFBFBD><D8B1><EFBFBD>
//<2F>û<EFBFBD><C3BB>ڴ˴<DAB4><CBB4><EFBFBD><EFBFBD>ø<EFBFBD><C3B8>ֳ<EFBFBD>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
adc_init(ADC_0, ADC0_CH0_A0);//<2F><>ʼ<EFBFBD><CABC>ADC0 ͨ<><CDA8>0 ʹ<><CAB9>A0<41><30><EFBFBD><EFBFBD>
IfxCpu_emitEvent(&g_cpuSyncEvent);
IfxCpu_waitEvent(&g_cpuSyncEvent, 0xFFFF);
enableInterrupts();
while (TRUE)
{
//ͨ<><CDA8><EFBFBD><EFBFBD>A0<41><30><EFBFBD>Žӵ<C5BD>GND<4E><44><EFBFBD>ߺ<EFBFBD><DFBA>İ<EFBFBD>VCC
//A0<41>ӵ<EFBFBD>GNDʱ <20><><EFBFBD><EFBFBD>Ӧ<EFBFBD><D3A6><EFBFBD><EFBFBD>0<EFBFBD><30><EFBFBD><EFBFBD>
//A0<41>ӵ<EFBFBD>VCCʱ <20><><EFBFBD><EFBFBD>Ӧ<EFBFBD><D3A6><EFBFBD><EFBFBD>4095<39><35><EFBFBD><EFBFBD>
//<2F><><EFBFBD><EFBFBD>ʱ <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>û<EFBFBD><C3BB><EFBFBD>κ<EFBFBD><CEBA><EFBFBD><EFBFBD><EFBFBD><E5A3AC><EFBFBD>Դ<EFBFBD><D4B4>Ҳ<EFBFBD>Ҫ<EFBFBD><D2AA><EFBFBD><EFBFBD><EFBFBD>յ<EFBFBD>ʱ<EFBFBD><CAB1>Ϊʲô<CAB2><C3B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ô<EFBFBD><C3B4><EFBFBD>أ<EFBFBD>
adc_result = adc_mean_filter(ADC_0, ADC0_CH0_A0, ADC_12BIT, 10);//<2F>ɼ<EFBFBD>10<31><30><EFBFBD><EFBFBD>ƽ<EFBFBD><C6BD> <20>ֱ<EFBFBD><D6B1><EFBFBD>12λ
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͨ<EFBFBD><CDA8><EFBFBD><EFBFBD><EFBFBD>ڴ<EFBFBD>ӡ<EFBFBD><D3A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ѧϰprintf<74><66><EFBFBD>̣<EFBFBD><CCA3>˽<EFBFBD><CBBD><EFBFBD><EFBFBD><EFBFBD>ʹ<EFBFBD><CAB9>printf
printf("adc_result: %d\n", adc_result);
systick_delay_ms(STM0, 100);
}
}
#pragma section all restore

View File

@@ -1,48 +0,0 @@
/*********************************************************************************************************************
* COPYRIGHT NOTICE
* Copyright (c) 2020,<2C><><EFBFBD>ɿƼ<C9BF>
* All rights reserved.
* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>QQȺ<51><C8BA><EFBFBD><EFBFBD>Ⱥ<EFBFBD><C8BA>824575535
*
* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݰ<EFBFBD>Ȩ<EFBFBD><C8A8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɿƼ<C9BF><C6BC><EFBFBD><EFBFBD>У<EFBFBD>δ<EFBFBD><CEB4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ҵ<EFBFBD><D2B5>;<EFBFBD><CDBE>
* <20><>ӭ<EFBFBD><D3AD>λʹ<CEBB>ò<EFBFBD><C3B2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>޸<EFBFBD><DEB8><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EBB1A3><EFBFBD><EFBFBD><EFBFBD>ɿƼ<C9BF><C6BC>İ<EFBFBD>Ȩ<EFBFBD><C8A8><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
*
* @file main
* @company <09>ɶ<EFBFBD><C9B6><EFBFBD><EFBFBD>ɿƼ<C9BF><C6BC><EFBFBD><EFBFBD>޹<EFBFBD>˾
* @author <09><><EFBFBD>ɿƼ<C9BF>(QQ3184284598)
* @version <09>鿴doc<6F><63>version<6F>ļ<EFBFBD> <20>汾˵<E6B1BE><CBB5>
* @Software ADS v1.2.2
* @Target core TC264D
* @Taobao https://seekfree.taobao.com/
* @date 2020-3-23
********************************************************************************************************************/
#include "headfile.h"
#pragma section all "cpu1_dsram"
void core1_main(void)
{
disableInterrupts();
IfxScuWdt_disableCpuWatchdog(IfxScuWdt_getCpuWatchdogPassword());
//<2F>û<EFBFBD><C3BB>ڴ˴<DAB4><CBB4><EFBFBD><EFBFBD>ø<EFBFBD><C3B8>ֳ<EFBFBD>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
IfxCpu_emitEvent(&g_cpuSyncEvent);
IfxCpu_waitEvent(&g_cpuSyncEvent, 0xFFFF);
enableInterrupts();
while (TRUE)
{
//<2F>û<EFBFBD><C3BB>ڴ˴<DAB4><CBB4><EFBFBD>д<EFBFBD><D0B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
}
}
#pragma section all restore

View File

@@ -1,54 +0,0 @@
/*********************************************************************************************************************
* COPYRIGHT NOTICE
* Copyright (c) 2020,<2C><><EFBFBD>ɿƼ<C9BF>
* All rights reserved.
* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>QQȺ<51><C8BA><EFBFBD><EFBFBD>Ⱥ<EFBFBD><C8BA>824575535
*
* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݰ<EFBFBD>Ȩ<EFBFBD><C8A8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɿƼ<C9BF><C6BC><EFBFBD><EFBFBD>У<EFBFBD>δ<EFBFBD><CEB4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ҵ<EFBFBD><D2B5>;<EFBFBD><CDBE>
* <20><>ӭ<EFBFBD><D3AD>λʹ<CEBB>ò<EFBFBD><C3B2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>޸<EFBFBD><DEB8><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EBB1A3><EFBFBD><EFBFBD><EFBFBD>ɿƼ<C9BF><C6BC>İ<EFBFBD>Ȩ<EFBFBD><C8A8><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
*
* @file isr
* @company <09>ɶ<EFBFBD><C9B6><EFBFBD><EFBFBD>ɿƼ<C9BF><C6BC><EFBFBD><EFBFBD>޹<EFBFBD>˾
* @author <09><><EFBFBD>ɿƼ<C9BF>(QQ3184284598)
* @version <09>鿴doc<6F><63>version<6F>ļ<EFBFBD> <20>汾˵<E6B1BE><CBB5>
* @Software ADS v1.2.2
* @Target core TC264D
* @Taobao https://seekfree.taobao.com/
* @date 2020-3-23
********************************************************************************************************************/
#ifndef _TC264_config_h
#define _TC264_config_h
#define AURIX_MCU_FREQUENCY 200*1000*1000//<2F><><EFBFBD>õ<EFBFBD>Ƭ<EFBFBD><C6AC>Ƶ<EFBFBD><C6B5>Ϊ200M 200M(Ĭ<><C4AC>Ƶ<EFBFBD><C6B5>)
//-------------------------------------------------------------------------------------------------------------------
// PRINTF_ENABLE Ϊ 0 <20><>ʹ<EFBFBD><CAB9>printf<74><66><EFBFBD>ڴ<EFBFBD>ӡ<EFBFBD><D3A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ<EFBFBD><CFA2><EFBFBD>򲻻<EFBFBD><F2B2BBBB><EFBFBD>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD>Ӧ<EFBFBD><D3A6><EFBFBD><EFBFBD>
// PRINTF_ENABLE Ϊ 1 ʹ<><CAB9>printf<74><66><EFBFBD>ڴ<EFBFBD>ӡ<EFBFBD><D3A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ<EFBFBD><CFA2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD>Ӧ<EFBFBD><D3A6><EFBFBD>ڣ<EFBFBD><DAA3><EFBFBD><EFBFBD><EFBFBD><EFB6A8>Ϊ1֮<31><D6AE><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Լ<EFBFBD><D4BC>ֶ<EFBFBD><D6B6><EFBFBD>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
//-------------------------------------------------------------------------------------------------------------------
#define PRINTF_ENABLE 1
#if(1 == PRINTF_ENABLE)
//-------------------------------------------------------------------------------------------------------------------
//printf<74><66><EFBFBD>ڴ<EFBFBD>ӡ<EFBFBD><D3A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʹ<EFBFBD>õĴ<C3B5><C4B4>ڡ<EFBFBD><DAA1><EFBFBD><EFBFBD>ڲ<EFBFBD><DAB2><EFBFBD><EFBFBD>ʡ<EFBFBD><CAA1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ź궨<C5BA><EAB6A8>
//-------------------------------------------------------------------------------------------------------------------
#define DEBUG_UART UART_0
#define DEBUG_UART_BAUD 115200
#define DEBUG_UART_TX_PIN UART0_TX_P14_0
#define DEBUG_UART_RX_PIN UART0_RX_P14_1
//-------------------------------------------------------------------------------------------------------------------
// DEBUG_INFO Ϊ 0 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ
// DEBUG_INFO Ϊ 1 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ<EFBFBD><CFA2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ<EFBFBD><CFA2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>ҪPRINTF<54><EFBFBD><EAB6A8>Ϊ1<CEAA><31><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ч<EFBFBD><D0A7><EFBFBD><EFBFBD>
//-------------------------------------------------------------------------------------------------------------------
#define DEBUG_PRINTF 1
#endif
#endif

View File

@@ -1,223 +0,0 @@
/*********************************************************************************************************************
* COPYRIGHT NOTICE
* Copyright (c) 2020,<2C><><EFBFBD>ɿƼ<C9BF>
* All rights reserved.
* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>QQȺ<51><C8BA><EFBFBD><EFBFBD>Ⱥ<EFBFBD><C8BA>824575535
*
* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݰ<EFBFBD>Ȩ<EFBFBD><C8A8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɿƼ<C9BF><C6BC><EFBFBD><EFBFBD>У<EFBFBD>δ<EFBFBD><CEB4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ҵ<EFBFBD><D2B5>;<EFBFBD><CDBE>
* <20><>ӭ<EFBFBD><D3AD>λʹ<CEBB>ò<EFBFBD><C3B2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>޸<EFBFBD><DEB8><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EBB1A3><EFBFBD><EFBFBD><EFBFBD>ɿƼ<C9BF><C6BC>İ<EFBFBD>Ȩ<EFBFBD><C8A8><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
*
* @file isr
* @company <09>ɶ<EFBFBD><C9B6><EFBFBD><EFBFBD>ɿƼ<C9BF><C6BC><EFBFBD><EFBFBD>޹<EFBFBD>˾
* @author <09><><EFBFBD>ɿƼ<C9BF>(QQ3184284598)
* @version <09>鿴doc<6F><63>version<6F>ļ<EFBFBD> <20>汾˵<E6B1BE><CBB5>
* @Software ADS v1.2.2
* @Target core TC264D
* @Taobao https://seekfree.taobao.com/
* @date 2020-3-23
********************************************************************************************************************/
#include "isr_config.h"
#include "isr.h"
//PIT<49>жϺ<D0B6><CFBA><EFBFBD> ʾ<><CABE>
IFX_INTERRUPT(cc60_pit_ch0_isr, 0, CCU6_0_CH0_ISR_PRIORITY)
{
enableInterrupts();//<2F><><EFBFBD><EFBFBD><EFBFBD>ж<EFBFBD>Ƕ<EFBFBD><C7B6>
PIT_CLEAR_FLAG(CCU6_0, PIT_CH0);
}
IFX_INTERRUPT(cc60_pit_ch1_isr, 0, CCU6_0_CH1_ISR_PRIORITY)
{
enableInterrupts();//<2F><><EFBFBD><EFBFBD><EFBFBD>ж<EFBFBD>Ƕ<EFBFBD><C7B6>
PIT_CLEAR_FLAG(CCU6_0, PIT_CH1);
}
IFX_INTERRUPT(cc61_pit_ch0_isr, 0, CCU6_1_CH0_ISR_PRIORITY)
{
enableInterrupts();//<2F><><EFBFBD><EFBFBD><EFBFBD>ж<EFBFBD>Ƕ<EFBFBD><C7B6>
PIT_CLEAR_FLAG(CCU6_1, PIT_CH0);
}
IFX_INTERRUPT(cc61_pit_ch1_isr, 0, CCU6_1_CH1_ISR_PRIORITY)
{
enableInterrupts();//<2F><><EFBFBD><EFBFBD><EFBFBD>ж<EFBFBD>Ƕ<EFBFBD><C7B6>
PIT_CLEAR_FLAG(CCU6_1, PIT_CH1);
}
IFX_INTERRUPT(eru_ch0_ch4_isr, 0, ERU_CH0_CH4_INT_PRIO)
{
enableInterrupts();//<2F><><EFBFBD><EFBFBD><EFBFBD>ж<EFBFBD>Ƕ<EFBFBD><C7B6>
if(GET_GPIO_FLAG(ERU_CH0_REQ4_P10_7))//ͨ<><CDA8>0<EFBFBD>ж<EFBFBD>
{
CLEAR_GPIO_FLAG(ERU_CH0_REQ4_P10_7);
}
if(GET_GPIO_FLAG(ERU_CH4_REQ13_P15_5))//ͨ<><CDA8>4<EFBFBD>ж<EFBFBD>
{
CLEAR_GPIO_FLAG(ERU_CH4_REQ13_P15_5);
}
}
IFX_INTERRUPT(eru_ch1_ch5_isr, 0, ERU_CH1_CH5_INT_PRIO)
{
enableInterrupts();//<2F><><EFBFBD><EFBFBD><EFBFBD>ж<EFBFBD>Ƕ<EFBFBD><C7B6>
if(GET_GPIO_FLAG(ERU_CH1_REQ5_P10_8))//ͨ<><CDA8>1<EFBFBD>ж<EFBFBD>
{
CLEAR_GPIO_FLAG(ERU_CH1_REQ5_P10_8);
}
if(GET_GPIO_FLAG(ERU_CH5_REQ1_P15_8))//ͨ<><CDA8>5<EFBFBD>ж<EFBFBD>
{
CLEAR_GPIO_FLAG(ERU_CH5_REQ1_P15_8);
}
}
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͷpclk<6C><6B><EFBFBD><EFBFBD>Ĭ<EFBFBD><C4AC>ռ<EFBFBD><D5BC><EFBFBD><EFBFBD><32><CDA8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڴ<EFBFBD><DAB4><EFBFBD>DMA<4D><41><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ٶ<EFBFBD><D9B6><EFBFBD><EFBFBD>жϺ<D0B6><CFBA><EFBFBD>
//IFX_INTERRUPT(eru_ch2_ch6_isr, 0, ERU_CH2_CH6_INT_PRIO)
//{
// enableInterrupts();//<2F><><EFBFBD><EFBFBD><EFBFBD>ж<EFBFBD>Ƕ<EFBFBD><C7B6>
// if(GET_GPIO_FLAG(ERU_CH2_REQ7_P00_4))//ͨ<><CDA8>2<EFBFBD>ж<EFBFBD>
// {
// CLEAR_GPIO_FLAG(ERU_CH2_REQ7_P00_4);
//
// }
// if(GET_GPIO_FLAG(ERU_CH6_REQ9_P20_0))//ͨ<><CDA8>6<EFBFBD>ж<EFBFBD>
// {
// CLEAR_GPIO_FLAG(ERU_CH6_REQ9_P20_0);
//
// }
//}
IFX_INTERRUPT(eru_ch3_ch7_isr, 0, ERU_CH3_CH7_INT_PRIO)
{
enableInterrupts();//<2F><><EFBFBD><EFBFBD><EFBFBD>ж<EFBFBD>Ƕ<EFBFBD><C7B6>
if(GET_GPIO_FLAG(ERU_CH3_REQ6_P02_0))//ͨ<><CDA8>3<EFBFBD>ж<EFBFBD>
{
CLEAR_GPIO_FLAG(ERU_CH3_REQ6_P02_0);
if (CAMERA_GRAYSCALE == camera_type) mt9v03x_vsync();
else if (CAMERA_BIN_UART == camera_type) ov7725_uart_vsync();
else if (CAMERA_BIN == camera_type) ov7725_vsync();
}
if(GET_GPIO_FLAG(ERU_CH7_REQ16_P15_1))//ͨ<><CDA8>7<EFBFBD>ж<EFBFBD>
{
CLEAR_GPIO_FLAG(ERU_CH7_REQ16_P15_1);
}
}
IFX_INTERRUPT(dma_ch5_isr, 0, ERU_DMA_INT_PRIO)
{
enableInterrupts();//<2F><><EFBFBD><EFBFBD><EFBFBD>ж<EFBFBD>Ƕ<EFBFBD><C7B6>
if (CAMERA_GRAYSCALE == camera_type) mt9v03x_dma();
else if (CAMERA_BIN_UART == camera_type) ov7725_uart_dma();
else if (CAMERA_BIN == camera_type) ov7725_dma();
}
//<2F><><EFBFBD><EFBFBD><EFBFBD>жϺ<D0B6><CFBA><EFBFBD> ʾ<><CABE>
IFX_INTERRUPT(uart0_tx_isr, 0, UART0_TX_INT_PRIO)
{
enableInterrupts();//<2F><><EFBFBD><EFBFBD><EFBFBD>ж<EFBFBD>Ƕ<EFBFBD><C7B6>
IfxAsclin_Asc_isrTransmit(&uart0_handle);
}
IFX_INTERRUPT(uart0_rx_isr, 0, UART0_RX_INT_PRIO)
{
enableInterrupts();//<2F><><EFBFBD><EFBFBD><EFBFBD>ж<EFBFBD>Ƕ<EFBFBD><C7B6>
IfxAsclin_Asc_isrReceive(&uart0_handle);
}
IFX_INTERRUPT(uart0_er_isr, 0, UART0_ER_INT_PRIO)
{
enableInterrupts();//<2F><><EFBFBD><EFBFBD><EFBFBD>ж<EFBFBD>Ƕ<EFBFBD><C7B6>
IfxAsclin_Asc_isrError(&uart0_handle);
}
//<2F><><EFBFBD><EFBFBD><31><C4AC><EFBFBD><EFBFBD><EFBFBD>ӵ<EFBFBD><D3B5><EFBFBD><EFBFBD><EFBFBD>ͷ<EFBFBD><CDB7><EFBFBD>ô<EFBFBD><C3B4><EFBFBD>
IFX_INTERRUPT(uart1_tx_isr, 0, UART1_TX_INT_PRIO)
{
enableInterrupts();//<2F><><EFBFBD><EFBFBD><EFBFBD>ж<EFBFBD>Ƕ<EFBFBD><C7B6>
IfxAsclin_Asc_isrTransmit(&uart1_handle);
}
IFX_INTERRUPT(uart1_rx_isr, 0, UART1_RX_INT_PRIO)
{
enableInterrupts();//<2F><><EFBFBD><EFBFBD><EFBFBD>ж<EFBFBD>Ƕ<EFBFBD><C7B6>
IfxAsclin_Asc_isrReceive(&uart1_handle);
if (CAMERA_GRAYSCALE == camera_type) mt9v03x_uart_callback();
else if (CAMERA_BIN_UART == camera_type) ov7725_uart_callback();
}
IFX_INTERRUPT(uart1_er_isr, 0, UART1_ER_INT_PRIO)
{
enableInterrupts();//<2F><><EFBFBD><EFBFBD><EFBFBD>ж<EFBFBD>Ƕ<EFBFBD><C7B6>
IfxAsclin_Asc_isrError(&uart1_handle);
}
//<2F><><EFBFBD><EFBFBD><32><C4AC><EFBFBD><EFBFBD><EFBFBD>ӵ<EFBFBD><D3B5><EFBFBD><EFBFBD><EFBFBD>ת<EFBFBD><D7AA><EFBFBD><EFBFBD>ģ<EFBFBD><C4A3>
IFX_INTERRUPT(uart2_tx_isr, 0, UART2_TX_INT_PRIO)
{
enableInterrupts();//<2F><><EFBFBD><EFBFBD><EFBFBD>ж<EFBFBD>Ƕ<EFBFBD><C7B6>
IfxAsclin_Asc_isrTransmit(&uart2_handle);
}
IFX_INTERRUPT(uart2_rx_isr, 0, UART2_RX_INT_PRIO)
{
enableInterrupts();//<2F><><EFBFBD><EFBFBD><EFBFBD>ж<EFBFBD>Ƕ<EFBFBD><C7B6>
IfxAsclin_Asc_isrReceive(&uart2_handle);
switch(wireless_type)
{
case WIRELESS_SI24R1:
{
wireless_uart_callback();
}break;
case WIRELESS_CH9141:
{
bluetooth_ch9141_uart_callback();
}break;
default:break;
}
}
IFX_INTERRUPT(uart2_er_isr, 0, UART2_ER_INT_PRIO)
{
enableInterrupts();//<2F><><EFBFBD><EFBFBD><EFBFBD>ж<EFBFBD>Ƕ<EFBFBD><C7B6>
IfxAsclin_Asc_isrError(&uart2_handle);
}
IFX_INTERRUPT(uart3_tx_isr, 0, UART3_TX_INT_PRIO)
{
enableInterrupts();//<2F><><EFBFBD><EFBFBD><EFBFBD>ж<EFBFBD>Ƕ<EFBFBD><C7B6>
IfxAsclin_Asc_isrTransmit(&uart3_handle);
}
IFX_INTERRUPT(uart3_rx_isr, 0, UART3_RX_INT_PRIO)
{
enableInterrupts();//<2F><><EFBFBD><EFBFBD><EFBFBD>ж<EFBFBD>Ƕ<EFBFBD><C7B6>
IfxAsclin_Asc_isrReceive(&uart3_handle);
if(GPS_TAU1201 == gps_type)
{
gps_uart_callback();
}
}
IFX_INTERRUPT(uart3_er_isr, 0, UART3_ER_INT_PRIO)
{
enableInterrupts();//<2F><><EFBFBD><EFBFBD><EFBFBD>ж<EFBFBD>Ƕ<EFBFBD><C7B6>
IfxAsclin_Asc_isrError(&uart3_handle);
}

View File

@@ -1,37 +0,0 @@
/*********************************************************************************************************************
* COPYRIGHT NOTICE
* Copyright (c) 2020,<2C><><EFBFBD>ɿƼ<C9BF>
* All rights reserved.
* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>QQȺ<51><C8BA><EFBFBD><EFBFBD>Ⱥ<EFBFBD><C8BA>824575535
*
* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݰ<EFBFBD>Ȩ<EFBFBD><C8A8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɿƼ<C9BF><C6BC><EFBFBD><EFBFBD>У<EFBFBD>δ<EFBFBD><CEB4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ҵ<EFBFBD><D2B5>;<EFBFBD><CDBE>
* <20><>ӭ<EFBFBD><D3AD>λʹ<CEBB>ò<EFBFBD><C3B2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>޸<EFBFBD><DEB8><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EBB1A3><EFBFBD><EFBFBD><EFBFBD>ɿƼ<C9BF><C6BC>İ<EFBFBD>Ȩ<EFBFBD><C8A8><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
*
* @file isr
* @company <09>ɶ<EFBFBD><C9B6><EFBFBD><EFBFBD>ɿƼ<C9BF><C6BC><EFBFBD><EFBFBD>޹<EFBFBD>˾
* @author <09><><EFBFBD>ɿƼ<C9BF>(QQ3184284598)
* @version <09>鿴doc<6F><63>version<6F>ļ<EFBFBD> <20>汾˵<E6B1BE><CBB5>
* @Software ADS v1.2.2
* @Target core TC264D
* @Taobao https://seekfree.taobao.com/
* @date 2020-3-23
********************************************************************************************************************/
#ifndef _isr_h
#define _isr_h
#include "headfile.h"
#endif

View File

@@ -1,103 +0,0 @@
/*********************************************************************************************************************
* COPYRIGHT NOTICE
* Copyright (c) 2020,<2C><><EFBFBD>ɿƼ<C9BF>
* All rights reserved.
* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>QQȺ<51><C8BA><EFBFBD><EFBFBD>Ⱥ<EFBFBD><C8BA>824575535
*
* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݰ<EFBFBD>Ȩ<EFBFBD><C8A8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɿƼ<C9BF><C6BC><EFBFBD><EFBFBD>У<EFBFBD>δ<EFBFBD><CEB4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ҵ<EFBFBD><D2B5>;<EFBFBD><CDBE>
* <20><>ӭ<EFBFBD><D3AD>λʹ<CEBB>ò<EFBFBD><C3B2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>޸<EFBFBD><DEB8><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EBB1A3><EFBFBD><EFBFBD><EFBFBD>ɿƼ<C9BF><C6BC>İ<EFBFBD>Ȩ<EFBFBD><C8A8><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
*
* @file isr_config
* @company <09>ɶ<EFBFBD><C9B6><EFBFBD><EFBFBD>ɿƼ<C9BF><C6BC><EFBFBD><EFBFBD>޹<EFBFBD>˾
* @author <09><><EFBFBD>ɿƼ<C9BF>(QQ3184284598)
* @version <09>鿴doc<6F><63>version<6F>ļ<EFBFBD> <20>汾˵<E6B1BE><CBB5>
* @Software ADS v1.2.2
* @Target core TC264D
* @Taobao https://seekfree.taobao.com/
* @date 2020-3-23
********************************************************************************************************************/
#ifndef _isr_config_h
#define _isr_config_h
//ISR_PRIORITY<54><59> TC264<36><34><EFBFBD><EFBFBD>255<35><35><EFBFBD>ж<EFBFBD><D0B6><EFBFBD><EFBFBD>ȼ<EFBFBD><C8BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> 1-255<35><35>0<EFBFBD><30><EFBFBD>ȼ<EFBFBD><C8BC><EFBFBD>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>жϣ<D0B6>255Ϊ<35><CEAA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȼ<EFBFBD>
//<2F>ر<EFBFBD>ע<EFBFBD><D7A2>
//<2F>ж<EFBFBD><D0B6><EFBFBD><EFBFBD>ȼ<EFBFBD><C8BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ж<EFBFBD><D0B6><EFBFBD><EFBFBD>ȼ<EFBFBD><C8BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA>һ<EFBFBD><D2BB><EFBFBD><EFBFBD>ֵ
//<2F>ر<EFBFBD>ע<EFBFBD><D7A2>
//INT_SERVICE<43><45> <20><EFBFBD><EAB6A8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ж<EFBFBD><D0B6><EFBFBD>˭<EFBFBD><CBAD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ҳ<EFBFBD><D2B2>Ϊ<EFBFBD><CEAA><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ߣ<EFBFBD><DFA3><EFBFBD>TC264<36>У<EFBFBD><D0A3>жϱ<D0B6><CFB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>񣩣<EFBFBD><F1A3A9A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD>÷<EFBFBD>ΧIfxSrc_Tos_cpu0 IfxSrc_Tos_cpu1 IfxSrc_Tos_dma <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA><EFBFBD><EFBFBD>ֵ
//<2F><><EFBFBD><EFBFBD>INT_SERVICE<43><45><EFBFBD><EFBFBD>ΪIfxSrc_Tos_dma<6D>Ļ<EFBFBD><C4BB><EFBFBD>ISR_PRIORITY<54>Ŀ<EFBFBD><C4BF><EFBFBD><EFBFBD>÷<EFBFBD>Χ<EFBFBD><CEA7><EFBFBD><EFBFBD>0-47<34><37>
//------------PIT<49>жϲ<D0B6><CFB2><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ض<EFBFBD><D8B6><EFBFBD>------------
#define CCU6_0_CH0_INT_SERVICE IfxSrc_Tos_cpu0 //<2F><><EFBFBD><EFBFBD>CCU6_0 PITͨ<54><CDA8>0<EFBFBD>жϷ<D0B6><CFB7><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͣ<EFBFBD><CDA3><EFBFBD><EFBFBD>ж<EFBFBD><D0B6><EFBFBD><EFBFBD><EFBFBD>˭<EFBFBD><CBAD>Ӧ<EFBFBD><D3A6><EFBFBD><EFBFBD> 0:CPU0 1:CPU1 3:DMA <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA><EFBFBD><EFBFBD>ֵ
#define CCU6_0_CH0_ISR_PRIORITY 30 //<2F><><EFBFBD><EFBFBD>CCU6_0 PITͨ<54><CDA8>0<EFBFBD>ж<EFBFBD><D0B6><EFBFBD><EFBFBD>ȼ<EFBFBD> <20><><EFBFBD>ȼ<EFBFBD><C8BC><EFBFBD>Χ1-255 Խ<><D4BD><EFBFBD><EFBFBD><EFBFBD>ȼ<EFBFBD>Խ<EFBFBD><D4BD> <20><>ƽʱʹ<CAB1>õĵ<C3B5>Ƭ<EFBFBD><C6AC><EFBFBD><EFBFBD>һ<EFBFBD><D2BB>
#define CCU6_0_CH1_INT_SERVICE IfxSrc_Tos_cpu0
#define CCU6_0_CH1_ISR_PRIORITY 31
#define CCU6_1_CH0_INT_SERVICE IfxSrc_Tos_cpu0
#define CCU6_1_CH0_ISR_PRIORITY 32
#define CCU6_1_CH1_INT_SERVICE IfxSrc_Tos_cpu0
#define CCU6_1_CH1_ISR_PRIORITY 33
//------------GPIO<49>жϲ<D0B6><CFB2><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ض<EFBFBD><D8B6><EFBFBD>------------
//ͨ<><CDA8>0<EFBFBD><30>ͨ<EFBFBD><CDA8>4<EFBFBD>ǹ<EFBFBD><C7B9><EFBFBD>һ<EFBFBD><D2BB><EFBFBD>жϺ<D0B6><CFBA><EFBFBD> <20><><EFBFBD>ж<EFBFBD><D0B6>ڲ<EFBFBD>ͨ<EFBFBD><CDA8><EFBFBD><EFBFBD>־λ<D6BE>ж<EFBFBD><D0B6><EFBFBD>˭<EFBFBD><CBAD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ж<EFBFBD>
#define ERU_CH0_CH4_INT_SERVICE IfxSrc_Tos_cpu0 //<2F><><EFBFBD><EFBFBD>ERUͨ<55><CDA8>0<EFBFBD><30>ͨ<EFBFBD><CDA8>4<EFBFBD>жϷ<D0B6><CFB7><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͣ<EFBFBD><CDA3><EFBFBD><EFBFBD>ж<EFBFBD><D0B6><EFBFBD><EFBFBD><EFBFBD>˭<EFBFBD><CBAD>Ӧ<EFBFBD><D3A6><EFBFBD><EFBFBD> 0:CPU0 1:CPU1 3:DMA <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA><EFBFBD><EFBFBD>ֵ
#define ERU_CH0_CH4_INT_PRIO 40 //<2F><><EFBFBD><EFBFBD>ERUͨ<55><CDA8>0<EFBFBD><30>ͨ<EFBFBD><CDA8>4<EFBFBD>ж<EFBFBD><D0B6><EFBFBD><EFBFBD>ȼ<EFBFBD> <20><><EFBFBD>ȼ<EFBFBD><C8BC><EFBFBD>Χ1-255 Խ<><D4BD><EFBFBD><EFBFBD><EFBFBD>ȼ<EFBFBD>Խ<EFBFBD><D4BD> <20><>ƽʱʹ<CAB1>õĵ<C3B5>Ƭ<EFBFBD><C6AC><EFBFBD><EFBFBD>һ<EFBFBD><D2BB>
//ͨ<><CDA8>1<EFBFBD><31>ͨ<EFBFBD><CDA8>5<EFBFBD>ǹ<EFBFBD><C7B9><EFBFBD>һ<EFBFBD><D2BB><EFBFBD>жϺ<D0B6><CFBA><EFBFBD> <20><><EFBFBD>ж<EFBFBD><D0B6>ڲ<EFBFBD>ͨ<EFBFBD><CDA8><EFBFBD><EFBFBD>־λ<D6BE>ж<EFBFBD><D0B6><EFBFBD>˭<EFBFBD><CBAD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ж<EFBFBD>
#define ERU_CH1_CH5_INT_SERVICE IfxSrc_Tos_cpu0 //<2F><><EFBFBD><EFBFBD>ERUͨ<55><CDA8>1<EFBFBD><31>ͨ<EFBFBD><CDA8>5<EFBFBD>жϷ<D0B6><CFB7><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͣ<EFBFBD>ͬ<EFBFBD><CDAC>
#define ERU_CH1_CH5_INT_PRIO 41 //<2F><><EFBFBD><EFBFBD>ERUͨ<55><CDA8>1<EFBFBD><31>ͨ<EFBFBD><CDA8>5<EFBFBD>ж<EFBFBD><D0B6><EFBFBD><EFBFBD>ȼ<EFBFBD> ͬ<><CDAC>
//ͨ<><CDA8>2<EFBFBD><32>ͨ<EFBFBD><CDA8>6<EFBFBD>ǹ<EFBFBD><C7B9><EFBFBD>һ<EFBFBD><D2BB><EFBFBD>жϺ<D0B6><CFBA><EFBFBD> <20><><EFBFBD>ж<EFBFBD><D0B6>ڲ<EFBFBD>ͨ<EFBFBD><CDA8><EFBFBD><EFBFBD>־λ<D6BE>ж<EFBFBD><D0B6><EFBFBD>˭<EFBFBD><CBAD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ж<EFBFBD>
#define ERU_CH2_CH6_INT_SERVICE IfxSrc_Tos_dma //<2F><><EFBFBD><EFBFBD>ERUͨ<55><CDA8>2<EFBFBD><32>ͨ<EFBFBD><CDA8>6<EFBFBD>жϷ<D0B6><CFB7><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͣ<EFBFBD>ͬ<EFBFBD><CDAC>
#define ERU_CH2_CH6_INT_PRIO 5 //<2F><><EFBFBD><EFBFBD>ERUͨ<55><CDA8>2<EFBFBD><32>ͨ<EFBFBD><CDA8>6<EFBFBD>ж<EFBFBD><D0B6><EFBFBD><EFBFBD>ȼ<EFBFBD> ͬ<><CDAC>
//ͨ<><CDA8>3<EFBFBD><33>ͨ<EFBFBD><CDA8>7<EFBFBD>ǹ<EFBFBD><C7B9><EFBFBD>һ<EFBFBD><D2BB><EFBFBD>жϺ<D0B6><CFBA><EFBFBD> <20><><EFBFBD>ж<EFBFBD><D0B6>ڲ<EFBFBD>ͨ<EFBFBD><CDA8><EFBFBD><EFBFBD>־λ<D6BE>ж<EFBFBD><D0B6><EFBFBD>˭<EFBFBD><CBAD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ж<EFBFBD>
#define ERU_CH3_CH7_INT_SERVICE IfxSrc_Tos_cpu0 //<2F><><EFBFBD><EFBFBD>ERUͨ<55><CDA8>3<EFBFBD><33>ͨ<EFBFBD><CDA8>7<EFBFBD>жϷ<D0B6><CFB7><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͣ<EFBFBD>ͬ<EFBFBD><CDAC>
#define ERU_CH3_CH7_INT_PRIO 43 //<2F><><EFBFBD><EFBFBD>ERUͨ<55><CDA8>3<EFBFBD><33>ͨ<EFBFBD><CDA8>7<EFBFBD>ж<EFBFBD><D0B6><EFBFBD><EFBFBD>ȼ<EFBFBD> ͬ<><CDAC>
//------------DMA<4D>жϲ<D0B6><CFB2><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ض<EFBFBD><D8B6><EFBFBD>------------
#define ERU_DMA_INT_SERVICE IfxSrc_Tos_cpu0 //ERU<52><55><EFBFBD><EFBFBD>DMA<4D>жϷ<D0B6><CFB7><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͣ<EFBFBD><CDA3><EFBFBD><EFBFBD>ж<EFBFBD><D0B6><EFBFBD><EFBFBD><EFBFBD>˭<EFBFBD><CBAD>Ӧ<EFBFBD><D3A6><EFBFBD><EFBFBD> 0:CPU0 1:CPU1 3:DMA <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA><EFBFBD><EFBFBD>ֵ
#define ERU_DMA_INT_PRIO 60 //ERU<52><55><EFBFBD><EFBFBD>DMA<4D>ж<EFBFBD><D0B6><EFBFBD><EFBFBD>ȼ<EFBFBD> <20><><EFBFBD>ȼ<EFBFBD><C8BC><EFBFBD>Χ1-255 Խ<><D4BD><EFBFBD><EFBFBD><EFBFBD>ȼ<EFBFBD>Խ<EFBFBD><D4BD> <20><>ƽʱʹ<CAB1>õĵ<C3B5>Ƭ<EFBFBD><C6AC><EFBFBD><EFBFBD>һ<EFBFBD><D2BB>
//------------<2D><><EFBFBD><EFBFBD><EFBFBD>жϲ<D0B6><CFB2><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ض<EFBFBD><D8B6><EFBFBD>------------
#define UART0_INT_SERVICE IfxSrc_Tos_cpu0 //<2F><><EFBFBD><EFBFBD><E5B4AE>0<EFBFBD>жϷ<D0B6><CFB7><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͣ<EFBFBD><CDA3><EFBFBD><EFBFBD>ж<EFBFBD><D0B6><EFBFBD><EFBFBD><EFBFBD>˭<EFBFBD><CBAD>Ӧ<EFBFBD><D3A6><EFBFBD><EFBFBD> 0:CPU0 1:CPU1 3:DMA <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA><EFBFBD><EFBFBD>ֵ
#define UART0_TX_INT_PRIO 10 //<2F><><EFBFBD><EFBFBD><E5B4AE>0<EFBFBD><30><EFBFBD><EFBFBD><EFBFBD>ж<EFBFBD><D0B6><EFBFBD><EFBFBD>ȼ<EFBFBD> <20><><EFBFBD>ȼ<EFBFBD><C8BC><EFBFBD>Χ1-255 Խ<><D4BD><EFBFBD><EFBFBD><EFBFBD>ȼ<EFBFBD>Խ<EFBFBD><D4BD> <20><>ƽʱʹ<CAB1>õĵ<C3B5>Ƭ<EFBFBD><C6AC><EFBFBD><EFBFBD>һ<EFBFBD><D2BB>
#define UART0_RX_INT_PRIO 11 //<2F><><EFBFBD><EFBFBD><E5B4AE>0<EFBFBD><30><EFBFBD><EFBFBD><EFBFBD>ж<EFBFBD><D0B6><EFBFBD><EFBFBD>ȼ<EFBFBD> <20><><EFBFBD>ȼ<EFBFBD><C8BC><EFBFBD>Χ1-255 Խ<><D4BD><EFBFBD><EFBFBD><EFBFBD>ȼ<EFBFBD>Խ<EFBFBD><D4BD> <20><>ƽʱʹ<CAB1>õĵ<C3B5>Ƭ<EFBFBD><C6AC><EFBFBD><EFBFBD>һ<EFBFBD><D2BB>
#define UART0_ER_INT_PRIO 12 //<2F><><EFBFBD><EFBFBD><E5B4AE>0<EFBFBD><30><EFBFBD><EFBFBD><EFBFBD>ж<EFBFBD><D0B6><EFBFBD><EFBFBD>ȼ<EFBFBD> <20><><EFBFBD>ȼ<EFBFBD><C8BC><EFBFBD>Χ1-255 Խ<><D4BD><EFBFBD><EFBFBD><EFBFBD>ȼ<EFBFBD>Խ<EFBFBD><D4BD> <20><>ƽʱʹ<CAB1>õĵ<C3B5>Ƭ<EFBFBD><C6AC><EFBFBD><EFBFBD>һ<EFBFBD><D2BB>
#define UART1_INT_SERVICE IfxSrc_Tos_cpu0
#define UART1_TX_INT_PRIO 13
#define UART1_RX_INT_PRIO 14
#define UART1_ER_INT_PRIO 15
#define UART2_INT_SERVICE IfxSrc_Tos_cpu0
#define UART2_TX_INT_PRIO 16
#define UART2_RX_INT_PRIO 17
#define UART2_ER_INT_PRIO 18
#define UART3_INT_SERVICE IfxSrc_Tos_cpu0
#define UART3_TX_INT_PRIO 19
#define UART3_RX_INT_PRIO 20
#define UART3_ER_INT_PRIO 21
#endif

View File

@@ -1,6 +0,0 @@
rmdir Debug /s /q
del *.launch /s
exit

View File

@@ -1,36 +0,0 @@
<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͷ 8<><38><EFBFBD><EFBFBD><EFBFBD>ݿ<EFBFBD> һ<><D2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>eru<72>ж<EFBFBD>
<09><><EFBFBD>ݿڣ<DDBF>00_0 00_1 00_2 00_3 00_4 00_5 00_6 00_7
<09><><EFBFBD>ô<EFBFBD><C3B4>ڣ<EFBFBD><DAA3><EFBFBD><EFBFBD><EFBFBD>ͷRX<52><58>02_2 <20><><EFBFBD><EFBFBD>ͷTX<54><58>02_3
VSY<53><59>02_0
HREF<45><46><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ҫ<EFBFBD><D2AA><EFBFBD><EFBFBD><EFBFBD>Բ<EFBFBD><D4B2><EFBFBD>
PCLK<4C><4B>02_1
<EFBFBD><EFBFBD>·<EFBFBD>˷<EFBFBD> A0 A1 A2 A3 <20><>
<EFBFBD>ĸ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
LSB<53><42>33_7 DIR<49><52>33_6
LSB<53><42>02_8 DIR<49><52>00_9
LSB<53><42>10_3 DIR<49><52>10_1
LSB<53><42>20_3 DIR<49><52>20_0
8·pwm 21_2 21_3 21_4 21_5 02_4 02_5 02_6 02_7
ICM20602
CLK<4C><4B> P20_11
MOSI<53><49> P20_14
MISO<53><4F> P20_12
CS<43><53> P20_13
SPI0
TFT<EFBFBD><EFBFBD>Ļ
CLK 15_3
MOSI 15_5
MISO 15_4
CS0 15_2
BL 15_4
REST 15_1
DC 15_0
SPI2
<EFBFBD><EFBFBD><EFBFBD><EFBFBD> P33_9

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,40 @@
<?xml version="1.0" encoding="UTF-8"?>
<projectDescription>
<name>E01_gpio_demo</name>
<comment></comment>
<projects>
</projects>
<buildSpec>
<buildCommand>
<name>com.infineon.aurix.buildsystem.builders.booster</name>
<triggers>full,incremental,</triggers>
<arguments>
</arguments>
</buildCommand>
<buildCommand>
<name>com.infineon.aurix.buildsystem.builders.autodiscovery</name>
<triggers>full,incremental,</triggers>
<arguments>
</arguments>
</buildCommand>
<buildCommand>
<name>org.eclipse.cdt.managedbuilder.core.genmakebuilder</name>
<triggers>clean,full,incremental,</triggers>
<arguments>
</arguments>
</buildCommand>
<buildCommand>
<name>org.eclipse.cdt.managedbuilder.core.ScannerConfigBuilder</name>
<triggers>full,incremental,</triggers>
<arguments>
</arguments>
</buildCommand>
</buildSpec>
<natures>
<nature>org.eclipse.cdt.core.cnature</nature>
<nature>org.eclipse.cdt.managedbuilder.core.managedBuildNature</nature>
<nature>org.eclipse.cdt.core.ccnature</nature>
<nature>com.infineon.aurix.buildsystem.aurixnature</nature>
<nature>org.eclipse.cdt.managedbuilder.core.ScannerConfigNature</nature>
</natures>
</projectDescription>

View File

@@ -0,0 +1,2 @@
eclipse.preferences.version=1
encoding/<project>=GBK

View File

@@ -0,0 +1,42 @@
@echo off
setlocal enabledelayedexpansion
set "sourceFile=.project"
set "target_line="
for /f "tokens=1* delims=:" %%a in ('findstr /n "^" "%sourceFile%"') do (
if %%a equ 3 set "target_line=%%b"
)
for /f "tokens=3 delims=<>" %%c in ("%target_line%") do set "old_str=%%c"
echo <20><>ǰ<EFBFBD><C7B0><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>: %old_str%
set /p "userInput=<3D><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>µĹ<C2B5><C4B9><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>: "
set "tempFile=temp.txt"
set "oldString=%old_str%"
set "newString=%userInput%"
if exist "%tempFile%" del /Q "%tempFile%"
for /f "delims=" %%i in ('type "%sourceFile%"') do (
set "line=%%i"
set "modified=!line!"
if defined modified (
set "modified=!modified:%oldString%=%newString%!"
echo !modified!>>"%tempFile%"
) else (
echo %%i>>"%tempFile%"
)
)
move /y "%tempFile%" "%sourceFile%" >nul 2>&1
set "sourceFile=.cproject"
if exist "%tempFile%" del /Q "%tempFile%"
for /f "delims=" %%i in ('type "%sourceFile%"') do (
set "line=%%i"
set "modified=!line!"
if defined modified (
set "modified=!modified:%oldString%=%newString%!"
echo !modified!>>"%tempFile%"
) else (
echo %%i>>"%tempFile%"
)
)
move /y "%tempFile%" "%sourceFile%" >nul 2>&1
call ɾ<><C9BE><EFBFBD><EFBFBD>ʱ<EFBFBD>ļ<EFBFBD>.bat
endlocal

View File

@@ -0,0 +1 @@
参考https://www.bilibili.com/video/BV1nBkMYMEwE

View File

@@ -0,0 +1,13 @@
TC264 Opensourec Library : An open source library of third party interfaces based on the official SDK
Copyright (C) 2022 SEEKFREE <20><><EFBFBD>ɿƼ<C9BF>
TC264 Opensourec Library is free software:
you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation,
either version 3 of the License, or (at your option) any later version.
TC264 Opensourec Library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY;
without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
See the GNU General Public License for more details.
You should have received a copy of the GNU General Public License along with TC264 Opensourec Library.
If not, see <https://www.gnu.org/licenses/>.

View File

@@ -0,0 +1,275 @@
V3.4.4
<20><><EFBFBD><EFBFBD>SCC8660<36><30><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʽ
<20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ָ<EFBFBD><D6B8><EFBFBD>V2<56><32><EFBFBD><EFBFBD>
<20>޸<EFBFBD>ips200<30><30>ʾscc8660<36><30><EFBFBD><EFBFBD>ͷ<EFBFBD><CDB7>ʽ
<20>޸<EFBFBD>ips114<31><34>ʾscc8660<36><30><EFBFBD><EFBFBD>ͷ<EFBFBD><CDB7>ʽ
V3.4.3
<09><><EFBFBD><EFBFBD>660RC<52><43><EFBFBD><EFBFBD>
V3.4.2
<09>޸<EFBFBD>printf<74>ض<EFBFBD><D8B6><EFBFBD><EFBFBD>еĺ궨<C4BA><EAB6A8>
<09><><EFBFBD><EFBFBD>WIFI_SPI<50><49><EFBFBD><EFBFBD>
V3.4.1
<09>޸Ĵ<DEB8><C4B4>ڷ<EFBFBD><DAB7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E9BAAF><EFBFBD>еķ<D0B5><C4B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
<09>޸<EFBFBD>ips200proע<6F><D7A2>
<09>޸<EFBFBD><DEB8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD>غ<EFBFBD><D8BA><EFBFBD>
V3.4.0
<20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ض<EFBFBD><D8B6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>޸<EFBFBD>zf_components/printf_redirect.h<>ļ<EFBFBD><C4BC>ڵĺ궨<C4BA><EFBFBD><E5BCB4><EFBFBD>޸<EFBFBD>printf<74><66><EFBFBD><EFBFBD>
<20>Ż<EFBFBD><C5BB><EFBFBD><EFBFBD><EFBFBD>ͨѶʱ<D1B6><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>115200<30><30><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͨѶ<CDA8><D1B6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>1.388ms<EFBFBD><EFBFBD>ʱ
<20>Ż<EFBFBD><C5BB><EFBFBD>AURIX<49>޸Ĺ<DEB8><C4B9><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>.bat<61><74><EFBFBD><EFBFBD><EFBFBD>ߣ<EFBFBD><DFA3><EFBFBD><EFBFBD>ڸ<EFBFBD><DAB8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֱ<EFBFBD><D6B1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD>ļ<EFBFBD>
<20>޸<EFBFBD><DEB8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>߼<EFBFBD><DFBC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>´<EFBFBD><C2B4><EFBFBD><EFBFBD><EFBFBD><ECB3A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
V3.3.5
<20><><EFBFBD><EFBFBD>660rb<72><62><EFBFBD>ϲ<EFBFBD>660ra<72><61>660rbΪ660rx
<20>û<EFBFBD>ʹ<EFBFBD><CAB9>660rx<72><78><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Զ<EFBFBD>ʶ<EFBFBD><CAB6>660ra<72><61>660rb
V3.3.4
<20>Ż<EFBFBD><C5BB><EFBFBD>AURIX<49>޸Ĺ<DEB8><C4B9><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>.bat<61><74><EFBFBD><EFBFBD><EFBFBD>ߣ<EFBFBD>ʹ<EFBFBD>ø<EFBFBD><C3B8>ӱ<EFBFBD><D3B1><EFBFBD>
V3.3.3
<20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ע<EFBFBD><D7A2><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
V3.3.2
<20><><EFBFBD><EFBFBD>zf_device_menc15a<35>ű<EFBFBD><C5B1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
<20><><EFBFBD><EFBFBD>uart<72><74><EFBFBD>ջ<EFBFBD><D5BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
<20><><EFBFBD><EFBFBD>SPI<50><49>16λͨѶ<CDA8><D1B6>λ<EFBFBD><CEBB><EFBFBD><EFBFBD>
<20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ע<EFBFBD><D7A2><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
V3.3.1
<20>Ƴ<EFBFBD><C6B3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ķ<EFBFBD><C4B6>Լ<EFBFBD><D4BC><EFBFBD>
<20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>̹<EFBFBD><CCB9><EFBFBD>
V3.3.0
<20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͨѶģ<D1B6><C4A3>
V3.2.13
<20><><EFBFBD><EFBFBD>һ<EFBFBD><D2BB>΢<EFBFBD><CEA2><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA>ͨ<EFBFBD><CDA8>ʱ <20><><EFBFBD>ж<EFBFBD><D0B6><EFBFBD>ʱ
V3.2.12
<20>޸<EFBFBD><DEB8><EFBFBD><EFBFBD><EFBFBD>1<EFBFBD><31><EFBFBD><EFBFBD><EFBFBD><EFBFBD><ECB3A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
<20>޸<EFBFBD><DEB8><EFBFBD>ͫ<EFBFBD><CDAB><EFBFBD>ȵ<EFBFBD><C8B5>ں<EFBFBD><DABA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><ECB3A3>bug
<20><><EFBFBD><EFBFBD>PWM<57><4D>ʼ<EFBFBD><CABC>ע<EFBFBD><D7A2>˵<EFBFBD><CBB5>
V3.2.11
<20>޸<EFBFBD><DEB8><EFBFBD>ͫ<EFBFBD><CDAB>֡<EFBFBD>ʰ滭<CAB0><E6BBAD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
<20>޸<EFBFBD><DEB8><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD>ڶ<EFBFBD><DAB6>ж<EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><ECB3A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
V3.2.10
<20>޸<EFBFBD>spi-wifi<66><69>ʼ<EFBFBD><CABC>ʧ<EFBFBD>ܵ<EFBFBD><DCB5><EFBFBD><EFBFBD><EFBFBD>
<20>޸<EFBFBD>spi-wifi<66><69>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ<EFBFBD><CFA2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
V3.2.9
<20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɼ<EFBFBD> <20><>TIM2 TIM3 TIM4֧<34><D6A7>
V3.2.8
<20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͫ<EFBFBD><CDAB>MCU<43><EFBFBD><E6B1BE><EFBFBD><EFBFBD>
<20><><EFBFBD><EFBFBD>SBUSң<53><D2A3><EFBFBD><EFBFBD><EFBFBD>ײ<EFBFBD><D7B2><EFBFBD><EFBFBD><EFBFBD>
V3.2.7
<20><><EFBFBD><EFBFBD>RTK "D" <20><>ͷЭ<CDB7><D0AD>
<20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ǻ<EFBFBD>ת<EFBFBD><D7AA><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>ֹ<EFBFBD><D6B9><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
V3.2.6
<20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֽӿں<D3BF><DABA><EFBFBD> <20><><EFBFBD>ó<EFBFBD>ʼ<EFBFBD><CABC>ʱֱ<CAB1>Ӵ<EFBFBD><D3B4><EFBFBD>ͨ<EFBFBD><CDA8><EFBFBD><EFBFBD>
<20><><EFBFBD><EFBFBD>wifi SPI<50><49><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD> <20><><EFBFBD><EFBFBD>ͨ<EFBFBD><CDA8>Ч<EFBFBD><D0A7>
<20><><EFBFBD><EFBFBD>GPS<50><53><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ΪGNSS<53><53><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͨ<EFBFBD><CDA8>λģ<CEBB>鼰RTK
V3.2.5
<20>޸<EFBFBD><DEB8><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ж<EFBFBD><D0B6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
V3.2.4
<20>Ż<EFBFBD><C5BB><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD>Ϊ<EFBFBD>ж<EFBFBD><D0B6><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD>ر<EFBFBD><D8B1><EFBFBD><EFBFBD>ж<EFBFBD><D0B6><EFBFBD>Ϊ<EFBFBD><CEAA>ͨ<EFBFBD><CDA8>ʱ
<20>Ż<EFBFBD>ips114<31><34>Ļ<EFBFBD>ij<EFBFBD>ʼ<EFBFBD><CABC>ʱ<EFBFBD><EFBFBD>Ƴ<EFBFBD><C6B3><EFBFBD><EFBFBD><EFBFBD>Ҫ<EFBFBD><D2AA><EFBFBD><EFBFBD>ʱ
<20>޸<EFBFBD><DEB8><EFBFBD><EFBFBD>ڴ<EFBFBD><DAB4><EFBFBD><EFBFBD>жϵĴ<CFB5><C4B4>ں<EFBFBD><DABA><EFBFBD><ECB3A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
׷<>Ӹ<EFBFBD><D3B8>£<EFBFBD>
<20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>֧<EFBFBD><D6A7>
<20>޸<EFBFBD>fifo<66><6F>Ƶ<EFBFBD><C6B5>д<EFBFBD>ij<EFBFBD>ͻ<EFBFBD><CDBB><EFBFBD><EFBFBD>
V3.2.3
<20>Ż<EFBFBD><C5BB><EFBFBD><EFBFBD><EFBFBD>SPIͨ<49><CDA8><EFBFBD><EFBFBD>Ļ(OLED<45><44><EFBFBD><EFBFBD>)<29><>ͨ<EFBFBD>ŷ<EFBFBD>ʽ<EFBFBD><CABD><EFBFBD><EFBFBD>ʾ<EFBFBD><CABE><EFBFBD>ʽ<EFBFBD><CABD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
<20>޸Ĵ<DEB8><C4B4>ڵ<EFBFBD>Ĭ<EFBFBD><C4AC>ͨ<EFBFBD>ŷ<EFBFBD>ʽ
V3.2.2
pit<69><74>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>״̬<D7B4><CCAC><EFBFBD><EFBFBD><E2A3AC>ֹ<EFBFBD><D6B9><EFBFBD><EFBFBD>Ȩ<EFBFBD><C8A8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>߱<EFBFBD><DFB1><EFBFBD>
V3.2.1
flash<73><68><EFBFBD><EFBFBD>д<EFBFBD><D0B4>ʱ<EFBFBD><CAB1><EFBFBD>Ƿ<EFBFBD><C7B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ǰҳ<C7B0><D2B3><EFBFBD>ж<EFBFBD> <20><>ֹ<EFBFBD>û<EFBFBD><C3BB><EFBFBD>ʹ<EFBFBD>ò<EFBFBD><C3B2><EFBFBD><E6B7B6><EFBFBD><EFBFBD>flashʹ<68>ñ<EFBFBD><C3B1><EFBFBD>
V3.2.0
<20><><EFBFBD><EFBFBD>wifi spiģ<69><C4A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD>
<20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>߱<EFBFBD><DFB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ѣ<EFBFBD><D1A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ӷ<EFBFBD><D3B6>Ա<EFBFBD><D4B1><EFBFBD>
zf_device_type <20><><EFBFBD><EFBFBD> ToF <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
<20><><EFBFBD><EFBFBD> ToF ģ<><C4A3> DL1B
<20>޸<EFBFBD> soft_iic transfer <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD>Ϊ 0 ʱ<><CAB1><EFBFBD><EFBFBD> restart <20>źŵ<C5BA> bug
V3.1.9
<20>޸<EFBFBD><DEB8><EFBFBD>Ƭ<EFBFBD><C6AC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʧ<EFBFBD>ܵ<EFBFBD><DCB5><EFBFBD><EFBFBD><EFBFBD>
<20>޸<EFBFBD><DEB8><EFBFBD><EFBFBD>İ<EFBFBD>ESR1<52><31><EFBFBD>ſ<EFBFBD><C5BF>ܴ<EFBFBD><DCB4><EFBFBD><EFBFBD><EFBFBD>λ<EFBFBD><CEBB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
<20>޸<EFBFBD><DEB8><EFBFBD>Ļ<EFBFBD><C4BB>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊdouble
V3.1.8
<20>޸<EFBFBD><DEB8><EFBFBD><EFBFBD><EFBFBD>SPIͬʱʹ<CAB1>ÿ<EFBFBD><C3BF>ܲ<EFBFBD><DCB2><EFBFBD><EFBFBD><EFBFBD>ͻ<EFBFBD><CDBB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
<20>޸<EFBFBD><DEB8><EFBFBD><EFBFBD>˳<EFBFBD>ʼ<EFBFBD><CABC>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD>ڵȴ<DAB5>ͬ<EFBFBD><CDAC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
<20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ע<EFBFBD><D7A2>
V3.1.7
<20>޸<EFBFBD><DEB8><EFBFBD><EFBFBD><EFBFBD>ͷ<EFBFBD><CDB7>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Դ<EFBFBD><D4B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
V3.1.6
<20>޸<EFBFBD>GPSʹ<53>ô<EFBFBD><C3B4>ںţ<DABA><C5A3>Ż<EFBFBD>GPS<50><53><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
isr.c<><63><EFBFBD>Ƴ<EFBFBD>CCD<43>ɼ<EFBFBD><C9BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ҫ<EFBFBD><D2AA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
<20>޸İ<DEB8><C4B0><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD><C4BC>İ<EFBFBD><C4B0><EFBFBD><EFBFBD>˿ںţ<DABA><C5A3><EFBFBD><EFBFBD><EFBFBD>V2.6<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
V3.1.5
<20>޸<EFBFBD>Ӳ<EFBFBD><D3B2>SPI<50><49>ʼ<EFBFBD><CABC>ʱѡ<CAB1><D1A1><EFBFBD><EFBFBD>CS<43><53><EFBFBD>ţ<EFBFBD>ȴ<EFBFBD><C8B4><EFBFBD>ɻ<EFBFBD><C9BB><EFBFBD>ʼ<EFBFBD><CABC>Ĭ<EFBFBD><C4AC>CS<43><53><EFBFBD>ŵ<EFBFBD>bug
V3.1.4
<20><><EFBFBD><EFBFBD>DL1A<31><41><EFBFBD><EFBFBD>ģ<EFBFBD><C4A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD>
V3.1.3
<20>޸<EFBFBD><DEB8><EFBFBD><EFBFBD><EFBFBD>ע<EFBFBD><D7A2><EFBFBD>Լ<EFBFBD>ʹ<EFBFBD><CAB9>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
V3.1.2
<20>޸<EFBFBD>flash_check<63><6B><EFBFBD><EFBFBD>ֻ<EFBFBD><D6BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD>ݵ<EFBFBD>bug
V3.1.1
<20>޸<EFBFBD><DEB8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͷ<EFBFBD><CDB7>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>RAMռ<4D>ù<EFBFBD><C3B9><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
V3.1.0
<20>޸<EFBFBD>GPS<50><53><EFBFBD>Ȳ<EFBFBD><C8B2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
<20>޸<EFBFBD><DEB8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD>ע<EFBFBD>ʹ<EFBFBD><CDB4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
<20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>û<EFBFBD><C3BB>ӿڵĶ<DAB5><C4B6>Ի<EFBFBD><D4BB><EFBFBD> <20><>ǿ V3 <20><><EFBFBD>Ľ<EFBFBD>׳<EFBFBD><D7B3> <20><>Ҫ<EFBFBD><D2AA><EFBFBD>Կ<EFBFBD>ָ<EFBFBD><D6B8>
V3.0.1
<20>޸<EFBFBD><DEB8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E7B5A5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ع<EFBFBD><D8B9>ȹ<EFBFBD><C8B9><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
V3.0.0
<20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Դ<EFBFBD><D4B4>ʵ<EFBFBD><CAB5>
<20><>ǿ<EFBFBD>˴<EFBFBD><CBB4><EFBFBD><EFBFBD>Ŀ<EFBFBD><C4BF><EFBFBD>ֲ<EFBFBD><D6B2>
<20><><EFBFBD><EFBFBD><EFBFBD>˲<EFBFBD><CBB2>ֹ<EFBFBD><D6B9><EFBFBD><EFBFBD><EFBFBD><E3B9A6>
V1.3.0
<20><>icm20602<30>ij<EFBFBD>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϵ<EFBFBD><CFB5>˵<EFBFBD><CBB5>
V1.2.10
<20><><EFBFBD><EFBFBD>IMU963RA<52><41><EFBFBD><EFBFBD>ģ<EFBFBD><C4A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD>
V1.2.9
ɾ<><C9BE>SEEKFREE_IPS200_PARALLEL8<4C>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>SEEKFREE_IPS200<30><30><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD><EFBFBD>ԭ<EFBFBD>е<EFBFBD>2<EFBFBD><32><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ҳ<EFBFBD><D2B2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>µ<EFBFBD>2<EFBFBD><32><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
<20>޸<EFBFBD>spi<70>ײ<EFBFBD><D7B2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>˳<EFBFBD>ʱ<EFBFBD>ж<EFBFBD>cs<63><73><EFBFBD><EFBFBD>״̬<D7B4><CCAC>ȷ<EFBFBD><C8B7>spi<70><69><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɺ<EFBFBD><C9BA>˳<EFBFBD><CBB3><EFBFBD>
<20><>tft<66><74>ips114<31><34><EFBFBD><EFBFBD><EFBFBD>з<EFBFBD><D0B7>͵<EFBFBD>my_delayȥ<79><C8A5>
V1.2.8
<20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ײ<EFBFBD><D7B2><EFBFBD><EFBFBD><EFBFBD>PCLK_MODE<44><45>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD>λ
V1.2.7
<20>޸<EFBFBD>֮ǰ<D6AE><C7B0><EFBFBD>͵<EFBFBD><CDB5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ײ<EFBFBD><D7B2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E1B5BC><EFBFBD><EFBFBD><EFBFBD>׳<EFBFBD><D7B3>ֲɼ<D6B2><C9BC><EFBFBD>λ<EFBFBD><CEBB>
<20><><EFBFBD><EFBFBD>ż<EFBFBD><C5BC><EFBFBD>Ӵ<EFBFBD><D3B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͼ<EFBFBD><CDBC><EFBFBD><EFBFBD>λ<EFBFBD><CEBB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Դ<EFBFBD><D4B4><EFBFBD><EFBFBD>Ӽ<EFBFBD><D3BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>򲢳<EFBFBD><F2B2A2B3>Խ<EFBFBD><D4BD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>޸<EFBFBD><DEB8><EFBFBD>
V1.2.6
<20>޸<EFBFBD><DEB8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ײ㣬<D7B2><E3A3AC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʹ<EFBFBD>÷<EFBFBD>ʽ
<20>޸<EFBFBD><DEB8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ײ㣬<D7B2><E3A3AC><EFBFBD>Ӷ<EFBFBD>V2.1<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>PCLK<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
<20><><EFBFBD><EFBFBD>˫ƵGPS<50><53>λģ<CEBB><C4A3><EFBFBD>ĵײ<C4B5><D7B2><EFBFBD><EFBFBD><EFBFBD>
V1.2.5
<09>Ż<EFBFBD>Ӳ<EFBFBD><D3B2>SPI<50><49><EFBFBD><EFBFBD><EFBFBD><EFBFBD>SPI<50><49>Ļ<EFBFBD><C4BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>SPI<50><49>Ļˢ<C4BB><CBA2><EFBFBD>ٶȣ<D9B6>IPS1.14<EFBFBD><EFBFBD>Ļ<EFBFBD><EFBFBD>ʾ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>188*120<32>ɴ<EFBFBD>31֡<31><D6A1><EFBFBD><EFBFBD>ʾ160*120<32>ɴ<EFBFBD>37֡<37><D6A1>TFT1.8<EFBFBD><EFBFBD>Ļ<EFBFBD><EFBFBD>ʾ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>160*120<32>ɴ<EFBFBD>37֡<37><D6A1>
V1.2.4
<09>޸<EFBFBD>systick_delay_ms<6D><73><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱʱ<CAB1><CAB1><EFBFBD>ϳ<EFBFBD><CFB3><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱʱ<CAB1><EFBFBD><E4B2BB>ȷ<EFBFBD><C8B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
V1.2.3
<09><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͷ<EFBFBD><CDB7>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>н<EFBFBD>PCLK<4C>޸<EFBFBD>Ϊ<EFBFBD><CEAA><EFBFBD><EFBFBD><EFBFBD>ش<EFBFBD><D8B4><EFBFBD>
<09>޸<EFBFBD>systick<63><6B>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>us<75><73><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD>
V1.2.2
<20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͷͼ<CDB7><CDBC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ż<EFBFBD><C5BC><EFBFBD>Դ<EFBFBD>λ<EFBFBD><CEBB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>³<EFBFBD>ʼ<EFBFBD><CABC>DMAʹ<41><CAB9><EFBFBD>´βɼ<CEB2>ͼ<EFBFBD><CDBC><EFBFBD>Զ<EFBFBD><D4B6>ָ<EFBFBD><D6B8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
<20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͷ<EFBFBD><CDB7><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD>޸<EFBFBD>Ϊ<EFBFBD><CEAA><EFBFBD><EFBFBD><EFBFBD>ش<EFBFBD><D8B4><EFBFBD>
<20><><EFBFBD><EFBFBD>ͷȥ<CDB7><C8A5><EFBFBD><EFBFBD>־λ<D6BE><CEBB><EFBFBD><EFBFBD><EFBFBD>ż<EFBFBD><C5BC><EFBFBD><EFBFBD>ɼ<EFBFBD><C9BC><EFBFBD>һ<EFBFBD><D2BB>ͼ<EFBFBD><CDBC><EFBFBD><EFBFBD><EFBFBD>߼<EFBFBD><DFBC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>֡<EFBFBD>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
V1.2.1
<20><><EFBFBD><EFBFBD>printf<74>رյ<D8B1>ʱ<EFBFBD>򣬱<EFBFBD><F2A3ACB1><EFBFBD><EBB1A8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
V1.2.0
<20><><EFBFBD><EFBFBD>CH9141<34><31><EFBFBD><EFBFBD>ת<EFBFBD><D7AA><EFBFBD><EFBFBD>ģ<EFBFBD><C4A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
<20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>͵<EFBFBD>ö<EFBFBD>ٱ<EFBFBD><D9B1><EFBFBD>
<20>޸<EFBFBD> ɾ<><C9BE><EFBFBD><EFBFBD>ʱ<EFBFBD>ļ<EFBFBD>.bat ִ<><D6B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Զ<EFBFBD><D4B6>رմ<D8B1><D5B4><EFBFBD>
<20>޸<EFBFBD> ɾ<><C9BE><EFBFBD><EFBFBD>ʱ<EFBFBD>ļ<EFBFBD>.bat <20><><EFBFBD><EFBFBD>ɾ<EFBFBD><C9BE><EFBFBD>°汾<C2B0><E6B1BE><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD>
<20>޸Ĺ<DEB8><C4B9><EFBFBD><EFBFBD><EFBFBD>Ŀ<EFBFBD>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD><EFBFBD>֧<EFBFBD><D6A7><EFBFBD>°汾<C2B0><E6B1BE><EFBFBD><EFBFBD>
V1.1.10
<20>޸<EFBFBD>ͨ<EFBFBD><CDA8>#pragma section all "cpux_dsram"ָ<><D6B8><EFBFBD><EFBFBD><EFBFBD><EFBFBD>λ<EFBFBD><CEBB>ʧЧ<CAA7><D0A7><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
V1.1.9
<20><><EFBFBD><EFBFBD><EFBFBD>ڵķ<DAB5><C4B7><EFBFBD>buff<66><66><EFBFBD>ӵ<EFBFBD>128<32>ֽ<EFBFBD>
V1.1.8
<20><>isr_config.h<><68> INT_SERVICE<43><45><EFBFBD>ø<EFBFBD>Ϊʹ<CEAA><CAB9>ö<EFBFBD><C3B6>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
<20><><EFBFBD><EFBFBD>illd<6C>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊinfineon_libraries
<20><>TC264<36><34><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD><C4BC>У<EFBFBD><D0A3><EFBFBD><EFBFBD><EFBFBD>Ƶ<EFBFBD><C6B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ѡ<EFBFBD><D1A1>
<20><><EFBFBD><EFBFBD>main<69>ȴ<EFBFBD><C8B4><EFBFBD><EFBFBD>ȴ<EFBFBD><C8B4><EFBFBD><EFBFBD>к<EFBFBD><D0BA>ij<EFBFBD>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD><EFBFBD>ϲſ<CFB2>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD>
<20>޸<EFBFBD>CLK_FREQ<45><EFBFBD><EAB6A8><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ΪCMU_CLK_FREQ
DMA<4D><41><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ַͨ<D6B7><CDA8>ָ<EFBFBD><D6B8><EFBFBD><EFBFBD><EFBFBD>д<EFBFBD><D0B4>ݣ<EFBFBD><DDA3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ա<EFBFBD><D4B1><EFBFBD><EFBFBD>ڲ<EFBFBD><DAB2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͷ<EFBFBD><CDB7>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ص<EFBFBD><D8B5><EFBFBD><EFBFBD><EFBFBD><E9B2BB>ռ<EFBFBD><D5BC>RAM
<20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>pclk<6C><6B>Ϊ<EFBFBD>½<EFBFBD><C2BD>ش<EFBFBD><D8B4><EFBFBD>
<20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ת<EFBFBD><D7AA><EFBFBD>ڵ<EFBFBD>RTS<54><53><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ò<EFBFBD><C3B2><EFBFBD><EFBFBD>޸<EFBFBD>Ϊ<EFBFBD><CEAA><EFBFBD><EFBFBD>
V1.1.7
<20><><EFBFBD>Ӵ<EFBFBD><D3B4>ڰ汾<DAB0><E6B1BE>С<EFBFBD><D0A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
<20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͷ<EFBFBD><CDB7><EFBFBD>ͱ<EFBFBD><CDB1><EFBFBD>ͨ<EFBFBD><CDA8>ö<EFBFBD><C3B6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ж<EFBFBD><D0B6><EFBFBD>
V1.1.6
<20><>printf<74>޸<EFBFBD>Ϊͨ<CEAA><CDA8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
<20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>л<EFBFBD>ΪADS<44>Ĺ<EFBFBD><C4B9>̣<EFBFBD>ADSֱ<53>ӵ<EFBFBD><D3B5><EFBFBD>ɱ<EFBFBD><C9B1><EFBFBD>
V1.1.5
DMA_LINK<4E><EFBFBD><E1B9B9>linked_list<73><74>Աȡ<D4B1><C8A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ<EFBFBD>ɶ<EFBFBD><C9B6><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1>ָ<EFBFBD><D6B8>
dma_link_list<73><EFBFBD><EFBFBD><E5B6A8><EFBFBD><EFBFBD><EFBFBD>Ӷ<EFBFBD><D3B6><EFBFBD>
V1.1.4
<20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD>ע<EFBFBD>ͱ<EFBFBD><CDB1><EFBFBD><EFBFBD><EFBFBD>Ĭ<EFBFBD><C4AC><EFBFBD><EFBFBD><EFBFBD>õ<EFBFBD><C3B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD>µ<EFBFBD>һ<EFBFBD><D2BB>ע<EFBFBD>ͱ<EFBFBD><CDB1>Զ<EFBFBD><D4B6>۵<EFBFBD><DBB5><EFBFBD><EFBFBD><EFBFBD>
V1.1.3
<20>޸<EFBFBD>SPI spi_mosi<73><69><EFBFBD><EFBFBD><EFBFBD>ڽ<EFBFBD><DABD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ<EFBFBD>յ<EFBFBD>ʱ<EFBFBD>򣬳<EFBFBD><F2A3ACB3><EFBFBD><EFBFBD>
V1.1.2
<20>޸<EFBFBD>ATOM_PWM<57><4D><EFBFBD><EFBFBD>ռ<EFBFBD>ձ<EFBFBD><D5B1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><ECB3A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
V1.1.1
<20>޸<EFBFBD>uart_getchar<61><72><EFBFBD><EFBFBD><EFBFBD>յ<EFBFBD><D5B5><EFBFBD>ס<EFBFBD><D7A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
V1.1.0
<20><>ISR<53>ļ<EFBFBD><C4BC>ڵ<EFBFBD><DAB5>жϺ<D0B6><CFBA><EFBFBD>ȫ<EFBFBD><C8AB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>enableInterrupts(); <20><>ʵ<EFBFBD><CAB5><EFBFBD>ж<EFBFBD>Ƕ<EFBFBD>׵Ĺ<D7B5><C4B9><EFBFBD>
<20><><EFBFBD><EFBFBD>RDA5807<30><37>ȡRSSI<53><49><EFBFBD>ܺ<EFBFBD><DCBA><EFBFBD>
<20><>DMA<4D><41><EFBFBD>Ӵ<EFBFBD><D3B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD>õ<EFBFBD><C3B5>ı<EFBFBD><C4B1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ERU_DMA_INT_SERVICE<43><45><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ŵ<EFBFBD><C5B5><EFBFBD>Ӧ<EFBFBD><D3A6>CPU<50><55>
V1.0.9
<20>޸<EFBFBD>RDA5807<30><37><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD><EFBFBD>Ҫ<EFBFBD><D2AA>֤<EFBFBD>ϵ<EFBFBD><CFB5><EFBFBD>1S<31>ڲ<EFBFBD><DAB2><EFBFBD>FMģ<4D><C4A3>
V1.0.8
<20>޸<EFBFBD>CCU61 ͨ<><CDA8>1<EFBFBD>ж<EFBFBD><D0B6><EFBFBD><EFBFBD>ô<EFBFBD><C3B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
<20>޸<EFBFBD>CCU6<55><36><EFBFBD>ߵ<EFBFBD><DFB5>Ե<EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Զ<EFBFBD>ֹͣ<CDA3><D6B9><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ߵ<EFBFBD><DFB5><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>жϵ<D0B6><CFB5><EFBFBD><EFBFBD><EFBFBD>
<20><>CCU6<55><36><EFBFBD><EFBFBD>pit_close<73><65>pit_start<72><74><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڿ<EFBFBD><DABF>ƶ<EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD>Ŀ<EFBFBD>ʼ<EFBFBD><CABC>ֹͣ
<20><>CCU6<55><36><EFBFBD><EFBFBD>pit_disable_interrupt<70><74>pit_enable_interrupt<70><74><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڿ<EFBFBD><DABF><EFBFBD><EFBFBD>жϿ<D0B6><CFBF><EFBFBD>
V1.0.7
<20>޸<EFBFBD>ʹ<EFBFBD><CAB9>systick_getval<61><6C>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱʱ<CAB1><EFBFBD><E4B3AC>4<EFBFBD><34><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
<20>Բ<EFBFBD><D4B2>ִ<EFBFBD><D6B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>#pragma warning<6E><67><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ż<EFBFBD><C5BB>ȼ<EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD>־<EFBFBD><D6BE><EFBFBD>
<20>޸<EFBFBD>1.8<EFBFBD><EFBFBD>TFT<EFBFBD><EFBFBD>Ļ<EFBFBD><EFBFBD>ʼ<EFBFBD><EFBFBD><EFBFBD>й<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ļ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ѡ<EFBFBD>񲿷ֵĴ<EFBFBD><EFBFBD><EFBFBD>
V1.0.6
<20><><EFBFBD><EFBFBD>ADC<44><43><EFBFBD><EFBFBD>Ƶ<EFBFBD><C6B5><EFBFBD><EFBFBD><EFBFBD>õĺ궨<C4BA>壬ADC_SAMPLE_FREQUENCY<43><59><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ10Mhz<68><7A><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ĭ<EFBFBD><C4AC><EFBFBD>µ<EFBFBD><C2B5>ٶ<EFBFBD><D9B6>нϴ<D0BD><CFB4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
V1.0.5
ȡ<><C8A1>HEX<45><58><EFBFBD><EFBFBD>
V1.0.4
Ĭ<>Ϲ<EFBFBD>ѡ<EFBFBD><D1A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>HEX<45>Ĺ<EFBFBD><C4B9><EFBFBD>
<20><>Cpu1_Main.c<>е<EFBFBD>core1_main<69><6E><EFBFBD><EFBFBD>Ĭ<EFBFBD><C4AC><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>жϵĺ<CFB5><C4BA><EFBFBD><EFBFBD><EFBFBD>
<20>޸<EFBFBD>CPU1<55>޷<EFBFBD><DEB7><EFBFBD>Ӧ<EFBFBD>жϵ<D0B6><CFB5><EFBFBD><EFBFBD><EFBFBD>
ɾ<><C9BE><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>еİ<D0B5><C4B0><EFBFBD>·<EFBFBD><C2B7><EFBFBD><EFBFBD>Ϣ
<20>޸<EFBFBD><DEB8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>С<EFBFBD>ֱ<EFBFBD>ֻ<EFBFBD>ɼ<EFBFBD>һ<EFBFBD>ε<EFBFBD><CEB5><EFBFBD><EFBFBD><EFBFBD>
<20><><EFBFBD><EFBFBD>RDA5807 FMģ<4D><C4A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
<20>޸<EFBFBD>LSL<53>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͨ<EFBFBD><CDA8>#pragma <20><>ָ<EFBFBD><D6B8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>߳<EFBFBD><DFB3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ָ<EFBFBD><D6B8>RAM<41><4D><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʹ<EFBFBD><CAB9><EFBFBD><EFBFBD><EFBFBD>ο<EFBFBD><CEBF><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Specifies_Variable_Or_Code_Location_Demo
//ʹ<><CAB9>#pragma section all "cpu0_dsram" <20><> #pragma section all restore<72><65><EFBFBD>Խ<EFBFBD><D4BD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>cpu0_dsram
//<2F><><EFBFBD><EFBFBD>ֻ<EFBFBD><D6BB>Ҫ<EFBFBD><D2AA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>м伴<D0BC>ɣ<EFBFBD>ʹ<EFBFBD><CAB9>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
#pragma section all "cpu0_dsram"
uint8 test_arry[5]; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>cpu0_dsram<61><6D><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>cpu0_dsram<61><6D>Ϊcpu1_dsram <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>cpu1_dsram<61><6D><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
//<2F><><EFBFBD>ǽ<EFBFBD><C7BD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ĸ<EFBFBD>CPUִ<55>У<EFBFBD><D0A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʹ<EFBFBD>õı<C3B5><C4B1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ĸ<EFBFBD><C4B8><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڣ<EFBFBD>Ĭ<EFBFBD>ϲ<EFBFBD>ָ<EFBFBD><D6B8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>±<EFBFBD><C2B1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>cpu1_dsram<61><6D><EFBFBD><EFBFBD>
#pragma section all restore
//ʹ<><CAB9>#pragma section all "cpu0_psram" <20><> #pragma section all restore<72><65><EFBFBD>Խ<EFBFBD><D4BD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ص<EFBFBD>cpu0_psram
//<2F><><EFBFBD><EFBFBD>ֻ<EFBFBD><D6BB>Ҫ<EFBFBD><D2AA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>м伴<D0BC>ɣ<EFBFBD>ʹ<EFBFBD><CAB9>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
#pragma section all "cpu0_psram"
void delay_tset(void) //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ص<EFBFBD>cpu0_psram<61><6D><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ִ<EFBFBD><D6B4>
{
int i;
i = 999;
while(i--);
}
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>cpu0_psram<61><6D>Ϊcpu1_psram <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ص<EFBFBD>cpu1_psram<61><6D><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
//<2F><><EFBFBD>ǽ<EFBFBD><C7BD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ĸ<EFBFBD>CPUִ<55>У<EFBFBD><D0A3>򽫺<EFBFBD><F2BDABBA><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ص<EFBFBD><D8B5><EFBFBD><EFBFBD>ĸ<EFBFBD><C4B8><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڣ<EFBFBD>Ĭ<EFBFBD>ϲ<EFBFBD>ָ<EFBFBD><D6B8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>£<EFBFBD><C2A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ǵ<EFBFBD>flash<73><68><EFBFBD>ز<EFBFBD>ִ<EFBFBD><D6B4>
//ͨ<><CDA8><EFBFBD><EFBFBD><EFBFBD>Ƕ<EFBFBD><C7B6><EFBFBD><EFBFBD><EFBFBD>Ҫ<EFBFBD><D2AA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>RAM<41><4D><EFBFBD>У<EFBFBD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ִ<EFBFBD>еij<D0B5><C4B3><EFBFBD><EFBFBD><EFBFBD>С<EFBFBD><D0A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>cache<68>󣬻<EFBFBD><F3A3ACBB><EFBFBD><EFBFBD>ֳ<EFBFBD><D6B3><EFBFBD>ִ<EFBFBD><D6B4><EFBFBD>ٶȽ<D9B6><C8BD>ͣ<EFBFBD><CDA3><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD>ǾͿ<C7BE><CDBF>Խ<EFBFBD><D4BD><EFBFBD><EFBFBD>ִ<EFBFBD><D6B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>RAMִ<4D>У<EFBFBD><D0A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ٶ<EFBFBD>
#pragma section all restore
V1.0.3
<20><>spi<70><69>uart<72><74>pit<69>в<EFBFBD><D0B2>ֱ<EFBFBD><D6B1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>volatile<6C><65><EFBFBD>Σ<EFBFBD><CEA3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
V1.0.2
<20>޸<EFBFBD>ģ<EFBFBD><C4A3>IICĬ<43><C4AC><EFBFBD><EFBFBD>ʱʱ<CAB1><CAB1>Ϊ20
<20><><EFBFBD><EFBFBD> <20><>Ҫ<EFBFBD>ر<EFBFBD>ע<EFBFBD><D7A2>P20_2<5F>Dz<EFBFBD><C7B2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ģ<EFBFBD><C4A3><EFBFBD><EFBFBD><EFBFBD>ֻ<EFBFBD><D6BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ĺ<EFBFBD><C4B9><EFBFBD> ע<><D7A2><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
<20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͷ<EFBFBD>ɼ<EFBFBD>DMA<4D><41>Ϊlink<6E><6B><EFBFBD><EFBFBD><E4A3AC><EFBFBD>Դ<EFBFBD><D4B4>󽵵<EFBFBD>DMA<4D>жϴ<D0B6><CFB4><EFBFBD>
<20>޸<EFBFBD>Ĭ<EFBFBD>ϵ<EFBFBD><CFB5><EFBFBD><EFBFBD><EFBFBD>IIC<49><43><EFBFBD>Ŷ<EFBFBD><C5B6><EFBFBD>
<20><>6050<35><30> <20><>Ҫ<EFBFBD>õ<EFBFBD><C3B5><EFBFBD><EFBFBD><EFBFBD>IIC<49><43>ģ<EFBFBD><EFBFBD>ڳ<EFBFBD>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ĭ<EFBFBD>ϵ<EFBFBD><CFB5><EFBFBD>ģ<EFBFBD><C4A3>IIC<49><43>ʼ<EFBFBD><CABC>
<20><><EFBFBD><EFBFBD>С<EFBFBD><D0A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
V1.0.1
<20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͷ<EFBFBD>ij<EFBFBD><C4B3>жϽ<D0B6><CFBD><EFBFBD><EFBFBD>޸ģ<DEB8><C4A3>жϱ<D0B6>־λΪ0<CEAA>Ųɼ<C5B2><C9BC><EFBFBD>һ<EFBFBD><D2BB>ͼ<EFBFBD>񣬱<EFBFBD><F1A3ACB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ַ<EFBFBD><D6B7>ʳ<EFBFBD>ͻ
<20>޸<EFBFBD>SPI<50><49>ʼ<EFBFBD><CABC><EFBFBD>еĴ<D0B5><C4B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>˹̶<CBB9><CCB6><EFBFBD>SPI2<49><32><EFBFBD><EFBFBD>ַ
<20>޸<EFBFBD>STM<54><4D><EFBFBD>޷<EFBFBD>ʹ<EFBFBD><CAB9>STM1<4D><31><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
<20>޸<EFBFBD>gtm pwm<77><6D><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ռ<EFBFBD>ձ<EFBFBD>ֻ<EFBFBD><D6BB>GTM_ATOM0_PWM_DUTY_MAX<41><58><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ч<EFBFBD><D0A7><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
V1.0.0
<20><>ʼ<EFBFBD>

View File

@@ -0,0 +1,53 @@
/**********************************************************************************************************************
* \file Ifx_Cfg.h
* \brief Project configuration file.
* \copyright Copyright (C) Infineon Technologies AG 2019
*
* Use of this file is subject to the terms of use agreed between (i) you or the company in which ordinary course of
* business you are acting and (ii) Infineon Technologies AG or its licensees. If and as long as no such terms of use
* are agreed, use of this file is subject to following:
*
* Boost Software License - Version 1.0 - August 17th, 2003
*
* Permission is hereby granted, free of charge, to any person or organization obtaining a copy of the software and
* accompanying documentation covered by this license (the "Software") to use, reproduce, display, distribute, execute,
* and transmit the Software, and to prepare derivative works of the Software, and to permit third-parties to whom the
* Software is furnished to do so, all subject to the following:
*
* The copyright notices in the Software and this entire statement, including the above license grant, this restriction
* and the following disclaimer, must be included in all copies of the Software, in whole or in part, and all
* derivative works of the Software, unless such copies or derivative works are solely in the form of
* machine-executable object code generated by a source language processor.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE
* WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, TITLE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE
* COPYRIGHT HOLDERS OR ANYONE DISTRIBUTING THE SOFTWARE BE LIABLE FOR ANY DAMAGES OR OTHER LIABILITY, WHETHER IN
* CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
* IN THE SOFTWARE.
*********************************************************************************************************************/
#ifndef IFX_CFG_H
#define IFX_CFG_H 1
/*********************************************************************************************************************/
/*------------------------------------------Configuration for IfxScu_cfg.h-------------------------------------------*/
/*********************************************************************************************************************/
/* External oscillator frequency in Hz */
#define IFX_CFG_SCU_XTAL_FREQUENCY (20000000) /* Allowed values are9p: 16000000, 20000000 or 40000000 */
/* PLL frequency in Hz */
#define IFX_CFG_SCU_PLL_FREQUENCY (200000000) /* Allowed values are: 80000000, 133000000, 160000000
* or 200000000 */
/*********************************************************************************************************************/
/*-----------------------------------Configuration for Software managed interrupt------------------------------------*/
/*********************************************************************************************************************/
/* #define IFX_USE_SW_MANAGED_INT */ /* Decomment this line if the project needs to use Software managed interrupts */
/*********************************************************************************************************************/
/*---------------------------------Configuration for Trap Hook Functions' Extensions---------------------------------*/
/*********************************************************************************************************************/
/* #define IFX_CFG_EXTEND_TRAP_HOOKS */ /* Decomment this line if the project needs to extend trap hook functions */
#endif /* IFX_CFG_H */

Some files were not shown because too many files have changed in this diff Show More