How to use our Azure Sphere FTDI programmer as a Com port device to use UART?

95504669 521 Reputation points
2023-03-09T06:18:27.3666667+00:00

Hello, We are using FTINT 1.1 version FTDI programmer for our Azure sphere custom device with FT4232H mini module. We have programmed the programmer and it works. The programmer's 4 converter A, B, C, D is visible but we cannot see it as a Com port device. Is it possible to use the same programmer as a UART Com port device?. Please let us know if it is possible and the ways to do it. Thank you

Azure Sphere
Azure Sphere
An Azure internet of things security solution including hardware, operating system, and cloud components.
156 questions
{count} votes

Accepted answer
  1. James Devine 165 Reputation points Microsoft Employee
    2023-03-20T11:27:32.42+00:00

    Hiya,

    We noticed that we cannot use the port C (Service port) as it shows access denied while using the com port in terminal. What could be the reason for this?

    This would indicate that there is already an application that has opened port C for use.

    Depending on how the FTDI device is presenting itself, the Azure Sphere Device Communication Service may already have opened port C. To validate this on Windows:

    1. Search for the Services app.
    2. Locate the Azure Sphere Device Communication service entry in the services application.
    3. Right click on the entry, and select stop.

    With the device communication service stopped, you should be able to access port C, if this is indeed the cause.

    Do remember to start the service again, otherwise you may be confused as to why Windows cannot find any Azure Sphere devices :)

    Is it possible to use our device as both com port and D2XX just like Azure starter kit device?

    I believe it is possible to use libftd2xx while ports are in COM port mode.

    Using this ftd2xx python library wrapper , I am able to list all the device ports (except the one in use by the device communication service:

    import ftd2xx
    
    count = ftd2xx.createDeviceInfoList()
    
    for dev in range(0, count):
        print(ftd2xx.getDeviceInfoDetail(dev))
    

    Yields:

    {'index': 0, 'flags': 2, 'type': 7, 'id': 67330065, 'location': 593, 'serial': b'984A8DD25A36A', 'description': b'MSFT MT3620 Std Interface A', 'handle': c_void_p(None)}

    {'index': 1, 'flags': 2, 'type': 7, 'id': 67330065, 'location': 594, 'serial': b'984A8DD25A36B', 'description': b'MSFT MT3620 Std Interface B', 'handle': c_void_p(None)}

    {'index': 2, 'flags': 1, 'type': 3, 'id': 0, 'location': 0, 'serial': b'', 'description': b'', 'handle': c_void_p(None)}

    {'index': 3, 'flags': 2, 'type': 7, 'id': 67330065, 'location': 596, 'serial': b'984A8DD25A36D', 'description': b'MSFT MT3620 Std Interface D', 'handle': c_void_p(None)}

    0 comments No comments

0 additional answers

Sort by: Most helpful