USB论坛
直播中

张明

8年用户 1090经验值
私信 关注
[问答]

CYUSB3014-BZXC在 slave fifo interface 32 bit data bus模式下,GPIO50~GPIO57是不是只能用作UART与I2S不能作为GPIO?

您好,请问CYUSB3014-BZXC芯片在 slave fifo interface 32 bit data bus 模式下,GPIO50~GPIO57是不是只能用作UART与I2S不能作为GPIO来使用。

回帖(1)

h1654155275.5669

2025-6-6 17:28:34

是的,您的理解基本正确。在 CYUSB3014-BZXC 芯片配置为 32-bit Slave FIFO 模式时,GPIO50 到 GPIO57 无法作为通用的、用户可控的 GPIO 来使用。


原因如下:



  1. 资源复用: CYUSB3014 拥有大量的多功能引脚(Multi-function pins)。为了实现强大的接口(如 32 位宽的同步 Slave FIFO),需要使用很多引脚作为数据线和控制信号线。

  2. 32-bit Slave FIFO 模式的需求:

    • 32 位数据总线 (DATA[31:0]): 这本身就占用了 GPIO31-GPIO62 中的 32 个引脚。具体分配根据您的板级设计(Schematics)决定,但通常会占用从 GPIO31 到 GPIO62 范围内的 32 个连续引脚。

    • Slave FIFO 控制信号: 除了数据线,还需要用于 FIFO 管理的控制信号,例如:

      • FLAGA, FLAGB, FLAGC, FLAGD (FIFO 状态/可编程标志)

      • SLCS# (Slave FIFO Chip Select - 通常低有效)

      • SLOE# (Slave FIFO Output Enable - 通常低有效)

      • SLRD# (Slave FIFO Read Strobe - 通常低有效)

      • SLWR# (Slave FIFO Write Strobe - 通常低有效)

      • PKTEND# (Packet End - 通常低有效)

      • FIFOADR[1:0] (FIFO Address Select - 选择端点 FIFO)

      • IFCLK (Interface Clock - 输入或输出,时钟源)


    • 地址线: 在 32 位模式下,地址信号通常由 FIFOADR[1:0] 提供。这些信号需要专门的引脚。


  3. GPIO50-GPIO57 的“角色”: 在配置为 32-bit Slave FIFO 时,芯片固件和硬件设计优先将这些特定引脚(GPIO50-GPIO57)分配给以下两类功能:

    • 专用的 Slave FIFO 控制信号或地址信号: 这是最可能且最常见的情况。根据具体的配置和固件设置,这些引脚中的一个或多个会被硬性分配为上述控制信号(如 SLRD#, SLWR#, PKTEND#, FIFOADR[1:0], 额外的 FLAGx 等)。作为控制信号,它们是输入或输出信号,但其行为由 Slave FIFO 接口逻辑严格定义,用户不能像通用 GPIO 那样自由控制其电平。

    • 替代功能 (UART/I2S): 如果某个特定的控制信号(由上述列表)在当前设计中没有被用到,或者固件提供了选项,那么相应引脚的复用器 可能 可以被配置为 UART (TX, RX, RTS, CTS) 或 I2S (SCK, WS, SD, MCLK) 功能。关键点在于:

      • 它们不是“通用”: 即使配置为 UART 或 I2S,这些引脚的功能也被锁定为特定的通信接口,不再能作为通用的、bit-bang 可控的 I/O 引脚。

      • 优先级: Slave FIFO 控制信号的需求具有最高优先级。只有当明确不需要某个信号且固件允许时,才能配置为 UART 或 I2S。

      • 受固件/配置约束: 能否配置为 UART 或 I2S 最终取决于您加载的固件(通常由 EZ-USB Suite 中的 GPIF II Designer 导出)和您的电路板设计。




总结与结论:



  • 在 32-bit Slave FIFO 模式下,GPIO50 到 GPIO57 确实不能用作通用、用户可控的 GPIO。

  • 它们的功能被固定为:

    1. 主要的、预设的角色: 特定且必需的 Slave FIFO 控制或地址信号 (SLRD#, SLWR#, PKTEND#, FIFOADRx, FLAGx 等)。

    2. 次要的、可选的(非通用的)角色: 如果某个 Slave FIFO 信号未使用 并且 固件支持,或许 可以配置为 UART 或 I2S 功能。但这仍然是 特定的通信功能,而非通用的输入/输出引脚。


  • 核心原因: 32 位 Slave FIFO 模式需要大量的专用引脚来支持其高速数据传输和复杂的控制机制,使得这些 GPIO 资源无法再用于纯粹的通用目的 I/O。


如何确认?



  1. 查看固件源代码 / GPIF II Designer Configuration: 在您为 32 位 Slave FIFO 生成的固件工程(GPIF II Designer File .cyfx.c 文件)中,查找 CyFxGpioSimpleConfig_t 或类似的引脚配置结构,以及用于配置 PORT..._CFG 寄存器或 UART/I2S 模块的代码。这将明确显示固件初始化时将这些引脚设置为什么功能。

  2. 查阅开发板的原理图 (Schematics): 看硬件工程师将这些引脚连接到哪里(外部 FPGA/Processor 的控制信号?UART/I2S 器件?还是悬空?)。

  3. 查阅 CYUSB3014 Technical Reference Manual (TRM): 找到详细的 PORT 寄存器描述和功能复用表格,但这通常需要结合以上两点来理解具体配置。


简言之,对于 32位模式下的Slave FIFO应用,GPIO50~57已被预定义为接口的核心控制信号。如果您正在设计外围电路却需要额外GPIO引脚,可能需要调整FPGA或处理器的连接方案,或重新评估是否必须使用32位接口模式(16位模式会释放更多GPIO资源)。

举报

更多回帖

发帖
×
20
完善资料,
赚取积分