USB superspeed peripherals Forum Discussions
Hello,
I want to read/write I2C EEPROM on the FX3 board with UsbI2cRegMode example firmware project.
But I couldn't understand the process.
Project readme file says,
" The device enumerates as a vendor specific USB device with only the control endpoint and provides a set of vendor commands to read/write the data on I2C EEPROM devices.".
That's all. There is no additional information how it can be realized.
When I look over "CyFxUSBSetupCB" callback function and "CyFxUsbI2cTransfer" function,
I can produce callback function's "setupdat0" and "setupdat1" parameters.
1. How can I generate vendor commands with "setupdat0" and "setupdat1"?
2. How can I send vendor commands within "USB Control Center"?
3. When I send a read command, how can I observe the data?
4. When I want to write to EEPROM, how can I send the EEPROM data?
I would appreciate, if someone help me.
Regards,
Ali
Reading the FX3API Guide for the APIs of the FX3 firmware libraries...several questions:
*. There's seem no high resolution timer, the OS timer is too "coarse" for many embedded applications, e.g. my application needs a 1ms timer as a "heart beating" timer...and it needs a "micro-second" level one-shot timer to arrange something after the occurrance of a certain external event. Of course, external hardware might help ....but is there any way to do that without other hardware? Understood that for FX3, there's an OS there, but is there any "Native Timer" device which can provide such services (ISR call back based) as other device driver.
*. Interrupt priority, FX3 device drivers (in libraries) handle all the ISR and call user installed callback, there seem no way for user to customize the prority (FIQ or IRQ for a certain device).
*. Big code size, it seems that a very simple sample code uses ~128KB ( ~100KB for release version, there're lots of library codes included) code space, so it needs 2x 128KByte eeproms (or 3x 64KBytes eeproms) in almost all eeprom based devices, is there any considertaion that a third party "high efficiency" compiler/linker (e.g. from Keil) can be used (and the libraries have to be re-built)?
Thanks!
Show LessHello,
i try to run the cypress examples, but i get a java.io.IOException ?
has someone a ideer whats wrong here.
Cannot run program "C:\Program Files\Cypress\EZ-USB FX3 SDK\1.0\firmware\serialif_examples\cyfxgpioapp\Debug\GpioApp.elf": Launching failed
java.io.IOException: Cannot run program "C:\Program Files\Cypress\EZ-USB FX3 SDK\1.0\firmware\serialif_examples\cyfxgpioapp\Debug\GpioApp.elf": Launching failed
at org.eclipse.cdt.utils.spawner.Spawner.exec(Spawner.java:251)
at org.eclipse.cdt.utils.spawner.Spawner.<init>(Spawner.java:59)
at org.eclipse.cdt.utils.spawner.ProcessFactory.exec(ProcessFactory.java:89)
at org.eclipse.cdt.launch.internal.LocalCDILaunchDelegate.exec(LocalCDILaunchDelegate.java:380)
at org.eclipse.cdt.launch.internal.LocalCDILaunchDelegate.runLocalApplication(LocalCDILaunchDelegate.java:95)
at org.eclipse.cdt.launch.internal.LocalCDILaunchDelegate.launch(LocalCDILaunchDelegate.java:69)
at org.eclipse.debug.internal.core.LaunchConfiguration.launch(LaunchConfiguration.java:853)
at org.eclipse.debug.internal.core.LaunchConfiguration.launch(LaunchConfiguration.java:703)
at org.eclipse.debug.internal.ui.DebugUIPlugin.buildAndLaunch(DebugUIPlugin.java:866)
at org.eclipse.debug.internal.ui.DebugUIPlugin$8.run(DebugUIPlugin.java:1069)
at org.eclipse.core.internal.jobs.Worker.run(Worker.java:55)
another failture is, if i like to add debug configurations
eclipse: Run->Debug Configurations
i click on GDB Hardware Debugging and add new lunch configuration.
i get the following error: Problems occurred when invoking code from plug-in: "org.eclipse.jface".
java.lang.NoSuchMethodError: org.eclipse.cdt.debug.gdbjtag.ui.GDBJtagDSFDebuggerTab.scheduleUpdateJob()V
at org.eclipse.cdt.debug.gdbjtag.ui.GDBJtagDSFDebuggerTab.access$1(GDBJtagDSFDebuggerTab.java:1)
at org.eclipse.cdt.debug.gdbjtag.ui.GDBJtagDSFDebuggerTab$2.modifyText(GDBJtagDSFDebuggerTab.java:165)
at org.eclipse.swt.widgets.TypedListener.handleEvent(TypedListener.java:167)
at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:84)
at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1003)
at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1027)
at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1008)
at org.eclipse.swt.widgets.Text.wmCommandChild(Text.java:2526)
at org.eclipse.swt.widgets.Control.WM_COMMAND(Control.java:4082)
at org.eclipse.swt.widgets.Control.windowProc(Control.java:3949)
at org.eclipse.swt.widgets.Display.windowProc(Display.java:4619)
at org.eclipse.swt.internal.win32.OS.CallWindowProcW(Native Method)
at org.eclipse.swt.internal.win32.OS.CallWindowProc(OS.java:2314)
at org.eclipse.swt.widgets.Text.callWindowProc(Text.java:255)
at org.eclipse.swt.widgets.Control.windowProc(Control.java:4036)
at org.eclipse.swt.widgets.Text.windowProc(Text.java:2170)
at org.eclipse.swt.widgets.Display.windowProc(Display.java:4619)
at org.eclipse.swt.internal.win32.OS.SetWindowTextW(Native Method)
at org.eclipse.swt.internal.win32.OS.SetWindowText(OS.java:3265)
at org.eclipse.swt.widgets.Text.setText(Text.java:1961)
at org.eclipse.cdt.debug.gdbjtag.ui.GDBJtagDSFDebuggerTab.initializeFrom(GDBJtagDSFDebuggerTab.java:369)
at org.eclipse.debug.internal.ui.launchConfigurations.LaunchConfigurationTabGroupWrapper.initializeFrom(LaunchConfigurationTabGroupWrapper.java:201)
at org.eclipse.debug.internal.ui.launchConfigurations.LaunchConfigurationTabGroupViewer.displayInstanceTabs(LaunchConfigurationTabGroupViewer.java:802)
at org.eclipse.debug.internal.ui.launchConfigurations.LaunchConfigurationTabGroupViewer$8.run(LaunchConfigurationTabGroupViewer.java:678)
at org.eclipse.swt.custom.BusyIndicator.showWhile(BusyIndicator.java:70)
at org.eclipse.debug.internal.ui.launchConfigurations.LaunchConfigurationTabGroupViewer.inputChanged(LaunchConfigurationTabGroupViewer.java:695)
at org.eclipse.debug.internal.ui.launchConfigurations.LaunchConfigurationTabGroupViewer.setInput0(LaunchConfigurationTabGroupViewer.java:657)
at org.eclipse.debug.internal.ui.launchConfigurations.LaunchConfigurationTabGroupViewer.setInput(LaunchConfigurationTabGroupViewer.java:633)
at org.eclipse.debug.internal.ui.launchConfigurations.LaunchConfigurationsDialog.handleLaunchConfigurationSelectionChanged(LaunchConfigurationsDialog.java:916)
at org.eclipse.debug.internal.ui.launchConfigurations.LaunchConfigurationsDialog$3.selectionChanged(LaunchConfigurationsDialog.java:544)
at org.eclipse.jface.viewers.StructuredViewer$3.run(StructuredViewer.java:864)
at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:42)
at org.eclipse.core.runtime.Platform.run(Platform.java:888)
at org.eclipse.ui.internal.JFaceUtil$1.run(JFaceUtil.java:48)
at org.eclipse.jface.util.SafeRunnable.run(SafeRunnable.java:175)
at org.eclipse.jface.viewers.StructuredViewer.firePostSelectionChanged(StructuredViewer.java:862)
at org.eclipse.jface.viewers.StructuredViewer.setSelection(StructuredViewer.java:1670)
at org.eclipse.jface.viewers.TreeViewer.setSelection(TreeViewer.java:1124)
at org.eclipse.debug.internal.ui.launchConfigurations.LaunchConfigurationView.handleConfigurationAdded(LaunchConfigurationView.java:282)
at org.eclipse.debug.internal.ui.launchConfigurations.LaunchConfigurationView.access$1(LaunchConfigurationView.java:272)
at org.eclipse.debug.internal.ui.launchConfigurations.LaunchConfigurationView$2.run(LaunchConfigurationView.java:261)
at org.eclipse.swt.widgets.RunnableLock.run(RunnableLock.java:35)
at org.eclipse.swt.widgets.Synchronizer.runAsyncMessages(Synchronizer.java:134)
at org.eclipse.swt.widgets.Display.runAsyncMessages(Display.java:3885)
at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3506)
at org.eclipse.jface.window.Window.runEventLoop(Window.java:825)
at org.eclipse.jface.window.Window.open(Window.java:801)
at org.eclipse.debug.internal.ui.launchConfigurations.LaunchConfigurationsDialog.open(LaunchConfigurationsDialog.java:1065)
at org.eclipse.debug.ui.DebugUITools$1.run(DebugUITools.java:398)
at org.eclipse.swt.custom.BusyIndicator.showWhile(BusyIndicator.java:70)
at org.eclipse.debug.ui.DebugUITools.openLaunchConfigurationDialogOnGroup(DebugUITools.java:406)
at org.eclipse.debug.ui.DebugUITools.openLaunchConfigurationDialogOnGroup(DebugUITools.java:340)
at org.eclipse.debug.ui.actions.OpenLaunchDialogAction.run(OpenLaunchDialogAction.java:81)
at org.eclipse.debug.ui.actions.OpenLaunchDialogAction.runWithEvent(OpenLaunchDialogAction.java:89)
at org.eclipse.ui.internal.PluginAction.runWithEvent(PluginAction.java:241)
at org.eclipse.ui.internal.WWinPluginAction.runWithEvent(WWinPluginAction.java:229)
at org.eclipse.jface.action.ActionContributionItem.handleWidgetSelection(ActionContributionItem.java:584)
at org.eclipse.jface.action.ActionContributionItem.access$2(ActionContributionItem.java:501)
at org.eclipse.jface.action.ActionContributionItem$5.handleEvent(ActionContributionItem.java:411)
at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:84)
at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1003)
at org.eclipse.swt.widgets.Display.runDeferredEvents(Display.java:3910)
at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3503)
at org.eclipse.ui.internal.Workbench.runEventLoop(Workbench.java:2405)
at org.eclipse.ui.internal.Workbench.runUI(Workbench.java:2369)
at org.eclipse.ui.internal.Workbench.access$4(Workbench.java:2221)
at org.eclipse.ui.internal.Workbench$5.run(Workbench.java:500)
at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:332)
at org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:493)
at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:149)
at org.eclipse.ui.internal.ide.application.IDEApplication.start(IDEApplication.java:113)
at org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:194)
at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:110)
at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:79)
at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:368)
at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:179)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:559)
at org.eclipse.equinox.launcher.Main.basicRun(Main.java:514)
at org.eclipse.equinox.launcher.Main.run(Main.java:1311)
can some one help me please ? i hope.
best regards
kai
Show LessFor an in transfer(cyusb -> host), I can notiy usb3014 the packet end by using PKTEND# signal;
But for an out transfer(host -> cyusb), can I know the packet end from GPIF side if I using dma to transfer data from UIB to GPIF? Is FIFO_EMPTY ok?
Show LessHi,
we have a FX3 board with a 16 bits interface to an image sensor.
For now, we're not able to correctly link the data from the device into FX3 via DMA transfers. There is no DMA notification nor transfer.
I guess the GPIF interface definition is not correct or maybe the socket connection. I use ones from the slave fifo sync interface adapted to our hardware. This doesn't work for now.
I've created a related case and it seems that it exists an UVC modified firmware with such an image sensor interface. I've downloaded latest available SDK but cannot find this firmware example.
So I wonder how to get an example (either slave fifo sync or UVC based) with data incoming from an external device, such as it seems to be defined in this "modified" UVC example.
Thank you for your help,
Best Regards.
Show LessI use a fx3 dvk to communicate with my fpga board in slave fifo sync mode. How can i clear the fifo before i begin an in transfer. i have tried "CyU3PUsbFlushEp" "CyU3PUsbResetEp" and other channel functions but fifo still connot be cleared. I referred to the fx2 program:FIFORESET = 0x06.So can someone tell me the right funtion or give me some suggestion.thanks.
Show LessI am using the GPIF interface in synchronous 32-bit mode, at 100 MHz, writing buffers into the FX3. I burst 1024 bytes at a time. I am using a modified version of the cyfxslfifosync example firmware.
Something is wrong with the overhead after a buffer is filled...
Let’s use 4 buffers, 2048 bytes each. I expect, when the firmware starts, that I can fill these buffers at nearly 400 megabytes per second. But no, there is significant overhead. I can fill up a buffer (2048 bytes) at 100 MHz, no problems. After a buffer is filled, the thread’s full-flag goes low for about 700 nanoseconds. This is much longer than I would expect.
Switching between manual or automatic DMA makes no difference.
Switching between full/empty flags or partial flags makes no difference. Switching between dedicated flags and current-thread flags makes no difference.
Changing buffer size or number of buffers makes no difference.
If I drop the PCLK frequency down to 50 MHz, the full-flag overhead changes to about 1100 ns. (Remember, it was 700 nanoseconds for the 100 Mhz clock). Clearly the PCLK frequency has most influence over the overhead time.
What is going on here?
Thank you.
Show LessWhen will the development board information be released?
I understand there are many more important customers in line for this development board, but with the development board information perhaps we smaller fish can get started up the learning curve.
Even if I can't purchase 5 chips now, I can get the design process going so when chips are available we will be further ahead. Better still, are there "solder samples" available in the same FBGA form factor so we can work out manufacturing issues now?
Anybody else in the same boat I am in? I know everyone is clamoring for these devices; just keep in mind where the true innovation happens, more often than not it isn't in the labs of the corporate giants but in the labs of the smaller innovators, in the Universities; anywhere innovation is enabled.
Throw us a bone why don't you?
David W.
Melbourne, Florida
Show Less