跳到主要内容

WK2124 扩展 4 个 UART 串口

一、WK2124介绍

WK2124是SPI接口的4通道UART扩展器件,可以通过SPI总线扩展出4个串口(UART)。 并且每个串口的波特率可以单独设置。所以基于WK2124模块,我们就可以很容易扩展出最多4个串口,来满足一些应用场景的特殊需求,比如需要接多个RS232接口,多个RS485接口,或者多个TTL串口传感器模块的情况。

二、接线图

layout

三、材料清单

名称推荐购买链接(或者你可以自己制作)模块/芯片硬件资料下载
WK2124串口扩展模块(SB-P13)请联系 FlexLua 官网购买下载地址

product0

product1

四、完整实例代码

本实例用WK2124模块扩展出4个UART串口,每个UART口只要接收到数据,就回复“I got uartn data”给对方。

--配置Core的USB口为虚拟串口,这样就可以在电脑串口调试中断上收到Print打印的信息了
LIB_UsbConfig("CDC")
--配置WK2124模块开始工作,4个UART扩展口都开启,并且模块占用SPI(CS,MISO,MOSI,CLK)以及D5引脚
--UART1和UART2的波特率为115200,UART3和UART4的波特率为9600
LIB_WK2124Config("B115200","B115200","B9600","B9600","D5")
while(GC(1) == true)
do
--查询Uart1是否收到数据,如果收到就print输出收到的数据
u1_flag,u1_tab = LIB_WK2124UartRecvQuery("UART1")
if u1_flag == 1 then
print("Uart1 Recv:")
--将从uart1串口收到的数据逐个打印出来
for i, v in ipairs(u1_tab) do
print(i, v)
end
--并返回已收到数据的应答信息
LIB_WK2124UartSend("UART1", LIB_StrToTab("I got uart1 data!\r\n"))
end
--查询Uart2是否收到数据,如果收到就print输出收到的数据
u2_flag,u2_tab = LIB_WK2124UartRecvQuery("UART2")
if u2_flag == 1 then
print("Uart2 Recv:")
--将从uart2串口收到的数据逐个打印出来
for i, v in ipairs(u2_tab) do
print(i, v)
end
--并返回已收到数据的应答信息
LIB_WK2124UartSend("UART2", LIB_StrToTab("I got uart2 data!\r\n"))
end
--查询Uart3是否收到数据,如果收到就print输出收到的数据
u3_flag,u3_tab = LIB_WK2124UartRecvQuery("UART3")
if u3_flag == 1 then
print("Uart3 Recv:")
--将从uar3串口收到的数据逐个打印出来
for i, v in ipairs(u3_tab) do
print(i, v)
end
--并返回已收到数据的应答信息
LIB_WK2124UartSend("UART3", LIB_StrToTab("I got uart3 data!\r\n"))
end
--查询Uart4是否收到数据,如果收到就print输出收到的数据
u4_flag,u4_tab = LIB_WK2124UartRecvQuery("UART4")
if u4_flag == 1 then
print("Uart4 Recv:")
--将从uart4串口收到的数据逐个打印出来
for i, v in ipairs(u4_tab) do
print(i, v)
end
--并返回已收到数据的应答信息
LIB_WK2124UartSend("UART4", LIB_StrToTab("I got uart4 data!\r\n"))
end
end
如果感兴趣,上面代码中出现的LIB开头的库函数可以在 API文档 中通过Ctrl+F查询。

五、代码实验效果

在电脑端同时打开四个串口调试助手软件,这个四个软件通过《USB转TTL模块》和WK2124的4个UART串口连接,连接完成以后即可在电脑上模拟和WK2124的4个UART串口进行数据的收发通信。

实物连接图如下:

result2

电脑端4个串口调试助手软件的截图如下:

我们可以看到每当向WK2124的某个UART串口发送01 02 03 04 05 06数据时,都能收到"I got uartn data"的消息。

result0

同时在Core开发板所连接的调试助手上,我们可以看到每个UART收到的具体数据:

result1