Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
BaiXuePrincess
rt-thread
提交
f9e34b4d
R
rt-thread
项目概览
BaiXuePrincess
/
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,发现更多精彩内容 >>
提交
f9e34b4d
编写于
12月 05, 2020
作者:
T
thread-liu
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
[add] rs485 driver
上级
8880e751
变更
5
隐藏空白更改
内联
并排
Showing
5 changed file
with
155 addition
and
4 deletion
+155
-4
bsp/stm32/libraries/HAL_Drivers/config/mp1/spi_config.h
bsp/stm32/libraries/HAL_Drivers/config/mp1/spi_config.h
+0
-4
bsp/stm32/stm32mp157a-st-ev1/board/Kconfig
bsp/stm32/stm32mp157a-st-ev1/board/Kconfig
+16
-0
bsp/stm32/stm32mp157a-st-ev1/board/SConscript
bsp/stm32/stm32mp157a-st-ev1/board/SConscript
+3
-0
bsp/stm32/stm32mp157a-st-ev1/board/ports/drv_rs485.c
bsp/stm32/stm32mp157a-st-ev1/board/ports/drv_rs485.c
+111
-0
bsp/stm32/stm32mp157a-st-ev1/board/ports/drv_rs485.h
bsp/stm32/stm32mp157a-st-ev1/board/ports/drv_rs485.h
+25
-0
未找到文件。
bsp/stm32/libraries/HAL_Drivers/config/mp1/spi_config.h
浏览文件 @
f9e34b4d
...
...
@@ -23,7 +23,6 @@ extern "C" {
{ \
.Instance = SPI1, \
.bus_name = "spi1", \
.irq_type = SPI1_IRQn, \
}
#endif
/* SPI1_BUS_CONFIG */
#endif
/* BSP_USING_SPI1 */
...
...
@@ -58,7 +57,6 @@ extern "C" {
{ \
.Instance = SPI2, \
.bus_name = "spi2", \
.irq_type = SPI2_IRQn, \
}
#endif
/* SPI2_BUS_CONFIG */
#endif
/* BSP_USING_SPI2 */
...
...
@@ -93,7 +91,6 @@ extern "C" {
{ \
.Instance = SPI3, \
.bus_name = "spi3", \
.irq_type = SPI3_IRQn, \
}
#endif
/* SPI3_BUS_CONFIG */
#endif
/* BSP_USING_SPI3 */
...
...
@@ -128,7 +125,6 @@ extern "C" {
{ \
.Instance = SPI4, \
.bus_name = "spi4", \
.irq_type = SPI4_IRQn, \
}
#endif
/* SPI4_BUS_CONFIG */
#endif
/* BSP_USING_SPI4 */
...
...
bsp/stm32/stm32mp157a-st-ev1/board/Kconfig
浏览文件 @
f9e34b4d
...
...
@@ -104,6 +104,22 @@ menu "Onboard Peripheral Drivers"
bool "Enable Multi Function eXpander"
default n
menuconfig BSP_USING_RS485
bool "Enable RS485 "
default n
if BSP_USING_RS485
comment "set rts pin number "
config BSP_RS485_RTS_PIN
int "RS485 rts pin number"
range 1 176
default 5
config RS485_UART_DEVICE_NAME
string "the uart name for rs485"
default "uart3"
endif
endmenu
menu "On-chip Peripheral Drivers"
...
...
bsp/stm32/stm32mp157a-st-ev1/board/SConscript
浏览文件 @
f9e34b4d
...
...
@@ -70,6 +70,9 @@ if GetDepend(['BSP_USING_PWR']):
if
GetDepend
([
'BSP_USING_LPTIM1'
]):
src
+=
Glob
(
'ports/drv_lptim.c'
)
if
GetDepend
([
'BSP_USING_RS485'
]):
src
+=
Glob
(
'ports/drv_rs485.c'
)
if
GetDepend
([
'BSP_USING_OPENAMP'
]):
src
+=
Glob
(
'CubeMX_Config/CM4/Src/ipcc.c'
)
src
+=
Glob
(
'CubeMX_Config/CM4/Src/openamp.c'
)
...
...
bsp/stm32/stm32mp157a-st-ev1/board/ports/drv_rs485.c
0 → 100644
浏览文件 @
f9e34b4d
/*
* Copyright (c) 2006-2022, RT-Thread Development Team
*
* SPDX-License-Identifier: Apache-2.0
*
* Change Logs:
* Date Author Notes
* 2020-10-24 thread-liu first version
*/
#include <board.h>
#include "drv_rs485.h"
#ifdef BSP_USING_RS485
#define RS485_OUT rt_pin_write(BSP_RS485_RTS_PIN, PIN_HIGH)
#define RS485_IN rt_pin_write(BSP_RS485_RTS_PIN, PIN_LOW)
static
rt_device_t
serial
=
{
0
};
static
struct
rt_semaphore
rx_sem
=
{
0
};
/* uart send data callback function */
static
rt_err_t
rs485_output
(
rt_device_t
dev
,
void
*
buffer
)
{
return
RT_EOK
;
}
/* uart receive data callback function */
static
rt_err_t
rs485_input
(
rt_device_t
dev
,
rt_size_t
size
)
{
rt_sem_release
(
&
rx_sem
);
return
RT_EOK
;
}
/* send string */
int
rs485_send_data
(
char
*
tbuf
,
rt_uint16_t
t_len
)
{
/* change rs485 mode */
RS485_OUT
;
/* send data */
rt_device_write
(
serial
,
0
,
tbuf
,
t_len
);
/* change rs485 mode */
RS485_IN
;
return
RT_EOK
;
}
static
void
rs485_thread_entry
(
void
*
parameter
)
{
char
ch
;
while
(
1
)
{
/* A byte of data is read from a serial port, and if it is not read, it waits for the received semaphore */
while
(
rt_device_read
(
serial
,
-
1
,
&
ch
,
1
)
!=
1
)
{
rt_sem_take
(
&
rx_sem
,
RT_WAITING_FOREVER
);
}
/* The data read through the serial port output dislocation */
ch
=
ch
+
1
;
/* send char */
rs485_send_data
(
&
ch
,
1
);
}
}
/* rs485 rts pin init */
static
int
rs485_init
(
void
)
{
/* find uart device */
serial
=
rt_device_find
(
RS485_UART_DEVICE_NAME
);
if
(
!
serial
)
{
rt_kprintf
(
"find %s failed!
\n
"
,
RS485_UART_DEVICE_NAME
);
return
RT_ERROR
;
}
rt_device_open
(
serial
,
RT_DEVICE_FLAG_INT_RX
);
/* set receive data callback function */
rt_device_set_rx_indicate
(
serial
,
rs485_input
);
/* set the send completion callback function */
rt_device_set_tx_complete
(
serial
,
rs485_output
);
rt_pin_mode
(
BSP_RS485_RTS_PIN
,
PIN_MODE_OUTPUT
);
RS485_IN
;
rt_sem_init
(
&
rx_sem
,
"rx_sem"
,
0
,
RT_IPC_FLAG_FIFO
);
/* create rs485 thread */
rt_thread_t
thread
=
rt_thread_create
(
"rs485"
,
rs485_thread_entry
,
RT_NULL
,
1024
,
25
,
10
);
if
(
thread
!=
RT_NULL
)
{
rt_thread_startup
(
thread
);
}
else
{
return
RT_ERROR
;
}
return
RT_EOK
;
}
INIT_DEVICE_EXPORT
(
rs485_init
);
#endif
/* bsp_using_RS485 */
bsp/stm32/stm32mp157a-st-ev1/board/ports/drv_rs485.h
0 → 100644
浏览文件 @
f9e34b4d
/*
* Copyright (c) 2006-2022, RT-Thread Development Team
*
* SPDX-License-Identifier: Apache-2.0
*
* Change Logs:
* Date Author Notes
* 2020-10-24 thread-liu first version
*/
#ifndef __DRV_RS485_H__
#define __DRV_RS485_H__
#ifdef __cplusplus
extern
"C"
{
#endif
#define RS485_SEND_MODE 0
#define RS485_RECV_MODE 1
#ifdef __cplusplus
}
#endif
#endif
/* drv_rs485.h */
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录