RISC-V MCU中文社区

【分享】 通过UART1对指纹识别模块的控制

发表于 全国大学生集成电路创新创业大赛 2021-06-10 11:19:04
0
2589
0

大家好,我们团队的名字是灵芯,参赛编号是CICC2959  今天主要介绍一下我们团队怎么通过UART1对指纹识别模块的控制。由于E203 的UART通信资源有限(UART0、UART1、UART2),在mcu200t FPGA开发板上,uart0已用于JTAG调试端口,uart2是用于Usb转uart接口的,uart1是接到GPIOB接口上的,可自由开发使用,我们组的指纹识别模块使用uart通信,故选择uart1。

UART1具体配置及接口可参考https://doc.nucleisys.com/hbirdv2/soc_peripherals/ips.html#gpio,图片如下:


具体实现过程:

首先,初始化UART1接口模块,具体实现函数调用库里面的:

注意,uart1对应FPGA接口的GPIOB接口,对应的地址由IOF模式下IOF_UART_MASK配置。

此外,注意将uart1进行宏定义,否则会出现问题,这里将其宏定义为uart_id1。波特率设置为115200。

uart通信发送函数:

int32_t uart_write(UART_TypeDef *uart, uint8_t val)

{

    if (__RARELY(uart == NULL)) {

        return -1;

    }

#ifndef SIMULATION_SPIKE

#ifndef SIMULATION_XLSPIKE

    while ((uart->LSR & 0x20) == 0);

#endif

    uart->THR = val;

#else

    extern void htif_putc(char ch);

    htif_putc(val);

#endif

    return 0;

}

uart通信接收函数:  

uint8_t uart_read(UART_TypeDef *uart)

{

    uint32_t reg;

    if (__RARELY(uart == NULL)) {

        return -1;

    }

    while ((uart->LSR & 0x1) == 0);

    reg = uart->RBR;

    return (uint8_t)(reg & 0xFF);

}

具体可参考Hbird sdk源码


喜欢0
用户评论
riscv菜鸟

riscv菜鸟 实名认证

懒的都不写签名

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