سلام دوست من
برای این کار باید خودت یه تابع برای اریال و دریافت بصورت spi بنویسی!
که اونم کاری نداره فقط باید چند مورد رو در نظر داشته با شی:
1- وسیله slave روی کدوم لبه نمونه برداری می کنه؟
2- فرکانس نمونه برداری؟
مثلا من برای یه آی سی که قالب کدش 20 بیتی بود و در فرکانس 20khz نمونه برداری می کرد از کد زیر استفاده کر دم:
void spi(unsigned char set)
{
PORTB.1= set>0 ? 1:0;
PORTB.0=0;
delay_us(25);
PORTB.0=1;
delay_us(25);
buffer[counter]=PINB.3 ? 1:0;
if (counter++>19) counter=0;
}
همونطور که میبینی چون در فرکانس 20 کیلوهرتز یک سیکل 50 میکروثانیه طول میکشه، به هر نیم سیکل
زمان 25 میکرو رو تخصیص دادم. دیتایی رو هم که می خوام ارسال کنم قبل از سیکل در ابتدای تابع قرار
PORTB.1 دادم یعنی
البته حواست باشه که تمام کارها رو خودت باید انجام بدی(مثل کنترل پایه فعالساز مقصد) در اخر هم از یه بافر برای ورودی دیتا استفاده کردم(در این روش اگه ارسال اطلاعات روی لبه بالا رونده باشه دریافت روی لبه پایین رونده خواهد بود.
البته من با C نوشتم اما تبدیل کردنش سخت نیست وقتی کار تموم شد فقت کافیه که توی تابع 0 یا 1 بنویسی!
spi(0);
spi(0);
spi(1);
spi(1);
spi(0);
spi(0);
spi(0);
spi(0);
spi(0);
spi(0);
spi(0);
spi(0);
spi(0);
spi(0);
spi(0);
spi(0);
spi(0);
spi(0);
spi(0);
spi(0);
موفق باشی!