📄 can.c
字号:
//等待数据发送完
tick=0;
do {
status = AT91F_CAN_GetMessageStatus(&(AT91C_BASE_CAN1->CAN_MB0));
} while( !(status & AT91C_CAN_MRDY) && (++tick<AT91C_CAN_TIMEOUT) );
/////////////////////
AT91F_DBGU_Printk("\n\r-- the send is finished\n\r");
AT91F_DBGU_Printk("-- CAN1 Mailbox 0: Rx Mailbox low 4 byte data is:");
//读取接收邮箱中的数据,将其打印到”超级中端“
PrintkFoueByte(AT91F_CAN_GetMessageDataLow(&AT91C_BASE_CAN1->CAN_MB0));
AT91F_DBGU_Printk("\n\r-- CAN1 Mailbox 0: Rx Mailbox high 4 byte data is:");
PrintkFoueByte(AT91F_CAN_GetMessageDataHigh(&AT91C_BASE_CAN1->CAN_MB0));
if (tick == AT91C_CAN_TIMEOUT) { //如果超时则表示发送错误
AT91F_DBGU_Printk("\n\r-E- Test FAILED !\n\r");
}
else { //比较接收与发送邮箱中的数据是否正确
if( AT91F_CAN_GetMessageDataLow(&AT91C_BASE_CAN0->CAN_MB0) != AT91F_CAN_GetMessageDataLow(&AT91C_BASE_CAN1->CAN_MB0) )
AT91F_DBGU_Printk("\n\r-E-low 4 byte Data ERROR !\n\r");
else{AT91F_DBGU_Printk("\n\r-E-low 4 byte Data right !\n\r");}
if( AT91F_CAN_GetMessageDataHigh(&AT91C_BASE_CAN0->CAN_MB0) != AT91F_CAN_GetMessageDataHigh(&AT91C_BASE_CAN1->CAN_MB0) )
AT91F_DBGU_Printk("-E-high 4 byte Data ERROR !\n\r");
else{AT91F_DBGU_Printk("-E-high 4 byte Data right !\n\r");}
}
AT91F_DBGU_Printk("\n\r-E- Test 1 is finished !\n\r");
////////////////////
///////////////////////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////////////////////
//测试2:将CAN0_MB1和CAN0_MB2中的消息发送到CAN1_MB15中(一个邮箱接收多个邮箱发来的信息)
//注释:必须设置号CAN1_MB15中的MAM和MID寄存器,最简短的帮法就是全部设为0 ,它将接受所有消息
AT91F_DBGU_Printk("\n\r----------------------------------------------------------\n\r");
AT91F_DBGU_Printk("2. CAN0 Mailboxes 1 & 2 transmitting to CAN1 Mailbox 15...\n\r");
AT91F_DBGU_Printk("----------------------------------------------------------\n\r");
AT91F_DBGU_Printk("-- CAN0 Mailbox 1 : Tx Mailbox \n\r");
AT91F_DBGU_Printk("-- CAN0 Mailbox 2 : Tx Mailbox \n\r");
AT91F_DBGU_Printk("-- CAN1 Mailbox 15: Rx with Overwrite Mailbox \n\r");
AT91F_DBGU_Printk("----------------------------------------------------------\n\r");
/////////////////////////////
AT91F_DBGU_Printk("-- CAN0 Mailbox 1: Tx Mailbox send data low 4 byte data is:");
PrintkFoueByte(AT91F_CAN_GetMessageDataLow(&AT91C_BASE_CAN0->CAN_MB1));
AT91F_DBGU_Printk("\n\r-- CAN0 Mailbox 1: Tx Mailbox send data high 4 byte data is:");
PrintkFoueByte(AT91F_CAN_GetMessageDataHigh(&AT91C_BASE_CAN0->CAN_MB1));
//////////////////////////////
//启动发送
AT91F_CAN_InitTransferRequest(AT91C_BASE_CAN0,AT91C_CAN_MB1);
//等待数据发送完
tick=0;
do {
status = AT91F_CAN_GetMessageStatus(&(AT91C_BASE_CAN1->CAN_MB15));
} while( !(status & AT91C_CAN_MRDY) && (++tick<AT91C_CAN_TIMEOUT) );
/////////////////////
AT91F_DBGU_Printk("\n\r-- the send is finished\n\r");
AT91F_DBGU_Printk("-- CAN1 Mailbox 15: Rx Mailbox receive data low 4 byte data is:");
PrintkFoueByte(AT91F_CAN_GetMessageDataLow(&AT91C_BASE_CAN1->CAN_MB15));
AT91F_DBGU_Printk("\n\r-- CAN1 Mailbox 15: Rx Mailbox receive data high 4 byte data is:");
PrintkFoueByte(AT91F_CAN_GetMessageDataHigh(&AT91C_BASE_CAN1->CAN_MB15));
if (tick == AT91C_CAN_TIMEOUT) {
AT91F_DBGU_Printk("\n\r-E- Test FAILED !\n\r");
}
else {
// AT91F_DBGU_Printk("\n\r-I- Tranfer Completed: CAN1 Mailbox 0 MRDY flag has raised.\n\r");
if( AT91F_CAN_GetMessageDataLow(&AT91C_BASE_CAN0->CAN_MB1) != AT91F_CAN_GetMessageDataLow(&AT91C_BASE_CAN1->CAN_MB15) )
AT91F_DBGU_Printk("\n\r-E-low 4 byte Data ERROR !\n\r");
else{AT91F_DBGU_Printk("\n\r-E-low 4 byte Data right !\n\r");}
if( AT91F_CAN_GetMessageDataHigh(&AT91C_BASE_CAN0->CAN_MB1) != AT91F_CAN_GetMessageDataHigh(&AT91C_BASE_CAN1->CAN_MB15) )
AT91F_DBGU_Printk("-E-high 4 byte Data ERROR !\n\r");
else{AT91F_DBGU_Printk("-E-high 4 byte Data right !\n\r");}
}
/////////////////////////////
/////////////////////////////
AT91F_DBGU_Printk("-- CAN0 Mailbox 2: Tx Mailbox send data low 4 byte data is:");
PrintkFoueByte(AT91F_CAN_GetMessageDataLow(&AT91C_BASE_CAN0->CAN_MB2));
AT91F_DBGU_Printk("\n\r-- CAN0 Mailbox 2: Tx Mailbox send data high 4 byte data is:");
PrintkFoueByte(AT91F_CAN_GetMessageDataHigh(&AT91C_BASE_CAN0->CAN_MB2));
//////////////////////////////
//启动发送
AT91F_CAN_InitTransferRequest(AT91C_BASE_CAN0,AT91C_CAN_MB2);
//等待数据发送完
tick=0;
do {
status = AT91F_CAN_GetMessageStatus(&(AT91C_BASE_CAN1->CAN_MB15));
} while( !(status & AT91C_CAN_MRDY) && (++tick<AT91C_CAN_TIMEOUT) );
/////////////////////
AT91F_DBGU_Printk("\n\r--the send is finished\n\r");
AT91F_DBGU_Printk("-- CAN1 Mailbox 15: Rx Mailbox low receive data 4 byte data is:");
PrintkFoueByte(AT91F_CAN_GetMessageDataLow(&AT91C_BASE_CAN1->CAN_MB15));
AT91F_DBGU_Printk("\n\r-- CAN1 Mailbox 15: Rx Mailbox receive data high 4 byte data is:");
PrintkFoueByte(AT91F_CAN_GetMessageDataHigh(&AT91C_BASE_CAN1->CAN_MB15));
if (tick == AT91C_CAN_TIMEOUT) {
AT91F_DBGU_Printk("\n\r-E- Test FAILED !\n\r");
}
else {
if( AT91F_CAN_GetMessageDataLow(&AT91C_BASE_CAN0->CAN_MB2) != AT91F_CAN_GetMessageDataLow(&AT91C_BASE_CAN1->CAN_MB15) )
AT91F_DBGU_Printk("\n\r-E-low 4 byte Data ERROR !\n\r");
else{AT91F_DBGU_Printk("\n\r-E-low 4 byte Data right !\n\r");}
if( AT91F_CAN_GetMessageDataHigh(&AT91C_BASE_CAN0->CAN_MB2) != AT91F_CAN_GetMessageDataHigh(&AT91C_BASE_CAN1->CAN_MB15) )
AT91F_DBGU_Printk("-E-high 4 byte Data ERROR !\n\r");
else{AT91F_DBGU_Printk("-E-high 4 byte Data right !\n\r");}
}
AT91F_DBGU_Printk("\n\r-E- Test 2 is finished !\n\r");
///////////////////////
///////////////////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////////////////
//测试3: CAN0 Mailbox 3请求 CAN1 Mailbox 3 发送数据
AT91F_DBGU_Printk("\n\r-----------------------------------------------------------\n\r");
AT91F_DBGU_Printk("3. CAN0 Mailbox 3 asking for CAN1 Mailbox 3 transmission...\n\r");
AT91F_DBGU_Printk("-----------------------------------------------------------\n\r");
AT91F_DBGU_Printk("-- CAN0 Mailbox 3: Consumer Mailbox \n\r");
AT91F_DBGU_Printk("-- CAN1 Mailbox 3: Producer Mailbox \n\r");
AT91F_DBGU_Printk("-----------------------------------------------------------\n\r");
///////////////////////
AT91F_DBGU_Printk("-- CAN1 Mailbox 3: Tx Mailbox send data low 4 byte data is:");
PrintkFoueByte(AT91F_CAN_GetMessageDataLow(&AT91C_BASE_CAN1->CAN_MB3));
AT91F_DBGU_Printk("\n\r-- CAN1 Mailbox 3: Tx Mailbox send data high 4 byte data is:");
PrintkFoueByte(AT91F_CAN_GetMessageDataHigh(&AT91C_BASE_CAN1->CAN_MB3));
////////////////////////
//启动发送请求
AT91F_CAN_InitTransferRequest(AT91C_BASE_CAN1,AT91C_CAN_MB3);
AT91F_CAN_InitTransferRequest(AT91C_BASE_CAN0,AT91C_CAN_MB3);
//等待数据发送完
tick=0;
do {
status = AT91F_CAN_GetMessageStatus(&(AT91C_BASE_CAN1->CAN_MB3));
} while( !(status & AT91C_CAN_MRDY) && (++tick<AT91C_CAN_TIMEOUT) );
/////////////////////////////
AT91F_DBGU_Printk("\n\r-- the send is finished\n\r");
AT91F_DBGU_Printk("-- CAN0 Mailbox 3: Rx Mailbox receive data low 4 byte data is:");
PrintkFoueByte(AT91F_CAN_GetMessageDataLow(&AT91C_BASE_CAN0->CAN_MB3));
AT91F_DBGU_Printk("\n\r-- CAN0 Mailbox 3 Rx Mailbox receive data high 4 byte data is:");
PrintkFoueByte(AT91F_CAN_GetMessageDataHigh(&AT91C_BASE_CAN0->CAN_MB3));
if (tick == AT91C_CAN_TIMEOUT) {
AT91F_DBGU_Printk("\n\r-E- Test FAILED !\n\r");
}
else {
if( AT91F_CAN_GetMessageDataLow(&AT91C_BASE_CAN0->CAN_MB3) != AT91F_CAN_GetMessageDataLow(&AT91C_BASE_CAN1->CAN_MB3) )
AT91F_DBGU_Printk("\n\r-E-low 4 byte Data ERROR !\n\r");
else{AT91F_DBGU_Printk("\n\r-E-low 4 byte Data right !\n\r");}
if( AT91F_CAN_GetMessageDataHigh(&AT91C_BASE_CAN0->CAN_MB3) != AT91F_CAN_GetMessageDataHigh(&AT91C_BASE_CAN1->CAN_MB3) )
AT91F_DBGU_Printk("-E-high 4 byte Data ERROR !\n\r");
else{AT91F_DBGU_Printk("-E-high 4 byte Data right !\n\r");}
}
AT91F_DBGU_Printk("\n\r-E- Test 3 is finished !\n\r");
///////////////////////
///////////////////////////////////////////////////////////////////////////////////////////
AT91F_DBGU_Printk("\n\r all Tests over!--zzf-2006-2-10\n\r");
return;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -