bboyer
345

EZ-USB FX3固件应用程序UART功能

概要

串口功能在硬件开发中, 主要用在程序开发调试上, 方便开发人员寻找代码中的BUG以及学习设备的运行机制.我们来看看fx3设备的串口如何使用.

编写代码流程

  1. 开启uart的引脚(这里是在GPIO矩阵中配置)
  2. UART功能初始化
  3. 配置串口信息
  4. 初始化UART Debug功能

这四个步骤, 我们得按照顺序来编写. 接下来我们稍微详细了解每一个步骤的功能.

开启UART引脚

这个我们需要在设备初始化后, 在配置矩阵信息中设置io_cfg.useUart = CyTrue, 然后在调用CyU3PDeviceConfigureIOMatrix(&io_cfg);.

io_cfg.gpioSimpleEn 为两个元素的数组. 这个配置也需要配置, 设置为0都可以.不配置, UART不起效果.

UART功能初始化

在这个步骤中, 我们只需要调用CyU3PUartInit()就可以了, 这个是一个固定函数. 如果要了解这个函数做了什么, 需要获取这个函数的源代码.

配置串口信息

在配置串口信息, 我们使用的结构体为CyU3PUartConfig_t, 这个结构体的字段:

struct CyU3PUartConfig_t {
    CyBool_t             txEnable;          
    CyBool_t             rxEnable;          
    CyBool_t             flowCtrl;          
    CyBool_t             isDma;              
    CyU3PUartBaudrate_t      baudRate;             
    CyU3PUartStopBit_t       stopBit;              
    CyU3PUartParity_t       parity;               
};

这个结构体,基本是串口的配置信息, 设置好配置信息后,我们需要调用配置函数 CyU3PUartSetConfig(&uartConfig, NULL); , 来生效.

这里我们重点关注一下isDma

uartConfig.isDma为ture时

这时候串口使用的是DMA模式, 我们可以通过 CyU3PDebugPrint, CyU3PDebugLog 等相关函数来操作串口功能. 读取串口数据是无法使用的(目前我没找到读取的方式).

uartConfig.isDma为false时

这时候, 我们使用的是基本的方式. 如果fx3设备需要读取串口发过来的信息,还得将rxEnable设置为true. 发送给其他设备使用CyU3PUartTransmitBytes, 读取数据使用CyU3PUartReceiveBytes.

初始化UART Debug功能

这个功能也是固定的, 只需要调用CyU3PDebugInit(CY_U3P_LPP_SOCKET_UART_CONS, 8);. 第一个参数为串口的SOCKET ID, 第二个参数为输出日志信息的优先级. 要了解SOCKET ID可以查看枚举类型CyU3PDmaSocketId_t

总结

总的来说, 这个串口的配置使用, 还是蛮容易入手. 主要是了解配置信息和基本的函数功能. 详细的功能配置, 就得花点时间去查看和测试了.

cypress usb3.0 串口 uart fx3
发布于: 2022年6月14日