EZ-USB FX3固件应用程序UART功能
概要
串口功能在硬件开发中, 主要用在程序开发调试上, 方便开发人员寻找代码中的BUG以及学习设备的运行机制.我们来看看fx3设备的串口如何使用.
编写代码流程
- 开启uart的引脚(这里是在GPIO矩阵中配置)
- UART功能初始化
- 配置串口信息
- 初始化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
总结
总的来说, 这个串口的配置使用, 还是蛮容易入手. 主要是了解配置信息和基本的函数功能. 详细的功能配置, 就得花点时间去查看和测试了.