大家好,我们是华芯极客队,报名编号是CICC3877,本次与各位老师和同学一起交流蜂鸟处理器核的串口调试。
蜂鸟E203 MCU SoC中的GPIO有两种控制模式:
第一种是软件控制模式,该模式下每个I/O均可直接受软件变成的可配置寄存器控制。第二种模式为IOF模式,该模式下每个I/O均可直接受硬件接口信号控制。
DDR200T提供了GPIOA和GPIOB两组32个I/O通用输入输出接口,其中GPIOA挂载有UART0和UART2两个串口外设,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串口的相关工作,若是理解不正确的地方请大家指正,共同学习,祝各参赛队取得理想的成绩。