Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
不穿格子衫的农民
TencentOS Tiny
提交
bdc6ea2d
T
TencentOS Tiny
项目概览
不穿格子衫的农民
/
TencentOS Tiny
通知
3
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
T
TencentOS Tiny
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
未验证
提交
bdc6ea2d
编写于
1月 14, 2021
作者:
D
David Lin
提交者:
GitHub
1月 14, 2021
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Update E53_IA1.c
上级
bcfe2161
变更
1
隐藏空白更改
内联
并排
Showing
1 changed file
with
66 addition
and
72 deletion
+66
-72
board/TencentOS_tiny_EVB_MX_Plus/BSP/Hardware/E53_IA1/E53_IA1.c
...TencentOS_tiny_EVB_MX_Plus/BSP/Hardware/E53_IA1/E53_IA1.c
+66
-72
未找到文件。
board/TencentOS_tiny_EVB_MX_Plus/BSP/Hardware/E53_IA1/E53_IA1.c
浏览文件 @
bdc6ea2d
...
...
@@ -39,16 +39,16 @@ void Start_BH1750(void)
***************************************************************/
float
Convert_BH1750
(
void
)
{
float
result_lx
;
uint8_t
BUF
[
2
];
int
result
;
Start_BH1750
();
HAL_Delay
(
180
);
HAL_I2C_Master_Receive
(
&
hi2c1
,
BH1750_Addr
+
1
,
BUF
,
2
,
0xff
);
result
=
BUF
[
0
];
result
=
(
result
<<
8
)
+
BUF
[
1
];
//Synthetic Digital Illumination Intensity Data
result_lx
=
(
float
)(
result
/
1
.
2
);
return
result_lx
;
float
result_lx
;
uint8_t
BUF
[
2
];
int
result
;
Start_BH1750
();
HAL_Delay
(
180
);
HAL_I2C_Master_Receive
(
&
hi2c1
,
BH1750_Addr
+
1
,
BUF
,
2
,
0xff
);
result
=
BUF
[
0
];
result
=
(
result
<<
8
)
+
BUF
[
1
];
//Synthetic Digital Illumination Intensity Data
result_lx
=
(
float
)(
result
/
1
.
2
);
return
result_lx
;
}
/***************************************************************
...
...
@@ -59,10 +59,9 @@ float Convert_BH1750(void)
***************************************************************/
void
SHT30_reset
(
void
)
{
uint8_t
SHT3X_Resetcommand_Buffer
[
2
]
=
{
0x30
,
0xA2
};
//soft reset
uint8_t
SHT3X_Resetcommand_Buffer
[
2
]
=
{
0x30
,
0xA2
};
//soft reset
HAL_I2C_Master_Transmit
(
&
hi2c1
,
SHT30_Addr
<<
1
,
SHT3X_Resetcommand_Buffer
,
2
,
0x10
);
HAL_Delay
(
15
);
}
/***************************************************************
...
...
@@ -73,18 +72,17 @@ void SHT30_reset(void)
***************************************************************/
void
Init_SHT30
(
void
)
{
uint8_t
SHT3X_Modecommand_Buffer
[
2
]
=
{
0x22
,
0x36
};
//periodic mode commands
HAL_I2C_Master_Transmit
(
&
hi2c1
,
SHT30_Addr
<<
1
,
SHT3X_Modecommand_Buffer
,
2
,
0x10
);
//send periodic mode commands
uint8_t
SHT3X_Modecommand_Buffer
[
2
]
=
{
0x22
,
0x36
};
//periodic mode commands
HAL_I2C_Master_Transmit
(
&
hi2c1
,
SHT30_Addr
<<
1
,
SHT3X_Modecommand_Buffer
,
2
,
0x10
);
//send periodic mode commands
}
/***************************************************************
* 函数名称: SHT3x_CheckCrc
* 说 明: 检查数据正确性
* 参 数: data:读取到的数据
nbrOfBytes:需要校验的数量
checksum:读取到的校对比验值
* 返 回 值: 校验结果,0-成功
1-失败
nbrOfBytes:需要校验的数量
checksum:读取到的校对比验值
* 返 回 值: 校验结果,0-成功
1-失败
***************************************************************/
uint8_t
SHT3x_CheckCrc
(
char
data
[],
char
nbrOfBytes
,
char
checksum
)
{
...
...
@@ -105,10 +103,9 @@ uint8_t SHT3x_CheckCrc(char data[], char nbrOfBytes, char checksum)
}
if
(
crc
!=
checksum
)
return
1
;
return
1
;
else
return
0
;
return
0
;
}
/***************************************************************
...
...
@@ -120,7 +117,7 @@ uint8_t SHT3x_CheckCrc(char data[], char nbrOfBytes, char checksum)
float
SHT3x_CalcTemperatureC
(
unsigned
short
u16sT
)
{
float
temperatureC
=
0
;
// variable for result
float
temperatureC
=
0
;
// variable for result
u16sT
&=
~
0x0003
;
// clear bits [1..0] (status bits)
//-- calculate temperature [℃] --
...
...
@@ -139,7 +136,7 @@ float SHT3x_CalcTemperatureC(unsigned short u16sT)
float
SHT3x_CalcRH
(
unsigned
short
u16sRH
)
{
float
humidityRH
=
0
;
// variable for result
float
humidityRH
=
0
;
// variable for result
u16sRH
&=
~
0x0003
;
// clear bits [1..0] (status bits)
//-- calculate relative humidity [%RH] --
...
...
@@ -157,49 +154,47 @@ float SHT3x_CalcRH(unsigned short u16sRH)
***************************************************************/
void
Init_Motor
(
void
)
{
GPIO_InitTypeDef
GPIO_InitStruct
;
GPIO_InitTypeDef
GPIO_InitStruct
;
/* GPIO Ports Clock Enable */
IA1_Motor_GPIO_CLK_ENABLE
();
/* GPIO Ports Clock Enable */
IA1_Motor_GPIO_CLK_ENABLE
();
/*Configure GPIO pin Output Level */
HAL_GPIO_WritePin
(
IA1_Motor_GPIO_Port
,
IA1_Motor_Pin
,
GPIO_PIN_RESET
);
E53_IA1_Data
.
MotorMode
=
0
;
/*Configure GPIO pin : PtPin */
GPIO_InitStruct
.
Pin
=
IA1_Motor_Pin
;
GPIO_InitStruct
.
Mode
=
GPIO_MODE_OUTPUT_PP
;
GPIO_InitStruct
.
Pull
=
GPIO_NOPULL
;
GPIO_InitStruct
.
Speed
=
GPIO_SPEED_FREQ_LOW
;
HAL_GPIO_Init
(
IA1_Motor_GPIO_Port
,
&
GPIO_InitStruct
);
/*Configure GPIO pin Output Level */
HAL_GPIO_WritePin
(
IA1_Motor_GPIO_Port
,
IA1_Motor_Pin
,
GPIO_PIN_RESET
);
E53_IA1_Data
.
MotorMode
=
0
;
/*Configure GPIO pin : PtPin */
GPIO_InitStruct
.
Pin
=
IA1_Motor_Pin
;
GPIO_InitStruct
.
Mode
=
GPIO_MODE_OUTPUT_PP
;
GPIO_InitStruct
.
Pull
=
GPIO_NOPULL
;
GPIO_InitStruct
.
Speed
=
GPIO_SPEED_FREQ_LOW
;
HAL_GPIO_Init
(
IA1_Motor_GPIO_Port
,
&
GPIO_InitStruct
);
}
void
motor_control
(
char
mode
){
if
(
mode
==
1
)
{
E53_IA1_Data
.
MotorMode
=
1
;
HAL_GPIO_WritePin
(
IA1_Motor_GPIO_Port
,
IA1_Motor_Pin
,
GPIO_PIN_SET
);
}
else
if
(
mode
==
0
)
{
E53_IA1_Data
.
MotorMode
=
0
;
HAL_GPIO_WritePin
(
IA1_Motor_GPIO_Port
,
IA1_Motor_Pin
,
GPIO_PIN_RESET
);
}
if
(
mode
==
1
)
{
E53_IA1_Data
.
MotorMode
=
1
;
HAL_GPIO_WritePin
(
IA1_Motor_GPIO_Port
,
IA1_Motor_Pin
,
GPIO_PIN_SET
);
}
else
if
(
mode
==
0
)
{
E53_IA1_Data
.
MotorMode
=
0
;
HAL_GPIO_WritePin
(
IA1_Motor_GPIO_Port
,
IA1_Motor_Pin
,
GPIO_PIN_RESET
);
}
}
void
light_control
(
char
mode
){
if
(
mode
==
1
)
{
E53_IA1_Data
.
LightMode
=
1
;
HAL_GPIO_WritePin
(
IA1_Light_GPIO_Port
,
IA1_Light_Pin
,
GPIO_PIN_SET
);
}
else
if
(
mode
==
0
)
{
E53_IA1_Data
.
LightMode
=
0
;
HAL_GPIO_WritePin
(
IA1_Light_GPIO_Port
,
IA1_Light_Pin
,
GPIO_PIN_RESET
);
}
if
(
mode
==
1
)
{
E53_IA1_Data
.
LightMode
=
1
;
HAL_GPIO_WritePin
(
IA1_Light_GPIO_Port
,
IA1_Light_Pin
,
GPIO_PIN_SET
);
}
else
if
(
mode
==
0
)
{
E53_IA1_Data
.
LightMode
=
0
;
HAL_GPIO_WritePin
(
IA1_Light_GPIO_Port
,
IA1_Light_Pin
,
GPIO_PIN_RESET
);
}
}
/***************************************************************
...
...
@@ -210,20 +205,20 @@ void light_control(char mode){
***************************************************************/
void
Init_Light
(
void
)
{
GPIO_InitTypeDef
GPIO_InitStruct
;
GPIO_InitTypeDef
GPIO_InitStruct
;
/* GPIO Ports Clock Enable */
IA1_Light_GPIO_CLK_ENABLE
();
/* GPIO Ports Clock Enable */
IA1_Light_GPIO_CLK_ENABLE
();
/*Configure GPIO pin Output Level */
HAL_GPIO_WritePin
(
IA1_Light_GPIO_Port
,
IA1_Light_Pin
,
GPIO_PIN_RESET
);
E53_IA1_Data
.
LightMode
=
0
;
/*Configure GPIO pin : PtPin */
GPIO_InitStruct
.
Pin
=
IA1_Light_Pin
;
GPIO_InitStruct
.
Mode
=
GPIO_MODE_OUTPUT_PP
;
GPIO_InitStruct
.
Pull
=
GPIO_NOPULL
;
GPIO_InitStruct
.
Speed
=
GPIO_SPEED_FREQ_LOW
;
HAL_GPIO_Init
(
IA1_Light_GPIO_Port
,
&
GPIO_InitStruct
);
/*Configure GPIO pin Output Level */
HAL_GPIO_WritePin
(
IA1_Light_GPIO_Port
,
IA1_Light_Pin
,
GPIO_PIN_RESET
);
E53_IA1_Data
.
LightMode
=
0
;
/*Configure GPIO pin : PtPin */
GPIO_InitStruct
.
Pin
=
IA1_Light_Pin
;
GPIO_InitStruct
.
Mode
=
GPIO_MODE_OUTPUT_PP
;
GPIO_InitStruct
.
Pull
=
GPIO_NOPULL
;
GPIO_InitStruct
.
Speed
=
GPIO_SPEED_FREQ_LOW
;
HAL_GPIO_Init
(
IA1_Light_GPIO_Port
,
&
GPIO_InitStruct
);
}
/***************************************************************
* 函数名称: Init_E53_IA1
...
...
@@ -234,7 +229,7 @@ void Init_Light(void)
void
Init_E53_IA1
(
void
)
{
//printf("E53_sensor_board init!\n");
MX_I2C1_Init
();
MX_I2C1_Init
();
Init_BH1750
();
Init_SHT30
();
Init_Motor
();
...
...
@@ -254,7 +249,7 @@ void E53_IA1_Read_Data(void)
char
data
[
3
];
//data array for checksum verification
unsigned
short
tmp
=
0
;
uint16_t
dat
;
uint8_t
SHT3X_Fetchcommand_Bbuffer
[
2
]
=
{
0xE0
,
0x00
};
//read the measurement results
uint8_t
SHT3X_Fetchcommand_Bbuffer
[
2
]
=
{
0xE0
,
0x00
};
//read the measurement results
uint8_t
SHT3X_Data_Buffer
[
6
];
//byte 0,1 is temperature byte 4,5 is humidity
E53_IA1_Data
.
Lux
=
Convert_BH1750
();
//Read bh1750 sensor data
...
...
@@ -289,4 +284,3 @@ void E53_IA1_Read_Data(void)
}
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录