Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
tools-mirror
Micropython
提交
afe2ca1a
M
Micropython
项目概览
tools-mirror
/
Micropython
10 个月 前同步成功
通知
0
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
M
Micropython
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
前往新版Gitcode,体验更适合开发者的 AI 搜索 >>
提交
afe2ca1a
编写于
7月 30, 2023
作者:
K
Kwabena W. Agyeman
提交者:
Damien George
8月 15, 2023
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
mimxrt/machine_uart: Add support for UART hardware flow control.
Signed-off-by:
N
"Kwabena W. Agyeman"
<
kwagyeman@live.com
>
上级
e43c669b
变更
12
隐藏空白更改
内联
并排
Showing
12 changed file
with
167 addition
and
2 deletion
+167
-2
ports/mimxrt/boards/MIMXRT1010_EVK/mpconfigboard.h
ports/mimxrt/boards/MIMXRT1010_EVK/mpconfigboard.h
+6
-0
ports/mimxrt/boards/MIMXRT1015_EVK/mpconfigboard.h
ports/mimxrt/boards/MIMXRT1015_EVK/mpconfigboard.h
+6
-0
ports/mimxrt/boards/MIMXRT1020_EVK/mpconfigboard.h
ports/mimxrt/boards/MIMXRT1020_EVK/mpconfigboard.h
+10
-0
ports/mimxrt/boards/MIMXRT1050_EVK/mpconfigboard.h
ports/mimxrt/boards/MIMXRT1050_EVK/mpconfigboard.h
+10
-0
ports/mimxrt/boards/MIMXRT1060_EVK/mpconfigboard.h
ports/mimxrt/boards/MIMXRT1060_EVK/mpconfigboard.h
+10
-0
ports/mimxrt/boards/MIMXRT1064_EVK/mpconfigboard.h
ports/mimxrt/boards/MIMXRT1064_EVK/mpconfigboard.h
+10
-0
ports/mimxrt/boards/MIMXRT1170_EVK/mpconfigboard.h
ports/mimxrt/boards/MIMXRT1170_EVK/mpconfigboard.h
+14
-0
ports/mimxrt/boards/OLIMEX_RT1010/mpconfigboard.h
ports/mimxrt/boards/OLIMEX_RT1010/mpconfigboard.h
+6
-0
ports/mimxrt/boards/SEEED_ARCH_MIX/mpconfigboard.h
ports/mimxrt/boards/SEEED_ARCH_MIX/mpconfigboard.h
+10
-0
ports/mimxrt/boards/TEENSY40/mpconfigboard.h
ports/mimxrt/boards/TEENSY40/mpconfigboard.h
+10
-0
ports/mimxrt/boards/TEENSY41/mpconfigboard.h
ports/mimxrt/boards/TEENSY41/mpconfigboard.h
+10
-0
ports/mimxrt/machine_uart.c
ports/mimxrt/machine_uart.c
+65
-2
未找到文件。
ports/mimxrt/boards/MIMXRT1010_EVK/mpconfigboard.h
浏览文件 @
afe2ca1a
...
...
@@ -23,6 +23,12 @@
{ IOMUXC_GPIO_08_LPUART3_TXD }, { IOMUXC_GPIO_AD_07_LPUART3_RXD }, \
{ IOMUXC_GPIO_AD_02_LPUART4_TXD }, { IOMUXC_GPIO_AD_01_LPUART4_RXD },
#define IOMUX_TABLE_UART_CTS_RTS \
{ IOMUXC_GPIO_08_LPUART1_CTS_B }, { IOMUXC_GPIO_07_LPUART1_RTS_B }, \
{ 0 }, { 0 }, \
{ 0 }, { 0 }, \
{ IOMUXC_GPIO_AD_14_LPUART4_CTS_B }, { IOMUXC_GPIO_AD_13_LPUART4_RTS_B },
#define MICROPY_HW_SPI_INDEX { 1 }
#define IOMUX_TABLE_SPI \
...
...
ports/mimxrt/boards/MIMXRT1015_EVK/mpconfigboard.h
浏览文件 @
afe2ca1a
...
...
@@ -28,6 +28,12 @@
{ IOMUXC_GPIO_AD_B0_14_LPUART3_TX }, { IOMUXC_GPIO_AD_B0_15_LPUART3_RX }, \
{ IOMUXC_GPIO_EMC_32_LPUART4_TX }, { IOMUXC_GPIO_EMC_33_LPUART4_RX }, \
#define IOMUX_TABLE_UART_CTS_RTS \
{ IOMUXC_GPIO_AD_B0_08_LPUART1_CTS_B }, { IOMUXC_GPIO_AD_B0_09_LPUART1_RTS_B }, \
{ 0 }, { 0 }, \
{ IOMUXC_GPIO_AD_B0_12_LPUART3_CTS_B }, { IOMUXC_GPIO_AD_B0_13_LPUART3_RTS_B }, \
{ 0 }, { 0 },
#define MICROPY_HW_SPI_INDEX { 1 }
#define IOMUX_TABLE_SPI \
...
...
ports/mimxrt/boards/MIMXRT1020_EVK/mpconfigboard.h
浏览文件 @
afe2ca1a
...
...
@@ -34,6 +34,16 @@
{ 0 }, { 0 }, \
{ IOMUXC_GPIO_SD_B1_02_LPUART8_TX }, { IOMUXC_GPIO_SD_B1_03_LPUART8_RX },
#define IOMUX_TABLE_UART_CTS_RTS \
{ IOMUXC_GPIO_AD_B0_08_LPUART1_CTS_B }, { IOMUXC_GPIO_AD_B0_09_LPUART1_RTS_B }, \
{ IOMUXC_GPIO_AD_B1_06_LPUART2_CTS_B }, { IOMUXC_GPIO_AD_B1_07_LPUART2_RTS_B }, \
{ IOMUXC_GPIO_AD_B0_12_LPUART3_CTS_B }, { IOMUXC_GPIO_AD_B0_13_LPUART3_RTS_B }, \
{ IOMUXC_GPIO_EMC_00_LPUART4_CTS_B }, { IOMUXC_GPIO_EMC_01_LPUART4_RTS_B }, \
{ IOMUXC_GPIO_EMC_36_LPUART5_CTS_B }, { IOMUXC_GPIO_EMC_37_LPUART5_RTS_B }, \
{ 0 }, { 0 }, \
{ 0 }, { 0 }, \
{ IOMUXC_GPIO_EMC_24_LPUART8_CTS_B }, { IOMUXC_GPIO_EMC_25_LPUART8_RTS_B },
#define MICROPY_HW_SPI_INDEX { 1, 3 }
#define IOMUX_TABLE_SPI \
...
...
ports/mimxrt/boards/MIMXRT1050_EVK/mpconfigboard.h
浏览文件 @
afe2ca1a
...
...
@@ -30,6 +30,16 @@
{ 0 }, { 0 }, \
{ IOMUXC_GPIO_AD_B1_10_LPUART8_TX }, { IOMUXC_GPIO_AD_B1_11_LPUART8_RX },
#define IOMUX_TABLE_UART_CTS_RTS \
{ IOMUXC_GPIO_AD_B0_14_LPUART1_CTS_B }, { IOMUXC_GPIO_AD_B0_15_LPUART1_RTS_B }, \
{ IOMUXC_GPIO_AD_B1_00_LPUART2_CTS_B }, { IOMUXC_GPIO_AD_B1_01_LPUART2_RTS_B }, \
{ IOMUXC_GPIO_AD_B1_04_LPUART3_CTS_B }, { IOMUXC_GPIO_AD_B1_05_LPUART3_RTS_B }, \
{ 0 }, { 0 }, \
{ 0 }, { 0 }, \
{ IOMUXC_GPIO_EMC_30_LPUART6_CTS_B }, { IOMUXC_GPIO_EMC_29_LPUART6_RTS_B }, \
{ 0 }, { 0 }, \
{ IOMUXC_GPIO_SD_B0_02_LPUART8_CTS_B }, { IOMUXC_GPIO_SD_B0_03_LPUART8_RTS_B },
#define MICROPY_HW_SPI_INDEX { 1 }
#define IOMUX_TABLE_SPI \
...
...
ports/mimxrt/boards/MIMXRT1060_EVK/mpconfigboard.h
浏览文件 @
afe2ca1a
...
...
@@ -30,6 +30,16 @@
{ 0 }, { 0 }, \
{ IOMUXC_GPIO_AD_B1_10_LPUART8_TX }, { IOMUXC_GPIO_AD_B1_11_LPUART8_RX },
#define IOMUX_TABLE_UART_CTS_RTS \
{ IOMUXC_GPIO_AD_B0_14_LPUART1_CTS_B }, { IOMUXC_GPIO_AD_B0_15_LPUART1_RTS_B }, \
{ IOMUXC_GPIO_AD_B1_00_LPUART2_CTS_B }, { IOMUXC_GPIO_AD_B1_01_LPUART2_RTS_B }, \
{ IOMUXC_GPIO_AD_B1_04_LPUART3_CTS_B }, { IOMUXC_GPIO_AD_B1_05_LPUART3_RTS_B }, \
{ 0 }, { 0 }, \
{ 0 }, { 0 }, \
{ IOMUXC_GPIO_EMC_30_LPUART6_CTS_B }, { IOMUXC_GPIO_EMC_29_LPUART6_RTS_B }, \
{ 0 }, { 0 }, \
{ IOMUXC_GPIO_SD_B0_02_LPUART8_CTS_B }, { IOMUXC_GPIO_SD_B0_03_LPUART8_RTS_B },
#define MICROPY_HW_SPI_INDEX { 1 }
#define IOMUX_TABLE_SPI \
...
...
ports/mimxrt/boards/MIMXRT1064_EVK/mpconfigboard.h
浏览文件 @
afe2ca1a
...
...
@@ -30,6 +30,16 @@
{ 0 }, { 0 }, \
{ IOMUXC_GPIO_AD_B1_10_LPUART8_TX }, { IOMUXC_GPIO_AD_B1_11_LPUART8_RX },
#define IOMUX_TABLE_UART_CTS_RTS \
{ IOMUXC_GPIO_AD_B0_14_LPUART1_CTS_B }, { IOMUXC_GPIO_AD_B0_15_LPUART1_RTS_B }, \
{ IOMUXC_GPIO_AD_B1_00_LPUART2_CTS_B }, { IOMUXC_GPIO_AD_B1_01_LPUART2_RTS_B }, \
{ IOMUXC_GPIO_AD_B1_04_LPUART3_CTS_B }, { IOMUXC_GPIO_AD_B1_05_LPUART3_RTS_B }, \
{ 0 }, { 0 }, \
{ 0 }, { 0 }, \
{ IOMUXC_GPIO_EMC_30_LPUART6_CTS_B }, { IOMUXC_GPIO_EMC_29_LPUART6_RTS_B }, \
{ 0 }, { 0 }, \
{ IOMUXC_GPIO_SD_B0_02_LPUART8_CTS_B }, { IOMUXC_GPIO_SD_B0_03_LPUART8_RTS_B },
#define MICROPY_HW_SPI_INDEX { 1 }
#define IOMUX_TABLE_SPI \
...
...
ports/mimxrt/boards/MIMXRT1170_EVK/mpconfigboard.h
浏览文件 @
afe2ca1a
...
...
@@ -43,6 +43,20 @@
{ IOMUXC_GPIO_LPSR_04_LPUART11_TXD }, { IOMUXC_GPIO_LPSR_05_LPUART11_RXD }, \
{ IOMUXC_GPIO_LPSR_10_LPUART12_TXD }, { IOMUXC_GPIO_LPSR_11_LPUART12_RXD },
#define IOMUX_TABLE_UART_CTS_RTS \
{ IOMUXC_GPIO_AD_26_LPUART1_CTS_B }, { IOMUXC_GPIO_AD_27_LPUART1_RTS_B }, \
{ IOMUXC_GPIO_DISP_B2_12_LPUART2_CTS_B }, { IOMUXC_GPIO_DISP_B2_13_LPUART2_RTS_B }, \
{ IOMUXC_GPIO_SD_B2_07_LPUART3_CTS_B }, { IOMUXC_GPIO_SD_B2_08_LPUART3_RTS_B }, \
{ 0 }, { 0 }, \
{ IOMUXC_GPIO_SD_B2_09_LPUART5_CTS_B }, { IOMUXC_GPIO_SD_B2_10_LPUART5_RTS_B }, \
{ 0 }, { 0 }, \
{ IOMUXC_GPIO_AD_02_LPUART7_CTS_B }, { IOMUXC_GPIO_AD_03_LPUART7_RTS_B }, \
{ IOMUXC_GPIO_AD_04_LPUART8_CTS_B }, { IOMUXC_GPIO_AD_05_LPUART8_RTS_B }, \
{ 0 }, { 0 }, \
{ 0 }, { 0 }, \
{ IOMUXC_GPIO_LPSR_10_LPUART11_CTS_B }, { IOMUXC_GPIO_LPSR_11_LPUART11_RTS_B }, \
{ IOMUXC_GPIO_LPSR_05_LPUART12_CTS_B }, { IOMUXC_GPIO_LPSR_04_LPUART12_RTS_B },
// Define the mapping hardware SPI # to logical SPI #
// SCK/CS/SDO/SDI HW-SPI Logical SPI
// D13/D10/D11/D12 LPSPI1 -> 0
...
...
ports/mimxrt/boards/OLIMEX_RT1010/mpconfigboard.h
浏览文件 @
afe2ca1a
...
...
@@ -25,6 +25,12 @@
{ 0 }, { 0 }, \
{ IOMUXC_GPIO_06_LPUART4_TXD }, { IOMUXC_GPIO_05_LPUART4_RXD },
#define IOMUX_TABLE_UART_CTS_RTS \
{ IOMUXC_GPIO_AD_B0_14_LPUART1_CTS_B }, { IOMUXC_GPIO_AD_B0_15_LPUART1_RTS_B }, \
{ 0 }, { 0 }, \
{ 0 }, { 0 }, \
{ IOMUXC_GPIO_EMC_17_LPUART4_CTS_B }, { IOMUXC_GPIO_EMC_18_LPUART4_RTS_B },
#define MICROPY_HW_SPI_INDEX { 0, 1, 2 }
#define IOMUX_TABLE_SPI \
...
...
ports/mimxrt/boards/SEEED_ARCH_MIX/mpconfigboard.h
浏览文件 @
afe2ca1a
...
...
@@ -32,6 +32,16 @@
{ 0 }, { 0 }, \
{ IOMUXC_GPIO_AD_B1_10_LPUART8_TX }, { IOMUXC_GPIO_AD_B1_11_LPUART8_RX },
#define IOMUX_TABLE_UART_CTS_RTS \
{ IOMUXC_GPIO_AD_B0_14_LPUART1_CTS_B }, { IOMUXC_GPIO_AD_B0_15_LPUART1_RTS_B }, \
{ IOMUXC_GPIO_AD_B1_00_LPUART2_CTS_B }, { IOMUXC_GPIO_AD_B1_01_LPUART2_RTS_B }, \
{ IOMUXC_GPIO_AD_B1_04_LPUART3_CTS_B }, { IOMUXC_GPIO_AD_B1_05_LPUART3_RTS_B }, \
{ IOMUXC_GPIO_EMC_17_LPUART4_CTS_B }, { IOMUXC_GPIO_EMC_18_LPUART4_RTS_B }, \
{ 0 }, { 0 }, \
{ 0 }, { 0 }, \
{ 0 }, { 0 }, \
{ IOMUXC_GPIO_SD_B0_02_LPUART8_CTS_B }, { IOMUXC_GPIO_SD_B0_03_LPUART8_RTS_B },
#define MICROPY_HW_SPI_INDEX { 3, 4 }
#define IOMUX_TABLE_SPI \
...
...
ports/mimxrt/boards/TEENSY40/mpconfigboard.h
浏览文件 @
afe2ca1a
...
...
@@ -22,6 +22,16 @@
{ IOMUXC_GPIO_EMC_31_LPUART7_TX }, { IOMUXC_GPIO_EMC_32_LPUART7_RX }, \
{ IOMUXC_GPIO_AD_B1_10_LPUART8_TX }, { IOMUXC_GPIO_AD_B1_11_LPUART8_RX },
#define IOMUX_TABLE_UART_CTS_RTS \
{ IOMUXC_GPIO_AD_B0_14_LPUART1_CTS_B }, { IOMUXC_GPIO_AD_B0_15_LPUART1_RTS_B }, \
{ IOMUXC_GPIO_AD_B1_00_LPUART2_CTS_B }, { IOMUXC_GPIO_AD_B1_01_LPUART2_RTS_B }, \
{ IOMUXC_GPIO_AD_B1_04_LPUART3_CTS_B }, { IOMUXC_GPIO_AD_B1_05_LPUART3_RTS_B }, \
{ IOMUXC_GPIO_EMC_17_LPUART4_CTS_B }, { IOMUXC_GPIO_EMC_18_LPUART4_RTS_B }, \
{ 0 }, { 0 }, \
{ IOMUXC_GPIO_EMC_30_LPUART6_CTS_B }, { IOMUXC_GPIO_EMC_29_LPUART6_RTS_B }, \
{ IOMUXC_GPIO_SD_B1_06_LPUART7_CTS_B }, { IOMUXC_GPIO_SD_B1_07_LPUART7_RTS_B }, \
{ IOMUXC_GPIO_SD_B0_02_LPUART8_CTS_B }, { IOMUXC_GPIO_SD_B0_03_LPUART8_RTS_B },
#define MICROPY_HW_SPI_INDEX { 4, 3}
#define IOMUX_TABLE_SPI \
...
...
ports/mimxrt/boards/TEENSY41/mpconfigboard.h
浏览文件 @
afe2ca1a
...
...
@@ -24,6 +24,16 @@
{ IOMUXC_GPIO_EMC_31_LPUART7_TX }, { IOMUXC_GPIO_EMC_32_LPUART7_RX }, \
{ IOMUXC_GPIO_AD_B1_10_LPUART8_TX }, { IOMUXC_GPIO_AD_B1_11_LPUART8_RX },
#define IOMUX_TABLE_UART_CTS_RTS \
{ IOMUXC_GPIO_AD_B0_14_LPUART1_CTS_B }, { IOMUXC_GPIO_AD_B0_15_LPUART1_RTS_B }, \
{ IOMUXC_GPIO_AD_B1_00_LPUART2_CTS_B }, { IOMUXC_GPIO_AD_B1_01_LPUART2_RTS_B }, \
{ IOMUXC_GPIO_AD_B1_04_LPUART3_CTS_B }, { IOMUXC_GPIO_AD_B1_05_LPUART3_RTS_B }, \
{ IOMUXC_GPIO_EMC_17_LPUART4_CTS_B }, { IOMUXC_GPIO_EMC_18_LPUART4_RTS_B }, \
{ IOMUXC_GPIO_EMC_28_LPUART5_CTS_B }, { IOMUXC_GPIO_EMC_27_LPUART5_RTS_B }, \
{ IOMUXC_GPIO_EMC_30_LPUART6_CTS_B }, { IOMUXC_GPIO_EMC_29_LPUART6_RTS_B }, \
{ IOMUXC_GPIO_SD_B1_06_LPUART7_CTS_B }, { IOMUXC_GPIO_SD_B1_07_LPUART7_RTS_B }, \
{ IOMUXC_GPIO_SD_B0_02_LPUART8_CTS_B }, { IOMUXC_GPIO_SD_B0_03_LPUART8_RTS_B },
#define MICROPY_HW_SPI_INDEX { 4, 3, 1 }
#define IOMUX_TABLE_SPI \
...
...
ports/mimxrt/machine_uart.c
浏览文件 @
afe2ca1a
...
...
@@ -40,6 +40,10 @@
#define MIN_BUFFER_SIZE (32)
#define MAX_BUFFER_SIZE (32766)
#define UART_HWCONTROL_RTS (1)
#define UART_HWCONTROL_CTS (2)
#define UART_HWCONTROL_MASK (UART_HWCONTROL_RTS | UART_HWCONTROL_CTS)
#define UART_INVERT_TX (1)
#define UART_INVERT_RX (2)
#define UART_INVERT_MASK (UART_INVERT_TX | UART_INVERT_RX)
...
...
@@ -74,12 +78,18 @@ STATIC LPUART_Type *uart_base_ptr_table[] = LPUART_BASE_PTRS;
static
const
iomux_table_t
iomux_table_uart
[]
=
{
IOMUX_TABLE_UART
};
static
const
iomux_table_t
iomux_table_uart_cts_rts
[]
=
{
IOMUX_TABLE_UART_CTS_RTS
};
STATIC
const
char
*
_parity_name
[]
=
{
"None"
,
""
,
"0"
,
"1"
};
// Is defined as 0, 2, 3
STATIC
const
char
*
_invert_name
[]
=
{
"None"
,
"INV_TX"
,
"INV_RX"
,
"INV_TX|INV_RX"
};
STATIC
const
char
*
_flow_name
[]
=
{
"None"
,
"RTS"
,
"CTS"
,
"RTS|CTS"
};
#define RX (iomux_table_uart[index + 1])
#define TX (iomux_table_uart[index])
#define RTS (iomux_table_uart_cts_rts[index + 1])
#define CTS (iomux_table_uart_cts_rts[index])
bool
lpuart_set_iomux
(
int8_t
uart
)
{
int
index
=
(
uart
-
1
)
*
2
;
...
...
@@ -98,6 +108,33 @@ bool lpuart_set_iomux(int8_t uart) {
}
}
bool
lpuart_set_iomux_rts
(
int8_t
uart
)
{
MP_STATIC_ASSERT
(
MP_ARRAY_SIZE
(
iomux_table_uart
)
==
MP_ARRAY_SIZE
(
iomux_table_uart_cts_rts
));
int
index
=
(
uart
-
1
)
*
2
;
if
(
RTS
.
muxRegister
!=
0
)
{
IOMUXC_SetPinMux
(
RTS
.
muxRegister
,
RTS
.
muxMode
,
RTS
.
inputRegister
,
RTS
.
inputDaisy
,
RTS
.
configRegister
,
0U
);
IOMUXC_SetPinConfig
(
RTS
.
muxRegister
,
RTS
.
muxMode
,
RTS
.
inputRegister
,
RTS
.
inputDaisy
,
RTS
.
configRegister
,
pin_generate_config
(
PIN_PULL_UP_100K
,
PIN_MODE_OUT
,
PIN_DRIVE_6
,
RTS
.
configRegister
));
return
true
;
}
else
{
return
false
;
}
}
bool
lpuart_set_iomux_cts
(
int8_t
uart
)
{
int
index
=
(
uart
-
1
)
*
2
;
if
(
CTS
.
muxRegister
!=
0
)
{
IOMUXC_SetPinMux
(
CTS
.
muxRegister
,
CTS
.
muxMode
,
CTS
.
inputRegister
,
CTS
.
inputDaisy
,
CTS
.
configRegister
,
0U
);
IOMUXC_SetPinConfig
(
CTS
.
muxRegister
,
CTS
.
muxMode
,
CTS
.
inputRegister
,
CTS
.
inputDaisy
,
CTS
.
configRegister
,
pin_generate_config
(
PIN_PULL_UP_100K
,
PIN_MODE_IN
,
PIN_DRIVE_6
,
CTS
.
configRegister
));
return
true
;
}
else
{
return
false
;
}
}
void
LPUART_UserCallback
(
LPUART_Type
*
base
,
lpuart_handle_t
*
handle
,
status_t
status
,
void
*
userData
)
{
machine_uart_obj_t
*
self
=
userData
;
if
(
kStatus_LPUART_TxIdle
==
status
)
{
...
...
@@ -111,22 +148,24 @@ void LPUART_UserCallback(LPUART_Type *base, lpuart_handle_t *handle, status_t st
STATIC
void
machine_uart_print
(
const
mp_print_t
*
print
,
mp_obj_t
self_in
,
mp_print_kind_t
kind
)
{
machine_uart_obj_t
*
self
=
MP_OBJ_TO_PTR
(
self_in
);
mp_printf
(
print
,
"UART(%u, baudrate=%u, bits=%u, parity=%s, stop=%u, "
mp_printf
(
print
,
"UART(%u, baudrate=%u, bits=%u, parity=%s, stop=%u,
flow=%s,
"
"rxbuf=%d, txbuf=%d, timeout=%u, timeout_char=%u, invert=%s)"
,
self
->
id
,
self
->
config
.
baudRate_Bps
,
8
-
self
->
config
.
dataBitsCount
,
_parity_name
[
self
->
config
.
parityMode
],
self
->
config
.
stopBitCount
+
1
,
_flow_name
[(
self
->
config
.
enableTxCTS
<<
1
)
|
self
->
config
.
enableRxRTS
],
self
->
handle
.
rxRingBufferSize
,
self
->
txbuf_len
,
self
->
timeout
,
self
->
timeout_char
,
_invert_name
[
self
->
invert
]);
}
STATIC
mp_obj_t
machine_uart_init_helper
(
machine_uart_obj_t
*
self
,
size_t
n_args
,
const
mp_obj_t
*
pos_args
,
mp_map_t
*
kw_args
)
{
enum
{
ARG_baudrate
,
ARG_bits
,
ARG_parity
,
ARG_stop
,
enum
{
ARG_baudrate
,
ARG_bits
,
ARG_parity
,
ARG_stop
,
ARG_flow
,
ARG_timeout
,
ARG_timeout_char
,
ARG_invert
,
ARG_rxbuf
,
ARG_txbuf
};
static
const
mp_arg_t
allowed_args
[]
=
{
{
MP_QSTR_baudrate
,
MP_ARG_INT
,
{.
u_int
=
-
1
}
},
{
MP_QSTR_bits
,
MP_ARG_INT
,
{.
u_int
=
-
1
}
},
{
MP_QSTR_parity
,
MP_ARG_OBJ
,
{.
u_rom_obj
=
MP_ROM_INT
(
-
1
)}
},
{
MP_QSTR_stop
,
MP_ARG_INT
,
{.
u_int
=
-
1
}
},
{
MP_QSTR_flow
,
MP_ARG_KW_ONLY
|
MP_ARG_INT
,
{.
u_int
=
-
1
}
},
{
MP_QSTR_timeout
,
MP_ARG_KW_ONLY
|
MP_ARG_INT
,
{.
u_int
=
-
1
}
},
{
MP_QSTR_timeout_char
,
MP_ARG_KW_ONLY
|
MP_ARG_INT
,
{.
u_int
=
-
1
}
},
{
MP_QSTR_invert
,
MP_ARG_KW_ONLY
|
MP_ARG_INT
,
{.
u_int
=
-
1
}
},
...
...
@@ -164,6 +203,27 @@ STATIC mp_obj_t machine_uart_init_helper(machine_uart_obj_t *self, size_t n_args
self
->
config
.
stopBitCount
=
args
[
ARG_stop
].
u_int
-
1
;
}
// Set flow if configured.
if
(
args
[
ARG_flow
].
u_int
>=
0
)
{
if
(
args
[
ARG_flow
].
u_int
&
~
UART_HWCONTROL_MASK
)
{
mp_raise_ValueError
(
MP_ERROR_TEXT
(
"bad flow mask"
));
}
if
(
args
[
ARG_flow
].
u_int
&
UART_HWCONTROL_RTS
)
{
if
(
!
lpuart_set_iomux_rts
(
uart_index_table
[
self
->
id
]))
{
mp_raise_ValueError
(
MP_ERROR_TEXT
(
"rts not available"
));
}
self
->
config
.
enableRxRTS
=
true
;
}
if
(
args
[
ARG_flow
].
u_int
&
UART_HWCONTROL_CTS
)
{
if
(
!
lpuart_set_iomux_cts
(
uart_index_table
[
self
->
id
]))
{
mp_raise_ValueError
(
MP_ERROR_TEXT
(
"cts not available"
));
}
self
->
config
.
enableTxCTS
=
true
;
}
}
// Set timeout if configured.
if
(
args
[
ARG_timeout
].
u_int
>=
0
)
{
self
->
timeout
=
args
[
ARG_timeout
].
u_int
;
...
...
@@ -346,6 +406,9 @@ STATIC const mp_rom_map_elem_t machine_uart_locals_dict_table[] = {
{
MP_ROM_QSTR
(
MP_QSTR_sendbreak
),
MP_ROM_PTR
(
&
machine_uart_sendbreak_obj
)
},
{
MP_ROM_QSTR
(
MP_QSTR_txdone
),
MP_ROM_PTR
(
&
machine_uart_txdone_obj
)
},
{
MP_ROM_QSTR
(
MP_QSTR_RTS
),
MP_ROM_INT
(
UART_HWCONTROL_RTS
)
},
{
MP_ROM_QSTR
(
MP_QSTR_CTS
),
MP_ROM_INT
(
UART_HWCONTROL_CTS
)
},
{
MP_ROM_QSTR
(
MP_QSTR_INV_TX
),
MP_ROM_INT
(
UART_INVERT_TX
)
},
{
MP_ROM_QSTR
(
MP_QSTR_INV_RX
),
MP_ROM_INT
(
UART_INVERT_RX
)
},
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录