我们从2011年坚守至今,只想做存粹的技术论坛。  由于网站在外面,点击附件后要很长世间才弹出下载,请耐心等待,勿重复点击不要用Edge和IE浏览器下载,否则提示不安全下载不了

 找回密码
 立即注册
搜索
查看: 1756|回复: 1

FT2303RL, FTDI的USB-to-uart 芯片,上位机调用API控制gpio的高,低

[复制链接]

该用户从未签到

6

主题

108

回帖

33

积分

二级逆天

积分
33

社区居民终身成就奖

QQ
发表于 2015-6-28 13:48:49 | 显示全部楼层 |阅读模式
FT2303RL, FTDI的USB-to-uart 芯片,可以使用在上位机调用API控制gpio的高,低电平。



// ftdi-gpio.cpp : 定义控制台应用程序的入口点。
//

#include "stdafx.h"
#include "ftd2xx.h"

int ftdi_set_gpio()
{
    FT_STATUS status = 0;
    FT_HANDLE handle = 0;
    DWORD numDevs = 0;
    FT_DEVICE_LIST_INFO_NODE * devInfo;
    UCHAR gpio_mask = 0, gpio_mode = 0;

    // detect device info.
    status = FT_CreateDeviceInfoList(&numDevs);
    if (status == FT_OK)
    {
        printf("1: created device info.\n");
    }
    else
    {
        printf("1: Error, can't create device info.\n");
        return -1;
    }

    devInfo = (FT_DEVICE_LIST_INFO_NODE*)malloc(sizeof(FT_DEVICE_LIST_INFO_NODE)*(numDevs));
    memset(devInfo, 0, sizeof(FT_DEVICE_LIST_INFO_NODE));
    printf("malloc devInfo.\n");

    status = FT_GetDeviceInfoList(devInfo, &numDevs);
    if (status == FT_OK)
    {
        printf("2: get device info list: %d, numDevs = %u\n", status, numDevs);
    }
    else
    {
        printf("2: Error, can't get device info list\n");
        return -1;
    }

    for (int i = 0; i < (int)numDevs; i++)
    {
        printf("Dev %d:\n", i);
        printf(" Flags=0x%x\n", devInfo.Flags);
        printf(" Type=0x%x\n", devInfo.Type);
        printf(" ID=0x%x\n", devInfo.ID);
        printf(" LocId=0x%x\n", devInfo.LocId);
        printf(" SerialNumber=%s\n", devInfo.SerialNumber);
        printf(" Description=%s\n", devInfo.Description);
        printf(" ftHandle=0x%x\n", devInfo.ftHandle);
    }

    status = FT_OpenEx(devInfo[0].SerialNumber, FT_OPEN_BY_SERIAL_NUMBER, &handle);
    printf("open: %d\n", status);

    free(devInfo);
    printf("free devInfo.\n");

    gpio_mask = 0xFF; // all output, all = 1
    gpio_mask = 0xF1; // all output, all = 0

    gpio_mode = 0x20; //
    status = FT_SetBitMode(handle, gpio_mask, gpio_mode);

    // close it.
    status = FT_Close(handle);
    printf("close: %d\n", status);

    return status;
}

int _tmain(int argc, _TCHAR* argv[])
{
    printf("ftdi gpio example.\n");

    ftdi_set_gpio();

    return 0;
}

DS_FT232R.pdf

814 KB, 下载次数: 0, 下载积分: 金币 -1 枚

回复

使用道具 举报

该用户从未签到

3

主题

3952

回帖

4658

积分

二级逆天

积分
4658

社区居民忠实会员最爱沙发终身成就奖优秀斑竹奖

QQ
发表于 2015-6-28 14:27:24 | 显示全部楼层
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

论坛开启做任务可以
额外奖励金币快速赚
积分升级了


Copyright ©2011-2024 NTpcb.com All Right Reserved.  Powered by Discuz! (NTpcb)

本站信息均由会员发表,不代表NTpcb立场,如侵犯了您的权利请发帖投诉

平平安安
TOP
快速回复 返回顶部 返回列表