2010-08-25 16 views
5

यह एक एफटी 2232 डी चिप है, और एलईडी बीडीबीयूएस 6 से जुड़ा हुआ है।libftdi v0.18 का उपयोग करके मैं एलईडी कैसे फ्लैश करूं?

पुस्तकालय कम से कम दस्तावेज है जो मुझे पसंद हो सकता है (एफटीडीआई की अपनी लाइब्रेरी से बेहतर है, जो आधुनिक कर्नेल पर भी काम नहीं करता है), एकमात्र उदाहरण कोड मैं पा सकता हूं कि यह एक बहिष्कृत फ़ंक्शन का उपयोग करता है (मैंने कोशिश की, यह काम नहीं कर रहा है), और मैं बिल्कुल स्टंप हूँ।

जितना कठिन मैं इस चीज़ के साथ प्रयास करता हूं, उतना ही मुश्किल लगता है। मैं किसी के लिए अपना होमवर्क करने के लिए नहीं ढूंढ रहा हूं क्योंकि मुझे बस सही दिशा में एक झुकाव की जरूरत है। किसी भी मदद की सराहना की (यहां तक ​​कि सट्टा)।

अद्यतन: मैं यह कोशिश कर रहा हूं, हालांकि ftdi_enable_bitbang() को बहिष्कृत किया गया है। निम्नलिखित कोड संकलित करता है, यह बिना बार्फ़िंग के चलता है, लेकिन कोई ब्लिंकेंलाइटन नहीं होता है। प्रश्न में डिवाइस के Schematics http://www.semtech.com/images/datasheet/sx1211ska_v1_std.pdf, पेज 23 पर उपलब्ध हैं। बीडीबीयूएस 6 और बीडीबीयूएस 7 एल ई डी तक लगाए गए हैं।

#include <stdio.h> 
#include <stdint.h> 
#include <string.h> 
#include <stdlib.h> 
#include <ctype.h> 
#include <ftdi.h> 

#define FTDI_VID    0x0403 
#define FTDI_PID    0x6010 


static struct ftdi_context ftdic_context; 

int main(void) { 
     int ret; 
     unsigned int i; 
     unsigned char c = 0; 

     // Initialize bitbang. 
//  ret = ft2232_bb_init(); 

     ftdi_usb_open(&ftdic_context, FTDI_VID, FTDI_PID); 
     ftdi_set_interface(&ftdic_context, INTERFACE_B); 
     ftdi_enable_bitbang(&ftdic_context, 0xb0); 

     // Trying to blink some lights. 
     printf("\nNow let's try to blinkenlights...\n"); 
     for (i = 0; i < 20; i++) { 
       c ^= 0x80; 
       ftdi_write_data(&ftdic_context, &c, 1); 
       sleep(1); 
     } 

     return EXIT_SUCCESS; 
} 
+0

के संभावित डुप्लिकेट देखना [मुझे libftdi के mpsse (एसपीआई) मोड के लिए उदाहरण कोड खोजने में परेशानी हो रही है।] (Http: // stackoverflo w.com/questions/3527464/im-having-trouble-finding-example-code-for-libftdis-mpsse-spi-mode) –

+1

डुप्लिकेट नहीं, लेकिन मेरा एक ही सॉफ्टवेयर प्रोजेक्ट से संबंधित है। –

उत्तर

8

इससे पहले कि आप इसके साथ डिवाइस खोल सकें, आपको ftdi संदर्भ आरंभ करना होगा।

ftdi_init (& ftdic_context);

इसके अलावा आपको डिवाइस खोलने से पहले इंटरफ़ेस चैनल सेट करने की आवश्यकता है।

यहाँ समारोह मैं एक FTDI संदर्भ

int initFTDI(struct ftdi_context * ftdic) 
{ 
    unsigned char Mask = 0x1F; 
    int ret=0; 

    fprintf(stderr,"start init\n"); 

    ftdi_init(ftdic); 

    //for multi-channel ftdi chips eg(ft2232) 
    if(ftdi_set_interface(ftdic,INTERFACE_B)) 
     fprintf(stderr,"%s\n",ftdi_get_error_string(ftdic)); 

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

    if(ftdi_usb_purge_buffers(ftdic)) //clean buffers 
     fprintf(stderr,"%s\n",ftdi_get_error_string(ftdic)); 

    if(ftdi_write_data_set_chunksize(ftdic,65536)) //64k transfer size 
     fprintf(stderr,"%s\n",ftdi_get_error_string(ftdic)); 

    if(ftdi_read_data_set_chunksize(ftdic,4096)) //64k transfer size 
     fprintf(stderr,"%s\n",ftdi_get_error_string(ftdic)); 

    if(ftdi_set_event_char(ftdic,false,0)) //disable event chars 
     fprintf(stderr,"%s\n",ftdi_get_error_string(ftdic)); 

    if(ftdi_set_error_char(ftdic,false,0)) //disable error chars 
     fprintf(stderr,"%s\n",ftdi_get_error_string(ftdic)); 

    if(ftdi_set_latency_timer(ftdic,2)) //Set the latency timer to 1mS (default is 16mS) 
     fprintf(stderr,"%s\n",ftdi_get_error_string(ftdic)); 

    if(ftdi_set_baudrate(ftdic,921600)) 
     fprintf(stderr,"%s\n",ftdi_get_error_string(ftdic)); 

    if(ftdi_setflowctrl(ftdic,SIO_RTS_CTS_HS)) //set flow control 
     fprintf(stderr,"%s\n",ftdi_get_error_string(ftdic)); 

    if ((ret = ftdi_set_bitmode(ftdic, 0x00, BITMODE_RESET)) < 0) 
    { 
     fprintf(stderr, "can't set bitmode to %x: %d (%s)\n", BITMODE_RESET, ret, ftdi_get_error_string(ftdic)); 
     fprintf(stderr, "RESET\n"); 
     return EXIT_FAILURE; 
    } 
    if ((ret = ftdi_set_bitmode(ftdic, Mask, BITMODE_BITBANG)) < 0) 

     fprintf(stderr, "can't set bitmode to %x: %d (%s)\n", BITMODE_BITBANG, ret, ftdi_get_error_string(ftdic)); 
     fprintf(stderr, "RESET\n"); 
     return EXIT_FAILURE; 
    } 

    //fprintf(stderr,"end init\n"); 

    return ret; 
} 
1

ही यहाँ के रूप में उत्तर: I'm having trouble finding example code for libftdi's mpsse (SPI) mode

http://flashrom.org/Downloads

इसके मुख्य रूप से MPSSE मोड, लेकिन यह भी सेट NCS bitbang आदेश के माध्यम से संकेत।

+0

यदि आपके पास कुछ और अंतर्दृष्टि है कि यह कहां/यह कर रही है, तो मैं इसके बारे में सुनवाई की सराहना करता हूं। मैं बस वर्तमान संस्करण में नहीं देख रहा हूँ। –

4
ftdi_enable_bitbang 

स्थापित करने के लिए का उपयोग हटाई गई है, आप

ftdi_set_bitmode(&ftdic, LED,BITMODE_BITBANG); 

का उपयोग करना चाहिए बजाय, documentation:

+0

मैं आपको यह जानना चाहता हूं कि यह लगभग दो साल पहले था। मैं अब उस जगह पर भी काम नहीं करता ... उन्होंने मुझे उस दिन बंद कर दिया जब मैंने दिखाया कि शापित यूएसबी रेडियो काम कर रहा है। –

संबंधित मुद्दे

 संबंधित मुद्दे