工具与软件:
您好!
我使用mcu_plus_sdk_am64x_09_01_00_41
并编写了代码来测量 GPIO 写入和读取次数。
R5F 内核时钟设置为800 MHz、GPIO 外设时钟(GPIO0_VBUS_FICLK) 设置为125 MHz。
以下是刷写到 R5F 内核的代码。 在示波器上观察到波形:
gpioBaseAddr = (uint32_t) AddrTranslateP_getLocalAddr(GPIO_LED_BASE_ADDR); pinNum = GPIO_LED_PIN; GPIO_setDirMode(gpioBaseAddr, pinNum, GPIO_LED_DIR); gpioBaseAddr1 = (uint32_t) AddrTranslateP_getLocalAddr(OUTPUT_GPIO_BASE_ADDR); pinNum1 = OUTPUT_GPIO_PIN; GPIO_setDirMode(gpioBaseAddr1, pinNum1, OUTPUT_GPIO_DIR); uint32_t regIndex1, regVal1; volatile CSL_GpioRegs* hGpio = (volatile CSL_GpioRegs*)((uintptr_t) gpioBaseAddr1); regIndex1 = GPIO_GET_REG_INDEX(pinNum1); regVal1 = GPIO_GET_BIT_MASK(pinNum1); uint32_t regIndex, regVal; volatile CSL_GpioRegs* hGpio1 = (volatile CSL_GpioRegs*)((uintptr_t) gpioBaseAddr); regIndex = GPIO_GET_REG_INDEX(pinNum); regVal = GPIO_GET_BIT_MASK(pinNum); while(1) { CSL_REG32_WR(&hGpio->BANK_REGISTERS[regIndex1].SET_DATA, regVal1); CSL_REG32_WR(&hGpio->BANK_REGISTERS[regIndex1].CLR_DATA, regVal1); CSL_FEXTR(hGpio1->BANK_REGISTERS[regIndex].IN_DATA, regVal, regVal); CSL_REG32_WR(&hGpio->BANK_REGISTERS[regIndex1].SET_DATA, regVal1); CSL_REG32_WR(&hGpio->BANK_REGISTERS[regIndex1].CLR_DATA, regVal1); }
从波形中、我们观察到了以下时序:
- GPIO 高电平时间:~210ns
- GPIO 低电平时间:~210ns
- GPIO 读取时间:~210ns
您能否确认这些时间是否正确?
此外、我想知道是否可以将 GPIO 外设时钟频率增加到超过125 MHz 以实现低于210ns 的时间。 如果可以提高外设时钟频率、更改该频率的步骤是什么?
我们是否能够将 PLL0_hsdiv0值增加至超过500MHz 的值? 允许的 PLL0_hsdiv0的最大值是多少?
谢谢!
Pratibha