PDA

توجه ! این یک نسخه آرشیو شده میباشد و در این حالت شما عکسی را مشاهده نمیکنید برای مشاهده کامل متن و عکسها بر روی لینک مقابل کلیک کنید : مشکل عجیب با هدر spi



beroz
09-01-2013, 02:50
سلام

من یک مشکلی با کلاک هدر spi دارم

من دارم ماژول RFM70 و راه اندازی میکنم ولی وقتی کلاک رو از 2MHz بیشتر میکنم اصلا ماژول هیچ دیتایی نمیده در صورتی که تو دیتاشیت گفته تا 8MHz کار میکنه و جالب تر اینکه وقتی کلاک رو میارم پایین مثلا میزارم 500KHz ی جواب میگیرم وقتی میزارم 800KHz ی جواب دیگه میگرم موقع خوندن رجیستر ها

به نظرتون مشکل از کجا میتونه باشه؟

البته در هیچ کلاکی دیتای صحیح رو دریافت نکردم

agape
09-01-2013, 09:33
سلام - شما دقیقا از کدوم هدر استفاده میکنید - منم دقیقا همین مشکل رو دارم ولی با mmc و آخر هم متوجه نشدم مشکل از کجاست ، تنها احتمالی که میدم - خطا تو محاسبه مقدار کلاک باشه ، شما اگر دسترسی به اسکوپ دارید میتونید چک کنید که spi با چه فرکانسی کلاک میخوره

mansoory
09-01-2013, 10:27
سلام - شما دقیقا از کدوم هدر استفاده میکنید - منم دقیقا همین مشکل رو دارم ولی با mmc و آخر هم متوجه نشدم مشکل از کجاست ، تنها احتمالی که میدم - خطا تو محاسبه مقدار کلاک باشه ، شما اگر دسترسی به اسکوپ دارید میتونید چک کنید که spi با چه فرکانسی کلاک میخوره

معمولا باید ابتدا mmc را با فرکانس 400Khz راه اندازی کرد و بعد کلاک را بالا برد.

beroz
09-01-2013, 14:22
سلام - شما دقیقا از کدوم هدر استفاده میکنید - منم دقیقا همین مشکل رو دارم ولی با mmc و آخر هم متوجه نشدم مشکل از کجاست ، تنها احتمالی که میدم - خطا تو محاسبه مقدار کلاک باشه ، شما اگر دسترسی به اسکوپ دارید میتونید چک کنید که spi با چه فرکانسی کلاک میخوره

سلام، من از همون هدری که تو تاپیک زیر شما نوشتین استفاده میکنم
کلیه آموزش ها و نکات مهم برد eke2sam7x v2.0 کویرالکترونیک - ایـــــــــران میـــــــکرو ™ (You can see links before reply)

من ماژول RFM70 و با AVR راه انداختم و مشکلی نبود و هرجا نیاز داشتم به spi از هدر spi.h خود کدویژن استفاده کردم بعد اومدم کدی که نوشتم به کد قابل اجرا واسه آرم اتم تبدیل کنم و تغییرات زیر رو دادم که جواب نداد


#define BORD_CLK 92160000

#define CSN PA8
#define CE PA10کد زیر رو واسه AVR زدم که خیلی راحت جواب میده و مقادیر رجیستر های RFM70 و میخونه


unsigned char rfm70_reg_read(unsigned char reg)
{
unsigned char data;
csn=0;
spi(reg);
data=spi(0xFF);
csn=1;
return data;
}کد بالارو به کد زیر تبدیل کردم و جواب نگرفتم


unsigned char SPI_Read_Reg(unsigned char reg)
{
unsigned char data;
RST_PORTA = CSN;
SPI_Write(AT91C_BASE_SPI0,0,reg);
SPI_Write(AT91C_BASE_SPI0,0,oxff);
data = SPI_Read(AT91C_BASE_SPI0);
SET_PORTA = CSN;
return data;
}به صورت زیر کانفیگ کردم


SPI_Configure_PIO_MAKS(SPI0_PORT,SPI0_PIO_MASK); // Enable the SPI pins required by the application

SPI_Configure(AT91C_BASE_SPI0, // SPI0 TO USE
AT91C_ID_SPI0, // SPI0 PMC ID TO Active Power
SPI_MASTER| // SPI SET TO MASTER MODE
SPI_ONE_DEVIDE // SPI Connct TO 1Device {NO MOLTI DEVICE}
SPI_MOD_FDIS); // Disable Mode Fault Detection


SPI_ConfigureNPCS(AT91C_BASE_SPI0,
0, // Config Chanal 0
SPI_MODE_3|
SPI_8_BIT| // 8 Bit Data strim
SPI_SCBR(1000000,BORD_CLK)| // Clock Of SPI SET To 1 MHZ
SPI_DLYBCT(1000,BORD_CLK)| // Delay In Send Strim 1us
SPI_DLYBS(1000,BORD_CLK));



SPI_Enable(AT91C_BASE_SPI0); // Enable SPI0
البته من پایه CSN و وقتی دستی صفر و یک میکنم جواب میگیریم ولی وقتی از پایه شماره ۱۲ که تو هدر تعریف کردم واسه SPI0_NPCS0 استفاده میکنم فقط ماژول بم 0x1c و بر میگردونه یعنی هرچی و میخام بخونم فقط همینو میده بم ولی وقتی خودم دستی یک پورت رو صفر و یک میکنم بجای SPI0_NPCS0 ماژول جواب میده البته جواب نادرست

کانفیگ های SPI0


#define SPI0_PORT AT91C_BASE_PIOA
#define SPI0_NPCS0 12
#define SPI0_NPCS1 13
#define SPI0_NPCS2 14
#define SPI0_NPCS3 15
#define SPI0_MISO 16
#define SPI0_MOSI 17
#define SPI0_SPCK 18
#define SPI0_PIO_MASK ((1<<SPI0_NPCS0)|(1<<SPI0_NPCS1)|(1<<SPI0_NPCS2)|(1<<SPI0_NPCS3)|(1<<SPI0_MISO)|(1<<SPI0_MOSI)|(1<<SPI0_SPCK))


ی چیز جالب تر اینکه اگر من مثلا ۱۰ بار خوندن با spi آرم و انجام بدم از مورد سوم به بعد جواب فقط صفر میشه ولی اگر بینشون یک تاخیر ۱۰ میلی ثانیه بزارم بدون مشکل جواب میده

beroz
09-01-2013, 14:26
سلام - شما دقیقا از کدوم هدر استفاده میکنید - منم دقیقا همین مشکل رو دارم ولی با mmc و آخر هم متوجه نشدم مشکل از کجاست ، تنها احتمالی که میدم - خطا تو محاسبه مقدار کلاک باشه ، شما اگر دسترسی به اسکوپ دارید میتونید چک کنید که spi با چه فرکانسی کلاک میخوره

البته من به اسکوپ دسترسی ندارم ولی با توجه به آزمایش هایی که کردم مشکلم و از نظر timing خوندن spi میدونم ولی واسم عجیبه که تو avr با هدر spi.h کدویژن خیلی راحت جواب میده و هیچ مشکلی از نظر کلاک نداشتم

دارم یک هدر نرم افزاری واسه SPI مینویسم ببینم با این مدل هدر جواب میگیرم یا نه

beroz
10-01-2013, 17:01
سلام

کسی کتابخونه دیگه ای واسه spi نداره تست کنم؟