It should be around 720kHz using the SDK. 1MHz should be the max possible we're trying to provide register access to do that.
ASSI,i think it must be higher than 1mhz.
Atmel's arm926ej-s SoC or sam7 Soc has a io toggle speed at about 1/4~1/5 of the system clock.
So I think that fx3's io toggle speed is the same(at about 25mhz).But now i has not the chip,can't test it.
anyone has the real result?
write "00101010101010..." to the pin
I have tested it with a fx3 DVK and measured GPIO toggle speed with an oscilloscope. The max. toggle freq is about 270 kHz write a sequence of 0101010 to a GPIO Pin via SDK. If you want to simulate a SPI-Readaccess then this toggle frequence is only 210 kHz because of the needed GPIO-Reads. Perhaps there is a faster way to implement and someone has a good idea.
Sadly all my tests reveal max toggle speed is 1MHz for a single GPIO pin,... if you play with more then one GPIO then you must divide this frequency by number of changed pins, which sucks. there is no possible paralell output for GPIOs ... on the other hand fo GPIO inputs you can read GPIO (00-31, and 32-59) pins at once so whole 60 inputs at 2 steps (500KHz)
also i tested if MCU thread sheduling mess things up ... it seems that not (you achieve the same speed with or without threads usage)
change of GPIO clock settings do not change things .... i assume its only for GPIO contorler interface and have absolutely nothing with GPIO in/out operation speed
there is only one possible speed up and that is: direct register access which i donot know how to achieve on this platform (there is no source code ,... and SDK is only in object files so no diging there too, and i am used to use asm for MCUs, and also more familiar with Atmel then Cypress), but anyway the output registers are not groupped together as input registers so the division of max frequency stands there. ... speeding up with this aproach would be posible only if there is some kind of bug in SDK API
P.S. I am using CYUSB3014 (DVK board CYUSB3KIT-001)
ARM clock `200MHz
GPIO clock `200MHz .... as i mentioned before this has nothing to dowith input/output speed
You are right. Please let me know if you want to do the register level access to improve the speed by a little bit.
FX3 GPIO Registers are described in the section 9.2 of Programmers manual of FX3.
did you already have seen the SPI GPIO example in the instatlation folder <FX3 SDK\firmware\serialif_examples\cyfxusbspigpiomode> ? There is a define which uses direct register success or API success.