Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
yunke120
rt-thread
提交
e5aafd2a
R
rt-thread
项目概览
yunke120
/
rt-thread
与 Fork 源项目一致
Fork自
RT-Thread / rt-thread
通知
1
Star
1
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
1
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
R
rt-thread
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
1
Issue
1
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
前往新版Gitcode,体验更适合开发者的 AI 搜索 >>
未验证
提交
e5aafd2a
编写于
2月 06, 2020
作者:
B
Bernard Xiong
提交者:
GitHub
2月 06, 2020
浏览文件
操作
浏览文件
下载
差异文件
Merge pull request #3359 from wendal/master
fix: 为W60x添加rt_hw_us_delay
上级
bad4f924
c677f88e
变更
2
隐藏空白更改
内联
并排
Showing
2 changed file
with
39 addition
and
36 deletion
+39
-36
bsp/w60x/drivers/board.c
bsp/w60x/drivers/board.c
+36
-0
bsp/w60x/drivers/drv_soft_i2c.c
bsp/w60x/drivers/drv_soft_i2c.c
+3
-36
未找到文件。
bsp/w60x/drivers/board.c
浏览文件 @
e5aafd2a
...
...
@@ -213,6 +213,42 @@ void rt_hw_cpu_reset(void)
tls_sys_reset
();
}
/**
* The time delay function.
*
* @param microseconds.
*/
#include "wm_regs.h"
void
rt_hw_us_delay
(
rt_uint32_t
us
)
{
rt_uint32_t
ticks
;
rt_uint32_t
told
,
tnow
,
tcnt
=
0
;
rt_uint32_t
reload
=
SysTick
->
LOAD
;
ticks
=
us
*
reload
/
(
1000000
/
RT_TICK_PER_SECOND
);
told
=
SysTick
->
VAL
;
while
(
1
)
{
tnow
=
SysTick
->
VAL
;
if
(
tnow
!=
told
)
{
if
(
tnow
<
told
)
{
tcnt
+=
told
-
tnow
;
}
else
{
tcnt
+=
reload
-
tnow
+
told
;
}
told
=
tnow
;
if
(
tcnt
>=
ticks
)
{
break
;
}
}
}
}
#ifdef RT_USING_FINSH
#include <finsh.h>
static
void
reboot
(
uint8_t
argc
,
char
**
argv
)
...
...
bsp/w60x/drivers/drv_soft_i2c.c
浏览文件 @
e5aafd2a
...
...
@@ -138,40 +138,7 @@ static rt_int32_t w60x_get_scl(void *data)
return
tls_gpio_read
((
enum
tls_io_name
)
scl
);
}
/**
* The time delay function.
*
* @param microseconds.
*/
static
void
w60x_udelay
(
rt_uint32_t
us
)
{
rt_uint32_t
ticks
;
rt_uint32_t
told
,
tnow
,
tcnt
=
0
;
rt_uint32_t
reload
=
SysTick
->
LOAD
;
ticks
=
us
*
reload
/
(
1000000
/
RT_TICK_PER_SECOND
);
told
=
SysTick
->
VAL
;
while
(
1
)
{
tnow
=
SysTick
->
VAL
;
if
(
tnow
!=
told
)
{
if
(
tnow
<
told
)
{
tcnt
+=
told
-
tnow
;
}
else
{
tcnt
+=
reload
-
tnow
+
told
;
}
told
=
tnow
;
if
(
tcnt
>=
ticks
)
{
break
;
}
}
}
}
static
const
struct
rt_i2c_bit_ops
w60x_bit_ops_default
=
{
...
...
@@ -180,7 +147,7 @@ static const struct rt_i2c_bit_ops w60x_bit_ops_default =
.
set_scl
=
w60x_set_scl
,
.
get_sda
=
w60x_get_sda
,
.
get_scl
=
w60x_get_scl
,
.
udelay
=
w60x_u
delay
,
.
udelay
=
rt_hw_us_
delay
,
.
delay_us
=
1
,
.
timeout
=
100
};
...
...
@@ -201,9 +168,9 @@ static rt_err_t w60x_i2c_bus_unlock(const struct w60x_soft_i2c_config *cfg)
while
(
i
++
<
9
)
{
rt_pin_write
(
cfg
->
scl
,
PIN_HIGH
);
w60x_u
delay
(
100
);
rt_hw_us_
delay
(
100
);
rt_pin_write
(
cfg
->
scl
,
PIN_LOW
);
w60x_u
delay
(
100
);
rt_hw_us_
delay
(
100
);
}
}
if
(
PIN_LOW
==
rt_pin_read
(
cfg
->
sda
))
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录