单片机解密LPC1768/17XX之CAN控制器硬件查找
单片机解密 函数名称: CAN_SetACCF()
* 参 数: 波特率
* 返 回: XX
* 函数功能: 接收滤波器状态
单片机解密
-*-------------------------------------------------------------------
void CAN_SetACCF(const unsigned int ACCFMode)
{
switch (ACCFMode)
{
case ACCF_OFF: // 接收滤波器状态-复位/停止
LPC_CANAF->AFMR = ACCFMode;// 不 缓 冲 区 接 收 报
文
break;
case ACCF_BYPASS: // 接收滤波器状态-复位/停止
LPC_CANAF->AFMR = ACCFMode; // 所有接收的报文
存到接收缓冲区中
break;
// 接收滤波器状态-运行 // 硬件接收过滤
case ACCF_ON: // ACCOFF\ACCBP\EFCAN=0 时,接收滤波
器处于工作模式
case ACCF_FULLCAN: // ,接收滤波器处于 FullCAN 工作模
式
LPC_CANAF->AFMR = ACCF_OFF;
CAN_SetACCF_Lookup();
LPC_CANAF->AFMR = ACCFMode;
break;
default: break;
}
}
/*-------------------------------------------------------------------
函数名称: CAN_SetACCF()
* 参 数: 波特率
* 返 回: XX
* 函数功能: 接收滤波器状态
*
*-*------------------------------------------------------------------
void CAN_SetACCF_Lookup(void)
{
unsigned int address = 0;
unsigned int ID_high, ID_low;
/* Set explicit standard Frame */
LPC_CANAF->SFF_sa = address;
ID_low = (0x125 << 16);
ID_high = 0x126;
*((volatile uint32_t *)(LPC_CANAF_RAM_BASE + address))
= ID_low | ID_high;
address += 4;
/* Set group standard Frame */
LPC_CANAF->SFF_GRP_sa = address;
ID_low = (0x125 << 16); // 下边界
ID_high = 0x129; / 上边界
*((volatile uint32_t *)(LPC_CANAF_RAM_BASE + address))
= ID_low | ID_high;
address += 4;
LPC_CANAF->EFF_sa = address; //标准扩展帧
LPC_CANAF->EFF_GRP_sa = address; // 扩展帧组帧
/* Set End of Table */
LPC_CANAF->ENDofTable = address; //表结束地址
}
/*--------------------------------------------------------------------------------*-
* 函数名称: CAN_SetACCF_Lookup()
* 参 数: 波特率
* 返 回: XX
* 函数功能: 接收滤波器状态
* 说 明: 如果一个表格的起始地址等于下一个表格的起始
地址或表格终止寄存器的数值,
* 则该表格为空,在处理中将被忽略。
* 表格的大小由其前后 2 个表格起始地址寄存器的差值决
定。
* 例如,(SFF_GRP_sa) - (SFF_sa)为独立标准帧标识符查找表
格大小。
* 若其值为0,即 SFF_GRP_sa=SFF_sa,则独立标准帧标识符
查找表格大小为 0,
* 在查找时此表格将被忽略。查找表结束寄存器 ENDofTable
代表查找表结束地址,

芯片解密