RISC-V MCU中文社区

【分享】 【分享】串口外设使用分析

发表于 全国大学生集成电路创新创业大赛 2021-07-25 09:02:41
0
2243
0

大家好,我们是华芯极客队,报名编号是CICC3877,本次与各位老师和同学一起交流蜂鸟处理器核的串口调试。

蜂鸟E203 MCU SoC中的GPIO有两种控制模式:

第一种是软件控制模式,该模式下每个I/O均可直接受软件变成的可配置寄存器控制。第二种模式为IOF模式,该模式下每个I/O均可直接受硬件接口信号控制。

DDR200T提供了GPIOAGPIOB两组32I/O通用输入输出接口,其中GPIOA挂载有UART0UART2两个串口外设,GPIOB挂载了UART1一个串口外设。GPIOA这一组的两个串口分别用于usb串口调试和lora模块信息收发。GPIOB为用户预留了可扩展的串口,通过将UART1所在GPIO端口设置为IOF模式,GPIOB的两个引脚将会工作在串口模式。通过修改iof寄存器配置来改变相应引脚功能,即将该寄存器设为1,这两个引脚将会工作在串口模式下。通过分析工程约束文件nuclei-master.xdc电路原理图可以正确连接开发板上GPIOB的串口。

        串口操作相关函数如下所示:

int32_t uart_init(UART_TypeDef *uart, uint32_t baudrate);

int32_t uart_config_stopbit(UART_TypeDef *uart, UART_STOP_BIT stopbit);

int32_t uart_enable_paritybit(UART_TypeDef *uart);

int32_t uart_disable_paritybit(UART_TypeDef *uart);

int32_t uart_set_parity(UART_TypeDef *uart, UART_PARITY_BIT paritybit);

int32_t uart_write(UART_TypeDef *uart, uint8_t val);

uint8_t uart_read(UART_TypeDef *uart);

int32_t uart_enable_tx_empt_int(UART_TypeDef *uart);

int32_t uart_disable_tx_empt_int(UART_TypeDef *uart);

int32_t uart_set_rx_th(UART_TypeDef *uart, uint8_t th);

int32_t uart_enable_rx_th_int(UART_TypeDef *uart);

int32_t uart_disable_rx_th_int(UART_TypeDef *uart);

int32_t uart_enable_rx_err_int(UART_TypeDef *uart);

int32_t uart_disable_rx_err_int(UART_TypeDef *uart);

int32_t uart_get_int_status(UART_TypeDef *uart);

int32_t uart_get_status(UART_TypeDef *uart);

       一般读取串口信息首先完成串口配置:

gpio_iof_config(GPIOB, uart_mask_tx|uart_mask_rx);开启对应引脚IOF功能

uart_init(UART1,9600);设置该端口波特率为9600

       第二步读取并打印串口接收的信息:

printf("%c",uart_read(UART1));

       在硬件连接正确的情况下,按照上述的两步操作可以正确的操作蜂鸟处理器SoC的串口。

如下图所示,通过串口打印加解密结果,可见串口是调试软件的重要手段。


小结

本文梳理了调试蜂鸟SoC串口的相关工作,若是理解不正确的地方请大家指正,共同学习,祝各参赛队取得理想的成绩。

喜欢0
用户评论
ZXL

ZXL 实名认证

懒的都不写签名

积分
问答
粉丝
关注
  • RV-STAR 开发板
  • RISC-V处理器设计系列课程
  • 培养RISC-V大学土壤 共建RISC-V教育生态
RV-STAR 开发板