Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
RT-Thread
rt-thread
提交
81cdeaf9
R
rt-thread
项目概览
RT-Thread
/
rt-thread
大约 1 年 前同步成功
通知
776
Star
8911
Fork
4735
代码
文件
提交
分支
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,发现更多精彩内容 >>
未验证
提交
81cdeaf9
编写于
7月 13, 2022
作者:
S
shiwa
提交者:
GitHub
7月 13, 2022
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
* [bsp][essemi] Fix a bug of I2C and edit some documents (#6159)
* [bsp][essemi] Fix a bug of I2C and edit some documents
上级
5c6e7d81
变更
3
隐藏空白更改
内联
并排
Showing
3 changed file
with
22 addition
and
9 deletion
+22
-9
bsp/essemi/es32f369x/applications/arduino_pinout/README.md
bsp/essemi/es32f369x/applications/arduino_pinout/README.md
+11
-7
bsp/essemi/es32f369x/applications/arduino_pinout/examples/arduino_examples.cpp
...applications/arduino_pinout/examples/arduino_examples.cpp
+1
-0
bsp/essemi/es32f369x/drivers/drv_i2c.c
bsp/essemi/es32f369x/drivers/drv_i2c.c
+10
-2
未找到文件。
bsp/essemi/es32f369x/applications/arduino_pinout/README.md
浏览文件 @
81cdeaf9
...
...
@@ -2,7 +2,7 @@
## 1 RTduino - RT-Thread的Arduino生态兼容层
ES32F3696已经适配了
RTduino,可正常使用全部功能,包含GPIO/PWM及I2C/SPI通信接口。除标准arduino uno的接口外,该开发板还额外添加了4个led和一个方向键对应的GPIO,方便使用。
ES32F3696已经适配了
[
RTduino软件包
](
https://github.com/RTduino/RTduino
)
,可正常使用全部功能,包含GPIO/PWM及I2C/SPI通信接口。除标准arduino uno的接口外,该开发板还额外添加了4个led和一个方向键对应的GPIO,方便使用。更多信息,请参见
[
RTduino软件包说明文档
](
https://github.com/RTduino/RTduino
)
### 1.1 使用Keil+Env
...
...
@@ -128,13 +128,15 @@ ES32-Arduino的SPI总线是spi0总线, `SCK`、`MISO`、`MOSI`引脚是被RT-T
2.
第三方arduino库导入测试
[
DFRobot_BMI160
](
https://github.com/DFRobot/DFRobot_BMI160
)
用法:下载完毕后解压放到 packages
\R
Tduino-latest
\l
ibraries
\u
ser目录下即可
需要修改一处:这个库有一处函数重载歧义,856行需改为Wire.requestFrom(dev->id,(uint8_t)len);
选择BMI160的库DFRobot_BMI160用于测试,用keil编译时存在以下问题:
1.
缺少INT8_C和UINT8_C宏定义,手动添加
1.
缺少INT8_C和UINT8_C宏定义,手动
在pins_arduino.h或其他Arduino头文件中
添加
```
c
#ifndef INT8_C
...
...
@@ -145,16 +147,18 @@ ES32-Arduino的SPI总线是spi0总线, `SCK`、`MISO`、`MOSI`引脚是被RT-T
#endif
```
2.
keil的AC5不支持类变量直接初始化,目前版本的AC6编译器会报错,需要修改工程文件,删掉所有的 --cpp11 --c11 --gnu
解决以上问题后,能成功调用传感器获取加速度和重力等信息
2.
编译报错:Data initializer is not allowed
如果使用AC5编译器,给arduino_main.cpp和DFRobot_BMI160.cpp添加 --cpp11 --gnu
如果使用AC6编译器,修改工程文件,删掉所有的 --cpp11 --c11 --gnu
如果用RT-Thread Studio编译,则不存在这些问题,只需修改存在歧义的问题即可直接使用
## 6 其他说明
### 1.ADC
目前ES32的ADC返回的是原始值,需要计算转换为实际的电压值,暂时不支持分辨率调节,会出现警告信息。
目前ES32的ADC返回的是原始值,需要计算转换为实际的电压值,暂时不支持分辨率调节,会出现警告信息
,无视即可
。
### 2.对非数字IO的管脚不要调用pinMode
非数字IO的管脚在其他地方已经初始化了,再次调用pinMode会使他变为普通管脚且无法再重新初始化为非数字IO的功能。即对于任意管脚可以调用pinMode使它变为数字IO管脚,但这一过程不可逆,原有的预设功能将会失效
### 3.SPI/I2C/UART使用
...
...
bsp/essemi/es32f369x/applications/arduino_pinout/examples/arduino_examples.cpp
浏览文件 @
81cdeaf9
...
...
@@ -6,6 +6,7 @@
* Change Logs:
* Date Author Notes
* 2021-12-10 Meco Man first version
* 2022-07-11 shiwa add examples for es32f3696
*/
#include <Arduino.h>
...
...
bsp/essemi/es32f369x/drivers/drv_i2c.c
浏览文件 @
81cdeaf9
...
...
@@ -19,6 +19,7 @@
* 2019-11-01 wangyq update libraries
* 2020-01-14 wangyq the first version
* 2021-04-20 liuhy the second version
* 2022-07-11 shiwa Support for RT_NO_START/RT_NO_STOP
*/
#include <rthw.h>
...
...
@@ -275,6 +276,10 @@ static rt_size_t es32f3_master_xfer(struct rt_i2c_bus_device *bus,
for
(
i
=
0
;
i
<
num
;
i
++
)
{
msg
=
&
msgs
[
i
];
if
(
msg
->
buf
==
NULL
||
msg
->
len
==
0
)
{
continue
;
}
if
(
msg
->
flags
&
RT_I2C_RD
)
{
if
(
ald_i2c_master_recv
(
bus
->
priv
,
msg
->
addr
<<
1
,
msg
->
buf
,
msg
->
len
,
TIMEOUT
)
!=
0
)
...
...
@@ -286,7 +291,10 @@ static rt_size_t es32f3_master_xfer(struct rt_i2c_bus_device *bus,
else
{
uint32_t
f
=
((
msg
->
flags
&
RT_I2C_NO_START
)
?
0x1
:
0
)
|
((
msg
->
flags
&
RT_I2C_NO_STOP
)
?
0x2
:
0
);
if
(
I2C_GET_FLAG
((
i2c_handle_t
*
)
bus
->
priv
,
I2C_STAT_BUSY
)
==
RESET
)
{
f
=
f
&
(
~
_I2C_NO_START
);
}
if
(
_i2c_master_send
(
bus
->
priv
,
msg
->
addr
<<
1
,
msg
->
buf
,
msg
->
len
,
TIMEOUT
,
f
)
!=
0
)
{
LOG_E
(
"i2c bus write failed,i2c bus stop!
\n
"
);
...
...
@@ -298,7 +306,7 @@ static rt_size_t es32f3_master_xfer(struct rt_i2c_bus_device *bus,
ret
=
i
;
out:
//LOG_E
("send stop condition\n");
LOG_D
(
"send stop condition
\n
"
);
return
ret
;
}
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录