Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
lfmiao0
rt-thread
提交
939e2486
R
rt-thread
项目概览
lfmiao0
/
rt-thread
与 Fork 源项目一致
Fork自
RT-Thread / rt-thread
通知
1
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
R
rt-thread
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
前往新版Gitcode,体验更适合开发者的 AI 搜索 >>
未验证
提交
939e2486
编写于
11月 12, 2019
作者:
B
Bernard Xiong
提交者:
GitHub
11月 12, 2019
浏览文件
操作
浏览文件
下载
差异文件
Merge pull request #3195 from liweihao-cn/master
修改读写逻辑,解决i2c驱动无法读取的问题
上级
da7751c0
a24b8964
变更
1
显示空白变更内容
内联
并排
Showing
1 changed file
with
24 addition
and
21 deletion
+24
-21
bsp/lpc54114-lite/drivers/drv_i2c.c
bsp/lpc54114-lite/drivers/drv_i2c.c
+24
-21
未找到文件。
bsp/lpc54114-lite/drivers/drv_i2c.c
浏览文件 @
939e2486
...
...
@@ -40,7 +40,8 @@ static rt_size_t master_xfer(struct rt_i2c_bus_device *bus, struct rt_i2c_msg ms
rt_uint32_t
index
=
0
;
struct
lpc_i2c
*
lpc_i2c
=
RT_NULL
;
struct
rt_i2c_msg
*
msg
=
RT_NULL
;
i2c_master_transfer_t
xfer
=
{
0
};
i2c_direction_t
direction
;
status_t
result
=
kStatus_Success
;
RT_ASSERT
(
bus
!=
RT_NULL
);
...
...
@@ -49,33 +50,35 @@ static rt_size_t master_xfer(struct rt_i2c_bus_device *bus, struct rt_i2c_msg ms
for
(
index
=
0
;
index
<
num
;
index
++
)
{
msg
=
&
msgs
[
index
];
direction
=
((
msg
->
flags
&
RT_I2C_RD
)
?
kI2C_Read
:
kI2C_Write
);
xfer
.
slaveAddress
=
msg
->
addr
;
xfer
.
flags
=
kI2C_TransferDefaultFlag
;
xfer
.
subaddress
=
0
;
xfer
.
subaddressSize
=
0
;
xfer
.
data
=
msg
->
buf
;
xfer
.
dataSize
=
msg
->
len
;
if
(
!
(
msg
->
flags
&
RT_I2C_NO_START
))
{
/* Start condition and slave address. */
result
=
I2C_MasterStart
(
lpc_i2c
->
base
,
msg
->
addr
,
direction
);
}
if
(
msg
->
flags
&
RT_I2C_RD
)
if
(
result
==
kStatus_Success
)
{
xfer
.
direction
=
kI2C_Read
;
if
(
direction
==
kI2C_Write
)
{
/* Transmit data. */
result
=
I2C_MasterWriteBlocking
(
lpc_i2c
->
base
,
msg
->
buf
,
msg
->
len
,
kI2C_TransferDefaultFlag
);
}
else
{
xfer
.
direction
=
kI2C_Write
;
/* Receive Data. */
result
=
I2C_MasterReadBlocking
(
lpc_i2c
->
base
,
msg
->
buf
,
msg
->
len
,
kI2C_TransferDefaultFlag
);
}
if
(
I2C_MasterTransferBlocking
(
lpc_i2c
->
base
,
&
xfer
)
!=
kStatus_Success
)
{
rt_kprintf
(
"i2c bus write failed, i2c bus stop!
\n
"
);
goto
exit
;
}
}
if
(
result
==
kStatus_Success
)
{
ret
=
index
;
}
exit:
I2C_MasterStop
(
lpc_i2c
->
base
);
return
ret
;
}
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录