[C] 纯文本查看 复制代码
//CAN总线在不同的速率下的配置
//brp :波特率分频器.范围:1~511; tq = brp/PCANCLK = brp/PLLQ
//tsjw:重新同步跳跃时间单元.默认为1,取值范围1-127,计算默认取1
//tbs1:时间段1的时间单元.取值1-255
//tbs2:时间段2的时间单元,取值1-127
//波特率 = PLLQ/((tbs1+tbs2+1)*brp);
//根据CIA官方建议,(SJW+BS1)/(SJW+BS1+BS2)
// 速度 > 800K以上时候,采样点 75%
// 速度 > 500K,采样点 80%
// 速度 <= 500K,采样点 87.5%
/*tqWithSJW*//*tqWithBS1*//*tqWithBS2*//*brpDiv*/
//位时间最大25个时间片,最小4个时间片,不能为了匹配采样点随便搞
/*----------------------------CAN仲裁段时序----------------------------------*/
//100M下的时钟配置
const MCU_CAN_BPS_SETTING MCU_CAN_ArbitrationBaudArray[5] = {
{5 /*1-128*/, 19 /*2-256*/, 5 /*2-128*/, 4 /*1-512*/ },//1000K 80%(19+1)/(19+1+5)=20/25=0.8
{5 /*1-128*/, 19 /*2-256*/, 5 /*2-128*/, 8 /*1-512*/ },//500K 80%
{3 /*1-128*/, 21 /*2-256*/, 3 /*2-128*/, 16 /*1-512*/ },//250K 88%
{3 /*1-128*/, 21 /*2-256*/, 3 /*2-128*/, 32 /*1-512*/ },//125K 88%
{3 /*1-128*/, 21 /*2-256*/, 3 /*2-128*/, 80 /*1-512*/ },//50K 88%
};
//100M下的时钟配置
const MCU_CAN_BPS_SETTING MCU_CAN_DataBaudArray[] = {
{5 /*1-16*/, 14 /*1-32*/, 5 /*1-16*/, 1 /*1-32*/ },//5000K 70%(14+1)/(14+1+5)=0.75
{6 /*1-16*/, 18 /*1-32*/, 6 /*1-16*/, 2 /*1-32*/ },//2000K 76%
{7 /*1-128*/, 17 /*2-256*/, 7 /*2-128*/, 4 /*1-512*/ },//1000K 72%
{5 /*1-128*/, 19 /*2-256*/, 5 /*2-128*/, 8 /*1-512*/ },//500K 80%
{3 /*1-128*/, 21 /*2-256*/, 3 /*2-128*/, 16 /*1-512*/ },//250K 88%
{3 /*1-128*/, 21 /*2-256*/, 3 /*2-128*/, 32 /*1-512*/ },//125K 88%
{3 /*1-128*/, 21 /*2-256*/, 3 /*2-128*/, 80 /*1-512*/ },//50K 88%
};