FTDI Community

Please login or register.

Login with username, password and session length.
Advanced Search  


Welcome to the FTDI Community!

Please read our Welcome Note

Technical Support enquires
please contact the team
@ FTDI Support

New Bridgetek Community is now open

Please note that we have created the Bridgetek Community to discuss all Bridgetek products e.g. EVE, MCU.

Please follow this link and create a new user account to get started.

Bridgetek Community

Show Posts

You can view here all posts made by this member. Note that you can only see posts made in areas to which you currently have access.

Topics - Timbo

Pages: [1]
Discussion - Hardware / FT4232H using MPSSE for I2C on channel B
« on: January 24, 2019, 11:24:15 PM »
I am trying to modify the AN_411 example project to talk to some I2C power monitors using Channel B of FT4232H. In the app note, it briefly talks about how to modify the code to use Channel B instead.

Code: [Select]
7.1.4 Multiple Channels
Note that the functions Send_Data, Receive_Data and FlushBuffer are hard-coded to an FTDI device
instance opened at the beginning of the program as the code assumes the use of only one MPSSE
e.g. ftStatus = myFtdiDevice.Write(MPSSEbuffer, NumBytesToSend, ref NumBytesSent);
If the code requires multiple MPSSE channels (e.g. if implementing two I2C Masters on an FT2232H
device from the same application) then each channel would be opened with a different instance and this
example code would either require a Send_Data function per device or to pass in the device reference to
Open: ftStatus = myFtdiDeviceCHA.OpenByIndex(0);
ftStatus = myFtdiDeviceCHB.OpenByIndex(1);
Example of writing data to channel A:
ftStatus = myFtdiDeviceCHA.Write(MPSSEbuffer, NumBytesToSend, ref NumBytesSent);

So in the source code, I did a search and replace for "myFtdiDevice." and replaced with "myFtdiDeviceCHB." and changed the

Code: [Select]
ftStatus = myFtdiDevice.OpenByIndex(0);

Code: [Select]
ftStatus = myFtdiDeviceCHB.OpenByIndex(1);
However, when it runs, it crashes at the bottom line when it goes to enable MPSSE mode:

Code: [Select]
            ftStatus = FTDI.FT_STATUS.FT_OK;
            ftStatus |= myFtdiDeviceCHB.SetTimeouts(5000, 5000);
            ftStatus |= myFtdiDeviceCHB.SetLatency(16);
            ftStatus |= myFtdiDeviceCHB.SetFlowControl(FTDI.FT_FLOW_CONTROL.FT_FLOW_RTS_CTS, 0x00,0x00);
            ftStatus |= myFtdiDeviceCHB.SetBitMode(0x00, 0x00);
            ftStatus |= myFtdiDeviceCHB.SetBitMode(0x00, 0x02);         // MPSSE mode     

Code: [Select]
************** Exception Text **************
FTD2XX_NET.FTDI+FT_EXCEPTION: An unexpected error has occurred when trying to communicate with the FTDI device.
   at FTD2XX_NET.FTDI.ErrorHandler(FT_STATUS ftStatus, FT_ERROR ftErrorCondition)
   at FTD2XX_NET.FTDI.SetBitMode(Byte Mask, Byte BitMode)
   at SensorDemo.Form1.I2C_ConfigureMpsse() in D:\AN_411\Power_monitoring\AN_411_Source\FT4232H\MPSSE Sensor Demo.cs:line 815
   at SensorDemo.Form1.button1_Click(Object sender, EventArgs e) in D:\AN_411\Power_monitoring\AN_411_Source\FT4232H\MPSSE Sensor Demo.cs:line 232
   at System.Windows.Forms.Control.OnClick(EventArgs e)
   at System.Windows.Forms.Button.OnMouseUp(MouseEventArgs mevent)
   at System.Windows.Forms.Control.WmMouseUp(Message& m, MouseButtons button, Int32 clicks)
   at System.Windows.Forms.Control.WndProc(Message& m)
   at System.Windows.Forms.ButtonBase.WndProc(Message& m)
   at System.Windows.Forms.Button.WndProc(Message& m)
   at System.Windows.Forms.Control.ControlNativeWindow.WndProc(Message& m)
   at System.Windows.Forms.NativeWindow.Callback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)

************** Loaded Assemblies **************
    Assembly Version:
    Win32 Version: 2.0.50727.8937 (WinRelRS4.050727-8900)
    CodeBase: file:///C:/Windows/Microsoft.NET/Framework64/v2.0.50727/mscorlib.dll
    Assembly Version:
    Win32 Version:
    CodeBase: file:///D:/AN_411/Power_monitoring/AN_411_Source/FT4232H/bin/Release/SensorDemo.exe
    Assembly Version:
    Win32 Version: 2.0.50727.8922 (WinRelRS4.050727-8900)
    CodeBase: file:///C:/WINDOWS/assembly/GAC_MSIL/System.Windows.Forms/
    Assembly Version:
    Win32 Version: 2.0.50727.8938 (WinRelRS4.050727-8900)
    CodeBase: file:///C:/WINDOWS/assembly/GAC_MSIL/System/
    Assembly Version:
    Win32 Version: 2.0.50727.8922 (WinRelRS4.050727-8900)
    CodeBase: file:///C:/WINDOWS/assembly/GAC_MSIL/System.Drawing/
    Assembly Version:
    Win32 Version:
    CodeBase: file:///D:/AN_411/Power_monitoring/AN_411_Source/FT4232H/bin/Release/FTD2XX_NET.DLL


Any suggestion on what the problem could be or how to resolve this? Really need channel B to be working, channel A will be wired to something else for SWD to MCU.

Thanks in advance for any help or suggestions.

Pages: [1]