با سلام
من بعد از چند ماه تنبلی دیروز برد FT245 را درست کردم و یه کد ساده هم در کامپیوتر نوشتم که با آن صحبت کند. انصافا فکر نمیآکردن نرمآافزار و کار با این چیپ این قدر ساده باشد. بورد یک لایه است و به گونهآای است که میآتوان آن را در بردبورد قرار داد. روی بورد رگولاتور ۳.۳ ولتی نیز قرار دارد که IOها تراشه را ۳.۳ ولتی میآکند به همین دلیل میآتوانی به راحتی این IOها را به تراشهآهایی که 5V-tolerant نیستند متصل کرد.

کل داستان به این صورت هست که، چیپ FT245 و FT232 میآتوانند در یک مد خیلی جالب به نام bitbang کار کنند. در این مد ۸ بیت IO بر روی تراشه قرار دارد که میآتوان مانند پورتآهای میکرو در آن نوشت و یا وضعیت آن را خواند.
برای قسمت نرمآافزار FTDI درایوری به نام D2XX معرفی میآکند. در لینوکس کتابخانهآای به نام libftdi وجود دارد که فکر کنم پیادهآسازی همین درایور باشد. دوستان عزیز باید بستهآی libftdi-dev را نصب کنند تا بتوانند برنامه برای صحبت با چیپآ را کامپایل کنند. این بسته تعدادی فایل نمونه هم دارد که برای شروع کار بسیار مناسب است. من برای آزمایش مدارم دقیقا یکی از همین مثالآها را کمی تغییر دادم و به راحتی استفاده کردم.
به عنوان نمونه ۸ عدد دیود نورانی به IOها به همراه مقاومت متصل کردم و در کامپیوتر برنامهآای نوشتم که یک بیت را در خورجی شیفت میآدهد.
کد این برنامه ساده:
برای کامپایل کردن و اجرا کردن این فایل به راحتی در شل لینوکس به این شکل عمل کنید:

* توضیحاتی هم در وبلاگم درباره این بورد نوشتم: http://abd.manidea.com/blog/archives/378
* یه فایل فشرده attach کردم که شامل فایلآهای شماتیک و بورد و برنامه ساده آزمایش بورد هست. شماتیک و بورد با برنامهآهای gschem و PCB طراحی شده است.
امیدوارم مفید باشد
من بعد از چند ماه تنبلی دیروز برد FT245 را درست کردم و یه کد ساده هم در کامپیوتر نوشتم که با آن صحبت کند. انصافا فکر نمیآکردن نرمآافزار و کار با این چیپ این قدر ساده باشد. بورد یک لایه است و به گونهآای است که میآتوان آن را در بردبورد قرار داد. روی بورد رگولاتور ۳.۳ ولتی نیز قرار دارد که IOها تراشه را ۳.۳ ولتی میآکند به همین دلیل میآتوانی به راحتی این IOها را به تراشهآهایی که 5V-tolerant نیستند متصل کرد.

کل داستان به این صورت هست که، چیپ FT245 و FT232 میآتوانند در یک مد خیلی جالب به نام bitbang کار کنند. در این مد ۸ بیت IO بر روی تراشه قرار دارد که میآتوان مانند پورتآهای میکرو در آن نوشت و یا وضعیت آن را خواند.
برای قسمت نرمآافزار FTDI درایوری به نام D2XX معرفی میآکند. در لینوکس کتابخانهآای به نام libftdi وجود دارد که فکر کنم پیادهآسازی همین درایور باشد. دوستان عزیز باید بستهآی libftdi-dev را نصب کنند تا بتوانند برنامه برای صحبت با چیپآ را کامپایل کنند. این بسته تعدادی فایل نمونه هم دارد که برای شروع کار بسیار مناسب است. من برای آزمایش مدارم دقیقا یکی از همین مثالآها را کمی تغییر دادم و به راحتی استفاده کردم.
به عنوان نمونه ۸ عدد دیود نورانی به IOها به همراه مقاومت متصل کردم و در کامپیوتر برنامهآای نوشتم که یک بیت را در خورجی شیفت میآدهد.
کد این برنامه ساده:
کد PHP:
#include <stdio.h>
#include <unistd.h>
#include <ftdi.h>
int main(int argc, char **argv)
{
struct ftdi_context ftdic;
int f,i;
unsigned char buf[1];
char c;
ftdi_init(&ftdic);
f = ftdi_usb_open(&ftdic, 0x0403, 0x6001);
if(f < 0 && f != -5) {
fprintf(stderr, "unable to open ftdi device: %d (%s)\n", f, ftdi_get_error_string(&ftdic));
exit(-1);
}
printf("ftdi open succeeded: %d\n",f);
printf("enabling bitbang mode\n");
ftdi_enable_bitbang(&ftdic, 0xFF);
sleep(1);
buf[0]=0x01;
do {
buf[0] = (buf[0]==0x80)?0x01:buf[0]<<1;
f = ftdi_write_data(&ftdic, buf, 1);
if(f < 0) {
fprintf(stderr,"write failed for 0x%x, error %d (%s)\n",buf[0],f, ftdi_get_error_string(&ftdic));
}
printf("%02hhx \n",buf[0]);
fflush(stdout);
usleep(500000);
//c=getchar();
} while (c != ' ');
printf("disabling bitbang mode\n");
ftdi_disable_bitbang(&ftdic);
ftdi_usb_close(&ftdic);
ftdi_deinit(&ftdic);
}
برای کامپایل کردن و اجرا کردن این فایل به راحتی در شل لینوکس به این شکل عمل کنید:
gcc -l ftdi -o ledshift ledshift.c
./ledshift
./ledshift

* توضیحاتی هم در وبلاگم درباره این بورد نوشتم: http://abd.manidea.com/blog/archives/378
* یه فایل فشرده attach کردم که شامل فایلآهای شماتیک و بورد و برنامه ساده آزمایش بورد هست. شماتیک و بورد با برنامهآهای gschem و PCB طراحی شده است.
امیدوارم مفید باشد
دیدگاه