这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » 嵌入式开发 » MCU » 【GD32VF103之RISC-V开发贴连载】③.串口功能检测

共14条 1/2 1 2 跳转至

【GD32VF103之RISC-V开发贴连载】③.串口功能检测

专家
2020-05-14 15:42:55     打赏

    大家好!根据前段时间老师的讲解,今天来分享一下基于串口的基本功能检测。首先我们需要了解一下USART的常用理论知识。通用同步异步收发器 (USART)是用于串行数据交换提供接口,数据帧可以通过全双工或半双工,同步或异步的方式进行传输。USART提供了可编程的波特率发生器,能对系统时钟进行分频产生USART发送器和接收器所需的特定频率。USART支持DMA功能,用以实现高速率的数据通信。

   USART的重要引脚描述如下:

USART重要引脚描述.png      USART模块内部框图如下:

USART模块内部框图.png     关于USART的发送器与接收器、同步通讯时序波形这里就不再赘述。demo工程中也提供了封装好的库函数,至于USART中的状态寄存器、数据寄存器、波特率寄存器、控制寄存器、保护时间和预分频器寄存器,在代码中也有相关的英文注释,这里也不再做过多讲解。关于USART的库函数汇总如下:

USART库函数.png

     按照上回LED灯的简单操作,重新创建新的C工程,然后在主函数中,敲入代码

int main(void)

{

uint data = 'a';

uint i;

gd_eval_led_init(LED1);

gd_eval_com_init(EVAL_COM0);

while(1)

{

gd_eval_led_on(LED1);

for(i=0;i<26;i++)

{

usart_data_transmit(EVAL_COM0,data);

while(usart_flag_get(EVAL_COM0,USART_FLAG_TC)==RESET);

data++;

usart_data_transmit(USART0,0X0A);

while(usart_flag_get(USART0,USART_FLAG_TC)==RESET);

usart_data_transmit(USART0,0X0D);

while(usart_flag_get(USART0,USART_FLAG_TC)==RESET);

delay_1ms(300);

}

gd_eval_led_off(LED1);

delay_1ms(500);

data = 'a';

}

}

    然后在NucleiStudio_IDE中点击编译、调试即下载到开发板中。编译通过,无报错,无警告。

编译通过.png    将开发板的串口插针用跳线帽连接,并使用mini USB数据线与PC端连接,接线如下图所示:

连接.jpg      此时打开电脑的设备管理器,如果已经安装了CH340的USB转串口的驱动,则会显示相对应的串口号,如果没有则显示黄色的叹号,需要安装CH340的驱动。我的串口号显示的是10,因此在SecureCRT软件中打开串口10。

设备串口号.png

     SecureCRT中设置如下参数:

设置串口号.png

     然后点击连接,则会打印如下信息

串口打印.png     同样的办法,在main函数中,修改部分代码,实现通过串口工具发送数据给GD32VF103,然后GD32VF103将数据返回给PC端。

int main(void)

{

uint i;

uint data;

gd_eval_led_init(LED1);

gd_eval_com_init(EVAL_COM0);

while(1)

{

gd_eval_led_on(LED1);

if(usart_flag_get(USART0,USART_FLAG_RBNE)!= RESET)

{

data = usart_data_receive(USART0);

usart_data_transmit(USART0,data);

while(usart_flag_get(USART0,USART_FLAG_TC)==RESET);

usart_data_transmit(USART0,0X0A);

while(usart_flag_get(USART0,USART_FLAG_TC)==RESET);

usart_data_transmit(USART0,0X0D);

while(usart_flag_get(USART0,USART_FLAG_TC)==RESET);

}

gd_eval_led_off(LED1);

delay_1ms(500);

}

}

   然后开发板重新上电,代码编译ok,运行下载到开发板中,打开SSCOM V5.13.1串口调试助手,这里说明一下,如使用SecureCRT软件则现象不是很明显,因为它的发送窗口与输出窗口在同一界面下,因此建议采用SSCOM工具,而且不支持十六进制显示的低版本效果也不是很好,这里推荐V5.13.1版本。通过键盘在发送窗口输入相应字符,则会收到GD32VF103返回的相同字符,并加上换行回车字符。

串口信息.png    提供ASCII码对照表如下:

ASCII表.jpg    此次分享就到这啦,根据官方提供的参考示例,关于串口的操作还有DMA应用,串口中断响应的使用。总而言之,串口是比较常见的通信接口方式,根据其通信协议,同步、异步的特性,熟悉相关寄存器的设置是非常必要的。后期精彩内容,拭目以待。持续更新,尽请期待!




关键词: GD32VF103          RISC-V          USART    

高工
2020-05-14 17:09:20     打赏
2楼


工程师
2020-05-14 17:54:37     打赏
3楼

不错


工程师
2020-05-14 18:09:12     打赏
4楼

点个赞


工程师
2020-05-14 18:23:28     打赏
5楼

谢谢分享


工程师
2020-05-14 18:33:15     打赏
6楼

感谢楼主分享


工程师
2020-05-14 18:53:34     打赏
7楼

点个赞


工程师
2020-05-14 23:16:05     打赏
8楼

感谢分享


助工
2020-05-16 20:46:18     打赏
9楼

代码写的很不错


专家
2020-05-17 09:57:26     打赏
10楼

继续加油


共14条 1/2 1 2 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]