首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >基于libFTDI的程序无法正确读取FT245的引脚状态

基于libFTDI的程序无法正确读取FT245的引脚状态
EN

Stack Overflow用户
提问于 2016-10-04 13:28:46
回答 1查看 237关注 0票数 0

我使用安装了Advanced Tomato的华硕路由器(基于ARMv7 proc)作为我的ARMv7开发平台。我安装了编译器(gcc - 5.4.0-1)以及依赖项和OpenWRT Linux repo中的libFTDI (libftdi1 - 1.3-1)。

我在Linux x86_64平台上,使用从芯片制造商producer那里获得的ftd2xx库编写了一个程序。它工作正常。但现在我想使用开源libFTDI库将其移植到ARMv7平台上。

我使用基于ft245芯片的电路板。引脚编号0到3作为继电器输出,引脚4-7作为光隔离输入。我的目标是,运行参数为0到15的程序(名为arco)打开/关闭相应的继电器。此外,在这样的运行之后,程序返回十六进制所有引脚的实际状态。运行没有参数的程序,简单地返回所有8个引脚的状态作为十六进制数。我的问题是,当我使用例如arco 7这样的语法运行程序时,它会打开编号为0到2的中继,并关闭编号为3的中继,所以它是正确的。但是ftdi_read_data返回的不是引脚的实际状态,而是之前的状态。当我第二次运行arco (不带参数)时,它返回正确的值。

我做错了什么?

下面是这个小程序的源代码:

代码语言:javascript
复制
#include <stdio.h>
#include<stdlib.h>
#include <ftdi.h>

int main(int argc, char *argv[])
{
    unsigned char c = 0;
    unsigned char pkod = 0;
int     parametr = 0;
int         stat = 0;
int read = 0;
int wyn = 0;
struct ftdi_context ftdic;

    if(argc > 1) { sscanf(argv[1], "%d", &parametr); }
    else { read = 1; }

    if (parametr > 15 || parametr < 0) {
            fprintf (stderr,"Bad call parameter\n");
            exit(1); }

/* Initialize context for subsequent function calls */
ftdi_init(&ftdic);

/* Open FTDI device based on FT245R vendor & product IDs */
if(ftdi_usb_open(&ftdic, 0x5555, 0x0001) < 0) {
    fprintf(stderr,"ARCO not avaliable\n");
    exit(2);
}

/* Enable bitbang mode with a single output line */
    ftdi_set_bitmode(&ftdic, 0x0f, BITMODE_BITBANG);

    if(read != 1) {
    pkod=(unsigned char)parametr;
    ftdi_write_data(&ftdic, &pkod, 1);}

    wyn=ftdi_read_data(&ftdic, &c, 1);
    printf ("%x - %d\n",c,wyn);
    exit(stat); 
}

更新1-上述程序中的小更改

运行两次程序的输出:

代码语言:javascript
复制
root@asus:/opt/static# ./arco 7; arco
f0 - 1
f7 - 1
EN

回答 1

Stack Overflow用户

发布于 2021-08-28 17:42:34

我相信你想要的是ftdi_read_pins()。在bitbang模式下,会定期对引脚进行采样,并将值保存在FIFO中以供稍后读取。如果你想检查引脚的当前状态,你必须绕过这个过程,这就是“读取引脚”调用所做的事情。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39844758

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档