Не удается установить контакты GPIO в FT230X в Centos

У меня есть светодиоды, подключенные к контактам CBx FT230X. Я использую libftdi v1.2 для установки контактов FT230X CBx. Я пробовал оба режима битбанга: BITMODE_BITBANG и BITMODE_CBUS, но безрезультатно. Мой код где-то о следующем:

#include <ftdi.h>
#include <err.h>
int main(int argc, char *argv[])
{
  struct ftdi_context ftdi;
  unsigned char x;

  /* Initialize and find device */
  if (ftdi_init(&ftdi) < 0)
    err(1, "ftdi_init");

  if (ftdi_usb_open(&ftdi, 0x0403, 0x6015) < 0)
    err(2, "can't open device");

  /* Enable bitbang */
  if (ftdi_set_bitmode(&ftdi, 0xff, BITMODE_BITBANG) < 0)
    err(3, "can't enable bitbang mode");

  /* Write Yellow */
  x=0x00;
  if (ftdi_write_data(&ftdi, &x, 1) < 0)
    err(5, "can't write");
  sleep(3);
  /* Write Red */
  x=0x01;
  if (ftdi_write_data(&ftdi, &x, 1) < 0)
    err(5, "can't write");
  sleep(3);
  /* Write Green */
  x=0x02;
  if (ftdi_write_data(&ftdi, &x, 1) < 0)
    err(5, "can't write");
  sleep(3);

  /* Close device */
  ftdi_usb_close(&ftdi);
  ftdi_deinit(&ftdi);

  return 0;
}

Следует отметить, что тот же код (исключая идентификатор продукта = 0x6013) правильно работает для FT4232H.


person Yakovs    schedule 09.06.2015    source источник


Ответы (1)


Я решил свою проблему. Как я уже упоминал, мне нужно установить контакты CBx на FT230X. Для этого в FT230X должен быть включен режим BITMODE_CBUS в EEPROM. В режиме BITMODE_CBUS, как это описано в примере bitbang_cbus.c libftdi, для установки этих выводов CBx следует использовать только функцию ftdi_set_bitmode(). При этом во втором параметре (битовая маска) верхний полубайт управляет вводом/выводом, а нижний полубайт управляет состоянием строк, установленных для вывода.

person Yakovs    schedule 10.06.2015