全志科技
登录
直播中
一刀两断
9年用户
1067经验值
私信
关注
[问答]
如何使用XR872芯片上的timer模块呢
开启该帖子的消息推送
Timer
模块
ti
mer模块在芯片中只是一个小模块,在发布文档中没有专门的文档进行说明,只有代码用例,部分客户看代码后会对timer里的一些参数云里雾里的。XR809/XR871/XR808/XR872上timer如何使用?
回帖
(1)
刘飞
2021-12-29 15:24:45
解决办法
下面会从几个方面帮助客户去了解以及测试timer模块。
3.1如何在固件中添加测试timer测试用的命令行命令
:
(1).project/XXX/command.c文件中添加timer命令如下:
--- a/platforms/xr806/xr806-os/project/tuya/command.c
+++ b/platforms/xr806/xr806-os/project/tuya/command.c
@@ -181,6 +181,7 @@ static const struct cmd_data g_main_cmds[] = {
+ { "timer", cmd_timer_exec },
{ "sysinfo",cmd_sysinfo_exec, CMD_DESC("system information command") },
{ "help", cmd_main_help_exec, CMD_DESC(CMD_HELP_DESC) },
(2).添加完成后编译烧录固件在命令行中输入help命令可以看到timer命令被编译进固件中了:
net : network command
rf : radio frequency command
drv : driver command
echo : echo command
mem : memory command
heap : heap use information command
thread : thread information command
upgrade : upgrade command
reboot : reboot command
ota : over the airtechnology upgrade commands
etf : etf command
pm : power management command
efpg : efpg command
flash : flash control command
lmac : low mac command
timer
sysinfo : system information command
ble
help : print this message and quit
(3)timer命令的源码在project/common/cmd/cmd_timer.c,用户可以对该源码进行修改测试,也可以参考该文件的timer接口进行应用开发。
3.2timer命令如何使用
(1)timer命令行命令支持下面几个子命令:
timer config i=X m=X s=X d=X p=X --> 配置timer的参数,参数后面说明
timer deconfig i=X --> 取消当前timer的配置参数
timer start i=X --> 启动对应的timer(支持2个timer 0/1)
timer stop i=X --> 停止对应的timer
timer pause i=X --> 暂停对应的timer
timer continue i=X --> 继续对应的timer
Timer value i=X --> 获取对应timer的值(该值是剩余多少定时时间,需计算)
(2)timer命令行参数说明:
参数i:0/1 --> 控制的是哪个timer,806支持2个timer,0/1
参数m:repeat/once --> 定时模式,repeat:循环定时模式,once:一次定时模式
参数s:LF/HF --> 时钟源,LF:低频32k晶振,HF:高频晶振,该晶振为外部所接晶振,例如如果接的是40M,HF就是40M,接的是26M,HF就是26M
参数d:1/2/4/8/16/32/64/128 --> 分频系数
参数p: --> 定时period值,该值需要用户根据时钟源,分频系数,定时时间进行计算:
需要用到的计算公式如下:
interval = period / ( clk-src / clk-div )
period = interval * ( clk-src / clk-div )
(3)公式参数说明:
参数interval:需要定时的值(例如5s,0.5s)
参数clk-src:时钟源(例如40M,26M)
参数clk-div:分频系数(分频系数的选择影响精度和定时时间长短范围)
参数period:根据定时值,时钟源,分频系数计算出来的值,该值会写到timer寄存器中,timer模块
就是根据这个值进行定时的。
例子:例如需要定时5s,板子外接时钟源是26M,分频系数选4,那么根据公式可以计算出period的值应该需要填32,500,000
4.timer命令实操说明说明
timer config i=1 m=once s=HF d=4 p=32500000 -- 1
200 OK
timer start i=2 -- 2
200 OK
timer value i=1 -- 3
200 value=19462685
timer value i=1 -- 4
200 value=4617179
timer value i=1 -- 5
200 value=0
(1).配置timer 1,模式设定once模式,时钟源选HF(26M),分频选4,因为想定时5s,因此算出p值需要填写32500000
(2).启动定时器1
(3).第一次获取period值19462685,根据公式interval = period / ( clk-src / clk-div )
可以算出剩余时间interval = 19462685 / (26000000 / 4) = 2.994s
(4).同上可以算出第二次剩余时间 interval = 4617179 / (26000000/4) = 0.71s
(5).第3次获取值时因为已经超过5s,所以获取到的值为0
想设定其他分频和时间可根据公式以及需要设定的分频时间算出period值填到对应的函数接口即可。
其他命令相对简单,因此不再进行实操显示
注意:
如果遇到timer测试定时时间与现实实际实际不符,可以从下面一些方向进行排查:
(1).计算晶振与实际晶振部分(例如:计算时使用26M,但实际板子接的时40M)
(2).重复计算一下period值,period值填写错误也会导致定时时间不准确
附件timer_pparam.xlsx:
timer_param.xlsx
附件是26M参数的时间,分频,period值的参考表,其他频率的晶振也可以参考该表算出period值。
解决办法
下面会从几个方面帮助客户去了解以及测试timer模块。
3.1如何在固件中添加测试timer测试用的命令行命令
:
(1).project/XXX/command.c文件中添加timer命令如下:
--- a/platforms/xr806/xr806-os/project/tuya/command.c
+++ b/platforms/xr806/xr806-os/project/tuya/command.c
@@ -181,6 +181,7 @@ static const struct cmd_data g_main_cmds[] = {
+ { "timer", cmd_timer_exec },
{ "sysinfo",cmd_sysinfo_exec, CMD_DESC("system information command") },
{ "help", cmd_main_help_exec, CMD_DESC(CMD_HELP_DESC) },
(2).添加完成后编译烧录固件在命令行中输入help命令可以看到timer命令被编译进固件中了:
net : network command
rf : radio frequency command
drv : driver command
echo : echo command
mem : memory command
heap : heap use information command
thread : thread information command
upgrade : upgrade command
reboot : reboot command
ota : over the airtechnology upgrade commands
etf : etf command
pm : power management command
efpg : efpg command
flash : flash control command
lmac : low mac command
timer
sysinfo : system information command
ble
help : print this message and quit
(3)timer命令的源码在project/common/cmd/cmd_timer.c,用户可以对该源码进行修改测试,也可以参考该文件的timer接口进行应用开发。
3.2timer命令如何使用
(1)timer命令行命令支持下面几个子命令:
timer config i=X m=X s=X d=X p=X --> 配置timer的参数,参数后面说明
timer deconfig i=X --> 取消当前timer的配置参数
timer start i=X --> 启动对应的timer(支持2个timer 0/1)
timer stop i=X --> 停止对应的timer
timer pause i=X --> 暂停对应的timer
timer continue i=X --> 继续对应的timer
Timer value i=X --> 获取对应timer的值(该值是剩余多少定时时间,需计算)
(2)timer命令行参数说明:
参数i:0/1 --> 控制的是哪个timer,806支持2个timer,0/1
参数m:repeat/once --> 定时模式,repeat:循环定时模式,once:一次定时模式
参数s:LF/HF --> 时钟源,LF:低频32k晶振,HF:高频晶振,该晶振为外部所接晶振,例如如果接的是40M,HF就是40M,接的是26M,HF就是26M
参数d:1/2/4/8/16/32/64/128 --> 分频系数
参数p: --> 定时period值,该值需要用户根据时钟源,分频系数,定时时间进行计算:
需要用到的计算公式如下:
interval = period / ( clk-src / clk-div )
period = interval * ( clk-src / clk-div )
(3)公式参数说明:
参数interval:需要定时的值(例如5s,0.5s)
参数clk-src:时钟源(例如40M,26M)
参数clk-div:分频系数(分频系数的选择影响精度和定时时间长短范围)
参数period:根据定时值,时钟源,分频系数计算出来的值,该值会写到timer寄存器中,timer模块
就是根据这个值进行定时的。
例子:例如需要定时5s,板子外接时钟源是26M,分频系数选4,那么根据公式可以计算出period的值应该需要填32,500,000
4.timer命令实操说明说明
timer config i=1 m=once s=HF d=4 p=32500000 -- 1
200 OK
timer start i=2 -- 2
200 OK
timer value i=1 -- 3
200 value=19462685
timer value i=1 -- 4
200 value=4617179
timer value i=1 -- 5
200 value=0
(1).配置timer 1,模式设定once模式,时钟源选HF(26M),分频选4,因为想定时5s,因此算出p值需要填写32500000
(2).启动定时器1
(3).第一次获取period值19462685,根据公式interval = period / ( clk-src / clk-div )
可以算出剩余时间interval = 19462685 / (26000000 / 4) = 2.994s
(4).同上可以算出第二次剩余时间 interval = 4617179 / (26000000/4) = 0.71s
(5).第3次获取值时因为已经超过5s,所以获取到的值为0
想设定其他分频和时间可根据公式以及需要设定的分频时间算出period值填到对应的函数接口即可。
其他命令相对简单,因此不再进行实操显示
注意:
如果遇到timer测试定时时间与现实实际实际不符,可以从下面一些方向进行排查:
(1).计算晶振与实际晶振部分(例如:计算时使用26M,但实际板子接的时40M)
(2).重复计算一下period值,period值填写错误也会导致定时时间不准确
附件timer_pparam.xlsx:
timer_param.xlsx
附件是26M参数的时间,分频,period值的参考表,其他频率的晶振也可以参考该表算出period值。
举报
更多回帖
rotate(-90deg);
回复
相关问答
Timer
模块
XR
809/
XR
871/
XR
808/
XR872
上
的mac地址改如何存放
呢
2021-12-29
1110
如何保证休眠时
XR
806
芯片
GPIO的电平状态
呢
2021-12-29
1581
XR
809/
XR
871/
XR
808/
XR872
如何修改中断的优先级
呢
2021-12-29
2044
请问
XR
MCU的外设驱动为什么修改无效?
2021-12-29
906
如何把
XR
806的log口uart0更换为uart1或uart2
呢
2021-12-29
1281
XR
806
芯片
的mac地址要如何存放以及如何获取
2021-12-28
1367
在
xr
806板子
上
如何实现用ncnn跑神经网络mnis
呢
2021-12-28
1539
xr
829如何进入混杂模式?
2021-12-29
1188
如何对
XR
806开发板的环境进行配置
呢
2021-12-28
1519
有哪位大神可以分享一下
XR
806开发板/模组的资料
呢
2021-12-28
1477
发帖
登录/注册
20万+
工程师都在用,
免费
PCB检查工具
无需安装、支持浏览器和手机在线查看、实时共享
查看
点击登录
登录更多精彩功能!
首页
论坛版块
小组
免费开发板试用
ebook
直播
搜索
登录
×
20
完善资料,
赚取积分