打印
[应用方案]

【NuMaker-M471测评】串行通讯功能测试

[复制链接]
6658|16
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
串行通讯是开发板的重要功能之一,这不仅是因为在调试中需借助它来输出调试信息,而且在应用中也需要它将采集的数据发送到其它的设备上进行数据的共享。
M471开发板共可以提供6个串口,即UART0~UART5。
这里重要对3项内容加以检测,即收发检测、发送字节检测及2串行通讯检测。
1.收发检测
在M471开发板上,UART0是供调试来使用的,为便于使用可将PB13 (UART0_TXD)和
PB12 (UART0_RXD) 交叉与USB转TTL转换模块来连接。
收发检测的主程序和相关函数为:
int32_t main(void)
{
/* Unlock protected registers */
SYS_UnlockReg();
/* Init System, peripheral clock and multi-function I/O */
SYS_Init();
/* Lock protected registers */
SYS_LockReg();
/* Init UART0 for printf and test */
UART0_Init();
printf("\n\nCPU [url=home.php?mod=space&uid=72445]@[/url] %d Hz\n", SystemCoreClock);
printf("\nUART Sample Program\n");
/* UART sample function */
UART_FunctionTest();
while(1);
}

void UART_FunctionTest()
{
printf("+-----------------------------------------------------------+\n");
printf("|  UART Function Test                  |\n");
printf("+-----------------------------------------------------------+\n");
printf("|  Description :                                  |\n");
printf("|    The sample code will print input char on terminal  |\n");
printf("|    Please enter any to start     (Press '0' to exit)    |\n");
printf("+-----------------------------------------------------------+\n");
/*
Using a RS232 cable to connect UART0 and PC.
UART0 is set to debug port. UART0 is enable RDA and RLS interrupt.
When inputting char to terminal screen, RDA interrupt will happen and
UART0 will print the received char on screen.
*/
/* Enable UART RDA and THRE interrupt */
NVIC_EnableIRQ(UART0_IRQn);
UART_EnableInt(UART0, (UART_INTEN_RDAIEN_Msk | UART_INTEN_THREIEN_Msk));
while(g_bWait);
/* Disable UART RDA and THRE interrupt */
UART_DisableInt(UART0, (UART_INTEN_RDAIEN_Msk | UART_INTEN_THREIEN_Msk));
g_bWait = TRUE;
printf("\nUART Sample Demo End.\n");
}

经编译下载,其检测效果如图1所示。在输入字符“A”时,可接收到反馈的字符“A”,收发一致,说明功能正确。
在方式字符“0”的情况下,则退出收发检测,见图2所示。
                              
图1 检测结果
图2 退出检测
2.发送字节测试
在串行通讯中,发送字节数据是十分普遍的,单纯靠收发字符是无法解决的。
为便于检测,可直接在前面的程序上添加语句来测试。
修改后的主程序为:
int32_t main(void)
{
SYS_UnlockReg();
SYS_Init();
SYS_LockReg();
UART0_Init();
printf("\n\nCPU @ %d Hz\n", SystemCoreClock);
printf("\nUART Sample Program\n");
UART_Write(UART0, g_u8SendData, 8);
UART_FunctionTest();
while(1);
}

经编译下载,其运行结果如图3所示,这说明使用函数UART_Write()是能够进行字节发送的。
图3 发送字节
3.双串口通信
在例程中有一个验证双串口通信的例程,就是将UART1的数据发送到UART2,或是反向UART2的数据发送到UART1。在测试时,需要将PA2和PB0连接起来。
经实际测试,其结果如图4所示,无论是哪个方向传送其结果均为失败,该结果不免一点遗憾。
图4 双串口通信

使用特权

评论回复
沙发
muelfox| | 2021-8-10 10:11 | 只看该作者
这个串口助手不错, 不过没关串口把USB串口拔了的话会弹窗关不掉

使用特权

评论回复
板凳
幸福小强| | 2021-8-10 22:08 | 只看该作者
串口比较好,直接可以用提供的重定向文件使用。

使用特权

评论回复
地板
jinglixixi|  楼主 | 2021-8-11 00:09 | 只看该作者
muelfox 发表于 2021-8-10 10:11
这个串口助手不错, 不过没关串口把USB串口拔了的话会弹窗关不掉

是有这样的缺陷

使用特权

评论回复
5
sadicy| | 2021-8-14 11:23 | 只看该作者

好像总是多出点东西,正在检查

使用特权

评论回复
6
jinglixixi|  楼主 | 2021-8-14 16:44 | 只看该作者
sadicy 发表于 2021-8-14 11:23
好像总是多出点东西,正在检查

是否加了回车导致的

使用特权

评论回复
7
sadicy| | 2021-8-18 16:32 | 只看该作者
jinglixixi 发表于 2021-8-14 16:44
是否加了回车导致的

用的官网的例程,
不过
串口用的CRT

这几天,没玩这个,来活了,干别的呢

使用特权

评论回复
8
额企鹅企鹅| | 2021-9-28 15:46 | 只看该作者
请问我使用M483做同样的串口发送功能测试,发送字符没有响应是为什么?并且我在中断里加入printf函数,发现只要ENABLE了中断,就一直处于中断内。

使用特权

评论回复
9
额企鹅企鹅| | 2021-9-28 15:47 | 只看该作者
请问您的中断函数是怎样写的?跟例程一样吗

使用特权

评论回复
10
jinglixixi|  楼主 | 2021-9-28 15:55 | 只看该作者
额企鹅企鹅 发表于 2021-9-28 15:47
请问您的中断函数是怎样写的?跟例程一样吗

中断函数未修改

使用特权

评论回复
11
jinglixixi|  楼主 | 2021-9-28 15:56 | 只看该作者
额企鹅企鹅 发表于 2021-9-28 15:46
请问我使用M483做同样的串口发送功能测试,发送字符没有响应是为什么?并且我在中断里加入printf函数,发现 ...

M483没有板子也就没法试了

使用特权

评论回复
12
额企鹅企鹅| | 2021-9-28 16:03 | 只看该作者
可以+个企鹅详细交谈一下吗,806844515
我看与480系列倒是类似的代码流程,因为我的板子没有用UART0于是,我将例程里的UART0改为UART1发现出现相同情况:并没有使用串口发送数据,但是却出现一直不断地进入中断操作,

使用特权

评论回复
13
额企鹅企鹅| | 2021-9-28 16:29 | 只看该作者
它退出中断地话难道只能靠g_bwait这个标志反馈来关闭中断使能吗?

使用特权

评论回复
14
jinglixixi|  楼主 | 2021-9-28 18:13 | 只看该作者
额企鹅企鹅 发表于 2021-9-28 16:03
可以+个企鹅详细交谈一下吗,806844515
我看与480系列倒是类似的代码流程,因为我的板子没有用UART0于是, ...

暂时忙其他事呢,有时间再说吧。

使用特权

评论回复
15
额企鹅企鹅| | 2021-9-29 10:42 | 只看该作者
jinglixixi 发表于 2021-9-28 18:13
暂时忙其他事呢,有时间再说吧。

好的 打扰了

使用特权

评论回复
16
jinglixixi|  楼主 | 2021-9-29 10:55 | 只看该作者

哪里,正忙着参赛作品时间紧呀!

使用特权

评论回复
17
huahuagg| | 2023-9-27 19:56 | 只看该作者
串口很重要的一个。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

455

主题

2756

帖子

38

粉丝