大家好,我们团队的名字是灵芯,参赛编号是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源码