🔍 搜索帖子 / 资讯 / 芯片型号…
论坛/全国大学生集成电路创新创业大赛/通过UART1对指纹识别模块的控制
通过UART1对指纹识别模块的控制
全国大学生集成电路创新创业大赛 作者 riscv菜鸟 发布于 2021-06-10 11:19(1947 天前) 5214 浏览

大家好,我们团队的名字是灵芯,参赛编号是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
暂无回复,抢个沙发~
💡 请 登录 后参与讨论(微信扫码即登录/注册)