Changing I2C speed to 400kHz on the USB to I2C Converter with Virtual COM Port FT230XS

According to the product descriptions as well as its documentation, the converter is capable of baud rate 230400 and I2C Port Speed of up to 400KHz. The default setting is at 115200 baud rate and 100kHZ. The instruction says that Alpha Station’s I2C converter configuration would allow us to change the baud rate to 230400 and I2C Port speed to 400kHz. However, I was only able to change the baud rate to 230400 but the port speed remains 100kHz regardless what is showing in the Alpha Station window view. The 100kHz is evident by the fact that the clock signal is being run at this speed as opposed to 400kHz like what Alpha Station says it is set up at.
Thanks!
image
image

@TravisE_NCD_Technica Could you take a look at this issue? Thanks!

@Bhaskar could you look into this, please? Thank you!

Ok, I looked into the firmware on this, it looks like the CPU cannot recall the state of the I2C setting because the program memory is 100% full and the necessary commands had to be commented out during CPU startup. The firmware has already been highly compressed to fit inside the CPU. However, there is a workaround. You can still set the port speed, but you will need to do this every time the device is powered up. I have not used these commands in a while, they were derived from the firmware, but they should work. Try sending the following commands, you will get a error response, but port speed is the first thing it tries to do, so it should work despite the error code.

100KHz: AA 06 BC 32 01 01 00 00 A0
38KHz: AA 06 BC 32 01 01 00 01 A1
200KHz: AA 06 BC 32 01 01 00 02 A2
300KHz: AA 06 BC 32 01 01 00 03 A3
400KHz: AA 06 BC 32 01 01 00 04 A4

1 Like

Hi @ryan1, thank you so much for the response! It works perfectly with what you gave me.
While you are at it. I have a question in regard to what is the best way to send a series of operations to the NCD devices without having to put a gap between each operation for the NCD device to recognize them properly.
For example at 400kHz, I am trying to do two simultaneous write to the slave device, but something like:
---------C# code---------------------
byte[] array = new byte[7] { 0xAA, 0x04, 0xBE, ADDR, command, data, sum };
_serialPort.Write(array, 0, 7);
_serialPort.Write(array, 0, 7);
----------END OF CODE-----------
would not work while if I add a line of code that is something likeThread.Sleep(10) in between those two, it would clock out the write data, but with a big gap.
So I am guessing my question: is there a special operation that we can send in between those two write that allow NCD board to clock out the right data while not wasting as little of the time in between the two other lines of code as possible. Thanks!

I am very sorry for the delay in responding to you on this, but the short answer is, send a command, wait for a reply, then send your next command. It is not safe to wait because some operations may execute with varying amounts of time. Hope this helps.
Ryan