示例#1
0
int main(void)
{
    int ret;
    struct ftdi_context *ftdi;
    struct ftdi_version_info version;
    if ((ftdi = ftdi_new()) == 0)
   {
        fprintf(stderr, "ftdi_new failed\n");
        return EXIT_FAILURE;
    }
    version = ftdi_get_library_version();
    printf("Initialized libftdi %s (major: %d, minor: %d, micro: %d, snapshot ver: %s)\n",
        version.version_str, version.major, version.minor, version.micro,
        version.snapshot_str);
//    // own stuff
//    struct ftdi_device_list *devList;
//    if ((ret = ftdi_usb_find_all(ftdi,devList, 0, 0)) < 0)
//    {
//    	fprintf(stderr, "unable to find devices: %d (%s)\n", ret, ftdi_get_error_string(ftdi));
//		ftdi_free(ftdi);
//        return EXIT_FAILURE;
//    }


    if ((ret = ftdi_usb_open(ftdi, 0x0403, 0x6014)) < 0)
    {
        fprintf(stderr, "unable to open ftdi device: %d (%s)\n", ret, ftdi_get_error_string(ftdi));
        ftdi_free(ftdi);
        return EXIT_FAILURE;
    }
    // Read out FTDIChip-ID of R type chips
    if (ftdi->type == TYPE_232H)
    {
        unsigned int chipid;
        printf("ftdi_read_chipid: %d\n", ftdi_read_chipid(ftdi, &chipid));
        printf("FTDI chipid: %X\n", chipid);
    }

    if ((ret = ftdi_usb_close(ftdi)) < 0)
    {
        fprintf(stderr, "unable to close ftdi device: %d (%s)\n", ret, ftdi_get_error_string(ftdi));
        ftdi_free(ftdi);
        return EXIT_FAILURE;
    }
    ftdi_free(ftdi);
    return EXIT_SUCCESS;
}
示例#2
0
int main(void)
{
		//set interrupt handler for CTRL+C
    signal(SIGINT,sigintHandler);
    int ret;
    struct ftdi_context *ftdi;
    struct ftdi_version_info version;
    if ((ftdi = ftdi_new()) == 0)
   {
        fprintf(stderr, "ftdi_new failed\n");
        return EXIT_FAILURE;
    }

    version = ftdi_get_library_version();
    printf("Initialized libftdi %s (major: %d, minor: %d, micro: %d, snapshot ver: %s)\n",
        version.version_str, version.major, version.minor, version.micro,
        version.snapshot_str);

    if ((ret = ftdi_usb_open(ftdi, 0x0403, 0x6014)) < 0)
    {
        fprintf(stderr, "unable to open ftdi device: %d (%s)\n", ret, ftdi_get_error_string(ftdi));
        ftdi_free(ftdi);
        return EXIT_FAILURE;
    }

    // Read out FTDIChip-ID of R type chips
    if (ftdi->type == TYPE_232H)
    {
        unsigned int chipid;
        printf("ftdi_read_chipid: %d\n", ftdi_read_chipid(ftdi, &chipid));
        printf("FTDI chipid: %X\n", chipid);
    }
    printf("Resetting...");
    if ((ret = ftdi_set_bitmode(ftdi, 0x00, BITMODE_RESET)) != 0)
    {
        fprintf(stderr, "unable to reset: %d (%s)\n", ret, ftdi_get_error_string(ftdi));
        return EXIT_FAILURE;
    }
    printf(" success!\n");

    printf("Setting mode 245...");
    if ((ret = ftdi_set_bitmode(ftdi, 0x00, BITMODE_SYNCFF)) != 0)
    {
        fprintf(stderr, "unable to set to mode 245: %d (%s)\n", ret, ftdi_get_error_string(ftdi));
        return EXIT_FAILURE;
    }
    printf(" success!\n");


    //ACBUS5 already outputs the 30MHz clock

    //Is this the bit that caused the error? Try commenting out for now and see what it does.
    /*
    printf("Setting ACBUS[8] to 30 MHz...");
    if ((ret = ftdi_set_eeprom_value(ftdi,CBUS_FUNCTION_8,CBUSH_CLK30)) != 0)
    {

        fprintf(stderr, " unable to set: %d (%s)\n", ret, ftdi_get_error_string(ftdi));
        return EXIT_FAILURE;

    }
    else
    {
	printf(" success!\n");
    }
    

       //lets make sure that the eeprom value was set....
    int val;
    ret = ftdi_get_eeprom_value(ftdi,CBUS_FUNCTION_8,&val);
    printf("ret: %d  val: %d\n",ret,val);
    printf("does val match %d?\n",CBUSH_CLK30);
    */
    unsigned char buf[1024];
    int its = 10000;
    return;
    while(quit == 0)
    {

        //ret = ftdi_read_data(&ftdic,&buf,1);
        if ((ret = ftdi_read_data(ftdi,buf,3)) < 0)
        {
            fprintf(stderr, "unable to read ftdi device: %d (%s)\n", ret, ftdi_get_error_string(ftdi));
            //return EXIT_FAILURE;
        }
	else
	{
	    printf("Read in %x %x %x\n", buf[0],buf[1],buf[2]);
	}
    }
    if ((ret = ftdi_usb_close(ftdi)) < 0)
    {
        fprintf(stderr, "unable to close ftdi device: %d (%s)\n", ret, ftdi_get_error_string(ftdi));
        ftdi_free(ftdi);
        return EXIT_FAILURE;
    }

    ftdi_free(ftdi);

    return EXIT_SUCCESS;
}