سلام
من می خوام که از پروتکل CAN تویه LPC2368 استفاده کنم.
شماتیک مدار به این ترتیبه:

مهمان عزیز شما حق دیدن لینک ها را ندارید

عضویت


پایه های VCC ی LPC2368 به +3.3 وصله و VSS ها هم به زمین متصلن.
کریستال هم 12M هستش.
پایه VDD ی MCP2551 هم +7 و GND و RS هم به زمین متصلن.

کدهای برنامه هم اینه:
کد:
#include <LPC23xx.h>

void CAN1IRQ (void)
{
IOSET0	|=(1<<22);
CAN1CMR =0x00000004;
VICVectAddr =0x00000000;
}
int main (void)
{
unsigned int i=1;
unsigned int delay=0;
IODIR0 |=(1<<22);
IOCLR0 |=(1<<22);
//------- initialize CAN2---------//
PINSEL0 |=0x2<<8|0x2<<12;
PCONP |=0x1<<14;
CAN2MOD |=0x00000001;
CAN2BTR =0x0B | 0x05<<16 |0x02<<20;
CAN2MOD =0x00000000;
//---------initialize CAN1---------//
PINSEL0 |=0x5;
PINSEL0 |=0x1<<13;
CAN1MOD |=0x00000001;
CAN1BTR =0x0B|0x05<<16 |0x02<<20;
CAN1IER =0x00000001;
VICVectPriority23 =0x00000000;
VICVectAddr23 =(unsigned)CAN1IRQ;
VICIntEnable =0x00800000;
CAN_AFMR =0x00000003;
//--------transfer data-----------//
CAN2TFI1 =0x00040000;
for(i=1;i<0x00000100;i=i<<1)
{
CAN2TID1=i;
if(CAN2SR&0x00000004)
{
CAN2TDA1=i;
CAN2CMR=0x0000021;
}
for(delay=0;delay<0xA0000;delay++);
}
while(1);
}
وقتی که دیتا از TX2 به RX1 برسه
LED باید روشن بشه.
من برنامه رو با دیباگر keil سیموله کردم و اون نشون داد که اطلاعات به درستی ارسال می شه
اما نتونستم قسمت دریافت رو هم چک کنم.
به جایه مقاومت 120 هم از 270 استفاده کردم (به دلیل کمبود امکانات)
به نظر شما کدهای برنامه مشکل داره یا سخت افزار؟