• slider image 442
  • slider image 497
  • slider image 498
  • slider image 499
  • slider image 500
  • slider image 502
:::


Browsing this Thread:   2 Anonymous Users






Re: CAN通讯,可以loopback正常,但是nor 方式,没有输出.
#3
新會員
新會員


查看用戶資訊
用LOOPBCAK工作模式,正常,可以收到串口来的数据,
但是用nor工作模式,也就是上楼的程序,就不能接收到数据,
CANH CANL 电压为0.

發表於: 2009/10/21 22:35
Twitter Facebook Google Plus Linkedin Del.icio.us Digg Reddit Mr. Wong 頂部


Re: CAN通讯,可以loopback正常,但是nor 方式,没有输出.
#2
新會員
新會員


查看用戶資訊
// 自循环方式, 全过滤方式 让RXB0 接受数据,后累计求和,判断正确的话,让所有6个流水灯全亮.
//程序已经调通.
#include "p30f4011.h"
#include "can.h"
#include "uart.h"
#define CAN1_TX _RF1
#define CAN1_RX _RF0
#define DIR_CAN1_TX _TRISF1
#define DIR_CAN1_RX _TRISF0
#define INPUT 1
#define OUTPUT 0
//void __attribute__((__interrupt__,no_auto_psv)) _U2TXInterrupt()

void delay(unsigned int t)
{
unsigned int x,y;
for(x=6414;x>0;x--)
for(y=t;y>0;y--);

}
unsigned char TxData[10]={0,0,0,0,0,0,0,0,0,0};

unsigned char RxData[10]={0,0,0,0,0,0,0,0,0,0};


void Initial_CAN( void )
{
CAN1SetOperationMode( CAN_IDLE_CON &
CAN_MASTERCLOCK_1 & //Fcan=Fcy
CAN_REQ_OPERMODE_CONFIG ) ;//can为配置模式,只有计入配置模式,才可改写其他寄存器

while ( C1CTRLbits.OPMODE <= 3 );//直道当前操作模式小于三,表示进入配置模式
CAN1Initialize( CAN_SYNC_JUMP_WIDTH3 &//同步跳转宽度为3TQ
CAN_BAUD_PRE_SCALE(9),//BRP==9
CAN_WAKEUP_BY_FILTER_DIS &//不被接受滤波器唤醒
CAN_PHASE_SEG2_TQ(4) &//相位2为4个TQ
CAN_PHASE_SEG1_TQ(6) &//相位1为6个TQ
CAN_PROPAGATIONTIME_SEG_TQ(2) & //传播段占用2TQ
CAN_SEG2_FREE_PROG &//相位2的宽度为可以自由编程设定
CAN_SAMPLE1TIME ) ;//相位1结束后采样一次总线

CAN1SetFilter ( (char) 0 , CAN_FILTER_SID( 0x200 ) &CAN_RX_EID_DIS ,//仅接受标准ID,用RF0滤波器
CAN_FILTER_EID( 0x00 )) ;//过滤器的扩展位设置全0

CAN1SetFilter ( (char) 1 , //用RF1过滤器
CAN_FILTER_SID( 0x300 ) &CAN_RX_EID_DIS ,//仅接受标准ID 过滤器的标准ID为全0
CAN_FILTER_EID( 0x00 )) ;

CAN1SetMask ( (char)0 , //用0号屏蔽寄存器
CAN_MASK_SID ( 0xFFFF ) //屏蔽寄存器的SID=0X7FF
& CAN_MATCH_FILTER_TYPE ,//由于过滤器仅接受标准ID故屏蔽寄存器要设定依据过滤器从而实现仅过滤标准ID
CAN_MASK_EID( 0x00) ) ;

CAN1SetTXMode( (char) 0 , CAN_TX_STOP_REQ & CAN_TX_PRIORITY_HIGH ) ;
CAN1SetRXMode( (char) 0 , CAN_RXFUL_CLEAR & CAN_BUF0_DBLBUFFER_DIS ) ;

CAN1SetOperationMode( CAN_IDLE_CON & //器件闲置,CAN依然工作
CAN_CAPTURE_DIS &//禁止捕捉
CAN_MASTERCLOCK_1 &//Fcy=Fcan
CAN_REQ_OPERMODE_NOR ) ; //can工作在普通模式
while (C1CTRLbits.OPMODE!=0)
{


} //确认进入自测试模式

}
void initIO()
{
TRISE=0;
LATE=0;
DIR_CAN1_TX = OUTPUT ;
DIR_CAN1_RX = INPUT ;

}
int main( void )
{
initIO();
Initial_CAN( ) ;
unsigned char i,sum=0;
TxData[0] = 0 ;
TxData[1] = 0 ;
TxData[2] = 0 ;
TxData[3] = 0 ;
TxData[4] = 2 ;
TxData[5] = 6 ;
TxData[6] = 0 ;
TxData[7] = 0 ;


// while (!CAN1IsRXReady(0));//RXB0没有接收到数据,就在此处等待,
// CAN1ReceiveMessage( RxData,8,0 ) ; // 一旦接收标志为RX0FUL=1,说明数据接收
// C1RX0CONbits.RXFUL = 0 ;
// for(i=0;i<8;i++)
// {
// putcUART2(RxData[i]);
// }
while (1)
{
while(!CAN1IsTXReady(0));
CAN1SendMessage(( CAN_TX_SID(0x200))&CAN_TX_EID_DIS&CAN_SUB_NOR_TX_REQ,(CAN_TX_EID(0x00))&CAN_NOR_TX_REQ,TxData,8,0) ;
}

}

發表於: 2009/10/21 22:34
Twitter Facebook Google Plus Linkedin Del.icio.us Digg Reddit Mr. Wong 頂部


CAN通讯,可以loopback正常,但是nor 方式,没有输出.
#1
新會員
新會員


查看用戶資訊
// 自循环方式, 全过滤方式 让RXB0 接受数据,后累计求和,判断正确的话,让所有6个流水灯全亮.
//程序已经调通.
#include "p30f4011.h"
#include "can.h"
#include "uart.h"
#define CAN1_TX _RF1
#define CAN1_RX _RF0
#define DIR_CAN1_TX _TRISF1
#define DIR_CAN1_RX _TRISF0
#define INPUT 1
#define OUTPUT 0
//void __attribute__((__interrupt__,no_auto_psv)) _U2TXInterrupt()

void delay(unsigned int t)
{
unsigned int x,y;
for(x=6414;x>0;x--)
for(y=t;y>0;y--);

}
unsigned char TxData[10]={0,0,0,0,0,0,0,0,0,0};

unsigned char RxData[10]={0,0,0,0,0,0,0,0,0,0};


void Initial_CAN( void )
{
CAN1SetOperationMode( CAN_IDLE_CON &
CAN_MASTERCLOCK_1 & //Fcan=Fcy
CAN_REQ_OPERMODE_CONFIG ) ;//can为配置模式,只有计入配置模式,才可改写其他寄存器

while ( C1CTRLbits.OPMODE <= 3 );//直道当前操作模式小于三,表示进入配置模式
CAN1Initialize( CAN_SYNC_JUMP_WIDTH3 &//同步跳转宽度为3TQ
CAN_BAUD_PRE_SCALE(9),//BRP==9
CAN_WAKEUP_BY_FILTER_DIS &//不被接受滤波器唤醒
CAN_PHASE_SEG2_TQ(4) &//相位2为4个TQ
CAN_PHASE_SEG1_TQ(6) &//相位1为6个TQ
CAN_PROPAGATIONTIME_SEG_TQ(2) & //传播段占用2TQ
CAN_SEG2_FREE_PROG &//相位2的宽度为可以自由编程设定
CAN_SAMPLE1TIME ) ;//相位1结束后采样一次总线

CAN1SetFilter ( (char) 0 , CAN_FILTER_SID( 0x200 ) &CAN_RX_EID_DIS ,//仅接受标准ID,用RF0滤波器
CAN_FILTER_EID( 0x00 )) ;//过滤器的扩展位设置全0

CAN1SetFilter ( (char) 1 , //用RF1过滤器
CAN_FILTER_SID( 0x300 ) &CAN_RX_EID_DIS ,//仅接受标准ID 过滤器的标准ID为全0
CAN_FILTER_EID( 0x00 )) ;

CAN1SetMask ( (char)0 , //用0号屏蔽寄存器
CAN_MASK_SID ( 0xFFFF ) //屏蔽寄存器的SID=0X7FF
& CAN_MATCH_FILTER_TYPE ,//由于过滤器仅接受标准ID故屏蔽寄存器要设定依据过滤器从而实现仅过滤标准ID
CAN_MASK_EID( 0x00) ) ;

CAN1SetTXMode( (char) 0 , CAN_TX_STOP_REQ & CAN_TX_PRIORITY_HIGH ) ;
CAN1SetRXMode( (char) 0 , CAN_RXFUL_CLEAR & CAN_BUF0_DBLBUFFER_DIS ) ;

CAN1SetOperationMode( CAN_IDLE_CON & //器件闲置,CAN依然工作
CAN_CAPTURE_DIS &//禁止捕捉
CAN_MASTERCLOCK_1 &//Fcy=Fcan
CAN_REQ_OPERMODE_LOOPBK ) ; //can工作在普通模式
while (C1CTRLbits.OPMODE!=2)
{


} //确认进入自测试模式

}
void initIO()
{
TRISE=0;
LATE=0;
DIR_CAN1_TX = OUTPUT ;
DIR_CAN1_RX = INPUT ;

}
int main( void )
{
initIO();
Initial_CAN( ) ;
unsigned char i,sum=0;
TxData[0] = 0 ;
TxData[1] = 0 ;
TxData[2] = 0 ;
TxData[3] = 0 ;
TxData[4] = 2 ;
TxData[5] = 6 ;
TxData[6] = 0 ;
TxData[7] = 0 ;
while(!CAN1IsTXReady(0));
CAN1SendMessage(( CAN_TX_SID(0x200))&CAN_TX_EID_DIS&CAN_SUB_NOR_TX_REQ,(CAN_TX_EID(0x00))&CAN_NOR_TX_REQ,TxData,8,0) ;

while (!CAN1IsRXReady(0));//RXB0没有接收到数据,就在此处等待,
CAN1ReceiveMessage( RxData,8,0 ) ; // 一旦接收标志为RX0FUL=1,说明数据接收
C1RX0CONbits.RXFUL = 0 ;
for(i=0;i<8;i++)
{
putcUART2(RxData[i]);
}
while (1) ;

}
可以正常工作,并可以用收到串口的过来的数据.

發表於: 2009/10/21 22:33
Twitter Facebook Google Plus Linkedin Del.icio.us Digg Reddit Mr. Wong 頂部







You can view topic.
不可以 發起新主題
You cannot reply to posts.
You cannot edit your posts.
You cannot delete your posts.
You cannot add new polls.
You cannot vote in polls.
You cannot attach files to posts.
You cannot post without approval.
You cannot use topic type.
You cannot use HTML syntax.
You cannot use signature.
You cannot create PDF files.
You cannot get print page.

[進階搜尋]


:::

Microchip連結

https://www.facebook.com/microchiptechnologytaiwan/
http://www.microchip.com.tw/modules/tad_uploader/index.php?of_cat_sn=13
https://mu.microchip.com/page/tmu
http://elearning.microchip.com.tw/modules/tad_link/index.php?cate_sn=1
https://page.microchip.com/APAC-PrefCenters-TW.html
http://www.microchip.com/
http://www.microchip.com/treelink
http://www.microchipdirect.com/
http://www.microchip.com.cn/newcommunity/index.php?m=Video&a=index&id=103
http://www.microchip.com.tw/modules/tad_uploader/index.php?of_cat_sn=2
http://www.microchip.com.tw/Data_CD/eLearning/index.html
http://www.microchip.com.tw/RTC/RTC_DVD/
https://www.microchip.com/development-tools/
https://www.youtube.com/user/MicrochipTechnology
[ more... ]

教育訓練中心

!開發工具購買
辦法說明 [業界客戶] [教育單位]
----------------------------------
!校園樣品申請
辦法說明 [教師資格] [學生資格]
----------------------------------