• slider image 442
  • slider image 483
  • slider image 484
  • slider image 485
  • slider image 486
  • slider image 487
:::

論壇索引


Board index » All Posts (sailor)




麻烦版主给发一个APP009开发板的CAN总线波特率(晶振频率=7.3728 Mhz)寄存器的配置表
#1
新會員
新會員


就像
SJA1000 标准波特率
晶振频率=16MHz
序号Baudrate(Kbps) BTR0 (Hex) BTR1 (Hex)
1 5 BF FF
2 10* 31 1C
3 20* 18 1C
4 40 87 FF
5 50* 09 1C
6 80 83 FF
7 100* 04 1C
8 125* 03 1C
9 200 81 FA
10 250* 01 1C
11 400 80 FA
12 500* 00 1C
13 666 80 B6
14 800* 00 16
15 1000* 00 14
麻烦版主给发一个APP009开发板的CAN总线波特率(晶振频率=7.3728 Mhz)寄存器的配置表。

發表於: 2009/4/9 16:00
頂部


Re: APP009开发板的CAN模块和上位机(PCI9810CAN通讯卡,CAN控制器为SJA1000)通信失败?
#2
新會員
新會員


8倍频改为16倍频,就是125kbps。可是我的依然不能通信,我怀疑是不是物理层的不兼容啊?上位机的CAN控制器是SJA1000,而下位机是微芯的嵌入CAN控制器,等高人指点----

發表於: 2009/3/27 19:59
頂部


Re: APP009开发板的CAN模块和上位机(PCI9810CAN通讯卡,CAN控制器为SJA1000)通信失败?
#3
新會員
新會員


谢谢你版主,你给的这个例程,我调试过了,能够通过,不过波特率用示波器看和计算好象不是125Kbps,而是125Kbps的一半吧?參照:

Ryang 寫道:
程式單是用看的不容易看不出問題所在,這個 Code Example 是經過測試過的試試看。

http://www.microchip.com.tw/modules/w ... glefile.php?cid=12&lid=73

發表於: 2009/3/25 20:40
頂部


APP009开发板的CAN模块和上位机(PCI9810CAN通讯卡,CAN控制器为SJA1000)通信失败?
#4
新會員
新會員


我用的开发板:APP009-dsPIC40-28 20050110。我用这个开发板和周立功的PCI-9810做CAN通信实验,上位机用周立功自带的ZLGCANTest调试软件,下位机用的这个开发板,程序如下(就是一直接收波特率配置为125KBPS):
#include <p30f4011.h>
int failmemory[40];
//---------------------------------------------------------------------------
_FOSC(CSW_FSCM_OFF & XT_PLL16); //XT with 16xPLL oscillator, Failsafe clock off
_FWDT(WDT_OFF); //Watchdog timer disabled
_FBORPOR(PBOR_OFF & MCLR_EN); //Brown-out reset disabled, MCLR reset enabled
_FGS(CODE_PROT_OFF); //Code protect disabled

// ----------------------------------------------------------------------------
#define FCY 29491200 // Osc. configuration = XT, PLL * 16 and XT = 7.3728 Mhz

unsigned int buffer1;
unsigned int buffer2;
unsigned int buffer3;
unsigned int buffer4;
unsigned long int i = 0;
void initial1()
{
C1CTRLbits.REQOP = 0x4; //请求进入配置模式
while (C1CTRLbits.OPMODE!=0x4){} //确认进入配置模式
C1TX0CON = 0x0003; //发送0邮箱配置,高优先级
C1TX0SID = 0x0020; //发送0标准标识符,11位,标准标识符0000 0001 000,报文发送标准标识符
C1TX0DLC = 0x01c0; //发送0数据长度,8字节
C1RX0CON = 0x0000; //接收0邮箱配置
C1RX0DLC = 0x0008; //接收0数据长度,8字节
C1RXF0SID = 0x0020; //接收滤波器0标准标识符,11位,接收代码位0000 0001 000
C1RXM0SID = 0x0001; //接收屏蔽0标准标识符,屏蔽码0000 0000 000
C1CTRLbits.CANCKS=1; //FCAN时钟为FCY
C1CFG1 = 0x0088; //波特率为125kbps配置
SJW<1:0>=3Tq,BRP<5:0>=001000
C1CFG2 = ox03e9;
//SEG2PH<2:0>=4Tq,SEG1PH<2:0>=6Tq,PRSEG<2:0>=2Tq,采样3次
C1CTRLbits.REQOP = 0x0; //请求进入正常模式
while (C1CTRLbits.OPMODE!=0x0){} //确认进入正常模式
return;
}
int main()
{
INTCON1=0x0000;
INTCON2=0x0000; //关闭所有中断
initial1();
while(1)
{
if(C1RX0CONbits.RXFUL==1)
{
buffer1=C1RX0B1;
buffer2=C1RX0B2;
buffer3=C1RX0B3;
buffer4=C1RX0B4;
C1RX0CONbits.RXFUL=0;
for(i=0;i<300000;i++){}
}
}
}

为什么上位机一直提示发送失败呢?请高手赐教,不胜感激!

發表於: 2009/3/24 14:27
頂部


CAN双机通信问题
#5
新會員
新會員


请问斑竹Ryang和其他朋友们:

我用两块APP009的开发板做can双机通信,硬件就是简单的把CANH、 CANL、 GND连接吗?软件有哪些注意的地方?
不胜感激!

發表於: 2008/8/25 19:47
頂部


can自测试的问题!
#6
新會員
新會員


我用的是APP009这块板子,在上面做can在自检模式通信,为什么总是提示TXERR错误?具体程序如下:
/*********************************************
** 功能描述: CAN口测试,11位标准标识符**
*********************************************/
#define __dsPIC30F4011__
#include <p30f4011.h>
int failmemory[40];
//---------------------------------------------------------------------------
_FOSC(CSW_FSCM_OFF & XT_PLL8); //XT with 8xPLL oscillator, Failsafe clock off
_FWDT(WDT_OFF); //Watchdog timer disabled
_FBORPOR(PBOR_OFF & MCLR_EN); //Brown-out reset disabled, MCLR reset enabled
_FGS(CODE_PROT_OFF); //Code protect disabled


// ----------------------------------------------------------------------------

unsigned int buffer1;
unsigned int buffer2;
unsigned int buffer3;
unsigned int buffer4;
unsigned long int i = 0;
#define FCY 7372800

void initial()
{
C1CTRLbits.REQOP = 0x4; //请求进入配置模式
while (C1CTRLbits.OPMODE!=0x4){} //确认进入配置模式
C1TX0CON = 0x0003; //发送0邮箱配置,高优先级
C1TX0SID = 0x0020; //发送0标准标识符,11位
C1TX0DLC = 0x01c0; //发送0数据长度,8字节
C1RX0CON = 0x0000; //接收0邮箱配置
C1RX0DLC = 0x0008; //接收0数据长度,8字节
C1RXF0SID = 0x0020; //接收滤波器0标准标识符,11位
C1RXM0SID = 0xffff; //接收屏蔽0标准标识符
C1CFG1 = 0x00ff; //波特率配置
C1CFG2 = 0x07ff;
C1CTRLbits.REQOP = 0x02; //请求进入自测试模式
while (C1CTRLbits.OPMODE!=0x02){} //确认进入自测试模式
return;
}

int main()
{
INTCON1=0x0000;
INTCON2=0x0000; //关闭所有中断
initial();
while(1)
{
C1TX0B1 = 0x5555; //发送缓冲寄存器8字节
C1TX0B2 = 0x5555;
C1TX0B3 = 0x5555;
C1TX0B4 = 0x5501;
C1TX0CONbits.TXREQ = 1; //启动发送
while (C1TX0CONbits.TXREQ==1){} //等待发送完成
if (C1RX0CONbits.RXFUL == 1)
{
buffer1 = C1RX0B1;
buffer2 = C1RX0B2;
buffer3 = C1RX0B3;
buffer4 = C1RX0B4;
C1RX0CONbits.RXFUL = 0;
}
}
}
程序一直停在while (C1TX0CONbits.TXREQ==1){}
希望得到你的解答。

發表於: 2008/8/25 16:10
頂部






:::

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... ]

教育訓練中心

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